tnx-shared 5.2.9 → 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 (54) hide show
  1. package/assets/gulpfile.js +10 -2
  2. package/bundles/tnx-shared.umd.js +471 -163
  3. package/bundles/tnx-shared.umd.js.map +1 -1
  4. package/bundles/tnx-shared.umd.min.js +1 -1
  5. package/bundles/tnx-shared.umd.min.js.map +1 -1
  6. package/classes/base/component-base.d.ts +3 -0
  7. package/classes/base/component-base.d.ts.map +1 -1
  8. package/classes/base/list-base.d.ts +2 -0
  9. package/classes/base/list-base.d.ts.map +1 -1
  10. package/classes/environment-schema.d.ts +13 -4
  11. package/classes/environment-schema.d.ts.map +1 -1
  12. package/classes/form-schema.d.ts +4 -0
  13. package/classes/form-schema.d.ts.map +1 -1
  14. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts +4 -2
  15. package/components/common-app-component/app-topbar-v1/app-topbar-v1.component.d.ts.map +1 -1
  16. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts +20 -0
  17. package/components/common-app-component/default-setting-form/default-data-settings.component.d.ts.map +1 -0
  18. package/components/common-app-component/default-setting-form/default-data-settings.component.ngfactory.d.ts.map +1 -0
  19. package/components/common-app-component/default-setting-form/default-data-settings.component.scss.shim.ngstyle.d.ts.map +1 -0
  20. package/components/crud/advance-search/advance-search.component.d.ts +2 -2
  21. package/components/crud/advance-search/advance-search.component.d.ts.map +1 -1
  22. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  23. package/components/datetime-picker/datetime-picker.component.d.ts.map +1 -1
  24. package/components/workflow/services/workflow-settings.service.d.ts +2 -0
  25. package/components/workflow/services/workflow-settings.service.d.ts.map +1 -1
  26. package/esm2015/app-context/application-context.service.js +2 -1
  27. package/esm2015/classes/base/component-base.js +26 -10
  28. package/esm2015/classes/base/list-base.js +31 -2
  29. package/esm2015/classes/environment-schema.js +4 -4
  30. package/esm2015/classes/form-schema.js +2 -1
  31. package/esm2015/components/common-app-component/app-root-menu/app-root-menu.component.js +2 -2
  32. package/esm2015/components/common-app-component/app-topbar-v1/app-topbar-v1.component.js +24 -18
  33. package/esm2015/components/common-app-component/default-setting-form/default-data-settings.component.js +209 -0
  34. package/esm2015/components/crud/advance-search/advance-search.component.js +24 -21
  35. package/esm2015/components/crud/crud-form/crud-form.component.js +4 -2
  36. package/esm2015/components/datetime-picker/datetime-picker.component.js +7 -4
  37. package/esm2015/components/workflow/services/workflow-settings.service.js +6 -1
  38. package/esm2015/services/environment.service.js +25 -6
  39. package/esm2015/tnx-shared.js +89 -88
  40. package/esm2015/tnx-shared.module.js +3 -1
  41. package/fesm2015/tnx-shared.js +348 -61
  42. package/fesm2015/tnx-shared.js.map +1 -1
  43. package/package.json +2 -2
  44. package/services/environment.service.d.ts +19 -4
  45. package/services/environment.service.d.ts.map +1 -1
  46. package/tnx-shared.d.ts +88 -87
  47. package/tnx-shared.d.ts.map +1 -1
  48. package/tnx-shared.metadata.json +1 -1
  49. package/tnx-shared.module.d.ts +2 -1
  50. package/tnx-shared.module.d.ts.map +1 -1
  51. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
  52. package/assets/Dockerfile.ci +0 -5
  53. package/assets/deploy.client.ci +0 -42
  54. package/assets/gulpfile.js.bak +0 -703
@@ -271,6 +271,7 @@ ComCtxConstants.NOTIFICATION = {
271
271
  NOTIFICATION_USER_CHANGE: 'NOTIFICATION_USER_CHANGE'
272
272
  };
273
273
 
274
+ // test
274
275
  class ApplicationContextService {
275
276
  constructor() {
276
277
  this.childsContext = [];
@@ -477,7 +478,7 @@ class EnvironmentService {
477
478
  getServiceEndpointByServiceInfo(serviceInfo) {
478
479
  let endpoint = '';
479
480
  if (serviceInfo.useLocal) {
480
- endpoint = serviceInfo.localHttpEndpoint;
481
+ endpoint = serviceInfo.localhttpendpoint;
481
482
  }
482
483
  else {
483
484
  const gateway = this.environment.appMetadata.gateway;
@@ -531,6 +532,12 @@ class EnvironmentService {
531
532
  }
532
533
  return endpoint;
533
534
  }
535
+ getUserSettingConfig() {
536
+ return this.environment.userSettingConfig;
537
+ }
538
+ getUsersHasPermissionResetPassword() {
539
+ return this.environment.userHasPermissionResetPassword;
540
+ }
534
541
  getHttpClientEndpoint(serviceCode) {
535
542
  return '';
536
543
  }
@@ -624,7 +631,13 @@ class EnvironmentService {
624
631
  return this.isTrue(this.environment.enablePopulateLog);
625
632
  }
626
633
  getShowDefaultSetting() {
627
- 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 : [];
628
641
  }
629
642
  getDisableNotification() {
630
643
  return this.isTrue(this.environment.disableNotification);
@@ -673,10 +686,11 @@ class EnvironmentService {
673
686
  return (_b = (_a = this.environment.defaultValue) === null || _a === void 0 ? void 0 : _a.kySoSim) === null || _b === void 0 ? void 0 : _b.tsaUrl;
674
687
  }
675
688
  getButtonPermissions() {
676
- return this.environment.buttonPermissions;
689
+ var _a;
690
+ return (_a = this.environment.buttonPermissions) !== null && _a !== void 0 ? _a : [];
677
691
  }
678
- getSettingDataDefault() {
679
- return this.environment.settingDataDefault;
692
+ getFieldsInDefaultSetting() {
693
+ return this.environment.fieldsInDefaultSetting;
680
694
  }
681
695
  getKeyPressPermissionUtils() {
682
696
  return this.environment.keyPressPermissionUtils;
@@ -711,6 +725,12 @@ class EnvironmentService {
711
725
  return null;
712
726
  return this.environment.customConfig[key];
713
727
  }
728
+ getListDonViQuanLyNganh() {
729
+ return [];
730
+ }
731
+ getListDonViQuanLyHocPhan() {
732
+ return [];
733
+ }
714
734
  }
715
735
  EnvironmentService.ɵprov = ɵɵdefineInjectable({ factory: function EnvironmentService_Factory() { return new EnvironmentService(ɵɵinject(moduleConfigFunc, 8)); }, token: EnvironmentService, providedIn: "root" });
716
736
  EnvironmentService.decorators = [
@@ -2850,9 +2870,6 @@ const clone = (obj) => {
2850
2870
  return undefined;
2851
2871
  };
2852
2872
  const mergeJSON = (target, source) => {
2853
- if (Object.keys(source).length == 0) {
2854
- return target;
2855
- }
2856
2873
  if (isArray(source)) {
2857
2874
  if (!isArray(target)) {
2858
2875
  target = [];
@@ -2870,6 +2887,9 @@ const mergeJSON = (target, source) => {
2870
2887
  target.length = i;
2871
2888
  }
2872
2889
  else if (isLiteralObject(source)) {
2890
+ if (Object.keys(source).length == 0) {
2891
+ return target;
2892
+ }
2873
2893
  if (!isLiteralObject(target))
2874
2894
  target = {};
2875
2895
  else
@@ -3338,6 +3358,7 @@ class CrudFormCustomFunction {
3338
3358
  class CrudFormSetting {
3339
3359
  constructor(init) {
3340
3360
  this.disableCaching = false;
3361
+ this.disableDefaultSettingCache = false;
3341
3362
  this.hiddenTrinhKy = true;
3342
3363
  this.schema = [];
3343
3364
  this.buildInSchema = [];
@@ -7827,8 +7848,9 @@ class ComponentBase {
7827
7848
  callBackError(res);
7828
7849
  return;
7829
7850
  }
7830
- if (message)
7851
+ if (message) {
7831
7852
  this._injector.get(NotifierService).showSuccess(message);
7853
+ }
7832
7854
  if (callBack)
7833
7855
  callBack(res);
7834
7856
  }
@@ -7960,8 +7982,9 @@ class ComponentBase {
7960
7982
  _getValueFromDatasource(itemSelected, isMultiple, funcGetLabel) {
7961
7983
  let value = null;
7962
7984
  if (isMultiple) {
7963
- if (itemSelected && itemSelected.length > 0)
7985
+ if (itemSelected && itemSelected.length > 0) {
7964
7986
  value = itemSelected.map(q => funcGetLabel(q.value)).join(', ');
7987
+ }
7965
7988
  }
7966
7989
  else {
7967
7990
  if (itemSelected) {
@@ -8025,17 +8048,20 @@ class ComponentBase {
8025
8048
  const itemSelected = yield schema._component.controlPicker._component.getDataSelectedValue(value);
8026
8049
  const tmpSchema = schema;
8027
8050
  let funcGetLabel = tmpSchema.funcGetLabel;
8028
- if (!funcGetLabel)
8051
+ if (!funcGetLabel) {
8029
8052
  funcGetLabel = item => {
8030
8053
  return item.value[tmpSchema.displayField];
8031
8054
  };
8055
+ }
8032
8056
  value = this._getValueFromDatasource(itemSelected, schema.multiple, item => item.ten);
8033
8057
  if (schema.multiple) {
8034
8058
  if (itemSelected.length > 0) {
8035
- if (schema.funcGetLabel)
8059
+ if (schema.funcGetLabel) {
8036
8060
  value = itemSelected.map(q => tmpSchema.funcGetLabel(q.value)).join(', ');
8037
- else
8061
+ }
8062
+ else {
8038
8063
  value = itemSelected.map(q => q.value[tmpSchema.displayField]).join(', ');
8064
+ }
8039
8065
  }
8040
8066
  else {
8041
8067
  value = null;
@@ -8043,10 +8069,12 @@ class ComponentBase {
8043
8069
  }
8044
8070
  else {
8045
8071
  if (itemSelected) {
8046
- if (schema.funcGetLabel)
8072
+ if (schema.funcGetLabel) {
8047
8073
  value = schema.funcGetLabel(itemSelected.value);
8048
- else
8074
+ }
8075
+ else {
8049
8076
  value = itemSelected.value[schema.displayField];
8077
+ }
8050
8078
  }
8051
8079
  }
8052
8080
  }
@@ -8054,7 +8082,7 @@ class ComponentBase {
8054
8082
  const itemSelected = yield schema._component.getDataSelectedValue(value);
8055
8083
  const tmpSchema = schema;
8056
8084
  let funcGetLabel = tmpSchema.funcGetLabel;
8057
- if (!funcGetLabel)
8085
+ if (!funcGetLabel) {
8058
8086
  funcGetLabel = item => {
8059
8087
  if (item) {
8060
8088
  return item[tmpSchema.displayField];
@@ -8063,6 +8091,7 @@ class ComponentBase {
8063
8091
  return null;
8064
8092
  }
8065
8093
  };
8094
+ }
8066
8095
  value = this._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
8067
8096
  }
8068
8097
  else if (schema instanceof CoCauToChucControlSchema) {
@@ -8079,10 +8108,11 @@ class ComponentBase {
8079
8108
  else {
8080
8109
  dataSource = tmpSchema._component.dropdown._options;
8081
8110
  itemSelected = dataSource.find(q => q.value == value);
8082
- if (itemSelected)
8111
+ if (itemSelected) {
8083
8112
  itemSelected = {
8084
8113
  value: itemSelected
8085
8114
  };
8115
+ }
8086
8116
  }
8087
8117
  value = this._getValueFromDatasource(itemSelected, schema.multiple, funcGetLabel);
8088
8118
  }
@@ -8205,6 +8235,13 @@ class ComponentBase {
8205
8235
  return '';
8206
8236
  });
8207
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
+ }
8208
8245
  }
8209
8246
  ComponentBase.decorators = [
8210
8247
  { type: Directive }
@@ -11530,8 +11567,10 @@ class CrudFormComponent extends ComponentBase {
11530
11567
  }
11531
11568
  }
11532
11569
  setDataDefault() {
11570
+ return;
11533
11571
  const stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
11534
- const getSettingDataDefault = this._environmentService.getSettingDataDefault();
11572
+ // const getSettingDataDefault = this._environmentService.getSettingDataDefault();
11573
+ const getSettingDataDefault = {};
11535
11574
  if (stringDataDefault && (this._modelData && !this._modelData.id)) {
11536
11575
  const dataCache = JSON.parse(stringDataDefault);
11537
11576
  for (const item of this.setting.schema) {
@@ -20020,6 +20059,7 @@ EntityPermissionService.ctorParameters = () => [
20020
20059
  class WorkflowSettingsService extends BaseService {
20021
20060
  constructor(http, injector, _environmentService) {
20022
20061
  super(http, injector, '');
20062
+ this.serviceCode = 'workflow';
20023
20063
  this.entityName = 'WorkflowSetting';
20024
20064
  this.serviceManagers = {};
20025
20065
  this.endPoint = _environmentService.getHttpServiceEndpointWithVersion(this.serviceCode);
@@ -20031,6 +20071,10 @@ class WorkflowSettingsService extends BaseService {
20031
20071
  getEndpointByService(service) {
20032
20072
  return service.endPoint;
20033
20073
  }
20074
+ changeEndpoint(baseService) {
20075
+ this.serviceUri = `${this.getEndpointByService(baseService)}/WorkflowSetting`;
20076
+ return this;
20077
+ }
20034
20078
  setCurrentServiceUri(tableName) {
20035
20079
  const service = this.serviceManagers[tableName];
20036
20080
  if (service == undefined) {
@@ -20194,6 +20238,7 @@ class ListBase extends ComponentBase {
20194
20238
  this.customGetData = false;
20195
20239
  this.readyToTrinhKy = false;
20196
20240
  this.plusUrl = '';
20241
+ this.defaultSettings = {};
20197
20242
  this._environmentService = this._injector.get(EnvironmentService);
20198
20243
  this._notifierService = this._injector.get(NotifierService);
20199
20244
  this._activatedRoute = this._injector.get(ActivatedRoute);
@@ -20638,7 +20683,7 @@ class ListBase extends ComponentBase {
20638
20683
  return __awaiter(this, void 0, void 0, function* () {
20639
20684
  const key = this.setting.baseService.getKeyWorkflowSetting();
20640
20685
  if (this.setting.baseService.useWorkflow) {
20641
- const dataWorkflowNew = (yield this._workflowSettingService.getDetailByFilter([
20686
+ const dataWorkflowNew = (yield this._workflowSettingService.changeEndpoint(this.setting.baseService).getDetailByFilter([
20642
20687
  this.newFilter('tableName', Operator.equal, key)
20643
20688
  ])).data;
20644
20689
  this._registerGlobalService(this._congViecServiceInBase);
@@ -20997,6 +21042,34 @@ class ListBase extends ComponentBase {
20997
21042
  this.onBeforeCancel();
20998
21043
  this.showDetailForm = false;
20999
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
+ }
21000
21073
  }
21001
21074
  ListBase.decorators = [
21002
21075
  { type: Directive }
@@ -39196,7 +39269,7 @@ class AppRootMenuComponent extends ComponentBase {
39196
39269
  AppRootMenuComponent.decorators = [
39197
39270
  { type: Component, args: [{
39198
39271
  selector: 'app-root-menu',
39199
- 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 ",
39200
39273
  providers: [ComponentContextService],
39201
39274
  styles: [""]
39202
39275
  },] }
@@ -39231,6 +39304,14 @@ class AppTopBarV1Component extends ComponentBase {
39231
39304
  this.isFirstTime = false;
39232
39305
  this.showSettings = false;
39233
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
+ });
39234
39315
  this.message = '';
39235
39316
  this.defaultAvatar = this._environmentService.getDefaultMaleAvatar();
39236
39317
  this.config.isProduction = this._environmentService.getIsProduction();
@@ -39238,7 +39319,10 @@ class AppTopBarV1Component extends ComponentBase {
39238
39319
  this.config.logo = this._environmentService.getLogo();
39239
39320
  this.config.owner = this._environmentService.getOwner();
39240
39321
  this.fileApi = this._environmentService.getHttpServiceEndpoint('file');
39241
- 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) {
39242
39326
  this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting;
39243
39327
  }
39244
39328
  else {
@@ -39247,13 +39331,13 @@ class AppTopBarV1Component extends ComponentBase {
39247
39331
  if (!this.rootContext.data.currentUser) {
39248
39332
  this.rootContext.data.currentUser = {};
39249
39333
  }
39250
- // this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT.USER_INFO_CHANGED, rs => {
39251
- // this._cd.detectChanges();
39252
- // }));
39253
39334
  this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, rs => {
39254
39335
  this.currentUser = this._userService.getCurrentUser();
39255
39336
  this.loadMenuMetadata();
39256
39337
  });
39338
+ this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, rs => {
39339
+ this.showDefaultSettingForm();
39340
+ });
39257
39341
  if (this.rootModel.allowAnonymous) {
39258
39342
  this.loadMenuMetadata();
39259
39343
  }
@@ -39340,9 +39424,6 @@ class AppTopBarV1Component extends ComponentBase {
39340
39424
  const dataCacheDefault = JSON.parse(stringDataDefault);
39341
39425
  this.formatDefaultDataSetting(dataCacheDefault);
39342
39426
  }
39343
- else {
39344
- this.defaultDataSetting = 'Thiết lập tham số mặc định';
39345
- }
39346
39427
  }
39347
39428
  ngOnDestroy() {
39348
39429
  this.allSubscriptions.forEach(element => {
@@ -39355,8 +39436,8 @@ class AppTopBarV1Component extends ComponentBase {
39355
39436
  }
39356
39437
  formatDefaultDataSetting(data) {
39357
39438
  let dataSetting = '';
39358
- const fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
39359
- const fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
39439
+ const fields = ['idHe', 'namHoc', 'idHocKy', 'idDotThi'];
39440
+ const fieldPluses = ['code', 'ten', 'ten', 'ten'];
39360
39441
  fields.forEach((field, index) => {
39361
39442
  if (!this.checkHidden(field)) {
39362
39443
  const _f = `${field}${fieldPluses[index]}`;
@@ -39368,10 +39449,10 @@ class AppTopBarV1Component extends ComponentBase {
39368
39449
  if (dataSetting.length > 0) {
39369
39450
  dataSetting = dataSetting.substring(0, dataSetting.length - 1);
39370
39451
  }
39371
- this.defaultDataSetting = dataSetting;
39452
+ this.defaultSettingModel.data.text = dataSetting;
39372
39453
  }
39373
39454
  checkHidden(field) {
39374
- return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(p => p.field == field);
39455
+ return this.appDefaultSettings.some(p => p.field == field);
39375
39456
  }
39376
39457
  getCurrentUserFullName() {
39377
39458
  return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
@@ -39507,11 +39588,8 @@ class AppTopBarV1Component extends ComponentBase {
39507
39588
  }
39508
39589
  this._authenService.logout();
39509
39590
  }
39510
- settingDefault() {
39511
- this.model.dataModelSetting = {
39512
- data: {},
39513
- showSettings: true
39514
- };
39591
+ showDefaultSettingForm() {
39592
+ this.defaultSettingModel.showEditForm = true;
39515
39593
  }
39516
39594
  onShowSettings(ev) {
39517
39595
  this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
@@ -39578,7 +39656,7 @@ class AppTopBarV1Component extends ComponentBase {
39578
39656
  AppTopBarV1Component.decorators = [
39579
39657
  { type: Component, args: [{
39580
39658
  selector: 'app-topbar-v1',
39581
- 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>",
39582
39660
  providers: [ComponentContextService],
39583
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}}"]
39584
39662
  },] }
@@ -41055,7 +41133,7 @@ class AdvanceSearchComponent extends ComponentBase {
41055
41133
  _schema.panelClass = 'dropdown-advs';
41056
41134
  }
41057
41135
  });
41058
- if (!this.setting.disableCaching) {
41136
+ if (!this.setting.disableDefaultSettingCache) {
41059
41137
  this.setDataDefault(this.setting.schema);
41060
41138
  }
41061
41139
  this.modelCrudForm.data = this.model.data;
@@ -41065,33 +41143,36 @@ class AdvanceSearchComponent extends ComponentBase {
41065
41143
  }
41066
41144
  setDataDefault(formSchema) {
41067
41145
  const dataCache = this._localCacheService.getDataDefault();
41068
- const getSettingDataDefault = this._environmentService.getSettingDataDefault();
41069
- for (const item of formSchema) {
41070
- if (item instanceof DropdownControlSchema) {
41071
- const control = item;
41072
- const key = (control.field + (control.valueField == 'id' ? '' : control.valueField));
41073
- 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];
41074
41165
  if (value) {
41075
41166
  this.model.data[control.field] = value;
41076
41167
  }
41077
- else if (getSettingDataDefault) { // lấy cấu hình field mapPing
41078
- const fieldMapGetCache = getSettingDataDefault[control.field];
41079
- if (fieldMapGetCache) {
41080
- const key = (fieldMapGetCache + (control.valueField == 'id' ? '' : control.valueField));
41081
- value = dataCache[key];
41082
- if (value) {
41083
- this.model.data[control.field] = value;
41084
- }
41085
- }
41086
- }
41087
41168
  }
41088
41169
  else {
41089
- const value = dataCache[item.field];
41170
+ const value = dataCache[control.field];
41090
41171
  if (value) {
41091
- this.model.data[item.field] = value;
41172
+ this.model.data[control.field] = value;
41092
41173
  }
41093
41174
  }
41094
- }
41175
+ });
41095
41176
  }
41096
41177
  ngAfterViewInit() {
41097
41178
  }
@@ -41618,8 +41699,9 @@ class DatetimePickerComponent {
41618
41699
  this.control.disabled = isDisabled;
41619
41700
  }
41620
41701
  getPanelClass() {
41621
- if (this.control.appendTo == 'body')
41702
+ if (this.control.appendTo == 'body') {
41622
41703
  return `${this.control.panelClass} p-fixed`;
41704
+ }
41623
41705
  return this.control.panelClass;
41624
41706
  }
41625
41707
  onFocusCalendar(evt) {
@@ -41695,10 +41777,12 @@ class DatetimePickerComponent {
41695
41777
  let mm = String(date.getMinutes());
41696
41778
  if (mm.length == 1)
41697
41779
  mm = '0' + mm;
41698
- if (!showTime)
41780
+ if (!showTime) {
41699
41781
  return `${dd}/${MM}/${yyyy}`;
41700
- else
41782
+ }
41783
+ else {
41701
41784
  return `${dd}/${MM}/${yyyy} ${hh}:${mm}`;
41785
+ }
41702
41786
  }
41703
41787
  else if (isValidTime(date)) {
41704
41788
  let hh = String(date.getHours());
@@ -50670,6 +50754,208 @@ FileSizePipe.decorators = [
50670
50754
  },] }
50671
50755
  ];
50672
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
+
50673
50959
  function coreDeclaration() {
50674
50960
  return [
50675
50961
  AddressComponent,
@@ -50706,6 +50992,7 @@ function coreDeclaration() {
50706
50992
  CongViecNextFirstStepComponent,
50707
50993
  DatetimePickerComponent,
50708
50994
  DatetimePickerRangeComponent,
50995
+ DefaultDataSettingsComponent,
50709
50996
  DynamicNodeComponent,
50710
50997
  DropdownComponent,
50711
50998
  EntityPickerBoxComponent,
@@ -51002,5 +51289,5 @@ class Pair {
51002
51289
  * Generated bundle index. Do not edit.
51003
51290
  */
51004
51291
 
51005
- 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 };
51006
51293
  //# sourceMappingURL=tnx-shared.js.map