ngx-histaff-alpha 6.3.7 → 6.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-C91FUkXL.mjs → ngx-histaff-alpha-ai-hint-for-table.component-D9X0r5wC.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-C91FUkXL.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-D9X0r5wC.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DLEZuLXO.mjs → ngx-histaff-alpha-core-form-design.component-Jzy7HTBy.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DLEZuLXO.mjs.map → ngx-histaff-alpha-core-form-design.component-Jzy7HTBy.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-F2nV8jgm.mjs → ngx-histaff-alpha-core-template-editor.component-CwYRUlbM.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-F2nV8jgm.mjs.map → ngx-histaff-alpha-core-template-editor.component-CwYRUlbM.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-yaqjJHzN.mjs → ngx-histaff-alpha-core-toast-loading.component-Byl2v6zI.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-yaqjJHzN.mjs.map → ngx-histaff-alpha-core-toast-loading.component-Byl2v6zI.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-D2txp5DP.mjs → ngx-histaff-alpha-core-workflow-consume.component-Fma_hNMb.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-D2txp5DP.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-Fma_hNMb.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-DB6XegRZ.mjs → ngx-histaff-alpha-db-settings.component-CpjFcS3r.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-DB6XegRZ.mjs.map → ngx-histaff-alpha-db-settings.component-CpjFcS3r.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DRbyCxB_.mjs → ngx-histaff-alpha-design-wrapper.component-CWPAtJdW.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DRbyCxB_.mjs.map → ngx-histaff-alpha-design-wrapper.component-CWPAtJdW.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-CdPC_FcN.mjs → ngx-histaff-alpha-design-wrapper.route-BPTxhFez.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-CdPC_FcN.mjs.map → ngx-histaff-alpha-design-wrapper.route-BPTxhFez.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BRxQHNtj.mjs → ngx-histaff-alpha-form-array-props.component-CFQHLdzG.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BRxQHNtj.mjs.map → ngx-histaff-alpha-form-array-props.component-CFQHLdzG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-O8f-QHVW.mjs → ngx-histaff-alpha-hrm-schema.component-DhcmippJ.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-O8f-QHVW.mjs.map → ngx-histaff-alpha-hrm-schema.component-DhcmippJ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-Dt0rgzHG.mjs → ngx-histaff-alpha-live-form.component-iX23HD-T.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-live-form.component-Dt0rgzHG.mjs.map → ngx-histaff-alpha-live-form.component-iX23HD-T.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-CrtUN9ex.mjs → ngx-histaff-alpha-ngx-histaff-alpha-BJ3ZVba7.mjs} +1943 -840
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-BJ3ZVba7.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DtlcUxIS.mjs → ngx-histaff-alpha-simple-chat.component-Da4H2k5o.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DtlcUxIS.mjs.map → ngx-histaff-alpha-simple-chat.component-Da4H2k5o.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BXyP9Vki.mjs → ngx-histaff-alpha-template-list.component-CVK_Ewx4.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BXyP9Vki.mjs.map → ngx-histaff-alpha-template-list.component-CVK_Ewx4.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-ySy7DIdC.mjs → ngx-histaff-alpha-tracker-studio.component-8tqyVAcU.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-ySy7DIdC.mjs.map → ngx-histaff-alpha-tracker-studio.component-8tqyVAcU.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-qxz8Ozah.mjs → ngx-histaff-alpha-wf-form-assign.component-CRs1A8j_.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-qxz8Ozah.mjs.map → ngx-histaff-alpha-wf-form-assign.component-CRs1A8j_.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DbZq1DK-.mjs → ngx-histaff-alpha-wf-global-config.component-yeFb4wxY.mjs} +19 -2
- package/fesm2022/ngx-histaff-alpha-wf-global-config.component-yeFb4wxY.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-DjFOVp06.mjs → ngx-histaff-alpha-wf-instance-status.component-Jahj4MO-.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-DjFOVp06.mjs.map → ngx-histaff-alpha-wf-instance-status.component-Jahj4MO-.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-eT3UGhUM.mjs → ngx-histaff-alpha-wf-instance-step-react.component-Bri0bRw3.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-eT3UGhUM.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-Bri0bRw3.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-com-tree/com-party.service.d.ts +3 -2
- package/lib/app/libraries/core-com-tree/core-com-tree.component.d.ts +7 -5
- package/lib/app/libraries/core-com-tree/mokeUpLinearData.d.ts +19 -0
- package/lib/app/services/app-config.service.d.ts +1 -0
- package/package.json +2 -2
- package/public-api.d.ts +3 -0
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-CrtUN9ex.mjs.map +0 -1
- package/fesm2022/ngx-histaff-alpha-wf-global-config.component-DbZq1DK-.mjs.map +0 -1
|
@@ -3881,11 +3881,12 @@ class AppInitializationService {
|
|
|
3881
3881
|
if (window.opener && window.opener.globalPopupId) {
|
|
3882
3882
|
//alert(window.opener.globalPopupId);
|
|
3883
3883
|
}
|
|
3884
|
-
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION, IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER, USE_BUILTIN_OTP, USE_CAPTCHA, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, WORKFLOW_ENABLE_DEBUG_MODE, }) => {
|
|
3884
|
+
fetch('../../assets/app.config.json').then(res => res.json()).then(({ APP_TYPE, APP_UIID, ALLOW_IN_APP_NOTIFICATION, SHOW_LOGIN_NOTIFICATION, FEDERATION_COM_PARTY_ENABLED, IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION, IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER, USE_BUILTIN_OTP, USE_CAPTCHA, BASE_URL, BASE_URL_FOR_STATISTIC, GOLIVE_URL, DEBUG_ENABLED, USE_DEMO_AVATAR, LOGO_LOGIN, LOGO_HEADER, HOME_BACKGROUND_IMAGE, FORM_CONTROL_REQUIRED_HIGHLIGHT_COLOR, OAUTH2_OIDC_ENABLED, OAUTH2_OIDC_CLIENT_ID, OAUTH2_OIDC_LOGIN_URI, OAUTH2_OIDC_REDIRECT_URI, OAUTH2_OIDC_SCOPE, OFFICE365_DEV, OFFICE365_PROD, SAML2ADFS_ENABLED, SAML2ADFS_IDP, SAML2ADFS_IDENTIFIER, SAML2ADFS_WA_SIGNIN, SAML2ADFS_WA_SIGNOUT, SAML2ADFS_WREPLY, HANGFIRE_PATH, STATIC_FOLDER, WORKFLOW_ENABLE_DEBUG_MODE, }) => {
|
|
3885
3885
|
this.appConfigService.APP_TYPE = APP_TYPE;
|
|
3886
3886
|
this.appConfigService.APP_UIID = APP_UIID;
|
|
3887
3887
|
this.appConfigService.ALLOW_IN_APP_NOTIFICATION = ALLOW_IN_APP_NOTIFICATION;
|
|
3888
3888
|
this.appConfigService.SHOW_LOGIN_NOTIFICATION = SHOW_LOGIN_NOTIFICATION;
|
|
3889
|
+
this.appConfigService.FEDERATION_COM_PARTY_ENABLED = FEDERATION_COM_PARTY_ENABLED;
|
|
3889
3890
|
this.appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION = IGNORE_PARTIAL_URL_MATCH_FOR_FUNCTION;
|
|
3890
3891
|
this.appConfigService.IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER = IGNORE_PARTIAL_URL_MATCH_FOR_PROFILE_CENTER;
|
|
3891
3892
|
this.appConfigService.USE_BUILTIN_OTP = USE_BUILTIN_OTP;
|
|
@@ -9176,7 +9177,7 @@ class SocketService {
|
|
|
9176
9177
|
.withUrl(this.appConfigService.BASE_URL + '/hubs/signal', {
|
|
9177
9178
|
accessTokenFactory: () => token,
|
|
9178
9179
|
skipNegotiation: true,
|
|
9179
|
-
transport: HttpTransportType.WebSockets
|
|
9180
|
+
transport: HttpTransportType.WebSockets || HttpTransportType.ServerSentEvents || HttpTransportType.LongPolling
|
|
9180
9181
|
})
|
|
9181
9182
|
.configureLogging(LogLevel.Information)
|
|
9182
9183
|
.build();
|
|
@@ -31585,7 +31586,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
31585
31586
|
const hrmSchemaRoutes = [
|
|
31586
31587
|
{
|
|
31587
31588
|
path: '',
|
|
31588
|
-
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-
|
|
31589
|
+
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-DhcmippJ.mjs').then(m => m.HrmSchemaComponent)
|
|
31589
31590
|
}
|
|
31590
31591
|
];
|
|
31591
31592
|
|
|
@@ -33758,7 +33759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
33758
33759
|
const simpleChatRoutes = [
|
|
33759
33760
|
{
|
|
33760
33761
|
path: '',
|
|
33761
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
33762
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-Da4H2k5o.mjs').then(m => m.SimpleChatComponent)
|
|
33762
33763
|
}
|
|
33763
33764
|
];
|
|
33764
33765
|
|
|
@@ -36197,6 +36198,1743 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36197
36198
|
], template: "<div class=\"modal-container\">\r\n <div class=\"modal-container-root\">\r\n <div class=\"edit-container\">\r\n\r\n <core-page-header [title]=\"'EDIT_ACTION_SVG_ICON'\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n <div class=\"object-property w-100 fw700 color-gray\">\r\n <div>{{ id }} <span> \u2022 </span> {{ code }} <span> \u2022 </span> {{ (code || '') | translate: lang }} </div>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"d-flex d-flex-between\">\r\n\r\n <div class=\"entry\">\r\n <div class=\"label\">Enter Svg element here:</div>\r\n <textarea class=\"form-control\" [(ngModel)]=\"svg\" [rows]=\"'10'\"\r\n [ngStyle]=\"{ height: 'unset'}\"></textarea>\r\n </div>\r\n <div class=\"preview d-flex d-flex-v d-flex-between\">\r\n <div class=\"label\">Preview:</div>\r\n <div class=\"preview-icon\" [innerHtml]=\"svg | stringHtml\">\r\n\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n <div class=\"d-flex d-flex-end\">\r\n <core-button-group-vns [showCaption]=\"true\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".edit-container{width:800px;height:400px;padding:0 15px 15px;background-color:#fff}.edit-container .entry{width:655px}.edit-container .preview{width:100px;height:100px}\n"] }]
|
|
36198
36199
|
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: ActionService }, { type: AppService }, { type: AlertService }] });
|
|
36199
36200
|
|
|
36201
|
+
const COM_MOKEUP_DATA = [
|
|
36202
|
+
{
|
|
36203
|
+
"id": 2,
|
|
36204
|
+
"name": "Hanoi Office Test",
|
|
36205
|
+
"parentId": 1,
|
|
36206
|
+
"orderNum": 99999,
|
|
36207
|
+
"protected": false,
|
|
36208
|
+
"level": null,
|
|
36209
|
+
"code": "HOT",
|
|
36210
|
+
"isActive": true
|
|
36211
|
+
},
|
|
36212
|
+
{
|
|
36213
|
+
"id": 3,
|
|
36214
|
+
"name": "Corporate Group ",
|
|
36215
|
+
"parentId": 2,
|
|
36216
|
+
"orderNum": 99999,
|
|
36217
|
+
"protected": false,
|
|
36218
|
+
"level": null,
|
|
36219
|
+
"code": "CG",
|
|
36220
|
+
"isActive": true
|
|
36221
|
+
},
|
|
36222
|
+
{
|
|
36223
|
+
"id": 4,
|
|
36224
|
+
"name": "BACKEND_ONLY.HU_ORGANIZATION.NAME.TI",
|
|
36225
|
+
"parentId": 2,
|
|
36226
|
+
"orderNum": 99999,
|
|
36227
|
+
"protected": false,
|
|
36228
|
+
"level": null,
|
|
36229
|
+
"code": "TI",
|
|
36230
|
+
"isActive": true
|
|
36231
|
+
},
|
|
36232
|
+
{
|
|
36233
|
+
"id": 5,
|
|
36234
|
+
"name": "Project and Investment",
|
|
36235
|
+
"parentId": 2,
|
|
36236
|
+
"orderNum": 99999,
|
|
36237
|
+
"protected": false,
|
|
36238
|
+
"level": null,
|
|
36239
|
+
"code": "PI",
|
|
36240
|
+
"isActive": true
|
|
36241
|
+
},
|
|
36242
|
+
{
|
|
36243
|
+
"id": 6,
|
|
36244
|
+
"name": "Treasury & Accounting Department",
|
|
36245
|
+
"parentId": 3,
|
|
36246
|
+
"orderNum": 99999,
|
|
36247
|
+
"protected": false,
|
|
36248
|
+
"level": null,
|
|
36249
|
+
"code": "TA",
|
|
36250
|
+
"isActive": true
|
|
36251
|
+
},
|
|
36252
|
+
{
|
|
36253
|
+
"id": 7,
|
|
36254
|
+
"name": "Legal &Risk Management department",
|
|
36255
|
+
"parentId": 3,
|
|
36256
|
+
"orderNum": 99999,
|
|
36257
|
+
"protected": false,
|
|
36258
|
+
"level": null,
|
|
36259
|
+
"code": "LR",
|
|
36260
|
+
"isActive": true
|
|
36261
|
+
},
|
|
36262
|
+
{
|
|
36263
|
+
"id": 8,
|
|
36264
|
+
"name": "Corporate Planning & Coordination department",
|
|
36265
|
+
"parentId": 3,
|
|
36266
|
+
"orderNum": 99999,
|
|
36267
|
+
"protected": false,
|
|
36268
|
+
"level": null,
|
|
36269
|
+
"code": "CC",
|
|
36270
|
+
"isActive": true
|
|
36271
|
+
},
|
|
36272
|
+
{
|
|
36273
|
+
"id": 9,
|
|
36274
|
+
"name": "Administration and Planning department",
|
|
36275
|
+
"parentId": 3,
|
|
36276
|
+
"orderNum": 99999,
|
|
36277
|
+
"protected": false,
|
|
36278
|
+
"level": null,
|
|
36279
|
+
"code": "Admin",
|
|
36280
|
+
"isActive": true
|
|
36281
|
+
},
|
|
36282
|
+
{
|
|
36283
|
+
"id": 10,
|
|
36284
|
+
"name": "Da Nang Office",
|
|
36285
|
+
"parentId": 3,
|
|
36286
|
+
"orderNum": 99999,
|
|
36287
|
+
"protected": false,
|
|
36288
|
+
"level": null,
|
|
36289
|
+
"code": "DN",
|
|
36290
|
+
"isActive": true
|
|
36291
|
+
},
|
|
36292
|
+
{
|
|
36293
|
+
"id": 11,
|
|
36294
|
+
"name": "Ha Noi Iron, Steel & Non-ferrous Metal department",
|
|
36295
|
+
"parentId": 4,
|
|
36296
|
+
"orderNum": 99999,
|
|
36297
|
+
"protected": false,
|
|
36298
|
+
"level": null,
|
|
36299
|
+
"code": "IS",
|
|
36300
|
+
"isActive": true
|
|
36301
|
+
},
|
|
36302
|
+
{
|
|
36303
|
+
"id": 12,
|
|
36304
|
+
"name": "Ha Noi Chemicals, Plastics and Mineral Resources department\n",
|
|
36305
|
+
"parentId": 4,
|
|
36306
|
+
"orderNum": 99999,
|
|
36307
|
+
"protected": false,
|
|
36308
|
+
"level": null,
|
|
36309
|
+
"code": "HNC",
|
|
36310
|
+
"isActive": true
|
|
36311
|
+
},
|
|
36312
|
+
{
|
|
36313
|
+
"id": 13,
|
|
36314
|
+
"name": "Mineral Resources department",
|
|
36315
|
+
"parentId": 4,
|
|
36316
|
+
"orderNum": 99999,
|
|
36317
|
+
"protected": false,
|
|
36318
|
+
"level": null,
|
|
36319
|
+
"code": "MR",
|
|
36320
|
+
"isActive": true
|
|
36321
|
+
},
|
|
36322
|
+
{
|
|
36323
|
+
"id": 14,
|
|
36324
|
+
"name": "BACKEND_ONLY.HU_ORGANIZATION.NAME.TP",
|
|
36325
|
+
"parentId": 5,
|
|
36326
|
+
"orderNum": 99999,
|
|
36327
|
+
"protected": false,
|
|
36328
|
+
"level": null,
|
|
36329
|
+
"code": "TP",
|
|
36330
|
+
"isActive": true
|
|
36331
|
+
},
|
|
36332
|
+
{
|
|
36333
|
+
"id": 15,
|
|
36334
|
+
"name": "Automotive Department Business ",
|
|
36335
|
+
"parentId": 5,
|
|
36336
|
+
"orderNum": 99999,
|
|
36337
|
+
"protected": false,
|
|
36338
|
+
"level": null,
|
|
36339
|
+
"code": "ADB",
|
|
36340
|
+
"isActive": true
|
|
36341
|
+
},
|
|
36342
|
+
{
|
|
36343
|
+
"id": 16,
|
|
36344
|
+
"name": "Environment & Infrastructure Project Business department\n",
|
|
36345
|
+
"parentId": 5,
|
|
36346
|
+
"orderNum": 99999,
|
|
36347
|
+
"protected": false,
|
|
36348
|
+
"level": null,
|
|
36349
|
+
"code": "EIPB",
|
|
36350
|
+
"isActive": true
|
|
36351
|
+
},
|
|
36352
|
+
{
|
|
36353
|
+
"id": 17,
|
|
36354
|
+
"name": "Power Infrastructure Business department",
|
|
36355
|
+
"parentId": 5,
|
|
36356
|
+
"orderNum": 99999,
|
|
36357
|
+
"protected": false,
|
|
36358
|
+
"level": null,
|
|
36359
|
+
"code": "PIB",
|
|
36360
|
+
"isActive": true
|
|
36361
|
+
},
|
|
36362
|
+
{
|
|
36363
|
+
"id": 18,
|
|
36364
|
+
"name": "General Director",
|
|
36365
|
+
"parentId": 3,
|
|
36366
|
+
"orderNum": 99999,
|
|
36367
|
+
"protected": false,
|
|
36368
|
+
"level": null,
|
|
36369
|
+
"code": "GD",
|
|
36370
|
+
"isActive": true
|
|
36371
|
+
},
|
|
36372
|
+
{
|
|
36373
|
+
"id": 30,
|
|
36374
|
+
"name": "Ho Chi Minh Office",
|
|
36375
|
+
"parentId": 1,
|
|
36376
|
+
"orderNum": 99999,
|
|
36377
|
+
"protected": false,
|
|
36378
|
+
"level": null,
|
|
36379
|
+
"code": "A",
|
|
36380
|
+
"isActive": true
|
|
36381
|
+
},
|
|
36382
|
+
{
|
|
36383
|
+
"id": 31,
|
|
36384
|
+
"name": "Corporate Group",
|
|
36385
|
+
"parentId": 30,
|
|
36386
|
+
"orderNum": 99999,
|
|
36387
|
+
"protected": false,
|
|
36388
|
+
"level": null,
|
|
36389
|
+
"code": "B",
|
|
36390
|
+
"isActive": true
|
|
36391
|
+
},
|
|
36392
|
+
{
|
|
36393
|
+
"id": 32,
|
|
36394
|
+
"name": "Metal, Chemical, Natural Resources & Living-related Business Group",
|
|
36395
|
+
"parentId": 30,
|
|
36396
|
+
"orderNum": 99999,
|
|
36397
|
+
"protected": false,
|
|
36398
|
+
"level": null,
|
|
36399
|
+
"code": "C",
|
|
36400
|
+
"isActive": true
|
|
36401
|
+
},
|
|
36402
|
+
{
|
|
36403
|
+
"id": 33,
|
|
36404
|
+
"name": "Project & Machinery Group",
|
|
36405
|
+
"parentId": 30,
|
|
36406
|
+
"orderNum": 99999,
|
|
36407
|
+
"protected": false,
|
|
36408
|
+
"level": null,
|
|
36409
|
+
"code": "D",
|
|
36410
|
+
"isActive": true
|
|
36411
|
+
},
|
|
36412
|
+
{
|
|
36413
|
+
"id": 43,
|
|
36414
|
+
"name": "Administration and Planning department ",
|
|
36415
|
+
"parentId": 31,
|
|
36416
|
+
"orderNum": 99999,
|
|
36417
|
+
"protected": false,
|
|
36418
|
+
"level": null,
|
|
36419
|
+
"code": "43",
|
|
36420
|
+
"isActive": true
|
|
36421
|
+
},
|
|
36422
|
+
{
|
|
36423
|
+
"id": 44,
|
|
36424
|
+
"name": "Treasury & Accounting Department",
|
|
36425
|
+
"parentId": 31,
|
|
36426
|
+
"orderNum": 99999,
|
|
36427
|
+
"protected": false,
|
|
36428
|
+
"level": null,
|
|
36429
|
+
"code": "E",
|
|
36430
|
+
"isActive": true
|
|
36431
|
+
},
|
|
36432
|
+
{
|
|
36433
|
+
"id": 45,
|
|
36434
|
+
"name": "Legal & Risk Management Department",
|
|
36435
|
+
"parentId": 31,
|
|
36436
|
+
"orderNum": 99999,
|
|
36437
|
+
"protected": false,
|
|
36438
|
+
"level": null,
|
|
36439
|
+
"code": "CZ",
|
|
36440
|
+
"isActive": true
|
|
36441
|
+
},
|
|
36442
|
+
{
|
|
36443
|
+
"id": 46,
|
|
36444
|
+
"name": "BACKEND_ONLY.HU_ORGANIZATION.NAME.TUBULARS PRODUCTS DEPT.",
|
|
36445
|
+
"parentId": 32,
|
|
36446
|
+
"orderNum": 99999,
|
|
36447
|
+
"protected": false,
|
|
36448
|
+
"level": null,
|
|
36449
|
+
"code": "F",
|
|
36450
|
+
"isActive": true
|
|
36451
|
+
},
|
|
36452
|
+
{
|
|
36453
|
+
"id": 47,
|
|
36454
|
+
"name": "Iron, Steel & Non-Ferrous Metal Dept",
|
|
36455
|
+
"parentId": 32,
|
|
36456
|
+
"orderNum": 99999,
|
|
36457
|
+
"protected": false,
|
|
36458
|
+
"level": null,
|
|
36459
|
+
"code": "G",
|
|
36460
|
+
"isActive": true
|
|
36461
|
+
},
|
|
36462
|
+
{
|
|
36463
|
+
"id": 48,
|
|
36464
|
+
"name": "Energy Dept.",
|
|
36465
|
+
"parentId": 32,
|
|
36466
|
+
"orderNum": 99999,
|
|
36467
|
+
"protected": false,
|
|
36468
|
+
"level": null,
|
|
36469
|
+
"code": "H",
|
|
36470
|
+
"isActive": true
|
|
36471
|
+
},
|
|
36472
|
+
{
|
|
36473
|
+
"id": 49,
|
|
36474
|
+
"name": "Chemicals and Plastics Dept",
|
|
36475
|
+
"parentId": 32,
|
|
36476
|
+
"orderNum": 99999,
|
|
36477
|
+
"protected": false,
|
|
36478
|
+
"level": null,
|
|
36479
|
+
"code": "I",
|
|
36480
|
+
"isActive": true
|
|
36481
|
+
},
|
|
36482
|
+
{
|
|
36483
|
+
"id": 50,
|
|
36484
|
+
"name": "Media, Food, Materials & Real Estate dept\n",
|
|
36485
|
+
"parentId": 32,
|
|
36486
|
+
"orderNum": 99999,
|
|
36487
|
+
"protected": false,
|
|
36488
|
+
"level": null,
|
|
36489
|
+
"code": "J",
|
|
36490
|
+
"isActive": true
|
|
36491
|
+
},
|
|
36492
|
+
{
|
|
36493
|
+
"id": 51,
|
|
36494
|
+
"name": "Transportation Project Dept",
|
|
36495
|
+
"parentId": 33,
|
|
36496
|
+
"orderNum": 99999,
|
|
36497
|
+
"protected": false,
|
|
36498
|
+
"level": null,
|
|
36499
|
+
"code": "K",
|
|
36500
|
+
"isActive": true
|
|
36501
|
+
},
|
|
36502
|
+
{
|
|
36503
|
+
"id": 52,
|
|
36504
|
+
"name": "Power Infrastructure Business Dept.",
|
|
36505
|
+
"parentId": 33,
|
|
36506
|
+
"orderNum": 99999,
|
|
36507
|
+
"protected": false,
|
|
36508
|
+
"level": null,
|
|
36509
|
+
"code": "L",
|
|
36510
|
+
"isActive": true
|
|
36511
|
+
},
|
|
36512
|
+
{
|
|
36513
|
+
"id": 2111,
|
|
36514
|
+
"name": "Corporate Planning and Coordination Department",
|
|
36515
|
+
"parentId": 31,
|
|
36516
|
+
"orderNum": 99999,
|
|
36517
|
+
"protected": false,
|
|
36518
|
+
"level": null,
|
|
36519
|
+
"code": "CPC",
|
|
36520
|
+
"isActive": true
|
|
36521
|
+
},
|
|
36522
|
+
{
|
|
36523
|
+
"id": 2131,
|
|
36524
|
+
"name": "Corporate Group test",
|
|
36525
|
+
"parentId": 3,
|
|
36526
|
+
"orderNum": 99999,
|
|
36527
|
+
"protected": false,
|
|
36528
|
+
"level": null,
|
|
36529
|
+
"code": "81",
|
|
36530
|
+
"isActive": true
|
|
36531
|
+
},
|
|
36532
|
+
{
|
|
36533
|
+
"id": 2132,
|
|
36534
|
+
"name": "phòng kiểm thử 34",
|
|
36535
|
+
"parentId": 1,
|
|
36536
|
+
"orderNum": 99999,
|
|
36537
|
+
"protected": false,
|
|
36538
|
+
"level": null,
|
|
36539
|
+
"code": "PKT34",
|
|
36540
|
+
"isActive": true
|
|
36541
|
+
},
|
|
36542
|
+
{
|
|
36543
|
+
"id": 22146,
|
|
36544
|
+
"name": "Hanoi Office",
|
|
36545
|
+
"parentId": 22145,
|
|
36546
|
+
"orderNum": 99999,
|
|
36547
|
+
"protected": false,
|
|
36548
|
+
"level": null,
|
|
36549
|
+
"code": "HNIZZ",
|
|
36550
|
+
"isActive": true
|
|
36551
|
+
},
|
|
36552
|
+
{
|
|
36553
|
+
"id": 22147,
|
|
36554
|
+
"name": "Business Development Department",
|
|
36555
|
+
"parentId": 22146,
|
|
36556
|
+
"orderNum": 99999,
|
|
36557
|
+
"protected": false,
|
|
36558
|
+
"level": null,
|
|
36559
|
+
"code": "BDD",
|
|
36560
|
+
"isActive": true
|
|
36561
|
+
},
|
|
36562
|
+
{
|
|
36563
|
+
"id": 22148,
|
|
36564
|
+
"name": "Corporate Group ",
|
|
36565
|
+
"parentId": 22146,
|
|
36566
|
+
"orderNum": 99999,
|
|
36567
|
+
"protected": false,
|
|
36568
|
+
"level": null,
|
|
36569
|
+
"code": "CU",
|
|
36570
|
+
"isActive": true
|
|
36571
|
+
},
|
|
36572
|
+
{
|
|
36573
|
+
"id": 22149,
|
|
36574
|
+
"name": "Human Resources Department",
|
|
36575
|
+
"parentId": 22148,
|
|
36576
|
+
"orderNum": 99999,
|
|
36577
|
+
"protected": false,
|
|
36578
|
+
"level": null,
|
|
36579
|
+
"code": "HRD",
|
|
36580
|
+
"isActive": true
|
|
36581
|
+
},
|
|
36582
|
+
{
|
|
36583
|
+
"id": 22150,
|
|
36584
|
+
"name": "Corporate Services Department",
|
|
36585
|
+
"parentId": 22148,
|
|
36586
|
+
"orderNum": 99999,
|
|
36587
|
+
"protected": false,
|
|
36588
|
+
"level": null,
|
|
36589
|
+
"code": "CSD",
|
|
36590
|
+
"isActive": true
|
|
36591
|
+
},
|
|
36592
|
+
{
|
|
36593
|
+
"id": 22151,
|
|
36594
|
+
"name": "Treasury & Accounting Department",
|
|
36595
|
+
"parentId": 22148,
|
|
36596
|
+
"orderNum": 99999,
|
|
36597
|
+
"protected": false,
|
|
36598
|
+
"level": null,
|
|
36599
|
+
"code": "T&AD",
|
|
36600
|
+
"isActive": true
|
|
36601
|
+
},
|
|
36602
|
+
{
|
|
36603
|
+
"id": 22152,
|
|
36604
|
+
"name": "Legal & Risk Department",
|
|
36605
|
+
"parentId": 22148,
|
|
36606
|
+
"orderNum": 99999,
|
|
36607
|
+
"protected": false,
|
|
36608
|
+
"level": null,
|
|
36609
|
+
"code": "L&RD",
|
|
36610
|
+
"isActive": true
|
|
36611
|
+
},
|
|
36612
|
+
{
|
|
36613
|
+
"id": 22153,
|
|
36614
|
+
"name": "Infrastructure, Automotive, Energy & Urban Business Group",
|
|
36615
|
+
"parentId": 22146,
|
|
36616
|
+
"orderNum": 99999,
|
|
36617
|
+
"protected": false,
|
|
36618
|
+
"level": null,
|
|
36619
|
+
"code": "IAE&UBG",
|
|
36620
|
+
"isActive": true
|
|
36621
|
+
},
|
|
36622
|
+
{
|
|
36623
|
+
"id": 22154,
|
|
36624
|
+
"name": "Automotive Business Department",
|
|
36625
|
+
"parentId": 22153,
|
|
36626
|
+
"orderNum": 99999,
|
|
36627
|
+
"protected": false,
|
|
36628
|
+
"level": null,
|
|
36629
|
+
"code": "ABD",
|
|
36630
|
+
"isActive": true
|
|
36631
|
+
},
|
|
36632
|
+
{
|
|
36633
|
+
"id": 22155,
|
|
36634
|
+
"name": "Energy Department",
|
|
36635
|
+
"parentId": 22153,
|
|
36636
|
+
"orderNum": 99999,
|
|
36637
|
+
"protected": false,
|
|
36638
|
+
"level": null,
|
|
36639
|
+
"code": "ED",
|
|
36640
|
+
"isActive": true
|
|
36641
|
+
},
|
|
36642
|
+
{
|
|
36643
|
+
"id": 22156,
|
|
36644
|
+
"name": "Energy Innovation Initiatives Department",
|
|
36645
|
+
"parentId": 22153,
|
|
36646
|
+
"orderNum": 99999,
|
|
36647
|
+
"protected": false,
|
|
36648
|
+
"level": null,
|
|
36649
|
+
"code": "EIID",
|
|
36650
|
+
"isActive": true
|
|
36651
|
+
},
|
|
36652
|
+
{
|
|
36653
|
+
"id": 22157,
|
|
36654
|
+
"name": "Power Infrastructure Business department",
|
|
36655
|
+
"parentId": 22153,
|
|
36656
|
+
"orderNum": 99999,
|
|
36657
|
+
"protected": false,
|
|
36658
|
+
"level": null,
|
|
36659
|
+
"code": "PIBD",
|
|
36660
|
+
"isActive": true
|
|
36661
|
+
},
|
|
36662
|
+
{
|
|
36663
|
+
"id": 22158,
|
|
36664
|
+
"name": "Social Infrastructure, Transportation & Urban Business Department",
|
|
36665
|
+
"parentId": 22153,
|
|
36666
|
+
"orderNum": 99999,
|
|
36667
|
+
"protected": false,
|
|
36668
|
+
"level": null,
|
|
36669
|
+
"code": "SIT&UBD",
|
|
36670
|
+
"isActive": true
|
|
36671
|
+
},
|
|
36672
|
+
{
|
|
36673
|
+
"id": 22159,
|
|
36674
|
+
"name": "Lifestyle & Chemicals Group",
|
|
36675
|
+
"parentId": 22146,
|
|
36676
|
+
"orderNum": 99999,
|
|
36677
|
+
"protected": false,
|
|
36678
|
+
"level": null,
|
|
36679
|
+
"code": "L&CG",
|
|
36680
|
+
"isActive": true
|
|
36681
|
+
},
|
|
36682
|
+
{
|
|
36683
|
+
"id": 22160,
|
|
36684
|
+
"name": "Lifestyle & Retail Business Department",
|
|
36685
|
+
"parentId": 22159,
|
|
36686
|
+
"orderNum": 99999,
|
|
36687
|
+
"protected": false,
|
|
36688
|
+
"level": null,
|
|
36689
|
+
"code": "L&RBD",
|
|
36690
|
+
"isActive": true
|
|
36691
|
+
},
|
|
36692
|
+
{
|
|
36693
|
+
"id": 22161,
|
|
36694
|
+
"name": "Chemicals & Plastics Department",
|
|
36695
|
+
"parentId": 22159,
|
|
36696
|
+
"orderNum": 99999,
|
|
36697
|
+
"protected": false,
|
|
36698
|
+
"level": null,
|
|
36699
|
+
"code": "C&PD",
|
|
36700
|
+
"isActive": true
|
|
36701
|
+
},
|
|
36702
|
+
{
|
|
36703
|
+
"id": 22162,
|
|
36704
|
+
"name": "Steel & Mineral Resources Group",
|
|
36705
|
+
"parentId": 22146,
|
|
36706
|
+
"orderNum": 99999,
|
|
36707
|
+
"protected": false,
|
|
36708
|
+
"level": null,
|
|
36709
|
+
"code": "S&MRG",
|
|
36710
|
+
"isActive": true
|
|
36711
|
+
},
|
|
36712
|
+
{
|
|
36713
|
+
"id": 22163,
|
|
36714
|
+
"name": "Hanoi Steel & Non-ferrous Department",
|
|
36715
|
+
"parentId": 22162,
|
|
36716
|
+
"orderNum": 99999,
|
|
36717
|
+
"protected": false,
|
|
36718
|
+
"level": null,
|
|
36719
|
+
"code": "HS&ND",
|
|
36720
|
+
"isActive": true
|
|
36721
|
+
},
|
|
36722
|
+
{
|
|
36723
|
+
"id": 22164,
|
|
36724
|
+
"name": "Ho Chi Minh City Office",
|
|
36725
|
+
"parentId": 22145,
|
|
36726
|
+
"orderNum": 99999,
|
|
36727
|
+
"protected": false,
|
|
36728
|
+
"level": null,
|
|
36729
|
+
"code": "HMCZZ",
|
|
36730
|
+
"isActive": true
|
|
36731
|
+
},
|
|
36732
|
+
{
|
|
36733
|
+
"id": 22165,
|
|
36734
|
+
"name": "Business Development Department",
|
|
36735
|
+
"parentId": 22164,
|
|
36736
|
+
"orderNum": 99999,
|
|
36737
|
+
"protected": false,
|
|
36738
|
+
"level": null,
|
|
36739
|
+
"code": "BD",
|
|
36740
|
+
"isActive": true
|
|
36741
|
+
},
|
|
36742
|
+
{
|
|
36743
|
+
"id": 22166,
|
|
36744
|
+
"name": "Infrastructure, Automotive, Energy & Urban Business Group",
|
|
36745
|
+
"parentId": 22164,
|
|
36746
|
+
"orderNum": 99999,
|
|
36747
|
+
"protected": false,
|
|
36748
|
+
"level": null,
|
|
36749
|
+
"code": "IAE&UB",
|
|
36750
|
+
"isActive": true
|
|
36751
|
+
},
|
|
36752
|
+
{
|
|
36753
|
+
"id": 22167,
|
|
36754
|
+
"name": "Lifestyle & Chemicals Group",
|
|
36755
|
+
"parentId": 22164,
|
|
36756
|
+
"orderNum": 99999,
|
|
36757
|
+
"protected": false,
|
|
36758
|
+
"level": null,
|
|
36759
|
+
"code": "L&C",
|
|
36760
|
+
"isActive": true
|
|
36761
|
+
},
|
|
36762
|
+
{
|
|
36763
|
+
"id": 22168,
|
|
36764
|
+
"name": "Steel & Mineral Resources Group",
|
|
36765
|
+
"parentId": 22164,
|
|
36766
|
+
"orderNum": 99999,
|
|
36767
|
+
"protected": false,
|
|
36768
|
+
"level": null,
|
|
36769
|
+
"code": "S&MR",
|
|
36770
|
+
"isActive": true
|
|
36771
|
+
},
|
|
36772
|
+
{
|
|
36773
|
+
"id": 22169,
|
|
36774
|
+
"name": "Automotive Business Department",
|
|
36775
|
+
"parentId": 22166,
|
|
36776
|
+
"orderNum": 99999,
|
|
36777
|
+
"protected": false,
|
|
36778
|
+
"level": null,
|
|
36779
|
+
"code": "AB",
|
|
36780
|
+
"isActive": true
|
|
36781
|
+
},
|
|
36782
|
+
{
|
|
36783
|
+
"id": 22170,
|
|
36784
|
+
"name": "Energy Department",
|
|
36785
|
+
"parentId": 22166,
|
|
36786
|
+
"orderNum": 99999,
|
|
36787
|
+
"protected": false,
|
|
36788
|
+
"level": null,
|
|
36789
|
+
"code": "EU",
|
|
36790
|
+
"isActive": true
|
|
36791
|
+
},
|
|
36792
|
+
{
|
|
36793
|
+
"id": 22171,
|
|
36794
|
+
"name": "Energy Innovation Initiatives Department",
|
|
36795
|
+
"parentId": 22166,
|
|
36796
|
+
"orderNum": 99999,
|
|
36797
|
+
"protected": false,
|
|
36798
|
+
"level": null,
|
|
36799
|
+
"code": "EII",
|
|
36800
|
+
"isActive": true
|
|
36801
|
+
},
|
|
36802
|
+
{
|
|
36803
|
+
"id": 22172,
|
|
36804
|
+
"name": "Social Infrastructure, Transportation & Urban Business Department",
|
|
36805
|
+
"parentId": 22166,
|
|
36806
|
+
"orderNum": 99999,
|
|
36807
|
+
"protected": false,
|
|
36808
|
+
"level": null,
|
|
36809
|
+
"code": "SIT&UB",
|
|
36810
|
+
"isActive": true
|
|
36811
|
+
},
|
|
36812
|
+
{
|
|
36813
|
+
"id": 22173,
|
|
36814
|
+
"name": "Chemicals & Plastics Department",
|
|
36815
|
+
"parentId": 22167,
|
|
36816
|
+
"orderNum": 99999,
|
|
36817
|
+
"protected": false,
|
|
36818
|
+
"level": null,
|
|
36819
|
+
"code": "C&P",
|
|
36820
|
+
"isActive": true
|
|
36821
|
+
},
|
|
36822
|
+
{
|
|
36823
|
+
"id": 22174,
|
|
36824
|
+
"name": "Digital & Food Related Department",
|
|
36825
|
+
"parentId": 22167,
|
|
36826
|
+
"orderNum": 99999,
|
|
36827
|
+
"protected": false,
|
|
36828
|
+
"level": null,
|
|
36829
|
+
"code": "D&FRD",
|
|
36830
|
+
"isActive": true
|
|
36831
|
+
},
|
|
36832
|
+
{
|
|
36833
|
+
"id": 22175,
|
|
36834
|
+
"name": "HCMC Steel & Non-ferrous",
|
|
36835
|
+
"parentId": 22168,
|
|
36836
|
+
"orderNum": 99999,
|
|
36837
|
+
"protected": false,
|
|
36838
|
+
"level": null,
|
|
36839
|
+
"code": "HS&N",
|
|
36840
|
+
"isActive": true
|
|
36841
|
+
},
|
|
36842
|
+
{
|
|
36843
|
+
"id": 22176,
|
|
36844
|
+
"name": "Tubular Products Department",
|
|
36845
|
+
"parentId": 22168,
|
|
36846
|
+
"orderNum": 99999,
|
|
36847
|
+
"protected": false,
|
|
36848
|
+
"level": null,
|
|
36849
|
+
"code": "TPD",
|
|
36850
|
+
"isActive": true
|
|
36851
|
+
},
|
|
36852
|
+
{
|
|
36853
|
+
"id": 22177,
|
|
36854
|
+
"name": "Energy Department",
|
|
36855
|
+
"parentId": 5,
|
|
36856
|
+
"orderNum": 99999,
|
|
36857
|
+
"protected": false,
|
|
36858
|
+
"level": null,
|
|
36859
|
+
"code": "EDB",
|
|
36860
|
+
"isActive": true
|
|
36861
|
+
},
|
|
36862
|
+
{
|
|
36863
|
+
"id": 22178,
|
|
36864
|
+
"name": "rtyrt",
|
|
36865
|
+
"parentId": 2134,
|
|
36866
|
+
"orderNum": 99999,
|
|
36867
|
+
"protected": false,
|
|
36868
|
+
"level": null,
|
|
36869
|
+
"code": "R",
|
|
36870
|
+
"isActive": true
|
|
36871
|
+
},
|
|
36872
|
+
{
|
|
36873
|
+
"id": 22179,
|
|
36874
|
+
"name": "vp test test",
|
|
36875
|
+
"parentId": 1,
|
|
36876
|
+
"orderNum": 99999,
|
|
36877
|
+
"protected": false,
|
|
36878
|
+
"level": null,
|
|
36879
|
+
"code": "VTT",
|
|
36880
|
+
"isActive": true
|
|
36881
|
+
},
|
|
36882
|
+
{
|
|
36883
|
+
"id": 22180,
|
|
36884
|
+
"name": "hưng yên ofice",
|
|
36885
|
+
"parentId": 22145,
|
|
36886
|
+
"orderNum": 99999,
|
|
36887
|
+
"protected": false,
|
|
36888
|
+
"level": null,
|
|
36889
|
+
"code": "HYO",
|
|
36890
|
+
"isActive": false
|
|
36891
|
+
},
|
|
36892
|
+
{
|
|
36893
|
+
"id": 22181,
|
|
36894
|
+
"name": "hy city",
|
|
36895
|
+
"parentId": 22179,
|
|
36896
|
+
"orderNum": 99999,
|
|
36897
|
+
"protected": false,
|
|
36898
|
+
"level": null,
|
|
36899
|
+
"code": "HC",
|
|
36900
|
+
"isActive": true
|
|
36901
|
+
},
|
|
36902
|
+
{
|
|
36903
|
+
"id": 22182,
|
|
36904
|
+
"name": "122",
|
|
36905
|
+
"parentId": 22147,
|
|
36906
|
+
"orderNum": 99999,
|
|
36907
|
+
"protected": false,
|
|
36908
|
+
"level": null,
|
|
36909
|
+
"code": "122",
|
|
36910
|
+
"isActive": true
|
|
36911
|
+
},
|
|
36912
|
+
{
|
|
36913
|
+
"id": 22183,
|
|
36914
|
+
"name": "247",
|
|
36915
|
+
"parentId": 22145,
|
|
36916
|
+
"orderNum": 99999,
|
|
36917
|
+
"protected": false,
|
|
36918
|
+
"level": null,
|
|
36919
|
+
"code": "247",
|
|
36920
|
+
"isActive": false
|
|
36921
|
+
},
|
|
36922
|
+
{
|
|
36923
|
+
"id": 22184,
|
|
36924
|
+
"name": "247",
|
|
36925
|
+
"parentId": 22183,
|
|
36926
|
+
"orderNum": 99999,
|
|
36927
|
+
"protected": false,
|
|
36928
|
+
"level": null,
|
|
36929
|
+
"code": "66",
|
|
36930
|
+
"isActive": false
|
|
36931
|
+
},
|
|
36932
|
+
{
|
|
36933
|
+
"id": 22185,
|
|
36934
|
+
"name": "zalo",
|
|
36935
|
+
"parentId": 22183,
|
|
36936
|
+
"orderNum": 99999,
|
|
36937
|
+
"protected": false,
|
|
36938
|
+
"level": null,
|
|
36939
|
+
"code": "Z",
|
|
36940
|
+
"isActive": false
|
|
36941
|
+
},
|
|
36942
|
+
{
|
|
36943
|
+
"id": 22186,
|
|
36944
|
+
"name": "vp testet",
|
|
36945
|
+
"parentId": 12139,
|
|
36946
|
+
"orderNum": 99999,
|
|
36947
|
+
"protected": false,
|
|
36948
|
+
"level": null,
|
|
36949
|
+
"code": "VT",
|
|
36950
|
+
"isActive": true
|
|
36951
|
+
},
|
|
36952
|
+
{
|
|
36953
|
+
"id": 22187,
|
|
36954
|
+
"name": "văn phòng Đà Nẵng",
|
|
36955
|
+
"parentId": 22164,
|
|
36956
|
+
"orderNum": 99999,
|
|
36957
|
+
"protected": false,
|
|
36958
|
+
"level": null,
|
|
36959
|
+
"code": "Đà Nẵng office",
|
|
36960
|
+
"isActive": false
|
|
36961
|
+
},
|
|
36962
|
+
{
|
|
36963
|
+
"id": 22188,
|
|
36964
|
+
"name": "VĂn Phòng miền nam",
|
|
36965
|
+
"parentId": 22145,
|
|
36966
|
+
"orderNum": 99999,
|
|
36967
|
+
"protected": false,
|
|
36968
|
+
"level": null,
|
|
36969
|
+
"code": "Miền Nam office",
|
|
36970
|
+
"isActive": false
|
|
36971
|
+
},
|
|
36972
|
+
{
|
|
36973
|
+
"id": 2134,
|
|
36974
|
+
"name": "Văn phòng Hà Nội",
|
|
36975
|
+
"parentId": 1,
|
|
36976
|
+
"orderNum": 99999,
|
|
36977
|
+
"protected": false,
|
|
36978
|
+
"level": null,
|
|
36979
|
+
"code": "VPHN",
|
|
36980
|
+
"isActive": true
|
|
36981
|
+
},
|
|
36982
|
+
{
|
|
36983
|
+
"id": 12134,
|
|
36984
|
+
"name": "Văn phòng Hà nội 2 ",
|
|
36985
|
+
"parentId": 2134,
|
|
36986
|
+
"orderNum": 99999,
|
|
36987
|
+
"protected": false,
|
|
36988
|
+
"level": null,
|
|
36989
|
+
"code": "VPHN2",
|
|
36990
|
+
"isActive": true
|
|
36991
|
+
},
|
|
36992
|
+
{
|
|
36993
|
+
"id": 12135,
|
|
36994
|
+
"name": "BACKEND_ONLY.HU_ORGANIZATION.NAME.TEST",
|
|
36995
|
+
"parentId": 1,
|
|
36996
|
+
"orderNum": 99999,
|
|
36997
|
+
"protected": false,
|
|
36998
|
+
"level": null,
|
|
36999
|
+
"code": "T",
|
|
37000
|
+
"isActive": false
|
|
37001
|
+
},
|
|
37002
|
+
{
|
|
37003
|
+
"id": 12136,
|
|
37004
|
+
"name": "Phòng Development",
|
|
37005
|
+
"parentId": 1,
|
|
37006
|
+
"orderNum": 99999,
|
|
37007
|
+
"protected": false,
|
|
37008
|
+
"level": null,
|
|
37009
|
+
"code": "PD",
|
|
37010
|
+
"isActive": false
|
|
37011
|
+
},
|
|
37012
|
+
{
|
|
37013
|
+
"id": 12137,
|
|
37014
|
+
"name": "Nhóm thực tập sinh BA",
|
|
37015
|
+
"parentId": 2132,
|
|
37016
|
+
"orderNum": 99999,
|
|
37017
|
+
"protected": false,
|
|
37018
|
+
"level": null,
|
|
37019
|
+
"code": "NTTSB",
|
|
37020
|
+
"isActive": false
|
|
37021
|
+
},
|
|
37022
|
+
{
|
|
37023
|
+
"id": 12138,
|
|
37024
|
+
"name": "Cá nhân ",
|
|
37025
|
+
"parentId": 12137,
|
|
37026
|
+
"orderNum": 99999,
|
|
37027
|
+
"protected": false,
|
|
37028
|
+
"level": null,
|
|
37029
|
+
"code": "CN",
|
|
37030
|
+
"isActive": false
|
|
37031
|
+
},
|
|
37032
|
+
{
|
|
37033
|
+
"id": 12139,
|
|
37034
|
+
"name": "Văn phòng Test",
|
|
37035
|
+
"parentId": 1,
|
|
37036
|
+
"orderNum": 99999,
|
|
37037
|
+
"protected": false,
|
|
37038
|
+
"level": null,
|
|
37039
|
+
"code": "VPT",
|
|
37040
|
+
"isActive": true
|
|
37041
|
+
},
|
|
37042
|
+
{
|
|
37043
|
+
"id": 12140,
|
|
37044
|
+
"name": "Phòng BA Test 1",
|
|
37045
|
+
"parentId": 12139,
|
|
37046
|
+
"orderNum": 99999,
|
|
37047
|
+
"protected": false,
|
|
37048
|
+
"level": null,
|
|
37049
|
+
"code": "PBT1",
|
|
37050
|
+
"isActive": false
|
|
37051
|
+
},
|
|
37052
|
+
{
|
|
37053
|
+
"id": 12141,
|
|
37054
|
+
"name": "Phòng BA Test 2",
|
|
37055
|
+
"parentId": 12139,
|
|
37056
|
+
"orderNum": 99999,
|
|
37057
|
+
"protected": false,
|
|
37058
|
+
"level": null,
|
|
37059
|
+
"code": "PBT2",
|
|
37060
|
+
"isActive": false
|
|
37061
|
+
},
|
|
37062
|
+
{
|
|
37063
|
+
"id": 12142,
|
|
37064
|
+
"name": "Phòng BA Test 3",
|
|
37065
|
+
"parentId": 12139,
|
|
37066
|
+
"orderNum": 99999,
|
|
37067
|
+
"protected": false,
|
|
37068
|
+
"level": null,
|
|
37069
|
+
"code": "PBT3",
|
|
37070
|
+
"isActive": false
|
|
37071
|
+
},
|
|
37072
|
+
{
|
|
37073
|
+
"id": 12143,
|
|
37074
|
+
"name": "BACKEND_ONLY.HU_ORGANIZATION.NAME.TEST 1",
|
|
37075
|
+
"parentId": 12139,
|
|
37076
|
+
"orderNum": 99999,
|
|
37077
|
+
"protected": false,
|
|
37078
|
+
"level": null,
|
|
37079
|
+
"code": "T1",
|
|
37080
|
+
"isActive": false
|
|
37081
|
+
},
|
|
37082
|
+
{
|
|
37083
|
+
"id": 12146,
|
|
37084
|
+
"name": "Văn phòng Test 2",
|
|
37085
|
+
"parentId": 1,
|
|
37086
|
+
"orderNum": 99999,
|
|
37087
|
+
"protected": false,
|
|
37088
|
+
"level": null,
|
|
37089
|
+
"code": "VPT2",
|
|
37090
|
+
"isActive": false
|
|
37091
|
+
},
|
|
37092
|
+
{
|
|
37093
|
+
"id": 12147,
|
|
37094
|
+
"name": "TEST KK",
|
|
37095
|
+
"parentId": 1,
|
|
37096
|
+
"orderNum": 99999,
|
|
37097
|
+
"protected": false,
|
|
37098
|
+
"level": null,
|
|
37099
|
+
"code": "TK",
|
|
37100
|
+
"isActive": false
|
|
37101
|
+
},
|
|
37102
|
+
{
|
|
37103
|
+
"id": 12149,
|
|
37104
|
+
"name": "Tester 3",
|
|
37105
|
+
"parentId": 12146,
|
|
37106
|
+
"orderNum": 99999,
|
|
37107
|
+
"protected": false,
|
|
37108
|
+
"level": null,
|
|
37109
|
+
"code": "T3",
|
|
37110
|
+
"isActive": false
|
|
37111
|
+
},
|
|
37112
|
+
{
|
|
37113
|
+
"id": 12150,
|
|
37114
|
+
"name": "Tester 4",
|
|
37115
|
+
"parentId": 12146,
|
|
37116
|
+
"orderNum": 99999,
|
|
37117
|
+
"protected": false,
|
|
37118
|
+
"level": null,
|
|
37119
|
+
"code": "T4",
|
|
37120
|
+
"isActive": false
|
|
37121
|
+
},
|
|
37122
|
+
{
|
|
37123
|
+
"id": 12151,
|
|
37124
|
+
"name": "Tester 5",
|
|
37125
|
+
"parentId": 12146,
|
|
37126
|
+
"orderNum": 99999,
|
|
37127
|
+
"protected": false,
|
|
37128
|
+
"level": null,
|
|
37129
|
+
"code": "T5",
|
|
37130
|
+
"isActive": false
|
|
37131
|
+
},
|
|
37132
|
+
{
|
|
37133
|
+
"id": 12152,
|
|
37134
|
+
"name": "vp test 1",
|
|
37135
|
+
"parentId": 1,
|
|
37136
|
+
"orderNum": 99999,
|
|
37137
|
+
"protected": false,
|
|
37138
|
+
"level": null,
|
|
37139
|
+
"code": "VT1",
|
|
37140
|
+
"isActive": false
|
|
37141
|
+
},
|
|
37142
|
+
{
|
|
37143
|
+
"id": 12155,
|
|
37144
|
+
"name": "Group A",
|
|
37145
|
+
"parentId": 12139,
|
|
37146
|
+
"orderNum": 99999,
|
|
37147
|
+
"protected": false,
|
|
37148
|
+
"level": null,
|
|
37149
|
+
"code": "GA",
|
|
37150
|
+
"isActive": false
|
|
37151
|
+
},
|
|
37152
|
+
{
|
|
37153
|
+
"id": 12156,
|
|
37154
|
+
"name": "vp thuongtest 3",
|
|
37155
|
+
"parentId": 2,
|
|
37156
|
+
"orderNum": 99999,
|
|
37157
|
+
"protected": false,
|
|
37158
|
+
"level": null,
|
|
37159
|
+
"code": "VT3",
|
|
37160
|
+
"isActive": false
|
|
37161
|
+
},
|
|
37162
|
+
{
|
|
37163
|
+
"id": 12158,
|
|
37164
|
+
"name": "vp thuongtest 2",
|
|
37165
|
+
"parentId": 1,
|
|
37166
|
+
"orderNum": 99999,
|
|
37167
|
+
"protected": false,
|
|
37168
|
+
"level": null,
|
|
37169
|
+
"code": "VT2",
|
|
37170
|
+
"isActive": false
|
|
37171
|
+
},
|
|
37172
|
+
{
|
|
37173
|
+
"id": 12159,
|
|
37174
|
+
"name": "vp thuong test 3",
|
|
37175
|
+
"parentId": 1,
|
|
37176
|
+
"orderNum": 99999,
|
|
37177
|
+
"protected": false,
|
|
37178
|
+
"level": null,
|
|
37179
|
+
"code": "VTT3",
|
|
37180
|
+
"isActive": true
|
|
37181
|
+
},
|
|
37182
|
+
{
|
|
37183
|
+
"id": 12160,
|
|
37184
|
+
"name": "Phong ban test data",
|
|
37185
|
+
"parentId": 1,
|
|
37186
|
+
"orderNum": 99999,
|
|
37187
|
+
"protected": false,
|
|
37188
|
+
"level": null,
|
|
37189
|
+
"code": "PBTD",
|
|
37190
|
+
"isActive": false
|
|
37191
|
+
},
|
|
37192
|
+
{
|
|
37193
|
+
"id": 22144,
|
|
37194
|
+
"name": "Testing K 1",
|
|
37195
|
+
"parentId": 12159,
|
|
37196
|
+
"orderNum": 99999,
|
|
37197
|
+
"protected": false,
|
|
37198
|
+
"level": null,
|
|
37199
|
+
"code": "TK1",
|
|
37200
|
+
"isActive": true
|
|
37201
|
+
},
|
|
37202
|
+
{
|
|
37203
|
+
"id": 22145,
|
|
37204
|
+
"name": "Sumitomo Corporation Vietnam LLC",
|
|
37205
|
+
"parentId": null,
|
|
37206
|
+
"orderNum": 2,
|
|
37207
|
+
"protected": false,
|
|
37208
|
+
"level": null,
|
|
37209
|
+
"code": "SCVL",
|
|
37210
|
+
"isActive": true
|
|
37211
|
+
},
|
|
37212
|
+
{
|
|
37213
|
+
"id": 2133,
|
|
37214
|
+
"name": "Phòng ba 1",
|
|
37215
|
+
"parentId": 2132,
|
|
37216
|
+
"orderNum": 2,
|
|
37217
|
+
"protected": false,
|
|
37218
|
+
"level": null,
|
|
37219
|
+
"code": "PB1",
|
|
37220
|
+
"isActive": true
|
|
37221
|
+
},
|
|
37222
|
+
{
|
|
37223
|
+
"id": 1,
|
|
37224
|
+
"name": "SCVN",
|
|
37225
|
+
"parentId": null,
|
|
37226
|
+
"orderNum": 1,
|
|
37227
|
+
"protected": false,
|
|
37228
|
+
"level": null,
|
|
37229
|
+
"code": "S",
|
|
37230
|
+
"isActive": true
|
|
37231
|
+
}
|
|
37232
|
+
];
|
|
37233
|
+
|
|
37234
|
+
class ComPartyService {
|
|
37235
|
+
constructor(recursiveService, alertService) {
|
|
37236
|
+
this.recursiveService = recursiveService;
|
|
37237
|
+
this.alertService = alertService;
|
|
37238
|
+
this.instances = [];
|
|
37239
|
+
this.loading = true;
|
|
37240
|
+
this.comTreeData$ = new BehaviorSubject([]);
|
|
37241
|
+
this.comTreeDataWithPeople$ = new BehaviorSubject([]);
|
|
37242
|
+
this.linerData$ = new BehaviorSubject([]);
|
|
37243
|
+
this.buildTreeFlag$ = new BehaviorSubject(false);
|
|
37244
|
+
this.status$ = new BehaviorSubject({
|
|
37245
|
+
selectedKey: undefined,
|
|
37246
|
+
activeKeys: [],
|
|
37247
|
+
checkedKeys: [],
|
|
37248
|
+
expandedKeys: [],
|
|
37249
|
+
checkInheritance: true
|
|
37250
|
+
});
|
|
37251
|
+
this.linerData$.subscribe(xs => {
|
|
37252
|
+
const idCountMap = new Map();
|
|
37253
|
+
xs.forEach(item => {
|
|
37254
|
+
const id = item.id;
|
|
37255
|
+
idCountMap.set(id, (idCountMap.get(id) ?? 0) + 1);
|
|
37256
|
+
});
|
|
37257
|
+
const duplicates = Array.from(idCountMap.entries())
|
|
37258
|
+
.filter(([_, count]) => count > 1)
|
|
37259
|
+
.map(([id]) => id);
|
|
37260
|
+
if (!!duplicates.length) {
|
|
37261
|
+
if (isDevMode()) {
|
|
37262
|
+
alertService.error('🔁 Duplicate IDs: ' + duplicates.reduce((a, c) => a + ";" + c, ''), alertOptions);
|
|
37263
|
+
}
|
|
37264
|
+
}
|
|
37265
|
+
});
|
|
37266
|
+
}
|
|
37267
|
+
buildComTreeData(status = {
|
|
37268
|
+
selectedKey: undefined,
|
|
37269
|
+
activeKeys: [],
|
|
37270
|
+
checkedKeys: [],
|
|
37271
|
+
expandedKeys: [],
|
|
37272
|
+
checkInheritance: true
|
|
37273
|
+
}) {
|
|
37274
|
+
this.loading = true;
|
|
37275
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linerData$.value));
|
|
37276
|
+
if (typeof Worker !== 'undefined') {
|
|
37277
|
+
// Create a new
|
|
37278
|
+
console.log("🟢🟢 Worker works");
|
|
37279
|
+
const worker = new Worker(liner_to_nested_array_script);
|
|
37280
|
+
worker.addEventListener('message', ({ data }) => {
|
|
37281
|
+
const newData = data.list;
|
|
37282
|
+
this.comTreeData$.next(newData);
|
|
37283
|
+
this.loading = false;
|
|
37284
|
+
});
|
|
37285
|
+
worker.postMessage({
|
|
37286
|
+
list: cloneCopy,
|
|
37287
|
+
keyField: 'id',
|
|
37288
|
+
titleField: 'name',
|
|
37289
|
+
parentField: 'parentId',
|
|
37290
|
+
activeField: 'active',
|
|
37291
|
+
checkedField: 'checked',
|
|
37292
|
+
expandedField: 'expand',
|
|
37293
|
+
status
|
|
37294
|
+
});
|
|
37295
|
+
}
|
|
37296
|
+
else {
|
|
37297
|
+
// Web workers are not supported in this environment.
|
|
37298
|
+
// You should add a fallback so that your program still executes correctly.
|
|
37299
|
+
this.recursiveService
|
|
37300
|
+
.linerArrayToNestedArray(cloneCopy, 'id', 'name', 'parentId', 'active', 'checked', 'expand', status)
|
|
37301
|
+
.subscribe((obj) => {
|
|
37302
|
+
const newData = obj.list;
|
|
37303
|
+
this.comTreeData$.next(newData);
|
|
37304
|
+
this.loading = false;
|
|
37305
|
+
});
|
|
37306
|
+
}
|
|
37307
|
+
}
|
|
37308
|
+
getComLinearData(userId) {
|
|
37309
|
+
return of({
|
|
37310
|
+
ok: true,
|
|
37311
|
+
status: 200,
|
|
37312
|
+
body: {
|
|
37313
|
+
statusCode: 200,
|
|
37314
|
+
innerBody: COM_MOKEUP_DATA
|
|
37315
|
+
}
|
|
37316
|
+
});
|
|
37317
|
+
}
|
|
37318
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, deps: [{ token: RecursiveService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37319
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, providedIn: 'root' }); }
|
|
37320
|
+
}
|
|
37321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, decorators: [{
|
|
37322
|
+
type: Injectable,
|
|
37323
|
+
args: [{
|
|
37324
|
+
providedIn: 'root'
|
|
37325
|
+
}]
|
|
37326
|
+
}], ctorParameters: () => [{ type: RecursiveService }, { type: AlertService }] });
|
|
37327
|
+
|
|
37328
|
+
class CoreComTreeComponent extends CoreFormControlBaseComponent {
|
|
37329
|
+
writeValue(obj) {
|
|
37330
|
+
this.value = obj;
|
|
37331
|
+
switch (this.accessorMode) {
|
|
37332
|
+
case EnumCoreOrgTreeaAccessorMode.CHECKED:
|
|
37333
|
+
if (!!obj) {
|
|
37334
|
+
const checkedKeys = [];
|
|
37335
|
+
this.checkedIds = obj; // <=== 24/10/2023
|
|
37336
|
+
obj.map(x => checkedKeys.push(x.toString()));
|
|
37337
|
+
this.loading = true;
|
|
37338
|
+
this.recursiveService.writeValueChecked(checkedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
37339
|
+
this.loading = false;
|
|
37340
|
+
if (!!this.data && !!this.data?.length)
|
|
37341
|
+
this.data[0].tree$Expanded = true;
|
|
37342
|
+
});
|
|
37343
|
+
}
|
|
37344
|
+
break;
|
|
37345
|
+
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE:
|
|
37346
|
+
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE:
|
|
37347
|
+
if (!!obj) {
|
|
37348
|
+
const activatedKeys = [];
|
|
37349
|
+
obj.map(x => activatedKeys.push(x.toString()));
|
|
37350
|
+
this.loading = true;
|
|
37351
|
+
this.recursiveService.writeValueActivated(activatedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
37352
|
+
this.loading = false;
|
|
37353
|
+
if (!!this.data && !!this.data?.length)
|
|
37354
|
+
this.data[0].tree$Expanded = true;
|
|
37355
|
+
});
|
|
37356
|
+
}
|
|
37357
|
+
break;
|
|
37358
|
+
default:
|
|
37359
|
+
break;
|
|
37360
|
+
}
|
|
37361
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
37362
|
+
}
|
|
37363
|
+
else /* EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE or EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE */ {
|
|
37364
|
+
}
|
|
37365
|
+
}
|
|
37366
|
+
setDisabledState(disabled) {
|
|
37367
|
+
this.disabled = disabled;
|
|
37368
|
+
}
|
|
37369
|
+
constructor(
|
|
37370
|
+
//public override injector: Injector,
|
|
37371
|
+
authService, recursiveService, mls, layoutService, coreOrgTreeService,
|
|
37372
|
+
// private coreOrgTreeState: CoreOrgTreeState,
|
|
37373
|
+
alertService, comPartyService) {
|
|
37374
|
+
super( /*injector*/);
|
|
37375
|
+
this.authService = authService;
|
|
37376
|
+
this.recursiveService = recursiveService;
|
|
37377
|
+
this.mls = mls;
|
|
37378
|
+
this.layoutService = layoutService;
|
|
37379
|
+
this.coreOrgTreeService = coreOrgTreeService;
|
|
37380
|
+
this.alertService = alertService;
|
|
37381
|
+
this.comPartyService = comPartyService;
|
|
37382
|
+
this.lineColor = 'transparent';
|
|
37383
|
+
this.accessorMode = EnumCoreOrgTreeaAccessorMode.CHECKED;
|
|
37384
|
+
//TO BE NEW
|
|
37385
|
+
this.searchMode = EnumCoreOrgTreeaSearchMode.REDUCE;
|
|
37386
|
+
this.excludedIds$ = new BehaviorSubject([]); // 2024-05-10: to be implemented
|
|
37387
|
+
this.stateIsolated$ = new BehaviorSubject(false);
|
|
37388
|
+
this.itemDoubleClick = new EventEmitter();
|
|
37389
|
+
this.itemClick = new EventEmitter();
|
|
37390
|
+
this.showSearch = false;
|
|
37391
|
+
this.hiddenToolClickStream$ = new BehaviorSubject('');
|
|
37392
|
+
this.value = [];
|
|
37393
|
+
this.appConfigService = inject(AppConfigService);
|
|
37394
|
+
this.activeIds = [];
|
|
37395
|
+
this.checkedIds = [];
|
|
37396
|
+
this.subscriptions = [];
|
|
37397
|
+
this.search$ = new Subject();
|
|
37398
|
+
this.searchPlaceholder = "Tìm kiếm...";
|
|
37399
|
+
this.checkInheritance = true; // default value is true
|
|
37400
|
+
this.showDissolved = false; // default value is false
|
|
37401
|
+
this.initializing = true;
|
|
37402
|
+
// this.reduced$ = this.coreOrgTreeState.coreOrgTreeReduced$;
|
|
37403
|
+
this.initializing = false;
|
|
37404
|
+
}
|
|
37405
|
+
ngOnChanges(changes) {
|
|
37406
|
+
if (changes['height']) {
|
|
37407
|
+
this.resizeHeight();
|
|
37408
|
+
}
|
|
37409
|
+
}
|
|
37410
|
+
ngOnInit() {
|
|
37411
|
+
super.register();
|
|
37412
|
+
//this.layoutService.leftbarOpen$.next(false);
|
|
37413
|
+
this.instanceNumber = new Date().getTime();
|
|
37414
|
+
const newInstance = {
|
|
37415
|
+
instanceNumber: this.instanceNumber,
|
|
37416
|
+
selectedKey$: new BehaviorSubject(undefined),
|
|
37417
|
+
activeKeys$: new BehaviorSubject([]),
|
|
37418
|
+
checkedKeys$: new BehaviorSubject([]),
|
|
37419
|
+
expandedKeys$: new BehaviorSubject([]),
|
|
37420
|
+
checkInheritance$: new BehaviorSubject(true)
|
|
37421
|
+
};
|
|
37422
|
+
this.comPartyService.instances.push(newInstance);
|
|
37423
|
+
// Check xem chiều cao height có được truyền vào hay không
|
|
37424
|
+
if (this.height === undefined) {
|
|
37425
|
+
if (isDevMode()) {
|
|
37426
|
+
//this.alertService.warn("CoreOrgTree không nhận được chiều cao (height) truyền vào từ lớp ngoài. Chiều cao mặc định sẽ được tính toán dựa vào bố cục chính.", alertOptions);
|
|
37427
|
+
}
|
|
37428
|
+
this.subscriptions.push(this.layoutService.contentContainerHeight$.subscribe(x => {
|
|
37429
|
+
// basicSpacing là paddingBottom của lớp content-container
|
|
37430
|
+
this.height = x - this.layoutService.corePageHeaderHeight - this.layoutService.basicSpacing;
|
|
37431
|
+
}));
|
|
37432
|
+
}
|
|
37433
|
+
this.subscriptions.push(this.comPartyService.linerData$.subscribe((x) => this.linearComArray = x));
|
|
37434
|
+
this.subscriptions.push(this.comPartyService.buildTreeFlag$.pipe(skip(1)).subscribe(_ => {
|
|
37435
|
+
this.buildComTreeData();
|
|
37436
|
+
}));
|
|
37437
|
+
this.subscriptions.push(this.stateIsolated$.subscribe(x => {
|
|
37438
|
+
if (x) {
|
|
37439
|
+
if (!!this.statusSubscription) {
|
|
37440
|
+
this.statusSubscription.unsubscribe();
|
|
37441
|
+
}
|
|
37442
|
+
}
|
|
37443
|
+
else {
|
|
37444
|
+
if (!this.statusSubscription) {
|
|
37445
|
+
this.statusSubscription = this.comPartyService.status$.subscribe((x) => {
|
|
37446
|
+
console.log("this.organizationService.status$ changes", x);
|
|
37447
|
+
const newActiveIds = [];
|
|
37448
|
+
x.activeKeys.map((k) => {
|
|
37449
|
+
newActiveIds.push(Number(k));
|
|
37450
|
+
});
|
|
37451
|
+
this.activeIds = newActiveIds;
|
|
37452
|
+
if (this.accessorMode !== EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
37453
|
+
this.value = this.activeIds;
|
|
37454
|
+
this.onChange(this.activeIds);
|
|
37455
|
+
}
|
|
37456
|
+
this.selectedKey = x.selectedKey;
|
|
37457
|
+
});
|
|
37458
|
+
}
|
|
37459
|
+
}
|
|
37460
|
+
}));
|
|
37461
|
+
this.subscriptions.push(this.coreOrgTreeService.showSearch$.subscribe(x => this.showSearch = x));
|
|
37462
|
+
this.subscriptions.push(this.hiddenToolClickStream$.pipe(buffer(this.hiddenToolClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
37463
|
+
.subscribe(_ => {
|
|
37464
|
+
this.coreOrgTreeService.showSearch$.next(!this.coreOrgTreeService.showSearch$.value);
|
|
37465
|
+
}));
|
|
37466
|
+
this.subscriptions.push(this.search$
|
|
37467
|
+
.pipe(filter((x) => x !== null), debounceTime(500), distinctUntilChanged(), switchMap((text) => {
|
|
37468
|
+
console.log('switchMap works');
|
|
37469
|
+
this.loading = true;
|
|
37470
|
+
// AUG 2024 NEW : MUST BE TESTED
|
|
37471
|
+
if (this.searchMode === EnumCoreOrgTreeaSearchMode.HIGHLIGHT) {
|
|
37472
|
+
return this.recursiveService.findItem(text, this.data);
|
|
37473
|
+
}
|
|
37474
|
+
else {
|
|
37475
|
+
return of(this.recursiveService.reducingFilter(this.scrollContainer, text));
|
|
37476
|
+
}
|
|
37477
|
+
}))
|
|
37478
|
+
.subscribe((x) => {
|
|
37479
|
+
this.loading = false;
|
|
37480
|
+
// if (this.searchMode === EnumCoreOrgTreeaSearchMode.REDUCE) {
|
|
37481
|
+
// this.dataFiltered = x as IOrgTreeItem[];
|
|
37482
|
+
// }
|
|
37483
|
+
}));
|
|
37484
|
+
this.subscriptions.push(this.comPartyService.status$
|
|
37485
|
+
.pipe(filter((value) => !!!this.initializing && !!value))
|
|
37486
|
+
.subscribe((x) => {
|
|
37487
|
+
if (!!localStorage) {
|
|
37488
|
+
localStorage.setItem('coreOrgTreeStatus', JSON.stringify(x));
|
|
37489
|
+
}
|
|
37490
|
+
}));
|
|
37491
|
+
this.subscriptions.push(this.mls.lang$.subscribe((x) => (this.lang = x)));
|
|
37492
|
+
}
|
|
37493
|
+
buildComTree(comLinerData) {
|
|
37494
|
+
if (!this.appConfigService.FEDERATION_COM_PARTY_ENABLED)
|
|
37495
|
+
return;
|
|
37496
|
+
this.comPartyService.linerData$.next(comLinerData);
|
|
37497
|
+
const cloneCopy = JSON.parse(JSON.stringify(comLinerData));
|
|
37498
|
+
console.group("comLinerData...", comLinerData);
|
|
37499
|
+
if (!!comLinerData) {
|
|
37500
|
+
if (typeof Worker !== 'undefined') {
|
|
37501
|
+
console.log('🟢 Worker works');
|
|
37502
|
+
// Create a new
|
|
37503
|
+
const worker = new Worker(liner_to_nested_array_script);
|
|
37504
|
+
worker.addEventListener("message", ({ data }) => {
|
|
37505
|
+
console.log("ComTreeData calculation finished!", new Date().getTime());
|
|
37506
|
+
this.comPartyService.loading = false;
|
|
37507
|
+
this.comPartyService.comTreeData$.next(data.list);
|
|
37508
|
+
this.comPartyService.linerData$.next(data.rawList);
|
|
37509
|
+
});
|
|
37510
|
+
console.log("ComTreeData is being calculated by Worker...");
|
|
37511
|
+
console.log("this.comPartyService.status$.value", this.comPartyService.status$.value);
|
|
37512
|
+
worker.postMessage({
|
|
37513
|
+
list: cloneCopy,
|
|
37514
|
+
keyField: 'id',
|
|
37515
|
+
titleField: 'name',
|
|
37516
|
+
parentField: 'parentId',
|
|
37517
|
+
activeField: 'active',
|
|
37518
|
+
checkedField: 'checked',
|
|
37519
|
+
expandedField: 'expanded',
|
|
37520
|
+
status: this.comPartyService.status$.value, // <=== this had been already retrieved on app-initialization
|
|
37521
|
+
orderBy: 'orderNum'
|
|
37522
|
+
});
|
|
37523
|
+
}
|
|
37524
|
+
else {
|
|
37525
|
+
// Web workers are not supported in this environment.
|
|
37526
|
+
// You should add a fallback so that your program still executes correctly.
|
|
37527
|
+
console.log("this.comPartyService.status$.value", this.comPartyService.status$.value);
|
|
37528
|
+
this.subscriptions.push(this.recursiveService.linerArrayToNestedArray(cloneCopy, 'id', 'name', 'parentId', 'active', 'checked', 'expand', this.comPartyService.status$.value // <=== this had been already retrieved on app-initialization
|
|
37529
|
+
)
|
|
37530
|
+
.subscribe(data => {
|
|
37531
|
+
console.log("data", data);
|
|
37532
|
+
this.comPartyService.comTreeData$.next(data.list);
|
|
37533
|
+
this.comPartyService.linerData$.next(data.rawList);
|
|
37534
|
+
}));
|
|
37535
|
+
}
|
|
37536
|
+
}
|
|
37537
|
+
}
|
|
37538
|
+
resizeHeight() {
|
|
37539
|
+
// height is not given and the tree resize as standard
|
|
37540
|
+
if (!!!this.height) {
|
|
37541
|
+
const sizeHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37542
|
+
.getPropertyValue('--size-header-height')
|
|
37543
|
+
.replace('px', ''));
|
|
37544
|
+
const sizeCorePageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37545
|
+
.getPropertyValue('--size-core-page-header-height')
|
|
37546
|
+
.replace('px', ''));
|
|
37547
|
+
const containerHeight = window.innerHeight - sizeHeaderHeight - sizeCorePageHeaderHeight;
|
|
37548
|
+
const pageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37549
|
+
.getPropertyValue('--size-core-page-header-height')
|
|
37550
|
+
.replace('px', ''));
|
|
37551
|
+
const paginationHeight = Number(getComputedStyle(document.documentElement)
|
|
37552
|
+
.getPropertyValue('--size-core-pagination-height')
|
|
37553
|
+
.replace('px', ''));
|
|
37554
|
+
const sizeMarginCorePaginationFull = Number(getComputedStyle(document.documentElement)
|
|
37555
|
+
.getPropertyValue('--size-margin-core-pagination')
|
|
37556
|
+
.replace('px', ''));
|
|
37557
|
+
const height = containerHeight - pageHeaderHeight - paginationHeight + sizeMarginCorePaginationFull;
|
|
37558
|
+
console.log(height);
|
|
37559
|
+
this.container?.nativeElement.style.setProperty('--height', height + 'px');
|
|
37560
|
+
}
|
|
37561
|
+
else {
|
|
37562
|
+
this.container?.nativeElement.style.setProperty('--height', this.height + 'px');
|
|
37563
|
+
}
|
|
37564
|
+
}
|
|
37565
|
+
ngAfterViewInit() {
|
|
37566
|
+
setTimeout(() => {
|
|
37567
|
+
if (!!this.authService.data$.value?.id && (!this.comPartyService.linerData$?.value || (!!this.comPartyService.linerData$?.value && !this.comPartyService.linerData$?.value.length))) {
|
|
37568
|
+
this.comPartyService.getComLinearData(this.authService.data$.value.id).pipe(tap$1(_ => this.loading = true), finalize$1(() => this.loading = false)).subscribe(x => {
|
|
37569
|
+
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
37570
|
+
this.comPartyService.linerData$.next(x.body.innerBody.map(i => ({
|
|
37571
|
+
...i,
|
|
37572
|
+
active: i.isActive
|
|
37573
|
+
})));
|
|
37574
|
+
this.comPartyService.buildTreeFlag$.next(!this.comPartyService.buildTreeFlag$.value);
|
|
37575
|
+
}
|
|
37576
|
+
});
|
|
37577
|
+
}
|
|
37578
|
+
this.subscriptions.push(this.comPartyService.comTreeData$.subscribe((x) => {
|
|
37579
|
+
this.data = x;
|
|
37580
|
+
//this.dataFiltered = JSON.parse(JSON.stringify(x));
|
|
37581
|
+
console.log("new Data coming", this.data, new Date().getTime());
|
|
37582
|
+
if (!!this.data) {
|
|
37583
|
+
if (!!this.data.length)
|
|
37584
|
+
this.data[0].tree$Expanded = true;
|
|
37585
|
+
}
|
|
37586
|
+
}));
|
|
37587
|
+
this.subscriptions.push(this.coreOrgTreeService.arrowFontSize$.subscribe(x => {
|
|
37588
|
+
this.container?.nativeElement.style.setProperty('--arrow-font-size', x + 'px');
|
|
37589
|
+
}));
|
|
37590
|
+
this.subscriptions.push(this.coreOrgTreeService.titleWrapperMaxWidth$.pipe(filter(x => !!x)).subscribe(x => {
|
|
37591
|
+
this.container?.nativeElement.style.setProperty('--title-wrapper-max-width', x + 'px');
|
|
37592
|
+
}));
|
|
37593
|
+
this.subscriptions.push(this.comPartyService.status$.subscribe(x => {
|
|
37594
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE && !!x.activeKeys) {
|
|
37595
|
+
this.onChange(x.activeKeys.map(i => Number(i)));
|
|
37596
|
+
}
|
|
37597
|
+
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE) {
|
|
37598
|
+
// tạm thời bỏ qua
|
|
37599
|
+
}
|
|
37600
|
+
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED && !!x.checkedKeys) {
|
|
37601
|
+
this.onChange(x.checkedKeys.map(i => Number(i)));
|
|
37602
|
+
}
|
|
37603
|
+
}));
|
|
37604
|
+
});
|
|
37605
|
+
}
|
|
37606
|
+
// onItemClickLocal(e: IComTreeItem): void {
|
|
37607
|
+
// this.linnerOrgArray.map((x) => (x.active = false));
|
|
37608
|
+
// setTimeout(() => this.buildTreeData());
|
|
37609
|
+
// }
|
|
37610
|
+
onToggleItem(e) {
|
|
37611
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linearComArray));
|
|
37612
|
+
const filter = cloneCopy.filter((x) => x.id === e.id);
|
|
37613
|
+
if (filter.length === 1) {
|
|
37614
|
+
filter[0].expand = !!!e.expand;
|
|
37615
|
+
}
|
|
37616
|
+
this.linearComArray = cloneCopy;
|
|
37617
|
+
setTimeout(() => this.buildComTreeData());
|
|
37618
|
+
}
|
|
37619
|
+
// buildTreeData(): void {
|
|
37620
|
+
// this.loading = true;
|
|
37621
|
+
// const cloneCopy = JSON.parse(JSON.stringify(this.linnerOrgArray));
|
|
37622
|
+
// if (typeof Worker !== 'undefined') {
|
|
37623
|
+
// // Create a new
|
|
37624
|
+
// console.log("🟢🟢 Worker works");
|
|
37625
|
+
// this.worker = new Worker(liner_to_nested_array_script);
|
|
37626
|
+
// this.worker.addEventListener('message', ({ data }) => {
|
|
37627
|
+
// this.data = data.list;
|
|
37628
|
+
// //this.dataFiltered = JSON.parse(JSON.stringify(data.list));
|
|
37629
|
+
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
37630
|
+
// this.loading = false;
|
|
37631
|
+
// });
|
|
37632
|
+
// this.worker.postMessage({
|
|
37633
|
+
// list: cloneCopy,
|
|
37634
|
+
// keyField: 'id',
|
|
37635
|
+
// titleField: 'name',
|
|
37636
|
+
// parentField: 'parentId',
|
|
37637
|
+
// activeField: 'active',
|
|
37638
|
+
// //inheritantActiveField: 'inheritantActive',
|
|
37639
|
+
// checkedField: 'checked',
|
|
37640
|
+
// expandedField: 'expand',
|
|
37641
|
+
// });
|
|
37642
|
+
// } else {
|
|
37643
|
+
// // Web workers are not supported in this environment.
|
|
37644
|
+
// // You should add a fallback so that your program still executes correctly.
|
|
37645
|
+
// const status = this.organizationService.status$.value;
|
|
37646
|
+
// this.subscriptions.push(
|
|
37647
|
+
// this.recursiveService
|
|
37648
|
+
// .linerArrayToNestedArray(
|
|
37649
|
+
// cloneCopy,
|
|
37650
|
+
// 'id',
|
|
37651
|
+
// 'name',
|
|
37652
|
+
// 'parentId',
|
|
37653
|
+
// 'active',
|
|
37654
|
+
// 'checked',
|
|
37655
|
+
// 'expand',
|
|
37656
|
+
// //status
|
|
37657
|
+
// )
|
|
37658
|
+
// .subscribe((obj) => {
|
|
37659
|
+
// this.data = obj.list;
|
|
37660
|
+
// //this.dataFiltered = JSON.parse(JSON.stringify(obj.list));
|
|
37661
|
+
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
37662
|
+
// this.loading = false;
|
|
37663
|
+
// })
|
|
37664
|
+
// );
|
|
37665
|
+
// }
|
|
37666
|
+
// }
|
|
37667
|
+
buildComTreeData() {
|
|
37668
|
+
this.loading = true;
|
|
37669
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linearComArray));
|
|
37670
|
+
// ✅ ADD THIS FILTER
|
|
37671
|
+
const filteredList = !this.showDissolved
|
|
37672
|
+
? cloneCopy.filter(x => x.active === true)
|
|
37673
|
+
: cloneCopy;
|
|
37674
|
+
if (typeof Worker !== 'undefined') {
|
|
37675
|
+
this.worker = new Worker(liner_to_nested_array_script);
|
|
37676
|
+
this.worker.addEventListener('message', ({ data }) => {
|
|
37677
|
+
this.data = data.list;
|
|
37678
|
+
if (!!this.data?.length)
|
|
37679
|
+
this.data[0].tree$Expanded = true;
|
|
37680
|
+
this.loading = false;
|
|
37681
|
+
});
|
|
37682
|
+
// ✅ USE filteredList INSTEAD OF cloneCopy
|
|
37683
|
+
this.worker.postMessage({
|
|
37684
|
+
list: filteredList,
|
|
37685
|
+
keyField: 'id',
|
|
37686
|
+
titleField: 'name',
|
|
37687
|
+
parentField: 'parentId',
|
|
37688
|
+
activeField: 'active',
|
|
37689
|
+
checkedField: 'checked',
|
|
37690
|
+
expandedField: 'expand',
|
|
37691
|
+
});
|
|
37692
|
+
}
|
|
37693
|
+
else {
|
|
37694
|
+
this.subscriptions.push(this.recursiveService
|
|
37695
|
+
.linerArrayToNestedArray(filteredList, // ✅ use filteredList
|
|
37696
|
+
'id', 'name', 'parentId', 'active', 'checked', 'expand')
|
|
37697
|
+
.subscribe((obj) => {
|
|
37698
|
+
this.data = obj.list;
|
|
37699
|
+
if (!!this.data?.length)
|
|
37700
|
+
this.data[0].tree$Expanded = true;
|
|
37701
|
+
this.loading = false;
|
|
37702
|
+
}));
|
|
37703
|
+
}
|
|
37704
|
+
}
|
|
37705
|
+
onExpandTogglerClick(e, event) {
|
|
37706
|
+
event.stopPropagation();
|
|
37707
|
+
const newValue = !e.tree$Expanded;
|
|
37708
|
+
e.tree$Expanded = newValue;
|
|
37709
|
+
// updating status with newValue
|
|
37710
|
+
const currentExpandedIds = this.comPartyService.status$.value?.expandedKeys;
|
|
37711
|
+
let newExpandedIds = currentExpandedIds?.filter((_) => !!!currentExpandedIds.includes(e.id.toString()));
|
|
37712
|
+
if (newValue) {
|
|
37713
|
+
newExpandedIds?.push(e.id.toString());
|
|
37714
|
+
}
|
|
37715
|
+
newExpandedIds?.sort();
|
|
37716
|
+
const newExpandedKeys = [];
|
|
37717
|
+
newExpandedIds.map((x) => newExpandedKeys.push(x.toString()));
|
|
37718
|
+
this.comPartyService.status$.next({
|
|
37719
|
+
...this.comPartyService.status$.value,
|
|
37720
|
+
expandedKeys: newExpandedKeys,
|
|
37721
|
+
});
|
|
37722
|
+
}
|
|
37723
|
+
onItemCheck(e, newValue) {
|
|
37724
|
+
this.itemClick?.emit(e);
|
|
37725
|
+
if (this.accessorMode !== EnumCoreOrgTreeaAccessorMode.CHECKED)
|
|
37726
|
+
return;
|
|
37727
|
+
// We have this var to hold nodes that are being changed
|
|
37728
|
+
let toggledIds;
|
|
37729
|
+
// We should calculate a new state into this var:
|
|
37730
|
+
const newCheckedIds = JSON.parse(JSON.stringify(this.checkedIds));
|
|
37731
|
+
// We will call this function after toggledIds changed
|
|
37732
|
+
const changeValue = () => {
|
|
37733
|
+
// If newValue === true, we will disctintly push changed ids to the state
|
|
37734
|
+
// Otherwise we will remove them from the state
|
|
37735
|
+
if (!!newValue) {
|
|
37736
|
+
toggledIds.map(x => {
|
|
37737
|
+
if (!!!newCheckedIds.includes(x)) {
|
|
37738
|
+
newCheckedIds.push(x);
|
|
37739
|
+
}
|
|
37740
|
+
});
|
|
37741
|
+
// Then asign the state to the newCheckedIds
|
|
37742
|
+
this.checkedIds = newCheckedIds;
|
|
37743
|
+
}
|
|
37744
|
+
else {
|
|
37745
|
+
const filter = newCheckedIds.filter(x => !!!toggledIds.includes(x));
|
|
37746
|
+
// Then asign the state to the filter
|
|
37747
|
+
this.checkedIds = filter;
|
|
37748
|
+
}
|
|
37749
|
+
// After the cases of if/else, make the control change with onChange
|
|
37750
|
+
this.value = this.checkedIds;
|
|
37751
|
+
this.onChange(this.checkedIds);
|
|
37752
|
+
this.markAsTouched();
|
|
37753
|
+
};
|
|
37754
|
+
/* start: THIS CODE SCOPE calculates toggledIds */
|
|
37755
|
+
if (this.checkInheritance) {
|
|
37756
|
+
// If true, all the nested items will be checked/unchecked
|
|
37757
|
+
this.recursiveService
|
|
37758
|
+
.nestedToggleCheck(e, newValue, this.showDissolved)
|
|
37759
|
+
.then((x) => {
|
|
37760
|
+
let currentCheckedKeys = this.comPartyService.status$.value.checkedKeys || [];
|
|
37761
|
+
if (!!newValue) {
|
|
37762
|
+
x.map(item => {
|
|
37763
|
+
if (currentCheckedKeys.filter(i => i === item.toString()).length === 0) {
|
|
37764
|
+
currentCheckedKeys.push(item.toString());
|
|
37765
|
+
}
|
|
37766
|
+
});
|
|
37767
|
+
}
|
|
37768
|
+
else {
|
|
37769
|
+
currentCheckedKeys = currentCheckedKeys.filter(i => !x.includes(Number(i)));
|
|
37770
|
+
}
|
|
37771
|
+
this.comPartyService.status$.next({
|
|
37772
|
+
...this.comPartyService.status$.value,
|
|
37773
|
+
checkedKeys: currentCheckedKeys //x.map(item => item.toString())
|
|
37774
|
+
});
|
|
37775
|
+
// The ids have been changed
|
|
37776
|
+
toggledIds = x;
|
|
37777
|
+
// Now toggledIds were set. We call the function we declared
|
|
37778
|
+
changeValue();
|
|
37779
|
+
})
|
|
37780
|
+
.catch((x) => {
|
|
37781
|
+
console.error(x);
|
|
37782
|
+
});
|
|
37783
|
+
}
|
|
37784
|
+
else {
|
|
37785
|
+
// Otherwise we simply toggle check for current item only
|
|
37786
|
+
toggledIds = [e.id];
|
|
37787
|
+
// Now toggledIds were set. We call the function we declared
|
|
37788
|
+
changeValue();
|
|
37789
|
+
}
|
|
37790
|
+
/* end: THIS CODE SCOPE calculates toggledIds */
|
|
37791
|
+
// That is. Happy debugging!
|
|
37792
|
+
}
|
|
37793
|
+
onCheckIncludeDissolvedChange(value) {
|
|
37794
|
+
console.log("onCheckIncludeDissolvedChange", value);
|
|
37795
|
+
}
|
|
37796
|
+
onCheckInheritanceChange(value) {
|
|
37797
|
+
this.comPartyService.status$.next({
|
|
37798
|
+
...this.comPartyService.status$.value,
|
|
37799
|
+
checkInheritance: value,
|
|
37800
|
+
});
|
|
37801
|
+
}
|
|
37802
|
+
onObjectClick(e, event) {
|
|
37803
|
+
// remove highlight class
|
|
37804
|
+
// TO DO
|
|
37805
|
+
if (!!e.protected)
|
|
37806
|
+
return;
|
|
37807
|
+
this.itemClick?.emit(e);
|
|
37808
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED)
|
|
37809
|
+
return;
|
|
37810
|
+
let activeIds = [];
|
|
37811
|
+
this.data.map((item) => (item.active = false));
|
|
37812
|
+
if (this.accessorMode ===
|
|
37813
|
+
EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE ||
|
|
37814
|
+
!!!this.accessorMode) {
|
|
37815
|
+
// If true, all the nested items will be active, the others are inactive
|
|
37816
|
+
this.recursiveService
|
|
37817
|
+
.nestedResetActive(e, true)
|
|
37818
|
+
.then((x) => {
|
|
37819
|
+
activeIds = x;
|
|
37820
|
+
activeIds.sort();
|
|
37821
|
+
const newActiveKeys = [];
|
|
37822
|
+
activeIds.map((x) => newActiveKeys.push(x.toString()));
|
|
37823
|
+
this.comPartyService.status$.next({
|
|
37824
|
+
...this.comPartyService.status$.value,
|
|
37825
|
+
activeKeys: newActiveKeys,
|
|
37826
|
+
selectedKey: e.id.toString()
|
|
37827
|
+
});
|
|
37828
|
+
this.activeIds = activeIds;
|
|
37829
|
+
console.log(this.activeIds);
|
|
37830
|
+
this.onChange(activeIds);
|
|
37831
|
+
})
|
|
37832
|
+
.catch((x) => {
|
|
37833
|
+
console.error(x);
|
|
37834
|
+
});
|
|
37835
|
+
}
|
|
37836
|
+
else {
|
|
37837
|
+
// ACTIVATED_SINGLE
|
|
37838
|
+
// Otherwise we simply set current item to be active only
|
|
37839
|
+
activeIds = [e.id];
|
|
37840
|
+
this.activeIds = activeIds;
|
|
37841
|
+
this.comPartyService.status$.next({
|
|
37842
|
+
...this.comPartyService.status$.value,
|
|
37843
|
+
activeKeys: [e.id.toString()],
|
|
37844
|
+
selectedKey: e.id.toString(),
|
|
37845
|
+
});
|
|
37846
|
+
this.onChange(activeIds);
|
|
37847
|
+
}
|
|
37848
|
+
const { detail } = event;
|
|
37849
|
+
if (detail === 2) {
|
|
37850
|
+
console.log('This was a dblclick');
|
|
37851
|
+
this.itemDoubleClick.emit(e);
|
|
37852
|
+
}
|
|
37853
|
+
this.selectedItem = e;
|
|
37854
|
+
}
|
|
37855
|
+
onSearchChange(text) {
|
|
37856
|
+
this.search$.next(text);
|
|
37857
|
+
}
|
|
37858
|
+
onHiddenToolClick(e) {
|
|
37859
|
+
e.stopPropagation();
|
|
37860
|
+
this.hiddenToolClickStream$.next(crypto.randomUUID());
|
|
37861
|
+
}
|
|
37862
|
+
ngOnDestroy() {
|
|
37863
|
+
if (this.worker) {
|
|
37864
|
+
this.worker.terminate();
|
|
37865
|
+
}
|
|
37866
|
+
this.subscriptions.map((x) => x?.unsubscribe());
|
|
37867
|
+
if (!!this.instanceNumber) {
|
|
37868
|
+
const tryToFind = this.comPartyService.instances.filter((x) => x.instanceNumber === this.instanceNumber);
|
|
37869
|
+
if (!!tryToFind.length) {
|
|
37870
|
+
const newInstances = this.comPartyService.instances.filter((x) => x.instanceNumber !== this.instanceNumber);
|
|
37871
|
+
this.comPartyService.instances = newInstances;
|
|
37872
|
+
}
|
|
37873
|
+
}
|
|
37874
|
+
}
|
|
37875
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreComTreeComponent, deps: [{ token: AuthService }, { token: RecursiveService }, { token: MultiLanguageService }, { token: LayoutService }, { token: CoreOrgTreeService }, { token: AlertService }, { token: ComPartyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37876
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreComTreeComponent, isStandalone: true, selector: "core-com-tree", inputs: { lineColor: "lineColor", fullWidthMode: "fullWidthMode", accessorMode: "accessorMode", searchMode: "searchMode", fullRendering: "fullRendering", height: "height", disabledLoopExpand: "disabledLoopExpand", showCheckInheritance: "showCheckInheritance", excludedIds$: "excludedIds$", stateIsolated$: "stateIsolated$" }, outputs: { itemDoubleClick: "itemDoubleClick", itemClick: "itemClick" }, providers: [
|
|
37877
|
+
{
|
|
37878
|
+
provide: NG_VALUE_ACCESSOR,
|
|
37879
|
+
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
37880
|
+
multi: true
|
|
37881
|
+
}
|
|
37882
|
+
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "displayContent", first: true, predicate: ["displayContent"], descendants: true }, { propertyName: "reducedIconWrapper", first: true, predicate: ["reducedIconWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-org-tree-container\" [class.full-width]=\"!!fullWidthMode\" *ngIf=\"!!data\" \r\n [style.position]=\"'relative'\"\r\n [style.width]=\"'100%'\"\r\n [style.minWidth]=\"'310px'\"\r\n [style.height]=\"height + 'px'\"\r\n >\r\n <div #displayContent class=\"custom-org-tree\">\r\n @if (showSearch) {\r\n <div class=\"core-org-tree-header d-flex-between\">\r\n <div class=\"m5\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"searchPlaceholder | translate: lang\" [class.full-width]=\"!!fullWidthMode\">\r\n </div>\r\n </div>\r\n }\r\n <ng-container>\r\n\r\n <div #scrollContainer class=\"scroll-container\" \r\n [style.height]=\"height - layoutService.coreOrgTreeTopHeight * (showSearch ? 1 : 0) - layoutService.coreOrgTreeBottomHeight + 'px'\" \r\n [style.overflow]=\"'scroll'\" \r\n >\r\n <div class=\"hidden-tool\" (click)=\"onHiddenToolClick($event)\"></div>\r\n <core-loading-surface [loading]=\"loading\" [height]=\"scrollContainerHeight\"></core-loading-surface>\r\n <!-- @for (root of dataFiltered; track root) { -->\r\n @if (!!data && !!data.length) {\r\n @for (root of data; track $index) {\r\n @defer(on viewport(scrollContainer)) {\r\n <ul class=\"root\" [class.collapsed]=\"!!!root.tree$Expanded\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root }\"></ng-container>\r\n </ul>\r\n } @placeholder() {\r\n Placeholder...\r\n } @loading() {\r\n Loading...\r\n } @error() {\r\n Error...\r\n }\r\n }\r\n } @else {\r\n No items\r\n }\r\n </div>\r\n <div \r\n [style.display]=\"'block'\"\r\n [style.position]=\"'absolute'\"\r\n [style.bottom]=\"'0px'\"\r\n [style.left]=\"'0px'\"\r\n [style.right]=\"'0px'\"\r\n [style.height]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.paddingLeft]=\"layoutService.basicSpacing + 'px'\"\r\n [style.paddingRight]=\"layoutService.basicSpacing + 'px'\"\r\n [style.lineHeight]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.overflow]=\"'hidden'\"\r\n >\r\n <div \r\n [style.height]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.position]=\"'relative'\"\r\n [style.display]=\"'flex'\"\r\n [style.alignItems]=\"'center'\"\r\n [style.justifyContent]=\"'space-between'\"\r\n >\r\n <div>\r\n <core-checkbox [(ngModel)]=\"showDissolved\"\r\n (ngModelChange)=\"onCheckIncludeDissolvedChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS_ABBREVIATED'\"\r\n [tooltip]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS'\" tooltipPosition=\"above\"></core-checkbox>\r\n </div>\r\n @if (accessorMode === 'CHECKED') {\r\n <div class=\"check-inheritance-wrapper\">\r\n @if (showCheckInheritance) {\r\n <core-checkbox [(ngModel)]=\"checkInheritance\"\r\n (ngModelChange)=\"onCheckInheritanceChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.CHECK_INHERITANCE'\"></core-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-id=\"context.id\" let-title=\"context.tree$Title\"\r\n let-highlighted=\"context.tree$Highlighted\" let-hasChildren=\"context.tree$HasChildren\"\r\n let-hasActiveChildren=\"context.tree$HasActiveChildren\" let-children=\"context.tree$Children\"\r\n let-expanded=\"context.tree$Expanded\" let-isActive=\"context.isActive\" let-active=\"context.tree$Active\"\r\n let-checked=\"context.tree$Checked\" let-protected=\"context.protected\">\r\n\r\n @if ((!showDissolved && !!isActive) || (!!showDissolved)) {\r\n <li [class.has-children]=\"!!hasChildren\" [class.collapsed]=\"!!hasChildren && !!!expanded\">\r\n <!-- (click)=\"accessorMode !== 'CHECKED' ? onObjectClick(context, $event) : $event.preventDefault()\" -->\r\n <span (click)=\"onObjectClick(context, $event)\">\r\n @if ((!!showDissolved && !!hasChildren) || (!showDissolved && !!hasActiveChildren)) {\r\n <i class=\"expand-toggler feather-chevron-down\" (click)=\"onExpandTogglerClick(context, $event)\"></i>\r\n }\r\n\r\n @if (accessorMode === 'CHECKED' && !protected) {\r\n <core-checkbox (onClick)=\"onItemCheck(context, $event)\" [inputValue]=\"checked\"\r\n [disabled]=\"disabled\"></core-checkbox>\r\n }\r\n <object [class.active]=\"accessorMode != 'CHECKED' && selectedKey===id.toString()\"\r\n [class.highlighted]=\"highlighted\" [class.dissolved]=\"!isActive\"\r\n [class.protected]=\"protected\" [appTooltip]=\"title\">\r\n {{ title }}\r\n </object>\r\n </span>\r\n @if (!!children.length) {\r\n <ul [class.collapsed]=\" !!!expanded\">\r\n @for (child of children; track $index) {\r\n @if (!!expanded || !!fullRendering) {\r\n\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child }\"></ng-container>\r\n\r\n }\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
|
|
37883
|
+
}
|
|
37884
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreComTreeComponent, decorators: [{
|
|
37885
|
+
type: Component,
|
|
37886
|
+
args: [{ selector: 'core-com-tree', imports: [
|
|
37887
|
+
FormsModule,
|
|
37888
|
+
NgIf,
|
|
37889
|
+
CoreCheckboxComponent,
|
|
37890
|
+
CoreLoadingSurfaceComponent,
|
|
37891
|
+
TranslatePipe,
|
|
37892
|
+
TooltipDirective,
|
|
37893
|
+
], providers: [
|
|
37894
|
+
{
|
|
37895
|
+
provide: NG_VALUE_ACCESSOR,
|
|
37896
|
+
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
37897
|
+
multi: true
|
|
37898
|
+
}
|
|
37899
|
+
], template: "<div #container class=\"core-org-tree-container\" [class.full-width]=\"!!fullWidthMode\" *ngIf=\"!!data\" \r\n [style.position]=\"'relative'\"\r\n [style.width]=\"'100%'\"\r\n [style.minWidth]=\"'310px'\"\r\n [style.height]=\"height + 'px'\"\r\n >\r\n <div #displayContent class=\"custom-org-tree\">\r\n @if (showSearch) {\r\n <div class=\"core-org-tree-header d-flex-between\">\r\n <div class=\"m5\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"searchPlaceholder | translate: lang\" [class.full-width]=\"!!fullWidthMode\">\r\n </div>\r\n </div>\r\n }\r\n <ng-container>\r\n\r\n <div #scrollContainer class=\"scroll-container\" \r\n [style.height]=\"height - layoutService.coreOrgTreeTopHeight * (showSearch ? 1 : 0) - layoutService.coreOrgTreeBottomHeight + 'px'\" \r\n [style.overflow]=\"'scroll'\" \r\n >\r\n <div class=\"hidden-tool\" (click)=\"onHiddenToolClick($event)\"></div>\r\n <core-loading-surface [loading]=\"loading\" [height]=\"scrollContainerHeight\"></core-loading-surface>\r\n <!-- @for (root of dataFiltered; track root) { -->\r\n @if (!!data && !!data.length) {\r\n @for (root of data; track $index) {\r\n @defer(on viewport(scrollContainer)) {\r\n <ul class=\"root\" [class.collapsed]=\"!!!root.tree$Expanded\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root }\"></ng-container>\r\n </ul>\r\n } @placeholder() {\r\n Placeholder...\r\n } @loading() {\r\n Loading...\r\n } @error() {\r\n Error...\r\n }\r\n }\r\n } @else {\r\n No items\r\n }\r\n </div>\r\n <div \r\n [style.display]=\"'block'\"\r\n [style.position]=\"'absolute'\"\r\n [style.bottom]=\"'0px'\"\r\n [style.left]=\"'0px'\"\r\n [style.right]=\"'0px'\"\r\n [style.height]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.paddingLeft]=\"layoutService.basicSpacing + 'px'\"\r\n [style.paddingRight]=\"layoutService.basicSpacing + 'px'\"\r\n [style.lineHeight]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.overflow]=\"'hidden'\"\r\n >\r\n <div \r\n [style.height]=\"layoutService.corePaginationHeight + 'px'\"\r\n [style.position]=\"'relative'\"\r\n [style.display]=\"'flex'\"\r\n [style.alignItems]=\"'center'\"\r\n [style.justifyContent]=\"'space-between'\"\r\n >\r\n <div>\r\n <core-checkbox [(ngModel)]=\"showDissolved\"\r\n (ngModelChange)=\"onCheckIncludeDissolvedChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS_ABBREVIATED'\"\r\n [tooltip]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS'\" tooltipPosition=\"above\"></core-checkbox>\r\n </div>\r\n @if (accessorMode === 'CHECKED') {\r\n <div class=\"check-inheritance-wrapper\">\r\n @if (showCheckInheritance) {\r\n <core-checkbox [(ngModel)]=\"checkInheritance\"\r\n (ngModelChange)=\"onCheckInheritanceChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.CHECK_INHERITANCE'\"></core-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-id=\"context.id\" let-title=\"context.tree$Title\"\r\n let-highlighted=\"context.tree$Highlighted\" let-hasChildren=\"context.tree$HasChildren\"\r\n let-hasActiveChildren=\"context.tree$HasActiveChildren\" let-children=\"context.tree$Children\"\r\n let-expanded=\"context.tree$Expanded\" let-isActive=\"context.isActive\" let-active=\"context.tree$Active\"\r\n let-checked=\"context.tree$Checked\" let-protected=\"context.protected\">\r\n\r\n @if ((!showDissolved && !!isActive) || (!!showDissolved)) {\r\n <li [class.has-children]=\"!!hasChildren\" [class.collapsed]=\"!!hasChildren && !!!expanded\">\r\n <!-- (click)=\"accessorMode !== 'CHECKED' ? onObjectClick(context, $event) : $event.preventDefault()\" -->\r\n <span (click)=\"onObjectClick(context, $event)\">\r\n @if ((!!showDissolved && !!hasChildren) || (!showDissolved && !!hasActiveChildren)) {\r\n <i class=\"expand-toggler feather-chevron-down\" (click)=\"onExpandTogglerClick(context, $event)\"></i>\r\n }\r\n\r\n @if (accessorMode === 'CHECKED' && !protected) {\r\n <core-checkbox (onClick)=\"onItemCheck(context, $event)\" [inputValue]=\"checked\"\r\n [disabled]=\"disabled\"></core-checkbox>\r\n }\r\n <object [class.active]=\"accessorMode != 'CHECKED' && selectedKey===id.toString()\"\r\n [class.highlighted]=\"highlighted\" [class.dissolved]=\"!isActive\"\r\n [class.protected]=\"protected\" [appTooltip]=\"title\">\r\n {{ title }}\r\n </object>\r\n </span>\r\n @if (!!children.length) {\r\n <ul [class.collapsed]=\" !!!expanded\">\r\n @for (child of children; track $index) {\r\n @if (!!expanded || !!fullRendering) {\r\n\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child }\"></ng-container>\r\n\r\n }\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>" }]
|
|
37900
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: RecursiveService }, { type: MultiLanguageService }, { type: LayoutService }, { type: CoreOrgTreeService }, { type: AlertService }, { type: ComPartyService }], propDecorators: { lineColor: [{
|
|
37901
|
+
type: Input
|
|
37902
|
+
}], fullWidthMode: [{
|
|
37903
|
+
type: Input
|
|
37904
|
+
}], accessorMode: [{
|
|
37905
|
+
type: Input
|
|
37906
|
+
}], searchMode: [{
|
|
37907
|
+
type: Input
|
|
37908
|
+
}], fullRendering: [{
|
|
37909
|
+
type: Input
|
|
37910
|
+
}], height: [{
|
|
37911
|
+
type: Input
|
|
37912
|
+
}], disabledLoopExpand: [{
|
|
37913
|
+
type: Input
|
|
37914
|
+
}], showCheckInheritance: [{
|
|
37915
|
+
type: Input
|
|
37916
|
+
}], excludedIds$: [{
|
|
37917
|
+
type: Input
|
|
37918
|
+
}], stateIsolated$: [{
|
|
37919
|
+
type: Input
|
|
37920
|
+
}], itemDoubleClick: [{
|
|
37921
|
+
type: Output
|
|
37922
|
+
}], itemClick: [{
|
|
37923
|
+
type: Output
|
|
37924
|
+
}], container: [{
|
|
37925
|
+
type: ViewChild,
|
|
37926
|
+
args: ['container']
|
|
37927
|
+
}], scrollContainer: [{
|
|
37928
|
+
type: ViewChild,
|
|
37929
|
+
args: ['scrollContainer']
|
|
37930
|
+
}], displayContent: [{
|
|
37931
|
+
type: ViewChild,
|
|
37932
|
+
args: ['displayContent']
|
|
37933
|
+
}], reducedIconWrapper: [{
|
|
37934
|
+
type: ViewChild,
|
|
37935
|
+
args: ['reducedIconWrapper']
|
|
37936
|
+
}] } });
|
|
37937
|
+
|
|
36200
37938
|
class CorePaginationComponent {
|
|
36201
37939
|
constructor() {
|
|
36202
37940
|
this.$currentPage = input.required();
|
|
@@ -36754,860 +38492,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36754
38492
|
args: [{ selector: 'confirm-dialog-state', standalone: false, template: "<div class=\"confirm-dialog-state-container\">\r\n <div class=\"container container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-md-4 label\">busy</div>\r\n <div class=\"col-md-8 font-bold\">{{ ds.busy }}</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 label\">showConfirmDialog</div>\r\n <div class=\"col-md-8 font-bold\">{{ ds.showConfirmDialog$.value }}</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 label\">dialogConfirmed</div>\r\n <div class=\"col-md-8 font-bold\">{{ ds.dialogConfirmed$.value }}</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 label\">title</div>\r\n <div class=\"col-md-8 font-bold\">{{ ds.title$.value }}</div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-4 label\">body</div>\r\n <div class=\"col-md-8 font-bold\">{{ ds.body$.value }}</div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n\r\n busy!: boolean;\r\n\r\n showConfirmDialog$ = new BehaviorSubject<boolean | undefined>(undefined);\r\n canDeactivate$ = new Subject<boolean>;\r\n dialogConfirmed$ = new BehaviorSubject<IDialogConfirmModel | undefined>(undefined);\r\n\r\n title$ = new Subject<EnumTranslateKey>;\r\n body$ = new Subject<EnumTranslateKey>;\r\n okButtonText$ = new Subject<EnumTranslateKey>;\r\n cancelButtonText$ = new Subject<EnumTranslateKey>;\r\n showCancelOnly$ = new Subject<boolean>;\r\n informationLines$ = new Subject<string[]>;\r\n-->", styles: [".confirm-dialog-state-container{position:fixed;display:block;top:calc(var(--size-header-height) + var(--size-layout-block-cell-spacing));left:var(--size-layout-block-cell-spacing);z-index:9999999;width:320px;height:320px}\n"] }]
|
|
36755
38493
|
}], ctorParameters: () => [{ type: DialogService }] });
|
|
36756
38494
|
|
|
36757
|
-
class CoreLazyMountComponent {
|
|
36758
|
-
constructor() {
|
|
36759
|
-
this.vcRef = inject(ViewContainerRef);
|
|
36760
|
-
}
|
|
36761
|
-
set props(value) {
|
|
36762
|
-
this._props = value;
|
|
36763
|
-
this.assignInputs();
|
|
36764
|
-
}
|
|
36765
|
-
async ngOnInit() {
|
|
36766
|
-
if (this.loadComponent) {
|
|
36767
|
-
const componentType = await this.loadComponent();
|
|
36768
|
-
this.componentRef = this.vcRef.createComponent(componentType);
|
|
36769
|
-
this.assignInputs();
|
|
36770
|
-
}
|
|
36771
|
-
}
|
|
36772
|
-
assignInputs() {
|
|
36773
|
-
if (this.componentRef && this._props) {
|
|
36774
|
-
Object.assign(this.componentRef.instance, this._props);
|
|
36775
|
-
this.componentRef.changeDetectorRef.markForCheck();
|
|
36776
|
-
}
|
|
36777
|
-
}
|
|
36778
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36779
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: CoreLazyMountComponent, isStandalone: true, selector: "core-lazy-mount", inputs: { loadComponent: "loadComponent", props: "props" }, ngImport: i0, template: "", styles: [""] }); }
|
|
36780
|
-
}
|
|
36781
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, decorators: [{
|
|
36782
|
-
type: Component,
|
|
36783
|
-
args: [{ selector: 'core-lazy-mount', imports: [], template: "" }]
|
|
36784
|
-
}], propDecorators: { loadComponent: [{
|
|
36785
|
-
type: Input
|
|
36786
|
-
}], props: [{
|
|
36787
|
-
type: Input
|
|
36788
|
-
}] } });
|
|
36789
|
-
|
|
36790
|
-
class ModuleItemComponent extends BaseComponent {
|
|
36791
|
-
constructor(mls, navigatorService, cdr, menuService) {
|
|
36792
|
-
super(mls);
|
|
36793
|
-
this.mls = mls;
|
|
36794
|
-
this.navigatorService = navigatorService;
|
|
36795
|
-
this.cdr = cdr;
|
|
36796
|
-
this.menuService = menuService;
|
|
36797
|
-
this.$item = input.required();
|
|
36798
|
-
this.$itemPadding = input(5);
|
|
36799
|
-
this.$width = input.required();
|
|
36800
|
-
this.$height = input.required();
|
|
36801
|
-
this.$iconTextVerticalMargin = input(25);
|
|
36802
|
-
this.$active = signal(false);
|
|
36803
|
-
this.iconClickStream$ = new BehaviorSubject('');
|
|
36804
|
-
}
|
|
36805
|
-
ngOnInit() {
|
|
36806
|
-
this.subscriptions.push(this.mls.lang$.subscribe(x => {
|
|
36807
|
-
this.lang = x;
|
|
36808
|
-
this.cdr.markForCheck();
|
|
36809
|
-
}));
|
|
36810
|
-
if (!!localStorage) {
|
|
36811
|
-
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
36812
|
-
const active = activeRootMenuItemId === this.$item()?.id;
|
|
36813
|
-
this.$active.set(active);
|
|
36814
|
-
}
|
|
36815
|
-
}
|
|
36816
|
-
onClick(e, item) {
|
|
36817
|
-
this.iconClickStream$.next(crypto.randomUUID());
|
|
36818
|
-
if (!!item) {
|
|
36819
|
-
this.navigatorService.clickedItem$.next(item);
|
|
36820
|
-
}
|
|
36821
|
-
if (localStorage.getItem('moduleDesignMode') === 'on')
|
|
36822
|
-
return;
|
|
36823
|
-
this.navigatorService.activeRootMenuItemId$.next(item?.id);
|
|
36824
|
-
if (!!localStorage) {
|
|
36825
|
-
localStorage.setItem('activeRootMenuItemId', (item?.id || 0).toString());
|
|
36826
|
-
}
|
|
36827
|
-
this.menuService.isOpen$.next(true); // trigger the LeftBar to be opened at the first time
|
|
36828
|
-
}
|
|
36829
|
-
ngAfterViewInit() {
|
|
36830
|
-
this.subscriptions.push(this.navigatorService.activeRootMenuItemId$.subscribe(x => {
|
|
36831
|
-
const active = x === this.$item()?.id;
|
|
36832
|
-
this.$active.set(active);
|
|
36833
|
-
}));
|
|
36834
|
-
this.subscriptions.push(this.iconClickStream$.pipe(buffer(this.iconClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
36835
|
-
.subscribe(_ => {
|
|
36836
|
-
this.navigatorService.showEditSvg$.next(true);
|
|
36837
|
-
}));
|
|
36838
|
-
}
|
|
36839
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ModuleItemComponent, deps: [{ token: MultiLanguageService }, { token: NavigatorService }, { token: i0.ChangeDetectorRef }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36840
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: ModuleItemComponent, isStandalone: true, selector: "app-module-item", inputs: { $item: { classPropertyName: "$item", publicName: "$item", isSignal: true, isRequired: true, transformFunction: null }, $itemPadding: { classPropertyName: "$itemPadding", publicName: "$itemPadding", isSignal: true, isRequired: false, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "$width", isSignal: true, isRequired: true, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "$height", isSignal: true, isRequired: true, transformFunction: null }, $iconTextVerticalMargin: { classPropertyName: "$iconTextVerticalMargin", publicName: "$iconTextVerticalMargin", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"menu-item-wrapper\" \r\n [class.active] = \"$active()\"\r\n (click)=\"onClick($event, $item())\" [ngStyle]=\"{\r\n width: $width() + 'px',\r\n height: $height() + 'px',\r\n padding: $itemPadding() + 'px',\r\n visibility: !!$item() ? 'visible' : 'hidden'\r\n}\">\r\n @if (!!$item()) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n @if ($item()!.iconSvg) {\r\n <div class=\"d-block\">\r\n <i class=\"module-icon\">\r\n <span [innerHtml]=\"$item()!.iconSvg! | stringHtml\"></span>\r\n </i>\r\n </div>\r\n } @else if ($item()!.iconClass) {\r\n <div>\r\n <i [class]=\"$item()!.iconClass + ' module-icon'\"></i>\r\n </div>\r\n }\r\n <div [ngStyle]=\"{\r\n height: $iconTextVerticalMargin() + 'px'\r\n }\"></div>\r\n <div class=\"module-code\" [appTooltip]=\"$item()!.code! | translate: lang\" [ngStyle]=\"{\r\n width: $width() - $itemPadding() * 2 + 'px'\r\n }\">{{ $item()!.code! | translate: lang}}</div>\r\n </div>\r\n }\r\n</div>", styles: [".menu-item-wrapper{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-user-select:none;user-select:none}.menu-item-wrapper:not(.active){cursor:pointer}.menu-item-wrapper:not(.active):hover{background-color:var(--color-bg-main)}.menu-item-wrapper.active{color:var(--color-basic-orange)}.module-code{font-size:var(--typo-basic-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36841
|
-
}
|
|
36842
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ModuleItemComponent, decorators: [{
|
|
36843
|
-
type: Component,
|
|
36844
|
-
args: [{ selector: 'app-module-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
36845
|
-
NgStyle,
|
|
36846
|
-
TooltipDirective,
|
|
36847
|
-
StringHtmlPipe,
|
|
36848
|
-
TranslatePipe,
|
|
36849
|
-
], template: "<div class=\"menu-item-wrapper\" \r\n [class.active] = \"$active()\"\r\n (click)=\"onClick($event, $item())\" [ngStyle]=\"{\r\n width: $width() + 'px',\r\n height: $height() + 'px',\r\n padding: $itemPadding() + 'px',\r\n visibility: !!$item() ? 'visible' : 'hidden'\r\n}\">\r\n @if (!!$item()) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n @if ($item()!.iconSvg) {\r\n <div class=\"d-block\">\r\n <i class=\"module-icon\">\r\n <span [innerHtml]=\"$item()!.iconSvg! | stringHtml\"></span>\r\n </i>\r\n </div>\r\n } @else if ($item()!.iconClass) {\r\n <div>\r\n <i [class]=\"$item()!.iconClass + ' module-icon'\"></i>\r\n </div>\r\n }\r\n <div [ngStyle]=\"{\r\n height: $iconTextVerticalMargin() + 'px'\r\n }\"></div>\r\n <div class=\"module-code\" [appTooltip]=\"$item()!.code! | translate: lang\" [ngStyle]=\"{\r\n width: $width() - $itemPadding() * 2 + 'px'\r\n }\">{{ $item()!.code! | translate: lang}}</div>\r\n </div>\r\n }\r\n</div>", styles: [".menu-item-wrapper{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-user-select:none;user-select:none}.menu-item-wrapper:not(.active){cursor:pointer}.menu-item-wrapper:not(.active):hover{background-color:var(--color-bg-main)}.menu-item-wrapper.active{color:var(--color-basic-orange)}.module-code{font-size:var(--typo-basic-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}\n"] }]
|
|
36850
|
-
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: NavigatorService }, { type: i0.ChangeDetectorRef }, { type: MenuService }] });
|
|
36851
|
-
|
|
36852
|
-
class CoreRootMenuItemPickerComponent extends BaseComponent {
|
|
36853
|
-
constructor(mls, ahs, renderer, navigatorService, layoutService, domService, menuService, sysMenuService, authService, appConfigService) {
|
|
36854
|
-
super(mls);
|
|
36855
|
-
this.mls = mls;
|
|
36856
|
-
this.ahs = ahs;
|
|
36857
|
-
this.renderer = renderer;
|
|
36858
|
-
this.navigatorService = navigatorService;
|
|
36859
|
-
this.layoutService = layoutService;
|
|
36860
|
-
this.domService = domService;
|
|
36861
|
-
this.menuService = menuService;
|
|
36862
|
-
this.sysMenuService = sysMenuService;
|
|
36863
|
-
this.authService = authService;
|
|
36864
|
-
this.appConfigService = appConfigService;
|
|
36865
|
-
this.logoPath = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE1IiBoZWlnaHQ9IjI5IiB2aWV3Qm94PSIwIDAgMTE1IDI5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDI4LjU1MjhWOC41NzY4NkgyLjU2MzI5VjE2LjgxMzRIMTIuNTIzNVY4LjU3Njg2SDE1LjA4NjhWMjguNTMzOUgxMi41MjM1VjE5LjE0MjNIMi41ODE2VjI4LjUzMzlIMFYyOC41NTI4Wk0xOS4wNzgyIDExLjM2MDJWOC41NzY4NkgyMS40NTg0VjExLjM2MDJIMTkuMDc4MlpNMTkuMDc4MiAyOC41NTI4VjE0LjA4NjhIMjEuNDU4NFYyOC41NTI4SDE5LjA3ODJaTTI0LjIyMzEgMjIuMDc3MkwyOC4wMzE1IDIxLjY3OTZDMjguMjUxMiAyMi45ODYxIDI4LjcyNzIgMjMuOTUxNyAyOS40MjMgMjQuNTc2NkMzMC4xMTg3IDI1LjIwMTQgMzEuMDcwOCAyNS41MDQ0IDMyLjI0MjYgMjUuNTA0NEMzMy40ODc2IDI1LjUwNDQgMzQuNDIxNCAyNS4yMjAzIDM1LjA2MjIgMjQuNjcxMkMzNS43MDMgMjQuMTIyMSAzNi4wMTQzIDIzLjQ5NzMgMzYuMDE0MyAyMi43NTg5QzM2LjAxNDMgMjIuMjg1NSAzNS44ODYxIDIxLjg2ODkgMzUuNjExNSAyMS41NDdDMzUuMzM2OCAyMS4yMjUyIDM0Ljg3OTEgMjAuOTIyMiAzNC4yMiAyMC42NzYxQzMzLjc2MjIgMjAuNTI0NiAzMi43MzY5IDIwLjIyMTYgMzEuMTI1NyAxOS44MDUxQzI5LjAzODUgMTkuMjc0OSAyNy41NzM3IDE4LjYxMjIgMjYuNzQ5OCAxNy44MTY5QzI1LjU1OTcgMTYuNzE4NyAyNC45OTIxIDE1LjM3NDQgMjQuOTkyMSAxMy44MDI4QzI0Ljk5MjEgMTIuNzgwMyAyNS4yNjY4IDExLjgxNDcgMjUuODE2IDEwLjk0MzdDMjYuMzgzNiAxMC4wNTM4IDI3LjE3MDkgOS4zNzIxMSAyOC4yMTQ1IDguOTE3NjhDMjkuMjc2NSA4LjQ0NDMyIDMwLjUyMTUgOC4yMTcxIDMyLjAwNDYgOC4yMTcxQzM0LjQyMTQgOC4yMTcxIDM2LjIzNCA4Ljc2NjIgMzcuNDYwNyA5Ljg2NDQxQzM4LjY4NzQgMTAuOTgxNSAzOS4zMDk5IDEyLjQ1ODQgMzkuMzgzMiAxNC4zMTRMMzUuNDgzMyAxNC40NjU1QzM1LjMxODUgMTMuNDI0MSAzNC45NzA3IDEyLjY4NTcgMzQuNDIxNCAxMi4yNTAyQzMzLjg3MjEgMTEuODE0NyAzMy4wNjY1IDExLjU2ODUgMzEuOTY3OSAxMS41Njg1QzMwLjg1MTEgMTEuNTY4NSAyOS45NzIyIDExLjgxNDcgMjkuMzMxNCAxMi4yODhDMjguOTI4NiAxMi42MDk5IDI4LjcwODkgMTMuMDI2NSAyOC43MDg5IDEzLjUzNzdDMjguNzA4OSAxNC4wMTExIDI4LjkxMDMgMTQuNDI3NiAyOS4yOTQ4IDE0Ljc0OTVDMjkuNzcwOCAxNS4xODUgMzAuOTc5MiAxNS42Mzk1IDMyLjg2NTEgMTYuMTEyOEMzNC43NTA5IDE2LjU2NzIgMzYuMTYwOCAxNy4wNDA2IDM3LjA1NzkgMTcuNTUxOEMzNy45NTUxIDE4LjA0NDEgMzguNjY5MSAxOC43MjU4IDM5LjE4MTggMTkuNTc3OEMzOS42OTQ0IDIwLjQ0ODggMzkuOTUwOCAyMS40OTAyIDM5Ljk1MDggMjIuNzU4OUMzOS45NTA4IDIzLjg5NDkgMzkuNjM5NSAyNC45NzQyIDM5LjAxNyAyNS45Nzc3QzM4LjQxMjggMjYuOTgxMyAzNy41MzQgMjcuNzE5NyAzNi40MTcxIDI4LjE5MzFDMzUuMzAwMiAyOC42ODU0IDMzLjkwODcgMjguOTEyNiAzMi4yMjQzIDI4LjkxMjZDMjkuNzg5MSAyOC45MTI2IDI3LjkwMzMgMjguMzI1NiAyNi42MDMzIDI3LjE3MDZDMjUuMjY2OCAyNS45OTY3IDI0LjQ3OTUgMjQuMjkyNiAyNC4yMjMxIDIyLjA3NzJaTTQ5LjU4MTQgMTQuMDY3OVYxNy4wOTc0SDQ3LjA1NDhWMjIuOTY3MUM0Ny4wNTQ4IDI0LjE0MTEgNDcuMDczMSAyNC44NDE3IDQ3LjEwOTcgMjUuMDQ5OUM0Ny4xNjQ2IDI1LjIzOTMgNDcuMjc0NSAyNS40MDk3IDQ3LjQ1NzYgMjUuNTQyMkM0Ny42MjIzIDI1LjY3NDggNDcuODIzNyAyNS43MzE2IDQ4LjA4MDEgMjUuNzMxNkM0OC40MjggMjUuNzMxNiA0OC45MjIzIDI1LjU5OSA0OS41NjMxIDI1LjM3MThMNDkuODc0NCAyOC4zNDQ2QzQ5LjAxMzkgMjguNzIzMiA0OC4wNjE4IDI4LjkxMjYgNDYuOTYzMiAyOC45MTI2QzQ2LjMwNDEgMjguOTEyNiA0NS42OTk5IDI4Ljc5OSA0NS4xNjg5IDI4LjU3MThDNDQuNjM3OSAyOC4zNDQ2IDQ0LjIzNTEgMjguMDQxNiA0My45Nzg4IDI3LjY2MjlDNDMuNzQwOCAyNy4zMDMyIDQzLjU1NzcgMjYuNzkxOSA0My40NjYxIDI2LjE2NzFDNDMuMzkyOSAyNS43MTI2IDQzLjM1NjMgMjQuODIyNyA0My4zNTYzIDIzLjQ1OTRWMTcuMTE2NEg0MS42NzE4VjE0LjA4NjhINDMuMzU2M1YxMS4yMDg4TDQ3LjA1NDggOC45NTU1NVYxNC4wODY4SDQ5LjU4MTRWMTQuMDY3OVpNNTQuOTI3NyAxOC41MzY0TDUxLjU3NzEgMTcuOTMwNUM1MS45NjE2IDE2LjUxMDQgNTIuNjAyNSAxNS40NjkgNTMuNTE3OSAxNC43ODc0QzU0LjQ1MTcgMTQuMTI0NyA1NS44MjQ5IDEzLjc4MzkgNTcuNjM3NSAxMy43ODM5QzU5LjI4NTMgMTMuNzgzOSA2MC41MTIxIDEzLjk3MzIgNjEuMzE3NyAxNC4zODk4QzYyLjEyMzMgMTQuNzg3NCA2Mi42OTA5IDE1LjI5ODYgNjMuMDIwNCAxNS45MjM1QzYzLjM1IDE2LjU0ODMgNjMuNTE0OCAxNy42ODQ0IDYzLjUxNDggMTkuMzMxN0w2My40NTk4IDIzLjgwMDNDNjMuNDU5OCAyNS4wNjg5IDYzLjUxNDggMjUuOTk2NyA2My42NDI5IDI2LjYwMjZDNjMuNzUyOCAyNy4yMDg1IDYzLjk5MDggMjcuODcxMiA2NC4zMDIxIDI4LjU1MjhINjAuNjQwMkM2MC41MzA0IDI4LjMwNjcgNjAuNDIwNSAyNy45MjggNjAuMjkyMyAyNy40MzU3QzYwLjIzNzQgMjcuMjA4NSA2MC4xODI1IDI3LjA1NyA2MC4xNDU5IDI2Ljk4MTNDNTkuNTIzNCAyNy42MjUgNTguODQ1OSAyOC4wOTg0IDU4LjEzMTkgMjguNDIwM0M1Ny40MTc4IDI4Ljc0MjIgNTYuNjQ4OCAyOC44OTM3IDU1Ljg0MzIgMjguODkzN0M1NC40MTUxIDI4Ljg5MzcgNTMuMjc5OSAyOC40OTYgNTIuNDU2IDI3LjY4MThDNTEuNjMyMSAyNi44ODY2IDUxLjIxMSAyNS44NjQxIDUxLjIxMSAyNC42MTQ0QzUxLjIxMSAyMy44MDAzIDUxLjM5NDEgMjMuMDgwNyA1MS43Nzg1IDIyLjQzN0M1Mi4xNjMgMjEuODEyMSA1Mi42NzU3IDIxLjMwMDkgNTMuMzcxNCAyMC45NjAxQzU0LjA0ODkgMjAuNjM4MiA1NS4wMTkzIDIwLjMzNTIgNTYuMzAwOSAyMC4wNzAxQzU4LjAyMiAxOS43NDgzIDU5LjIzMDQgMTkuNDI2NCA1OS44ODk1IDE5LjE0MjNWMTguNzYzN0M1OS44ODk1IDE4LjAwNjMgNTkuNzA2NSAxNy40OTUgNTkuMzc2OSAxNy4xNzMyQzU5LjAyOSAxNi44NTEzIDU4LjM1MTYgMTYuNjgwOSA1Ny4zODEyIDE2LjY4MDlDNTYuNzIyIDE2LjY4MDkgNTYuMjA5NCAxNi44MzIzIDU1Ljg0MzIgMTcuMDk3NEM1NS40NDA0IDE3LjM4MTQgNTUuMTQ3NCAxNy44NTQ4IDU0LjkyNzcgMTguNTM2NFpNNTkuODg5NSAyMS42NDE3QzU5LjQxMzUgMjEuNzkzMiA1OC42NjI4IDIyLjAwMTUgNTcuNjM3NSAyMi4yMjg3QzU2LjYxMjIgMjIuNDU1OSA1NS45NTMxIDIyLjY4MzEgNTUuNjIzNSAyMi44OTE0QzU1LjE0NzQgMjMuMjUxMiA1NC44OTExIDIzLjY4NjYgNTQuODkxMSAyNC4yMzU3QzU0Ljg5MTEgMjQuNzg0OSA1NS4wNzQyIDI1LjIzOTMgNTUuNDc3IDI1LjYzNjlDNTUuODYxNSAyNi4wMzQ1IDU2LjMzNzUgMjYuMjIzOSA1Ni45NDE3IDI2LjIyMzlDNTcuNjE5MiAyNi4yMjM5IDU4LjI2IDI1Ljk5NjcgNTguODY0MiAyNS41NDIyQzU5LjMwMzYgMjUuMjAxNCA1OS41OTY2IDI0Ljc4NDkgNTkuNzQzMSAyNC4yNzM2QzU5LjgzNDYgMjMuOTUxNyA1OS44ODk1IDIzLjMwOCA1OS44ODk1IDIyLjM5OTFWMjEuNjQxN1pNNjUuNTQ3MSAxNC4wNjc5SDY3LjU5NzdWMTIuOTg4NkM2Ny41OTc3IDExLjc1NzkgNjcuNzI1OSAxMC44Njc5IDY3Ljk4MjIgMTAuMjYyQzY4LjIzODYgOS42NTYxMyA2OC42OTYzIDkuMTYzODMgNjkuMzczNyA4Ljc4NTE0QzcwLjA1MTIgOC40MDY0NSA3MC45MTE3IDguMjE3MSA3MS45MzcgOC4yMTcxQzcyLjk5OSA4LjIxNzEgNzQuMDQyNiA4LjM2ODU4IDc1LjA0OTYgOC43MDk0TDc0LjU3MzYgMTEuMzYwMkM3My45Njk0IDExLjIwODggNzMuMzgzNSAxMS4xMzMgNzIuODUyNSAxMS4xMzNDNzIuMzAzMiAxMS4xMzMgNzEuOTE4NyAxMS4yNjU2IDcxLjY2MjQgMTEuNTMwN0M3MS40MDYxIDExLjc5NTcgNzEuMzE0NSAxMi4yODggNzEuMzE0NSAxMy4wNDU0VjE0LjA2NzlINzQuMDc5MlYxNy4wNzg1SDcxLjMxNDVWMjguNTMzOUg2Ny42MTZWMTcuMDc4NUg2NS41NjU0VjE0LjA2NzlINjUuNTQ3MVpNNzQuNTE4NiAxNC4wNjc5SDc2LjU2OTNWMTIuOTg4NkM3Ni41NjkzIDExLjc1NzkgNzYuNjk3NCAxMC44Njc5IDc2Ljk1MzggMTAuMjYyQzc3LjIxMDEgOS42NTYxMyA3Ny42Njc4IDkuMTYzODMgNzguMzQ1MyA4Ljc4NTE0Qzc5LjAyMjcgOC40MDY0NSA3OS44ODMyIDguMjE3MSA4MC45MDg2IDguMjE3MUM4MS45NzA1IDguMjE3MSA4My4wMTQxIDguMzY4NTggODQuMDIxMSA4LjcwOTRMODMuNTQ1MSAxMS4zNjAyQzgyLjk0MDkgMTEuMjA4OCA4Mi4zNTUgMTEuMTMzIDgxLjgwNTcgMTEuMTMzQzgxLjI1NjQgMTEuMTMzIDgwLjg3MTkgMTEuMjY1NiA4MC42MTU2IDExLjUzMDdDODAuMzk1OSAxMS43OTU3IDgwLjI2NzcgMTIuMjg4IDgwLjI2NzcgMTMuMDQ1NFYxNC4wNjc5SDgzLjAzMjRWMTcuMDc4NUg4MC4yNjc3VjI4LjUzMzlINzYuNTY5M1YxNy4wNzg1SDc0LjUxODZWMTQuMDY3OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTk4LjY0OTggNS4yNDQ3N0M5Ny45NTQgMi43ODMyOCA5NS42NDcxIDIuNDA0NTkgOTMuNzI0NiAzLjc2Nzg4QzkxLjc0NzIgNS4xNjkwMyA5MC40Mjg5IDguMTk4NTcgOTEuMTA2NCAxMC42MjIyQzkxLjgwMjEgMTMuMDgzNyA5NC4xMDkxIDEzLjQ2MjQgOTYuMDMxNiAxMi4xMThDOTguMDA5IDEwLjcxNjkgOTkuMzI3MiA3LjY2ODQgOTguNjQ5OCA1LjI0NDc3WiIgZmlsbD0iI0YzNzU0MCIvPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05MS4xNDI4IDI3LjgxNDlDOTEuOTMwMSAyNy4xMTQzIDkyLjk3MzggMjYuNDUxNiA5My44MTYgMjUuODgzNkw5NS40NjM4IDI0LjgyMzJDOTcuODQ0IDIwLjAzMjggMTAxLjA0OCAxNS41NDUzIDEwNC40MTcgMTEuNDU1NEMxMDcuNDkzIDcuNjg3NDQgMTExLjA4MiAzLjc0OTA1IDExNSAwLjkwODg2TDExNC4zNDEgMEMxMTAuMTQ4IDIuMjkxMDggMTA2LjMwMyA1LjQxNTI5IDEwMi44NDIgOC43NjY3MUM5OS4xOTg5IDEyLjMwNzUgOTUuODQ4MyAxNi4yMjY5IDkzLjE1NjggMjAuNTgxOUw5My4wNDcgMjAuNzMzNEw5Mi4yNzggMTkuMDY3MUM5MS43MTA0IDE3Ljg1NTMgOTAuMTM1OCAxNC42NTU0IDg4LjU0MjkgMTQuNjU1NEM4Ni45NSAxNC42NTU0IDg1LjQzMDMgMTUuODI5MyA4NC4zMTM1IDE2Ljk0NjRDODUuMzAyMiAxNy4zMDYyIDg2LjEyNjEgMTcuOTg3OCA4Ni43ODUyIDE4LjgyMUM4Ny44MTA1IDIwLjA3MDYgODguNjM0NSAyMS43NzQ4IDg5LjI5MzYgMjMuMjcwNkw4OS45MTYxIDI0LjY3MTdDOTAuMzE4OSAyNS42NzUzIDkwLjgxMzMgMjYuNzkyNCA5MS4xNDI4IDI3LjgxNDlaIiBmaWxsPSIjRjM3NTQwIi8+DQo8L3N2Zz4NCg==';
|
|
36866
|
-
this.itemsPerRow = 4;
|
|
36867
|
-
this.iconTextVerticalMargin = 25;
|
|
36868
|
-
this.items = [[]];
|
|
36869
|
-
this.zIndex = 1;
|
|
36870
|
-
this.imageErrorResolverType = EnumImageResolverType.LOGO;
|
|
36871
|
-
this.headerHeight = 0;
|
|
36872
|
-
this.width = 400;
|
|
36873
|
-
this.layoutService.modulePanelWidth$.subscribe(x => this.width = x);
|
|
36874
|
-
}
|
|
36875
|
-
ngOnInit() {
|
|
36876
|
-
this.subscriptions.push(this.mls.lang$.subscribe(x => this.lang = x));
|
|
36877
|
-
this.subscriptions.push(this.authService.data$.subscribe(x => this.isRoot = !!x?.isRoot));
|
|
36878
|
-
this.scrollWidth = this.layoutService.modulePanelWidth$.value - this.layoutService.basicSpacing * 2;
|
|
36879
|
-
this.scrollHeight = window.innerHeight - this.layoutService.headerHeight$.value - this.layoutService.basicSpacing * 2;
|
|
36880
|
-
this.itemWidth = this.scrollWidth / 4;
|
|
36881
|
-
}
|
|
36882
|
-
transformTo2DArray(flatList) {
|
|
36883
|
-
const result = [];
|
|
36884
|
-
for (let i = 0; i < flatList.length; i += this.itemsPerRow) {
|
|
36885
|
-
const row = flatList.slice(i, i + this.itemsPerRow);
|
|
36886
|
-
// If the last row has fewer than itemsPerRow, pad it with undefineds
|
|
36887
|
-
while (row.length < this.itemsPerRow) {
|
|
36888
|
-
row.push(undefined);
|
|
36889
|
-
}
|
|
36890
|
-
result.push(row);
|
|
36891
|
-
}
|
|
36892
|
-
return result;
|
|
36893
|
-
}
|
|
36894
|
-
ngAfterViewInit() {
|
|
36895
|
-
setTimeout(() => {
|
|
36896
|
-
this.designMode = localStorage.getItem('moduleDesignMode') === 'on';
|
|
36897
|
-
this.zIndex = this.domService.getMaxZIndex() + 1;
|
|
36898
|
-
// this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {
|
|
36899
|
-
// if (!this.designMode) {
|
|
36900
|
-
// if (this.container && !!!this.container.nativeElement.contains(e.target)) {
|
|
36901
|
-
// this.ahs.activeKey$.next(undefined);
|
|
36902
|
-
// }
|
|
36903
|
-
// }
|
|
36904
|
-
// });
|
|
36905
|
-
this.subscriptions.push(this.navigatorService.rootNavigatorItems$.subscribe(x => {
|
|
36906
|
-
// Transform the flat list into a 2D array
|
|
36907
|
-
this.items = this.transformTo2DArray(x);
|
|
36908
|
-
}));
|
|
36909
|
-
this.subscriptions.push(this.layoutService.headerHeight$.subscribe(x => {
|
|
36910
|
-
this.headerHeight = x;
|
|
36911
|
-
}));
|
|
36912
|
-
if (!!localStorage) {
|
|
36913
|
-
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
36914
|
-
this.navigatorService.activeRootMenuItemId$.next(activeRootMenuItemId);
|
|
36915
|
-
}
|
|
36916
|
-
if (window.innerWidth < this.layoutService.modulePanelWidth$.value) {
|
|
36917
|
-
this.layoutService.modulePanelWidth$.next(window.innerWidth);
|
|
36918
|
-
}
|
|
36919
|
-
});
|
|
36920
|
-
}
|
|
36921
|
-
onDesignModeClick(e) {
|
|
36922
|
-
e.stopPropagation();
|
|
36923
|
-
if (localStorage.getItem('moduleDesignMode') === 'on') {
|
|
36924
|
-
localStorage.setItem('moduleDesignMode', 'off');
|
|
36925
|
-
this.designMode = false;
|
|
36926
|
-
}
|
|
36927
|
-
else {
|
|
36928
|
-
localStorage.setItem('moduleDesignMode', 'on');
|
|
36929
|
-
this.designMode = true;
|
|
36930
|
-
}
|
|
36931
|
-
}
|
|
36932
|
-
ngOnDestroy() {
|
|
36933
|
-
this.subscriptions.map(x => x?.unsubscribe());
|
|
36934
|
-
if (this.listenerFn)
|
|
36935
|
-
this.listenerFn();
|
|
36936
|
-
}
|
|
36937
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerComponent, deps: [{ token: MultiLanguageService }, { token: ApplicationHelpService }, { token: i0.Renderer2 }, { token: NavigatorService }, { token: LayoutService }, { token: DomService }, { token: MenuService }, { token: SysMenuService }, { token: AuthService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36938
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreRootMenuItemPickerComponent, isStandalone: true, selector: "core-root-menu-item-picker", inputs: { logoPath: "logoPath", itemsPerRow: "itemsPerRow", iconTextVerticalMargin: "iconTextVerticalMargin" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-root-menu-item-picker-container\" [ngStyle]=\"{\r\n zIndex: zIndex,\r\n}\">\r\n <div class=\"mudule-picker-header d-flex d-flex-between\" [ngStyle]=\"{\r\n height: 59 + 'px'\r\n }\">\r\n <div class=\"HEADER_LOGO\">\r\n <div class=\"logo-wrapper d-flex\">\r\n <img src=\"logoPath\" class=\"lg\" [ngStyle]=\"{\r\n width: '130px',\r\n height: '59px',\r\n transform: 'translate(0, -5px)'\r\n }\" appImageErrorResolver [type]=\"imageErrorResolverType\">\r\n </div>\r\n </div>\r\n @if (!!isRoot) {\r\n <i \r\n [class.feather-square]=\"!designMode\" \r\n [class.feather-play]=\"!!designMode\" \r\n class=\"stop-mode-icon\" \r\n (click)=\"onDesignModeClick($event)\"\r\n [appTooltip]=\"!designMode ? 'Chuy\u1EC3n sang ch\u1EBF \u0111\u1ED9 thi\u1EBFt k\u1EBF' : 'Chuy\u1EC3n v\u1EC1 ch\u1EBF \u0111\u1ED9 b\u00ECnh th\u01B0\u1EDDng'\"\r\n ></i>\r\n }\r\n </div>\r\n\r\n <div class=\"header-bottom\" [ngStyle]=\"{\r\n width: width + 'px'\r\n }\">\r\n <core-line></core-line>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"scroll\" [ngStyle]=\"{\r\n width: width + 'px',\r\n height: scrollHeight + 'px'\r\n }\">\r\n @for (row of items; track $index) {\r\n <div class=\"menu-row\">\r\n @for (item of row; track $index) {\r\n <app-module-item [$item]=\"item\" [$width]=\"itemWidth\" [$height]=\"100\" [$iconTextVerticalMargin]=\"iconTextVerticalMargin\"></app-module-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-root-menu-item-picker-container .header-bottom{position:absolute;top:59px;left:0}.core-root-menu-item-picker-container .scroll{overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;flex-wrap:wrap;-ms-overflow-style:none}.core-root-menu-item-picker-container .scroll::-webkit-scrollbar{display:none}.core-root-menu-item-picker-container .menu-row{display:flex;flex-wrap:nowrap;justify-content:space-between}.core-root-menu-item-picker-container .stop-mode-icon{cursor:pointer;width:24px;height:24px;font-size:24px}\n"], dependencies: [{ kind: "component", type: CoreLineComponent, selector: "core-line" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ModuleItemComponent, selector: "app-module-item", inputs: ["$item", "$itemPadding", "$width", "$height", "$iconTextVerticalMargin"] }, { kind: "directive", type: ImageErrorResolverDirective, selector: "[appImageErrorResolver]", inputs: ["type", "isFemale"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
|
|
36939
|
-
}
|
|
36940
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerComponent, decorators: [{
|
|
36941
|
-
type: Component,
|
|
36942
|
-
args: [{ selector: 'core-root-menu-item-picker', imports: [
|
|
36943
|
-
CoreLineComponent,
|
|
36944
|
-
NgStyle,
|
|
36945
|
-
ModuleItemComponent,
|
|
36946
|
-
ImageErrorResolverDirective,
|
|
36947
|
-
TooltipDirective,
|
|
36948
|
-
], template: "<div #container class=\"core-root-menu-item-picker-container\" [ngStyle]=\"{\r\n zIndex: zIndex,\r\n}\">\r\n <div class=\"mudule-picker-header d-flex d-flex-between\" [ngStyle]=\"{\r\n height: 59 + 'px'\r\n }\">\r\n <div class=\"HEADER_LOGO\">\r\n <div class=\"logo-wrapper d-flex\">\r\n <img src=\"logoPath\" class=\"lg\" [ngStyle]=\"{\r\n width: '130px',\r\n height: '59px',\r\n transform: 'translate(0, -5px)'\r\n }\" appImageErrorResolver [type]=\"imageErrorResolverType\">\r\n </div>\r\n </div>\r\n @if (!!isRoot) {\r\n <i \r\n [class.feather-square]=\"!designMode\" \r\n [class.feather-play]=\"!!designMode\" \r\n class=\"stop-mode-icon\" \r\n (click)=\"onDesignModeClick($event)\"\r\n [appTooltip]=\"!designMode ? 'Chuy\u1EC3n sang ch\u1EBF \u0111\u1ED9 thi\u1EBFt k\u1EBF' : 'Chuy\u1EC3n v\u1EC1 ch\u1EBF \u0111\u1ED9 b\u00ECnh th\u01B0\u1EDDng'\"\r\n ></i>\r\n }\r\n </div>\r\n\r\n <div class=\"header-bottom\" [ngStyle]=\"{\r\n width: width + 'px'\r\n }\">\r\n <core-line></core-line>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"scroll\" [ngStyle]=\"{\r\n width: width + 'px',\r\n height: scrollHeight + 'px'\r\n }\">\r\n @for (row of items; track $index) {\r\n <div class=\"menu-row\">\r\n @for (item of row; track $index) {\r\n <app-module-item [$item]=\"item\" [$width]=\"itemWidth\" [$height]=\"100\" [$iconTextVerticalMargin]=\"iconTextVerticalMargin\"></app-module-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-root-menu-item-picker-container .header-bottom{position:absolute;top:59px;left:0}.core-root-menu-item-picker-container .scroll{overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;flex-wrap:wrap;-ms-overflow-style:none}.core-root-menu-item-picker-container .scroll::-webkit-scrollbar{display:none}.core-root-menu-item-picker-container .menu-row{display:flex;flex-wrap:nowrap;justify-content:space-between}.core-root-menu-item-picker-container .stop-mode-icon{cursor:pointer;width:24px;height:24px;font-size:24px}\n"] }]
|
|
36949
|
-
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: ApplicationHelpService }, { type: i0.Renderer2 }, { type: NavigatorService }, { type: LayoutService }, { type: DomService }, { type: MenuService }, { type: SysMenuService }, { type: AuthService }, { type: AppConfigService }], propDecorators: { logoPath: [{
|
|
36950
|
-
type: Input
|
|
36951
|
-
}], itemsPerRow: [{
|
|
36952
|
-
type: Input
|
|
36953
|
-
}], iconTextVerticalMargin: [{
|
|
36954
|
-
type: Input
|
|
36955
|
-
}], container: [{
|
|
36956
|
-
type: ViewChild,
|
|
36957
|
-
args: ['container']
|
|
36958
|
-
}] } });
|
|
36959
|
-
|
|
36960
|
-
class CoreRootMenuItemPickerService {
|
|
36961
|
-
constructor() { }
|
|
36962
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36963
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, providedIn: 'root' }); }
|
|
36964
|
-
}
|
|
36965
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, decorators: [{
|
|
36966
|
-
type: Injectable,
|
|
36967
|
-
args: [{
|
|
36968
|
-
providedIn: 'root'
|
|
36969
|
-
}]
|
|
36970
|
-
}], ctorParameters: () => [] });
|
|
36971
|
-
|
|
36972
|
-
class ComPartyService {
|
|
36973
|
-
constructor(recursiveService, alertService) {
|
|
36974
|
-
this.recursiveService = recursiveService;
|
|
36975
|
-
this.alertService = alertService;
|
|
36976
|
-
this.instances = [];
|
|
36977
|
-
this.loading = true;
|
|
36978
|
-
this.comTreeData$ = new BehaviorSubject([]);
|
|
36979
|
-
this.comTreeDataWithPeople$ = new BehaviorSubject([]);
|
|
36980
|
-
this.linerData$ = new BehaviorSubject([]);
|
|
36981
|
-
this.buildTreeFlag$ = new BehaviorSubject(false);
|
|
36982
|
-
this.status$ = new BehaviorSubject({
|
|
36983
|
-
selectedKey: undefined,
|
|
36984
|
-
activeKeys: [],
|
|
36985
|
-
checkedKeys: [],
|
|
36986
|
-
expandedKeys: [],
|
|
36987
|
-
checkInheritance: true
|
|
36988
|
-
});
|
|
36989
|
-
this.linerData$.subscribe(xs => {
|
|
36990
|
-
const idCountMap = new Map();
|
|
36991
|
-
xs.forEach(item => {
|
|
36992
|
-
const id = item.id;
|
|
36993
|
-
idCountMap.set(id, (idCountMap.get(id) ?? 0) + 1);
|
|
36994
|
-
});
|
|
36995
|
-
const duplicates = Array.from(idCountMap.entries())
|
|
36996
|
-
.filter(([_, count]) => count > 1)
|
|
36997
|
-
.map(([id]) => id);
|
|
36998
|
-
if (!!duplicates.length) {
|
|
36999
|
-
if (isDevMode()) {
|
|
37000
|
-
alertService.error('🔁 Duplicate IDs: ' + duplicates.reduce((a, c) => a + ";" + c, ''), alertOptions);
|
|
37001
|
-
}
|
|
37002
|
-
}
|
|
37003
|
-
});
|
|
37004
|
-
}
|
|
37005
|
-
buildTreeData(status = {
|
|
37006
|
-
selectedKey: undefined,
|
|
37007
|
-
activeKeys: [],
|
|
37008
|
-
checkedKeys: [],
|
|
37009
|
-
expandedKeys: [],
|
|
37010
|
-
checkInheritance: true
|
|
37011
|
-
}) {
|
|
37012
|
-
this.loading = true;
|
|
37013
|
-
const cloneCopy = JSON.parse(JSON.stringify(this.linerData$.value));
|
|
37014
|
-
if (typeof Worker !== 'undefined') {
|
|
37015
|
-
// Create a new
|
|
37016
|
-
console.log("🟢🟢 Worker works");
|
|
37017
|
-
const worker = new Worker(liner_to_nested_array_script);
|
|
37018
|
-
worker.addEventListener('message', ({ data }) => {
|
|
37019
|
-
const newData = data.list;
|
|
37020
|
-
this.comTreeData$.next(newData);
|
|
37021
|
-
this.loading = false;
|
|
37022
|
-
});
|
|
37023
|
-
worker.postMessage({
|
|
37024
|
-
list: cloneCopy,
|
|
37025
|
-
keyField: 'id',
|
|
37026
|
-
titleField: 'name',
|
|
37027
|
-
parentField: 'parentId',
|
|
37028
|
-
activeField: 'active',
|
|
37029
|
-
checkedField: 'checked',
|
|
37030
|
-
expandedField: 'expand',
|
|
37031
|
-
status
|
|
37032
|
-
});
|
|
37033
|
-
}
|
|
37034
|
-
else {
|
|
37035
|
-
// Web workers are not supported in this environment.
|
|
37036
|
-
// You should add a fallback so that your program still executes correctly.
|
|
37037
|
-
this.recursiveService
|
|
37038
|
-
.linerArrayToNestedArray(cloneCopy, 'id', 'name', 'parentId', 'active', 'checked', 'expand', status)
|
|
37039
|
-
.subscribe((obj) => {
|
|
37040
|
-
const newData = obj.list;
|
|
37041
|
-
this.comTreeData$.next(newData);
|
|
37042
|
-
this.loading = false;
|
|
37043
|
-
});
|
|
37044
|
-
}
|
|
37045
|
-
}
|
|
37046
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, deps: [{ token: RecursiveService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37047
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, providedIn: 'root' }); }
|
|
37048
|
-
}
|
|
37049
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, decorators: [{
|
|
37050
|
-
type: Injectable,
|
|
37051
|
-
args: [{
|
|
37052
|
-
providedIn: 'root'
|
|
37053
|
-
}]
|
|
37054
|
-
}], ctorParameters: () => [{ type: RecursiveService }, { type: AlertService }] });
|
|
37055
|
-
|
|
37056
|
-
class CoreComTreeComponent extends CoreFormControlBaseComponent {
|
|
37057
|
-
writeValue(obj) {
|
|
37058
|
-
this.value = obj;
|
|
37059
|
-
switch (this.accessorMode) {
|
|
37060
|
-
case EnumCoreOrgTreeaAccessorMode.CHECKED:
|
|
37061
|
-
if (!!obj) {
|
|
37062
|
-
const checkedKeys = [];
|
|
37063
|
-
this.checkedIds = obj; // <=== 24/10/2023
|
|
37064
|
-
obj.map(x => checkedKeys.push(x.toString()));
|
|
37065
|
-
this.loading = true;
|
|
37066
|
-
this.recursiveService.writeValueChecked(checkedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
37067
|
-
this.loading = false;
|
|
37068
|
-
if (!!this.data && !!this.data?.length)
|
|
37069
|
-
this.data[0].tree$Expanded = true;
|
|
37070
|
-
});
|
|
37071
|
-
}
|
|
37072
|
-
break;
|
|
37073
|
-
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE:
|
|
37074
|
-
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE:
|
|
37075
|
-
if (!!obj) {
|
|
37076
|
-
const activatedKeys = [];
|
|
37077
|
-
obj.map(x => activatedKeys.push(x.toString()));
|
|
37078
|
-
this.loading = true;
|
|
37079
|
-
this.recursiveService.writeValueActivated(activatedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
37080
|
-
this.loading = false;
|
|
37081
|
-
if (!!this.data && !!this.data?.length)
|
|
37082
|
-
this.data[0].tree$Expanded = true;
|
|
37083
|
-
});
|
|
37084
|
-
}
|
|
37085
|
-
break;
|
|
37086
|
-
default:
|
|
37087
|
-
break;
|
|
37088
|
-
}
|
|
37089
|
-
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
37090
|
-
}
|
|
37091
|
-
else /* EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE or EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE */ {
|
|
37092
|
-
}
|
|
37093
|
-
}
|
|
37094
|
-
setDisabledState(disabled) {
|
|
37095
|
-
this.disabled = disabled;
|
|
37096
|
-
}
|
|
37097
|
-
constructor(
|
|
37098
|
-
//public override injector: Injector,
|
|
37099
|
-
authService, recursiveService, mls, layoutService, coreOrgTreeService,
|
|
37100
|
-
// private coreOrgTreeState: CoreOrgTreeState,
|
|
37101
|
-
alertService, organizationService) {
|
|
37102
|
-
super( /*injector*/);
|
|
37103
|
-
this.authService = authService;
|
|
37104
|
-
this.recursiveService = recursiveService;
|
|
37105
|
-
this.mls = mls;
|
|
37106
|
-
this.layoutService = layoutService;
|
|
37107
|
-
this.coreOrgTreeService = coreOrgTreeService;
|
|
37108
|
-
this.alertService = alertService;
|
|
37109
|
-
this.organizationService = organizationService;
|
|
37110
|
-
this.lineColor = 'transparent';
|
|
37111
|
-
this.accessorMode = EnumCoreOrgTreeaAccessorMode.CHECKED;
|
|
37112
|
-
//TO BE NEW
|
|
37113
|
-
this.searchMode = EnumCoreOrgTreeaSearchMode.REDUCE;
|
|
37114
|
-
this.excludedIds$ = new BehaviorSubject([]); // 2024-05-10: to be implemented
|
|
37115
|
-
this.stateIsolated$ = new BehaviorSubject(false);
|
|
37116
|
-
this.itemDoubleClick = new EventEmitter();
|
|
37117
|
-
this.itemClick = new EventEmitter();
|
|
37118
|
-
this.showSearch = false;
|
|
37119
|
-
this.hiddenToolClickStream$ = new BehaviorSubject('');
|
|
37120
|
-
this.value = [];
|
|
37121
|
-
this.activeIds = [];
|
|
37122
|
-
this.checkedIds = [];
|
|
37123
|
-
this.subscriptions = [];
|
|
37124
|
-
this.search$ = new Subject();
|
|
37125
|
-
this.searchPlaceholder = "Tìm kiếm...";
|
|
37126
|
-
this.checkInheritance = true; // default value is true
|
|
37127
|
-
this.showDissolved = false; // default value is false
|
|
37128
|
-
this.initializing = true;
|
|
37129
|
-
// this.reduced$ = this.coreOrgTreeState.coreOrgTreeReduced$;
|
|
37130
|
-
this.initializing = false;
|
|
37131
|
-
}
|
|
37132
|
-
ngOnChanges(changes) {
|
|
37133
|
-
if (changes['height']) {
|
|
37134
|
-
this.resizeHeight();
|
|
37135
|
-
}
|
|
37136
|
-
}
|
|
37137
|
-
ngOnInit() {
|
|
37138
|
-
super.register();
|
|
37139
|
-
//this.layoutService.leftbarOpen$.next(false);
|
|
37140
|
-
this.instanceNumber = new Date().getTime();
|
|
37141
|
-
const newInstance = {
|
|
37142
|
-
instanceNumber: this.instanceNumber,
|
|
37143
|
-
selectedKey$: new BehaviorSubject(undefined),
|
|
37144
|
-
activeKeys$: new BehaviorSubject([]),
|
|
37145
|
-
checkedKeys$: new BehaviorSubject([]),
|
|
37146
|
-
expandedKeys$: new BehaviorSubject([]),
|
|
37147
|
-
checkInheritance$: new BehaviorSubject(true)
|
|
37148
|
-
};
|
|
37149
|
-
this.organizationService.instances.push(newInstance);
|
|
37150
|
-
// Check xem chiều cao height có được truyền vào hay không
|
|
37151
|
-
if (this.height === undefined) {
|
|
37152
|
-
if (isDevMode()) {
|
|
37153
|
-
//this.alertService.warn("CoreOrgTree không nhận được chiều cao (height) truyền vào từ lớp ngoài. Chiều cao mặc định sẽ được tính toán dựa vào bố cục chính.", alertOptions);
|
|
37154
|
-
}
|
|
37155
|
-
this.subscriptions.push(this.layoutService.contentContainerHeight$.subscribe(x => {
|
|
37156
|
-
// basicSpacing là paddingBottom của lớp content-container
|
|
37157
|
-
this.height = x - this.layoutService.corePageHeaderHeight - this.layoutService.basicSpacing;
|
|
37158
|
-
}));
|
|
37159
|
-
}
|
|
37160
|
-
this.subscriptions.push(this.organizationService.linerData$.subscribe((x) => {
|
|
37161
|
-
this.linnerOrgArray = x;
|
|
37162
|
-
}));
|
|
37163
|
-
this.subscriptions.push(this.organizationService.buildTreeFlag$.pipe(skip(1)).subscribe(_ => {
|
|
37164
|
-
this.buildTreeData();
|
|
37165
|
-
}));
|
|
37166
|
-
this.subscriptions.push(this.stateIsolated$.subscribe(x => {
|
|
37167
|
-
if (x) {
|
|
37168
|
-
if (!!this.statusSubscription) {
|
|
37169
|
-
this.statusSubscription.unsubscribe();
|
|
37170
|
-
}
|
|
37171
|
-
}
|
|
37172
|
-
else {
|
|
37173
|
-
if (!this.statusSubscription) {
|
|
37174
|
-
this.statusSubscription = this.organizationService.status$.subscribe((x) => {
|
|
37175
|
-
console.log("this.organizationService.status$ changes", x);
|
|
37176
|
-
const newActiveIds = [];
|
|
37177
|
-
x.activeKeys.map((k) => {
|
|
37178
|
-
newActiveIds.push(Number(k));
|
|
37179
|
-
});
|
|
37180
|
-
this.activeIds = newActiveIds;
|
|
37181
|
-
if (this.accessorMode !== EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
37182
|
-
this.value = this.activeIds;
|
|
37183
|
-
this.onChange(this.activeIds);
|
|
37184
|
-
}
|
|
37185
|
-
this.selectedKey = x.selectedKey;
|
|
37186
|
-
});
|
|
37187
|
-
}
|
|
37188
|
-
}
|
|
37189
|
-
}));
|
|
37190
|
-
this.subscriptions.push(this.coreOrgTreeService.showSearch$.subscribe(x => this.showSearch = x));
|
|
37191
|
-
this.subscriptions.push(this.hiddenToolClickStream$.pipe(buffer(this.hiddenToolClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
37192
|
-
.subscribe(_ => {
|
|
37193
|
-
this.coreOrgTreeService.showSearch$.next(!this.coreOrgTreeService.showSearch$.value);
|
|
37194
|
-
}));
|
|
37195
|
-
this.subscriptions.push(this.search$
|
|
37196
|
-
.pipe(filter((x) => x !== null), debounceTime(500), distinctUntilChanged(), switchMap((text) => {
|
|
37197
|
-
console.log('switchMap works');
|
|
37198
|
-
this.loading = true;
|
|
37199
|
-
// AUG 2024 NEW : MUST BE TESTED
|
|
37200
|
-
if (this.searchMode === EnumCoreOrgTreeaSearchMode.HIGHLIGHT) {
|
|
37201
|
-
return this.recursiveService.findItem(text, this.data);
|
|
37202
|
-
}
|
|
37203
|
-
else {
|
|
37204
|
-
return of(this.recursiveService.reducingFilter(this.scrollContainer, text));
|
|
37205
|
-
}
|
|
37206
|
-
}))
|
|
37207
|
-
.subscribe((x) => {
|
|
37208
|
-
this.loading = false;
|
|
37209
|
-
// if (this.searchMode === EnumCoreOrgTreeaSearchMode.REDUCE) {
|
|
37210
|
-
// this.dataFiltered = x as IOrgTreeItem[];
|
|
37211
|
-
// }
|
|
37212
|
-
}));
|
|
37213
|
-
this.subscriptions.push(this.organizationService.status$
|
|
37214
|
-
.pipe(filter((value) => !!!this.initializing && !!value))
|
|
37215
|
-
.subscribe((x) => {
|
|
37216
|
-
if (!!localStorage) {
|
|
37217
|
-
localStorage.setItem('coreOrgTreeStatus', JSON.stringify(x));
|
|
37218
|
-
}
|
|
37219
|
-
}));
|
|
37220
|
-
this.subscriptions.push(this.mls.lang$.subscribe((x) => (this.lang = x)));
|
|
37221
|
-
}
|
|
37222
|
-
resizeHeight() {
|
|
37223
|
-
// height is not given and the tree resize as standard
|
|
37224
|
-
if (!!!this.height) {
|
|
37225
|
-
const sizeHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37226
|
-
.getPropertyValue('--size-header-height')
|
|
37227
|
-
.replace('px', ''));
|
|
37228
|
-
const sizeCorePageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37229
|
-
.getPropertyValue('--size-core-page-header-height')
|
|
37230
|
-
.replace('px', ''));
|
|
37231
|
-
const containerHeight = window.innerHeight - sizeHeaderHeight - sizeCorePageHeaderHeight;
|
|
37232
|
-
const pageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
37233
|
-
.getPropertyValue('--size-core-page-header-height')
|
|
37234
|
-
.replace('px', ''));
|
|
37235
|
-
const paginationHeight = Number(getComputedStyle(document.documentElement)
|
|
37236
|
-
.getPropertyValue('--size-core-pagination-height')
|
|
37237
|
-
.replace('px', ''));
|
|
37238
|
-
const sizeMarginCorePaginationFull = Number(getComputedStyle(document.documentElement)
|
|
37239
|
-
.getPropertyValue('--size-margin-core-pagination')
|
|
37240
|
-
.replace('px', ''));
|
|
37241
|
-
const height = containerHeight - pageHeaderHeight - paginationHeight + sizeMarginCorePaginationFull;
|
|
37242
|
-
console.log(height);
|
|
37243
|
-
this.container?.nativeElement.style.setProperty('--height', height + 'px');
|
|
37244
|
-
}
|
|
37245
|
-
else {
|
|
37246
|
-
this.container?.nativeElement.style.setProperty('--height', this.height + 'px');
|
|
38495
|
+
class CoreLazyMountComponent {
|
|
38496
|
+
constructor() {
|
|
38497
|
+
this.vcRef = inject(ViewContainerRef);
|
|
38498
|
+
}
|
|
38499
|
+
set props(value) {
|
|
38500
|
+
this._props = value;
|
|
38501
|
+
this.assignInputs();
|
|
38502
|
+
}
|
|
38503
|
+
async ngOnInit() {
|
|
38504
|
+
if (this.loadComponent) {
|
|
38505
|
+
const componentType = await this.loadComponent();
|
|
38506
|
+
this.componentRef = this.vcRef.createComponent(componentType);
|
|
38507
|
+
this.assignInputs();
|
|
37247
38508
|
}
|
|
37248
38509
|
}
|
|
37249
|
-
|
|
37250
|
-
|
|
37251
|
-
this.
|
|
37252
|
-
|
|
37253
|
-
|
|
37254
|
-
console.log("new Data coming", this.data, new Date().getTime());
|
|
37255
|
-
if (!!this.data) {
|
|
37256
|
-
if (!!this.data.length)
|
|
37257
|
-
this.data[0].tree$Expanded = true;
|
|
37258
|
-
}
|
|
37259
|
-
}));
|
|
37260
|
-
this.subscriptions.push(this.coreOrgTreeService.arrowFontSize$.subscribe(x => {
|
|
37261
|
-
this.container?.nativeElement.style.setProperty('--arrow-font-size', x + 'px');
|
|
37262
|
-
}));
|
|
37263
|
-
this.subscriptions.push(this.coreOrgTreeService.titleWrapperMaxWidth$.pipe(filter(x => !!x)).subscribe(x => {
|
|
37264
|
-
this.container?.nativeElement.style.setProperty('--title-wrapper-max-width', x + 'px');
|
|
37265
|
-
}));
|
|
37266
|
-
this.subscriptions.push(this.organizationService.status$.subscribe(x => {
|
|
37267
|
-
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE && !!x.activeKeys) {
|
|
37268
|
-
this.onChange(x.activeKeys.map(i => Number(i)));
|
|
37269
|
-
}
|
|
37270
|
-
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE) {
|
|
37271
|
-
// tạm thời bỏ qua
|
|
37272
|
-
}
|
|
37273
|
-
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED && !!x.checkedKeys) {
|
|
37274
|
-
this.onChange(x.checkedKeys.map(i => Number(i)));
|
|
37275
|
-
}
|
|
37276
|
-
}));
|
|
37277
|
-
});
|
|
38510
|
+
assignInputs() {
|
|
38511
|
+
if (this.componentRef && this._props) {
|
|
38512
|
+
Object.assign(this.componentRef.instance, this._props);
|
|
38513
|
+
this.componentRef.changeDetectorRef.markForCheck();
|
|
38514
|
+
}
|
|
37278
38515
|
}
|
|
37279
|
-
|
|
37280
|
-
|
|
37281
|
-
|
|
38516
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38517
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.5", type: CoreLazyMountComponent, isStandalone: true, selector: "core-lazy-mount", inputs: { loadComponent: "loadComponent", props: "props" }, ngImport: i0, template: "", styles: [""] }); }
|
|
38518
|
+
}
|
|
38519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, decorators: [{
|
|
38520
|
+
type: Component,
|
|
38521
|
+
args: [{ selector: 'core-lazy-mount', imports: [], template: "" }]
|
|
38522
|
+
}], propDecorators: { loadComponent: [{
|
|
38523
|
+
type: Input
|
|
38524
|
+
}], props: [{
|
|
38525
|
+
type: Input
|
|
38526
|
+
}] } });
|
|
38527
|
+
|
|
38528
|
+
class ModuleItemComponent extends BaseComponent {
|
|
38529
|
+
constructor(mls, navigatorService, cdr, menuService) {
|
|
38530
|
+
super(mls);
|
|
38531
|
+
this.mls = mls;
|
|
38532
|
+
this.navigatorService = navigatorService;
|
|
38533
|
+
this.cdr = cdr;
|
|
38534
|
+
this.menuService = menuService;
|
|
38535
|
+
this.$item = input.required();
|
|
38536
|
+
this.$itemPadding = input(5);
|
|
38537
|
+
this.$width = input.required();
|
|
38538
|
+
this.$height = input.required();
|
|
38539
|
+
this.$iconTextVerticalMargin = input(25);
|
|
38540
|
+
this.$active = signal(false);
|
|
38541
|
+
this.iconClickStream$ = new BehaviorSubject('');
|
|
37282
38542
|
}
|
|
37283
|
-
|
|
37284
|
-
|
|
37285
|
-
|
|
37286
|
-
|
|
37287
|
-
|
|
38543
|
+
ngOnInit() {
|
|
38544
|
+
this.subscriptions.push(this.mls.lang$.subscribe(x => {
|
|
38545
|
+
this.lang = x;
|
|
38546
|
+
this.cdr.markForCheck();
|
|
38547
|
+
}));
|
|
38548
|
+
if (!!localStorage) {
|
|
38549
|
+
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
38550
|
+
const active = activeRootMenuItemId === this.$item()?.id;
|
|
38551
|
+
this.$active.set(active);
|
|
37288
38552
|
}
|
|
37289
|
-
this.linnerOrgArray = cloneCopy;
|
|
37290
|
-
setTimeout(() => this.buildTreeData());
|
|
37291
38553
|
}
|
|
37292
|
-
|
|
37293
|
-
|
|
37294
|
-
|
|
37295
|
-
|
|
37296
|
-
// // Create a new
|
|
37297
|
-
// console.log("🟢🟢 Worker works");
|
|
37298
|
-
// this.worker = new Worker(liner_to_nested_array_script);
|
|
37299
|
-
// this.worker.addEventListener('message', ({ data }) => {
|
|
37300
|
-
// this.data = data.list;
|
|
37301
|
-
// //this.dataFiltered = JSON.parse(JSON.stringify(data.list));
|
|
37302
|
-
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
37303
|
-
// this.loading = false;
|
|
37304
|
-
// });
|
|
37305
|
-
// this.worker.postMessage({
|
|
37306
|
-
// list: cloneCopy,
|
|
37307
|
-
// keyField: 'id',
|
|
37308
|
-
// titleField: 'name',
|
|
37309
|
-
// parentField: 'parentId',
|
|
37310
|
-
// activeField: 'active',
|
|
37311
|
-
// //inheritantActiveField: 'inheritantActive',
|
|
37312
|
-
// checkedField: 'checked',
|
|
37313
|
-
// expandedField: 'expand',
|
|
37314
|
-
// });
|
|
37315
|
-
// } else {
|
|
37316
|
-
// // Web workers are not supported in this environment.
|
|
37317
|
-
// // You should add a fallback so that your program still executes correctly.
|
|
37318
|
-
// const status = this.organizationService.status$.value;
|
|
37319
|
-
// this.subscriptions.push(
|
|
37320
|
-
// this.recursiveService
|
|
37321
|
-
// .linerArrayToNestedArray(
|
|
37322
|
-
// cloneCopy,
|
|
37323
|
-
// 'id',
|
|
37324
|
-
// 'name',
|
|
37325
|
-
// 'parentId',
|
|
37326
|
-
// 'active',
|
|
37327
|
-
// 'checked',
|
|
37328
|
-
// 'expand',
|
|
37329
|
-
// //status
|
|
37330
|
-
// )
|
|
37331
|
-
// .subscribe((obj) => {
|
|
37332
|
-
// this.data = obj.list;
|
|
37333
|
-
// //this.dataFiltered = JSON.parse(JSON.stringify(obj.list));
|
|
37334
|
-
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
37335
|
-
// this.loading = false;
|
|
37336
|
-
// })
|
|
37337
|
-
// );
|
|
37338
|
-
// }
|
|
37339
|
-
// }
|
|
37340
|
-
buildTreeData() {
|
|
37341
|
-
this.loading = true;
|
|
37342
|
-
const cloneCopy = JSON.parse(JSON.stringify(this.linnerOrgArray));
|
|
37343
|
-
// ✅ ADD THIS FILTER
|
|
37344
|
-
const filteredList = !this.showDissolved
|
|
37345
|
-
? cloneCopy.filter(x => x.active === true)
|
|
37346
|
-
: cloneCopy;
|
|
37347
|
-
if (typeof Worker !== 'undefined') {
|
|
37348
|
-
this.worker = new Worker(liner_to_nested_array_script);
|
|
37349
|
-
this.worker.addEventListener('message', ({ data }) => {
|
|
37350
|
-
this.data = data.list;
|
|
37351
|
-
if (!!this.data?.length)
|
|
37352
|
-
this.data[0].tree$Expanded = true;
|
|
37353
|
-
this.loading = false;
|
|
37354
|
-
});
|
|
37355
|
-
// ✅ USE filteredList INSTEAD OF cloneCopy
|
|
37356
|
-
this.worker.postMessage({
|
|
37357
|
-
list: filteredList,
|
|
37358
|
-
keyField: 'id',
|
|
37359
|
-
titleField: 'name',
|
|
37360
|
-
parentField: 'parentId',
|
|
37361
|
-
activeField: 'active',
|
|
37362
|
-
checkedField: 'checked',
|
|
37363
|
-
expandedField: 'expand',
|
|
37364
|
-
});
|
|
38554
|
+
onClick(e, item) {
|
|
38555
|
+
this.iconClickStream$.next(crypto.randomUUID());
|
|
38556
|
+
if (!!item) {
|
|
38557
|
+
this.navigatorService.clickedItem$.next(item);
|
|
37365
38558
|
}
|
|
37366
|
-
|
|
37367
|
-
|
|
37368
|
-
|
|
37369
|
-
|
|
37370
|
-
|
|
37371
|
-
this.data = obj.list;
|
|
37372
|
-
if (!!this.data?.length)
|
|
37373
|
-
this.data[0].tree$Expanded = true;
|
|
37374
|
-
this.loading = false;
|
|
37375
|
-
}));
|
|
38559
|
+
if (localStorage.getItem('moduleDesignMode') === 'on')
|
|
38560
|
+
return;
|
|
38561
|
+
this.navigatorService.activeRootMenuItemId$.next(item?.id);
|
|
38562
|
+
if (!!localStorage) {
|
|
38563
|
+
localStorage.setItem('activeRootMenuItemId', (item?.id || 0).toString());
|
|
37376
38564
|
}
|
|
38565
|
+
this.menuService.isOpen$.next(true); // trigger the LeftBar to be opened at the first time
|
|
37377
38566
|
}
|
|
37378
|
-
|
|
37379
|
-
|
|
37380
|
-
|
|
37381
|
-
|
|
37382
|
-
|
|
37383
|
-
|
|
37384
|
-
|
|
37385
|
-
|
|
37386
|
-
|
|
37387
|
-
}
|
|
37388
|
-
newExpandedIds?.sort();
|
|
37389
|
-
const newExpandedKeys = [];
|
|
37390
|
-
newExpandedIds.map((x) => newExpandedKeys.push(x.toString()));
|
|
37391
|
-
this.organizationService.status$.next({
|
|
37392
|
-
...this.organizationService.status$.value,
|
|
37393
|
-
expandedKeys: newExpandedKeys,
|
|
37394
|
-
});
|
|
38567
|
+
ngAfterViewInit() {
|
|
38568
|
+
this.subscriptions.push(this.navigatorService.activeRootMenuItemId$.subscribe(x => {
|
|
38569
|
+
const active = x === this.$item()?.id;
|
|
38570
|
+
this.$active.set(active);
|
|
38571
|
+
}));
|
|
38572
|
+
this.subscriptions.push(this.iconClickStream$.pipe(buffer(this.iconClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
38573
|
+
.subscribe(_ => {
|
|
38574
|
+
this.navigatorService.showEditSvg$.next(true);
|
|
38575
|
+
}));
|
|
37395
38576
|
}
|
|
37396
|
-
|
|
37397
|
-
|
|
37398
|
-
|
|
37399
|
-
|
|
37400
|
-
|
|
37401
|
-
|
|
37402
|
-
|
|
37403
|
-
|
|
37404
|
-
|
|
37405
|
-
|
|
37406
|
-
|
|
37407
|
-
|
|
37408
|
-
|
|
37409
|
-
|
|
37410
|
-
|
|
37411
|
-
|
|
37412
|
-
|
|
37413
|
-
|
|
37414
|
-
|
|
37415
|
-
|
|
37416
|
-
|
|
37417
|
-
|
|
37418
|
-
|
|
37419
|
-
|
|
37420
|
-
|
|
38577
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ModuleItemComponent, deps: [{ token: MultiLanguageService }, { token: NavigatorService }, { token: i0.ChangeDetectorRef }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38578
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: ModuleItemComponent, isStandalone: true, selector: "app-module-item", inputs: { $item: { classPropertyName: "$item", publicName: "$item", isSignal: true, isRequired: true, transformFunction: null }, $itemPadding: { classPropertyName: "$itemPadding", publicName: "$itemPadding", isSignal: true, isRequired: false, transformFunction: null }, $width: { classPropertyName: "$width", publicName: "$width", isSignal: true, isRequired: true, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "$height", isSignal: true, isRequired: true, transformFunction: null }, $iconTextVerticalMargin: { classPropertyName: "$iconTextVerticalMargin", publicName: "$iconTextVerticalMargin", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"menu-item-wrapper\" \r\n [class.active] = \"$active()\"\r\n (click)=\"onClick($event, $item())\" [ngStyle]=\"{\r\n width: $width() + 'px',\r\n height: $height() + 'px',\r\n padding: $itemPadding() + 'px',\r\n visibility: !!$item() ? 'visible' : 'hidden'\r\n}\">\r\n @if (!!$item()) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n @if ($item()!.iconSvg) {\r\n <div class=\"d-block\">\r\n <i class=\"module-icon\">\r\n <span [innerHtml]=\"$item()!.iconSvg! | stringHtml\"></span>\r\n </i>\r\n </div>\r\n } @else if ($item()!.iconClass) {\r\n <div>\r\n <i [class]=\"$item()!.iconClass + ' module-icon'\"></i>\r\n </div>\r\n }\r\n <div [ngStyle]=\"{\r\n height: $iconTextVerticalMargin() + 'px'\r\n }\"></div>\r\n <div class=\"module-code\" [appTooltip]=\"$item()!.code! | translate: lang\" [ngStyle]=\"{\r\n width: $width() - $itemPadding() * 2 + 'px'\r\n }\">{{ $item()!.code! | translate: lang}}</div>\r\n </div>\r\n }\r\n</div>", styles: [".menu-item-wrapper{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-user-select:none;user-select:none}.menu-item-wrapper:not(.active){cursor:pointer}.menu-item-wrapper:not(.active):hover{background-color:var(--color-bg-main)}.menu-item-wrapper.active{color:var(--color-basic-orange)}.module-code{font-size:var(--typo-basic-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }, { kind: "pipe", type: StringHtmlPipe, name: "stringHtml" }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38579
|
+
}
|
|
38580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ModuleItemComponent, decorators: [{
|
|
38581
|
+
type: Component,
|
|
38582
|
+
args: [{ selector: 'app-module-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
38583
|
+
NgStyle,
|
|
38584
|
+
TooltipDirective,
|
|
38585
|
+
StringHtmlPipe,
|
|
38586
|
+
TranslatePipe,
|
|
38587
|
+
], template: "<div class=\"menu-item-wrapper\" \r\n [class.active] = \"$active()\"\r\n (click)=\"onClick($event, $item())\" [ngStyle]=\"{\r\n width: $width() + 'px',\r\n height: $height() + 'px',\r\n padding: $itemPadding() + 'px',\r\n visibility: !!$item() ? 'visible' : 'hidden'\r\n}\">\r\n @if (!!$item()) {\r\n <div class=\"d-flex d-flex-v d-flex-center\">\r\n @if ($item()!.iconSvg) {\r\n <div class=\"d-block\">\r\n <i class=\"module-icon\">\r\n <span [innerHtml]=\"$item()!.iconSvg! | stringHtml\"></span>\r\n </i>\r\n </div>\r\n } @else if ($item()!.iconClass) {\r\n <div>\r\n <i [class]=\"$item()!.iconClass + ' module-icon'\"></i>\r\n </div>\r\n }\r\n <div [ngStyle]=\"{\r\n height: $iconTextVerticalMargin() + 'px'\r\n }\"></div>\r\n <div class=\"module-code\" [appTooltip]=\"$item()!.code! | translate: lang\" [ngStyle]=\"{\r\n width: $width() - $itemPadding() * 2 + 'px'\r\n }\">{{ $item()!.code! | translate: lang}}</div>\r\n </div>\r\n }\r\n</div>", styles: [".menu-item-wrapper{display:flex;align-items:center;justify-content:center;box-sizing:border-box;-webkit-user-select:none;user-select:none}.menu-item-wrapper:not(.active){cursor:pointer}.menu-item-wrapper:not(.active):hover{background-color:var(--color-bg-main)}.menu-item-wrapper.active{color:var(--color-basic-orange)}.module-code{font-size:var(--typo-basic-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center}\n"] }]
|
|
38588
|
+
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: NavigatorService }, { type: i0.ChangeDetectorRef }, { type: MenuService }] });
|
|
38589
|
+
|
|
38590
|
+
class CoreRootMenuItemPickerComponent extends BaseComponent {
|
|
38591
|
+
constructor(mls, ahs, renderer, navigatorService, layoutService, domService, menuService, sysMenuService, authService, appConfigService) {
|
|
38592
|
+
super(mls);
|
|
38593
|
+
this.mls = mls;
|
|
38594
|
+
this.ahs = ahs;
|
|
38595
|
+
this.renderer = renderer;
|
|
38596
|
+
this.navigatorService = navigatorService;
|
|
38597
|
+
this.layoutService = layoutService;
|
|
38598
|
+
this.domService = domService;
|
|
38599
|
+
this.menuService = menuService;
|
|
38600
|
+
this.sysMenuService = sysMenuService;
|
|
38601
|
+
this.authService = authService;
|
|
38602
|
+
this.appConfigService = appConfigService;
|
|
38603
|
+
this.logoPath = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE1IiBoZWlnaHQ9IjI5IiB2aWV3Qm94PSIwIDAgMTE1IDI5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDI4LjU1MjhWOC41NzY4NkgyLjU2MzI5VjE2LjgxMzRIMTIuNTIzNVY4LjU3Njg2SDE1LjA4NjhWMjguNTMzOUgxMi41MjM1VjE5LjE0MjNIMi41ODE2VjI4LjUzMzlIMFYyOC41NTI4Wk0xOS4wNzgyIDExLjM2MDJWOC41NzY4NkgyMS40NTg0VjExLjM2MDJIMTkuMDc4MlpNMTkuMDc4MiAyOC41NTI4VjE0LjA4NjhIMjEuNDU4NFYyOC41NTI4SDE5LjA3ODJaTTI0LjIyMzEgMjIuMDc3MkwyOC4wMzE1IDIxLjY3OTZDMjguMjUxMiAyMi45ODYxIDI4LjcyNzIgMjMuOTUxNyAyOS40MjMgMjQuNTc2NkMzMC4xMTg3IDI1LjIwMTQgMzEuMDcwOCAyNS41MDQ0IDMyLjI0MjYgMjUuNTA0NEMzMy40ODc2IDI1LjUwNDQgMzQuNDIxNCAyNS4yMjAzIDM1LjA2MjIgMjQuNjcxMkMzNS43MDMgMjQuMTIyMSAzNi4wMTQzIDIzLjQ5NzMgMzYuMDE0MyAyMi43NTg5QzM2LjAxNDMgMjIuMjg1NSAzNS44ODYxIDIxLjg2ODkgMzUuNjExNSAyMS41NDdDMzUuMzM2OCAyMS4yMjUyIDM0Ljg3OTEgMjAuOTIyMiAzNC4yMiAyMC42NzYxQzMzLjc2MjIgMjAuNTI0NiAzMi43MzY5IDIwLjIyMTYgMzEuMTI1NyAxOS44MDUxQzI5LjAzODUgMTkuMjc0OSAyNy41NzM3IDE4LjYxMjIgMjYuNzQ5OCAxNy44MTY5QzI1LjU1OTcgMTYuNzE4NyAyNC45OTIxIDE1LjM3NDQgMjQuOTkyMSAxMy44MDI4QzI0Ljk5MjEgMTIuNzgwMyAyNS4yNjY4IDExLjgxNDcgMjUuODE2IDEwLjk0MzdDMjYuMzgzNiAxMC4wNTM4IDI3LjE3MDkgOS4zNzIxMSAyOC4yMTQ1IDguOTE3NjhDMjkuMjc2NSA4LjQ0NDMyIDMwLjUyMTUgOC4yMTcxIDMyLjAwNDYgOC4yMTcxQzM0LjQyMTQgOC4yMTcxIDM2LjIzNCA4Ljc2NjIgMzcuNDYwNyA5Ljg2NDQxQzM4LjY4NzQgMTAuOTgxNSAzOS4zMDk5IDEyLjQ1ODQgMzkuMzgzMiAxNC4zMTRMMzUuNDgzMyAxNC40NjU1QzM1LjMxODUgMTMuNDI0MSAzNC45NzA3IDEyLjY4NTcgMzQuNDIxNCAxMi4yNTAyQzMzLjg3MjEgMTEuODE0NyAzMy4wNjY1IDExLjU2ODUgMzEuOTY3OSAxMS41Njg1QzMwLjg1MTEgMTEuNTY4NSAyOS45NzIyIDExLjgxNDcgMjkuMzMxNCAxMi4yODhDMjguOTI4NiAxMi42MDk5IDI4LjcwODkgMTMuMDI2NSAyOC43MDg5IDEzLjUzNzdDMjguNzA4OSAxNC4wMTExIDI4LjkxMDMgMTQuNDI3NiAyOS4yOTQ4IDE0Ljc0OTVDMjkuNzcwOCAxNS4xODUgMzAuOTc5MiAxNS42Mzk1IDMyLjg2NTEgMTYuMTEyOEMzNC43NTA5IDE2LjU2NzIgMzYuMTYwOCAxNy4wNDA2IDM3LjA1NzkgMTcuNTUxOEMzNy45NTUxIDE4LjA0NDEgMzguNjY5MSAxOC43MjU4IDM5LjE4MTggMTkuNTc3OEMzOS42OTQ0IDIwLjQ0ODggMzkuOTUwOCAyMS40OTAyIDM5Ljk1MDggMjIuNzU4OUMzOS45NTA4IDIzLjg5NDkgMzkuNjM5NSAyNC45NzQyIDM5LjAxNyAyNS45Nzc3QzM4LjQxMjggMjYuOTgxMyAzNy41MzQgMjcuNzE5NyAzNi40MTcxIDI4LjE5MzFDMzUuMzAwMiAyOC42ODU0IDMzLjkwODcgMjguOTEyNiAzMi4yMjQzIDI4LjkxMjZDMjkuNzg5MSAyOC45MTI2IDI3LjkwMzMgMjguMzI1NiAyNi42MDMzIDI3LjE3MDZDMjUuMjY2OCAyNS45OTY3IDI0LjQ3OTUgMjQuMjkyNiAyNC4yMjMxIDIyLjA3NzJaTTQ5LjU4MTQgMTQuMDY3OVYxNy4wOTc0SDQ3LjA1NDhWMjIuOTY3MUM0Ny4wNTQ4IDI0LjE0MTEgNDcuMDczMSAyNC44NDE3IDQ3LjEwOTcgMjUuMDQ5OUM0Ny4xNjQ2IDI1LjIzOTMgNDcuMjc0NSAyNS40MDk3IDQ3LjQ1NzYgMjUuNTQyMkM0Ny42MjIzIDI1LjY3NDggNDcuODIzNyAyNS43MzE2IDQ4LjA4MDEgMjUuNzMxNkM0OC40MjggMjUuNzMxNiA0OC45MjIzIDI1LjU5OSA0OS41NjMxIDI1LjM3MThMNDkuODc0NCAyOC4zNDQ2QzQ5LjAxMzkgMjguNzIzMiA0OC4wNjE4IDI4LjkxMjYgNDYuOTYzMiAyOC45MTI2QzQ2LjMwNDEgMjguOTEyNiA0NS42OTk5IDI4Ljc5OSA0NS4xNjg5IDI4LjU3MThDNDQuNjM3OSAyOC4zNDQ2IDQ0LjIzNTEgMjguMDQxNiA0My45Nzg4IDI3LjY2MjlDNDMuNzQwOCAyNy4zMDMyIDQzLjU1NzcgMjYuNzkxOSA0My40NjYxIDI2LjE2NzFDNDMuMzkyOSAyNS43MTI2IDQzLjM1NjMgMjQuODIyNyA0My4zNTYzIDIzLjQ1OTRWMTcuMTE2NEg0MS42NzE4VjE0LjA4NjhINDMuMzU2M1YxMS4yMDg4TDQ3LjA1NDggOC45NTU1NVYxNC4wODY4SDQ5LjU4MTRWMTQuMDY3OVpNNTQuOTI3NyAxOC41MzY0TDUxLjU3NzEgMTcuOTMwNUM1MS45NjE2IDE2LjUxMDQgNTIuNjAyNSAxNS40NjkgNTMuNTE3OSAxNC43ODc0QzU0LjQ1MTcgMTQuMTI0NyA1NS44MjQ5IDEzLjc4MzkgNTcuNjM3NSAxMy43ODM5QzU5LjI4NTMgMTMuNzgzOSA2MC41MTIxIDEzLjk3MzIgNjEuMzE3NyAxNC4zODk4QzYyLjEyMzMgMTQuNzg3NCA2Mi42OTA5IDE1LjI5ODYgNjMuMDIwNCAxNS45MjM1QzYzLjM1IDE2LjU0ODMgNjMuNTE0OCAxNy42ODQ0IDYzLjUxNDggMTkuMzMxN0w2My40NTk4IDIzLjgwMDNDNjMuNDU5OCAyNS4wNjg5IDYzLjUxNDggMjUuOTk2NyA2My42NDI5IDI2LjYwMjZDNjMuNzUyOCAyNy4yMDg1IDYzLjk5MDggMjcuODcxMiA2NC4zMDIxIDI4LjU1MjhINjAuNjQwMkM2MC41MzA0IDI4LjMwNjcgNjAuNDIwNSAyNy45MjggNjAuMjkyMyAyNy40MzU3QzYwLjIzNzQgMjcuMjA4NSA2MC4xODI1IDI3LjA1NyA2MC4xNDU5IDI2Ljk4MTNDNTkuNTIzNCAyNy42MjUgNTguODQ1OSAyOC4wOTg0IDU4LjEzMTkgMjguNDIwM0M1Ny40MTc4IDI4Ljc0MjIgNTYuNjQ4OCAyOC44OTM3IDU1Ljg0MzIgMjguODkzN0M1NC40MTUxIDI4Ljg5MzcgNTMuMjc5OSAyOC40OTYgNTIuNDU2IDI3LjY4MThDNTEuNjMyMSAyNi44ODY2IDUxLjIxMSAyNS44NjQxIDUxLjIxMSAyNC42MTQ0QzUxLjIxMSAyMy44MDAzIDUxLjM5NDEgMjMuMDgwNyA1MS43Nzg1IDIyLjQzN0M1Mi4xNjMgMjEuODEyMSA1Mi42NzU3IDIxLjMwMDkgNTMuMzcxNCAyMC45NjAxQzU0LjA0ODkgMjAuNjM4MiA1NS4wMTkzIDIwLjMzNTIgNTYuMzAwOSAyMC4wNzAxQzU4LjAyMiAxOS43NDgzIDU5LjIzMDQgMTkuNDI2NCA1OS44ODk1IDE5LjE0MjNWMTguNzYzN0M1OS44ODk1IDE4LjAwNjMgNTkuNzA2NSAxNy40OTUgNTkuMzc2OSAxNy4xNzMyQzU5LjAyOSAxNi44NTEzIDU4LjM1MTYgMTYuNjgwOSA1Ny4zODEyIDE2LjY4MDlDNTYuNzIyIDE2LjY4MDkgNTYuMjA5NCAxNi44MzIzIDU1Ljg0MzIgMTcuMDk3NEM1NS40NDA0IDE3LjM4MTQgNTUuMTQ3NCAxNy44NTQ4IDU0LjkyNzcgMTguNTM2NFpNNTkuODg5NSAyMS42NDE3QzU5LjQxMzUgMjEuNzkzMiA1OC42NjI4IDIyLjAwMTUgNTcuNjM3NSAyMi4yMjg3QzU2LjYxMjIgMjIuNDU1OSA1NS45NTMxIDIyLjY4MzEgNTUuNjIzNSAyMi44OTE0QzU1LjE0NzQgMjMuMjUxMiA1NC44OTExIDIzLjY4NjYgNTQuODkxMSAyNC4yMzU3QzU0Ljg5MTEgMjQuNzg0OSA1NS4wNzQyIDI1LjIzOTMgNTUuNDc3IDI1LjYzNjlDNTUuODYxNSAyNi4wMzQ1IDU2LjMzNzUgMjYuMjIzOSA1Ni45NDE3IDI2LjIyMzlDNTcuNjE5MiAyNi4yMjM5IDU4LjI2IDI1Ljk5NjcgNTguODY0MiAyNS41NDIyQzU5LjMwMzYgMjUuMjAxNCA1OS41OTY2IDI0Ljc4NDkgNTkuNzQzMSAyNC4yNzM2QzU5LjgzNDYgMjMuOTUxNyA1OS44ODk1IDIzLjMwOCA1OS44ODk1IDIyLjM5OTFWMjEuNjQxN1pNNjUuNTQ3MSAxNC4wNjc5SDY3LjU5NzdWMTIuOTg4NkM2Ny41OTc3IDExLjc1NzkgNjcuNzI1OSAxMC44Njc5IDY3Ljk4MjIgMTAuMjYyQzY4LjIzODYgOS42NTYxMyA2OC42OTYzIDkuMTYzODMgNjkuMzczNyA4Ljc4NTE0QzcwLjA1MTIgOC40MDY0NSA3MC45MTE3IDguMjE3MSA3MS45MzcgOC4yMTcxQzcyLjk5OSA4LjIxNzEgNzQuMDQyNiA4LjM2ODU4IDc1LjA0OTYgOC43MDk0TDc0LjU3MzYgMTEuMzYwMkM3My45Njk0IDExLjIwODggNzMuMzgzNSAxMS4xMzMgNzIuODUyNSAxMS4xMzNDNzIuMzAzMiAxMS4xMzMgNzEuOTE4NyAxMS4yNjU2IDcxLjY2MjQgMTEuNTMwN0M3MS40MDYxIDExLjc5NTcgNzEuMzE0NSAxMi4yODggNzEuMzE0NSAxMy4wNDU0VjE0LjA2NzlINzQuMDc5MlYxNy4wNzg1SDcxLjMxNDVWMjguNTMzOUg2Ny42MTZWMTcuMDc4NUg2NS41NjU0VjE0LjA2NzlINjUuNTQ3MVpNNzQuNTE4NiAxNC4wNjc5SDc2LjU2OTNWMTIuOTg4NkM3Ni41NjkzIDExLjc1NzkgNzYuNjk3NCAxMC44Njc5IDc2Ljk1MzggMTAuMjYyQzc3LjIxMDEgOS42NTYxMyA3Ny42Njc4IDkuMTYzODMgNzguMzQ1MyA4Ljc4NTE0Qzc5LjAyMjcgOC40MDY0NSA3OS44ODMyIDguMjE3MSA4MC45MDg2IDguMjE3MUM4MS45NzA1IDguMjE3MSA4My4wMTQxIDguMzY4NTggODQuMDIxMSA4LjcwOTRMODMuNTQ1MSAxMS4zNjAyQzgyLjk0MDkgMTEuMjA4OCA4Mi4zNTUgMTEuMTMzIDgxLjgwNTcgMTEuMTMzQzgxLjI1NjQgMTEuMTMzIDgwLjg3MTkgMTEuMjY1NiA4MC42MTU2IDExLjUzMDdDODAuMzk1OSAxMS43OTU3IDgwLjI2NzcgMTIuMjg4IDgwLjI2NzcgMTMuMDQ1NFYxNC4wNjc5SDgzLjAzMjRWMTcuMDc4NUg4MC4yNjc3VjI4LjUzMzlINzYuNTY5M1YxNy4wNzg1SDc0LjUxODZWMTQuMDY3OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTk4LjY0OTggNS4yNDQ3N0M5Ny45NTQgMi43ODMyOCA5NS42NDcxIDIuNDA0NTkgOTMuNzI0NiAzLjc2Nzg4QzkxLjc0NzIgNS4xNjkwMyA5MC40Mjg5IDguMTk4NTcgOTEuMTA2NCAxMC42MjIyQzkxLjgwMjEgMTMuMDgzNyA5NC4xMDkxIDEzLjQ2MjQgOTYuMDMxNiAxMi4xMThDOTguMDA5IDEwLjcxNjkgOTkuMzI3MiA3LjY2ODQgOTguNjQ5OCA1LjI0NDc3WiIgZmlsbD0iI0YzNzU0MCIvPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05MS4xNDI4IDI3LjgxNDlDOTEuOTMwMSAyNy4xMTQzIDkyLjk3MzggMjYuNDUxNiA5My44MTYgMjUuODgzNkw5NS40NjM4IDI0LjgyMzJDOTcuODQ0IDIwLjAzMjggMTAxLjA0OCAxNS41NDUzIDEwNC40MTcgMTEuNDU1NEMxMDcuNDkzIDcuNjg3NDQgMTExLjA4MiAzLjc0OTA1IDExNSAwLjkwODg2TDExNC4zNDEgMEMxMTAuMTQ4IDIuMjkxMDggMTA2LjMwMyA1LjQxNTI5IDEwMi44NDIgOC43NjY3MUM5OS4xOTg5IDEyLjMwNzUgOTUuODQ4MyAxNi4yMjY5IDkzLjE1NjggMjAuNTgxOUw5My4wNDcgMjAuNzMzNEw5Mi4yNzggMTkuMDY3MUM5MS43MTA0IDE3Ljg1NTMgOTAuMTM1OCAxNC42NTU0IDg4LjU0MjkgMTQuNjU1NEM4Ni45NSAxNC42NTU0IDg1LjQzMDMgMTUuODI5MyA4NC4zMTM1IDE2Ljk0NjRDODUuMzAyMiAxNy4zMDYyIDg2LjEyNjEgMTcuOTg3OCA4Ni43ODUyIDE4LjgyMUM4Ny44MTA1IDIwLjA3MDYgODguNjM0NSAyMS43NzQ4IDg5LjI5MzYgMjMuMjcwNkw4OS45MTYxIDI0LjY3MTdDOTAuMzE4OSAyNS42NzUzIDkwLjgxMzMgMjYuNzkyNCA5MS4xNDI4IDI3LjgxNDlaIiBmaWxsPSIjRjM3NTQwIi8+DQo8L3N2Zz4NCg==';
|
|
38604
|
+
this.itemsPerRow = 4;
|
|
38605
|
+
this.iconTextVerticalMargin = 25;
|
|
38606
|
+
this.items = [[]];
|
|
38607
|
+
this.zIndex = 1;
|
|
38608
|
+
this.imageErrorResolverType = EnumImageResolverType.LOGO;
|
|
38609
|
+
this.headerHeight = 0;
|
|
38610
|
+
this.width = 400;
|
|
38611
|
+
this.layoutService.modulePanelWidth$.subscribe(x => this.width = x);
|
|
38612
|
+
}
|
|
38613
|
+
ngOnInit() {
|
|
38614
|
+
this.subscriptions.push(this.mls.lang$.subscribe(x => this.lang = x));
|
|
38615
|
+
this.subscriptions.push(this.authService.data$.subscribe(x => this.isRoot = !!x?.isRoot));
|
|
38616
|
+
this.scrollWidth = this.layoutService.modulePanelWidth$.value - this.layoutService.basicSpacing * 2;
|
|
38617
|
+
this.scrollHeight = window.innerHeight - this.layoutService.headerHeight$.value - this.layoutService.basicSpacing * 2;
|
|
38618
|
+
this.itemWidth = this.scrollWidth / 4;
|
|
38619
|
+
}
|
|
38620
|
+
transformTo2DArray(flatList) {
|
|
38621
|
+
const result = [];
|
|
38622
|
+
for (let i = 0; i < flatList.length; i += this.itemsPerRow) {
|
|
38623
|
+
const row = flatList.slice(i, i + this.itemsPerRow);
|
|
38624
|
+
// If the last row has fewer than itemsPerRow, pad it with undefineds
|
|
38625
|
+
while (row.length < this.itemsPerRow) {
|
|
38626
|
+
row.push(undefined);
|
|
37421
38627
|
}
|
|
37422
|
-
|
|
37423
|
-
this.value = this.checkedIds;
|
|
37424
|
-
this.onChange(this.checkedIds);
|
|
37425
|
-
this.markAsTouched();
|
|
37426
|
-
};
|
|
37427
|
-
/* start: THIS CODE SCOPE calculates toggledIds */
|
|
37428
|
-
if (this.checkInheritance) {
|
|
37429
|
-
// If true, all the nested items will be checked/unchecked
|
|
37430
|
-
this.recursiveService
|
|
37431
|
-
.nestedToggleCheck(e, newValue, this.showDissolved)
|
|
37432
|
-
.then((x) => {
|
|
37433
|
-
let currentCheckedKeys = this.organizationService.status$.value.checkedKeys || [];
|
|
37434
|
-
if (!!newValue) {
|
|
37435
|
-
x.map(item => {
|
|
37436
|
-
if (currentCheckedKeys.filter(i => i === item.toString()).length === 0) {
|
|
37437
|
-
currentCheckedKeys.push(item.toString());
|
|
37438
|
-
}
|
|
37439
|
-
});
|
|
37440
|
-
}
|
|
37441
|
-
else {
|
|
37442
|
-
currentCheckedKeys = currentCheckedKeys.filter(i => !x.includes(Number(i)));
|
|
37443
|
-
}
|
|
37444
|
-
this.organizationService.status$.next({
|
|
37445
|
-
...this.organizationService.status$.value,
|
|
37446
|
-
checkedKeys: currentCheckedKeys //x.map(item => item.toString())
|
|
37447
|
-
});
|
|
37448
|
-
// The ids have been changed
|
|
37449
|
-
toggledIds = x;
|
|
37450
|
-
// Now toggledIds were set. We call the function we declared
|
|
37451
|
-
changeValue();
|
|
37452
|
-
})
|
|
37453
|
-
.catch((x) => {
|
|
37454
|
-
console.error(x);
|
|
37455
|
-
});
|
|
37456
|
-
}
|
|
37457
|
-
else {
|
|
37458
|
-
// Otherwise we simply toggle check for current item only
|
|
37459
|
-
toggledIds = [e.id];
|
|
37460
|
-
// Now toggledIds were set. We call the function we declared
|
|
37461
|
-
changeValue();
|
|
38628
|
+
result.push(row);
|
|
37462
38629
|
}
|
|
37463
|
-
|
|
37464
|
-
// That is. Happy debugging!
|
|
37465
|
-
}
|
|
37466
|
-
onCheckIncludeDissolvedChange(value) {
|
|
37467
|
-
console.log("onCheckIncludeDissolvedChange", value);
|
|
38630
|
+
return result;
|
|
37468
38631
|
}
|
|
37469
|
-
|
|
37470
|
-
|
|
37471
|
-
|
|
37472
|
-
|
|
38632
|
+
ngAfterViewInit() {
|
|
38633
|
+
setTimeout(() => {
|
|
38634
|
+
this.designMode = localStorage.getItem('moduleDesignMode') === 'on';
|
|
38635
|
+
this.zIndex = this.domService.getMaxZIndex() + 1;
|
|
38636
|
+
// this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {
|
|
38637
|
+
// if (!this.designMode) {
|
|
38638
|
+
// if (this.container && !!!this.container.nativeElement.contains(e.target)) {
|
|
38639
|
+
// this.ahs.activeKey$.next(undefined);
|
|
38640
|
+
// }
|
|
38641
|
+
// }
|
|
38642
|
+
// });
|
|
38643
|
+
this.subscriptions.push(this.navigatorService.rootNavigatorItems$.subscribe(x => {
|
|
38644
|
+
// Transform the flat list into a 2D array
|
|
38645
|
+
this.items = this.transformTo2DArray(x);
|
|
38646
|
+
}));
|
|
38647
|
+
this.subscriptions.push(this.layoutService.headerHeight$.subscribe(x => {
|
|
38648
|
+
this.headerHeight = x;
|
|
38649
|
+
}));
|
|
38650
|
+
if (!!localStorage) {
|
|
38651
|
+
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
38652
|
+
this.navigatorService.activeRootMenuItemId$.next(activeRootMenuItemId);
|
|
38653
|
+
}
|
|
38654
|
+
if (window.innerWidth < this.layoutService.modulePanelWidth$.value) {
|
|
38655
|
+
this.layoutService.modulePanelWidth$.next(window.innerWidth);
|
|
38656
|
+
}
|
|
37473
38657
|
});
|
|
37474
38658
|
}
|
|
37475
|
-
|
|
37476
|
-
|
|
37477
|
-
|
|
37478
|
-
|
|
37479
|
-
|
|
37480
|
-
this.itemClick?.emit(e);
|
|
37481
|
-
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED)
|
|
37482
|
-
return;
|
|
37483
|
-
let activeIds = [];
|
|
37484
|
-
this.data.map((item) => (item.active = false));
|
|
37485
|
-
if (this.accessorMode ===
|
|
37486
|
-
EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE ||
|
|
37487
|
-
!!!this.accessorMode) {
|
|
37488
|
-
// If true, all the nested items will be active, the others are inactive
|
|
37489
|
-
this.recursiveService
|
|
37490
|
-
.nestedResetActive(e, true)
|
|
37491
|
-
.then((x) => {
|
|
37492
|
-
activeIds = x;
|
|
37493
|
-
activeIds.sort();
|
|
37494
|
-
const newActiveKeys = [];
|
|
37495
|
-
activeIds.map((x) => newActiveKeys.push(x.toString()));
|
|
37496
|
-
this.organizationService.status$.next({
|
|
37497
|
-
...this.organizationService.status$.value,
|
|
37498
|
-
activeKeys: newActiveKeys,
|
|
37499
|
-
selectedKey: e.id.toString()
|
|
37500
|
-
});
|
|
37501
|
-
this.activeIds = activeIds;
|
|
37502
|
-
console.log(this.activeIds);
|
|
37503
|
-
this.onChange(activeIds);
|
|
37504
|
-
})
|
|
37505
|
-
.catch((x) => {
|
|
37506
|
-
console.error(x);
|
|
37507
|
-
});
|
|
38659
|
+
onDesignModeClick(e) {
|
|
38660
|
+
e.stopPropagation();
|
|
38661
|
+
if (localStorage.getItem('moduleDesignMode') === 'on') {
|
|
38662
|
+
localStorage.setItem('moduleDesignMode', 'off');
|
|
38663
|
+
this.designMode = false;
|
|
37508
38664
|
}
|
|
37509
38665
|
else {
|
|
37510
|
-
|
|
37511
|
-
|
|
37512
|
-
activeIds = [e.id];
|
|
37513
|
-
this.activeIds = activeIds;
|
|
37514
|
-
this.organizationService.status$.next({
|
|
37515
|
-
...this.organizationService.status$.value,
|
|
37516
|
-
activeKeys: [e.id.toString()],
|
|
37517
|
-
selectedKey: e.id.toString(),
|
|
37518
|
-
});
|
|
37519
|
-
this.onChange(activeIds);
|
|
37520
|
-
}
|
|
37521
|
-
const { detail } = event;
|
|
37522
|
-
if (detail === 2) {
|
|
37523
|
-
console.log('This was a dblclick');
|
|
37524
|
-
this.itemDoubleClick.emit(e);
|
|
38666
|
+
localStorage.setItem('moduleDesignMode', 'on');
|
|
38667
|
+
this.designMode = true;
|
|
37525
38668
|
}
|
|
37526
|
-
this.selectedItem = e;
|
|
37527
|
-
}
|
|
37528
|
-
onSearchChange(text) {
|
|
37529
|
-
this.search$.next(text);
|
|
37530
|
-
}
|
|
37531
|
-
onHiddenToolClick(e) {
|
|
37532
|
-
e.stopPropagation();
|
|
37533
|
-
this.hiddenToolClickStream$.next(crypto.randomUUID());
|
|
37534
38669
|
}
|
|
37535
38670
|
ngOnDestroy() {
|
|
37536
|
-
|
|
37537
|
-
|
|
37538
|
-
|
|
37539
|
-
this.subscriptions.map((x) => x?.unsubscribe());
|
|
37540
|
-
if (!!this.instanceNumber) {
|
|
37541
|
-
const tryToFind = this.organizationService.instances.filter((x) => x.instanceNumber === this.instanceNumber);
|
|
37542
|
-
if (!!tryToFind.length) {
|
|
37543
|
-
const newInstances = this.organizationService.instances.filter((x) => x.instanceNumber !== this.instanceNumber);
|
|
37544
|
-
this.organizationService.instances = newInstances;
|
|
37545
|
-
}
|
|
37546
|
-
}
|
|
38671
|
+
this.subscriptions.map(x => x?.unsubscribe());
|
|
38672
|
+
if (this.listenerFn)
|
|
38673
|
+
this.listenerFn();
|
|
37547
38674
|
}
|
|
37548
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type:
|
|
37549
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type:
|
|
37550
|
-
{
|
|
37551
|
-
provide: NG_VALUE_ACCESSOR,
|
|
37552
|
-
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
37553
|
-
multi: true
|
|
37554
|
-
}
|
|
37555
|
-
], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "displayContent", first: true, predicate: ["displayContent"], descendants: true }, { propertyName: "reducedIconWrapper", first: true, predicate: ["reducedIconWrapper"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #container class=\"core-org-tree-container\" [class.full-width]=\"!!fullWidthMode\" *ngIf=\"!!data\" [ngStyle]=\"{\r\n position : 'relative',\r\n width: '100%',\r\n minWidth: '310px',\r\n height: height + 'px'\r\n }\">\r\n <div #displayContent class=\"custom-org-tree\">\r\n @if (showSearch) {\r\n <div class=\"core-org-tree-header d-flex-between\">\r\n <div class=\"m5\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"searchPlaceholder | translate: lang\" [class.full-width]=\"!!fullWidthMode\">\r\n </div>\r\n </div>\r\n }\r\n <ng-container>\r\n\r\n <div #scrollContainer class=\"scroll-container\" [ngStyle]=\"{\r\n height: height - layoutService.coreOrgTreeTopHeight * (showSearch ? 1 : 0) - layoutService.coreOrgTreeBottomHeight + 'px',\r\n overflow: 'scroll'\r\n }\">\r\n <div class=\"hidden-tool\" (click)=\"onHiddenToolClick($event)\"></div>\r\n <core-loading-surface [loading]=\"loading\" [height]=\"scrollContainerHeight\"></core-loading-surface>\r\n <!-- @for (root of dataFiltered; track root) { -->\r\n @for (root of data; track $index) {\r\n @defer(on viewport(scrollContainer)) {\r\n <ul class=\"root\" [class.collapsed]=\"!!!root.tree$Expanded\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root }\"></ng-container>\r\n </ul>\r\n } @placeholder() {\r\n Placeholder...\r\n } @loading() {\r\n Loading...\r\n } @error() {\r\n Error...\r\n }\r\n\r\n }\r\n </div>\r\n <div [ngStyle]=\"{\r\n display: 'block',\r\n position: 'absolute',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px',\r\n height: layoutService.corePaginationHeight + 'px',\r\n paddingLeft: layoutService.basicSpacing + 'px',\r\n paddingRight: layoutService.basicSpacing + 'px',\r\n lineHeight: layoutService.corePaginationHeight + 'px',\r\n overflow: 'hidden'\r\n }\">\r\n <div [ngStyle]=\"{\r\n height: layoutService.corePaginationHeight + 'px',\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between'\r\n }\">\r\n <div>\r\n <core-checkbox [(ngModel)]=\"showDissolved\"\r\n (ngModelChange)=\"onCheckIncludeDissolvedChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS_ABBREVIATED'\"\r\n [tooltip]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS'\" tooltipPosition=\"above\"></core-checkbox>\r\n </div>\r\n @if (accessorMode === 'CHECKED') {\r\n <div class=\"check-inheritance-wrapper\">\r\n @if (showCheckInheritance) {\r\n <core-checkbox [(ngModel)]=\"checkInheritance\"\r\n (ngModelChange)=\"onCheckInheritanceChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.CHECK_INHERITANCE'\"></core-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-id=\"context.id\" let-title=\"context.tree$Title\"\r\n let-highlighted=\"context.tree$Highlighted\" let-hasChildren=\"context.tree$HasChildren\"\r\n let-hasActiveChildren=\"context.tree$HasActiveChildren\" let-children=\"context.tree$Children\"\r\n let-expanded=\"context.tree$Expanded\" let-isActive=\"context.isActive\" let-active=\"context.tree$Active\"\r\n let-checked=\"context.tree$Checked\" let-protected=\"context.protected\">\r\n\r\n @if ((!showDissolved && !!isActive) || (!!showDissolved)) {\r\n <li [class.has-children]=\"!!hasChildren\" [class.collapsed]=\"!!hasChildren && !!!expanded\">\r\n <!-- (click)=\"accessorMode !== 'CHECKED' ? onObjectClick(context, $event) : $event.preventDefault()\" -->\r\n <span (click)=\"onObjectClick(context, $event)\">\r\n @if ((!!showDissolved && !!hasChildren) || (!showDissolved && !!hasActiveChildren)) {\r\n <i class=\"expand-toggler feather-chevron-down\" (click)=\"onExpandTogglerClick(context, $event)\"></i>\r\n }\r\n\r\n @if (accessorMode === 'CHECKED' && !protected) {\r\n <core-checkbox (onClick)=\"onItemCheck(context, $event)\" [inputValue]=\"checked\"\r\n [disabled]=\"disabled\"></core-checkbox>\r\n }\r\n <object [class.active]=\"accessorMode != 'CHECKED' && selectedKey===id.toString()\"\r\n [class.highlighted]=\"highlighted\" [class.dissolved]=\"!isActive\"\r\n [class.protected]=\"protected\" [appTooltip]=\"title\">\r\n {{ title }}\r\n </object>\r\n </span>\r\n @if (!!children.length) {\r\n <ul [class.collapsed]=\" !!!expanded\">\r\n @for (child of children; track $index) {\r\n @if (!!expanded || !!fullRendering) {\r\n\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child }\"></ng-container>\r\n\r\n }\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreCheckboxComponent, selector: "core-checkbox", inputs: ["text", "tooltipPosition", "tooltip", "inputValue", "disabled"], outputs: ["onClick"] }, { kind: "component", type: CoreLoadingSurfaceComponent, selector: "core-loading-surface", inputs: ["loading", "height"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
|
|
38675
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerComponent, deps: [{ token: MultiLanguageService }, { token: ApplicationHelpService }, { token: i0.Renderer2 }, { token: NavigatorService }, { token: LayoutService }, { token: DomService }, { token: MenuService }, { token: SysMenuService }, { token: AuthService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38676
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CoreRootMenuItemPickerComponent, isStandalone: true, selector: "core-root-menu-item-picker", inputs: { logoPath: "logoPath", itemsPerRow: "itemsPerRow", iconTextVerticalMargin: "iconTextVerticalMargin" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #container class=\"core-root-menu-item-picker-container\" [ngStyle]=\"{\r\n zIndex: zIndex,\r\n}\">\r\n <div class=\"mudule-picker-header d-flex d-flex-between\" [ngStyle]=\"{\r\n height: 59 + 'px'\r\n }\">\r\n <div class=\"HEADER_LOGO\">\r\n <div class=\"logo-wrapper d-flex\">\r\n <img src=\"logoPath\" class=\"lg\" [ngStyle]=\"{\r\n width: '130px',\r\n height: '59px',\r\n transform: 'translate(0, -5px)'\r\n }\" appImageErrorResolver [type]=\"imageErrorResolverType\">\r\n </div>\r\n </div>\r\n @if (!!isRoot) {\r\n <i \r\n [class.feather-square]=\"!designMode\" \r\n [class.feather-play]=\"!!designMode\" \r\n class=\"stop-mode-icon\" \r\n (click)=\"onDesignModeClick($event)\"\r\n [appTooltip]=\"!designMode ? 'Chuy\u1EC3n sang ch\u1EBF \u0111\u1ED9 thi\u1EBFt k\u1EBF' : 'Chuy\u1EC3n v\u1EC1 ch\u1EBF \u0111\u1ED9 b\u00ECnh th\u01B0\u1EDDng'\"\r\n ></i>\r\n }\r\n </div>\r\n\r\n <div class=\"header-bottom\" [ngStyle]=\"{\r\n width: width + 'px'\r\n }\">\r\n <core-line></core-line>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"scroll\" [ngStyle]=\"{\r\n width: width + 'px',\r\n height: scrollHeight + 'px'\r\n }\">\r\n @for (row of items; track $index) {\r\n <div class=\"menu-row\">\r\n @for (item of row; track $index) {\r\n <app-module-item [$item]=\"item\" [$width]=\"itemWidth\" [$height]=\"100\" [$iconTextVerticalMargin]=\"iconTextVerticalMargin\"></app-module-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-root-menu-item-picker-container .header-bottom{position:absolute;top:59px;left:0}.core-root-menu-item-picker-container .scroll{overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;flex-wrap:wrap;-ms-overflow-style:none}.core-root-menu-item-picker-container .scroll::-webkit-scrollbar{display:none}.core-root-menu-item-picker-container .menu-row{display:flex;flex-wrap:nowrap;justify-content:space-between}.core-root-menu-item-picker-container .stop-mode-icon{cursor:pointer;width:24px;height:24px;font-size:24px}\n"], dependencies: [{ kind: "component", type: CoreLineComponent, selector: "core-line" }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ModuleItemComponent, selector: "app-module-item", inputs: ["$item", "$itemPadding", "$width", "$height", "$iconTextVerticalMargin"] }, { kind: "directive", type: ImageErrorResolverDirective, selector: "[appImageErrorResolver]", inputs: ["type", "isFemale"] }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "color", "backgroundColor", "position"] }] }); }
|
|
37556
38677
|
}
|
|
37557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type:
|
|
38678
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerComponent, decorators: [{
|
|
37558
38679
|
type: Component,
|
|
37559
|
-
args: [{ selector: 'core-
|
|
37560
|
-
|
|
38680
|
+
args: [{ selector: 'core-root-menu-item-picker', imports: [
|
|
38681
|
+
CoreLineComponent,
|
|
37561
38682
|
NgStyle,
|
|
37562
|
-
|
|
37563
|
-
|
|
37564
|
-
TranslatePipe,
|
|
38683
|
+
ModuleItemComponent,
|
|
38684
|
+
ImageErrorResolverDirective,
|
|
37565
38685
|
TooltipDirective,
|
|
37566
|
-
],
|
|
37567
|
-
|
|
37568
|
-
provide: NG_VALUE_ACCESSOR,
|
|
37569
|
-
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
37570
|
-
multi: true
|
|
37571
|
-
}
|
|
37572
|
-
], template: "<div #container class=\"core-org-tree-container\" [class.full-width]=\"!!fullWidthMode\" *ngIf=\"!!data\" [ngStyle]=\"{\r\n position : 'relative',\r\n width: '100%',\r\n minWidth: '310px',\r\n height: height + 'px'\r\n }\">\r\n <div #displayContent class=\"custom-org-tree\">\r\n @if (showSearch) {\r\n <div class=\"core-org-tree-header d-flex-between\">\r\n <div class=\"m5\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"search\" (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"searchPlaceholder | translate: lang\" [class.full-width]=\"!!fullWidthMode\">\r\n </div>\r\n </div>\r\n }\r\n <ng-container>\r\n\r\n <div #scrollContainer class=\"scroll-container\" [ngStyle]=\"{\r\n height: height - layoutService.coreOrgTreeTopHeight * (showSearch ? 1 : 0) - layoutService.coreOrgTreeBottomHeight + 'px',\r\n overflow: 'scroll'\r\n }\">\r\n <div class=\"hidden-tool\" (click)=\"onHiddenToolClick($event)\"></div>\r\n <core-loading-surface [loading]=\"loading\" [height]=\"scrollContainerHeight\"></core-loading-surface>\r\n <!-- @for (root of dataFiltered; track root) { -->\r\n @for (root of data; track $index) {\r\n @defer(on viewport(scrollContainer)) {\r\n <ul class=\"root\" [class.collapsed]=\"!!!root.tree$Expanded\">\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: root }\"></ng-container>\r\n </ul>\r\n } @placeholder() {\r\n Placeholder...\r\n } @loading() {\r\n Loading...\r\n } @error() {\r\n Error...\r\n }\r\n\r\n }\r\n </div>\r\n <div [ngStyle]=\"{\r\n display: 'block',\r\n position: 'absolute',\r\n bottom: '0px',\r\n left: '0px',\r\n right: '0px',\r\n height: layoutService.corePaginationHeight + 'px',\r\n paddingLeft: layoutService.basicSpacing + 'px',\r\n paddingRight: layoutService.basicSpacing + 'px',\r\n lineHeight: layoutService.corePaginationHeight + 'px',\r\n overflow: 'hidden'\r\n }\">\r\n <div [ngStyle]=\"{\r\n height: layoutService.corePaginationHeight + 'px',\r\n position: 'relative',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between'\r\n }\">\r\n <div>\r\n <core-checkbox [(ngModel)]=\"showDissolved\"\r\n (ngModelChange)=\"onCheckIncludeDissolvedChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS_ABBREVIATED'\"\r\n [tooltip]=\"'UI.CORE_ORG_TREE.SHOW_OUTDATED_UNITS'\" tooltipPosition=\"above\"></core-checkbox>\r\n </div>\r\n @if (accessorMode === 'CHECKED') {\r\n <div class=\"check-inheritance-wrapper\">\r\n @if (showCheckInheritance) {\r\n <core-checkbox [(ngModel)]=\"checkInheritance\"\r\n (ngModelChange)=\"onCheckInheritanceChange($event)\"\r\n [text]=\"'UI.CORE_ORG_TREE.CHECK_INHERITANCE'\"></core-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <ng-template #item let-context=\"context\" let-id=\"context.id\" let-title=\"context.tree$Title\"\r\n let-highlighted=\"context.tree$Highlighted\" let-hasChildren=\"context.tree$HasChildren\"\r\n let-hasActiveChildren=\"context.tree$HasActiveChildren\" let-children=\"context.tree$Children\"\r\n let-expanded=\"context.tree$Expanded\" let-isActive=\"context.isActive\" let-active=\"context.tree$Active\"\r\n let-checked=\"context.tree$Checked\" let-protected=\"context.protected\">\r\n\r\n @if ((!showDissolved && !!isActive) || (!!showDissolved)) {\r\n <li [class.has-children]=\"!!hasChildren\" [class.collapsed]=\"!!hasChildren && !!!expanded\">\r\n <!-- (click)=\"accessorMode !== 'CHECKED' ? onObjectClick(context, $event) : $event.preventDefault()\" -->\r\n <span (click)=\"onObjectClick(context, $event)\">\r\n @if ((!!showDissolved && !!hasChildren) || (!showDissolved && !!hasActiveChildren)) {\r\n <i class=\"expand-toggler feather-chevron-down\" (click)=\"onExpandTogglerClick(context, $event)\"></i>\r\n }\r\n\r\n @if (accessorMode === 'CHECKED' && !protected) {\r\n <core-checkbox (onClick)=\"onItemCheck(context, $event)\" [inputValue]=\"checked\"\r\n [disabled]=\"disabled\"></core-checkbox>\r\n }\r\n <object [class.active]=\"accessorMode != 'CHECKED' && selectedKey===id.toString()\"\r\n [class.highlighted]=\"highlighted\" [class.dissolved]=\"!isActive\"\r\n [class.protected]=\"protected\" [appTooltip]=\"title\">\r\n {{ title }}\r\n </object>\r\n </span>\r\n @if (!!children.length) {\r\n <ul [class.collapsed]=\" !!!expanded\">\r\n @for (child of children; track $index) {\r\n @if (!!expanded || !!fullRendering) {\r\n\r\n <ng-container *ngTemplateOutlet=\"item; context: { context: child }\"></ng-container>\r\n\r\n }\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</div>" }]
|
|
37573
|
-
}], ctorParameters: () => [{ type: AuthService }, { type: RecursiveService }, { type: MultiLanguageService }, { type: LayoutService }, { type: CoreOrgTreeService }, { type: AlertService }, { type: ComPartyService }], propDecorators: { lineColor: [{
|
|
37574
|
-
type: Input
|
|
37575
|
-
}], fullWidthMode: [{
|
|
37576
|
-
type: Input
|
|
37577
|
-
}], accessorMode: [{
|
|
37578
|
-
type: Input
|
|
37579
|
-
}], searchMode: [{
|
|
37580
|
-
type: Input
|
|
37581
|
-
}], fullRendering: [{
|
|
37582
|
-
type: Input
|
|
37583
|
-
}], height: [{
|
|
37584
|
-
type: Input
|
|
37585
|
-
}], disabledLoopExpand: [{
|
|
37586
|
-
type: Input
|
|
37587
|
-
}], showCheckInheritance: [{
|
|
38686
|
+
], template: "<div #container class=\"core-root-menu-item-picker-container\" [ngStyle]=\"{\r\n zIndex: zIndex,\r\n}\">\r\n <div class=\"mudule-picker-header d-flex d-flex-between\" [ngStyle]=\"{\r\n height: 59 + 'px'\r\n }\">\r\n <div class=\"HEADER_LOGO\">\r\n <div class=\"logo-wrapper d-flex\">\r\n <img src=\"logoPath\" class=\"lg\" [ngStyle]=\"{\r\n width: '130px',\r\n height: '59px',\r\n transform: 'translate(0, -5px)'\r\n }\" appImageErrorResolver [type]=\"imageErrorResolverType\">\r\n </div>\r\n </div>\r\n @if (!!isRoot) {\r\n <i \r\n [class.feather-square]=\"!designMode\" \r\n [class.feather-play]=\"!!designMode\" \r\n class=\"stop-mode-icon\" \r\n (click)=\"onDesignModeClick($event)\"\r\n [appTooltip]=\"!designMode ? 'Chuy\u1EC3n sang ch\u1EBF \u0111\u1ED9 thi\u1EBFt k\u1EBF' : 'Chuy\u1EC3n v\u1EC1 ch\u1EBF \u0111\u1ED9 b\u00ECnh th\u01B0\u1EDDng'\"\r\n ></i>\r\n }\r\n </div>\r\n\r\n <div class=\"header-bottom\" [ngStyle]=\"{\r\n width: width + 'px'\r\n }\">\r\n <core-line></core-line>\r\n </div>\r\n\r\n <div class=\"h15\"></div>\r\n\r\n <div class=\"scroll\" [ngStyle]=\"{\r\n width: width + 'px',\r\n height: scrollHeight + 'px'\r\n }\">\r\n @for (row of items; track $index) {\r\n <div class=\"menu-row\">\r\n @for (item of row; track $index) {\r\n <app-module-item [$item]=\"item\" [$width]=\"itemWidth\" [$height]=\"100\" [$iconTextVerticalMargin]=\"iconTextVerticalMargin\"></app-module-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n</div>", styles: [".core-root-menu-item-picker-container .header-bottom{position:absolute;top:59px;left:0}.core-root-menu-item-picker-container .scroll{overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-start;flex-wrap:wrap;-ms-overflow-style:none}.core-root-menu-item-picker-container .scroll::-webkit-scrollbar{display:none}.core-root-menu-item-picker-container .menu-row{display:flex;flex-wrap:nowrap;justify-content:space-between}.core-root-menu-item-picker-container .stop-mode-icon{cursor:pointer;width:24px;height:24px;font-size:24px}\n"] }]
|
|
38687
|
+
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: ApplicationHelpService }, { type: i0.Renderer2 }, { type: NavigatorService }, { type: LayoutService }, { type: DomService }, { type: MenuService }, { type: SysMenuService }, { type: AuthService }, { type: AppConfigService }], propDecorators: { logoPath: [{
|
|
37588
38688
|
type: Input
|
|
37589
|
-
}],
|
|
38689
|
+
}], itemsPerRow: [{
|
|
37590
38690
|
type: Input
|
|
37591
|
-
}],
|
|
38691
|
+
}], iconTextVerticalMargin: [{
|
|
37592
38692
|
type: Input
|
|
37593
|
-
}], itemDoubleClick: [{
|
|
37594
|
-
type: Output
|
|
37595
|
-
}], itemClick: [{
|
|
37596
|
-
type: Output
|
|
37597
38693
|
}], container: [{
|
|
37598
38694
|
type: ViewChild,
|
|
37599
38695
|
args: ['container']
|
|
37600
|
-
}], scrollContainer: [{
|
|
37601
|
-
type: ViewChild,
|
|
37602
|
-
args: ['scrollContainer']
|
|
37603
|
-
}], displayContent: [{
|
|
37604
|
-
type: ViewChild,
|
|
37605
|
-
args: ['displayContent']
|
|
37606
|
-
}], reducedIconWrapper: [{
|
|
37607
|
-
type: ViewChild,
|
|
37608
|
-
args: ['reducedIconWrapper']
|
|
37609
38696
|
}] } });
|
|
37610
38697
|
|
|
38698
|
+
class CoreRootMenuItemPickerService {
|
|
38699
|
+
constructor() { }
|
|
38700
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38701
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, providedIn: 'root' }); }
|
|
38702
|
+
}
|
|
38703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, decorators: [{
|
|
38704
|
+
type: Injectable,
|
|
38705
|
+
args: [{
|
|
38706
|
+
providedIn: 'root'
|
|
38707
|
+
}]
|
|
38708
|
+
}], ctorParameters: () => [] });
|
|
38709
|
+
|
|
37611
38710
|
class CoreComProfileComponent extends BaseComponent {
|
|
37612
38711
|
ngOnChanges(changes) {
|
|
37613
38712
|
this.cdr.markForCheck();
|
|
@@ -38037,11 +39136,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38037
39136
|
const coreDocGenRoutes = [
|
|
38038
39137
|
{
|
|
38039
39138
|
path: 'template-list',
|
|
38040
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
39139
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-CVK_Ewx4.mjs').then(m => m.TemplateListComponent),
|
|
38041
39140
|
},
|
|
38042
39141
|
{
|
|
38043
39142
|
path: ":id",
|
|
38044
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
39143
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-CwYRUlbM.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
38045
39144
|
canDeactivate: [CanDeactivateGuard]
|
|
38046
39145
|
},
|
|
38047
39146
|
{
|
|
@@ -38070,7 +39169,7 @@ const coreFormDesignRoutes = [
|
|
|
38070
39169
|
},
|
|
38071
39170
|
{
|
|
38072
39171
|
path: ':id',
|
|
38073
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
39172
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-Jzy7HTBy.mjs').then(function (n) { return n.c; }).then(m => m.CoreFormDesignComponent)
|
|
38074
39173
|
}
|
|
38075
39174
|
];
|
|
38076
39175
|
|
|
@@ -38963,7 +40062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38963
40062
|
const coreNavigationTrackerRoutes = [
|
|
38964
40063
|
{
|
|
38965
40064
|
path: '',
|
|
38966
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
40065
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-8tqyVAcU.mjs').then(m => m.TrackerStudioComponent)
|
|
38967
40066
|
}
|
|
38968
40067
|
];
|
|
38969
40068
|
|
|
@@ -41552,33 +42651,33 @@ const coreWorkflowRoutes = [
|
|
|
41552
42651
|
{
|
|
41553
42652
|
path: 'form-assign/:id',
|
|
41554
42653
|
outlet: "formAssignAux",
|
|
41555
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
42654
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-CRs1A8j_.mjs').then(m => m.WfFormAssignComponent),
|
|
41556
42655
|
canDeactivate: [CanDeactivateGuard]
|
|
41557
42656
|
}
|
|
41558
42657
|
]
|
|
41559
42658
|
},
|
|
41560
42659
|
{
|
|
41561
42660
|
path: 'global-config',
|
|
41562
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-
|
|
42661
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-yeFb4wxY.mjs').then(m => m.WfGlobalConfigComponent)
|
|
41563
42662
|
},
|
|
41564
42663
|
{
|
|
41565
42664
|
path: 'db-settings',
|
|
41566
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
42665
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-CpjFcS3r.mjs').then(m => m.DbSettingsComponent)
|
|
41567
42666
|
},
|
|
41568
42667
|
{
|
|
41569
42668
|
path: 'workflow-consume',
|
|
41570
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
42669
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-Fma_hNMb.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
41571
42670
|
children: [
|
|
41572
42671
|
{
|
|
41573
42672
|
path: ':id',
|
|
41574
42673
|
outlet: "workflowConsume",
|
|
41575
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
42674
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-iX23HD-T.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41576
42675
|
}
|
|
41577
42676
|
]
|
|
41578
42677
|
},
|
|
41579
42678
|
{
|
|
41580
42679
|
path: 'workflow-consume/:id',
|
|
41581
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
42680
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-iX23HD-T.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41582
42681
|
},
|
|
41583
42682
|
{
|
|
41584
42683
|
path: 'workflow-group-edit/:id',
|
|
@@ -41588,17 +42687,17 @@ const coreWorkflowRoutes = [
|
|
|
41588
42687
|
},
|
|
41589
42688
|
{
|
|
41590
42689
|
path: 'design/:id',
|
|
41591
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
42690
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-BPTxhFez.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
41592
42691
|
},
|
|
41593
42692
|
]
|
|
41594
42693
|
},
|
|
41595
42694
|
{
|
|
41596
42695
|
path: 'react/:id',
|
|
41597
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
42696
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-Bri0bRw3.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
41598
42697
|
},
|
|
41599
42698
|
{
|
|
41600
42699
|
path: 'status/:id',
|
|
41601
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
42700
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-Jahj4MO-.mjs').then(m => m.WfInstanceStatusComponent)
|
|
41602
42701
|
}
|
|
41603
42702
|
];
|
|
41604
42703
|
|
|
@@ -43459,7 +44558,11 @@ class NavigatorComponent {
|
|
|
43459
44558
|
else if (this.menuClickedItem?.tree$Tier == 3) { //nếu là 3 cấp
|
|
43460
44559
|
array = x.filter(y => y.id == this.menuClickedItem.id);
|
|
43461
44560
|
arrayParrent = x.filter(y => y.id == this.menuClickedItem.tree$Parent);
|
|
44561
|
+
if (!arrayParrent.length)
|
|
44562
|
+
return;
|
|
43462
44563
|
let arrayGrandParrent = x.filter(z => z.id == arrayParrent[0].parent);
|
|
44564
|
+
if (!arrayGrandParrent.length)
|
|
44565
|
+
return;
|
|
43463
44566
|
let element = document.getElementById('main-menu-' + arrayParrent[0].id);
|
|
43464
44567
|
let element2 = document.getElementById('main-menu-' + arrayGrandParrent[0].id);
|
|
43465
44568
|
array[0].tree$Selected = true;
|
|
@@ -44219,5 +45322,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
44219
45322
|
* Generated bundle index. Do not edit.
|
|
44220
45323
|
*/
|
|
44221
45324
|
|
|
44222
|
-
export { CoreButtonGroupVnsComponent as $, AppService as A, BaseComponent as B, ChatService as C, DialogService as D, EnumCoreTablePipeType as E, FullscreenModalLoaderComponent as F, CoreDatePickerComponent as G, CoreFormControlSeekerComponent as H, ImageErrorResolverDirective as I, CoreCurrencyInputComponent as J, EnumActorSourceType as K, CoreParamControlComponent as L, MultiLanguageService as M, CoreRadioGroupComponent as N, GptService as O, ApplicationHelpService as P, HotKeysDirective as Q, EnumCorePageEditMode as R, SocketService as S, TranslatePipe as T, CoreFormComponent as U, NavigatorService as V, JsonService as W, AppConfigService as X, EnumCoreButtonVNSCode as Y, READONLY_WORKFLOW_FIELDS as Z, noneAutoClosedAlertOptions as _, CorePageListComponent as a, CommonHttpRequestService as a$, CoreStickerCollectionComponent as a0, HtmlTooltipDirective as a1, CoreControlNoFormArrayComponent as a2, EnumFormDesignMode as a3, CoreControlComponent as a4, JsonSafePipe as a5, CoreAttachmentComponent as a6, CoreMonthSelectorComponent as a7, EnumImageResolverType as a8, NormalizeHumanNamePipe as a9, EnumStyleButtonClass as aA, CanActivateFunctionUrlMapperGuard as aB, InitializationCanActivateFn as aC, InitializationCanMatchFn as aD, httpInterceptorProviders as aE, InterceptorSkipHeader as aF, appTypeInterceptor as aG, baseUrlInterceptor as aH, authInterceptor as aI, graphInterceptor as aJ, tokenInterceptor as aK, responseInterceptor as aL, timeZoneInterceptor as aM, cachingInterceptor as aN, langInterceptor as aO, EnumFilterOperator as aP, OnlineUsersComponent as aQ, ActionService as aR, AppInitializationService as aS, AuthService as aT, CacheService as aU, EnumSwUpdateVersionUpdatesEventType as aV, CheckForUpdateService as aW, EnumDeviceType as aX, EnumBrowserType as aY, EnumOsType as aZ, ClientService as a_, CoreIosSwitcherComponent as aa, SunnyRotatingComponent as ab, MapAppdemoToServerPipePipe as ac, MapAttachmentToServerPipe as ad, MapNewsfeedMediaToServerPipe as ae, StringHtmlPipe as af, UploadedFilenameCutoffPipe as ag, DialogStateComponent as ah, FooterComponent as ai, RightchatComponent as aj, WaittingScreenComponent as ak, longAlertOptions as al, attachmentOptions as am, CORE_VNS_BUTTONS as an, defaultPaging as ao, DESKTOP_SCREEN_HEDER_HEIGHT as ap, MOBILE_SCREEN_HEDER_HEIGHT as aq, themeBlue as ar, DATE_VALUE_ACCESSOR as as, DateValueAccessor as at, EnumDragType as au, EnumErrorType as av, EnumIconClass as aw, EnumProfileInfoSector as ax, EnumSignalRType as ay, EnumSortDirection as az, CoreCheckboxComponent as b, MutationViewComponent as b$, TLA_CONFIG as b0, ConfigService as b1, CoreTableService as b2, DndService as b3, DocxMergeService as b4, FilterKitService as b5, GrpcService as b6, HeaderService as b7, HistoryService as b8, HttpErrorHandler as b9, TopicPermissionService as bA, TopicTreeService as bB, UploadedFileService as bC, UrlService as bD, UserActivityService as bE, EvaluateDialogService as bF, EnumWorkScheduleViewMode as bG, WorkShiftDndService as bH, AtShiftPatternComponent as bI, AtShiftPatternApplyComponent as bJ, AtShiftPatternEditComponent as bK, AtWorksignComponent as bL, AtWorksignService as bM, FunctionComponent as bN, IndividualScheduleApplyComponent as bO, FunctionEditComponent as bP, FunctionIgnoreComponent as bQ, FunctionIgnoreEditComponent as bR, GroupFunctionComponent as bS, GroupFunctionEditComponent as bT, hrmSchemaRoutes as bU, InMemoryComponent as bV, LanguageComponent as bW, LanguageEditComponent as bX, MenuComponent as bY, MenuEditComponent as bZ, MutationLogComponent as b_, HubConnectionService as ba, IpServiceService as bb, LayoutService as bc, LiquidJsService as bd, MapService as be, MenuService as bf, MessageService as bg, ModalService as bh, OrganizationService as bi, PkceService as bj, PositionTransferService as bk, EnumNotificationDir as bl, NotificationActionType as bm, PushNotificationService as bn, RandomAvatarService as bo, RequestCache as bp, RequestCacheWithMap as bq, ResponseService as br, RoutingService as bs, EnumSsrsExpressFileExtension as bt, EnumSsrsExpressExportFormat as bu, SsrsExpressService as bv, StatisticService as bw, StatisticAuthService as bx, SysMenuService as by, TimeSheetService as bz, BaseEditComponent as c, CoreEmployeeSeekerComponent as c$, PaSalaryPolicyComponent as c0, PaSalaryPolicyEditComponent as c1, PortalRouteComponent as c2, ScheduleOverviewComponent as c3, simpleChatRoutes as c4, PortalRouteEditComponent as c5, SysOtherListComponent as c6, SysOtherListEditComponent as c7, SysOtherListTypeComponent as c8, SysOtherListTypeEditComponent as c9, NewlyCreatedTokenService as cA, CoreApiProgressComponent as cB, CoreButtonGroupComponent as cC, EnumCoreButtonCode as cD, ActionSvgEditComponent as cE, CoreButtonGroupService as cF, CoreButtonVnsComponent as cG, CoreCommonParamKitComponent as cH, CoreCompareDbPipelineComponent as cI, CoreCompositionState as cJ, CoreCompositionService as cK, CoreCompositionComponent as cL, CoreConfirmDialogComponent as cM, ConfirmDialogStateComponent as cN, CoreLazyMountComponent as cO, CoreRootMenuItemPickerComponent as cP, CoreRootMenuItemPickerService as cQ, ECoreTableToolCode as cR, ECoreTableToolClass as cS, CoreTableComponent as cT, CoreComProfileComponent as cU, CoreContractSeekerComponent as cV, CoreControlNoGridBufferComponent as cW, CoreControlNoSeekerComponent as cX, coreDocGenRoutes as cY, CoreDocgenToolbarComponent as cZ, CoreEmployeeScheduleComponent as c_, SysActionComponent as ca, SysActionEditComponent as cb, SysFunctionActionComponent as cc, SysFunctionActionEditComponent as cd, SysFunctionActionMapperComponent as ce, SysFunctionUrlMapperComponent as cf, FunctionEditService as cg, SysModuleComponent as ch, SysModuleEditComponent as ci, SysRouteAccessComponent as cj, liner_to_nested_array_script as ck, blob_to_base64_script as cl, AlertComponent as cm, EnumAlertType as cn, IAlertOptions as co, AnimatedTextService as cp, AnimatedTextComponent as cq, BaseDropdownComponent as cr, ButtonGroupModule as cs, ButtonGroupService as ct, ButtonGroupComponent as cu, EnumButtonCaptionCode as cv, CoreButtonComponent as cw, CoreAccordionComponent as cx, CoreAccordionService as cy, CoreActiveUserCountComponent as cz, EnumFormBaseContolType as d, CorePermissionActionsComponent as d$, EnumCoreFileUploaderType as d0, CoreFileUploaderComponent as d1, CoreFilterHubComponent as d2, CoreFilterHubService as d3, ControlBase as d4, Textbox as d5, CoreControlService as d6, CustomValidators as d7, URL_PATTERN as d8, coreFormDesignRoutes as d9, CoreOauthCallbackOffice365Component as dA, EnumCoreOrgTreeaAccessorMode as dB, EnumCoreOrgTreeaSearchMode as dC, CoreOrgTreeComponent as dD, CoreOrgTreeState as dE, CoreOrgTreeService as dF, CoreOrgUnitSeekerComponent as dG, CoreOrgchartflexComponent as dH, CoreOrgParamComponent as dI, EnumCorePageEditBootstrapClass as dJ, EnumCorePageEditFieldType as dK, CorePageEditService as dL, CorePageEditLiteComponent as dM, CorePageEditTabComponent as dN, EnumExType as dO, CorePageListService as dP, CorePageListState as dQ, CorePageListContentComponent as dR, EnumCoreViewItemType as dS, CorePageViewComponent as dT, CorePaginationComponent as dU, CorePaginationFullComponent as dV, CorePaginationFullService as dW, CoreFileFormatPickerComponent as dX, CorePermissionService as dY, EnumPermissionObjectType as dZ, CorePermissionComponent as d_, CoreFormTabComponent as da, CoreFormLiteComponent as db, CoreFormControlBaseComponent as dc, EnumCoreSeekerColumnJob as dd, EnumCoreSeekerColumnStaffProfile as de, EnumCoreSeekerColumnContract as df, EnumCoreSeekerColumnWorking as dg, EnumCoreSeekerColumnWage as dh, EnumCoreSeekerColumnPosition as di, EnumCoreSeekerColumnPositionConcurrent as dj, EnumCoreSeekerColumnAutoForm as dk, SeekerService as dl, CoreGridBufferComponent as dm, CoreHeaderParamsComponent as dn, CoreHelperComponent as dp, CoreLineComponent as dq, CoreLiquidWysiwygComponent as dr, CoreListComponent as ds, CoreListLazyComponent as dt, CoreLoadingSurfaceComponent as du, CoreMccComponent as dv, CoreMonthPickerComponent as dw, CoreNavigationTrackerComponent as dx, coreNavigationTrackerRoutes as dy, CoreOauthCallbackComponent as dz, CorePageEditComponent as e, StringService as e$, CorePositionConcurrentSeekerComponent as e0, CorePositionSeekerComponent as e1, CoreQrcodeComponent as e2, EnumOparator as e3, CoreQueryBuilderComponent as e4, CoreReducerIconComponent as e5, CoreRotatingTextComponent as e6, CoreRouteAccumulatorComponent as e7, CoreRoutingHistoryComponent as e8, CoreSalaryPolicyPickerComponent as e9, CoreD3Service as eA, CorePieComponent as eB, CoreScatterPlotComponent as eC, EnumHrComparisonCode as eD, EnumICoreStatisticWidgetDataType as eE, CoreStatisticWidgetComponent as eF, DecisionComponent as eG, EvaluateDialogComponent as eH, HuconcurrentlyComponent as eI, JobComponent as eJ, LanguageChangerComponent as eK, DEFAULT_SVG as eL, ItemComponent as eM, NavigatorComponent as eN, OtpInputComponent as eO, OtpInputService as eP, PageTitleComponent as eQ, PaginationComponent as eR, FilterPipe as eS, normalizeHumanName as eT, PositionComponent as eU, PositionEditService as eV, CoreDatetimeService as eW, FileService as eX, LongTaskService as eY, EnumRecursiveFields as eZ, RecursiveService as e_, CoreScrollComponent as ea, CoreScrollLazyComponent as eb, CoreSeenByComponent as ec, CoreShiftCardComponent as ed, CoreShiftCellComponent as ee, CoreShiftCollectionComponent as ef, CoreShiftStickerComponent as eg, STICKER_COLOR_SCHEMA as eh, CoreStatusStickerComponent as ei, CoreSubFormGroupComponent as ej, CoreTabListComponent as ek, CoreTagsComponent as el, CoreTopicPickerComponent as em, EnumCoreArticleCategoryTreeaAccessorMode as en, CoreTopicTreeComponent as eo, CoreTreeComponent as ep, EnumCoreTreeGridEditMode as eq, CoreTreeGridComponent as er, CoreWageSeekerComponent as es, CoreWorkingSeekerComponent as et, coreWorkflowRoutes as eu, CoreWorkflowBuilderComponent as ev, CoreWorkflowGroupEditComponent as ew, CoreYearPickerComponent as ex, CoreYearSelectorComponent as ey, EnumCoreD3ScaleType as ez, CorePageHeaderComponent as f, UnicodeService as f0, StaffProfileComponent as f1, ThreedotsComponent as f2, TooltipComponent as f3, UserActivityComponent as f4, WageComponent as f5, tooltip_directive as f6, coreStickerCollection_component as f7, dragReorder_directive as f8, CoreTabsComponent as g, CoreWorkflowService as h, EnumCoreFormControlSeekerSourceType as i, AlertService as j, CoreFormService as k, DbService as l, AiHintForColumnComponent as m, CoreWorkflowListComponent as n, TooltipDirective as o, DragReorderDirective as p, CanDeactivateGuard as q, TableCellPipe as r, MapAvatarToServerPipe as s, alertOptions as t, CoreTerminalSpinnerComponent as u, CoreFormDesignService as v, EnumWorkflowStepType as w, DomService as x, CoreDropdownComponent as y, CoreChecklistComponent as z };
|
|
44223
|
-
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-
|
|
45325
|
+
export { CoreButtonGroupVnsComponent as $, AppService as A, BaseComponent as B, ChatService as C, DialogService as D, EnumCoreTablePipeType as E, FullscreenModalLoaderComponent as F, CoreDatePickerComponent as G, CoreFormControlSeekerComponent as H, ImageErrorResolverDirective as I, CoreCurrencyInputComponent as J, EnumActorSourceType as K, CoreParamControlComponent as L, MultiLanguageService as M, CoreRadioGroupComponent as N, GptService as O, ApplicationHelpService as P, HotKeysDirective as Q, EnumCorePageEditMode as R, SocketService as S, TranslatePipe as T, CoreFormComponent as U, NavigatorService as V, JsonService as W, AppConfigService as X, EnumCoreButtonVNSCode as Y, READONLY_WORKFLOW_FIELDS as Z, noneAutoClosedAlertOptions as _, CorePageListComponent as a, CommonHttpRequestService as a$, CoreStickerCollectionComponent as a0, HtmlTooltipDirective as a1, CoreControlNoFormArrayComponent as a2, EnumFormDesignMode as a3, CoreControlComponent as a4, JsonSafePipe as a5, CoreAttachmentComponent as a6, CoreMonthSelectorComponent as a7, EnumImageResolverType as a8, NormalizeHumanNamePipe as a9, EnumStyleButtonClass as aA, CanActivateFunctionUrlMapperGuard as aB, InitializationCanActivateFn as aC, InitializationCanMatchFn as aD, httpInterceptorProviders as aE, InterceptorSkipHeader as aF, appTypeInterceptor as aG, baseUrlInterceptor as aH, authInterceptor as aI, graphInterceptor as aJ, tokenInterceptor as aK, responseInterceptor as aL, timeZoneInterceptor as aM, cachingInterceptor as aN, langInterceptor as aO, EnumFilterOperator as aP, OnlineUsersComponent as aQ, ActionService as aR, AppInitializationService as aS, AuthService as aT, CacheService as aU, EnumSwUpdateVersionUpdatesEventType as aV, CheckForUpdateService as aW, EnumDeviceType as aX, EnumBrowserType as aY, EnumOsType as aZ, ClientService as a_, CoreIosSwitcherComponent as aa, SunnyRotatingComponent as ab, MapAppdemoToServerPipePipe as ac, MapAttachmentToServerPipe as ad, MapNewsfeedMediaToServerPipe as ae, StringHtmlPipe as af, UploadedFilenameCutoffPipe as ag, DialogStateComponent as ah, FooterComponent as ai, RightchatComponent as aj, WaittingScreenComponent as ak, longAlertOptions as al, attachmentOptions as am, CORE_VNS_BUTTONS as an, defaultPaging as ao, DESKTOP_SCREEN_HEDER_HEIGHT as ap, MOBILE_SCREEN_HEDER_HEIGHT as aq, themeBlue as ar, DATE_VALUE_ACCESSOR as as, DateValueAccessor as at, EnumDragType as au, EnumErrorType as av, EnumIconClass as aw, EnumProfileInfoSector as ax, EnumSignalRType as ay, EnumSortDirection as az, CoreCheckboxComponent as b, MutationViewComponent as b$, TLA_CONFIG as b0, ConfigService as b1, CoreTableService as b2, DndService as b3, DocxMergeService as b4, FilterKitService as b5, GrpcService as b6, HeaderService as b7, HistoryService as b8, HttpErrorHandler as b9, TopicPermissionService as bA, TopicTreeService as bB, UploadedFileService as bC, UrlService as bD, UserActivityService as bE, EvaluateDialogService as bF, EnumWorkScheduleViewMode as bG, WorkShiftDndService as bH, AtShiftPatternComponent as bI, AtShiftPatternApplyComponent as bJ, AtShiftPatternEditComponent as bK, AtWorksignComponent as bL, AtWorksignService as bM, FunctionComponent as bN, IndividualScheduleApplyComponent as bO, FunctionEditComponent as bP, FunctionIgnoreComponent as bQ, FunctionIgnoreEditComponent as bR, GroupFunctionComponent as bS, GroupFunctionEditComponent as bT, hrmSchemaRoutes as bU, InMemoryComponent as bV, LanguageComponent as bW, LanguageEditComponent as bX, MenuComponent as bY, MenuEditComponent as bZ, MutationLogComponent as b_, HubConnectionService as ba, IpServiceService as bb, LayoutService as bc, LiquidJsService as bd, MapService as be, MenuService as bf, MessageService as bg, ModalService as bh, OrganizationService as bi, PkceService as bj, PositionTransferService as bk, EnumNotificationDir as bl, NotificationActionType as bm, PushNotificationService as bn, RandomAvatarService as bo, RequestCache as bp, RequestCacheWithMap as bq, ResponseService as br, RoutingService as bs, EnumSsrsExpressFileExtension as bt, EnumSsrsExpressExportFormat as bu, SsrsExpressService as bv, StatisticService as bw, StatisticAuthService as bx, SysMenuService as by, TimeSheetService as bz, BaseEditComponent as c, CoreDocgenToolbarComponent as c$, PaSalaryPolicyComponent as c0, PaSalaryPolicyEditComponent as c1, PortalRouteComponent as c2, ScheduleOverviewComponent as c3, simpleChatRoutes as c4, PortalRouteEditComponent as c5, SysOtherListComponent as c6, SysOtherListEditComponent as c7, SysOtherListTypeComponent as c8, SysOtherListTypeEditComponent as c9, NewlyCreatedTokenService as cA, CoreApiProgressComponent as cB, CoreButtonGroupComponent as cC, EnumCoreButtonCode as cD, ActionSvgEditComponent as cE, CoreButtonGroupService as cF, CoreButtonVnsComponent as cG, CoreComTreeComponent as cH, ComPartyService as cI, CoreCommonParamKitComponent as cJ, CoreCompareDbPipelineComponent as cK, CoreCompositionState as cL, CoreCompositionService as cM, CoreCompositionComponent as cN, CoreConfirmDialogComponent as cO, ConfirmDialogStateComponent as cP, CoreLazyMountComponent as cQ, CoreRootMenuItemPickerComponent as cR, CoreRootMenuItemPickerService as cS, ECoreTableToolCode as cT, ECoreTableToolClass as cU, CoreTableComponent as cV, CoreComProfileComponent as cW, CoreContractSeekerComponent as cX, CoreControlNoGridBufferComponent as cY, CoreControlNoSeekerComponent as cZ, coreDocGenRoutes as c_, SysActionComponent as ca, SysActionEditComponent as cb, SysFunctionActionComponent as cc, SysFunctionActionEditComponent as cd, SysFunctionActionMapperComponent as ce, SysFunctionUrlMapperComponent as cf, FunctionEditService as cg, SysModuleComponent as ch, SysModuleEditComponent as ci, SysRouteAccessComponent as cj, liner_to_nested_array_script as ck, blob_to_base64_script as cl, AlertComponent as cm, EnumAlertType as cn, IAlertOptions as co, AnimatedTextService as cp, AnimatedTextComponent as cq, BaseDropdownComponent as cr, ButtonGroupModule as cs, ButtonGroupService as ct, ButtonGroupComponent as cu, EnumButtonCaptionCode as cv, CoreButtonComponent as cw, CoreAccordionComponent as cx, CoreAccordionService as cy, CoreActiveUserCountComponent as cz, EnumFormBaseContolType as d, EnumPermissionObjectType as d$, CoreEmployeeScheduleComponent as d0, CoreEmployeeSeekerComponent as d1, EnumCoreFileUploaderType as d2, CoreFileUploaderComponent as d3, CoreFilterHubComponent as d4, CoreFilterHubService as d5, ControlBase as d6, Textbox as d7, CoreControlService as d8, CustomValidators as d9, coreNavigationTrackerRoutes as dA, CoreOauthCallbackComponent as dB, CoreOauthCallbackOffice365Component as dC, EnumCoreOrgTreeaAccessorMode as dD, EnumCoreOrgTreeaSearchMode as dE, CoreOrgTreeComponent as dF, CoreOrgTreeState as dG, CoreOrgTreeService as dH, CoreOrgUnitSeekerComponent as dI, CoreOrgchartflexComponent as dJ, CoreOrgParamComponent as dK, EnumCorePageEditBootstrapClass as dL, EnumCorePageEditFieldType as dM, CorePageEditService as dN, CorePageEditLiteComponent as dO, CorePageEditTabComponent as dP, EnumExType as dQ, CorePageListService as dR, CorePageListState as dS, CorePageListContentComponent as dT, EnumCoreViewItemType as dU, CorePageViewComponent as dV, CorePaginationComponent as dW, CorePaginationFullComponent as dX, CorePaginationFullService as dY, CoreFileFormatPickerComponent as dZ, CorePermissionService as d_, URL_PATTERN as da, coreFormDesignRoutes as db, CoreFormTabComponent as dc, CoreFormLiteComponent as dd, CoreFormControlBaseComponent as de, EnumCoreSeekerColumnJob as df, EnumCoreSeekerColumnStaffProfile as dg, EnumCoreSeekerColumnContract as dh, EnumCoreSeekerColumnWorking as di, EnumCoreSeekerColumnWage as dj, EnumCoreSeekerColumnPosition as dk, EnumCoreSeekerColumnPositionConcurrent as dl, EnumCoreSeekerColumnAutoForm as dm, SeekerService as dn, CoreGridBufferComponent as dp, CoreHeaderParamsComponent as dq, CoreHelperComponent as dr, CoreLineComponent as ds, CoreLiquidWysiwygComponent as dt, CoreListComponent as du, CoreListLazyComponent as dv, CoreLoadingSurfaceComponent as dw, CoreMccComponent as dx, CoreMonthPickerComponent as dy, CoreNavigationTrackerComponent as dz, CorePageEditComponent as e, EnumRecursiveFields as e$, CorePermissionComponent as e0, CorePermissionActionsComponent as e1, CorePositionConcurrentSeekerComponent as e2, CorePositionSeekerComponent as e3, CoreQrcodeComponent as e4, EnumOparator as e5, CoreQueryBuilderComponent as e6, CoreReducerIconComponent as e7, CoreRotatingTextComponent as e8, CoreRouteAccumulatorComponent as e9, CoreYearSelectorComponent as eA, EnumCoreD3ScaleType as eB, CoreD3Service as eC, CorePieComponent as eD, CoreScatterPlotComponent as eE, EnumHrComparisonCode as eF, EnumICoreStatisticWidgetDataType as eG, CoreStatisticWidgetComponent as eH, DecisionComponent as eI, EvaluateDialogComponent as eJ, HuconcurrentlyComponent as eK, JobComponent as eL, LanguageChangerComponent as eM, DEFAULT_SVG as eN, ItemComponent as eO, NavigatorComponent as eP, OtpInputComponent as eQ, OtpInputService as eR, PageTitleComponent as eS, PaginationComponent as eT, FilterPipe as eU, normalizeHumanName as eV, PositionComponent as eW, PositionEditService as eX, CoreDatetimeService as eY, FileService as eZ, LongTaskService as e_, CoreRoutingHistoryComponent as ea, CoreSalaryPolicyPickerComponent as eb, CoreScrollComponent as ec, CoreScrollLazyComponent as ed, CoreSeenByComponent as ee, CoreShiftCardComponent as ef, CoreShiftCellComponent as eg, CoreShiftCollectionComponent as eh, CoreShiftStickerComponent as ei, STICKER_COLOR_SCHEMA as ej, CoreStatusStickerComponent as ek, CoreSubFormGroupComponent as el, CoreTabListComponent as em, CoreTagsComponent as en, CoreTopicPickerComponent as eo, EnumCoreArticleCategoryTreeaAccessorMode as ep, CoreTopicTreeComponent as eq, CoreTreeComponent as er, EnumCoreTreeGridEditMode as es, CoreTreeGridComponent as et, CoreWageSeekerComponent as eu, CoreWorkingSeekerComponent as ev, coreWorkflowRoutes as ew, CoreWorkflowBuilderComponent as ex, CoreWorkflowGroupEditComponent as ey, CoreYearPickerComponent as ez, CorePageHeaderComponent as f, RecursiveService as f0, StringService as f1, UnicodeService as f2, StaffProfileComponent as f3, ThreedotsComponent as f4, TooltipComponent as f5, UserActivityComponent as f6, WageComponent as f7, tooltip_directive as f8, coreStickerCollection_component as f9, dragReorder_directive as fa, CoreTabsComponent as g, CoreWorkflowService as h, EnumCoreFormControlSeekerSourceType as i, AlertService as j, CoreFormService as k, DbService as l, AiHintForColumnComponent as m, CoreWorkflowListComponent as n, TooltipDirective as o, DragReorderDirective as p, CanDeactivateGuard as q, TableCellPipe as r, MapAvatarToServerPipe as s, alertOptions as t, CoreTerminalSpinnerComponent as u, CoreFormDesignService as v, EnumWorkflowStepType as w, DomService as x, CoreDropdownComponent as y, CoreChecklistComponent as z };
|
|
45326
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-BJ3ZVba7.mjs.map
|