tnx-shared 5.1.181 → 5.1.185
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/tnx-shared.umd.js +1277 -1193
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/public-function.d.ts +6 -0
- package/classes/public-function.d.ts.map +1 -1
- package/components/statemachines/models/enums.d.ts +4 -0
- package/components/statemachines/models/enums.d.ts.map +1 -1
- package/components/tn-app-notification/tn-app-notification.component.d.ts +2 -2
- package/components/tn-app-notification/tn-app-notification.component.d.ts.map +1 -1
- package/components/workflow/process-workflow-form/process-workflow-form.component.d.ts.map +1 -1
- package/components/workflow/process-workflow-target/process-workflow-target.component.d.ts.map +1 -1
- package/congviec/dm-loai-congviec/dm-loai-congviec.component.d.ts +2 -0
- package/congviec/dm-loai-congviec/dm-loai-congviec.component.d.ts.map +1 -1
- package/esm2015/classes/base/data-list-base.js +4 -1
- package/esm2015/classes/public-function.js +7 -1
- package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
- package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
- package/esm2015/components/statemachines/models/enums.js +6 -1
- package/esm2015/components/statemachines/statemachines-connection-receiver-department/statemachines-connection-receiver-department.component.js +3 -3
- package/esm2015/components/statemachines/statemachines-connection-receiver-group/statemachines-connection-receiver-group.component.js +3 -3
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +38 -34
- package/esm2015/components/workflow/process-workflow-form/process-workflow-form.component.js +6 -4
- package/esm2015/components/workflow/process-workflow-target/process-workflow-target.component.js +10 -4
- package/esm2015/congviec/dm-loai-congviec/dm-loai-congviec.component.js +8 -3
- package/esm2015/intercepters/anonymous-token.interceptor.js +43 -0
- package/esm2015/tnx-shared.js +2 -1
- package/esm2015/tnx-shared.module.js +32 -32
- package/fesm2015/tnx-shared.js +824 -759
- package/fesm2015/tnx-shared.js.map +1 -1
- package/intercepters/anonymous-token.interceptor.d.ts +13 -0
- package/intercepters/anonymous-token.interceptor.d.ts.map +1 -0
- package/intercepters/anonymous-token.interceptor.ngfactory.d.ts.map +1 -0
- package/package.json +2 -2
- package/tnx-shared.d.ts +1 -0
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts +5 -5
- package/tnx-shared.module.d.ts.map +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@ngx-translate/core'), require('angular-split'), require('ng2-currency-mask'), require('ngx-device-detector'), require('ngx-extended-pdf-viewer'), require('ngx-img-fallback'), require('ngx-mask'), require('ngx-perfect-scrollbar'), require('tn-custom-primeng/autocomplete'), require('tn-custom-primeng/blockui'), require('tn-custom-primeng/breadcrumb'), require('tn-custom-primeng/button'), require('tn-custom-primeng/calendar'), require('tn-custom-primeng/card'), require('tn-custom-primeng/chart'), require('tn-custom-primeng/checkbox'), require('tn-custom-primeng/chips'), require('tn-custom-primeng/colorpicker'), require('tn-custom-primeng/confirmdialog'), require('tn-custom-primeng/contextmenu'), require('tn-custom-primeng/dataview'), require('tn-custom-primeng/dialog'), require('tn-custom-primeng/dropdown'), require('tn-custom-primeng/fieldset'), require('tn-custom-primeng/fileupload'), require('tn-custom-primeng/focustrap'), require('tn-custom-primeng/inputmask'), require('tn-custom-primeng/inputswitch'), require('tn-custom-primeng/inputtext'), require('tn-custom-primeng/inputtextarea'), require('tn-custom-primeng/menu'), require('tn-custom-primeng/menubar'), require('tn-custom-primeng/multiselect'), require('tn-custom-primeng/overlaypanel'), require('tn-custom-primeng/paginator'), require('tn-custom-primeng/panel'), require('tn-custom-primeng/progressspinner'), require('tn-custom-primeng/radiobutton'), require('tn-custom-primeng/scrollpanel'), require('tn-custom-primeng/selectbutton'), require('tn-custom-primeng/sidebar'), require('tn-custom-primeng/slider'), require('tn-custom-primeng/spinner'), require('tn-custom-primeng/splitbutton'), require('tn-custom-primeng/steps'), require('tn-custom-primeng/table'), require('tn-custom-primeng/tabview'), require('tn-custom-primeng/toast'), require('tn-custom-primeng/tooltip'), require('tn-custom-primeng/tree'), require('tn-custom-primeng/treetable'), require('tn-custom-primeng/tristatecheckbox'), require('@angular/router'), require('rxjs'), require('rxjs/operators'), require('uuid'), require('fast-safe-stringify'), require('moment'), require('underscore'), require('angular-oauth2-oidc'), require('tn-custom-primeng/api'), require('@angular/common/http'), require('@aspnet/signalr'), require('file-saver'), require('print-js'), require('jwt-decode'), require('@angular/platform-browser'), require('jquery'), require('nanoid'), require('@angular/animations'), require('hammerjs'), require('ng2-signalr'), require('tn-custom-primeng/dom'), require('qrcode'), require('jsplumb'), require('rtf.js'), require('
|
|
3
|
-
typeof define === 'function' && define.amd ? define('tnx-shared', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@ngx-translate/core', 'angular-split', 'ng2-currency-mask', 'ngx-device-detector', 'ngx-extended-pdf-viewer', 'ngx-img-fallback', 'ngx-mask', 'ngx-perfect-scrollbar', 'tn-custom-primeng/autocomplete', 'tn-custom-primeng/blockui', 'tn-custom-primeng/breadcrumb', 'tn-custom-primeng/button', 'tn-custom-primeng/calendar', 'tn-custom-primeng/card', 'tn-custom-primeng/chart', 'tn-custom-primeng/checkbox', 'tn-custom-primeng/chips', 'tn-custom-primeng/colorpicker', 'tn-custom-primeng/confirmdialog', 'tn-custom-primeng/contextmenu', 'tn-custom-primeng/dataview', 'tn-custom-primeng/dialog', 'tn-custom-primeng/dropdown', 'tn-custom-primeng/fieldset', 'tn-custom-primeng/fileupload', 'tn-custom-primeng/focustrap', 'tn-custom-primeng/inputmask', 'tn-custom-primeng/inputswitch', 'tn-custom-primeng/inputtext', 'tn-custom-primeng/inputtextarea', 'tn-custom-primeng/menu', 'tn-custom-primeng/menubar', 'tn-custom-primeng/multiselect', 'tn-custom-primeng/overlaypanel', 'tn-custom-primeng/paginator', 'tn-custom-primeng/panel', 'tn-custom-primeng/progressspinner', 'tn-custom-primeng/radiobutton', 'tn-custom-primeng/scrollpanel', 'tn-custom-primeng/selectbutton', 'tn-custom-primeng/sidebar', 'tn-custom-primeng/slider', 'tn-custom-primeng/spinner', 'tn-custom-primeng/splitbutton', 'tn-custom-primeng/steps', 'tn-custom-primeng/table', 'tn-custom-primeng/tabview', 'tn-custom-primeng/toast', 'tn-custom-primeng/tooltip', 'tn-custom-primeng/tree', 'tn-custom-primeng/treetable', 'tn-custom-primeng/tristatecheckbox', '@angular/router', 'rxjs', 'rxjs/operators', 'uuid', 'fast-safe-stringify', 'moment', 'underscore', 'angular-oauth2-oidc', 'tn-custom-primeng/api', '@angular/common/http', '@aspnet/signalr', 'file-saver', 'print-js', 'jwt-decode', '@angular/platform-browser', 'jquery', 'nanoid', '@angular/animations', 'hammerjs', 'ng2-signalr', 'tn-custom-primeng/dom', 'qrcode', 'jsplumb', 'rtf.js', '
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['tnx-shared'] = {}, global.ng.common, global.ng.core, global.ng.forms, global.i2, global.angularSplit, global.ng2CurrencyMask, global.ngxDeviceDetector, global.ngxExtendedPdfViewer, global.ngxImgFallback, global.ngxMask, global.ngxPerfectScrollbar, global.autocomplete, global.blockui, global.breadcrumb, global.button, global.calendar, global.card, global.chart, global.checkbox, global.chips, global.colorpicker, global.confirmdialog, global.contextmenu, global.dataview, global.dialog, global.dropdown, global.fieldset, global.fileupload, global.focustrap, global.inputmask, global.inputswitch, global.inputtext, global.inputtextarea, global.menu, global.menubar, global.multiselect, global.overlaypanel, global.paginator, global.panel, global.progressspinner, global.radiobutton, global.scrollpanel, global.selectbutton, global.sidebar, global.slider, global.spinner, global.splitbutton, global.steps, global.table, global.tabview, global.toast, global.tooltip, global.tree, global.treetable, global.tristatecheckbox, global.ng.router, global.rxjs, global.rxjs.operators, global.uuid, global.stringify, global.moment_, global._, global.i4, global.i1, global.ng.common.http, global.signalR, global.FileSaver, global.printJS_, global.JWT_, global.ng.platformBrowser, global.jQuery_, global.nanoid_, global.ng.animations, global.Hammer, global.ng2Signalr, global.dom, global.QRCode, global.jsplumb, global.rtf_js, global.
|
|
5
|
-
}(this, (function (exports, i2$1, i0, forms, i2, angularSplit, ng2CurrencyMask, ngxDeviceDetector, ngxExtendedPdfViewer, ngxImgFallback, ngxMask, ngxPerfectScrollbar, autocomplete, blockui, breadcrumb, button, calendar, card, chart, checkbox, chips, colorpicker, confirmdialog, contextmenu, dataview, dialog, dropdown, fieldset, fileupload, focustrap, inputmask, inputswitch, inputtext, inputtextarea, menu, menubar, multiselect, overlaypanel, paginator, panel, progressspinner, radiobutton, scrollpanel, selectbutton, sidebar, slider, spinner, splitbutton, steps, table, tabview, toast, tooltip, tree, treetable, tristatecheckbox, i3, rxjs, operators, uuid, stringify, moment_, _, i4, i1, i1$1, signalR, FileSaver, printJS_, JWT_, platformBrowser, jQuery_, nanoid_, animations, Hammer, ng2Signalr, dom, QRCode, jsplumb, rtf_js,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@ngx-translate/core'), require('angular-split'), require('ng2-currency-mask'), require('ngx-device-detector'), require('ngx-extended-pdf-viewer'), require('ngx-img-fallback'), require('ngx-mask'), require('ngx-perfect-scrollbar'), require('tn-custom-primeng/accordion'), require('tn-custom-primeng/autocomplete'), require('tn-custom-primeng/blockui'), require('tn-custom-primeng/breadcrumb'), require('tn-custom-primeng/button'), require('tn-custom-primeng/calendar'), require('tn-custom-primeng/card'), require('tn-custom-primeng/chart'), require('tn-custom-primeng/checkbox'), require('tn-custom-primeng/chips'), require('tn-custom-primeng/colorpicker'), require('tn-custom-primeng/confirmdialog'), require('tn-custom-primeng/contextmenu'), require('tn-custom-primeng/dataview'), require('tn-custom-primeng/dialog'), require('tn-custom-primeng/dropdown'), require('tn-custom-primeng/fieldset'), require('tn-custom-primeng/fileupload'), require('tn-custom-primeng/focustrap'), require('tn-custom-primeng/inputmask'), require('tn-custom-primeng/inputswitch'), require('tn-custom-primeng/inputtext'), require('tn-custom-primeng/inputtextarea'), require('tn-custom-primeng/menu'), require('tn-custom-primeng/menubar'), require('tn-custom-primeng/multiselect'), require('tn-custom-primeng/overlaypanel'), require('tn-custom-primeng/paginator'), require('tn-custom-primeng/panel'), require('tn-custom-primeng/progressspinner'), require('tn-custom-primeng/radiobutton'), require('tn-custom-primeng/scrollpanel'), require('tn-custom-primeng/selectbutton'), require('tn-custom-primeng/sidebar'), require('tn-custom-primeng/slider'), require('tn-custom-primeng/spinner'), require('tn-custom-primeng/splitbutton'), require('tn-custom-primeng/steps'), require('tn-custom-primeng/table'), require('tn-custom-primeng/tabview'), require('tn-custom-primeng/toast'), require('tn-custom-primeng/tooltip'), require('tn-custom-primeng/tree'), require('tn-custom-primeng/treetable'), require('tn-custom-primeng/tristatecheckbox'), require('@angular/router'), require('rxjs'), require('rxjs/operators'), require('uuid'), require('fast-safe-stringify'), require('moment'), require('underscore'), require('angular-oauth2-oidc'), require('tn-custom-primeng/api'), require('@angular/common/http'), require('@aspnet/signalr'), require('file-saver'), require('print-js'), require('jwt-decode'), require('@angular/platform-browser'), require('jquery'), require('nanoid'), require('@angular/animations'), require('hammerjs'), require('ng2-signalr'), require('tn-custom-primeng/dom'), require('qrcode'), require('jsplumb'), require('rtf.js'), require('@angular/common/locales/vi'), require('@angular/platform-browser/animations')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('tnx-shared', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@ngx-translate/core', 'angular-split', 'ng2-currency-mask', 'ngx-device-detector', 'ngx-extended-pdf-viewer', 'ngx-img-fallback', 'ngx-mask', 'ngx-perfect-scrollbar', 'tn-custom-primeng/accordion', 'tn-custom-primeng/autocomplete', 'tn-custom-primeng/blockui', 'tn-custom-primeng/breadcrumb', 'tn-custom-primeng/button', 'tn-custom-primeng/calendar', 'tn-custom-primeng/card', 'tn-custom-primeng/chart', 'tn-custom-primeng/checkbox', 'tn-custom-primeng/chips', 'tn-custom-primeng/colorpicker', 'tn-custom-primeng/confirmdialog', 'tn-custom-primeng/contextmenu', 'tn-custom-primeng/dataview', 'tn-custom-primeng/dialog', 'tn-custom-primeng/dropdown', 'tn-custom-primeng/fieldset', 'tn-custom-primeng/fileupload', 'tn-custom-primeng/focustrap', 'tn-custom-primeng/inputmask', 'tn-custom-primeng/inputswitch', 'tn-custom-primeng/inputtext', 'tn-custom-primeng/inputtextarea', 'tn-custom-primeng/menu', 'tn-custom-primeng/menubar', 'tn-custom-primeng/multiselect', 'tn-custom-primeng/overlaypanel', 'tn-custom-primeng/paginator', 'tn-custom-primeng/panel', 'tn-custom-primeng/progressspinner', 'tn-custom-primeng/radiobutton', 'tn-custom-primeng/scrollpanel', 'tn-custom-primeng/selectbutton', 'tn-custom-primeng/sidebar', 'tn-custom-primeng/slider', 'tn-custom-primeng/spinner', 'tn-custom-primeng/splitbutton', 'tn-custom-primeng/steps', 'tn-custom-primeng/table', 'tn-custom-primeng/tabview', 'tn-custom-primeng/toast', 'tn-custom-primeng/tooltip', 'tn-custom-primeng/tree', 'tn-custom-primeng/treetable', 'tn-custom-primeng/tristatecheckbox', '@angular/router', 'rxjs', 'rxjs/operators', 'uuid', 'fast-safe-stringify', 'moment', 'underscore', 'angular-oauth2-oidc', 'tn-custom-primeng/api', '@angular/common/http', '@aspnet/signalr', 'file-saver', 'print-js', 'jwt-decode', '@angular/platform-browser', 'jquery', 'nanoid', '@angular/animations', 'hammerjs', 'ng2-signalr', 'tn-custom-primeng/dom', 'qrcode', 'jsplumb', 'rtf.js', '@angular/common/locales/vi', '@angular/platform-browser/animations'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['tnx-shared'] = {}, global.ng.common, global.ng.core, global.ng.forms, global.i2, global.angularSplit, global.ng2CurrencyMask, global.ngxDeviceDetector, global.ngxExtendedPdfViewer, global.ngxImgFallback, global.ngxMask, global.ngxPerfectScrollbar, global.accordion, global.autocomplete, global.blockui, global.breadcrumb, global.button, global.calendar, global.card, global.chart, global.checkbox, global.chips, global.colorpicker, global.confirmdialog, global.contextmenu, global.dataview, global.dialog, global.dropdown, global.fieldset, global.fileupload, global.focustrap, global.inputmask, global.inputswitch, global.inputtext, global.inputtextarea, global.menu, global.menubar, global.multiselect, global.overlaypanel, global.paginator, global.panel, global.progressspinner, global.radiobutton, global.scrollpanel, global.selectbutton, global.sidebar, global.slider, global.spinner, global.splitbutton, global.steps, global.table, global.tabview, global.toast, global.tooltip, global.tree, global.treetable, global.tristatecheckbox, global.ng.router, global.rxjs, global.rxjs.operators, global.uuid, global.stringify, global.moment_, global._, global.i4, global.i1, global.ng.common.http, global.signalR, global.FileSaver, global.printJS_, global.JWT_, global.ng.platformBrowser, global.jQuery_, global.nanoid_, global.ng.animations, global.Hammer, global.ng2Signalr, global.dom, global.QRCode, global.jsplumb, global.rtf_js, global.ng.common.locales.vi, global.ng.platformBrowser.animations));
|
|
5
|
+
}(this, (function (exports, i2$1, i0, forms, i2, angularSplit, ng2CurrencyMask, ngxDeviceDetector, ngxExtendedPdfViewer, ngxImgFallback, ngxMask, ngxPerfectScrollbar, accordion, autocomplete, blockui, breadcrumb, button, calendar, card, chart, checkbox, chips, colorpicker, confirmdialog, contextmenu, dataview, dialog, dropdown, fieldset, fileupload, focustrap, inputmask, inputswitch, inputtext, inputtextarea, menu, menubar, multiselect, overlaypanel, paginator, panel, progressspinner, radiobutton, scrollpanel, selectbutton, sidebar, slider, spinner, splitbutton, steps, table, tabview, toast, tooltip, tree, treetable, tristatecheckbox, i3, rxjs, operators, uuid, stringify, moment_, _, i4, i1, i1$1, signalR, FileSaver, printJS_, JWT_, platformBrowser, jQuery_, nanoid_, animations, Hammer, ng2Signalr, dom, QRCode, jsplumb, rtf_js, localeVi, animations$1) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -11402,7 +11402,11 @@
|
|
|
11402
11402
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["TAO_CONG_VIEC"] = 1] = "TAO_CONG_VIEC";
|
|
11403
11403
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["AUTO_NEXT_STEP"] = 2] = "AUTO_NEXT_STEP";
|
|
11404
11404
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["AUTO_START_TASK"] = 3] = "AUTO_START_TASK";
|
|
11405
|
-
})(exports.EnumWorkflowCheckboxOption || (exports.EnumWorkflowCheckboxOption = {}));
|
|
11405
|
+
})(exports.EnumWorkflowCheckboxOption || (exports.EnumWorkflowCheckboxOption = {}));
|
|
11406
|
+
(function (EnumProcessWorkflowType) {
|
|
11407
|
+
EnumProcessWorkflowType[EnumProcessWorkflowType["EDIT"] = 1] = "EDIT";
|
|
11408
|
+
EnumProcessWorkflowType[EnumProcessWorkflowType["VIEW"] = 2] = "VIEW";
|
|
11409
|
+
})(exports.EnumProcessWorkflowType || (exports.EnumProcessWorkflowType = {}));
|
|
11406
11410
|
|
|
11407
11411
|
var DummyWorkflowCode = 'DummyWorkflowCode';
|
|
11408
11412
|
var MaActionBatDauQuyTrinh = '_START_';
|
|
@@ -22422,6 +22426,9 @@
|
|
|
22422
22426
|
configurable: true
|
|
22423
22427
|
});
|
|
22424
22428
|
DataListBase.prototype.ngOnInit = function () {
|
|
22429
|
+
// if (window) {
|
|
22430
|
+
// window['_clbc'] = this;
|
|
22431
|
+
// }
|
|
22425
22432
|
this.model.baseReady = false;
|
|
22426
22433
|
if (this.setting.cols) {
|
|
22427
22434
|
this.setting.cols = this.setting.cols.filter(function (q) { return !q.removeOnInit; });
|
|
@@ -26940,7 +26947,7 @@
|
|
|
26940
26947
|
selector: 'chat-box',
|
|
26941
26948
|
template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- <!– <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"–>-->\r\n<!-- <!– (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"–>-->\r\n<!-- <!– (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>–>-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- <!– <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"–>-->\r\n<!-- <!– (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"–>-->\r\n<!-- <!– (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>–>-->\r\n\r\n<!-- <!–<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"–>-->\r\n<!-- <!– [parentModel]=\"context.data.noteDataModel\"></quick-add-form>–>-->\r\n<!--</tn-dialog>-->",
|
|
26942
26949
|
providers: [ComponentContextService, CheckControlVisibleService],
|
|
26943
|
-
styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
26950
|
+
styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(D:\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
26944
26951
|
},] }
|
|
26945
26952
|
];
|
|
26946
26953
|
ChatBoxComponent.ctorParameters = function () { return [
|
|
@@ -27546,7 +27553,7 @@
|
|
|
27546
27553
|
selector: 'chat-send-message-box',
|
|
27547
27554
|
template: "<div class=\"dashboard\" (mouseup)=\"onMouseUp($event)\">\r\n <div class=\"chat\">\r\n <div class=\"new-message\">\r\n <div class=\"message-emotion\">\r\n <i class=\"far fa-smile\" style=\"color: gray;\" disabled=\"true\"></i>\r\n </div>\r\n <div class=\"message-attachment\" pTooltip=\"\u0110\u00EDnh k\u00E8m file\" tooltipPosition=\"top\" (click)=\"op.toggle($event)\">\r\n <i class=\"fas fa-paperclip\"></i>\r\n </div>\r\n <p-overlayPanel #op [dismissable]=\"true\" [appendTo]=\"'body'\" [styleClass]=\"'paging-advance-overlay'\"\r\n (mouseup)=\"onMouseUp($event)\">\r\n <ul class=\"paging-advance\">\r\n <li (click)=\"browseFileFromPersonal()\">T\u1EEB file c\u00E1 nh\u00E2n</li>\r\n <li (click)=\"browseFileFromComputer()\">T\u1EA3i l\u00EAn t\u1EEB m\u00E1y t\u00EDnh</li>\r\n </ul>\r\n </p-overlayPanel>\r\n <div class=\"message-input p-float-label\">\r\n <input #input pInputText\r\n id=\"message\"\r\n autocomplete=\"off\" autocorrect=\"off\"\r\n spellcheck=\"false\" class=\"ui-inputtext\"\r\n type=\"text\" placeholder=\"N\u1ED9i dung tin nh\u1EAFn\"\r\n [(ngModel)]=\"model.content\"\r\n (keyup.enter)=\"onSendMessage($event.target.value)\" (keydown.shift.tab)=\"cancelBlur($event)\"\r\n (keydown.tab)=\"cancelBlur($event)\" (paste)=\"handlePaste($event)\" (click)=\"clickInputText()\"/>\r\n </div>\r\n <div>\r\n <button pButton class=\"p-button-danger\" icon=\"fas fa-send\" type=\"button\" label=\"G\u1EEDi\"\r\n (click)=\"onSendMessage(model.content)\">\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"attachment-list\" [ngClass]=\"model.classHasAttachment\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'height': '100px'}\">\r\n <div *ngFor=\"let item of model.attachments\" class=\"attachment-item\">\r\n <img *ngIf=\"item.type == 'image'\" [src]=\"item.url | safeUrl\"/>\r\n <span *ngIf=\"item.type == 'file'\">{{item.fileName}}</span>\r\n <i class=\"far fa-times-circle label-danger remove-file-attachment\"\r\n (click)=\"removeAttachment(item)\"></i>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <!-- <div class=\"clearfix\"></div>-->\r\n </div>\r\n </div>\r\n</div>\r\n<p-fileUpload [ngStyle]=\"{'display': 'none'}\" #fileElement (onSelect)=\"onSelectFileFromComputer($event)\"\r\n multiple=\"multiple\" name=\"fileUpload\" [maxFileSize]=\"model.maxFileSize\" auto=\"false\">\r\n</p-fileUpload>\r\n\r\n<!-- <app-drive-file-dialog *ngIf=\"model.driveFileDialog.show\" [parentDataContext]=\"dataContext\"\r\n []=\"model.driveFileDialog\" #driveFileDialog>\r\n</app-drive-file-dialog> -->\r\n",
|
|
27548
27555
|
providers: [ComponentContextService],
|
|
27549
|
-
styles: ["", "@charset \"UTF-8\";@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(C:\\Code\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
27556
|
+
styles: ["", "@charset \"UTF-8\";@import url(D:\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
|
|
27550
27557
|
},] }
|
|
27551
27558
|
];
|
|
27552
27559
|
ChatSendMessageBoxComponent.ctorParameters = function () { return [
|
|
@@ -28591,6 +28598,432 @@
|
|
|
28591
28598
|
notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }]
|
|
28592
28599
|
};
|
|
28593
28600
|
|
|
28601
|
+
var AppTopBarV2Component = /** @class */ (function (_super) {
|
|
28602
|
+
__extends(AppTopBarV2Component, _super);
|
|
28603
|
+
function AppTopBarV2Component(
|
|
28604
|
+
// public app: AppComponent,
|
|
28605
|
+
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
28606
|
+
var _this = _super.call(this, _injector) || this;
|
|
28607
|
+
_this._customRouteService = _customRouteService;
|
|
28608
|
+
_this._router = _router;
|
|
28609
|
+
_this._commonService = _commonService;
|
|
28610
|
+
_this._authenService = _authenService;
|
|
28611
|
+
_this._cd = _cd;
|
|
28612
|
+
_this._permissionService = _permissionService;
|
|
28613
|
+
_this._moduleConfigService = _moduleConfigService;
|
|
28614
|
+
_this._userService = _userService;
|
|
28615
|
+
_this._notifierService = _notifierService;
|
|
28616
|
+
_this._translateService = _translateService;
|
|
28617
|
+
_this.defaultAvatar = '';
|
|
28618
|
+
_this.key = '';
|
|
28619
|
+
_this.currentRoute = '';
|
|
28620
|
+
_this.fileApi = '';
|
|
28621
|
+
_this.currentUser = null;
|
|
28622
|
+
_this.appSwitcherItems = [];
|
|
28623
|
+
_this.isFirstTime = false;
|
|
28624
|
+
_this.showSettings = false;
|
|
28625
|
+
_this.allSubscriptions = [];
|
|
28626
|
+
_this.message = '';
|
|
28627
|
+
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
28628
|
+
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
28629
|
+
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
28630
|
+
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
28631
|
+
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
28632
|
+
}
|
|
28633
|
+
else {
|
|
28634
|
+
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
28635
|
+
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
28636
|
+
}
|
|
28637
|
+
else {
|
|
28638
|
+
_this.showDefaultSetting = false;
|
|
28639
|
+
}
|
|
28640
|
+
}
|
|
28641
|
+
if (!_this.rootContext.data.currentUser) {
|
|
28642
|
+
_this.rootContext.data.currentUser = {};
|
|
28643
|
+
}
|
|
28644
|
+
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
28645
|
+
// this._cd.detectChanges();
|
|
28646
|
+
// }));
|
|
28647
|
+
_this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
28648
|
+
_this.currentUser = _this._userService.getCurrentUser();
|
|
28649
|
+
_this.loadMenuMetadata();
|
|
28650
|
+
});
|
|
28651
|
+
if (_this.rootModel.allowAnonymous) {
|
|
28652
|
+
_this.loadMenuMetadata();
|
|
28653
|
+
}
|
|
28654
|
+
return _this;
|
|
28655
|
+
}
|
|
28656
|
+
AppTopBarV2Component.prototype.loadMenuMetadata = function () {
|
|
28657
|
+
var _this = this;
|
|
28658
|
+
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
28659
|
+
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
28660
|
+
return __generator(this, function (_c) {
|
|
28661
|
+
switch (_c.label) {
|
|
28662
|
+
case 0:
|
|
28663
|
+
arr = [];
|
|
28664
|
+
_a = [];
|
|
28665
|
+
for (_b in this.environment.appMetadata.appSwitcher)
|
|
28666
|
+
_a.push(_b);
|
|
28667
|
+
_i = 0;
|
|
28668
|
+
_c.label = 1;
|
|
28669
|
+
case 1:
|
|
28670
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
28671
|
+
ind = _a[_i];
|
|
28672
|
+
element = this.environment.appMetadata.appSwitcher[ind];
|
|
28673
|
+
clientId = this.environment.authenticationSettings.clientId;
|
|
28674
|
+
if (!(this.rootContext.data.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
28675
|
+
arr.push(element);
|
|
28676
|
+
return [3 /*break*/, 4];
|
|
28677
|
+
case 2:
|
|
28678
|
+
if (!this.currentUser) return [3 /*break*/, 4];
|
|
28679
|
+
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
28680
|
+
case 3:
|
|
28681
|
+
isAuthorized = _c.sent();
|
|
28682
|
+
if (isAuthorized) {
|
|
28683
|
+
arr.push(element);
|
|
28684
|
+
}
|
|
28685
|
+
_c.label = 4;
|
|
28686
|
+
case 4:
|
|
28687
|
+
_i++;
|
|
28688
|
+
return [3 /*break*/, 1];
|
|
28689
|
+
case 5:
|
|
28690
|
+
resolve(arr);
|
|
28691
|
+
return [2 /*return*/];
|
|
28692
|
+
}
|
|
28693
|
+
});
|
|
28694
|
+
}); });
|
|
28695
|
+
prmsAppSwicherItem.then(function (rs) {
|
|
28696
|
+
if (rs) {
|
|
28697
|
+
var currentUser_1 = _this._userService.getCurrentUser();
|
|
28698
|
+
_this.appSwitcherItems.length = 0;
|
|
28699
|
+
rs.forEach(function (element) {
|
|
28700
|
+
if (element.visible) {
|
|
28701
|
+
if (element.allowAnonymous) {
|
|
28702
|
+
_this.appSwitcherItems.push(element);
|
|
28703
|
+
}
|
|
28704
|
+
else {
|
|
28705
|
+
if (currentUser_1.maNguoiHoc && currentUser_1.issuperuser && currentUser_1.issuperuser.toLowerCase() != 'true') {
|
|
28706
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
28707
|
+
_this.appSwitcherItems.push(element);
|
|
28708
|
+
}
|
|
28709
|
+
}
|
|
28710
|
+
else {
|
|
28711
|
+
_this.appSwitcherItems.push(element);
|
|
28712
|
+
}
|
|
28713
|
+
}
|
|
28714
|
+
}
|
|
28715
|
+
});
|
|
28716
|
+
}
|
|
28717
|
+
});
|
|
28718
|
+
};
|
|
28719
|
+
AppTopBarV2Component.prototype.ngOnInit = function () {
|
|
28720
|
+
var _this = this;
|
|
28721
|
+
if (this.rootContext.data.currentUser) {
|
|
28722
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
28723
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
28724
|
+
}
|
|
28725
|
+
else {
|
|
28726
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
28727
|
+
}
|
|
28728
|
+
this.userProfile = this._userService.getProfileInfo();
|
|
28729
|
+
}
|
|
28730
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, function (e) {
|
|
28731
|
+
setTimeout(function () {
|
|
28732
|
+
_this.hideAdvanceSearch(e);
|
|
28733
|
+
});
|
|
28734
|
+
});
|
|
28735
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, function (e) {
|
|
28736
|
+
_this.focusToSearchBox();
|
|
28737
|
+
});
|
|
28738
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, function (e) {
|
|
28739
|
+
_this.showNotificationReload();
|
|
28740
|
+
});
|
|
28741
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, function (e) {
|
|
28742
|
+
_this.setNotify(e.message);
|
|
28743
|
+
});
|
|
28744
|
+
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, function (e) {
|
|
28745
|
+
_this.model.dataModelSetting.showSettings = true;
|
|
28746
|
+
}));
|
|
28747
|
+
this.model.dataModelSetting = {
|
|
28748
|
+
data: {},
|
|
28749
|
+
showSettings: false
|
|
28750
|
+
};
|
|
28751
|
+
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, function (data) {
|
|
28752
|
+
_this.formatDefaultDataSetting(data);
|
|
28753
|
+
_this.reloadWindow();
|
|
28754
|
+
});
|
|
28755
|
+
var stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
28756
|
+
if (stringDataDefault) {
|
|
28757
|
+
var dataCacheDefault = JSON.parse(stringDataDefault);
|
|
28758
|
+
this.formatDefaultDataSetting(dataCacheDefault);
|
|
28759
|
+
}
|
|
28760
|
+
else {
|
|
28761
|
+
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
28762
|
+
}
|
|
28763
|
+
};
|
|
28764
|
+
AppTopBarV2Component.prototype.ngOnDestroy = function () {
|
|
28765
|
+
this.allSubscriptions.forEach(function (element) {
|
|
28766
|
+
element.unsubscribe();
|
|
28767
|
+
});
|
|
28768
|
+
if (this.intervalCountdown) {
|
|
28769
|
+
clearInterval(this.intervalCountdown);
|
|
28770
|
+
}
|
|
28771
|
+
_super.prototype.ngOnDestroy.call(this);
|
|
28772
|
+
};
|
|
28773
|
+
AppTopBarV2Component.prototype.formatDefaultDataSetting = function (data) {
|
|
28774
|
+
var _this = this;
|
|
28775
|
+
var dataSetting = '';
|
|
28776
|
+
var fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
28777
|
+
var fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
28778
|
+
fields.forEach(function (field, index) {
|
|
28779
|
+
if (!_this.checkHidden(field)) {
|
|
28780
|
+
var _f = "" + field + fieldPluses[index];
|
|
28781
|
+
if (data[_f]) {
|
|
28782
|
+
dataSetting += data[_f] + '/';
|
|
28783
|
+
}
|
|
28784
|
+
}
|
|
28785
|
+
});
|
|
28786
|
+
if (dataSetting.length > 0) {
|
|
28787
|
+
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
28788
|
+
}
|
|
28789
|
+
this.defaultDataSetting = dataSetting;
|
|
28790
|
+
};
|
|
28791
|
+
AppTopBarV2Component.prototype.checkHidden = function (field) {
|
|
28792
|
+
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(function (p) { return p.field == field; });
|
|
28793
|
+
};
|
|
28794
|
+
AppTopBarV2Component.prototype.getCurrentUserFullName = function () {
|
|
28795
|
+
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
28796
|
+
};
|
|
28797
|
+
AppTopBarV2Component.prototype.getCurrentUserPosition = function () {
|
|
28798
|
+
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
28799
|
+
};
|
|
28800
|
+
AppTopBarV2Component.prototype.getCurrentUserAvatar = function () {
|
|
28801
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
28802
|
+
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
28803
|
+
}
|
|
28804
|
+
else {
|
|
28805
|
+
return this.defaultAvatar;
|
|
28806
|
+
}
|
|
28807
|
+
};
|
|
28808
|
+
AppTopBarV2Component.prototype.clearFilter = function (input) {
|
|
28809
|
+
var _this = this;
|
|
28810
|
+
setTimeout(function () {
|
|
28811
|
+
_this.model.searchModel[_this.model.fieldKey] = '';
|
|
28812
|
+
_this._customRouteService.updateFragment(_this.model.fieldKey, null);
|
|
28813
|
+
_this._customRouteService.updateWithoutFireEvent();
|
|
28814
|
+
_this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
|
|
28815
|
+
input.value = '';
|
|
28816
|
+
input.focus();
|
|
28817
|
+
_this._cd.detectChanges();
|
|
28818
|
+
});
|
|
28819
|
+
};
|
|
28820
|
+
AppTopBarV2Component.prototype.toggleAdvanceSearch = function (evt) {
|
|
28821
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
28822
|
+
evt.preventDefault();
|
|
28823
|
+
evt.cancelBubble = true;
|
|
28824
|
+
};
|
|
28825
|
+
AppTopBarV2Component.prototype.hideAdvanceSearch = function (evt) {
|
|
28826
|
+
if (document.getElementById('advance-search-box')) {
|
|
28827
|
+
var mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
28828
|
+
if (!mask.length) {
|
|
28829
|
+
var closestDropdown = evt.target.closest('.dropdown-advs');
|
|
28830
|
+
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
28831
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
28832
|
+
}
|
|
28833
|
+
}
|
|
28834
|
+
}
|
|
28835
|
+
};
|
|
28836
|
+
AppTopBarV2Component.prototype.focusToSearchBox = function () {
|
|
28837
|
+
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
28838
|
+
this.input.nativeElement.focus();
|
|
28839
|
+
}
|
|
28840
|
+
};
|
|
28841
|
+
AppTopBarV2Component.prototype.onTopbarSearchClick = function (event, input) {
|
|
28842
|
+
var _this = this;
|
|
28843
|
+
if (!this.model.fieldKey) {
|
|
28844
|
+
return;
|
|
28845
|
+
}
|
|
28846
|
+
setTimeout(function () {
|
|
28847
|
+
_this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
|
|
28848
|
+
_this._customRouteService.updateFragment(_this.model.fieldKey, input.value);
|
|
28849
|
+
_this._customRouteService.updateWithoutFireEvent();
|
|
28850
|
+
input.focus();
|
|
28851
|
+
});
|
|
28852
|
+
};
|
|
28853
|
+
AppTopBarV2Component.prototype.onEsc = function (event, input) {
|
|
28854
|
+
this.clearFilter(input);
|
|
28855
|
+
};
|
|
28856
|
+
AppTopBarV2Component.prototype.onEnter = function (event, input) {
|
|
28857
|
+
this.onTopbarSearchClick(event, input);
|
|
28858
|
+
};
|
|
28859
|
+
AppTopBarV2Component.prototype.switchApp = function (item, openNewTab) {
|
|
28860
|
+
if (openNewTab === void 0) { openNewTab = false; }
|
|
28861
|
+
if (item.target == '_blank') {
|
|
28862
|
+
if (!item.defaultRedirect) {
|
|
28863
|
+
item.defaultRedirect = '';
|
|
28864
|
+
}
|
|
28865
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
28866
|
+
if (item.url == item.defaultRedirect) {
|
|
28867
|
+
item.url = '/' + item.code.toLowerCase();
|
|
28868
|
+
}
|
|
28869
|
+
if (!openNewTab) {
|
|
28870
|
+
top.location.href = item.url + "/" + item.defaultRedirect;
|
|
28871
|
+
}
|
|
28872
|
+
else {
|
|
28873
|
+
window.open(item.url + "/" + item.defaultRedirect, '_blank');
|
|
28874
|
+
}
|
|
28875
|
+
}
|
|
28876
|
+
else {
|
|
28877
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
28878
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
28879
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
28880
|
+
if (this.rootContext.data.currentAppMetadata
|
|
28881
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
28882
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
28883
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
28884
|
+
}
|
|
28885
|
+
}
|
|
28886
|
+
}
|
|
28887
|
+
};
|
|
28888
|
+
AppTopBarV2Component.prototype.hasAdvanceSearchBox = function () {
|
|
28889
|
+
return this.model.searchModel.hasAdvanceSearch;
|
|
28890
|
+
};
|
|
28891
|
+
AppTopBarV2Component.prototype.isAdvanceSearching = function () {
|
|
28892
|
+
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
28893
|
+
};
|
|
28894
|
+
AppTopBarV2Component.prototype.hasAdvanceSearchValue = function (obj) {
|
|
28895
|
+
for (var key in obj) {
|
|
28896
|
+
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
28897
|
+
continue;
|
|
28898
|
+
}
|
|
28899
|
+
if (obj[key] != null && obj[key] != '') {
|
|
28900
|
+
return false;
|
|
28901
|
+
}
|
|
28902
|
+
}
|
|
28903
|
+
return true;
|
|
28904
|
+
};
|
|
28905
|
+
AppTopBarV2Component.prototype.getComponentId = function () {
|
|
28906
|
+
return 'TOPBAR';
|
|
28907
|
+
};
|
|
28908
|
+
AppTopBarV2Component.prototype.goToHome = function () {
|
|
28909
|
+
this.rootContext.fireEvent('GO_HOME');
|
|
28910
|
+
};
|
|
28911
|
+
AppTopBarV2Component.prototype.onEditInfo = function (event) {
|
|
28912
|
+
event.preventDefault();
|
|
28913
|
+
var currentAppSetting = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
28914
|
+
if (currentAppSetting) {
|
|
28915
|
+
this.switchApp(currentAppSetting);
|
|
28916
|
+
}
|
|
28917
|
+
else {
|
|
28918
|
+
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
28919
|
+
}
|
|
28920
|
+
};
|
|
28921
|
+
AppTopBarV2Component.prototype.onChangePassword = function (event) {
|
|
28922
|
+
event.preventDefault();
|
|
28923
|
+
// this.changePassword.showPopup(this._userService.getId());
|
|
28924
|
+
};
|
|
28925
|
+
AppTopBarV2Component.prototype.onTopbarLogout = function () {
|
|
28926
|
+
if (!localStorage.getItem('currentUrl')) {
|
|
28927
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
28928
|
+
}
|
|
28929
|
+
this._authenService.logout();
|
|
28930
|
+
};
|
|
28931
|
+
AppTopBarV2Component.prototype.settingDefault = function () {
|
|
28932
|
+
this.model.dataModelSetting = {
|
|
28933
|
+
data: {},
|
|
28934
|
+
showSettings: true
|
|
28935
|
+
};
|
|
28936
|
+
};
|
|
28937
|
+
AppTopBarV2Component.prototype.onShowSettings = function (ev) {
|
|
28938
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
28939
|
+
};
|
|
28940
|
+
AppTopBarV2Component.prototype.onCloseSettings = function (ev) {
|
|
28941
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
28942
|
+
};
|
|
28943
|
+
AppTopBarV2Component.prototype.showProfilePage = function () {
|
|
28944
|
+
if (this._userService.isSinhVienAccount()) {
|
|
28945
|
+
return false;
|
|
28946
|
+
}
|
|
28947
|
+
return true;
|
|
28948
|
+
};
|
|
28949
|
+
AppTopBarV2Component.prototype.login = function () {
|
|
28950
|
+
this.rootContext.fireEvent('LOGIN');
|
|
28951
|
+
};
|
|
28952
|
+
AppTopBarV2Component.prototype.setNotify = function (message) {
|
|
28953
|
+
this.message = message;
|
|
28954
|
+
};
|
|
28955
|
+
AppTopBarV2Component.prototype.handleMouseOver = function (evt) {
|
|
28956
|
+
evt.target.stop();
|
|
28957
|
+
};
|
|
28958
|
+
AppTopBarV2Component.prototype.handleMouseOut = function (evt) {
|
|
28959
|
+
evt.target.start();
|
|
28960
|
+
};
|
|
28961
|
+
AppTopBarV2Component.prototype.showNotificationReload = function () {
|
|
28962
|
+
var _this = this;
|
|
28963
|
+
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
28964
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
28965
|
+
this._notifierService.showConfirm(this.message).then(function (res) {
|
|
28966
|
+
_this.reloadWindow();
|
|
28967
|
+
});
|
|
28968
|
+
// if (this.intervalCountdown) {
|
|
28969
|
+
// clearInterval(this.intervalCountdown);
|
|
28970
|
+
// }
|
|
28971
|
+
// const date = new Date();
|
|
28972
|
+
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
28973
|
+
// this.intervalCountdown = setInterval(f => {
|
|
28974
|
+
// const now = new Date().getTime();
|
|
28975
|
+
// const distance = goalDate - now;
|
|
28976
|
+
// var seconds = Math.floor(distance / 1000);
|
|
28977
|
+
// // If the count down is finished, write some text
|
|
28978
|
+
// if (distance < 0) {
|
|
28979
|
+
// clearInterval(this.intervalCountdown);
|
|
28980
|
+
// this.reloadWindow();
|
|
28981
|
+
// return;
|
|
28982
|
+
// }
|
|
28983
|
+
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
28984
|
+
// if (seconds < 1) {
|
|
28985
|
+
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
28986
|
+
// }
|
|
28987
|
+
// this._notifierService.showConfirm(
|
|
28988
|
+
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
28989
|
+
// 'pi pi-check'
|
|
28990
|
+
// ).then(res => {
|
|
28991
|
+
// clearInterval(this.intervalCountdown);
|
|
28992
|
+
// this.reloadWindow();
|
|
28993
|
+
// });
|
|
28994
|
+
// }, 1000);
|
|
28995
|
+
};
|
|
28996
|
+
AppTopBarV2Component.prototype.reloadWindow = function () {
|
|
28997
|
+
top.location.reload();
|
|
28998
|
+
};
|
|
28999
|
+
return AppTopBarV2Component;
|
|
29000
|
+
}(ComponentBase));
|
|
29001
|
+
AppTopBarV2Component.decorators = [
|
|
29002
|
+
{ type: i0.Component, args: [{
|
|
29003
|
+
selector: 'app-topbar-v2',
|
|
29004
|
+
template: "<div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\r\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\r\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>",
|
|
29005
|
+
providers: [ComponentContextService],
|
|
29006
|
+
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{color:#52abff;text-align:center;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:5px auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{margin-top:0;width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v2 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v2 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));text-align:center}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
29007
|
+
},] }
|
|
29008
|
+
];
|
|
29009
|
+
AppTopBarV2Component.ctorParameters = function () { return [
|
|
29010
|
+
{ type: CustomRouterService },
|
|
29011
|
+
{ type: i3.Router },
|
|
29012
|
+
{ type: CommonService },
|
|
29013
|
+
{ type: AuthenService },
|
|
29014
|
+
{ type: i0.ChangeDetectorRef },
|
|
29015
|
+
{ type: i0.Injector },
|
|
29016
|
+
{ type: PermissionService },
|
|
29017
|
+
{ type: ModuleConfigService },
|
|
29018
|
+
{ type: UserService },
|
|
29019
|
+
{ type: NotifierService },
|
|
29020
|
+
{ type: i2.TranslateService }
|
|
29021
|
+
]; };
|
|
29022
|
+
AppTopBarV2Component.propDecorators = {
|
|
29023
|
+
input: [{ type: i0.ViewChild, args: ['input',] }],
|
|
29024
|
+
notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }]
|
|
29025
|
+
};
|
|
29026
|
+
|
|
28594
29027
|
var MenuService = /** @class */ (function () {
|
|
28595
29028
|
function MenuService(_moduleConfigService, _permissionService, _commonService, _applicationContext) {
|
|
28596
29029
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -32288,6 +32721,46 @@
|
|
|
32288
32721
|
onReady: [{ type: i0.Output }]
|
|
32289
32722
|
};
|
|
32290
32723
|
|
|
32724
|
+
var TableDetailFormComponent = /** @class */ (function (_super) {
|
|
32725
|
+
__extends(TableDetailFormComponent, _super);
|
|
32726
|
+
function TableDetailFormComponent(injector) {
|
|
32727
|
+
var _this = _super.call(this, injector) || this;
|
|
32728
|
+
_this.schema = [];
|
|
32729
|
+
_this.data = {};
|
|
32730
|
+
_this.onSaved = new i0.EventEmitter();
|
|
32731
|
+
return _this;
|
|
32732
|
+
}
|
|
32733
|
+
TableDetailFormComponent.prototype.ngOnInit = function () {
|
|
32734
|
+
_super.prototype.ngOnInit.call(this);
|
|
32735
|
+
this.autoSave = false;
|
|
32736
|
+
this.model.data = this.data;
|
|
32737
|
+
this.setting.baseService = this.parentSetting.baseService;
|
|
32738
|
+
this.setting.schema = this.schema;
|
|
32739
|
+
};
|
|
32740
|
+
TableDetailFormComponent.prototype.handleManualSave = function () {
|
|
32741
|
+
this.onSaved.emit(this.model.data);
|
|
32742
|
+
};
|
|
32743
|
+
return TableDetailFormComponent;
|
|
32744
|
+
}(DataFormBase));
|
|
32745
|
+
TableDetailFormComponent.decorators = [
|
|
32746
|
+
{ type: i0.Component, args: [{
|
|
32747
|
+
selector: 'table-detail-form',
|
|
32748
|
+
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>",
|
|
32749
|
+
providers: [
|
|
32750
|
+
ComponentContextService
|
|
32751
|
+
],
|
|
32752
|
+
styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{background:#337ab7;border:none;border-radius:3px;color:#fff;cursor:pointer;height:30px;margin:1px .5em 0;padding:0 10px}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}"]
|
|
32753
|
+
},] }
|
|
32754
|
+
];
|
|
32755
|
+
TableDetailFormComponent.ctorParameters = function () { return [
|
|
32756
|
+
{ type: i0.Injector }
|
|
32757
|
+
]; };
|
|
32758
|
+
TableDetailFormComponent.propDecorators = {
|
|
32759
|
+
schema: [{ type: i0.Input }],
|
|
32760
|
+
data: [{ type: i0.Input }],
|
|
32761
|
+
onSaved: [{ type: i0.Output }]
|
|
32762
|
+
};
|
|
32763
|
+
|
|
32291
32764
|
var TreeTableComponent = /** @class */ (function (_super) {
|
|
32292
32765
|
__extends(TreeTableComponent, _super);
|
|
32293
32766
|
function TreeTableComponent(injector, _crudService, _notifierService) {
|
|
@@ -32965,46 +33438,6 @@
|
|
|
32965
33438
|
onReloaded: [{ type: i0.Output }]
|
|
32966
33439
|
};
|
|
32967
33440
|
|
|
32968
|
-
var TableDetailFormComponent = /** @class */ (function (_super) {
|
|
32969
|
-
__extends(TableDetailFormComponent, _super);
|
|
32970
|
-
function TableDetailFormComponent(injector) {
|
|
32971
|
-
var _this = _super.call(this, injector) || this;
|
|
32972
|
-
_this.schema = [];
|
|
32973
|
-
_this.data = {};
|
|
32974
|
-
_this.onSaved = new i0.EventEmitter();
|
|
32975
|
-
return _this;
|
|
32976
|
-
}
|
|
32977
|
-
TableDetailFormComponent.prototype.ngOnInit = function () {
|
|
32978
|
-
_super.prototype.ngOnInit.call(this);
|
|
32979
|
-
this.autoSave = false;
|
|
32980
|
-
this.model.data = this.data;
|
|
32981
|
-
this.setting.baseService = this.parentSetting.baseService;
|
|
32982
|
-
this.setting.schema = this.schema;
|
|
32983
|
-
};
|
|
32984
|
-
TableDetailFormComponent.prototype.handleManualSave = function () {
|
|
32985
|
-
this.onSaved.emit(this.model.data);
|
|
32986
|
-
};
|
|
32987
|
-
return TableDetailFormComponent;
|
|
32988
|
-
}(DataFormBase));
|
|
32989
|
-
TableDetailFormComponent.decorators = [
|
|
32990
|
-
{ type: i0.Component, args: [{
|
|
32991
|
-
selector: 'table-detail-form',
|
|
32992
|
-
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>",
|
|
32993
|
-
providers: [
|
|
32994
|
-
ComponentContextService
|
|
32995
|
-
],
|
|
32996
|
-
styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.btn-clear{background:#337ab7;border:none;border-radius:3px;color:#fff;cursor:pointer;height:30px;margin:1px .5em 0;padding:0 10px}.p-col-horizontal{padding:.5em}::ng-deep .tn-check-box-list{position:relative}::ng-deep .tn-check-box-list.flex-end{justify-content:flex-end}::ng-deep .tn-check-box-list.flex-center{justify-content:center}::ng-deep .tn-check-box-list label{cursor:pointer}"]
|
|
32997
|
-
},] }
|
|
32998
|
-
];
|
|
32999
|
-
TableDetailFormComponent.ctorParameters = function () { return [
|
|
33000
|
-
{ type: i0.Injector }
|
|
33001
|
-
]; };
|
|
33002
|
-
TableDetailFormComponent.propDecorators = {
|
|
33003
|
-
schema: [{ type: i0.Input }],
|
|
33004
|
-
data: [{ type: i0.Input }],
|
|
33005
|
-
onSaved: [{ type: i0.Output }]
|
|
33006
|
-
};
|
|
33007
|
-
|
|
33008
33441
|
var DatetimePickerRangeComponent = /** @class */ (function () {
|
|
33009
33442
|
function DatetimePickerRangeComponent() {
|
|
33010
33443
|
this.control = new DateTimeRangeControlSchema();
|
|
@@ -41489,213 +41922,6 @@
|
|
|
41489
41922
|
lstItem: [{ type: i0.Input }]
|
|
41490
41923
|
};
|
|
41491
41924
|
|
|
41492
|
-
var SplashComponentV2Component = /** @class */ (function (_super) {
|
|
41493
|
-
__extends(SplashComponentV2Component, _super);
|
|
41494
|
-
function SplashComponentV2Component(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
41495
|
-
var _this = _super.call(this, injector) || this;
|
|
41496
|
-
_this._moduleConfigService = _moduleConfigService;
|
|
41497
|
-
_this._permissionService = _permissionService;
|
|
41498
|
-
_this._deviceDetectorService = _deviceDetectorService;
|
|
41499
|
-
_this._userService = _userService;
|
|
41500
|
-
_this._router = _router;
|
|
41501
|
-
_this._authenService = _authenService;
|
|
41502
|
-
_this._globalService = _globalService;
|
|
41503
|
-
_this.defaultAvatar = '';
|
|
41504
|
-
_this.appSwitcherItems = [];
|
|
41505
|
-
_this.loaded = false;
|
|
41506
|
-
_this.currentDate = new Date();
|
|
41507
|
-
_this.showDefaultSetting = false;
|
|
41508
|
-
_this.fileApi = '';
|
|
41509
|
-
_this.isOnMobile = false;
|
|
41510
|
-
_this.daysInWeek = ['Chủ nhật', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'];
|
|
41511
|
-
_this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
|
|
41512
|
-
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
41513
|
-
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
41514
|
-
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
41515
|
-
setInterval(function () {
|
|
41516
|
-
_this.currentDate = new Date();
|
|
41517
|
-
}, 1000);
|
|
41518
|
-
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
41519
|
-
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
41520
|
-
}
|
|
41521
|
-
else {
|
|
41522
|
-
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
41523
|
-
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
41524
|
-
}
|
|
41525
|
-
else {
|
|
41526
|
-
_this.showDefaultSetting = false;
|
|
41527
|
-
}
|
|
41528
|
-
}
|
|
41529
|
-
// Config for authentication
|
|
41530
|
-
_this._globalService.setHeaderState(false);
|
|
41531
|
-
_this._globalService.setMenuState(false);
|
|
41532
|
-
_this.underconstruction = _this.environment.underconstruction;
|
|
41533
|
-
return _this;
|
|
41534
|
-
}
|
|
41535
|
-
SplashComponentV2Component.prototype.ngOnInit = function () {
|
|
41536
|
-
var _this = this;
|
|
41537
|
-
if (this._deviceDetectorService.isMobile()) {
|
|
41538
|
-
this.isOnMobile = true;
|
|
41539
|
-
}
|
|
41540
|
-
if (this.rootContext.data.currentUser) {
|
|
41541
|
-
if (this.rootContext.data.currentUser.gender == 0) {
|
|
41542
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
41543
|
-
}
|
|
41544
|
-
else {
|
|
41545
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
41546
|
-
}
|
|
41547
|
-
}
|
|
41548
|
-
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
41549
|
-
_this.currentUser = _this._userService.getCurrentUser();
|
|
41550
|
-
_this.loadAppMetadata();
|
|
41551
|
-
_this.loaded = true;
|
|
41552
|
-
});
|
|
41553
|
-
if (this.rootModel.allowAnonymous) {
|
|
41554
|
-
this.loaded = true;
|
|
41555
|
-
this.loadAppMetadata();
|
|
41556
|
-
}
|
|
41557
|
-
};
|
|
41558
|
-
SplashComponentV2Component.prototype.loadAppMetadata = function () {
|
|
41559
|
-
var _this = this;
|
|
41560
|
-
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
41561
|
-
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
41562
|
-
return __generator(this, function (_c) {
|
|
41563
|
-
switch (_c.label) {
|
|
41564
|
-
case 0:
|
|
41565
|
-
arr = [];
|
|
41566
|
-
_a = [];
|
|
41567
|
-
for (_b in this.environment.appMetadata.appSwitcher)
|
|
41568
|
-
_a.push(_b);
|
|
41569
|
-
_i = 0;
|
|
41570
|
-
_c.label = 1;
|
|
41571
|
-
case 1:
|
|
41572
|
-
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
41573
|
-
ind = _a[_i];
|
|
41574
|
-
element = this.environment.appMetadata.appSwitcher[ind];
|
|
41575
|
-
clientId = this.environment.authenticationSettings.clientId;
|
|
41576
|
-
if (!(this.rootModel.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
41577
|
-
arr.push(element);
|
|
41578
|
-
return [3 /*break*/, 4];
|
|
41579
|
-
case 2:
|
|
41580
|
-
if (!this.currentUser) return [3 /*break*/, 4];
|
|
41581
|
-
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
41582
|
-
case 3:
|
|
41583
|
-
isAuthorized = _c.sent();
|
|
41584
|
-
if (isAuthorized) {
|
|
41585
|
-
arr.push(element);
|
|
41586
|
-
}
|
|
41587
|
-
_c.label = 4;
|
|
41588
|
-
case 4:
|
|
41589
|
-
_i++;
|
|
41590
|
-
return [3 /*break*/, 1];
|
|
41591
|
-
case 5:
|
|
41592
|
-
resolve(arr);
|
|
41593
|
-
return [2 /*return*/];
|
|
41594
|
-
}
|
|
41595
|
-
});
|
|
41596
|
-
}); });
|
|
41597
|
-
prmsAppSwicherItem.then(function (rs) {
|
|
41598
|
-
_this.appSwitcherItems.length = 0;
|
|
41599
|
-
if (rs) {
|
|
41600
|
-
rs.forEach(function (element) {
|
|
41601
|
-
if (element.visible) {
|
|
41602
|
-
if (!_this.currentUser) { // allow anonymous
|
|
41603
|
-
_this.appSwitcherItems.push(element);
|
|
41604
|
-
}
|
|
41605
|
-
else {
|
|
41606
|
-
if (_this.currentUser.maNguoiHoc && _this.currentUser.issuperuser.toLowerCase() != 'true') {
|
|
41607
|
-
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
41608
|
-
_this.appSwitcherItems.push(element);
|
|
41609
|
-
}
|
|
41610
|
-
}
|
|
41611
|
-
else {
|
|
41612
|
-
_this.appSwitcherItems.push(element);
|
|
41613
|
-
}
|
|
41614
|
-
}
|
|
41615
|
-
}
|
|
41616
|
-
});
|
|
41617
|
-
}
|
|
41618
|
-
});
|
|
41619
|
-
};
|
|
41620
|
-
SplashComponentV2Component.prototype.switchApp = function (item) {
|
|
41621
|
-
this.loaded = false;
|
|
41622
|
-
if (item.target == '_blank') {
|
|
41623
|
-
if (!item.defaultRedirect) {
|
|
41624
|
-
item.defaultRedirect = '';
|
|
41625
|
-
}
|
|
41626
|
-
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
41627
|
-
if (item.url == item.defaultRedirect) {
|
|
41628
|
-
item.url = '/' + item.code.toLowerCase();
|
|
41629
|
-
}
|
|
41630
|
-
var link = item.url + "/" + item.defaultRedirect;
|
|
41631
|
-
if (!link.startsWith('/') && !link.startsWith('http')) {
|
|
41632
|
-
link = '/' + link;
|
|
41633
|
-
}
|
|
41634
|
-
top.location.href = link;
|
|
41635
|
-
}
|
|
41636
|
-
else {
|
|
41637
|
-
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
41638
|
-
this._router.navigateByUrl(item.defaultRedirect);
|
|
41639
|
-
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
41640
|
-
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
41641
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
41642
|
-
}
|
|
41643
|
-
}
|
|
41644
|
-
}
|
|
41645
|
-
};
|
|
41646
|
-
SplashComponentV2Component.prototype.logout = function () {
|
|
41647
|
-
this._authenService.logout();
|
|
41648
|
-
};
|
|
41649
|
-
SplashComponentV2Component.prototype.goToPersonal = function () {
|
|
41650
|
-
var userMenu = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
41651
|
-
this.switchApp(userMenu);
|
|
41652
|
-
};
|
|
41653
|
-
SplashComponentV2Component.prototype.getCurrentUserAvatar = function () {
|
|
41654
|
-
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
41655
|
-
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
41656
|
-
}
|
|
41657
|
-
else {
|
|
41658
|
-
return this.defaultAvatar;
|
|
41659
|
-
}
|
|
41660
|
-
};
|
|
41661
|
-
SplashComponentV2Component.prototype.getNgayTrongTuan = function () {
|
|
41662
|
-
return this.daysInWeek[this.currentDate.getDay()];
|
|
41663
|
-
};
|
|
41664
|
-
SplashComponentV2Component.prototype.showProfilePage = function () {
|
|
41665
|
-
if (this._userService.isSinhVienAccount()) {
|
|
41666
|
-
return false;
|
|
41667
|
-
}
|
|
41668
|
-
return true;
|
|
41669
|
-
};
|
|
41670
|
-
SplashComponentV2Component.prototype.ngOnDestroy = function () {
|
|
41671
|
-
_super.prototype.ngOnDestroy.call(this);
|
|
41672
|
-
this._globalService.setHeaderState(true);
|
|
41673
|
-
this._globalService.setMenuState(true);
|
|
41674
|
-
};
|
|
41675
|
-
SplashComponentV2Component.prototype.login = function () {
|
|
41676
|
-
this.rootContext.fireEvent('LOGIN');
|
|
41677
|
-
};
|
|
41678
|
-
return SplashComponentV2Component;
|
|
41679
|
-
}(ComponentBase));
|
|
41680
|
-
SplashComponentV2Component.decorators = [
|
|
41681
|
-
{ type: i0.Component, args: [{
|
|
41682
|
-
selector: 'splash-component-v2',
|
|
41683
|
-
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v2\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <div class=\"tn-full-name\">{{currentUser.fullName}}</div>\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signout\" title=\"\u0110\u0103ng xu\u1EA5t\" (click)=\"logout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signin\" title=\"\u0110\u0103ng nh\u1EADp\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\u0110\u0103ng nh\u1EADp\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
41684
|
-
providers: [ComponentContextService],
|
|
41685
|
-
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v2{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v2 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dfd1d1;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v2 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v2 div>span>a,.modules-v2 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v2 div>span>a>span{display:inline-block;line-height:1.2;padding:0 5px}.modules-v2 div>span>a>i{font-size:3.5em;width:100%}.modules-v2 .module-icons{background:hsla(0,0%,100%,.9490196078431372);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px 60px;text-align:center}.modules-v2 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v2 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v2 .module-icons .img-title{margin-bottom:80px}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:30px}.modules-v2 .module-icons .img-title a.tn-icon-signin{align-items:center;background:#002c6c;border-radius:5px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;padding:10px}.modules-v2 .module-icons .img-title a.tn-icon-signin i{margin-right:5px}.modules-v2 .module-icons .div1111-wrapper{margin:0 auto 80px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#2f70ac;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover{background:#002c6c;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover span{color:#fff}.modules-v2 .module-icons .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v2 .module-icons .clock-wrapper h4{color:#2f70ac;font-size:20px;font-weight:500;margin-bottom:0;margin-top:10px}.modules-v2 .module-icons .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v2 .welcome-user{background:hsla(0,0%,100%,.9019607843137255);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#333;display:flex;padding:10px;position:absolute;right:20px;text-align:center;top:20px}.modules-v2 .welcome-user .wrp-login{align-items:center;color:#333;display:flex;flex-direction:column;margin:auto}.modules-v2 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v2 .profile-image{align-items:center;display:flex;justify-content:center}.modules-v2 .profile-image .tn-full-name{font-size:18px;margin-right:10px}.modules-v2 .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;height:40px;margin-right:10px;object-fit:contain;width:40px}.modules-v2 .profile-image .login{display:-ms-grid;display:grid;grid-gap:10px}.modules-v2 .profile-image .login a.tn-icon-signout{align-items:center;background:#002c6c;border-radius:50%;cursor:pointer;display:flex;height:40px;justify-content:center;width:40px}.modules-v2 .profile-image .login a.tn-icon-signout i{color:#edc16f;font-size:16px}@media (max-width:1368px){.modules-v2 .clock{font-size:1.5em;margin:0 20px}.modules-v2 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1200px){.modules-v2 .welcome-user{right:10px;top:10px}}@media (max-width:768px){.modules-v2 .module-icons .img-title .title h2{font-size:28px}.modules-v2 .module-icons .img-title .title h1{font-size:32px}}@media (max-width:640px){.modules-v2 .welcome-user{justify-content:flex-end;right:10px;top:10px;width:calc(100% - 20px)}.modules-v2 .module-icons{margin:10px;padding:20px}.modules-v2 .module-icons .img-title{margin-bottom:40px}.modules-v2 .module-icons .img-title .title h1{font-size:19px}.modules-v2 .module-icons .img-title .title h2{font-size:16px;margin-bottom:10px;margin-top:0}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:50px}.modules-v2 .module-icons .div1111-wrapper .div1111{-ms-grid-columns:(minmax(100px,1fr))[3];display:-ms-grid;display:grid;grid-template-columns:repeat(3,minmax(100px,1fr))}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v2 .module-icons div>span{height:100px;width:100px}.modules-v2 .module-icons div>span>a>i{font-size:3em;top:15px}.modules-v2 .module-icons .clock-wrapper h4{font-size:16px;margin-top:5px}.modules-v2 .module-icons .clock-wrapper h1{font-size:30px}}@media (max-width:375px){.modules-v2 .module-icons .img-title{margin-bottom:0}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:10px;width:100px}.modules-v2 .module-icons .img-title .title{padding:0}.modules-v2 .module-icons .img-title .title h2{font-size:14px;margin-bottom:10px}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:0}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;justify-content:center}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
41686
|
-
},] }
|
|
41687
|
-
];
|
|
41688
|
-
SplashComponentV2Component.ctorParameters = function () { return [
|
|
41689
|
-
{ type: i0.Injector },
|
|
41690
|
-
{ type: ModuleConfigService },
|
|
41691
|
-
{ type: PermissionService },
|
|
41692
|
-
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
41693
|
-
{ type: UserService },
|
|
41694
|
-
{ type: i3.Router },
|
|
41695
|
-
{ type: AuthenService },
|
|
41696
|
-
{ type: GlobalService }
|
|
41697
|
-
]; };
|
|
41698
|
-
|
|
41699
41925
|
var SplashComponentV1Component = /** @class */ (function (_super) {
|
|
41700
41926
|
__extends(SplashComponentV1Component, _super);
|
|
41701
41927
|
function SplashComponentV1Component(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
@@ -41903,6 +42129,213 @@
|
|
|
41903
42129
|
{ type: GlobalService }
|
|
41904
42130
|
]; };
|
|
41905
42131
|
|
|
42132
|
+
var SplashComponentV2Component = /** @class */ (function (_super) {
|
|
42133
|
+
__extends(SplashComponentV2Component, _super);
|
|
42134
|
+
function SplashComponentV2Component(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
42135
|
+
var _this = _super.call(this, injector) || this;
|
|
42136
|
+
_this._moduleConfigService = _moduleConfigService;
|
|
42137
|
+
_this._permissionService = _permissionService;
|
|
42138
|
+
_this._deviceDetectorService = _deviceDetectorService;
|
|
42139
|
+
_this._userService = _userService;
|
|
42140
|
+
_this._router = _router;
|
|
42141
|
+
_this._authenService = _authenService;
|
|
42142
|
+
_this._globalService = _globalService;
|
|
42143
|
+
_this.defaultAvatar = '';
|
|
42144
|
+
_this.appSwitcherItems = [];
|
|
42145
|
+
_this.loaded = false;
|
|
42146
|
+
_this.currentDate = new Date();
|
|
42147
|
+
_this.showDefaultSetting = false;
|
|
42148
|
+
_this.fileApi = '';
|
|
42149
|
+
_this.isOnMobile = false;
|
|
42150
|
+
_this.daysInWeek = ['Chủ nhật', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'];
|
|
42151
|
+
_this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
|
|
42152
|
+
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
42153
|
+
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
42154
|
+
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
42155
|
+
setInterval(function () {
|
|
42156
|
+
_this.currentDate = new Date();
|
|
42157
|
+
}, 1000);
|
|
42158
|
+
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
42159
|
+
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
42160
|
+
}
|
|
42161
|
+
else {
|
|
42162
|
+
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
42163
|
+
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
42164
|
+
}
|
|
42165
|
+
else {
|
|
42166
|
+
_this.showDefaultSetting = false;
|
|
42167
|
+
}
|
|
42168
|
+
}
|
|
42169
|
+
// Config for authentication
|
|
42170
|
+
_this._globalService.setHeaderState(false);
|
|
42171
|
+
_this._globalService.setMenuState(false);
|
|
42172
|
+
_this.underconstruction = _this.environment.underconstruction;
|
|
42173
|
+
return _this;
|
|
42174
|
+
}
|
|
42175
|
+
SplashComponentV2Component.prototype.ngOnInit = function () {
|
|
42176
|
+
var _this = this;
|
|
42177
|
+
if (this._deviceDetectorService.isMobile()) {
|
|
42178
|
+
this.isOnMobile = true;
|
|
42179
|
+
}
|
|
42180
|
+
if (this.rootContext.data.currentUser) {
|
|
42181
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
42182
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
42183
|
+
}
|
|
42184
|
+
else {
|
|
42185
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
42186
|
+
}
|
|
42187
|
+
}
|
|
42188
|
+
this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
42189
|
+
_this.currentUser = _this._userService.getCurrentUser();
|
|
42190
|
+
_this.loadAppMetadata();
|
|
42191
|
+
_this.loaded = true;
|
|
42192
|
+
});
|
|
42193
|
+
if (this.rootModel.allowAnonymous) {
|
|
42194
|
+
this.loaded = true;
|
|
42195
|
+
this.loadAppMetadata();
|
|
42196
|
+
}
|
|
42197
|
+
};
|
|
42198
|
+
SplashComponentV2Component.prototype.loadAppMetadata = function () {
|
|
42199
|
+
var _this = this;
|
|
42200
|
+
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
42201
|
+
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
42202
|
+
return __generator(this, function (_c) {
|
|
42203
|
+
switch (_c.label) {
|
|
42204
|
+
case 0:
|
|
42205
|
+
arr = [];
|
|
42206
|
+
_a = [];
|
|
42207
|
+
for (_b in this.environment.appMetadata.appSwitcher)
|
|
42208
|
+
_a.push(_b);
|
|
42209
|
+
_i = 0;
|
|
42210
|
+
_c.label = 1;
|
|
42211
|
+
case 1:
|
|
42212
|
+
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
42213
|
+
ind = _a[_i];
|
|
42214
|
+
element = this.environment.appMetadata.appSwitcher[ind];
|
|
42215
|
+
clientId = this.environment.authenticationSettings.clientId;
|
|
42216
|
+
if (!(this.rootModel.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
42217
|
+
arr.push(element);
|
|
42218
|
+
return [3 /*break*/, 4];
|
|
42219
|
+
case 2:
|
|
42220
|
+
if (!this.currentUser) return [3 /*break*/, 4];
|
|
42221
|
+
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
42222
|
+
case 3:
|
|
42223
|
+
isAuthorized = _c.sent();
|
|
42224
|
+
if (isAuthorized) {
|
|
42225
|
+
arr.push(element);
|
|
42226
|
+
}
|
|
42227
|
+
_c.label = 4;
|
|
42228
|
+
case 4:
|
|
42229
|
+
_i++;
|
|
42230
|
+
return [3 /*break*/, 1];
|
|
42231
|
+
case 5:
|
|
42232
|
+
resolve(arr);
|
|
42233
|
+
return [2 /*return*/];
|
|
42234
|
+
}
|
|
42235
|
+
});
|
|
42236
|
+
}); });
|
|
42237
|
+
prmsAppSwicherItem.then(function (rs) {
|
|
42238
|
+
_this.appSwitcherItems.length = 0;
|
|
42239
|
+
if (rs) {
|
|
42240
|
+
rs.forEach(function (element) {
|
|
42241
|
+
if (element.visible) {
|
|
42242
|
+
if (!_this.currentUser) { // allow anonymous
|
|
42243
|
+
_this.appSwitcherItems.push(element);
|
|
42244
|
+
}
|
|
42245
|
+
else {
|
|
42246
|
+
if (_this.currentUser.maNguoiHoc && _this.currentUser.issuperuser.toLowerCase() != 'true') {
|
|
42247
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
42248
|
+
_this.appSwitcherItems.push(element);
|
|
42249
|
+
}
|
|
42250
|
+
}
|
|
42251
|
+
else {
|
|
42252
|
+
_this.appSwitcherItems.push(element);
|
|
42253
|
+
}
|
|
42254
|
+
}
|
|
42255
|
+
}
|
|
42256
|
+
});
|
|
42257
|
+
}
|
|
42258
|
+
});
|
|
42259
|
+
};
|
|
42260
|
+
SplashComponentV2Component.prototype.switchApp = function (item) {
|
|
42261
|
+
this.loaded = false;
|
|
42262
|
+
if (item.target == '_blank') {
|
|
42263
|
+
if (!item.defaultRedirect) {
|
|
42264
|
+
item.defaultRedirect = '';
|
|
42265
|
+
}
|
|
42266
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
42267
|
+
if (item.url == item.defaultRedirect) {
|
|
42268
|
+
item.url = '/' + item.code.toLowerCase();
|
|
42269
|
+
}
|
|
42270
|
+
var link = item.url + "/" + item.defaultRedirect;
|
|
42271
|
+
if (!link.startsWith('/') && !link.startsWith('http')) {
|
|
42272
|
+
link = '/' + link;
|
|
42273
|
+
}
|
|
42274
|
+
top.location.href = link;
|
|
42275
|
+
}
|
|
42276
|
+
else {
|
|
42277
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
42278
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
42279
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
42280
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
42281
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
42282
|
+
}
|
|
42283
|
+
}
|
|
42284
|
+
}
|
|
42285
|
+
};
|
|
42286
|
+
SplashComponentV2Component.prototype.logout = function () {
|
|
42287
|
+
this._authenService.logout();
|
|
42288
|
+
};
|
|
42289
|
+
SplashComponentV2Component.prototype.goToPersonal = function () {
|
|
42290
|
+
var userMenu = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
42291
|
+
this.switchApp(userMenu);
|
|
42292
|
+
};
|
|
42293
|
+
SplashComponentV2Component.prototype.getCurrentUserAvatar = function () {
|
|
42294
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
42295
|
+
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
42296
|
+
}
|
|
42297
|
+
else {
|
|
42298
|
+
return this.defaultAvatar;
|
|
42299
|
+
}
|
|
42300
|
+
};
|
|
42301
|
+
SplashComponentV2Component.prototype.getNgayTrongTuan = function () {
|
|
42302
|
+
return this.daysInWeek[this.currentDate.getDay()];
|
|
42303
|
+
};
|
|
42304
|
+
SplashComponentV2Component.prototype.showProfilePage = function () {
|
|
42305
|
+
if (this._userService.isSinhVienAccount()) {
|
|
42306
|
+
return false;
|
|
42307
|
+
}
|
|
42308
|
+
return true;
|
|
42309
|
+
};
|
|
42310
|
+
SplashComponentV2Component.prototype.ngOnDestroy = function () {
|
|
42311
|
+
_super.prototype.ngOnDestroy.call(this);
|
|
42312
|
+
this._globalService.setHeaderState(true);
|
|
42313
|
+
this._globalService.setMenuState(true);
|
|
42314
|
+
};
|
|
42315
|
+
SplashComponentV2Component.prototype.login = function () {
|
|
42316
|
+
this.rootContext.fireEvent('LOGIN');
|
|
42317
|
+
};
|
|
42318
|
+
return SplashComponentV2Component;
|
|
42319
|
+
}(ComponentBase));
|
|
42320
|
+
SplashComponentV2Component.decorators = [
|
|
42321
|
+
{ type: i0.Component, args: [{
|
|
42322
|
+
selector: 'splash-component-v2',
|
|
42323
|
+
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v2\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <div class=\"tn-full-name\">{{currentUser.fullName}}</div>\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signout\" title=\"\u0110\u0103ng xu\u1EA5t\" (click)=\"logout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"module-icons\">\r\n <div class=\"img-title\">\r\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\r\n [alt]=\"environment.appMetadata.main.owner\">\r\n <div class=\"title\">\r\n <h2>{{environment.appMetadata.main.title}}</h2>\r\n <h1>{{environment.appMetadata.main.owner}}</h1>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\">\r\n <a class=\"tn-icon-signin\" title=\"\u0110\u0103ng nh\u1EADp\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\u0110\u0103ng nh\u1EADp\r\n </a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </tn-custom-scrollbar>\r\n\r\n <ng-container *ngIf=\"isOnMobile\">\r\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"clock-wrapper\">\r\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\r\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #appSwitcher>\r\n <div class=\"div1111\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <span>\r\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\r\n <span>{{ item.title | translate}}</span>\r\n </a>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</ng-template>",
|
|
42324
|
+
providers: [ComponentContextService],
|
|
42325
|
+
styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{display:inline-block;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{-webkit-animation:load4 1.3s linear infinite;animation:load4 1.3s linear infinite;border:2px solid #bcdbf5;border-radius:50%;border-top-color:#3192e1;color:#607d8b;display:block;font-size:10px;height:10px;width:10px}.modules-v2{align-items:center;background-image:url(/assets/images/background-splash.png);background-position:50%;background-repeat:no-repeat;background-size:cover;display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:100}.modules-v2 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dfd1d1;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v2 div>span>a{border-radius:5px;cursor:pointer;display:inline-block;display:flex;flex-direction:column;font-weight:700;height:100%;justify-content:space-evenly;position:relative}.modules-v2 div>span>a,.modules-v2 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v2 div>span>a>span{display:inline-block;line-height:1.2;padding:0 5px}.modules-v2 div>span>a>i{font-size:3.5em;width:100%}.modules-v2 .module-icons{background:hsla(0,0%,100%,.9490196078431372);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px 60px;text-align:center}.modules-v2 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v2 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v2 .module-icons .img-title{margin-bottom:80px}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:30px}.modules-v2 .module-icons .img-title a.tn-icon-signin{align-items:center;background:#002c6c;border-radius:5px;color:#fff;cursor:pointer;display:inline-flex;justify-content:center;padding:10px}.modules-v2 .module-icons .img-title a.tn-icon-signin i{margin-right:5px}.modules-v2 .module-icons .div1111-wrapper{margin:0 auto 80px}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#2f70ac;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover{background:#002c6c;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher:hover span{color:#fff}.modules-v2 .module-icons .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v2 .module-icons .clock-wrapper h4{color:#2f70ac;font-size:20px;font-weight:500;margin-bottom:0;margin-top:10px}.modules-v2 .module-icons .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v2 .welcome-user{background:hsla(0,0%,100%,.9019607843137255);border-radius:10px;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804);color:#333;display:flex;padding:10px;position:absolute;right:20px;text-align:center;top:20px}.modules-v2 .welcome-user .wrp-login{align-items:center;color:#333;display:flex;flex-direction:column;margin:auto}.modules-v2 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v2 .profile-image{align-items:center;display:flex;justify-content:center}.modules-v2 .profile-image .tn-full-name{font-size:18px;margin-right:10px}.modules-v2 .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;height:40px;margin-right:10px;object-fit:contain;width:40px}.modules-v2 .profile-image .login{display:-ms-grid;display:grid;grid-gap:10px}.modules-v2 .profile-image .login a.tn-icon-signout{align-items:center;background:#002c6c;border-radius:50%;cursor:pointer;display:flex;height:40px;justify-content:center;width:40px}.modules-v2 .profile-image .login a.tn-icon-signout i{color:#edc16f;font-size:16px}@media (max-width:1368px){.modules-v2 .clock{font-size:1.5em;margin:0 20px}.modules-v2 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1200px){.modules-v2 .welcome-user{right:10px;top:10px}}@media (max-width:768px){.modules-v2 .module-icons .img-title .title h2{font-size:28px}.modules-v2 .module-icons .img-title .title h1{font-size:32px}}@media (max-width:640px){.modules-v2 .welcome-user{justify-content:flex-end;right:10px;top:10px;width:calc(100% - 20px)}.modules-v2 .module-icons{margin:10px;padding:20px}.modules-v2 .module-icons .img-title{margin-bottom:40px}.modules-v2 .module-icons .img-title .title h1{font-size:19px}.modules-v2 .module-icons .img-title .title h2{font-size:16px;margin-bottom:10px;margin-top:0}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:50px}.modules-v2 .module-icons .div1111-wrapper .div1111{-ms-grid-columns:(minmax(100px,1fr))[3];display:-ms-grid;display:grid;grid-template-columns:repeat(3,minmax(100px,1fr))}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v2 .module-icons div>span{height:100px;width:100px}.modules-v2 .module-icons div>span>a>i{font-size:3em;top:15px}.modules-v2 .module-icons .clock-wrapper h4{font-size:16px;margin-top:5px}.modules-v2 .module-icons .clock-wrapper h1{font-size:30px}}@media (max-width:375px){.modules-v2 .module-icons .img-title{margin-bottom:0}.modules-v2 .module-icons .img-title img.tn-custom-logo{margin-bottom:10px;width:100px}.modules-v2 .module-icons .img-title .title{padding:0}.modules-v2 .module-icons .img-title .title h2{font-size:14px;margin-bottom:10px}.modules-v2 .module-icons .div1111-wrapper{margin-bottom:0}.modules-v2 .module-icons .div1111-wrapper .div1111{display:flex;justify-content:center}.modules-v2 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}}@-webkit-keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
|
|
42326
|
+
},] }
|
|
42327
|
+
];
|
|
42328
|
+
SplashComponentV2Component.ctorParameters = function () { return [
|
|
42329
|
+
{ type: i0.Injector },
|
|
42330
|
+
{ type: ModuleConfigService },
|
|
42331
|
+
{ type: PermissionService },
|
|
42332
|
+
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
42333
|
+
{ type: UserService },
|
|
42334
|
+
{ type: i3.Router },
|
|
42335
|
+
{ type: AuthenService },
|
|
42336
|
+
{ type: GlobalService }
|
|
42337
|
+
]; };
|
|
42338
|
+
|
|
41906
42339
|
var DynamicNodeComponent = /** @class */ (function (_super) {
|
|
41907
42340
|
__extends(DynamicNodeComponent, _super);
|
|
41908
42341
|
function DynamicNodeComponent(injector) {
|
|
@@ -42808,10 +43241,10 @@
|
|
|
42808
43241
|
this.data.data = {};
|
|
42809
43242
|
}
|
|
42810
43243
|
if (this.data.data.departmentRules == null) {
|
|
42811
|
-
this.data.data.departmentRules = [
|
|
43244
|
+
this.data.data.departmentRules = [];
|
|
42812
43245
|
}
|
|
42813
43246
|
if (this.data.data.departmentViewRules == null) {
|
|
42814
|
-
this.data.data.departmentViewRules = [exports.EnumUserRule.NGUOI_THEO_DOI];
|
|
43247
|
+
this.data.data.departmentViewRules = [exports.EnumUserRule.NGUOI_NHAN, exports.EnumUserRule.NGUOI_THEO_DOI];
|
|
42815
43248
|
}
|
|
42816
43249
|
}
|
|
42817
43250
|
};
|
|
@@ -42910,10 +43343,10 @@
|
|
|
42910
43343
|
this.data.data = {};
|
|
42911
43344
|
}
|
|
42912
43345
|
if (this.data.data.groupRules == null) {
|
|
42913
|
-
this.data.data.groupRules = [
|
|
43346
|
+
this.data.data.groupRules = [];
|
|
42914
43347
|
}
|
|
42915
43348
|
if (this.data.data.groupViewRules == null) {
|
|
42916
|
-
this.data.data.groupViewRules = [exports.EnumUserRule.NGUOI_THEO_DOI];
|
|
43349
|
+
this.data.data.groupViewRules = [exports.EnumUserRule.NGUOI_NHAN, exports.EnumUserRule.NGUOI_THEO_DOI];
|
|
42917
43350
|
}
|
|
42918
43351
|
}
|
|
42919
43352
|
};
|
|
@@ -45177,17 +45610,24 @@
|
|
|
45177
45610
|
});
|
|
45178
45611
|
};
|
|
45179
45612
|
TnAppNotificationComponent.prototype.readById = function (data) {
|
|
45180
|
-
|
|
45181
|
-
|
|
45182
|
-
|
|
45183
|
-
|
|
45184
|
-
|
|
45613
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
45614
|
+
var _this = this;
|
|
45615
|
+
return __generator(this, function (_b) {
|
|
45616
|
+
switch (_b.label) {
|
|
45617
|
+
case 0:
|
|
45618
|
+
data.readedTime = new Date();
|
|
45619
|
+
return [4 /*yield*/, this._notificationService.markReadById(data.id).then(function (res) {
|
|
45620
|
+
_this.rootContext.fireEvent(ComCtxConstants.NOTIFICATION.NOTIFICATION_RELOAD);
|
|
45621
|
+
}).catch(function (err) { return _this._commonService.handleError(err, _this._injector); })];
|
|
45622
|
+
case 1:
|
|
45623
|
+
_b.sent();
|
|
45624
|
+
return [2 /*return*/];
|
|
45625
|
+
}
|
|
45626
|
+
});
|
|
45627
|
+
});
|
|
45185
45628
|
};
|
|
45186
45629
|
TnAppNotificationComponent.prototype.isHasAvatar = function (item) {
|
|
45187
|
-
|
|
45188
|
-
return true;
|
|
45189
|
-
}
|
|
45190
|
-
return false;
|
|
45630
|
+
return !!item.avatarId;
|
|
45191
45631
|
};
|
|
45192
45632
|
TnAppNotificationComponent.prototype.isReaded = function (item) {
|
|
45193
45633
|
return !!item.readedTime;
|
|
@@ -45196,30 +45636,42 @@
|
|
|
45196
45636
|
return this.apiUploadUrl + "/public/" + item + "/Download";
|
|
45197
45637
|
};
|
|
45198
45638
|
TnAppNotificationComponent.prototype.goToLink = function (item) {
|
|
45199
|
-
|
|
45200
|
-
|
|
45201
|
-
this
|
|
45202
|
-
|
|
45203
|
-
|
|
45204
|
-
|
|
45205
|
-
|
|
45206
|
-
|
|
45207
|
-
|
|
45208
|
-
|
|
45209
|
-
|
|
45210
|
-
|
|
45211
|
-
|
|
45212
|
-
|
|
45213
|
-
|
|
45214
|
-
|
|
45215
|
-
|
|
45216
|
-
|
|
45217
|
-
|
|
45218
|
-
|
|
45219
|
-
|
|
45220
|
-
|
|
45221
|
-
|
|
45222
|
-
|
|
45639
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
45640
|
+
var link;
|
|
45641
|
+
return __generator(this, function (_b) {
|
|
45642
|
+
switch (_b.label) {
|
|
45643
|
+
case 0:
|
|
45644
|
+
if (!!this.isReaded(item)) return [3 /*break*/, 2];
|
|
45645
|
+
return [4 /*yield*/, this.readById(item)];
|
|
45646
|
+
case 1:
|
|
45647
|
+
_b.sent();
|
|
45648
|
+
this.totalUnRead--;
|
|
45649
|
+
_b.label = 2;
|
|
45650
|
+
case 2:
|
|
45651
|
+
// Save current path to go back
|
|
45652
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
45653
|
+
localStorage.setItem('currentPathName', top.location.pathname);
|
|
45654
|
+
if (item.messageLink) {
|
|
45655
|
+
link = item.messageLink;
|
|
45656
|
+
// NamNH - Để top location href vì có thể click xem thông báo từ phân hệ khác, sau tối ưu nếu cùng phân hệ thì router navigate, còn khác phân hệ thì location href
|
|
45657
|
+
top.location.href = link;
|
|
45658
|
+
// if (this._router.isActive(link, false)) {
|
|
45659
|
+
// this.rootContext.fireEvent(ComCtxConstants.ROOT.NOTI_CLICK, link);
|
|
45660
|
+
// } else {
|
|
45661
|
+
// if (this.rootModel.fragments) {
|
|
45662
|
+
// for (const item of this.rootModel.fragments) {
|
|
45663
|
+
// if (!item.closed) {
|
|
45664
|
+
// item.unsubscribe();
|
|
45665
|
+
// }
|
|
45666
|
+
// }
|
|
45667
|
+
// }
|
|
45668
|
+
// this._router.navigateByUrl(link);
|
|
45669
|
+
// }
|
|
45670
|
+
}
|
|
45671
|
+
return [2 /*return*/];
|
|
45672
|
+
}
|
|
45673
|
+
});
|
|
45674
|
+
});
|
|
45223
45675
|
};
|
|
45224
45676
|
TnAppNotificationComponent.prototype.headerClick = function (event) {
|
|
45225
45677
|
event.preventDefault();
|
|
@@ -45230,7 +45682,9 @@
|
|
|
45230
45682
|
this.bounceNoti = false;
|
|
45231
45683
|
};
|
|
45232
45684
|
TnAppNotificationComponent.prototype.handleClicked = function () {
|
|
45233
|
-
|
|
45685
|
+
var _a;
|
|
45686
|
+
var thongBaoDomain = (_a = this.environment.clientDomain.thongbaoDomain) !== null && _a !== void 0 ? _a : '';
|
|
45687
|
+
window.open(thongBaoDomain);
|
|
45234
45688
|
};
|
|
45235
45689
|
return TnAppNotificationComponent;
|
|
45236
45690
|
}(ComponentBase));
|
|
@@ -48351,7 +48805,8 @@
|
|
|
48351
48805
|
ruleInWorkflows: [],
|
|
48352
48806
|
departmentIds: (_a = this.action.data.departmentIds) !== null && _a !== void 0 ? _a : [],
|
|
48353
48807
|
groupIds: (_b = this.action.data.groupIds) !== null && _b !== void 0 ? _b : [],
|
|
48354
|
-
roleIds: (_c = this.action.data.roleIds) !== null && _c !== void 0 ? _c : []
|
|
48808
|
+
roleIds: (_c = this.action.data.roleIds) !== null && _c !== void 0 ? _c : [],
|
|
48809
|
+
type: exports.EnumProcessWorkflowType.EDIT
|
|
48355
48810
|
};
|
|
48356
48811
|
this.dataOnlyView = {
|
|
48357
48812
|
rules: [],
|
|
@@ -48359,7 +48814,8 @@
|
|
|
48359
48814
|
ruleInWorkflows: [],
|
|
48360
48815
|
departmentIds: (_d = this.action.data.departmentViewIds) !== null && _d !== void 0 ? _d : [],
|
|
48361
48816
|
groupIds: (_e = this.action.data.groupViewIds) !== null && _e !== void 0 ? _e : [],
|
|
48362
|
-
roleIds: (_f = this.action.data.roleViewIds) !== null && _f !== void 0 ? _f : []
|
|
48817
|
+
roleIds: (_f = this.action.data.roleViewIds) !== null && _f !== void 0 ? _f : [],
|
|
48818
|
+
type: exports.EnumProcessWorkflowType.VIEW
|
|
48363
48819
|
};
|
|
48364
48820
|
this.addDistinct(this.dataAllowEdit.userIds, this.initValueForTargetForm.lstUserId);
|
|
48365
48821
|
this.addDistinct(this.dataAllowEdit.departmentIds, this.initValueForTargetForm.lstDonViId);
|
|
@@ -48512,11 +48968,16 @@
|
|
|
48512
48968
|
if (!this.data.roleIds)
|
|
48513
48969
|
this.data.roleIds = [];
|
|
48514
48970
|
this.setting.baseService = this._stateMachinesService;
|
|
48971
|
+
// set text label
|
|
48972
|
+
var txtLabel = 'nhận xử lý';
|
|
48973
|
+
if (this.data.type === exports.EnumProcessWorkflowType.VIEW) {
|
|
48974
|
+
txtLabel = 'theo dõi';
|
|
48975
|
+
}
|
|
48515
48976
|
this.setting.schema = [
|
|
48516
|
-
this._createUserPickerControl('userIds',
|
|
48977
|
+
this._createUserPickerControl('userIds', "Ng\u01B0\u1EDDi " + txtLabel),
|
|
48517
48978
|
// this.createUserPickerControl('idCapTrenGanNhats', 'Cán bộ cấp trên gần nhất'),
|
|
48518
|
-
this._createCoCauToChucControl('departmentIds',
|
|
48519
|
-
this._createUserGroupPickerControl('groupIds',
|
|
48979
|
+
this._createCoCauToChucControl('departmentIds', "\u0110\u01A1n v\u1ECB " + txtLabel),
|
|
48980
|
+
this._createUserGroupPickerControl('groupIds', "Nh\u00F3m ng\u01B0\u1EDDi " + txtLabel),
|
|
48520
48981
|
];
|
|
48521
48982
|
};
|
|
48522
48983
|
ProcessWorkflowTargetComponent.prototype._createUserPickerControl = function (field, label, multiple) {
|
|
@@ -49677,196 +50138,496 @@
|
|
|
49677
50138
|
workflowSetting: [{ type: i0.Input }]
|
|
49678
50139
|
};
|
|
49679
50140
|
|
|
49680
|
-
var
|
|
49681
|
-
__extends(
|
|
49682
|
-
function
|
|
50141
|
+
var WorkflowPermissionFormComponent = /** @class */ (function (_super) {
|
|
50142
|
+
__extends(WorkflowPermissionFormComponent, _super);
|
|
50143
|
+
function WorkflowPermissionFormComponent(_injector, _workflowPermissionService, _workflowPermissionDetailService, _userGroupService) {
|
|
49683
50144
|
var _this = _super.call(this, _injector) || this;
|
|
49684
50145
|
_this._injector = _injector;
|
|
49685
|
-
_this.
|
|
49686
|
-
_this.
|
|
49687
|
-
_this.
|
|
49688
|
-
_this.onSaved = new i0.EventEmitter();
|
|
49689
|
-
_this.onCancel = new i0.EventEmitter();
|
|
49690
|
-
_this.onSaveSetting = new i0.EventEmitter();
|
|
49691
|
-
_this.dicMachinesData = {};
|
|
49692
|
-
_this.readyCrudForm = false;
|
|
49693
|
-
_this.autoGetDetail = false;
|
|
49694
|
-
_this.autoSave = false;
|
|
50146
|
+
_this._workflowPermissionService = _workflowPermissionService;
|
|
50147
|
+
_this._workflowPermissionDetailService = _workflowPermissionDetailService;
|
|
50148
|
+
_this._userGroupService = _userGroupService;
|
|
49695
50149
|
return _this;
|
|
49696
50150
|
}
|
|
49697
|
-
|
|
49698
|
-
|
|
49699
|
-
this.setting.baseService = this.
|
|
50151
|
+
WorkflowPermissionFormComponent.prototype.ngOnInit = function () {
|
|
50152
|
+
_super.prototype.ngOnInit.call(this);
|
|
50153
|
+
this.setting.baseService = this._workflowPermissionService;
|
|
50154
|
+
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
50155
|
+
var dataSourcePermission = DataSourcePermissionBase.map(function (q) { return (Object.assign(Object.assign({}, q), { disabled: true })); });
|
|
49700
50156
|
this.setting.schema = [
|
|
49701
|
-
|
|
49702
|
-
|
|
49703
|
-
|
|
49704
|
-
|
|
49705
|
-
|
|
49706
|
-
|
|
49707
|
-
|
|
49708
|
-
onChanged: function (evt) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
49709
|
-
switch (_a.label) {
|
|
49710
|
-
case 0: return [4 /*yield*/, this.handleChangeWorkflow(evt)];
|
|
49711
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
49712
|
-
}
|
|
49713
|
-
}); }); },
|
|
49714
|
-
onAdjustedValue: function (evt) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
49715
|
-
switch (_a.label) {
|
|
49716
|
-
case 0: return [4 /*yield*/, this.handleChangeWorkflow(evt)];
|
|
49717
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
49718
|
-
}
|
|
49719
|
-
}); }); },
|
|
49720
|
-
required: true
|
|
49721
|
-
// onReady: async (evt: EventData) => await this.handleChangeWorkflow(evt)
|
|
49722
|
-
}),
|
|
49723
|
-
new DropdownControlSchema({
|
|
49724
|
-
field: 'workflowCode',
|
|
49725
|
-
label: 'Quy trình mặc định',
|
|
49726
|
-
valueField: 'code',
|
|
49727
|
-
displayField: 'title',
|
|
49728
|
-
onChanged: function (evt) { return _this.handleChangeWorkflowDefault(evt); }
|
|
49729
|
-
}),
|
|
49730
|
-
new CustomControlSchema({
|
|
49731
|
-
field: 'designer',
|
|
49732
|
-
label: this._translateService.instant('Sơ đồ trạng thái'),
|
|
49733
|
-
mdWidth: 12
|
|
50157
|
+
this._createUserPickerControl('userIds', 'Người dùng'),
|
|
50158
|
+
this._createCoCauToChucControl('donViIds', 'Đơn vị'),
|
|
50159
|
+
this._createUserGroupPickerControl('groupIds', 'Nhóm người dùng'),
|
|
50160
|
+
new CheckBoxListControlSchema({
|
|
50161
|
+
field: 'lstPermission',
|
|
50162
|
+
label: 'Quyền khả dụng',
|
|
50163
|
+
dataSource: dataSourcePermission
|
|
49734
50164
|
})
|
|
49735
50165
|
];
|
|
49736
|
-
this.model.data = this.data;
|
|
49737
|
-
this.afterGetSetting();
|
|
49738
|
-
_super.prototype.ngOnInit.call(this);
|
|
49739
50166
|
};
|
|
49740
|
-
|
|
50167
|
+
WorkflowPermissionFormComponent.prototype._createUserPickerControl = function (field, label, multiple) {
|
|
50168
|
+
if (multiple === void 0) { multiple = true; }
|
|
50169
|
+
var control = createUserPickerControl(field, label);
|
|
50170
|
+
control.multiple = multiple;
|
|
50171
|
+
return control;
|
|
50172
|
+
};
|
|
50173
|
+
WorkflowPermissionFormComponent.prototype._createCoCauToChucControl = function (field, label) {
|
|
50174
|
+
return createOrgPickerControl(field, label);
|
|
50175
|
+
};
|
|
50176
|
+
WorkflowPermissionFormComponent.prototype._createUserGroupPickerControl = function (field, label) {
|
|
50177
|
+
return createUserGroupPickerControl(this._userGroupService, field, label);
|
|
50178
|
+
};
|
|
50179
|
+
WorkflowPermissionFormComponent.prototype.onFormInitialized = function (constrols) {
|
|
49741
50180
|
return __awaiter(this, void 0, void 0, function () {
|
|
49742
50181
|
return __generator(this, function (_a) {
|
|
49743
|
-
|
|
50182
|
+
switch (_a.label) {
|
|
50183
|
+
case 0:
|
|
50184
|
+
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
50185
|
+
return [4 /*yield*/, this.getItemPermissionCurrent()];
|
|
50186
|
+
case 1:
|
|
50187
|
+
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
50188
|
+
_a.sent();
|
|
50189
|
+
return [2 /*return*/];
|
|
50190
|
+
}
|
|
49744
50191
|
});
|
|
49745
50192
|
});
|
|
49746
50193
|
};
|
|
49747
|
-
|
|
49748
|
-
var _this = this;
|
|
49749
|
-
if (!this.model.data) {
|
|
49750
|
-
this.model.data = {};
|
|
49751
|
-
this.model.formState = exports.FormState.ADD;
|
|
49752
|
-
}
|
|
49753
|
-
else {
|
|
49754
|
-
if (this.model.data.workflowCodes) {
|
|
49755
|
-
this.model.data._workflowCodes = this.model.data.workflowCodes.split(',');
|
|
49756
|
-
this.model.data._workflowCodes.forEach(function (wfCode) {
|
|
49757
|
-
_this.dicMachinesData[wfCode] = {
|
|
49758
|
-
machines: [],
|
|
49759
|
-
connections: []
|
|
49760
|
-
};
|
|
49761
|
-
});
|
|
49762
|
-
}
|
|
49763
|
-
this.model.formState = exports.FormState.EDIT;
|
|
49764
|
-
}
|
|
49765
|
-
this.readyCrudForm = true;
|
|
49766
|
-
};
|
|
49767
|
-
WorkflowPickerComponent.prototype.handleChangeWorkflow = function (evt) {
|
|
50194
|
+
WorkflowPermissionFormComponent.prototype.getItemPermissionCurrent = function () {
|
|
49768
50195
|
return __awaiter(this, void 0, void 0, function () {
|
|
49769
|
-
var
|
|
49770
|
-
var _this = this;
|
|
50196
|
+
var itemPermission;
|
|
49771
50197
|
return __generator(this, function (_a) {
|
|
49772
50198
|
switch (_a.label) {
|
|
49773
|
-
case 0:
|
|
49774
|
-
|
|
49775
|
-
|
|
49776
|
-
.
|
|
49777
|
-
|
|
49778
|
-
evt.formControls['workflowCode'].dataSource = dataSourceSelected_1;
|
|
49779
|
-
if (!evt.rootModel.workflowCode || !dataSourceSelected_1.some(function (x) { return x.code == evt.rootModel.workflowCode; })) {
|
|
49780
|
-
evt.rootModel.workflowCode = this.model.data._workflowCodes[0];
|
|
49781
|
-
}
|
|
49782
|
-
else {
|
|
49783
|
-
index = this.model.data._workflowCodes.findIndex(function (q) { return q == evt.rootModel.workflowCode; });
|
|
49784
|
-
if (index > 0) {
|
|
49785
|
-
codeDeleted = this.model.data._workflowCodes.splice(index, 1);
|
|
49786
|
-
this.model.data._workflowCodes.unshift(codeDeleted);
|
|
49787
|
-
evt.rootModel._workflowCodes = this.model.data._workflowCodes;
|
|
49788
|
-
}
|
|
49789
|
-
}
|
|
49790
|
-
this.model.data._workflowCodes.forEach(function (wfCode) {
|
|
49791
|
-
_this.dicMachinesData[wfCode] = {
|
|
49792
|
-
ten: dataSourceSelected_1.find(function (q) { return q.code == wfCode; }).title,
|
|
49793
|
-
machines: [],
|
|
49794
|
-
connections: []
|
|
49795
|
-
};
|
|
49796
|
-
});
|
|
49797
|
-
return [4 /*yield*/, this._stateMachinesService.getAll([
|
|
49798
|
-
this.newFilter('code', exports.Operator.in, this.model.data._workflowCodes)
|
|
49799
|
-
])];
|
|
50199
|
+
case 0: return [4 /*yield*/, this._workflowPermissionDetailService.changeEndpoint(this.businessSetting.baseService)
|
|
50200
|
+
.getDetailByFilter([
|
|
50201
|
+
this.newFilter('itemId', exports.Operator.equal, this.itemId),
|
|
50202
|
+
this.newFilter('userId', exports.Operator.equal, this._userService.getId())
|
|
50203
|
+
])];
|
|
49800
50204
|
case 1:
|
|
49801
|
-
|
|
49802
|
-
|
|
49803
|
-
|
|
49804
|
-
|
|
49805
|
-
|
|
49806
|
-
|
|
49807
|
-
}
|
|
49808
|
-
}
|
|
49809
|
-
return [
|
|
49810
|
-
case 2:
|
|
49811
|
-
evt.formControls['workflowCode'].dataSource = [];
|
|
49812
|
-
evt.rootModel.workflowCode = null;
|
|
49813
|
-
_a.label = 3;
|
|
49814
|
-
case 3: return [2 /*return*/];
|
|
50205
|
+
itemPermission = (_a.sent()).data;
|
|
50206
|
+
if (itemPermission) {
|
|
50207
|
+
this.formControls['lstPermission'].dataSource.forEach(function (item) {
|
|
50208
|
+
if ((itemPermission.permission & item.id) == item.id) {
|
|
50209
|
+
item.disabled = false;
|
|
50210
|
+
}
|
|
50211
|
+
});
|
|
50212
|
+
}
|
|
50213
|
+
return [2 /*return*/];
|
|
49815
50214
|
}
|
|
49816
50215
|
});
|
|
49817
50216
|
});
|
|
49818
50217
|
};
|
|
49819
|
-
|
|
49820
|
-
|
|
49821
|
-
|
|
49822
|
-
|
|
49823
|
-
|
|
49824
|
-
|
|
49825
|
-
|
|
49826
|
-
|
|
49827
|
-
|
|
49828
|
-
|
|
49829
|
-
|
|
49830
|
-
|
|
49831
|
-
|
|
49832
|
-
|
|
49833
|
-
|
|
49834
|
-
|
|
49835
|
-
|
|
49836
|
-
|
|
49837
|
-
|
|
49838
|
-
|
|
49839
|
-
|
|
49840
|
-
|
|
49841
|
-
|
|
49842
|
-
|
|
50218
|
+
WorkflowPermissionFormComponent.prototype.modifyDetailData = function (data) {
|
|
50219
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50220
|
+
return __generator(this, function (_a) {
|
|
50221
|
+
// xử lý dữ liệu lấy từ get detail về
|
|
50222
|
+
if (data.userIds) {
|
|
50223
|
+
data.userIds = data.userIds.split(',');
|
|
50224
|
+
}
|
|
50225
|
+
if (data.donViIds) {
|
|
50226
|
+
data.donViIds = data.donViIds.split(',');
|
|
50227
|
+
}
|
|
50228
|
+
if (data.groupIds) {
|
|
50229
|
+
data.groupIds = data.groupIds.split(',');
|
|
50230
|
+
}
|
|
50231
|
+
data.lstPermission = [];
|
|
50232
|
+
if (data.permission) {
|
|
50233
|
+
if ((data.permission & exports.PermissionBase.READ)) {
|
|
50234
|
+
data.lstPermission.push(exports.PermissionBase.READ);
|
|
50235
|
+
}
|
|
50236
|
+
if ((data.permission & exports.PermissionBase.EDIT)) {
|
|
50237
|
+
data.lstPermission.push(exports.PermissionBase.EDIT);
|
|
50238
|
+
}
|
|
50239
|
+
if ((data.permission & exports.PermissionBase.DELETE)) {
|
|
50240
|
+
data.lstPermission.push(exports.PermissionBase.DELETE);
|
|
50241
|
+
}
|
|
50242
|
+
}
|
|
50243
|
+
return [2 /*return*/];
|
|
50244
|
+
});
|
|
49843
50245
|
});
|
|
49844
50246
|
};
|
|
49845
|
-
|
|
49846
|
-
this
|
|
49847
|
-
|
|
49848
|
-
|
|
49849
|
-
|
|
49850
|
-
|
|
50247
|
+
WorkflowPermissionFormComponent.prototype.validateForm = function () {
|
|
50248
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50249
|
+
var itemMissings;
|
|
50250
|
+
return __generator(this, function (_a) {
|
|
50251
|
+
itemMissings = [];
|
|
50252
|
+
if (!this.isNotNullArray(this.model.data.userIds)
|
|
50253
|
+
&& !this.isNotNullArray(this.model.data.donViIds)
|
|
50254
|
+
&& !this.isNotNullArray(this.model.data.groupIds)) {
|
|
50255
|
+
itemMissings.push('người muốn phân quyền');
|
|
50256
|
+
}
|
|
50257
|
+
if (!this.isNotNullArray(this.model.data.lstPermission)) {
|
|
50258
|
+
itemMissings.push('quyền muốn phân');
|
|
50259
|
+
}
|
|
50260
|
+
if (itemMissings.length) {
|
|
50261
|
+
this._notifierService.showWarning("B\u1EA1n ph\u1EA3i nh\u1EADp " + itemMissings.join(', '));
|
|
50262
|
+
return [2 /*return*/, false];
|
|
50263
|
+
}
|
|
50264
|
+
return [2 /*return*/, true];
|
|
50265
|
+
});
|
|
50266
|
+
});
|
|
49851
50267
|
};
|
|
49852
|
-
|
|
49853
|
-
|
|
49854
|
-
|
|
49855
|
-
|
|
49856
|
-
|
|
49857
|
-
|
|
49858
|
-
|
|
49859
|
-
|
|
49860
|
-
|
|
49861
|
-
|
|
49862
|
-
|
|
49863
|
-
|
|
49864
|
-
|
|
49865
|
-
|
|
49866
|
-
|
|
49867
|
-
|
|
49868
|
-
|
|
49869
|
-
|
|
50268
|
+
WorkflowPermissionFormComponent.prototype.onBeforeSave = function () {
|
|
50269
|
+
this.model.data.tableName = this.businessSetting.baseService.entityName;
|
|
50270
|
+
this.model.data.workflowCode = DummyWorkflowCode;
|
|
50271
|
+
this.model.data.itemId = this.itemId;
|
|
50272
|
+
if (this.model.data.userIds) {
|
|
50273
|
+
this.model.data.userIds = this.model.data.userIds.toString();
|
|
50274
|
+
}
|
|
50275
|
+
if (this.model.data.donViIds) {
|
|
50276
|
+
this.model.data.donViIds = this.model.data.donViIds.toString();
|
|
50277
|
+
}
|
|
50278
|
+
if (this.model.data.groupIds) {
|
|
50279
|
+
this.model.data.groupIds = this.model.data.groupIds.toString();
|
|
50280
|
+
}
|
|
50281
|
+
if (this.model.data.lstPermission) {
|
|
50282
|
+
var permission = 0;
|
|
50283
|
+
if (this.model.data.lstPermission & exports.PermissionBase.READ) {
|
|
50284
|
+
permission = permission | exports.PermissionBase.READ;
|
|
50285
|
+
}
|
|
50286
|
+
if (this.model.data.lstPermission & exports.PermissionBase.EDIT) {
|
|
50287
|
+
permission = permission | exports.PermissionBase.EDIT;
|
|
50288
|
+
}
|
|
50289
|
+
if (this.model.data.lstPermission & exports.PermissionBase.DELETE) {
|
|
50290
|
+
permission = permission | exports.PermissionBase.DELETE;
|
|
50291
|
+
}
|
|
50292
|
+
this.model.data.permission = permission;
|
|
50293
|
+
}
|
|
50294
|
+
};
|
|
50295
|
+
WorkflowPermissionFormComponent.prototype.getPromiseActionInsert = function () {
|
|
50296
|
+
return this._workflowPermissionService.insertPermission(this.model.data);
|
|
50297
|
+
};
|
|
50298
|
+
WorkflowPermissionFormComponent.prototype.getPromiseActionUpdate = function () {
|
|
50299
|
+
return this._workflowPermissionService.updatePermission(this.model.data);
|
|
50300
|
+
};
|
|
50301
|
+
return WorkflowPermissionFormComponent;
|
|
50302
|
+
}(DataFormBase));
|
|
50303
|
+
WorkflowPermissionFormComponent.decorators = [
|
|
50304
|
+
{ type: i0.Component, args: [{
|
|
50305
|
+
selector: 'workflow-permission-form',
|
|
50306
|
+
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\"\r\n [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>\r\n",
|
|
50307
|
+
providers: [ComponentContextService],
|
|
50308
|
+
styles: [""]
|
|
50309
|
+
},] }
|
|
50310
|
+
];
|
|
50311
|
+
WorkflowPermissionFormComponent.ctorParameters = function () { return [
|
|
50312
|
+
{ type: i0.Injector },
|
|
50313
|
+
{ type: WorkflowPermissionService },
|
|
50314
|
+
{ type: WorkflowPermissionDetailService },
|
|
50315
|
+
{ type: UserGroupRealService }
|
|
50316
|
+
]; };
|
|
50317
|
+
WorkflowPermissionFormComponent.propDecorators = {
|
|
50318
|
+
businessSetting: [{ type: i0.Input }],
|
|
50319
|
+
itemId: [{ type: i0.Input }]
|
|
50320
|
+
};
|
|
50321
|
+
|
|
50322
|
+
var WorkflowPermissionComponent = /** @class */ (function (_super) {
|
|
50323
|
+
__extends(WorkflowPermissionComponent, _super);
|
|
50324
|
+
function WorkflowPermissionComponent(_injector, _workflowPermissionService, _coCauToChucService, _userGroupService) {
|
|
50325
|
+
var _this = _super.call(this, _injector) || this;
|
|
50326
|
+
_this._injector = _injector;
|
|
50327
|
+
_this._workflowPermissionService = _workflowPermissionService;
|
|
50328
|
+
_this._coCauToChucService = _coCauToChucService;
|
|
50329
|
+
_this._userGroupService = _userGroupService;
|
|
50330
|
+
_this.searchSchema = {};
|
|
50331
|
+
_this.searchData = {};
|
|
50332
|
+
return _this;
|
|
50333
|
+
}
|
|
50334
|
+
WorkflowPermissionComponent.prototype.ngOnInit = function () {
|
|
50335
|
+
this.setting.baseService = this._workflowPermissionService;
|
|
50336
|
+
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
50337
|
+
this.setting.title = '';
|
|
50338
|
+
this.setting.disableShare = true;
|
|
50339
|
+
this.setting.hiddenSettingPermission = true;
|
|
50340
|
+
this.setting.hiddenSettingWorkflow = true;
|
|
50341
|
+
this.setting.hiddenSettingWorkflowNew = true;
|
|
50342
|
+
this.setting.modelSchemas = [
|
|
50343
|
+
new ModelSchema({ field: 'userIds', name: 'Người dùng', fullName: 'Người dùng', description: 'Người dùng' }),
|
|
50344
|
+
new ModelSchema({ field: 'donViIds', name: 'Đơn vị', fullName: 'Đơn vị', description: 'Đơn vị' }),
|
|
50345
|
+
new ModelSchema({ field: 'groupIds', name: 'Nhóm người dùng', fullName: 'Nhóm người dùng', description: 'Nhóm người dùng' }),
|
|
50346
|
+
new ModelSchema({ field: 'permission', dataType: 'boolean', name: 'Sử dụng', fullName: 'Sử dụng', description: 'Sử dụng' })
|
|
50347
|
+
];
|
|
50348
|
+
this.setting.cols = [
|
|
50349
|
+
new ColumnSchemaBase({
|
|
50350
|
+
field: 'userIds',
|
|
50351
|
+
baseService: this._userService,
|
|
50352
|
+
displayField: 'fullNameNew',
|
|
50353
|
+
fieldPlus: 'userName',
|
|
50354
|
+
multiple: true
|
|
50355
|
+
}),
|
|
50356
|
+
new ColumnSchemaBase({
|
|
50357
|
+
field: 'donViIds',
|
|
50358
|
+
baseService: this._coCauToChucService,
|
|
50359
|
+
multiple: true,
|
|
50360
|
+
}),
|
|
50361
|
+
new ColumnSchemaBase({
|
|
50362
|
+
field: 'groupIds',
|
|
50363
|
+
baseService: this._userGroupService,
|
|
50364
|
+
displayField: 'name',
|
|
50365
|
+
multiple: true,
|
|
50366
|
+
}),
|
|
50367
|
+
new ColumnSchemaBase({
|
|
50368
|
+
field: 'permissions',
|
|
50369
|
+
label: 'Quyền hiện tại'
|
|
50370
|
+
})
|
|
50371
|
+
];
|
|
50372
|
+
this.setting.objectName = ' quyền bản ghi';
|
|
50373
|
+
_super.prototype.ngOnInit.call(this);
|
|
50374
|
+
};
|
|
50375
|
+
WorkflowPermissionComponent.prototype.modifyGridInfo = function (gridInfo) {
|
|
50376
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50377
|
+
return __generator(this, function (_a) {
|
|
50378
|
+
gridInfo.filters.push(this.newFilter('itemId', exports.Operator.equal, this.item.id), this.newFilterContainer('or', this.newFilterContainer('and', this.newFilter('userIds', exports.Operator.isNotNull, '1'), this.newFilter('userIds', exports.Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('donViIds', exports.Operator.isNotNull, '1'), this.newFilter('donViIds', exports.Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('groupIds', exports.Operator.isNotNull, '1'), this.newFilter('groupIds', exports.Operator.notEqual, ''))));
|
|
50379
|
+
return [2 /*return*/];
|
|
50380
|
+
});
|
|
50381
|
+
});
|
|
50382
|
+
};
|
|
50383
|
+
WorkflowPermissionComponent.prototype.beforeRenderDataSource = function (dataSource) {
|
|
50384
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50385
|
+
var userId;
|
|
50386
|
+
return __generator(this, function (_a) {
|
|
50387
|
+
userId = this._userService.getId();
|
|
50388
|
+
dataSource.forEach(function (item) {
|
|
50389
|
+
item.__disableEdit = item.type != exports.EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
50390
|
+
item.__disableDelete = item.type != exports.EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
50391
|
+
if (!item.permission)
|
|
50392
|
+
return;
|
|
50393
|
+
var strPermission = '';
|
|
50394
|
+
if ((item.permission & exports.PermissionBase.READ) == exports.PermissionBase.READ)
|
|
50395
|
+
strPermission += 'xem, ';
|
|
50396
|
+
if ((item.permission & exports.PermissionBase.EDIT) == exports.PermissionBase.EDIT)
|
|
50397
|
+
strPermission += 'sửa, ';
|
|
50398
|
+
if ((item.permission & exports.PermissionBase.DELETE) == exports.PermissionBase.DELETE)
|
|
50399
|
+
strPermission += 'xóa, ';
|
|
50400
|
+
if (strPermission.length) {
|
|
50401
|
+
strPermission = strPermission.charAt(0).toUpperCase() + strPermission.substring(1, strPermission.length - 2);
|
|
50402
|
+
}
|
|
50403
|
+
item.permissions = strPermission;
|
|
50404
|
+
});
|
|
50405
|
+
return [2 /*return*/];
|
|
50406
|
+
});
|
|
50407
|
+
});
|
|
50408
|
+
};
|
|
50409
|
+
WorkflowPermissionComponent.prototype.handleDelete = function (rowData) {
|
|
50410
|
+
var _this = this;
|
|
50411
|
+
this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa phân quyền')
|
|
50412
|
+
.then(function (res) {
|
|
50413
|
+
if (!res)
|
|
50414
|
+
return;
|
|
50415
|
+
_this._workflowPermissionService.deletePermission(rowData.id)
|
|
50416
|
+
.then(function (res) { return _this.handleResponse(res, '', function (f) {
|
|
50417
|
+
_this._triggerProcessData();
|
|
50418
|
+
}); });
|
|
50419
|
+
});
|
|
50420
|
+
};
|
|
50421
|
+
return WorkflowPermissionComponent;
|
|
50422
|
+
}(DataListBase));
|
|
50423
|
+
WorkflowPermissionComponent.decorators = [
|
|
50424
|
+
{ type: i0.Component, args: [{
|
|
50425
|
+
selector: 'workflow-permission',
|
|
50426
|
+
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\"\r\n (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"handleDelete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'workflow-permission-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <workflow-permission-form #formBase [itemId]=\"item.id\" [businessSetting]=\"businessSetting\" [parentModel]=\"model\"\r\n [parentContext]=\"context\" [model]=\"formModel\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\">\r\n </workflow-permission-form>\r\n</tn-dialog>",
|
|
50427
|
+
styles: [""]
|
|
50428
|
+
},] }
|
|
50429
|
+
];
|
|
50430
|
+
WorkflowPermissionComponent.ctorParameters = function () { return [
|
|
50431
|
+
{ type: i0.Injector },
|
|
50432
|
+
{ type: WorkflowPermissionService },
|
|
50433
|
+
{ type: CoCauToChucService },
|
|
50434
|
+
{ type: UserGroupRealService }
|
|
50435
|
+
]; };
|
|
50436
|
+
WorkflowPermissionComponent.propDecorators = {
|
|
50437
|
+
businessSetting: [{ type: i0.Input }],
|
|
50438
|
+
item: [{ type: i0.Input }]
|
|
50439
|
+
};
|
|
50440
|
+
|
|
50441
|
+
var WorkflowPickerComponent = /** @class */ (function (_super) {
|
|
50442
|
+
__extends(WorkflowPickerComponent, _super);
|
|
50443
|
+
function WorkflowPickerComponent(_injector, _workflowSettingsService, _stateMachinesService) {
|
|
50444
|
+
var _this = _super.call(this, _injector) || this;
|
|
50445
|
+
_this._injector = _injector;
|
|
50446
|
+
_this._workflowSettingsService = _workflowSettingsService;
|
|
50447
|
+
_this._stateMachinesService = _stateMachinesService;
|
|
50448
|
+
_this.showButtonSave = false;
|
|
50449
|
+
_this.onSaved = new i0.EventEmitter();
|
|
50450
|
+
_this.onCancel = new i0.EventEmitter();
|
|
50451
|
+
_this.onSaveSetting = new i0.EventEmitter();
|
|
50452
|
+
_this.dicMachinesData = {};
|
|
50453
|
+
_this.readyCrudForm = false;
|
|
50454
|
+
_this.autoGetDetail = false;
|
|
50455
|
+
_this.autoSave = false;
|
|
50456
|
+
return _this;
|
|
50457
|
+
}
|
|
50458
|
+
WorkflowPickerComponent.prototype.ngOnInit = function () {
|
|
50459
|
+
var _this = this;
|
|
50460
|
+
this.setting.baseService = this._workflowSettingsService;
|
|
50461
|
+
this.setting.schema = [
|
|
50462
|
+
new DropdownControlSchema({
|
|
50463
|
+
field: '_workflowCodes',
|
|
50464
|
+
label: 'Danh sách quy trình',
|
|
50465
|
+
multiple: true,
|
|
50466
|
+
baseService: this._stateMachinesService,
|
|
50467
|
+
valueField: 'code',
|
|
50468
|
+
displayField: 'title',
|
|
50469
|
+
onChanged: function (evt) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
50470
|
+
switch (_a.label) {
|
|
50471
|
+
case 0: return [4 /*yield*/, this.handleChangeWorkflow(evt)];
|
|
50472
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
50473
|
+
}
|
|
50474
|
+
}); }); },
|
|
50475
|
+
onAdjustedValue: function (evt) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
50476
|
+
switch (_a.label) {
|
|
50477
|
+
case 0: return [4 /*yield*/, this.handleChangeWorkflow(evt)];
|
|
50478
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
50479
|
+
}
|
|
50480
|
+
}); }); },
|
|
50481
|
+
required: true
|
|
50482
|
+
// onReady: async (evt: EventData) => await this.handleChangeWorkflow(evt)
|
|
50483
|
+
}),
|
|
50484
|
+
new DropdownControlSchema({
|
|
50485
|
+
field: 'workflowCode',
|
|
50486
|
+
label: 'Quy trình mặc định',
|
|
50487
|
+
valueField: 'code',
|
|
50488
|
+
displayField: 'title',
|
|
50489
|
+
onChanged: function (evt) { return _this.handleChangeWorkflowDefault(evt); }
|
|
50490
|
+
}),
|
|
50491
|
+
new CustomControlSchema({
|
|
50492
|
+
field: 'designer',
|
|
50493
|
+
label: this._translateService.instant('Sơ đồ trạng thái'),
|
|
50494
|
+
mdWidth: 12
|
|
50495
|
+
})
|
|
50496
|
+
];
|
|
50497
|
+
this.model.data = this.data;
|
|
50498
|
+
this.afterGetSetting();
|
|
50499
|
+
_super.prototype.ngOnInit.call(this);
|
|
50500
|
+
};
|
|
50501
|
+
WorkflowPickerComponent.prototype.onFormInitialized = function (evt) {
|
|
50502
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50503
|
+
return __generator(this, function (_a) {
|
|
50504
|
+
return [2 /*return*/];
|
|
50505
|
+
});
|
|
50506
|
+
});
|
|
50507
|
+
};
|
|
50508
|
+
WorkflowPickerComponent.prototype.afterGetSetting = function () {
|
|
50509
|
+
var _this = this;
|
|
50510
|
+
if (!this.model.data) {
|
|
50511
|
+
this.model.data = {};
|
|
50512
|
+
this.model.formState = exports.FormState.ADD;
|
|
50513
|
+
}
|
|
50514
|
+
else {
|
|
50515
|
+
if (this.model.data.workflowCodes) {
|
|
50516
|
+
this.model.data._workflowCodes = this.model.data.workflowCodes.split(',');
|
|
50517
|
+
this.model.data._workflowCodes.forEach(function (wfCode) {
|
|
50518
|
+
_this.dicMachinesData[wfCode] = {
|
|
50519
|
+
machines: [],
|
|
50520
|
+
connections: []
|
|
50521
|
+
};
|
|
50522
|
+
});
|
|
50523
|
+
}
|
|
50524
|
+
this.model.formState = exports.FormState.EDIT;
|
|
50525
|
+
}
|
|
50526
|
+
this.readyCrudForm = true;
|
|
50527
|
+
};
|
|
50528
|
+
WorkflowPickerComponent.prototype.handleChangeWorkflow = function (evt) {
|
|
50529
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
50530
|
+
var dataSourceSelected_1, index, codeDeleted, dataMachines;
|
|
50531
|
+
var _this = this;
|
|
50532
|
+
return __generator(this, function (_a) {
|
|
50533
|
+
switch (_a.label) {
|
|
50534
|
+
case 0:
|
|
50535
|
+
if (!(this.model.data._workflowCodes && this.model.data._workflowCodes.length)) return [3 /*break*/, 2];
|
|
50536
|
+
dataSourceSelected_1 = evt.formControls['_workflowCodes']._component.dataSourceInternal
|
|
50537
|
+
.filter(function (q) { return _this.model.data._workflowCodes.some(function (x) { return x == q.value.code; }); })
|
|
50538
|
+
.map(function (q) { return q.value; });
|
|
50539
|
+
evt.formControls['workflowCode'].dataSource = dataSourceSelected_1;
|
|
50540
|
+
if (!evt.rootModel.workflowCode || !dataSourceSelected_1.some(function (x) { return x.code == evt.rootModel.workflowCode; })) {
|
|
50541
|
+
evt.rootModel.workflowCode = this.model.data._workflowCodes[0];
|
|
50542
|
+
}
|
|
50543
|
+
else {
|
|
50544
|
+
index = this.model.data._workflowCodes.findIndex(function (q) { return q == evt.rootModel.workflowCode; });
|
|
50545
|
+
if (index > 0) {
|
|
50546
|
+
codeDeleted = this.model.data._workflowCodes.splice(index, 1);
|
|
50547
|
+
this.model.data._workflowCodes.unshift(codeDeleted);
|
|
50548
|
+
evt.rootModel._workflowCodes = this.model.data._workflowCodes;
|
|
50549
|
+
}
|
|
50550
|
+
}
|
|
50551
|
+
this.model.data._workflowCodes.forEach(function (wfCode) {
|
|
50552
|
+
_this.dicMachinesData[wfCode] = {
|
|
50553
|
+
ten: dataSourceSelected_1.find(function (q) { return q.code == wfCode; }).title,
|
|
50554
|
+
machines: [],
|
|
50555
|
+
connections: []
|
|
50556
|
+
};
|
|
50557
|
+
});
|
|
50558
|
+
return [4 /*yield*/, this._stateMachinesService.getAll([
|
|
50559
|
+
this.newFilter('code', exports.Operator.in, this.model.data._workflowCodes)
|
|
50560
|
+
])];
|
|
50561
|
+
case 1:
|
|
50562
|
+
dataMachines = (_a.sent()).data;
|
|
50563
|
+
dataMachines.forEach(function (data) {
|
|
50564
|
+
_this.dicMachinesData[data.code].machines = [];
|
|
50565
|
+
_this.dicMachinesData[data.code].connections = [];
|
|
50566
|
+
if (data.data) {
|
|
50567
|
+
_this.dicMachinesData[data.code] = Object.assign(Object.assign({}, JSON.parse(data.data)), { ten: data.title });
|
|
50568
|
+
}
|
|
50569
|
+
});
|
|
50570
|
+
return [3 /*break*/, 3];
|
|
50571
|
+
case 2:
|
|
50572
|
+
evt.formControls['workflowCode'].dataSource = [];
|
|
50573
|
+
evt.rootModel.workflowCode = null;
|
|
50574
|
+
_a.label = 3;
|
|
50575
|
+
case 3: return [2 /*return*/];
|
|
50576
|
+
}
|
|
50577
|
+
});
|
|
50578
|
+
});
|
|
50579
|
+
};
|
|
50580
|
+
WorkflowPickerComponent.prototype.handleChangeWorkflowDefault = function (evt) {
|
|
50581
|
+
var _this = this;
|
|
50582
|
+
if (!evt.rootModel.workflowCode)
|
|
50583
|
+
return;
|
|
50584
|
+
if (this.model.data._workflowCodes && this.model.data._workflowCodes.length) {
|
|
50585
|
+
var index = this.model.data._workflowCodes.findIndex(function (q) { return q == _this.model.data.workflowCode; });
|
|
50586
|
+
if (index > 0) {
|
|
50587
|
+
var codeDeleteds = this.model.data._workflowCodes.splice(index, 1);
|
|
50588
|
+
this.model.data._workflowCodes.unshift(codeDeleteds[0]);
|
|
50589
|
+
var itemDeleteds = evt.rootModel._workflowCodes.splice(index, 1);
|
|
50590
|
+
evt.rootModel._workflowCodes.unshift(itemDeleteds[0]);
|
|
50591
|
+
}
|
|
50592
|
+
}
|
|
50593
|
+
};
|
|
50594
|
+
WorkflowPickerComponent.prototype.handleCancelWorkflow = function (event) {
|
|
50595
|
+
var _this = this;
|
|
50596
|
+
this._notifierService.showConfirm('Bạn có chắc chắn muốn hủy bỏ quy trình nghiệp vụ')
|
|
50597
|
+
.then(function (res) {
|
|
50598
|
+
if (!res)
|
|
50599
|
+
return;
|
|
50600
|
+
_this._workflowSettingsService.delete(_this.model.data.id)
|
|
50601
|
+
.then(function (res) { return _this.handleResponse(res, 'Hủy bỏ quy trình nghiệp vụ thành công', function (f) {
|
|
50602
|
+
_this.onSaved.emit();
|
|
50603
|
+
}); });
|
|
50604
|
+
});
|
|
50605
|
+
};
|
|
50606
|
+
WorkflowPickerComponent.prototype.onBeforeSave = function () {
|
|
50607
|
+
this.model.data.workflowCodes = this.model.data._workflowCodes.toString();
|
|
50608
|
+
};
|
|
50609
|
+
WorkflowPickerComponent.prototype.handleManualSave = function () {
|
|
50610
|
+
this.model.submitting = false;
|
|
50611
|
+
this.onSaveSetting.emit(this.model.data);
|
|
50612
|
+
};
|
|
50613
|
+
return WorkflowPickerComponent;
|
|
50614
|
+
}(DataFormBase));
|
|
50615
|
+
WorkflowPickerComponent.decorators = [
|
|
50616
|
+
{ type: i0.Component, args: [{
|
|
50617
|
+
selector: 'workflow-picker',
|
|
50618
|
+
template: "<crud-form *ngIf=\"readyCrudForm\" #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\"\r\n [styleClass]=\"'workflow-setting'\" [disableCaching]=\"true\" (onFormReady)=\"_handleFormReady($event)\">\r\n <ng-template #designer>\r\n <div *ngFor=\"let wfCode of model.data._workflowCodes\">\r\n <div class=\"title-workflow\">\r\n Quy tr\u00ECnh {{dicMachinesData[wfCode].ten}} ({{wfCode}})\r\n <span *ngIf=\"wfCode == model.data.workflowCode\" class=\"pi pi-star\" pTooltip=\"\u0110\u00E2y l\u00E0 quy tr\u00ECnh ch\u00EDnh\"\r\n tooltipPosition=\"top\"></span>\r\n </div>\r\n <div class=\"state-machines-container\">\r\n <statemachines-designer #designer [data]=\"dicMachinesData[wfCode]\" [viewOnly]=\"true\">\r\n </statemachines-designer>\r\n </div>\r\n </div>\r\n </ng-template>\r\n</crud-form>\r\n<div *ngIf=\"showButtonSave\" class=\"container-button-workflow\">\r\n <button type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\" [label]=\"'L\u01B0u c\u1EA5u h\u00ECnh' | translate\"\r\n (click)=\"_handleSave($event)\"></button>\r\n</div>",
|
|
50619
|
+
providers: [ComponentContextService],
|
|
50620
|
+
styles: [".title-workflow{font-size:.9em;font-weight:700;padding:1em 0 .5em}.title-workflow .pi-star{color:orange}.state-machines-container{border:1px solid #ced4da;border-radius:3px}.container-button-workflow{background:#fff;border-top:1px solid #ddd;bottom:0;padding:.5em;position:-webkit-sticky;position:sticky;text-align:right;z-index:10}"]
|
|
50621
|
+
},] }
|
|
50622
|
+
];
|
|
50623
|
+
WorkflowPickerComponent.ctorParameters = function () { return [
|
|
50624
|
+
{ type: i0.Injector },
|
|
50625
|
+
{ type: WorkflowSettingsService },
|
|
50626
|
+
{ type: StateMachinesService }
|
|
50627
|
+
]; };
|
|
50628
|
+
WorkflowPickerComponent.propDecorators = {
|
|
50629
|
+
parentSetting: [{ type: i0.Input }],
|
|
50630
|
+
data: [{ type: i0.Input }],
|
|
49870
50631
|
showButtonSave: [{ type: i0.Input }],
|
|
49871
50632
|
onSaved: [{ type: i0.Output }],
|
|
49872
50633
|
onCancel: [{ type: i0.Output }],
|
|
@@ -52118,7 +52879,7 @@
|
|
|
52118
52879
|
this.setting.cols = [
|
|
52119
52880
|
new ColumnSchemaBase({
|
|
52120
52881
|
field: 'code',
|
|
52121
|
-
width: '
|
|
52882
|
+
width: '150px',
|
|
52122
52883
|
sort: false
|
|
52123
52884
|
}),
|
|
52124
52885
|
new ColumnSchemaBase({
|
|
@@ -52132,6 +52893,9 @@
|
|
|
52132
52893
|
this.setting.objectName = ' loại công việc';
|
|
52133
52894
|
_super.prototype.ngOnInit.call(this);
|
|
52134
52895
|
};
|
|
52896
|
+
BaseDmLoaiCongViecComponent.prototype.getPromiseGetData = function (gridInfo) {
|
|
52897
|
+
return this._dmLoaiCongViecService.baseGetTreeData(gridInfo);
|
|
52898
|
+
};
|
|
52135
52899
|
BaseDmLoaiCongViecComponent.prototype.modifyGridInfo = function (gridInfo) {
|
|
52136
52900
|
return __awaiter(this, void 0, void 0, function () {
|
|
52137
52901
|
return __generator(this, function (_a) {
|
|
@@ -52143,7 +52907,7 @@
|
|
|
52143
52907
|
};
|
|
52144
52908
|
BaseDmLoaiCongViecComponent.prototype.beforeRenderDataSource = function (dataSource) {
|
|
52145
52909
|
return __awaiter(this, void 0, void 0, function () {
|
|
52146
|
-
var lstParent, itemParentBefore, itemLastChild, dicParentChild;
|
|
52910
|
+
var lstParent, itemParentBefore, itemLastChild, dicParentChild, i;
|
|
52147
52911
|
var _this = this;
|
|
52148
52912
|
return __generator(this, function (_a) {
|
|
52149
52913
|
lstParent = [];
|
|
@@ -52214,7 +52978,9 @@
|
|
|
52214
52978
|
lstParent.forEach(function (itemParent) {
|
|
52215
52979
|
itemParent.isLast = true;
|
|
52216
52980
|
});
|
|
52217
|
-
|
|
52981
|
+
for (i = lstParent.length - 1; i >= 0; i--) {
|
|
52982
|
+
this.setIsLastParentForChild(dicParentChild, lstParent[i], dataSource);
|
|
52983
|
+
}
|
|
52218
52984
|
}
|
|
52219
52985
|
if (itemLastChild != null) {
|
|
52220
52986
|
itemLastChild.isLast = true;
|
|
@@ -53898,732 +54664,6 @@
|
|
|
53898
54664
|
{ type: UserService }
|
|
53899
54665
|
]; };
|
|
53900
54666
|
|
|
53901
|
-
var WorkflowPermissionComponent = /** @class */ (function (_super) {
|
|
53902
|
-
__extends(WorkflowPermissionComponent, _super);
|
|
53903
|
-
function WorkflowPermissionComponent(_injector, _workflowPermissionService, _coCauToChucService, _userGroupService) {
|
|
53904
|
-
var _this = _super.call(this, _injector) || this;
|
|
53905
|
-
_this._injector = _injector;
|
|
53906
|
-
_this._workflowPermissionService = _workflowPermissionService;
|
|
53907
|
-
_this._coCauToChucService = _coCauToChucService;
|
|
53908
|
-
_this._userGroupService = _userGroupService;
|
|
53909
|
-
_this.searchSchema = {};
|
|
53910
|
-
_this.searchData = {};
|
|
53911
|
-
return _this;
|
|
53912
|
-
}
|
|
53913
|
-
WorkflowPermissionComponent.prototype.ngOnInit = function () {
|
|
53914
|
-
this.setting.baseService = this._workflowPermissionService;
|
|
53915
|
-
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
53916
|
-
this.setting.title = '';
|
|
53917
|
-
this.setting.disableShare = true;
|
|
53918
|
-
this.setting.hiddenSettingPermission = true;
|
|
53919
|
-
this.setting.hiddenSettingWorkflow = true;
|
|
53920
|
-
this.setting.hiddenSettingWorkflowNew = true;
|
|
53921
|
-
this.setting.modelSchemas = [
|
|
53922
|
-
new ModelSchema({ field: 'userIds', name: 'Người dùng', fullName: 'Người dùng', description: 'Người dùng' }),
|
|
53923
|
-
new ModelSchema({ field: 'donViIds', name: 'Đơn vị', fullName: 'Đơn vị', description: 'Đơn vị' }),
|
|
53924
|
-
new ModelSchema({ field: 'groupIds', name: 'Nhóm người dùng', fullName: 'Nhóm người dùng', description: 'Nhóm người dùng' }),
|
|
53925
|
-
new ModelSchema({ field: 'permission', dataType: 'boolean', name: 'Sử dụng', fullName: 'Sử dụng', description: 'Sử dụng' })
|
|
53926
|
-
];
|
|
53927
|
-
this.setting.cols = [
|
|
53928
|
-
new ColumnSchemaBase({
|
|
53929
|
-
field: 'userIds',
|
|
53930
|
-
baseService: this._userService,
|
|
53931
|
-
displayField: 'fullNameNew',
|
|
53932
|
-
fieldPlus: 'userName',
|
|
53933
|
-
multiple: true
|
|
53934
|
-
}),
|
|
53935
|
-
new ColumnSchemaBase({
|
|
53936
|
-
field: 'donViIds',
|
|
53937
|
-
baseService: this._coCauToChucService,
|
|
53938
|
-
multiple: true,
|
|
53939
|
-
}),
|
|
53940
|
-
new ColumnSchemaBase({
|
|
53941
|
-
field: 'groupIds',
|
|
53942
|
-
baseService: this._userGroupService,
|
|
53943
|
-
displayField: 'name',
|
|
53944
|
-
multiple: true,
|
|
53945
|
-
}),
|
|
53946
|
-
new ColumnSchemaBase({
|
|
53947
|
-
field: 'permissions',
|
|
53948
|
-
label: 'Quyền hiện tại'
|
|
53949
|
-
})
|
|
53950
|
-
];
|
|
53951
|
-
this.setting.objectName = ' quyền bản ghi';
|
|
53952
|
-
_super.prototype.ngOnInit.call(this);
|
|
53953
|
-
};
|
|
53954
|
-
WorkflowPermissionComponent.prototype.modifyGridInfo = function (gridInfo) {
|
|
53955
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
53956
|
-
return __generator(this, function (_a) {
|
|
53957
|
-
gridInfo.filters.push(this.newFilter('itemId', exports.Operator.equal, this.item.id), this.newFilterContainer('or', this.newFilterContainer('and', this.newFilter('userIds', exports.Operator.isNotNull, '1'), this.newFilter('userIds', exports.Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('donViIds', exports.Operator.isNotNull, '1'), this.newFilter('donViIds', exports.Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('groupIds', exports.Operator.isNotNull, '1'), this.newFilter('groupIds', exports.Operator.notEqual, ''))));
|
|
53958
|
-
return [2 /*return*/];
|
|
53959
|
-
});
|
|
53960
|
-
});
|
|
53961
|
-
};
|
|
53962
|
-
WorkflowPermissionComponent.prototype.beforeRenderDataSource = function (dataSource) {
|
|
53963
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
53964
|
-
var userId;
|
|
53965
|
-
return __generator(this, function (_a) {
|
|
53966
|
-
userId = this._userService.getId();
|
|
53967
|
-
dataSource.forEach(function (item) {
|
|
53968
|
-
item.__disableEdit = item.type != exports.EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
53969
|
-
item.__disableDelete = item.type != exports.EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
53970
|
-
if (!item.permission)
|
|
53971
|
-
return;
|
|
53972
|
-
var strPermission = '';
|
|
53973
|
-
if ((item.permission & exports.PermissionBase.READ) == exports.PermissionBase.READ)
|
|
53974
|
-
strPermission += 'xem, ';
|
|
53975
|
-
if ((item.permission & exports.PermissionBase.EDIT) == exports.PermissionBase.EDIT)
|
|
53976
|
-
strPermission += 'sửa, ';
|
|
53977
|
-
if ((item.permission & exports.PermissionBase.DELETE) == exports.PermissionBase.DELETE)
|
|
53978
|
-
strPermission += 'xóa, ';
|
|
53979
|
-
if (strPermission.length) {
|
|
53980
|
-
strPermission = strPermission.charAt(0).toUpperCase() + strPermission.substring(1, strPermission.length - 2);
|
|
53981
|
-
}
|
|
53982
|
-
item.permissions = strPermission;
|
|
53983
|
-
});
|
|
53984
|
-
return [2 /*return*/];
|
|
53985
|
-
});
|
|
53986
|
-
});
|
|
53987
|
-
};
|
|
53988
|
-
WorkflowPermissionComponent.prototype.handleDelete = function (rowData) {
|
|
53989
|
-
var _this = this;
|
|
53990
|
-
this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa phân quyền')
|
|
53991
|
-
.then(function (res) {
|
|
53992
|
-
if (!res)
|
|
53993
|
-
return;
|
|
53994
|
-
_this._workflowPermissionService.deletePermission(rowData.id)
|
|
53995
|
-
.then(function (res) { return _this.handleResponse(res, '', function (f) {
|
|
53996
|
-
_this._triggerProcessData();
|
|
53997
|
-
}); });
|
|
53998
|
-
});
|
|
53999
|
-
};
|
|
54000
|
-
return WorkflowPermissionComponent;
|
|
54001
|
-
}(DataListBase));
|
|
54002
|
-
WorkflowPermissionComponent.decorators = [
|
|
54003
|
-
{ type: i0.Component, args: [{
|
|
54004
|
-
selector: 'workflow-permission',
|
|
54005
|
-
template: "<crud-list #crudList [model]=\"model\" [setting]=\"setting\" [dataSource]=\"model.dataSource\"\r\n (onCopyLink)=\"_copyLink($event)\" (onCopyLinkMultiple)=\"_copyLinkMultiple()\" (onReload)=\"_triggerProcessData($event)\"\r\n (onAdd)=\"_add($event)\" (onEdit)=\"_edit($event)\" (onView)=\"_view($event)\" (onDelete)=\"handleDelete($event)\"\r\n (onDeleteMultiple)=\"_deleteMultiple($event)\" (onReloaded)=\"_unmarkLoading()\">\r\n</crud-list>\r\n\r\n<tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'workflow-permission-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <workflow-permission-form #formBase [itemId]=\"item.id\" [businessSetting]=\"businessSetting\" [parentModel]=\"model\"\r\n [parentContext]=\"context\" [model]=\"formModel\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\">\r\n </workflow-permission-form>\r\n</tn-dialog>",
|
|
54006
|
-
styles: [""]
|
|
54007
|
-
},] }
|
|
54008
|
-
];
|
|
54009
|
-
WorkflowPermissionComponent.ctorParameters = function () { return [
|
|
54010
|
-
{ type: i0.Injector },
|
|
54011
|
-
{ type: WorkflowPermissionService },
|
|
54012
|
-
{ type: CoCauToChucService },
|
|
54013
|
-
{ type: UserGroupRealService }
|
|
54014
|
-
]; };
|
|
54015
|
-
WorkflowPermissionComponent.propDecorators = {
|
|
54016
|
-
businessSetting: [{ type: i0.Input }],
|
|
54017
|
-
item: [{ type: i0.Input }]
|
|
54018
|
-
};
|
|
54019
|
-
|
|
54020
|
-
var WorkflowPermissionFormComponent = /** @class */ (function (_super) {
|
|
54021
|
-
__extends(WorkflowPermissionFormComponent, _super);
|
|
54022
|
-
function WorkflowPermissionFormComponent(_injector, _workflowPermissionService, _workflowPermissionDetailService, _userGroupService) {
|
|
54023
|
-
var _this = _super.call(this, _injector) || this;
|
|
54024
|
-
_this._injector = _injector;
|
|
54025
|
-
_this._workflowPermissionService = _workflowPermissionService;
|
|
54026
|
-
_this._workflowPermissionDetailService = _workflowPermissionDetailService;
|
|
54027
|
-
_this._userGroupService = _userGroupService;
|
|
54028
|
-
return _this;
|
|
54029
|
-
}
|
|
54030
|
-
WorkflowPermissionFormComponent.prototype.ngOnInit = function () {
|
|
54031
|
-
_super.prototype.ngOnInit.call(this);
|
|
54032
|
-
this.setting.baseService = this._workflowPermissionService;
|
|
54033
|
-
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
54034
|
-
var dataSourcePermission = DataSourcePermissionBase.map(function (q) { return (Object.assign(Object.assign({}, q), { disabled: true })); });
|
|
54035
|
-
this.setting.schema = [
|
|
54036
|
-
this._createUserPickerControl('userIds', 'Người dùng'),
|
|
54037
|
-
this._createCoCauToChucControl('donViIds', 'Đơn vị'),
|
|
54038
|
-
this._createUserGroupPickerControl('groupIds', 'Nhóm người dùng'),
|
|
54039
|
-
new CheckBoxListControlSchema({
|
|
54040
|
-
field: 'lstPermission',
|
|
54041
|
-
label: 'Quyền khả dụng',
|
|
54042
|
-
dataSource: dataSourcePermission
|
|
54043
|
-
})
|
|
54044
|
-
];
|
|
54045
|
-
};
|
|
54046
|
-
WorkflowPermissionFormComponent.prototype._createUserPickerControl = function (field, label, multiple) {
|
|
54047
|
-
if (multiple === void 0) { multiple = true; }
|
|
54048
|
-
var control = createUserPickerControl(field, label);
|
|
54049
|
-
control.multiple = multiple;
|
|
54050
|
-
return control;
|
|
54051
|
-
};
|
|
54052
|
-
WorkflowPermissionFormComponent.prototype._createCoCauToChucControl = function (field, label) {
|
|
54053
|
-
return createOrgPickerControl(field, label);
|
|
54054
|
-
};
|
|
54055
|
-
WorkflowPermissionFormComponent.prototype._createUserGroupPickerControl = function (field, label) {
|
|
54056
|
-
return createUserGroupPickerControl(this._userGroupService, field, label);
|
|
54057
|
-
};
|
|
54058
|
-
WorkflowPermissionFormComponent.prototype.onFormInitialized = function (constrols) {
|
|
54059
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
54060
|
-
return __generator(this, function (_a) {
|
|
54061
|
-
switch (_a.label) {
|
|
54062
|
-
case 0:
|
|
54063
|
-
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
54064
|
-
return [4 /*yield*/, this.getItemPermissionCurrent()];
|
|
54065
|
-
case 1:
|
|
54066
|
-
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
54067
|
-
_a.sent();
|
|
54068
|
-
return [2 /*return*/];
|
|
54069
|
-
}
|
|
54070
|
-
});
|
|
54071
|
-
});
|
|
54072
|
-
};
|
|
54073
|
-
WorkflowPermissionFormComponent.prototype.getItemPermissionCurrent = function () {
|
|
54074
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
54075
|
-
var itemPermission;
|
|
54076
|
-
return __generator(this, function (_a) {
|
|
54077
|
-
switch (_a.label) {
|
|
54078
|
-
case 0: return [4 /*yield*/, this._workflowPermissionDetailService.changeEndpoint(this.businessSetting.baseService)
|
|
54079
|
-
.getDetailByFilter([
|
|
54080
|
-
this.newFilter('itemId', exports.Operator.equal, this.itemId),
|
|
54081
|
-
this.newFilter('userId', exports.Operator.equal, this._userService.getId())
|
|
54082
|
-
])];
|
|
54083
|
-
case 1:
|
|
54084
|
-
itemPermission = (_a.sent()).data;
|
|
54085
|
-
if (itemPermission) {
|
|
54086
|
-
this.formControls['lstPermission'].dataSource.forEach(function (item) {
|
|
54087
|
-
if ((itemPermission.permission & item.id) == item.id) {
|
|
54088
|
-
item.disabled = false;
|
|
54089
|
-
}
|
|
54090
|
-
});
|
|
54091
|
-
}
|
|
54092
|
-
return [2 /*return*/];
|
|
54093
|
-
}
|
|
54094
|
-
});
|
|
54095
|
-
});
|
|
54096
|
-
};
|
|
54097
|
-
WorkflowPermissionFormComponent.prototype.modifyDetailData = function (data) {
|
|
54098
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
54099
|
-
return __generator(this, function (_a) {
|
|
54100
|
-
// xử lý dữ liệu lấy từ get detail về
|
|
54101
|
-
if (data.userIds) {
|
|
54102
|
-
data.userIds = data.userIds.split(',');
|
|
54103
|
-
}
|
|
54104
|
-
if (data.donViIds) {
|
|
54105
|
-
data.donViIds = data.donViIds.split(',');
|
|
54106
|
-
}
|
|
54107
|
-
if (data.groupIds) {
|
|
54108
|
-
data.groupIds = data.groupIds.split(',');
|
|
54109
|
-
}
|
|
54110
|
-
data.lstPermission = [];
|
|
54111
|
-
if (data.permission) {
|
|
54112
|
-
if ((data.permission & exports.PermissionBase.READ)) {
|
|
54113
|
-
data.lstPermission.push(exports.PermissionBase.READ);
|
|
54114
|
-
}
|
|
54115
|
-
if ((data.permission & exports.PermissionBase.EDIT)) {
|
|
54116
|
-
data.lstPermission.push(exports.PermissionBase.EDIT);
|
|
54117
|
-
}
|
|
54118
|
-
if ((data.permission & exports.PermissionBase.DELETE)) {
|
|
54119
|
-
data.lstPermission.push(exports.PermissionBase.DELETE);
|
|
54120
|
-
}
|
|
54121
|
-
}
|
|
54122
|
-
return [2 /*return*/];
|
|
54123
|
-
});
|
|
54124
|
-
});
|
|
54125
|
-
};
|
|
54126
|
-
WorkflowPermissionFormComponent.prototype.validateForm = function () {
|
|
54127
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
54128
|
-
var itemMissings;
|
|
54129
|
-
return __generator(this, function (_a) {
|
|
54130
|
-
itemMissings = [];
|
|
54131
|
-
if (!this.isNotNullArray(this.model.data.userIds)
|
|
54132
|
-
&& !this.isNotNullArray(this.model.data.donViIds)
|
|
54133
|
-
&& !this.isNotNullArray(this.model.data.groupIds)) {
|
|
54134
|
-
itemMissings.push('người muốn phân quyền');
|
|
54135
|
-
}
|
|
54136
|
-
if (!this.isNotNullArray(this.model.data.lstPermission)) {
|
|
54137
|
-
itemMissings.push('quyền muốn phân');
|
|
54138
|
-
}
|
|
54139
|
-
if (itemMissings.length) {
|
|
54140
|
-
this._notifierService.showWarning("B\u1EA1n ph\u1EA3i nh\u1EADp " + itemMissings.join(', '));
|
|
54141
|
-
return [2 /*return*/, false];
|
|
54142
|
-
}
|
|
54143
|
-
return [2 /*return*/, true];
|
|
54144
|
-
});
|
|
54145
|
-
});
|
|
54146
|
-
};
|
|
54147
|
-
WorkflowPermissionFormComponent.prototype.onBeforeSave = function () {
|
|
54148
|
-
this.model.data.tableName = this.businessSetting.baseService.entityName;
|
|
54149
|
-
this.model.data.workflowCode = DummyWorkflowCode;
|
|
54150
|
-
this.model.data.itemId = this.itemId;
|
|
54151
|
-
if (this.model.data.userIds) {
|
|
54152
|
-
this.model.data.userIds = this.model.data.userIds.toString();
|
|
54153
|
-
}
|
|
54154
|
-
if (this.model.data.donViIds) {
|
|
54155
|
-
this.model.data.donViIds = this.model.data.donViIds.toString();
|
|
54156
|
-
}
|
|
54157
|
-
if (this.model.data.groupIds) {
|
|
54158
|
-
this.model.data.groupIds = this.model.data.groupIds.toString();
|
|
54159
|
-
}
|
|
54160
|
-
if (this.model.data.lstPermission) {
|
|
54161
|
-
var permission = 0;
|
|
54162
|
-
if (this.model.data.lstPermission & exports.PermissionBase.READ) {
|
|
54163
|
-
permission = permission | exports.PermissionBase.READ;
|
|
54164
|
-
}
|
|
54165
|
-
if (this.model.data.lstPermission & exports.PermissionBase.EDIT) {
|
|
54166
|
-
permission = permission | exports.PermissionBase.EDIT;
|
|
54167
|
-
}
|
|
54168
|
-
if (this.model.data.lstPermission & exports.PermissionBase.DELETE) {
|
|
54169
|
-
permission = permission | exports.PermissionBase.DELETE;
|
|
54170
|
-
}
|
|
54171
|
-
this.model.data.permission = permission;
|
|
54172
|
-
}
|
|
54173
|
-
};
|
|
54174
|
-
WorkflowPermissionFormComponent.prototype.getPromiseActionInsert = function () {
|
|
54175
|
-
return this._workflowPermissionService.insertPermission(this.model.data);
|
|
54176
|
-
};
|
|
54177
|
-
WorkflowPermissionFormComponent.prototype.getPromiseActionUpdate = function () {
|
|
54178
|
-
return this._workflowPermissionService.updatePermission(this.model.data);
|
|
54179
|
-
};
|
|
54180
|
-
return WorkflowPermissionFormComponent;
|
|
54181
|
-
}(DataFormBase));
|
|
54182
|
-
WorkflowPermissionFormComponent.decorators = [
|
|
54183
|
-
{ type: i0.Component, args: [{
|
|
54184
|
-
selector: 'workflow-permission-form',
|
|
54185
|
-
template: "<crud-form #crudForm [(data)]=\"model.data\" [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\"\r\n (onFormReady)=\"_handleFormReady($event)\">\r\n</crud-form>\r\n<ng-template #buttonTemplate>\r\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" type=\"button\" pButton icon=\"pi pi-save\" class=\"p-button-text\"\r\n [label]=\"'FORM.SAVE' | translate\" (click)=\"_handleSave($event)\"></button>\r\n <button type=\"button\" pButton icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\r\n [label]=\"'FORM.CANCEL' | translate\" preventTab (click)=\"_handleCancel($event)\"></button>\r\n</ng-template>\r\n",
|
|
54186
|
-
providers: [ComponentContextService],
|
|
54187
|
-
styles: [""]
|
|
54188
|
-
},] }
|
|
54189
|
-
];
|
|
54190
|
-
WorkflowPermissionFormComponent.ctorParameters = function () { return [
|
|
54191
|
-
{ type: i0.Injector },
|
|
54192
|
-
{ type: WorkflowPermissionService },
|
|
54193
|
-
{ type: WorkflowPermissionDetailService },
|
|
54194
|
-
{ type: UserGroupRealService }
|
|
54195
|
-
]; };
|
|
54196
|
-
WorkflowPermissionFormComponent.propDecorators = {
|
|
54197
|
-
businessSetting: [{ type: i0.Input }],
|
|
54198
|
-
itemId: [{ type: i0.Input }]
|
|
54199
|
-
};
|
|
54200
|
-
|
|
54201
|
-
var AppTopBarV2Component = /** @class */ (function (_super) {
|
|
54202
|
-
__extends(AppTopBarV2Component, _super);
|
|
54203
|
-
function AppTopBarV2Component(
|
|
54204
|
-
// public app: AppComponent,
|
|
54205
|
-
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
54206
|
-
var _this = _super.call(this, _injector) || this;
|
|
54207
|
-
_this._customRouteService = _customRouteService;
|
|
54208
|
-
_this._router = _router;
|
|
54209
|
-
_this._commonService = _commonService;
|
|
54210
|
-
_this._authenService = _authenService;
|
|
54211
|
-
_this._cd = _cd;
|
|
54212
|
-
_this._permissionService = _permissionService;
|
|
54213
|
-
_this._moduleConfigService = _moduleConfigService;
|
|
54214
|
-
_this._userService = _userService;
|
|
54215
|
-
_this._notifierService = _notifierService;
|
|
54216
|
-
_this._translateService = _translateService;
|
|
54217
|
-
_this.defaultAvatar = '';
|
|
54218
|
-
_this.key = '';
|
|
54219
|
-
_this.currentRoute = '';
|
|
54220
|
-
_this.fileApi = '';
|
|
54221
|
-
_this.currentUser = null;
|
|
54222
|
-
_this.appSwitcherItems = [];
|
|
54223
|
-
_this.isFirstTime = false;
|
|
54224
|
-
_this.showSettings = false;
|
|
54225
|
-
_this.allSubscriptions = [];
|
|
54226
|
-
_this.message = '';
|
|
54227
|
-
_this.environment = _this._moduleConfigService.getConfig().environment;
|
|
54228
|
-
_this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
|
|
54229
|
-
_this.fileApi = _this.environment.apiDomain.fileEndpoint;
|
|
54230
|
-
if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
54231
|
-
_this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
54232
|
-
}
|
|
54233
|
-
else {
|
|
54234
|
-
if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
54235
|
-
_this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
|
|
54236
|
-
}
|
|
54237
|
-
else {
|
|
54238
|
-
_this.showDefaultSetting = false;
|
|
54239
|
-
}
|
|
54240
|
-
}
|
|
54241
|
-
if (!_this.rootContext.data.currentUser) {
|
|
54242
|
-
_this.rootContext.data.currentUser = {};
|
|
54243
|
-
}
|
|
54244
|
-
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
54245
|
-
// this._cd.detectChanges();
|
|
54246
|
-
// }));
|
|
54247
|
-
_this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
|
|
54248
|
-
_this.currentUser = _this._userService.getCurrentUser();
|
|
54249
|
-
_this.loadMenuMetadata();
|
|
54250
|
-
});
|
|
54251
|
-
if (_this.rootModel.allowAnonymous) {
|
|
54252
|
-
_this.loadMenuMetadata();
|
|
54253
|
-
}
|
|
54254
|
-
return _this;
|
|
54255
|
-
}
|
|
54256
|
-
AppTopBarV2Component.prototype.loadMenuMetadata = function () {
|
|
54257
|
-
var _this = this;
|
|
54258
|
-
var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
|
54259
|
-
var arr, _a, _b, _i, ind, element, clientId, isAuthorized;
|
|
54260
|
-
return __generator(this, function (_c) {
|
|
54261
|
-
switch (_c.label) {
|
|
54262
|
-
case 0:
|
|
54263
|
-
arr = [];
|
|
54264
|
-
_a = [];
|
|
54265
|
-
for (_b in this.environment.appMetadata.appSwitcher)
|
|
54266
|
-
_a.push(_b);
|
|
54267
|
-
_i = 0;
|
|
54268
|
-
_c.label = 1;
|
|
54269
|
-
case 1:
|
|
54270
|
-
if (!(_i < _a.length)) return [3 /*break*/, 5];
|
|
54271
|
-
ind = _a[_i];
|
|
54272
|
-
element = this.environment.appMetadata.appSwitcher[ind];
|
|
54273
|
-
clientId = this.environment.authenticationSettings.clientId;
|
|
54274
|
-
if (!(this.rootContext.data.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
|
|
54275
|
-
arr.push(element);
|
|
54276
|
-
return [3 /*break*/, 4];
|
|
54277
|
-
case 2:
|
|
54278
|
-
if (!this.currentUser) return [3 /*break*/, 4];
|
|
54279
|
-
return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
|
|
54280
|
-
case 3:
|
|
54281
|
-
isAuthorized = _c.sent();
|
|
54282
|
-
if (isAuthorized) {
|
|
54283
|
-
arr.push(element);
|
|
54284
|
-
}
|
|
54285
|
-
_c.label = 4;
|
|
54286
|
-
case 4:
|
|
54287
|
-
_i++;
|
|
54288
|
-
return [3 /*break*/, 1];
|
|
54289
|
-
case 5:
|
|
54290
|
-
resolve(arr);
|
|
54291
|
-
return [2 /*return*/];
|
|
54292
|
-
}
|
|
54293
|
-
});
|
|
54294
|
-
}); });
|
|
54295
|
-
prmsAppSwicherItem.then(function (rs) {
|
|
54296
|
-
if (rs) {
|
|
54297
|
-
var currentUser_1 = _this._userService.getCurrentUser();
|
|
54298
|
-
_this.appSwitcherItems.length = 0;
|
|
54299
|
-
rs.forEach(function (element) {
|
|
54300
|
-
if (element.visible) {
|
|
54301
|
-
if (element.allowAnonymous) {
|
|
54302
|
-
_this.appSwitcherItems.push(element);
|
|
54303
|
-
}
|
|
54304
|
-
else {
|
|
54305
|
-
if (currentUser_1.maNguoiHoc && currentUser_1.issuperuser && currentUser_1.issuperuser.toLowerCase() != 'true') {
|
|
54306
|
-
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
54307
|
-
_this.appSwitcherItems.push(element);
|
|
54308
|
-
}
|
|
54309
|
-
}
|
|
54310
|
-
else {
|
|
54311
|
-
_this.appSwitcherItems.push(element);
|
|
54312
|
-
}
|
|
54313
|
-
}
|
|
54314
|
-
}
|
|
54315
|
-
});
|
|
54316
|
-
}
|
|
54317
|
-
});
|
|
54318
|
-
};
|
|
54319
|
-
AppTopBarV2Component.prototype.ngOnInit = function () {
|
|
54320
|
-
var _this = this;
|
|
54321
|
-
if (this.rootContext.data.currentUser) {
|
|
54322
|
-
if (this.rootContext.data.currentUser.gender == 0) {
|
|
54323
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
54324
|
-
}
|
|
54325
|
-
else {
|
|
54326
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
54327
|
-
}
|
|
54328
|
-
this.userProfile = this._userService.getProfileInfo();
|
|
54329
|
-
}
|
|
54330
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, function (e) {
|
|
54331
|
-
setTimeout(function () {
|
|
54332
|
-
_this.hideAdvanceSearch(e);
|
|
54333
|
-
});
|
|
54334
|
-
});
|
|
54335
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, function (e) {
|
|
54336
|
-
_this.focusToSearchBox();
|
|
54337
|
-
});
|
|
54338
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, function (e) {
|
|
54339
|
-
_this.showNotificationReload();
|
|
54340
|
-
});
|
|
54341
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, function (e) {
|
|
54342
|
-
_this.setNotify(e.message);
|
|
54343
|
-
});
|
|
54344
|
-
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, function (e) {
|
|
54345
|
-
_this.model.dataModelSetting.showSettings = true;
|
|
54346
|
-
}));
|
|
54347
|
-
this.model.dataModelSetting = {
|
|
54348
|
-
data: {},
|
|
54349
|
-
showSettings: false
|
|
54350
|
-
};
|
|
54351
|
-
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, function (data) {
|
|
54352
|
-
_this.formatDefaultDataSetting(data);
|
|
54353
|
-
_this.reloadWindow();
|
|
54354
|
-
});
|
|
54355
|
-
var stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
54356
|
-
if (stringDataDefault) {
|
|
54357
|
-
var dataCacheDefault = JSON.parse(stringDataDefault);
|
|
54358
|
-
this.formatDefaultDataSetting(dataCacheDefault);
|
|
54359
|
-
}
|
|
54360
|
-
else {
|
|
54361
|
-
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
54362
|
-
}
|
|
54363
|
-
};
|
|
54364
|
-
AppTopBarV2Component.prototype.ngOnDestroy = function () {
|
|
54365
|
-
this.allSubscriptions.forEach(function (element) {
|
|
54366
|
-
element.unsubscribe();
|
|
54367
|
-
});
|
|
54368
|
-
if (this.intervalCountdown) {
|
|
54369
|
-
clearInterval(this.intervalCountdown);
|
|
54370
|
-
}
|
|
54371
|
-
_super.prototype.ngOnDestroy.call(this);
|
|
54372
|
-
};
|
|
54373
|
-
AppTopBarV2Component.prototype.formatDefaultDataSetting = function (data) {
|
|
54374
|
-
var _this = this;
|
|
54375
|
-
var dataSetting = '';
|
|
54376
|
-
var fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
54377
|
-
var fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
54378
|
-
fields.forEach(function (field, index) {
|
|
54379
|
-
if (!_this.checkHidden(field)) {
|
|
54380
|
-
var _f = "" + field + fieldPluses[index];
|
|
54381
|
-
if (data[_f]) {
|
|
54382
|
-
dataSetting += data[_f] + '/';
|
|
54383
|
-
}
|
|
54384
|
-
}
|
|
54385
|
-
});
|
|
54386
|
-
if (dataSetting.length > 0) {
|
|
54387
|
-
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
54388
|
-
}
|
|
54389
|
-
this.defaultDataSetting = dataSetting;
|
|
54390
|
-
};
|
|
54391
|
-
AppTopBarV2Component.prototype.checkHidden = function (field) {
|
|
54392
|
-
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(function (p) { return p.field == field; });
|
|
54393
|
-
};
|
|
54394
|
-
AppTopBarV2Component.prototype.getCurrentUserFullName = function () {
|
|
54395
|
-
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
54396
|
-
};
|
|
54397
|
-
AppTopBarV2Component.prototype.getCurrentUserPosition = function () {
|
|
54398
|
-
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
54399
|
-
};
|
|
54400
|
-
AppTopBarV2Component.prototype.getCurrentUserAvatar = function () {
|
|
54401
|
-
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
54402
|
-
return this.fileApi + "/file/public/" + this.rootContext.data.currentUser.avatar + "/Download";
|
|
54403
|
-
}
|
|
54404
|
-
else {
|
|
54405
|
-
return this.defaultAvatar;
|
|
54406
|
-
}
|
|
54407
|
-
};
|
|
54408
|
-
AppTopBarV2Component.prototype.clearFilter = function (input) {
|
|
54409
|
-
var _this = this;
|
|
54410
|
-
setTimeout(function () {
|
|
54411
|
-
_this.model.searchModel[_this.model.fieldKey] = '';
|
|
54412
|
-
_this._customRouteService.updateFragment(_this.model.fieldKey, null);
|
|
54413
|
-
_this._customRouteService.updateWithoutFireEvent();
|
|
54414
|
-
_this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
|
|
54415
|
-
input.value = '';
|
|
54416
|
-
input.focus();
|
|
54417
|
-
_this._cd.detectChanges();
|
|
54418
|
-
});
|
|
54419
|
-
};
|
|
54420
|
-
AppTopBarV2Component.prototype.toggleAdvanceSearch = function (evt) {
|
|
54421
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
54422
|
-
evt.preventDefault();
|
|
54423
|
-
evt.cancelBubble = true;
|
|
54424
|
-
};
|
|
54425
|
-
AppTopBarV2Component.prototype.hideAdvanceSearch = function (evt) {
|
|
54426
|
-
if (document.getElementById('advance-search-box')) {
|
|
54427
|
-
var mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
54428
|
-
if (!mask.length) {
|
|
54429
|
-
var closestDropdown = evt.target.closest('.dropdown-advs');
|
|
54430
|
-
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
54431
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
54432
|
-
}
|
|
54433
|
-
}
|
|
54434
|
-
}
|
|
54435
|
-
};
|
|
54436
|
-
AppTopBarV2Component.prototype.focusToSearchBox = function () {
|
|
54437
|
-
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
54438
|
-
this.input.nativeElement.focus();
|
|
54439
|
-
}
|
|
54440
|
-
};
|
|
54441
|
-
AppTopBarV2Component.prototype.onTopbarSearchClick = function (event, input) {
|
|
54442
|
-
var _this = this;
|
|
54443
|
-
if (!this.model.fieldKey) {
|
|
54444
|
-
return;
|
|
54445
|
-
}
|
|
54446
|
-
setTimeout(function () {
|
|
54447
|
-
_this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
|
|
54448
|
-
_this._customRouteService.updateFragment(_this.model.fieldKey, input.value);
|
|
54449
|
-
_this._customRouteService.updateWithoutFireEvent();
|
|
54450
|
-
input.focus();
|
|
54451
|
-
});
|
|
54452
|
-
};
|
|
54453
|
-
AppTopBarV2Component.prototype.onEsc = function (event, input) {
|
|
54454
|
-
this.clearFilter(input);
|
|
54455
|
-
};
|
|
54456
|
-
AppTopBarV2Component.prototype.onEnter = function (event, input) {
|
|
54457
|
-
this.onTopbarSearchClick(event, input);
|
|
54458
|
-
};
|
|
54459
|
-
AppTopBarV2Component.prototype.switchApp = function (item, openNewTab) {
|
|
54460
|
-
if (openNewTab === void 0) { openNewTab = false; }
|
|
54461
|
-
if (item.target == '_blank') {
|
|
54462
|
-
if (!item.defaultRedirect) {
|
|
54463
|
-
item.defaultRedirect = '';
|
|
54464
|
-
}
|
|
54465
|
-
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
54466
|
-
if (item.url == item.defaultRedirect) {
|
|
54467
|
-
item.url = '/' + item.code.toLowerCase();
|
|
54468
|
-
}
|
|
54469
|
-
if (!openNewTab) {
|
|
54470
|
-
top.location.href = item.url + "/" + item.defaultRedirect;
|
|
54471
|
-
}
|
|
54472
|
-
else {
|
|
54473
|
-
window.open(item.url + "/" + item.defaultRedirect, '_blank');
|
|
54474
|
-
}
|
|
54475
|
-
}
|
|
54476
|
-
else {
|
|
54477
|
-
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
54478
|
-
this._router.navigateByUrl(item.defaultRedirect);
|
|
54479
|
-
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
|
|
54480
|
-
if (this.rootContext.data.currentAppMetadata
|
|
54481
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
54482
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
54483
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
54484
|
-
}
|
|
54485
|
-
}
|
|
54486
|
-
}
|
|
54487
|
-
};
|
|
54488
|
-
AppTopBarV2Component.prototype.hasAdvanceSearchBox = function () {
|
|
54489
|
-
return this.model.searchModel.hasAdvanceSearch;
|
|
54490
|
-
};
|
|
54491
|
-
AppTopBarV2Component.prototype.isAdvanceSearching = function () {
|
|
54492
|
-
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
54493
|
-
};
|
|
54494
|
-
AppTopBarV2Component.prototype.hasAdvanceSearchValue = function (obj) {
|
|
54495
|
-
for (var key in obj) {
|
|
54496
|
-
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
54497
|
-
continue;
|
|
54498
|
-
}
|
|
54499
|
-
if (obj[key] != null && obj[key] != '') {
|
|
54500
|
-
return false;
|
|
54501
|
-
}
|
|
54502
|
-
}
|
|
54503
|
-
return true;
|
|
54504
|
-
};
|
|
54505
|
-
AppTopBarV2Component.prototype.getComponentId = function () {
|
|
54506
|
-
return 'TOPBAR';
|
|
54507
|
-
};
|
|
54508
|
-
AppTopBarV2Component.prototype.goToHome = function () {
|
|
54509
|
-
this.rootContext.fireEvent('GO_HOME');
|
|
54510
|
-
};
|
|
54511
|
-
AppTopBarV2Component.prototype.onEditInfo = function (event) {
|
|
54512
|
-
event.preventDefault();
|
|
54513
|
-
var currentAppSetting = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
|
|
54514
|
-
if (currentAppSetting) {
|
|
54515
|
-
this.switchApp(currentAppSetting);
|
|
54516
|
-
}
|
|
54517
|
-
else {
|
|
54518
|
-
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
54519
|
-
}
|
|
54520
|
-
};
|
|
54521
|
-
AppTopBarV2Component.prototype.onChangePassword = function (event) {
|
|
54522
|
-
event.preventDefault();
|
|
54523
|
-
// this.changePassword.showPopup(this._userService.getId());
|
|
54524
|
-
};
|
|
54525
|
-
AppTopBarV2Component.prototype.onTopbarLogout = function () {
|
|
54526
|
-
if (!localStorage.getItem('currentUrl')) {
|
|
54527
|
-
localStorage.setItem('currentUrl', top.location.href);
|
|
54528
|
-
}
|
|
54529
|
-
this._authenService.logout();
|
|
54530
|
-
};
|
|
54531
|
-
AppTopBarV2Component.prototype.settingDefault = function () {
|
|
54532
|
-
this.model.dataModelSetting = {
|
|
54533
|
-
data: {},
|
|
54534
|
-
showSettings: true
|
|
54535
|
-
};
|
|
54536
|
-
};
|
|
54537
|
-
AppTopBarV2Component.prototype.onShowSettings = function (ev) {
|
|
54538
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
54539
|
-
};
|
|
54540
|
-
AppTopBarV2Component.prototype.onCloseSettings = function (ev) {
|
|
54541
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
54542
|
-
};
|
|
54543
|
-
AppTopBarV2Component.prototype.showProfilePage = function () {
|
|
54544
|
-
if (this._userService.isSinhVienAccount()) {
|
|
54545
|
-
return false;
|
|
54546
|
-
}
|
|
54547
|
-
return true;
|
|
54548
|
-
};
|
|
54549
|
-
AppTopBarV2Component.prototype.login = function () {
|
|
54550
|
-
this.rootContext.fireEvent('LOGIN');
|
|
54551
|
-
};
|
|
54552
|
-
AppTopBarV2Component.prototype.setNotify = function (message) {
|
|
54553
|
-
this.message = message;
|
|
54554
|
-
};
|
|
54555
|
-
AppTopBarV2Component.prototype.handleMouseOver = function (evt) {
|
|
54556
|
-
evt.target.stop();
|
|
54557
|
-
};
|
|
54558
|
-
AppTopBarV2Component.prototype.handleMouseOut = function (evt) {
|
|
54559
|
-
evt.target.start();
|
|
54560
|
-
};
|
|
54561
|
-
AppTopBarV2Component.prototype.showNotificationReload = function () {
|
|
54562
|
-
var _this = this;
|
|
54563
|
-
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
54564
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
54565
|
-
this._notifierService.showConfirm(this.message).then(function (res) {
|
|
54566
|
-
_this.reloadWindow();
|
|
54567
|
-
});
|
|
54568
|
-
// if (this.intervalCountdown) {
|
|
54569
|
-
// clearInterval(this.intervalCountdown);
|
|
54570
|
-
// }
|
|
54571
|
-
// const date = new Date();
|
|
54572
|
-
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
54573
|
-
// this.intervalCountdown = setInterval(f => {
|
|
54574
|
-
// const now = new Date().getTime();
|
|
54575
|
-
// const distance = goalDate - now;
|
|
54576
|
-
// var seconds = Math.floor(distance / 1000);
|
|
54577
|
-
// // If the count down is finished, write some text
|
|
54578
|
-
// if (distance < 0) {
|
|
54579
|
-
// clearInterval(this.intervalCountdown);
|
|
54580
|
-
// this.reloadWindow();
|
|
54581
|
-
// return;
|
|
54582
|
-
// }
|
|
54583
|
-
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
54584
|
-
// if (seconds < 1) {
|
|
54585
|
-
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
54586
|
-
// }
|
|
54587
|
-
// this._notifierService.showConfirm(
|
|
54588
|
-
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
54589
|
-
// 'pi pi-check'
|
|
54590
|
-
// ).then(res => {
|
|
54591
|
-
// clearInterval(this.intervalCountdown);
|
|
54592
|
-
// this.reloadWindow();
|
|
54593
|
-
// });
|
|
54594
|
-
// }, 1000);
|
|
54595
|
-
};
|
|
54596
|
-
AppTopBarV2Component.prototype.reloadWindow = function () {
|
|
54597
|
-
top.location.reload();
|
|
54598
|
-
};
|
|
54599
|
-
return AppTopBarV2Component;
|
|
54600
|
-
}(ComponentBase));
|
|
54601
|
-
AppTopBarV2Component.decorators = [
|
|
54602
|
-
{ type: i0.Component, args: [{
|
|
54603
|
-
selector: 'app-topbar-v2',
|
|
54604
|
-
template: "<div class=\"topbar clearfix tn-l-top-bar\">\r\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\r\n <div class=\"tn-l-left-menu-toggle-block\">\r\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\r\n (click)=\"_commonService.onMenuButtonClick($event)\">\r\n <i class=\"pi pi-chevron-left\"></i>\r\n </a>\r\n </div>\r\n\r\n <div class=\"topbar-logo tn-l-logo-wrapper\">\r\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\r\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\r\n </div>\r\n <div class=\"topbar-title tn-l-logo-title-block\">\r\n <div class=\"topbar-owner\">\r\n {{environment.appMetadata.main.owner}}\r\n </div>\r\n <div class=\"topbar-description\">\r\n {{environment.appMetadata.main.title}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"setting-default-container\">\r\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\r\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\r\n (click)=\"settingDefault()\">\r\n </a>\r\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\r\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\r\n </ng-container>\r\n </div>\r\n <div #notify class=\"notify-message\">\r\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\r\n </div>\r\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\r\n oncontextmenu=\"return false\">\r\n <div class=\"tn-l-top-bar-right-block-1\">\r\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\r\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\r\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <span *ngIf=\"messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\r\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\r\n </a>\r\n </div>\r\n\r\n <div class=\"tn-l-top-bar-right-block-2\">\r\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\r\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\r\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\r\n\r\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\r\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\r\n <div class=\"profile-image-wrapper topbar-icon-left\">\r\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\r\n [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n <div class=\"profile-info-wrapper\">\r\n <div class=\"topbar-item-name-wrapper\"\r\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\r\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\r\n </div>\r\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\r\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\r\n </div>\r\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\r\n </a>\r\n\r\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\r\n <li *ngIf=\"currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\r\n <i class=\"pi pi-sign-out\"></i>\r\n <span>\u0110\u0103ng xu\u1EA5t</span>\r\n </a>\r\n </li>\r\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\r\n <a href=\"javascript:;\" (click)=\"login()\">\r\n <i class=\"pi pi-sign-in\"></i>\r\n <span>\u0110\u0103ng nh\u1EADp</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help></li>\r\n <li id=\"li-notifications\" class=\"tn-l-top-bar-menu-item\" #messages\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\r\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\r\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\r\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\r\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\r\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\r\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\r\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\r\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path fill=\"currentColor\"\r\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\r\n </path>\r\n </svg>\r\n <!-- <i class=\"pi pi-microsoft\"></i> -->\r\n </span>\r\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\r\n </a>\r\n <ul class=\"app-switcher layout-menu fadeInDown\">\r\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\r\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\r\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\r\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\r\n (click)=\"switchApp(item, true)\">\r\n <span class=\"tn-l-switcher-item-inner\">\r\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\r\n <div class=\"tn-l-switcher-item-label\">\r\n {{ item.title | translate}}\r\n </div>\r\n </span>\r\n </a>\r\n </ng-container>\r\n </li>\r\n </tn-custom-scrollbar>\r\n </ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>",
|
|
54605
|
-
providers: [ComponentContextService],
|
|
54606
|
-
styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{color:#52abff;text-align:center;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:5px auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{margin-top:0;width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v2 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v2 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));text-align:center}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
|
|
54607
|
-
},] }
|
|
54608
|
-
];
|
|
54609
|
-
AppTopBarV2Component.ctorParameters = function () { return [
|
|
54610
|
-
{ type: CustomRouterService },
|
|
54611
|
-
{ type: i3.Router },
|
|
54612
|
-
{ type: CommonService },
|
|
54613
|
-
{ type: AuthenService },
|
|
54614
|
-
{ type: i0.ChangeDetectorRef },
|
|
54615
|
-
{ type: i0.Injector },
|
|
54616
|
-
{ type: PermissionService },
|
|
54617
|
-
{ type: ModuleConfigService },
|
|
54618
|
-
{ type: UserService },
|
|
54619
|
-
{ type: NotifierService },
|
|
54620
|
-
{ type: i2.TranslateService }
|
|
54621
|
-
]; };
|
|
54622
|
-
AppTopBarV2Component.propDecorators = {
|
|
54623
|
-
input: [{ type: i0.ViewChild, args: ['input',] }],
|
|
54624
|
-
notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }]
|
|
54625
|
-
};
|
|
54626
|
-
|
|
54627
54667
|
function coreDeclaration() {
|
|
54628
54668
|
return [
|
|
54629
54669
|
AddressComponent,
|
|
@@ -54786,7 +54826,7 @@
|
|
|
54786
54826
|
FileKySoSimComponent,
|
|
54787
54827
|
TaiLieuComponent,
|
|
54788
54828
|
TaiLieuCuaToiComponent,
|
|
54789
|
-
KhaiThacTaiLieuDungChungComponent
|
|
54829
|
+
KhaiThacTaiLieuDungChungComponent,
|
|
54790
54830
|
];
|
|
54791
54831
|
}
|
|
54792
54832
|
function coreModuleImport() {
|
|
@@ -56121,6 +56161,44 @@
|
|
|
56121
56161
|
{ type: CommonService }
|
|
56122
56162
|
]; };
|
|
56123
56163
|
|
|
56164
|
+
var AnonymousTokenInterceptor = /** @class */ (function () {
|
|
56165
|
+
function AnonymousTokenInterceptor(_moduleConfigService, _applicationContextService) {
|
|
56166
|
+
this._moduleConfigService = _moduleConfigService;
|
|
56167
|
+
this._applicationContextService = _applicationContextService;
|
|
56168
|
+
this.env = this._moduleConfigService.getConfig().environment;
|
|
56169
|
+
}
|
|
56170
|
+
AnonymousTokenInterceptor.prototype.intercept = function (request, next) {
|
|
56171
|
+
// Tạm thời xử lý đọc access token từ config, sau khi Phúc xử lý xong phần backend thì sẽ thay đổi logic đoạn này để đọc từ querystring
|
|
56172
|
+
try {
|
|
56173
|
+
this.appMetadata = this._applicationContextService.getRootContext().data.currentAppMetadata;
|
|
56174
|
+
if (this.appMetadata && this.appMetadata.enableTemporaryAccessToken) {
|
|
56175
|
+
console.log("using temporary accesstoken from config: " + this.appMetadata.temporaryAccessToken);
|
|
56176
|
+
request = request.clone({
|
|
56177
|
+
setHeaders: {
|
|
56178
|
+
Authorization: "Bearer " + this.appMetadata.temporaryAccessToken,
|
|
56179
|
+
PortalAlias: location.origin
|
|
56180
|
+
}
|
|
56181
|
+
});
|
|
56182
|
+
}
|
|
56183
|
+
}
|
|
56184
|
+
catch (e) {
|
|
56185
|
+
console.error("error on AnonymousTokenInterceptor " + e);
|
|
56186
|
+
}
|
|
56187
|
+
return next.handle(request);
|
|
56188
|
+
};
|
|
56189
|
+
return AnonymousTokenInterceptor;
|
|
56190
|
+
}());
|
|
56191
|
+
AnonymousTokenInterceptor.ɵprov = i0.ɵɵdefineInjectable({ factory: function AnonymousTokenInterceptor_Factory() { return new AnonymousTokenInterceptor(i0.ɵɵinject(ModuleConfigService), i0.ɵɵinject(ApplicationContextService)); }, token: AnonymousTokenInterceptor, providedIn: "root" });
|
|
56192
|
+
AnonymousTokenInterceptor.decorators = [
|
|
56193
|
+
{ type: i0.Injectable, args: [{
|
|
56194
|
+
providedIn: 'root'
|
|
56195
|
+
},] }
|
|
56196
|
+
];
|
|
56197
|
+
AnonymousTokenInterceptor.ctorParameters = function () { return [
|
|
56198
|
+
{ type: ModuleConfigService },
|
|
56199
|
+
{ type: ApplicationContextService }
|
|
56200
|
+
]; };
|
|
56201
|
+
|
|
56124
56202
|
var PublicFunction = /** @class */ (function () {
|
|
56125
56203
|
function PublicFunction() {
|
|
56126
56204
|
}
|
|
@@ -56217,6 +56295,11 @@
|
|
|
56217
56295
|
useClass: TraceInterceptor,
|
|
56218
56296
|
multi: true,
|
|
56219
56297
|
},
|
|
56298
|
+
{
|
|
56299
|
+
provide: i1$1.HTTP_INTERCEPTORS,
|
|
56300
|
+
useClass: AnonymousTokenInterceptor,
|
|
56301
|
+
multi: true,
|
|
56302
|
+
},
|
|
56220
56303
|
i1.MessageService,
|
|
56221
56304
|
i1.ConfirmationService,
|
|
56222
56305
|
i2$1.DatePipe,
|
|
@@ -58188,6 +58271,7 @@
|
|
|
58188
58271
|
exports.ɵfd = LogInterceptor;
|
|
58189
58272
|
exports.ɵfe = PermissionUtilsInterceptor;
|
|
58190
58273
|
exports.ɵff = TraceInterceptor;
|
|
58274
|
+
exports.ɵfg = AnonymousTokenInterceptor;
|
|
58191
58275
|
exports.ɵg = AdvanceSearchComponent;
|
|
58192
58276
|
exports.ɵh = AppRootMenuComponent;
|
|
58193
58277
|
exports.ɵi = AppTopBarComponent;
|