ngx-histaff-alpha 6.8.2 → 6.8.4
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-BqjboYjv.mjs → ngx-histaff-alpha-ai-hint-for-table.component-DNzp1e4r.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-ai-hint-for-table.component-BqjboYjv.mjs.map → ngx-histaff-alpha-ai-hint-for-table.component-DNzp1e4r.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-gFVfWdCK.mjs → ngx-histaff-alpha-core-form-design.component-COU0j6A1.mjs} +4 -4
- package/fesm2022/{ngx-histaff-alpha-core-form-design.component-gFVfWdCK.mjs.map → ngx-histaff-alpha-core-form-design.component-COU0j6A1.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-BHMOJ9Wv.mjs → ngx-histaff-alpha-core-sys-action.component-BcbxxbiH.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-sys-action.component-BHMOJ9Wv.mjs.map → ngx-histaff-alpha-core-sys-action.component-BcbxxbiH.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-JepLT3Kj.mjs → ngx-histaff-alpha-core-template-editor.component-CmlAEjel.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-template-editor.component-JepLT3Kj.mjs.map → ngx-histaff-alpha-core-template-editor.component-CmlAEjel.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Ci5mPC3a.mjs → ngx-histaff-alpha-core-toast-loading.component-ChI14kG6.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-toast-loading.component-Ci5mPC3a.mjs.map → ngx-histaff-alpha-core-toast-loading.component-ChI14kG6.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-C1uTy3Fc.mjs → ngx-histaff-alpha-core-workflow-consume.component-10iNOdMU.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-core-workflow-consume.component-C1uTy3Fc.mjs.map → ngx-histaff-alpha-core-workflow-consume.component-10iNOdMU.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-C9jL42sk.mjs → ngx-histaff-alpha-db-settings.component-B_vmJCH1.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-db-settings.component-C9jL42sk.mjs.map → ngx-histaff-alpha-db-settings.component-B_vmJCH1.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-sAxUjDDo.mjs → ngx-histaff-alpha-design-wrapper.component-D69aMbnU.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.component-sAxUjDDo.mjs.map → ngx-histaff-alpha-design-wrapper.component-D69aMbnU.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-BlSny2JD.mjs → ngx-histaff-alpha-design-wrapper.route-CQjA9Bm5.mjs} +5 -5
- package/fesm2022/{ngx-histaff-alpha-design-wrapper.route-BlSny2JD.mjs.map → ngx-histaff-alpha-design-wrapper.route-CQjA9Bm5.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-DuFTr8Ym.mjs → ngx-histaff-alpha-hrm-schema.component-COWJ2Ral.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-hrm-schema.component-DuFTr8Ym.mjs.map → ngx-histaff-alpha-hrm-schema.component-COWJ2Ral.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-live-form.component-B7gcJMSi.mjs → ngx-histaff-alpha-live-form.component-Db5vGzS-.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-live-form.component-B7gcJMSi.mjs.map → ngx-histaff-alpha-live-form.component-Db5vGzS-.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-ngx-histaff-alpha-B6JZNI6c.mjs → ngx-histaff-alpha-ngx-histaff-alpha-ahDUrQN8.mjs} +593 -566
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-ahDUrQN8.mjs.map +1 -0
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-Ct043oiC.mjs → ngx-histaff-alpha-simple-chat.component-CUG_FqKD.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-simple-chat.component-Ct043oiC.mjs.map → ngx-histaff-alpha-simple-chat.component-CUG_FqKD.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-CYEhx-zn.mjs → ngx-histaff-alpha-sys-smtp-client-edit.component-ilgHs5Ow.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client-edit.component-CYEhx-zn.mjs.map → ngx-histaff-alpha-sys-smtp-client-edit.component-ilgHs5Ow.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-jEb9g23R.mjs → ngx-histaff-alpha-sys-smtp-client.component-INHDOFv_.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-sys-smtp-client.component-jEb9g23R.mjs.map → ngx-histaff-alpha-sys-smtp-client.component-INHDOFv_.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-template-list.component-r_mRH85W.mjs → ngx-histaff-alpha-template-list.component-d-CuW__f.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-template-list.component-r_mRH85W.mjs.map → ngx-histaff-alpha-template-list.component-d-CuW__f.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BcyA0mRW.mjs → ngx-histaff-alpha-tracker-studio.component-BtY_SG87.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-tracker-studio.component-BcyA0mRW.mjs.map → ngx-histaff-alpha-tracker-studio.component-BtY_SG87.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BVr6v49F.mjs → ngx-histaff-alpha-wf-form-assign.component-DvuaKC7t.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-form-assign.component-BVr6v49F.mjs.map → ngx-histaff-alpha-wf-form-assign.component-DvuaKC7t.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DTuh5zdi.mjs → ngx-histaff-alpha-wf-global-config.component-CCMceLib.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-global-config.component-DTuh5zdi.mjs.map → ngx-histaff-alpha-wf-global-config.component-CCMceLib.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BKDScZSG.mjs → ngx-histaff-alpha-wf-instance-status.component-BtFXU-R-.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-instance-status.component-BKDScZSG.mjs.map → ngx-histaff-alpha-wf-instance-status.component-BtFXU-R-.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-BwE5a99D.mjs → ngx-histaff-alpha-wf-instance-step-react.component-Bv5QnQbm.mjs} +3 -3
- package/fesm2022/{ngx-histaff-alpha-wf-instance-step-react.component-BwE5a99D.mjs.map → ngx-histaff-alpha-wf-instance-step-react.component-Bv5QnQbm.mjs.map} +1 -1
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-lqKBXhBp.mjs → ngx-histaff-alpha-wf-lab.component-qS2-1UVx.mjs} +2 -2
- package/fesm2022/{ngx-histaff-alpha-wf-lab.component-lqKBXhBp.mjs.map → ngx-histaff-alpha-wf-lab.component-qS2-1UVx.mjs.map} +1 -1
- package/fesm2022/ngx-histaff-alpha.mjs +1 -1
- package/lib/app/libraries/core-dom-decision-editor/core-dom-decision-editor.component.d.ts +7 -42
- package/lib/app/libraries/core-dom-decision-editor/dom-decision-context.service.d.ts +64 -9
- package/lib/app/libraries/core-dom-decision-editor/dom-oid-factory/dom-oid-factory.component.d.ts +1 -1
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/intent-draft.model.d.ts +1 -0
- package/lib/app/libraries/core-dom-decision-editor/enum-interfaces/omega-intent.d.ts +6 -0
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/input-groups/_base/intent-input-context.d.ts +1 -1
- package/lib/app/libraries/core-dom-decision-editor/intent-composer/intent-composer.component.d.ts +2 -7
- package/lib/app/libraries/core-pagination-full/core-pagination-full/core-pagination-full.component.d.ts +3 -0
- package/lib/app/services/socket.service.d.ts +1 -0
- package/package.json +2 -2
- package/fesm2022/ngx-histaff-alpha-ngx-histaff-alpha-B6JZNI6c.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-wf-instance-status.component-BKDScZSG.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-routing/runtime-routing.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-routing/runtime-routing.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-logs/runtime-logs.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-logs/runtime-logs.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-status/wf-instance-status.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-status/wf-instance-status.component.html"],"sourcesContent":["import { Component, computed, inject, input } from '@angular/core';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { IWorkflowStepProgress } from '../interfaces/IWorkflowStepProgress';\r\nimport { ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MapAvatarToServerPipe } from '../../../app-pipes/map-avatar-to-server.pipe';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { JsonPipe, NgClass } from '@angular/common';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { HtmlTooltipDirective } from '../../../directives/html-tooltip.directive';\r\n\r\n@Component({\r\n selector: 'runtime-routing',\r\n imports: [\r\n NgClass,\r\n ImageErrorResolverDirective,\r\n MapAvatarToServerPipe,\r\n HtmlTooltipDirective,\r\n TableCellPipe,\r\n JsonPipe,\r\n ],\r\n templateUrl: './runtime-routing.component.html',\r\n styleUrl: './runtime-routing.component.scss'\r\n})\r\nexport class RuntimeRoutingComponent extends BaseComponent {\r\n $instance = input<IWorkflowInstance | null>();\r\n\r\n as = inject(AlertService);\r\n\r\n $steps = computed(() => {\r\n const stepProgresses = this.$instance()?.stepProgresses ?? [];\r\n stepProgresses.forEach(s => {\r\n if (!!s.exeConfigJson) {\r\n s.exeConfig = JSON.parse(s.exeConfigJson);\r\n } else {\r\n s.exeConfig = {};\r\n }\r\n \r\n })\r\n stepProgresses.sort((a, b) => a.stepOrder - b.stepOrder);\r\n return [...stepProgresses];\r\n })\r\n\r\n getStepStatusClass(step: IWorkflowStepProgress): string {\r\n if (step.passed === true) return 'resolved';\r\n if (step.passed === false) return 'error';\r\n return 'empty';\r\n }\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n}\r\n","<div class=\"runtime-routing-container inter-font p-relative\">\r\n @if ($instance() && $steps()?.length) {\r\n <div class=\"workflow-wrapper\">\r\n @for (step of $steps(); track step.id) {\r\n\r\n <div class=\"step-column\" [attr.data-actor-count]=\"step.stepProgressActors?.length\">\r\n\r\n <div class=\"step-column-aux\">\r\n <div [ngClass]=\"step.exeConfig?.routingLogic ?? ''\" class=\"step-header {{ step.stepType.toLowerCase() }} {{ getStepStatusClass(step) }}\">\r\n {{ step.stepName }}\r\n </div>\r\n\r\n @for (actor of step.stepProgressActors; track actor.id) {\r\n <div class=\"actor-card-aux\">\r\n <div class=\"actor-card d-flex d-flex-start {{ step.stepType.toLowerCase() }}\">\r\n\r\n\r\n\r\n\r\n <!-- <div class=\"avatar-wrapper\">\r\n <img [src]=\"actor.actorAvatar\"\r\n appImageErrorResolver\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.isFemale!\"\r\n class=\"actor-avatar\" [alt]=\"actor.actorFullname\" />\r\n\r\n\r\n <div class=\"status-icon\" [ngClass]=\"(actor.status || 'pending').toLowerCase()\">\r\n\r\n </div>\r\n </div> -->\r\n\r\n\r\n <div class=\"avatar-wrapper avatar-stack\">\r\n\r\n <!-- Avatar gốc -->\r\n <img\r\n [src]=\"actor.actorAvatar | mapAvatarToServer\"\r\n appImageErrorResolver\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.isFemale\"\r\n class=\"actor-avatar base-avatar\"\r\n [alt]=\"actor.actorFullname\" />\r\n\r\n <!-- Avatar acting (chồng lên) -->\r\n @if (actor.actingEmployeeId &&\r\n actor.actingEmployeeId !== actor.actorEmployeeId) {\r\n\r\n <img\r\n [src]=\"actor.actingAvatar | mapAvatarToServer\"\r\n appImageErrorResolver\r\n [htmlTooltip]=\"actingTooltipTpl\"\r\n [tooltipContext]=\"{ actor: actor }\"\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.actingActorIsFemale\"\r\n class=\"actor-avatar acting-avatar\"\r\n [alt]=\"actor.actingActorFullname\" />\r\n }\r\n\r\n <div class=\"status-icon\"\r\n [ngClass]=\"(actor.status || 'pending').toLowerCase()\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"actor-details\">\r\n <div class=\"actor-line\">\r\n <i class=\"feather-user\"></i>\r\n <span class=\"actor-full-name\" [title]=\"actor.actorFullname\">{{ actor.actorFullname\r\n }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-briefcase\"></i>\r\n <span [title]=\"actor.actorJobName\">{{ actor.actorJobName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-mail\"></i>\r\n <span [title]=\"actor.actorEmail\">{{ actor.actorEmail }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-hash\"></i>\r\n <span [title]=\"actor.actorEmployeeCode\">{{ actor.actorEmployeeCode }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-check-circle\"></i>\r\n <span [title]=\"actor.status\">{{ actor.status || 'PENDING' }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-clock\"></i>\r\n <span [title]=\"actor.votedAt\">{{ actor.votedAt | tableCell: 'DATE_TIME' : lang }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!$steps().length) {\r\n <div class=\"step-column\">\r\n <div class=\"step-header empty\">No steps</div>\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"workflow-wrapper\">\r\n <div class=\"step-column\">\r\n <div class=\"step-header empty\">⚠ No steps to display</div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #actingTooltipTpl let-actor=\"actor\">\r\n <div class=\"delegation-tooltip\">\r\n <div class=\"tooltip-line\">\r\n <strong>Original:</strong> {{ actor.actorFullname }}\r\n </div>\r\n <div class=\"tooltip-line\">\r\n <strong>Acted by:</strong> {{ actor.actingFullname }}\r\n </div>\r\n <div class=\"tooltip-line muted\">\r\n Action performed via delegation\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, computed, input, Input } from '@angular/core';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { IWorkflowStepProgress } from '../interfaces/IWorkflowStepProgress';\r\nimport { IWorkflowStepProgressActor } from '../interfaces/IWorkflowStepProgressActor';\r\nimport { ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MapAvatarToServerPipe } from '../../../app-pipes/map-avatar-to-server.pipe';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { JsonPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'runtime-logs',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n TableCellPipe // usage: value | tableCell : 'DATE_TIME' : lang\r\n ],\r\n templateUrl: './runtime-logs.component.html',\r\n styleUrl: './runtime-logs.component.scss'\r\n})\r\nexport class RuntimeLogsComponent extends BaseComponent {\r\n $instance = input<IWorkflowInstance | null>(null);\r\n\r\n $logs = computed(() => this.$instance()?.workflowLogs);\r\n}\r\n","<div class=\"runtime-logs-wrapper\">\r\n <h4><i class=\"feather-list\"></i> Logs</h4>\r\n\r\n @if (!$logs()?.length) {\r\n <div class=\"empty-log\">\r\n <i class=\"feather-info\"></i> No logs available.\r\n </div>\r\n } @else {\r\n <ul class=\"log-list\">\r\n @for (log of $logs(); track log.id) {\r\n <li class=\"log-item\">\r\n <div class=\"log-icon\"><i class=\"feather-clock\"></i></div>\r\n <div class=\"log-content\">\r\n <div class=\"log-time\">{{ log.occurredAt | tableCell : 'DATE_TIME' : lang }}</div>\r\n <div class=\"log-text\">{{ log.logText }}</div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { catchError, finalize, of, tap } from 'rxjs';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { SocketService } from '../../../services/socket.service';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { CoreTerminalSpinnerComponent } from '../../core-terminal-spinner/core-terminal-spinner.component';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { RuntimeRoutingComponent } from '../runtime-routing/runtime-routing.component';\r\nimport { IRoutingStep } from '../interfaces/IRoutingStep';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { RuntimeLogsComponent } from '../runtime-logs/runtime-logs.component';\r\nimport { NgClass } from '@angular/common';\r\nimport { EnumCoreButtonCode } from '../../core-button-group/core-button/EnumButtonCaptionCode';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { IFormatedResponse } from '../../../interfaces/IFormatedResponse';\r\n\r\n@Component({\r\n selector: 'wf-instance-status',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n TableCellPipe,\r\n NgClass,\r\n CorePageHeaderComponent,\r\n CoreTerminalSpinnerComponent,\r\n RuntimeRoutingComponent,\r\n RuntimeLogsComponent,\r\n ],\r\n templateUrl: './wf-instance-status.component.html',\r\n styleUrl: './wf-instance-status.component.scss'\r\n})\r\n\r\nexport class WfInstanceStatusComponent extends BaseComponent {\r\n route = inject(ActivatedRoute);\r\n appService = inject(AppService);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n $loading = signal(true);\r\n $instance = signal<IWorkflowInstance | null>(null);\r\n $error = signal<string | null>(null);\r\n $correlationId = signal<string | null>(null);\r\n\r\n $attributesBeauty = computed(() => {\r\n return JSON.stringify((this.$instance()?.attributes ?? {}), null, 2);\r\n })\r\n\r\n $isExpanded = signal(false);\r\n\r\n onCorePageHeaderButtonClicked(e: any) {\r\n if (e.code === \"HEADER_TERMINATE\") {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.inject(`${this.$instance()?.workflowId}___${this.$correlationId()}`, \"TERMINATED\", \"Random Terminate Test\").pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n } else if (e.code === \"HEADER_DEBUG\") {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.inject(`${this.$instance()?.workflowId}___${this.$correlationId()}`, \"REVOKED\", \"Random Revoke Test\", 10678).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n }\r\n }\r\n\r\n refresh(): void {\r\n const correlationId = this.$correlationId();\r\n if (!!correlationId) {\r\n this.subscriptions.push(\r\n this.appService.get(`/api/WorkflowEngine/GetStatus?correlationId=${correlationId}&usehub=true`).pipe(\r\n tap(_ => this.$loading.set(true)),\r\n catchError(err => {\r\n this.$loading.set(false);\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS/HttpErrorResponse\r\n err?.statusText || // Fallback text\r\n 'An unknown error occurred.';\r\n return of({\r\n ok: false,\r\n status: 500,\r\n body: {\r\n messageCode: msg,\r\n errorType: 2,\r\n statusCode: 500,\r\n innerBody: null\r\n } as IFormatedResponse\r\n });\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false); \r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n const raw: IWorkflowInstance = x.body.innerBody;\r\n raw.attributes = JSON.parse(raw.attributesJson);\r\n\r\n raw.stepProgresses.forEach(step => {\r\n if (!!step.exeConfigJson) {\r\n step.exeConfig = JSON.parse(step.exeConfigJson);\r\n } else {\r\n step.exeConfig = {};\r\n }\r\n })\r\n\r\n this.$instance.set(raw);\r\n\r\n }\r\n })\r\n )\r\n }\r\n }\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private ss: SocketService,\r\n private as: AlertService,\r\n ) {\r\n super(mls);\r\n\r\n effect(() => {\r\n const status = ss.$workflowTicket();\r\n if (status?.correlationId.toLocaleLowerCase() === this.$correlationId()?.toLocaleLowerCase()) {\r\n this.as.info(\"The status has been changed\", alertOptions);\r\n this.refresh();\r\n }\r\n })\r\n\r\n this.subscriptions.push(\r\n this.route.paramMap.subscribe(p => {\r\n const correlationId = p.get('id');\r\n this.$correlationId.set(correlationId);\r\n })\r\n )\r\n\r\n effect(() => {\r\n const _ = this.$correlationId();\r\n this.refresh();\r\n })\r\n }\r\n\r\n toggleAccordion(): void {\r\n this.$isExpanded.set(!this.$isExpanded());\r\n }\r\n\r\n copy(value: string | number | undefined | null): void {\r\n if (!value) return;\r\n navigator.clipboard.writeText(value.toString()).then(() => {\r\n this.as.success('Copied!', alertOptions);\r\n });\r\n }\r\n\r\n\r\n}\r\n","<div class=\"wf-instance-status-container\">\r\n <core-page-header [title]=\"'Workflow Instance Status'\" (buttonClick)=\"onCorePageHeaderButtonClicked($event)\"/>\r\n\r\n <div class=\"status-parts\">\r\n <div class=\"saga\">\r\n @if ($loading()) {\r\n <p class=\"wf-status-loading\">\r\n <core-terminal-spinner />\r\n </p>\r\n } @else if ($error()) {\r\n <p class=\"wf-status-error\">⚠️ {{ $error() }}</p>\r\n } @else if (!$instance()) {\r\n <p class=\"wf-status-empty\">No instance data found.</p>\r\n } @else {\r\n <div class=\"wf-status-card\">\r\n\r\n <!-- Workflow Info -->\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Workflow Name:</label>\r\n <span>{{ $instance()!.workflowName }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Current State:</label>\r\n <span class=\"wf-status-badge1 wf-status-{{ $instance()!.currentState.toLowerCase() }}\">\r\n {{ $instance()!.currentState }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Current Step:</label>\r\n <span>{{ $instance()!.currentStepName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Last Action At:</label>\r\n <span>{{ $instance()!.lastActionAt | tableCell : 'DATE_TIME' : lang }}</span>\r\n </div>\r\n\r\n <!-- First Actor Info -->\r\n <div class=\"wf-status-subtitle\">📌 First Actor</div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Full Name:</label>\r\n <span>{{ $instance()!.firstActorFullname }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Email:</label>\r\n <span>{{ $instance()!.firstActorEmail }}</span>\r\n </div>\r\n\r\n <!-- Last Actor Info -->\r\n <div class=\"wf-status-subtitle\">🔍 Last Actor</div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Full Name:</label>\r\n <span>{{ $instance()!.lastActorFullname || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Email:</label>\r\n <span>{{ $instance()!.lastActorEmail || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Employee Code:</label>\r\n <span>{{ $instance()!.lastActorEmployeeCode || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Position Name:</label>\r\n <span>{{ $instance()!.lastActorPositionName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Job Name:</label>\r\n <span>{{ $instance()!.lastActorJobName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>System Messages:</label>\r\n <span>{{ $instance()!.systemMessages || '—' }}</span>\r\n </div>\r\n\r\n <!-- Show More Section -->\r\n\r\n @if (!$instance()?.globalConfig.instanceStatusHideMore) {\r\n\r\n <div class=\"wf-status-accordion\">\r\n <button class=\"accordion-summary\" (click)=\"toggleAccordion()\">\r\n <span><i [ngClass]=\"$isExpanded() ? 'feather-minus' : 'feather-plus'\"></i></span> {{ $isExpanded() ? 'Hide Details' : 'Show More' }}\r\n </button>\r\n\r\n <div class=\"accordion-body\" [style.maxHeight]=\"$isExpanded() ? '1000px' : '0'\"\r\n [style.opacity]=\"$isExpanded() ? '1' : '0'\" [style.pointerEvents]=\"$isExpanded() ? 'auto' : 'none'\">\r\n <div class=\"wf-status-row\">\r\n <label>Workflow ID:</label>\r\n <span>\r\n {{ $instance()!.workflowId }}\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.workflowId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Employee ID:</label>\r\n <span>\r\n {{ $instance()!.lastActorEmployeeId }}\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.lastActorEmployeeId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Last Triggered Step ID:</label>\r\n <span>\r\n {{ $instance()!.lastTriggeredStepId || '—' }}\r\n </span>\r\n @if ($instance()!.lastTriggeredStepId) {\r\n <button type=\"button\" (click)=\"copy($instance()!.lastTriggeredStepId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n }\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Attributes JSON:</label>\r\n <span>\r\n <code>{{ $attributesBeauty() }}</code>\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.attributesJson)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Debug Mode:</label>\r\n <span>{{ $instance()!.isDebug ? '✔ Enabled' : '❌ Disabled' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"runtime-routing-n-logs\">\r\n <runtime-routing [$instance]=\"$instance()\" />\r\n @if (!$instance()?.globalConfig.instanceStatusHideLogs) {\r\n <div class=\"h15\"></div>\r\n <runtime-logs [$instance]=\"$instance()\" />\r\n }\r\n </div>\r\n\r\n </div>\r\n</div>"],"names":["i1.MultiLanguageService","i2.SocketService","i3.AlertService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-wf-instance-status.component-BtFXU-R-.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-routing/runtime-routing.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-routing/runtime-routing.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-logs/runtime-logs.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/runtime-logs/runtime-logs.component.html","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-status/wf-instance-status.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-status/wf-instance-status.component.html"],"sourcesContent":["import { Component, computed, inject, input } from '@angular/core';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { IWorkflowStepProgress } from '../interfaces/IWorkflowStepProgress';\r\nimport { ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MapAvatarToServerPipe } from '../../../app-pipes/map-avatar-to-server.pipe';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { JsonPipe, NgClass } from '@angular/common';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { HtmlTooltipDirective } from '../../../directives/html-tooltip.directive';\r\n\r\n@Component({\r\n selector: 'runtime-routing',\r\n imports: [\r\n NgClass,\r\n ImageErrorResolverDirective,\r\n MapAvatarToServerPipe,\r\n HtmlTooltipDirective,\r\n TableCellPipe,\r\n JsonPipe,\r\n ],\r\n templateUrl: './runtime-routing.component.html',\r\n styleUrl: './runtime-routing.component.scss'\r\n})\r\nexport class RuntimeRoutingComponent extends BaseComponent {\r\n $instance = input<IWorkflowInstance | null>();\r\n\r\n as = inject(AlertService);\r\n\r\n $steps = computed(() => {\r\n const stepProgresses = this.$instance()?.stepProgresses ?? [];\r\n stepProgresses.forEach(s => {\r\n if (!!s.exeConfigJson) {\r\n s.exeConfig = JSON.parse(s.exeConfigJson);\r\n } else {\r\n s.exeConfig = {};\r\n }\r\n \r\n })\r\n stepProgresses.sort((a, b) => a.stepOrder - b.stepOrder);\r\n return [...stepProgresses];\r\n })\r\n\r\n getStepStatusClass(step: IWorkflowStepProgress): string {\r\n if (step.passed === true) return 'resolved';\r\n if (step.passed === false) return 'error';\r\n return 'empty';\r\n }\r\n\r\n constructor(public override mls: MultiLanguageService) {\r\n super(mls);\r\n }\r\n}\r\n","<div class=\"runtime-routing-container inter-font p-relative\">\r\n @if ($instance() && $steps()?.length) {\r\n <div class=\"workflow-wrapper\">\r\n @for (step of $steps(); track step.id) {\r\n\r\n <div class=\"step-column\" [attr.data-actor-count]=\"step.stepProgressActors?.length\">\r\n\r\n <div class=\"step-column-aux\">\r\n <div [ngClass]=\"step.exeConfig?.routingLogic ?? ''\" class=\"step-header {{ step.stepType.toLowerCase() }} {{ getStepStatusClass(step) }}\">\r\n {{ step.stepName }}\r\n </div>\r\n\r\n @for (actor of step.stepProgressActors; track actor.id) {\r\n <div class=\"actor-card-aux\">\r\n <div class=\"actor-card d-flex d-flex-start {{ step.stepType.toLowerCase() }}\">\r\n\r\n\r\n\r\n\r\n <!-- <div class=\"avatar-wrapper\">\r\n <img [src]=\"actor.actorAvatar\"\r\n appImageErrorResolver\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.isFemale!\"\r\n class=\"actor-avatar\" [alt]=\"actor.actorFullname\" />\r\n\r\n\r\n <div class=\"status-icon\" [ngClass]=\"(actor.status || 'pending').toLowerCase()\">\r\n\r\n </div>\r\n </div> -->\r\n\r\n\r\n <div class=\"avatar-wrapper avatar-stack\">\r\n\r\n <!-- Avatar gốc -->\r\n <img\r\n [src]=\"actor.actorAvatar | mapAvatarToServer\"\r\n appImageErrorResolver\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.isFemale\"\r\n class=\"actor-avatar base-avatar\"\r\n [alt]=\"actor.actorFullname\" />\r\n\r\n <!-- Avatar acting (chồng lên) -->\r\n @if (actor.actingEmployeeId &&\r\n actor.actingEmployeeId !== actor.actorEmployeeId) {\r\n\r\n <img\r\n [src]=\"actor.actingAvatar | mapAvatarToServer\"\r\n appImageErrorResolver\r\n [htmlTooltip]=\"actingTooltipTpl\"\r\n [tooltipContext]=\"{ actor: actor }\"\r\n [type]=\"'AVATAR'\"\r\n [isFemale]=\"!!actor.actingActorIsFemale\"\r\n class=\"actor-avatar acting-avatar\"\r\n [alt]=\"actor.actingActorFullname\" />\r\n }\r\n\r\n <div class=\"status-icon\"\r\n [ngClass]=\"(actor.status || 'pending').toLowerCase()\">\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"actor-details\">\r\n <div class=\"actor-line\">\r\n <i class=\"feather-user\"></i>\r\n <span class=\"actor-full-name\" [title]=\"actor.actorFullname\">{{ actor.actorFullname\r\n }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-briefcase\"></i>\r\n <span [title]=\"actor.actorJobName\">{{ actor.actorJobName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-mail\"></i>\r\n <span [title]=\"actor.actorEmail\">{{ actor.actorEmail }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-hash\"></i>\r\n <span [title]=\"actor.actorEmployeeCode\">{{ actor.actorEmployeeCode }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-check-circle\"></i>\r\n <span [title]=\"actor.status\">{{ actor.status || 'PENDING' }}</span>\r\n </div>\r\n\r\n <div class=\"actor-line\">\r\n <i class=\"feather-clock\"></i>\r\n <span [title]=\"actor.votedAt\">{{ actor.votedAt | tableCell: 'DATE_TIME' : lang }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!$steps().length) {\r\n <div class=\"step-column\">\r\n <div class=\"step-header empty\">No steps</div>\r\n </div>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"workflow-wrapper\">\r\n <div class=\"step-column\">\r\n <div class=\"step-header empty\">⚠ No steps to display</div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #actingTooltipTpl let-actor=\"actor\">\r\n <div class=\"delegation-tooltip\">\r\n <div class=\"tooltip-line\">\r\n <strong>Original:</strong> {{ actor.actorFullname }}\r\n </div>\r\n <div class=\"tooltip-line\">\r\n <strong>Acted by:</strong> {{ actor.actingFullname }}\r\n </div>\r\n <div class=\"tooltip-line muted\">\r\n Action performed via delegation\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, computed, input, Input } from '@angular/core';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { IWorkflowStepProgress } from '../interfaces/IWorkflowStepProgress';\r\nimport { IWorkflowStepProgressActor } from '../interfaces/IWorkflowStepProgressActor';\r\nimport { ImageErrorResolverDirective } from '../../../directives/image-error-resolver.directive';\r\nimport { MapAvatarToServerPipe } from '../../../app-pipes/map-avatar-to-server.pipe';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { JsonPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'runtime-logs',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n TableCellPipe // usage: value | tableCell : 'DATE_TIME' : lang\r\n ],\r\n templateUrl: './runtime-logs.component.html',\r\n styleUrl: './runtime-logs.component.scss'\r\n})\r\nexport class RuntimeLogsComponent extends BaseComponent {\r\n $instance = input<IWorkflowInstance | null>(null);\r\n\r\n $logs = computed(() => this.$instance()?.workflowLogs);\r\n}\r\n","<div class=\"runtime-logs-wrapper\">\r\n <h4><i class=\"feather-list\"></i> Logs</h4>\r\n\r\n @if (!$logs()?.length) {\r\n <div class=\"empty-log\">\r\n <i class=\"feather-info\"></i> No logs available.\r\n </div>\r\n } @else {\r\n <ul class=\"log-list\">\r\n @for (log of $logs(); track log.id) {\r\n <li class=\"log-item\">\r\n <div class=\"log-icon\"><i class=\"feather-clock\"></i></div>\r\n <div class=\"log-content\">\r\n <div class=\"log-time\">{{ log.occurredAt | tableCell : 'DATE_TIME' : lang }}</div>\r\n <div class=\"log-text\">{{ log.logText }}</div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { catchError, finalize, of, tap } from 'rxjs';\r\nimport { TableCellPipe } from '../../pipes/table-cell.pipe';\r\nimport { SocketService } from '../../../services/socket.service';\r\nimport { CorePageHeaderComponent } from '../../core-page-header/core-page-header/core-page-header.component';\r\nimport { CoreTerminalSpinnerComponent } from '../../core-terminal-spinner/core-terminal-spinner.component';\r\nimport { IWorkflowInstance } from '../interfaces/IWorkflowInstance';\r\nimport { RuntimeRoutingComponent } from '../runtime-routing/runtime-routing.component';\r\nimport { IRoutingStep } from '../interfaces/IRoutingStep';\r\nimport { AlertService } from '../../alert/alert.service';\r\nimport { alertOptions } from '../../../constants/alertOptions';\r\nimport { RuntimeLogsComponent } from '../runtime-logs/runtime-logs.component';\r\nimport { NgClass } from '@angular/common';\r\nimport { EnumCoreButtonCode } from '../../core-button-group/core-button/EnumButtonCaptionCode';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { IFormatedResponse } from '../../../interfaces/IFormatedResponse';\r\n\r\n@Component({\r\n selector: 'wf-instance-status',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n TableCellPipe,\r\n NgClass,\r\n CorePageHeaderComponent,\r\n CoreTerminalSpinnerComponent,\r\n RuntimeRoutingComponent,\r\n RuntimeLogsComponent,\r\n ],\r\n templateUrl: './wf-instance-status.component.html',\r\n styleUrl: './wf-instance-status.component.scss'\r\n})\r\n\r\nexport class WfInstanceStatusComponent extends BaseComponent {\r\n route = inject(ActivatedRoute);\r\n appService = inject(AppService);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n $loading = signal(true);\r\n $instance = signal<IWorkflowInstance | null>(null);\r\n $error = signal<string | null>(null);\r\n $correlationId = signal<string | null>(null);\r\n\r\n $attributesBeauty = computed(() => {\r\n return JSON.stringify((this.$instance()?.attributes ?? {}), null, 2);\r\n })\r\n\r\n $isExpanded = signal(false);\r\n\r\n onCorePageHeaderButtonClicked(e: any) {\r\n if (e.code === \"HEADER_TERMINATE\") {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.inject(`${this.$instance()?.workflowId}___${this.$correlationId()}`, \"TERMINATED\", \"Random Terminate Test\").pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n } else if (e.code === \"HEADER_DEBUG\") {\r\n this.$loading.set(true);\r\n this.subscriptions.push(\r\n this.wfs.inject(`${this.$instance()?.workflowId}___${this.$correlationId()}`, \"REVOKED\", \"Random Revoke Test\", 10678).pipe(\r\n catchError(err => {\r\n this.$loading.set(false);\r\n return of(err);\r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n }\r\n })\r\n )\r\n }\r\n }\r\n\r\n refresh(): void {\r\n const correlationId = this.$correlationId();\r\n if (!!correlationId) {\r\n this.subscriptions.push(\r\n this.appService.get(`/api/WorkflowEngine/GetStatus?correlationId=${correlationId}&usehub=true`).pipe(\r\n tap(_ => this.$loading.set(true)),\r\n catchError(err => {\r\n this.$loading.set(false);\r\n const msg =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS/HttpErrorResponse\r\n err?.statusText || // Fallback text\r\n 'An unknown error occurred.';\r\n return of({\r\n ok: false,\r\n status: 500,\r\n body: {\r\n messageCode: msg,\r\n errorType: 2,\r\n statusCode: 500,\r\n innerBody: null\r\n } as IFormatedResponse\r\n });\r\n }),\r\n finalize(() => {\r\n this.$loading.set(false); \r\n })\r\n ).subscribe(x => {\r\n this.$loading.set(false);\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n\r\n const raw: IWorkflowInstance = x.body.innerBody;\r\n raw.attributes = JSON.parse(raw.attributesJson);\r\n\r\n raw.stepProgresses.forEach(step => {\r\n if (!!step.exeConfigJson) {\r\n step.exeConfig = JSON.parse(step.exeConfigJson);\r\n } else {\r\n step.exeConfig = {};\r\n }\r\n })\r\n\r\n this.$instance.set(raw);\r\n\r\n }\r\n })\r\n )\r\n }\r\n }\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private ss: SocketService,\r\n private as: AlertService,\r\n ) {\r\n super(mls);\r\n\r\n effect(() => {\r\n const status = ss.$workflowTicket();\r\n if (status?.correlationId.toLocaleLowerCase() === this.$correlationId()?.toLocaleLowerCase()) {\r\n this.as.info(\"The status has been changed\", alertOptions);\r\n this.refresh();\r\n }\r\n })\r\n\r\n this.subscriptions.push(\r\n this.route.paramMap.subscribe(p => {\r\n const correlationId = p.get('id');\r\n this.$correlationId.set(correlationId);\r\n })\r\n )\r\n\r\n effect(() => {\r\n const _ = this.$correlationId();\r\n this.refresh();\r\n })\r\n }\r\n\r\n toggleAccordion(): void {\r\n this.$isExpanded.set(!this.$isExpanded());\r\n }\r\n\r\n copy(value: string | number | undefined | null): void {\r\n if (!value) return;\r\n navigator.clipboard.writeText(value.toString()).then(() => {\r\n this.as.success('Copied!', alertOptions);\r\n });\r\n }\r\n\r\n\r\n}\r\n","<div class=\"wf-instance-status-container\">\r\n <core-page-header [title]=\"'Workflow Instance Status'\" (buttonClick)=\"onCorePageHeaderButtonClicked($event)\"/>\r\n\r\n <div class=\"status-parts\">\r\n <div class=\"saga\">\r\n @if ($loading()) {\r\n <p class=\"wf-status-loading\">\r\n <core-terminal-spinner />\r\n </p>\r\n } @else if ($error()) {\r\n <p class=\"wf-status-error\">⚠️ {{ $error() }}</p>\r\n } @else if (!$instance()) {\r\n <p class=\"wf-status-empty\">No instance data found.</p>\r\n } @else {\r\n <div class=\"wf-status-card\">\r\n\r\n <!-- Workflow Info -->\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Workflow Name:</label>\r\n <span>{{ $instance()!.workflowName }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Current State:</label>\r\n <span class=\"wf-status-badge1 wf-status-{{ $instance()!.currentState.toLowerCase() }}\">\r\n {{ $instance()!.currentState }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Current Step:</label>\r\n <span>{{ $instance()!.currentStepName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Last Action At:</label>\r\n <span>{{ $instance()!.lastActionAt | tableCell : 'DATE_TIME' : lang }}</span>\r\n </div>\r\n\r\n <!-- First Actor Info -->\r\n <div class=\"wf-status-subtitle\">📌 First Actor</div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Full Name:</label>\r\n <span>{{ $instance()!.firstActorFullname }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Email:</label>\r\n <span>{{ $instance()!.firstActorEmail }}</span>\r\n </div>\r\n\r\n <!-- Last Actor Info -->\r\n <div class=\"wf-status-subtitle\">🔍 Last Actor</div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Full Name:</label>\r\n <span>{{ $instance()!.lastActorFullname || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Email:</label>\r\n <span>{{ $instance()!.lastActorEmail || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Employee Code:</label>\r\n <span>{{ $instance()!.lastActorEmployeeCode || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Position Name:</label>\r\n <span>{{ $instance()!.lastActorPositionName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Job Name:</label>\r\n <span>{{ $instance()!.lastActorJobName || '—' }}</span>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>System Messages:</label>\r\n <span>{{ $instance()!.systemMessages || '—' }}</span>\r\n </div>\r\n\r\n <!-- Show More Section -->\r\n\r\n @if (!$instance()?.globalConfig.instanceStatusHideMore) {\r\n\r\n <div class=\"wf-status-accordion\">\r\n <button class=\"accordion-summary\" (click)=\"toggleAccordion()\">\r\n <span><i [ngClass]=\"$isExpanded() ? 'feather-minus' : 'feather-plus'\"></i></span> {{ $isExpanded() ? 'Hide Details' : 'Show More' }}\r\n </button>\r\n\r\n <div class=\"accordion-body\" [style.maxHeight]=\"$isExpanded() ? '1000px' : '0'\"\r\n [style.opacity]=\"$isExpanded() ? '1' : '0'\" [style.pointerEvents]=\"$isExpanded() ? 'auto' : 'none'\">\r\n <div class=\"wf-status-row\">\r\n <label>Workflow ID:</label>\r\n <span>\r\n {{ $instance()!.workflowId }}\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.workflowId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Employee ID:</label>\r\n <span>\r\n {{ $instance()!.lastActorEmployeeId }}\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.lastActorEmployeeId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Last Triggered Step ID:</label>\r\n <span>\r\n {{ $instance()!.lastTriggeredStepId || '—' }}\r\n </span>\r\n @if ($instance()!.lastTriggeredStepId) {\r\n <button type=\"button\" (click)=\"copy($instance()!.lastTriggeredStepId)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n }\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Attributes JSON:</label>\r\n <span>\r\n <code>{{ $attributesBeauty() }}</code>\r\n </span>\r\n <button type=\"button\" (click)=\"copy($instance()!.attributesJson)\" class=\"copy-btn\"><i class=\"feather-clipboard\"></i></button>\r\n </div>\r\n\r\n <div class=\"wf-status-row\">\r\n <label>Debug Mode:</label>\r\n <span>{{ $instance()!.isDebug ? '✔ Enabled' : '❌ Disabled' }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"runtime-routing-n-logs\">\r\n <runtime-routing [$instance]=\"$instance()\" />\r\n @if (!$instance()?.globalConfig.instanceStatusHideLogs) {\r\n <div class=\"h15\"></div>\r\n <runtime-logs [$instance]=\"$instance()\" />\r\n }\r\n </div>\r\n\r\n </div>\r\n</div>"],"names":["i1.MultiLanguageService","i2.SocketService","i3.AlertService"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { signal, inject, effect, Component } from '@angular/core';
|
|
3
|
-
import { B as BaseComponent, n as CoreWorkflowService, E as EnumFormBaseContolType, M as MultiLanguageService, A as AppService, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-
|
|
3
|
+
import { B as BaseComponent, n as CoreWorkflowService, E as EnumFormBaseContolType, M as MultiLanguageService, A as AppService, F as FullscreenModalLoaderComponent } from './ngx-histaff-alpha-ngx-histaff-alpha-ahDUrQN8.mjs';
|
|
4
4
|
import { BehaviorSubject, tap, catchError, of, finalize } from 'rxjs';
|
|
5
|
-
import { L as LiveFormComponent } from './ngx-histaff-alpha-live-form.component-
|
|
5
|
+
import { L as LiveFormComponent } from './ngx-histaff-alpha-live-form.component-Db5vGzS-.mjs';
|
|
6
6
|
import { Validators } from '@angular/forms';
|
|
7
7
|
import { EnumTranslateKey } from 'alpha-global-constants';
|
|
8
8
|
import * as i1 from '@angular/router';
|
|
@@ -102,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
102
102
|
}], ctorParameters: () => [{ type: MultiLanguageService }, { type: i1.ActivatedRoute }, { type: AppService }] });
|
|
103
103
|
|
|
104
104
|
export { WfInstanceStepReactComponent };
|
|
105
|
-
//# sourceMappingURL=ngx-histaff-alpha-wf-instance-step-react.component-
|
|
105
|
+
//# sourceMappingURL=ngx-histaff-alpha-wf-instance-step-react.component-Bv5QnQbm.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-wf-instance-step-react.component-
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-wf-instance-step-react.component-Bv5QnQbm.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-step-react/wf-instance-step-react.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-instance-step-react/wf-instance-step-react.component.html"],"sourcesContent":["import { Component, effect, inject, signal } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AppService } from '../../../services/app.service';\r\nimport { BaseComponent } from '../../base-component/base/base.component';\r\nimport { MultiLanguageService } from '../../../services/multi-language.service';\r\nimport { BehaviorSubject, catchError, finalize, of, tap } from 'rxjs';\r\nimport { LiveFormComponent } from '../../core-form-design/live-form/live-form.component';\r\nimport { FullscreenModalLoaderComponent } from '../../fullscreen-modal-loader/fullscreen-modal-loader.component';\r\nimport { IFormBaseControl } from '../../core-form/core-form/enum-interfaces';\r\nimport { EnumFormBaseContolType } from '../../../enum/EnumFormBaseContolType';\r\nimport { Validators } from '@angular/forms';\r\nimport { EnumTranslateKey } from 'alpha-global-constants';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\nimport { IWorkflowReactContext } from '../interfaces/IWorkflowReactContext';\r\nimport { IFormatedResponse } from '../../../interfaces/IFormatedResponse';\r\n\r\n@Component({\r\n selector: 'wf-instance-step-react',\r\n imports: [\r\n LiveFormComponent,\r\n FullscreenModalLoaderComponent\r\n ],\r\n templateUrl: './wf-instance-step-react.component.html',\r\n styleUrl: './wf-instance-step-react.component.scss'\r\n})\r\nexport class WfInstanceStepReactComponent extends BaseComponent {\r\n $id = signal<string>('');\r\n $delegationId = signal<string | undefined>(undefined);\r\n $loading = signal(false);\r\n $context = signal<IWorkflowReactContext | null>(null); // May be improved with interface\r\n\r\n $reactMode = signal(false);\r\n\r\n wfs = inject(CoreWorkflowService);\r\n\r\n injectedFields$ = new BehaviorSubject<IFormBaseControl[]>(\r\n [\r\n {\r\n field: \"___reason\",\r\n type: \"text\",\r\n value: '',\r\n label: \"UI_FORM_CONTROL_LABEL.REASON\",\r\n flexSize: 12,\r\n controlType: EnumFormBaseContolType.TEXTAREA,\r\n textareaRows: 5,\r\n validators: [\r\n {\r\n name: 'required',\r\n validator: Validators.required,\r\n errorMessage: EnumTranslateKey.UI_FORM_CONTROL_ERROR_REQUIRED\r\n }\r\n ],\r\n }\r\n ]\r\n )\r\n\r\n constructor(\r\n public override mls: MultiLanguageService,\r\n private route: ActivatedRoute,\r\n private appService: AppService,\r\n ) {\r\n super(mls);\r\n\r\n this.route.params.subscribe(p => {\r\n this.$id.set(p['id']);\r\n });\r\n\r\n this.route.queryParams.subscribe(q => {\r\n this.$delegationId.set(q['delegationId'] ?? null);\r\n });\r\n\r\n effect(() => {\r\n const id = this.$id();\r\n const delegationId = this.$delegationId();\r\n\r\n if (!id || !id.length) return;\r\n\r\n let endPoint = `/api/WorkflowEngine/GetReactContext?unitedCorrelationIds=${encodeURIComponent(id)}`\r\n\r\n if (delegationId) {\r\n endPoint = endPoint + `&delegationId=${encodeURIComponent(delegationId)}`\r\n }\r\n\r\n this.subscriptions.push(\r\n this.appService.get(`${endPoint}`)\r\n .pipe(\r\n tap(_ => this.$loading.set(true)),\r\n catchError(err => {\r\n const messageCode =\r\n err?.error?.message || // API-defined message\r\n err?.message || // Native JS or HttpErrorResponse\r\n err?.statusText || // Fallback\r\n 'An unknown error occurred.';\r\n\r\n return of({\r\n ok: false,\r\n status: 500,\r\n body: {\r\n messageCode,\r\n errorType: 2,\r\n statusCode: 500,\r\n innerBody: null\r\n } as IFormatedResponse\r\n });\r\n }),\r\n finalize(() => this.$loading.set(false))\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const context: IWorkflowReactContext | null = x.body.innerBody;\r\n\r\n\r\n if (context) {\r\n context.delegationId = this.$delegationId();\r\n if (!!context.actingActor) {\r\n context.actor.actorEmployeeId = context.actingActor.employeeId;\r\n context.actor.actorEmployeeCode = context.actingActor.employeeCode;\r\n context.actor.actorAvatar = context.actingActor.avatar;\r\n context.actor.actorEmail = context.actingActor.email;\r\n context.actor.actorPositionName = context.actingActor.positionName;\r\n context.actor.actorOrgName = context.actingActor.orgName;\r\n context.actor.actorFullname = context.actingActor.fullname;\r\n }\r\n }\r\n console.log(\"workflowReactContext changed\", context);\r\n this.$context.set(context);\r\n }\r\n })\r\n )\r\n\r\n });\r\n }\r\n}\r\n","<live-form [$workflowReactContext]=\"$context()\" [$forKickOff]=\"false\" />\r\n\r\n@if ($loading()) {\r\n <app-fullscreen-modal-loader />\r\n}\r\n"],"names":["i1.MultiLanguageService","i2","i3.AppService"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, signal, computed, effect, Component } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
|
-
import { n as CoreWorkflowService } from './ngx-histaff-alpha-ngx-histaff-alpha-
|
|
4
|
+
import { n as CoreWorkflowService } from './ngx-histaff-alpha-ngx-histaff-alpha-ahDUrQN8.mjs';
|
|
5
5
|
import * as i1 from '@angular/material/form-field';
|
|
6
6
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
7
7
|
import * as i2 from '@angular/material/input';
|
|
@@ -127,4 +127,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.5", ngImpor
|
|
|
127
127
|
}], ctorParameters: () => [] });
|
|
128
128
|
|
|
129
129
|
export { WfLabComponent };
|
|
130
|
-
//# sourceMappingURL=ngx-histaff-alpha-wf-lab.component-
|
|
130
|
+
//# sourceMappingURL=ngx-histaff-alpha-wf-lab.component-qS2-1UVx.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-histaff-alpha-wf-lab.component-lqKBXhBp.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-lab/wf-lab.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-lab/wf-lab.component.html"],"sourcesContent":["import { Component, signal, computed, inject, effect } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\n\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { IWfWorkflowGroup } from '../interfaces/IWfWorkflowGroup';\r\n\r\n@Component({\r\n selector: 'core-wf-lab',\r\n standalone: true,\r\n imports: [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './wf-lab.component.html',\r\n styleUrl: './wf-lab.component.scss'\r\n})\r\nexport class WfLabComponent {\r\n\r\n router = inject(Router);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n // Inputs\r\n $workflowId = signal<string>('');\r\n $correlationId = signal<string>('');\r\n $stepId = signal<string>('');\r\n $actorId = signal<string>('');\r\n $reason = signal<string>('LAB reason…');\r\n\r\n // React / Inject\r\n $reactType = signal<string>('APPROVED');\r\n $injectType = signal<string>('CANCELLED');\r\n\r\n // Groups + Workflows\r\n $groups = this.wfs.$allGroups;\r\n $allWorkflows = computed(() => {\r\n return this.$groups().flatMap(g =>\r\n g.wfWorkflows.map(w => ({\r\n id: w.id,\r\n label: `${g.name} / ${w.name}`\r\n }))\r\n );\r\n });\r\n\r\n // Current steps (design-time steps)\r\n $steps = this.wfs.$currentSteps;\r\n\r\n // Auto-build United Correlation IDs\r\n $united = computed(() => {\r\n const w = this.$workflowId();\r\n const c = this.$correlationId();\r\n const s = this.$stepId();\r\n const a = this.$actorId();\r\n return (w && c && s && a)\r\n ? `${w}___${c}___${s}___${a}`\r\n : '';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const existing = this.wfs.$allGroups();\r\n if (existing.length === 0) {\r\n this.loadGroupsOnce();\r\n }\r\n });\r\n }\r\n\r\n private loadGroupsOnce() {\r\n this.wfs\r\n .refreshObservable(\r\n '/api/WfWorkflowGroup/GetAllWithWorkflows',\r\n '',\r\n undefined,\r\n false\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const groups = (x.body.innerBody as IWfWorkflowGroup[])\r\n .map(g => ({ ...g, orderNum: g.orderNum ?? 999 }))\r\n .sort((a, b) => a.orderNum - b.orderNum);\r\n\r\n this.wfs.$allGroups.set(groups);\r\n } else {\r\n console.warn('⚠️ LAB: GetAllWithWorkflows failed', x.body);\r\n }\r\n });\r\n }\r\n\r\n // Select Workflow\r\n selectWorkflow(id: string) {\r\n this.$workflowId.set(id);\r\n }\r\n\r\n // Select React Type\r\n selectReactType(v: string) {\r\n this.$reactType.set(v);\r\n }\r\n\r\n // Select Inject Type\r\n selectInjectType(v: string) {\r\n this.$injectType.set(v);\r\n }\r\n\r\n // Execute React\r\n doReact() {\r\n const uid = this.$united();\r\n if (!uid) return;\r\n\r\n this.wfs.react(\r\n uid,\r\n this.$reactType(),\r\n this.$reason(),\r\n {}, \"\"\r\n ).subscribe();\r\n }\r\n\r\n // Execute Inject\r\n doInject() {\r\n const uid = this.$united();\r\n if (!uid) return;\r\n\r\n this.wfs.inject(\r\n uid,\r\n this.$injectType(),\r\n this.$reason()\r\n ).subscribe();\r\n }\r\n\r\n // Navigation\r\n openKickoff() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(['/root/workflow/workflow-consume', this.$workflowId()]);\r\n }\r\n\r\n openReactPage() {\r\n if (!this.$united()) return;\r\n this.router.navigate(['/root/workflow/react', this.$united()]);\r\n }\r\n\r\n openStatus() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(['/root/workflow/status', this.$workflowId()]);\r\n }\r\n\r\n openPreview() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', this.$workflowId()],\r\n { queryParams: { preview: true } }\r\n );\r\n }\r\n}\r\n","<div class=\"lab-container\">\r\n\r\n <h2>Workflow Engine LAB (Backend-Accurate)</h2>\r\n\r\n <!-- Workflow selector -->\r\n <mat-form-field appearance=\"outline\" class=\"w100\">\r\n <mat-label>Select Workflow</mat-label>\r\n <mat-select\r\n [value]=\"$workflowId()\"\r\n (selectionChange)=\"selectWorkflow($any($event.value))\">\r\n\r\n @for (wf of $allWorkflows(); track wf.id) {\r\n <mat-option [value]=\"wf.id\">{{ wf.label }}</mat-option>\r\n }\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!-- Input Grid -->\r\n <div class=\"input-grid\">\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Workflow ID</mat-label>\r\n <input matInput [value]=\"$workflowId()\"\r\n (input)=\"$workflowId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Correlation ID</mat-label>\r\n <input matInput [value]=\"$correlationId()\"\r\n (input)=\"$correlationId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Step ID</mat-label>\r\n <mat-select\r\n [value]=\"$stepId()\"\r\n (selectionChange)=\"$stepId.set($any($event.value))\">\r\n\r\n @for (s of $steps(); track s.id) {\r\n <mat-option [value]=\"s.id\">{{ s.name }}</mat-option>\r\n }\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Actor ID</mat-label>\r\n <input matInput [value]=\"$actorId()\"\r\n (input)=\"$actorId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <!-- Auto United -->\r\n <div class=\"united-display\">\r\n <div class=\"label\">UnitedCorrelationIds:</div>\r\n <div class=\"value\">{{$united()}}</div>\r\n </div>\r\n\r\n <!-- Reason -->\r\n <mat-form-field appearance=\"outline\" class=\"w100\">\r\n <mat-label>Reason</mat-label>\r\n <textarea matInput rows=\"3\"\r\n [value]=\"$reason()\"\r\n (input)=\"$reason.set($any($event.target).value)\">\r\n </textarea>\r\n </mat-form-field>\r\n\r\n <!-- React Actions -->\r\n <div class=\"section-title\">React Actions (Actor)</div>\r\n\r\n <div class=\"action-row\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>React Type</mat-label>\r\n <mat-select [value]=\"$reactType()\"\r\n (selectionChange)=\"selectReactType($any($event.value))\">\r\n\r\n <mat-option value=\"APPROVED\">APPROVED</mat-option>\r\n <mat-option value=\"REJECTED\">REJECTED</mat-option>\r\n <mat-option value=\"CONFIRMED\">CONFIRMED</mat-option>\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <button mat-raised-button color=\"primary\" (click)=\"doReact()\">\r\n Run React\r\n </button>\r\n </div>\r\n\r\n <!-- Inject Actions -->\r\n <div class=\"section-title\">Inject Actions (System)</div>\r\n\r\n <div class=\"action-row\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Inject Type</mat-label>\r\n <mat-select [value]=\"$injectType()\"\r\n (selectionChange)=\"selectInjectType($any($event.value))\">\r\n\r\n <mat-option value=\"CANCELLED\">CANCELLED</mat-option>\r\n <mat-option value=\"REVOKED\">REVOKED</mat-option>\r\n <mat-option value=\"TERMINATED\">TERMINATED</mat-option>\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <button mat-raised-button color=\"warn\" (click)=\"doInject()\">\r\n Run Inject\r\n </button>\r\n </div>\r\n\r\n <!-- Navigation -->\r\n <div class=\"section-title\">Navigation</div>\r\n\r\n <div class=\"button-row\">\r\n <button mat-raised-button (click)=\"openKickoff()\">Open Kickoff</button>\r\n <button mat-raised-button (click)=\"openReactPage()\">Open React Page</button>\r\n <button mat-raised-button (click)=\"openStatus()\">Open Status</button>\r\n <button mat-raised-button (click)=\"openPreview()\">Preview Mode</button>\r\n </div>\r\n\r\n</div>\r\n"],"names":[],"mappings":";;;;;;;;;;;;;MAsBa,cAAc,CAAA;AAyCzB,IAAA,WAAA,GAAA;AAvCA,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC;;AAGjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,EAAE,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,CAAC;AAC7B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAS,aAAa,CAAC;;AAGvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,UAAU,CAAC;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAS,WAAW,CAAC;;AAGzC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU;AAC7B,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC5B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAC7B,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK;gBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAM,GAAA,EAAA,CAAC,CAAC,IAAI,CAAE;aAC/B,CAAC,CAAC,CACJ;AACH,SAAC,CAAC;;AAGF,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa;;AAG/B,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACtB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAC5B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE;AAC/B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AACxB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;YACzB,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;kBACpB,GAAG,CAAC,CAAA,GAAA,EAAM,CAAC,CAAM,GAAA,EAAA,CAAC,CAAM,GAAA,EAAA,CAAC,CAAE;kBAC3B,EAAE;AACR,SAAC,CAAC;QAGA,MAAM,CAAC,MAAK;YACV,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;;AAEzB,SAAC,CAAC;;IAGI,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC;aACF,iBAAiB,CAChB,0CAA0C,EAC1C,EAAE,EACF,SAAS,EACT,KAAK;aAEN,SAAS,CAAC,CAAC,IAAG;AACb,YAAA,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,KAAK,GAAG,EAAE;AAC1D,gBAAA,MAAM,MAAM,GAAI,CAAC,CAAC,IAAI,CAAC;AACpB,qBAAA,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC;AAChD,qBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAE1C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;;iBAC1B;gBACL,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,CAAC,IAAI,CAAC;;AAE9D,SAAC,CAAC;;;AAIN,IAAA,cAAc,CAAC,EAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;;;AAI1B,IAAA,eAAe,CAAC,CAAS,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;;;AAIxB,IAAA,gBAAgB,CAAC,CAAS,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAIzB,OAAO,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,IAAI,CAAC,GAAG,CAAC,KAAK,CACZ,GAAG,EACH,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,OAAO,EAAE,EACd,EAAE,EAAE,EAAE,CACP,CAAC,SAAS,EAAE;;;IAIf,QAAQ,GAAA;AACN,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,IAAI,CAAC,GAAG,CAAC,MAAM,CACb,GAAG,EACH,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,OAAO,EAAE,CACf,CAAC,SAAS,EAAE;;;IAIf,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,iCAAiC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;;IAG/E,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;IAGhE,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;;IAGrE,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAClB,CAAC,iCAAiC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EACvD,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CACnC;;8GApIQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB3B,6jIA0HA,ED5GI,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,0SAClB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAKN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EACP,OAAA,EAAA;wBACP,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,6jIAAA,EAAA,MAAA,EAAA,CAAA,y1BAAA,CAAA,EAAA;;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-histaff-alpha-wf-lab.component-qS2-1UVx.mjs","sources":["../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-lab/wf-lab.component.ts","../../../projects/ngx-histaff-alpha/src/lib/app/libraries/core-workflow-builder/wf-lab/wf-lab.component.html"],"sourcesContent":["import { Component, signal, computed, inject, effect } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { CoreWorkflowService } from '../core-workflow.service';\r\n\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { IWfWorkflowGroup } from '../interfaces/IWfWorkflowGroup';\r\n\r\n@Component({\r\n selector: 'core-wf-lab',\r\n standalone: true,\r\n imports: [\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatButtonModule,\r\n ],\r\n templateUrl: './wf-lab.component.html',\r\n styleUrl: './wf-lab.component.scss'\r\n})\r\nexport class WfLabComponent {\r\n\r\n router = inject(Router);\r\n wfs = inject(CoreWorkflowService);\r\n\r\n // Inputs\r\n $workflowId = signal<string>('');\r\n $correlationId = signal<string>('');\r\n $stepId = signal<string>('');\r\n $actorId = signal<string>('');\r\n $reason = signal<string>('LAB reason…');\r\n\r\n // React / Inject\r\n $reactType = signal<string>('APPROVED');\r\n $injectType = signal<string>('CANCELLED');\r\n\r\n // Groups + Workflows\r\n $groups = this.wfs.$allGroups;\r\n $allWorkflows = computed(() => {\r\n return this.$groups().flatMap(g =>\r\n g.wfWorkflows.map(w => ({\r\n id: w.id,\r\n label: `${g.name} / ${w.name}`\r\n }))\r\n );\r\n });\r\n\r\n // Current steps (design-time steps)\r\n $steps = this.wfs.$currentSteps;\r\n\r\n // Auto-build United Correlation IDs\r\n $united = computed(() => {\r\n const w = this.$workflowId();\r\n const c = this.$correlationId();\r\n const s = this.$stepId();\r\n const a = this.$actorId();\r\n return (w && c && s && a)\r\n ? `${w}___${c}___${s}___${a}`\r\n : '';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const existing = this.wfs.$allGroups();\r\n if (existing.length === 0) {\r\n this.loadGroupsOnce();\r\n }\r\n });\r\n }\r\n\r\n private loadGroupsOnce() {\r\n this.wfs\r\n .refreshObservable(\r\n '/api/WfWorkflowGroup/GetAllWithWorkflows',\r\n '',\r\n undefined,\r\n false\r\n )\r\n .subscribe(x => {\r\n if (x.ok && x.status === 200 && x.body?.statusCode === 200) {\r\n const groups = (x.body.innerBody as IWfWorkflowGroup[])\r\n .map(g => ({ ...g, orderNum: g.orderNum ?? 999 }))\r\n .sort((a, b) => a.orderNum - b.orderNum);\r\n\r\n this.wfs.$allGroups.set(groups);\r\n } else {\r\n console.warn('⚠️ LAB: GetAllWithWorkflows failed', x.body);\r\n }\r\n });\r\n }\r\n\r\n // Select Workflow\r\n selectWorkflow(id: string) {\r\n this.$workflowId.set(id);\r\n }\r\n\r\n // Select React Type\r\n selectReactType(v: string) {\r\n this.$reactType.set(v);\r\n }\r\n\r\n // Select Inject Type\r\n selectInjectType(v: string) {\r\n this.$injectType.set(v);\r\n }\r\n\r\n // Execute React\r\n doReact() {\r\n const uid = this.$united();\r\n if (!uid) return;\r\n\r\n this.wfs.react(\r\n uid,\r\n this.$reactType(),\r\n this.$reason(),\r\n {}, \"\"\r\n ).subscribe();\r\n }\r\n\r\n // Execute Inject\r\n doInject() {\r\n const uid = this.$united();\r\n if (!uid) return;\r\n\r\n this.wfs.inject(\r\n uid,\r\n this.$injectType(),\r\n this.$reason()\r\n ).subscribe();\r\n }\r\n\r\n // Navigation\r\n openKickoff() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(['/root/workflow/workflow-consume', this.$workflowId()]);\r\n }\r\n\r\n openReactPage() {\r\n if (!this.$united()) return;\r\n this.router.navigate(['/root/workflow/react', this.$united()]);\r\n }\r\n\r\n openStatus() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(['/root/workflow/status', this.$workflowId()]);\r\n }\r\n\r\n openPreview() {\r\n if (!this.$workflowId()) return;\r\n this.router.navigate(\r\n ['/root/workflow/workflow-consume', this.$workflowId()],\r\n { queryParams: { preview: true } }\r\n );\r\n }\r\n}\r\n","<div class=\"lab-container\">\r\n\r\n <h2>Workflow Engine LAB (Backend-Accurate)</h2>\r\n\r\n <!-- Workflow selector -->\r\n <mat-form-field appearance=\"outline\" class=\"w100\">\r\n <mat-label>Select Workflow</mat-label>\r\n <mat-select\r\n [value]=\"$workflowId()\"\r\n (selectionChange)=\"selectWorkflow($any($event.value))\">\r\n\r\n @for (wf of $allWorkflows(); track wf.id) {\r\n <mat-option [value]=\"wf.id\">{{ wf.label }}</mat-option>\r\n }\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <!-- Input Grid -->\r\n <div class=\"input-grid\">\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Workflow ID</mat-label>\r\n <input matInput [value]=\"$workflowId()\"\r\n (input)=\"$workflowId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Correlation ID</mat-label>\r\n <input matInput [value]=\"$correlationId()\"\r\n (input)=\"$correlationId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Step ID</mat-label>\r\n <mat-select\r\n [value]=\"$stepId()\"\r\n (selectionChange)=\"$stepId.set($any($event.value))\">\r\n\r\n @for (s of $steps(); track s.id) {\r\n <mat-option [value]=\"s.id\">{{ s.name }}</mat-option>\r\n }\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Actor ID</mat-label>\r\n <input matInput [value]=\"$actorId()\"\r\n (input)=\"$actorId.set($any($event.target).value)\" />\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <!-- Auto United -->\r\n <div class=\"united-display\">\r\n <div class=\"label\">UnitedCorrelationIds:</div>\r\n <div class=\"value\">{{$united()}}</div>\r\n </div>\r\n\r\n <!-- Reason -->\r\n <mat-form-field appearance=\"outline\" class=\"w100\">\r\n <mat-label>Reason</mat-label>\r\n <textarea matInput rows=\"3\"\r\n [value]=\"$reason()\"\r\n (input)=\"$reason.set($any($event.target).value)\">\r\n </textarea>\r\n </mat-form-field>\r\n\r\n <!-- React Actions -->\r\n <div class=\"section-title\">React Actions (Actor)</div>\r\n\r\n <div class=\"action-row\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>React Type</mat-label>\r\n <mat-select [value]=\"$reactType()\"\r\n (selectionChange)=\"selectReactType($any($event.value))\">\r\n\r\n <mat-option value=\"APPROVED\">APPROVED</mat-option>\r\n <mat-option value=\"REJECTED\">REJECTED</mat-option>\r\n <mat-option value=\"CONFIRMED\">CONFIRMED</mat-option>\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <button mat-raised-button color=\"primary\" (click)=\"doReact()\">\r\n Run React\r\n </button>\r\n </div>\r\n\r\n <!-- Inject Actions -->\r\n <div class=\"section-title\">Inject Actions (System)</div>\r\n\r\n <div class=\"action-row\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>Inject Type</mat-label>\r\n <mat-select [value]=\"$injectType()\"\r\n (selectionChange)=\"selectInjectType($any($event.value))\">\r\n\r\n <mat-option value=\"CANCELLED\">CANCELLED</mat-option>\r\n <mat-option value=\"REVOKED\">REVOKED</mat-option>\r\n <mat-option value=\"TERMINATED\">TERMINATED</mat-option>\r\n\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <button mat-raised-button color=\"warn\" (click)=\"doInject()\">\r\n Run Inject\r\n </button>\r\n </div>\r\n\r\n <!-- Navigation -->\r\n <div class=\"section-title\">Navigation</div>\r\n\r\n <div class=\"button-row\">\r\n <button mat-raised-button (click)=\"openKickoff()\">Open Kickoff</button>\r\n <button mat-raised-button (click)=\"openReactPage()\">Open React Page</button>\r\n <button mat-raised-button (click)=\"openStatus()\">Open Status</button>\r\n <button mat-raised-button (click)=\"openPreview()\">Preview Mode</button>\r\n </div>\r\n\r\n</div>\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { aW as ActionService, cN as ActionSvgEditComponent, cv as AlertComponent, b as AlertService, cz as AnimatedTextComponent, cy as AnimatedTextService, a as AppConfigService, aX as AppInitializationService, A as AppService, R as ApplicationHelpService, bQ as AtShiftPatternApplyComponent, bP as AtShiftPatternComponent, bR as AtShiftPatternEditComponent, bS as AtWorksignComponent, bT as AtWorksignService, aY as AuthService, B as BaseComponent, cA as BaseDropdownComponent, h as BaseEditComponent, cD as ButtonGroupComponent, cB as ButtonGroupModule, cC as ButtonGroupService, dQ as CARD_COLORS, at as CORE_VNS_BUTTONS, aZ as CacheService, aH as CanActivateFunctionUrlMapperGuard, t as CanDeactivateGuard, C as ChatService, a$ as CheckForUpdateService, b3 as ClientService, b4 as CommonHttpRequestService, b6 as ConfigService, cW as ConfirmDialogStateComponent, dc as ControlBase, cG as CoreAccordionComponent, cH as CoreAccordionService, cI as CoreActiveUserCountComponent, cK as CoreApiProgressComponent, ab as CoreAttachmentComponent, cF as CoreButtonComponent, cL as CoreButtonGroupComponent, cO as CoreButtonGroupService, a1 as CoreButtonGroupVnsComponent, cP as CoreButtonVnsComponent, l as CoreCheckboxComponent, a9 as CoreChecklistComponent, cQ as CoreCommonParamKitComponent, cR as CoreCompareDbPipelineComponent, cU as CoreCompositionComponent, cT as CoreCompositionService, cS as CoreCompositionState, cV as CoreConfirmDialogComponent, d1 as CoreContractSeekerComponent, a7 as CoreControlComponent, d2 as CoreControlNoGridBufferComponent, d3 as CoreControlNoSeekerComponent, de as CoreControlService, ae as CoreCurrencyInputComponent, eM as CoreD3Service, ac as CoreDatePickerComponent, V as CoreDatetimeService, d5 as CoreDocgenToolbarComponent, a2 as CoreDropdownComponent, d6 as CoreEmployeeScheduleComponent, d7 as CoreEmployeeSeekerComponent, e6 as CoreFileFormatPickerComponent, d9 as CoreFileUploaderComponent, da as CoreFilterHubComponent, db as CoreFilterHubService, X as CoreFormComponent, dk as CoreFormControlBaseComponent, aa as CoreFormControlSeekerComponent, y as CoreFormDesignService, dj as CoreFormLiteComponent, p as CoreFormService, di as CoreFormTabComponent, dv as CoreGridBufferComponent, dw as CoreHeaderParamsComponent, dx as CoreHelperComponent, ah as CoreIosSwitcherComponent, cX as CoreLazyMountComponent, dy as CoreLineComponent, dz as CoreLiquidWysiwygComponent, dA as CoreListComponent, dB as CoreListLazyComponent, dC as CoreLoadingSurfaceComponent, b7 as CoreLocalStorageService, dD as CoreMccComponent, dE as CoreMonthPickerComponent, ad as CoreMonthSelectorComponent, dF as CoreNavigationTrackerComponent, dH as CoreOauthCallbackComponent, dI as CoreOauthCallbackOffice365Component, dT as CoreOrgParamComponent, dL as CoreOrgTreeComponent, dN as CoreOrgTreeService, dM as CoreOrgTreeState, dO as CoreOrgUnitSeekerComponent, dP as CoreOrgchartflexComponent, dR as CoreOrgchartflexWrapperComponent, j as CorePageEditComponent, dX as CorePageEditLiteComponent, dW as CorePageEditService, dY as CorePageEditTabComponent, d as CorePageHeaderComponent, f as CorePageListComponent, e0 as CorePageListContentComponent, d_ as CorePageListService, d$ as CorePageListState, e2 as CorePageViewComponent, e3 as CorePaginationComponent, e4 as CorePaginationFullComponent, e5 as CorePaginationFullService, K as CoreParamControlComponent, ea as CorePermissionActionsComponent, e9 as CorePermissionComponent, e7 as CorePermissionService, eN as CorePieComponent, eb as CorePositionConcurrentSeekerComponent, ec as CorePositionSeekerComponent, ed as CoreQrcodeComponent, ef as CoreQueryBuilderComponent, L as CoreRadioGroupComponent, eg as CoreReducerIconComponent, cY as CoreRootMenuItemPickerComponent, cZ as CoreRootMenuItemPickerService, eh as CoreRotatingTextComponent, ei as CoreRouteAccumulatorComponent, ej as CoreRoutingHistoryComponent, ek as CoreSalaryPolicyPickerComponent, eO as CoreScatterPlotComponent, el as CoreScrollComponent, em as CoreScrollLazyComponent, en as CoreSeenByComponent, eo as CoreShiftCardComponent, ep as CoreShiftCellComponent, eq as CoreShiftCollectionComponent, er as CoreShiftStickerComponent, eR as CoreStatisticWidgetComponent, g as CoreStatusStickerComponent, et as CoreSubFormGroupComponent, eu as CoreTabListComponent, d0 as CoreTableComponent, b8 as CoreTableService, m as CoreTabsComponent, ev as CoreTagsComponent, c as CoreTerminalSpinnerComponent, ez as CoreTimezoneComponent, ew as CoreTopicPickerComponent, ey as CoreTopicTreeComponent, eA as CoreTreeComponent, eC as CoreTreeGridComponent, eD as CoreTreeReferenceComponent, eE as CoreWageSeekerComponent, eH as CoreWorkflowBuilderComponent, eI as CoreWorkflowGroupEditComponent, s as CoreWorkflowListComponent, eF as CoreWorkingSeekerComponent, eJ as CoreYearPickerComponent, eK as CoreYearSelectorComponent, df as CustomValidators, ay as DATE_VALUE_ACCESSOR, eX as DEFAULT_SVG, av as DESKTOP_SCREEN_HEDER_HEIGHT, az as DateValueAccessor, eS as DecisionComponent, i as DialogService, an as DialogStateComponent, b9 as DndService, ba as DocxMergeService, G as DomService, bz as DomainSocketOrchestrator, c$ as ECoreTableToolClass, c_ as ECoreTableToolCode, cw as EnumAlertType, b1 as EnumBrowserType, cE as EnumButtonCaptionCode, ex as EnumCoreArticleCategoryTreeaAccessorMode, cM as EnumCoreButtonCode, _ as EnumCoreButtonVNSCode, eL as EnumCoreD3ScaleType, d8 as EnumCoreFileUploaderType, o as EnumCoreFormControlSeekerSourceType, dJ as EnumCoreOrgTreeaAccessorMode, dK as EnumCoreOrgTreeaSearchMode, dU as EnumCorePageEditBootstrapClass, dV as EnumCorePageEditFieldType, W as EnumCorePageEditMode, dt as EnumCoreSeekerColumnAutoForm, dn as EnumCoreSeekerColumnContract, dl as EnumCoreSeekerColumnJob, dr as EnumCoreSeekerColumnPosition, ds as EnumCoreSeekerColumnPositionConcurrent, dm as EnumCoreSeekerColumnStaffProfile, dq as EnumCoreSeekerColumnWage, dp as EnumCoreSeekerColumnWorking, k as EnumCoreTablePipeType, eB as EnumCoreTreeGridEditMode, e1 as EnumCoreViewItemType, b0 as EnumDeviceType, aA as EnumDragType, aB as EnumErrorType, dZ as EnumExType, a3 as EnumFilterOperator, E as EnumFormBaseContolType, a6 as EnumFormDesignMode, eP as EnumHrComparisonCode, eQ as EnumICoreStatisticWidgetDataType, aC as EnumIconClass, af as EnumImageResolverType, br as EnumNotificationDir, ee as EnumOparator, b2 as EnumOsType, e8 as EnumPermissionObjectType, aD as EnumProfileInfoSector, f8 as EnumRecursiveFields, aE as EnumSignalRType, aF as EnumSortDirection, bB as EnumSsrsExpressExportFormat, bA as EnumSsrsExpressFileExtension, aG as EnumStyleButtonClass, a_ as EnumSwUpdateVersionUpdatesEventType, bN as EnumWorkScheduleViewMode, eT as EvaluateDialogComponent, bM as EvaluateDialogService, f6 as FileService, bb as FilterKitService, f2 as FilterPipe, ao as FooterComponent, F as FullscreenModalLoaderComponent, bU as FunctionComponent, bW as FunctionEditComponent, co as FunctionEditService, bX as FunctionIgnoreComponent, bY as FunctionIgnoreEditComponent, N as GptService, bZ as GroupFunctionComponent, b_ as GroupFunctionEditComponent, bc as GrpcService, bd as HeaderService, be as HistoryService, U as HotKeysDirective, H as HtmlTooltipDirective, bf as HttpErrorHandler, bg as HubConnectionService, eU as HuconcurrentlyComponent, cx as IAlertOptions, I as ImageErrorResolverDirective, c0 as InMemoryComponent, bV as IndividualScheduleApplyComponent, aI as InitializationCanActivateFn, aJ as InitializationCanMatchFn, aL as InterceptorSkipHeader, bh as IpServiceService, eY as ItemComponent, eV as JobComponent, Z as JsonService, eW as LanguageChangerComponent, c1 as LanguageComponent, c2 as LanguageEditComponent, bi as LayoutService, bj as LiquidJsService, f7 as LongTaskService, aw as MOBILE_SCREEN_HEDER_HEIGHT, aj as MapAppdemoToServerPipePipe, ak as MapAttachmentToServerPipe, u as MapAvatarToServerPipe, al as MapNewsfeedMediaToServerPipe, bk as MapService, c3 as MenuComponent, c4 as MenuEditComponent, bl as MenuService, bm as MessageService, bn as ModalService, M as MultiLanguageService, c5 as MutationLogComponent, c6 as MutationViewComponent, eZ as NavigatorComponent, Y as NavigatorService, cJ as NewlyCreatedTokenService, ag as NormalizeHumanNamePipe, bs as NotificationActionType, aV as OnlineUsersComponent, bo as OrganizationService, e_ as OtpInputComponent, e$ as OtpInputService, c7 as PaSalaryPolicyComponent, c8 as PaSalaryPolicyEditComponent, f0 as PageTitleComponent, f1 as PaginationComponent, bp as PkceService, c9 as PortalRouteComponent, cc as PortalRouteEditComponent, f4 as PositionComponent, f5 as PositionEditService, bq as PositionTransferService, bt as PushNotificationService, $ as READONLY_WORKFLOW_FIELDS, bu as RandomAvatarService, f9 as RecursiveService, bv as RequestCache, bw as RequestCacheWithMap, bx as ResponseService, ap as RightchatComponent, by as RoutingService, es as STICKER_COLOR_SCHEMA, ca as ScheduleOverviewComponent, du as SeekerService, x as SocketService, bC as SsrsExpressService, fc as StaffProfileComponent, bE as StatisticAuthService, bD as StatisticService, S as StringHtmlPipe, fa as StringService, ai as SunnyRotatingComponent, ci as SysActionComponent, cj as SysActionEditComponent, ck as SysFunctionActionComponent, cl as SysFunctionActionEditComponent, cm as SysFunctionActionMapperComponent, cn as SysFunctionUrlMapperComponent, bF as SysMenuService, cp as SysModuleComponent, cq as SysModuleEditComponent, cd as SysOtherListComponent, ce as SysOtherListEditComponent, cf as SysOtherListTypeComponent, cg as SysOtherListTypeEditComponent, cr as SysRouteAccessComponent, b5 as TLA_CONFIG, v as TableCellPipe, dd as Textbox, fd as ThreedotsComponent, bG as TimeSheetService, fe as TooltipComponent, T as TooltipDirective, bH as TopicPermissionService, bI as TopicTreeService, e as TranslatePipe, dg as URL_PATTERN, fb as UnicodeService, bJ as UploadedFileService, am as UploadedFilenameCutoffPipe, bK as UrlService, ff as UserActivityComponent, bL as UserActivityService, fg as WageComponent, aq as WaittingScreenComponent, bO as WorkShiftDndService, w as alertOptions, aM as appTypeInterceptor, as as attachmentOptions, aO as authInterceptor, aN as baseUrlInterceptor, cu as blob_to_base64_script, aT as cachingInterceptor, d4 as coreDocGenRoutes, dh as coreFormDesignRoutes, dG as coreNavigationTrackerRoutes, dS as coreOrgchartflexRoutes, ch as coreSysActionRoutes, eG as coreWorkflowRoutes, au as defaultPaging, aP as graphInterceptor, b$ as hrmSchemaRoutes, aK as httpInterceptorProviders, aU as langInterceptor, ct as liner_to_nested_array_script, ar as longAlertOptions, a0 as noneAutoClosedAlertOptions, f3 as normalizeHumanName, aR as responseInterceptor, cb as simpleChatRoutes, cs as sysSmtpClientRoutes, ax as themeBlue, aS as timeZoneInterceptor, aQ as tokenInterceptor } from './ngx-histaff-alpha-ngx-histaff-alpha-B6JZNI6c.mjs';
|
|
1
|
+
export { aW as ActionService, cN as ActionSvgEditComponent, cv as AlertComponent, b as AlertService, cz as AnimatedTextComponent, cy as AnimatedTextService, a as AppConfigService, aX as AppInitializationService, A as AppService, R as ApplicationHelpService, bQ as AtShiftPatternApplyComponent, bP as AtShiftPatternComponent, bR as AtShiftPatternEditComponent, bS as AtWorksignComponent, bT as AtWorksignService, aY as AuthService, B as BaseComponent, cA as BaseDropdownComponent, h as BaseEditComponent, cD as ButtonGroupComponent, cB as ButtonGroupModule, cC as ButtonGroupService, dQ as CARD_COLORS, at as CORE_VNS_BUTTONS, aZ as CacheService, aH as CanActivateFunctionUrlMapperGuard, t as CanDeactivateGuard, C as ChatService, a$ as CheckForUpdateService, b3 as ClientService, b4 as CommonHttpRequestService, b6 as ConfigService, cW as ConfirmDialogStateComponent, dc as ControlBase, cG as CoreAccordionComponent, cH as CoreAccordionService, cI as CoreActiveUserCountComponent, cK as CoreApiProgressComponent, ab as CoreAttachmentComponent, cF as CoreButtonComponent, cL as CoreButtonGroupComponent, cO as CoreButtonGroupService, a1 as CoreButtonGroupVnsComponent, cP as CoreButtonVnsComponent, l as CoreCheckboxComponent, a9 as CoreChecklistComponent, cQ as CoreCommonParamKitComponent, cR as CoreCompareDbPipelineComponent, cU as CoreCompositionComponent, cT as CoreCompositionService, cS as CoreCompositionState, cV as CoreConfirmDialogComponent, d1 as CoreContractSeekerComponent, a7 as CoreControlComponent, d2 as CoreControlNoGridBufferComponent, d3 as CoreControlNoSeekerComponent, de as CoreControlService, ae as CoreCurrencyInputComponent, eM as CoreD3Service, ac as CoreDatePickerComponent, V as CoreDatetimeService, d5 as CoreDocgenToolbarComponent, a2 as CoreDropdownComponent, d6 as CoreEmployeeScheduleComponent, d7 as CoreEmployeeSeekerComponent, e6 as CoreFileFormatPickerComponent, d9 as CoreFileUploaderComponent, da as CoreFilterHubComponent, db as CoreFilterHubService, X as CoreFormComponent, dk as CoreFormControlBaseComponent, aa as CoreFormControlSeekerComponent, y as CoreFormDesignService, dj as CoreFormLiteComponent, p as CoreFormService, di as CoreFormTabComponent, dv as CoreGridBufferComponent, dw as CoreHeaderParamsComponent, dx as CoreHelperComponent, ah as CoreIosSwitcherComponent, cX as CoreLazyMountComponent, dy as CoreLineComponent, dz as CoreLiquidWysiwygComponent, dA as CoreListComponent, dB as CoreListLazyComponent, dC as CoreLoadingSurfaceComponent, b7 as CoreLocalStorageService, dD as CoreMccComponent, dE as CoreMonthPickerComponent, ad as CoreMonthSelectorComponent, dF as CoreNavigationTrackerComponent, dH as CoreOauthCallbackComponent, dI as CoreOauthCallbackOffice365Component, dT as CoreOrgParamComponent, dL as CoreOrgTreeComponent, dN as CoreOrgTreeService, dM as CoreOrgTreeState, dO as CoreOrgUnitSeekerComponent, dP as CoreOrgchartflexComponent, dR as CoreOrgchartflexWrapperComponent, j as CorePageEditComponent, dX as CorePageEditLiteComponent, dW as CorePageEditService, dY as CorePageEditTabComponent, d as CorePageHeaderComponent, f as CorePageListComponent, e0 as CorePageListContentComponent, d_ as CorePageListService, d$ as CorePageListState, e2 as CorePageViewComponent, e3 as CorePaginationComponent, e4 as CorePaginationFullComponent, e5 as CorePaginationFullService, K as CoreParamControlComponent, ea as CorePermissionActionsComponent, e9 as CorePermissionComponent, e7 as CorePermissionService, eN as CorePieComponent, eb as CorePositionConcurrentSeekerComponent, ec as CorePositionSeekerComponent, ed as CoreQrcodeComponent, ef as CoreQueryBuilderComponent, L as CoreRadioGroupComponent, eg as CoreReducerIconComponent, cY as CoreRootMenuItemPickerComponent, cZ as CoreRootMenuItemPickerService, eh as CoreRotatingTextComponent, ei as CoreRouteAccumulatorComponent, ej as CoreRoutingHistoryComponent, ek as CoreSalaryPolicyPickerComponent, eO as CoreScatterPlotComponent, el as CoreScrollComponent, em as CoreScrollLazyComponent, en as CoreSeenByComponent, eo as CoreShiftCardComponent, ep as CoreShiftCellComponent, eq as CoreShiftCollectionComponent, er as CoreShiftStickerComponent, eR as CoreStatisticWidgetComponent, g as CoreStatusStickerComponent, et as CoreSubFormGroupComponent, eu as CoreTabListComponent, d0 as CoreTableComponent, b8 as CoreTableService, m as CoreTabsComponent, ev as CoreTagsComponent, c as CoreTerminalSpinnerComponent, ez as CoreTimezoneComponent, ew as CoreTopicPickerComponent, ey as CoreTopicTreeComponent, eA as CoreTreeComponent, eC as CoreTreeGridComponent, eD as CoreTreeReferenceComponent, eE as CoreWageSeekerComponent, eH as CoreWorkflowBuilderComponent, eI as CoreWorkflowGroupEditComponent, s as CoreWorkflowListComponent, eF as CoreWorkingSeekerComponent, eJ as CoreYearPickerComponent, eK as CoreYearSelectorComponent, df as CustomValidators, ay as DATE_VALUE_ACCESSOR, eX as DEFAULT_SVG, av as DESKTOP_SCREEN_HEDER_HEIGHT, az as DateValueAccessor, eS as DecisionComponent, i as DialogService, an as DialogStateComponent, b9 as DndService, ba as DocxMergeService, G as DomService, bz as DomainSocketOrchestrator, c$ as ECoreTableToolClass, c_ as ECoreTableToolCode, cw as EnumAlertType, b1 as EnumBrowserType, cE as EnumButtonCaptionCode, ex as EnumCoreArticleCategoryTreeaAccessorMode, cM as EnumCoreButtonCode, _ as EnumCoreButtonVNSCode, eL as EnumCoreD3ScaleType, d8 as EnumCoreFileUploaderType, o as EnumCoreFormControlSeekerSourceType, dJ as EnumCoreOrgTreeaAccessorMode, dK as EnumCoreOrgTreeaSearchMode, dU as EnumCorePageEditBootstrapClass, dV as EnumCorePageEditFieldType, W as EnumCorePageEditMode, dt as EnumCoreSeekerColumnAutoForm, dn as EnumCoreSeekerColumnContract, dl as EnumCoreSeekerColumnJob, dr as EnumCoreSeekerColumnPosition, ds as EnumCoreSeekerColumnPositionConcurrent, dm as EnumCoreSeekerColumnStaffProfile, dq as EnumCoreSeekerColumnWage, dp as EnumCoreSeekerColumnWorking, k as EnumCoreTablePipeType, eB as EnumCoreTreeGridEditMode, e1 as EnumCoreViewItemType, b0 as EnumDeviceType, aA as EnumDragType, aB as EnumErrorType, dZ as EnumExType, a3 as EnumFilterOperator, E as EnumFormBaseContolType, a6 as EnumFormDesignMode, eP as EnumHrComparisonCode, eQ as EnumICoreStatisticWidgetDataType, aC as EnumIconClass, af as EnumImageResolverType, br as EnumNotificationDir, ee as EnumOparator, b2 as EnumOsType, e8 as EnumPermissionObjectType, aD as EnumProfileInfoSector, f8 as EnumRecursiveFields, aE as EnumSignalRType, aF as EnumSortDirection, bB as EnumSsrsExpressExportFormat, bA as EnumSsrsExpressFileExtension, aG as EnumStyleButtonClass, a_ as EnumSwUpdateVersionUpdatesEventType, bN as EnumWorkScheduleViewMode, eT as EvaluateDialogComponent, bM as EvaluateDialogService, f6 as FileService, bb as FilterKitService, f2 as FilterPipe, ao as FooterComponent, F as FullscreenModalLoaderComponent, bU as FunctionComponent, bW as FunctionEditComponent, co as FunctionEditService, bX as FunctionIgnoreComponent, bY as FunctionIgnoreEditComponent, N as GptService, bZ as GroupFunctionComponent, b_ as GroupFunctionEditComponent, bc as GrpcService, bd as HeaderService, be as HistoryService, U as HotKeysDirective, H as HtmlTooltipDirective, bf as HttpErrorHandler, bg as HubConnectionService, eU as HuconcurrentlyComponent, cx as IAlertOptions, I as ImageErrorResolverDirective, c0 as InMemoryComponent, bV as IndividualScheduleApplyComponent, aI as InitializationCanActivateFn, aJ as InitializationCanMatchFn, aL as InterceptorSkipHeader, bh as IpServiceService, eY as ItemComponent, eV as JobComponent, Z as JsonService, eW as LanguageChangerComponent, c1 as LanguageComponent, c2 as LanguageEditComponent, bi as LayoutService, bj as LiquidJsService, f7 as LongTaskService, aw as MOBILE_SCREEN_HEDER_HEIGHT, aj as MapAppdemoToServerPipePipe, ak as MapAttachmentToServerPipe, u as MapAvatarToServerPipe, al as MapNewsfeedMediaToServerPipe, bk as MapService, c3 as MenuComponent, c4 as MenuEditComponent, bl as MenuService, bm as MessageService, bn as ModalService, M as MultiLanguageService, c5 as MutationLogComponent, c6 as MutationViewComponent, eZ as NavigatorComponent, Y as NavigatorService, cJ as NewlyCreatedTokenService, ag as NormalizeHumanNamePipe, bs as NotificationActionType, aV as OnlineUsersComponent, bo as OrganizationService, e_ as OtpInputComponent, e$ as OtpInputService, c7 as PaSalaryPolicyComponent, c8 as PaSalaryPolicyEditComponent, f0 as PageTitleComponent, f1 as PaginationComponent, bp as PkceService, c9 as PortalRouteComponent, cc as PortalRouteEditComponent, f4 as PositionComponent, f5 as PositionEditService, bq as PositionTransferService, bt as PushNotificationService, $ as READONLY_WORKFLOW_FIELDS, bu as RandomAvatarService, f9 as RecursiveService, bv as RequestCache, bw as RequestCacheWithMap, bx as ResponseService, ap as RightchatComponent, by as RoutingService, es as STICKER_COLOR_SCHEMA, ca as ScheduleOverviewComponent, du as SeekerService, x as SocketService, bC as SsrsExpressService, fc as StaffProfileComponent, bE as StatisticAuthService, bD as StatisticService, S as StringHtmlPipe, fa as StringService, ai as SunnyRotatingComponent, ci as SysActionComponent, cj as SysActionEditComponent, ck as SysFunctionActionComponent, cl as SysFunctionActionEditComponent, cm as SysFunctionActionMapperComponent, cn as SysFunctionUrlMapperComponent, bF as SysMenuService, cp as SysModuleComponent, cq as SysModuleEditComponent, cd as SysOtherListComponent, ce as SysOtherListEditComponent, cf as SysOtherListTypeComponent, cg as SysOtherListTypeEditComponent, cr as SysRouteAccessComponent, b5 as TLA_CONFIG, v as TableCellPipe, dd as Textbox, fd as ThreedotsComponent, bG as TimeSheetService, fe as TooltipComponent, T as TooltipDirective, bH as TopicPermissionService, bI as TopicTreeService, e as TranslatePipe, dg as URL_PATTERN, fb as UnicodeService, bJ as UploadedFileService, am as UploadedFilenameCutoffPipe, bK as UrlService, ff as UserActivityComponent, bL as UserActivityService, fg as WageComponent, aq as WaittingScreenComponent, bO as WorkShiftDndService, w as alertOptions, aM as appTypeInterceptor, as as attachmentOptions, aO as authInterceptor, aN as baseUrlInterceptor, cu as blob_to_base64_script, aT as cachingInterceptor, d4 as coreDocGenRoutes, dh as coreFormDesignRoutes, dG as coreNavigationTrackerRoutes, dS as coreOrgchartflexRoutes, ch as coreSysActionRoutes, eG as coreWorkflowRoutes, au as defaultPaging, aP as graphInterceptor, b$ as hrmSchemaRoutes, aK as httpInterceptorProviders, aU as langInterceptor, ct as liner_to_nested_array_script, ar as longAlertOptions, a0 as noneAutoClosedAlertOptions, f3 as normalizeHumanName, aR as responseInterceptor, cb as simpleChatRoutes, cs as sysSmtpClientRoutes, ax as themeBlue, aS as timeZoneInterceptor, aQ as tokenInterceptor } from './ngx-histaff-alpha-ngx-histaff-alpha-ahDUrQN8.mjs';
|
|
2
2
|
//# sourceMappingURL=ngx-histaff-alpha.mjs.map
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { OnDestroy } from '@angular/core';
|
|
2
2
|
import { CoreFormControlBaseComponent } from '../core-form-control-base/core-form-control-base.component';
|
|
3
|
-
import { IOmegaProjectionVm } from './enum-interfaces/omega-projection.vm';
|
|
4
3
|
import { IIntentDescriptor } from './enum-interfaces/intent-descriptor.model';
|
|
5
4
|
import { IIntentDraft } from './enum-interfaces/intent-draft.model';
|
|
6
|
-
import { IOmegaDecision } from './enum-interfaces/omega-decision';
|
|
7
5
|
import { DomDecisionContextService } from './dom-decision-context.service';
|
|
8
6
|
import { JsonService } from '../../services/json.service';
|
|
9
|
-
import { IEntityToken } from './enum-interfaces/entity-token';
|
|
10
7
|
import { IIntentGrammar } from './enum-interfaces/narration-engine';
|
|
11
8
|
import { AppConfigService } from '../../services/app-config.service';
|
|
12
9
|
import { Subscription } from 'rxjs';
|
|
@@ -29,50 +26,14 @@ export declare class CoreDomDecisionEditorComponent extends CoreFormControlBaseC
|
|
|
29
26
|
ctx: DomDecisionContextService;
|
|
30
27
|
js: JsonService;
|
|
31
28
|
acs: AppConfigService;
|
|
32
|
-
$
|
|
33
|
-
|
|
29
|
+
$allTokens: import("@angular/core").Signal<import("./enum-interfaces/entity-token").IEntityToken[]>;
|
|
30
|
+
isDevMode: boolean;
|
|
34
31
|
value: string;
|
|
35
32
|
INTENT_DESCRIPTOR_REGISTRY: readonly IIntentDescriptor[];
|
|
36
33
|
$showIntentComposer: import("@angular/core").WritableSignal<boolean>;
|
|
37
34
|
$selectedIntentDescriptor: import("@angular/core").WritableSignal<IIntentDescriptor | null>;
|
|
38
|
-
$activeSeq: import("@angular/core").WritableSignal<number | null>;
|
|
39
|
-
isDevMode: boolean;
|
|
40
35
|
constructor();
|
|
41
|
-
$projection: import("@angular/core").Signal<IOmegaProjectionVm>;
|
|
42
36
|
writeValue(omega: string | null): void;
|
|
43
|
-
private buildNarrationContext;
|
|
44
|
-
private buildTemporalContext;
|
|
45
|
-
private normalizeUtc;
|
|
46
|
-
private formatLocalDate;
|
|
47
|
-
/**
|
|
48
|
-
* Xây dựng Resolved Context cho Intent Narration
|
|
49
|
-
*
|
|
50
|
-
* Lớp này làm nhiệm vụ làm giàu (enrich) dữ liệu intent thô
|
|
51
|
-
* bằng các giá trị dễ đọc, phục vụ cho việc diễn giải (narration),
|
|
52
|
-
* nhưng TUYỆT ĐỐI KHÔNG thay đổi hay ghi đè lên facts gốc.
|
|
53
|
-
*
|
|
54
|
-
* Nguyên tắc thiết kế:
|
|
55
|
-
* - facts : sự thật máy móc, bất biến (ID, mã, UTC, enum…)
|
|
56
|
-
* - resolved : diễn giải bổ sung, tùy chọn, thân thiện với con người
|
|
57
|
-
* - grammar : chỉ ghép câu, không tra cứu, không chứa logic nghiệp vụ
|
|
58
|
-
*
|
|
59
|
-
* Trách nhiệm của hàm này:
|
|
60
|
-
* - Diễn giải các tham chiếu chéo (ví dụ: TREE_ID → TREE_NAME)
|
|
61
|
-
* - Chuẩn hóa vai trò thành nhãn dễ đọc (ví dụ: MASTER → "vai trò chính")
|
|
62
|
-
* - Lưu giữ snapshot tên hiển thị tại thời điểm tạo intent
|
|
63
|
-
* (LEFT_/RIGHT_ ORIGINAL_NAME) phục vụ audit và narration
|
|
64
|
-
*
|
|
65
|
-
* Những gì hàm này KHÔNG làm (có chủ ý):
|
|
66
|
-
* - Không gọi API / DB tại runtime
|
|
67
|
-
* - Không thay đổi dữ liệu facts đầu vào
|
|
68
|
-
* - Không xử lý logic ngữ pháp hay ghép câu
|
|
69
|
-
*
|
|
70
|
-
* Đây là lớp "diễn giải ngữ nghĩa" nằm giữa dữ liệu intent thuần
|
|
71
|
-
* và lớp grammar chịu trách nhiệm kể câu chuyện cho con người.
|
|
72
|
-
*/
|
|
73
|
-
private buildResolvedContext;
|
|
74
|
-
private resolveTreeName;
|
|
75
|
-
private rebuildProjectionFromOmega;
|
|
76
37
|
onAddIntent(): void;
|
|
77
38
|
onCloseIntentComposer(): void;
|
|
78
39
|
onViewIntent(e: any): void;
|
|
@@ -80,8 +41,12 @@ export declare class CoreDomDecisionEditorComponent extends CoreFormControlBaseC
|
|
|
80
41
|
onMenuSelectIntent(descriptor: IIntentDescriptor): void;
|
|
81
42
|
onSelectEditedIntent(seq: number): void;
|
|
82
43
|
onCancelIntentCompose(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Emit intent đã được confirm từ editor.
|
|
46
|
+
*
|
|
47
|
+
* @param draft Thông tin intent người dùng vừa xác nhận
|
|
48
|
+
*/
|
|
83
49
|
onIntentDrafted(draft: IIntentDraft): void;
|
|
84
|
-
private produceOutputs;
|
|
85
50
|
ngOnDestroy(): void;
|
|
86
51
|
static ɵfac: i0.ɵɵFactoryDeclaration<CoreDomDecisionEditorComponent, never>;
|
|
87
52
|
static ɵcmp: i0.ɵɵComponentDeclaration<CoreDomDecisionEditorComponent, "core-dom-decision-editor", never, {}, {}, never, never, true, never>;
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
import { IEntityToken } from './enum-interfaces/entity-token';
|
|
2
2
|
import { IOmegaDecision } from './enum-interfaces/omega-decision';
|
|
3
3
|
import { IIntentDescriptor, IIntentInputValidatorSchema } from './enum-interfaces/intent-descriptor.model';
|
|
4
|
-
import {
|
|
4
|
+
import { IOmegaProjectionVm } from './enum-interfaces/omega-projection.vm';
|
|
5
|
+
import { FormBuilder, FormGroup, ValidatorFn } from '@angular/forms';
|
|
5
6
|
import { Subscription } from 'rxjs';
|
|
6
7
|
import { IntentInputMode } from './enum-interfaces/intent-input-mode';
|
|
8
|
+
import { AppConfigService } from '../../services/app-config.service';
|
|
9
|
+
import { IIntentNarrationContext } from './enum-interfaces/narration-engine';
|
|
10
|
+
import { IOmegaIntent } from './enum-interfaces/omega-intent';
|
|
11
|
+
import { IIntentDraft } from './enum-interfaces/intent-draft.model';
|
|
7
12
|
import * as i0 from "@angular/core";
|
|
8
13
|
export declare class DomDecisionContextService {
|
|
9
14
|
fb: FormBuilder;
|
|
10
|
-
form: FormGroup<
|
|
11
|
-
[x: string]: FormControl<unknown>;
|
|
12
|
-
}>;
|
|
15
|
+
$form: import("@angular/core").WritableSignal<FormGroup<any>>;
|
|
13
16
|
formSubscription: Subscription;
|
|
17
|
+
acs: AppConfigService;
|
|
14
18
|
$formRawValue: import("@angular/core").WritableSignal<any>;
|
|
15
|
-
$omega: import("@angular/core").WritableSignal<IOmegaDecision
|
|
19
|
+
$omega: import("@angular/core").WritableSignal<IOmegaDecision>;
|
|
16
20
|
$selectedIntentDescriptor: import("@angular/core").WritableSignal<IIntentDescriptor | null>;
|
|
17
|
-
|
|
21
|
+
/**
|
|
22
|
+
* chỉ dùng cho CREATE
|
|
23
|
+
*/
|
|
24
|
+
$createSeq: import("@angular/core").Signal<number>;
|
|
25
|
+
/**
|
|
26
|
+
* dùng cho VIEW / EDIT LATEST
|
|
27
|
+
*/
|
|
28
|
+
$viewSeq: import("@angular/core").WritableSignal<number | null>;
|
|
29
|
+
$projection: import("@angular/core").Signal<IOmegaProjectionVm>;
|
|
30
|
+
$activeInputSnapshot: import("@angular/core").Signal<Readonly<Record<string, unknown>> | null>;
|
|
18
31
|
$nextSeq: import("@angular/core").Signal<number>;
|
|
19
|
-
$rehydrateSnapshot: import("@angular/core").WritableSignal<Readonly<Record<string, unknown>> | null>;
|
|
20
32
|
$isLastSeq: import("@angular/core").Signal<boolean>;
|
|
21
33
|
/**
|
|
22
34
|
* $allTokens
|
|
@@ -48,10 +60,10 @@ export declare class DomDecisionContextService {
|
|
|
48
60
|
* Tập hợp các EntityToken HỢP LỆ tại thời điểm quyết định hiện tại,
|
|
49
61
|
* được suy diễn dựa trên:
|
|
50
62
|
* - $allTokens
|
|
51
|
-
* -
|
|
63
|
+
* - seq (bối cảnh đang xét)
|
|
52
64
|
*
|
|
53
65
|
* Nguyên tắc:
|
|
54
|
-
* - Chỉ xét token có producedBySeq <=
|
|
66
|
+
* - Chỉ xét token có producedBySeq <= seq
|
|
55
67
|
* - Với mỗi uuid, chỉ giữ token mới nhất (last-write-wins theo seq)
|
|
56
68
|
*
|
|
57
69
|
* Ý nghĩa nghiệp vụ:
|
|
@@ -67,10 +79,53 @@ export declare class DomDecisionContextService {
|
|
|
67
79
|
* khi cần suy luận hoặc cho phép người dùng chọn entity.
|
|
68
80
|
*/
|
|
69
81
|
$currentTokens: import("@angular/core").Signal<IEntityToken[]>;
|
|
82
|
+
/**
|
|
83
|
+
* Build và bind lại form theo trạng thái hiện tại của decision.
|
|
84
|
+
*
|
|
85
|
+
* - Không giữ draft field-level
|
|
86
|
+
* - Luôn render từ omega (working store)
|
|
87
|
+
* - Được gọi lại khi descriptor / seq / omega thay đổi
|
|
88
|
+
*
|
|
89
|
+
* @param descriptor Mô tả intent đang được edit
|
|
90
|
+
*/
|
|
70
91
|
buildForm(descriptor: IIntentDescriptor): void;
|
|
71
92
|
buildValidators(schema?: IIntentInputValidatorSchema): ValidatorFn[];
|
|
72
93
|
private bindFormValueChanges;
|
|
73
94
|
intentInputMode(): IntentInputMode;
|
|
95
|
+
buildTemporalContext(facts: Record<string, unknown>): IIntentNarrationContext['temporal'];
|
|
96
|
+
private normalizeUtc;
|
|
97
|
+
private formatLocalDate;
|
|
98
|
+
buildNarrationContext(intent: IOmegaIntent): IIntentNarrationContext;
|
|
99
|
+
/**
|
|
100
|
+
* Xây dựng Resolved Context cho Intent Narration
|
|
101
|
+
*
|
|
102
|
+
* Lớp này làm nhiệm vụ làm giàu (enrich) dữ liệu intent thô
|
|
103
|
+
* bằng các giá trị dễ đọc, phục vụ cho việc diễn giải (narration),
|
|
104
|
+
* nhưng TUYỆT ĐỐI KHÔNG thay đổi hay ghi đè lên facts gốc.
|
|
105
|
+
*
|
|
106
|
+
* Nguyên tắc thiết kế:
|
|
107
|
+
* - facts : sự thật máy móc, bất biến (ID, mã, UTC, enum…)
|
|
108
|
+
* - resolved : diễn giải bổ sung, tùy chọn, thân thiện với con người
|
|
109
|
+
* - grammar : chỉ ghép câu, không tra cứu, không chứa logic nghiệp vụ
|
|
110
|
+
*
|
|
111
|
+
* Trách nhiệm của hàm này:
|
|
112
|
+
* - Diễn giải các tham chiếu chéo (ví dụ: TREE_ID → TREE_NAME)
|
|
113
|
+
* - Chuẩn hóa vai trò thành nhãn dễ đọc (ví dụ: MASTER → "vai trò chính")
|
|
114
|
+
* - Lưu giữ snapshot tên hiển thị tại thời điểm tạo intent
|
|
115
|
+
* (LEFT_/RIGHT_ ORIGINAL_NAME) phục vụ audit và narration
|
|
116
|
+
*
|
|
117
|
+
* Những gì hàm này KHÔNG làm (có chủ ý):
|
|
118
|
+
* - Không gọi API / DB tại runtime
|
|
119
|
+
* - Không thay đổi dữ liệu facts đầu vào
|
|
120
|
+
* - Không xử lý logic ngữ pháp hay ghép câu
|
|
121
|
+
*
|
|
122
|
+
* Đây là lớp "diễn giải ngữ nghĩa" nằm giữa dữ liệu intent thuần
|
|
123
|
+
* và lớp grammar chịu trách nhiệm kể câu chuyện cho con người.
|
|
124
|
+
*/
|
|
125
|
+
buildResolvedContext(facts: Record<string, unknown>): Record<string, string>;
|
|
126
|
+
private resolveTreeName;
|
|
127
|
+
rebuildProjectionFromOmega(omega: IOmegaDecision): IOmegaProjectionVm;
|
|
128
|
+
produceOutputs(seq: number, draft: IIntentDraft): IEntityToken[] | undefined;
|
|
74
129
|
static ɵfac: i0.ɵɵFactoryDeclaration<DomDecisionContextService, never>;
|
|
75
130
|
static ɵprov: i0.ɵɵInjectableDeclaration<DomDecisionContextService>;
|
|
76
131
|
}
|
package/lib/app/libraries/core-dom-decision-editor/dom-oid-factory/dom-oid-factory.component.d.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - KHÔNG nhận token qua @Input().
|
|
16
16
|
*
|
|
17
17
|
* DomOIdFactory chỉ đọc “sự thật ngữ cảnh” từ DomDecisionContextService,
|
|
18
|
-
* nơi tập hợp các token hợp lệ theo
|
|
18
|
+
* nơi tập hợp các token hợp lệ theo seq hiện tại của Decision.
|
|
19
19
|
* Nhờ đó, component này không bao giờ cho phép người dùng
|
|
20
20
|
* “nhắc tới tương lai” hoặc phá vỡ quan hệ nhân quả của Intent Chain.
|
|
21
21
|
*
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { EnumActionCode } from "./action-code.enum";
|
|
2
2
|
import { IEntityToken } from "./entity-token";
|
|
3
3
|
import { IntentInputSnapshot } from "./omega-projection.vm";
|
|
4
|
+
/**
|
|
5
|
+
* Đại diện cho một bước intent trong Omega Decision.
|
|
6
|
+
*
|
|
7
|
+
* - inputSnapshot là trạng thái đã được confirm của bước đó
|
|
8
|
+
* - Có thể bị overwrite nếu user edit lại bước
|
|
9
|
+
*/
|
|
4
10
|
export interface IOmegaIntent {
|
|
5
11
|
readonly seq: number;
|
|
6
12
|
readonly actionCode: EnumActionCode;
|