401 lines
12 KiB
TypeScript
Raw Permalink Blame History

import { Global } from "../../Core/Globals"
import { bootStrapper } from "../../Core/Bootstrapper"
import { EventManager } from "../../Core/Events"
import { Ui } from "../../Core/Ui"
import { enableRipple } from '@syncfusion/ej2-base';
import * as Events from "../../Core/EventDefinitions"
import { LocalizationManager } from "../../Core/Localization"
import * as Utility from "../../Core/Utility";
import * as Models from "../../Common/Models";
import AuditInfoParams = Models.AuditInfoParams;
import {SystemHub} from "../../Core/SystemHub";
class LayoutAdminModule {
private _moduleName = "LayoutAdminModule";
private _global: Global;
private _eventManager: EventManager;
private _uiManager: Ui;
private _localizationMananger: LocalizationManager;
private _systemHub: SystemHub;
private _rsTime : Date;
private _rsTimeout = false;
private _rsDelta = 500;
constructor() {
//bootStrapper.init();
enableRipple(true);
this._global = Global.getInstance();
this._eventManager = EventManager.getInstance();
this._uiManager = Ui.getInstance();
this._localizationMananger = LocalizationManager.getInstance();
this._systemHub = SystemHub.getInstance();
}
private setupPage(): void {
var self = this;
var version = localStorage.getItem("gehgassi_version");
if (version === null) {
localStorage.clear();
localStorage.setItem("gehgassi_version", $("#jsVersion").val().toString());
} else {
if (version !== $("#jsVersion").val().toString()) {
localStorage.clear();
localStorage.setItem("gehgassi_version", $("#jsVersion").val().toString());
}
}
if ($("#jsAst").length && $("#jsAsw").length) {
var timeout = parseInt($("#jsAst").val().toString());
var warning = parseInt($("#jsAsw").val().toString());
var warningMinutes = timeout - warning;
var timeoutSeconds = parseInt($("#jsAst").val().toString()) * 60 * 1000;
var warningSeconds = parseInt($("#jsAsw").val().toString()) * 60 * 1000;
var warningTitle = self._localizationMananger.get("Session_Timout_Warning_Title");
var warningText = self._localizationMananger.get("Session_Timout_Warning").replace("{0}", warningMinutes.toString());
setTimeout(() => {
self._uiManager.showWarningMessage(warningText, warningTitle, 10000, true);
}, warningSeconds);
setTimeout(() => {
$("#logoutForm").submit();
}, timeoutSeconds);
}
}
private resizeBroadcast(): void {
var self = layoutAdminModule;
if (new Date().getTime() - self._rsTime.getTime() < self._rsDelta) {
setTimeout(self.resizeBroadcast, self._rsDelta);
} else {
self._rsTimeout = false;
//Event aussenden, falls sich ein UI Element anpassen muss
self._eventManager.publish(Events.Ui.resize);
}
}
/**
* Zur<75>cksetzen des Sidebars damit wir ihn selbst setzen k<>nnen
*/
private resetSideBar(): void {
$(".nav-item .nav-dropdown").removeClass("open");
$(".nav-item").removeClass("open");
$(".nav-link").removeClass("active");
}
/**
* Anzeige Auswahl Mandanten und Kunde f<>r Administratoren
*/
private impersionateAdmin(): void {
var self = this;
$.ajax({
url: <string>$("#jsImpersionateAdminUrl").val(),
data: <any>{},
dataType: "HTML",
type: "GET",
success(data) {
self._uiManager.showModule("ImpersionateAdminModule", data);
},
error() {
},
complete() {
}
});
}
/**
* Anzeige Auswahl Kunde f<>r Mandanten
*/
private impersionate(): void {
var self = this;
$.ajax({
url: <string>$("#jsImpersionateUrl").val(),
data: <any>{},
dataType: "HTML",
type: "GET",
success(data) {
self._uiManager.showModule("ImpersionateModule", data);
},
error() {
},
complete() {
}
});
}
/**
* Anzeige Auswahl Projekte
*/
private selectProject(): void {
var self = this;
$.ajax({
url: <string>$("#jsSelectProjectUrl").val(),
data: <any>{},
dataType: "HTML",
type: "GET",
success(data) {
self._uiManager.showModule("SelectProjectModule", data);
},
error() {
},
complete() {
}
});
}
/**
* Laden und Anzeigen von Audit-Infos zu einer Entit<69>t
* @param params
*/
private showAuditInfos(params: AuditInfoParams): void {
var self = this;
$.ajax({
url: <string>$("#jsAuditInfoUrl").val(),
data: <any>{ key: params.key, table: params.table },
dataType: "HTML",
type: "GET",
success(data) {
self._uiManager.showModule("AuditInfoModule", data);
},
error() {
},
complete() {
}
});
}
//#region Cart
/**
* Holen der Infos für den Warenkorb
*/
private getCart(): void {
var self = this;
$.ajax({
url: <string>$("#jsGetCart").val(),
data: <any>{},
dataType: "JSON",
type: "GET",
success(response) {
$("#cartCount").text(response.data);
},
error() {
},
complete() {
}
});
}
//#endregion
/**
* Verbindung zum Hub starten....
* Diese Verbindung wird vom gesamten System verwendet
*/
private async connectHub(): Promise<void> {
var self = this;
await self._systemHub.connectHub();
if ($("#jsScid").length > 0) {
self._systemHub.hub.send("JoinCustomer", $("#jsScid").val().toString());
self._systemHub.hub.on("CartChanged", (itemCount: number) => {
$("#cartCount").text(itemCount);
$("#cartCount").addClass("pulse");
setTimeout(() => {
$("#cartCount").removeClass("pulse");
}, 2500);
});
}
self._systemHub.hub.on("MessageForUser",
(data) => {
self._uiManager.showInfoMessage(data, "", 6000);
});
self._systemHub.hub.on("ShowWaiting",
(timeout: number) => {
self._uiManager.blockMainUi(timeout);
});
self._systemHub.hub.on("HideWaiting",
(data) => {
self._uiManager.unblockMainUi();
});
}
/**
* Bindungen erstellen
*/
private setupBindings(): void {
var self = this;
//self.resetSideBar();
$("#logout").off("click").on("click",
() => {
self._eventManager.publish(Events.Common.logout);
});
$(".selectLanguage").each(function () {
$(this).off("click").on("click",
() => {
var languageModel = new Models.ChangeLanguage();
languageModel.culture = $(this).data("culture");
languageModel.returnUrl = $(this).data("returnurl");
self._eventManager.publish(Events.Common.languageChange, languageModel);
});
});
$("#sideBarCollapse").off("click").on("click",
() => {
var windowWidth = $(window).width();
if (windowWidth >= 992) {
var show = true;
if ($("#sidebar").hasClass("hide")) {
show = false;
}
//if (show)
// $("#sidebar").removeClass("hide");
//else
// $("#sidebar").addClass("hide");
var action = <string>$("#jsSidebarShow").val();
$.post(action, { show });
}
});
$("#sideBarMinimize").off("click").on("click",
() => {
var minimized = false;
if ($("#sidebar").hasClass("sidebar-narrow-unfoldable")) {
minimized = true;
}
var action = <string>$("#jsSidebarMinimized").val();
$.post(action, { minimized });
});
$(window).resize(function () {
self._rsTime = new Date();
if (self._rsTimeout === false) {
self._rsTimeout = true;
setTimeout(self.resizeBroadcast, self._rsDelta);
}
});
self._eventManager.subscribe(Events.Common.logout,
self._moduleName,
() => {
self._uiManager.blockMainUi();
$("#logoutForm").submit();
});
self._eventManager.subscribe(Events.Common.unauthorized,
self._moduleName,
() => {
self._uiManager.showWarningMessage(self._localizationMananger.get("Err_Unauthorized"));
});
self._eventManager.subscribe(Events.Common.forbidden,
self._moduleName,
() => {
self._uiManager.showWarningMessage(self._localizationMananger.get("Err_Forbidden"));
});
self._eventManager.subscribe(Events.Common.subscriptionDenied,
self._moduleName,
() => {
self._uiManager.showWarningMessage(self._localizationMananger.get("Err_Subscription_Denied"));
});
self._eventManager.subscribe(Events.Common.languageChange,
self._moduleName,
(languageModel: Models.ChangeLanguage) => {
self._uiManager.blockMainUi();
$("<input>").attr("type", "hidden").attr("name", "culture").attr("value", languageModel.culture).appendTo("#languageForm");
$("<input>").attr("type", "hidden").attr("name", "returnUrl").attr("value", languageModel.returnUrl).appendTo("#languageForm");
$("#languageForm").submit();
});
self._eventManager.subscribe(Events.Ui.setUserInfo,
self._moduleName,
(userInfo) => {
if ($("#jsMe").val() === userInfo.userName) {
if (userInfo.photo === undefined || userInfo.photo === null || userInfo.photo.length === 0)
$("#avatar").prop("src", "/images/icon_user.png");
else
$("#avatar").prop("src", $("#jsImagePrefix").val().toString() + userInfo.photo);
$("#avatar").prop("alt", userInfo.nameForLookup);
$("#avatarName").text(userInfo.nameForLookup);
}
});
self._eventManager.subscribe(Events.Common.showAuditInfo,
self._moduleName,
(params: AuditInfoParams) => {
self.showAuditInfos(params);
});
$("#btnImpersionateAdmin").off("click").on("click",
() => {
self.impersionateAdmin();
});
$("#btnImpersionate").off("click").on("click",
() => {
self.impersionate();
});
$("#btnSelectProject").off("click").on("click",
() => {
self.selectProject();
});
$(".rootmenu").off("click").on("click", (e) => {
if ($(this).parent().hasClass("open")) {
return;
} else {
$(".rootmenu").parent().removeClass("open");
}
});
self.connectHub();
if ($("#jsScid").length > 0) {
self.getCart();
}
}
/**
* Initialisieren des Moduls
*/
public async init() {
await bootStrapper.init();
this.setupBindings();
this.setupPage();
this._global.appInitialized = true;
}
}
let layoutAdminModule = new LayoutAdminModule();
const start = async () => {
await layoutAdminModule.init();
}
start();