ngx-histaff-alpha 6.3.7 → 6.3.9
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-B8fivxy1.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-C91FUkXL.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-B8fivxy1.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DLEZuLXO.mjs → ngx-histaff-alpha-core-form-design.component-DQUPb25c.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-DLEZuLXO.mjs.map → ngx-histaff-alpha-core-form-design.component-DQUPb25c.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-F2nV8jgm.mjs → ngx-histaff-alpha-core-template-editor.component-DOZibiVG.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-F2nV8jgm.mjs.map → ngx-histaff-alpha-core-template-editor.component-DOZibiVG.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-yaqjJHzN.mjs → ngx-histaff-alpha-core-toast-loading.component-CqBRrU5R.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-yaqjJHzN.mjs.map → ngx-histaff-alpha-core-toast-loading.component-CqBRrU5R.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-D2txp5DP.mjs → ngx-histaff-alpha-core-workflow-consume.component-DJN5n0Y-.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-D2txp5DP.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-DJN5n0Y-.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-DB6XegRZ.mjs → ngx-histaff-alpha-db-settings.component-CQc3XpNh.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-DB6XegRZ.mjs.map → ngx-histaff-alpha-db-settings.component-CQc3XpNh.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DRbyCxB_.mjs → ngx-histaff-alpha-design-wrapper.component-C0U6ewY7.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DRbyCxB_.mjs.map → ngx-histaff-alpha-design-wrapper.component-C0U6ewY7.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-CdPC_FcN.mjs → ngx-histaff-alpha-design-wrapper.route-COZXQaNQ.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-CdPC_FcN.mjs.map → ngx-histaff-alpha-design-wrapper.route-COZXQaNQ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BRxQHNtj.mjs → ngx-histaff-alpha-form-array-props.component-LQdzcY-m.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BRxQHNtj.mjs.map → ngx-histaff-alpha-form-array-props.component-LQdzcY-m.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-O8f-QHVW.mjs → ngx-histaff-alpha-hrm-schema.component-C4FXeBSE.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-O8f-QHVW.mjs.map → ngx-histaff-alpha-hrm-schema.component-C4FXeBSE.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-Dt0rgzHG.mjs → ngx-histaff-alpha-live-form.component-2kAqtlyo.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-live-form.component-Dt0rgzHG.mjs.map → ngx-histaff-alpha-live-form.component-2kAqtlyo.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-CrtUN9ex.mjs → ngx-histaff-alpha-ngx-histaff-alpha-ByIs02SI.mjs} +1243 -1156
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-ByIs02SI.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DtlcUxIS.mjs → ngx-histaff-alpha-simple-chat.component-DQJmpxIo.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DtlcUxIS.mjs.map → ngx-histaff-alpha-simple-chat.component-DQJmpxIo.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BXyP9Vki.mjs → ngx-histaff-alpha-template-list.component-B8DQ5E2P.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-BXyP9Vki.mjs.map → ngx-histaff-alpha-template-list.component-B8DQ5E2P.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-ySy7DIdC.mjs → ngx-histaff-alpha-tracker-studio.component-cnxgZ6An.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-ySy7DIdC.mjs.map → ngx-histaff-alpha-tracker-studio.component-cnxgZ6An.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-qxz8Ozah.mjs → ngx-histaff-alpha-wf-form-assign.component-BfZAeogE.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-qxz8Ozah.mjs.map → ngx-histaff-alpha-wf-form-assign.component-BfZAeogE.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DbZq1DK-.mjs → ngx-histaff-alpha-wf-global-config.component-BmZ9RmJD.mjs} +19 -2
- package/fesm2022/ngx-histaff-alpha-wf-global-config.component-BmZ9RmJD.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-DjFOVp06.mjs → ngx-histaff-alpha-wf-instance-status.component-DeRlJp4L.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-DjFOVp06.mjs.map → ngx-histaff-alpha-wf-instance-status.component-DeRlJp4L.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-eT3UGhUM.mjs → ngx-histaff-alpha-wf-instance-step-react.component-BsBX4QJV.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-eT3UGhUM.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-BsBX4QJV.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-com-tree/com-party.service.d.ts +5 -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;
|
|
@@ -4924,8 +4925,14 @@ class LangInterceptor {
|
|
|
4924
4925
|
this.mls = mls;
|
|
4925
4926
|
}
|
|
4926
4927
|
intercept(req, next) {
|
|
4928
|
+
// const modifiedReq = req.clone({
|
|
4929
|
+
// headers: req.headers.set('Client-Languague', this.mls.lang$.value),
|
|
4930
|
+
// });
|
|
4927
4931
|
const modifiedReq = req.clone({
|
|
4928
|
-
|
|
4932
|
+
setHeaders: {
|
|
4933
|
+
'Client-Languague': this.mls.lang$.value, // giữ
|
|
4934
|
+
'Client-Language': this.mls.lang$.value // mới
|
|
4935
|
+
}
|
|
4929
4936
|
});
|
|
4930
4937
|
return next.handle(modifiedReq);
|
|
4931
4938
|
}
|
|
@@ -4938,8 +4945,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
4938
4945
|
// Fn style
|
|
4939
4946
|
function langInterceptor(req, next) {
|
|
4940
4947
|
const mls = inject(MultiLanguageService);
|
|
4948
|
+
// const modifiedReq = req.clone({
|
|
4949
|
+
// headers: req.headers.set('Client-Languague', mls.lang$.value),
|
|
4950
|
+
// });
|
|
4941
4951
|
const modifiedReq = req.clone({
|
|
4942
|
-
|
|
4952
|
+
setHeaders: {
|
|
4953
|
+
'Client-Languague': mls.lang$.value, // giữ
|
|
4954
|
+
'Client-Language': mls.lang$.value // mới
|
|
4955
|
+
}
|
|
4943
4956
|
});
|
|
4944
4957
|
return next(modifiedReq);
|
|
4945
4958
|
}
|
|
@@ -9176,7 +9189,7 @@ class SocketService {
|
|
|
9176
9189
|
.withUrl(this.appConfigService.BASE_URL + '/hubs/signal', {
|
|
9177
9190
|
accessTokenFactory: () => token,
|
|
9178
9191
|
skipNegotiation: true,
|
|
9179
|
-
transport: HttpTransportType.WebSockets
|
|
9192
|
+
transport: HttpTransportType.WebSockets || HttpTransportType.ServerSentEvents || HttpTransportType.LongPolling
|
|
9180
9193
|
})
|
|
9181
9194
|
.configureLogging(LogLevel.Information)
|
|
9182
9195
|
.build();
|
|
@@ -31585,7 +31598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
31585
31598
|
const hrmSchemaRoutes = [
|
|
31586
31599
|
{
|
|
31587
31600
|
path: '',
|
|
31588
|
-
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-
|
|
31601
|
+
loadComponent: () => import('./ngx-histaff-alpha-hrm-schema.component-C4FXeBSE.mjs').then(m => m.HrmSchemaComponent)
|
|
31589
31602
|
}
|
|
31590
31603
|
];
|
|
31591
31604
|
|
|
@@ -33758,7 +33771,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
33758
33771
|
const simpleChatRoutes = [
|
|
33759
33772
|
{
|
|
33760
33773
|
path: '',
|
|
33761
|
-
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-
|
|
33774
|
+
loadComponent: () => import('./ngx-histaff-alpha-simple-chat.component-DQJmpxIo.mjs').then(m => m.SimpleChatComponent)
|
|
33762
33775
|
}
|
|
33763
33776
|
];
|
|
33764
33777
|
|
|
@@ -36197,335 +36210,1044 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36197
36210
|
], 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
36211
|
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: ActionService }, { type: AppService }, { type: AlertService }] });
|
|
36199
36212
|
|
|
36200
|
-
class
|
|
36201
|
-
constructor() {
|
|
36202
|
-
this
|
|
36203
|
-
this
|
|
36204
|
-
this
|
|
36205
|
-
this
|
|
36206
|
-
this
|
|
36207
|
-
this
|
|
36208
|
-
this
|
|
36209
|
-
this
|
|
36210
|
-
this
|
|
36211
|
-
|
|
36212
|
-
|
|
36213
|
-
|
|
36214
|
-
|
|
36215
|
-
|
|
36216
|
-
this.$navigationDirection = signal(1);
|
|
36217
|
-
this.subscriptions = [];
|
|
36218
|
-
}
|
|
36219
|
-
ngOnInit() { }
|
|
36220
|
-
goFirst() {
|
|
36221
|
-
this.$navigationDirection.set(-1);
|
|
36222
|
-
this.$suspendCurrentPage.set(false);
|
|
36223
|
-
setTimeout(() => {
|
|
36224
|
-
if (!!this.$pageCount())
|
|
36225
|
-
this.$currentPage().next(1);
|
|
36226
|
-
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotatebackwards');
|
|
36227
|
-
});
|
|
36228
|
-
}
|
|
36229
|
-
goLast() {
|
|
36230
|
-
this.$navigationDirection.set(1);
|
|
36231
|
-
this.$suspendCurrentPage.set(false);
|
|
36232
|
-
setTimeout(() => {
|
|
36233
|
-
if (!!this.$pageCount())
|
|
36234
|
-
this.$currentPage().next(this.$pageCount());
|
|
36235
|
-
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotateforwards');
|
|
36236
|
-
});
|
|
36237
|
-
}
|
|
36238
|
-
goPrevious() {
|
|
36239
|
-
this.$navigationDirection.set(-1);
|
|
36240
|
-
this.$suspendCurrentPage.set(false);
|
|
36241
|
-
setTimeout(() => {
|
|
36242
|
-
if (!!this.$pageCount())
|
|
36243
|
-
this.$currentPage().next(this.$currentPage().value - 1);
|
|
36244
|
-
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotatebackwards');
|
|
36213
|
+
class ComPartyService {
|
|
36214
|
+
constructor(recursiveService, alertService) {
|
|
36215
|
+
this.recursiveService = recursiveService;
|
|
36216
|
+
this.alertService = alertService;
|
|
36217
|
+
this.instances = [];
|
|
36218
|
+
this.loading = true;
|
|
36219
|
+
this.comTreeData$ = new BehaviorSubject([]);
|
|
36220
|
+
this.comTreeDataWithPeople$ = new BehaviorSubject([]);
|
|
36221
|
+
this.linerData$ = new BehaviorSubject([]);
|
|
36222
|
+
this.buildTreeFlag$ = new BehaviorSubject(false);
|
|
36223
|
+
this.status$ = new BehaviorSubject({
|
|
36224
|
+
selectedKey: undefined,
|
|
36225
|
+
activeKeys: [],
|
|
36226
|
+
checkedKeys: [],
|
|
36227
|
+
expandedKeys: [],
|
|
36228
|
+
checkInheritance: true
|
|
36245
36229
|
});
|
|
36246
|
-
|
|
36247
|
-
|
|
36248
|
-
|
|
36249
|
-
|
|
36250
|
-
|
|
36251
|
-
|
|
36252
|
-
|
|
36253
|
-
|
|
36230
|
+
this.appService = inject(AppService);
|
|
36231
|
+
this.linerData$.subscribe(xs => {
|
|
36232
|
+
const idCountMap = new Map();
|
|
36233
|
+
xs.forEach(item => {
|
|
36234
|
+
const id = item.id;
|
|
36235
|
+
idCountMap.set(id, (idCountMap.get(id) ?? 0) + 1);
|
|
36236
|
+
});
|
|
36237
|
+
const duplicates = Array.from(idCountMap.entries())
|
|
36238
|
+
.filter(([_, count]) => count > 1)
|
|
36239
|
+
.map(([id]) => id);
|
|
36240
|
+
if (!!duplicates.length) {
|
|
36241
|
+
if (isDevMode()) {
|
|
36242
|
+
alertService.error('🔁 Duplicate IDs: ' + duplicates.reduce((a, c) => a + ";" + c, ''), alertOptions);
|
|
36243
|
+
}
|
|
36244
|
+
}
|
|
36254
36245
|
});
|
|
36255
36246
|
}
|
|
36256
|
-
|
|
36257
|
-
|
|
36258
|
-
|
|
36259
|
-
|
|
36260
|
-
|
|
36261
|
-
|
|
36262
|
-
|
|
36263
|
-
|
|
36264
|
-
|
|
36265
|
-
|
|
36266
|
-
|
|
36247
|
+
buildComTreeData(status = {
|
|
36248
|
+
selectedKey: undefined,
|
|
36249
|
+
activeKeys: [],
|
|
36250
|
+
checkedKeys: [],
|
|
36251
|
+
expandedKeys: [],
|
|
36252
|
+
checkInheritance: true
|
|
36253
|
+
}) {
|
|
36254
|
+
this.loading = true;
|
|
36255
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linerData$.value));
|
|
36256
|
+
if (typeof Worker !== 'undefined') {
|
|
36257
|
+
// Create a new
|
|
36258
|
+
console.log("🟢🟢 Worker works");
|
|
36259
|
+
const worker = new Worker(liner_to_nested_array_script);
|
|
36260
|
+
worker.addEventListener('message', ({ data }) => {
|
|
36261
|
+
const newData = data.list;
|
|
36262
|
+
this.comTreeData$.next(newData);
|
|
36263
|
+
this.loading = false;
|
|
36267
36264
|
});
|
|
36268
|
-
|
|
36269
|
-
|
|
36265
|
+
worker.postMessage({
|
|
36266
|
+
list: cloneCopy,
|
|
36267
|
+
keyField: 'id',
|
|
36268
|
+
titleField: 'name',
|
|
36269
|
+
parentField: 'parentId',
|
|
36270
|
+
activeField: 'active',
|
|
36271
|
+
checkedField: 'checked',
|
|
36272
|
+
expandedField: 'expand',
|
|
36273
|
+
status
|
|
36270
36274
|
});
|
|
36271
|
-
|
|
36272
|
-
|
|
36275
|
+
}
|
|
36276
|
+
else {
|
|
36277
|
+
// Web workers are not supported in this environment.
|
|
36278
|
+
// You should add a fallback so that your program still executes correctly.
|
|
36279
|
+
this.recursiveService
|
|
36280
|
+
.linerArrayToNestedArray(cloneCopy, 'id', 'name', 'parentId', 'active', 'checked', 'expand', status)
|
|
36281
|
+
.subscribe((obj) => {
|
|
36282
|
+
const newData = obj.list;
|
|
36283
|
+
this.comTreeData$.next(newData);
|
|
36284
|
+
this.loading = false;
|
|
36273
36285
|
});
|
|
36274
|
-
|
|
36275
|
-
this.touchStartSubscription$ = this.touchStartStream$.subscribe();
|
|
36276
|
-
this.mouseUpSubscription$ = this.mouseUpStream$.subscribe();
|
|
36277
|
-
this.touchEndSubscription$ = this.touchEndStream$.subscribe();
|
|
36278
|
-
if (this.$background())
|
|
36279
|
-
setTimeout(() => this.$container().nativeElement.style.setProperty('--bg', this.$background()));
|
|
36280
|
-
if (this.$height())
|
|
36281
|
-
this.$container()?.nativeElement.style.setProperty('--height', this.$height() + 'px');
|
|
36282
|
-
});
|
|
36286
|
+
}
|
|
36283
36287
|
}
|
|
36284
|
-
|
|
36285
|
-
|
|
36286
|
-
|
|
36287
|
-
|
|
36288
|
-
|
|
36289
|
-
|
|
36290
|
-
|
|
36291
|
-
|
|
36292
|
-
|
|
36288
|
+
getComLinearData(userId) {
|
|
36289
|
+
return this.appService.getFullUrl("/api/ComUnit/GetAll");
|
|
36290
|
+
// return of(
|
|
36291
|
+
// {
|
|
36292
|
+
// ok: true,
|
|
36293
|
+
// status: 200,
|
|
36294
|
+
// body: {
|
|
36295
|
+
// statusCode: 200,
|
|
36296
|
+
// innerBody: COM_MOKEUP_DATA
|
|
36297
|
+
// } as IFormatedResponse
|
|
36298
|
+
// }
|
|
36299
|
+
// )
|
|
36293
36300
|
}
|
|
36294
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type:
|
|
36295
|
-
static { this.ɵ
|
|
36301
|
+
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 }); }
|
|
36302
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, providedIn: 'root' }); }
|
|
36296
36303
|
}
|
|
36297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type:
|
|
36298
|
-
type:
|
|
36299
|
-
args: [{
|
|
36300
|
-
|
|
36301
|
-
|
|
36302
|
-
|
|
36303
|
-
}], ctorParameters: () => [] });
|
|
36304
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ComPartyService, decorators: [{
|
|
36305
|
+
type: Injectable,
|
|
36306
|
+
args: [{
|
|
36307
|
+
providedIn: 'root'
|
|
36308
|
+
}]
|
|
36309
|
+
}], ctorParameters: () => [{ type: RecursiveService }, { type: AlertService }] });
|
|
36304
36310
|
|
|
36305
|
-
class
|
|
36306
|
-
|
|
36307
|
-
|
|
36311
|
+
class CoreComTreeComponent extends CoreFormControlBaseComponent {
|
|
36312
|
+
writeValue(obj) {
|
|
36313
|
+
this.value = obj;
|
|
36314
|
+
switch (this.accessorMode) {
|
|
36315
|
+
case EnumCoreOrgTreeaAccessorMode.CHECKED:
|
|
36316
|
+
if (!!obj) {
|
|
36317
|
+
const checkedKeys = [];
|
|
36318
|
+
this.checkedIds = obj; // <=== 24/10/2023
|
|
36319
|
+
obj.map(x => checkedKeys.push(x.toString()));
|
|
36320
|
+
this.loading = true;
|
|
36321
|
+
this.recursiveService.writeValueChecked(checkedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
36322
|
+
this.loading = false;
|
|
36323
|
+
if (!!this.data && !!this.data?.length)
|
|
36324
|
+
this.data[0].tree$Expanded = true;
|
|
36325
|
+
});
|
|
36326
|
+
}
|
|
36327
|
+
break;
|
|
36328
|
+
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE:
|
|
36329
|
+
case EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE:
|
|
36330
|
+
if (!!obj) {
|
|
36331
|
+
const activatedKeys = [];
|
|
36332
|
+
obj.map(x => activatedKeys.push(x.toString()));
|
|
36333
|
+
this.loading = true;
|
|
36334
|
+
this.recursiveService.writeValueActivated(activatedKeys, this.data, this.disabledLoopExpand).subscribe(_ => {
|
|
36335
|
+
this.loading = false;
|
|
36336
|
+
if (!!this.data && !!this.data?.length)
|
|
36337
|
+
this.data[0].tree$Expanded = true;
|
|
36338
|
+
});
|
|
36339
|
+
}
|
|
36340
|
+
break;
|
|
36341
|
+
default:
|
|
36342
|
+
break;
|
|
36343
|
+
}
|
|
36344
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
36345
|
+
}
|
|
36346
|
+
else /* EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE or EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE */ {
|
|
36347
|
+
}
|
|
36348
|
+
}
|
|
36349
|
+
setDisabledState(disabled) {
|
|
36350
|
+
this.disabled = disabled;
|
|
36351
|
+
}
|
|
36352
|
+
constructor(
|
|
36353
|
+
//public override injector: Injector,
|
|
36354
|
+
authService, recursiveService, mls, layoutService, coreOrgTreeService,
|
|
36355
|
+
// private coreOrgTreeState: CoreOrgTreeState,
|
|
36356
|
+
alertService, comPartyService) {
|
|
36357
|
+
super( /*injector*/);
|
|
36358
|
+
this.authService = authService;
|
|
36359
|
+
this.recursiveService = recursiveService;
|
|
36308
36360
|
this.mls = mls;
|
|
36309
|
-
this.
|
|
36310
|
-
this.
|
|
36311
|
-
this.
|
|
36312
|
-
this.
|
|
36313
|
-
this.
|
|
36314
|
-
|
|
36315
|
-
|
|
36316
|
-
|
|
36317
|
-
|
|
36318
|
-
|
|
36319
|
-
|
|
36320
|
-
|
|
36321
|
-
|
|
36322
|
-
|
|
36323
|
-
|
|
36324
|
-
|
|
36325
|
-
|
|
36326
|
-
|
|
36327
|
-
|
|
36328
|
-
|
|
36329
|
-
|
|
36330
|
-
|
|
36331
|
-
|
|
36332
|
-
|
|
36333
|
-
|
|
36334
|
-
|
|
36335
|
-
width: 50
|
|
36336
|
-
},
|
|
36337
|
-
{
|
|
36338
|
-
field: 'sourceAlias',
|
|
36339
|
-
type: 'string',
|
|
36340
|
-
caption: 'Source',
|
|
36341
|
-
align: 'left',
|
|
36342
|
-
sortDisabled: true,
|
|
36343
|
-
width: 60
|
|
36344
|
-
},
|
|
36345
|
-
{
|
|
36346
|
-
field: 'targetAlias',
|
|
36347
|
-
type: 'string',
|
|
36348
|
-
caption: 'Target',
|
|
36349
|
-
align: 'left',
|
|
36350
|
-
sortDisabled: true,
|
|
36351
|
-
width: 200
|
|
36352
|
-
},
|
|
36353
|
-
{
|
|
36354
|
-
field: 'tableName',
|
|
36355
|
-
type: 'string',
|
|
36356
|
-
caption: 'Table',
|
|
36357
|
-
align: 'left',
|
|
36358
|
-
sortDisabled: true,
|
|
36359
|
-
width: 200
|
|
36360
|
-
},
|
|
36361
|
-
{
|
|
36362
|
-
field: 'columnName',
|
|
36363
|
-
type: 'string',
|
|
36364
|
-
caption: 'Column',
|
|
36365
|
-
align: 'left',
|
|
36366
|
-
sortDisabled: true,
|
|
36367
|
-
width: 200
|
|
36368
|
-
},
|
|
36369
|
-
{
|
|
36370
|
-
field: 'sourceType',
|
|
36371
|
-
type: 'string',
|
|
36372
|
-
caption: 'Source type',
|
|
36373
|
-
align: 'left',
|
|
36374
|
-
sortDisabled: true,
|
|
36375
|
-
width: 100
|
|
36376
|
-
},
|
|
36377
|
-
{
|
|
36378
|
-
field: 'sourceIsPrimaryKey',
|
|
36379
|
-
type: 'boolean',
|
|
36380
|
-
caption: 'Source is PK',
|
|
36381
|
-
align: 'center',
|
|
36382
|
-
sortDisabled: true,
|
|
36383
|
-
width: 60
|
|
36384
|
-
},
|
|
36385
|
-
{
|
|
36386
|
-
field: 'sourceIsIdentityColumn',
|
|
36387
|
-
type: 'boolean',
|
|
36388
|
-
caption: 'Source is Identity',
|
|
36389
|
-
align: 'center',
|
|
36390
|
-
sortDisabled: true,
|
|
36391
|
-
width: 60
|
|
36392
|
-
},
|
|
36393
|
-
{
|
|
36394
|
-
field: 'sourceNullability',
|
|
36395
|
-
type: 'boolean',
|
|
36396
|
-
caption: 'Source nullability',
|
|
36397
|
-
align: 'center',
|
|
36398
|
-
sortDisabled: true,
|
|
36399
|
-
width: 70
|
|
36400
|
-
},
|
|
36401
|
-
{
|
|
36402
|
-
field: 'sourceSize',
|
|
36403
|
-
type: 'string',
|
|
36404
|
-
caption: 'Source size',
|
|
36405
|
-
align: 'right',
|
|
36406
|
-
sortDisabled: true,
|
|
36407
|
-
width: 100
|
|
36408
|
-
},
|
|
36409
|
-
{
|
|
36410
|
-
field: 'sourcePrecision',
|
|
36411
|
-
type: 'string',
|
|
36412
|
-
caption: 'Source precision',
|
|
36413
|
-
align: 'right',
|
|
36414
|
-
sortDisabled: true,
|
|
36415
|
-
width: 50
|
|
36416
|
-
},
|
|
36417
|
-
{
|
|
36418
|
-
field: 'sourceScale',
|
|
36419
|
-
type: 'string',
|
|
36420
|
-
caption: 'Source scale',
|
|
36421
|
-
align: 'right',
|
|
36422
|
-
sortDisabled: true,
|
|
36423
|
-
width: 50
|
|
36424
|
-
},
|
|
36425
|
-
{
|
|
36426
|
-
field: 'targetType',
|
|
36427
|
-
type: 'string',
|
|
36428
|
-
caption: 'Target type',
|
|
36429
|
-
align: 'left',
|
|
36430
|
-
sortDisabled: true,
|
|
36431
|
-
width: 100
|
|
36432
|
-
},
|
|
36433
|
-
{
|
|
36434
|
-
field: 'targetIsPrimaryKey',
|
|
36435
|
-
type: 'boolean',
|
|
36436
|
-
caption: 'Target is PK',
|
|
36437
|
-
align: 'center',
|
|
36438
|
-
sortDisabled: true,
|
|
36439
|
-
width: 60
|
|
36440
|
-
},
|
|
36441
|
-
{
|
|
36442
|
-
field: 'targetIsIdentityColumn',
|
|
36443
|
-
type: 'boolean',
|
|
36444
|
-
caption: 'Target is Identity',
|
|
36445
|
-
align: 'center',
|
|
36446
|
-
sortDisabled: true,
|
|
36447
|
-
width: 60
|
|
36448
|
-
},
|
|
36449
|
-
{
|
|
36450
|
-
field: 'targetNullability',
|
|
36451
|
-
type: 'boolean',
|
|
36452
|
-
caption: 'Target nullability',
|
|
36453
|
-
align: 'center',
|
|
36454
|
-
sortDisabled: true,
|
|
36455
|
-
width: 70
|
|
36456
|
-
},
|
|
36457
|
-
{
|
|
36458
|
-
field: 'targetSize',
|
|
36459
|
-
type: 'string',
|
|
36460
|
-
caption: 'Targer size',
|
|
36461
|
-
align: 'right',
|
|
36462
|
-
sortDisabled: true,
|
|
36463
|
-
width: 100
|
|
36464
|
-
},
|
|
36465
|
-
{
|
|
36466
|
-
field: 'targetPrecision',
|
|
36467
|
-
type: 'string',
|
|
36468
|
-
caption: 'Target precision',
|
|
36469
|
-
align: 'right',
|
|
36470
|
-
sortDisabled: true,
|
|
36471
|
-
width: 50
|
|
36472
|
-
},
|
|
36473
|
-
{
|
|
36474
|
-
field: 'targetScale',
|
|
36475
|
-
type: 'string',
|
|
36476
|
-
caption: 'Target scale',
|
|
36477
|
-
align: 'right',
|
|
36478
|
-
sortDisabled: true,
|
|
36479
|
-
width: 50
|
|
36480
|
-
},
|
|
36481
|
-
];
|
|
36482
|
-
this.tableHeight = 500;
|
|
36483
|
-
this.longApiRunning = false;
|
|
36484
|
-
this.defaultRequest = {
|
|
36485
|
-
pageNumber: 1,
|
|
36486
|
-
pageSize: 50
|
|
36487
|
-
};
|
|
36488
|
-
this.request$ = new BehaviorSubject(this.defaultRequest);
|
|
36489
|
-
this.currentPage$ = new BehaviorSubject(1);
|
|
36490
|
-
this.pageSize$ = new BehaviorSubject(50);
|
|
36491
|
-
this.pageCount = 0;
|
|
36492
|
-
this.suspendCurrentPageSubscription$ = new BehaviorSubject(false);
|
|
36493
|
-
this.sqlCommand = '';
|
|
36494
|
-
this.resolverSessionId = '';
|
|
36495
|
-
this.conflictTotal = 0;
|
|
36496
|
-
this.controller = null;
|
|
36361
|
+
this.layoutService = layoutService;
|
|
36362
|
+
this.coreOrgTreeService = coreOrgTreeService;
|
|
36363
|
+
this.alertService = alertService;
|
|
36364
|
+
this.comPartyService = comPartyService;
|
|
36365
|
+
this.lineColor = 'transparent';
|
|
36366
|
+
this.accessorMode = EnumCoreOrgTreeaAccessorMode.CHECKED;
|
|
36367
|
+
//TO BE NEW
|
|
36368
|
+
this.searchMode = EnumCoreOrgTreeaSearchMode.REDUCE;
|
|
36369
|
+
this.excludedIds$ = new BehaviorSubject([]); // 2024-05-10: to be implemented
|
|
36370
|
+
this.stateIsolated$ = new BehaviorSubject(false);
|
|
36371
|
+
this.itemDoubleClick = new EventEmitter();
|
|
36372
|
+
this.itemClick = new EventEmitter();
|
|
36373
|
+
this.showSearch = false;
|
|
36374
|
+
this.hiddenToolClickStream$ = new BehaviorSubject('');
|
|
36375
|
+
this.value = [];
|
|
36376
|
+
this.appConfigService = inject(AppConfigService);
|
|
36377
|
+
this.activeIds = [];
|
|
36378
|
+
this.checkedIds = [];
|
|
36379
|
+
this.subscriptions = [];
|
|
36380
|
+
this.search$ = new Subject();
|
|
36381
|
+
this.searchPlaceholder = "Tìm kiếm...";
|
|
36382
|
+
this.checkInheritance = true; // default value is true
|
|
36383
|
+
this.showDissolved = false; // default value is false
|
|
36384
|
+
this.initializing = true;
|
|
36385
|
+
// this.reduced$ = this.coreOrgTreeState.coreOrgTreeReduced$;
|
|
36386
|
+
this.initializing = false;
|
|
36497
36387
|
}
|
|
36498
|
-
|
|
36499
|
-
|
|
36500
|
-
|
|
36501
|
-
|
|
36502
|
-
.subscribe(x => {
|
|
36503
|
-
this.longApiRunning = false;
|
|
36504
|
-
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
36505
|
-
this.data = x.body.innerBody.data;
|
|
36506
|
-
this.pageCount = Math.ceil(x.body.innerBody.count / this.pageSize$.value);
|
|
36507
|
-
this.currentPage$.next(x.body.innerBody.pageNumber);
|
|
36508
|
-
this.conflictTotal = x.body.innerBody.count || 0;
|
|
36509
|
-
}
|
|
36510
|
-
}));
|
|
36388
|
+
ngOnChanges(changes) {
|
|
36389
|
+
if (changes['height']) {
|
|
36390
|
+
this.resizeHeight();
|
|
36391
|
+
}
|
|
36511
36392
|
}
|
|
36512
|
-
|
|
36513
|
-
|
|
36514
|
-
|
|
36515
|
-
|
|
36516
|
-
|
|
36517
|
-
|
|
36518
|
-
|
|
36519
|
-
|
|
36520
|
-
|
|
36393
|
+
ngOnInit() {
|
|
36394
|
+
super.register();
|
|
36395
|
+
//this.layoutService.leftbarOpen$.next(false);
|
|
36396
|
+
this.instanceNumber = new Date().getTime();
|
|
36397
|
+
const newInstance = {
|
|
36398
|
+
instanceNumber: this.instanceNumber,
|
|
36399
|
+
selectedKey$: new BehaviorSubject(undefined),
|
|
36400
|
+
activeKeys$: new BehaviorSubject([]),
|
|
36401
|
+
checkedKeys$: new BehaviorSubject([]),
|
|
36402
|
+
expandedKeys$: new BehaviorSubject([]),
|
|
36403
|
+
checkInheritance$: new BehaviorSubject(true)
|
|
36404
|
+
};
|
|
36405
|
+
this.comPartyService.instances.push(newInstance);
|
|
36406
|
+
// Check xem chiều cao height có được truyền vào hay không
|
|
36407
|
+
if (this.height === undefined) {
|
|
36408
|
+
if (isDevMode()) {
|
|
36409
|
+
//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);
|
|
36521
36410
|
}
|
|
36522
|
-
|
|
36523
|
-
|
|
36524
|
-
|
|
36411
|
+
this.subscriptions.push(this.layoutService.contentContainerHeight$.subscribe(x => {
|
|
36412
|
+
// basicSpacing là paddingBottom của lớp content-container
|
|
36413
|
+
this.height = x - this.layoutService.corePageHeaderHeight - this.layoutService.basicSpacing;
|
|
36414
|
+
}));
|
|
36415
|
+
}
|
|
36416
|
+
this.subscriptions.push(this.comPartyService.linerData$.subscribe((x) => this.linearComArray = x));
|
|
36417
|
+
this.subscriptions.push(this.comPartyService.buildTreeFlag$.pipe(skip(1)).subscribe(_ => {
|
|
36418
|
+
this.buildComTreeData();
|
|
36419
|
+
}));
|
|
36420
|
+
this.subscriptions.push(this.stateIsolated$.subscribe(x => {
|
|
36421
|
+
if (x) {
|
|
36422
|
+
if (!!this.statusSubscription) {
|
|
36423
|
+
this.statusSubscription.unsubscribe();
|
|
36424
|
+
}
|
|
36525
36425
|
}
|
|
36526
|
-
|
|
36527
|
-
|
|
36528
|
-
|
|
36426
|
+
else {
|
|
36427
|
+
if (!this.statusSubscription) {
|
|
36428
|
+
this.statusSubscription = this.comPartyService.status$.subscribe((x) => {
|
|
36429
|
+
console.log("this.organizationService.status$ changes", x);
|
|
36430
|
+
const newActiveIds = [];
|
|
36431
|
+
x.activeKeys.map((k) => {
|
|
36432
|
+
newActiveIds.push(Number(k));
|
|
36433
|
+
});
|
|
36434
|
+
this.activeIds = newActiveIds;
|
|
36435
|
+
if (this.accessorMode !== EnumCoreOrgTreeaAccessorMode.CHECKED) {
|
|
36436
|
+
this.value = this.activeIds;
|
|
36437
|
+
this.onChange(this.activeIds);
|
|
36438
|
+
}
|
|
36439
|
+
this.selectedKey = x.selectedKey;
|
|
36440
|
+
});
|
|
36441
|
+
}
|
|
36442
|
+
}
|
|
36443
|
+
}));
|
|
36444
|
+
this.subscriptions.push(this.coreOrgTreeService.showSearch$.subscribe(x => this.showSearch = x));
|
|
36445
|
+
this.subscriptions.push(this.hiddenToolClickStream$.pipe(buffer(this.hiddenToolClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
36446
|
+
.subscribe(_ => {
|
|
36447
|
+
this.coreOrgTreeService.showSearch$.next(!this.coreOrgTreeService.showSearch$.value);
|
|
36448
|
+
}));
|
|
36449
|
+
this.subscriptions.push(this.search$
|
|
36450
|
+
.pipe(filter((x) => x !== null), debounceTime(500), distinctUntilChanged(), switchMap((text) => {
|
|
36451
|
+
console.log('switchMap works');
|
|
36452
|
+
this.loading = true;
|
|
36453
|
+
// AUG 2024 NEW : MUST BE TESTED
|
|
36454
|
+
if (this.searchMode === EnumCoreOrgTreeaSearchMode.HIGHLIGHT) {
|
|
36455
|
+
return this.recursiveService.findItem(text, this.data);
|
|
36456
|
+
}
|
|
36457
|
+
else {
|
|
36458
|
+
return of(this.recursiveService.reducingFilter(this.scrollContainer, text));
|
|
36459
|
+
}
|
|
36460
|
+
}))
|
|
36461
|
+
.subscribe((x) => {
|
|
36462
|
+
this.loading = false;
|
|
36463
|
+
// if (this.searchMode === EnumCoreOrgTreeaSearchMode.REDUCE) {
|
|
36464
|
+
// this.dataFiltered = x as IOrgTreeItem[];
|
|
36465
|
+
// }
|
|
36466
|
+
}));
|
|
36467
|
+
this.subscriptions.push(this.comPartyService.status$
|
|
36468
|
+
.pipe(filter((value) => !!!this.initializing && !!value))
|
|
36469
|
+
.subscribe((x) => {
|
|
36470
|
+
if (!!localStorage) {
|
|
36471
|
+
localStorage.setItem('coreOrgTreeStatus', JSON.stringify(x));
|
|
36472
|
+
}
|
|
36473
|
+
}));
|
|
36474
|
+
this.subscriptions.push(this.mls.lang$.subscribe((x) => (this.lang = x)));
|
|
36475
|
+
}
|
|
36476
|
+
buildComTree(comLinerData) {
|
|
36477
|
+
if (!this.appConfigService.FEDERATION_COM_PARTY_ENABLED)
|
|
36478
|
+
return;
|
|
36479
|
+
this.comPartyService.linerData$.next(comLinerData);
|
|
36480
|
+
const cloneCopy = JSON.parse(JSON.stringify(comLinerData));
|
|
36481
|
+
console.group("comLinerData...", comLinerData);
|
|
36482
|
+
if (!!comLinerData) {
|
|
36483
|
+
if (typeof Worker !== 'undefined') {
|
|
36484
|
+
console.log('🟢 Worker works');
|
|
36485
|
+
// Create a new
|
|
36486
|
+
const worker = new Worker(liner_to_nested_array_script);
|
|
36487
|
+
worker.addEventListener("message", ({ data }) => {
|
|
36488
|
+
console.log("ComTreeData calculation finished!", new Date().getTime());
|
|
36489
|
+
this.comPartyService.loading = false;
|
|
36490
|
+
this.comPartyService.comTreeData$.next(data.list);
|
|
36491
|
+
this.comPartyService.linerData$.next(data.rawList);
|
|
36492
|
+
});
|
|
36493
|
+
console.log("ComTreeData is being calculated by Worker...");
|
|
36494
|
+
console.log("this.comPartyService.status$.value", this.comPartyService.status$.value);
|
|
36495
|
+
worker.postMessage({
|
|
36496
|
+
list: cloneCopy,
|
|
36497
|
+
keyField: 'id',
|
|
36498
|
+
titleField: 'name',
|
|
36499
|
+
parentField: 'parentId',
|
|
36500
|
+
activeField: 'active',
|
|
36501
|
+
checkedField: 'checked',
|
|
36502
|
+
expandedField: 'expanded',
|
|
36503
|
+
status: this.comPartyService.status$.value, // <=== this had been already retrieved on app-initialization
|
|
36504
|
+
orderBy: 'orderNum'
|
|
36505
|
+
});
|
|
36506
|
+
}
|
|
36507
|
+
else {
|
|
36508
|
+
// Web workers are not supported in this environment.
|
|
36509
|
+
// You should add a fallback so that your program still executes correctly.
|
|
36510
|
+
console.log("this.comPartyService.status$.value", this.comPartyService.status$.value);
|
|
36511
|
+
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
|
|
36512
|
+
)
|
|
36513
|
+
.subscribe(data => {
|
|
36514
|
+
console.log("data", data);
|
|
36515
|
+
this.comPartyService.comTreeData$.next(data.list);
|
|
36516
|
+
this.comPartyService.linerData$.next(data.rawList);
|
|
36517
|
+
}));
|
|
36518
|
+
}
|
|
36519
|
+
}
|
|
36520
|
+
}
|
|
36521
|
+
resizeHeight() {
|
|
36522
|
+
// height is not given and the tree resize as standard
|
|
36523
|
+
if (!!!this.height) {
|
|
36524
|
+
const sizeHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
36525
|
+
.getPropertyValue('--size-header-height')
|
|
36526
|
+
.replace('px', ''));
|
|
36527
|
+
const sizeCorePageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
36528
|
+
.getPropertyValue('--size-core-page-header-height')
|
|
36529
|
+
.replace('px', ''));
|
|
36530
|
+
const containerHeight = window.innerHeight - sizeHeaderHeight - sizeCorePageHeaderHeight;
|
|
36531
|
+
const pageHeaderHeight = Number(getComputedStyle(document.documentElement)
|
|
36532
|
+
.getPropertyValue('--size-core-page-header-height')
|
|
36533
|
+
.replace('px', ''));
|
|
36534
|
+
const paginationHeight = Number(getComputedStyle(document.documentElement)
|
|
36535
|
+
.getPropertyValue('--size-core-pagination-height')
|
|
36536
|
+
.replace('px', ''));
|
|
36537
|
+
const sizeMarginCorePaginationFull = Number(getComputedStyle(document.documentElement)
|
|
36538
|
+
.getPropertyValue('--size-margin-core-pagination')
|
|
36539
|
+
.replace('px', ''));
|
|
36540
|
+
const height = containerHeight - pageHeaderHeight - paginationHeight + sizeMarginCorePaginationFull;
|
|
36541
|
+
console.log(height);
|
|
36542
|
+
this.container?.nativeElement.style.setProperty('--height', height + 'px');
|
|
36543
|
+
}
|
|
36544
|
+
else {
|
|
36545
|
+
this.container?.nativeElement.style.setProperty('--height', this.height + 'px');
|
|
36546
|
+
}
|
|
36547
|
+
}
|
|
36548
|
+
ngAfterViewInit() {
|
|
36549
|
+
setTimeout(() => {
|
|
36550
|
+
if (!!this.authService.data$.value?.id && (!this.comPartyService.linerData$?.value || (!!this.comPartyService.linerData$?.value && !this.comPartyService.linerData$?.value.length))) {
|
|
36551
|
+
this.comPartyService.getComLinearData(this.authService.data$.value.id).pipe(tap$1(_ => this.loading = true), finalize$1(() => this.loading = false)).subscribe(x => {
|
|
36552
|
+
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
36553
|
+
this.comPartyService.linerData$.next(x.body.innerBody.map(i => ({
|
|
36554
|
+
...i,
|
|
36555
|
+
active: i.isActive
|
|
36556
|
+
})));
|
|
36557
|
+
this.comPartyService.buildTreeFlag$.next(!this.comPartyService.buildTreeFlag$.value);
|
|
36558
|
+
}
|
|
36559
|
+
});
|
|
36560
|
+
}
|
|
36561
|
+
this.subscriptions.push(this.comPartyService.comTreeData$.subscribe((x) => {
|
|
36562
|
+
this.data = x;
|
|
36563
|
+
//this.dataFiltered = JSON.parse(JSON.stringify(x));
|
|
36564
|
+
console.log("new comtree Data coming", this.data, new Date().getTime());
|
|
36565
|
+
if (!!this.data) {
|
|
36566
|
+
if (!!this.data.length)
|
|
36567
|
+
this.data[0].tree$Expanded = true;
|
|
36568
|
+
}
|
|
36569
|
+
}));
|
|
36570
|
+
this.subscriptions.push(this.coreOrgTreeService.arrowFontSize$.subscribe(x => {
|
|
36571
|
+
this.container?.nativeElement.style.setProperty('--arrow-font-size', x + 'px');
|
|
36572
|
+
}));
|
|
36573
|
+
this.subscriptions.push(this.coreOrgTreeService.titleWrapperMaxWidth$.pipe(filter(x => !!x)).subscribe(x => {
|
|
36574
|
+
this.container?.nativeElement.style.setProperty('--title-wrapper-max-width', x + 'px');
|
|
36575
|
+
}));
|
|
36576
|
+
this.subscriptions.push(this.comPartyService.status$.subscribe(x => {
|
|
36577
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE && !!x.activeKeys) {
|
|
36578
|
+
this.onChange(x.activeKeys.map(i => Number(i)));
|
|
36579
|
+
}
|
|
36580
|
+
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.ACTIVATED_SINGLE) {
|
|
36581
|
+
// tạm thời bỏ qua
|
|
36582
|
+
}
|
|
36583
|
+
else if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED && !!x.checkedKeys) {
|
|
36584
|
+
this.onChange(x.checkedKeys.map(i => Number(i)));
|
|
36585
|
+
}
|
|
36586
|
+
}));
|
|
36587
|
+
});
|
|
36588
|
+
}
|
|
36589
|
+
// onItemClickLocal(e: IComTreeItem): void {
|
|
36590
|
+
// this.linnerOrgArray.map((x) => (x.active = false));
|
|
36591
|
+
// setTimeout(() => this.buildTreeData());
|
|
36592
|
+
// }
|
|
36593
|
+
onToggleItem(e) {
|
|
36594
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linearComArray));
|
|
36595
|
+
const filter = cloneCopy.filter((x) => x.id === e.id);
|
|
36596
|
+
if (filter.length === 1) {
|
|
36597
|
+
filter[0].expand = !!!e.expand;
|
|
36598
|
+
}
|
|
36599
|
+
this.linearComArray = cloneCopy;
|
|
36600
|
+
setTimeout(() => this.buildComTreeData());
|
|
36601
|
+
}
|
|
36602
|
+
// buildTreeData(): void {
|
|
36603
|
+
// this.loading = true;
|
|
36604
|
+
// const cloneCopy = JSON.parse(JSON.stringify(this.linnerOrgArray));
|
|
36605
|
+
// if (typeof Worker !== 'undefined') {
|
|
36606
|
+
// // Create a new
|
|
36607
|
+
// console.log("🟢🟢 Worker works");
|
|
36608
|
+
// this.worker = new Worker(liner_to_nested_array_script);
|
|
36609
|
+
// this.worker.addEventListener('message', ({ data }) => {
|
|
36610
|
+
// this.data = data.list;
|
|
36611
|
+
// //this.dataFiltered = JSON.parse(JSON.stringify(data.list));
|
|
36612
|
+
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
36613
|
+
// this.loading = false;
|
|
36614
|
+
// });
|
|
36615
|
+
// this.worker.postMessage({
|
|
36616
|
+
// list: cloneCopy,
|
|
36617
|
+
// keyField: 'id',
|
|
36618
|
+
// titleField: 'name',
|
|
36619
|
+
// parentField: 'parentId',
|
|
36620
|
+
// activeField: 'active',
|
|
36621
|
+
// //inheritantActiveField: 'inheritantActive',
|
|
36622
|
+
// checkedField: 'checked',
|
|
36623
|
+
// expandedField: 'expand',
|
|
36624
|
+
// });
|
|
36625
|
+
// } else {
|
|
36626
|
+
// // Web workers are not supported in this environment.
|
|
36627
|
+
// // You should add a fallback so that your program still executes correctly.
|
|
36628
|
+
// const status = this.organizationService.status$.value;
|
|
36629
|
+
// this.subscriptions.push(
|
|
36630
|
+
// this.recursiveService
|
|
36631
|
+
// .linerArrayToNestedArray(
|
|
36632
|
+
// cloneCopy,
|
|
36633
|
+
// 'id',
|
|
36634
|
+
// 'name',
|
|
36635
|
+
// 'parentId',
|
|
36636
|
+
// 'active',
|
|
36637
|
+
// 'checked',
|
|
36638
|
+
// 'expand',
|
|
36639
|
+
// //status
|
|
36640
|
+
// )
|
|
36641
|
+
// .subscribe((obj) => {
|
|
36642
|
+
// this.data = obj.list;
|
|
36643
|
+
// //this.dataFiltered = JSON.parse(JSON.stringify(obj.list));
|
|
36644
|
+
// if (!!this.data && !!this.data?.length) this.data[0].tree$Expanded = true;
|
|
36645
|
+
// this.loading = false;
|
|
36646
|
+
// })
|
|
36647
|
+
// );
|
|
36648
|
+
// }
|
|
36649
|
+
// }
|
|
36650
|
+
buildComTreeData() {
|
|
36651
|
+
this.loading = true;
|
|
36652
|
+
const cloneCopy = JSON.parse(JSON.stringify(this.linearComArray));
|
|
36653
|
+
// ✅ ADD THIS FILTER
|
|
36654
|
+
const filteredList = !this.showDissolved
|
|
36655
|
+
? cloneCopy.filter(x => x.active === true)
|
|
36656
|
+
: cloneCopy;
|
|
36657
|
+
if (typeof Worker !== 'undefined') {
|
|
36658
|
+
this.worker = new Worker(liner_to_nested_array_script);
|
|
36659
|
+
this.worker.addEventListener('message', ({ data }) => {
|
|
36660
|
+
this.data = data.list;
|
|
36661
|
+
if (!!this.data?.length)
|
|
36662
|
+
this.data[0].tree$Expanded = true;
|
|
36663
|
+
this.loading = false;
|
|
36664
|
+
});
|
|
36665
|
+
// ✅ USE filteredList INSTEAD OF cloneCopy
|
|
36666
|
+
this.worker.postMessage({
|
|
36667
|
+
list: filteredList,
|
|
36668
|
+
keyField: 'id',
|
|
36669
|
+
titleField: 'name',
|
|
36670
|
+
parentField: 'parentId',
|
|
36671
|
+
activeField: 'active',
|
|
36672
|
+
checkedField: 'checked',
|
|
36673
|
+
expandedField: 'expand',
|
|
36674
|
+
});
|
|
36675
|
+
}
|
|
36676
|
+
else {
|
|
36677
|
+
this.subscriptions.push(this.recursiveService
|
|
36678
|
+
.linerArrayToNestedArray(filteredList, // ✅ use filteredList
|
|
36679
|
+
'id', 'name', 'parentId', 'active', 'checked', 'expand')
|
|
36680
|
+
.subscribe((obj) => {
|
|
36681
|
+
this.data = obj.list;
|
|
36682
|
+
if (!!this.data?.length)
|
|
36683
|
+
this.data[0].tree$Expanded = true;
|
|
36684
|
+
this.loading = false;
|
|
36685
|
+
}));
|
|
36686
|
+
}
|
|
36687
|
+
}
|
|
36688
|
+
onExpandTogglerClick(e, event) {
|
|
36689
|
+
event.stopPropagation();
|
|
36690
|
+
const newValue = !e.tree$Expanded;
|
|
36691
|
+
e.tree$Expanded = newValue;
|
|
36692
|
+
// updating status with newValue
|
|
36693
|
+
const currentExpandedIds = this.comPartyService.status$.value?.expandedKeys;
|
|
36694
|
+
let newExpandedIds = currentExpandedIds?.filter((_) => !!!currentExpandedIds.includes(e.id.toString()));
|
|
36695
|
+
if (newValue) {
|
|
36696
|
+
newExpandedIds?.push(e.id.toString());
|
|
36697
|
+
}
|
|
36698
|
+
newExpandedIds?.sort();
|
|
36699
|
+
const newExpandedKeys = [];
|
|
36700
|
+
newExpandedIds.map((x) => newExpandedKeys.push(x.toString()));
|
|
36701
|
+
this.comPartyService.status$.next({
|
|
36702
|
+
...this.comPartyService.status$.value,
|
|
36703
|
+
expandedKeys: newExpandedKeys,
|
|
36704
|
+
});
|
|
36705
|
+
}
|
|
36706
|
+
onItemCheck(e, newValue) {
|
|
36707
|
+
this.itemClick?.emit(e);
|
|
36708
|
+
if (this.accessorMode !== EnumCoreOrgTreeaAccessorMode.CHECKED)
|
|
36709
|
+
return;
|
|
36710
|
+
// We have this var to hold nodes that are being changed
|
|
36711
|
+
let toggledIds;
|
|
36712
|
+
// We should calculate a new state into this var:
|
|
36713
|
+
const newCheckedIds = JSON.parse(JSON.stringify(this.checkedIds));
|
|
36714
|
+
// We will call this function after toggledIds changed
|
|
36715
|
+
const changeValue = () => {
|
|
36716
|
+
// If newValue === true, we will disctintly push changed ids to the state
|
|
36717
|
+
// Otherwise we will remove them from the state
|
|
36718
|
+
if (!!newValue) {
|
|
36719
|
+
toggledIds.map(x => {
|
|
36720
|
+
if (!!!newCheckedIds.includes(x)) {
|
|
36721
|
+
newCheckedIds.push(x);
|
|
36722
|
+
}
|
|
36723
|
+
});
|
|
36724
|
+
// Then asign the state to the newCheckedIds
|
|
36725
|
+
this.checkedIds = newCheckedIds;
|
|
36726
|
+
}
|
|
36727
|
+
else {
|
|
36728
|
+
const filter = newCheckedIds.filter(x => !!!toggledIds.includes(x));
|
|
36729
|
+
// Then asign the state to the filter
|
|
36730
|
+
this.checkedIds = filter;
|
|
36731
|
+
}
|
|
36732
|
+
// After the cases of if/else, make the control change with onChange
|
|
36733
|
+
this.value = this.checkedIds;
|
|
36734
|
+
this.onChange(this.checkedIds);
|
|
36735
|
+
this.markAsTouched();
|
|
36736
|
+
};
|
|
36737
|
+
/* start: THIS CODE SCOPE calculates toggledIds */
|
|
36738
|
+
if (this.checkInheritance) {
|
|
36739
|
+
// If true, all the nested items will be checked/unchecked
|
|
36740
|
+
this.recursiveService
|
|
36741
|
+
.nestedToggleCheck(e, newValue, this.showDissolved)
|
|
36742
|
+
.then((x) => {
|
|
36743
|
+
let currentCheckedKeys = this.comPartyService.status$.value.checkedKeys || [];
|
|
36744
|
+
if (!!newValue) {
|
|
36745
|
+
x.map(item => {
|
|
36746
|
+
if (currentCheckedKeys.filter(i => i === item.toString()).length === 0) {
|
|
36747
|
+
currentCheckedKeys.push(item.toString());
|
|
36748
|
+
}
|
|
36749
|
+
});
|
|
36750
|
+
}
|
|
36751
|
+
else {
|
|
36752
|
+
currentCheckedKeys = currentCheckedKeys.filter(i => !x.includes(Number(i)));
|
|
36753
|
+
}
|
|
36754
|
+
this.comPartyService.status$.next({
|
|
36755
|
+
...this.comPartyService.status$.value,
|
|
36756
|
+
checkedKeys: currentCheckedKeys //x.map(item => item.toString())
|
|
36757
|
+
});
|
|
36758
|
+
// The ids have been changed
|
|
36759
|
+
toggledIds = x;
|
|
36760
|
+
// Now toggledIds were set. We call the function we declared
|
|
36761
|
+
changeValue();
|
|
36762
|
+
})
|
|
36763
|
+
.catch((x) => {
|
|
36764
|
+
console.error(x);
|
|
36765
|
+
});
|
|
36766
|
+
}
|
|
36767
|
+
else {
|
|
36768
|
+
// Otherwise we simply toggle check for current item only
|
|
36769
|
+
toggledIds = [e.id];
|
|
36770
|
+
// Now toggledIds were set. We call the function we declared
|
|
36771
|
+
changeValue();
|
|
36772
|
+
}
|
|
36773
|
+
/* end: THIS CODE SCOPE calculates toggledIds */
|
|
36774
|
+
// That is. Happy debugging!
|
|
36775
|
+
}
|
|
36776
|
+
onCheckIncludeDissolvedChange(value) {
|
|
36777
|
+
console.log("onCheckIncludeDissolvedChange", value);
|
|
36778
|
+
}
|
|
36779
|
+
onCheckInheritanceChange(value) {
|
|
36780
|
+
this.comPartyService.status$.next({
|
|
36781
|
+
...this.comPartyService.status$.value,
|
|
36782
|
+
checkInheritance: value,
|
|
36783
|
+
});
|
|
36784
|
+
}
|
|
36785
|
+
onObjectClick(e, event) {
|
|
36786
|
+
// remove highlight class
|
|
36787
|
+
// TO DO
|
|
36788
|
+
if (!!e.protected)
|
|
36789
|
+
return;
|
|
36790
|
+
this.itemClick?.emit(e);
|
|
36791
|
+
if (this.accessorMode === EnumCoreOrgTreeaAccessorMode.CHECKED)
|
|
36792
|
+
return;
|
|
36793
|
+
let activeIds = [];
|
|
36794
|
+
this.data.map((item) => (item.active = false));
|
|
36795
|
+
if (this.accessorMode ===
|
|
36796
|
+
EnumCoreOrgTreeaAccessorMode.ACTIVATED_INHERITANCE ||
|
|
36797
|
+
!!!this.accessorMode) {
|
|
36798
|
+
// If true, all the nested items will be active, the others are inactive
|
|
36799
|
+
this.recursiveService
|
|
36800
|
+
.nestedResetActive(e, true)
|
|
36801
|
+
.then((x) => {
|
|
36802
|
+
activeIds = x;
|
|
36803
|
+
activeIds.sort();
|
|
36804
|
+
const newActiveKeys = [];
|
|
36805
|
+
activeIds.map((x) => newActiveKeys.push(x.toString()));
|
|
36806
|
+
this.comPartyService.status$.next({
|
|
36807
|
+
...this.comPartyService.status$.value,
|
|
36808
|
+
activeKeys: newActiveKeys,
|
|
36809
|
+
selectedKey: e.id.toString()
|
|
36810
|
+
});
|
|
36811
|
+
this.activeIds = activeIds;
|
|
36812
|
+
console.log(this.activeIds);
|
|
36813
|
+
this.onChange(activeIds);
|
|
36814
|
+
})
|
|
36815
|
+
.catch((x) => {
|
|
36816
|
+
console.error(x);
|
|
36817
|
+
});
|
|
36818
|
+
}
|
|
36819
|
+
else {
|
|
36820
|
+
// ACTIVATED_SINGLE
|
|
36821
|
+
// Otherwise we simply set current item to be active only
|
|
36822
|
+
activeIds = [e.id];
|
|
36823
|
+
this.activeIds = activeIds;
|
|
36824
|
+
this.comPartyService.status$.next({
|
|
36825
|
+
...this.comPartyService.status$.value,
|
|
36826
|
+
activeKeys: [e.id.toString()],
|
|
36827
|
+
selectedKey: e.id.toString(),
|
|
36828
|
+
});
|
|
36829
|
+
this.onChange(activeIds);
|
|
36830
|
+
}
|
|
36831
|
+
const { detail } = event;
|
|
36832
|
+
if (detail === 2) {
|
|
36833
|
+
console.log('This was a dblclick');
|
|
36834
|
+
this.itemDoubleClick.emit(e);
|
|
36835
|
+
}
|
|
36836
|
+
this.selectedItem = e;
|
|
36837
|
+
}
|
|
36838
|
+
onSearchChange(text) {
|
|
36839
|
+
this.search$.next(text);
|
|
36840
|
+
}
|
|
36841
|
+
onHiddenToolClick(e) {
|
|
36842
|
+
e.stopPropagation();
|
|
36843
|
+
this.hiddenToolClickStream$.next(crypto.randomUUID());
|
|
36844
|
+
}
|
|
36845
|
+
ngOnDestroy() {
|
|
36846
|
+
if (this.worker) {
|
|
36847
|
+
this.worker.terminate();
|
|
36848
|
+
}
|
|
36849
|
+
this.subscriptions.map((x) => x?.unsubscribe());
|
|
36850
|
+
if (!!this.instanceNumber) {
|
|
36851
|
+
const tryToFind = this.comPartyService.instances.filter((x) => x.instanceNumber === this.instanceNumber);
|
|
36852
|
+
if (!!tryToFind.length) {
|
|
36853
|
+
const newInstances = this.comPartyService.instances.filter((x) => x.instanceNumber !== this.instanceNumber);
|
|
36854
|
+
this.comPartyService.instances = newInstances;
|
|
36855
|
+
}
|
|
36856
|
+
}
|
|
36857
|
+
}
|
|
36858
|
+
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 }); }
|
|
36859
|
+
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: [
|
|
36860
|
+
{
|
|
36861
|
+
provide: NG_VALUE_ACCESSOR,
|
|
36862
|
+
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
36863
|
+
multi: true
|
|
36864
|
+
}
|
|
36865
|
+
], 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: [".core-org-tree-container{--background: var(--color-bg-core-org-tree);--height: 545px;--item-height: 35px;--arrow-font-size: 18px;--ul-padding: 20px;--display: \"block\";--square-color: black;--square-size: 9px;--line-color: \"transparent\";--title-wrapper-max-width: 250px;--active-item-color: #F37540;--size-scrollbar-width: 10px;--line-size: 1px;--reduced-icon-wrapper-height: 50px;--reduced-panel-height: calc(var(--height) - var(--reduced-icon-wrapper-height));--scroll-container-height: calc(var(--height) - var(--size-core-reducer-icon-wrapper-height) - var(--size-pagination-height));color:#000;background-color:var(--color-bg-core-org-tree)!important;height:var(--height);background:var(--background);width:var(--size-core-org-tree-width);transition:width .5s ease-out}.core-org-tree-container .hidden-tool{display:block;position:absolute;background-color:transparent;width:var(--ul-padding);height:var(--ul-padding);top:0;left:0}@keyframes reducedPanelOn{0%{opacity:0;transform:rotate(-90deg)}to{opacity:1;transform:rotate(0)}}.core-org-tree-container .custom-org-tree{display:var(--display)}.core-org-tree-container .core-org-tree-header{height:var(--size-core-org-tree-header-height)}.core-org-tree-container .core-org-tree-header input{width:calc(var(--size-core-org-tree-width) - var(--size-layout-block-cell-spacing) * 2 - var(--size-scrollbar-width) + 6px);max-width:100%;transform:translate(14px,8px);border:1px solid #E6EBED}.core-org-tree-container .core-org-tree-header input.full-width{width:calc(var(--size-core-org-tree-width) - var(--size-layout-block-cell-spacing) * 2)}.core-org-tree-container .check-inheritance-wrapper{padding:15px}.core-org-tree-container .m5>input{color:gray}.core-org-tree-container .form-control{border:none}.core-org-tree-container .core-reducer-icon-wrapper{height:var(--size-core-reducer-icon-wrapper-height);padding:var(--size-layout-block-cell-spacing)}.core-org-tree-container .scroll-container{background:var(--background);height:var(--scroll-container-height);overflow:auto;position:relative;width:100%}.core-org-tree-container .scroll-container::-webkit-scrollbar-corner{background-color:transparent}.core-org-tree-container .scroll-container::-webkit-scrollbar{width:8px;height:8px}.core-org-tree-container .scroll-container *{box-sizing:border-box;padding:0;margin:0}.core-org-tree-container .scroll-container ul{display:table;vertical-align:top;padding-left:var(--ul-padding);transition:all .5s ease-out;width:100%}.core-org-tree-container .scroll-container ul>li>span:hover{height:35px;background-color:#fff;border-top-left-radius:20px;border-bottom-left-radius:20px;width:100%}.core-org-tree-container .scroll-container ul>li>span:active{background-color:#f1f1f1;height:35px;border-radius:20px}.core-org-tree-container .scroll-container ul>li>span>object{user-select:none;max-width:var(--title-wrapper-max-width);overflow-x:hidden;text-overflow:ellipsis;-webkit-user-select:none}.core-org-tree-container .scroll-container ul>li>span>object.active{color:var(--active-item-color)}.core-org-tree-container .scroll-container ul .highlighted{color:var(--color-core-org-tree-highlighted);font-weight:700}.core-org-tree-container .scroll-container ul .dissolved{color:#848484;text-decoration:line-through dashed}.core-org-tree-container .scroll-container ul .dissolved.active{color:#c9252b!important}.core-org-tree-container .scroll-container ul>li{display:block;position:relative}.core-org-tree-container .scroll-container ul>li:before{content:\"\";display:block;position:absolute;width:var(--ul-padding);left:calc(var(--ul-padding) * -1);top:calc(var(--item-height) / 2);height:calc(var(--item-height) / 2);border-top:solid var(--line-size) var(--line-color);border-right:none;border-bottom:none;border-left:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul>li>span{display:flex;align-items:center;height:var(--item-height);white-space:nowrap;font-size:13px;padding-left:8px;transform:translate(10px);cursor:pointer}.core-org-tree-container .scroll-container ul>li>span>i{color:var(--square-color);cursor:pointer;font-size:var(--square-size);width:var(--square-size);height:var(--square-size)}.core-org-tree-container .scroll-container ul>li>span>.expand-toggler{font-size:var(--arrow-font-size);width:24px;height:24px;position:absolute;z-index:1;transform:translate(-100%) rotate(0);transition:.5s ease-out;display:flex;align-items:center;justify-content:center}.core-org-tree-container .scroll-container ul>li>span>.check-toggler{margin-left:5px;margin-right:5px}.core-org-tree-container .scroll-container ul>li>ul>li>span:before{content:\"\";display:block;position:absolute;width:var(--ul-padding);left:calc(var(--ul-padding) * -2);top:calc(var(--item-height) / 2);height:var(--line-size);border-top:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul>li.collapsed>span>.expand-toggler{transform:translate(-100%) rotate(-90deg);transition:.5s ease-out}.core-org-tree-container .scroll-container ul>li.collapsed:before{border-left:none}.core-org-tree-container .scroll-container ul>li:not(.collapsed):not(.has-children):before{border-left:none}.core-org-tree-container .scroll-container ul:not(.root):before{content:\"\";display:block;position:absolute;width:var(--line-size);left:calc(var(--ul-padding) * -1);height:calc(100% - var(--item-height) * 1.5);border-left:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul:not(.root)>li:last-child:not(.collapsed).has-children:after{content:\"\";display:block;position:absolute;height:calc(100% - var(--item-height));width:calc(var(--ul-padding) / 2);left:calc(var(--ul-padding) * -2);top:calc(var(--item-height) / 2);border-left:solid var(--line-size) var(--background);z-index:0}.core-org-tree-container .scroll-container ul.collapsed:not(.root){display:none}.core-org-tree-container .collapsed>li:before{display:none!important}.core-org-tree-container.full-width .scroll-container{width:auto}.core-org-tree-container.reduced{width:50px;padding:0;transition:width .5s ease-out}.core-org-tree-container.reduced .scroll-container{overflow:hidden}.core-org-tree-container.reduced .scroll-container>ul.root{display:none}.core-org-tree-container.reduced .scroll-container>.reduced-panel{color:var(--active-item-color);width:50px;height:var(--reduced-panel-height);writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center;font-weight:700;animation:reducedPanelOn .5s ease-out}\n"], 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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }], deferBlockDependencies: [() => [NgTemplateOutlet]] }); }
|
|
36866
|
+
}
|
|
36867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreComTreeComponent, decorators: [{
|
|
36868
|
+
type: Component,
|
|
36869
|
+
args: [{ selector: 'core-com-tree', imports: [
|
|
36870
|
+
FormsModule,
|
|
36871
|
+
NgIf,
|
|
36872
|
+
NgTemplateOutlet,
|
|
36873
|
+
CoreCheckboxComponent,
|
|
36874
|
+
CoreLoadingSurfaceComponent,
|
|
36875
|
+
TranslatePipe,
|
|
36876
|
+
TooltipDirective,
|
|
36877
|
+
], providers: [
|
|
36878
|
+
{
|
|
36879
|
+
provide: NG_VALUE_ACCESSOR,
|
|
36880
|
+
useExisting: forwardRef(() => CoreComTreeComponent),
|
|
36881
|
+
multi: true
|
|
36882
|
+
}
|
|
36883
|
+
], 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: [".core-org-tree-container{--background: var(--color-bg-core-org-tree);--height: 545px;--item-height: 35px;--arrow-font-size: 18px;--ul-padding: 20px;--display: \"block\";--square-color: black;--square-size: 9px;--line-color: \"transparent\";--title-wrapper-max-width: 250px;--active-item-color: #F37540;--size-scrollbar-width: 10px;--line-size: 1px;--reduced-icon-wrapper-height: 50px;--reduced-panel-height: calc(var(--height) - var(--reduced-icon-wrapper-height));--scroll-container-height: calc(var(--height) - var(--size-core-reducer-icon-wrapper-height) - var(--size-pagination-height));color:#000;background-color:var(--color-bg-core-org-tree)!important;height:var(--height);background:var(--background);width:var(--size-core-org-tree-width);transition:width .5s ease-out}.core-org-tree-container .hidden-tool{display:block;position:absolute;background-color:transparent;width:var(--ul-padding);height:var(--ul-padding);top:0;left:0}@keyframes reducedPanelOn{0%{opacity:0;transform:rotate(-90deg)}to{opacity:1;transform:rotate(0)}}.core-org-tree-container .custom-org-tree{display:var(--display)}.core-org-tree-container .core-org-tree-header{height:var(--size-core-org-tree-header-height)}.core-org-tree-container .core-org-tree-header input{width:calc(var(--size-core-org-tree-width) - var(--size-layout-block-cell-spacing) * 2 - var(--size-scrollbar-width) + 6px);max-width:100%;transform:translate(14px,8px);border:1px solid #E6EBED}.core-org-tree-container .core-org-tree-header input.full-width{width:calc(var(--size-core-org-tree-width) - var(--size-layout-block-cell-spacing) * 2)}.core-org-tree-container .check-inheritance-wrapper{padding:15px}.core-org-tree-container .m5>input{color:gray}.core-org-tree-container .form-control{border:none}.core-org-tree-container .core-reducer-icon-wrapper{height:var(--size-core-reducer-icon-wrapper-height);padding:var(--size-layout-block-cell-spacing)}.core-org-tree-container .scroll-container{background:var(--background);height:var(--scroll-container-height);overflow:auto;position:relative;width:100%}.core-org-tree-container .scroll-container::-webkit-scrollbar-corner{background-color:transparent}.core-org-tree-container .scroll-container::-webkit-scrollbar{width:8px;height:8px}.core-org-tree-container .scroll-container *{box-sizing:border-box;padding:0;margin:0}.core-org-tree-container .scroll-container ul{display:table;vertical-align:top;padding-left:var(--ul-padding);transition:all .5s ease-out;width:100%}.core-org-tree-container .scroll-container ul>li>span:hover{height:35px;background-color:#fff;border-top-left-radius:20px;border-bottom-left-radius:20px;width:100%}.core-org-tree-container .scroll-container ul>li>span:active{background-color:#f1f1f1;height:35px;border-radius:20px}.core-org-tree-container .scroll-container ul>li>span>object{user-select:none;max-width:var(--title-wrapper-max-width);overflow-x:hidden;text-overflow:ellipsis;-webkit-user-select:none}.core-org-tree-container .scroll-container ul>li>span>object.active{color:var(--active-item-color)}.core-org-tree-container .scroll-container ul .highlighted{color:var(--color-core-org-tree-highlighted);font-weight:700}.core-org-tree-container .scroll-container ul .dissolved{color:#848484;text-decoration:line-through dashed}.core-org-tree-container .scroll-container ul .dissolved.active{color:#c9252b!important}.core-org-tree-container .scroll-container ul>li{display:block;position:relative}.core-org-tree-container .scroll-container ul>li:before{content:\"\";display:block;position:absolute;width:var(--ul-padding);left:calc(var(--ul-padding) * -1);top:calc(var(--item-height) / 2);height:calc(var(--item-height) / 2);border-top:solid var(--line-size) var(--line-color);border-right:none;border-bottom:none;border-left:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul>li>span{display:flex;align-items:center;height:var(--item-height);white-space:nowrap;font-size:13px;padding-left:8px;transform:translate(10px);cursor:pointer}.core-org-tree-container .scroll-container ul>li>span>i{color:var(--square-color);cursor:pointer;font-size:var(--square-size);width:var(--square-size);height:var(--square-size)}.core-org-tree-container .scroll-container ul>li>span>.expand-toggler{font-size:var(--arrow-font-size);width:24px;height:24px;position:absolute;z-index:1;transform:translate(-100%) rotate(0);transition:.5s ease-out;display:flex;align-items:center;justify-content:center}.core-org-tree-container .scroll-container ul>li>span>.check-toggler{margin-left:5px;margin-right:5px}.core-org-tree-container .scroll-container ul>li>ul>li>span:before{content:\"\";display:block;position:absolute;width:var(--ul-padding);left:calc(var(--ul-padding) * -2);top:calc(var(--item-height) / 2);height:var(--line-size);border-top:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul>li.collapsed>span>.expand-toggler{transform:translate(-100%) rotate(-90deg);transition:.5s ease-out}.core-org-tree-container .scroll-container ul>li.collapsed:before{border-left:none}.core-org-tree-container .scroll-container ul>li:not(.collapsed):not(.has-children):before{border-left:none}.core-org-tree-container .scroll-container ul:not(.root):before{content:\"\";display:block;position:absolute;width:var(--line-size);left:calc(var(--ul-padding) * -1);height:calc(100% - var(--item-height) * 1.5);border-left:solid var(--line-size) var(--line-color);z-index:0}.core-org-tree-container .scroll-container ul:not(.root)>li:last-child:not(.collapsed).has-children:after{content:\"\";display:block;position:absolute;height:calc(100% - var(--item-height));width:calc(var(--ul-padding) / 2);left:calc(var(--ul-padding) * -2);top:calc(var(--item-height) / 2);border-left:solid var(--line-size) var(--background);z-index:0}.core-org-tree-container .scroll-container ul.collapsed:not(.root){display:none}.core-org-tree-container .collapsed>li:before{display:none!important}.core-org-tree-container.full-width .scroll-container{width:auto}.core-org-tree-container.reduced{width:50px;padding:0;transition:width .5s ease-out}.core-org-tree-container.reduced .scroll-container{overflow:hidden}.core-org-tree-container.reduced .scroll-container>ul.root{display:none}.core-org-tree-container.reduced .scroll-container>.reduced-panel{color:var(--active-item-color);width:50px;height:var(--reduced-panel-height);writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center;font-weight:700;animation:reducedPanelOn .5s ease-out}\n"] }]
|
|
36884
|
+
}], ctorParameters: () => [{ type: AuthService }, { type: RecursiveService }, { type: MultiLanguageService }, { type: LayoutService }, { type: CoreOrgTreeService }, { type: AlertService }, { type: ComPartyService }], propDecorators: { lineColor: [{
|
|
36885
|
+
type: Input
|
|
36886
|
+
}], fullWidthMode: [{
|
|
36887
|
+
type: Input
|
|
36888
|
+
}], accessorMode: [{
|
|
36889
|
+
type: Input
|
|
36890
|
+
}], searchMode: [{
|
|
36891
|
+
type: Input
|
|
36892
|
+
}], fullRendering: [{
|
|
36893
|
+
type: Input
|
|
36894
|
+
}], height: [{
|
|
36895
|
+
type: Input
|
|
36896
|
+
}], disabledLoopExpand: [{
|
|
36897
|
+
type: Input
|
|
36898
|
+
}], showCheckInheritance: [{
|
|
36899
|
+
type: Input
|
|
36900
|
+
}], excludedIds$: [{
|
|
36901
|
+
type: Input
|
|
36902
|
+
}], stateIsolated$: [{
|
|
36903
|
+
type: Input
|
|
36904
|
+
}], itemDoubleClick: [{
|
|
36905
|
+
type: Output
|
|
36906
|
+
}], itemClick: [{
|
|
36907
|
+
type: Output
|
|
36908
|
+
}], container: [{
|
|
36909
|
+
type: ViewChild,
|
|
36910
|
+
args: ['container']
|
|
36911
|
+
}], scrollContainer: [{
|
|
36912
|
+
type: ViewChild,
|
|
36913
|
+
args: ['scrollContainer']
|
|
36914
|
+
}], displayContent: [{
|
|
36915
|
+
type: ViewChild,
|
|
36916
|
+
args: ['displayContent']
|
|
36917
|
+
}], reducedIconWrapper: [{
|
|
36918
|
+
type: ViewChild,
|
|
36919
|
+
args: ['reducedIconWrapper']
|
|
36920
|
+
}] } });
|
|
36921
|
+
|
|
36922
|
+
class CorePaginationComponent {
|
|
36923
|
+
constructor() {
|
|
36924
|
+
this.$currentPage = input.required();
|
|
36925
|
+
this.$height = input.required();
|
|
36926
|
+
this.$pageCount = input.required();
|
|
36927
|
+
this.$loading = input.required();
|
|
36928
|
+
this.$suspendCurrentPageSubscription = input();
|
|
36929
|
+
this.$showAdd = input();
|
|
36930
|
+
this.$background = input();
|
|
36931
|
+
this.$fixedPageSize = input();
|
|
36932
|
+
this.$onClickAdd = output();
|
|
36933
|
+
this.$container = viewChild('container');
|
|
36934
|
+
this.$current = viewChild('current');
|
|
36935
|
+
this.$aperture = viewChild('aperture');
|
|
36936
|
+
this.$currentButtonContent = signal('1');
|
|
36937
|
+
this.$suspendCurrentPage = signal(true);
|
|
36938
|
+
this.$navigationDirection = signal(1);
|
|
36939
|
+
this.subscriptions = [];
|
|
36940
|
+
}
|
|
36941
|
+
ngOnInit() { }
|
|
36942
|
+
goFirst() {
|
|
36943
|
+
this.$navigationDirection.set(-1);
|
|
36944
|
+
this.$suspendCurrentPage.set(false);
|
|
36945
|
+
setTimeout(() => {
|
|
36946
|
+
if (!!this.$pageCount())
|
|
36947
|
+
this.$currentPage().next(1);
|
|
36948
|
+
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotatebackwards');
|
|
36949
|
+
});
|
|
36950
|
+
}
|
|
36951
|
+
goLast() {
|
|
36952
|
+
this.$navigationDirection.set(1);
|
|
36953
|
+
this.$suspendCurrentPage.set(false);
|
|
36954
|
+
setTimeout(() => {
|
|
36955
|
+
if (!!this.$pageCount())
|
|
36956
|
+
this.$currentPage().next(this.$pageCount());
|
|
36957
|
+
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotateforwards');
|
|
36958
|
+
});
|
|
36959
|
+
}
|
|
36960
|
+
goPrevious() {
|
|
36961
|
+
this.$navigationDirection.set(-1);
|
|
36962
|
+
this.$suspendCurrentPage.set(false);
|
|
36963
|
+
setTimeout(() => {
|
|
36964
|
+
if (!!this.$pageCount())
|
|
36965
|
+
this.$currentPage().next(this.$currentPage().value - 1);
|
|
36966
|
+
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotatebackwards');
|
|
36967
|
+
});
|
|
36968
|
+
}
|
|
36969
|
+
goNext() {
|
|
36970
|
+
this.$navigationDirection.set(1);
|
|
36971
|
+
this.$suspendCurrentPage.set(false);
|
|
36972
|
+
setTimeout(() => {
|
|
36973
|
+
if (!!this.$pageCount())
|
|
36974
|
+
this.$currentPage().next(this.$currentPage().value + 1);
|
|
36975
|
+
this.$aperture()?.nativeElement.style.setProperty('animation-name', 'rotateforwards');
|
|
36976
|
+
});
|
|
36977
|
+
}
|
|
36978
|
+
onClickAddLocal() {
|
|
36979
|
+
this.$onClickAdd.emit();
|
|
36980
|
+
}
|
|
36981
|
+
ngAfterViewInit() {
|
|
36982
|
+
setTimeout(() => {
|
|
36983
|
+
this.subscriptions.push(this.$currentPage().subscribe(x => this.$currentButtonContent.set(x.toString())));
|
|
36984
|
+
this.mouseDownStream$ = fromEvent(this.$current().nativeElement, 'mousedown', _ => {
|
|
36985
|
+
this.$currentButtonContent.set(`${this.$currentPage().value}/${this.$pageCount()}`);
|
|
36986
|
+
});
|
|
36987
|
+
this.touchStartStream$ = fromEvent(this.$current().nativeElement, 'touchstart', _ => {
|
|
36988
|
+
this.$currentButtonContent.set(`${this.$currentPage().value}/${this.$pageCount()}`);
|
|
36989
|
+
});
|
|
36990
|
+
this.mouseUpStream$ = fromEvent(this.$current().nativeElement, 'mouseup', _ => {
|
|
36991
|
+
this.$currentButtonContent.set(`${this.$currentPage().value}`);
|
|
36992
|
+
});
|
|
36993
|
+
this.touchEndStream$ = fromEvent(this.$current().nativeElement, 'touchend', _ => {
|
|
36994
|
+
this.$currentButtonContent.set(`${this.$currentPage().value}`);
|
|
36995
|
+
});
|
|
36996
|
+
this.mouseDownSubscription$ = this.mouseDownStream$.subscribe();
|
|
36997
|
+
this.touchStartSubscription$ = this.touchStartStream$.subscribe();
|
|
36998
|
+
this.mouseUpSubscription$ = this.mouseUpStream$.subscribe();
|
|
36999
|
+
this.touchEndSubscription$ = this.touchEndStream$.subscribe();
|
|
37000
|
+
if (this.$background())
|
|
37001
|
+
setTimeout(() => this.$container().nativeElement.style.setProperty('--bg', this.$background()));
|
|
37002
|
+
if (this.$height())
|
|
37003
|
+
this.$container()?.nativeElement.style.setProperty('--height', this.$height() + 'px');
|
|
37004
|
+
});
|
|
37005
|
+
}
|
|
37006
|
+
ngOnDestroy() {
|
|
37007
|
+
if (this.mouseDownSubscription$)
|
|
37008
|
+
this.mouseDownSubscription$.unsubscribe();
|
|
37009
|
+
if (this.touchStartSubscription$)
|
|
37010
|
+
this.touchStartSubscription$.unsubscribe();
|
|
37011
|
+
if (this.mouseUpSubscription$)
|
|
37012
|
+
this.mouseUpSubscription$.unsubscribe();
|
|
37013
|
+
if (this.touchEndSubscription$)
|
|
37014
|
+
this.touchEndSubscription$.unsubscribe();
|
|
37015
|
+
}
|
|
37016
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CorePaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37017
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: CorePaginationComponent, isStandalone: true, selector: "core-pagination", inputs: { $currentPage: { classPropertyName: "$currentPage", publicName: "$currentPage", isSignal: true, isRequired: true, transformFunction: null }, $height: { classPropertyName: "$height", publicName: "$height", isSignal: true, isRequired: true, transformFunction: null }, $pageCount: { classPropertyName: "$pageCount", publicName: "$pageCount", isSignal: true, isRequired: true, transformFunction: null }, $loading: { classPropertyName: "$loading", publicName: "$loading", isSignal: true, isRequired: true, transformFunction: null }, $suspendCurrentPageSubscription: { classPropertyName: "$suspendCurrentPageSubscription", publicName: "$suspendCurrentPageSubscription", isSignal: true, isRequired: false, transformFunction: null }, $showAdd: { classPropertyName: "$showAdd", publicName: "$showAdd", isSignal: true, isRequired: false, transformFunction: null }, $background: { classPropertyName: "$background", publicName: "$background", isSignal: true, isRequired: false, transformFunction: null }, $fixedPageSize: { classPropertyName: "$fixedPageSize", publicName: "$fixedPageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { $onClickAdd: "$onClickAdd" }, viewQueries: [{ propertyName: "$container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "$current", first: true, predicate: ["current"], descendants: true, isSignal: true }, { propertyName: "$aperture", first: true, predicate: ["aperture"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container class=\"pagination-container d-flex-between\">\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!$pageCount() || $currentPage().value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!$pageCount() || $currentPage().value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current class=\"current\">\r\n <div class=\"d-flex-center\">\r\n <i #aperture class=\"feather-aperture aperture \" [class.visible]=\"$loading()\"></i>\r\n @if (!$loading()) {\r\n <span class=\"current-text\">{{ $currentButtonContent() }}</span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!$pageCount() || ($currentPage() | async)===$pageCount()\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!$pageCount() || ($currentPage() | async)===$pageCount()\" (click)=\"goLast()\"></div>\r\n </div>\r\n @if ($showAdd()) {\r\n <a (click)=\"onClickAddLocal()\">\r\n <div class=\"add\"></div>\r\n </a>\r\n }\r\n</div>", styles: [".pagination-container{--bg: #848484;--color: white;--height: 38px;--button-size: 50px;--font-size: 18px;--aperture-size: 30px}@keyframes rotateforwards{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotatebackwards{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-container .pagination-container{height:var(--height);display:flex}.pagination-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:2px}.pagination-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-container .pagination-container .current{border-radius:50%;margin:0 5px;opacity:1;transition:2s}.pagination-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);opacity:0;transition:.25s ease-out;animation:rotateforwards 1s linear infinite}.pagination-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-container .pagination-container .current,.pagination-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color)}.pagination-container .pagination-container .current-text{position:absolute}.pagination-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-container .pagination-container .first:before{content:\"\\e933\"}.pagination-container .pagination-container .previous:before{content:\"\\e92f\"}.pagination-container .pagination-container .next:before{content:\"\\e930\"}.pagination-container .pagination-container .last:before{content:\"\\e934\"}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37018
|
+
}
|
|
37019
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CorePaginationComponent, decorators: [{
|
|
37020
|
+
type: Component,
|
|
37021
|
+
args: [{ selector: 'core-pagination', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
37022
|
+
NgStyle,
|
|
37023
|
+
AsyncPipe,
|
|
37024
|
+
], template: "<div #container class=\"pagination-container d-flex-between\">\r\n <div class=\"pagination-container\">\r\n <div class=\"first\" [class.disable]=\"!$pageCount() || $currentPage().value===1\" (click)=\"goFirst()\"></div>\r\n <div class=\"previous\" [class.disable]=\"!$pageCount() || $currentPage().value===1\" (click)=\"goPrevious()\"></div>\r\n <div #current class=\"current\">\r\n <div class=\"d-flex-center\">\r\n <i #aperture class=\"feather-aperture aperture \" [class.visible]=\"$loading()\"></i>\r\n @if (!$loading()) {\r\n <span class=\"current-text\">{{ $currentButtonContent() }}</span>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"next\" [class.disable]=\"!$pageCount() || ($currentPage() | async)===$pageCount()\" (click)=\"goNext()\"></div>\r\n <div class=\"last\" [class.disable]=\"!$pageCount() || ($currentPage() | async)===$pageCount()\" (click)=\"goLast()\"></div>\r\n </div>\r\n @if ($showAdd()) {\r\n <a (click)=\"onClickAddLocal()\">\r\n <div class=\"add\"></div>\r\n </a>\r\n }\r\n</div>", styles: [".pagination-container{--bg: #848484;--color: white;--height: 38px;--button-size: 50px;--font-size: 18px;--aperture-size: 30px}@keyframes rotateforwards{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotatebackwards{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.pagination-container .add:before{font-family:feather;content:\"\\e9b1\";font-weight:700;font-size:var(--font-size);color:#fff;background:var(--bg);width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center;border-top-right-radius:50%;border-bottom-right-radius:50%}.pagination-container .pagination-container{height:var(--height);display:flex}.pagination-container .pagination-container>div{display:inline-block;cursor:pointer;margin-right:2px}.pagination-container .pagination-container .disable{cursor:default;opacity:.5!important}.pagination-container .pagination-container .current{border-radius:50%;margin:0 5px;opacity:1;transition:2s}.pagination-container .pagination-container .aperture{width:var(--aperture-size);height:var(--aperture-size);opacity:0;transition:.25s ease-out;animation:rotateforwards 1s linear infinite}.pagination-container .pagination-container .aperture:before{font-size:var(--aperture-size)}.pagination-container .pagination-container .visible{opacity:1;transition:.25s ease-out}.pagination-container .pagination-container .current,.pagination-container .pagination-container .loading{width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color)}.pagination-container .pagination-container .current-text{position:absolute}.pagination-container .pagination-container .current>div{width:var(--button-size);height:var(--button-size);display:flex;align-items:center;justify-content:center}.pagination-container .pagination-container div:before{font-family:feather;font-size:var(--font-size);width:var(--button-size);height:var(--button-size);background:var(--bg);color:var(--color);display:flex;align-items:center;justify-content:center}.pagination-container .pagination-container .first:before{content:\"\\e933\"}.pagination-container .pagination-container .previous:before{content:\"\\e92f\"}.pagination-container .pagination-container .next:before{content:\"\\e930\"}.pagination-container .pagination-container .last:before{content:\"\\e934\"}\n"] }]
|
|
37025
|
+
}], ctorParameters: () => [] });
|
|
37026
|
+
|
|
37027
|
+
class CoreCompareDbPipelineComponent extends BaseComponent {
|
|
37028
|
+
constructor(mls, appService) {
|
|
37029
|
+
super(mls);
|
|
37030
|
+
this.mls = mls;
|
|
37031
|
+
this.appService = appService;
|
|
37032
|
+
this.data = [];
|
|
37033
|
+
this.tabHeaders = ["Dev-Test-Live", "Dev-Extended"];
|
|
37034
|
+
this.activeTabIndex = 0;
|
|
37035
|
+
this.columns = [
|
|
37036
|
+
{
|
|
37037
|
+
field: 'id',
|
|
37038
|
+
type: 'string',
|
|
37039
|
+
caption: 'id',
|
|
37040
|
+
align: 'left',
|
|
37041
|
+
hidden: true,
|
|
37042
|
+
width: 0
|
|
37043
|
+
},
|
|
37044
|
+
{
|
|
37045
|
+
field: 'difference',
|
|
37046
|
+
type: 'string',
|
|
37047
|
+
caption: 'Problem',
|
|
37048
|
+
align: 'left',
|
|
37049
|
+
sortDisabled: true,
|
|
37050
|
+
width: 300
|
|
37051
|
+
},
|
|
37052
|
+
{
|
|
37053
|
+
field: 'conflictType',
|
|
37054
|
+
type: 'string',
|
|
37055
|
+
caption: 'Marker',
|
|
37056
|
+
align: 'center',
|
|
37057
|
+
width: 50
|
|
37058
|
+
},
|
|
37059
|
+
{
|
|
37060
|
+
field: 'sourceAlias',
|
|
37061
|
+
type: 'string',
|
|
37062
|
+
caption: 'Source',
|
|
37063
|
+
align: 'left',
|
|
37064
|
+
sortDisabled: true,
|
|
37065
|
+
width: 60
|
|
37066
|
+
},
|
|
37067
|
+
{
|
|
37068
|
+
field: 'targetAlias',
|
|
37069
|
+
type: 'string',
|
|
37070
|
+
caption: 'Target',
|
|
37071
|
+
align: 'left',
|
|
37072
|
+
sortDisabled: true,
|
|
37073
|
+
width: 200
|
|
37074
|
+
},
|
|
37075
|
+
{
|
|
37076
|
+
field: 'tableName',
|
|
37077
|
+
type: 'string',
|
|
37078
|
+
caption: 'Table',
|
|
37079
|
+
align: 'left',
|
|
37080
|
+
sortDisabled: true,
|
|
37081
|
+
width: 200
|
|
37082
|
+
},
|
|
37083
|
+
{
|
|
37084
|
+
field: 'columnName',
|
|
37085
|
+
type: 'string',
|
|
37086
|
+
caption: 'Column',
|
|
37087
|
+
align: 'left',
|
|
37088
|
+
sortDisabled: true,
|
|
37089
|
+
width: 200
|
|
37090
|
+
},
|
|
37091
|
+
{
|
|
37092
|
+
field: 'sourceType',
|
|
37093
|
+
type: 'string',
|
|
37094
|
+
caption: 'Source type',
|
|
37095
|
+
align: 'left',
|
|
37096
|
+
sortDisabled: true,
|
|
37097
|
+
width: 100
|
|
37098
|
+
},
|
|
37099
|
+
{
|
|
37100
|
+
field: 'sourceIsPrimaryKey',
|
|
37101
|
+
type: 'boolean',
|
|
37102
|
+
caption: 'Source is PK',
|
|
37103
|
+
align: 'center',
|
|
37104
|
+
sortDisabled: true,
|
|
37105
|
+
width: 60
|
|
37106
|
+
},
|
|
37107
|
+
{
|
|
37108
|
+
field: 'sourceIsIdentityColumn',
|
|
37109
|
+
type: 'boolean',
|
|
37110
|
+
caption: 'Source is Identity',
|
|
37111
|
+
align: 'center',
|
|
37112
|
+
sortDisabled: true,
|
|
37113
|
+
width: 60
|
|
37114
|
+
},
|
|
37115
|
+
{
|
|
37116
|
+
field: 'sourceNullability',
|
|
37117
|
+
type: 'boolean',
|
|
37118
|
+
caption: 'Source nullability',
|
|
37119
|
+
align: 'center',
|
|
37120
|
+
sortDisabled: true,
|
|
37121
|
+
width: 70
|
|
37122
|
+
},
|
|
37123
|
+
{
|
|
37124
|
+
field: 'sourceSize',
|
|
37125
|
+
type: 'string',
|
|
37126
|
+
caption: 'Source size',
|
|
37127
|
+
align: 'right',
|
|
37128
|
+
sortDisabled: true,
|
|
37129
|
+
width: 100
|
|
37130
|
+
},
|
|
37131
|
+
{
|
|
37132
|
+
field: 'sourcePrecision',
|
|
37133
|
+
type: 'string',
|
|
37134
|
+
caption: 'Source precision',
|
|
37135
|
+
align: 'right',
|
|
37136
|
+
sortDisabled: true,
|
|
37137
|
+
width: 50
|
|
37138
|
+
},
|
|
37139
|
+
{
|
|
37140
|
+
field: 'sourceScale',
|
|
37141
|
+
type: 'string',
|
|
37142
|
+
caption: 'Source scale',
|
|
37143
|
+
align: 'right',
|
|
37144
|
+
sortDisabled: true,
|
|
37145
|
+
width: 50
|
|
37146
|
+
},
|
|
37147
|
+
{
|
|
37148
|
+
field: 'targetType',
|
|
37149
|
+
type: 'string',
|
|
37150
|
+
caption: 'Target type',
|
|
37151
|
+
align: 'left',
|
|
37152
|
+
sortDisabled: true,
|
|
37153
|
+
width: 100
|
|
37154
|
+
},
|
|
37155
|
+
{
|
|
37156
|
+
field: 'targetIsPrimaryKey',
|
|
37157
|
+
type: 'boolean',
|
|
37158
|
+
caption: 'Target is PK',
|
|
37159
|
+
align: 'center',
|
|
37160
|
+
sortDisabled: true,
|
|
37161
|
+
width: 60
|
|
37162
|
+
},
|
|
37163
|
+
{
|
|
37164
|
+
field: 'targetIsIdentityColumn',
|
|
37165
|
+
type: 'boolean',
|
|
37166
|
+
caption: 'Target is Identity',
|
|
37167
|
+
align: 'center',
|
|
37168
|
+
sortDisabled: true,
|
|
37169
|
+
width: 60
|
|
37170
|
+
},
|
|
37171
|
+
{
|
|
37172
|
+
field: 'targetNullability',
|
|
37173
|
+
type: 'boolean',
|
|
37174
|
+
caption: 'Target nullability',
|
|
37175
|
+
align: 'center',
|
|
37176
|
+
sortDisabled: true,
|
|
37177
|
+
width: 70
|
|
37178
|
+
},
|
|
37179
|
+
{
|
|
37180
|
+
field: 'targetSize',
|
|
37181
|
+
type: 'string',
|
|
37182
|
+
caption: 'Targer size',
|
|
37183
|
+
align: 'right',
|
|
37184
|
+
sortDisabled: true,
|
|
37185
|
+
width: 100
|
|
37186
|
+
},
|
|
37187
|
+
{
|
|
37188
|
+
field: 'targetPrecision',
|
|
37189
|
+
type: 'string',
|
|
37190
|
+
caption: 'Target precision',
|
|
37191
|
+
align: 'right',
|
|
37192
|
+
sortDisabled: true,
|
|
37193
|
+
width: 50
|
|
37194
|
+
},
|
|
37195
|
+
{
|
|
37196
|
+
field: 'targetScale',
|
|
37197
|
+
type: 'string',
|
|
37198
|
+
caption: 'Target scale',
|
|
37199
|
+
align: 'right',
|
|
37200
|
+
sortDisabled: true,
|
|
37201
|
+
width: 50
|
|
37202
|
+
},
|
|
37203
|
+
];
|
|
37204
|
+
this.tableHeight = 500;
|
|
37205
|
+
this.longApiRunning = false;
|
|
37206
|
+
this.defaultRequest = {
|
|
37207
|
+
pageNumber: 1,
|
|
37208
|
+
pageSize: 50
|
|
37209
|
+
};
|
|
37210
|
+
this.request$ = new BehaviorSubject(this.defaultRequest);
|
|
37211
|
+
this.currentPage$ = new BehaviorSubject(1);
|
|
37212
|
+
this.pageSize$ = new BehaviorSubject(50);
|
|
37213
|
+
this.pageCount = 0;
|
|
37214
|
+
this.suspendCurrentPageSubscription$ = new BehaviorSubject(false);
|
|
37215
|
+
this.sqlCommand = '';
|
|
37216
|
+
this.resolverSessionId = '';
|
|
37217
|
+
this.conflictTotal = 0;
|
|
37218
|
+
this.controller = null;
|
|
37219
|
+
}
|
|
37220
|
+
refreshList() {
|
|
37221
|
+
this.controller = new AbortController();
|
|
37222
|
+
this.longApiRunning = true;
|
|
37223
|
+
this.subscriptions.push(this.appService.post('/api/SqlServerPipeline/CompareDbStructure?usehub=true', this.request$.value, this.controller.signal)
|
|
37224
|
+
.subscribe(x => {
|
|
37225
|
+
this.longApiRunning = false;
|
|
37226
|
+
if (x.ok && x.status === 200 && x.body?.statusCode === 200) {
|
|
37227
|
+
this.data = x.body.innerBody.data;
|
|
37228
|
+
this.pageCount = Math.ceil(x.body.innerBody.count / this.pageSize$.value);
|
|
37229
|
+
this.currentPage$.next(x.body.innerBody.pageNumber);
|
|
37230
|
+
this.conflictTotal = x.body.innerBody.count || 0;
|
|
37231
|
+
}
|
|
37232
|
+
}));
|
|
37233
|
+
}
|
|
37234
|
+
ngAfterViewInit() {
|
|
37235
|
+
setTimeout(() => {
|
|
37236
|
+
const tryFilterConflictType = this.columns.filter(x => x.field === 'conflictType');
|
|
37237
|
+
if (!!tryFilterConflictType.length) {
|
|
37238
|
+
tryFilterConflictType[0].templateRef = this.conflictType;
|
|
37239
|
+
}
|
|
37240
|
+
const tryFilterDifference = this.columns.filter(x => x.field === 'difference');
|
|
37241
|
+
if (!!tryFilterDifference.length) {
|
|
37242
|
+
tryFilterDifference[0].templateRef = this.toolBlock;
|
|
37243
|
+
}
|
|
37244
|
+
const tryFilterSourceIsPrimaryKey = this.columns.filter(x => x.field === 'sourceIsPrimaryKey');
|
|
37245
|
+
if (!!tryFilterSourceIsPrimaryKey.length) {
|
|
37246
|
+
tryFilterSourceIsPrimaryKey[0].templateRef = this.sourceIsPrimaryKey;
|
|
37247
|
+
}
|
|
37248
|
+
const tryFilterTargetIsPrimaryKey = this.columns.filter(x => x.field === 'targetIsPrimaryKey');
|
|
37249
|
+
if (!!tryFilterTargetIsPrimaryKey.length) {
|
|
37250
|
+
tryFilterTargetIsPrimaryKey[0].templateRef = this.targetIsPrimaryKey;
|
|
36529
37251
|
}
|
|
36530
37252
|
const tryFilterSourceIsIdentityColumn = this.columns.filter(x => x.field === 'sourceIsIdentityColumn');
|
|
36531
37253
|
if (!!tryFilterSourceIsIdentityColumn.length) {
|
|
@@ -36754,860 +37476,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
36754
37476
|
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
37477
|
}], ctorParameters: () => [{ type: DialogService }] });
|
|
36756
37478
|
|
|
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');
|
|
37479
|
+
class CoreLazyMountComponent {
|
|
37480
|
+
constructor() {
|
|
37481
|
+
this.vcRef = inject(ViewContainerRef);
|
|
37482
|
+
}
|
|
37483
|
+
set props(value) {
|
|
37484
|
+
this._props = value;
|
|
37485
|
+
this.assignInputs();
|
|
37486
|
+
}
|
|
37487
|
+
async ngOnInit() {
|
|
37488
|
+
if (this.loadComponent) {
|
|
37489
|
+
const componentType = await this.loadComponent();
|
|
37490
|
+
this.componentRef = this.vcRef.createComponent(componentType);
|
|
37491
|
+
this.assignInputs();
|
|
37247
37492
|
}
|
|
37248
37493
|
}
|
|
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
|
-
});
|
|
37494
|
+
assignInputs() {
|
|
37495
|
+
if (this.componentRef && this._props) {
|
|
37496
|
+
Object.assign(this.componentRef.instance, this._props);
|
|
37497
|
+
this.componentRef.changeDetectorRef.markForCheck();
|
|
37498
|
+
}
|
|
37278
37499
|
}
|
|
37279
|
-
|
|
37280
|
-
|
|
37281
|
-
|
|
37500
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37501
|
+
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: [""] }); }
|
|
37502
|
+
}
|
|
37503
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreLazyMountComponent, decorators: [{
|
|
37504
|
+
type: Component,
|
|
37505
|
+
args: [{ selector: 'core-lazy-mount', imports: [], template: "" }]
|
|
37506
|
+
}], propDecorators: { loadComponent: [{
|
|
37507
|
+
type: Input
|
|
37508
|
+
}], props: [{
|
|
37509
|
+
type: Input
|
|
37510
|
+
}] } });
|
|
37511
|
+
|
|
37512
|
+
class ModuleItemComponent extends BaseComponent {
|
|
37513
|
+
constructor(mls, navigatorService, cdr, menuService) {
|
|
37514
|
+
super(mls);
|
|
37515
|
+
this.mls = mls;
|
|
37516
|
+
this.navigatorService = navigatorService;
|
|
37517
|
+
this.cdr = cdr;
|
|
37518
|
+
this.menuService = menuService;
|
|
37519
|
+
this.$item = input.required();
|
|
37520
|
+
this.$itemPadding = input(5);
|
|
37521
|
+
this.$width = input.required();
|
|
37522
|
+
this.$height = input.required();
|
|
37523
|
+
this.$iconTextVerticalMargin = input(25);
|
|
37524
|
+
this.$active = signal(false);
|
|
37525
|
+
this.iconClickStream$ = new BehaviorSubject('');
|
|
37282
37526
|
}
|
|
37283
|
-
|
|
37284
|
-
|
|
37285
|
-
|
|
37286
|
-
|
|
37287
|
-
|
|
37527
|
+
ngOnInit() {
|
|
37528
|
+
this.subscriptions.push(this.mls.lang$.subscribe(x => {
|
|
37529
|
+
this.lang = x;
|
|
37530
|
+
this.cdr.markForCheck();
|
|
37531
|
+
}));
|
|
37532
|
+
if (!!localStorage) {
|
|
37533
|
+
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
37534
|
+
const active = activeRootMenuItemId === this.$item()?.id;
|
|
37535
|
+
this.$active.set(active);
|
|
37288
37536
|
}
|
|
37289
|
-
this.linnerOrgArray = cloneCopy;
|
|
37290
|
-
setTimeout(() => this.buildTreeData());
|
|
37291
37537
|
}
|
|
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
|
-
});
|
|
37538
|
+
onClick(e, item) {
|
|
37539
|
+
this.iconClickStream$.next(crypto.randomUUID());
|
|
37540
|
+
if (!!item) {
|
|
37541
|
+
this.navigatorService.clickedItem$.next(item);
|
|
37365
37542
|
}
|
|
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
|
-
}));
|
|
37543
|
+
if (localStorage.getItem('moduleDesignMode') === 'on')
|
|
37544
|
+
return;
|
|
37545
|
+
this.navigatorService.activeRootMenuItemId$.next(item?.id);
|
|
37546
|
+
if (!!localStorage) {
|
|
37547
|
+
localStorage.setItem('activeRootMenuItemId', (item?.id || 0).toString());
|
|
37376
37548
|
}
|
|
37549
|
+
this.menuService.isOpen$.next(true); // trigger the LeftBar to be opened at the first time
|
|
37377
37550
|
}
|
|
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
|
-
});
|
|
37551
|
+
ngAfterViewInit() {
|
|
37552
|
+
this.subscriptions.push(this.navigatorService.activeRootMenuItemId$.subscribe(x => {
|
|
37553
|
+
const active = x === this.$item()?.id;
|
|
37554
|
+
this.$active.set(active);
|
|
37555
|
+
}));
|
|
37556
|
+
this.subscriptions.push(this.iconClickStream$.pipe(buffer(this.iconClickStream$.pipe(debounceTime(250))), map$1(clicks => clicks.length), filter(clicksLength => clicksLength >= 5))
|
|
37557
|
+
.subscribe(_ => {
|
|
37558
|
+
this.navigatorService.showEditSvg$.next(true);
|
|
37559
|
+
}));
|
|
37395
37560
|
}
|
|
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
|
-
|
|
37561
|
+
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 }); }
|
|
37562
|
+
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 }); }
|
|
37563
|
+
}
|
|
37564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: ModuleItemComponent, decorators: [{
|
|
37565
|
+
type: Component,
|
|
37566
|
+
args: [{ selector: 'app-module-item', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
37567
|
+
NgStyle,
|
|
37568
|
+
TooltipDirective,
|
|
37569
|
+
StringHtmlPipe,
|
|
37570
|
+
TranslatePipe,
|
|
37571
|
+
], 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"] }]
|
|
37572
|
+
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: NavigatorService }, { type: i0.ChangeDetectorRef }, { type: MenuService }] });
|
|
37573
|
+
|
|
37574
|
+
class CoreRootMenuItemPickerComponent extends BaseComponent {
|
|
37575
|
+
constructor(mls, ahs, renderer, navigatorService, layoutService, domService, menuService, sysMenuService, authService, appConfigService) {
|
|
37576
|
+
super(mls);
|
|
37577
|
+
this.mls = mls;
|
|
37578
|
+
this.ahs = ahs;
|
|
37579
|
+
this.renderer = renderer;
|
|
37580
|
+
this.navigatorService = navigatorService;
|
|
37581
|
+
this.layoutService = layoutService;
|
|
37582
|
+
this.domService = domService;
|
|
37583
|
+
this.menuService = menuService;
|
|
37584
|
+
this.sysMenuService = sysMenuService;
|
|
37585
|
+
this.authService = authService;
|
|
37586
|
+
this.appConfigService = appConfigService;
|
|
37587
|
+
this.logoPath = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE1IiBoZWlnaHQ9IjI5IiB2aWV3Qm94PSIwIDAgMTE1IDI5IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDI4LjU1MjhWOC41NzY4NkgyLjU2MzI5VjE2LjgxMzRIMTIuNTIzNVY4LjU3Njg2SDE1LjA4NjhWMjguNTMzOUgxMi41MjM1VjE5LjE0MjNIMi41ODE2VjI4LjUzMzlIMFYyOC41NTI4Wk0xOS4wNzgyIDExLjM2MDJWOC41NzY4NkgyMS40NTg0VjExLjM2MDJIMTkuMDc4MlpNMTkuMDc4MiAyOC41NTI4VjE0LjA4NjhIMjEuNDU4NFYyOC41NTI4SDE5LjA3ODJaTTI0LjIyMzEgMjIuMDc3MkwyOC4wMzE1IDIxLjY3OTZDMjguMjUxMiAyMi45ODYxIDI4LjcyNzIgMjMuOTUxNyAyOS40MjMgMjQuNTc2NkMzMC4xMTg3IDI1LjIwMTQgMzEuMDcwOCAyNS41MDQ0IDMyLjI0MjYgMjUuNTA0NEMzMy40ODc2IDI1LjUwNDQgMzQuNDIxNCAyNS4yMjAzIDM1LjA2MjIgMjQuNjcxMkMzNS43MDMgMjQuMTIyMSAzNi4wMTQzIDIzLjQ5NzMgMzYuMDE0MyAyMi43NTg5QzM2LjAxNDMgMjIuMjg1NSAzNS44ODYxIDIxLjg2ODkgMzUuNjExNSAyMS41NDdDMzUuMzM2OCAyMS4yMjUyIDM0Ljg3OTEgMjAuOTIyMiAzNC4yMiAyMC42NzYxQzMzLjc2MjIgMjAuNTI0NiAzMi43MzY5IDIwLjIyMTYgMzEuMTI1NyAxOS44MDUxQzI5LjAzODUgMTkuMjc0OSAyNy41NzM3IDE4LjYxMjIgMjYuNzQ5OCAxNy44MTY5QzI1LjU1OTcgMTYuNzE4NyAyNC45OTIxIDE1LjM3NDQgMjQuOTkyMSAxMy44MDI4QzI0Ljk5MjEgMTIuNzgwMyAyNS4yNjY4IDExLjgxNDcgMjUuODE2IDEwLjk0MzdDMjYuMzgzNiAxMC4wNTM4IDI3LjE3MDkgOS4zNzIxMSAyOC4yMTQ1IDguOTE3NjhDMjkuMjc2NSA4LjQ0NDMyIDMwLjUyMTUgOC4yMTcxIDMyLjAwNDYgOC4yMTcxQzM0LjQyMTQgOC4yMTcxIDM2LjIzNCA4Ljc2NjIgMzcuNDYwNyA5Ljg2NDQxQzM4LjY4NzQgMTAuOTgxNSAzOS4zMDk5IDEyLjQ1ODQgMzkuMzgzMiAxNC4zMTRMMzUuNDgzMyAxNC40NjU1QzM1LjMxODUgMTMuNDI0MSAzNC45NzA3IDEyLjY4NTcgMzQuNDIxNCAxMi4yNTAyQzMzLjg3MjEgMTEuODE0NyAzMy4wNjY1IDExLjU2ODUgMzEuOTY3OSAxMS41Njg1QzMwLjg1MTEgMTEuNTY4NSAyOS45NzIyIDExLjgxNDcgMjkuMzMxNCAxMi4yODhDMjguOTI4NiAxMi42MDk5IDI4LjcwODkgMTMuMDI2NSAyOC43MDg5IDEzLjUzNzdDMjguNzA4OSAxNC4wMTExIDI4LjkxMDMgMTQuNDI3NiAyOS4yOTQ4IDE0Ljc0OTVDMjkuNzcwOCAxNS4xODUgMzAuOTc5MiAxNS42Mzk1IDMyLjg2NTEgMTYuMTEyOEMzNC43NTA5IDE2LjU2NzIgMzYuMTYwOCAxNy4wNDA2IDM3LjA1NzkgMTcuNTUxOEMzNy45NTUxIDE4LjA0NDEgMzguNjY5MSAxOC43MjU4IDM5LjE4MTggMTkuNTc3OEMzOS42OTQ0IDIwLjQ0ODggMzkuOTUwOCAyMS40OTAyIDM5Ljk1MDggMjIuNzU4OUMzOS45NTA4IDIzLjg5NDkgMzkuNjM5NSAyNC45NzQyIDM5LjAxNyAyNS45Nzc3QzM4LjQxMjggMjYuOTgxMyAzNy41MzQgMjcuNzE5NyAzNi40MTcxIDI4LjE5MzFDMzUuMzAwMiAyOC42ODU0IDMzLjkwODcgMjguOTEyNiAzMi4yMjQzIDI4LjkxMjZDMjkuNzg5MSAyOC45MTI2IDI3LjkwMzMgMjguMzI1NiAyNi42MDMzIDI3LjE3MDZDMjUuMjY2OCAyNS45OTY3IDI0LjQ3OTUgMjQuMjkyNiAyNC4yMjMxIDIyLjA3NzJaTTQ5LjU4MTQgMTQuMDY3OVYxNy4wOTc0SDQ3LjA1NDhWMjIuOTY3MUM0Ny4wNTQ4IDI0LjE0MTEgNDcuMDczMSAyNC44NDE3IDQ3LjEwOTcgMjUuMDQ5OUM0Ny4xNjQ2IDI1LjIzOTMgNDcuMjc0NSAyNS40MDk3IDQ3LjQ1NzYgMjUuNTQyMkM0Ny42MjIzIDI1LjY3NDggNDcuODIzNyAyNS43MzE2IDQ4LjA4MDEgMjUuNzMxNkM0OC40MjggMjUuNzMxNiA0OC45MjIzIDI1LjU5OSA0OS41NjMxIDI1LjM3MThMNDkuODc0NCAyOC4zNDQ2QzQ5LjAxMzkgMjguNzIzMiA0OC4wNjE4IDI4LjkxMjYgNDYuOTYzMiAyOC45MTI2QzQ2LjMwNDEgMjguOTEyNiA0NS42OTk5IDI4Ljc5OSA0NS4xNjg5IDI4LjU3MThDNDQuNjM3OSAyOC4zNDQ2IDQ0LjIzNTEgMjguMDQxNiA0My45Nzg4IDI3LjY2MjlDNDMuNzQwOCAyNy4zMDMyIDQzLjU1NzcgMjYuNzkxOSA0My40NjYxIDI2LjE2NzFDNDMuMzkyOSAyNS43MTI2IDQzLjM1NjMgMjQuODIyNyA0My4zNTYzIDIzLjQ1OTRWMTcuMTE2NEg0MS42NzE4VjE0LjA4NjhINDMuMzU2M1YxMS4yMDg4TDQ3LjA1NDggOC45NTU1NVYxNC4wODY4SDQ5LjU4MTRWMTQuMDY3OVpNNTQuOTI3NyAxOC41MzY0TDUxLjU3NzEgMTcuOTMwNUM1MS45NjE2IDE2LjUxMDQgNTIuNjAyNSAxNS40NjkgNTMuNTE3OSAxNC43ODc0QzU0LjQ1MTcgMTQuMTI0NyA1NS44MjQ5IDEzLjc4MzkgNTcuNjM3NSAxMy43ODM5QzU5LjI4NTMgMTMuNzgzOSA2MC41MTIxIDEzLjk3MzIgNjEuMzE3NyAxNC4zODk4QzYyLjEyMzMgMTQuNzg3NCA2Mi42OTA5IDE1LjI5ODYgNjMuMDIwNCAxNS45MjM1QzYzLjM1IDE2LjU0ODMgNjMuNTE0OCAxNy42ODQ0IDYzLjUxNDggMTkuMzMxN0w2My40NTk4IDIzLjgwMDNDNjMuNDU5OCAyNS4wNjg5IDYzLjUxNDggMjUuOTk2NyA2My42NDI5IDI2LjYwMjZDNjMuNzUyOCAyNy4yMDg1IDYzLjk5MDggMjcuODcxMiA2NC4zMDIxIDI4LjU1MjhINjAuNjQwMkM2MC41MzA0IDI4LjMwNjcgNjAuNDIwNSAyNy45MjggNjAuMjkyMyAyNy40MzU3QzYwLjIzNzQgMjcuMjA4NSA2MC4xODI1IDI3LjA1NyA2MC4xNDU5IDI2Ljk4MTNDNTkuNTIzNCAyNy42MjUgNTguODQ1OSAyOC4wOTg0IDU4LjEzMTkgMjguNDIwM0M1Ny40MTc4IDI4Ljc0MjIgNTYuNjQ4OCAyOC44OTM3IDU1Ljg0MzIgMjguODkzN0M1NC40MTUxIDI4Ljg5MzcgNTMuMjc5OSAyOC40OTYgNTIuNDU2IDI3LjY4MThDNTEuNjMyMSAyNi44ODY2IDUxLjIxMSAyNS44NjQxIDUxLjIxMSAyNC42MTQ0QzUxLjIxMSAyMy44MDAzIDUxLjM5NDEgMjMuMDgwNyA1MS43Nzg1IDIyLjQzN0M1Mi4xNjMgMjEuODEyMSA1Mi42NzU3IDIxLjMwMDkgNTMuMzcxNCAyMC45NjAxQzU0LjA0ODkgMjAuNjM4MiA1NS4wMTkzIDIwLjMzNTIgNTYuMzAwOSAyMC4wNzAxQzU4LjAyMiAxOS43NDgzIDU5LjIzMDQgMTkuNDI2NCA1OS44ODk1IDE5LjE0MjNWMTguNzYzN0M1OS44ODk1IDE4LjAwNjMgNTkuNzA2NSAxNy40OTUgNTkuMzc2OSAxNy4xNzMyQzU5LjAyOSAxNi44NTEzIDU4LjM1MTYgMTYuNjgwOSA1Ny4zODEyIDE2LjY4MDlDNTYuNzIyIDE2LjY4MDkgNTYuMjA5NCAxNi44MzIzIDU1Ljg0MzIgMTcuMDk3NEM1NS40NDA0IDE3LjM4MTQgNTUuMTQ3NCAxNy44NTQ4IDU0LjkyNzcgMTguNTM2NFpNNTkuODg5NSAyMS42NDE3QzU5LjQxMzUgMjEuNzkzMiA1OC42NjI4IDIyLjAwMTUgNTcuNjM3NSAyMi4yMjg3QzU2LjYxMjIgMjIuNDU1OSA1NS45NTMxIDIyLjY4MzEgNTUuNjIzNSAyMi44OTE0QzU1LjE0NzQgMjMuMjUxMiA1NC44OTExIDIzLjY4NjYgNTQuODkxMSAyNC4yMzU3QzU0Ljg5MTEgMjQuNzg0OSA1NS4wNzQyIDI1LjIzOTMgNTUuNDc3IDI1LjYzNjlDNTUuODYxNSAyNi4wMzQ1IDU2LjMzNzUgMjYuMjIzOSA1Ni45NDE3IDI2LjIyMzlDNTcuNjE5MiAyNi4yMjM5IDU4LjI2IDI1Ljk5NjcgNTguODY0MiAyNS41NDIyQzU5LjMwMzYgMjUuMjAxNCA1OS41OTY2IDI0Ljc4NDkgNTkuNzQzMSAyNC4yNzM2QzU5LjgzNDYgMjMuOTUxNyA1OS44ODk1IDIzLjMwOCA1OS44ODk1IDIyLjM5OTFWMjEuNjQxN1pNNjUuNTQ3MSAxNC4wNjc5SDY3LjU5NzdWMTIuOTg4NkM2Ny41OTc3IDExLjc1NzkgNjcuNzI1OSAxMC44Njc5IDY3Ljk4MjIgMTAuMjYyQzY4LjIzODYgOS42NTYxMyA2OC42OTYzIDkuMTYzODMgNjkuMzczNyA4Ljc4NTE0QzcwLjA1MTIgOC40MDY0NSA3MC45MTE3IDguMjE3MSA3MS45MzcgOC4yMTcxQzcyLjk5OSA4LjIxNzEgNzQuMDQyNiA4LjM2ODU4IDc1LjA0OTYgOC43MDk0TDc0LjU3MzYgMTEuMzYwMkM3My45Njk0IDExLjIwODggNzMuMzgzNSAxMS4xMzMgNzIuODUyNSAxMS4xMzNDNzIuMzAzMiAxMS4xMzMgNzEuOTE4NyAxMS4yNjU2IDcxLjY2MjQgMTEuNTMwN0M3MS40MDYxIDExLjc5NTcgNzEuMzE0NSAxMi4yODggNzEuMzE0NSAxMy4wNDU0VjE0LjA2NzlINzQuMDc5MlYxNy4wNzg1SDcxLjMxNDVWMjguNTMzOUg2Ny42MTZWMTcuMDc4NUg2NS41NjU0VjE0LjA2NzlINjUuNTQ3MVpNNzQuNTE4NiAxNC4wNjc5SDc2LjU2OTNWMTIuOTg4NkM3Ni41NjkzIDExLjc1NzkgNzYuNjk3NCAxMC44Njc5IDc2Ljk1MzggMTAuMjYyQzc3LjIxMDEgOS42NTYxMyA3Ny42Njc4IDkuMTYzODMgNzguMzQ1MyA4Ljc4NTE0Qzc5LjAyMjcgOC40MDY0NSA3OS44ODMyIDguMjE3MSA4MC45MDg2IDguMjE3MUM4MS45NzA1IDguMjE3MSA4My4wMTQxIDguMzY4NTggODQuMDIxMSA4LjcwOTRMODMuNTQ1MSAxMS4zNjAyQzgyLjk0MDkgMTEuMjA4OCA4Mi4zNTUgMTEuMTMzIDgxLjgwNTcgMTEuMTMzQzgxLjI1NjQgMTEuMTMzIDgwLjg3MTkgMTEuMjY1NiA4MC42MTU2IDExLjUzMDdDODAuMzk1OSAxMS43OTU3IDgwLjI2NzcgMTIuMjg4IDgwLjI2NzcgMTMuMDQ1NFYxNC4wNjc5SDgzLjAzMjRWMTcuMDc4NUg4MC4yNjc3VjI4LjUzMzlINzYuNTY5M1YxNy4wNzg1SDc0LjUxODZWMTQuMDY3OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTk4LjY0OTggNS4yNDQ3N0M5Ny45NTQgMi43ODMyOCA5NS42NDcxIDIuNDA0NTkgOTMuNzI0NiAzLjc2Nzg4QzkxLjc0NzIgNS4xNjkwMyA5MC40Mjg5IDguMTk4NTcgOTEuMTA2NCAxMC42MjIyQzkxLjgwMjEgMTMuMDgzNyA5NC4xMDkxIDEzLjQ2MjQgOTYuMDMxNiAxMi4xMThDOTguMDA5IDEwLjcxNjkgOTkuMzI3MiA3LjY2ODQgOTguNjQ5OCA1LjI0NDc3WiIgZmlsbD0iI0YzNzU0MCIvPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05MS4xNDI4IDI3LjgxNDlDOTEuOTMwMSAyNy4xMTQzIDkyLjk3MzggMjYuNDUxNiA5My44MTYgMjUuODgzNkw5NS40NjM4IDI0LjgyMzJDOTcuODQ0IDIwLjAzMjggMTAxLjA0OCAxNS41NDUzIDEwNC40MTcgMTEuNDU1NEMxMDcuNDkzIDcuNjg3NDQgMTExLjA4MiAzLjc0OTA1IDExNSAwLjkwODg2TDExNC4zNDEgMEMxMTAuMTQ4IDIuMjkxMDggMTA2LjMwMyA1LjQxNTI5IDEwMi44NDIgOC43NjY3MUM5OS4xOTg5IDEyLjMwNzUgOTUuODQ4MyAxNi4yMjY5IDkzLjE1NjggMjAuNTgxOUw5My4wNDcgMjAuNzMzNEw5Mi4yNzggMTkuMDY3MUM5MS43MTA0IDE3Ljg1NTMgOTAuMTM1OCAxNC42NTU0IDg4LjU0MjkgMTQuNjU1NEM4Ni45NSAxNC42NTU0IDg1LjQzMDMgMTUuODI5MyA4NC4zMTM1IDE2Ljk0NjRDODUuMzAyMiAxNy4zMDYyIDg2LjEyNjEgMTcuOTg3OCA4Ni43ODUyIDE4LjgyMUM4Ny44MTA1IDIwLjA3MDYgODguNjM0NSAyMS43NzQ4IDg5LjI5MzYgMjMuMjcwNkw4OS45MTYxIDI0LjY3MTdDOTAuMzE4OSAyNS42NzUzIDkwLjgxMzMgMjYuNzkyNCA5MS4xNDI4IDI3LjgxNDlaIiBmaWxsPSIjRjM3NTQwIi8+DQo8L3N2Zz4NCg==';
|
|
37588
|
+
this.itemsPerRow = 4;
|
|
37589
|
+
this.iconTextVerticalMargin = 25;
|
|
37590
|
+
this.items = [[]];
|
|
37591
|
+
this.zIndex = 1;
|
|
37592
|
+
this.imageErrorResolverType = EnumImageResolverType.LOGO;
|
|
37593
|
+
this.headerHeight = 0;
|
|
37594
|
+
this.width = 400;
|
|
37595
|
+
this.layoutService.modulePanelWidth$.subscribe(x => this.width = x);
|
|
37596
|
+
}
|
|
37597
|
+
ngOnInit() {
|
|
37598
|
+
this.subscriptions.push(this.mls.lang$.subscribe(x => this.lang = x));
|
|
37599
|
+
this.subscriptions.push(this.authService.data$.subscribe(x => this.isRoot = !!x?.isRoot));
|
|
37600
|
+
this.scrollWidth = this.layoutService.modulePanelWidth$.value - this.layoutService.basicSpacing * 2;
|
|
37601
|
+
this.scrollHeight = window.innerHeight - this.layoutService.headerHeight$.value - this.layoutService.basicSpacing * 2;
|
|
37602
|
+
this.itemWidth = this.scrollWidth / 4;
|
|
37603
|
+
}
|
|
37604
|
+
transformTo2DArray(flatList) {
|
|
37605
|
+
const result = [];
|
|
37606
|
+
for (let i = 0; i < flatList.length; i += this.itemsPerRow) {
|
|
37607
|
+
const row = flatList.slice(i, i + this.itemsPerRow);
|
|
37608
|
+
// If the last row has fewer than itemsPerRow, pad it with undefineds
|
|
37609
|
+
while (row.length < this.itemsPerRow) {
|
|
37610
|
+
row.push(undefined);
|
|
37421
37611
|
}
|
|
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();
|
|
37612
|
+
result.push(row);
|
|
37462
37613
|
}
|
|
37463
|
-
|
|
37464
|
-
// That is. Happy debugging!
|
|
37465
|
-
}
|
|
37466
|
-
onCheckIncludeDissolvedChange(value) {
|
|
37467
|
-
console.log("onCheckIncludeDissolvedChange", value);
|
|
37614
|
+
return result;
|
|
37468
37615
|
}
|
|
37469
|
-
|
|
37470
|
-
|
|
37471
|
-
|
|
37472
|
-
|
|
37616
|
+
ngAfterViewInit() {
|
|
37617
|
+
setTimeout(() => {
|
|
37618
|
+
this.designMode = localStorage.getItem('moduleDesignMode') === 'on';
|
|
37619
|
+
this.zIndex = this.domService.getMaxZIndex() + 1;
|
|
37620
|
+
// this.listenerFn = this.renderer.listen('window', 'click', (e: Event) => {
|
|
37621
|
+
// if (!this.designMode) {
|
|
37622
|
+
// if (this.container && !!!this.container.nativeElement.contains(e.target)) {
|
|
37623
|
+
// this.ahs.activeKey$.next(undefined);
|
|
37624
|
+
// }
|
|
37625
|
+
// }
|
|
37626
|
+
// });
|
|
37627
|
+
this.subscriptions.push(this.navigatorService.rootNavigatorItems$.subscribe(x => {
|
|
37628
|
+
// Transform the flat list into a 2D array
|
|
37629
|
+
this.items = this.transformTo2DArray(x);
|
|
37630
|
+
}));
|
|
37631
|
+
this.subscriptions.push(this.layoutService.headerHeight$.subscribe(x => {
|
|
37632
|
+
this.headerHeight = x;
|
|
37633
|
+
}));
|
|
37634
|
+
if (!!localStorage) {
|
|
37635
|
+
const activeRootMenuItemId = Number(localStorage.getItem('activeRootMenuItemId') || '0');
|
|
37636
|
+
this.navigatorService.activeRootMenuItemId$.next(activeRootMenuItemId);
|
|
37637
|
+
}
|
|
37638
|
+
if (window.innerWidth < this.layoutService.modulePanelWidth$.value) {
|
|
37639
|
+
this.layoutService.modulePanelWidth$.next(window.innerWidth);
|
|
37640
|
+
}
|
|
37473
37641
|
});
|
|
37474
37642
|
}
|
|
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
|
-
});
|
|
37643
|
+
onDesignModeClick(e) {
|
|
37644
|
+
e.stopPropagation();
|
|
37645
|
+
if (localStorage.getItem('moduleDesignMode') === 'on') {
|
|
37646
|
+
localStorage.setItem('moduleDesignMode', 'off');
|
|
37647
|
+
this.designMode = false;
|
|
37508
37648
|
}
|
|
37509
37649
|
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);
|
|
37650
|
+
localStorage.setItem('moduleDesignMode', 'on');
|
|
37651
|
+
this.designMode = true;
|
|
37525
37652
|
}
|
|
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
37653
|
}
|
|
37535
37654
|
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
|
-
}
|
|
37655
|
+
this.subscriptions.map(x => x?.unsubscribe());
|
|
37656
|
+
if (this.listenerFn)
|
|
37657
|
+
this.listenerFn();
|
|
37547
37658
|
}
|
|
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"] }] }); }
|
|
37659
|
+
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 }); }
|
|
37660
|
+
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
37661
|
}
|
|
37557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type:
|
|
37662
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerComponent, decorators: [{
|
|
37558
37663
|
type: Component,
|
|
37559
|
-
args: [{ selector: 'core-
|
|
37560
|
-
|
|
37664
|
+
args: [{ selector: 'core-root-menu-item-picker', imports: [
|
|
37665
|
+
CoreLineComponent,
|
|
37561
37666
|
NgStyle,
|
|
37562
|
-
|
|
37563
|
-
|
|
37564
|
-
TranslatePipe,
|
|
37667
|
+
ModuleItemComponent,
|
|
37668
|
+
ImageErrorResolverDirective,
|
|
37565
37669
|
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: [{
|
|
37670
|
+
], 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"] }]
|
|
37671
|
+
}], 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
37672
|
type: Input
|
|
37589
|
-
}],
|
|
37673
|
+
}], itemsPerRow: [{
|
|
37590
37674
|
type: Input
|
|
37591
|
-
}],
|
|
37675
|
+
}], iconTextVerticalMargin: [{
|
|
37592
37676
|
type: Input
|
|
37593
|
-
}], itemDoubleClick: [{
|
|
37594
|
-
type: Output
|
|
37595
|
-
}], itemClick: [{
|
|
37596
|
-
type: Output
|
|
37597
37677
|
}], container: [{
|
|
37598
37678
|
type: ViewChild,
|
|
37599
37679
|
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
37680
|
}] } });
|
|
37610
37681
|
|
|
37682
|
+
class CoreRootMenuItemPickerService {
|
|
37683
|
+
constructor() { }
|
|
37684
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37685
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, providedIn: 'root' }); }
|
|
37686
|
+
}
|
|
37687
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: CoreRootMenuItemPickerService, decorators: [{
|
|
37688
|
+
type: Injectable,
|
|
37689
|
+
args: [{
|
|
37690
|
+
providedIn: 'root'
|
|
37691
|
+
}]
|
|
37692
|
+
}], ctorParameters: () => [] });
|
|
37693
|
+
|
|
37611
37694
|
class CoreComProfileComponent extends BaseComponent {
|
|
37612
37695
|
ngOnChanges(changes) {
|
|
37613
37696
|
this.cdr.markForCheck();
|
|
@@ -38037,11 +38120,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38037
38120
|
const coreDocGenRoutes = [
|
|
38038
38121
|
{
|
|
38039
38122
|
path: 'template-list',
|
|
38040
|
-
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-
|
|
38123
|
+
loadComponent: () => import('./ngx-histaff-alpha-template-list.component-B8DQ5E2P.mjs').then(m => m.TemplateListComponent),
|
|
38041
38124
|
},
|
|
38042
38125
|
{
|
|
38043
38126
|
path: ":id",
|
|
38044
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-
|
|
38127
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-template-editor.component-DOZibiVG.mjs').then(m => m.CoreTemplateEditorComponent),
|
|
38045
38128
|
canDeactivate: [CanDeactivateGuard]
|
|
38046
38129
|
},
|
|
38047
38130
|
{
|
|
@@ -38070,7 +38153,7 @@ const coreFormDesignRoutes = [
|
|
|
38070
38153
|
},
|
|
38071
38154
|
{
|
|
38072
38155
|
path: ':id',
|
|
38073
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-
|
|
38156
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-form-design.component-DQUPb25c.mjs').then(function (n) { return n.c; }).then(m => m.CoreFormDesignComponent)
|
|
38074
38157
|
}
|
|
38075
38158
|
];
|
|
38076
38159
|
|
|
@@ -38963,7 +39046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
38963
39046
|
const coreNavigationTrackerRoutes = [
|
|
38964
39047
|
{
|
|
38965
39048
|
path: '',
|
|
38966
|
-
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-
|
|
39049
|
+
loadComponent: () => import('./ngx-histaff-alpha-tracker-studio.component-cnxgZ6An.mjs').then(m => m.TrackerStudioComponent)
|
|
38967
39050
|
}
|
|
38968
39051
|
];
|
|
38969
39052
|
|
|
@@ -41552,33 +41635,33 @@ const coreWorkflowRoutes = [
|
|
|
41552
41635
|
{
|
|
41553
41636
|
path: 'form-assign/:id',
|
|
41554
41637
|
outlet: "formAssignAux",
|
|
41555
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-
|
|
41638
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-form-assign.component-BfZAeogE.mjs').then(m => m.WfFormAssignComponent),
|
|
41556
41639
|
canDeactivate: [CanDeactivateGuard]
|
|
41557
41640
|
}
|
|
41558
41641
|
]
|
|
41559
41642
|
},
|
|
41560
41643
|
{
|
|
41561
41644
|
path: 'global-config',
|
|
41562
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-
|
|
41645
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-global-config.component-BmZ9RmJD.mjs').then(m => m.WfGlobalConfigComponent)
|
|
41563
41646
|
},
|
|
41564
41647
|
{
|
|
41565
41648
|
path: 'db-settings',
|
|
41566
|
-
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-
|
|
41649
|
+
loadComponent: () => import('./ngx-histaff-alpha-db-settings.component-CQc3XpNh.mjs').then(m => m.DbSettingsComponent)
|
|
41567
41650
|
},
|
|
41568
41651
|
{
|
|
41569
41652
|
path: 'workflow-consume',
|
|
41570
|
-
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-
|
|
41653
|
+
loadComponent: () => import('./ngx-histaff-alpha-core-workflow-consume.component-DJN5n0Y-.mjs').then(m => m.CoreWorkflowConsumeComponent),
|
|
41571
41654
|
children: [
|
|
41572
41655
|
{
|
|
41573
41656
|
path: ':id',
|
|
41574
41657
|
outlet: "workflowConsume",
|
|
41575
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
41658
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-2kAqtlyo.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41576
41659
|
}
|
|
41577
41660
|
]
|
|
41578
41661
|
},
|
|
41579
41662
|
{
|
|
41580
41663
|
path: 'workflow-consume/:id',
|
|
41581
|
-
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-
|
|
41664
|
+
loadComponent: () => import('./ngx-histaff-alpha-live-form.component-2kAqtlyo.mjs').then(function (n) { return n.l; }).then(m => m.LiveFormComponent),
|
|
41582
41665
|
},
|
|
41583
41666
|
{
|
|
41584
41667
|
path: 'workflow-group-edit/:id',
|
|
@@ -41588,17 +41671,17 @@ const coreWorkflowRoutes = [
|
|
|
41588
41671
|
},
|
|
41589
41672
|
{
|
|
41590
41673
|
path: 'design/:id',
|
|
41591
|
-
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-
|
|
41674
|
+
loadChildren: () => import('./ngx-histaff-alpha-design-wrapper.route-COZXQaNQ.mjs').then(m => m.wfDesignWrapperRoutes),
|
|
41592
41675
|
},
|
|
41593
41676
|
]
|
|
41594
41677
|
},
|
|
41595
41678
|
{
|
|
41596
41679
|
path: 'react/:id',
|
|
41597
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-
|
|
41680
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-step-react.component-BsBX4QJV.mjs').then(m => m.WfInstanceStepReactComponent)
|
|
41598
41681
|
},
|
|
41599
41682
|
{
|
|
41600
41683
|
path: 'status/:id',
|
|
41601
|
-
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-
|
|
41684
|
+
loadComponent: () => import('./ngx-histaff-alpha-wf-instance-status.component-DeRlJp4L.mjs').then(m => m.WfInstanceStatusComponent)
|
|
41602
41685
|
}
|
|
41603
41686
|
];
|
|
41604
41687
|
|
|
@@ -43459,7 +43542,11 @@ class NavigatorComponent {
|
|
|
43459
43542
|
else if (this.menuClickedItem?.tree$Tier == 3) { //nếu là 3 cấp
|
|
43460
43543
|
array = x.filter(y => y.id == this.menuClickedItem.id);
|
|
43461
43544
|
arrayParrent = x.filter(y => y.id == this.menuClickedItem.tree$Parent);
|
|
43545
|
+
if (!arrayParrent.length)
|
|
43546
|
+
return;
|
|
43462
43547
|
let arrayGrandParrent = x.filter(z => z.id == arrayParrent[0].parent);
|
|
43548
|
+
if (!arrayGrandParrent.length)
|
|
43549
|
+
return;
|
|
43463
43550
|
let element = document.getElementById('main-menu-' + arrayParrent[0].id);
|
|
43464
43551
|
let element2 = document.getElementById('main-menu-' + arrayGrandParrent[0].id);
|
|
43465
43552
|
array[0].tree$Selected = true;
|
|
@@ -44219,5 +44306,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
44219
44306
|
* Generated bundle index. Do not edit.
|
|
44220
44307
|
*/
|
|
44221
44308
|
|
|
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-
|
|
44309
|
+
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 };
|
|
44310
|
+
//# sourceMappingURL=ngx-histaff-alpha-ngx-histaff-alpha-ByIs02SI.mjs.map
|