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
@@ -478,7 +478,7 @@ class EnvironmentService {
478
478
  getServiceEndpointByServiceInfo(serviceInfo) {
479
479
  let endpoint = '';
480
480
  if (serviceInfo.useLocal) {
481
- endpoint = serviceInfo.localHttpEndpoint;
481
+ endpoint = serviceInfo.localhttpendpoint;
482
482
  }
483
483
  else {
484
484
  const gateway = this.environment.appMetadata.gateway;
@@ -631,7 +631,13 @@ class EnvironmentService {
631
631
  return this.isTrue(this.environment.enablePopulateLog);
632
632
  }
633
633
  getShowDefaultSetting() {
634
- return this.isTrue(this.environment.appMetadata.main.showDefaultSetting);
634
+ const app = this.getObjectApp(this.appCode);
635
+ return this.isTrue(app === null || app === void 0 ? void 0 : app.showdefaultsetting);
636
+ }
637
+ getConfigDefaultSetting() {
638
+ var _a, _b;
639
+ const app = this.getObjectApp(this.appCode);
640
+ 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 : [];
635
641
  }
636
642
  getDisableNotification() {
637
643
  return this.isTrue(this.environment.disableNotification);
@@ -680,10 +686,11 @@ class EnvironmentService {
680
686
  return (_b = (_a = this.environment.defaultValue) === null || _a === void 0 ? void 0 : _a.kySoSim) === null || _b === void 0 ? void 0 : _b.tsaUrl;
681
687
  }
682
688
  getButtonPermissions() {
683
- return this.environment.buttonPermissions;
689
+ var _a;
690
+ return (_a = this.environment.buttonPermissions) !== null && _a !== void 0 ? _a : [];
684
691
  }
685
- getSettingDataDefault() {
686
- return this.environment.settingDataDefault;
692
+ getFieldsInDefaultSetting() {
693
+ return this.environment.fieldsInDefaultSetting;
687
694
  }
688
695
  getKeyPressPermissionUtils() {
689
696
  return this.environment.keyPressPermissionUtils;
@@ -718,6 +725,12 @@ class EnvironmentService {
718
725
  return null;
719
726
  return this.environment.customConfig[key];
720
727
  }
728
+ getListDonViQuanLyNganh() {
729
+ return [];
730
+ }
731
+ getListDonViQuanLyHocPhan() {
732
+ return [];
733
+ }
721
734
  }
722
735
  EnvironmentService.ɵprov = ɵɵdefineInjectable({ factory: function EnvironmentService_Factory() { return new EnvironmentService(ɵɵinject(moduleConfigFunc, 8)); }, token: EnvironmentService, providedIn: "root" });
723
736
  EnvironmentService.decorators = [
@@ -2857,9 +2870,6 @@ const clone = (obj) => {
2857
2870
  return undefined;
2858
2871
  };
2859
2872
  const mergeJSON = (target, source) => {
2860
- if (Object.keys(source).length == 0) {
2861
- return target;
2862
- }
2863
2873
  if (isArray(source)) {
2864
2874
  if (!isArray(target)) {
2865
2875
  target = [];
@@ -2877,6 +2887,9 @@ const mergeJSON = (target, source) => {
2877
2887
  target.length = i;
2878
2888
  }
2879
2889
  else if (isLiteralObject(source)) {
2890
+ if (Object.keys(source).length == 0) {
2891
+ return target;
2892
+ }
2880
2893
  if (!isLiteralObject(target))
2881
2894
  target = {};
2882
2895
  else
@@ -3345,6 +3358,7 @@ class CrudFormCustomFunction {
3345
3358
  class CrudFormSetting {
3346
3359
  constructor(init) {
3347
3360
  this.disableCaching = false;
3361
+ this.disableDefaultSettingCache = false;
3348
3362
  this.hiddenTrinhKy = true;
3349
3363
  this.schema = [];
3350
3364
  this.buildInSchema = [];
@@ -7834,8 +7848,9 @@ class ComponentBase {
7834
7848
  callBackError(res);
7835
7849
  return;
7836
7850
  }
7837
- if (message)
7851
+ if (message) {
7838
7852
  this._injector.get(NotifierService).showSuccess(message);
7853
+ }
7839
7854
  if (callBack)
7840
7855
  callBack(res);
7841
7856
  }
@@ -7967,8 +7982,9 @@ class ComponentBase {
7967
7982
  _getValueFromDatasource(itemSelected, isMultiple, funcGetLabel) {
7968
7983
  let value = null;
7969
7984
  if (isMultiple) {
7970
- if (itemSelected && itemSelected.length > 0)
7985
+ if (itemSelected && itemSelected.length > 0) {
7971
7986
  value = itemSelected.map(q => funcGetLabel(q.value)).join(', ');
7987
+ }
7972
7988
  }
7973
7989
  else {
7974
7990
  if (itemSelected) {
@@ -8032,17 +8048,20 @@ class ComponentBase {
8032
8048
  const itemSelected = yield schema._component.controlPicker._component.getDataSelectedValue(value);
8033
8049
  const tmpSchema = schema;
8034
8050
  let funcGetLabel = tmpSchema.funcGetLabel;
8035
- if (!funcGetLabel)
8051
+ if (!funcGetLabel) {
8036
8052
  funcGetLabel = item => {
8037
8053
  return item.value[tmpSchema.displayField];
8038
8054
  };
8055
+ }
8039
8056
  value = this._getValueFromDatasource(itemSelected, schema.multiple, item => item.ten);
8040
8057
  if (schema.multiple) {
8041
8058
  if (itemSelected.length > 0) {
8042
- if (schema.funcGetLabel)
8059
+ if (schema.funcGetLabel) {
8043
8060
  value = itemSelected.map(q => tmpSchema.funcGetLabel(q.value)).join(', ');
8044
- else
8061
+ }
8062
+ else {
8045
8063
  value = itemSelected.map(q => q.value[tmpSchema.displayField]).join(', ');
8064
+ }
8046
8065
  }
8047
8066
  else {
8048
8067
  value = null;
@@ -8050,10 +8069,12 @@ class ComponentBase {
8050
8069
  }
8051
8070
  else {
8052
8071
  if (itemSelected) {
8053
- if (schema.funcGetLabel)
8072
+ if (schema.funcGetLabel) {
8054
8073
  value = schema.funcGetLabel(itemSelected.value);
8055
- else
8074
+ }
8075
+ else {
8056
8076
  value = itemSelected.value[schema.displayField];
8077
+ }
8057
8078
  }
8058
8079
  }
8059
8080
  }
@@ -8061,7 +8082,7 @@ class ComponentBase {
8061
8082
  const itemSelected = yield schema._component.getDataSelectedValue(value);
8062
8083
  const tmpSchema = schema;
8063
8084
  let funcGetLabel = tmpSchema.funcGetLabel;
8064
- if (!funcGetLabel)
8085
+ if (!funcGetLabel) {
8065
8086
  funcGetLabel = item => {
8066
8087
  if (item) {
8067
8088
  return item[tmpSchema.displayField];
@@ -8070,6 +8091,7 @@ class ComponentBase {
8070
8091
  return null;
8071
8092
  }
8072
8093
  };
8094
+ }
8073
8095
  value = this._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
8074
8096
  }
8075
8097
  else if (schema instanceof CoCauToChucControlSchema) {
@@ -8086,10 +8108,11 @@ class ComponentBase {
8086
8108
  else {
8087
8109
  dataSource = tmpSchema._component.dropdown._options;
8088
8110
  itemSelected = dataSource.find(q => q.value == value);
8089
- if (itemSelected)
8111
+ if (itemSelected) {
8090
8112
  itemSelected = {
8091
8113
  value: itemSelected
8092
8114
  };
8115
+ }
8093
8116
  }
8094
8117
  value = this._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
8095
8118
  }
@@ -8212,6 +8235,13 @@ class ComponentBase {
8212
8235
  return '';
8213
8236
  });
8214
8237
  }
8238
+ getDefaultSettings() {
8239
+ const localData = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
8240
+ if (localData != null && localData != '') {
8241
+ return JSON.parse(localData);
8242
+ }
8243
+ return {};
8244
+ }
8215
8245
  }
8216
8246
  ComponentBase.decorators = [
8217
8247
  { type: Directive }
@@ -11537,8 +11567,10 @@ class CrudFormComponent extends ComponentBase {
11537
11567
  }
11538
11568
  }
11539
11569
  setDataDefault() {
11570
+ return;
11540
11571
  const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
11541
- const getSettingDataDefault = this._environmentService.getSettingDataDefault();
11572
+ // const getSettingDataDefault = this._environmentService.getSettingDataDefault();
11573
+ const getSettingDataDefault = {};
11542
11574
  if (stringDataDefault && (this._modelData && !this._modelData.id)) {
11543
11575
  const dataCache = JSON.parse(stringDataDefault);
11544
11576
  for (const item of this.setting.schema) {
@@ -20027,6 +20059,7 @@ EntityPermissionService.ctorParameters = () => [
20027
20059
  class WorkflowSettingsService extends BaseService {
20028
20060
  constructor(http, injector, _environmentService) {
20029
20061
  super(http, injector, '');
20062
+ this.serviceCode = 'workflow';
20030
20063
  this.entityName = 'WorkflowSetting';
20031
20064
  this.serviceManagers = {};
20032
20065
  this.endPoint = _environmentService.getHttpServiceEndpointWithVersion(this.serviceCode);
@@ -20038,6 +20071,10 @@ class WorkflowSettingsService extends BaseService {
20038
20071
  getEndpointByService(service) {
20039
20072
  return service.endPoint;
20040
20073
  }
20074
+ changeEndpoint(baseService) {
20075
+ this.serviceUri = `${this.getEndpointByService(baseService)}/WorkflowSetting`;
20076
+ return this;
20077
+ }
20041
20078
  setCurrentServiceUri(tableName) {
20042
20079
  const service = this.serviceManagers[tableName];
20043
20080
  if (service == undefined) {
@@ -20201,6 +20238,7 @@ class ListBase extends ComponentBase {
20201
20238
  this.customGetData = false;
20202
20239
  this.readyToTrinhKy = false;
20203
20240
  this.plusUrl = '';
20241
+ this.defaultSettings = {};
20204
20242
  this._environmentService = this._injector.get(EnvironmentService);
20205
20243
  this._notifierService = this._injector.get(NotifierService);
20206
20244
  this._activatedRoute = this._injector.get(ActivatedRoute);
@@ -20645,7 +20683,7 @@ class ListBase extends ComponentBase {
20645
20683
  return __awaiter(this, void 0, void 0, function* () {
20646
20684
  const key = this.setting.baseService.getKeyWorkflowSetting();
20647
20685
  if (this.setting.baseService.useWorkflow) {
20648
- const dataWorkflowNew = (yield this._workflowSettingService.getDetailByFilter([
20686
+ const dataWorkflowNew = (yield this._workflowSettingService.changeEndpoint(this.setting.baseService).getDetailByFilter([
20649
20687
  this.newFilter('tableName', Operator.equal, key)
20650
20688
  ])).data;
20651
20689
  this._registerGlobalService(this._congViecServiceInBase);
@@ -21004,6 +21042,34 @@ class ListBase extends ComponentBase {
21004
21042
  this.onBeforeCancel();
21005
21043
  this.showDetailForm = false;
21006
21044
  }
21045
+ // eslint-disable-next-line spaced-comment
21046
+ //#endregion
21047
+ forceSelectDefaultData(cb) {
21048
+ this.defaultSettings = this.getDefaultSettings();
21049
+ const requiredFields = this._environmentService.getConfigDefaultSetting();
21050
+ const missingFields = [];
21051
+ requiredFields.forEach(fieldInfo => {
21052
+ if (!fieldInfo.required)
21053
+ return;
21054
+ if (!this.defaultSettings[fieldInfo.field]) {
21055
+ missingFields.push(fieldInfo.field);
21056
+ }
21057
+ });
21058
+ if (missingFields.length) {
21059
+ const lstFieldInfo = this._environmentService.getFieldsInDefaultSetting();
21060
+ const lstFieldLabel = lstFieldInfo.filter(q => missingFields.some(x => x.toLowerCase() == q.field.toLowerCase()))
21061
+ .map(q => q.label);
21062
+ this.model.ready = false;
21063
+ this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED, f => {
21064
+ this.forceSelectDefaultData(null);
21065
+ });
21066
+ this._injector.get(NotifierService).showWarning(`Bạn phải cấu hình thông tin (${lstFieldLabel.join(', ')}) trước`);
21067
+ this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT);
21068
+ }
21069
+ else if (cb) {
21070
+ cb(this.defaultSettings);
21071
+ }
21072
+ }
21007
21073
  }
21008
21074
  ListBase.decorators = [
21009
21075
  { type: Directive }
@@ -39203,7 +39269,7 @@ class AppRootMenuComponent extends ComponentBase {
39203
39269
  AppRootMenuComponent.decorators = [
39204
39270
  { type: Component, args: [{
39205
39271
  selector: 'app-root-menu',
39206
- template: "<span class=\"rootMenu\" *ngIf=\"rootModel.currentAppMetadata\">\n <i class=\"pi pi-slack\" style=\"margin-right: 5px;\"></i>\n {{rootModel.currentAppMetadata.longTitle | translate}}</span>",
39272
+ 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 ",
39207
39273
  providers: [ComponentContextService],
39208
39274
  styles: [""]
39209
39275
  },] }
@@ -39238,6 +39304,14 @@ class AppTopBarV1Component extends ComponentBase {
39238
39304
  this.isFirstTime = false;
39239
39305
  this.showSettings = false;
39240
39306
  this.allSubscriptions = [];
39307
+ this.appDefaultSettings = [];
39308
+ this.defaultSettingModel = new DialogModel({
39309
+ header: 'Cấu hình phân hệ',
39310
+ popupSize: new PopupSize({ width: 700, height: 350 }),
39311
+ data: {
39312
+ text: 'Thiết lập tham số mặc định'
39313
+ }
39314
+ });
39241
39315
  this.message = '';
39242
39316
  this.defaultAvatar = this._environmentService.getDefaultMaleAvatar();
39243
39317
  this.config.isProduction = this._environmentService.getIsProduction();
@@ -39245,7 +39319,10 @@ class AppTopBarV1Component extends ComponentBase {
39245
39319
  this.config.logo = this._environmentService.getLogo();
39246
39320
  this.config.owner = this._environmentService.getOwner();
39247
39321
  this.fileApi = this._environmentService.getHttpServiceEndpoint('file');
39248
- if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != null && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
39322
+ this.appDefaultSettings = this._environmentService.getConfigDefaultSetting();
39323
+ if (this.rootContext.data.currentAppMetadata
39324
+ && this.rootContext.data.currentAppMetadata.showDefaultSetting != null
39325
+ && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
39249
39326
  this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
39250
39327
  }
39251
39328
  else {
@@ -39254,13 +39331,13 @@ class AppTopBarV1Component extends ComponentBase {
39254
39331
  if (!this.rootContext.data.currentUser) {
39255
39332
  this.rootContext.data.currentUser = {};
39256
39333
  }
39257
- // this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
39258
- // this._cd.detectChanges();
39259
- // }));
39260
39334
  this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
39261
39335
  this.currentUser = this._userService.getCurrentUser();
39262
39336
  this.loadMenuMetadata();
39263
39337
  });
39338
+ this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, rs => {
39339
+ this.showDefaultSettingForm();
39340
+ });
39264
39341
  if (this.rootModel.allowAnonymous) {
39265
39342
  this.loadMenuMetadata();
39266
39343
  }
@@ -39347,9 +39424,6 @@ class AppTopBarV1Component extends ComponentBase {
39347
39424
  const dataCacheDefault = JSON.parse(stringDataDefault);
39348
39425
  this.formatDefaultDataSetting(dataCacheDefault);
39349
39426
  }
39350
- else {
39351
- this.defaultDataSetting = 'Thiết lập tham số mặc định';
39352
- }
39353
39427
  }
39354
39428
  ngOnDestroy() {
39355
39429
  this.allSubscriptions.forEach(element => {
@@ -39362,8 +39436,8 @@ class AppTopBarV1Component extends ComponentBase {
39362
39436
  }
39363
39437
  formatDefaultDataSetting(data) {
39364
39438
  let dataSetting = '';
39365
- const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
39366
- const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
39439
+ const fields = ['idHe', 'namHoc', 'idHocKy', 'idDotThi'];
39440
+ const fieldPluses = ['code', 'ten', 'ten', 'ten'];
39367
39441
  fields.forEach((field, index) => {
39368
39442
  if (!this.checkHidden(field)) {
39369
39443
  const _f = `${field}${fieldPluses[index]}`;
@@ -39375,10 +39449,10 @@ class AppTopBarV1Component extends ComponentBase {
39375
39449
  if (dataSetting.length > 0) {
39376
39450
  dataSetting = dataSetting.substring(0, dataSetting.length - 1);
39377
39451
  }
39378
- this.defaultDataSetting = dataSetting;
39452
+ this.defaultSettingModel.data.text = dataSetting;
39379
39453
  }
39380
39454
  checkHidden(field) {
39381
- return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
39455
+ return this.appDefaultSettings.some(p => p.field == field);
39382
39456
  }
39383
39457
  getCurrentUserFullName() {
39384
39458
  return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
@@ -39514,11 +39588,8 @@ class AppTopBarV1Component extends ComponentBase {
39514
39588
  }
39515
39589
  this._authenService.logout();
39516
39590
  }
39517
- settingDefault() {
39518
- this.model.dataModelSetting = {
39519
- data: {},
39520
- showSettings: true
39521
- };
39591
+ showDefaultSettingForm() {
39592
+ this.defaultSettingModel.showEditForm = true;
39522
39593
  }
39523
39594
  onShowSettings(ev) {
39524
39595
  this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
@@ -39585,7 +39656,7 @@ class AppTopBarV1Component extends ComponentBase {
39585
39656
  AppTopBarV1Component.decorators = [
39586
39657
  { type: Component, args: [{
39587
39658
  selector: 'app-topbar-v1',
39588
- 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>",
39659
+ 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>",
39589
39660
  providers: [ComponentContextService],
39590
39661
  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}}"]
39591
39662
  },] }
@@ -41062,7 +41133,7 @@ class AdvanceSearchComponent extends ComponentBase {
41062
41133
  _schema.panelClass = 'dropdown-advs';
41063
41134
  }
41064
41135
  });
41065
- if (!this.setting.disableCaching) {
41136
+ if (!this.setting.disableDefaultSettingCache) {
41066
41137
  this.setDataDefault(this.setting.schema);
41067
41138
  }
41068
41139
  this.modelCrudForm.data = this.model.data;
@@ -41072,33 +41143,36 @@ class AdvanceSearchComponent extends ComponentBase {
41072
41143
  }
41073
41144
  setDataDefault(formSchema) {
41074
41145
  const dataCache = this._localCacheService.getDataDefault();
41075
- const getSettingDataDefault = this._environmentService.getSettingDataDefault();
41076
- for (const item of formSchema) {
41077
- if (item instanceof DropdownControlSchema) {
41078
- const control = item;
41079
- const key = (control.field + (control.valueField == 'id' ? '' : control.valueField));
41080
- let value = dataCache[key];
41146
+ let advanceSearchFieldCache = this.parentSetting.advanceSearchFieldCache;
41147
+ if (!advanceSearchFieldCache || !Object.keys(advanceSearchFieldCache).length) {
41148
+ advanceSearchFieldCache = {};
41149
+ const lstFieldInfo = this._environmentService.getFieldsInDefaultSetting();
41150
+ if (lstFieldInfo) {
41151
+ lstFieldInfo.forEach(fieldInfo => {
41152
+ advanceSearchFieldCache[fieldInfo.field] = fieldInfo.field;
41153
+ });
41154
+ }
41155
+ }
41156
+ if (!advanceSearchFieldCache || !Object.keys(advanceSearchFieldCache).length)
41157
+ return;
41158
+ Object.keys(advanceSearchFieldCache).forEach(field => {
41159
+ const control = formSchema.find(q => q.field == field);
41160
+ if (!control)
41161
+ return;
41162
+ if (control instanceof DropdownControlSchema) {
41163
+ const key = control.field + (control.valueField == 'id' ? '' : control.valueField);
41164
+ const value = dataCache[key];
41081
41165
  if (value) {
41082
41166
  this.model.data[control.field] = value;
41083
41167
  }
41084
- else if (getSettingDataDefault) { // lấy cấu hình field mapPing
41085
- const fieldMapGetCache = getSettingDataDefault[control.field];
41086
- if (fieldMapGetCache) {
41087
- const key = (fieldMapGetCache + (control.valueField == 'id' ? '' : control.valueField));
41088
- value = dataCache[key];
41089
- if (value) {
41090
- this.model.data[control.field] = value;
41091
- }
41092
- }
41093
- }
41094
41168
  }
41095
41169
  else {
41096
- const value = dataCache[item.field];
41170
+ const value = dataCache[control.field];
41097
41171
  if (value) {
41098
- this.model.data[item.field] = value;
41172
+ this.model.data[control.field] = value;
41099
41173
  }
41100
41174
  }
41101
- }
41175
+ });
41102
41176
  }
41103
41177
  ngAfterViewInit() {
41104
41178
  }
@@ -41625,8 +41699,9 @@ class DatetimePickerComponent {
41625
41699
  this.control.disabled = isDisabled;
41626
41700
  }
41627
41701
  getPanelClass() {
41628
- if (this.control.appendTo == 'body')
41702
+ if (this.control.appendTo == 'body') {
41629
41703
  return `${this.control.panelClass} p-fixed`;
41704
+ }
41630
41705
  return this.control.panelClass;
41631
41706
  }
41632
41707
  onFocusCalendar(evt) {
@@ -41702,10 +41777,12 @@ class DatetimePickerComponent {
41702
41777
  let mm = String(date.getMinutes());
41703
41778
  if (mm.length == 1)
41704
41779
  mm = '0' + mm;
41705
- if (!showTime)
41780
+ if (!showTime) {
41706
41781
  return `${dd}/${MM}/${yyyy}`;
41707
- else
41782
+ }
41783
+ else {
41708
41784
  return `${dd}/${MM}/${yyyy} ${hh}:${mm}`;
41785
+ }
41709
41786
  }
41710
41787
  else if (isValidTime(date)) {
41711
41788
  let hh = String(date.getHours());
@@ -50677,6 +50754,208 @@ FileSizePipe.decorators = [
50677
50754
  },] }
50678
50755
  ];
50679
50756
 
50757
+ class DefaultDataSettingsComponent extends DataFormBase {
50758
+ constructor(injector, _environmentService
50759
+ // private _tbl_DM_NguoiHoc_HeDaoTaoService: tbl_DM_NguoiHoc_HeDaoTaoService,
50760
+ // private _tbl_HeThong_HocKyService: tbl_HeThong_HocKyService,
50761
+ // private _tbl_HeThong_NamHocService: tbl_HeThong_NamHocService,
50762
+ // private _tbl_Thi_DotThiService: tbl_Thi_DotThiService,
50763
+ // private _tbl_Thi_Dkt_DotService: tbl_Thi_Dkt_DotService,
50764
+ ) {
50765
+ super(injector);
50766
+ this._environmentService = _environmentService;
50767
+ this.settingKey = '';
50768
+ this.onShow = new EventEmitter();
50769
+ this.onHide = new EventEmitter();
50770
+ this.appDefaultSettings = [];
50771
+ this.cacheDataSource = {};
50772
+ this.doNotCheckBaseService = true;
50773
+ }
50774
+ ngOnInit() {
50775
+ this.appDefaultSettings = this._environmentService.getConfigDefaultSetting();
50776
+ this.setting.schema = [
50777
+ new DropdownControlSchema({
50778
+ field: 'idHe',
50779
+ mdWidth: 6,
50780
+ label: this._translateService.instant('Hệ đào tạo'),
50781
+ // baseService: this._tbl_DM_NguoiHoc_HeDaoTaoService,
50782
+ fieldPlus: 'code',
50783
+ appendTo: 'body',
50784
+ callbackDataFinish: data => {
50785
+ this.cacheDataSource['idHe'] = data;
50786
+ },
50787
+ enableCaching: false,
50788
+ required: this.getRequired('idHe'),
50789
+ hidden: this.checkHidden('idHe')
50790
+ }),
50791
+ new DropdownControlSchema({
50792
+ field: 'namHoc',
50793
+ label: this._translateService.instant('Năm học'),
50794
+ required: this.getRequired('namHoc'),
50795
+ mdWidth: 3,
50796
+ // baseService: this._tbl_HeThong_NamHocService,
50797
+ fieldPlus: 'id',
50798
+ valueField: 'nam',
50799
+ appendTo: 'body',
50800
+ callbackDataFinish: data => {
50801
+ this.cacheDataSource['namHoc'] = data;
50802
+ },
50803
+ sortField: 'ten',
50804
+ sortDir: -1,
50805
+ enableCaching: false,
50806
+ placeholder: 'Chọn năm',
50807
+ hidden: this.checkHidden('namHoc')
50808
+ }),
50809
+ new DropdownControlSchema({
50810
+ field: 'idHocKy',
50811
+ label: this._translateService.instant('Học kỳ'),
50812
+ required: this.getRequired('idHocKy'),
50813
+ placeholder: 'Chọn học kỳ',
50814
+ showClear: true,
50815
+ mdWidth: 3,
50816
+ // baseService: this._tbl_HeThong_HocKyService,
50817
+ fieldPlus: 'code',
50818
+ appendTo: 'body',
50819
+ bindingFilters: [
50820
+ this.newBindingFilter('namHoc', Operator.equal, 'namHoc')
50821
+ ],
50822
+ callbackDataFinish: data => {
50823
+ this.cacheDataSource['idHocKy'] = data;
50824
+ },
50825
+ enableCaching: false,
50826
+ hidden: this.checkHidden('idHocKy')
50827
+ }),
50828
+ new DropdownControlSchema({
50829
+ field: 'idDotThi',
50830
+ label: this._translateService.instant('Đợt thi'),
50831
+ required: this.getRequired('idDotThi'),
50832
+ placeholder: 'Chọn đợt thi',
50833
+ showClear: true,
50834
+ mdWidth: 12,
50835
+ // baseService: this._tbl_Thi_DotThiService,
50836
+ fieldPlus: 'code',
50837
+ displayField: 'tenDotThi',
50838
+ callbackDataFinish: data => {
50839
+ this.cacheDataSource['idDotThi'] = data;
50840
+ },
50841
+ appendTo: 'body',
50842
+ bindingFilters: [
50843
+ this.newBindingFilter('namHoc', Operator.equal, 'namHoc'),
50844
+ this.newBindingFilter('idHocKy', Operator.equal, 'idHocKy')
50845
+ ],
50846
+ enableCaching: false,
50847
+ hidden: this.checkHidden('idDotThi')
50848
+ }),
50849
+ new DropdownControlSchema({
50850
+ field: 'idDotDangKyThi',
50851
+ label: this._translateService.instant('Đợt đăng ký thi'),
50852
+ placeholder: 'Chọn đợt đăng ký thi',
50853
+ showClear: true,
50854
+ mdWidth: 12,
50855
+ // baseService: this._tbl_Thi_Dkt_DotService,
50856
+ displayField: 'ten',
50857
+ callbackDataFinish: data => {
50858
+ this.cacheDataSource['idDotDangKyThi'] = data;
50859
+ },
50860
+ appendTo: 'body',
50861
+ bindingFilters: [
50862
+ this.newBindingFilter('idDotThi', Operator.equal, 'idDotThi'),
50863
+ ],
50864
+ enableCaching: false,
50865
+ hidden: this.checkHidden('idDotDangKyThi')
50866
+ })
50867
+ ];
50868
+ this.getDataCache();
50869
+ }
50870
+ checkHidden(field) {
50871
+ return this.appDefaultSettings.some(p => p.field == field);
50872
+ }
50873
+ getRequired(field) {
50874
+ return this.appDefaultSettings.some(p => p.field == field && p.required);
50875
+ }
50876
+ getDataCache() {
50877
+ const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
50878
+ if (stringDataDefault) {
50879
+ const dataCache = JSON.parse(stringDataDefault);
50880
+ for (const item of this.setting.schema) {
50881
+ const value = dataCache[item.field];
50882
+ if (value) {
50883
+ this.model.data[item.field] = value;
50884
+ }
50885
+ }
50886
+ }
50887
+ }
50888
+ setCodeAndLabel(fields, itemSource) {
50889
+ fields.forEach(field => {
50890
+ this.model.data[`${field}code`] = itemSource.code;
50891
+ this.model.data[`${field}ten`] = itemSource.label;
50892
+ });
50893
+ }
50894
+ saveCommonSetting() {
50895
+ return __awaiter(this, void 0, void 0, function* () {
50896
+ const valid = yield this._getResultValidate();
50897
+ if (!valid)
50898
+ return;
50899
+ // 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ệ,
50900
+ // tránh những bug gặp lại quá nhiều lần trong quá trình triển khai
50901
+ if (this.model.data.idHe) {
50902
+ const component = (this.setting.schema.find(item => item.field == 'idHe'))._component;
50903
+ const itemHe = component.dataSourceInternal.find(item => item.value.id == this.model.data.idHe).value;
50904
+ this.model.data.idHe = itemHe.id;
50905
+ this.model.data.idHeDaoTao = itemHe.id;
50906
+ this.model.data.codeHeDaoTao = itemHe.code;
50907
+ this.setCodeAndLabel(['idHe', 'idHeDaoTao', 'codeHeDaoTao'], itemHe);
50908
+ }
50909
+ if (this.model.data.namHoc != null) {
50910
+ const component = (this.setting.schema.find(item => item.field == 'namHoc'))._component;
50911
+ const itemNamHoc = component.dataSourceInternal.find(item => item.value == this.model.data.namHoc).value;
50912
+ this.setCodeAndLabel(['namHoc'], itemNamHoc);
50913
+ }
50914
+ if (this.model.data.idHocKy != null) {
50915
+ const component = (this.setting.schema.find(item => item.field == 'idHocKy'))._component;
50916
+ const itemHocKy = component.dataSourceInternal.find(item => item.value == this.model.data.idHocKy).value;
50917
+ this.model.data.codeHocKy = itemHocKy.code;
50918
+ this.setCodeAndLabel(['idHocKy', 'codeHocKy'], itemHocKy);
50919
+ }
50920
+ const defaultData = Object.assign(Object.assign({}, this.model.data), { syncProduct: true });
50921
+ for (const field in this.model.data) {
50922
+ defaultData[field] = this.model.data[field];
50923
+ if (!this.cacheDataSource[field])
50924
+ this.cacheDataSource[field] = [];
50925
+ const data = this.cacheDataSource[field].find(p => p.value === this.model.data[field]);
50926
+ if (data) {
50927
+ defaultData[field + 'code'] = data.code;
50928
+ defaultData[field + 'ten'] = data.label;
50929
+ }
50930
+ }
50931
+ localStorage.setItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA, JSON.stringify(defaultData));
50932
+ window.location.reload();
50933
+ this.cancel(null);
50934
+ });
50935
+ }
50936
+ cancel(evt) {
50937
+ this.onHide.emit();
50938
+ }
50939
+ }
50940
+ DefaultDataSettingsComponent.decorators = [
50941
+ { type: Component, args: [{
50942
+ selector: 'default-data-settings',
50943
+ 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>",
50944
+ changeDetection: ChangeDetectionStrategy.Default,
50945
+ providers: [ComponentContextService],
50946
+ styles: [""]
50947
+ },] }
50948
+ ];
50949
+ DefaultDataSettingsComponent.ctorParameters = () => [
50950
+ { type: Injector },
50951
+ { type: EnvironmentService }
50952
+ ];
50953
+ DefaultDataSettingsComponent.propDecorators = {
50954
+ settingKey: [{ type: Input }],
50955
+ onShow: [{ type: Output }],
50956
+ onHide: [{ type: Output }]
50957
+ };
50958
+
50680
50959
  function coreDeclaration() {
50681
50960
  return [
50682
50961
  AddressComponent,
@@ -50713,6 +50992,7 @@ function coreDeclaration() {
50713
50992
  CongViecNextFirstStepComponent,
50714
50993
  DatetimePickerComponent,
50715
50994
  DatetimePickerRangeComponent,
50995
+ DefaultDataSettingsComponent,
50716
50996
  DynamicNodeComponent,
50717
50997
  DropdownComponent,
50718
50998
  EntityPickerBoxComponent,
@@ -51009,5 +51289,5 @@ class Pair {
51009
51289
  * Generated bundle index. Do not edit.
51010
51290
  */
51011
51291
 
51012
- export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, EnvironmentService, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, HttpOptions, ImageService, Include, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelKySoDonVi, ModelSchema, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SERVICE_CODES, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getEnvironmentDataNew, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0$1 as ɵ0, ɵ1$1 as ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ2$1 as ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, EntityPickerService as ɵa, ExceptionHandlerService as ɵb, AddressComponent as ɵba, AfterViewCheckedComponent as ɵbb, AdvanceSearchComponent as ɵbc, AppRootMenuComponent as ɵbd, AppTopBarComponent as ɵbe, AppTopBarV1Component as ɵbf, AppTopBarV2Component as ɵbg, AppProfileComponent as ɵbh, AppSubMenuComponent as ɵbi, AppMenuComponent as ɵbj, AutoCompletePickerComponent as ɵbk, CheckBoxListComponent as ɵbl, DropdownService as ɵbm, CoCauToChucPickerListComponent as ɵbn, BaseCongViecTestComponent as ɵbo, BaseCauHinhWorkflowDetailComponent as ɵbp, BaseDmLoaiCongViecFormComponent as ɵbq, BaseDmLinhVucCongViecFormComponent as ɵbr, BaseDmPriorityFormComponent as ɵbs, BaseCongviecDinhkemComponent as ɵbt, CongviecDinhkemService as ɵbu, BaseCongviecDinhkemFormComponent as ɵbv, DatetimePickerComponent as ɵbw, DatetimePickerRangeComponent as ɵbx, DynamicNodeComponent as ɵby, EntityPickerBoxComponent as ɵbz, CanBo_HoSoService as ɵc, EntityPickerDataComponent as ɵca, EntityPickerSelectedComponent as ɵcb, EntityPickerComponent as ɵcc, EntityPickerDialogComponent as ɵcd, EntityPermissionComponent as ɵce, EquationEditorComponent as ɵcf, MaskComponent as ɵcg, NumberPickerRangeComponent as ɵch, PagingNextBackOnlyComponent as ɵci, RadioButtonListComponent as ɵcj, VanBanPickerComponent as ɵck, VanBanDenService as ɵcl, VanBanDiService as ɵcm, VanBanPickerDialogComponent as ɵcn, VanbanDiPickerComponent as ɵco, VanbanDenPickerComponent as ɵcp, CongViecPickerComponent as ɵcq, CongViecService$1 as ɵcr, TaskWorkflowHistoriesService as ɵcs, SettingsComponent as ɵct, SettingsRowComponent as ɵcu, SettingsWorkflowComponent as ɵcv, SettingsWorkflowNo1Component as ɵcw, SimpleWorkflowFormComponent as ɵcx, ProcessWorkflowTargetComponent as ɵcy, DmChucVuService as ɵcz, ListBase as ɵd, ChoYKienFormComponent as ɵda, SplashComponentV1Component as ɵdb, SplashComponentV2Component as ɵdc, StateMachinesConnectionReceiverComponent as ɵdd, StateMachinesConnectionReceiverConditionComponent as ɵde, StateMachinesConnectionReceiverDepartmentComponent as ɵdf, StateMachinesConnectionReceiverGroupComponent as ɵdg, StateMachinesConnectionReceiverUserComponent as ɵdh, StateMachinesConnectionReceiverRoleComponent as ɵdi, StateMachinesConnectionSenderComponent as ɵdj, StartWorkflowComponent as ɵdk, ShareLinkByPermissionComponent as ɵdl, WorkflowSettingNewComponent as ɵdm, PermissionSharingComponent as ɵdn, WorkflowPermissionService as ɵdo, TnCheckboxComponent as ɵdp, TnDialogComponent as ɵdq, TnColorPickerComponent as ɵdr, TnTinymceComponent as ɵds, TnTabViewComponent as ɵdt, TableDetailFormComponent as ɵdu, FileIconPipe as ɵdv, FileSizePipe as ɵdw, QuickAddFormComponent as ɵdx, PreventShiftTabDirective as ɵdy, TnTemplateDirective as ɵdz, TreeTableComponent as ɵe, UserPickerComponent as ɵea, UserPickerBoxComponent as ɵeb, TnAppHelpComponent as ɵec, PathNameService as ɵed, HelperCurrentPageComponent as ɵee, TnAppNotificationListComponent as ɵef, TnAppNotificationComponent as ɵeg, FolderFormComponent as ɵeh, FileFormComponent as ɵei, FileViewerComponent as ɵej, FileVersionListComponent as ɵek, WorkflowHistoryComponent as ɵel, WorkflowHistoryDialogComponent as ɵem, WorkflowHistoryNewComponent as ɵen, WorkflowSettingComponent as ɵeo, WorkflowSettingDialogComponent as ɵep, WorkflowPermissionComponent as ɵeq, WorkflowPermissionFormComponent as ɵer, QrCodeGeneratorComponent as ɵes, AccessDeniedV1Component as ɵet, AddNewsComponent as ɵeu, ArticleService as ɵev, NewsCategoryService as ɵew, SignatureDetailComponent as ɵex, KySoSimDanhSachChuKyComponent as ɵey, KySoSimChuKyUserService as ɵez, UniversalLinkProcessorComponent as ɵf, FileKySoSimComponent as ɵfa, KySoSimSignPDFService as ɵfb, TaiLieuCuaToiComponent as ɵfc, KhaiThacTaiLieuDungChungComponent as ɵfd, DanhMucDungChungService as ɵfe, TnTemplateComponent as ɵff, CheckReadyComponent as ɵfg, NotFoundComponent as ɵg, SendAccessTokenInterceptor as ɵh, LogInterceptor as ɵi, PermissionUtilsInterceptor as ɵj, TraceInterceptor as ɵk, EntityWorkflowSettingService as ɵl, EntityWorkflowHistoryService as ɵm, EntityPermissionService as ɵn, ChatService as ɵo, MyDriveService as ɵp, ContentsService as ɵq, StatusExtendsService as ɵr, MessageBoardService as ɵs, FileExplorerNewService as ɵt, ReportQueueComponent as ɵu, FileVersionService as ɵv, FileManagerService as ɵw, DM_ChucVuService as ɵx, RoleService as ɵy, ProcessWorkflowFormComponent as ɵz };
51292
+ export { AccessDeniedComponent, Action, ActionChoYKienBase, ActionThuHoiBase, ActionUpdateModel, AddressControlSchema, AddressService, AdvanceSearchData, AdvanceSearchSetting, AppComponentBase, AppListService, ApplicationContextService, ApprovalPipe, ArrayPair, AtLeastOneRowTableValidator, AuthenService, AuthorizeDirective, AutoCompleteControlSchema, AutoCompletePickerControlSchema, AutocompleteDatasourceComponent, AvatarUploaderComponent, BaseCauHinhWorkflowComponent, BaseCongViecComponent, BaseCongViecFormComponent, BaseDmLinhVucCongViecComponent, BaseDmLoaiCongViecComponent, BaseDmPriorityComponent, BaseMenuService, BaseModule, BaseService, BooleanFormatPipe, ButtonControlSchema, ButtonPermission, ButtonPermissions, ButtonTextActionCongViec, CONFIG_CALENDAR_VIETNAMESE, CalculationEngineService, CanBoHoSoService, CauHinhWorkflowService, CellExcel, ChatBoxComponent, ChatSendMessageBoxComponent, CheckBoxListControlSchema, CheckControlVisibleService, CheckDuplicateFieldsValidator, CheckDuplicateValidator, CheckboxControlSchema, CoCauToChucControlSchema, CoCauToChucPickerComponent, CoCauToChucPickerControlSchema, CoCauToChucService, ColorBlack, ColorControlSchema, ColorPickerControlSchema, ColorWhite, Column, ColumnSchemaBase, ColumnSetting, ColumnSettingDetail, ComCtxConstants, CommandType, CommonAppComponentComponent, CommonDashboardComponent, CommonErrorCode, CommonService, CompareValidator, ComponentBase, ComponentConstants, ComponentContextService, ConditionalBuilderService, CongViecLienQuanService, CongViecNextFirstStepComponent, CongViecPickerControlSchema, CongViecService, ContainerSchema, ControlTreeNode, ControlType, ConvertMoneyToWordPipe, CrudBase, CrudFormComponent, CrudFormCustomFunction, CrudFormData, CrudFormSetting, CrudListComponent, CrudListConfig, CrudListCustomFunction, CrudListData, CrudListHelper, CrudListSetting, CrudService, CustomControlSchema, CustomRouterService, CustomizeUiModel, CustomizeUiService, DanhmucApiService, DataExcel, DataFormBase, DataListBase, DataSourceControlSchema, DataSourcePermissionBase, DataSourceStateType, DataSourceTargetType, DataSourceUserRule, DataSourceUserSender, DataSourceWorkflowCheckboxOption, DataSourceWorkflowCoreStatus, DataType, DateCompareValidator, DateTimeControlSchema, DateTimeRangeControlSchema, Deadline, DeadlineType, DhvinhGuardService, DialogModel, DmLinhVucCongViecService, DmLoaiCongViecService, DmPriorityService, DomService, DownloadLinkService, DropdownComponent, DropdownControlSchema, DropdownOptions, DummyWorkflowCode, DynamicComponentService, ENUM_DON_VI_HANH_CHINH, EXPLORER_TYPES, EXPORT_VERSION_V4, EXPORT_VERSION_V5, EditFileCommand, EditorControlSchema, EformService, EmailValidator, EntityMedataDataSetting, EntityMetadataService, EntityPickerColumn, EntityPickerControlSchema, EntityWorkflowType, EnumActionType, EnumControlPickerType, EnumFileLayout, EnumGetRefType, EnumLoaiDanhSachCongViec, EnumLoaiVanBanBase, EnumPermissionType, EnumProcessWorkflowType, EnumStateByMenuCongViec, EnumStateType, EnumTargetType, EnumTypeSplash, EnumUserRule, EnumWFNhomTrangThai, EnumWorkflowCheckboxOption, EnumWorkflowCoreCodeSettingKey, EnumWorkflowHistoryStatus, EnvironmentService, ErrorType, EventData, ExactOneValueInTableValidator, ExportAllMode, ExportItem, ExportItemType, ExportItemsMode, ExportManyModel, ExportManyResultModel, ExportModel, ExportService, ExportWithoutTemplateModel, Extension, FILE_TYPES, FieldDefineHasTask, FieldDefineIsTaskFormControl, FieldDefineIsWorkflowControl, FieldWorkflowCodeInCrudForm, FileDataService, FileExplorerService, FileManagerComponent, FileManagerControlSchema, FileManagerMode, FileManagerSetting, FileObjectService, FilePickerDialogComponent, FileUploadComponent, FileUploadControlSchema, FileUploadMode, FileUploadSetting, FileV4Service, Filter, FolderService, FormControlBase, FormControlBaseWithService, FormSchemaBase, FormSchemaBaseWithService, FormState, Gender, GenerateLinkDownloadDTO, GenericGuardService, GetRefDataSchema, GlobalService, GmailCorrector, GridInfo, GuardService, GuardSvService, HeightType, HighPerformanceService, HighlightPipe, HtmlFormatPipe, HttpOptions, ImageService, Include, JsPlumbOption, KeyFieldGetRefType, KeyFilterStateByMenuCongViec, KeyFlashShow, KeyValueComponent, KeyValueControlSchema, LabelSchema, LabelWFNhomTrangThai, LabelWorkflowCoreStatus, LengthValidator, ListHelperService, LoaiPhieuDeXuat, LocalCacheService, LowerCorrector, MA_THONG_BAO_PHAN_HE, MaActionBatDauQuyTrinh, ManagerType, MaskControlSchema, MasterDataItem, MasterDataPipe, MasterDataService, MenuService, MethodResult, ModelKySoDonVi, ModelSchema, MultiTranslateHttpLoader, MultipleReferenceDataFormatPipe, NodeService, NotificationObjectType, NotificationService, NotifierService, NotifierType, NumberCompareValidator, NumberOnlyValidator, NumberRangeControlSchema, Operator, OrganizationFormatPipe, OrganizationNameFormatPipe, OrganizationPickerControlSchema, OrganizationService, OrganizationsFormatPipe, PageInfo, PageSetting, Pair, Pattern, PercentControlSchema, PermissionBase, PermissionConstant, PermissionService, PermissionStorage, PermissionTypes, PermissionUtilsComponent, PersonalSetting, PhoneNumberValidator, PhoneValidator, PopupSize, PositionService, PrintService, PublicFunction, QueryBuilderComponent, QueryBuilderGroupComponent, QueryBuilderRuleComponent, QueryGroup, QueryRule, RELOAD_FILE_LIST, RadioButtonListControlSchema, RandomDataService, RefField, ReferenceDataFormatPipe, RegexSplitFieldByItem, RequiredFieldsValidator, RequiredValidator, RowColorOption, RowExcel, SERVICE_CODES, SHARE_COMPONENT_ID, SHARE_EVENT, SafeHtmlPipe, SafeStylePipe, SafeUrlPipe, SameValueValidator, SchemaBase, SecurePipe, ServiceFileUploadComponent, SessionTypes, SharedFolderType, SignalRService, SimpleDicItem, SimpleDictionary, Sort, SortDirs, SpanControlSchema, SplashComponentComponent, StartupBusinessComponentBase, StateComponent, StateMachineTopic, StateMachinesConnectionMetadataComponent, StateMachinesDesignerComponent, StateMachinesService, StateMetadataComponent, Status, StatusAction, StatusGroup, StatusOption, StatusOrg, StatusUser, StorageService, StorageUpdatedService, StringCompareOption, StringFormatPipe, SummaryPipe, SwitchControlSchema, TBL_DM_COSODAOTAO_CONSTS, TBL_DM_PHONGHOC_CONSTS, TBL_KTX_NGUOITHUE_HOSO, TBL_TS_PHIEUDEXUAT, TBL_TS_TAISANCODINH_CONSTS, TabViewData, TableSchema, TagSeparator, TaiLieuComponent, TemplateConstant, TemplateControlSchema, TemplateInstanceService, TemplateService, TemplateTextItem, TemplateTextMany, TemplateTextV4Service, TemplateType, TemplateV4Service, TenContainer, TextAlign, TextAreaControlSchema, TextControlSchema, TextControlSchemaWithService, TitleSchema, TnClientCommand, TnClientService, TnCustomScrollbarComponent, TnDatePipe, TnReorderableColumnDirective, TnReorderableRowDirective, TnSortIcon, TnSortableColumnDirective, TnTreeTableToggler, TnUser, TnxSharedModule, TopicReloadCongViecV5, TopicReloadCountCongViecV5, TopicReloadNotification, TrangThaiMasterData, TrangThais, TreeDataOption, TreeListBase, TrimCorrector, TrimEndCorrector, TrimStartCorrector, TypeDanhMucAPI, UniqueFieldInTableValidator, UniqueNumberService, UpperCorrector, UserFormatPipe, UserGroupRealService, UserGroupService, UserPickerControlSchema, UserPickerDialogComponent, UserService, UserV5Service, UsersFormatPipe, Validation, VanBanPickerControlSchema, VirtualBaseService, WorkflowConfigAdvance, WorkflowCoreStatusEnum, WorkflowFieldStateCode, WorkflowHistoryService, WorkflowPermissionDetailService, WorkflowPickerComponent, WorkflowSetting, WorkflowSettingNew, WorkflowSettingsService, WrapPickerControlSchema, addDay, addZero, appendDefaultFilter, clearAll, clone, cloneOld, coreDeclaration, coreModuleImport, coreProvider, createJsPlumnInstance, createOrgPickerControl, createRolePickerControl, createUserGroupPickerControl, createUserPickerControl, dataSourceIcon$1 as dataSourceIcon, dateDiff, genQueryFromFilters, getDateFromStringDateVN, getDayOfWeek, getEnvironmentByName, getEnvironmentData, getEnvironmentDataNew, getListMenuByName, getMenuData, getMonday, getStringDate, getStringDateTime, getStringDateVN, getStringDateVNLocal, getTimeSpan, isArray, isBoolean, isDate, isFunction, isLiteralObject, isNumber, isObjectOld, isRegular, isSimpleType, isString, isValidDate, isValidTime, keyUserSurveyLocal, maximumPageSize, mergeJSON, mergeJSONOld, moduleConfigFunc, multipleSort, romanize, setMetadataConnection, translateStateMachine, ɵ0$1 as ɵ0, ɵ1$1 as ɵ1, ɵ10, ɵ11, ɵ12, ɵ13, ɵ2$1 as ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7, ɵ8, ɵ9, EntityPickerService as ɵa, ExceptionHandlerService as ɵb, AddressComponent as ɵba, AfterViewCheckedComponent as ɵbb, AdvanceSearchComponent as ɵbc, AppRootMenuComponent as ɵbd, AppTopBarComponent as ɵbe, AppTopBarV1Component as ɵbf, AppTopBarV2Component as ɵbg, AppProfileComponent as ɵbh, AppSubMenuComponent as ɵbi, AppMenuComponent as ɵbj, AutoCompletePickerComponent as ɵbk, CheckBoxListComponent as ɵbl, DropdownService as ɵbm, CoCauToChucPickerListComponent as ɵbn, BaseCongViecTestComponent as ɵbo, BaseCauHinhWorkflowDetailComponent as ɵbp, BaseDmLoaiCongViecFormComponent as ɵbq, BaseDmLinhVucCongViecFormComponent as ɵbr, BaseDmPriorityFormComponent as ɵbs, BaseCongviecDinhkemComponent as ɵbt, CongviecDinhkemService as ɵbu, BaseCongviecDinhkemFormComponent as ɵbv, DatetimePickerComponent as ɵbw, DatetimePickerRangeComponent as ɵbx, DefaultDataSettingsComponent as ɵby, DynamicNodeComponent as ɵbz, CanBo_HoSoService as ɵc, EntityPickerBoxComponent as ɵca, EntityPickerDataComponent as ɵcb, EntityPickerSelectedComponent as ɵcc, EntityPickerComponent as ɵcd, EntityPickerDialogComponent as ɵce, EntityPermissionComponent as ɵcf, EquationEditorComponent as ɵcg, MaskComponent as ɵch, NumberPickerRangeComponent as ɵci, PagingNextBackOnlyComponent as ɵcj, RadioButtonListComponent as ɵck, VanBanPickerComponent as ɵcl, VanBanDenService as ɵcm, VanBanDiService as ɵcn, VanBanPickerDialogComponent as ɵco, VanbanDiPickerComponent as ɵcp, VanbanDenPickerComponent as ɵcq, CongViecPickerComponent as ɵcr, CongViecService$1 as ɵcs, TaskWorkflowHistoriesService as ɵct, SettingsComponent as ɵcu, SettingsRowComponent as ɵcv, SettingsWorkflowComponent as ɵcw, SettingsWorkflowNo1Component as ɵcx, SimpleWorkflowFormComponent as ɵcy, ProcessWorkflowTargetComponent as ɵcz, ListBase as ɵd, DmChucVuService as ɵda, ChoYKienFormComponent as ɵdb, SplashComponentV1Component as ɵdc, SplashComponentV2Component as ɵdd, StateMachinesConnectionReceiverComponent as ɵde, StateMachinesConnectionReceiverConditionComponent as ɵdf, StateMachinesConnectionReceiverDepartmentComponent as ɵdg, StateMachinesConnectionReceiverGroupComponent as ɵdh, StateMachinesConnectionReceiverUserComponent as ɵdi, StateMachinesConnectionReceiverRoleComponent as ɵdj, StateMachinesConnectionSenderComponent as ɵdk, StartWorkflowComponent as ɵdl, ShareLinkByPermissionComponent as ɵdm, WorkflowSettingNewComponent as ɵdn, PermissionSharingComponent as ɵdo, WorkflowPermissionService as ɵdp, TnCheckboxComponent as ɵdq, TnDialogComponent as ɵdr, TnColorPickerComponent as ɵds, TnTinymceComponent as ɵdt, TnTabViewComponent as ɵdu, TableDetailFormComponent as ɵdv, FileIconPipe as ɵdw, FileSizePipe as ɵdx, QuickAddFormComponent as ɵdy, PreventShiftTabDirective as ɵdz, TreeTableComponent as ɵe, TnTemplateDirective as ɵea, UserPickerComponent as ɵeb, UserPickerBoxComponent as ɵec, TnAppHelpComponent as ɵed, PathNameService as ɵee, HelperCurrentPageComponent as ɵef, TnAppNotificationListComponent as ɵeg, TnAppNotificationComponent as ɵeh, FolderFormComponent as ɵei, FileFormComponent as ɵej, FileViewerComponent as ɵek, FileVersionListComponent as ɵel, WorkflowHistoryComponent as ɵem, WorkflowHistoryDialogComponent as ɵen, WorkflowHistoryNewComponent as ɵeo, WorkflowSettingComponent as ɵep, WorkflowSettingDialogComponent as ɵeq, WorkflowPermissionComponent as ɵer, WorkflowPermissionFormComponent as ɵes, QrCodeGeneratorComponent as ɵet, AccessDeniedV1Component as ɵeu, AddNewsComponent as ɵev, ArticleService as ɵew, NewsCategoryService as ɵex, SignatureDetailComponent as ɵey, KySoSimDanhSachChuKyComponent as ɵez, UniversalLinkProcessorComponent as ɵf, KySoSimChuKyUserService as ɵfa, FileKySoSimComponent as ɵfb, KySoSimSignPDFService as ɵfc, TaiLieuCuaToiComponent as ɵfd, KhaiThacTaiLieuDungChungComponent as ɵfe, DanhMucDungChungService as ɵff, TnTemplateComponent as ɵfg, CheckReadyComponent as ɵfh, NotFoundComponent as ɵg, SendAccessTokenInterceptor as ɵh, LogInterceptor as ɵi, PermissionUtilsInterceptor as ɵj, TraceInterceptor as ɵk, EntityWorkflowSettingService as ɵl, EntityWorkflowHistoryService as ɵm, EntityPermissionService as ɵn, ChatService as ɵo, MyDriveService as ɵp, ContentsService as ɵq, StatusExtendsService as ɵr, MessageBoardService as ɵs, FileExplorerNewService as ɵt, ReportQueueComponent as ɵu, FileVersionService as ɵv, FileManagerService as ɵw, DM_ChucVuService as ɵx, RoleService as ɵy, ProcessWorkflowFormComponent as ɵz };
51013
51293
  //# sourceMappingURL=tnx-shared.js.map