ngx-histaff-alpha 6.4.6 → 6.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-CgpENu_Z.mjs → ngx-histaff-alpha-ai-hint-for-table.component-f4YBgbOv.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-CgpENu_Z.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-f4YBgbOv.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BwT0fNvW.mjs → ngx-histaff-alpha-core-form-design.component-BMU-rbOU.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-BwT0fNvW.mjs.map → ngx-histaff-alpha-core-form-design.component-BMU-rbOU.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha-core-sys-action-edit.component-m1ILcKj5.mjs +14 -0
- package/fesm2022/ngx-histaff-alpha-core-sys-action-edit.component-m1ILcKj5.mjs.map +1 -0
- package/fesm2022/ngx-histaff-alpha-core-sys-action.component-nEE8LeYS.mjs +211 -0
- package/fesm2022/ngx-histaff-alpha-core-sys-action.component-nEE8LeYS.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-baBZ5cUE.mjs → ngx-histaff-alpha-core-template-editor.component-DwSst07G.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-baBZ5cUE.mjs.map → ngx-histaff-alpha-core-template-editor.component-DwSst07G.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Bwdo2YR_.mjs → ngx-histaff-alpha-core-toast-loading.component-DWIQZeZl.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Bwdo2YR_.mjs.map → ngx-histaff-alpha-core-toast-loading.component-DWIQZeZl.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-Cn7p5YAA.mjs → ngx-histaff-alpha-core-workflow-consume.component-B-RPGCiI.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-Cn7p5YAA.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-B-RPGCiI.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BemCRZVg.mjs → ngx-histaff-alpha-db-settings.component-C3fYKsMd.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-BemCRZVg.mjs.map → ngx-histaff-alpha-db-settings.component-C3fYKsMd.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DQugPvG6.mjs → ngx-histaff-alpha-design-wrapper.component-C9Jf7XWj.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-DQugPvG6.mjs.map → ngx-histaff-alpha-design-wrapper.component-C9Jf7XWj.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-dJP8TOCG.mjs → ngx-histaff-alpha-design-wrapper.route-Bk9j5IIl.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-dJP8TOCG.mjs.map → ngx-histaff-alpha-design-wrapper.route-Bk9j5IIl.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BD0nlr9q.mjs → ngx-histaff-alpha-form-array-props.component-DZ7gptOo.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-form-array-props.component-BD0nlr9q.mjs.map → ngx-histaff-alpha-form-array-props.component-DZ7gptOo.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-x9pUtNDf.mjs → ngx-histaff-alpha-hrm-schema.component-SerupGF3.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-x9pUtNDf.mjs.map → ngx-histaff-alpha-hrm-schema.component-SerupGF3.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-DaQa2HMD.mjs → ngx-histaff-alpha-live-form.component-CkeOK3B7.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-live-form.component-DaQa2HMD.mjs.map → ngx-histaff-alpha-live-form.component-CkeOK3B7.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-BkmluNfL.mjs → ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs} +116 -49
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DWiZCkqY.mjs → ngx-histaff-alpha-simple-chat.component-BbsCjEaN.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-DWiZCkqY.mjs.map → ngx-histaff-alpha-simple-chat.component-BbsCjEaN.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CtNxC8rS.mjs → ngx-histaff-alpha-template-list.component-BZCdtedY.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-CtNxC8rS.mjs.map → ngx-histaff-alpha-template-list.component-BZCdtedY.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-Dd2L5LNv.mjs → ngx-histaff-alpha-tracker-studio.component-CDJfkoan.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-Dd2L5LNv.mjs.map → ngx-histaff-alpha-tracker-studio.component-CDJfkoan.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BqsovEHT.mjs → ngx-histaff-alpha-wf-form-assign.component-BLM4gRwQ.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BqsovEHT.mjs.map → ngx-histaff-alpha-wf-form-assign.component-BLM4gRwQ.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BaI4euBK.mjs → ngx-histaff-alpha-wf-global-config.component-BhlbCxKD.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-BaI4euBK.mjs.map → ngx-histaff-alpha-wf-global-config.component-BhlbCxKD.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-CvvQUEOp.mjs → ngx-histaff-alpha-wf-instance-status.component-rCfzZVzd.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-CvvQUEOp.mjs.map → ngx-histaff-alpha-wf-instance-status.component-rCfzZVzd.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-D7zhYRrj.mjs → ngx-histaff-alpha-wf-instance-step-react.component-BFrOIHlR.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-D7zhYRrj.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-BFrOIHlR.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/interfaces/entities/ISysAction.d.ts +3 -0
- package/lib/app/libraries/core-button-group-vns/core-button-group-vns/core-button-group-vns.component.d.ts +1 -0
- package/lib/app/libraries/core-form-design/core-form-design.component.d.ts +1 -1
- package/lib/app/libraries/core-form-design/core-form-group-editor.component.d.ts +1 -1
- package/lib/app/root/core-sys-action/core-sys-action-edit/core-sys-action-edit.component.d.ts +5 -0
- package/lib/app/root/core-sys-action/core-sys-action.component.d.ts +54 -0
- package/lib/app/root/core-sys-action/core-sys-action.routes.d.ts +2 -0
- package/lib/app/root/core-sys-action/core-sys-action.service.d.ts +14 -0
- package/lib/app/services/action.service.d.ts +1 -0
- package/lib/app/services/app-config.service.d.ts +2 -0
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-BkmluNfL.mjs.map +0 -1
|
@@ -2,9 +2,9 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { inject, Injector, signal, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/forms';
|
|
4
4
|
import { FormsModule } from '@angular/forms';
|
|
5
|
-
import { B as BaseComponent,
|
|
5
|
+
import { B as BaseComponent, m as CoreWorkflowService, p as DbService, d as CorePageHeaderComponent, e as TranslatePipe, q as AiHintForColumnComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs';
|
|
6
6
|
import { Subject, BehaviorSubject, tap, debounceTime, distinctUntilChanged, switchMap, catchError, of, filter, finalize } from 'rxjs';
|
|
7
|
-
import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-
|
|
7
|
+
import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-DWIQZeZl.mjs';
|
|
8
8
|
|
|
9
9
|
class DbSettingsComponent extends BaseComponent {
|
|
10
10
|
constructor() {
|
|
@@ -153,9 +153,9 @@ class DbSettingsComponent extends BaseComponent {
|
|
|
153
153
|
this.orderChanges$.next(reordered);
|
|
154
154
|
}
|
|
155
155
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: DbSettingsComponent, isStandalone: true, selector: "db-settings", usesInheritance: true, ngImport: i0, template: "<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- \uD83D\uDD0D Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- \uD83D\uDCE6 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \uD83C\uDF00 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chi\u1EBFu C\u1EA5u tr\u00FAc D\u1EEF li\u1EC7u</h2>\r\n <p>\r\n B\u1EA3ng d\u01B0\u1EDBi \u0111\u00E2y hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 <strong>b\u1EA3ng d\u1EEF li\u1EC7u</strong> v\u00E0 c\u00E1c <strong>c\u1ED9t</strong> t\u01B0\u01A1ng \u1EE9ng trong h\u1EC7 th\u1ED1ng. \r\n B\u1EA1n c\u00F3 th\u1EC3 ch\u1ECDn c\u00E1c c\u1ED9t n\u00E0y \u0111\u1EC3 x\u00E2y d\u1EF1ng <em>\u0111i\u1EC1u ki\u1EC7n \u0111\u1ED9ng</em>, <em>tr\u00ECnh ph\u00E2n gi\u1EA3i ng\u01B0\u1EDDi duy\u1EC7t</em>, ho\u1EB7c <em>bi\u1EC3u th\u1EE9c t\u00EDnh to\u00E1n</em>.\r\n </p>\r\n <p>\r\n Giao di\u1EC7n n\u00E0y c\u0169ng h\u1ED7 tr\u1EE3 <strong>AI g\u1EE3i \u00FD th\u00F4ng minh</strong>, gi\u00FAp t\u1EF1 \u0111\u1ED9ng \u0111i\u1EC1n v\u00E0 ki\u1EC3m tra c\u00E1c bi\u1EC3u th\u1EE9c d\u1EF1a tr\u00EAn c\u1EA5u tr\u00FAc c\u01A1 s\u1EDF d\u1EEF li\u1EC7u th\u1EF1c t\u1EBF.\r\n </p>\r\n <p class=\"note\">M\u1EB9o: Di chu\u1ED9t v\u00E0o t\u00EAn c\u1ED9t \u0111\u1EC3 xem v\u00ED d\u1EE5 s\u1EED d\u1EE5ng trong lu\u1ED3ng ph\u00EA duy\u1EC7t.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>", styles: ["@charset \"UTF-8\";.container-fluid{padding:24px;background-color:#f9f9fb;max-width:1000px}.db-toolbar{padding:16px;background-color:#fff;border-radius:8px}.search-input{width:100%;max-width:300px;padding:8px 12px;border-radius:6px;border:1px solid #ccc;transition:border-color .3s ease}.search-input:focus{border-color:#007bff;outline:none;background-color:#fff}.page-size-select{width:80px;min-width:80px;border-radius:6px;padding:4px 6px}.sort-toggle-btn{padding:6px 16px;border-radius:6px;font-weight:500;transition:all .2s ease-in-out}.sort-toggle-btn:hover{background-color:#e8e8e8;border-color:#bbb}.group-list{margin-top:20px}.drag-item{margin-bottom:16px;cursor:grab}.table-wrapper{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 6px #0000000a;transition:box-shadow .2s ease,transform .2s ease;margin-bottom:15px}.table-wrapper.active{border-left:4px solid #4caf50}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.table-name{font-size:1.1rem;font-weight:600;color:#333}.table-name.has-hint{color:#2a9d8f;position:relative}.table-name.has-hint:after{content:\"\\1f4a1\";font-size:.9rem;margin-left:6px;vertical-align:middle;opacity:.8}.table-name.has-hint:hover:after{opacity:1}.item-columns{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd}.db-settings-description{background-color:#f9fafb;padding:1rem 1.5rem;border-radius:.5rem;margin-bottom:1.5rem;color:#374151}.db-settings-description h2{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#1f2937}.db-settings-description p{margin:.25rem 0;line-height:1.5}.db-settings-description .note{margin-top:.75rem;font-size:.875rem;color:#6b7280}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreToastLoadingComponent, selector: "core-toast-loading" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: AiHintForColumnComponent, selector: "ai-hint-for-column", inputs: ["$table", "$column", "$top", "$left"], outputs: ["$closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ngx-histaff-alpha-ngx-histaff-alpha-
|
|
156
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.5", type: DbSettingsComponent, isStandalone: true, selector: "db-settings", usesInheritance: true, ngImport: i0, template: "<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- \uD83D\uDD0D Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- \uD83D\uDCE6 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- \uD83C\uDF00 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chi\u1EBFu C\u1EA5u tr\u00FAc D\u1EEF li\u1EC7u</h2>\r\n <p>\r\n B\u1EA3ng d\u01B0\u1EDBi \u0111\u00E2y hi\u1EC3n th\u1ECB t\u1EA5t c\u1EA3 <strong>b\u1EA3ng d\u1EEF li\u1EC7u</strong> v\u00E0 c\u00E1c <strong>c\u1ED9t</strong> t\u01B0\u01A1ng \u1EE9ng trong h\u1EC7 th\u1ED1ng. \r\n B\u1EA1n c\u00F3 th\u1EC3 ch\u1ECDn c\u00E1c c\u1ED9t n\u00E0y \u0111\u1EC3 x\u00E2y d\u1EF1ng <em>\u0111i\u1EC1u ki\u1EC7n \u0111\u1ED9ng</em>, <em>tr\u00ECnh ph\u00E2n gi\u1EA3i ng\u01B0\u1EDDi duy\u1EC7t</em>, ho\u1EB7c <em>bi\u1EC3u th\u1EE9c t\u00EDnh to\u00E1n</em>.\r\n </p>\r\n <p>\r\n Giao di\u1EC7n n\u00E0y c\u0169ng h\u1ED7 tr\u1EE3 <strong>AI g\u1EE3i \u00FD th\u00F4ng minh</strong>, gi\u00FAp t\u1EF1 \u0111\u1ED9ng \u0111i\u1EC1n v\u00E0 ki\u1EC3m tra c\u00E1c bi\u1EC3u th\u1EE9c d\u1EF1a tr\u00EAn c\u1EA5u tr\u00FAc c\u01A1 s\u1EDF d\u1EEF li\u1EC7u th\u1EF1c t\u1EBF.\r\n </p>\r\n <p class=\"note\">M\u1EB9o: Di chu\u1ED9t v\u00E0o t\u00EAn c\u1ED9t \u0111\u1EC3 xem v\u00ED d\u1EE5 s\u1EED d\u1EE5ng trong lu\u1ED3ng ph\u00EA duy\u1EC7t.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>", styles: ["@charset \"UTF-8\";.container-fluid{padding:24px;background-color:#f9f9fb;max-width:1000px}.db-toolbar{padding:16px;background-color:#fff;border-radius:8px}.search-input{width:100%;max-width:300px;padding:8px 12px;border-radius:6px;border:1px solid #ccc;transition:border-color .3s ease}.search-input:focus{border-color:#007bff;outline:none;background-color:#fff}.page-size-select{width:80px;min-width:80px;border-radius:6px;padding:4px 6px}.sort-toggle-btn{padding:6px 16px;border-radius:6px;font-weight:500;transition:all .2s ease-in-out}.sort-toggle-btn:hover{background-color:#e8e8e8;border-color:#bbb}.group-list{margin-top:20px}.drag-item{margin-bottom:16px;cursor:grab}.table-wrapper{background:#fff;border-radius:12px;padding:16px;box-shadow:0 2px 6px #0000000a;transition:box-shadow .2s ease,transform .2s ease;margin-bottom:15px}.table-wrapper.active{border-left:4px solid #4caf50}.item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.table-name{font-size:1.1rem;font-weight:600;color:#333}.table-name.has-hint{color:#2a9d8f;position:relative}.table-name.has-hint:after{content:\"\\1f4a1\";font-size:.9rem;margin-left:6px;vertical-align:middle;opacity:.8}.table-name.has-hint:hover:after{opacity:1}.item-columns{margin-top:10px;padding-top:10px;border-top:1px dashed #ddd}.db-settings-description{background-color:#f9fafb;padding:1rem 1.5rem;border-radius:.5rem;margin-bottom:1.5rem;color:#374151}.db-settings-description h2{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;color:#1f2937}.db-settings-description p{margin:.25rem 0;line-height:1.5}.db-settings-description .note{margin-top:.75rem;font-size:.875rem;color:#6b7280}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CorePageHeaderComponent, selector: "core-page-header", inputs: ["instanceNumber", "shownItems", "title", "hideButtonGroup", "htmlTooltipRef"], outputs: ["buttonClick"] }, { kind: "component", type: CoreToastLoadingComponent, selector: "core-toast-loading" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: AiHintForColumnComponent, selector: "ai-hint-for-column", inputs: ["$table", "$column", "$top", "$left"], outputs: ["$closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.fa; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.fb; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.f9; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-f4YBgbOv.mjs').then(m => m.AiHintForTableComponent)]] }); }
|
|
157
157
|
}
|
|
158
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, resolveDeferredDeps: () => [import('./ngx-histaff-alpha-ngx-histaff-alpha-
|
|
158
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ngImport: i0, type: DbSettingsComponent, resolveDeferredDeps: () => [import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.fa; }).then(m => m.CoreStickerCollectionComponent), import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.fb; }).then(m => m.DragReorderDirective), import('./ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs').then(function (n) { return n.f9; }).then(m => m.TooltipDirective), import('./ngx-histaff-alpha-ai-hint-for-table.component-f4YBgbOv.mjs').then(m => m.AiHintForTableComponent)], resolveMetadata: (CoreStickerCollectionComponent, DragReorderDirective, TooltipDirective, AiHintForTableComponent) => ({ decorators: [{
|
|
159
159
|
type: Component,
|
|
160
160
|
args: [{ selector: 'db-settings', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
161
161
|
FormsModule,
|
|
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.5", ng
|
|
|
171
171
|
}], ctorParameters: null, propDecorators: null }) });
|
|
172
172
|
|
|
173
173
|
export { DbSettingsComponent };
|
|
174
|
-
//# sourceMappingURL=ngx-histaff-alpha-db-settings.component-
|
|
174
|
+
//# sourceMappingURL=ngx-histaff-alpha-db-settings.component-C3fYKsMd.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-db-settings.component-BemCRZVg.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.html"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, runInInjectionContext, Injector, inject, signal, WritableSignal, effect, computed } from '@angular/core';\r\nimport { CoreStickerCollectionComponent } from '../../core-sticker-collection/core-sticker-collection.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { IWorkflowSchemaTable } from '../interfaces/IWorkflowSchema'\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { BehaviorSubject, catchError, debounceTime, distinctUntilChanged, filter, finalize, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { DbService, IGetWorkflowSchemaRequest } from '../../../services/db.service';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { AiHintForTableComponent } from './ai-hint-for-table/ai-hint-for-table.component';\r\nimport { AiHintForColumnComponent } from './ai-hint-for-column/ai-hint-for-column.component';\r\nimport { CoreToastLoadingComponent } from '../../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n selector: 'db-settings',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CorePageHeaderComponent,\r\n CoreStickerCollectionComponent,\r\n CoreToastLoadingComponent,\r\n DragReorderDirective,\r\n TranslatePipe,\r\n TooltipDirective,\r\n AiHintForTableComponent,\r\n AiHintForColumnComponent,\r\n ],\r\n templateUrl: './db-settings.component.html',\r\n styleUrl: './db-settings.component.scss'\r\n})\r\nexport class DbSettingsComponent extends BaseComponent implements AfterViewInit {\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n dbs = inject(DbService);\r\n injector = inject(Injector);\r\n // $schema = this.wfs.$workflowDbSchema;\r\n $loading = signal(false);\r\n $sortMode = signal<boolean>(false);\r\n\r\n $activeHintEditor = signal<{\r\n table: IWorkflowSchemaTable;\r\n column: string;\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n\r\n orderChanges$ = new Subject<IWorkflowSchemaTable[]>();\r\n activeColumnsChanges$ = new Subject<{ table: string; activeColumns: string[] }>();\r\n\r\n $totalItems = signal(0);\r\n\r\n searchTerm: string = '';\r\n search$ = new BehaviorSubject<string>('');\r\n\r\n getListStream$ = new BehaviorSubject<IGetWorkflowSchemaRequest | null>(null);\r\n\r\n onFieldToggle(table: IWorkflowSchemaTable, e: string[]): void {\r\n this.updateTableStatus(table, !!e.length);\r\n this.activeColumnsChanges$.next({ table: table.table, activeColumns: e });\r\n }\r\n\r\n openHintEditor(table: IWorkflowSchemaTable, e: any): void {\r\n const { column } = e.item;\r\n this.$activeHintEditor.set({\r\n table,\r\n column,\r\n top: e.e.clientY,\r\n left: e.e.clientX,\r\n });\r\n }\r\n\r\n closeHintEditor(): void {\r\n this.$activeHintEditor.set(null);\r\n }\r\n\r\n onSearchChange(e: string): void {\r\n this.search$.next(e);\r\n }\r\n\r\n getActiveColumnNameArray(table: string): string[] {\r\n return this.wfs.$workflowDbSchema().filter(x => x.table === table)[0].columns.filter(x => !!x.isActive).map(x => x.column);\r\n }\r\n\r\n updateTableStatus(table: IWorkflowSchemaTable, isActive: boolean): void {\r\n\r\n if (table.isActive === isActive) return;\r\n\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n isActive,\r\n columns: t.columns.map(c => ({ ...c, isActive }))\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set([...updated]);\r\n\r\n\r\n }\r\n\r\n togglerSortMode(): void {\r\n this.$sortMode.set(!this.$sortMode())\r\n }\r\n\r\n updateColumnStatus(table: IWorkflowSchemaTable, selectedColumns: string[]): void {\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n columns: t.columns.map(c => ({\r\n ...c,\r\n isActive: selectedColumns.includes(c.column)\r\n })),\r\n isActive: selectedColumns.length > 0\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set(updated);\r\n }\r\n\r\n save(): void {\r\n const payload = this.wfs.$workflowDbSchema().map(table => ({\r\n table: table.table,\r\n isActive: table.isActive,\r\n columns: table.columns.map(c => ({\r\n column: c.column,\r\n isActive: c.isActive,\r\n hintForAi: c.hintForAi\r\n }))\r\n }));\r\n\r\n console.log('Saving schema payload:', payload);\r\n // Optional: Call API to save\r\n // this.http.post('/api/.../UpdateWorkflowSchema', payload).subscribe(...)\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.orderChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a.map(x => ({ id: x.id, orderNum: x.orderNum }))) ===\r\n JSON.stringify(b.map(x => ({ id: x.id, orderNum: x.orderNum })))\r\n ),\r\n switchMap(newOrder => this.wfs.updateTableOrder(newOrder)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.activeColumnsChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.activeColumnsChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a) === JSON.stringify(b)\r\n ),\r\n switchMap(newState => this.dbs.updateColumnStatus(newState.table, newState.activeColumns)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.search$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe(s => {\r\n this.getListStream$.next({\r\n ...this.getListStream$.value,\r\n searchTerm: s\r\n });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.getListStream$.pipe(\r\n filter(Boolean),\r\n distinctUntilChanged((prev, curr) =>\r\n JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n tap(() => this.$loading.set(true)),\r\n switchMap(request =>\r\n this.dbs.syncAndGetWorkflowSchemaMetadata(request).pipe(\r\n catchError(() => of({ ok: false, status: 500 })),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n )\r\n ).subscribe((res: any) => {\r\n if (res.ok && res.status === 200 && res.body?.statusCode === 200) {\r\n this.wfs.$workflowDbSchema.set(res.body.innerBody.items);\r\n this.$totalItems.set(res.body.innerBody.totalItems)\r\n }\r\n })\r\n );\r\n\r\n\r\n setTimeout(() => {\r\n // Some more code...\r\n })\r\n }\r\n\r\n onTableShowMoreClicked(table: string, e: any) {\r\n\r\n }\r\n\r\n onListReorderUpdate(orderSet: { id: string; orderNum: number }[]): void {\r\n // Normalize ID to numbers\r\n const orderMap = new Map<number, number>(\r\n orderSet.map(x => [Number(x.id), x.orderNum])\r\n );\r\n\r\n // Get current state\r\n const currentTables = this.wfs.$workflowDbSchema();\r\n\r\n // Rebuild reordered state\r\n const reordered = currentTables\r\n .map(table => ({\r\n ...table,\r\n orderNum: orderMap.get(table.id) ?? table.orderNum\r\n }))\r\n .sort((a, b) => (a.orderNum ?? 0) - (b.orderNum ?? 0));\r\n\r\n // Debug output\r\n console.log(\"🌀 Reordered Groups:\", reordered);\r\n\r\n // Commit to signal/store\r\n this.wfs.$workflowDbSchema.set(reordered);\r\n\r\n // Optional: Trigger backend sync\r\n this.orderChanges$.next(reordered);\r\n }\r\n\r\n}\r\n","<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- 🔍 Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- 📦 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- 🌀 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chiếu Cấu trúc Dữ liệu</h2>\r\n <p>\r\n Bảng dưới đây hiển thị tất cả <strong>bảng dữ liệu</strong> và các <strong>cột</strong> tương ứng trong hệ thống. \r\n Bạn có thể chọn các cột này để xây dựng <em>điều kiện động</em>, <em>trình phân giải người duyệt</em>, hoặc <em>biểu thức tính toán</em>.\r\n </p>\r\n <p>\r\n Giao diện này cũng hỗ trợ <strong>AI gợi ý thông minh</strong>, giúp tự động điền và kiểm tra các biểu thức dựa trên cấu trúc cơ sở dữ liệu thực tế.\r\n </p>\r\n <p class=\"note\">Mẹo: Di chuột vào tên cột để xem ví dụ sử dụng trong luồng phê duyệt.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-db-settings.component-C3fYKsMd.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/db-settings/db-settings.component.html"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, runInInjectionContext, Injector, inject, signal, WritableSignal, effect, computed } from '@angular/core';\r\nimport { CoreStickerCollectionComponent } from '../../core-sticker-collection/core-sticker-collection.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { IWorkflowSchemaTable } from '../interfaces/IWorkflowSchema'\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { BehaviorSubject, catchError, debounceTime, distinctUntilChanged, filter, finalize, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { DbService, IGetWorkflowSchemaRequest } from '../../../services/db.service';\r\nimport { DragReorderDirective } from '../../../directives/drag-reorder.directive';\r\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\r\nimport { TranslatePipe } from '../../../app-pipes/translate.pipe';\r\nimport { AiHintForTableComponent } from './ai-hint-for-table/ai-hint-for-table.component';\r\nimport { AiHintForColumnComponent } from './ai-hint-for-column/ai-hint-for-column.component';\r\nimport { CoreToastLoadingComponent } from '../../core-toast-loading/core-toast-loading.component';\r\n\r\n@Component({\r\n selector: 'db-settings',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n FormsModule,\r\n CorePageHeaderComponent,\r\n CoreStickerCollectionComponent,\r\n CoreToastLoadingComponent,\r\n DragReorderDirective,\r\n TranslatePipe,\r\n TooltipDirective,\r\n AiHintForTableComponent,\r\n AiHintForColumnComponent,\r\n ],\r\n templateUrl: './db-settings.component.html',\r\n styleUrl: './db-settings.component.scss'\r\n})\r\nexport class DbSettingsComponent extends BaseComponent implements AfterViewInit {\r\n\r\n public wfs = inject(CoreWorkflowService);\r\n dbs = inject(DbService);\r\n injector = inject(Injector);\r\n // $schema = this.wfs.$workflowDbSchema;\r\n $loading = signal(false);\r\n $sortMode = signal<boolean>(false);\r\n\r\n $activeHintEditor = signal<{\r\n table: IWorkflowSchemaTable;\r\n column: string;\r\n top: number;\r\n left: number;\r\n } | null>(null);\r\n\r\n orderChanges$ = new Subject<IWorkflowSchemaTable[]>();\r\n activeColumnsChanges$ = new Subject<{ table: string; activeColumns: string[] }>();\r\n\r\n $totalItems = signal(0);\r\n\r\n searchTerm: string = '';\r\n search$ = new BehaviorSubject<string>('');\r\n\r\n getListStream$ = new BehaviorSubject<IGetWorkflowSchemaRequest | null>(null);\r\n\r\n onFieldToggle(table: IWorkflowSchemaTable, e: string[]): void {\r\n this.updateTableStatus(table, !!e.length);\r\n this.activeColumnsChanges$.next({ table: table.table, activeColumns: e });\r\n }\r\n\r\n openHintEditor(table: IWorkflowSchemaTable, e: any): void {\r\n const { column } = e.item;\r\n this.$activeHintEditor.set({\r\n table,\r\n column,\r\n top: e.e.clientY,\r\n left: e.e.clientX,\r\n });\r\n }\r\n\r\n closeHintEditor(): void {\r\n this.$activeHintEditor.set(null);\r\n }\r\n\r\n onSearchChange(e: string): void {\r\n this.search$.next(e);\r\n }\r\n\r\n getActiveColumnNameArray(table: string): string[] {\r\n return this.wfs.$workflowDbSchema().filter(x => x.table === table)[0].columns.filter(x => !!x.isActive).map(x => x.column);\r\n }\r\n\r\n updateTableStatus(table: IWorkflowSchemaTable, isActive: boolean): void {\r\n\r\n if (table.isActive === isActive) return;\r\n\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n isActive,\r\n columns: t.columns.map(c => ({ ...c, isActive }))\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set([...updated]);\r\n\r\n\r\n }\r\n\r\n togglerSortMode(): void {\r\n this.$sortMode.set(!this.$sortMode())\r\n }\r\n\r\n updateColumnStatus(table: IWorkflowSchemaTable, selectedColumns: string[]): void {\r\n const updated = this.wfs.$workflowDbSchema().map(t =>\r\n t.table === table.table\r\n ? {\r\n ...t,\r\n columns: t.columns.map(c => ({\r\n ...c,\r\n isActive: selectedColumns.includes(c.column)\r\n })),\r\n isActive: selectedColumns.length > 0\r\n }\r\n : t\r\n );\r\n this.wfs.$workflowDbSchema.set(updated);\r\n }\r\n\r\n save(): void {\r\n const payload = this.wfs.$workflowDbSchema().map(table => ({\r\n table: table.table,\r\n isActive: table.isActive,\r\n columns: table.columns.map(c => ({\r\n column: c.column,\r\n isActive: c.isActive,\r\n hintForAi: c.hintForAi\r\n }))\r\n }));\r\n\r\n console.log('Saving schema payload:', payload);\r\n // Optional: Call API to save\r\n // this.http.post('/api/.../UpdateWorkflowSchema', payload).subscribe(...)\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n this.subscriptions.push(\r\n this.orderChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.orderChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a.map(x => ({ id: x.id, orderNum: x.orderNum }))) ===\r\n JSON.stringify(b.map(x => ({ id: x.id, orderNum: x.orderNum })))\r\n ),\r\n switchMap(newOrder => this.wfs.updateTableOrder(newOrder)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.activeColumnsChanges$\r\n .pipe(\r\n tap(_ => {\r\n console.log(\"this.activeColumnsChanges$ changed\")\r\n }),\r\n debounceTime(800), // wait 800ms after last change\r\n distinctUntilChanged((a, b) =>\r\n JSON.stringify(a) === JSON.stringify(b)\r\n ),\r\n switchMap(newState => this.dbs.updateColumnStatus(newState.table, newState.activeColumns)),\r\n catchError(err => {\r\n console.error('🚨 Backend update failed:', err);\r\n return of({ ok: false, status: 500, body: { statusCode: 500 } });\r\n })\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n // no need to send any UI alert \r\n }\r\n })\r\n )\r\n\r\n this.subscriptions.push(\r\n this.search$.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe(s => {\r\n this.getListStream$.next({\r\n ...this.getListStream$.value,\r\n searchTerm: s\r\n });\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.getListStream$.pipe(\r\n filter(Boolean),\r\n distinctUntilChanged((prev, curr) =>\r\n JSON.stringify(prev) === JSON.stringify(curr)\r\n ),\r\n tap(() => this.$loading.set(true)),\r\n switchMap(request =>\r\n this.dbs.syncAndGetWorkflowSchemaMetadata(request).pipe(\r\n catchError(() => of({ ok: false, status: 500 })),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n )\r\n ).subscribe((res: any) => {\r\n if (res.ok && res.status === 200 && res.body?.statusCode === 200) {\r\n this.wfs.$workflowDbSchema.set(res.body.innerBody.items);\r\n this.$totalItems.set(res.body.innerBody.totalItems)\r\n }\r\n })\r\n );\r\n\r\n\r\n setTimeout(() => {\r\n // Some more code...\r\n })\r\n }\r\n\r\n onTableShowMoreClicked(table: string, e: any) {\r\n\r\n }\r\n\r\n onListReorderUpdate(orderSet: { id: string; orderNum: number }[]): void {\r\n // Normalize ID to numbers\r\n const orderMap = new Map<number, number>(\r\n orderSet.map(x => [Number(x.id), x.orderNum])\r\n );\r\n\r\n // Get current state\r\n const currentTables = this.wfs.$workflowDbSchema();\r\n\r\n // Rebuild reordered state\r\n const reordered = currentTables\r\n .map(table => ({\r\n ...table,\r\n orderNum: orderMap.get(table.id) ?? table.orderNum\r\n }))\r\n .sort((a, b) => (a.orderNum ?? 0) - (b.orderNum ?? 0));\r\n\r\n // Debug output\r\n console.log(\"🌀 Reordered Groups:\", reordered);\r\n\r\n // Commit to signal/store\r\n this.wfs.$workflowDbSchema.set(reordered);\r\n\r\n // Optional: Trigger backend sync\r\n this.orderChanges$.next(reordered);\r\n }\r\n\r\n}\r\n","<core-page-header\r\n title=\"DB Settings For Workflow Builder\"\r\n [hideButtonGroup]=\"true\"\r\n [htmlTooltipRef]=\"htmlTooltipRef\"\r\n >\r\n</core-page-header>\r\n\r\n<!-- <pre>{{ $activeHintEditorJson() }}</pre> -->\r\n\r\n<div class=\"container-fluid\">\r\n <!-- 🔍 Search + Sort Toolbar -->\r\n <div class=\"db-toolbar d-flex flex-wrap justify-content-between align-items-center mb-3 gap-3\">\r\n <div class=\"search-box flex-grow-1\">\r\n <input\r\n type=\"text\"\r\n class=\"form-control search-input\"\r\n placeholder=\"Search tables or columns...\"\r\n [(ngModel)]=\"searchTerm\"\r\n (ngModelChange)=\"onSearchChange($event)\" />\r\n </div>\r\n\r\n <div>\r\n <button class=\"btn btn-outline-secondary btn-sm sort-toggle-btn\" (click)=\"togglerSortMode()\">\r\n {{ $sortMode() ? 'Expand' : 'Sort' }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- 📦 Workflow Schema Table List -->\r\n <div class=\"group-list p-relative mt-4\">\r\n @for (table of wfs.$workflowDbSchema(); track table.id) {\r\n\r\n @defer(on viewport; on timer(5s)) {\r\n\r\n @if ($sortMode()) {\r\n <!-- Sort Mode: Draggable Card -->\r\n <div\r\n class=\"drag-item\"\r\n [attr.data-id]=\"table.table\"\r\n dragReorder\r\n (updateList)=\"onListReorderUpdate($event)\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\">{{ table.table }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n } @else {\r\n <!-- Expanded Mode: Table with Columns -->\r\n <div class=\"row gx-5 gy-4\">\r\n <div class=\"col-md-12\">\r\n <div class=\"table-wrapper\" [class.active]=\"!!table.isActive\">\r\n <div class=\"item-header\">\r\n <div class=\"table-name pointer\" [appTooltip]=\"table.hintForAi ?? ''\" [showAnyway]=\"true\" [class.has-hint]=\"!!table.hintForAi && !!table.hintForAi!.length\">{{ table.table }}</div>\r\n <ai-hint-for-table [$table]=\"table\" />\r\n </div>\r\n\r\n <div class=\"item-columns\">\r\n <core-sticker-collection\r\n [$items]=\"table.columns\"\r\n [$initialChecked]=\"table.activeColumnNames\"\r\n [$shownFrom]=\"'column'\"\r\n [$tooltipFrom]=\"'hintForAi'\"\r\n [$showMore]=\"true\"\r\n [$showMoreTooltip]=\"'Set Hint for AI'\"\r\n [$hideShowMoreIfNotSelected]=\"true\"\r\n ($checkedChange)=\"onFieldToggle(table, $event)\"\r\n ($onShowMore)=\"openHintEditor(table, $event)\">\r\n </core-sticker-collection>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n } @placeholder() {\r\n <p>{{ 'LOADING' | translate: lang }}</p>\r\n }\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- 🌀 Fullscreen Loader -->\r\n@if ($loading()) {\r\n <core-toast-loading />\r\n}\r\n\r\n@if (!!$activeHintEditor()) {\r\n <ai-hint-for-column\r\n [$table]=\"$activeHintEditor()?.table!\"\r\n [$column]=\"$activeHintEditor()?.column!\"\r\n [$top]=\"$activeHintEditor()?.top!\"\r\n [$left]=\"$activeHintEditor()?.left!\"\r\n ($closed)=\"closeHintEditor()\" />\r\n}\r\n\r\n<ng-template #htmlTooltipRef>\r\n\r\n @if (lang==='en') {\r\n <div class=\"db-settings-description\">\r\n <h2>Database Schema Reference</h2>\r\n <p>\r\n This panel displays all available <strong>tables</strong> and their <strong>columns</strong> for use in your Workflow Builder.\r\n Select relevant fields to build <em>dynamic conditions</em>, <em>actor resolvers</em>, or <em>calculated expressions</em>.\r\n </p>\r\n <p>\r\n It's also used to power <strong>AI-assisted suggestions</strong>, giving intelligent autocompletion and validation based on your actual database structure.\r\n </p>\r\n <p class=\"note\">Tip: Hover over any column to see usage examples in your workflow.</p>\r\n </div>\r\n } @else {\r\n <div class=\"db-settings-description\">\r\n <h2>Tham chiếu Cấu trúc Dữ liệu</h2>\r\n <p>\r\n Bảng dưới đây hiển thị tất cả <strong>bảng dữ liệu</strong> và các <strong>cột</strong> tương ứng trong hệ thống. \r\n Bạn có thể chọn các cột này để xây dựng <em>điều kiện động</em>, <em>trình phân giải người duyệt</em>, hoặc <em>biểu thức tính toán</em>.\r\n </p>\r\n <p>\r\n Giao diện này cũng hỗ trợ <strong>AI gợi ý thông minh</strong>, giúp tự động điền và kiểm tra các biểu thức dựa trên cấu trúc cơ sở dữ liệu thực tế.\r\n </p>\r\n <p class=\"note\">Mẹo: Di chuột vào tên cột để xem ví dụ sử dụng trong luồng phê duyệt.</p>\r\n </div>\r\n\r\n }\r\n\r\n</ng-template>"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, ChangeDetectionStrategy, Component, Injector, runInInjectionContext, effect, Input, EventEmitter, ElementRef, ViewChild, Output, Renderer2, input, isDevMode, signal, computed, Injectable, output, viewChild, ChangeDetectorRef, Directive, Pipe, ViewChildren } from '@angular/core';
|
|
3
|
-
import { B as BaseComponent,
|
|
3
|
+
import { B as BaseComponent, m as CoreWorkflowService, x as CoreFormDesignService, b as AlertService, y as EnumWorkflowStepType, v as alertOptions, i as EnumFormBaseContolType, M as MultiLanguageService, T as TooltipDirective, e as TranslatePipe, h as BaseEditComponent, j as DialogService, A as AppService, k as CorePageEditComponent, F as FullscreenModalLoaderComponent, z as DomService, G as CoreDropdownComponent, H as CoreChecklistComponent, J as CoreDatePickerComponent, K as CoreFormControlSeekerComponent, L as CoreCurrencyInputComponent, n as EnumCoreFormControlSeekerSourceType, N as EnumActorSourceType, O as CoreParamControlComponent, P as CoreRadioGroupComponent, Q as GptService, R as ApplicationHelpService, U as HotKeysDirective, V as EnumCorePageEditMode, W as CoreFormComponent, X as NavigatorService, Y as JsonService } from './ngx-histaff-alpha-ngx-histaff-alpha-DZMJyvtg.mjs';
|
|
4
4
|
import * as i1$1 from '@angular/router';
|
|
5
5
|
import { Router, ActivatedRoute, RouterOutlet } from '@angular/router';
|
|
6
6
|
import { catchError, of, BehaviorSubject, distinctUntilChanged } from 'rxjs';
|
|
@@ -8,11 +8,11 @@ import { EnumTranslateKey } from 'alpha-global-constants';
|
|
|
8
8
|
import { AsyncPipe, NgTemplateOutlet, LowerCasePipe, NgStyle } from '@angular/common';
|
|
9
9
|
import * as i1 from '@angular/forms';
|
|
10
10
|
import { Validators, ReactiveFormsModule, FormGroup, FormControl, FormArray, FormsModule } from '@angular/forms';
|
|
11
|
-
import { C as CoreFormDesignComponent } from './ngx-histaff-alpha-core-form-design.component-
|
|
11
|
+
import { C as CoreFormDesignComponent } from './ngx-histaff-alpha-core-form-design.component-BMU-rbOU.mjs';
|
|
12
12
|
import { trigger, state, transition, style, animate } from '@angular/animations';
|
|
13
13
|
import { HttpClient } from '@angular/common/http';
|
|
14
|
-
import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-
|
|
15
|
-
import { R as RoutingPreviewPanelComponent } from './ngx-histaff-alpha-live-form.component-
|
|
14
|
+
import { C as CoreToastLoadingComponent } from './ngx-histaff-alpha-core-toast-loading.component-DWIQZeZl.mjs';
|
|
15
|
+
import { R as RoutingPreviewPanelComponent } from './ngx-histaff-alpha-live-form.component-CkeOK3B7.mjs';
|
|
16
16
|
|
|
17
17
|
class CurrentHeaderComponent extends BaseComponent {
|
|
18
18
|
constructor(mls) {
|
|
@@ -2466,4 +2466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
2466
2466
|
}], ctorParameters: () => [] });
|
|
2467
2467
|
|
|
2468
2468
|
export { DesignWrapperComponent };
|
|
2469
|
-
//# sourceMappingURL=ngx-histaff-alpha-design-wrapper.component-
|
|
2469
|
+
//# sourceMappingURL=ngx-histaff-alpha-design-wrapper.component-C9Jf7XWj.mjs.map
|