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
package/fesm2015/tnx-shared.js
CHANGED
|
@@ -9,6 +9,7 @@ import { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';
|
|
|
9
9
|
import { ImgFallbackModule } from 'ngx-img-fallback';
|
|
10
10
|
import { NgxMaskModule } from 'ngx-mask';
|
|
11
11
|
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
|
|
12
|
+
import { AccordionModule } from 'tn-custom-primeng/accordion';
|
|
12
13
|
import { AutoCompleteModule } from 'tn-custom-primeng/autocomplete';
|
|
13
14
|
import { BlockUIModule } from 'tn-custom-primeng/blockui';
|
|
14
15
|
import { BreadcrumbModule } from 'tn-custom-primeng/breadcrumb';
|
|
@@ -79,7 +80,6 @@ import { DomHandler } from 'tn-custom-primeng/dom';
|
|
|
79
80
|
import QRCode from 'qrcode';
|
|
80
81
|
import { jsPlumb } from 'jsplumb';
|
|
81
82
|
import { RTFJS, WMFJS, EMFJS } from 'rtf.js';
|
|
82
|
-
import { AccordionModule } from 'tn-custom-primeng/accordion';
|
|
83
83
|
import localeVi from '@angular/common/locales/vi';
|
|
84
84
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
85
85
|
|
|
@@ -9768,7 +9768,12 @@ var EnumWorkflowCheckboxOption;
|
|
|
9768
9768
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["TAO_CONG_VIEC"] = 1] = "TAO_CONG_VIEC";
|
|
9769
9769
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["AUTO_NEXT_STEP"] = 2] = "AUTO_NEXT_STEP";
|
|
9770
9770
|
EnumWorkflowCheckboxOption[EnumWorkflowCheckboxOption["AUTO_START_TASK"] = 3] = "AUTO_START_TASK";
|
|
9771
|
-
})(EnumWorkflowCheckboxOption || (EnumWorkflowCheckboxOption = {}));
|
|
9771
|
+
})(EnumWorkflowCheckboxOption || (EnumWorkflowCheckboxOption = {}));
|
|
9772
|
+
var EnumProcessWorkflowType;
|
|
9773
|
+
(function (EnumProcessWorkflowType) {
|
|
9774
|
+
EnumProcessWorkflowType[EnumProcessWorkflowType["EDIT"] = 1] = "EDIT";
|
|
9775
|
+
EnumProcessWorkflowType[EnumProcessWorkflowType["VIEW"] = 2] = "VIEW";
|
|
9776
|
+
})(EnumProcessWorkflowType || (EnumProcessWorkflowType = {}));
|
|
9772
9777
|
|
|
9773
9778
|
class TnCustomScrollbarComponent {
|
|
9774
9779
|
constructor(elm, _deviceDetectorService, sanitizer) {
|
|
@@ -19467,6 +19472,9 @@ class DataListBase extends ComponentBase {
|
|
|
19467
19472
|
}
|
|
19468
19473
|
}
|
|
19469
19474
|
ngOnInit() {
|
|
19475
|
+
// if (window) {
|
|
19476
|
+
// window['_clbc'] = this;
|
|
19477
|
+
// }
|
|
19470
19478
|
this.model.baseReady = false;
|
|
19471
19479
|
if (this.setting.cols) {
|
|
19472
19480
|
this.setting.cols = this.setting.cols.filter(q => !q.removeOnInit);
|
|
@@ -23356,7 +23364,7 @@ ChatBoxComponent.decorators = [
|
|
|
23356
23364
|
selector: 'chat-box',
|
|
23357
23365
|
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>-->",
|
|
23358
23366
|
providers: [ComponentContextService, CheckControlVisibleService],
|
|
23359
|
-
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}"]
|
|
23367
|
+
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}"]
|
|
23360
23368
|
},] }
|
|
23361
23369
|
];
|
|
23362
23370
|
ChatBoxComponent.ctorParameters = () => [
|
|
@@ -24094,7 +24102,7 @@ ChatSendMessageBoxComponent.decorators = [
|
|
|
24094
24102
|
selector: 'chat-send-message-box',
|
|
24095
24103
|
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",
|
|
24096
24104
|
providers: [ComponentContextService],
|
|
24097
|
-
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}"]
|
|
24105
|
+
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}"]
|
|
24098
24106
|
},] }
|
|
24099
24107
|
];
|
|
24100
24108
|
ChatSendMessageBoxComponent.ctorParameters = () => [
|
|
@@ -25082,6 +25090,404 @@ AppTopBarV1Component.propDecorators = {
|
|
|
25082
25090
|
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
25083
25091
|
};
|
|
25084
25092
|
|
|
25093
|
+
class AppTopBarV2Component extends ComponentBase {
|
|
25094
|
+
constructor(
|
|
25095
|
+
// public app: AppComponent,
|
|
25096
|
+
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
25097
|
+
super(_injector);
|
|
25098
|
+
this._customRouteService = _customRouteService;
|
|
25099
|
+
this._router = _router;
|
|
25100
|
+
this._commonService = _commonService;
|
|
25101
|
+
this._authenService = _authenService;
|
|
25102
|
+
this._cd = _cd;
|
|
25103
|
+
this._permissionService = _permissionService;
|
|
25104
|
+
this._moduleConfigService = _moduleConfigService;
|
|
25105
|
+
this._userService = _userService;
|
|
25106
|
+
this._notifierService = _notifierService;
|
|
25107
|
+
this._translateService = _translateService;
|
|
25108
|
+
this.defaultAvatar = '';
|
|
25109
|
+
this.key = '';
|
|
25110
|
+
this.currentRoute = '';
|
|
25111
|
+
this.fileApi = '';
|
|
25112
|
+
this.currentUser = null;
|
|
25113
|
+
this.appSwitcherItems = [];
|
|
25114
|
+
this.isFirstTime = false;
|
|
25115
|
+
this.showSettings = false;
|
|
25116
|
+
this.allSubscriptions = [];
|
|
25117
|
+
this.message = '';
|
|
25118
|
+
this.environment = this._moduleConfigService.getConfig().environment;
|
|
25119
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
25120
|
+
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
25121
|
+
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
25122
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
25123
|
+
}
|
|
25124
|
+
else {
|
|
25125
|
+
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
25126
|
+
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
25127
|
+
}
|
|
25128
|
+
else {
|
|
25129
|
+
this.showDefaultSetting = false;
|
|
25130
|
+
}
|
|
25131
|
+
}
|
|
25132
|
+
if (!this.rootContext.data.currentUser) {
|
|
25133
|
+
this.rootContext.data.currentUser = {};
|
|
25134
|
+
}
|
|
25135
|
+
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
25136
|
+
// this._cd.detectChanges();
|
|
25137
|
+
// }));
|
|
25138
|
+
this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
25139
|
+
this.currentUser = this._userService.getCurrentUser();
|
|
25140
|
+
this.loadMenuMetadata();
|
|
25141
|
+
});
|
|
25142
|
+
if (this.rootModel.allowAnonymous) {
|
|
25143
|
+
this.loadMenuMetadata();
|
|
25144
|
+
}
|
|
25145
|
+
}
|
|
25146
|
+
loadMenuMetadata() {
|
|
25147
|
+
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
25148
|
+
const arr = [];
|
|
25149
|
+
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
25150
|
+
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
25151
|
+
const clientId = this.environment.authenticationSettings.clientId;
|
|
25152
|
+
if (this.rootContext.data.allowAnonymous && element.allowAnonymous) {
|
|
25153
|
+
arr.push(element);
|
|
25154
|
+
}
|
|
25155
|
+
else {
|
|
25156
|
+
if (this.currentUser) {
|
|
25157
|
+
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
25158
|
+
if (isAuthorized) {
|
|
25159
|
+
arr.push(element);
|
|
25160
|
+
}
|
|
25161
|
+
}
|
|
25162
|
+
}
|
|
25163
|
+
}
|
|
25164
|
+
resolve(arr);
|
|
25165
|
+
}));
|
|
25166
|
+
prmsAppSwicherItem.then(rs => {
|
|
25167
|
+
if (rs) {
|
|
25168
|
+
const currentUser = this._userService.getCurrentUser();
|
|
25169
|
+
this.appSwitcherItems.length = 0;
|
|
25170
|
+
rs.forEach(element => {
|
|
25171
|
+
if (element.visible) {
|
|
25172
|
+
if (element.allowAnonymous) {
|
|
25173
|
+
this.appSwitcherItems.push(element);
|
|
25174
|
+
}
|
|
25175
|
+
else {
|
|
25176
|
+
if (currentUser.maNguoiHoc && currentUser.issuperuser && currentUser.issuperuser.toLowerCase() != 'true') {
|
|
25177
|
+
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
25178
|
+
this.appSwitcherItems.push(element);
|
|
25179
|
+
}
|
|
25180
|
+
}
|
|
25181
|
+
else {
|
|
25182
|
+
this.appSwitcherItems.push(element);
|
|
25183
|
+
}
|
|
25184
|
+
}
|
|
25185
|
+
}
|
|
25186
|
+
});
|
|
25187
|
+
}
|
|
25188
|
+
});
|
|
25189
|
+
}
|
|
25190
|
+
ngOnInit() {
|
|
25191
|
+
if (this.rootContext.data.currentUser) {
|
|
25192
|
+
if (this.rootContext.data.currentUser.gender == 0) {
|
|
25193
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
25194
|
+
}
|
|
25195
|
+
else {
|
|
25196
|
+
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
25197
|
+
}
|
|
25198
|
+
this.userProfile = this._userService.getProfileInfo();
|
|
25199
|
+
}
|
|
25200
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
25201
|
+
setTimeout(() => {
|
|
25202
|
+
this.hideAdvanceSearch(e);
|
|
25203
|
+
});
|
|
25204
|
+
});
|
|
25205
|
+
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
25206
|
+
this.focusToSearchBox();
|
|
25207
|
+
});
|
|
25208
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, (e) => {
|
|
25209
|
+
this.showNotificationReload();
|
|
25210
|
+
});
|
|
25211
|
+
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, (e) => {
|
|
25212
|
+
this.setNotify(e.message);
|
|
25213
|
+
});
|
|
25214
|
+
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, e => {
|
|
25215
|
+
this.model.dataModelSetting.showSettings = true;
|
|
25216
|
+
}));
|
|
25217
|
+
this.model.dataModelSetting = {
|
|
25218
|
+
data: {},
|
|
25219
|
+
showSettings: false
|
|
25220
|
+
};
|
|
25221
|
+
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, data => {
|
|
25222
|
+
this.formatDefaultDataSetting(data);
|
|
25223
|
+
this.reloadWindow();
|
|
25224
|
+
});
|
|
25225
|
+
const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
25226
|
+
if (stringDataDefault) {
|
|
25227
|
+
const dataCacheDefault = JSON.parse(stringDataDefault);
|
|
25228
|
+
this.formatDefaultDataSetting(dataCacheDefault);
|
|
25229
|
+
}
|
|
25230
|
+
else {
|
|
25231
|
+
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
25232
|
+
}
|
|
25233
|
+
}
|
|
25234
|
+
ngOnDestroy() {
|
|
25235
|
+
this.allSubscriptions.forEach(element => {
|
|
25236
|
+
element.unsubscribe();
|
|
25237
|
+
});
|
|
25238
|
+
if (this.intervalCountdown) {
|
|
25239
|
+
clearInterval(this.intervalCountdown);
|
|
25240
|
+
}
|
|
25241
|
+
super.ngOnDestroy();
|
|
25242
|
+
}
|
|
25243
|
+
formatDefaultDataSetting(data) {
|
|
25244
|
+
let dataSetting = '';
|
|
25245
|
+
const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
25246
|
+
const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
25247
|
+
fields.forEach((field, index) => {
|
|
25248
|
+
if (!this.checkHidden(field)) {
|
|
25249
|
+
const _f = `${field}${fieldPluses[index]}`;
|
|
25250
|
+
if (data[_f]) {
|
|
25251
|
+
dataSetting += data[_f] + '/';
|
|
25252
|
+
}
|
|
25253
|
+
}
|
|
25254
|
+
});
|
|
25255
|
+
if (dataSetting.length > 0) {
|
|
25256
|
+
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
25257
|
+
}
|
|
25258
|
+
this.defaultDataSetting = dataSetting;
|
|
25259
|
+
}
|
|
25260
|
+
checkHidden(field) {
|
|
25261
|
+
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
|
|
25262
|
+
}
|
|
25263
|
+
getCurrentUserFullName() {
|
|
25264
|
+
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
25265
|
+
}
|
|
25266
|
+
getCurrentUserPosition() {
|
|
25267
|
+
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
25268
|
+
}
|
|
25269
|
+
getCurrentUserAvatar() {
|
|
25270
|
+
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
25271
|
+
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
25272
|
+
}
|
|
25273
|
+
else {
|
|
25274
|
+
return this.defaultAvatar;
|
|
25275
|
+
}
|
|
25276
|
+
}
|
|
25277
|
+
clearFilter(input) {
|
|
25278
|
+
setTimeout(() => {
|
|
25279
|
+
this.model.searchModel[this.model.fieldKey] = '';
|
|
25280
|
+
this._customRouteService.updateFragment(this.model.fieldKey, null);
|
|
25281
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
25282
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
25283
|
+
input.value = '';
|
|
25284
|
+
input.focus();
|
|
25285
|
+
this._cd.detectChanges();
|
|
25286
|
+
});
|
|
25287
|
+
}
|
|
25288
|
+
toggleAdvanceSearch(evt) {
|
|
25289
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
25290
|
+
evt.preventDefault();
|
|
25291
|
+
evt.cancelBubble = true;
|
|
25292
|
+
}
|
|
25293
|
+
hideAdvanceSearch(evt) {
|
|
25294
|
+
if (document.getElementById('advance-search-box')) {
|
|
25295
|
+
const mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
25296
|
+
if (!mask.length) {
|
|
25297
|
+
const closestDropdown = evt.target.closest('.dropdown-advs');
|
|
25298
|
+
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
25299
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
25300
|
+
}
|
|
25301
|
+
}
|
|
25302
|
+
}
|
|
25303
|
+
}
|
|
25304
|
+
focusToSearchBox() {
|
|
25305
|
+
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
25306
|
+
this.input.nativeElement.focus();
|
|
25307
|
+
}
|
|
25308
|
+
}
|
|
25309
|
+
onTopbarSearchClick(event, input) {
|
|
25310
|
+
if (!this.model.fieldKey) {
|
|
25311
|
+
return;
|
|
25312
|
+
}
|
|
25313
|
+
setTimeout(() => {
|
|
25314
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
25315
|
+
this._customRouteService.updateFragment(this.model.fieldKey, input.value);
|
|
25316
|
+
this._customRouteService.updateWithoutFireEvent();
|
|
25317
|
+
input.focus();
|
|
25318
|
+
});
|
|
25319
|
+
}
|
|
25320
|
+
onEsc(event, input) {
|
|
25321
|
+
this.clearFilter(input);
|
|
25322
|
+
}
|
|
25323
|
+
onEnter(event, input) {
|
|
25324
|
+
this.onTopbarSearchClick(event, input);
|
|
25325
|
+
}
|
|
25326
|
+
switchApp(item, openNewTab = false) {
|
|
25327
|
+
if (item.target == '_blank') {
|
|
25328
|
+
if (!item.defaultRedirect) {
|
|
25329
|
+
item.defaultRedirect = '';
|
|
25330
|
+
}
|
|
25331
|
+
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
25332
|
+
if (item.url == item.defaultRedirect) {
|
|
25333
|
+
item.url = '/' + item.code.toLowerCase();
|
|
25334
|
+
}
|
|
25335
|
+
if (!openNewTab) {
|
|
25336
|
+
top.location.href = `${item.url}/${item.defaultRedirect}`;
|
|
25337
|
+
}
|
|
25338
|
+
else {
|
|
25339
|
+
window.open(`${item.url}/${item.defaultRedirect}`, '_blank');
|
|
25340
|
+
}
|
|
25341
|
+
}
|
|
25342
|
+
else {
|
|
25343
|
+
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
25344
|
+
this._router.navigateByUrl(item.defaultRedirect);
|
|
25345
|
+
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
25346
|
+
if (this.rootContext.data.currentAppMetadata
|
|
25347
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
25348
|
+
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
25349
|
+
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
25350
|
+
}
|
|
25351
|
+
}
|
|
25352
|
+
}
|
|
25353
|
+
}
|
|
25354
|
+
hasAdvanceSearchBox() {
|
|
25355
|
+
return this.model.searchModel.hasAdvanceSearch;
|
|
25356
|
+
}
|
|
25357
|
+
isAdvanceSearching() {
|
|
25358
|
+
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
25359
|
+
}
|
|
25360
|
+
hasAdvanceSearchValue(obj) {
|
|
25361
|
+
for (const key in obj) {
|
|
25362
|
+
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
25363
|
+
continue;
|
|
25364
|
+
}
|
|
25365
|
+
if (obj[key] != null && obj[key] != '') {
|
|
25366
|
+
return false;
|
|
25367
|
+
}
|
|
25368
|
+
}
|
|
25369
|
+
return true;
|
|
25370
|
+
}
|
|
25371
|
+
getComponentId() {
|
|
25372
|
+
return 'TOPBAR';
|
|
25373
|
+
}
|
|
25374
|
+
goToHome() {
|
|
25375
|
+
this.rootContext.fireEvent('GO_HOME');
|
|
25376
|
+
}
|
|
25377
|
+
onEditInfo(event) {
|
|
25378
|
+
event.preventDefault();
|
|
25379
|
+
const currentAppSetting = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
25380
|
+
if (currentAppSetting) {
|
|
25381
|
+
this.switchApp(currentAppSetting);
|
|
25382
|
+
}
|
|
25383
|
+
else {
|
|
25384
|
+
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
25385
|
+
}
|
|
25386
|
+
}
|
|
25387
|
+
onChangePassword(event) {
|
|
25388
|
+
event.preventDefault();
|
|
25389
|
+
// this.changePassword.showPopup(this._userService.getId());
|
|
25390
|
+
}
|
|
25391
|
+
onTopbarLogout() {
|
|
25392
|
+
if (!localStorage.getItem('currentUrl')) {
|
|
25393
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
25394
|
+
}
|
|
25395
|
+
this._authenService.logout();
|
|
25396
|
+
}
|
|
25397
|
+
settingDefault() {
|
|
25398
|
+
this.model.dataModelSetting = {
|
|
25399
|
+
data: {},
|
|
25400
|
+
showSettings: true
|
|
25401
|
+
};
|
|
25402
|
+
}
|
|
25403
|
+
onShowSettings(ev) {
|
|
25404
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
25405
|
+
}
|
|
25406
|
+
onCloseSettings(ev) {
|
|
25407
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
25408
|
+
}
|
|
25409
|
+
showProfilePage() {
|
|
25410
|
+
if (this._userService.isSinhVienAccount()) {
|
|
25411
|
+
return false;
|
|
25412
|
+
}
|
|
25413
|
+
return true;
|
|
25414
|
+
}
|
|
25415
|
+
login() {
|
|
25416
|
+
this.rootContext.fireEvent('LOGIN');
|
|
25417
|
+
}
|
|
25418
|
+
setNotify(message) {
|
|
25419
|
+
this.message = message;
|
|
25420
|
+
}
|
|
25421
|
+
handleMouseOver(evt) {
|
|
25422
|
+
evt.target.stop();
|
|
25423
|
+
}
|
|
25424
|
+
handleMouseOut(evt) {
|
|
25425
|
+
evt.target.start();
|
|
25426
|
+
}
|
|
25427
|
+
showNotificationReload() {
|
|
25428
|
+
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
25429
|
+
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
25430
|
+
this._notifierService.showConfirm(this.message).then(res => {
|
|
25431
|
+
this.reloadWindow();
|
|
25432
|
+
});
|
|
25433
|
+
// if (this.intervalCountdown) {
|
|
25434
|
+
// clearInterval(this.intervalCountdown);
|
|
25435
|
+
// }
|
|
25436
|
+
// const date = new Date();
|
|
25437
|
+
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
25438
|
+
// this.intervalCountdown = setInterval(f => {
|
|
25439
|
+
// const now = new Date().getTime();
|
|
25440
|
+
// const distance = goalDate - now;
|
|
25441
|
+
// var seconds = Math.floor(distance / 1000);
|
|
25442
|
+
// // If the count down is finished, write some text
|
|
25443
|
+
// if (distance < 0) {
|
|
25444
|
+
// clearInterval(this.intervalCountdown);
|
|
25445
|
+
// this.reloadWindow();
|
|
25446
|
+
// return;
|
|
25447
|
+
// }
|
|
25448
|
+
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
25449
|
+
// if (seconds < 1) {
|
|
25450
|
+
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
25451
|
+
// }
|
|
25452
|
+
// this._notifierService.showConfirm(
|
|
25453
|
+
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
25454
|
+
// 'pi pi-check'
|
|
25455
|
+
// ).then(res => {
|
|
25456
|
+
// clearInterval(this.intervalCountdown);
|
|
25457
|
+
// this.reloadWindow();
|
|
25458
|
+
// });
|
|
25459
|
+
// }, 1000);
|
|
25460
|
+
}
|
|
25461
|
+
reloadWindow() {
|
|
25462
|
+
top.location.reload();
|
|
25463
|
+
}
|
|
25464
|
+
}
|
|
25465
|
+
AppTopBarV2Component.decorators = [
|
|
25466
|
+
{ type: Component, args: [{
|
|
25467
|
+
selector: 'app-topbar-v2',
|
|
25468
|
+
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>",
|
|
25469
|
+
providers: [ComponentContextService],
|
|
25470
|
+
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}}"]
|
|
25471
|
+
},] }
|
|
25472
|
+
];
|
|
25473
|
+
AppTopBarV2Component.ctorParameters = () => [
|
|
25474
|
+
{ type: CustomRouterService },
|
|
25475
|
+
{ type: Router },
|
|
25476
|
+
{ type: CommonService },
|
|
25477
|
+
{ type: AuthenService },
|
|
25478
|
+
{ type: ChangeDetectorRef },
|
|
25479
|
+
{ type: Injector },
|
|
25480
|
+
{ type: PermissionService },
|
|
25481
|
+
{ type: ModuleConfigService },
|
|
25482
|
+
{ type: UserService },
|
|
25483
|
+
{ type: NotifierService },
|
|
25484
|
+
{ type: TranslateService }
|
|
25485
|
+
];
|
|
25486
|
+
AppTopBarV2Component.propDecorators = {
|
|
25487
|
+
input: [{ type: ViewChild, args: ['input',] }],
|
|
25488
|
+
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
25489
|
+
};
|
|
25490
|
+
|
|
25085
25491
|
class MenuService {
|
|
25086
25492
|
constructor(_moduleConfigService, _permissionService, _commonService, _applicationContext) {
|
|
25087
25493
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -28483,6 +28889,43 @@ CheckReadyComponent.propDecorators = {
|
|
|
28483
28889
|
onReady: [{ type: Output }]
|
|
28484
28890
|
};
|
|
28485
28891
|
|
|
28892
|
+
class TableDetailFormComponent extends DataFormBase {
|
|
28893
|
+
constructor(injector) {
|
|
28894
|
+
super(injector);
|
|
28895
|
+
this.schema = [];
|
|
28896
|
+
this.data = {};
|
|
28897
|
+
this.onSaved = new EventEmitter();
|
|
28898
|
+
}
|
|
28899
|
+
ngOnInit() {
|
|
28900
|
+
super.ngOnInit();
|
|
28901
|
+
this.autoSave = false;
|
|
28902
|
+
this.model.data = this.data;
|
|
28903
|
+
this.setting.baseService = this.parentSetting.baseService;
|
|
28904
|
+
this.setting.schema = this.schema;
|
|
28905
|
+
}
|
|
28906
|
+
handleManualSave() {
|
|
28907
|
+
this.onSaved.emit(this.model.data);
|
|
28908
|
+
}
|
|
28909
|
+
}
|
|
28910
|
+
TableDetailFormComponent.decorators = [
|
|
28911
|
+
{ type: Component, args: [{
|
|
28912
|
+
selector: 'table-detail-form',
|
|
28913
|
+
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>",
|
|
28914
|
+
providers: [
|
|
28915
|
+
ComponentContextService
|
|
28916
|
+
],
|
|
28917
|
+
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}"]
|
|
28918
|
+
},] }
|
|
28919
|
+
];
|
|
28920
|
+
TableDetailFormComponent.ctorParameters = () => [
|
|
28921
|
+
{ type: Injector }
|
|
28922
|
+
];
|
|
28923
|
+
TableDetailFormComponent.propDecorators = {
|
|
28924
|
+
schema: [{ type: Input }],
|
|
28925
|
+
data: [{ type: Input }],
|
|
28926
|
+
onSaved: [{ type: Output }]
|
|
28927
|
+
};
|
|
28928
|
+
|
|
28486
28929
|
class TreeTableComponent extends ComponentBase {
|
|
28487
28930
|
constructor(injector, _crudService, _notifierService) {
|
|
28488
28931
|
super(injector);
|
|
@@ -29088,43 +29531,6 @@ TreeTableComponent.propDecorators = {
|
|
|
29088
29531
|
onReloaded: [{ type: Output }]
|
|
29089
29532
|
};
|
|
29090
29533
|
|
|
29091
|
-
class TableDetailFormComponent extends DataFormBase {
|
|
29092
|
-
constructor(injector) {
|
|
29093
|
-
super(injector);
|
|
29094
|
-
this.schema = [];
|
|
29095
|
-
this.data = {};
|
|
29096
|
-
this.onSaved = new EventEmitter();
|
|
29097
|
-
}
|
|
29098
|
-
ngOnInit() {
|
|
29099
|
-
super.ngOnInit();
|
|
29100
|
-
this.autoSave = false;
|
|
29101
|
-
this.model.data = this.data;
|
|
29102
|
-
this.setting.baseService = this.parentSetting.baseService;
|
|
29103
|
-
this.setting.schema = this.schema;
|
|
29104
|
-
}
|
|
29105
|
-
handleManualSave() {
|
|
29106
|
-
this.onSaved.emit(this.model.data);
|
|
29107
|
-
}
|
|
29108
|
-
}
|
|
29109
|
-
TableDetailFormComponent.decorators = [
|
|
29110
|
-
{ type: Component, args: [{
|
|
29111
|
-
selector: 'table-detail-form',
|
|
29112
|
-
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>",
|
|
29113
|
-
providers: [
|
|
29114
|
-
ComponentContextService
|
|
29115
|
-
],
|
|
29116
|
-
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}"]
|
|
29117
|
-
},] }
|
|
29118
|
-
];
|
|
29119
|
-
TableDetailFormComponent.ctorParameters = () => [
|
|
29120
|
-
{ type: Injector }
|
|
29121
|
-
];
|
|
29122
|
-
TableDetailFormComponent.propDecorators = {
|
|
29123
|
-
schema: [{ type: Input }],
|
|
29124
|
-
data: [{ type: Input }],
|
|
29125
|
-
onSaved: [{ type: Output }]
|
|
29126
|
-
};
|
|
29127
|
-
|
|
29128
29534
|
class DatetimePickerRangeComponent {
|
|
29129
29535
|
constructor() {
|
|
29130
29536
|
this.control = new DateTimeRangeControlSchema();
|
|
@@ -36737,7 +37143,7 @@ ShareLinkByPermissionComponent.propDecorators = {
|
|
|
36737
37143
|
lstItem: [{ type: Input }]
|
|
36738
37144
|
};
|
|
36739
37145
|
|
|
36740
|
-
class
|
|
37146
|
+
class SplashComponentV1Component extends ComponentBase {
|
|
36741
37147
|
constructor(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
36742
37148
|
super(injector);
|
|
36743
37149
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -36900,15 +37306,15 @@ class SplashComponentV2Component extends ComponentBase {
|
|
|
36900
37306
|
this.rootContext.fireEvent('LOGIN');
|
|
36901
37307
|
}
|
|
36902
37308
|
}
|
|
36903
|
-
|
|
37309
|
+
SplashComponentV1Component.decorators = [
|
|
36904
37310
|
{ type: Component, args: [{
|
|
36905
|
-
selector: 'splash-component-
|
|
36906
|
-
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-
|
|
37311
|
+
selector: 'splash-component-v1',
|
|
37312
|
+
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-v1\">\r\n <div class=\"welcome-user\">\r\n <div class=\"profile-image\">\r\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\r\n </div>\r\n\r\n <div class=\"wrp-login\">\r\n <h2>Xin ch\u00E0o!</h2>\r\n <b>{{currentUser.fullName}}</b>\r\n <div *ngIf=\"currentUser\" class=\"login\">\r\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\r\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\r\n xu\u1EA5t</a>\r\n </div>\r\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\r\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\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\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>\r\n\r\n <div class=\"div1111-wrapper\">\r\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\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 </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>",
|
|
36907
37313
|
providers: [ComponentContextService],
|
|
36908
|
-
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-
|
|
37314
|
+
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-v1{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-v1 div>span{border-radius:5px;box-shadow:1px 2px 9px 1px #dadada;display:inline-block;height:120px;margin:10px;min-width:100px;white-space:normal;width:120px}.modules-v1 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-v1 div>span>a,.modules-v1 div>span>a>span{color:#fff;text-align:center;text-decoration:unset;width:100%}.modules-v1 div>span>a>span{display:inline-block;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{height:420px;margin:0 auto;max-width:700px;overflow:auto}.modules-v1 .div1111-wrapper .div1111{display:flex;flex-wrap:wrap;white-space:nowrap;width:100%}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{-ms-grid-row-align:stretch;align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);color:#666;display:flex;flex-direction:column;justify-content:space-evenly;text-align:center;width:65%}.modules-v1 .module-icons h2{color:#271756;font-size:25px;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-bottom:0;margin-top:0}.modules-v1 .welcome-user{-ms-grid-row-align:stretch;align-self:stretch;background-color:rgba(47,112,172,.9215686274509803);display:flex;flex-direction:column;text-align:center;width:35%}.modules-v1 .welcome-user .wrp-login{align-items:center;color:#fff;display:flex;flex-direction:column;margin:20px auto auto}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;font-weight:500;margin-bottom:5px;margin-top:0}.modules-v1 .welcome-user .wrp-login b{display:block;font-size:25px;text-transform:uppercase}.modules-v1 .welcome-user .wrp-login .login{-ms-grid-columns:(150px)[2];display:-ms-grid;display:grid;grid-gap:10px;grid-template-columns:repeat(2,150px);margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;border-radius:5px;color:#5d5d5d;cursor:pointer;display:inline-block;padding:6px}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{-o-object-fit:contain;background:#fff;border-radius:50%;box-shadow:1px 1px 11px 6px #2a659b;height:200px;object-fit:contain;width:200px}.modules-v1 .welcome-user .clock-wrapper{color:#fff;margin-bottom:auto;margin-top:auto;text-align:center}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:40px;margin-bottom:0}.modules-v1 .underconstruction{color:red;font-size:4em;font-weight:700;text-transform:uppercase}@media (max-width:1368px){.modules-v1 .clock{font-size:1.5em;margin:0 20px}.modules-v1 .data-time{font-size:1em;margin:10px 0 20px}}@media (max-width:1100px){.modules-v1 .div1111-wrapper .div1111{-ms-grid-columns:(minmax(120px,1fr))[4];display:-ms-grid;display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width:991px){.modules-v1 .welcome-user .wrp-login .login{-ms-grid-columns:1fr;grid-template-columns:1fr}}@media (max-width:768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{align-items:center;flex-direction:row;height:270px;padding-bottom:87px;width:100%}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{height:calc(100% - 270px);width:100%}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-position:50%;background-repeat:no-repeat;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:hsla(0,0%,100%,.9019607843137255);box-shadow:1px 4px 9px 2px #67a0d4;left:20px;padding:20px 10px;position:absolute;right:20px;top:200px;width:calc(100% - 40px)}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width:640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{float:right;padding:0 20px 0 0;width:50%}.modules-v1 .welcome-user .wrp-login h2{font-size:14px;margin-bottom:3px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{display:flex;flex-direction:column;margin-top:10px;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{float:left;width:50%}.modules-v1 .welcome-user .profile-image img{display:block;height:130px;margin-left:35px;width:130px}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-right:0;padding-top:10px}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{height:360px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{height:100px;width:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width:425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{-ms-grid-columns:(minmax(120px,1fr))[3];display:-ms-grid;display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width:375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h1,.modules-v1 .module-icons .img-title .title h2{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width:360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{left:10px;right:10px;top:205px;width:calc(100% - 20px)}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@-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}}"]
|
|
36909
37315
|
},] }
|
|
36910
37316
|
];
|
|
36911
|
-
|
|
37317
|
+
SplashComponentV1Component.ctorParameters = () => [
|
|
36912
37318
|
{ type: Injector },
|
|
36913
37319
|
{ type: ModuleConfigService },
|
|
36914
37320
|
{ type: PermissionService },
|
|
@@ -36919,7 +37325,7 @@ SplashComponentV2Component.ctorParameters = () => [
|
|
|
36919
37325
|
{ type: GlobalService }
|
|
36920
37326
|
];
|
|
36921
37327
|
|
|
36922
|
-
class
|
|
37328
|
+
class SplashComponentV2Component extends ComponentBase {
|
|
36923
37329
|
constructor(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
|
|
36924
37330
|
super(injector);
|
|
36925
37331
|
this._moduleConfigService = _moduleConfigService;
|
|
@@ -37082,15 +37488,15 @@ class SplashComponentV1Component extends ComponentBase {
|
|
|
37082
37488
|
this.rootContext.fireEvent('LOGIN');
|
|
37083
37489
|
}
|
|
37084
37490
|
}
|
|
37085
|
-
|
|
37491
|
+
SplashComponentV2Component.decorators = [
|
|
37086
37492
|
{ type: Component, args: [{
|
|
37087
|
-
selector: 'splash-component-
|
|
37088
|
-
template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\r\n <div class=\"loader\"></div>\r\n</div>\r\n<div *ngIf=\"loaded\" class=\"modules-
|
|
37493
|
+
selector: 'splash-component-v2',
|
|
37494
|
+
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>",
|
|
37089
37495
|
providers: [ComponentContextService],
|
|
37090
|
-
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-
|
|
37496
|
+
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}}"]
|
|
37091
37497
|
},] }
|
|
37092
37498
|
];
|
|
37093
|
-
|
|
37499
|
+
SplashComponentV2Component.ctorParameters = () => [
|
|
37094
37500
|
{ type: Injector },
|
|
37095
37501
|
{ type: ModuleConfigService },
|
|
37096
37502
|
{ type: PermissionService },
|
|
@@ -37779,10 +38185,10 @@ class StateMachinesConnectionReceiverDepartmentComponent extends DataFormBase {
|
|
|
37779
38185
|
this.data.data = {};
|
|
37780
38186
|
}
|
|
37781
38187
|
if (this.data.data.departmentRules == null) {
|
|
37782
|
-
this.data.data.departmentRules = [
|
|
38188
|
+
this.data.data.departmentRules = [];
|
|
37783
38189
|
}
|
|
37784
38190
|
if (this.data.data.departmentViewRules == null) {
|
|
37785
|
-
this.data.data.departmentViewRules = [EnumUserRule.NGUOI_THEO_DOI];
|
|
38191
|
+
this.data.data.departmentViewRules = [EnumUserRule.NGUOI_NHAN, EnumUserRule.NGUOI_THEO_DOI];
|
|
37786
38192
|
}
|
|
37787
38193
|
}
|
|
37788
38194
|
}
|
|
@@ -37868,10 +38274,10 @@ class StateMachinesConnectionReceiverGroupComponent extends DataFormBase {
|
|
|
37868
38274
|
this.data.data = {};
|
|
37869
38275
|
}
|
|
37870
38276
|
if (this.data.data.groupRules == null) {
|
|
37871
|
-
this.data.data.groupRules = [
|
|
38277
|
+
this.data.data.groupRules = [];
|
|
37872
38278
|
}
|
|
37873
38279
|
if (this.data.data.groupViewRules == null) {
|
|
37874
|
-
this.data.data.groupViewRules = [EnumUserRule.NGUOI_THEO_DOI];
|
|
38280
|
+
this.data.data.groupViewRules = [EnumUserRule.NGUOI_NHAN, EnumUserRule.NGUOI_THEO_DOI];
|
|
37875
38281
|
}
|
|
37876
38282
|
}
|
|
37877
38283
|
}
|
|
@@ -40129,16 +40535,15 @@ class TnAppNotificationComponent extends ComponentBase {
|
|
|
40129
40535
|
});
|
|
40130
40536
|
}
|
|
40131
40537
|
readById(data) {
|
|
40132
|
-
|
|
40133
|
-
|
|
40134
|
-
this.
|
|
40135
|
-
|
|
40538
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40539
|
+
data.readedTime = new Date();
|
|
40540
|
+
yield this._notificationService.markReadById(data.id).then(res => {
|
|
40541
|
+
this.rootContext.fireEvent(ComCtxConstants.NOTIFICATION.NOTIFICATION_RELOAD);
|
|
40542
|
+
}).catch(err => this._commonService.handleError(err, this._injector));
|
|
40543
|
+
});
|
|
40136
40544
|
}
|
|
40137
40545
|
isHasAvatar(item) {
|
|
40138
|
-
|
|
40139
|
-
return true;
|
|
40140
|
-
}
|
|
40141
|
-
return false;
|
|
40546
|
+
return !!item.avatarId;
|
|
40142
40547
|
}
|
|
40143
40548
|
isReaded(item) {
|
|
40144
40549
|
return !!item.readedTime;
|
|
@@ -40147,30 +40552,32 @@ class TnAppNotificationComponent extends ComponentBase {
|
|
|
40147
40552
|
return `${this.apiUploadUrl}/public/${item}/Download`;
|
|
40148
40553
|
}
|
|
40149
40554
|
goToLink(item) {
|
|
40150
|
-
|
|
40151
|
-
this.
|
|
40152
|
-
|
|
40153
|
-
|
|
40154
|
-
|
|
40155
|
-
|
|
40156
|
-
|
|
40157
|
-
|
|
40158
|
-
|
|
40159
|
-
|
|
40160
|
-
|
|
40161
|
-
|
|
40162
|
-
|
|
40163
|
-
|
|
40164
|
-
|
|
40165
|
-
|
|
40166
|
-
|
|
40167
|
-
|
|
40168
|
-
|
|
40169
|
-
|
|
40170
|
-
|
|
40171
|
-
|
|
40172
|
-
|
|
40173
|
-
|
|
40555
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40556
|
+
if (!this.isReaded(item)) {
|
|
40557
|
+
yield this.readById(item);
|
|
40558
|
+
this.totalUnRead--;
|
|
40559
|
+
}
|
|
40560
|
+
// Save current path to go back
|
|
40561
|
+
localStorage.setItem('currentUrl', top.location.href);
|
|
40562
|
+
localStorage.setItem('currentPathName', top.location.pathname);
|
|
40563
|
+
if (item.messageLink) {
|
|
40564
|
+
const link = item.messageLink;
|
|
40565
|
+
// 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
|
|
40566
|
+
top.location.href = link;
|
|
40567
|
+
// if (this._router.isActive(link, false)) {
|
|
40568
|
+
// this.rootContext.fireEvent(ComCtxConstants.ROOT.NOTI_CLICK, link);
|
|
40569
|
+
// } else {
|
|
40570
|
+
// if (this.rootModel.fragments) {
|
|
40571
|
+
// for (const item of this.rootModel.fragments) {
|
|
40572
|
+
// if (!item.closed) {
|
|
40573
|
+
// item.unsubscribe();
|
|
40574
|
+
// }
|
|
40575
|
+
// }
|
|
40576
|
+
// }
|
|
40577
|
+
// this._router.navigateByUrl(link);
|
|
40578
|
+
// }
|
|
40579
|
+
}
|
|
40580
|
+
});
|
|
40174
40581
|
}
|
|
40175
40582
|
headerClick(event) {
|
|
40176
40583
|
event.preventDefault();
|
|
@@ -40181,7 +40588,9 @@ class TnAppNotificationComponent extends ComponentBase {
|
|
|
40181
40588
|
this.bounceNoti = false;
|
|
40182
40589
|
}
|
|
40183
40590
|
handleClicked() {
|
|
40184
|
-
|
|
40591
|
+
var _a;
|
|
40592
|
+
const thongBaoDomain = (_a = this.environment.clientDomain.thongbaoDomain) !== null && _a !== void 0 ? _a : '';
|
|
40593
|
+
window.open(thongBaoDomain);
|
|
40185
40594
|
}
|
|
40186
40595
|
}
|
|
40187
40596
|
TnAppNotificationComponent.decorators = [
|
|
@@ -42658,11 +43067,16 @@ class ProcessWorkflowTargetComponent extends DataFormBase {
|
|
|
42658
43067
|
if (!this.data.roleIds)
|
|
42659
43068
|
this.data.roleIds = [];
|
|
42660
43069
|
this.setting.baseService = this._stateMachinesService;
|
|
43070
|
+
// set text label
|
|
43071
|
+
let txtLabel = 'nhận xử lý';
|
|
43072
|
+
if (this.data.type === EnumProcessWorkflowType.VIEW) {
|
|
43073
|
+
txtLabel = 'theo dõi';
|
|
43074
|
+
}
|
|
42661
43075
|
this.setting.schema = [
|
|
42662
|
-
this._createUserPickerControl('userIds',
|
|
43076
|
+
this._createUserPickerControl('userIds', `Người ${txtLabel}`),
|
|
42663
43077
|
// this.createUserPickerControl('idCapTrenGanNhats', 'Cán bộ cấp trên gần nhất'),
|
|
42664
|
-
this._createCoCauToChucControl('departmentIds',
|
|
42665
|
-
this._createUserGroupPickerControl('groupIds',
|
|
43078
|
+
this._createCoCauToChucControl('departmentIds', `Đơn vị ${txtLabel}`),
|
|
43079
|
+
this._createUserGroupPickerControl('groupIds', `Nhóm người ${txtLabel}`),
|
|
42666
43080
|
];
|
|
42667
43081
|
}
|
|
42668
43082
|
_createUserPickerControl(field, label, multiple = true) {
|
|
@@ -42834,7 +43248,8 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
42834
43248
|
ruleInWorkflows: [],
|
|
42835
43249
|
departmentIds: (_a = this.action.data.departmentIds) !== null && _a !== void 0 ? _a : [],
|
|
42836
43250
|
groupIds: (_b = this.action.data.groupIds) !== null && _b !== void 0 ? _b : [],
|
|
42837
|
-
roleIds: (_c = this.action.data.roleIds) !== null && _c !== void 0 ? _c : []
|
|
43251
|
+
roleIds: (_c = this.action.data.roleIds) !== null && _c !== void 0 ? _c : [],
|
|
43252
|
+
type: EnumProcessWorkflowType.EDIT
|
|
42838
43253
|
};
|
|
42839
43254
|
this.dataOnlyView = {
|
|
42840
43255
|
rules: [],
|
|
@@ -42842,7 +43257,8 @@ class ProcessWorkflowFormComponent extends DataFormBase {
|
|
|
42842
43257
|
ruleInWorkflows: [],
|
|
42843
43258
|
departmentIds: (_d = this.action.data.departmentViewIds) !== null && _d !== void 0 ? _d : [],
|
|
42844
43259
|
groupIds: (_e = this.action.data.groupViewIds) !== null && _e !== void 0 ? _e : [],
|
|
42845
|
-
roleIds: (_f = this.action.data.roleViewIds) !== null && _f !== void 0 ? _f : []
|
|
43260
|
+
roleIds: (_f = this.action.data.roleViewIds) !== null && _f !== void 0 ? _f : [],
|
|
43261
|
+
type: EnumProcessWorkflowType.VIEW
|
|
42846
43262
|
};
|
|
42847
43263
|
this.addDistinct(this.dataAllowEdit.userIds, this.initValueForTargetForm.lstUserId);
|
|
42848
43264
|
this.addDistinct(this.dataAllowEdit.departmentIds, this.initValueForTargetForm.lstDonViId);
|
|
@@ -43867,6 +44283,268 @@ WorkflowHistoryComponent.propDecorators = {
|
|
|
43867
44283
|
workflowSetting: [{ type: Input }]
|
|
43868
44284
|
};
|
|
43869
44285
|
|
|
44286
|
+
class WorkflowPermissionFormComponent extends DataFormBase {
|
|
44287
|
+
constructor(_injector, _workflowPermissionService, _workflowPermissionDetailService, _userGroupService) {
|
|
44288
|
+
super(_injector);
|
|
44289
|
+
this._injector = _injector;
|
|
44290
|
+
this._workflowPermissionService = _workflowPermissionService;
|
|
44291
|
+
this._workflowPermissionDetailService = _workflowPermissionDetailService;
|
|
44292
|
+
this._userGroupService = _userGroupService;
|
|
44293
|
+
}
|
|
44294
|
+
ngOnInit() {
|
|
44295
|
+
super.ngOnInit();
|
|
44296
|
+
this.setting.baseService = this._workflowPermissionService;
|
|
44297
|
+
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
44298
|
+
const dataSourcePermission = DataSourcePermissionBase.map(q => (Object.assign(Object.assign({}, q), { disabled: true })));
|
|
44299
|
+
this.setting.schema = [
|
|
44300
|
+
this._createUserPickerControl('userIds', 'Người dùng'),
|
|
44301
|
+
this._createCoCauToChucControl('donViIds', 'Đơn vị'),
|
|
44302
|
+
this._createUserGroupPickerControl('groupIds', 'Nhóm người dùng'),
|
|
44303
|
+
new CheckBoxListControlSchema({
|
|
44304
|
+
field: 'lstPermission',
|
|
44305
|
+
label: 'Quyền khả dụng',
|
|
44306
|
+
dataSource: dataSourcePermission
|
|
44307
|
+
})
|
|
44308
|
+
];
|
|
44309
|
+
}
|
|
44310
|
+
_createUserPickerControl(field, label, multiple = true) {
|
|
44311
|
+
const control = createUserPickerControl(field, label);
|
|
44312
|
+
control.multiple = multiple;
|
|
44313
|
+
return control;
|
|
44314
|
+
}
|
|
44315
|
+
_createCoCauToChucControl(field, label) {
|
|
44316
|
+
return createOrgPickerControl(field, label);
|
|
44317
|
+
}
|
|
44318
|
+
_createUserGroupPickerControl(field, label) {
|
|
44319
|
+
return createUserGroupPickerControl(this._userGroupService, field, label);
|
|
44320
|
+
}
|
|
44321
|
+
onFormInitialized(constrols) {
|
|
44322
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44323
|
+
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
44324
|
+
yield this.getItemPermissionCurrent();
|
|
44325
|
+
});
|
|
44326
|
+
}
|
|
44327
|
+
getItemPermissionCurrent() {
|
|
44328
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44329
|
+
const itemPermission = (yield this._workflowPermissionDetailService.changeEndpoint(this.businessSetting.baseService)
|
|
44330
|
+
.getDetailByFilter([
|
|
44331
|
+
this.newFilter('itemId', Operator.equal, this.itemId),
|
|
44332
|
+
this.newFilter('userId', Operator.equal, this._userService.getId())
|
|
44333
|
+
])).data;
|
|
44334
|
+
if (itemPermission) {
|
|
44335
|
+
this.formControls['lstPermission'].dataSource.forEach(item => {
|
|
44336
|
+
if ((itemPermission.permission & item.id) == item.id) {
|
|
44337
|
+
item.disabled = false;
|
|
44338
|
+
}
|
|
44339
|
+
});
|
|
44340
|
+
}
|
|
44341
|
+
});
|
|
44342
|
+
}
|
|
44343
|
+
modifyDetailData(data) {
|
|
44344
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44345
|
+
// xử lý dữ liệu lấy từ get detail về
|
|
44346
|
+
if (data.userIds) {
|
|
44347
|
+
data.userIds = data.userIds.split(',');
|
|
44348
|
+
}
|
|
44349
|
+
if (data.donViIds) {
|
|
44350
|
+
data.donViIds = data.donViIds.split(',');
|
|
44351
|
+
}
|
|
44352
|
+
if (data.groupIds) {
|
|
44353
|
+
data.groupIds = data.groupIds.split(',');
|
|
44354
|
+
}
|
|
44355
|
+
data.lstPermission = [];
|
|
44356
|
+
if (data.permission) {
|
|
44357
|
+
if ((data.permission & PermissionBase.READ)) {
|
|
44358
|
+
data.lstPermission.push(PermissionBase.READ);
|
|
44359
|
+
}
|
|
44360
|
+
if ((data.permission & PermissionBase.EDIT)) {
|
|
44361
|
+
data.lstPermission.push(PermissionBase.EDIT);
|
|
44362
|
+
}
|
|
44363
|
+
if ((data.permission & PermissionBase.DELETE)) {
|
|
44364
|
+
data.lstPermission.push(PermissionBase.DELETE);
|
|
44365
|
+
}
|
|
44366
|
+
}
|
|
44367
|
+
});
|
|
44368
|
+
}
|
|
44369
|
+
validateForm() {
|
|
44370
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44371
|
+
const itemMissings = [];
|
|
44372
|
+
if (!this.isNotNullArray(this.model.data.userIds)
|
|
44373
|
+
&& !this.isNotNullArray(this.model.data.donViIds)
|
|
44374
|
+
&& !this.isNotNullArray(this.model.data.groupIds)) {
|
|
44375
|
+
itemMissings.push('người muốn phân quyền');
|
|
44376
|
+
}
|
|
44377
|
+
if (!this.isNotNullArray(this.model.data.lstPermission)) {
|
|
44378
|
+
itemMissings.push('quyền muốn phân');
|
|
44379
|
+
}
|
|
44380
|
+
if (itemMissings.length) {
|
|
44381
|
+
this._notifierService.showWarning(`Bạn phải nhập ${itemMissings.join(', ')}`);
|
|
44382
|
+
return false;
|
|
44383
|
+
}
|
|
44384
|
+
return true;
|
|
44385
|
+
});
|
|
44386
|
+
}
|
|
44387
|
+
onBeforeSave() {
|
|
44388
|
+
this.model.data.tableName = this.businessSetting.baseService.entityName;
|
|
44389
|
+
this.model.data.workflowCode = DummyWorkflowCode;
|
|
44390
|
+
this.model.data.itemId = this.itemId;
|
|
44391
|
+
if (this.model.data.userIds) {
|
|
44392
|
+
this.model.data.userIds = this.model.data.userIds.toString();
|
|
44393
|
+
}
|
|
44394
|
+
if (this.model.data.donViIds) {
|
|
44395
|
+
this.model.data.donViIds = this.model.data.donViIds.toString();
|
|
44396
|
+
}
|
|
44397
|
+
if (this.model.data.groupIds) {
|
|
44398
|
+
this.model.data.groupIds = this.model.data.groupIds.toString();
|
|
44399
|
+
}
|
|
44400
|
+
if (this.model.data.lstPermission) {
|
|
44401
|
+
let permission = 0;
|
|
44402
|
+
if (this.model.data.lstPermission & PermissionBase.READ) {
|
|
44403
|
+
permission = permission | PermissionBase.READ;
|
|
44404
|
+
}
|
|
44405
|
+
if (this.model.data.lstPermission & PermissionBase.EDIT) {
|
|
44406
|
+
permission = permission | PermissionBase.EDIT;
|
|
44407
|
+
}
|
|
44408
|
+
if (this.model.data.lstPermission & PermissionBase.DELETE) {
|
|
44409
|
+
permission = permission | PermissionBase.DELETE;
|
|
44410
|
+
}
|
|
44411
|
+
this.model.data.permission = permission;
|
|
44412
|
+
}
|
|
44413
|
+
}
|
|
44414
|
+
getPromiseActionInsert() {
|
|
44415
|
+
return this._workflowPermissionService.insertPermission(this.model.data);
|
|
44416
|
+
}
|
|
44417
|
+
getPromiseActionUpdate() {
|
|
44418
|
+
return this._workflowPermissionService.updatePermission(this.model.data);
|
|
44419
|
+
}
|
|
44420
|
+
}
|
|
44421
|
+
WorkflowPermissionFormComponent.decorators = [
|
|
44422
|
+
{ type: Component, args: [{
|
|
44423
|
+
selector: 'workflow-permission-form',
|
|
44424
|
+
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",
|
|
44425
|
+
providers: [ComponentContextService],
|
|
44426
|
+
styles: [""]
|
|
44427
|
+
},] }
|
|
44428
|
+
];
|
|
44429
|
+
WorkflowPermissionFormComponent.ctorParameters = () => [
|
|
44430
|
+
{ type: Injector },
|
|
44431
|
+
{ type: WorkflowPermissionService },
|
|
44432
|
+
{ type: WorkflowPermissionDetailService },
|
|
44433
|
+
{ type: UserGroupRealService }
|
|
44434
|
+
];
|
|
44435
|
+
WorkflowPermissionFormComponent.propDecorators = {
|
|
44436
|
+
businessSetting: [{ type: Input }],
|
|
44437
|
+
itemId: [{ type: Input }]
|
|
44438
|
+
};
|
|
44439
|
+
|
|
44440
|
+
class WorkflowPermissionComponent extends DataListBase {
|
|
44441
|
+
constructor(_injector, _workflowPermissionService, _coCauToChucService, _userGroupService) {
|
|
44442
|
+
super(_injector);
|
|
44443
|
+
this._injector = _injector;
|
|
44444
|
+
this._workflowPermissionService = _workflowPermissionService;
|
|
44445
|
+
this._coCauToChucService = _coCauToChucService;
|
|
44446
|
+
this._userGroupService = _userGroupService;
|
|
44447
|
+
this.searchSchema = {};
|
|
44448
|
+
this.searchData = {};
|
|
44449
|
+
}
|
|
44450
|
+
ngOnInit() {
|
|
44451
|
+
this.setting.baseService = this._workflowPermissionService;
|
|
44452
|
+
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
44453
|
+
this.setting.title = '';
|
|
44454
|
+
this.setting.disableShare = true;
|
|
44455
|
+
this.setting.hiddenSettingPermission = true;
|
|
44456
|
+
this.setting.hiddenSettingWorkflow = true;
|
|
44457
|
+
this.setting.hiddenSettingWorkflowNew = true;
|
|
44458
|
+
this.setting.modelSchemas = [
|
|
44459
|
+
new ModelSchema({ field: 'userIds', name: 'Người dùng', fullName: 'Người dùng', description: 'Người dùng' }),
|
|
44460
|
+
new ModelSchema({ field: 'donViIds', name: 'Đơn vị', fullName: 'Đơn vị', description: 'Đơn vị' }),
|
|
44461
|
+
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' }),
|
|
44462
|
+
new ModelSchema({ field: 'permission', dataType: 'boolean', name: 'Sử dụng', fullName: 'Sử dụng', description: 'Sử dụng' })
|
|
44463
|
+
];
|
|
44464
|
+
this.setting.cols = [
|
|
44465
|
+
new ColumnSchemaBase({
|
|
44466
|
+
field: 'userIds',
|
|
44467
|
+
baseService: this._userService,
|
|
44468
|
+
displayField: 'fullNameNew',
|
|
44469
|
+
fieldPlus: 'userName',
|
|
44470
|
+
multiple: true
|
|
44471
|
+
}),
|
|
44472
|
+
new ColumnSchemaBase({
|
|
44473
|
+
field: 'donViIds',
|
|
44474
|
+
baseService: this._coCauToChucService,
|
|
44475
|
+
multiple: true,
|
|
44476
|
+
}),
|
|
44477
|
+
new ColumnSchemaBase({
|
|
44478
|
+
field: 'groupIds',
|
|
44479
|
+
baseService: this._userGroupService,
|
|
44480
|
+
displayField: 'name',
|
|
44481
|
+
multiple: true,
|
|
44482
|
+
}),
|
|
44483
|
+
new ColumnSchemaBase({
|
|
44484
|
+
field: 'permissions',
|
|
44485
|
+
label: 'Quyền hiện tại'
|
|
44486
|
+
})
|
|
44487
|
+
];
|
|
44488
|
+
this.setting.objectName = ' quyền bản ghi';
|
|
44489
|
+
super.ngOnInit();
|
|
44490
|
+
}
|
|
44491
|
+
modifyGridInfo(gridInfo) {
|
|
44492
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44493
|
+
gridInfo.filters.push(this.newFilter('itemId', Operator.equal, this.item.id), this.newFilterContainer('or', this.newFilterContainer('and', this.newFilter('userIds', Operator.isNotNull, '1'), this.newFilter('userIds', Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('donViIds', Operator.isNotNull, '1'), this.newFilter('donViIds', Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('groupIds', Operator.isNotNull, '1'), this.newFilter('groupIds', Operator.notEqual, ''))));
|
|
44494
|
+
});
|
|
44495
|
+
}
|
|
44496
|
+
beforeRenderDataSource(dataSource) {
|
|
44497
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44498
|
+
const userId = this._userService.getId();
|
|
44499
|
+
dataSource.forEach(item => {
|
|
44500
|
+
item.__disableEdit = item.type != EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
44501
|
+
item.__disableDelete = item.type != EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
44502
|
+
if (!item.permission)
|
|
44503
|
+
return;
|
|
44504
|
+
let strPermission = '';
|
|
44505
|
+
if ((item.permission & PermissionBase.READ) == PermissionBase.READ)
|
|
44506
|
+
strPermission += 'xem, ';
|
|
44507
|
+
if ((item.permission & PermissionBase.EDIT) == PermissionBase.EDIT)
|
|
44508
|
+
strPermission += 'sửa, ';
|
|
44509
|
+
if ((item.permission & PermissionBase.DELETE) == PermissionBase.DELETE)
|
|
44510
|
+
strPermission += 'xóa, ';
|
|
44511
|
+
if (strPermission.length) {
|
|
44512
|
+
strPermission = strPermission.charAt(0).toUpperCase() + strPermission.substring(1, strPermission.length - 2);
|
|
44513
|
+
}
|
|
44514
|
+
item.permissions = strPermission;
|
|
44515
|
+
});
|
|
44516
|
+
});
|
|
44517
|
+
}
|
|
44518
|
+
handleDelete(rowData) {
|
|
44519
|
+
this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa phân quyền')
|
|
44520
|
+
.then(res => {
|
|
44521
|
+
if (!res)
|
|
44522
|
+
return;
|
|
44523
|
+
this._workflowPermissionService.deletePermission(rowData.id)
|
|
44524
|
+
.then(res => this.handleResponse(res, '', f => {
|
|
44525
|
+
this._triggerProcessData();
|
|
44526
|
+
}));
|
|
44527
|
+
});
|
|
44528
|
+
}
|
|
44529
|
+
}
|
|
44530
|
+
WorkflowPermissionComponent.decorators = [
|
|
44531
|
+
{ type: Component, args: [{
|
|
44532
|
+
selector: 'workflow-permission',
|
|
44533
|
+
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>",
|
|
44534
|
+
styles: [""]
|
|
44535
|
+
},] }
|
|
44536
|
+
];
|
|
44537
|
+
WorkflowPermissionComponent.ctorParameters = () => [
|
|
44538
|
+
{ type: Injector },
|
|
44539
|
+
{ type: WorkflowPermissionService },
|
|
44540
|
+
{ type: CoCauToChucService },
|
|
44541
|
+
{ type: UserGroupRealService }
|
|
44542
|
+
];
|
|
44543
|
+
WorkflowPermissionComponent.propDecorators = {
|
|
44544
|
+
businessSetting: [{ type: Input }],
|
|
44545
|
+
item: [{ type: Input }]
|
|
44546
|
+
};
|
|
44547
|
+
|
|
43870
44548
|
class WorkflowPickerComponent extends DataFormBase {
|
|
43871
44549
|
constructor(_injector, _workflowSettingsService, _stateMachinesService) {
|
|
43872
44550
|
super(_injector);
|
|
@@ -45887,7 +46565,7 @@ class BaseDmLoaiCongViecComponent extends DataListBase {
|
|
|
45887
46565
|
this.setting.cols = [
|
|
45888
46566
|
new ColumnSchemaBase({
|
|
45889
46567
|
field: 'code',
|
|
45890
|
-
width: '
|
|
46568
|
+
width: '150px',
|
|
45891
46569
|
sort: false
|
|
45892
46570
|
}),
|
|
45893
46571
|
new ColumnSchemaBase({
|
|
@@ -45901,6 +46579,9 @@ class BaseDmLoaiCongViecComponent extends DataListBase {
|
|
|
45901
46579
|
this.setting.objectName = ' loại công việc';
|
|
45902
46580
|
super.ngOnInit();
|
|
45903
46581
|
}
|
|
46582
|
+
getPromiseGetData(gridInfo) {
|
|
46583
|
+
return this._dmLoaiCongViecService.baseGetTreeData(gridInfo);
|
|
46584
|
+
}
|
|
45904
46585
|
modifyGridInfo(gridInfo) {
|
|
45905
46586
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45906
46587
|
gridInfo.sorts = [{ field: 'maPhanCap', dir: 1 }];
|
|
@@ -45977,7 +46658,9 @@ class BaseDmLoaiCongViecComponent extends DataListBase {
|
|
|
45977
46658
|
lstParent.forEach(itemParent => {
|
|
45978
46659
|
itemParent.isLast = true;
|
|
45979
46660
|
});
|
|
45980
|
-
|
|
46661
|
+
for (let i = lstParent.length - 1; i >= 0; i--) {
|
|
46662
|
+
this.setIsLastParentForChild(dicParentChild, lstParent[i], dataSource);
|
|
46663
|
+
}
|
|
45981
46664
|
}
|
|
45982
46665
|
if (itemLastChild != null) {
|
|
45983
46666
|
itemLastChild.isLast = true;
|
|
@@ -47451,666 +48134,6 @@ UsersFormatPipe.ctorParameters = () => [
|
|
|
47451
48134
|
{ type: UserService }
|
|
47452
48135
|
];
|
|
47453
48136
|
|
|
47454
|
-
class WorkflowPermissionComponent extends DataListBase {
|
|
47455
|
-
constructor(_injector, _workflowPermissionService, _coCauToChucService, _userGroupService) {
|
|
47456
|
-
super(_injector);
|
|
47457
|
-
this._injector = _injector;
|
|
47458
|
-
this._workflowPermissionService = _workflowPermissionService;
|
|
47459
|
-
this._coCauToChucService = _coCauToChucService;
|
|
47460
|
-
this._userGroupService = _userGroupService;
|
|
47461
|
-
this.searchSchema = {};
|
|
47462
|
-
this.searchData = {};
|
|
47463
|
-
}
|
|
47464
|
-
ngOnInit() {
|
|
47465
|
-
this.setting.baseService = this._workflowPermissionService;
|
|
47466
|
-
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
47467
|
-
this.setting.title = '';
|
|
47468
|
-
this.setting.disableShare = true;
|
|
47469
|
-
this.setting.hiddenSettingPermission = true;
|
|
47470
|
-
this.setting.hiddenSettingWorkflow = true;
|
|
47471
|
-
this.setting.hiddenSettingWorkflowNew = true;
|
|
47472
|
-
this.setting.modelSchemas = [
|
|
47473
|
-
new ModelSchema({ field: 'userIds', name: 'Người dùng', fullName: 'Người dùng', description: 'Người dùng' }),
|
|
47474
|
-
new ModelSchema({ field: 'donViIds', name: 'Đơn vị', fullName: 'Đơn vị', description: 'Đơn vị' }),
|
|
47475
|
-
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' }),
|
|
47476
|
-
new ModelSchema({ field: 'permission', dataType: 'boolean', name: 'Sử dụng', fullName: 'Sử dụng', description: 'Sử dụng' })
|
|
47477
|
-
];
|
|
47478
|
-
this.setting.cols = [
|
|
47479
|
-
new ColumnSchemaBase({
|
|
47480
|
-
field: 'userIds',
|
|
47481
|
-
baseService: this._userService,
|
|
47482
|
-
displayField: 'fullNameNew',
|
|
47483
|
-
fieldPlus: 'userName',
|
|
47484
|
-
multiple: true
|
|
47485
|
-
}),
|
|
47486
|
-
new ColumnSchemaBase({
|
|
47487
|
-
field: 'donViIds',
|
|
47488
|
-
baseService: this._coCauToChucService,
|
|
47489
|
-
multiple: true,
|
|
47490
|
-
}),
|
|
47491
|
-
new ColumnSchemaBase({
|
|
47492
|
-
field: 'groupIds',
|
|
47493
|
-
baseService: this._userGroupService,
|
|
47494
|
-
displayField: 'name',
|
|
47495
|
-
multiple: true,
|
|
47496
|
-
}),
|
|
47497
|
-
new ColumnSchemaBase({
|
|
47498
|
-
field: 'permissions',
|
|
47499
|
-
label: 'Quyền hiện tại'
|
|
47500
|
-
})
|
|
47501
|
-
];
|
|
47502
|
-
this.setting.objectName = ' quyền bản ghi';
|
|
47503
|
-
super.ngOnInit();
|
|
47504
|
-
}
|
|
47505
|
-
modifyGridInfo(gridInfo) {
|
|
47506
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47507
|
-
gridInfo.filters.push(this.newFilter('itemId', Operator.equal, this.item.id), this.newFilterContainer('or', this.newFilterContainer('and', this.newFilter('userIds', Operator.isNotNull, '1'), this.newFilter('userIds', Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('donViIds', Operator.isNotNull, '1'), this.newFilter('donViIds', Operator.notEqual, '')), this.newFilterContainer('and', this.newFilter('groupIds', Operator.isNotNull, '1'), this.newFilter('groupIds', Operator.notEqual, ''))));
|
|
47508
|
-
});
|
|
47509
|
-
}
|
|
47510
|
-
beforeRenderDataSource(dataSource) {
|
|
47511
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47512
|
-
const userId = this._userService.getId();
|
|
47513
|
-
dataSource.forEach(item => {
|
|
47514
|
-
item.__disableEdit = item.type != EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
47515
|
-
item.__disableDelete = item.type != EnumPermissionType.SHARE || item.userIdCreated != userId;
|
|
47516
|
-
if (!item.permission)
|
|
47517
|
-
return;
|
|
47518
|
-
let strPermission = '';
|
|
47519
|
-
if ((item.permission & PermissionBase.READ) == PermissionBase.READ)
|
|
47520
|
-
strPermission += 'xem, ';
|
|
47521
|
-
if ((item.permission & PermissionBase.EDIT) == PermissionBase.EDIT)
|
|
47522
|
-
strPermission += 'sửa, ';
|
|
47523
|
-
if ((item.permission & PermissionBase.DELETE) == PermissionBase.DELETE)
|
|
47524
|
-
strPermission += 'xóa, ';
|
|
47525
|
-
if (strPermission.length) {
|
|
47526
|
-
strPermission = strPermission.charAt(0).toUpperCase() + strPermission.substring(1, strPermission.length - 2);
|
|
47527
|
-
}
|
|
47528
|
-
item.permissions = strPermission;
|
|
47529
|
-
});
|
|
47530
|
-
});
|
|
47531
|
-
}
|
|
47532
|
-
handleDelete(rowData) {
|
|
47533
|
-
this._notifierService.showConfirm('Bạn có chắc chắn muốn xóa phân quyền')
|
|
47534
|
-
.then(res => {
|
|
47535
|
-
if (!res)
|
|
47536
|
-
return;
|
|
47537
|
-
this._workflowPermissionService.deletePermission(rowData.id)
|
|
47538
|
-
.then(res => this.handleResponse(res, '', f => {
|
|
47539
|
-
this._triggerProcessData();
|
|
47540
|
-
}));
|
|
47541
|
-
});
|
|
47542
|
-
}
|
|
47543
|
-
}
|
|
47544
|
-
WorkflowPermissionComponent.decorators = [
|
|
47545
|
-
{ type: Component, args: [{
|
|
47546
|
-
selector: 'workflow-permission',
|
|
47547
|
-
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>",
|
|
47548
|
-
styles: [""]
|
|
47549
|
-
},] }
|
|
47550
|
-
];
|
|
47551
|
-
WorkflowPermissionComponent.ctorParameters = () => [
|
|
47552
|
-
{ type: Injector },
|
|
47553
|
-
{ type: WorkflowPermissionService },
|
|
47554
|
-
{ type: CoCauToChucService },
|
|
47555
|
-
{ type: UserGroupRealService }
|
|
47556
|
-
];
|
|
47557
|
-
WorkflowPermissionComponent.propDecorators = {
|
|
47558
|
-
businessSetting: [{ type: Input }],
|
|
47559
|
-
item: [{ type: Input }]
|
|
47560
|
-
};
|
|
47561
|
-
|
|
47562
|
-
class WorkflowPermissionFormComponent extends DataFormBase {
|
|
47563
|
-
constructor(_injector, _workflowPermissionService, _workflowPermissionDetailService, _userGroupService) {
|
|
47564
|
-
super(_injector);
|
|
47565
|
-
this._injector = _injector;
|
|
47566
|
-
this._workflowPermissionService = _workflowPermissionService;
|
|
47567
|
-
this._workflowPermissionDetailService = _workflowPermissionDetailService;
|
|
47568
|
-
this._userGroupService = _userGroupService;
|
|
47569
|
-
}
|
|
47570
|
-
ngOnInit() {
|
|
47571
|
-
super.ngOnInit();
|
|
47572
|
-
this.setting.baseService = this._workflowPermissionService;
|
|
47573
|
-
this._workflowPermissionService.changeEndpoint(this.businessSetting.baseService);
|
|
47574
|
-
const dataSourcePermission = DataSourcePermissionBase.map(q => (Object.assign(Object.assign({}, q), { disabled: true })));
|
|
47575
|
-
this.setting.schema = [
|
|
47576
|
-
this._createUserPickerControl('userIds', 'Người dùng'),
|
|
47577
|
-
this._createCoCauToChucControl('donViIds', 'Đơn vị'),
|
|
47578
|
-
this._createUserGroupPickerControl('groupIds', 'Nhóm người dùng'),
|
|
47579
|
-
new CheckBoxListControlSchema({
|
|
47580
|
-
field: 'lstPermission',
|
|
47581
|
-
label: 'Quyền khả dụng',
|
|
47582
|
-
dataSource: dataSourcePermission
|
|
47583
|
-
})
|
|
47584
|
-
];
|
|
47585
|
-
}
|
|
47586
|
-
_createUserPickerControl(field, label, multiple = true) {
|
|
47587
|
-
const control = createUserPickerControl(field, label);
|
|
47588
|
-
control.multiple = multiple;
|
|
47589
|
-
return control;
|
|
47590
|
-
}
|
|
47591
|
-
_createCoCauToChucControl(field, label) {
|
|
47592
|
-
return createOrgPickerControl(field, label);
|
|
47593
|
-
}
|
|
47594
|
-
_createUserGroupPickerControl(field, label) {
|
|
47595
|
-
return createUserGroupPickerControl(this._userGroupService, field, label);
|
|
47596
|
-
}
|
|
47597
|
-
onFormInitialized(constrols) {
|
|
47598
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47599
|
-
// tiền xử lý dữ liệu (ví dụ tổng hợp datasource), trước khi gọi api get detail
|
|
47600
|
-
yield this.getItemPermissionCurrent();
|
|
47601
|
-
});
|
|
47602
|
-
}
|
|
47603
|
-
getItemPermissionCurrent() {
|
|
47604
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47605
|
-
const itemPermission = (yield this._workflowPermissionDetailService.changeEndpoint(this.businessSetting.baseService)
|
|
47606
|
-
.getDetailByFilter([
|
|
47607
|
-
this.newFilter('itemId', Operator.equal, this.itemId),
|
|
47608
|
-
this.newFilter('userId', Operator.equal, this._userService.getId())
|
|
47609
|
-
])).data;
|
|
47610
|
-
if (itemPermission) {
|
|
47611
|
-
this.formControls['lstPermission'].dataSource.forEach(item => {
|
|
47612
|
-
if ((itemPermission.permission & item.id) == item.id) {
|
|
47613
|
-
item.disabled = false;
|
|
47614
|
-
}
|
|
47615
|
-
});
|
|
47616
|
-
}
|
|
47617
|
-
});
|
|
47618
|
-
}
|
|
47619
|
-
modifyDetailData(data) {
|
|
47620
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47621
|
-
// xử lý dữ liệu lấy từ get detail về
|
|
47622
|
-
if (data.userIds) {
|
|
47623
|
-
data.userIds = data.userIds.split(',');
|
|
47624
|
-
}
|
|
47625
|
-
if (data.donViIds) {
|
|
47626
|
-
data.donViIds = data.donViIds.split(',');
|
|
47627
|
-
}
|
|
47628
|
-
if (data.groupIds) {
|
|
47629
|
-
data.groupIds = data.groupIds.split(',');
|
|
47630
|
-
}
|
|
47631
|
-
data.lstPermission = [];
|
|
47632
|
-
if (data.permission) {
|
|
47633
|
-
if ((data.permission & PermissionBase.READ)) {
|
|
47634
|
-
data.lstPermission.push(PermissionBase.READ);
|
|
47635
|
-
}
|
|
47636
|
-
if ((data.permission & PermissionBase.EDIT)) {
|
|
47637
|
-
data.lstPermission.push(PermissionBase.EDIT);
|
|
47638
|
-
}
|
|
47639
|
-
if ((data.permission & PermissionBase.DELETE)) {
|
|
47640
|
-
data.lstPermission.push(PermissionBase.DELETE);
|
|
47641
|
-
}
|
|
47642
|
-
}
|
|
47643
|
-
});
|
|
47644
|
-
}
|
|
47645
|
-
validateForm() {
|
|
47646
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47647
|
-
const itemMissings = [];
|
|
47648
|
-
if (!this.isNotNullArray(this.model.data.userIds)
|
|
47649
|
-
&& !this.isNotNullArray(this.model.data.donViIds)
|
|
47650
|
-
&& !this.isNotNullArray(this.model.data.groupIds)) {
|
|
47651
|
-
itemMissings.push('người muốn phân quyền');
|
|
47652
|
-
}
|
|
47653
|
-
if (!this.isNotNullArray(this.model.data.lstPermission)) {
|
|
47654
|
-
itemMissings.push('quyền muốn phân');
|
|
47655
|
-
}
|
|
47656
|
-
if (itemMissings.length) {
|
|
47657
|
-
this._notifierService.showWarning(`Bạn phải nhập ${itemMissings.join(', ')}`);
|
|
47658
|
-
return false;
|
|
47659
|
-
}
|
|
47660
|
-
return true;
|
|
47661
|
-
});
|
|
47662
|
-
}
|
|
47663
|
-
onBeforeSave() {
|
|
47664
|
-
this.model.data.tableName = this.businessSetting.baseService.entityName;
|
|
47665
|
-
this.model.data.workflowCode = DummyWorkflowCode;
|
|
47666
|
-
this.model.data.itemId = this.itemId;
|
|
47667
|
-
if (this.model.data.userIds) {
|
|
47668
|
-
this.model.data.userIds = this.model.data.userIds.toString();
|
|
47669
|
-
}
|
|
47670
|
-
if (this.model.data.donViIds) {
|
|
47671
|
-
this.model.data.donViIds = this.model.data.donViIds.toString();
|
|
47672
|
-
}
|
|
47673
|
-
if (this.model.data.groupIds) {
|
|
47674
|
-
this.model.data.groupIds = this.model.data.groupIds.toString();
|
|
47675
|
-
}
|
|
47676
|
-
if (this.model.data.lstPermission) {
|
|
47677
|
-
let permission = 0;
|
|
47678
|
-
if (this.model.data.lstPermission & PermissionBase.READ) {
|
|
47679
|
-
permission = permission | PermissionBase.READ;
|
|
47680
|
-
}
|
|
47681
|
-
if (this.model.data.lstPermission & PermissionBase.EDIT) {
|
|
47682
|
-
permission = permission | PermissionBase.EDIT;
|
|
47683
|
-
}
|
|
47684
|
-
if (this.model.data.lstPermission & PermissionBase.DELETE) {
|
|
47685
|
-
permission = permission | PermissionBase.DELETE;
|
|
47686
|
-
}
|
|
47687
|
-
this.model.data.permission = permission;
|
|
47688
|
-
}
|
|
47689
|
-
}
|
|
47690
|
-
getPromiseActionInsert() {
|
|
47691
|
-
return this._workflowPermissionService.insertPermission(this.model.data);
|
|
47692
|
-
}
|
|
47693
|
-
getPromiseActionUpdate() {
|
|
47694
|
-
return this._workflowPermissionService.updatePermission(this.model.data);
|
|
47695
|
-
}
|
|
47696
|
-
}
|
|
47697
|
-
WorkflowPermissionFormComponent.decorators = [
|
|
47698
|
-
{ type: Component, args: [{
|
|
47699
|
-
selector: 'workflow-permission-form',
|
|
47700
|
-
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",
|
|
47701
|
-
providers: [ComponentContextService],
|
|
47702
|
-
styles: [""]
|
|
47703
|
-
},] }
|
|
47704
|
-
];
|
|
47705
|
-
WorkflowPermissionFormComponent.ctorParameters = () => [
|
|
47706
|
-
{ type: Injector },
|
|
47707
|
-
{ type: WorkflowPermissionService },
|
|
47708
|
-
{ type: WorkflowPermissionDetailService },
|
|
47709
|
-
{ type: UserGroupRealService }
|
|
47710
|
-
];
|
|
47711
|
-
WorkflowPermissionFormComponent.propDecorators = {
|
|
47712
|
-
businessSetting: [{ type: Input }],
|
|
47713
|
-
itemId: [{ type: Input }]
|
|
47714
|
-
};
|
|
47715
|
-
|
|
47716
|
-
class AppTopBarV2Component extends ComponentBase {
|
|
47717
|
-
constructor(
|
|
47718
|
-
// public app: AppComponent,
|
|
47719
|
-
_customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _translateService) {
|
|
47720
|
-
super(_injector);
|
|
47721
|
-
this._customRouteService = _customRouteService;
|
|
47722
|
-
this._router = _router;
|
|
47723
|
-
this._commonService = _commonService;
|
|
47724
|
-
this._authenService = _authenService;
|
|
47725
|
-
this._cd = _cd;
|
|
47726
|
-
this._permissionService = _permissionService;
|
|
47727
|
-
this._moduleConfigService = _moduleConfigService;
|
|
47728
|
-
this._userService = _userService;
|
|
47729
|
-
this._notifierService = _notifierService;
|
|
47730
|
-
this._translateService = _translateService;
|
|
47731
|
-
this.defaultAvatar = '';
|
|
47732
|
-
this.key = '';
|
|
47733
|
-
this.currentRoute = '';
|
|
47734
|
-
this.fileApi = '';
|
|
47735
|
-
this.currentUser = null;
|
|
47736
|
-
this.appSwitcherItems = [];
|
|
47737
|
-
this.isFirstTime = false;
|
|
47738
|
-
this.showSettings = false;
|
|
47739
|
-
this.allSubscriptions = [];
|
|
47740
|
-
this.message = '';
|
|
47741
|
-
this.environment = this._moduleConfigService.getConfig().environment;
|
|
47742
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
47743
|
-
this.fileApi = this.environment.apiDomain.fileEndpoint;
|
|
47744
|
-
if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
|
|
47745
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
|
|
47746
|
-
}
|
|
47747
|
-
else {
|
|
47748
|
-
if (this.environment.appMetadata.main.showDefaultSetting != null && this.environment.appMetadata.main.showDefaultSetting != undefined) {
|
|
47749
|
-
this.showDefaultSetting = this.environment.appMetadata.main.showDefaultSetting;
|
|
47750
|
-
}
|
|
47751
|
-
else {
|
|
47752
|
-
this.showDefaultSetting = false;
|
|
47753
|
-
}
|
|
47754
|
-
}
|
|
47755
|
-
if (!this.rootContext.data.currentUser) {
|
|
47756
|
-
this.rootContext.data.currentUser = {};
|
|
47757
|
-
}
|
|
47758
|
-
// this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
|
|
47759
|
-
// this._cd.detectChanges();
|
|
47760
|
-
// }));
|
|
47761
|
-
this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
|
|
47762
|
-
this.currentUser = this._userService.getCurrentUser();
|
|
47763
|
-
this.loadMenuMetadata();
|
|
47764
|
-
});
|
|
47765
|
-
if (this.rootModel.allowAnonymous) {
|
|
47766
|
-
this.loadMenuMetadata();
|
|
47767
|
-
}
|
|
47768
|
-
}
|
|
47769
|
-
loadMenuMetadata() {
|
|
47770
|
-
const prmsAppSwicherItem = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
47771
|
-
const arr = [];
|
|
47772
|
-
for (const ind in this.environment.appMetadata.appSwitcher) {
|
|
47773
|
-
const element = this.environment.appMetadata.appSwitcher[ind];
|
|
47774
|
-
const clientId = this.environment.authenticationSettings.clientId;
|
|
47775
|
-
if (this.rootContext.data.allowAnonymous && element.allowAnonymous) {
|
|
47776
|
-
arr.push(element);
|
|
47777
|
-
}
|
|
47778
|
-
else {
|
|
47779
|
-
if (this.currentUser) {
|
|
47780
|
-
const isAuthorized = yield this._permissionService.isAuthorized(element.code, `${element.code}.MODULE.${element.code}`.toUpperCase(), true);
|
|
47781
|
-
if (isAuthorized) {
|
|
47782
|
-
arr.push(element);
|
|
47783
|
-
}
|
|
47784
|
-
}
|
|
47785
|
-
}
|
|
47786
|
-
}
|
|
47787
|
-
resolve(arr);
|
|
47788
|
-
}));
|
|
47789
|
-
prmsAppSwicherItem.then(rs => {
|
|
47790
|
-
if (rs) {
|
|
47791
|
-
const currentUser = this._userService.getCurrentUser();
|
|
47792
|
-
this.appSwitcherItems.length = 0;
|
|
47793
|
-
rs.forEach(element => {
|
|
47794
|
-
if (element.visible) {
|
|
47795
|
-
if (element.allowAnonymous) {
|
|
47796
|
-
this.appSwitcherItems.push(element);
|
|
47797
|
-
}
|
|
47798
|
-
else {
|
|
47799
|
-
if (currentUser.maNguoiHoc && currentUser.issuperuser && currentUser.issuperuser.toLowerCase() != 'true') {
|
|
47800
|
-
if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
|
|
47801
|
-
this.appSwitcherItems.push(element);
|
|
47802
|
-
}
|
|
47803
|
-
}
|
|
47804
|
-
else {
|
|
47805
|
-
this.appSwitcherItems.push(element);
|
|
47806
|
-
}
|
|
47807
|
-
}
|
|
47808
|
-
}
|
|
47809
|
-
});
|
|
47810
|
-
}
|
|
47811
|
-
});
|
|
47812
|
-
}
|
|
47813
|
-
ngOnInit() {
|
|
47814
|
-
if (this.rootContext.data.currentUser) {
|
|
47815
|
-
if (this.rootContext.data.currentUser.gender == 0) {
|
|
47816
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
|
|
47817
|
-
}
|
|
47818
|
-
else {
|
|
47819
|
-
this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
|
|
47820
|
-
}
|
|
47821
|
-
this.userProfile = this._userService.getProfileInfo();
|
|
47822
|
-
}
|
|
47823
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, (e) => {
|
|
47824
|
-
setTimeout(() => {
|
|
47825
|
-
this.hideAdvanceSearch(e);
|
|
47826
|
-
});
|
|
47827
|
-
});
|
|
47828
|
-
this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, (e) => {
|
|
47829
|
-
this.focusToSearchBox();
|
|
47830
|
-
});
|
|
47831
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, (e) => {
|
|
47832
|
-
this.showNotificationReload();
|
|
47833
|
-
});
|
|
47834
|
-
this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, (e) => {
|
|
47835
|
-
this.setNotify(e.message);
|
|
47836
|
-
});
|
|
47837
|
-
this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, e => {
|
|
47838
|
-
this.model.dataModelSetting.showSettings = true;
|
|
47839
|
-
}));
|
|
47840
|
-
this.model.dataModelSetting = {
|
|
47841
|
-
data: {},
|
|
47842
|
-
showSettings: false
|
|
47843
|
-
};
|
|
47844
|
-
this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, data => {
|
|
47845
|
-
this.formatDefaultDataSetting(data);
|
|
47846
|
-
this.reloadWindow();
|
|
47847
|
-
});
|
|
47848
|
-
const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
|
|
47849
|
-
if (stringDataDefault) {
|
|
47850
|
-
const dataCacheDefault = JSON.parse(stringDataDefault);
|
|
47851
|
-
this.formatDefaultDataSetting(dataCacheDefault);
|
|
47852
|
-
}
|
|
47853
|
-
else {
|
|
47854
|
-
this.defaultDataSetting = 'Thiết lập tham số mặc định';
|
|
47855
|
-
}
|
|
47856
|
-
}
|
|
47857
|
-
ngOnDestroy() {
|
|
47858
|
-
this.allSubscriptions.forEach(element => {
|
|
47859
|
-
element.unsubscribe();
|
|
47860
|
-
});
|
|
47861
|
-
if (this.intervalCountdown) {
|
|
47862
|
-
clearInterval(this.intervalCountdown);
|
|
47863
|
-
}
|
|
47864
|
-
super.ngOnDestroy();
|
|
47865
|
-
}
|
|
47866
|
-
formatDefaultDataSetting(data) {
|
|
47867
|
-
let dataSetting = '';
|
|
47868
|
-
const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
|
|
47869
|
-
const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
|
|
47870
|
-
fields.forEach((field, index) => {
|
|
47871
|
-
if (!this.checkHidden(field)) {
|
|
47872
|
-
const _f = `${field}${fieldPluses[index]}`;
|
|
47873
|
-
if (data[_f]) {
|
|
47874
|
-
dataSetting += data[_f] + '/';
|
|
47875
|
-
}
|
|
47876
|
-
}
|
|
47877
|
-
});
|
|
47878
|
-
if (dataSetting.length > 0) {
|
|
47879
|
-
dataSetting = dataSetting.substring(0, dataSetting.length - 1);
|
|
47880
|
-
}
|
|
47881
|
-
this.defaultDataSetting = dataSetting;
|
|
47882
|
-
}
|
|
47883
|
-
checkHidden(field) {
|
|
47884
|
-
return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
|
|
47885
|
-
}
|
|
47886
|
-
getCurrentUserFullName() {
|
|
47887
|
-
return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
|
|
47888
|
-
}
|
|
47889
|
-
getCurrentUserPosition() {
|
|
47890
|
-
return this.userProfile ? this.userProfile.tenDonVi : null;
|
|
47891
|
-
}
|
|
47892
|
-
getCurrentUserAvatar() {
|
|
47893
|
-
if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
|
|
47894
|
-
return `${this.fileApi}/file/public/${this.rootContext.data.currentUser.avatar}/Download`;
|
|
47895
|
-
}
|
|
47896
|
-
else {
|
|
47897
|
-
return this.defaultAvatar;
|
|
47898
|
-
}
|
|
47899
|
-
}
|
|
47900
|
-
clearFilter(input) {
|
|
47901
|
-
setTimeout(() => {
|
|
47902
|
-
this.model.searchModel[this.model.fieldKey] = '';
|
|
47903
|
-
this._customRouteService.updateFragment(this.model.fieldKey, null);
|
|
47904
|
-
this._customRouteService.updateWithoutFireEvent();
|
|
47905
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
47906
|
-
input.value = '';
|
|
47907
|
-
input.focus();
|
|
47908
|
-
this._cd.detectChanges();
|
|
47909
|
-
});
|
|
47910
|
-
}
|
|
47911
|
-
toggleAdvanceSearch(evt) {
|
|
47912
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
|
|
47913
|
-
evt.preventDefault();
|
|
47914
|
-
evt.cancelBubble = true;
|
|
47915
|
-
}
|
|
47916
|
-
hideAdvanceSearch(evt) {
|
|
47917
|
-
if (document.getElementById('advance-search-box')) {
|
|
47918
|
-
const mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
|
|
47919
|
-
if (!mask.length) {
|
|
47920
|
-
const closestDropdown = evt.target.closest('.dropdown-advs');
|
|
47921
|
-
if (closestDropdown == null || closestDropdown.length == 0) {
|
|
47922
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
|
|
47923
|
-
}
|
|
47924
|
-
}
|
|
47925
|
-
}
|
|
47926
|
-
}
|
|
47927
|
-
focusToSearchBox() {
|
|
47928
|
-
if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
|
|
47929
|
-
this.input.nativeElement.focus();
|
|
47930
|
-
}
|
|
47931
|
-
}
|
|
47932
|
-
onTopbarSearchClick(event, input) {
|
|
47933
|
-
if (!this.model.fieldKey) {
|
|
47934
|
-
return;
|
|
47935
|
-
}
|
|
47936
|
-
setTimeout(() => {
|
|
47937
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, this.model.searchModel);
|
|
47938
|
-
this._customRouteService.updateFragment(this.model.fieldKey, input.value);
|
|
47939
|
-
this._customRouteService.updateWithoutFireEvent();
|
|
47940
|
-
input.focus();
|
|
47941
|
-
});
|
|
47942
|
-
}
|
|
47943
|
-
onEsc(event, input) {
|
|
47944
|
-
this.clearFilter(input);
|
|
47945
|
-
}
|
|
47946
|
-
onEnter(event, input) {
|
|
47947
|
-
this.onTopbarSearchClick(event, input);
|
|
47948
|
-
}
|
|
47949
|
-
switchApp(item, openNewTab = false) {
|
|
47950
|
-
if (item.target == '_blank') {
|
|
47951
|
-
if (!item.defaultRedirect) {
|
|
47952
|
-
item.defaultRedirect = '';
|
|
47953
|
-
}
|
|
47954
|
-
// NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
|
|
47955
|
-
if (item.url == item.defaultRedirect) {
|
|
47956
|
-
item.url = '/' + item.code.toLowerCase();
|
|
47957
|
-
}
|
|
47958
|
-
if (!openNewTab) {
|
|
47959
|
-
top.location.href = `${item.url}/${item.defaultRedirect}`;
|
|
47960
|
-
}
|
|
47961
|
-
else {
|
|
47962
|
-
window.open(`${item.url}/${item.defaultRedirect}`, '_blank');
|
|
47963
|
-
}
|
|
47964
|
-
}
|
|
47965
|
-
else {
|
|
47966
|
-
if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
|
|
47967
|
-
this._router.navigateByUrl(item.defaultRedirect);
|
|
47968
|
-
this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(x => x.code == item.code);
|
|
47969
|
-
if (this.rootContext.data.currentAppMetadata
|
|
47970
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
|
|
47971
|
-
&& this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
|
|
47972
|
-
this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
|
|
47973
|
-
}
|
|
47974
|
-
}
|
|
47975
|
-
}
|
|
47976
|
-
}
|
|
47977
|
-
hasAdvanceSearchBox() {
|
|
47978
|
-
return this.model.searchModel.hasAdvanceSearch;
|
|
47979
|
-
}
|
|
47980
|
-
isAdvanceSearching() {
|
|
47981
|
-
return this.hasAdvanceSearchValue(this.model.searchModel);
|
|
47982
|
-
}
|
|
47983
|
-
hasAdvanceSearchValue(obj) {
|
|
47984
|
-
for (const key in obj) {
|
|
47985
|
-
if (key === '_k' || key === 'hasAdvanceSearch') {
|
|
47986
|
-
continue;
|
|
47987
|
-
}
|
|
47988
|
-
if (obj[key] != null && obj[key] != '') {
|
|
47989
|
-
return false;
|
|
47990
|
-
}
|
|
47991
|
-
}
|
|
47992
|
-
return true;
|
|
47993
|
-
}
|
|
47994
|
-
getComponentId() {
|
|
47995
|
-
return 'TOPBAR';
|
|
47996
|
-
}
|
|
47997
|
-
goToHome() {
|
|
47998
|
-
this.rootContext.fireEvent('GO_HOME');
|
|
47999
|
-
}
|
|
48000
|
-
onEditInfo(event) {
|
|
48001
|
-
event.preventDefault();
|
|
48002
|
-
const currentAppSetting = this.environment.appMetadata.appSwitcher.find(x => x.code == 'USER');
|
|
48003
|
-
if (currentAppSetting) {
|
|
48004
|
-
this.switchApp(currentAppSetting);
|
|
48005
|
-
}
|
|
48006
|
-
else {
|
|
48007
|
-
console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
|
|
48008
|
-
}
|
|
48009
|
-
}
|
|
48010
|
-
onChangePassword(event) {
|
|
48011
|
-
event.preventDefault();
|
|
48012
|
-
// this.changePassword.showPopup(this._userService.getId());
|
|
48013
|
-
}
|
|
48014
|
-
onTopbarLogout() {
|
|
48015
|
-
if (!localStorage.getItem('currentUrl')) {
|
|
48016
|
-
localStorage.setItem('currentUrl', top.location.href);
|
|
48017
|
-
}
|
|
48018
|
-
this._authenService.logout();
|
|
48019
|
-
}
|
|
48020
|
-
settingDefault() {
|
|
48021
|
-
this.model.dataModelSetting = {
|
|
48022
|
-
data: {},
|
|
48023
|
-
showSettings: true
|
|
48024
|
-
};
|
|
48025
|
-
}
|
|
48026
|
-
onShowSettings(ev) {
|
|
48027
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
|
|
48028
|
-
}
|
|
48029
|
-
onCloseSettings(ev) {
|
|
48030
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
|
|
48031
|
-
}
|
|
48032
|
-
showProfilePage() {
|
|
48033
|
-
if (this._userService.isSinhVienAccount()) {
|
|
48034
|
-
return false;
|
|
48035
|
-
}
|
|
48036
|
-
return true;
|
|
48037
|
-
}
|
|
48038
|
-
login() {
|
|
48039
|
-
this.rootContext.fireEvent('LOGIN');
|
|
48040
|
-
}
|
|
48041
|
-
setNotify(message) {
|
|
48042
|
-
this.message = message;
|
|
48043
|
-
}
|
|
48044
|
-
handleMouseOver(evt) {
|
|
48045
|
-
evt.target.stop();
|
|
48046
|
-
}
|
|
48047
|
-
handleMouseOut(evt) {
|
|
48048
|
-
evt.target.start();
|
|
48049
|
-
}
|
|
48050
|
-
showNotificationReload() {
|
|
48051
|
-
this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
|
|
48052
|
-
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
|
|
48053
|
-
this._notifierService.showConfirm(this.message).then(res => {
|
|
48054
|
-
this.reloadWindow();
|
|
48055
|
-
});
|
|
48056
|
-
// if (this.intervalCountdown) {
|
|
48057
|
-
// clearInterval(this.intervalCountdown);
|
|
48058
|
-
// }
|
|
48059
|
-
// const date = new Date();
|
|
48060
|
-
// const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
|
|
48061
|
-
// this.intervalCountdown = setInterval(f => {
|
|
48062
|
-
// const now = new Date().getTime();
|
|
48063
|
-
// const distance = goalDate - now;
|
|
48064
|
-
// var seconds = Math.floor(distance / 1000);
|
|
48065
|
-
// // If the count down is finished, write some text
|
|
48066
|
-
// if (distance < 0) {
|
|
48067
|
-
// clearInterval(this.intervalCountdown);
|
|
48068
|
-
// this.reloadWindow();
|
|
48069
|
-
// return;
|
|
48070
|
-
// }
|
|
48071
|
-
// let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
|
|
48072
|
-
// if (seconds < 1) {
|
|
48073
|
-
// message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
|
|
48074
|
-
// }
|
|
48075
|
-
// this._notifierService.showConfirm(
|
|
48076
|
-
// message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
|
|
48077
|
-
// 'pi pi-check'
|
|
48078
|
-
// ).then(res => {
|
|
48079
|
-
// clearInterval(this.intervalCountdown);
|
|
48080
|
-
// this.reloadWindow();
|
|
48081
|
-
// });
|
|
48082
|
-
// }, 1000);
|
|
48083
|
-
}
|
|
48084
|
-
reloadWindow() {
|
|
48085
|
-
top.location.reload();
|
|
48086
|
-
}
|
|
48087
|
-
}
|
|
48088
|
-
AppTopBarV2Component.decorators = [
|
|
48089
|
-
{ type: Component, args: [{
|
|
48090
|
-
selector: 'app-topbar-v2',
|
|
48091
|
-
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>",
|
|
48092
|
-
providers: [ComponentContextService],
|
|
48093
|
-
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}}"]
|
|
48094
|
-
},] }
|
|
48095
|
-
];
|
|
48096
|
-
AppTopBarV2Component.ctorParameters = () => [
|
|
48097
|
-
{ type: CustomRouterService },
|
|
48098
|
-
{ type: Router },
|
|
48099
|
-
{ type: CommonService },
|
|
48100
|
-
{ type: AuthenService },
|
|
48101
|
-
{ type: ChangeDetectorRef },
|
|
48102
|
-
{ type: Injector },
|
|
48103
|
-
{ type: PermissionService },
|
|
48104
|
-
{ type: ModuleConfigService },
|
|
48105
|
-
{ type: UserService },
|
|
48106
|
-
{ type: NotifierService },
|
|
48107
|
-
{ type: TranslateService }
|
|
48108
|
-
];
|
|
48109
|
-
AppTopBarV2Component.propDecorators = {
|
|
48110
|
-
input: [{ type: ViewChild, args: ['input',] }],
|
|
48111
|
-
notify: [{ type: ViewChild, args: ['notify', { static: true },] }]
|
|
48112
|
-
};
|
|
48113
|
-
|
|
48114
48137
|
function coreDeclaration() {
|
|
48115
48138
|
return [
|
|
48116
48139
|
AddressComponent,
|
|
@@ -48273,7 +48296,7 @@ function coreDeclaration() {
|
|
|
48273
48296
|
FileKySoSimComponent,
|
|
48274
48297
|
TaiLieuComponent,
|
|
48275
48298
|
TaiLieuCuaToiComponent,
|
|
48276
|
-
KhaiThacTaiLieuDungChungComponent
|
|
48299
|
+
KhaiThacTaiLieuDungChungComponent,
|
|
48277
48300
|
];
|
|
48278
48301
|
}
|
|
48279
48302
|
function coreModuleImport() {
|
|
@@ -49380,6 +49403,43 @@ TraceInterceptor.ctorParameters = () => [
|
|
|
49380
49403
|
{ type: CommonService }
|
|
49381
49404
|
];
|
|
49382
49405
|
|
|
49406
|
+
class AnonymousTokenInterceptor {
|
|
49407
|
+
constructor(_moduleConfigService, _applicationContextService) {
|
|
49408
|
+
this._moduleConfigService = _moduleConfigService;
|
|
49409
|
+
this._applicationContextService = _applicationContextService;
|
|
49410
|
+
this.env = this._moduleConfigService.getConfig().environment;
|
|
49411
|
+
}
|
|
49412
|
+
intercept(request, next) {
|
|
49413
|
+
// 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
|
|
49414
|
+
try {
|
|
49415
|
+
this.appMetadata = this._applicationContextService.getRootContext().data.currentAppMetadata;
|
|
49416
|
+
if (this.appMetadata && this.appMetadata.enableTemporaryAccessToken) {
|
|
49417
|
+
console.log(`using temporary accesstoken from config: ${this.appMetadata.temporaryAccessToken}`);
|
|
49418
|
+
request = request.clone({
|
|
49419
|
+
setHeaders: {
|
|
49420
|
+
Authorization: `Bearer ${this.appMetadata.temporaryAccessToken}`,
|
|
49421
|
+
PortalAlias: location.origin
|
|
49422
|
+
}
|
|
49423
|
+
});
|
|
49424
|
+
}
|
|
49425
|
+
}
|
|
49426
|
+
catch (e) {
|
|
49427
|
+
console.error(`error on AnonymousTokenInterceptor ${e}`);
|
|
49428
|
+
}
|
|
49429
|
+
return next.handle(request);
|
|
49430
|
+
}
|
|
49431
|
+
}
|
|
49432
|
+
AnonymousTokenInterceptor.ɵprov = ɵɵdefineInjectable({ factory: function AnonymousTokenInterceptor_Factory() { return new AnonymousTokenInterceptor(ɵɵinject(ModuleConfigService), ɵɵinject(ApplicationContextService)); }, token: AnonymousTokenInterceptor, providedIn: "root" });
|
|
49433
|
+
AnonymousTokenInterceptor.decorators = [
|
|
49434
|
+
{ type: Injectable, args: [{
|
|
49435
|
+
providedIn: 'root'
|
|
49436
|
+
},] }
|
|
49437
|
+
];
|
|
49438
|
+
AnonymousTokenInterceptor.ctorParameters = () => [
|
|
49439
|
+
{ type: ModuleConfigService },
|
|
49440
|
+
{ type: ApplicationContextService }
|
|
49441
|
+
];
|
|
49442
|
+
|
|
49383
49443
|
class PublicFunction {
|
|
49384
49444
|
static initRoute(routes) {
|
|
49385
49445
|
return [
|
|
@@ -49478,6 +49538,11 @@ class PublicFunction {
|
|
|
49478
49538
|
useClass: TraceInterceptor,
|
|
49479
49539
|
multi: true,
|
|
49480
49540
|
},
|
|
49541
|
+
{
|
|
49542
|
+
provide: HTTP_INTERCEPTORS,
|
|
49543
|
+
useClass: AnonymousTokenInterceptor,
|
|
49544
|
+
multi: true,
|
|
49545
|
+
},
|
|
49481
49546
|
MessageService,
|
|
49482
49547
|
ConfirmationService,
|
|
49483
49548
|
DatePipe,
|
|
@@ -50766,5 +50831,5 @@ DynamicComponentService.ctorParameters = () => [
|
|
|
50766
50831
|
* Generated bundle index. Do not edit.
|
|
50767
50832
|
*/
|
|
50768
50833
|
|
|
50769
|
-
export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase, EnumPermissionType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, CongviecDinhkemService as ɵba, BaseCongviecDinhkemFormComponent as ɵbb, DatetimePickerComponent as ɵbc, DatetimePickerRangeComponent as ɵbd, DynamicNodeComponent as ɵbe, EntityPickerBoxComponent as ɵbf, EntityPickerDataComponent as ɵbg, EntityPickerSelectedComponent as ɵbh, EntityPickerComponent as ɵbi, EntityPickerDialogComponent as ɵbj, EntityPermissionComponent as ɵbk, DM_ChucVuService as ɵbl, RoleService as ɵbm, EntityPermissionService as ɵbn, EquationEditorComponent as ɵbo, MaskComponent as ɵbp, NumberPickerRangeComponent as ɵbq, PagingNextBackOnlyComponent as ɵbr, RadioButtonListComponent as ɵbs, VanBanPickerComponent as ɵbt, VanBanDenService as ɵbu, VanBanDiService as ɵbv, VanBanPickerDialogComponent as ɵbw, VanbanDiPickerComponent as ɵbx, VanbanDenPickerComponent as ɵby, CongViecPickerComponent as ɵbz, EntityPickerService as ɵc, CongViecService$1 as ɵca, TaskWorkflowHistoriesService as ɵcb, SettingsComponent as ɵcc, SettingsRowComponent as ɵcd, SettingsWorkflowComponent as ɵce, SettingsWorkflowNo1Component as ɵcf, SimpleWorkflowFormComponent as ɵcg, ProcessWorkflowTargetComponent as ɵch, DmChucVuService as ɵci, ChoYKienFormComponent as ɵcj, SplashComponentV1Component as ɵck, SplashComponentV2Component as ɵcl, StateMachinesConnectionReceiverComponent as ɵcm, StateMachinesConnectionReceiverConditionComponent as ɵcn, WorkflowSettingsService as ɵco, StateMachinesConnectionReceiverDepartmentComponent as ɵcp, StateMachinesConnectionReceiverGroupComponent as ɵcq, StateMachinesConnectionReceiverUserComponent as ɵcr, StateMachinesConnectionReceiverRoleComponent as ɵcs, StateMachinesConnectionSenderComponent as ɵct, StartWorkflowComponent as ɵcu, ShareLinkByPermissionComponent as ɵcv, WorkflowSettingNewComponent as ɵcw, PermissionSharingComponent as ɵcx, WorkflowPermissionService as ɵcy, TnDialogComponent as ɵcz, ExceptionHandlerService as ɵd, TnColorPickerComponent as ɵda, TnTinymceComponent as ɵdb, TnTabViewComponent as ɵdc, TableDetailFormComponent as ɵdd, FileIconPipe as ɵde, FileSizePipe as ɵdf, QuickAddFormComponent as ɵdg, PreventShiftTabDirective as ɵdh, TnTemplateDirective as ɵdi, UserPickerComponent as ɵdj, UserPickerBoxComponent as ɵdk, CoCauToChucTestService as ɵdl, TnAppHelpComponent as ɵdm, PathNameService as ɵdn, HelperCurrentPageComponent as ɵdo, TnAppNotificationListComponent as ɵdp, TnAppNotificationComponent as ɵdq, MyDriveService as ɵdr, FileVersionService as ɵds, FileExplorerNewService as ɵdt, FileManagerService as ɵdu, FolderFormComponent as ɵdv, FileFormComponent as ɵdw, FileViewerComponent as ɵdx, FileVersionListComponent as ɵdy, WorkflowHistoryComponent as ɵdz, CanBo_HoSoService as ɵe, EntityWorkflowHistoryService as ɵea, WorkflowHistoryDialogComponent as ɵeb, WorkflowHistoryNewComponent as ɵec, WorkflowSettingComponent as ɵed, EntityWorkflowSettingService as ɵee, WorkflowSettingDialogComponent as ɵef, WorkflowPermissionComponent as ɵeg, WorkflowPermissionFormComponent as ɵeh, QrCodeGeneratorComponent as ɵei, AccessDeniedV1Component as ɵej, AddNewsComponent as ɵek, ArticleService as ɵel, NewsCategoryService as ɵem, NotFoundComponent as ɵen, UniversalLinkProcessorComponent as ɵeo, SignatureDetailComponent as ɵep, ChatService as ɵeq, ContentsService as ɵer, StatusExtendsService as ɵes, MessageBoardService as ɵet, KySoSimDanhSachChuKyComponent as ɵeu, KySoSimChuKyUserService as ɵev, FileKySoSimComponent as ɵew, KySoSimSignPDFService as ɵex, TaiLieuCuaToiComponent as ɵey, KhaiThacTaiLieuDungChungComponent as ɵez, AfterViewCheckedComponent as ɵf, DanhMucDungChungService as ɵfa, CheckReadyComponent as ɵfb, SendAccessTokenInterceptor as ɵfc, LogInterceptor as ɵfd, PermissionUtilsInterceptor as ɵfe, TraceInterceptor as ɵff, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppTopBarV2Component as ɵk, AppProfileComponent as ɵl, AppSubMenuComponent as ɵm, AppMenuComponent as ɵn, AutoCompletePickerComponent as ɵo, CheckBoxListComponent as ɵp, ReportQueueComponent as ɵq, CoCauToChucPickerListComponent as ɵr, TreeTableComponent as ɵs, BaseCongViecTestComponent as ɵt, ProcessWorkflowFormComponent as ɵu, BaseCauHinhWorkflowDetailComponent as ɵv, BaseDmLoaiCongViecFormComponent as ɵw, BaseDmLinhVucCongViecFormComponent as ɵx, BaseDmPriorityFormComponent as ɵy, BaseCongviecDinhkemComponent as ɵz };
|
|
50834
|
+
export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, ClientV5Service, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CoreConfigService, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, DbOrganizationOrganizationService, DbOrganizationPositionService, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, ImageService, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelKySoDonVi, ModelSchema, ModuleConfigService, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnComponentConfig, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowService, WorkflowSetting, WorkflowSettingNew, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0, ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ14, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, AddressComponent as ɵa, DropdownService as ɵb, CongviecDinhkemService as ɵba, BaseCongviecDinhkemFormComponent as ɵbb, DatetimePickerComponent as ɵbc, DatetimePickerRangeComponent as ɵbd, DynamicNodeComponent as ɵbe, EntityPickerBoxComponent as ɵbf, EntityPickerDataComponent as ɵbg, EntityPickerSelectedComponent as ɵbh, EntityPickerComponent as ɵbi, EntityPickerDialogComponent as ɵbj, EntityPermissionComponent as ɵbk, DM_ChucVuService as ɵbl, RoleService as ɵbm, EntityPermissionService as ɵbn, EquationEditorComponent as ɵbo, MaskComponent as ɵbp, NumberPickerRangeComponent as ɵbq, PagingNextBackOnlyComponent as ɵbr, RadioButtonListComponent as ɵbs, VanBanPickerComponent as ɵbt, VanBanDenService as ɵbu, VanBanDiService as ɵbv, VanBanPickerDialogComponent as ɵbw, VanbanDiPickerComponent as ɵbx, VanbanDenPickerComponent as ɵby, CongViecPickerComponent as ɵbz, EntityPickerService as ɵc, CongViecService$1 as ɵca, TaskWorkflowHistoriesService as ɵcb, SettingsComponent as ɵcc, SettingsRowComponent as ɵcd, SettingsWorkflowComponent as ɵce, SettingsWorkflowNo1Component as ɵcf, SimpleWorkflowFormComponent as ɵcg, ProcessWorkflowTargetComponent as ɵch, DmChucVuService as ɵci, ChoYKienFormComponent as ɵcj, SplashComponentV1Component as ɵck, SplashComponentV2Component as ɵcl, StateMachinesConnectionReceiverComponent as ɵcm, StateMachinesConnectionReceiverConditionComponent as ɵcn, WorkflowSettingsService as ɵco, StateMachinesConnectionReceiverDepartmentComponent as ɵcp, StateMachinesConnectionReceiverGroupComponent as ɵcq, StateMachinesConnectionReceiverUserComponent as ɵcr, StateMachinesConnectionReceiverRoleComponent as ɵcs, StateMachinesConnectionSenderComponent as ɵct, StartWorkflowComponent as ɵcu, ShareLinkByPermissionComponent as ɵcv, WorkflowSettingNewComponent as ɵcw, PermissionSharingComponent as ɵcx, WorkflowPermissionService as ɵcy, TnDialogComponent as ɵcz, ExceptionHandlerService as ɵd, TnColorPickerComponent as ɵda, TnTinymceComponent as ɵdb, TnTabViewComponent as ɵdc, TableDetailFormComponent as ɵdd, FileIconPipe as ɵde, FileSizePipe as ɵdf, QuickAddFormComponent as ɵdg, PreventShiftTabDirective as ɵdh, TnTemplateDirective as ɵdi, UserPickerComponent as ɵdj, UserPickerBoxComponent as ɵdk, CoCauToChucTestService as ɵdl, TnAppHelpComponent as ɵdm, PathNameService as ɵdn, HelperCurrentPageComponent as ɵdo, TnAppNotificationListComponent as ɵdp, TnAppNotificationComponent as ɵdq, MyDriveService as ɵdr, FileVersionService as ɵds, FileExplorerNewService as ɵdt, FileManagerService as ɵdu, FolderFormComponent as ɵdv, FileFormComponent as ɵdw, FileViewerComponent as ɵdx, FileVersionListComponent as ɵdy, WorkflowHistoryComponent as ɵdz, CanBo_HoSoService as ɵe, EntityWorkflowHistoryService as ɵea, WorkflowHistoryDialogComponent as ɵeb, WorkflowHistoryNewComponent as ɵec, WorkflowSettingComponent as ɵed, EntityWorkflowSettingService as ɵee, WorkflowSettingDialogComponent as ɵef, WorkflowPermissionComponent as ɵeg, WorkflowPermissionFormComponent as ɵeh, QrCodeGeneratorComponent as ɵei, AccessDeniedV1Component as ɵej, AddNewsComponent as ɵek, ArticleService as ɵel, NewsCategoryService as ɵem, NotFoundComponent as ɵen, UniversalLinkProcessorComponent as ɵeo, SignatureDetailComponent as ɵep, ChatService as ɵeq, ContentsService as ɵer, StatusExtendsService as ɵes, MessageBoardService as ɵet, KySoSimDanhSachChuKyComponent as ɵeu, KySoSimChuKyUserService as ɵev, FileKySoSimComponent as ɵew, KySoSimSignPDFService as ɵex, TaiLieuCuaToiComponent as ɵey, KhaiThacTaiLieuDungChungComponent as ɵez, AfterViewCheckedComponent as ɵf, DanhMucDungChungService as ɵfa, CheckReadyComponent as ɵfb, SendAccessTokenInterceptor as ɵfc, LogInterceptor as ɵfd, PermissionUtilsInterceptor as ɵfe, TraceInterceptor as ɵff, AnonymousTokenInterceptor as ɵfg, AdvanceSearchComponent as ɵg, AppRootMenuComponent as ɵh, AppTopBarComponent as ɵi, AppTopBarV1Component as ɵj, AppTopBarV2Component as ɵk, AppProfileComponent as ɵl, AppSubMenuComponent as ɵm, AppMenuComponent as ɵn, AutoCompletePickerComponent as ɵo, CheckBoxListComponent as ɵp, ReportQueueComponent as ɵq, CoCauToChucPickerListComponent as ɵr, TreeTableComponent as ɵs, BaseCongViecTestComponent as ɵt, ProcessWorkflowFormComponent as ɵu, BaseCauHinhWorkflowDetailComponent as ɵv, BaseDmLoaiCongViecFormComponent as ɵw, BaseDmLinhVucCongViecFormComponent as ɵx, BaseDmPriorityFormComponent as ɵy, BaseCongviecDinhkemComponent as ɵz };
|
|
50770
50835
|
//# sourceMappingURL=tnx-shared.js.map
|