401 lines
12 KiB
TypeScript
401 lines
12 KiB
TypeScript
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();
|
||
|