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�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: $("#jsImpersionateAdminUrl").val(), data: {}, 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: $("#jsImpersionateUrl").val(), data: {}, dataType: "HTML", type: "GET", success(data) { self._uiManager.showModule("ImpersionateModule", data); }, error() { }, complete() { } }); } /** * Anzeige Auswahl Projekte */ private selectProject(): void { var self = this; $.ajax({ url: $("#jsSelectProjectUrl").val(), data: {}, dataType: "HTML", type: "GET", success(data) { self._uiManager.showModule("SelectProjectModule", data); }, error() { }, complete() { } }); } /** * Laden und Anzeigen von Audit-Infos zu einer Entit�t * @param params */ private showAuditInfos(params: AuditInfoParams): void { var self = this; $.ajax({ url: $("#jsAuditInfoUrl").val(), data: { 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: $("#jsGetCart").val(), data: {}, 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 { 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 = $("#jsSidebarShow").val(); $.post(action, { show }); } }); $("#sideBarMinimize").off("click").on("click", () => { var minimized = false; if ($("#sidebar").hasClass("sidebar-narrow-unfoldable")) { minimized = true; } var action = $("#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(); $("").attr("type", "hidden").attr("name", "culture").attr("value", languageModel.culture).appendTo("#languageForm"); $("").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();