tnx-shared 5.1.406 → 5.1.408
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 +509 -411
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +2 -2
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/list-base.d.ts +2 -0
- package/classes/base/list-base.d.ts.map +1 -1
- package/components/workflow/services/workflow-permission-detail.service.d.ts +2 -0
- package/components/workflow/services/workflow-permission-detail.service.d.ts.map +1 -1
- package/components/workflow/workflow-button/workflow-button.component.d.ts +9 -8
- package/components/workflow/workflow-button/workflow-button.component.d.ts.map +1 -1
- package/esm2015/classes/base/list-base.js +5 -3
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
- package/esm2015/components/workflow/services/workflow-permission-detail.service.js +123 -47
- package/esm2015/components/workflow/workflow-button/workflow-button.component.js +22 -29
- package/esm2015/services/crud.service.js +17 -11
- package/esm2015/services/logger.service.js +15 -9
- package/esm2015/services/notification.service.js +5 -1
- package/esm2015/tnx-shared.js +150 -149
- package/fesm2015/tnx-shared.js +264 -180
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/services/crud.service.d.ts +3 -1
- package/services/crud.service.d.ts.map +1 -1
- package/services/logger.service.d.ts.map +1 -1
- package/services/notification.service.d.ts +1 -0
- package/services/notification.service.d.ts.map +1 -1
- package/tnx-shared.d.ts +149 -148
- package/tnx-shared.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('rxjs/operators'), require('@angular/common'), require('@angular/common/http'), require('fast-safe-stringify'), require('moment'), require('underscore'), require('uuid'), require('angular-oauth2-oidc'), require('@ngx-translate/core'), require('tn-custom-primeng/api'), require('@angular/router'), require('@aspnet/signalr'), require('file-saver'), require('print-js'), require('@angular/platform-browser'), require('jquery'), require('ngx-device-detector'), require('jwt-decode'), require('tn-custom-primeng/table'), require('@angular/common/locales/vi'), require('@angular/forms'), require('@angular/platform-browser/animations'), require('ngx-img-fallback'), require('ngx-mask'), require('ng2-signalr'), require('tn-custom-primeng/fileupload'), require('tn-custom-primeng/dropdown'), require('tn-custom-primeng/multiselect'), require('hammerjs'), require('jsplumb'), require('tn-custom-primeng/dom'), require('angular-split'), require('ng2-currency-mask'), require('ngx-drag-drop'), require('ngx-extended-pdf-viewer'), require('ngx-perfect-scrollbar'), require('tn-custom-primeng/accordion'), require('tn-custom-primeng/autocomplete'), require('tn-custom-primeng/blockui'), require('tn-custom-primeng/breadcrumb'), require('tn-custom-primeng/button'), require('tn-custom-primeng/calendar'), require('tn-custom-primeng/card'), require('tn-custom-primeng/chart'), require('tn-custom-primeng/checkbox'), require('tn-custom-primeng/chips'), require('tn-custom-primeng/colorpicker'), require('tn-custom-primeng/confirmdialog'), require('tn-custom-primeng/contextmenu'), require('tn-custom-primeng/dataview'), require('tn-custom-primeng/dialog'), require('tn-custom-primeng/fieldset'), require('tn-custom-primeng/focustrap'), require('tn-custom-primeng/inputmask'), require('tn-custom-primeng/inputswitch'), require('tn-custom-primeng/inputtext'), require('tn-custom-primeng/inputtextarea'), require('tn-custom-primeng/menu'), require('tn-custom-primeng/menubar'), require('tn-custom-primeng/overlaypanel'), require('tn-custom-primeng/paginator'), require('tn-custom-primeng/panel'), require('tn-custom-primeng/progressspinner'), require('tn-custom-primeng/radiobutton'), require('tn-custom-primeng/scrollpanel'), require('tn-custom-primeng/selectbutton'), require('tn-custom-primeng/sidebar'), require('tn-custom-primeng/slider'), require('tn-custom-primeng/spinner'), require('tn-custom-primeng/splitbutton'), require('tn-custom-primeng/steps'), require('tn-custom-primeng/tabview'), require('tn-custom-primeng/toast'), require('tn-custom-primeng/tooltip'), require('tn-custom-primeng/tree'), require('tn-custom-primeng/treetable'), require('tn-custom-primeng/tristatecheckbox'), require('@angular/animations'), require('qrcode'), require('nanoid'), require('rtf.js')) :
|
|
3
3
|
typeof define === 'function' && define.amd ? define('tnx-shared', ['exports', '@angular/core', 'rxjs', 'rxjs/operators', '@angular/common', '@angular/common/http', 'fast-safe-stringify', 'moment', 'underscore', 'uuid', 'angular-oauth2-oidc', '@ngx-translate/core', 'tn-custom-primeng/api', '@angular/router', '@aspnet/signalr', 'file-saver', 'print-js', '@angular/platform-browser', 'jquery', 'ngx-device-detector', 'jwt-decode', 'tn-custom-primeng/table', '@angular/common/locales/vi', '@angular/forms', '@angular/platform-browser/animations', 'ngx-img-fallback', 'ngx-mask', 'ng2-signalr', 'tn-custom-primeng/fileupload', 'tn-custom-primeng/dropdown', 'tn-custom-primeng/multiselect', 'hammerjs', 'jsplumb', 'tn-custom-primeng/dom', 'angular-split', 'ng2-currency-mask', 'ngx-drag-drop', 'ngx-extended-pdf-viewer', 'ngx-perfect-scrollbar', 'tn-custom-primeng/accordion', 'tn-custom-primeng/autocomplete', 'tn-custom-primeng/blockui', 'tn-custom-primeng/breadcrumb', 'tn-custom-primeng/button', 'tn-custom-primeng/calendar', 'tn-custom-primeng/card', 'tn-custom-primeng/chart', 'tn-custom-primeng/checkbox', 'tn-custom-primeng/chips', 'tn-custom-primeng/colorpicker', 'tn-custom-primeng/confirmdialog', 'tn-custom-primeng/contextmenu', 'tn-custom-primeng/dataview', 'tn-custom-primeng/dialog', 'tn-custom-primeng/fieldset', 'tn-custom-primeng/focustrap', 'tn-custom-primeng/inputmask', 'tn-custom-primeng/inputswitch', 'tn-custom-primeng/inputtext', 'tn-custom-primeng/inputtextarea', 'tn-custom-primeng/menu', 'tn-custom-primeng/menubar', 'tn-custom-primeng/overlaypanel', 'tn-custom-primeng/paginator', 'tn-custom-primeng/panel', 'tn-custom-primeng/progressspinner', 'tn-custom-primeng/radiobutton', 'tn-custom-primeng/scrollpanel', 'tn-custom-primeng/selectbutton', 'tn-custom-primeng/sidebar', 'tn-custom-primeng/slider', 'tn-custom-primeng/spinner', 'tn-custom-primeng/splitbutton', 'tn-custom-primeng/steps', 'tn-custom-primeng/tabview', 'tn-custom-primeng/toast', 'tn-custom-primeng/tooltip', 'tn-custom-primeng/tree', 'tn-custom-primeng/treetable', 'tn-custom-primeng/tristatecheckbox', '@angular/animations', 'qrcode', 'nanoid', 'rtf.js'], factory) :
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['tnx-shared'] = {}, global.ng.core, global.rxjs, global.rxjs.operators, global.ng.common, global.ng.common.http, global.stringify, global.moment_, global._, global.uuid, global.i4, global.i2, global.i1, global.ng.router, global.signalR, global.FileSaver, global.printJS$3, global.ng.platformBrowser, global.jQuery_, global.ngxDeviceDetector, global.JWT_, global.table, global.ng.common.locales.vi, global.ng.forms, global.ng.platformBrowser.animations, global.ngxImgFallback, global.ngxMask, global.ng2Signalr, global.fileupload, global.dropdown, global.multiselect, global.Hammer, global.jsplumb, global.dom, global.angularSplit, global.ng2CurrencyMask, global.ngxDragDrop, global.ngxExtendedPdfViewer, global.ngxPerfectScrollbar, global.accordion, global.autocomplete, global.blockui, global.breadcrumb, global.button, global.calendar, global.card, global.chart, global.checkbox, global.chips, global.colorpicker, global.confirmdialog, global.contextmenu, global.dataview, global.dialog, global.fieldset, global.focustrap, global.inputmask, global.inputswitch, global.inputtext, global.inputtextarea, global.menu, global.menubar, global.overlaypanel, global.paginator, global.panel, global.progressspinner, global.radiobutton, global.scrollpanel, global.selectbutton, global.sidebar, global.slider, global.spinner, global.splitbutton, global.steps, global.tabview, global.toast, global.tooltip, global.tree, global.treetable, global.tristatecheckbox, global.ng.animations, global.QRCode, global.nanoid, global.rtf_js));
|
|
5
|
-
}(this, (function (exports, i0, rxjs, operators,
|
|
5
|
+
}(this, (function (exports, i0, rxjs, operators, i4$1, i1$1, stringify, moment_, _, uuid, i4, i2, i1, i3, signalR, FileSaver, printJS$3, platformBrowser, jQuery_, ngxDeviceDetector, JWT_, table, localeVi, forms, animations, ngxImgFallback, ngxMask, ng2Signalr, fileupload, dropdown, multiselect, Hammer, jsplumb, dom, angularSplit, ng2CurrencyMask, ngxDragDrop, ngxExtendedPdfViewer, ngxPerfectScrollbar, accordion, autocomplete, blockui, breadcrumb, button, calendar, card, chart, checkbox, chips, colorpicker, confirmdialog, contextmenu, dataview, dialog, fieldset, focustrap, inputmask, inputswitch, inputtext, inputtextarea, menu, menubar, overlaypanel, paginator, panel, progressspinner, radiobutton, scrollpanel, selectbutton, sidebar, slider, spinner, splitbutton, steps, tabview, toast, tooltip, tree, treetable, tristatecheckbox, animations$1, QRCode, nanoid, rtf_js) { 'use strict';
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -3112,7 +3112,7 @@
|
|
|
3112
3112
|
}
|
|
3113
3113
|
// Format Date
|
|
3114
3114
|
if (c.dateFormat) {
|
|
3115
|
-
var datePipe = new
|
|
3115
|
+
var datePipe = new i4$1.DatePipe('en-US');
|
|
3116
3116
|
colVal = datePipe.transform(colVal, c.dateFormat);
|
|
3117
3117
|
}
|
|
3118
3118
|
// Format mapping
|
|
@@ -3183,7 +3183,7 @@
|
|
|
3183
3183
|
}
|
|
3184
3184
|
// Format Date
|
|
3185
3185
|
if (c.dateFormat) {
|
|
3186
|
-
var datePipe = new
|
|
3186
|
+
var datePipe = new i4$1.DatePipe('en-US');
|
|
3187
3187
|
colVal = datePipe.transform(colVal, c.dateFormat);
|
|
3188
3188
|
}
|
|
3189
3189
|
// Format mapping
|
|
@@ -3251,7 +3251,7 @@
|
|
|
3251
3251
|
}
|
|
3252
3252
|
// Format Date
|
|
3253
3253
|
if (c.dateFormat) {
|
|
3254
|
-
var datePipe = new
|
|
3254
|
+
var datePipe = new i4$1.DatePipe('en-US');
|
|
3255
3255
|
colVal = datePipe.transform(colVal, c.dateFormat);
|
|
3256
3256
|
}
|
|
3257
3257
|
// Format mapping
|
|
@@ -4997,6 +4997,148 @@
|
|
|
4997
4997
|
{ ten: 'Đã duyệt quyết định', id: 3 }
|
|
4998
4998
|
];
|
|
4999
4999
|
|
|
5000
|
+
var LoggerService = /** @class */ (function () {
|
|
5001
|
+
function LoggerService(_moduleConfigService) {
|
|
5002
|
+
this.logGroups = {
|
|
5003
|
+
info: {},
|
|
5004
|
+
error: {},
|
|
5005
|
+
warning: {}
|
|
5006
|
+
};
|
|
5007
|
+
this.environment = _moduleConfigService.getConfig().environment;
|
|
5008
|
+
}
|
|
5009
|
+
LoggerService.prototype.disableConsole = function () {
|
|
5010
|
+
return this.environment.systemLogSetting
|
|
5011
|
+
&& this.environment.systemLogSetting.disableConsole;
|
|
5012
|
+
};
|
|
5013
|
+
LoggerService.prototype.logInfo = function (message) {
|
|
5014
|
+
var optionalParams = [];
|
|
5015
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5016
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
5017
|
+
}
|
|
5018
|
+
if (!this.disableConsole()) {
|
|
5019
|
+
console.info(message, optionalParams);
|
|
5020
|
+
}
|
|
5021
|
+
};
|
|
5022
|
+
LoggerService.prototype.logError = function (message) {
|
|
5023
|
+
var optionalParams = [];
|
|
5024
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5025
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
5026
|
+
}
|
|
5027
|
+
if (!this.disableConsole()) {
|
|
5028
|
+
console.error(message, optionalParams);
|
|
5029
|
+
}
|
|
5030
|
+
};
|
|
5031
|
+
LoggerService.prototype.logWarning = function (message) {
|
|
5032
|
+
var optionalParams = [];
|
|
5033
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5034
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
5035
|
+
}
|
|
5036
|
+
if (!this.disableConsole()) {
|
|
5037
|
+
console.warn(message, optionalParams);
|
|
5038
|
+
}
|
|
5039
|
+
};
|
|
5040
|
+
LoggerService.prototype.logGroupInfo = function (category) {
|
|
5041
|
+
var _a;
|
|
5042
|
+
var messages = [];
|
|
5043
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5044
|
+
messages[_i - 1] = arguments[_i];
|
|
5045
|
+
}
|
|
5046
|
+
if (!this.logGroups.info[category])
|
|
5047
|
+
this.logGroups.info[category] = [];
|
|
5048
|
+
(_a = this.logGroups.info[category]).push.apply(_a, __spread(messages));
|
|
5049
|
+
};
|
|
5050
|
+
LoggerService.prototype.logGroupError = function (category) {
|
|
5051
|
+
var _a;
|
|
5052
|
+
var messages = [];
|
|
5053
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5054
|
+
messages[_i - 1] = arguments[_i];
|
|
5055
|
+
}
|
|
5056
|
+
if (!this.logGroups.error[category])
|
|
5057
|
+
this.logGroups.error[category] = [];
|
|
5058
|
+
(_a = this.logGroups.error[category]).push.apply(_a, __spread(messages));
|
|
5059
|
+
};
|
|
5060
|
+
LoggerService.prototype.logGroupWarning = function (category) {
|
|
5061
|
+
var _a;
|
|
5062
|
+
var messages = [];
|
|
5063
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
5064
|
+
messages[_i - 1] = arguments[_i];
|
|
5065
|
+
}
|
|
5066
|
+
if (!this.logGroups.warning[category])
|
|
5067
|
+
this.logGroups.warning[category] = [];
|
|
5068
|
+
(_a = this.logGroups.warning[category]).push.apply(_a, __spread(messages));
|
|
5069
|
+
};
|
|
5070
|
+
LoggerService.prototype.writeGroupInfo = function (category) {
|
|
5071
|
+
if (!this.disableConsole()) {
|
|
5072
|
+
var items = this.logGroups.info[category];
|
|
5073
|
+
if (items) {
|
|
5074
|
+
console.info(category, items);
|
|
5075
|
+
}
|
|
5076
|
+
}
|
|
5077
|
+
};
|
|
5078
|
+
LoggerService.prototype.writeGroupError = function (category) {
|
|
5079
|
+
if (!this.disableConsole()) {
|
|
5080
|
+
var items = this.logGroups.error[category];
|
|
5081
|
+
if (items) {
|
|
5082
|
+
console.error(category, items);
|
|
5083
|
+
}
|
|
5084
|
+
}
|
|
5085
|
+
};
|
|
5086
|
+
LoggerService.prototype.writeGroupWarning = function (category) {
|
|
5087
|
+
if (!this.disableConsole()) {
|
|
5088
|
+
var items = this.logGroups.warning[category];
|
|
5089
|
+
if (items) {
|
|
5090
|
+
console.warn(category, items);
|
|
5091
|
+
}
|
|
5092
|
+
}
|
|
5093
|
+
};
|
|
5094
|
+
LoggerService.prototype.writeAndFlushGroupInfo = function (category) {
|
|
5095
|
+
this.writeGroupInfo(category);
|
|
5096
|
+
this.flushGroupInfo(category);
|
|
5097
|
+
};
|
|
5098
|
+
LoggerService.prototype.writeAndFlushGroupError = function (category) {
|
|
5099
|
+
this.writeGroupError(category);
|
|
5100
|
+
this.flushGroupError(category);
|
|
5101
|
+
};
|
|
5102
|
+
LoggerService.prototype.writeAndFlushGroupWarning = function (category) {
|
|
5103
|
+
this.writeGroupWarning(category);
|
|
5104
|
+
this.flushGroupWarning(category);
|
|
5105
|
+
};
|
|
5106
|
+
LoggerService.prototype.flushGroupInfo = function (category) {
|
|
5107
|
+
if (this.logGroups.info[category]) {
|
|
5108
|
+
this.logGroups.info[category] = [];
|
|
5109
|
+
}
|
|
5110
|
+
else {
|
|
5111
|
+
this.logGroups.info[category] = [];
|
|
5112
|
+
}
|
|
5113
|
+
};
|
|
5114
|
+
LoggerService.prototype.flushGroupError = function (category) {
|
|
5115
|
+
if (this.logGroups.error[category]) {
|
|
5116
|
+
this.logGroups.error[category] = [];
|
|
5117
|
+
}
|
|
5118
|
+
else {
|
|
5119
|
+
this.logGroups.error[category] = [];
|
|
5120
|
+
}
|
|
5121
|
+
};
|
|
5122
|
+
LoggerService.prototype.flushGroupWarning = function (category) {
|
|
5123
|
+
if (this.logGroups.warning[category]) {
|
|
5124
|
+
this.logGroups.warning[category] = [];
|
|
5125
|
+
}
|
|
5126
|
+
else {
|
|
5127
|
+
this.logGroups.warning[category] = [];
|
|
5128
|
+
}
|
|
5129
|
+
};
|
|
5130
|
+
return LoggerService;
|
|
5131
|
+
}());
|
|
5132
|
+
LoggerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LoggerService_Factory() { return new LoggerService(i0.ɵɵinject(ModuleConfigService)); }, token: LoggerService, providedIn: "root" });
|
|
5133
|
+
LoggerService.decorators = [
|
|
5134
|
+
{ type: i0.Injectable, args: [{
|
|
5135
|
+
providedIn: 'root'
|
|
5136
|
+
},] }
|
|
5137
|
+
];
|
|
5138
|
+
LoggerService.ctorParameters = function () { return [
|
|
5139
|
+
{ type: ModuleConfigService }
|
|
5140
|
+
]; };
|
|
5141
|
+
|
|
5000
5142
|
var MasterDataItem = /** @class */ (function () {
|
|
5001
5143
|
function MasterDataItem() {
|
|
5002
5144
|
}
|
|
@@ -5839,9 +5981,10 @@
|
|
|
5839
5981
|
]; };
|
|
5840
5982
|
|
|
5841
5983
|
var CrudService = /** @class */ (function () {
|
|
5842
|
-
function CrudService(_injector, _translateService, _commonService, datePipe, _notifierService) {
|
|
5984
|
+
function CrudService(_injector, _translateService, _loggerService, _commonService, datePipe, _notifierService) {
|
|
5843
5985
|
this._injector = _injector;
|
|
5844
5986
|
this._translateService = _translateService;
|
|
5987
|
+
this._loggerService = _loggerService;
|
|
5845
5988
|
this._commonService = _commonService;
|
|
5846
5989
|
this.datePipe = datePipe;
|
|
5847
5990
|
this._notifierService = _notifierService;
|
|
@@ -6673,8 +6816,10 @@
|
|
|
6673
6816
|
this._notifierService.showWarning(rs.message);
|
|
6674
6817
|
break;
|
|
6675
6818
|
case Validation.ERR_SYS_DEV:
|
|
6676
|
-
|
|
6677
|
-
|
|
6819
|
+
this._loggerService.logError("__________ ERR_SYS_DEV __________ : " + rs.message);
|
|
6820
|
+
this._loggerService.logError("TraceId ====> " + this.getTraceId() + " \u0111\u1EC3 d\u00F9ng cho elastic search");
|
|
6821
|
+
this._notifierService.showWarning('Thao tác chưa thành công. Vui lòng thử lại sau!');
|
|
6822
|
+
break;
|
|
6678
6823
|
default:
|
|
6679
6824
|
this._notifierService.showWarning('Thao tác chưa thành công. Vui lòng thử lại sau!');
|
|
6680
6825
|
break;
|
|
@@ -6684,7 +6829,7 @@
|
|
|
6684
6829
|
CrudService.prototype.handleResponse = function (res, message, callBack, callBackError) {
|
|
6685
6830
|
if (!res.success) {
|
|
6686
6831
|
if (res.error == Validation.ERR_SYS_DEV) {
|
|
6687
|
-
|
|
6832
|
+
this._loggerService.logError(res.message);
|
|
6688
6833
|
this._injector.get(NotifierService).showWarning('Có lỗi xảy ra. Liên hệ quản trị viên để biết thêm chi tiết.');
|
|
6689
6834
|
}
|
|
6690
6835
|
else {
|
|
@@ -6712,7 +6857,7 @@
|
|
|
6712
6857
|
return new Promise(function (resolve, reject) {
|
|
6713
6858
|
if (!res.success) {
|
|
6714
6859
|
if (res.error == Validation.ERR_SYS_DEV) {
|
|
6715
|
-
|
|
6860
|
+
_this._loggerService.logError(res.message);
|
|
6716
6861
|
_this._injector.get(NotifierService).showWarning('Có lỗi xảy ra. Liên hệ quản trị viên để biết thêm chi tiết.');
|
|
6717
6862
|
}
|
|
6718
6863
|
else {
|
|
@@ -6785,6 +6930,7 @@
|
|
|
6785
6930
|
};
|
|
6786
6931
|
CrudService.prototype.getValueFilter = function (filter, model, rootModel) {
|
|
6787
6932
|
var e_4, _a;
|
|
6933
|
+
var _this = this;
|
|
6788
6934
|
var sourceField = filter.sourceField;
|
|
6789
6935
|
var subField = filter.subField;
|
|
6790
6936
|
var tryGetBySubField = function (value) {
|
|
@@ -6802,7 +6948,7 @@
|
|
|
6802
6948
|
return value;
|
|
6803
6949
|
}
|
|
6804
6950
|
catch (ex) {
|
|
6805
|
-
|
|
6951
|
+
_this._loggerService.logError(ex);
|
|
6806
6952
|
return null;
|
|
6807
6953
|
}
|
|
6808
6954
|
};
|
|
@@ -6848,7 +6994,7 @@
|
|
|
6848
6994
|
};
|
|
6849
6995
|
return CrudService;
|
|
6850
6996
|
}());
|
|
6851
|
-
CrudService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CrudService_Factory() { return new CrudService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.TranslateService), i0.ɵɵinject(CommonService), i0.ɵɵinject(
|
|
6997
|
+
CrudService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CrudService_Factory() { return new CrudService(i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.TranslateService), i0.ɵɵinject(LoggerService), i0.ɵɵinject(CommonService), i0.ɵɵinject(i4$1.DatePipe), i0.ɵɵinject(NotifierService)); }, token: CrudService, providedIn: "root" });
|
|
6852
6998
|
CrudService.decorators = [
|
|
6853
6999
|
{ type: i0.Injectable, args: [{
|
|
6854
7000
|
providedIn: 'root',
|
|
@@ -6857,8 +7003,9 @@
|
|
|
6857
7003
|
CrudService.ctorParameters = function () { return [
|
|
6858
7004
|
{ type: i0.Injector },
|
|
6859
7005
|
{ type: i2.TranslateService },
|
|
7006
|
+
{ type: LoggerService },
|
|
6860
7007
|
{ type: CommonService },
|
|
6861
|
-
{ type:
|
|
7008
|
+
{ type: i4$1.DatePipe },
|
|
6862
7009
|
{ type: NotifierService }
|
|
6863
7010
|
]; };
|
|
6864
7011
|
|
|
@@ -9167,10 +9314,10 @@
|
|
|
9167
9314
|
this._injector = injector;
|
|
9168
9315
|
this._appContext = injector.get(ApplicationContextService);
|
|
9169
9316
|
this._componentContext = injector.get(ComponentContextService);
|
|
9170
|
-
this._activatedRoute = injector.get(i3
|
|
9317
|
+
this._activatedRoute = injector.get(i3.ActivatedRoute);
|
|
9171
9318
|
this._crudService = injector.get(CrudService);
|
|
9172
9319
|
this._commonService = injector.get(CommonService);
|
|
9173
|
-
this._datePipe = injector.get(
|
|
9320
|
+
this._datePipe = injector.get(i4$1.DatePipe);
|
|
9174
9321
|
this._componentContext = this._appContext.addComponentContext(this._componentContext, this._activatedRoute, this.getComponentId());
|
|
9175
9322
|
if (this._componentContext) {
|
|
9176
9323
|
this.model = this._componentContext.data;
|
|
@@ -16459,16 +16606,16 @@
|
|
|
16459
16606
|
};
|
|
16460
16607
|
return CustomRouterService;
|
|
16461
16608
|
}());
|
|
16462
|
-
CustomRouterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CustomRouterService_Factory() { return new CustomRouterService(i0.ɵɵinject(i3
|
|
16609
|
+
CustomRouterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CustomRouterService_Factory() { return new CustomRouterService(i0.ɵɵinject(i3.ActivatedRoute), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i4$1.Location)); }, token: CustomRouterService, providedIn: "root" });
|
|
16463
16610
|
CustomRouterService.decorators = [
|
|
16464
16611
|
{ type: i0.Injectable, args: [{
|
|
16465
16612
|
providedIn: 'root'
|
|
16466
16613
|
},] }
|
|
16467
16614
|
];
|
|
16468
16615
|
CustomRouterService.ctorParameters = function () { return [
|
|
16469
|
-
{ type: i3
|
|
16470
|
-
{ type: i3
|
|
16471
|
-
{ type:
|
|
16616
|
+
{ type: i3.ActivatedRoute },
|
|
16617
|
+
{ type: i3.Router },
|
|
16618
|
+
{ type: i4$1.Location }
|
|
16472
16619
|
]; };
|
|
16473
16620
|
|
|
16474
16621
|
var DomService = /** @class */ (function () {
|
|
@@ -16756,8 +16903,8 @@
|
|
|
16756
16903
|
_this.__isFormView = false;
|
|
16757
16904
|
_this._notifierService = _this._injector.get(NotifierService);
|
|
16758
16905
|
_this._masterDataService = _this._injector.get(MasterDataService);
|
|
16759
|
-
_this._router = _this._injector.get(i3
|
|
16760
|
-
_this._activatedRoute = _this._injector.get(i3
|
|
16906
|
+
_this._router = _this._injector.get(i3.Router);
|
|
16907
|
+
_this._activatedRoute = _this._injector.get(i3.ActivatedRoute);
|
|
16761
16908
|
_this._translateService = _this._injector.get(i2.TranslateService);
|
|
16762
16909
|
_this._customRouterService = _this._injector.get(CustomRouterService);
|
|
16763
16910
|
_this._crudService = _this._injector.get(CrudService);
|
|
@@ -17830,6 +17977,91 @@
|
|
|
17830
17977
|
this.serviceUri = this.getEndpointByService(baseService) + "/WorkflowPermissionDetail";
|
|
17831
17978
|
return this;
|
|
17832
17979
|
};
|
|
17980
|
+
WorkflowPermissionDetailService.prototype.appendInfoForWorkflowSingle = function (userIdCurrent, data, fieldKey, ignoreWorkflow, callBackWhenNotHaveStatus) {
|
|
17981
|
+
if (fieldKey === void 0) { fieldKey = 'id'; }
|
|
17982
|
+
if (ignoreWorkflow === void 0) { ignoreWorkflow = false; }
|
|
17983
|
+
if (callBackWhenNotHaveStatus === void 0) { callBackWhenNotHaveStatus = null; }
|
|
17984
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
17985
|
+
var itemId, filters, sorts, dataStatus, notifierService;
|
|
17986
|
+
return __generator(this, function (_a) {
|
|
17987
|
+
switch (_a.label) {
|
|
17988
|
+
case 0:
|
|
17989
|
+
if (callBackWhenNotHaveStatus == null) {
|
|
17990
|
+
callBackWhenNotHaveStatus = function (itemStatus, rowItem) {
|
|
17991
|
+
};
|
|
17992
|
+
}
|
|
17993
|
+
itemId = data[fieldKey];
|
|
17994
|
+
filters = [
|
|
17995
|
+
this.newFilter('itemId', exports.Operator.equal, itemId),
|
|
17996
|
+
this.newFilter('notInWorkflow', exports.Operator.equal, false),
|
|
17997
|
+
];
|
|
17998
|
+
sorts = [];
|
|
17999
|
+
if (!ignoreWorkflow) {
|
|
18000
|
+
filters.push(this.newFilter('userId', exports.Operator.equal, userIdCurrent));
|
|
18001
|
+
}
|
|
18002
|
+
else {
|
|
18003
|
+
sorts.push(new Sort({ field: 'permission', dir: -1 }), new Sort({ field: 'inComing', dir: -1 }));
|
|
18004
|
+
}
|
|
18005
|
+
return [4 /*yield*/, this.getAll(filters, 'itemId,userId,trangThai,textTrangThai,workflowCode,permission', sorts)];
|
|
18006
|
+
case 1:
|
|
18007
|
+
dataStatus = (_a.sent()).data;
|
|
18008
|
+
if (dataStatus == null) {
|
|
18009
|
+
notifierService = this._injector.get(NotifierService);
|
|
18010
|
+
return [2 /*return*/, notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi')];
|
|
18011
|
+
}
|
|
18012
|
+
this.appendWorkflowInfoToItem(data, itemId, userIdCurrent, ignoreWorkflow, dataStatus, callBackWhenNotHaveStatus);
|
|
18013
|
+
return [2 /*return*/, true];
|
|
18014
|
+
}
|
|
18015
|
+
});
|
|
18016
|
+
});
|
|
18017
|
+
};
|
|
18018
|
+
WorkflowPermissionDetailService.prototype.appendWorkflowInfoToItem = function (data, itemId, userIdCurrent, ignoreWorkflow, dataStatus, callBackWhenNotHaveStatus) {
|
|
18019
|
+
if (callBackWhenNotHaveStatus === void 0) { callBackWhenNotHaveStatus = null; }
|
|
18020
|
+
var itemStatus = {
|
|
18021
|
+
textTrangThai: 'Chưa chạy quy trình'
|
|
18022
|
+
};
|
|
18023
|
+
if (itemId) {
|
|
18024
|
+
var lstItemStatus = dataStatus.filter(function (q) { return q.itemId == itemId && q.userId == userIdCurrent; });
|
|
18025
|
+
if (ignoreWorkflow === true && lstItemStatus.length === 0) {
|
|
18026
|
+
lstItemStatus.push.apply(lstItemStatus, __spread(dataStatus.filter(function (q) { return q.itemId === itemId; })));
|
|
18027
|
+
}
|
|
18028
|
+
// let itemStatus = null;
|
|
18029
|
+
if (lstItemStatus.length) {
|
|
18030
|
+
itemStatus = lstItemStatus.find(function (q) { return (q.permission & exports.PermissionBase.EDIT) == exports.PermissionBase.EDIT; });
|
|
18031
|
+
if (itemStatus == null) {
|
|
18032
|
+
itemStatus = lstItemStatus[0];
|
|
18033
|
+
}
|
|
18034
|
+
}
|
|
18035
|
+
}
|
|
18036
|
+
// Nếu không có bản ghi trạng thái
|
|
18037
|
+
// Nhưng đã tạo task rồi thì hiển thị trạng thái "đã tạo công việc" để tránh trường hợp hiển thị nút bắt đầu thừa trên giao diện
|
|
18038
|
+
if (!itemStatus.trangThai) {
|
|
18039
|
+
callBackWhenNotHaveStatus(itemStatus, data);
|
|
18040
|
+
}
|
|
18041
|
+
data.__trangThai = itemStatus.trangThai;
|
|
18042
|
+
data.__textTrangThai = itemStatus.textTrangThai;
|
|
18043
|
+
if (itemStatus.workflowCode == DummyWorkflowCode) {
|
|
18044
|
+
data.hiddenWorkflowAction = true;
|
|
18045
|
+
}
|
|
18046
|
+
data.__workflowCode = itemStatus.workflowCode;
|
|
18047
|
+
data.__permission = itemStatus.permission;
|
|
18048
|
+
data.__disableEdit = true;
|
|
18049
|
+
data.__disableDelete = true;
|
|
18050
|
+
if (data.basePermission & exports.PermissionBase.EDIT
|
|
18051
|
+
|| data.__permission & exports.PermissionBase.EDIT) {
|
|
18052
|
+
data.__disableEdit = false;
|
|
18053
|
+
}
|
|
18054
|
+
else {
|
|
18055
|
+
data.__disablePermissionEdit = true;
|
|
18056
|
+
}
|
|
18057
|
+
if (data.basePermission & exports.PermissionBase.DELETE
|
|
18058
|
+
|| data.__permission & exports.PermissionBase.DELETE) {
|
|
18059
|
+
data.__disableDelete = false;
|
|
18060
|
+
}
|
|
18061
|
+
else {
|
|
18062
|
+
data.__disablePermissionDelete = true;
|
|
18063
|
+
}
|
|
18064
|
+
};
|
|
17833
18065
|
/**
|
|
17834
18066
|
* Lấy thêm các thông tin cần cho quy trình nghiệp vụ cho các bản ghi trong data
|
|
17835
18067
|
*/
|
|
@@ -17839,6 +18071,7 @@
|
|
|
17839
18071
|
if (callBackWhenNotHaveStatus === void 0) { callBackWhenNotHaveStatus = null; }
|
|
17840
18072
|
return __awaiter(this, void 0, void 0, function () {
|
|
17841
18073
|
var lstItemId, filters, sorts, dataStatus, notifierService;
|
|
18074
|
+
var _this = this;
|
|
17842
18075
|
return __generator(this, function (_a) {
|
|
17843
18076
|
switch (_a.label) {
|
|
17844
18077
|
case 0:
|
|
@@ -17866,51 +18099,54 @@
|
|
|
17866
18099
|
return [2 /*return*/, notifierService.showWarning('Không lấy được thông tin trạng thái hiện tại của bản ghi')];
|
|
17867
18100
|
}
|
|
17868
18101
|
data.forEach(function (rowItem) {
|
|
17869
|
-
|
|
17870
|
-
|
|
17871
|
-
|
|
17872
|
-
|
|
17873
|
-
|
|
17874
|
-
|
|
17875
|
-
|
|
17876
|
-
|
|
17877
|
-
|
|
17878
|
-
|
|
17879
|
-
|
|
17880
|
-
|
|
17881
|
-
|
|
17882
|
-
|
|
17883
|
-
|
|
17884
|
-
|
|
17885
|
-
}
|
|
17886
|
-
//
|
|
17887
|
-
//
|
|
17888
|
-
|
|
17889
|
-
|
|
17890
|
-
|
|
17891
|
-
|
|
17892
|
-
rowItem.
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
rowItem.
|
|
17898
|
-
rowItem.
|
|
17899
|
-
rowItem.
|
|
17900
|
-
|
|
17901
|
-
|
|
17902
|
-
|
|
17903
|
-
|
|
17904
|
-
|
|
17905
|
-
|
|
17906
|
-
|
|
17907
|
-
|
|
17908
|
-
|
|
17909
|
-
|
|
17910
|
-
|
|
17911
|
-
|
|
17912
|
-
|
|
17913
|
-
}
|
|
18102
|
+
_this.appendWorkflowInfoToItem(rowItem, rowItem[fieldKey], userIdCurrent, ignoreWorkflow, dataStatus, callBackWhenNotHaveStatus);
|
|
18103
|
+
// let itemStatus: any = {
|
|
18104
|
+
// textTrangThai: 'Chưa chạy quy trình'
|
|
18105
|
+
// };
|
|
18106
|
+
// const itemId = rowItem[fieldKey];
|
|
18107
|
+
// if (itemId) {
|
|
18108
|
+
// const lstItemStatus = dataStatus.filter(q => q.itemId == itemId && q.userId == userIdCurrent);
|
|
18109
|
+
// if (ignoreWorkflow === true && lstItemStatus.length === 0) {
|
|
18110
|
+
// lstItemStatus.push(...dataStatus.filter(q => q.itemId === itemId));
|
|
18111
|
+
// }
|
|
18112
|
+
// // let itemStatus = null;
|
|
18113
|
+
// if (lstItemStatus.length) {
|
|
18114
|
+
// itemStatus = lstItemStatus.find(q => (q.permission & PermissionBase.EDIT) == PermissionBase.EDIT);
|
|
18115
|
+
// if (itemStatus == null) {
|
|
18116
|
+
// itemStatus = lstItemStatus[0];
|
|
18117
|
+
// }
|
|
18118
|
+
// }
|
|
18119
|
+
// }
|
|
18120
|
+
// // Nếu không có bản ghi trạng thái
|
|
18121
|
+
// // Nhưng đã tạo task rồi thì hiển thị trạng thái "đã tạo công việc" để tránh trường hợp hiển thị nút bắt đầu thừa trên giao diện
|
|
18122
|
+
// if (!itemStatus.trangThai) {
|
|
18123
|
+
// callBackWhenNotHaveStatus(itemStatus, rowItem);
|
|
18124
|
+
// }
|
|
18125
|
+
// rowItem.__trangThai = itemStatus.trangThai;
|
|
18126
|
+
// rowItem.__textTrangThai = itemStatus.textTrangThai;
|
|
18127
|
+
// if (itemStatus.workflowCode == DummyWorkflowCode) {
|
|
18128
|
+
// rowItem.hiddenWorkflowAction = true;
|
|
18129
|
+
// }
|
|
18130
|
+
// rowItem.__workflowCode = itemStatus.workflowCode;
|
|
18131
|
+
// rowItem.__permission = itemStatus.permission;
|
|
18132
|
+
// rowItem.__disableEdit = true;
|
|
18133
|
+
// rowItem.__disableDelete = true;
|
|
18134
|
+
// if (rowItem.basePermission & PermissionBase.EDIT
|
|
18135
|
+
// || rowItem.__permission & PermissionBase.EDIT
|
|
18136
|
+
// ) {
|
|
18137
|
+
// rowItem.__disableEdit = false;
|
|
18138
|
+
// }
|
|
18139
|
+
// else {
|
|
18140
|
+
// rowItem.__disablePermissionEdit = true;
|
|
18141
|
+
// }
|
|
18142
|
+
// if (rowItem.basePermission & PermissionBase.DELETE
|
|
18143
|
+
// || rowItem.__permission & PermissionBase.DELETE
|
|
18144
|
+
// ) {
|
|
18145
|
+
// rowItem.__disableDelete = false;
|
|
18146
|
+
// }
|
|
18147
|
+
// else {
|
|
18148
|
+
// rowItem.__disablePermissionDelete = true;
|
|
18149
|
+
// }
|
|
17914
18150
|
});
|
|
17915
18151
|
return [2 /*return*/, true];
|
|
17916
18152
|
}
|
|
@@ -19541,142 +19777,6 @@
|
|
|
19541
19777
|
{ type: ModuleConfigService }
|
|
19542
19778
|
]; };
|
|
19543
19779
|
|
|
19544
|
-
var LoggerService = /** @class */ (function () {
|
|
19545
|
-
function LoggerService(_moduleConfigService) {
|
|
19546
|
-
this.logGroups = {
|
|
19547
|
-
info: {},
|
|
19548
|
-
error: {},
|
|
19549
|
-
warning: {}
|
|
19550
|
-
};
|
|
19551
|
-
this.environment = _moduleConfigService.getConfig().environment;
|
|
19552
|
-
}
|
|
19553
|
-
LoggerService.prototype.disableConsole = function () {
|
|
19554
|
-
return this.environment.systemLogSetting
|
|
19555
|
-
&& this.environment.systemLogSetting.disableConsole;
|
|
19556
|
-
};
|
|
19557
|
-
LoggerService.prototype.logInfo = function (message) {
|
|
19558
|
-
var optionalParams = [];
|
|
19559
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19560
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
19561
|
-
}
|
|
19562
|
-
if (!this.disableConsole()) {
|
|
19563
|
-
console.log(message, optionalParams);
|
|
19564
|
-
}
|
|
19565
|
-
};
|
|
19566
|
-
LoggerService.prototype.logError = function (message) {
|
|
19567
|
-
var optionalParams = [];
|
|
19568
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19569
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
19570
|
-
}
|
|
19571
|
-
if (!this.disableConsole()) {
|
|
19572
|
-
console.error(message, optionalParams);
|
|
19573
|
-
}
|
|
19574
|
-
};
|
|
19575
|
-
LoggerService.prototype.logWarning = function (message) {
|
|
19576
|
-
var optionalParams = [];
|
|
19577
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19578
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
19579
|
-
}
|
|
19580
|
-
if (!this.disableConsole()) {
|
|
19581
|
-
console.warn(message, optionalParams);
|
|
19582
|
-
}
|
|
19583
|
-
};
|
|
19584
|
-
LoggerService.prototype.logGroupInfo = function (category) {
|
|
19585
|
-
var _a;
|
|
19586
|
-
var messages = [];
|
|
19587
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19588
|
-
messages[_i - 1] = arguments[_i];
|
|
19589
|
-
}
|
|
19590
|
-
if (!this.logGroups.info[category])
|
|
19591
|
-
this.logGroups.info[category] = [];
|
|
19592
|
-
(_a = this.logGroups.info[category]).push.apply(_a, __spread(messages));
|
|
19593
|
-
};
|
|
19594
|
-
LoggerService.prototype.logGroupError = function (category) {
|
|
19595
|
-
var _a;
|
|
19596
|
-
var messages = [];
|
|
19597
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19598
|
-
messages[_i - 1] = arguments[_i];
|
|
19599
|
-
}
|
|
19600
|
-
if (!this.logGroups.error[category])
|
|
19601
|
-
this.logGroups.error[category] = [];
|
|
19602
|
-
(_a = this.logGroups.error[category]).push.apply(_a, __spread(messages));
|
|
19603
|
-
};
|
|
19604
|
-
LoggerService.prototype.logGroupWarning = function (category) {
|
|
19605
|
-
var _a;
|
|
19606
|
-
var messages = [];
|
|
19607
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
19608
|
-
messages[_i - 1] = arguments[_i];
|
|
19609
|
-
}
|
|
19610
|
-
if (!this.logGroups.warning[category])
|
|
19611
|
-
this.logGroups.warning[category] = [];
|
|
19612
|
-
(_a = this.logGroups.warning[category]).push.apply(_a, __spread(messages));
|
|
19613
|
-
};
|
|
19614
|
-
LoggerService.prototype.writeGroupInfo = function (category) {
|
|
19615
|
-
if (!this.disableConsole()) {
|
|
19616
|
-
var items = this.logGroups.info[category];
|
|
19617
|
-
if (items) {
|
|
19618
|
-
console.log(category, items);
|
|
19619
|
-
}
|
|
19620
|
-
}
|
|
19621
|
-
};
|
|
19622
|
-
LoggerService.prototype.writeGroupError = function (category) {
|
|
19623
|
-
if (!this.disableConsole()) {
|
|
19624
|
-
var items = this.logGroups.error[category];
|
|
19625
|
-
if (items) {
|
|
19626
|
-
console.error(category, items);
|
|
19627
|
-
}
|
|
19628
|
-
}
|
|
19629
|
-
};
|
|
19630
|
-
LoggerService.prototype.writeGroupWarning = function (category) {
|
|
19631
|
-
if (!this.disableConsole()) {
|
|
19632
|
-
var items = this.logGroups.warning[category];
|
|
19633
|
-
if (items) {
|
|
19634
|
-
console.warn(category, items);
|
|
19635
|
-
}
|
|
19636
|
-
}
|
|
19637
|
-
};
|
|
19638
|
-
LoggerService.prototype.writeAndFlushGroupInfo = function (category) {
|
|
19639
|
-
this.writeGroupInfo(category);
|
|
19640
|
-
this.flushGroupInfo(category);
|
|
19641
|
-
};
|
|
19642
|
-
LoggerService.prototype.writeAndFlushGroupError = function (category) {
|
|
19643
|
-
this.writeGroupError(category);
|
|
19644
|
-
this.flushGroupError(category);
|
|
19645
|
-
};
|
|
19646
|
-
LoggerService.prototype.writeAndFlushGroupWarning = function (category) {
|
|
19647
|
-
this.writeGroupWarning(category);
|
|
19648
|
-
this.flushGroupWarning(category);
|
|
19649
|
-
};
|
|
19650
|
-
LoggerService.prototype.flushGroupInfo = function (category) {
|
|
19651
|
-
if (this.logGroups.info[category])
|
|
19652
|
-
this.logGroups.info[category] = [];
|
|
19653
|
-
else
|
|
19654
|
-
this.logGroups.info[category] = [];
|
|
19655
|
-
};
|
|
19656
|
-
LoggerService.prototype.flushGroupError = function (category) {
|
|
19657
|
-
if (this.logGroups.error[category])
|
|
19658
|
-
this.logGroups.error[category] = [];
|
|
19659
|
-
else
|
|
19660
|
-
this.logGroups.error[category] = [];
|
|
19661
|
-
};
|
|
19662
|
-
LoggerService.prototype.flushGroupWarning = function (category) {
|
|
19663
|
-
if (this.logGroups.warning[category])
|
|
19664
|
-
this.logGroups.warning[category] = [];
|
|
19665
|
-
else
|
|
19666
|
-
this.logGroups.warning[category] = [];
|
|
19667
|
-
};
|
|
19668
|
-
return LoggerService;
|
|
19669
|
-
}());
|
|
19670
|
-
LoggerService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LoggerService_Factory() { return new LoggerService(i0.ɵɵinject(ModuleConfigService)); }, token: LoggerService, providedIn: "root" });
|
|
19671
|
-
LoggerService.decorators = [
|
|
19672
|
-
{ type: i0.Injectable, args: [{
|
|
19673
|
-
providedIn: 'root'
|
|
19674
|
-
},] }
|
|
19675
|
-
];
|
|
19676
|
-
LoggerService.ctorParameters = function () { return [
|
|
19677
|
-
{ type: ModuleConfigService }
|
|
19678
|
-
]; };
|
|
19679
|
-
|
|
19680
19780
|
var PhanQuyenModel = /** @class */ (function () {
|
|
19681
19781
|
function PhanQuyenModel(init) {
|
|
19682
19782
|
this.addRoleIds = [];
|
|
@@ -20635,8 +20735,8 @@
|
|
|
20635
20735
|
_this.getData();
|
|
20636
20736
|
};
|
|
20637
20737
|
_this.isTreeTable = _isTreeTable;
|
|
20638
|
-
_this._activatedRoute = _this._injector.get(i3
|
|
20639
|
-
_this._router = _this._injector.get(i3
|
|
20738
|
+
_this._activatedRoute = _this._injector.get(i3.ActivatedRoute);
|
|
20739
|
+
_this._router = _this._injector.get(i3.Router);
|
|
20640
20740
|
_this._customRouterService = _this._injector.get(CustomRouterService);
|
|
20641
20741
|
_this._notifierService = _this._injector.get(NotifierService);
|
|
20642
20742
|
_this._exportService = _this._injector.get(ExportService);
|
|
@@ -20650,7 +20750,7 @@
|
|
|
20650
20750
|
_this._commonService = _this._injector.get(CommonService);
|
|
20651
20751
|
_this._crudService = _this._injector.get(CrudService);
|
|
20652
20752
|
_this._santilizer = _this._injector.get(platformBrowser.DomSanitizer);
|
|
20653
|
-
_this._datePipe = _this._injector.get(
|
|
20753
|
+
_this._datePipe = _this._injector.get(i4$1.DatePipe);
|
|
20654
20754
|
_this._moduleConfigService = _this._injector.get(ModuleConfigService);
|
|
20655
20755
|
_this._permissionService = _this._injector.get(PermissionService);
|
|
20656
20756
|
_this.handleCheckAll = _this.handleCheckAll.bind(_this);
|
|
@@ -23586,7 +23686,7 @@
|
|
|
23586
23686
|
// tslint:disable-next-line: component-selector
|
|
23587
23687
|
selector: 'crud-list',
|
|
23588
23688
|
template: "<div #container class=\"custom-card card card-w-title flex-container-fit-child\" [attr.height-type]=\"setting.heightType\"\r\n [ngStyle]=\"_style\">\r\n <div class=\"ui-helper-clearfix crud-list-header-area\">\r\n <div *ngIf=\"searchCustom\" class=\"p-grid ui-fluid custom-p-col custom-search-area\">\r\n <div class=\"p-col-12 main-container-search\">\r\n <div class=\"p-grid main-container-search-inner\">\r\n <ng-container>\r\n <ng-container *ngTemplateOutlet=\"searchCustom; context: {$implicit: this}\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!setting.hiddenHeader\" class=\"p-grid ui-fluid custom-p-col page-title-area\">\r\n <div *ngIf=\"!setting.hiddenPageTitle\" class=\"main-title\">\r\n <h1 *ngIf=\"!hasTemplate('customTitle')\">\r\n {{setting.title != null ? setting.title : 'Danh s\u00E1ch ' + setting.objectName}}\r\n </h1>\r\n\r\n <ng-container *ngIf=\"hasTemplate('customTitle')\" [ngTemplateOutlet]=\"getTemplate('customTitle')\"\r\n [ngTemplateOutletContext]=\"{\r\n crudList: this,\r\n buttonAdd: buttonAdd, buttonExport: buttonExport, buttonDelete: buttonDelete\r\n }\">\r\n </ng-container>\r\n </div>\r\n\r\n <div *ngIf=\"!setting.hiddenPageSetting\" class=\"paginator-table\">\r\n <ng-container *ngIf=\"!paginationTemplate\">\r\n <paging-next-back-only [model]=\"model\" [setting]=\"setting\" (onChanged)=\"getData()\"\r\n (onChangeLimitPage)=\"savePageSize()\">\r\n </paging-next-back-only>\r\n </ng-container>\r\n <ng-container *ngIf=\"paginationTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"paginationTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasTemplate('topGrid')\" class=\"extend-content-top-grid\">\r\n <ng-container [ngTemplateOutletContext]=\"{selectedItems: model.selectedItems, crudList: this}\"\r\n [ngTemplateOutlet]=\"getTemplate('topGrid')\"></ng-container>\r\n </div>\r\n <div class=\"fit-content crud-list-body-area\">\r\n <div class=\"crud-list-body-area-inner\" style=\"overflow: unset;\">\r\n <div class=\"flex-container-fit-child\" style=\"overflow: unset;\">\r\n <div *ngIf=\"!setting.hiddenToolbar\" class=\"p-grid crudListToolbar\">\r\n <ng-container>\r\n <div *ngIf=\"!setting.hiddenButtons && hasTemplate('toolbar')\"\r\n [ngClass]=\"setting.hiddenAdvanceSearch ? 'p-md-12 p-lg-12' : 'p-md-7 p-lg-8'\"\r\n class=\"p-col-12 button-group function-topbar custom-toolbar\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('toolbar')\" [ngTemplateOutletContext]=\"{\r\n selectedItems: model.selectedItems, crudList: this,\r\n buttonAdd: buttonAdd, buttonExport: buttonExport, buttonDelete: buttonDelete\r\n }\">\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"!setting.hiddenButtons && !hasTemplate('toolbar')\"\r\n [ngClass]=\"setting.hiddenAdvanceSearch ? 'p-md-12 p-lg-12' : 'p-md-7 p-lg-8'\"\r\n class=\"p-col-12 button-group function-topbar\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('buttonBeforeToolbar')\"\r\n [ngTemplateOutletContext]=\"{crudList: this}\"></ng-container>\r\n <button type=\"button\" pButton label=\"\u0110\u00E1nh STT\" class=\"p-button-text\" style=\"display: none\"\r\n (click)=\"danhSoThuTuGroupLastest()\"></button>\r\n <ng-container *ngIf=\"!hiddenAdd\" [ngTemplateOutlet]=\"buttonAdd\"></ng-container>\r\n <ng-container *ngIf=\"setting.showExportSelectedItems\" [ngTemplateOutlet]=\"buttonExport\">\r\n </ng-container>\r\n <ng-container *ngIf=\"!hiddenDelete\" [ngTemplateOutlet]=\"buttonDelete\">\r\n </ng-container>\r\n <button *ngIf=\"!setting.disableShare && model.selectedItems.length > 0\"\r\n label=\"Chia s\u1EBB li\u00EAn k\u1EBFt\" type=\"button\" pButton pRipple\r\n [pTooltip]=\"'Chia s\u1EBB li\u00EAn k\u1EBFt' | translate\" tooltipPosition=\"top\"\r\n class=\"p-button-text p-button-info link-or-action\" icon=\"pi pi-link\"\r\n (click)=\"createShareLinkMultiple()\"></button>\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('buttonAfterToolbar')\"\r\n [ngTemplateOutletContext]=\"{crudList: this}\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"!setting.hiddenAdvanceSearch\" class=\"p-col-12 advance-search-container\"\r\n [ngClass]=\"setting.hiddenButtons ? 'p-md-12 p-lg-12' : 'p-md-5 p-lg-4'\">\r\n <advance-search #advanceSearch [parentSetting]=\"setting\" [searchInfo]=\"searchInfo\"\r\n [loading]=\"model.loading\" (onSearch)=\"handleSearchAdvs($event)\"\r\n (onInit)=\"handleInitAdvanceSearch($event)\">\r\n </advance-search>\r\n </div>\r\n </div>\r\n <div *ngIf=\"hasTemplate('topGrid')\" class=\"extend-content-top-grid\">\r\n <ng-container [ngTemplateOutletContext]=\"{selectedItems: model.selectedItems, crudList: this}\"\r\n [ngTemplateOutlet]=\"getTemplate('topGrid')\"></ng-container>\r\n </div>\r\n <div class=\"container-table fit-content\" [class.--table-responsive]=\"responsive\">\r\n <div class=\"container-table-inner\">\r\n <ng-container *ngIf=\"!_groupField\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar [config]=\"configScrollBar\"\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"tableGetGroupFieldFalse\">\r\n </ng-container>\r\n <ng-container *ngIf=\"hasTemplate('afterCrudList')\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('afterCrudList')\"></ng-container>\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"tableGetGroupFieldFalse\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"_groupField\">\r\n <tn-custom-scrollbar *ngIf=\"showScrollBar\" #scrollbar [config]=\"configScrollBar\"\r\n [showScrollHorizontal]=\"showScrollHorizontal\">\r\n <ng-container *ngTemplateOutlet=\"tableGetGroupFieldTrue\">\r\n </ng-container>\r\n <ng-container *ngIf=\"hasTemplate('afterCrudList')\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('afterCrudList')\"></ng-container>\r\n </ng-container>\r\n </tn-custom-scrollbar>\r\n <div *ngIf=\"!showScrollBar\">\r\n <ng-container *ngTemplateOutlet=\"tableGetGroupFieldTrue\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div class=\"table-border-line --top\"></div>\r\n <div class=\"table-border-line --right\"></div>\r\n <div class=\"table-border-line --bottom\"></div>\r\n <div class=\"table-border-line --left\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<after-view-checked (loaded)=\"handleReady()\"></after-view-checked>\r\n<settings *ngIf=\"_showSettings && !setting.hiddenSetting\" [entityMetadataService]=\"entityMetadataService\"\r\n [parentContext]=\"context\" [parentSetting]=\"setting\" [parentModel]=\"model\" (onSave)=\"onSaveSettings($event)\"\r\n (onDelete)=\"onDeleteSettings()\" (onCancel)=\"_showSettings = false\">\r\n</settings>\r\n<settings-row *ngIf=\"_showSettingsRowColor && !setting.hiddenSetting\" [entityMetadataService]=\"entityMetadataService\"\r\n [parentContext]=\"context\" [parentSetting]=\"setting\" [parentModel]=\"model\" (onSave)=\"onSaveColorSettings($event)\"\r\n (onCancel)=\"_showSettingsRowColor = false\">\r\n</settings-row>\r\n<workflow-setting-dialog *ngIf=\"_showSettingsWorkflow && !setting.hiddenSettingWorkflow\" [parentSetting]=\"setting\"\r\n [parentContext]=\"context\" [parentModel]=\"model\" (onSaved)=\"onSaveWorkflowSettings($event)\"\r\n (onRemoved)=\"onRemoveWorkflowSettings($event)\" (onCancel)=\"_showSettingsWorkflow = false\">\r\n</workflow-setting-dialog>\r\n<tn-dialog *ngIf=\"workflowSettingModel.showEditForm\" [header]=\"'C\u1EA5u h\u00ECnh quy tr\u00ECnh nghi\u1EC7p v\u1EE5' | translate\"\r\n [popupSize]=\"workflowSettingModel.popupSize\" (onHide)=\"workflowSettingModel.showEditForm = false\">\r\n <workflow-setting-new #formBase [parentSetting]=\"setting\" (onSaved)=\"onSaveWorkflowSettingsNew($event)\"\r\n (onCancel)=\"workflowSettingModel.showEditForm = false\"></workflow-setting-new>\r\n</tn-dialog>\r\n<entity-permission *ngIf=\"_showSettingsPermission && !setting.hiddenSettingPermission\" [parentSetting]=\"setting\"\r\n [parentContext]=\"context\" [parentModel]=\"model\" [searchInfo]=\"searchInfo\"\r\n (onCancel)=\"_showSettingsPermission = false\">\r\n</entity-permission>\r\n<p-contextMenu #contextMenu [appendTo]=\"'body'\" [styleClass]=\"'allow-selected'\" [model]=\"buttonContexts\">\r\n</p-contextMenu>\r\n<tn-dialog *ngIf=\"processWorkflowModel.showEditForm\" #dialog [header]=\"processWorkflowModel.header | translate\"\r\n [popupSize]=\"processWorkflowModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"processWorkflowModel.showEditForm = false\">\r\n <div style=\"height: 100%; padding: 1rem\">\r\n <process-workflow-form #formBase [businessSetting]=\"processWorkflowModel.data.setting\" [item]=\"currentItem\"\r\n [workflow]=\"processWorkflowModel.data.workflow\" [action]=\"processWorkflowModel.data.action\"\r\n (onSaved)=\"handleProcessedWorkflowBase()\" (onCancel)=\"processWorkflowModel.showEditForm = false\">\r\n </process-workflow-form>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"choYKienModel.showEditForm\" #dialog [header]=\"choYKienModel.header | translate\"\r\n [popupSize]=\"choYKienModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"choYKienModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <cho-y-kien-form #formBase [bussinessSetting]=\"choYKienModel.data.setting\"\r\n [rowItem]=\"choYKienModel.data.rowData\" (onSaved)=\"choYKienModel.showEditForm = false\"\r\n (onCancel)=\"choYKienModel.showEditForm = false\">\r\n </cho-y-kien-form>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"workflowHistoryModel.showEditForm\" #dialog [header]=\"workflowHistoryModel.header | translate\"\r\n [popupSize]=\"workflowHistoryModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"workflowHistoryModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <workflow-history-new #formBase [businessSetting]=\"workflowHistoryModel.data.setting\"\r\n [tableName]=\"workflowHistoryModel.data.tableName\" [item]=\"currentItem\"\r\n [workflowSetting]=\"workflowHistoryModel.data.workflowSetting\"\r\n (onCancel)=\"workflowHistoryModel.showEditForm = false\">\r\n </workflow-history-new>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"detailTaskModel.showEditForm\" #dialog [header]=\"detailTaskModel.header | translate\"\r\n [popupSize]=\"detailTaskModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"detailTaskModel.showEditForm = false\">\r\n <base-congviec-form #formBase [model]=\"detailTaskModel.data.taskFormModel\" [forceOnlyView]=\"true\"\r\n (onCancel)=\"detailTaskModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<!-- <tn-dialog *ngIf=\"showDetailForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"setting.popupHeader | translate\" [popupSize]=\"setting.popupSize\" (onHide)=\"showDetailForm = false\">\r\n <base-congviec-form #formBase [parentModel]=\"model\" [parentSetting]=\"setting\" [parentContext]=\"context\"\r\n [model]=\"formModel\" [crudList]=\"crudList\" (onSaved)=\"showDetailForm = false;crudList.reload()\"\r\n (onCancel)=\"_handleCancel($event)\" (onAfterSaved)=\"onAfterSaved($event)\">\r\n </base-congviec-form>\r\n</tn-dialog> -->\r\n\r\n<tn-dialog *ngIf=\"permissionSharingModel.showEditForm\" #dialog [header]=\"permissionSharingModel.header | translate\"\r\n [popupSize]=\"permissionSharingModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"permissionSharingModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <permission-sharing #formBase [item]=\"rowDataCurrent\" [baseService]=\"setting.baseService\"\r\n (onCancel)=\"permissionSharingModel.showEditForm = false\">\r\n </permission-sharing>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"permissionListModel.showEditForm\" #dialog [header]=\"permissionListModel.header | translate\"\r\n [popupSize]=\"permissionListModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\" [useDefaultScrollBar]=\"true\"\r\n (onHide)=\"permissionListModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <workflow-permission #formBase [item]=\"rowDataCurrent\" [businessSetting]=\"setting\"\r\n (onCancel)=\"permissionListModel.showEditForm = false\">\r\n </workflow-permission>\r\n </div>\r\n</tn-dialog>\r\n<workflow-history-dialog *ngIf=\"showHistoryWorkflow\" [baseService]=\"setting.baseService\" [item]=\"currentItem\"\r\n [workflowSetting]=\"setting.workflowSetting\" (onHide)=\"handleHideHistoryWorkflow()\">\r\n</workflow-history-dialog>\r\n<tn-dialog *ngIf=\"startWorkflowModel.showEditForm\" #dialog [header]=\"startWorkflowModel.header | translate\"\r\n [popupSize]=\"startWorkflowModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"startWorkflowModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <start-workflow #formBase [workflows]=\"startWorkflowModel.data.workflows\"\r\n [defaultWorkflow]=\"startWorkflowModel.data.defaultWorkflow\"\r\n (onCancel)=\"startWorkflowModel.showEditForm = false\" (onSaved)=\"handleStartWorkflowFromDialog($event)\">\r\n </start-workflow>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"congViecModel.showEditForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"congViecModel.header | translate\" [popupSize]=\"congViecModel.popupSize\"\r\n (onHide)=\"congViecModel.showEditForm = false\">\r\n <base-congviec-form #formBase [parentSetting]=\"congViecModel.data.congViecSetting\"\r\n [model]=\"congViecModel.data.model\" (onSaved)=\"congViecModel.showEditForm = false;getData()\"\r\n (onCancel)=\"congViecModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"shareLinkModel.showEditForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"\r\n [header]=\"shareLinkModel.header | translate\" [popupSize]=\"shareLinkModel.popupSize\" [useDefaultScrollBar]=\"true\"\r\n (onHide)=\"shareLinkModel.showEditForm = false\">\r\n <share-link-by-permission #formBase [setting]=\"setting\" [lstItem]=\"shareLinkModel.data.lstItem\"\r\n (onCancel)=\"congViecModel.showEditForm = false\">\r\n </share-link-by-permission>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"attachedTaskModel.showEditForm\" [header]=\"attachedTaskModel.header | translate\"\r\n [popupSize]=\"attachedTaskModel.popupSize\" [useDefaultScrollBar]=\"true\"\r\n (onHide)=\"attachedTaskModel.showEditForm = false\">\r\n <base-congviec [serviceCode]=\"setting.baseService.serviceCode\" [entity]=\"setting.baseService.entityName\"\r\n [itemIdAttach]=\"rowDataCurrent.id\"></base-congviec>\r\n</tn-dialog>\r\n<ng-template #tableGetGroupFieldFalse>\r\n <p-table #table [dataKey]=\"'id'\" [scrollable]=\"pTableScrollable\" [scrollHeight]=\"pTableScrollHeight\"\r\n [columns]=\"setting.cols\" [paginator]=\"false\" [value]=\"_dataSource\" (onSort)=\"onSort($event, table)\"\r\n [class]=\"_tableClass\" [responsive]=\"responsive\" [lazy]=\"lazy\" [loading]=\"model.loading\"\r\n [(selection)]=\"model.selectedItems\" (onRowReorder)=\"handleRowOrdered($event)\">\r\n <ng-template *ngIf=\"colgroup\" pTemplate=\"colgroup\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"colgroup; context: {$implicit: columns}\"></ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!colgroup\" pTemplate=\"colgroup\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"baseColgroup; context: {$implicit: columns}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"header\" pTemplate=\"header\" let-columns>\r\n <ng-container\r\n *ngTemplateOutlet=\"header, context: {$implicit: columns, crudList: this, rowHeaderFilter: rowHeaderFilter, contentTh: contentTh, containerSticky: containerSticky, funcCheckAll: handleCheckAll}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!header\" pTemplate=\"header\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"trHeader; context: {$implicit: columns, funcCheckAll: handleCheckAll}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-index=\"rowIndex\" let-expanded=\"expanded\">\r\n <ng-container\r\n *ngTemplateOutlet=\"trBody; context: {$implicit: rowData, columns: columns, index: index, expanded: expanded, eventSelectRow: handleSelectRow, eventChecked: handleCheckRowData}\">\r\n </ng-container>\r\n <after-view-checked *ngIf=\"index == _dataSource.length - 1\" style=\"display: none;\" [renderKey]=\"_dataSource\"\r\n (loaded)=\"handleTableRendered()\">\r\n </after-view-checked>\r\n </ng-template>\r\n <ng-template *ngIf=\"rowExpansion\" pTemplate=\"rowexpansion\" let-rowData let-expanded=\"expanded\">\r\n <ng-container\r\n *ngTemplateOutlet=\"rowExpansion; context: {$implicit: rowData, expanded: expanded, getColSpanGroup: getColSpanGroup}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"summary\" pTemplate=\"summary\">\r\n <ng-container *ngTemplateOutlet=\"summary\"></ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"footer\" pTemplate=\"footer\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"footer; context: {$implicit: columns}\"></ng-container>\r\n </ng-template>\r\n </p-table>\r\n</ng-template>\r\n<ng-template #tableGetGroupFieldTrue>\r\n <p-table #tableGroup [scrollable]=\"pTableScrollable\" [scrollHeight]=\"pTableScrollHeight\" [columns]=\"setting.cols\"\r\n [paginator]=\"false\" [value]=\"_dataSource\" [metaKeySelection]=\"false\" (onSort)=\"onSort($event, tableGroup)\"\r\n [class]=\"_tableClass\" [customSort]=\"true\" [responsive]=\"responsive\" [lazy]=\"true\" [loading]=\"model.loading\"\r\n [(selection)]=\"model.selectedItems\" [expandedRowKeys]=\"model.expandedRowKeys\" [dataKey]=\"_groupField\">\r\n <ng-template *ngIf=\"colgroup\" pTemplate=\"colgroup\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"colgroup; context: {$implicit: columns}\"></ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!colgroup\" pTemplate=\"colgroup\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"baseColgroup; context: {$implicit: columns}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"header\" pTemplate=\"header\" let-columns>\r\n <ng-container\r\n *ngTemplateOutlet=\"header, context: {$implicit: columns, crudList: this, rowHeaderFilter: rowHeaderFilter, contentTh: contentTh, containerSticky: containerSticky, funcCheckAll: handleCheckAll_Group}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"!header\" pTemplate=\"header\" let-columns>\r\n <ng-container\r\n *ngTemplateOutlet=\"trHeader; context: {$implicit: columns, funcCheckAll: handleCheckAll_Group}\">\r\n </ng-container>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\" let-expanded=\"expanded\" let-columns=\"columns\">\r\n <tr *ngIf=\"rowGroupMetadata[rowData[_groupField]] && rowGroupMetadata[rowData[_groupField]].index == rowIndex\"\r\n class=\"p-widget-header group-row\" style=\"border: 0px; border-bottom: 1px solid #eee\">\r\n <td *ngIf=\"!setting.hiddenCheckbox\" class=\"center chkbox\" [class.sticky]=\"setting.stickyColumn\">\r\n <p-checkbox [(ngModel)]=\"rowGroupChecked[rowData[_groupField]]\" binary=\"true\"\r\n (onChange)=\"handleCheckRowGroup(rowData)\">\r\n </p-checkbox>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <ng-container *ngIf=\"!rowGroup\">\r\n <td [colSpan]=\"getColSpanGroup()\" [class]=\"_classRowGroup\">\r\n <div class=\"container-row-group\">\r\n <a href=\"javascript:;\" [pRowToggler]=\"rowData\" class=\"container-row-group-toggle\"\r\n [class.sticky]=\"setting.stickyColumn\">\r\n <i style=\"margin-right:5px\"\r\n [ngClass]=\"expanded ? 'fas fa-fw fa-caret-down' : 'fas fa-fw fa-caret-right'\"></i>\r\n <div class=\"content-row-group\">\r\n <ng-container *ngIf=\"!contentRowGroup\">\r\n <ng-container [ngTemplateOutlet]=\"_contentRowGroup\"\r\n [ngTemplateOutletContext]=\"getContextRowGroup(rowData)\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"contentRowGroup\">\r\n <ng-container [ngTemplateOutlet]=\"contentRowGroup\"\r\n [ngTemplateOutletContext]=\"getContextRowGroup(rowData)\">\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </a>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngIf=\"rowGroup\">\r\n <ng-container [ngTemplateOutlet]=\"rowGroup\"\r\n [ngTemplateOutletContext]=\"getContextRowGroupRoot(rowData, expanded)\">\r\n </ng-container>\r\n </ng-container>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"rowexpansion\" let-columns=\"columns\" let-rowData let-index=\"rowIndex\">\r\n <ng-container\r\n *ngTemplateOutlet=\"trBody; context: {$implicit: rowData, columns: columns, index: index, expanded: false, eventSelectRow: handleSelectRowGroup, eventChecked: handleCheckRowData_Group}\">\r\n </ng-container>\r\n <after-view-checked *ngIf=\"index == _dataSource.length - 1\" style=\"display: none;\" [renderKey]=\"_dataSource\"\r\n (loaded)=\"handleTableRendered()\">\r\n </after-view-checked>\r\n </ng-template>\r\n <ng-template *ngIf=\"summary\" pTemplate=\"summary\">\r\n <ng-container *ngTemplateOutlet=\"summary\"></ng-container>\r\n </ng-template>\r\n <ng-template *ngIf=\"footer\" pTemplate=\"footer\" let-columns>\r\n <ng-container *ngTemplateOutlet=\"footer; context: {$implicit: columns}\"></ng-container>\r\n </ng-template>\r\n </p-table>\r\n <after-view-checked></after-view-checked>\r\n</ng-template>\r\n<ng-template #baseColgroup let-columns>\r\n <colgroup>\r\n <col *ngIf=\"!setting.hiddenCheckbox\" [style.width]=\"widthCheckbox\" />\r\n <col *ngIf=\"!setting.hiddenOrderColumn\" [style.width]=\"widthOrderColumn\" />\r\n <col *ngIf=\"rowExpansion\" style=\"width: 2.5rem\" />\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <col *ngIf=\"col && col.visible && col.field!='function'\" [style.width]=\"col.width\" />\r\n </ng-container>\r\n <col *ngIf=\"enableReorderRow\" style=\"width: 30px\" />\r\n <col *ngIf=\"!setting.hiddenFunctionColumn\" [style.width]=\"widthFunctionColumn || _widthFunctionColumn\" />\r\n </colgroup>\r\n</ng-template>\r\n<ng-template #buttonAdd>\r\n <span [appAuthorize]=\"serviceCode\" [permission]=\"authorizePaths[commonConst.ADD]\"\r\n [enableAuthorize]=\"buttonApplyAuthorize[commonConst.ADD]\">\r\n <button type=\"button\" pButton pRipple label=\"Th\u00EAm m\u1EDBi\" icon=\"pi pi-plus\" class=\"p-button-text\"\r\n [disabled]=\"!model.baseReady\" (click)=\"add()\"></button>\r\n </span>\r\n</ng-template>\r\n<ng-template #buttonExport>\r\n <button *ngIf=\"model.selectedItems.length > 0\" [appAuthorize]=\"serviceCode\"\r\n [permission]=\"authorizePaths[commonConst.EXPORT_EXCEL]\"\r\n [enableAuthorize]=\"buttonApplyAuthorize[commonConst.EXPORT_EXCEL]\" type=\"button\" pButton pRipple\r\n label=\"Xu\u1EA5t c\u00E1c m\u1EE5c \u0111\u00E3 ch\u1ECDn ({{model.selectedItems.length}})\" icon=\"fas fa-file-excel\"\r\n class=\"p-button-text p-button-success\" (click)=\"xuatCacMucDaChon()\"></button>\r\n</ng-template>\r\n<ng-template #buttonDelete>\r\n <button *ngIf=\"!hiddenDelete && model.selectedItems.length > 0 && !disableMultipleDelete()\"\r\n [appAuthorize]=\"serviceCode\" [permission]=\"authorizePaths[commonConst.DELETE_MULTIPLE]\"\r\n [enableAuthorize]=\"buttonApplyAuthorize[commonConst.DELETE_MULTIPLE]\" type=\"button\" pButton pRipple\r\n [label]=\"'X\u00F3a ' + (model.selectedItems.length) | translate\" icon=\"pi pi-trash\"\r\n class=\"p-button-text p-button-danger\" (click)=\"deleteMutiple()\"></button>\r\n</ng-template>\r\n<ng-template #trHeader let-columns let-funcCheckAll=\"funcCheckAll\">\r\n <tr class=\"title-row\">\r\n <ng-container *ngIf=\"!setting.hiddenCheckbox\">\r\n <th class=\"chkbox link-or-action cell-checkbox\" [class.sticky]=\"setting.stickyColumn\">\r\n <button *ngIf=\"!hasTemplate('headerCheckbox')\" type=\"button\" pButton pRipple icon=\"pi pi-refresh\"\r\n class=\"p-button-rounded p-button-text btnReload\" pTooltip=\"L\u00E0m m\u1EDBi d\u1EEF li\u1EC7u\" tooltipPosition=\"top\"\r\n [disabled]=\"model.loading\" (click)=\"reload()\"></button>\r\n <ng-container *ngIf=\"hasTemplate('headerCheckbox')\">\r\n <ng-container [ngTemplateOutletContext]=\"{crudList: this}\"\r\n [ngTemplateOutlet]=\"getTemplate('headerCheckbox')\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <th *ngIf=\"!setting.hiddenOrderColumn\" class=\"stt nopad center\" [class.sticky]=\"setting.stickyColumn\"\r\n (dblclick)=\"reload()\">\r\n {{ 'TT' |translate}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"rowExpansion\" class=\"nopad row-expansion-toggle center\" style=\"width: 2.5rem\"\r\n [class.sticky]=\"setting.stickyColumn\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <th *ngIf=\"col && col.visible && col.field!='function'\" [ngStyle]=\"col.extendData.headerStyle\"\r\n [pTooltip]=\"col.fullLabel\" tooltipStyleClass=\"unset-width\" [class]=\"col.extendData.headerClass\"\r\n [class.first-th]=\"i==0\" [escape]=\"false\" tooltipPosition=\"top\" [tnSortableColumn]=\"col.field\"\r\n [tnSortableColumnDisabled]=\"!col.sort\">\r\n <ng-container *ngTemplateOutlet=\"contentTh; context: {$implicit: col}\"></ng-container>\r\n <ng-container *ngIf=\"col.sort || col.sortClient\">\r\n <ng-container *ngTemplateOutlet=\"sortIcon; context: {field: col.field}\"></ng-container>\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n <th *ngIf=\"enableReorderRow\" style=\"width: 30px\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <ng-container *ngTemplateOutlet=\"colFunctionHeader\"></ng-container>\r\n </tr>\r\n <ng-container *ngTemplateOutlet=\"rowHeaderFilter; context: {columns: columns, funcCheckAll: funcCheckAll}\">\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #rowHeaderFilter let-columns=\"columns\" let-funcCheckAll=\"funcCheckAll\">\r\n <tr class=\"filter-row\" *ngIf=\"!setting.hiddenFilterRow\">\r\n <th *ngIf=\"!setting.hiddenCheckbox\" class=\"chkbox nopad center\" [class.sticky]=\"setting.stickyColumn\"\r\n [class.tricheckbox-custom-false]=\"checkedAll === false\">\r\n <p-triStateCheckbox [(ngModel)]=\"checkedAll\" binary=\"true\" (onChange)=\"funcCheckAll()\">\r\n </p-triStateCheckbox>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"!setting.hiddenOrderColumn\" class=\"stt center v-top\" [class.sticky]=\"setting.stickyColumn\">\r\n <div *ngIf=\"!setting.hiddenSetting\" class=\"pick-color-row\" pTooltip=\"C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB m\u00E0u\"\r\n tooltipPosition=\"top\" (click)=\"showSettingRowColor()\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"rowExpansion\" class=\"nopad center row-expansion-toggle\" [class.sticky]=\"setting.stickyColumn\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <th *ngIf=\"col.visible && col.field != 'function'\" class=\"cell-header-filter center\">\r\n <ng-container *ngIf=\"col.allowFilter\">\r\n <ng-container *ngIf=\"col.templateFilter\">\r\n <ng-container [ngTemplateOutlet]=\"col.templateFilter\"\r\n [ngTemplateOutletContext]=\"{col: col, filterData: filterData, onSearch: onSearch, onShowFilterDropdownPanel: onShowFilterDropdownPanel, onHideFilterDropdownPanel: onHideFilterDropdownPanel}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!col.templateFilter\" [ngSwitch]=\"col.controlType\">\r\n <ng-container *ngSwitchCase=\"'dropdown'\">\r\n <ng-container [ngTemplateOutlet]=\"filterDropdown\"\r\n [ngTemplateOutletContext]=\"{col: col.rawColumn}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <ng-container [ngTemplateOutlet]=\"filterNumber\" [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngTemplateOutlet]=\"filterDate\" [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <ng-container [ngTemplateOutlet]=\"filterDate\" [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"col.dataType\">\r\n <ng-container *ngSwitchCase=\"'int'\">\r\n <ng-container [ngTemplateOutlet]=\"filterNumber\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'intWithoutMask'\">\r\n <ng-container [ngTemplateOutlet]=\"filterNumber\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'decimal'\">\r\n <ng-container [ngTemplateOutlet]=\"filterNumber\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'currency'\">\r\n <ng-container [ngTemplateOutlet]=\"filterNumber\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <ng-container [ngTemplateOutlet]=\"filterDate\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'datetime'\">\r\n <ng-container [ngTemplateOutlet]=\"filterDate\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'boolean'\">\r\n <ng-container [ngTemplateOutlet]=\"filterBoolean\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"filterText\"\r\n [ngTemplateOutletContext]=\"{col: col}\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <th *ngIf=\"enableReorderRow\" style=\"width: 30px\">\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n <th *ngIf=\"!setting.hiddenFunctionColumn\" class=\"center setting-cell column-function\"\r\n [class.sticky]=\"setting.stickyColumn\">\r\n <button *ngIf=\"!setting.hiddenSetting\" type=\"button\" pButton pRipple icon=\"pi pi-cog\"\r\n class=\"p-button-rounded p-button-text\" pTooltip=\"C\u1EA5u h\u00ECnh hi\u1EC3n th\u1ECB\" tooltipPosition=\"top\"\r\n (click)=\"showSettings()\"></button>\r\n <button *ngIf=\"!setting.hiddenSettingPermission\" type=\"button\" pButton pRipple icon=\"pi pi-users\"\r\n class=\"p-button-rounded p-button-text\" pTooltip=\"Ph\u00E2n quy\u1EC1n d\u1EEF li\u1EC7u\" tooltipPosition=\"left\"\r\n [disabled]=\"!checkPermissionToUseButton(BUTTON_PHAN_QUYEN)\" (click)=\"showSettingsPermission()\"></button>\r\n <button *ngIf=\"!setting.hiddenSettingWorkflow\" type=\"button\" pButton pRipple icon=\"pi pi-sitemap\"\r\n class=\"p-button-rounded p-button-text\" pTooltip=\"C\u1EA5u h\u00ECnh quy tr\u00ECnh\" tooltipPosition=\"left\"\r\n [disabled]=\"!checkPermissionToUseButton(BUTTON_CAU_HINH_QUY_TRINH)\"\r\n (click)=\"showSettingsWorkflowNew()\"></button>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </tr>\r\n</ng-template>\r\n<ng-template #colFunctionHeader>\r\n <ng-container *ngIf=\"!setting.hiddenFunctionColumn\">\r\n <th class=\"column-function\" [class.sticky]=\"setting.stickyColumn\">\r\n <div class=\"cell-header-function\">\r\n <span>{{'GRID.FUNCTION'| translate}}</span>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </th>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #contentTh let-col>\r\n <ng-container *ngIf=\"templateHeaderContent[col.field]\">\r\n <ng-container *ngTemplateOutlet=\"templateHeaderContent[col.field]\"></ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!templateHeaderContent[col.field]\">\r\n {{col.label}}\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n</ng-template>\r\n<ng-template #trBody let-rowData let-columns=\"columns\" let-index=\"index\" let-expanded=\"expanded\"\r\n let-eventSelectRow=\"eventSelectRow\" let-eventChecked=\"eventChecked\">\r\n <tr *ngIf=\"!rowData.template\" [tnReorderableRow]=\"index\" [attr.rowIndex]=\"index\" [ngClass]=\"rowData.objStyleClass\"\r\n [class.ui-state-highlight]=\"rowData._checked\" [pTooltip]=\"rowData.tooltip\" tooltipPosition=\"top\"\r\n [tooltipStyleClass]=\"rowData.tooltipClass\" [escape]=\"escape\" (click)=\"eventSelectRow($event, rowData)\">\r\n <ng-container *ngIf=\"!setting.hiddenCheckbox && !rowData.hidden[fieldCheckbox]\">\r\n <td class=\"chkbox link-or-action cell-checkbox\" [class.sticky]=\"setting.stickyColumn\"\r\n [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[fieldCheckbox]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[fieldCheckbox]\">\r\n <ng-container *ngIf=\"!rowData.hiddenCheckBox\">\r\n <ng-container *ngIf=\"!hasTemplate('checkbox')\">\r\n <p-checkbox [(ngModel)]=\"rowData._checked\" binary=\"true\" (onChange)=\"eventChecked(rowData)\">\r\n </p-checkbox>\r\n </ng-container>\r\n <ng-container *ngIf=\"hasTemplate('checkbox')\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('checkbox')\"\r\n [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </ng-container>\r\n <td *ngIf=\"!setting.hiddenOrderColumn && !rowData.hidden[fieldOrder]\" class=\"stt\" style=\"text-align: center;\"\r\n [class.sticky]=\"setting.stickyColumn\" [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[fieldOrder]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[fieldOrder]\">\r\n <span class=\"row-card\" [ngStyle]=\"rowData.bookmarkStyle\"></span>\r\n {{rowData[fieldOrder]}}\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <td *ngIf=\"rowExpansion && !rowData.hidden[fieldColExpand]\" class=\"no-padding center row-expansion-toggle\"\r\n [class.sticky]=\"setting.stickyColumn\" [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[fieldColExpand]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[fieldColExpand]\">\r\n <ng-container *ngTemplateOutlet=\"iconToggleRowData; context: {rowData: rowData, expanded: expanded}\">\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <ng-container\r\n *ngTemplateOutlet=\"dynamicColBodys; context: {$implicit: columns, rowData: rowData, index: index, expanded: expanded}\">\r\n </ng-container>\r\n <td *ngIf=\"enableReorderRow && !rowData.hidden[fieldColReorder]\" class=\"no-padding center\"\r\n [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[fieldColReorder]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[fieldColReorder]\">\r\n <i class=\"fas fa-arrows-alt\" style=\"cursor:pointer; padding: 8px; color: #555;\" pReorderableRowHandle></i>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n <ng-container *ngIf=\"!setting.hiddenFunctionColumn && !rowData.hidden[fieldFunction]\">\r\n <td class=\"text-center column-function\" style=\"text-align: center;\" [class.sticky]=\"setting.stickyColumn\"\r\n [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[fieldFunction]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[fieldFunction]\">\r\n <div *ngIf=\"hasTemplate('function')\" class=\"p-toolbar-group-center button-group\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('function')\"\r\n [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </div>\r\n <div *ngIf=\"!hasTemplate('function')\" class=\"p-toolbar-group-center button-group\">\r\n <ng-container [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"\r\n [ngTemplateOutlet]=\"getTemplate('buttonBefore')\"></ng-container>\r\n <button *ngIf=\"setting.showVersionButton\" type=\"button\" pButton pRipple icon=\"pi pi-calendar\"\r\n class=\"p-button-rounded p-button-text p-button-success link-or-action\"\r\n pTooltip=\"Xem l\u1ECBch s\u1EED phi\u00EAn b\u1EA3n\" tooltipPosition=\"top\"\r\n (click)=\"showListVersion(rowData)\"></button>\r\n <button *ngIf=\"!rowData.hiddenEdit\" [appAuthorize]=\"serviceCode\"\r\n [permission]=\"authorizePaths[commonConst.EDIT]\"\r\n [enableAuthorize]=\"buttonApplyAuthorize[commonConst.EDIT]\" type=\"button\" pButton pRipple\r\n [disabled]=\"disableEdit(rowData)\" [pTooltip]=\"'FORM.EDIT' | translate\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-info link-or-action\" icon=\"pi pi-pencil\"\r\n (click)=\"edit(rowData)\"></button>\r\n <button *ngIf=\"!rowData.hiddenDelete\" [appAuthorize]=\"serviceCode\"\r\n [permission]=\"authorizePaths[commonConst.DELETE]\"\r\n [enableAuthorize]=\"buttonApplyAuthorize[commonConst.DELETE]\" type=\"button\" pButton pRipple\r\n [disabled]=\"disableDelete(rowData)\" [pTooltip]=\"'FORM.DELETE' | translate\" tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\" icon=\"pi pi-trash\"\r\n (click)=\"delete(rowData)\"></button>\r\n <button *ngIf=\"showMenuButtons && menuButtons\" type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-info p-button-rounded\" pTooltip=\"Ch\u1EE9c n\u0103ng kh\u00E1c\"\r\n tooltipPosition=\"top\" (click)=\"showContextMenu($event, rowData)\"></button>\r\n <ng-container [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"\r\n [ngTemplateOutlet]=\"getTemplate('buttonAfter')\"></ng-container>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n <ng-container *ngIf=\"rowData.template\">\r\n <ng-container *ngTemplateOutlet=\"rowData.template; context: {\r\n $implicit: rowData, columns: columns, index: index, expanded: expanded, eventSelectRow: eventSelectRow, eventChecked: eventChecked\r\n }\"></ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #dynamicColBodys let-columns let-rowData=\"rowData\" let-index=\"index\" let-expanded=\"expanded\">\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container\r\n *ngTemplateOutlet=\"contentTd; context: {$implicit: rowData, col: col, index: index, i: i, expanded: expanded}\">\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #contentTd let-rowData let-col=\"col\" let-index=\"index\" let-expanded=\"expanded\" let-i=\"i\">\r\n <td *ngIf=\"col && col.visible && col.field != 'function' && !rowData.hidden[col.field]\"\r\n [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[col.field]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[col.field]\" [ngStyle]=\"col.extendData.style\"\r\n [class]=\"col.cellClass\" [class.first-td]=\"i == 0\">\r\n <span *ngIf=\"col.pipe\">\r\n <span class=\"p-column-title\" [pTooltip]=\"col.fullLabel\" [escape]=\"false\"\r\n tooltipPosition=\"top\">{{col.label}}</span>\r\n {{rowData['pipe__' + col.field]}}\r\n </span>\r\n <span *ngIf=\"!col.pipe\">\r\n <span class=\"p-column-title\" [pTooltip]=\"col.fullLabel\" [escape]=\"false\"\r\n tooltipPosition=\"top\">{{col.label}}</span>\r\n <span *ngIf=\"setting.showEditLink && col.showEditLink\" [pTooltip]=\"config.tooltipView\" tooltipPosition=\"top\"\r\n class=\"link-or-action\">\r\n <a href=\"javascript:;\" (click)=\"view(rowData)\" [pTooltip]=\"config.tooltipView\" tooltipPosition=\"top\">\r\n <ng-container [ngTemplateOutlet]=\"contentCell\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, index, col, expanded, this)\">\r\n </ng-container>\r\n </a>\r\n </span>\r\n <span *ngIf=\"!setting.showEditLink || !col.showEditLink\">\r\n <ng-container [ngTemplateOutlet]=\"contentCell\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, index, col, expanded, this)\">\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n</ng-template>\r\n<ng-template #contentCell let-col=\"col\" let-rowData=\"rowData\" let-rowIndex=\"rowIndex\" let-field=\"field\"\r\n let-expanded=\"expanded\">\r\n <ng-container *ngIf=\"col.template\">\r\n <ng-container [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, rowIndex, col, expanded,this)\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!col.template\">\r\n <ng-container [ngSwitch]=\"col.dataType\">\r\n <span *ngSwitchCase=\"'color'\" style=\"display:block;text-align:center;\">\r\n <div [pTooltip]=\"rowData[field]\" tooltipPosition=\"top\" [ngStyle]=\"{'background-color':rowData[field]}\"\r\n style=\"width:30px;height:30px;margin:0 auto;\"></div>\r\n </span>\r\n <span *ngSwitchCase=\"'icon'\" style=\"display:block;text-align:center;\">\r\n <i [pTooltip]=\"rowData[field]\" tooltipPosition=\"top\" style=\"text-align: center;\"\r\n [ngClass]=\"rowData[field]\"></i>\r\n </span>\r\n <span *ngSwitchCase=\"'date'\" [pTooltip]=\"rowData[field] | date:'dd/MM/yyyy'\" tooltipPosition=\"top\">\r\n {{rowData[field] | tnDate:col.dataType:col.format}}\r\n </span>\r\n <span *ngSwitchCase=\"'datetime'\" [pTooltip]=\"rowData[field] | date:'dd/MM/yyyy HH:mm'\"\r\n tooltipPosition=\"top\">\r\n {{rowData[field] | tnDate:col.dataType:col.format}}\r\n </span>\r\n <span *ngSwitchCase=\"'user'\" class=\"user\">\r\n {{rowData[field] | userFormat | async}}\r\n </span>\r\n <div *ngSwitchCase=\"'users'\" [innerHTML]=\"rowData[field] | usersFormat | async\">\r\n </div>\r\n <span *ngSwitchCase=\"'int'\">\r\n {{rowData[field] | number}}\r\n </span>\r\n <span *ngSwitchCase=\"'intWithoutMask'\">\r\n {{rowData[field]}}\r\n </span>\r\n <span *ngSwitchCase=\"'currency'\">\r\n {{rowData[field] | currency:\"VND\"}}\r\n </span>\r\n <span *ngSwitchCase=\"'decimal'\">\r\n {{rowData[field] | number}}\r\n </span>\r\n <span *ngSwitchCase=\"'boolean'\">\r\n <p-checkbox class=\"boolean-data-type\" [(ngModel)]=\"rowData[field]\" binary=\"true\"\r\n [disabled]=\"col.disableCheckBox\">\r\n </p-checkbox>\r\n </span>\r\n <span *ngSwitchCase=\"'html'\">\r\n <div *ngIf=\"rowData[field]==null?'':rowData[field]\" [innerHTML]=\"rowData[field] | safeHtml\"></div>\r\n </span>\r\n <span *ngSwitchCase=\"'metadataStatus'\">\r\n <span *ngIf=\"rowData['rejectReason']\" class=\"label-danger\" [pTooltip]=\"rowData['rejectReason']\"\r\n tooltipStyleClass=\"unset-width\" [escape]=\"false\" tooltipPosition=\"top\">T\u1EEB ch\u1ED1i</span>\r\n <span *ngIf=\"rowData[field] == '0' && !rowData['rejectReason']\" class=\"label-secondary\">Ch\u01B0a\r\n duy\u1EC7t</span>\r\n <span *ngIf=\"rowData[field] == '1' && !rowData['rejectReason']\" class=\"label-warning\">Ch\u1EDD duy\u1EC7t</span>\r\n <span *ngIf=\"rowData[field] == '2'\" class=\"label-primary\">\u0110\u00E3 duy\u1EC7t</span>\r\n </span>\r\n <ng-container *ngSwitchCase=\"'fileUpload'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"fileUploadColumn; context: {$implicit: rowData, field: col.field, fileSetting: col.fileSetting}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'fileManager'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"fileManagerColumn; context: {$implicit: rowData, field: col.field, fileSetting: col.fileSetting}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'string'\">\r\n <ng-container *ngTemplateOutlet=\"contentCellString; context: {$implicit: rowData, field: col.field}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"null\">\r\n <ng-container *ngTemplateOutlet=\"contentCellString; context: {$implicit: rowData, field: col.field}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"getComponentByType(col.dataType)\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, rowIndex, col, expanded, this)\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #contentCellString let-rowData let-field=\"field\">\r\n <span>\r\n <!-- __sv: Short Value -->\r\n <ng-container *ngIf=\"rowData[field + '__sv']\">\r\n <ng-container *ngIf=\"!rowData[field + '__showFull']\">\r\n {{rowData[field + '__sv']}}\r\n <span class=\"toggle-showfull\" (click)=\"toggleShowFull(rowData, field)\" pTooltip=\"B\u1EA5m \u0111\u1EC3 xem th\u00EAm\"\r\n tooltipPosition=\"top\">[...]</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rowData[field + '__showFull']\">\r\n {{rowData[field]}}\r\n <span class=\"toggle-showfull\" (click)=\"toggleShowFull(rowData, field)\">Thu g\u1ECDn</span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!rowData[field + '__sv']\">\r\n {{rowData[field]}}\r\n </ng-container>\r\n </span>\r\n</ng-template>\r\n<ng-template #iconToggleRowGroup let-rowData=\"rowData\" let-expanded=\"expanded\">\r\n <a href=\"javascript:;\" (click)=\"handleToggleRow(rowData, $event)\">\r\n <i style=\"margin-right:5px\" [ngClass]=\"expanded ? 'fas fa-fw fa-caret-down' : 'fas fa-fw fa-caret-right'\"></i>\r\n </a>\r\n</ng-template>\r\n<ng-template #iconToggleRowData let-rowData=\"rowData\" let-expanded=\"expanded\">\r\n <button type=\"button\" pButton pRipple class=\"link-or-action p-button-text p-button-rounded p-button-plain\"\r\n [icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"\r\n (click)=\"handleToggleRow(rowData, $event)\"></button>\r\n</ng-template>\r\n<ng-template #_contentRowGroup let-rowData=\"rowData\" let-groupCol=\"groupCol\" let-groupField=\"_groupField\">\r\n <ng-container [ngTemplateOutlet]=\"contentCell\"\r\n [ngTemplateOutletContext]=\"{rowData: rowData, col: groupCol, field: _groupField}\">\r\n </ng-container>\r\n <span *ngIf=\"setting.columnSetting.showGroupSize\">\r\n ({{rowGroupMetadata[rowData[_groupField]].size}})</span>\r\n</ng-template>\r\n<ng-template #trangThaiV5 let-rowData=\"rowData\">\r\n <div class=\"container-text-workflow\">\r\n <button *ngIf=\"!rowData.__workflowCode && !rowData.hiddenWorkflowAction && !rowData.hiddenStartWorkflow\" pButton\r\n class=\"p-button-text link-or-action\" label=\"B\u1EAFt \u0111\u1EA7u\" style=\"border: 1px solid #7ca9cd;\"\r\n pTooltip=\"B\u1EAFt \u0111\u1EA7u ch\u1EA1y quy tr\u00ECnh\" tooltipPosition=\"top\"\r\n [disabled]=\"rowData.__startingWorkflow && !rowData.__notReadyForStart\"\r\n (click)=\"showFormStartWorkflow(rowData)\"></button>\r\n <ng-container *ngIf=\"rowData.__workflowCode\">\r\n <span class=\"content\">{{rowData.__textTrangThai}}</span>\r\n <button *ngIf=\"!rowData.hiddenWorkflowAction\" type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-rounded\" pTooltip=\"H\u00E0nh \u0111\u1ED9ng\" tooltipPosition=\"top\"\r\n [disabled]=\"showingActionWorkflow\" (click)=\"showActionWorkflow($event, rowData)\"></button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #viewHistory let-rowData=\"rowData\">\r\n <button pButton icon=\"pi pi-calendar\" class=\"p-button-text p-button-rounded link-or-action\" pTooltip=\"Xem l\u1ECBch s\u1EED\"\r\n tooltipPosition=\"top\" (click)=\"viewHistoryWorkflow(setting, rowData)\"></button>\r\n</ng-template>\r\n<ng-template #containerSticky>\r\n <span class=\"fix-sticky top\"></span>\r\n <span class=\"fix-sticky right\"></span>\r\n <!-- <span class=\"fix-sticky bottom\"></span> -->\r\n <span class=\"fix-sticky left\"></span>\r\n</ng-template>\r\n<ng-template #sortIcon let-field=\"field\">\r\n <i class=\"p-sortable-column-icon pi\" style=\"font-size: 0.8em;\"\r\n [ngClass]=\"{'pi-sort-amount-up-alt': field == _sortField && _sortDir === 1, 'pi-sort-amount-down': field == _sortField && _sortDir === -1, 'pi-sort-alt': field != _sortField || _sortDir === 0}\"></i>\r\n</ng-template>\r\n<ng-template #filterDropdown let-col=\"col\">\r\n <div #filterBox style=\"width: 100%; border-radius: 4px;\">\r\n <dropdown *ngIf=\"col && filterSchema.dropdown[col.field]\" [control]=\"filterSchema.dropdown[col.field]\"\r\n [dataSource]=\"filterSchema.dropdown[col.field].dataSource\" [(value)]=\"filterData[col.field]\"\r\n (onHideSmartEvent)=\"onSearch()\" (onShow)=\"onShowFilterDropdownPanel($event)\"\r\n (onHide)=\"onHideFilterDropdownPanel($event)\" (mousedown)=\"initFilterBoxFocus(filterBox)\"></dropdown>\r\n </div>\r\n</ng-template>\r\n<ng-template #filterText let-col=\"col\">\r\n <div #filterBox class=\"text-filter filter-box\" tabindex=\"-1\" (mousedown)=\"initFilterBoxFocus(filterBox)\">\r\n <div tabindex=\"-1\">\r\n <input pInputText type=\"text\" class=\"input-search\" [placeholder]=\"col.label\"\r\n [(ngModel)]=\"filterData[col.field]\" (change)=\"onSearch()\"\r\n (keyup.esc)=\"onClearSearch(filterBox, col.field)\">\r\n </div>\r\n <span [ngClass]=\"{'action-clear': true, 'dirty': filterData[col.field] != null && filterData[col.field] !== ''}\"\r\n [pTooltip]=\"'B\u1ECF filter'\" tooltipPosition=\"top\" (mousedown)=\"onClearSearch(filterBox, col.field)\"\r\n tabindex=\"-1\"><i class=\"pi pi-filter-slash\"></i></span>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"initFilterBoxFocus(filterBox)\">\r\n </after-view-checked>\r\n </div>\r\n</ng-template>\r\n<ng-template #filterNumber let-col=\"col\">\r\n <div #filterBox class=\"number-picker-range filter-box\" tabindex=\"-1\" (mousedown)=\"initFilterBoxFocus(filterBox)\">\r\n <div tabindex=\"-1\">\r\n <tn-number-picker-range #numberRange [maskType]=\"col.dataType\" [(ngModel)]=\"filterData[col.field]\"\r\n [min]=\"col.min\" [max]=\"col.max\" (change)=\"onSearch()\">\r\n </tn-number-picker-range>\r\n </div>\r\n <span\r\n [ngClass]=\"{'action-clear': true, 'dirty': filterData[col.field] && ((filterData[col.field][0] != null && filterData[col.field][0] !== '') || (filterData[col.field][1] != null && filterData[col.field][1] !== ''))}\"\r\n [pTooltip]=\"'B\u1ECF filter'\" tooltipPosition=\"top\" (mousedown)=\"onClearNumberSearch(filterBox, numberRange)\"\r\n tabindex=\"-1\">\r\n <i class=\"pi pi-filter-slash\"></i></span>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"initFilterBoxFocus(filterBox)\">\r\n </after-view-checked>\r\n </div>\r\n</ng-template>\r\n<ng-template #filterDate let-col=\"col\">\r\n <div #filterBox class=\"date-picker-range filter-box\" tabindex=\"-1\" (mousedown)=\"initFilterBoxFocus(filterBox)\">\r\n <div tabindex=\"-1\">\r\n <tn-datetime-picker-range #dateRange [control]=\"filterSchema.dateRange\"\r\n (onChanged)=\"onChangeDateTime($event, col.field)\">\r\n </tn-datetime-picker-range>\r\n </div>\r\n <span\r\n [ngClass]=\"{'action-clear': true, 'dirty': filterData[col.field] && ((filterData[col.field][0] != null && filterData[col.field][0] !== '') || (filterData[col.field][1] != null && filterData[col.field][1] !== ''))}\"\r\n [pTooltip]=\"'B\u1ECF filter'\" tooltipPosition=\"top\"\r\n (mousedown)=\"onClearDateSearch(filterBox, dateRange, col.field)\" tabindex=\"-1\"><i\r\n class=\"pi pi-filter-slash\"></i></span>\r\n <after-view-checked style=\"display: none;\" (loaded)=\"initFilterBoxFocus(filterBox)\">\r\n </after-view-checked>\r\n </div>\r\n</ng-template>\r\n<ng-template #filterBoolean let-col=\"col\">\r\n <div class=\"filter-boolean-box\">\r\n <p-selectButton *ngIf=\"!col.minimizeFilter\"\r\n [options]=\"[{value: true, label: 'C\u00F3', icon: 'pi pi-check'}, {value: false, label: 'Kh\u00F4ng', icon: 'pi pi-times'}]\"\r\n [multiple]=\"true\" [(ngModel)]=\"filterData[col.field]\" (onChange)=\"onChangeBoolean($event, col.field)\">\r\n <ng-template let-item>\r\n <i style=\"padding: 3px 0;\" [class]=\"item.icon\"></i>\r\n </ng-template>\r\n </p-selectButton>\r\n <ng-container *ngIf=\"col.minimizeFilter\">\r\n <button *ngIf=\"!filterData[col.field]\" type=\"button\" pButton icon=\"pi pi-filter-slash\"\r\n class=\"btn-filter-boolean\" (click)=\"showCheckBoxFilterMenu($event, col.field)\"></button>\r\n <button *ngIf=\"filterData[col.field]\" type=\"button\" pButton icon=\"pi pi-filter\"\r\n class=\"btn-filter-boolean p-button-primary\"\r\n (click)=\"showCheckBoxFilterMenu($event, col.field)\"></button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n<ng-template #fileUploadColumn let-field=\"field\" let-rowData let-fileSetting=\"fileSetting\">\r\n <file-upload *ngIf=\"fileSetting.mode == FileUploadMode.usingFileInstanceId\"\r\n [sharedFolderType]=\"fileSetting.control.sharedFolderType\" [readonly]=\"fileSetting.control.readonly\"\r\n [accept]=\"fileSetting.control.accept\" [(ngModel)]=\"rowData[field]\">\r\n </file-upload>\r\n <service-file-upload *ngIf=\"fileSetting.control.mode == FileUploadMode.usingServiceFile\"\r\n [serviceCode]=\"fileSetting.control.serviceCode\" [parentContext]=\"context\" [entity]=\"fileSetting.control.entity\"\r\n [entityKey]=\"rowData[fileSetting.control.entityKeyField]\" [control]=\"fileSetting.control\"\r\n [fileDataService]=\"fileSetting.control.fileDataService\" [(ngModel)]=\"rowData.field\">\r\n </service-file-upload>\r\n</ng-template>\r\n<ng-template #fileManagerColumn let-rowData let-fileSetting=\"fileSetting\" let-field=\"field\">\r\n <file-manager [control]=\"fileSetting.control\" [serviceCode]=\"fileSetting.control.serviceCode\"\r\n [entity]=\"fileSetting.control.entity\" [entityKey]=\"rowData[fileSetting.control.entityKeyField]\"\r\n [readonly]=\"fileSetting.control.readonly\" [layout]=\"fileSetting.control.layout\"\r\n [maxFileSize]=\"fileSetting.control.maxFileSize\" [inTaiLieu]=\"fileSetting.control.inTaiLieu\"\r\n [(value)]=\"rowData[field]\">\r\n </file-manager>\r\n</ng-template>",
|
|
23589
|
-
providers: [
|
|
23689
|
+
providers: [i4$1.DecimalPipe, i4$1.DatePipe],
|
|
23590
23690
|
styles: [".container-table{display:flex;flex-direction:column;overflow:hidden}.container-table .container-table-inner{display:flex;height:auto;max-height:100%;min-height:60px;position:relative}.container-table-inner>tn-custom-scrollbar{width:100%}.cell-checkbox{text-align:center}.pick-color-row{border:1px solid #d1d1d1;border-radius:2px;bottom:0;cursor:pointer;display:flex;flex-wrap:wrap;height:1.4em;left:0;margin:auto;position:absolute;right:0;top:0;width:1.4em}.pick-color-row>div{background:#84d140;border:1px solid #fff;flex:0 0 50%}.pick-color-row>div:nth-child(2){background:#fc6868}.pick-color-row>div:nth-child(3){background:#fbc02d}.pick-color-row>div:nth-child(4){background:#7dc5ff}.cell-header-function{align-items:center;display:flex}.cell-header-function>span{flex:1 1;text-align:center}.cell-header-function button{height:24px;margin:0;padding:0;width:24px}.group-icon{color:#256aa2;font-weight:400}.group-icon i{font-size:.8em;margin-right:5px}.center{text-align:center!important}.row-card{height:100%;left:0;position:absolute;top:0;width:5px}.column-function{min-width:100px;padding:0}.custom-search-area{background-color:#f2f2f2;margin:-.5em -1em .5em;padding-left:.5em;padding-right:.5em}.main-title>h1{font-size:1.2em}.filter-row>th:not(.sticky):not(.chkbox){padding:3px!important}.container-text-workflow{align-items:center;display:flex;justify-content:center}.container-text-workflow .link-or-action{color:#2196f3;cursor:pointer}.container-text-workflow .content{flex:1 1}.btnReload{height:2rem;left:50%;position:absolute;top:50%;transform:translate(-50%,calc(-50% - 1px));width:2rem}.toggle-showfull{color:#00f;cursor:pointer;font-size:.8rem;font-weight:700;white-space:nowrap}.col-share-permission>div:not(:last-child){margin-bottom:5px}.advance-search-container{display:flex;justify-content:flex-end}.btn-filter-boolean{height:26px;width:26px}.btn-filter-boolean:not(.p-button-primary),.btn-filter-boolean:not(.p-button-primary):hover{background:#f5f6f8;border-color:#ced4da;color:#6c757d}::ng-deep crud-list advance-search{display:block;flex:1;max-width:400px}::ng-deep crud-list .ps__rail-x,::ng-deep crud-list .ps__rail-y{z-index:5}::ng-deep crud-list .main-title>*>h1{font-size:1.2em}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter{z-index:999}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th.cell-fixed-filter .fixed-filter{min-width:200px;position:fixed;z-index:10}::ng-deep crud-list .p-datatable .p-datatable-thead>tr>th .container-icon-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}::ng-deep crud-list .check-all-custom{height:0;position:absolute;width:0}::ng-deep crud-list .cell-header-filter{position:relative}::ng-deep crud-list .cell-header-filter .tn-dropdown{height:32px}::ng-deep crud-list .cell-header-filter tn-mask .p-inputtext{width:100%}::ng-deep crud-list .cell-header-filter .filter-box{background-color:#fff;border-radius:3px;display:flex;min-width:0}::ng-deep crud-list .cell-header-filter .filter-box>div{border:1px solid #ced4da;border-radius:3px 0 0 3px;border-right:none;flex:1;outline:none;overflow:hidden}::ng-deep crud-list .cell-header-filter .filter-box>span{align-items:center;background:#f5f6f8;border:1px solid #ced4da;color:#6c757d;cursor:pointer;display:inline-flex;flex-basis:32px;height:32px;justify-content:center;min-width:unset;outline:none}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear{border-radius:0 3px 3px 0}::ng-deep crud-list .cell-header-filter .filter-box>span.action-clear.dirty{color:#008eff}::ng-deep crud-list .cell-header-filter .filter-box input{border:none;box-shadow:none!important;padding-left:5px;padding-right:5px}::ng-deep crud-list .cell-header-filter .filter-box:not(.no-transition){transition:min-width .1s}::ng-deep crud-list .cell-header-filter .filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter .p-multiselect-label.p-placeholder{padding-left:.5rem;padding-right:.5rem}::ng-deep crud-list .cell-header-filter.focus-within,::ng-deep crud-list .cell-header-filter:focus-within{z-index:10!important}::ng-deep crud-list .cell-header-filter.focus-within .filter-boolean-box .p-button,::ng-deep crud-list .cell-header-filter:focus-within .filter-boolean-box .p-button{z-index:10}::ng-deep crud-list .cell-header-filter.focus-within .filter-box>div,::ng-deep crud-list .cell-header-filter:focus-within .filter-box>div{border-color:#2196f3;box-shadow:0 0 0 .2rem #a6d5fa;z-index:0}::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box,::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box{box-shadow:5px 0 15px 1px rgba(0,0,0,.27058823529411763);min-width:250px;position:absolute;top:calc(50% - 16px);z-index:2}::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>div,::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>div{border-color:#2196f3;box-shadow:0 0 0 .2rem #a6d5fa;flex:1;z-index:0}::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box>span.action-clear,::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box>span.action-clear{display:flex}::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter,::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter{min-width:140px}::ng-deep crud-list .cell-header-filter.focus-within .short-filter-box.boolean-filter>div,::ng-deep crud-list .cell-header-filter:focus-within .short-filter-box.boolean-filter>div{flex:0 0 109px;width:109px}::ng-deep crud-list .cell-header-filter.focus-within:nth-last-child(2) .short-filter-box,::ng-deep crud-list .cell-header-filter:focus-within:nth-last-child(2) .short-filter-box{left:50%;transform:translateX(-50%)}::ng-deep crud-list .cell-header-filter:last-child .filter-box{right:3px}::ng-deep crud-list .table-border-line{background-color:#eee;position:absolute;z-index:5}::ng-deep crud-list .table-border-line.--left,::ng-deep crud-list .table-border-line.--right{bottom:0;top:0;width:1px}::ng-deep crud-list .table-border-line.--bottom,::ng-deep crud-list .table-border-line.--top{height:1px;left:0;right:0}::ng-deep crud-list .table-border-line.--left{left:0}::ng-deep crud-list .table-border-line.--right{right:0}::ng-deep crud-list .table-border-line.--top{top:0}::ng-deep crud-list .table-border-line.--bottom{bottom:0}::ng-deep crud-list .filter-boolean-box{text-align:center}::ng-deep crud-list .filter-boolean-box .p-selectbutton{white-space:nowrap}::ng-deep crud-list .custom-search-area crud-form{width:100%}::ng-deep crud-list .custom-search-area .main-container-search-inner .container-control{overflow:hidden;padding-bottom:0}::ng-deep crud-list>p-contextmenu{display:none}@media (max-width:640px){::ng-deep crud-list .--table-responsive .p-datatable-wrapper{padding:1px}}"]
|
|
23591
23691
|
},] }
|
|
23592
23692
|
];
|
|
@@ -23887,15 +23987,15 @@
|
|
|
23887
23987
|
var moduleConfigService = _injector.get(ModuleConfigService);
|
|
23888
23988
|
_this.environment = moduleConfigService.getConfig().environment;
|
|
23889
23989
|
_this._notifierService = _this._injector.get(NotifierService);
|
|
23890
|
-
_this._activatedRoute = _this._injector.get(i3
|
|
23891
|
-
_this._router = _this._injector.get(i3
|
|
23990
|
+
_this._activatedRoute = _this._injector.get(i3.ActivatedRoute);
|
|
23991
|
+
_this._router = _this._injector.get(i3.Router);
|
|
23892
23992
|
_this._customRouterService = _this._injector.get(CustomRouterService);
|
|
23893
23993
|
_this._listHelperService = _this._injector.get(ListHelperService);
|
|
23894
23994
|
_this._commonService = _this._injector.get(CommonService);
|
|
23895
23995
|
_this._translateService = _this._injector.get(i2.TranslateService);
|
|
23896
23996
|
_this._exportService = _this._injector.get(ExportService);
|
|
23897
23997
|
_this._crudService = _this._injector.get(CrudService);
|
|
23898
|
-
_this._datePipe = _this._injector.get(
|
|
23998
|
+
_this._datePipe = _this._injector.get(i4$1.DatePipe);
|
|
23899
23999
|
_this._cd = _this._injector.get(i0.ChangeDetectorRef);
|
|
23900
24000
|
_this._userService = _this._injector.get(UserService);
|
|
23901
24001
|
_this._masterDataService = _this._injector.get(MasterDataService);
|
|
@@ -23904,6 +24004,7 @@
|
|
|
23904
24004
|
_this._workflowPermissionDetailService = _this._injector.get(WorkflowPermissionDetailService);
|
|
23905
24005
|
_this._stateMachinesService = _this._injector.get(StateMachinesService);
|
|
23906
24006
|
_this._congViecServiceInBase = _this._injector.get(CongViecService);
|
|
24007
|
+
_this._loggerService = _this._injector.get(LoggerService);
|
|
23907
24008
|
_this.setting.key = _this._commonService.guid();
|
|
23908
24009
|
return _this;
|
|
23909
24010
|
}
|
|
@@ -24649,7 +24750,7 @@
|
|
|
24649
24750
|
_this._notifierService.showWarning('Bạn không có quyền xem bản ghi');
|
|
24650
24751
|
}
|
|
24651
24752
|
}).catch(function (err) {
|
|
24652
|
-
|
|
24753
|
+
_this._loggerService.logError('error on get detail from querystring', err);
|
|
24653
24754
|
_this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
|
|
24654
24755
|
});
|
|
24655
24756
|
}
|
|
@@ -24672,7 +24773,7 @@
|
|
|
24672
24773
|
_this._notifierService.showWarning('Bạn không có quyền xem bản ghi');
|
|
24673
24774
|
}
|
|
24674
24775
|
}); }).catch(function (err) {
|
|
24675
|
-
|
|
24776
|
+
_this._loggerService.logError('error on get detail from querystring', err);
|
|
24676
24777
|
_this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
|
|
24677
24778
|
});
|
|
24678
24779
|
};
|
|
@@ -25611,7 +25712,7 @@
|
|
|
25611
25712
|
{ type: PermissionService },
|
|
25612
25713
|
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
25613
25714
|
{ type: UserService },
|
|
25614
|
-
{ type: i3
|
|
25715
|
+
{ type: i3.Router },
|
|
25615
25716
|
{ type: AuthenService },
|
|
25616
25717
|
{ type: GlobalService }
|
|
25617
25718
|
]; };
|
|
@@ -26314,7 +26415,7 @@
|
|
|
26314
26415
|
];
|
|
26315
26416
|
NotFoundComponent.ctorParameters = function () { return [
|
|
26316
26417
|
{ type: i0.Injector },
|
|
26317
|
-
{ type: i3
|
|
26418
|
+
{ type: i3.Router },
|
|
26318
26419
|
{ type: UserService },
|
|
26319
26420
|
{ type: ModuleConfigService },
|
|
26320
26421
|
{ type: AuthenService }
|
|
@@ -26396,7 +26497,7 @@
|
|
|
26396
26497
|
AccessDeniedComponent.ctorParameters = function () { return [
|
|
26397
26498
|
{ type: i0.Injector },
|
|
26398
26499
|
{ type: UserService },
|
|
26399
|
-
{ type: i3
|
|
26500
|
+
{ type: i3.Router },
|
|
26400
26501
|
{ type: ModuleConfigService },
|
|
26401
26502
|
{ type: AuthenService }
|
|
26402
26503
|
]; };
|
|
@@ -26444,7 +26545,7 @@
|
|
|
26444
26545
|
];
|
|
26445
26546
|
UniversalLinkProcessorComponent.ctorParameters = function () { return [
|
|
26446
26547
|
{ type: i0.Injector },
|
|
26447
|
-
{ type: i3
|
|
26548
|
+
{ type: i3.ActivatedRoute }
|
|
26448
26549
|
]; };
|
|
26449
26550
|
|
|
26450
26551
|
var TraceInterceptor = /** @class */ (function () {
|
|
@@ -26523,7 +26624,7 @@
|
|
|
26523
26624
|
if (!language) {
|
|
26524
26625
|
language = 'vi';
|
|
26525
26626
|
}
|
|
26526
|
-
|
|
26627
|
+
i4$1.registerLocaleData(locale, language);
|
|
26527
26628
|
};
|
|
26528
26629
|
PublicFunction.importRootModule = function (environment) {
|
|
26529
26630
|
return [
|
|
@@ -26574,7 +26675,7 @@
|
|
|
26574
26675
|
},
|
|
26575
26676
|
i1.MessageService,
|
|
26576
26677
|
i1.ConfirmationService,
|
|
26577
|
-
|
|
26678
|
+
i4$1.DatePipe,
|
|
26578
26679
|
UserFormatPipe,
|
|
26579
26680
|
UsersFormatPipe,
|
|
26580
26681
|
HtmlFormatPipe,
|
|
@@ -26583,7 +26684,7 @@
|
|
|
26583
26684
|
OrganizationsFormatPipe,
|
|
26584
26685
|
MasterDataPipe,
|
|
26585
26686
|
NotifierService,
|
|
26586
|
-
|
|
26687
|
+
i4$1.DecimalPipe,
|
|
26587
26688
|
i2.TranslateService,
|
|
26588
26689
|
EntityWorkflowSettingService,
|
|
26589
26690
|
EntityWorkflowHistoryService,
|
|
@@ -29609,7 +29710,7 @@
|
|
|
29609
29710
|
};
|
|
29610
29711
|
return GenericGuardChildService;
|
|
29611
29712
|
}());
|
|
29612
|
-
GenericGuardChildService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GenericGuardChildService_Factory() { return new GenericGuardChildService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3
|
|
29713
|
+
GenericGuardChildService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GenericGuardChildService_Factory() { return new GenericGuardChildService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(NotifierService)); }, token: GenericGuardChildService, providedIn: "root" });
|
|
29613
29714
|
GenericGuardChildService.decorators = [
|
|
29614
29715
|
{ type: i0.Injectable, args: [{
|
|
29615
29716
|
providedIn: 'root'
|
|
@@ -29618,7 +29719,7 @@
|
|
|
29618
29719
|
GenericGuardChildService.ctorParameters = function () { return [
|
|
29619
29720
|
{ type: UserService },
|
|
29620
29721
|
{ type: PermissionService },
|
|
29621
|
-
{ type: i3
|
|
29722
|
+
{ type: i3.Router },
|
|
29622
29723
|
{ type: i0.Injector },
|
|
29623
29724
|
{ type: NotifierService }
|
|
29624
29725
|
]; };
|
|
@@ -30532,7 +30633,7 @@
|
|
|
30532
30633
|
// Loại export.
|
|
30533
30634
|
this._type = JobTypes.SingnalR;
|
|
30534
30635
|
this._code = code;
|
|
30535
|
-
var datepipe = new
|
|
30636
|
+
var datepipe = new i4$1.DatePipe('en-US');
|
|
30536
30637
|
var formattedDate = datepipe.transform(new Date(), 'ddMMyyyy_hhmmss');
|
|
30537
30638
|
this._fileName = fileName + "_" + formattedDate + TemplateConstant.EXCEL_EXTENSION;
|
|
30538
30639
|
this._data = data || {};
|
|
@@ -31261,7 +31362,7 @@
|
|
|
31261
31362
|
_this.messageWaiting = __spread(data.message);
|
|
31262
31363
|
});
|
|
31263
31364
|
this._router.events.subscribe(function (x) {
|
|
31264
|
-
if (x instanceof i3
|
|
31365
|
+
if (x instanceof i3.NavigationStart) {
|
|
31265
31366
|
_this.rootData.httpRequestList = [];
|
|
31266
31367
|
}
|
|
31267
31368
|
});
|
|
@@ -31729,14 +31830,14 @@
|
|
|
31729
31830
|
{ type: i4.OAuthService },
|
|
31730
31831
|
{ type: AuthenService },
|
|
31731
31832
|
{ type: UserService },
|
|
31732
|
-
{ type: i3
|
|
31833
|
+
{ type: i3.Router },
|
|
31733
31834
|
{ type: platformBrowser.Title },
|
|
31734
31835
|
{ type: SignalRService },
|
|
31735
31836
|
{ type: StorageUpdatedService },
|
|
31736
31837
|
{ type: CustomRouterService },
|
|
31737
31838
|
{ type: ApplicationContextService },
|
|
31738
31839
|
{ type: ComponentContextService },
|
|
31739
|
-
{ type: i3
|
|
31840
|
+
{ type: i3.ActivatedRoute },
|
|
31740
31841
|
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
31741
31842
|
{ type: i0.ChangeDetectorRef },
|
|
31742
31843
|
{ type: TnClientService },
|
|
@@ -42413,7 +42514,7 @@
|
|
|
42413
42514
|
};
|
|
42414
42515
|
return DhvinhGuardService;
|
|
42415
42516
|
}());
|
|
42416
|
-
DhvinhGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DhvinhGuardService_Factory() { return new DhvinhGuardService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3
|
|
42517
|
+
DhvinhGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DhvinhGuardService_Factory() { return new DhvinhGuardService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(NotifierService)); }, token: DhvinhGuardService, providedIn: "root" });
|
|
42417
42518
|
DhvinhGuardService.decorators = [
|
|
42418
42519
|
{ type: i0.Injectable, args: [{
|
|
42419
42520
|
providedIn: 'root'
|
|
@@ -42422,7 +42523,7 @@
|
|
|
42422
42523
|
DhvinhGuardService.ctorParameters = function () { return [
|
|
42423
42524
|
{ type: UserService },
|
|
42424
42525
|
{ type: PermissionService },
|
|
42425
|
-
{ type: i3
|
|
42526
|
+
{ type: i3.Router },
|
|
42426
42527
|
{ type: NotifierService }
|
|
42427
42528
|
]; };
|
|
42428
42529
|
|
|
@@ -42546,7 +42647,7 @@
|
|
|
42546
42647
|
};
|
|
42547
42648
|
return GuardSvService;
|
|
42548
42649
|
}());
|
|
42549
|
-
GuardSvService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GuardSvService_Factory() { return new GuardSvService(i0.ɵɵinject(UserService), i0.ɵɵinject(i3
|
|
42650
|
+
GuardSvService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GuardSvService_Factory() { return new GuardSvService(i0.ɵɵinject(UserService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(NotifierService)); }, token: GuardSvService, providedIn: "root" });
|
|
42550
42651
|
GuardSvService.decorators = [
|
|
42551
42652
|
{ type: i0.Injectable, args: [{
|
|
42552
42653
|
providedIn: 'root'
|
|
@@ -42554,7 +42655,7 @@
|
|
|
42554
42655
|
];
|
|
42555
42656
|
GuardSvService.ctorParameters = function () { return [
|
|
42556
42657
|
{ type: UserService },
|
|
42557
|
-
{ type: i3
|
|
42658
|
+
{ type: i3.Router },
|
|
42558
42659
|
{ type: NotifierService }
|
|
42559
42660
|
]; };
|
|
42560
42661
|
|
|
@@ -42601,7 +42702,7 @@
|
|
|
42601
42702
|
};
|
|
42602
42703
|
return GuardService;
|
|
42603
42704
|
}());
|
|
42604
|
-
GuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GuardService_Factory() { return new GuardService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3
|
|
42705
|
+
GuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GuardService_Factory() { return new GuardService(i0.ɵɵinject(UserService), i0.ɵɵinject(PermissionService), i0.ɵɵinject(i3.Router), i0.ɵɵinject(NotifierService)); }, token: GuardService, providedIn: "root" });
|
|
42605
42706
|
GuardService.decorators = [
|
|
42606
42707
|
{ type: i0.Injectable, args: [{
|
|
42607
42708
|
providedIn: 'root'
|
|
@@ -42610,7 +42711,7 @@
|
|
|
42610
42711
|
GuardService.ctorParameters = function () { return [
|
|
42611
42712
|
{ type: UserService },
|
|
42612
42713
|
{ type: PermissionService },
|
|
42613
|
-
{ type: i3
|
|
42714
|
+
{ type: i3.Router },
|
|
42614
42715
|
{ type: NotifierService }
|
|
42615
42716
|
]; };
|
|
42616
42717
|
|
|
@@ -42672,6 +42773,10 @@
|
|
|
42672
42773
|
_this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.notificationCRUDEndpoint;
|
|
42673
42774
|
return _this;
|
|
42674
42775
|
}
|
|
42776
|
+
NotificationService.prototype.getAllUserUnreadNotification = function () {
|
|
42777
|
+
var url = this.serviceUri + "/AllUserUnreadNotification";
|
|
42778
|
+
return this.defaultGet(url);
|
|
42779
|
+
};
|
|
42675
42780
|
NotificationService.prototype.getAllUserReadNotification = function () {
|
|
42676
42781
|
var url = this.serviceUri + "/AllUserReadNotification";
|
|
42677
42782
|
return this.defaultGet(url);
|
|
@@ -43637,7 +43742,7 @@
|
|
|
43637
43742
|
{ type: i0.Injector },
|
|
43638
43743
|
{ type: ModuleConfigService },
|
|
43639
43744
|
{ type: UserService },
|
|
43640
|
-
{ type: i3
|
|
43745
|
+
{ type: i3.Router },
|
|
43641
43746
|
{ type: AuthenService }
|
|
43642
43747
|
]; };
|
|
43643
43748
|
|
|
@@ -45995,7 +46100,7 @@
|
|
|
45995
46100
|
];
|
|
45996
46101
|
AppTopBarV1Component.ctorParameters = function () { return [
|
|
45997
46102
|
{ type: CustomRouterService },
|
|
45998
|
-
{ type: i3
|
|
46103
|
+
{ type: i3.Router },
|
|
45999
46104
|
{ type: CommonService },
|
|
46000
46105
|
{ type: AuthenService },
|
|
46001
46106
|
{ type: i0.ChangeDetectorRef },
|
|
@@ -46443,7 +46548,7 @@
|
|
|
46443
46548
|
];
|
|
46444
46549
|
AppTopBarV2Component.ctorParameters = function () { return [
|
|
46445
46550
|
{ type: CustomRouterService },
|
|
46446
|
-
{ type: i3
|
|
46551
|
+
{ type: i3.Router },
|
|
46447
46552
|
{ type: CommonService },
|
|
46448
46553
|
{ type: AuthenService },
|
|
46449
46554
|
{ type: i0.ChangeDetectorRef },
|
|
@@ -46564,7 +46669,7 @@
|
|
|
46564
46669
|
},] }
|
|
46565
46670
|
];
|
|
46566
46671
|
AppSubMenuComponent.ctorParameters = function () { return [
|
|
46567
|
-
{ type: i3
|
|
46672
|
+
{ type: i3.Router },
|
|
46568
46673
|
{ type: CommonService },
|
|
46569
46674
|
{ type: i0.Injector },
|
|
46570
46675
|
{ type: CustomRouterService }
|
|
@@ -46600,7 +46705,7 @@
|
|
|
46600
46705
|
}
|
|
46601
46706
|
this._router
|
|
46602
46707
|
.events
|
|
46603
|
-
.pipe(operators.filter(function (event) { return event instanceof i3
|
|
46708
|
+
.pipe(operators.filter(function (event) { return event instanceof i3.NavigationEnd; }))
|
|
46604
46709
|
.subscribe(function (event) {
|
|
46605
46710
|
for (var i in _this.model) {
|
|
46606
46711
|
var item = _this.model[i];
|
|
@@ -46735,7 +46840,7 @@
|
|
|
46735
46840
|
AppMenuComponent.ctorParameters = function () { return [
|
|
46736
46841
|
{ type: MenuService },
|
|
46737
46842
|
{ type: i2.TranslateService },
|
|
46738
|
-
{ type: i3
|
|
46843
|
+
{ type: i3.Router },
|
|
46739
46844
|
{ type: ApplicationContextService },
|
|
46740
46845
|
{ type: CommonService },
|
|
46741
46846
|
{ type: ModuleConfigService },
|
|
@@ -47208,7 +47313,7 @@
|
|
|
47208
47313
|
];
|
|
47209
47314
|
AppTopBarComponent.ctorParameters = function () { return [
|
|
47210
47315
|
{ type: CustomRouterService },
|
|
47211
|
-
{ type: i3
|
|
47316
|
+
{ type: i3.Router },
|
|
47212
47317
|
{ type: CommonService },
|
|
47213
47318
|
{ type: AuthenService },
|
|
47214
47319
|
{ type: i0.ChangeDetectorRef },
|
|
@@ -51803,13 +51908,13 @@
|
|
|
51803
51908
|
useExisting: i0.forwardRef(function () { return MaskComponent; }),
|
|
51804
51909
|
multi: true
|
|
51805
51910
|
},
|
|
51806
|
-
|
|
51911
|
+
i4$1.DecimalPipe
|
|
51807
51912
|
],
|
|
51808
51913
|
styles: [".tn-mask-viewMode>span{margin-right:3px}.tn-mask-viewMode>span:last-child{margin-right:0}"]
|
|
51809
51914
|
},] }
|
|
51810
51915
|
];
|
|
51811
51916
|
MaskComponent.ctorParameters = function () { return [
|
|
51812
|
-
{ type:
|
|
51917
|
+
{ type: i4$1.DecimalPipe }
|
|
51813
51918
|
]; };
|
|
51814
51919
|
MaskComponent.propDecorators = {
|
|
51815
51920
|
maskType: [{ type: i0.Input }],
|
|
@@ -51949,7 +52054,7 @@
|
|
|
51949
52054
|
},] }
|
|
51950
52055
|
];
|
|
51951
52056
|
NumberPickerRangeComponent.ctorParameters = function () { return [
|
|
51952
|
-
{ type:
|
|
52057
|
+
{ type: i4$1.DecimalPipe }
|
|
51953
52058
|
]; };
|
|
51954
52059
|
NumberPickerRangeComponent.propDecorators = {
|
|
51955
52060
|
readonly: [{ type: i0.Input }],
|
|
@@ -53413,7 +53518,7 @@
|
|
|
53413
53518
|
{ type: PermissionService },
|
|
53414
53519
|
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
53415
53520
|
{ type: UserService },
|
|
53416
|
-
{ type: i3
|
|
53521
|
+
{ type: i3.Router },
|
|
53417
53522
|
{ type: AuthenService },
|
|
53418
53523
|
{ type: GlobalService }
|
|
53419
53524
|
]; };
|
|
@@ -53623,7 +53728,7 @@
|
|
|
53623
53728
|
{ type: PermissionService },
|
|
53624
53729
|
{ type: ngxDeviceDetector.DeviceDetectorService },
|
|
53625
53730
|
{ type: UserService },
|
|
53626
|
-
{ type: i3
|
|
53731
|
+
{ type: i3.Router },
|
|
53627
53732
|
{ type: AuthenService },
|
|
53628
53733
|
{ type: GlobalService }
|
|
53629
53734
|
]; };
|
|
@@ -55075,7 +55180,7 @@
|
|
|
55075
55180
|
_this.bounceNoti = true;
|
|
55076
55181
|
_this.afterGetNotication();
|
|
55077
55182
|
}); }),
|
|
55078
|
-
this._notificationService.
|
|
55183
|
+
this._notificationService.getAllUserUnreadNotification().then(function (res) {
|
|
55079
55184
|
if (res.data == null || !res.success) {
|
|
55080
55185
|
_this._notifierService.showWarningByResponse(res);
|
|
55081
55186
|
return;
|
|
@@ -55218,7 +55323,7 @@
|
|
|
55218
55323
|
{ type: SignalRService },
|
|
55219
55324
|
{ type: UserV5Service },
|
|
55220
55325
|
{ type: NotificationService },
|
|
55221
|
-
{ type: i3
|
|
55326
|
+
{ type: i3.Router },
|
|
55222
55327
|
{ type: ModuleConfigService },
|
|
55223
55328
|
{ type: CrudService },
|
|
55224
55329
|
{ type: NotifierService },
|
|
@@ -58446,7 +58551,7 @@
|
|
|
58446
58551
|
var Button = /** @class */ (function () {
|
|
58447
58552
|
function Button() {
|
|
58448
58553
|
this.icon = '';
|
|
58449
|
-
this.iconPos = '
|
|
58554
|
+
this.iconPos = 'left';
|
|
58450
58555
|
this.loadingIcon = '';
|
|
58451
58556
|
}
|
|
58452
58557
|
return Button;
|
|
@@ -58514,16 +58619,16 @@
|
|
|
58514
58619
|
if (this.setting == null || this.idModel == null) {
|
|
58515
58620
|
return;
|
|
58516
58621
|
}
|
|
58622
|
+
this.showActionWorkflow();
|
|
58517
58623
|
};
|
|
58518
|
-
WorkflowButtonComponent.prototype.showActionWorkflow = function (
|
|
58624
|
+
WorkflowButtonComponent.prototype.showActionWorkflow = function () {
|
|
58519
58625
|
return __awaiter(this, void 0, void 0, function () {
|
|
58520
58626
|
var _this = this;
|
|
58521
58627
|
return __generator(this, function (_a) {
|
|
58522
58628
|
this.showingActionWorkflow = true;
|
|
58523
58629
|
this.setting.baseService.getDetail(this.idModel)
|
|
58524
58630
|
.then(function (res) { return __awaiter(_this, void 0, void 0, function () {
|
|
58525
|
-
var currentUser,
|
|
58526
|
-
var _this = this;
|
|
58631
|
+
var currentUser, _a;
|
|
58527
58632
|
return __generator(this, function (_b) {
|
|
58528
58633
|
switch (_b.label) {
|
|
58529
58634
|
case 0:
|
|
@@ -58535,20 +58640,13 @@
|
|
|
58535
58640
|
if (currentUser == null) {
|
|
58536
58641
|
return [2 /*return*/];
|
|
58537
58642
|
}
|
|
58538
|
-
|
|
58539
|
-
return [4 /*yield*/, this._workflowPermissionDetailService.appendInfoForWorkflow(currentUser.userId, dataSource)];
|
|
58643
|
+
return [4 /*yield*/, this._workflowPermissionDetailService.appendInfoForWorkflowSingle(currentUser.userId, res.data)];
|
|
58540
58644
|
case 1:
|
|
58541
58645
|
_b.sent();
|
|
58542
|
-
finalData = dataSource[0];
|
|
58543
58646
|
_a = this;
|
|
58544
|
-
return [4 /*yield*/, this.getButtonContext(
|
|
58647
|
+
return [4 /*yield*/, this.getButtonContext(res.data)];
|
|
58545
58648
|
case 2:
|
|
58546
58649
|
_a.workflowButtons = _b.sent();
|
|
58547
|
-
setTimeout(function (f) {
|
|
58548
|
-
_this.contextMenu.show(evt);
|
|
58549
|
-
}, 10);
|
|
58550
|
-
evt.preventDefault();
|
|
58551
|
-
evt.stopPropagation();
|
|
58552
58650
|
this.showingActionWorkflow = false;
|
|
58553
58651
|
return [2 /*return*/];
|
|
58554
58652
|
}
|
|
@@ -58780,7 +58878,7 @@
|
|
|
58780
58878
|
return;
|
|
58781
58879
|
var name = '';
|
|
58782
58880
|
if (typeof crudListSetting.displayField == 'string') {
|
|
58783
|
-
name = rowData[
|
|
58881
|
+
name = rowData[crudListSetting.displayField];
|
|
58784
58882
|
}
|
|
58785
58883
|
else {
|
|
58786
58884
|
name = (crudListSetting.displayField)(rowData);
|
|
@@ -58868,8 +58966,7 @@
|
|
|
58868
58966
|
};
|
|
58869
58967
|
WorkflowButtonComponent.prototype.hideWaitBox = function (message) {
|
|
58870
58968
|
this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_WAIT_BOX, {
|
|
58871
|
-
show:
|
|
58872
|
-
message: message
|
|
58969
|
+
show: false
|
|
58873
58970
|
});
|
|
58874
58971
|
};
|
|
58875
58972
|
WorkflowButtonComponent.prototype.handleResponse = function (res, message, callBack, callBackError) {
|
|
@@ -58908,8 +59005,8 @@
|
|
|
58908
59005
|
WorkflowButtonComponent.decorators = [
|
|
58909
59006
|
{ type: i0.Component, args: [{
|
|
58910
59007
|
selector: 'workflow-button',
|
|
58911
|
-
template: "<
|
|
58912
|
-
styles: [".workflowButtons{display:flex;flex:1 1}.workflowButtons>button{min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}"]
|
|
59008
|
+
template: "<ng-container *ngIf=\"workflowButtons\">\r\n <div class=\"workflowButtons\">\r\n <div *ngFor=\"let button of workflowButtons\">\r\n <button pButton class=\"p-button-text p-button-rounded link-or-action\" type=\"button\" [label]=\"button.label\"\r\n [icon]=\"button.icon\" (click)=\"button.command()\"></button>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<tn-dialog *ngIf=\"processWorkflowModel.showEditForm\" #dialog [header]=\"processWorkflowModel.header | translate\"\r\n [popupSize]=\"processWorkflowModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"processWorkflowModel.showEditForm = false\">\r\n <div style=\"height: 100%; padding: 1rem\">\r\n <process-workflow-form #formBase [businessSetting]=\"processWorkflowModel.data.setting\" [item]=\"currentItem\"\r\n [workflow]=\"processWorkflowModel.data.workflow\" [action]=\"processWorkflowModel.data.action\"\r\n (onSaved)=\"handleProcessedWorkflowBase()\" (onCancel)=\"processWorkflowModel.showEditForm = false\">\r\n </process-workflow-form>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"choYKienModel.showEditForm\" #dialog [header]=\"choYKienModel.header | translate\"\r\n [popupSize]=\"choYKienModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"choYKienModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <cho-y-kien-form #formBase [bussinessSetting]=\"choYKienModel.data.setting\"\r\n [rowItem]=\"choYKienModel.data.rowData\" (onSaved)=\"choYKienModel.showEditForm = false\"\r\n (onCancel)=\"choYKienModel.showEditForm = false\">\r\n </cho-y-kien-form>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"workflowHistoryModel.showEditForm\" #dialog [header]=\"workflowHistoryModel.header | translate\"\r\n [popupSize]=\"workflowHistoryModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"workflowHistoryModel.showEditForm = false\">\r\n <div style=\"height: 100%\">\r\n <workflow-history-new #formBase [businessSetting]=\"workflowHistoryModel.data.setting\"\r\n [tableName]=\"workflowHistoryModel.data.tableName\" [item]=\"currentItem\"\r\n [workflowSetting]=\"workflowHistoryModel.data.workflowSetting\"\r\n (onCancel)=\"workflowHistoryModel.showEditForm = false\">\r\n </workflow-history-new>\r\n </div>\r\n</tn-dialog>\r\n<tn-dialog *ngIf=\"detailTaskModel.showEditForm\" #dialog [header]=\"detailTaskModel.header | translate\"\r\n [popupSize]=\"detailTaskModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"\r\n (onHide)=\"detailTaskModel.showEditForm = false\">\r\n <base-congviec-form #formBase [model]=\"detailTaskModel.data.taskFormModel\" [forceOnlyView]=\"true\"\r\n (onCancel)=\"detailTaskModel.showEditForm = false\">\r\n </base-congviec-form>\r\n</tn-dialog>\r\n\r\n<!--<tn-dialog *ngIf=\"permissionSharingModel.showEditForm\" #dialog [header]=\"permissionSharingModel.header | translate\"-->\r\n<!-- [popupSize]=\"permissionSharingModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"-->\r\n<!-- (onHide)=\"permissionSharingModel.showEditForm = false\">-->\r\n<!-- <div style=\"height: 100%\">-->\r\n<!-- <permission-sharing #formBase [item]=\"rowDataCurrent\" [baseService]=\"setting.baseService\"-->\r\n<!-- (onCancel)=\"permissionSharingModel.showEditForm = false\">-->\r\n<!-- </permission-sharing>-->\r\n<!-- </div>-->\r\n<!--</tn-dialog>-->\r\n<!--<tn-dialog *ngIf=\"permissionListModel.showEditForm\" #dialog [header]=\"permissionListModel.header | translate\"-->\r\n<!-- [popupSize]=\"permissionListModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\" [useDefaultScrollBar]=\"true\"-->\r\n<!-- (onHide)=\"permissionListModel.showEditForm = false\">-->\r\n<!-- <div style=\"height: 100%\">-->\r\n<!-- <workflow-permission #formBase [item]=\"rowDataCurrent\" [businessSetting]=\"setting\"-->\r\n<!-- (onCancel)=\"permissionListModel.showEditForm = false\">-->\r\n<!-- </workflow-permission>-->\r\n<!-- </div>-->\r\n<!--</tn-dialog>-->\r\n<!--<workflow-history-dialog *ngIf=\"showHistoryWorkflow\" [baseService]=\"setting.baseService\" [item]=\"currentItem\"-->\r\n<!-- [workflowSetting]=\"setting.workflowSetting\" (onHide)=\"handleHideHistoryWorkflow()\">-->\r\n<!--</workflow-history-dialog>-->\r\n<!--<tn-dialog *ngIf=\"startWorkflowModel.showEditForm\" #dialog [header]=\"startWorkflowModel.header | translate\"-->\r\n<!-- [popupSize]=\"startWorkflowModel.popupSize\" [scrollBarStyleClass]=\"'fit-content'\"-->\r\n<!-- (onHide)=\"startWorkflowModel.showEditForm = false\">-->\r\n<!-- <div style=\"height: 100%\">-->\r\n<!-- <start-workflow #formBase [workflows]=\"startWorkflowModel.data.workflows\"-->\r\n<!-- [defaultWorkflow]=\"startWorkflowModel.data.defaultWorkflow\"-->\r\n<!-- (onCancel)=\"startWorkflowModel.showEditForm = false\" (onSaved)=\"handleStartWorkflowFromDialog($event)\">-->\r\n<!-- </start-workflow>-->\r\n<!-- </div>-->\r\n<!--</tn-dialog>-->\r\n<!--<tn-dialog *ngIf=\"congViecModel.showEditForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"-->\r\n<!-- [header]=\"congViecModel.header | translate\" [popupSize]=\"congViecModel.popupSize\"-->\r\n<!-- (onHide)=\"congViecModel.showEditForm = false\">-->\r\n<!-- <base-congviec-form #formBase [parentSetting]=\"congViecModel.data.congViecSetting\"-->\r\n<!-- [model]=\"congViecModel.data.model\" (onSaved)=\"congViecModel.showEditForm = false;getData()\"-->\r\n<!-- (onCancel)=\"congViecModel.showEditForm = false\">-->\r\n<!-- </base-congviec-form>-->\r\n<!--</tn-dialog>-->\r\n<!--<tn-dialog *ngIf=\"shareLinkModel.showEditForm\" #dialog [styleClass]=\"'congviec-form tn-form-dialog'\"-->\r\n<!-- [header]=\"shareLinkModel.header | translate\" [popupSize]=\"shareLinkModel.popupSize\" [useDefaultScrollBar]=\"true\"-->\r\n<!-- (onHide)=\"shareLinkModel.showEditForm = false\">-->\r\n<!-- <share-link-by-permission #formBase [setting]=\"setting\" [lstItem]=\"shareLinkModel.data.lstItem\"-->\r\n<!-- (onCancel)=\"congViecModel.showEditForm = false\">-->\r\n<!-- </share-link-by-permission>-->\r\n<!--</tn-dialog>-->\r\n<!--<tn-dialog *ngIf=\"attachedTaskModel.showEditForm\" [header]=\"attachedTaskModel.header | translate\"-->\r\n<!-- [popupSize]=\"attachedTaskModel.popupSize\" [useDefaultScrollBar]=\"true\"-->\r\n<!-- (onHide)=\"attachedTaskModel.showEditForm = false\">-->\r\n<!-- <base-congviec [serviceCode]=\"setting.baseService.serviceCode\" [entity]=\"setting.baseService.entityName\"-->\r\n<!-- [itemIdAttach]=\"rowDataCurrent.id\"></base-congviec>-->\r\n<!--</tn-dialog>-->",
|
|
59009
|
+
styles: [".workflowButtons{display:flex;flex:1 1}.workflowButtons>button{margin-right:.2rem;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}"]
|
|
58913
59010
|
},] }
|
|
58914
59011
|
];
|
|
58915
59012
|
WorkflowButtonComponent.ctorParameters = function () { return [
|
|
@@ -61258,7 +61355,7 @@
|
|
|
61258
61355
|
return [
|
|
61259
61356
|
accordion.AccordionModule,
|
|
61260
61357
|
angularSplit.AngularSplitModule,
|
|
61261
|
-
|
|
61358
|
+
i4$1.CommonModule,
|
|
61262
61359
|
dialog.DialogModule,
|
|
61263
61360
|
button.ButtonModule,
|
|
61264
61361
|
breadcrumb.BreadcrumbModule,
|
|
@@ -61870,155 +61967,156 @@
|
|
|
61870
61967
|
exports.ɵ7 = ɵ7;
|
|
61871
61968
|
exports.ɵ8 = ɵ8;
|
|
61872
61969
|
exports.ɵ9 = ɵ9;
|
|
61873
|
-
exports.ɵa =
|
|
61874
|
-
exports.ɵb =
|
|
61875
|
-
exports.ɵba =
|
|
61876
|
-
exports.ɵbb =
|
|
61877
|
-
exports.ɵbc =
|
|
61878
|
-
exports.ɵbd =
|
|
61879
|
-
exports.ɵbe =
|
|
61880
|
-
exports.ɵbf =
|
|
61881
|
-
exports.ɵbg =
|
|
61882
|
-
exports.ɵbh =
|
|
61883
|
-
exports.ɵbi =
|
|
61884
|
-
exports.ɵbj =
|
|
61885
|
-
exports.ɵbk =
|
|
61886
|
-
exports.ɵbl =
|
|
61887
|
-
exports.ɵbm =
|
|
61888
|
-
exports.ɵbn =
|
|
61889
|
-
exports.ɵbo =
|
|
61890
|
-
exports.ɵbp =
|
|
61891
|
-
exports.ɵbq =
|
|
61892
|
-
exports.ɵbr =
|
|
61893
|
-
exports.ɵbs =
|
|
61894
|
-
exports.ɵbt =
|
|
61895
|
-
exports.ɵbu =
|
|
61896
|
-
exports.ɵbv =
|
|
61897
|
-
exports.ɵbw =
|
|
61898
|
-
exports.ɵbx =
|
|
61899
|
-
exports.ɵby =
|
|
61900
|
-
exports.ɵbz =
|
|
61901
|
-
exports.ɵc =
|
|
61902
|
-
exports.ɵca =
|
|
61903
|
-
exports.ɵcb =
|
|
61904
|
-
exports.ɵcc =
|
|
61905
|
-
exports.ɵcd =
|
|
61906
|
-
exports.ɵce =
|
|
61907
|
-
exports.ɵcf =
|
|
61908
|
-
exports.ɵcg =
|
|
61909
|
-
exports.ɵch =
|
|
61910
|
-
exports.ɵci =
|
|
61911
|
-
exports.ɵcj =
|
|
61912
|
-
exports.ɵck =
|
|
61913
|
-
exports.ɵcl =
|
|
61914
|
-
exports.ɵcm =
|
|
61915
|
-
exports.ɵcn =
|
|
61916
|
-
exports.ɵco =
|
|
61917
|
-
exports.ɵcp =
|
|
61918
|
-
exports.ɵcq =
|
|
61919
|
-
exports.ɵcr =
|
|
61920
|
-
exports.ɵcs =
|
|
61921
|
-
exports.ɵct =
|
|
61922
|
-
exports.ɵcu =
|
|
61923
|
-
exports.ɵcv =
|
|
61924
|
-
exports.ɵcw =
|
|
61925
|
-
exports.ɵcx =
|
|
61926
|
-
exports.ɵcy =
|
|
61927
|
-
exports.ɵcz =
|
|
61928
|
-
exports.ɵd =
|
|
61929
|
-
exports.ɵda =
|
|
61930
|
-
exports.ɵdb =
|
|
61931
|
-
exports.ɵdc =
|
|
61932
|
-
exports.ɵdd =
|
|
61933
|
-
exports.ɵde =
|
|
61934
|
-
exports.ɵdf =
|
|
61935
|
-
exports.ɵdg =
|
|
61936
|
-
exports.ɵdh =
|
|
61937
|
-
exports.ɵdi =
|
|
61938
|
-
exports.ɵdj =
|
|
61939
|
-
exports.ɵdk =
|
|
61940
|
-
exports.ɵdl =
|
|
61941
|
-
exports.ɵdm =
|
|
61942
|
-
exports.ɵdn =
|
|
61943
|
-
exports.ɵdo =
|
|
61944
|
-
exports.ɵdp =
|
|
61945
|
-
exports.ɵdq =
|
|
61946
|
-
exports.ɵdr =
|
|
61947
|
-
exports.ɵds =
|
|
61948
|
-
exports.ɵdt =
|
|
61949
|
-
exports.ɵdu =
|
|
61950
|
-
exports.ɵdv =
|
|
61951
|
-
exports.ɵdw =
|
|
61952
|
-
exports.ɵdx =
|
|
61953
|
-
exports.ɵdy =
|
|
61954
|
-
exports.ɵdz =
|
|
61955
|
-
exports.ɵe =
|
|
61956
|
-
exports.ɵea =
|
|
61957
|
-
exports.ɵeb =
|
|
61958
|
-
exports.ɵec =
|
|
61959
|
-
exports.ɵed =
|
|
61960
|
-
exports.ɵee =
|
|
61961
|
-
exports.ɵef =
|
|
61962
|
-
exports.ɵeg =
|
|
61963
|
-
exports.ɵeh =
|
|
61964
|
-
exports.ɵei =
|
|
61965
|
-
exports.ɵej =
|
|
61966
|
-
exports.ɵek =
|
|
61967
|
-
exports.ɵel =
|
|
61968
|
-
exports.ɵem =
|
|
61969
|
-
exports.ɵen =
|
|
61970
|
-
exports.ɵeo =
|
|
61971
|
-
exports.ɵep =
|
|
61972
|
-
exports.ɵeq =
|
|
61973
|
-
exports.ɵer =
|
|
61974
|
-
exports.ɵes =
|
|
61975
|
-
exports.ɵet =
|
|
61976
|
-
exports.ɵeu =
|
|
61977
|
-
exports.ɵev =
|
|
61978
|
-
exports.ɵew =
|
|
61979
|
-
exports.ɵex =
|
|
61980
|
-
exports.ɵey =
|
|
61981
|
-
exports.ɵez =
|
|
61982
|
-
exports.ɵf =
|
|
61983
|
-
exports.ɵfa =
|
|
61984
|
-
exports.ɵfb =
|
|
61985
|
-
exports.ɵfc =
|
|
61986
|
-
exports.ɵfd =
|
|
61987
|
-
exports.ɵfe =
|
|
61988
|
-
exports.ɵff =
|
|
61989
|
-
exports.ɵfg =
|
|
61990
|
-
exports.ɵfh =
|
|
61991
|
-
exports.ɵfi =
|
|
61992
|
-
exports.ɵfj =
|
|
61993
|
-
exports.ɵfk =
|
|
61994
|
-
exports.ɵfl =
|
|
61995
|
-
exports.ɵfm =
|
|
61996
|
-
exports.ɵfn =
|
|
61997
|
-
exports.ɵfo =
|
|
61998
|
-
exports.ɵfp =
|
|
61999
|
-
exports.ɵfq =
|
|
62000
|
-
exports.ɵfr =
|
|
62001
|
-
exports.ɵfs =
|
|
62002
|
-
exports.ɵ
|
|
62003
|
-
exports.ɵ
|
|
62004
|
-
exports.ɵ
|
|
62005
|
-
exports.ɵ
|
|
62006
|
-
exports.ɵ
|
|
62007
|
-
exports.ɵ
|
|
62008
|
-
exports.ɵ
|
|
62009
|
-
exports.ɵ
|
|
62010
|
-
exports.ɵ
|
|
62011
|
-
exports.ɵ
|
|
62012
|
-
exports.ɵ
|
|
62013
|
-
exports.ɵ
|
|
62014
|
-
exports.ɵ
|
|
62015
|
-
exports.ɵ
|
|
62016
|
-
exports.ɵ
|
|
62017
|
-
exports.ɵ
|
|
62018
|
-
exports.ɵ
|
|
62019
|
-
exports.ɵ
|
|
62020
|
-
exports.ɵ
|
|
62021
|
-
exports.ɵ
|
|
61970
|
+
exports.ɵa = LoggerService;
|
|
61971
|
+
exports.ɵb = DropdownService;
|
|
61972
|
+
exports.ɵba = DM_ChucVuService;
|
|
61973
|
+
exports.ɵbb = RoleService;
|
|
61974
|
+
exports.ɵbc = ProcessWorkflowFormComponent;
|
|
61975
|
+
exports.ɵbd = CongViecDinhKemService;
|
|
61976
|
+
exports.ɵbe = CongViecThayDoiService;
|
|
61977
|
+
exports.ɵbf = AddressComponent;
|
|
61978
|
+
exports.ɵbg = AfterViewCheckedComponent;
|
|
61979
|
+
exports.ɵbh = AdvanceSearchComponent;
|
|
61980
|
+
exports.ɵbi = AppRootMenuComponent;
|
|
61981
|
+
exports.ɵbj = AppTopBarComponent;
|
|
61982
|
+
exports.ɵbk = AppTopBarV1Component;
|
|
61983
|
+
exports.ɵbl = AppTopBarV2Component;
|
|
61984
|
+
exports.ɵbm = AppProfileComponent;
|
|
61985
|
+
exports.ɵbn = AppSubMenuComponent;
|
|
61986
|
+
exports.ɵbo = AppMenuComponent;
|
|
61987
|
+
exports.ɵbp = AutoCompletePickerComponent;
|
|
61988
|
+
exports.ɵbq = ImageUploaderComponent;
|
|
61989
|
+
exports.ɵbr = CheckBoxListComponent;
|
|
61990
|
+
exports.ɵbs = CoCauToChucPickerListComponent;
|
|
61991
|
+
exports.ɵbt = CoCauToChucPickerListNewComponent;
|
|
61992
|
+
exports.ɵbu = CoCauToChucNewService;
|
|
61993
|
+
exports.ɵbv = FormBuilderComponent;
|
|
61994
|
+
exports.ɵbw = BaseCongViecTestComponent;
|
|
61995
|
+
exports.ɵbx = BaseCauHinhWorkflowDetailComponent;
|
|
61996
|
+
exports.ɵby = BaseDmLoaiCongViecFormComponent;
|
|
61997
|
+
exports.ɵbz = BaseDmLinhVucCongViecFormComponent;
|
|
61998
|
+
exports.ɵc = EntityPickerService;
|
|
61999
|
+
exports.ɵca = BaseDmPriorityFormComponent;
|
|
62000
|
+
exports.ɵcb = BaseCongviecDinhkemComponent;
|
|
62001
|
+
exports.ɵcc = BaseCongviecDinhkemFormComponent;
|
|
62002
|
+
exports.ɵcd = DatetimePickerComponent;
|
|
62003
|
+
exports.ɵce = DatetimePickerRangeComponent;
|
|
62004
|
+
exports.ɵcf = DynamicNodeComponent;
|
|
62005
|
+
exports.ɵcg = EntityPickerBoxComponent;
|
|
62006
|
+
exports.ɵch = EntityPickerDataComponent;
|
|
62007
|
+
exports.ɵci = EntityPickerSelectedComponent;
|
|
62008
|
+
exports.ɵcj = EntityPickerComponent;
|
|
62009
|
+
exports.ɵck = EntityPickerDialogComponent;
|
|
62010
|
+
exports.ɵcl = EntityPickerTreeDataComponent;
|
|
62011
|
+
exports.ɵcm = EntityPickerTreeSelectedComponent;
|
|
62012
|
+
exports.ɵcn = EntityPermissionComponent;
|
|
62013
|
+
exports.ɵco = EquationEditorComponent;
|
|
62014
|
+
exports.ɵcp = MaskComponent;
|
|
62015
|
+
exports.ɵcq = NumberPickerRangeComponent;
|
|
62016
|
+
exports.ɵcr = PagingNextBackOnlyComponent;
|
|
62017
|
+
exports.ɵcs = RadioButtonListComponent;
|
|
62018
|
+
exports.ɵct = VanBanPickerComponent;
|
|
62019
|
+
exports.ɵcu = VanBanDenService;
|
|
62020
|
+
exports.ɵcv = VanBanDiService;
|
|
62021
|
+
exports.ɵcw = VanBanPickerDialogComponent;
|
|
62022
|
+
exports.ɵcx = VanbanDiPickerComponent;
|
|
62023
|
+
exports.ɵcy = VanbanDenPickerComponent;
|
|
62024
|
+
exports.ɵcz = CongViecPickerComponent;
|
|
62025
|
+
exports.ɵd = ExceptionHandlerService;
|
|
62026
|
+
exports.ɵda = SettingsComponent;
|
|
62027
|
+
exports.ɵdb = SettingsRowComponent;
|
|
62028
|
+
exports.ɵdc = SettingsWorkflowComponent;
|
|
62029
|
+
exports.ɵdd = SettingsWorkflowNo1Component;
|
|
62030
|
+
exports.ɵde = SimpleWorkflowFormComponent;
|
|
62031
|
+
exports.ɵdf = ProcessWorkflowTargetComponent;
|
|
62032
|
+
exports.ɵdg = DmChucVuService;
|
|
62033
|
+
exports.ɵdh = ChoYKienFormComponent;
|
|
62034
|
+
exports.ɵdi = SplashComponentV1Component;
|
|
62035
|
+
exports.ɵdj = SplashComponentV2Component;
|
|
62036
|
+
exports.ɵdk = StateMachinesConnectionReceiverComponent;
|
|
62037
|
+
exports.ɵdl = StateMachinesConnectionReceiverConditionComponent;
|
|
62038
|
+
exports.ɵdm = StateMachinesConnectionReceiverDepartmentComponent;
|
|
62039
|
+
exports.ɵdn = StateMachinesConnectionReceiverGroupComponent;
|
|
62040
|
+
exports.ɵdo = StateMachinesConnectionReceiverUserComponent;
|
|
62041
|
+
exports.ɵdp = StateMachinesConnectionReceiverRoleComponent;
|
|
62042
|
+
exports.ɵdq = StateMachinesConnectionSenderComponent;
|
|
62043
|
+
exports.ɵdr = StartWorkflowComponent;
|
|
62044
|
+
exports.ɵds = ShareLinkByPermissionComponent;
|
|
62045
|
+
exports.ɵdt = WorkflowSettingNewComponent;
|
|
62046
|
+
exports.ɵdu = PermissionSharingComponent;
|
|
62047
|
+
exports.ɵdv = WorkflowPermissionService;
|
|
62048
|
+
exports.ɵdw = TnCheckboxComponent;
|
|
62049
|
+
exports.ɵdx = TnDialogComponent;
|
|
62050
|
+
exports.ɵdy = TnColorPickerComponent;
|
|
62051
|
+
exports.ɵdz = TnTinymceComponent;
|
|
62052
|
+
exports.ɵe = CanBo_HoSoService;
|
|
62053
|
+
exports.ɵea = TnTabViewComponent;
|
|
62054
|
+
exports.ɵeb = TableDetailFormComponent;
|
|
62055
|
+
exports.ɵec = FileIconPipe;
|
|
62056
|
+
exports.ɵed = FileSizePipe;
|
|
62057
|
+
exports.ɵee = QuickAddFormComponent;
|
|
62058
|
+
exports.ɵef = PreventShiftTabDirective;
|
|
62059
|
+
exports.ɵeg = TnTemplateDirective;
|
|
62060
|
+
exports.ɵeh = UserPickerComponent;
|
|
62061
|
+
exports.ɵei = UserPickerBoxComponent;
|
|
62062
|
+
exports.ɵej = CoCauToChucTestService;
|
|
62063
|
+
exports.ɵek = TnAppHelpComponent;
|
|
62064
|
+
exports.ɵel = PathNameService;
|
|
62065
|
+
exports.ɵem = HelperCurrentPageComponent;
|
|
62066
|
+
exports.ɵen = TnAppNotificationListComponent;
|
|
62067
|
+
exports.ɵeo = TnAppNotificationComponent;
|
|
62068
|
+
exports.ɵep = FolderFormComponent;
|
|
62069
|
+
exports.ɵeq = FileFormComponent;
|
|
62070
|
+
exports.ɵer = FileViewerComponent;
|
|
62071
|
+
exports.ɵes = FileVersionListComponent;
|
|
62072
|
+
exports.ɵet = ViewDetailComponent;
|
|
62073
|
+
exports.ɵeu = WorkflowHistoryComponent;
|
|
62074
|
+
exports.ɵev = WorkflowHistoryDialogComponent;
|
|
62075
|
+
exports.ɵew = WorkflowHistoryNewComponent;
|
|
62076
|
+
exports.ɵex = WorkflowSettingComponent;
|
|
62077
|
+
exports.ɵey = WorkflowSettingDialogComponent;
|
|
62078
|
+
exports.ɵez = WorkflowPermissionComponent;
|
|
62079
|
+
exports.ɵf = ListBase;
|
|
62080
|
+
exports.ɵfa = WorkflowPermissionFormComponent;
|
|
62081
|
+
exports.ɵfb = ReferenceTextBoxComponent;
|
|
62082
|
+
exports.ɵfc = QrCodeGeneratorComponent;
|
|
62083
|
+
exports.ɵfd = AccessDeniedV1Component;
|
|
62084
|
+
exports.ɵfe = AddNewsComponent;
|
|
62085
|
+
exports.ɵff = ArticleService;
|
|
62086
|
+
exports.ɵfg = NewsCategoryService;
|
|
62087
|
+
exports.ɵfh = SignatureDetailComponent;
|
|
62088
|
+
exports.ɵfi = KySoSimDanhSachChuKyComponent;
|
|
62089
|
+
exports.ɵfj = KySoSimChuKyUserService;
|
|
62090
|
+
exports.ɵfk = FileKySoSimComponent;
|
|
62091
|
+
exports.ɵfl = KySoSimSignPDFService;
|
|
62092
|
+
exports.ɵfm = TaiLieuCuaToiComponent;
|
|
62093
|
+
exports.ɵfn = KhaiThacTaiLieuDungChungComponent;
|
|
62094
|
+
exports.ɵfo = DanhMucDungChungService;
|
|
62095
|
+
exports.ɵfp = TnTemplateComponent;
|
|
62096
|
+
exports.ɵfq = LoadingPageV1Component;
|
|
62097
|
+
exports.ɵfr = DropdownSettingFormComponent;
|
|
62098
|
+
exports.ɵfs = CheckReadyComponent;
|
|
62099
|
+
exports.ɵft = WorkflowButtonComponent;
|
|
62100
|
+
exports.ɵg = ListComponentBase;
|
|
62101
|
+
exports.ɵh = TreeTableComponent;
|
|
62102
|
+
exports.ɵi = UniversalLinkProcessorComponent;
|
|
62103
|
+
exports.ɵj = NotFoundComponent;
|
|
62104
|
+
exports.ɵk = SendAccessTokenInterceptor;
|
|
62105
|
+
exports.ɵl = LogInterceptor;
|
|
62106
|
+
exports.ɵm = PermissionUtilsInterceptor;
|
|
62107
|
+
exports.ɵn = TraceInterceptor;
|
|
62108
|
+
exports.ɵo = EntityWorkflowSettingService;
|
|
62109
|
+
exports.ɵp = EntityWorkflowHistoryService;
|
|
62110
|
+
exports.ɵq = EntityPermissionService;
|
|
62111
|
+
exports.ɵr = ChatService;
|
|
62112
|
+
exports.ɵs = MyDriveService;
|
|
62113
|
+
exports.ɵt = ContentsService;
|
|
62114
|
+
exports.ɵu = StatusExtendsService;
|
|
62115
|
+
exports.ɵv = MessageBoardService;
|
|
62116
|
+
exports.ɵw = FileExplorerNewService;
|
|
62117
|
+
exports.ɵx = ReportQueueComponent;
|
|
62118
|
+
exports.ɵy = FileVersionService;
|
|
62119
|
+
exports.ɵz = FileManagerService;
|
|
62022
62120
|
|
|
62023
62121
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
62024
62122
|
|