tnx-shared 5.2.11 → 5.2.12

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.
Files changed (49) hide show
  1. package/bundles/tnx-shared.umd.js +464 -163
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/component-base.d.ts +3 -0
  6. package/classes/base/component-base.d.ts.map +1 -1
  7. package/classes/base/list-base.d.ts +2 -0
  8. package/classes/base/list-base.d.ts.map +1 -1
  9. package/classes/environment-schema.d.ts +11 -4
  10. package/classes/environment-schema.d.ts.map +1 -1
  11. package/classes/form-schema.d.ts +4 -0
  12. package/classes/form-schema.d.ts.map +1 -1
  13. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts +4 -2
  14. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts.map +1 -1
  15. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts +20 -0
  16. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts.map +1 -0
  17. package/components/common-app-component/default-setting-form/default-data-settings.component.ngfactory.d.ts.map +1 -0
  18. package/components/common-app-component/default-setting-form/default-data-settings.component.scss.shim.ngstyle.d.ts.map +1 -0
  19. package/components/crud/advance-search/advance-search.component.d.ts +2 -2
  20. package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
  21. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  22. package/components/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  23. package/components/workflow/services/workflow-settings.service.d.ts +2 -0
  24. package/components/workflow/services/workflow-settings.service.d.ts.map +1 -1
  25. package/esm2015/classes/base/component-base.js +26 -10
  26. package/esm2015/classes/base/list-base.js +31 -2
  27. package/esm2015/classes/environment-schema.js +4 -4
  28. package/esm2015/classes/form-schema.js +2 -1
  29. package/esm2015/components/common-app-component/app-root-menu/app-root-menu.component.js +2 -2
  30. package/esm2015/components/common-app-component/app-topbar-v1/app-topbar-v1.component.js +24 -18
  31. package/esm2015/components/common-app-component/default-setting-form/default-data-settings.component.js +209 -0
  32. package/esm2015/components/crud/advance-search/advance-search.component.js +24 -21
  33. package/esm2015/components/crud/crud-form/crud-form.component.js +4 -2
  34. package/esm2015/components/datetime-picker/datetime-picker.component.js +7 -4
  35. package/esm2015/components/workflow/services/workflow-settings.service.js +6 -1
  36. package/esm2015/services/environment.service.js +19 -6
  37. package/esm2015/tnx-shared.js +89 -88
  38. package/esm2015/tnx-shared.module.js +3 -1
  39. package/fesm2015/tnx-shared.js +341 -61
  40. package/fesm2015/tnx-shared.js.map +1 -1
  41. package/package.json +2 -2
  42. package/services/environment.service.d.ts +17 -4
  43. package/services/environment.service.d.ts.map +1 -1
  44. package/tnx-shared.d.ts +88 -87
  45. package/tnx-shared.d.ts.map +1 -1
  46. package/tnx-shared.metadata.json +1 -1
  47. package/tnx-shared.module.d.ts +2 -1
  48. package/tnx-shared.module.d.ts.map +1 -1
  49. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -756,7 +756,7 @@
756
756
  EnvironmentService.prototype.getServiceEndpointByServiceInfo = function (serviceInfo) {
757
757
  var endpoint = '';
758
758
  if (serviceInfo.useLocal) {
759
- endpoint = serviceInfo.localHttpEndpoint;
759
+ endpoint = serviceInfo.localhttpendpoint;
760
760
  }
761
761
  else {
762
762
  var gateway = this.environment.appMetadata.gateway;
@@ -911,7 +911,13 @@
911
911
  return this.isTrue(this.environment.enablePopulateLog);
912
912
  };
913
913
  EnvironmentService.prototype.getShowDefaultSetting = function () {
914
- return this.isTrue(this.environment.appMetadata.main.showDefaultSetting);
914
+ var app = this.getObjectApp(this.appCode);
915
+ return this.isTrue(app === null || app === void 0 ? void 0 : app.showdefaultsetting);
916
+ };
917
+ EnvironmentService.prototype.getConfigDefaultSetting = function () {
918
+ var _a, _b;
919
+ var app = this.getObjectApp(this.appCode);
920
+ return (_b = (_a = app === null || app === void 0 ? void 0 : app.configdefaultsetting) === null || _a === void 0 ? void 0 : _a.column) !== null && _b !== void 0 ? _b : [];
915
921
  };
916
922
  EnvironmentService.prototype.getDisableNotification = function () {
917
923
  return this.isTrue(this.environment.disableNotification);
@@ -960,10 +966,11 @@
960
966
  return (_b = (_a = this.environment.defaultValue) === null || _a === void 0 ? void 0 : _a.kySoSim) === null || _b === void 0 ? void 0 : _b.tsaUrl;
961
967
  };
962
968
  EnvironmentService.prototype.getButtonPermissions = function () {
963
- return this.environment.buttonPermissions;
969
+ var _a;
970
+ return (_a = this.environment.buttonPermissions) !== null && _a !== void 0 ? _a : [];
964
971
  };
965
- EnvironmentService.prototype.getSettingDataDefault = function () {
966
- return this.environment.settingDataDefault;
972
+ EnvironmentService.prototype.getFieldsInDefaultSetting = function () {
973
+ return this.environment.fieldsInDefaultSetting;
967
974
  };
968
975
  EnvironmentService.prototype.getKeyPressPermissionUtils = function () {
969
976
  return this.environment.keyPressPermissionUtils;
@@ -998,6 +1005,12 @@
998
1005
  return null;
999
1006
  return this.environment.customConfig[key];
1000
1007
  };
1008
+ EnvironmentService.prototype.getListDonViQuanLyNganh = function () {
1009
+ return [];
1010
+ };
1011
+ EnvironmentService.prototype.getListDonViQuanLyHocPhan = function () {
1012
+ return [];
1013
+ };
1001
1014
  return EnvironmentService;
1002
1015
  }());
1003
1016
  EnvironmentService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EnvironmentService_Factory() { return new EnvironmentService(i0.ɵɵinject(moduleConfigFunc, 8)); }, token: EnvironmentService, providedIn: "root" });
@@ -3331,9 +3344,6 @@
3331
3344
  };
3332
3345
  var mergeJSON = function (target, source) {
3333
3346
  var e_1, _a;
3334
- if (Object.keys(source).length == 0) {
3335
- return target;
3336
- }
3337
3347
  if (isArray(source)) {
3338
3348
  if (!isArray(target)) {
3339
3349
  target = [];
@@ -3361,6 +3371,9 @@
3361
3371
  target.length = i;
3362
3372
  }
3363
3373
  else if (isLiteralObject(source)) {
3374
+ if (Object.keys(source).length == 0) {
3375
+ return target;
3376
+ }
3364
3377
  if (!isLiteralObject(target))
3365
3378
  target = {};
3366
3379
  else
@@ -3854,6 +3867,7 @@
3854
3867
  var CrudFormSetting = /** @class */ (function () {
3855
3868
  function CrudFormSetting(init) {
3856
3869
  this.disableCaching = false;
3870
+ this.disableDefaultSettingCache = false;
3857
3871
  this.hiddenTrinhKy = true;
3858
3872
  this.schema = [];
3859
3873
  this.buildInSchema = [];
@@ -9094,8 +9108,9 @@
9094
9108
  callBackError(res);
9095
9109
  return;
9096
9110
  }
9097
- if (message)
9111
+ if (message) {
9098
9112
  this._injector.get(NotifierService).showSuccess(message);
9113
+ }
9099
9114
  if (callBack)
9100
9115
  callBack(res);
9101
9116
  };
@@ -9255,8 +9270,9 @@
9255
9270
  ComponentBase.prototype._getValueFromDatasource = function (itemSelected, isMultiple, funcGetLabel) {
9256
9271
  var value = null;
9257
9272
  if (isMultiple) {
9258
- if (itemSelected && itemSelected.length > 0)
9273
+ if (itemSelected && itemSelected.length > 0) {
9259
9274
  value = itemSelected.map(function (q) { return funcGetLabel(q.value); }).join(', ');
9275
+ }
9260
9276
  }
9261
9277
  else {
9262
9278
  if (itemSelected) {
@@ -9361,17 +9377,20 @@
9361
9377
  itemSelected = _b.sent();
9362
9378
  tmpSchema_1 = schema;
9363
9379
  funcGetLabel = tmpSchema_1.funcGetLabel;
9364
- if (!funcGetLabel)
9380
+ if (!funcGetLabel) {
9365
9381
  funcGetLabel = function (item) {
9366
9382
  return item.value[tmpSchema_1.displayField];
9367
9383
  };
9384
+ }
9368
9385
  value_2 = this_1._getValueFromDatasource(itemSelected, schema.multiple, function (item) { return item.ten; });
9369
9386
  if (schema.multiple) {
9370
9387
  if (itemSelected.length > 0) {
9371
- if (schema.funcGetLabel)
9388
+ if (schema.funcGetLabel) {
9372
9389
  value_2 = itemSelected.map(function (q) { return tmpSchema_1.funcGetLabel(q.value); }).join(', ');
9373
- else
9390
+ }
9391
+ else {
9374
9392
  value_2 = itemSelected.map(function (q) { return q.value[tmpSchema_1.displayField]; }).join(', ');
9393
+ }
9375
9394
  }
9376
9395
  else {
9377
9396
  value_2 = null;
@@ -9379,10 +9398,12 @@
9379
9398
  }
9380
9399
  else {
9381
9400
  if (itemSelected) {
9382
- if (schema.funcGetLabel)
9401
+ if (schema.funcGetLabel) {
9383
9402
  value_2 = schema.funcGetLabel(itemSelected.value);
9384
- else
9403
+ }
9404
+ else {
9385
9405
  value_2 = itemSelected.value[schema.displayField];
9406
+ }
9386
9407
  }
9387
9408
  }
9388
9409
  return [3 /*break*/, 19];
@@ -9393,7 +9414,7 @@
9393
9414
  itemSelected = _b.sent();
9394
9415
  tmpSchema_2 = schema;
9395
9416
  funcGetLabel = tmpSchema_2.funcGetLabel;
9396
- if (!funcGetLabel)
9417
+ if (!funcGetLabel) {
9397
9418
  funcGetLabel = function (item) {
9398
9419
  if (item) {
9399
9420
  return item[tmpSchema_2.displayField];
@@ -9402,6 +9423,7 @@
9402
9423
  return null;
9403
9424
  }
9404
9425
  };
9426
+ }
9405
9427
  value_2 = this_1._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
9406
9428
  return [3 /*break*/, 19];
9407
9429
  case 18:
@@ -9419,10 +9441,11 @@
9419
9441
  else {
9420
9442
  dataSource = tmpSchema._component.dropdown._options;
9421
9443
  itemSelected = dataSource.find(function (q) { return q.value == value_2; });
9422
- if (itemSelected)
9444
+ if (itemSelected) {
9423
9445
  itemSelected = {
9424
9446
  value: itemSelected
9425
9447
  };
9448
+ }
9426
9449
  }
9427
9450
  value_2 = this_1._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
9428
9451
  }
@@ -9613,6 +9636,13 @@
9613
9636
  });
9614
9637
  });
9615
9638
  };
9639
+ ComponentBase.prototype.getDefaultSettings = function () {
9640
+ var localData = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
9641
+ if (localData != null && localData != '') {
9642
+ return JSON.parse(localData);
9643
+ }
9644
+ return {};
9645
+ };
9616
9646
  return ComponentBase;
9617
9647
  }());
9618
9648
  ComponentBase.decorators = [
@@ -13574,8 +13604,10 @@
13574
13604
  };
13575
13605
  CrudFormComponent.prototype.setDataDefault = function () {
13576
13606
  var e_25, _d;
13607
+ return;
13577
13608
  var stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
13578
- var getSettingDataDefault = this._environmentService.getSettingDataDefault();
13609
+ // const getSettingDataDefault = this._environmentService.getSettingDataDefault();
13610
+ var getSettingDataDefault = {};
13579
13611
  if (stringDataDefault && (this._modelData && !this._modelData.id)) {
13580
13612
  var dataCache = JSON.parse(stringDataDefault);
13581
13613
  try {
@@ -23060,6 +23092,7 @@
23060
23092
  __extends(WorkflowSettingsService, _super);
23061
23093
  function WorkflowSettingsService(http, injector, _environmentService) {
23062
23094
  var _this = _super.call(this, http, injector, '') || this;
23095
+ _this.serviceCode = 'workflow';
23063
23096
  _this.entityName = 'WorkflowSetting';
23064
23097
  _this.serviceManagers = {};
23065
23098
  _this.endPoint = _environmentService.getHttpServiceEndpointWithVersion(_this.serviceCode);
@@ -23072,6 +23105,10 @@
23072
23105
  WorkflowSettingsService.prototype.getEndpointByService = function (service) {
23073
23106
  return service.endPoint;
23074
23107
  };
23108
+ WorkflowSettingsService.prototype.changeEndpoint = function (baseService) {
23109
+ this.serviceUri = this.getEndpointByService(baseService) + "/WorkflowSetting";
23110
+ return this;
23111
+ };
23075
23112
  WorkflowSettingsService.prototype.setCurrentServiceUri = function (tableName) {
23076
23113
  var service = this.serviceManagers[tableName];
23077
23114
  if (service == undefined) {
@@ -23239,6 +23276,7 @@
23239
23276
  _this.customGetData = false;
23240
23277
  _this.readyToTrinhKy = false;
23241
23278
  _this.plusUrl = '';
23279
+ _this.defaultSettings = {};
23242
23280
  _this._environmentService = _this._injector.get(EnvironmentService);
23243
23281
  _this._notifierService = _this._injector.get(NotifierService);
23244
23282
  _this._activatedRoute = _this._injector.get(i3.ActivatedRoute);
@@ -23816,7 +23854,7 @@
23816
23854
  case 0:
23817
23855
  key = this.setting.baseService.getKeyWorkflowSetting();
23818
23856
  if (!this.setting.baseService.useWorkflow) return [3 /*break*/, 5];
23819
- return [4 /*yield*/, this._workflowSettingService.getDetailByFilter([
23857
+ return [4 /*yield*/, this._workflowSettingService.changeEndpoint(this.setting.baseService).getDetailByFilter([
23820
23858
  this.newFilter('tableName', exports.Operator.equal, key)
23821
23859
  ])];
23822
23860
  case 1:
@@ -24299,6 +24337,35 @@
24299
24337
  this.onBeforeCancel();
24300
24338
  this.showDetailForm = false;
24301
24339
  };
24340
+ // eslint-disable-next-line spaced-comment
24341
+ //#endregion
24342
+ ListBase.prototype.forceSelectDefaultData = function (cb) {
24343
+ var _this = this;
24344
+ this.defaultSettings = this.getDefaultSettings();
24345
+ var requiredFields = this._environmentService.getConfigDefaultSetting();
24346
+ var missingFields = [];
24347
+ requiredFields.forEach(function (fieldInfo) {
24348
+ if (!fieldInfo.required)
24349
+ return;
24350
+ if (!_this.defaultSettings[fieldInfo.field]) {
24351
+ missingFields.push(fieldInfo.field);
24352
+ }
24353
+ });
24354
+ if (missingFields.length) {
24355
+ var lstFieldInfo = this._environmentService.getFieldsInDefaultSetting();
24356
+ var lstFieldLabel = lstFieldInfo.filter(function (q) { return missingFields.some(function (x) { return x.toLowerCase() == q.field.toLowerCase(); }); })
24357
+ .map(function (q) { return q.label; });
24358
+ this.model.ready = false;
24359
+ this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED, function (f) {
24360
+ _this.forceSelectDefaultData(null);
24361
+ });
24362
+ this._injector.get(NotifierService).showWarning("B\u1EA1n ph\u1EA3i c\u1EA5u h\u00ECnh th\u00F4ng tin (" + lstFieldLabel.join(', ') + ") tr\u01B0\u1EDBc");
24363
+ this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT);
24364
+ }
24365
+ else if (cb) {
24366
+ cb(this.defaultSettings);
24367
+ }
24368
+ };
24302
24369
  return ListBase;
24303
24370
  }(ComponentBase));
24304
24371
  ListBase.decorators = [
@@ -43398,7 +43465,7 @@
43398
43465
  AppRootMenuComponent.decorators = [
43399
43466
  { type: i0.Component, args: [{
43400
43467
  selector: 'app-root-menu',
43401
- template: "<span class=\"rootMenu\" *ngIf=\"rootModel.currentAppMetadata\">\n <i class=\"pi pi-slack\" style=\"margin-right: 5px;\"></i>\n {{rootModel.currentAppMetadata.longTitle | translate}}</span>",
43468
+ template: "<span class=\"rootMenu\" *ngIf=\"rootModel.currentAppMetadata\">\n <i class=\"pi pi-slack\" style=\"margin-right: 5px;\"></i>\n {{rootModel.currentAppMetadata.longtitle | translate}}</span>\n ",
43402
43469
  providers: [ComponentContextService],
43403
43470
  styles: [""]
43404
43471
  },] }
@@ -43434,6 +43501,14 @@
43434
43501
  _this.isFirstTime = false;
43435
43502
  _this.showSettings = false;
43436
43503
  _this.allSubscriptions = [];
43504
+ _this.appDefaultSettings = [];
43505
+ _this.defaultSettingModel = new DialogModel({
43506
+ header: 'Cấu hình phân hệ',
43507
+ popupSize: new PopupSize({ width: 700, height: 350 }),
43508
+ data: {
43509
+ text: 'Thiết lập tham số mặc định'
43510
+ }
43511
+ });
43437
43512
  _this.message = '';
43438
43513
  _this.defaultAvatar = _this._environmentService.getDefaultMaleAvatar();
43439
43514
  _this.config.isProduction = _this._environmentService.getIsProduction();
@@ -43441,7 +43516,10 @@
43441
43516
  _this.config.logo = _this._environmentService.getLogo();
43442
43517
  _this.config.owner = _this._environmentService.getOwner();
43443
43518
  _this.fileApi = _this._environmentService.getHttpServiceEndpoint('file');
43444
- if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
43519
+ _this.appDefaultSettings = _this._environmentService.getConfigDefaultSetting();
43520
+ if (_this.rootContext.data.currentAppMetadata
43521
+ && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null
43522
+ && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
43445
43523
  _this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
43446
43524
  }
43447
43525
  else {
@@ -43450,13 +43528,13 @@
43450
43528
  if (!_this.rootContext.data.currentUser) {
43451
43529
  _this.rootContext.data.currentUser = {};
43452
43530
  }
43453
- // this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
43454
- // this._cd.detectChanges();
43455
- // }));
43456
43531
  _this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
43457
43532
  _this.currentUser = _this._userService.getCurrentUser();
43458
43533
  _this.loadMenuMetadata();
43459
43534
  });
43535
+ _this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, function (rs) {
43536
+ _this.showDefaultSettingForm();
43537
+ });
43460
43538
  if (_this.rootModel.allowAnonymous) {
43461
43539
  _this.loadMenuMetadata();
43462
43540
  }
@@ -43564,9 +43642,6 @@
43564
43642
  var dataCacheDefault = JSON.parse(stringDataDefault);
43565
43643
  this.formatDefaultDataSetting(dataCacheDefault);
43566
43644
  }
43567
- else {
43568
- this.defaultDataSetting = 'Thiết lập tham số mặc định';
43569
- }
43570
43645
  };
43571
43646
  AppTopBarV1Component.prototype.ngOnDestroy = function () {
43572
43647
  this.allSubscriptions.forEach(function (element) {
@@ -43580,8 +43655,8 @@
43580
43655
  AppTopBarV1Component.prototype.formatDefaultDataSetting = function (data) {
43581
43656
  var _this = this;
43582
43657
  var dataSetting = '';
43583
- var fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
43584
- var fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
43658
+ var fields = ['idHe', 'namHoc', 'idHocKy', 'idDotThi'];
43659
+ var fieldPluses = ['code', 'ten', 'ten', 'ten'];
43585
43660
  fields.forEach(function (field, index) {
43586
43661
  if (!_this.checkHidden(field)) {
43587
43662
  var _f = "" + field + fieldPluses[index];
@@ -43593,10 +43668,10 @@
43593
43668
  if (dataSetting.length > 0) {
43594
43669
  dataSetting = dataSetting.substring(0, dataSetting.length - 1);
43595
43670
  }
43596
- this.defaultDataSetting = dataSetting;
43671
+ this.defaultSettingModel.data.text = dataSetting;
43597
43672
  };
43598
43673
  AppTopBarV1Component.prototype.checkHidden = function (field) {
43599
- return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(function (p) { return p.field == field; });
43674
+ return this.appDefaultSettings.some(function (p) { return p.field == field; });
43600
43675
  };
43601
43676
  AppTopBarV1Component.prototype.getCurrentUserFullName = function () {
43602
43677
  return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
@@ -43735,11 +43810,8 @@
43735
43810
  }
43736
43811
  this._authenService.logout();
43737
43812
  };
43738
- AppTopBarV1Component.prototype.settingDefault = function () {
43739
- this.model.dataModelSetting = {
43740
- data: {},
43741
- showSettings: true
43742
- };
43813
+ AppTopBarV1Component.prototype.showDefaultSettingForm = function () {
43814
+ this.defaultSettingModel.showEditForm = true;
43743
43815
  };
43744
43816
  AppTopBarV1Component.prototype.onShowSettings = function (ev) {
43745
43817
  this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
@@ -43808,7 +43880,7 @@
43808
43880
  AppTopBarV1Component.decorators = [
43809
43881
  { type: i0.Component, args: [{
43810
43882
  selector: 'app-topbar-v1',
43811
- template: "<div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !config.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"config.logo\" (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{config.owner}}\n </div>\n <div class=\"topbar-description\">\n {{config.title}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !config.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\" #profile\n class=\"profile-item tn-l-top-bar-menu-item\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <ng-container *ngIf=\"currentUser\">\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-inbox\"></i>\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-user-edit\"></i>\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n </ng-container>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help>\n </li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n (click)=\"switchApp(item, true)\">\n <span class=\"tn-l-switcher-item-inner\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</div>",
43883
+ template: "<div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !config.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"config.logo\" (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{config.owner}}\n </div>\n <div class=\"topbar-description\">\n {{config.title}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"showDefaultSettingForm()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"showDefaultSettingForm()\">\n {{defaultSettingModel.data.text}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !config.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\" #profile\n class=\"profile-item tn-l-top-bar-menu-item\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <ng-container *ngIf=\"currentUser\">\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-inbox\"></i>\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-user-edit\"></i>\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n </ng-container>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help>\n </li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n (click)=\"switchApp(item, true)\">\n <span class=\"tn-l-switcher-item-inner\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</div>\n\n<tn-dialog *ngIf=\"defaultSettingModel.showEditForm\" [header]=\"defaultSettingModel.header | translate\"\n [popupSize]=\"defaultSettingModel.popupSize\" (onHide)=\"defaultSettingModel.showEditForm = false\">\n <default-data-settings #formBase (onHide)=\"defaultSettingModel.showEditForm = false;\"></default-data-settings>\n</tn-dialog>",
43812
43884
  providers: [ComponentContextService],
43813
43885
  styles: [".topBarSearchButton:disabled{background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important;opacity:1}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled:-ms-input-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{float:none;margin-top:0}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;float:none;justify-content:center;order:0;text-align:right}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{-ms-grid-row-align:stretch;align-items:center;align-self:stretch;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941);display:flex}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{height:40px;margin:0;width:auto}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{font-size:0;height:auto;margin:0;padding-left:8px;padding-right:8px;width:auto}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{display:flex;float:none;width:auto}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{display:block;height:28px;margin:auto;width:30px}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{align-items:center;display:flex;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{color:#ff0;font-size:500;white-space:nowrap}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{color:#52abff;text-align:center;text-shadow:none}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{color:#52abff;font-size:38px;margin:5px auto;text-shadow:none}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item{margin-top:0;width:unset}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v1 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v1 .wrapper-appswitch{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));text-align:center}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v1 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{align-items:center;display:flex;justify-content:space-between}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{align-items:center;display:flex;flex-direction:row-reverse;justify-content:flex-start;margin:0}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{align-items:center;color:#fff;display:flex;font-size:28px;height:36px;justify-content:center;width:36px}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{align-items:center;display:flex;justify-content:center;width:36px}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{align-items:center;display:flex;justify-content:flex-end;padding:0 .5em}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{margin-left:.5em;position:relative;right:0;top:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:220px}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{align-items:center;display:flex;justify-content:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
43814
43886
  },] }
@@ -45299,7 +45371,7 @@
45299
45371
  _schema_1.panelClass = 'dropdown-advs';
45300
45372
  }
45301
45373
  });
45302
- if (!this.setting.disableCaching) {
45374
+ if (!this.setting.disableDefaultSettingCache) {
45303
45375
  this.setDataDefault(this.setting.schema);
45304
45376
  }
45305
45377
  this.modelCrudForm.data = this.model.data;
@@ -45311,45 +45383,38 @@
45311
45383
  });
45312
45384
  };
45313
45385
  AdvanceSearchComponent.prototype.setDataDefault = function (formSchema) {
45314
- var e_1, _a;
45386
+ var _this = this;
45315
45387
  var dataCache = this._localCacheService.getDataDefault();
45316
- var getSettingDataDefault = this._environmentService.getSettingDataDefault();
45317
- try {
45318
- for (var formSchema_1 = __values(formSchema), formSchema_1_1 = formSchema_1.next(); !formSchema_1_1.done; formSchema_1_1 = formSchema_1.next()) {
45319
- var item = formSchema_1_1.value;
45320
- if (item instanceof DropdownControlSchema) {
45321
- var control = item;
45322
- var key = (control.field + (control.valueField == 'id' ? '' : control.valueField));
45323
- var value = dataCache[key];
45324
- if (value) {
45325
- this.model.data[control.field] = value;
45326
- }
45327
- else if (getSettingDataDefault) { // lấy cấu hình field mapPing
45328
- var fieldMapGetCache = getSettingDataDefault[control.field];
45329
- if (fieldMapGetCache) {
45330
- var key_1 = (fieldMapGetCache + (control.valueField == 'id' ? '' : control.valueField));
45331
- value = dataCache[key_1];
45332
- if (value) {
45333
- this.model.data[control.field] = value;
45334
- }
45335
- }
45336
- }
45337
- }
45338
- else {
45339
- var value = dataCache[item.field];
45340
- if (value) {
45341
- this.model.data[item.field] = value;
45342
- }
45343
- }
45388
+ var advanceSearchFieldCache = this.parentSetting.advanceSearchFieldCache;
45389
+ if (!advanceSearchFieldCache || !Object.keys(advanceSearchFieldCache).length) {
45390
+ advanceSearchFieldCache = {};
45391
+ var lstFieldInfo = this._environmentService.getFieldsInDefaultSetting();
45392
+ if (lstFieldInfo) {
45393
+ lstFieldInfo.forEach(function (fieldInfo) {
45394
+ advanceSearchFieldCache[fieldInfo.field] = fieldInfo.field;
45395
+ });
45344
45396
  }
45345
45397
  }
45346
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
45347
- finally {
45348
- try {
45349
- if (formSchema_1_1 && !formSchema_1_1.done && (_a = formSchema_1.return)) _a.call(formSchema_1);
45398
+ if (!advanceSearchFieldCache || !Object.keys(advanceSearchFieldCache).length)
45399
+ return;
45400
+ Object.keys(advanceSearchFieldCache).forEach(function (field) {
45401
+ var control = formSchema.find(function (q) { return q.field == field; });
45402
+ if (!control)
45403
+ return;
45404
+ if (control instanceof DropdownControlSchema) {
45405
+ var key = control.field + (control.valueField == 'id' ? '' : control.valueField);
45406
+ var value = dataCache[key];
45407
+ if (value) {
45408
+ _this.model.data[control.field] = value;
45409
+ }
45350
45410
  }
45351
- finally { if (e_1) throw e_1.error; }
45352
- }
45411
+ else {
45412
+ var value = dataCache[control.field];
45413
+ if (value) {
45414
+ _this.model.data[control.field] = value;
45415
+ }
45416
+ }
45417
+ });
45353
45418
  };
45354
45419
  AdvanceSearchComponent.prototype.ngAfterViewInit = function () {
45355
45420
  };
@@ -45885,8 +45950,9 @@
45885
45950
  this.control.disabled = isDisabled;
45886
45951
  };
45887
45952
  DatetimePickerComponent.prototype.getPanelClass = function () {
45888
- if (this.control.appendTo == 'body')
45953
+ if (this.control.appendTo == 'body') {
45889
45954
  return this.control.panelClass + " p-fixed";
45955
+ }
45890
45956
  return this.control.panelClass;
45891
45957
  };
45892
45958
  DatetimePickerComponent.prototype.onFocusCalendar = function (evt) {
@@ -45962,10 +46028,12 @@
45962
46028
  var mm = String(date.getMinutes());
45963
46029
  if (mm.length == 1)
45964
46030
  mm = '0' + mm;
45965
- if (!showTime)
46031
+ if (!showTime) {
45966
46032
  return dd + "/" + MM + "/" + yyyy;
45967
- else
46033
+ }
46034
+ else {
45968
46035
  return dd + "/" + MM + "/" + yyyy + " " + hh + ":" + mm;
46036
+ }
45969
46037
  }
45970
46038
  else if (isValidTime(date)) {
45971
46039
  var hh = String(date.getHours());
@@ -57506,6 +57574,237 @@
57506
57574
  },] }
57507
57575
  ];
57508
57576
 
57577
+ var DefaultDataSettingsComponent = /** @class */ (function (_super) {
57578
+ __extends(DefaultDataSettingsComponent, _super);
57579
+ function DefaultDataSettingsComponent(injector, _environmentService
57580
+ // private _tbl_DM_NguoiHoc_HeDaoTaoService: tbl_DM_NguoiHoc_HeDaoTaoService,
57581
+ // private _tbl_HeThong_HocKyService: tbl_HeThong_HocKyService,
57582
+ // private _tbl_HeThong_NamHocService: tbl_HeThong_NamHocService,
57583
+ // private _tbl_Thi_DotThiService: tbl_Thi_DotThiService,
57584
+ // private _tbl_Thi_Dkt_DotService: tbl_Thi_Dkt_DotService,
57585
+ ) {
57586
+ var _this = _super.call(this, injector) || this;
57587
+ _this._environmentService = _environmentService;
57588
+ _this.settingKey = '';
57589
+ _this.onShow = new i0.EventEmitter();
57590
+ _this.onHide = new i0.EventEmitter();
57591
+ _this.appDefaultSettings = [];
57592
+ _this.cacheDataSource = {};
57593
+ _this.doNotCheckBaseService = true;
57594
+ return _this;
57595
+ }
57596
+ DefaultDataSettingsComponent.prototype.ngOnInit = function () {
57597
+ var _this = this;
57598
+ this.appDefaultSettings = this._environmentService.getConfigDefaultSetting();
57599
+ this.setting.schema = [
57600
+ new DropdownControlSchema({
57601
+ field: 'idHe',
57602
+ mdWidth: 6,
57603
+ label: this._translateService.instant('Hệ đào tạo'),
57604
+ // baseService: this._tbl_DM_NguoiHoc_HeDaoTaoService,
57605
+ fieldPlus: 'code',
57606
+ appendTo: 'body',
57607
+ callbackDataFinish: function (data) {
57608
+ _this.cacheDataSource['idHe'] = data;
57609
+ },
57610
+ enableCaching: false,
57611
+ required: this.getRequired('idHe'),
57612
+ hidden: this.checkHidden('idHe')
57613
+ }),
57614
+ new DropdownControlSchema({
57615
+ field: 'namHoc',
57616
+ label: this._translateService.instant('Năm học'),
57617
+ required: this.getRequired('namHoc'),
57618
+ mdWidth: 3,
57619
+ // baseService: this._tbl_HeThong_NamHocService,
57620
+ fieldPlus: 'id',
57621
+ valueField: 'nam',
57622
+ appendTo: 'body',
57623
+ callbackDataFinish: function (data) {
57624
+ _this.cacheDataSource['namHoc'] = data;
57625
+ },
57626
+ sortField: 'ten',
57627
+ sortDir: -1,
57628
+ enableCaching: false,
57629
+ placeholder: 'Chọn năm',
57630
+ hidden: this.checkHidden('namHoc')
57631
+ }),
57632
+ new DropdownControlSchema({
57633
+ field: 'idHocKy',
57634
+ label: this._translateService.instant('Học kỳ'),
57635
+ required: this.getRequired('idHocKy'),
57636
+ placeholder: 'Chọn học kỳ',
57637
+ showClear: true,
57638
+ mdWidth: 3,
57639
+ // baseService: this._tbl_HeThong_HocKyService,
57640
+ fieldPlus: 'code',
57641
+ appendTo: 'body',
57642
+ bindingFilters: [
57643
+ this.newBindingFilter('namHoc', exports.Operator.equal, 'namHoc')
57644
+ ],
57645
+ callbackDataFinish: function (data) {
57646
+ _this.cacheDataSource['idHocKy'] = data;
57647
+ },
57648
+ enableCaching: false,
57649
+ hidden: this.checkHidden('idHocKy')
57650
+ }),
57651
+ new DropdownControlSchema({
57652
+ field: 'idDotThi',
57653
+ label: this._translateService.instant('Đợt thi'),
57654
+ required: this.getRequired('idDotThi'),
57655
+ placeholder: 'Chọn đợt thi',
57656
+ showClear: true,
57657
+ mdWidth: 12,
57658
+ // baseService: this._tbl_Thi_DotThiService,
57659
+ fieldPlus: 'code',
57660
+ displayField: 'tenDotThi',
57661
+ callbackDataFinish: function (data) {
57662
+ _this.cacheDataSource['idDotThi'] = data;
57663
+ },
57664
+ appendTo: 'body',
57665
+ bindingFilters: [
57666
+ this.newBindingFilter('namHoc', exports.Operator.equal, 'namHoc'),
57667
+ this.newBindingFilter('idHocKy', exports.Operator.equal, 'idHocKy')
57668
+ ],
57669
+ enableCaching: false,
57670
+ hidden: this.checkHidden('idDotThi')
57671
+ }),
57672
+ new DropdownControlSchema({
57673
+ field: 'idDotDangKyThi',
57674
+ label: this._translateService.instant('Đợt đăng ký thi'),
57675
+ placeholder: 'Chọn đợt đăng ký thi',
57676
+ showClear: true,
57677
+ mdWidth: 12,
57678
+ // baseService: this._tbl_Thi_Dkt_DotService,
57679
+ displayField: 'ten',
57680
+ callbackDataFinish: function (data) {
57681
+ _this.cacheDataSource['idDotDangKyThi'] = data;
57682
+ },
57683
+ appendTo: 'body',
57684
+ bindingFilters: [
57685
+ this.newBindingFilter('idDotThi', exports.Operator.equal, 'idDotThi'),
57686
+ ],
57687
+ enableCaching: false,
57688
+ hidden: this.checkHidden('idDotDangKyThi')
57689
+ })
57690
+ ];
57691
+ this.getDataCache();
57692
+ };
57693
+ DefaultDataSettingsComponent.prototype.checkHidden = function (field) {
57694
+ return this.appDefaultSettings.some(function (p) { return p.field == field; });
57695
+ };
57696
+ DefaultDataSettingsComponent.prototype.getRequired = function (field) {
57697
+ return this.appDefaultSettings.some(function (p) { return p.field == field && p.required; });
57698
+ };
57699
+ DefaultDataSettingsComponent.prototype.getDataCache = function () {
57700
+ var e_1, _a;
57701
+ var stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
57702
+ if (stringDataDefault) {
57703
+ var dataCache = JSON.parse(stringDataDefault);
57704
+ try {
57705
+ for (var _b = __values(this.setting.schema), _c = _b.next(); !_c.done; _c = _b.next()) {
57706
+ var item = _c.value;
57707
+ var value = dataCache[item.field];
57708
+ if (value) {
57709
+ this.model.data[item.field] = value;
57710
+ }
57711
+ }
57712
+ }
57713
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
57714
+ finally {
57715
+ try {
57716
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
57717
+ }
57718
+ finally { if (e_1) throw e_1.error; }
57719
+ }
57720
+ }
57721
+ };
57722
+ DefaultDataSettingsComponent.prototype.setCodeAndLabel = function (fields, itemSource) {
57723
+ var _this = this;
57724
+ fields.forEach(function (field) {
57725
+ _this.model.data[field + "code"] = itemSource.code;
57726
+ _this.model.data[field + "ten"] = itemSource.label;
57727
+ });
57728
+ };
57729
+ DefaultDataSettingsComponent.prototype.saveCommonSetting = function () {
57730
+ return __awaiter(this, void 0, void 0, function () {
57731
+ var valid, component, itemHe, component, itemNamHoc, component, itemHocKy, defaultData, _loop_1, this_1, field;
57732
+ var _this = this;
57733
+ return __generator(this, function (_a) {
57734
+ switch (_a.label) {
57735
+ case 0: return [4 /*yield*/, this._getResultValidate()];
57736
+ case 1:
57737
+ valid = _a.sent();
57738
+ if (!valid)
57739
+ return [2 /*return*/];
57740
+ // Các đoạn code bên dưới có thể không tối ưu nhưng nhằm mục đích đồng bộ cấu hình giữa các phân hệ,
57741
+ // tránh những bug gặp lại quá nhiều lần trong quá trình triển khai
57742
+ if (this.model.data.idHe) {
57743
+ component = (this.setting.schema.find(function (item) { return item.field == 'idHe'; }))._component;
57744
+ itemHe = component.dataSourceInternal.find(function (item) { return item.value.id == _this.model.data.idHe; }).value;
57745
+ this.model.data.idHe = itemHe.id;
57746
+ this.model.data.idHeDaoTao = itemHe.id;
57747
+ this.model.data.codeHeDaoTao = itemHe.code;
57748
+ this.setCodeAndLabel(['idHe', 'idHeDaoTao', 'codeHeDaoTao'], itemHe);
57749
+ }
57750
+ if (this.model.data.namHoc != null) {
57751
+ component = (this.setting.schema.find(function (item) { return item.field == 'namHoc'; }))._component;
57752
+ itemNamHoc = component.dataSourceInternal.find(function (item) { return item.value == _this.model.data.namHoc; }).value;
57753
+ this.setCodeAndLabel(['namHoc'], itemNamHoc);
57754
+ }
57755
+ if (this.model.data.idHocKy != null) {
57756
+ component = (this.setting.schema.find(function (item) { return item.field == 'idHocKy'; }))._component;
57757
+ itemHocKy = component.dataSourceInternal.find(function (item) { return item.value == _this.model.data.idHocKy; }).value;
57758
+ this.model.data.codeHocKy = itemHocKy.code;
57759
+ this.setCodeAndLabel(['idHocKy', 'codeHocKy'], itemHocKy);
57760
+ }
57761
+ defaultData = Object.assign(Object.assign({}, this.model.data), { syncProduct: true });
57762
+ _loop_1 = function (field) {
57763
+ defaultData[field] = this_1.model.data[field];
57764
+ if (!this_1.cacheDataSource[field])
57765
+ this_1.cacheDataSource[field] = [];
57766
+ var data = this_1.cacheDataSource[field].find(function (p) { return p.value === _this.model.data[field]; });
57767
+ if (data) {
57768
+ defaultData[field + 'code'] = data.code;
57769
+ defaultData[field + 'ten'] = data.label;
57770
+ }
57771
+ };
57772
+ this_1 = this;
57773
+ for (field in this.model.data) {
57774
+ _loop_1(field);
57775
+ }
57776
+ localStorage.setItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA, JSON.stringify(defaultData));
57777
+ window.location.reload();
57778
+ this.cancel(null);
57779
+ return [2 /*return*/];
57780
+ }
57781
+ });
57782
+ });
57783
+ };
57784
+ DefaultDataSettingsComponent.prototype.cancel = function (evt) {
57785
+ this.onHide.emit();
57786
+ };
57787
+ return DefaultDataSettingsComponent;
57788
+ }(DataFormBase));
57789
+ DefaultDataSettingsComponent.decorators = [
57790
+ { type: i0.Component, args: [{
57791
+ selector: 'default-data-settings',
57792
+ template: "<crud-form #crudForm [setting]=\"setting\" [context]=\"context\" [disableCaching]=\"true\" [(data)]=\"model.data\"\n (onFormReady)=\"_handleFormReady($event)\">\n</crud-form>\n<ng-template #buttonTemplate>\n <button *ngIf=\"!model.data.__disableEdit && !__isFormView\" pButton type=\"button\" icon=\"pi pi-save\"\n class=\"p-button-text\" [label]=\"'FORM.SAVE' | translate\" (click)=\"saveCommonSetting()\"></button>\n <button pButton preventTab type=\"button\" icon=\"pi pi-replay\" class=\"p-button-text p-button-secondary\"\n [label]=\"'FORM.CANCEL' | translate\" (click)=\"cancel($event)\"></button>\n</ng-template>",
57793
+ changeDetection: i0.ChangeDetectionStrategy.Default,
57794
+ providers: [ComponentContextService],
57795
+ styles: [""]
57796
+ },] }
57797
+ ];
57798
+ DefaultDataSettingsComponent.ctorParameters = function () { return [
57799
+ { type: i0.Injector },
57800
+ { type: EnvironmentService }
57801
+ ]; };
57802
+ DefaultDataSettingsComponent.propDecorators = {
57803
+ settingKey: [{ type: i0.Input }],
57804
+ onShow: [{ type: i0.Output }],
57805
+ onHide: [{ type: i0.Output }]
57806
+ };
57807
+
57509
57808
  function coreDeclaration() {
57510
57809
  return [
57511
57810
  AddressComponent,
@@ -57542,6 +57841,7 @@
57542
57841
  CongViecNextFirstStepComponent,
57543
57842
  DatetimePickerComponent,
57544
57843
  DatetimePickerRangeComponent,
57844
+ DefaultDataSettingsComponent,
57545
57845
  DynamicNodeComponent,
57546
57846
  DropdownComponent,
57547
57847
  EntityPickerBoxComponent,
@@ -58283,97 +58583,98 @@
58283
58583
  exports.ɵbv = BaseCongviecDinhkemFormComponent;
58284
58584
  exports.ɵbw = DatetimePickerComponent;
58285
58585
  exports.ɵbx = DatetimePickerRangeComponent;
58286
- exports.ɵby = DynamicNodeComponent;
58287
- exports.ɵbz = EntityPickerBoxComponent;
58586
+ exports.ɵby = DefaultDataSettingsComponent;
58587
+ exports.ɵbz = DynamicNodeComponent;
58288
58588
  exports.ɵc = CanBo_HoSoService;
58289
- exports.ɵca = EntityPickerDataComponent;
58290
- exports.ɵcb = EntityPickerSelectedComponent;
58291
- exports.ɵcc = EntityPickerComponent;
58292
- exports.ɵcd = EntityPickerDialogComponent;
58293
- exports.ɵce = EntityPermissionComponent;
58294
- exports.ɵcf = EquationEditorComponent;
58295
- exports.ɵcg = MaskComponent;
58296
- exports.ɵch = NumberPickerRangeComponent;
58297
- exports.ɵci = PagingNextBackOnlyComponent;
58298
- exports.ɵcj = RadioButtonListComponent;
58299
- exports.ɵck = VanBanPickerComponent;
58300
- exports.ɵcl = VanBanDenService;
58301
- exports.ɵcm = VanBanDiService;
58302
- exports.ɵcn = VanBanPickerDialogComponent;
58303
- exports.ɵco = VanbanDiPickerComponent;
58304
- exports.ɵcp = VanbanDenPickerComponent;
58305
- exports.ɵcq = CongViecPickerComponent;
58306
- exports.ɵcr = CongViecService$1;
58307
- exports.ɵcs = TaskWorkflowHistoriesService;
58308
- exports.ɵct = SettingsComponent;
58309
- exports.ɵcu = SettingsRowComponent;
58310
- exports.ɵcv = SettingsWorkflowComponent;
58311
- exports.ɵcw = SettingsWorkflowNo1Component;
58312
- exports.ɵcx = SimpleWorkflowFormComponent;
58313
- exports.ɵcy = ProcessWorkflowTargetComponent;
58314
- exports.ɵcz = DmChucVuService;
58589
+ exports.ɵca = EntityPickerBoxComponent;
58590
+ exports.ɵcb = EntityPickerDataComponent;
58591
+ exports.ɵcc = EntityPickerSelectedComponent;
58592
+ exports.ɵcd = EntityPickerComponent;
58593
+ exports.ɵce = EntityPickerDialogComponent;
58594
+ exports.ɵcf = EntityPermissionComponent;
58595
+ exports.ɵcg = EquationEditorComponent;
58596
+ exports.ɵch = MaskComponent;
58597
+ exports.ɵci = NumberPickerRangeComponent;
58598
+ exports.ɵcj = PagingNextBackOnlyComponent;
58599
+ exports.ɵck = RadioButtonListComponent;
58600
+ exports.ɵcl = VanBanPickerComponent;
58601
+ exports.ɵcm = VanBanDenService;
58602
+ exports.ɵcn = VanBanDiService;
58603
+ exports.ɵco = VanBanPickerDialogComponent;
58604
+ exports.ɵcp = VanbanDiPickerComponent;
58605
+ exports.ɵcq = VanbanDenPickerComponent;
58606
+ exports.ɵcr = CongViecPickerComponent;
58607
+ exports.ɵcs = CongViecService$1;
58608
+ exports.ɵct = TaskWorkflowHistoriesService;
58609
+ exports.ɵcu = SettingsComponent;
58610
+ exports.ɵcv = SettingsRowComponent;
58611
+ exports.ɵcw = SettingsWorkflowComponent;
58612
+ exports.ɵcx = SettingsWorkflowNo1Component;
58613
+ exports.ɵcy = SimpleWorkflowFormComponent;
58614
+ exports.ɵcz = ProcessWorkflowTargetComponent;
58315
58615
  exports.ɵd = ListBase;
58316
- exports.ɵda = ChoYKienFormComponent;
58317
- exports.ɵdb = SplashComponentV1Component;
58318
- exports.ɵdc = SplashComponentV2Component;
58319
- exports.ɵdd = StateMachinesConnectionReceiverComponent;
58320
- exports.ɵde = StateMachinesConnectionReceiverConditionComponent;
58321
- exports.ɵdf = StateMachinesConnectionReceiverDepartmentComponent;
58322
- exports.ɵdg = StateMachinesConnectionReceiverGroupComponent;
58323
- exports.ɵdh = StateMachinesConnectionReceiverUserComponent;
58324
- exports.ɵdi = StateMachinesConnectionReceiverRoleComponent;
58325
- exports.ɵdj = StateMachinesConnectionSenderComponent;
58326
- exports.ɵdk = StartWorkflowComponent;
58327
- exports.ɵdl = ShareLinkByPermissionComponent;
58328
- exports.ɵdm = WorkflowSettingNewComponent;
58329
- exports.ɵdn = PermissionSharingComponent;
58330
- exports.ɵdo = WorkflowPermissionService;
58331
- exports.ɵdp = TnCheckboxComponent;
58332
- exports.ɵdq = TnDialogComponent;
58333
- exports.ɵdr = TnColorPickerComponent;
58334
- exports.ɵds = TnTinymceComponent;
58335
- exports.ɵdt = TnTabViewComponent;
58336
- exports.ɵdu = TableDetailFormComponent;
58337
- exports.ɵdv = FileIconPipe;
58338
- exports.ɵdw = FileSizePipe;
58339
- exports.ɵdx = QuickAddFormComponent;
58340
- exports.ɵdy = PreventShiftTabDirective;
58341
- exports.ɵdz = TnTemplateDirective;
58616
+ exports.ɵda = DmChucVuService;
58617
+ exports.ɵdb = ChoYKienFormComponent;
58618
+ exports.ɵdc = SplashComponentV1Component;
58619
+ exports.ɵdd = SplashComponentV2Component;
58620
+ exports.ɵde = StateMachinesConnectionReceiverComponent;
58621
+ exports.ɵdf = StateMachinesConnectionReceiverConditionComponent;
58622
+ exports.ɵdg = StateMachinesConnectionReceiverDepartmentComponent;
58623
+ exports.ɵdh = StateMachinesConnectionReceiverGroupComponent;
58624
+ exports.ɵdi = StateMachinesConnectionReceiverUserComponent;
58625
+ exports.ɵdj = StateMachinesConnectionReceiverRoleComponent;
58626
+ exports.ɵdk = StateMachinesConnectionSenderComponent;
58627
+ exports.ɵdl = StartWorkflowComponent;
58628
+ exports.ɵdm = ShareLinkByPermissionComponent;
58629
+ exports.ɵdn = WorkflowSettingNewComponent;
58630
+ exports.ɵdo = PermissionSharingComponent;
58631
+ exports.ɵdp = WorkflowPermissionService;
58632
+ exports.ɵdq = TnCheckboxComponent;
58633
+ exports.ɵdr = TnDialogComponent;
58634
+ exports.ɵds = TnColorPickerComponent;
58635
+ exports.ɵdt = TnTinymceComponent;
58636
+ exports.ɵdu = TnTabViewComponent;
58637
+ exports.ɵdv = TableDetailFormComponent;
58638
+ exports.ɵdw = FileIconPipe;
58639
+ exports.ɵdx = FileSizePipe;
58640
+ exports.ɵdy = QuickAddFormComponent;
58641
+ exports.ɵdz = PreventShiftTabDirective;
58342
58642
  exports.ɵe = TreeTableComponent;
58343
- exports.ɵea = UserPickerComponent;
58344
- exports.ɵeb = UserPickerBoxComponent;
58345
- exports.ɵec = TnAppHelpComponent;
58346
- exports.ɵed = PathNameService;
58347
- exports.ɵee = HelperCurrentPageComponent;
58348
- exports.ɵef = TnAppNotificationListComponent;
58349
- exports.ɵeg = TnAppNotificationComponent;
58350
- exports.ɵeh = FolderFormComponent;
58351
- exports.ɵei = FileFormComponent;
58352
- exports.ɵej = FileViewerComponent;
58353
- exports.ɵek = FileVersionListComponent;
58354
- exports.ɵel = WorkflowHistoryComponent;
58355
- exports.ɵem = WorkflowHistoryDialogComponent;
58356
- exports.ɵen = WorkflowHistoryNewComponent;
58357
- exports.ɵeo = WorkflowSettingComponent;
58358
- exports.ɵep = WorkflowSettingDialogComponent;
58359
- exports.ɵeq = WorkflowPermissionComponent;
58360
- exports.ɵer = WorkflowPermissionFormComponent;
58361
- exports.ɵes = QrCodeGeneratorComponent;
58362
- exports.ɵet = AccessDeniedV1Component;
58363
- exports.ɵeu = AddNewsComponent;
58364
- exports.ɵev = ArticleService;
58365
- exports.ɵew = NewsCategoryService;
58366
- exports.ɵex = SignatureDetailComponent;
58367
- exports.ɵey = KySoSimDanhSachChuKyComponent;
58368
- exports.ɵez = KySoSimChuKyUserService;
58643
+ exports.ɵea = TnTemplateDirective;
58644
+ exports.ɵeb = UserPickerComponent;
58645
+ exports.ɵec = UserPickerBoxComponent;
58646
+ exports.ɵed = TnAppHelpComponent;
58647
+ exports.ɵee = PathNameService;
58648
+ exports.ɵef = HelperCurrentPageComponent;
58649
+ exports.ɵeg = TnAppNotificationListComponent;
58650
+ exports.ɵeh = TnAppNotificationComponent;
58651
+ exports.ɵei = FolderFormComponent;
58652
+ exports.ɵej = FileFormComponent;
58653
+ exports.ɵek = FileViewerComponent;
58654
+ exports.ɵel = FileVersionListComponent;
58655
+ exports.ɵem = WorkflowHistoryComponent;
58656
+ exports.ɵen = WorkflowHistoryDialogComponent;
58657
+ exports.ɵeo = WorkflowHistoryNewComponent;
58658
+ exports.ɵep = WorkflowSettingComponent;
58659
+ exports.ɵeq = WorkflowSettingDialogComponent;
58660
+ exports.ɵer = WorkflowPermissionComponent;
58661
+ exports.ɵes = WorkflowPermissionFormComponent;
58662
+ exports.ɵet = QrCodeGeneratorComponent;
58663
+ exports.ɵeu = AccessDeniedV1Component;
58664
+ exports.ɵev = AddNewsComponent;
58665
+ exports.ɵew = ArticleService;
58666
+ exports.ɵex = NewsCategoryService;
58667
+ exports.ɵey = SignatureDetailComponent;
58668
+ exports.ɵez = KySoSimDanhSachChuKyComponent;
58369
58669
  exports.ɵf = UniversalLinkProcessorComponent;
58370
- exports.ɵfa = FileKySoSimComponent;
58371
- exports.ɵfb = KySoSimSignPDFService;
58372
- exports.ɵfc = TaiLieuCuaToiComponent;
58373
- exports.ɵfd = KhaiThacTaiLieuDungChungComponent;
58374
- exports.ɵfe = DanhMucDungChungService;
58375
- exports.ɵff = TnTemplateComponent;
58376
- exports.ɵfg = CheckReadyComponent;
58670
+ exports.ɵfa = KySoSimChuKyUserService;
58671
+ exports.ɵfb = FileKySoSimComponent;
58672
+ exports.ɵfc = KySoSimSignPDFService;
58673
+ exports.ɵfd = TaiLieuCuaToiComponent;
58674
+ exports.ɵfe = KhaiThacTaiLieuDungChungComponent;
58675
+ exports.ɵff = DanhMucDungChungService;
58676
+ exports.ɵfg = TnTemplateComponent;
58677
+ exports.ɵfh = CheckReadyComponent;
58377
58678
  exports.ɵg = NotFoundComponent;
58378
58679
  exports.ɵh = SendAccessTokenInterceptor;
58379
58680
  exports.ɵi = LogInterceptor;