{"version":3,"file":"ngx-histaff-alpha-core-sys-action.component-Cy7dpWmm.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/root/core-sys-action/core-sys-action.service.ts","../../../projects/ngx-histaff-alpha/src/lib/app/root/core-sys-action/core-sys-action.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/root/core-sys-action/core-sys-action.component.html"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\r\nimport { ISysAction } from '../../interfaces/entities/ISysAction';\r\nimport { AppService } from '../../services/app.service';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CoreSysActionService {\r\n\r\n  $currentAction = signal<ISysAction | null>(null);\r\n  $allActions = signal<ISysAction[]>([]);\r\n\r\n  appService = inject(AppService);\r\n\r\n  constructor() { }\r\n\r\n  refreshObservable(searchKey: string = '', signal: AbortSignal | null = null): Observable<any> {\r\n    const url = `/api/CoreSysAction/ReadAllWithSearch?searchKey=${encodeURIComponent(searchKey)}`;\r\n    return this.appService.get(url, false, signal);\r\n  }\r\n\r\n  updateActionOrder(newOrder: ISysAction[], signal: AbortSignal | null = null): Observable<any> {\r\n    return this.appService.post('/api/CoreSysAction/UpdateOrder', newOrder, signal);\r\n  }\r\n\r\n}\r\n","import { AfterViewInit, Component, computed, inject, isDevMode, signal } from '@angular/core';\r\nimport { BaseComponent } from '../../libraries/base-component/base/base.component';\r\nimport { BehaviorSubject, buffer, catchError, combineLatest, debounceTime, distinctUntilChanged, filter, finalize, map, of, skip, Subject, Subscription, switchMap, tap } from 'rxjs';\r\nimport { ISysAction } from '../../interfaces/entities/ISysAction';\r\nimport { AppConfigService } from '../../services/app-config.service';\r\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\r\nimport { CoreSysActionService } from './core-sys-action.service';\r\nimport { AppService } from '../../services/app.service';\r\nimport { AlertService } from '../../libraries/alert/alert.service';\r\nimport { MultiLanguageService } from '../../services/multi-language.service';\r\nimport { CoreTerminalSpinnerComponent } from '../../libraries/core-terminal-spinner/core-terminal-spinner.component';\r\nimport { TooltipDirective } from '../../libraries/tooltip/tooltip.directive';\r\nimport { CorePageHeaderComponent } from '../../libraries/core-page-header/core-page-header/core-page-header.component';\r\nimport { DragReorderDirective } from '../../directives/drag-reorder.directive'\r\nimport { TranslatePipe } from '../../app-pipes/translate.pipe';\r\nimport { StringHtmlPipe } from '../../app-pipes/string-html.pipe';\r\n\r\n@Component({\r\n  selector: 'core-sys-action',\r\n  imports: [\r\n    CoreTerminalSpinnerComponent,\r\n    RouterOutlet,\r\n    TooltipDirective,\r\n    CorePageHeaderComponent,\r\n    DragReorderDirective,\r\n    TranslatePipe,\r\n    StringHtmlPipe\r\n  ],\r\n  templateUrl: './core-sys-action.component.html',\r\n  styleUrl: './core-sys-action.component.scss'\r\n})\r\nexport class CoreSysActionComponent extends BaseComponent implements AfterViewInit {\r\n\r\n  controller: AbortController | null = null;\r\n\r\n  doublePointDown!: Subscription;\r\n\r\n  $loading = signal<boolean>(false);\r\n  $sortMode = signal<boolean>(false);\r\n\r\n  searchTearm$ = new BehaviorSubject<string>('');\r\n  orderChanges$ = new BehaviorSubject<ISysAction[]>([]);\r\n  tabHeaderChanges$ = new BehaviorSubject<string>('Drafts');\r\n  actionDeletedFlag$ = new BehaviorSubject<boolean>(false);\r\n  workflowPublishedFlag$ = new BehaviorSubject<boolean>(false);\r\n  activeAction$ = new BehaviorSubject<ISysAction[] | undefined>(undefined);\r\n  $activeAction = signal<ISysAction | undefined>(undefined);\r\n\r\n  appConfigService = inject(AppConfigService);\r\n\r\n  $headerCreateLessActions = computed(() => this.coreSysActionService.$allActions().filter(a => a.code !== 'HEADER_CREATE'))\r\n\r\n  mergedState$ = combineLatest([\r\n    this.searchTearm$,\r\n    //this.orderChanges$,\r\n    this.tabHeaderChanges$,\r\n    this.actionDeletedFlag$,\r\n    this.workflowPublishedFlag$\r\n  ]).pipe(\r\n    debounceTime(300),\r\n    distinctUntilChanged(\r\n      ([s1, t1, d1, p1], [s2, t2, d2, p2]) =>\r\n        s1 === s2 &&\r\n        //JSON.stringify(o1) === JSON.stringify(o2) &&\r\n        t1 === t2 &&\r\n        d1 === d2 &&\r\n        p1 === p2\r\n    ),\r\n    map(([searchTerm, /*orderChanges,*/ tabHeader, deletedFlag, publishedFlag]) => ({\r\n      searchTerm,\r\n      //orderChanges,\r\n      tabHeader,\r\n      deletedFlag,\r\n      publishedFlag\r\n    }))\r\n  );\r\n\r\n  isDevMode = isDevMode();\r\n\r\n  pointerdown$ = new Subject<string>();\r\n\r\n  constructor(\r\n    public router: Router,\r\n    public route: ActivatedRoute,\r\n    public coreSysActionService: CoreSysActionService,\r\n    //public coreFormDesignService: CoreFormDesignService,\r\n    public appService: AppService,\r\n    private alertService: AlertService,\r\n    public override mls: MultiLanguageService\r\n  ) {\r\n    super(mls);\r\n\r\n    this.doublePointDown = this.pointerdown$.pipe(\r\n      buffer(this.pointerdown$.pipe(debounceTime(500))),\r\n      filter(clicks => clicks.length >= 2)\r\n    ).subscribe(() => {\r\n\r\n      if (!!this.$activeAction() && !!this.$activeAction()?.id) {\r\n            this.router.navigate(\r\n              [\r\n                {\r\n                  outlets: {\r\n                    coreSysActionAux: [\r\n                      btoa(this.$activeAction()!.id.toString()),\r\n                      {},\r\n                    ],\r\n                  },\r\n                },\r\n              ],\r\n              { relativeTo: this.route }\r\n            );\r\n      }\r\n    })\r\n\r\n  }\r\n\r\n  onSearchChange(event: any) {\r\n    this.searchTearm$.next(event.target.value);\r\n  }\r\n\r\n  createWorkflowGroup(): void {\r\n    this.router.navigate(\r\n      [{ outlets: { workflowAux: ['workflow-group-edit', btoa('0')] } }],\r\n      { relativeTo: this.route.parent }\r\n    );\r\n  }\r\n\r\n  createSysAction(): void {\r\n      this.router.navigate([0], { relativeTo: this.route.parent })\r\n  }\r\n\r\n  togglerSortMode(): void {\r\n    this.$sortMode.set(!this.$sortMode())\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 currentActions = this.coreSysActionService.$allActions();\r\n\r\n    // Rebuild reordered state\r\n    const reordered = currentActions\r\n      .map(group => ({\r\n        ...group,\r\n        orderNum: orderMap.get(group.id) ?? group.orderNum\r\n      }))\r\n      .sort((a, b) => (a.orderNum ?? 9999) - (b.orderNum ?? 9999));\r\n\r\n    // Debug output\r\n    //console.log(\"🌀 Reordered Groups:\", reordered);\r\n\r\n    // Commit to signal/store\r\n    this.coreSysActionService.$allActions.set(reordered);\r\n\r\n    // Confirm state consistency\r\n    //console.log(\"✅ New State:\", this.coreSysActionService.$allActions());\r\n\r\n    // Optional: Trigger backend sync\r\n    this.orderChanges$.next(reordered);\r\n  }\r\n\r\n\r\n  ngAfterViewInit(): void {\r\n    requestAnimationFrame(() => {\r\n\r\n      this.subscriptions.push(\r\n        this.mergedState$.pipe(\r\n          tap(() => this.$loading.set(true)),\r\n          debounceTime(500),\r\n          distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)),\r\n\r\n          switchMap(x => {\r\n            // 🧹 Cancel previous request if still running\r\n            if (this.controller) this.controller.abort();\r\n\r\n            // 🧩 Create a new controller for this request\r\n            this.controller = new AbortController();\r\n\r\n            // 🔹 Pass the signal to your service\r\n            return this.coreSysActionService.refreshObservable(\r\n              x.searchTerm,\r\n              this.controller.signal\r\n            ).pipe(\r\n              // Always catch inside switchMap so the stream doesn’t die\r\n              catchError(err => {\r\n                console.error('🚨 Backend fetch failed:', err);\r\n                return of({\r\n                  ok: true,\r\n                  status: 200,\r\n                  body: {\r\n                    statusCode: 400,\r\n                    messageCode: 'REQUEST_CANCELLED',\r\n                    errorType: 1,\r\n                    innerBody: null\r\n                  }\r\n                });\r\n              })\r\n            );\r\n          }),\r\n\r\n          finalize(() => {\r\n            this.$loading.set(false);\r\n            if (this.controller) {\r\n              this.controller.abort();\r\n              this.controller = null;\r\n            }\r\n          })\r\n        )\r\n          .subscribe(x => {\r\n            this.$loading.set(false);\r\n\r\n            if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n              const actions = (x.body.innerBody as ISysAction[])\r\n                .map(g => ({ ...g, orderNum: g.orderNum ?? 9999 }))\r\n                .sort((a, b) => a.orderNum - b.orderNum);\r\n\r\n              this.coreSysActionService.$allActions.set(actions);\r\n            } else {\r\n              console.warn('⚠️ SysAction/ReadAll returned non-200 statusCode', x.body);\r\n            }\r\n          })\r\n      );\r\n\r\n      this.subscriptions.push(\r\n        this.orderChanges$\r\n          .pipe(\r\n            skip(1),\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 => {\r\n              if (this.controller) this.controller.abort();\r\n              return this.coreSysActionService.updateActionOrder(newOrder, this.controller?.signal)\r\n            }),\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            finalize(() => {\r\n              if (this.controller) this.controller = null;\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  }\r\n\r\n  onPointerdown(action: ISysAction): void {\r\n    this.$activeAction.set(action);\r\n    const uuid = crypto.randomUUID()\r\n    this.pointerdown$.next(uuid)\r\n  }\r\n\r\n  override ngOnDestroy(): void {\r\n    this.subscriptions.forEach(x => x?.unsubscribe());\r\n    this.doublePointDown.unsubscribe();\r\n  }\r\n}","<div class=\"core-sys-action-list-container\">\r\n\r\n    <core-page-header title=\"Action List\" [hideButtonGroup]=\"true\"></core-page-header>\r\n\r\n    <div class=\"container-fluid\">\r\n\r\n        <div class=\"row gx-5 gy-5\" [class.sort-mode]=\"$sortMode()\">\r\n\r\n            <div class=\"col-md-12 no-padding\">\r\n                <div class=\"ActionList_operations d-flex d-flex-between\">\r\n                    <div class=\"ActionList_operationsLeft\">\r\n                        <input type=\"text\" placeholder=\"Search\" class=\"form-control\" [class.d-none]=\"$sortMode()\"\r\n                            (input)=\"onSearchChange($event)\">\r\n                    </div>\r\n                    <div class=\"ActionList_operationsRight\">\r\n                        @if ($loading()) {\r\n                        <core-terminal-spinner />\r\n                        }\r\n                        <!-- <button class=\"btn btn-secondary\" (click)=\"createSysAction()\"\r\n                            [class.d-none]=\"$sortMode()\">Create Action</button> -->\r\n                        <button class=\"btn btn-secondary\" (click)=\"togglerSortMode()\">{{ $sortMode() ? 'Expand' :\r\n                            'Sort'\r\n                            }}</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"action-list p-relative\">\r\n\r\n                @for (action of $headerCreateLessActions(); track action.id) {\r\n\r\n                @if ($sortMode()) {\r\n\r\n                <!-- SORT MODE: only show code + drag handle -->\r\n                <div class=\"SysAction card sort-mode\" [attr.data-id]=\"action.id\" dragReorder\r\n                    (updateList)=\"onListReorderUpdate($event)\">\r\n\r\n                    <div class=\"sysaction-grid\">\r\n\r\n                        <!-- Col 1: iconSvg -->\r\n                        <div class=\"sysaction-col icon-col\" [innerHTML]=\"(action.iconSvg ?? '') | stringHtml\"\r\n                            [style.width]=\"'24px'\" [style.height]=\"'24px'\">\r\n                        </div>\r\n\r\n                        <!-- Col 2: code -->\r\n                        <div class=\"sysaction-col code-col\" [appTooltip]=\"action?.code\">\r\n                            {{ action?.code }}\r\n                        </div>\r\n\r\n                        <!-- Col 3: nameVn -->\r\n                        <div class=\"sysaction-col name-col\" [appTooltip]=\"action?.nameVn\">\r\n                            {{ action?.nameVn }}\r\n                        </div>\r\n\r\n                        <!-- Col 4: nameEn -->\r\n                        <div class=\"sysaction-col name-col\" [appTooltip]=\"action?.nameEn\">\r\n                            {{ action?.nameEn }}\r\n                        </div>\r\n\r\n                        <!-- Col 5: operations -->\r\n                        <div class=\"sysaction-col op-col d-flex d-flex-end\">\r\n\r\n                            <div class=\"SysAction_itemEdit pointer\">\r\n                                <i class=\"feather-move\"></i>\r\n                            </div>\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n\r\n                } @else {\r\n\r\n                <!-- NORMAL MODE: full 4 columns -->\r\n                <div class=\"SysAction card\">\r\n                    <div class=\"sysaction-grid\">\r\n\r\n                        <!-- Col 1: iconSvg -->\r\n                        <div class=\"sysaction-col icon-col\" [innerHTML]=\"(action.iconSvg ?? '') | stringHtml\"\r\n                            [style.width]=\"'24px'\" [style.height]=\"'24px'\">\r\n                        </div>\r\n\r\n                        <!-- Col 2: code -->\r\n                        <div class=\"sysaction-col code-col\" [appTooltip]=\"action?.code\">\r\n                            {{ action?.code }}\r\n                        </div>\r\n\r\n                        <!-- Col 3: nameVn -->\r\n                        <div class=\"sysaction-col name-col\" [appTooltip]=\"action?.nameVn\">\r\n                            {{ action?.nameVn }}\r\n                        </div>\r\n\r\n                        <!-- Col 4: nameEn -->\r\n                        <div class=\"sysaction-col name-col\" [appTooltip]=\"action?.nameEn\">\r\n                            {{ action?.nameEn }}\r\n                        </div>\r\n\r\n                        <!-- Col 5: operations -->\r\n                        <div class=\"sysaction-col op-col d-flex d-flex-end\">\r\n\r\n                            <!-- <div class=\"SysAction_itemEdit pointer\" [appTooltip]=\"'Edit'\" [showAnyway]=\"true\">\r\n                                <i class=\"feather-edit\"></i>\r\n                            </div>\r\n\r\n                            <div class=\"SysAction_itemEditI18n pointer\" [appTooltip]=\"'Multi-language integration'\"\r\n                                [showAnyway]=\"true\">\r\n                                <i class=\"feather-globe\"></i>\r\n                            </div> -->\r\n\r\n                        </div>\r\n\r\n                    </div>\r\n                </div>\r\n\r\n                }\r\n\r\n                }\r\n\r\n            </div>\r\n\r\n        </div>\r\n    </div>\r\n</div>"],"names":["i2.CoreSysActionService","i3.AppService","i4.AlertService","i5.MultiLanguageService"],"mappings":"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"}