{ "version": 3, "sources": ["../../../Scripts/main/NavigationMessage.ts"], "sourcesContent": ["\uFEFFnamespace WebPortal.Navigation {\n\n export class NavigationMessage {\n\n private messagePool: Array = [];\n\n public show(buttonName: string, msg: any): void\n public show(buttonName: string, msg: any, timeout: number): void\n public show(buttonName: string, msg: any, timeout: number, withBackgroundBlur: boolean): void\n public show(buttonName: string, msg: any, timeout: number = 5000, withBackgroundBlur: boolean = false): void {\n let messageData: any = this.convertToMessageObject(msg, timeout, withBackgroundBlur);\n let buttonPosition: any = this.getButtonPosition(buttonName);\n let message: JQuery = this.prepareMessage(messageData, buttonPosition);\n\n if (message.hasClass(\"hidden\")) {\n message.removeClass(\"hidden\");\n }\n\n // sparkView Fehlermeldungen haben kein Timeout\n if (timeout && timeout !== 0) {\n setTimeout(() => {\n this.destroy(null, message);\n }, timeout);\n }\n }\n\n public hide(message: JQuery): void {\n if (message) {\n this.destroy(null, message);\n }\n }\n\n private getButtonPosition(buttonName: string): any {\n let button: JQuery = navigationUtils.getButton(buttonName);\n if (!button.length) {\n console.warn(\"No Button Info found, take Notification\");\n buttonName = \"Notification\";\n button = navigationUtils.getButton(buttonName);\n }\n\n let buttonPosition: any = button.position();\n buttonPosition.height = button.height();\n buttonPosition.buttonName = buttonName;\n\n if (navigationController.isNavCollapsed) {\n buttonPosition.left = 55;\n } else {\n buttonPosition.left = 300;\n }\n return buttonPosition;\n }\n\n private convertToMessageObject(_msg: any, _timeout: number, _withBackgroundBlur: boolean): any {\n let messageData: any =\n (typeof _msg === \"string\") ?\n { msg: _msg, title: \"\", withBackgroundBlur: _withBackgroundBlur, timeout: _timeout, count: 1 } :\n _msg;\n\n if (!messageData.timeout) {\n messageData.timeout = (_timeout || _timeout === 0) ? _timeout : 0;\n }\n\n if (!messageData.withBackgroundBlur) {\n messageData.withBackgroundBlur = _withBackgroundBlur ? _withBackgroundBlur : false;\n }\n\n return messageData;\n }\n\n private prepareMessage(messageData: any, buttonPosition: any): JQuery {\n\n // \u00FCberpr\u00FCfe nach gleichem Message Typ und gleichem Inhalt\n for (let i: number = 0; i < this.messagePool.length; i++) {\n let message: JQuery = this.messagePool[i];\n\n // position f\u00FCr die n\u00E4chste Message anpassen \n if (message.attr(\"buttonName\") === buttonPosition.buttonName) {\n if (navigationController.isNavCollapsed) {\n buttonPosition.top += (buttonPosition.height + 8);\n } else {\n buttonPosition.top += (buttonPosition.height + 15);\n }\n messageData.sameMessageType = true;\n\n // message mit gleichem Inhalt wird hochgez\u00E4hlt und Funktion wird abgebrochen\n let messageContent: JQuery = message.children(\"div\").children(\"#nav_status_info_content\");\n if (messageData.msg === messageContent.text()) {\n message.trigger(\"addCount\", [messageData.count]);\n return message;\n }\n }\n }\n\n // neue Message erstellen\n return this.createNewMessage(messageData, buttonPosition);\n }\n\n private createNewMessage(messageData: any, buttonPosition: any): JQuery {\n let timestamp: number = new Date().getTime();\n\n let message: JQuery = $(\"
\")\n .attr({\n \"id\": \"pn_nav_status_info_\" + buttonPosition.buttonName + \"_\" + timestamp,\n \"class\": \"container-fluid status-info hidden\",\n \"messageCount\": 1,\n \"buttonName\": buttonPosition.buttonName,\n \"sameMessageType\": messageData.sameMessageType\n }).css({\n \"left\": buttonPosition.left + 10,\n \"top\": buttonPosition.top,\n \"min-height\": buttonPosition.height === 0 ? (navigationController.isNavCollapsed ? 48 : 40) : buttonPosition.height\n });\n\n let messageArrow: JQuery = $(\"
\").attr({\n \"id\": \"nav_status_info_arrow\",\n \"class\": messageData.sameMessageType ?\n \"tooltip-arrow status-info-arrow arrow-top\" :\n \"tooltip-arrow status-info-arrow arrow-left\",\n });\n\n let messageBody: JQuery = $(\"
\").attr({\n \"id\": \"nav_status_info_body\",\n \"class\": \"status-info-body\"\n });\n\n if (!navigationController.isNavCollapsed) {\n message.css({ \"padding\": 10 });\n messageArrow.css({ \"margin-left\": -23 });\n }\n\n let messageContent: JQuery = $(\"
\").attr({\n \"id\": \"nav_status_info_content\",\n \"class\": \"status-info-content\"\n // \"class\": \"status-info-content col-xs-12 col-sm-11 col-md-11\"\n }).html(messageData.msg);\n\n let messageCounter: JQuery = $(\"
\").attr({\n \"id\": \"nav_status_info_counter\",\n \"class\": \"status-info-counter\"\n });\n\n messageBody.append(messageContent).append(messageCounter);\n message.append(messageArrow).append(messageBody);\n message.appendTo(\"body\");\n\n // add handlers\n this.attachHandlers(message, messageCounter);\n\n // add to pool\n this.messagePool.push(message);\n\n return message;\n }\n\n private attachHandlers(message: JQuery, messageCounter: JQuery): void {\n message.on(\"click\", (e: JQueryEventObject) => { this.destroy(e); });\n message.on(\"addCount\", (event: JQueryEventObject, count: any) => {\n count = count || 1;\n message.attr({ \"messageCount\": parseInt(message.attr(\"messageCount\")) + count });\n messageCounter.html(\"(\" + message.attr(\"messageCount\") + \")\");\n });\n }\n\n private destroy(event: Event, message: JQuery = null): void {\n if (message && message.length > 0) {\n this.reposition(message);\n this.remove(message);\n\n } else {\n this.reposition($(event.currentTarget));\n this.remove($(event.currentTarget));\n }\n }\n\n private reposition(message: JQuery): void {\n\n // pendente Messages die neu positioniert werden m\u00FCssen\n let tmpOldMessagePositions: Array = [];\n\n for (let i: number = 0; i < this.messagePool.length; i++) {\n\n // vom gleichen Button\n if (this.messagePool[i].attr(\"buttonName\") === message.attr(\"buttonName\")) {\n\n // die Message darf nicht sich selbst sein\n if (this.messagePool[i].attr(\"id\") !== message.attr(\"id\")) {\n let deletedMessagePosition: any = message.position();\n let existingMessagePosition: any = this.messagePool[i].position();\n\n // falls die Position des gel\u00F6schten Messages kleiner ist als die Restlichen, muss neu positioniert werden\n if (deletedMessagePosition.top < existingMessagePosition.top) {\n\n // falls noch weitere Messages neu positioniert werden m\u00FCssen\n if (tmpOldMessagePositions.length > 0) {\n let nextOldMessagePosition: number = tmpOldMessagePositions.shift();\n if (nextOldMessagePosition) {\n this.messagePool[i].css({\n \"top\": nextOldMessagePosition\n });\n }\n } else {\n\n // aktuelle Message erh\u00E4lt die Position der gel\u00F6schten Message\n this.messagePool[i].css({\n \"top\": message.css(\"top\")\n });\n }\n\n tmpOldMessagePositions.push(existingMessagePosition.top);\n }\n }\n }\n }\n tmpOldMessagePositions.length = 0;\n }\n\n private remove(message: JQuery): void {\n\n for (let i: number = 0; i < this.messagePool.length; i++) {\n if (this.messagePool[i].attr(\"id\") === message.attr(\"id\")) {\n this.messagePool.splice(i, 1);\n message.remove();\n\n // arrow f\u00FCr die oberste Element anpassen\n if (this.messagePool.length > 0) {\n this.messagePool[0].children(\"#nav_status_info_arrow\").removeClass(\"arrow-top\").addClass(\"arrow-left\");\n }\n\n break;\n }\n }\n }\n }\n}"], "mappings": "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", "names": ["WebPortal", "Navigation", "NavigationMessage"] }