@memberjunction/ng-core-entity-forms 6.2.0-edge.0 → 6.2.0-edge.2
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/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts +1 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-form-tabs.js +2 -0
- package/dist/lib/custom/AIAgents/agent-form-tabs.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1322 -783
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +694 -252
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/pending-records.d.ts +11 -0
- package/dist/lib/custom/AIPrompts/pending-records.d.ts.map +1 -0
- package/dist/lib/custom/AIPrompts/pending-records.js +21 -0
- package/dist/lib/custom/AIPrompts/pending-records.js.map +1 -0
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +387 -107
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +217 -29
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +734 -285
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +664 -208
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +31 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +52 -16
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +107 -10
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +291 -101
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +429 -109
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +129 -4
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +904 -90
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts +37 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js +399 -0
- package/dist/lib/custom/Rubrics/evaluation-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts +69 -0
- package/dist/lib/custom/Rubrics/record-forms.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js +587 -0
- package/dist/lib/custom/Rubrics/record-forms.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts +67 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js +534 -0
- package/dist/lib/custom/Rubrics/rubric-form.component.js.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts +25 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js +299 -0
- package/dist/lib/custom/Rubrics/rubric-form.panels.js.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts +31 -0
- package/dist/lib/custom/Rubrics/scale-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js +395 -0
- package/dist/lib/custom/Rubrics/scale-form.component.js.map +1 -0
- package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +153 -19
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +434 -217
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +223 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +951 -530
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.js +5 -1
- package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +395 -47
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1719 -1007
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +3 -3
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +140 -15
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +326 -100
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +56 -48
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +60 -0
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +61 -43
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJAIAgentRubric/mjaiagentrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +37 -19
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +78 -52
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +156 -84
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJFeaturePipelineType/mjfeaturepipelinetype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRecordCloneLog/mjrecordclonelog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJRecordCloneLogItem/mjrecordclonelogitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js +135 -0
- package/dist/lib/generated/Entities/MJRubric/mjrubric.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js +87 -0
- package/dist/lib/generated/Entities/MJRubricBand/mjrubricband.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricCategory/mjrubriccategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js +155 -0
- package/dist/lib/generated/Entities/MJRubricCriterion/mjrubriccriterion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJRubricCriterionLevel/mjrubriccriterionlevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js +183 -0
- package/dist/lib/generated/Entities/MJRubricEvaluation/mjrubricevaluation.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js +120 -0
- package/dist/lib/generated/Entities/MJRubricEvaluationScore/mjrubricevaluationscore.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js +107 -0
- package/dist/lib/generated/Entities/MJRubricScale/mjrubricscale.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js +103 -0
- package/dist/lib/generated/Entities/MJRubricScaleLevel/mjrubricscalelevel.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js +171 -0
- package/dist/lib/generated/Entities/MJRubricVersion/mjrubricversion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +24 -16
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +209 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +436 -422
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +44 -2
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +45 -19
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +95 -43
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +20 -16
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +73 -65
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts +116 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.d.ts.map +1 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js +820 -0
- package/dist/lib/panels/record-clone/entity-clone-config-editor.component.js.map +1 -0
- package/dist/lib/shared/components/template-editor.component.d.ts +158 -15
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +389 -127
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +5 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +47 -42
|
@@ -4,17 +4,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { Component } from '@angular/core';
|
|
8
|
-
import { RegisterClass, RegisterClassEx } from '@memberjunction/global';
|
|
9
|
-
import { BaseFormComponent, BaseFormPolicy } from '@memberjunction/ng-base-forms';
|
|
7
|
+
import { Component, ViewChild } from '@angular/core';
|
|
8
|
+
import { RegisterClass, RegisterClassEx, SafeJSONParse, EscapeSQLString, ValidationErrorInfo, ValidationErrorType } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent, BaseFormPolicy, DETAILS_SECTION_KEY } from '@memberjunction/ng-base-forms';
|
|
10
|
+
import { FeaturePipelineBuilderComponent } from '@memberjunction/ng-record-process-studio';
|
|
10
11
|
import { MJRecordProcessFormComponent } from '../../generated/Entities/MJRecordProcess/mjrecordprocess.form.component';
|
|
12
|
+
import { RunView, LogError } from '@memberjunction/core';
|
|
13
|
+
import { validateSpec } from '@memberjunction/feature-pipelines';
|
|
11
14
|
import * as i0 from "@angular/core";
|
|
12
15
|
import * as i1 from "@angular/common";
|
|
13
16
|
import * as i2 from "@memberjunction/ng-base-forms";
|
|
14
17
|
import * as i3 from "@memberjunction/ng-record-process-studio";
|
|
18
|
+
const _forTrack0 = ($index, $item) => $item.Param;
|
|
19
|
+
const _forTrack1 = ($index, $item) => $item.Name;
|
|
15
20
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
16
21
|
i0.ɵɵelementStart(0, "span", 18);
|
|
17
|
-
i0.ɵɵelement(1, "i",
|
|
22
|
+
i0.ɵɵelement(1, "i", 64);
|
|
18
23
|
i0.ɵɵelementStart(2, "span");
|
|
19
24
|
i0.ɵɵtext(3, "Feature Pipeline");
|
|
20
25
|
i0.ɵɵelementEnd()();
|
|
@@ -64,17 +69,17 @@ function RecordProcessFormComponentExtended_Conditional_0_Conditional_48_Templat
|
|
|
64
69
|
} }
|
|
65
70
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_66_Template(rf, ctx) { if (rf & 1) {
|
|
66
71
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
67
|
-
i0.ɵɵelementStart(0, "div", 31)(1, "mj-feature-pipeline-builder",
|
|
72
|
+
i0.ɵɵelementStart(0, "div", 31)(1, "mj-feature-pipeline-builder", 65);
|
|
68
73
|
i0.ɵɵlistener("SpecChange", function RecordProcessFormComponentExtended_Conditional_0_Conditional_66_Template_mj_feature_pipeline_builder_SpecChange_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPipelineSpecChange()); })("ValidChange", function RecordProcessFormComponentExtended_Conditional_0_Conditional_66_Template_mj_feature_pipeline_builder_ValidChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPipelineValidChange($event)); });
|
|
69
74
|
i0.ɵɵelementEnd()();
|
|
70
75
|
} if (rf & 2) {
|
|
71
76
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
72
77
|
i0.ɵɵadvance();
|
|
73
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("EntityID", ctx_r1.record.EntityID);
|
|
78
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("EntityID", ctx_r1.record.EntityID)("Provider", ctx_r1.ProviderToUse);
|
|
74
79
|
} }
|
|
75
80
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_67_Template(rf, ctx) { if (rf & 1) {
|
|
76
81
|
i0.ɵɵelementStart(0, "div", 32);
|
|
77
|
-
i0.ɵɵelement(1, "mj-record-process-editor",
|
|
82
|
+
i0.ɵɵelement(1, "mj-record-process-editor", 66);
|
|
78
83
|
i0.ɵɵelementEnd();
|
|
79
84
|
} if (rf & 2) {
|
|
80
85
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -83,7 +88,7 @@ function RecordProcessFormComponentExtended_Conditional_0_Conditional_67_Templat
|
|
|
83
88
|
} }
|
|
84
89
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_68_Template(rf, ctx) { if (rf & 1) {
|
|
85
90
|
i0.ɵɵelementStart(0, "div", 33)(1, "div", 36);
|
|
86
|
-
i0.ɵɵelement(2, "i",
|
|
91
|
+
i0.ɵɵelement(2, "i", 67);
|
|
87
92
|
i0.ɵɵelementStart(3, "div")(4, "strong");
|
|
88
93
|
i0.ɵɵtext(5);
|
|
89
94
|
i0.ɵɵelementEnd();
|
|
@@ -105,7 +110,7 @@ function RecordProcessFormComponentExtended_Conditional_0_Conditional_68_Templat
|
|
|
105
110
|
} }
|
|
106
111
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_70_Template(rf, ctx) { if (rf & 1) {
|
|
107
112
|
i0.ɵɵelementStart(0, "div", 35);
|
|
108
|
-
i0.ɵɵelement(1, "mj-record-process-history",
|
|
113
|
+
i0.ɵɵelement(1, "mj-record-process-history", 68);
|
|
109
114
|
i0.ɵɵelementEnd();
|
|
110
115
|
} if (rf & 2) {
|
|
111
116
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -114,45 +119,498 @@ function RecordProcessFormComponentExtended_Conditional_0_Conditional_70_Templat
|
|
|
114
119
|
} }
|
|
115
120
|
function RecordProcessFormComponentExtended_Conditional_0_Conditional_71_Template(rf, ctx) { if (rf & 1) {
|
|
116
121
|
i0.ɵɵelementStart(0, "div", 36);
|
|
117
|
-
i0.ɵɵelement(1, "i",
|
|
122
|
+
i0.ɵɵelement(1, "i", 67);
|
|
118
123
|
i0.ɵɵelementStart(2, "span");
|
|
119
124
|
i0.ɵɵtext(3, "Save this record process to view execution history and per-record audit logs.");
|
|
120
125
|
i0.ɵɵelementEnd()();
|
|
121
126
|
} }
|
|
122
|
-
function
|
|
127
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
+
i0.ɵɵelementStart(0, "span", 79);
|
|
129
|
+
i0.ɵɵtext(1);
|
|
130
|
+
i0.ɵɵelementEnd();
|
|
131
|
+
} if (rf & 2) {
|
|
132
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
133
|
+
i0.ɵɵadvance();
|
|
134
|
+
i0.ɵɵtextInterpolate1("ID: ", ctx_r1.record.PromptID.substring(0, 8), "...");
|
|
135
|
+
} }
|
|
136
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
137
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
138
|
+
i0.ɵɵelement(1, "mj-form-field", 96);
|
|
139
|
+
i0.ɵɵelementEnd();
|
|
140
|
+
} if (rf & 2) {
|
|
141
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
142
|
+
i0.ɵɵadvance();
|
|
143
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
144
|
+
} }
|
|
145
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_34_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
+
i0.ɵɵelementStart(0, "div", 97)(1, "span", 98);
|
|
147
|
+
i0.ɵɵtext(2);
|
|
148
|
+
i0.ɵɵelementEnd();
|
|
149
|
+
i0.ɵɵelementStart(3, "span");
|
|
150
|
+
i0.ɵɵelement(4, "i", 99);
|
|
151
|
+
i0.ɵɵelementStart(5, "span");
|
|
152
|
+
i0.ɵɵtext(6, "Column: ");
|
|
153
|
+
i0.ɵɵelementStart(7, "code");
|
|
154
|
+
i0.ɵɵtext(8);
|
|
155
|
+
i0.ɵɵelementEnd()()()();
|
|
156
|
+
} if (rf & 2) {
|
|
157
|
+
const item_r5 = ctx.$implicit;
|
|
158
|
+
i0.ɵɵadvance(2);
|
|
159
|
+
i0.ɵɵtextInterpolate(item_r5.Param);
|
|
160
|
+
i0.ɵɵadvance(6);
|
|
161
|
+
i0.ɵɵtextInterpolate(item_r5.Field);
|
|
162
|
+
} }
|
|
163
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
164
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
165
|
+
i0.ɵɵrepeaterCreate(1, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_34_For_2_Template, 9, 2, "div", 97, _forTrack0);
|
|
166
|
+
i0.ɵɵelementEnd();
|
|
167
|
+
} if (rf & 2) {
|
|
168
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
169
|
+
i0.ɵɵadvance();
|
|
170
|
+
i0.ɵɵrepeater(ctx_r1.ParameterMappings);
|
|
171
|
+
} }
|
|
172
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
173
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
174
|
+
i0.ɵɵtext(1, " No parameter bindings configured. Entire row context will be passed to prompt. ");
|
|
175
|
+
i0.ɵɵelementEnd();
|
|
176
|
+
} }
|
|
177
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵelementStart(0, "span", 79);
|
|
179
|
+
i0.ɵɵelement(1, "i", 106);
|
|
180
|
+
i0.ɵɵtext(2, " Captured");
|
|
181
|
+
i0.ɵɵelementEnd();
|
|
182
|
+
} }
|
|
183
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelementStart(0, "span", 105);
|
|
185
|
+
i0.ɵɵtext(1, "None");
|
|
186
|
+
i0.ɵɵelementEnd();
|
|
187
|
+
} }
|
|
188
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
189
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 100);
|
|
190
|
+
i0.ɵɵelement(3, "i");
|
|
191
|
+
i0.ɵɵelementStart(4, "span");
|
|
192
|
+
i0.ɵɵtext(5);
|
|
193
|
+
i0.ɵɵelementEnd()()();
|
|
194
|
+
i0.ɵɵelementStart(6, "td")(7, "span", 101);
|
|
195
|
+
i0.ɵɵtext(8);
|
|
196
|
+
i0.ɵɵelementEnd()();
|
|
197
|
+
i0.ɵɵelementStart(9, "td")(10, "span", 102);
|
|
198
|
+
i0.ɵɵelement(11, "i", 103);
|
|
199
|
+
i0.ɵɵtext(12);
|
|
200
|
+
i0.ɵɵelementEnd()();
|
|
201
|
+
i0.ɵɵelementStart(13, "td")(14, "div", 104);
|
|
202
|
+
i0.ɵɵelement(15, "i");
|
|
203
|
+
i0.ɵɵelementStart(16, "span");
|
|
204
|
+
i0.ɵɵtext(17);
|
|
205
|
+
i0.ɵɵelementStart(18, "strong");
|
|
206
|
+
i0.ɵɵtext(19);
|
|
207
|
+
i0.ɵɵelementEnd()();
|
|
208
|
+
i0.ɵɵelementStart(20, "span", 105);
|
|
209
|
+
i0.ɵɵtext(21);
|
|
210
|
+
i0.ɵɵelementEnd()()();
|
|
211
|
+
i0.ɵɵelementStart(22, "td");
|
|
212
|
+
i0.ɵɵconditionalCreate(23, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Conditional_23_Template, 3, 0, "span", 79)(24, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Conditional_24_Template, 2, 0, "span", 105);
|
|
213
|
+
i0.ɵɵelementEnd()();
|
|
214
|
+
} if (rf & 2) {
|
|
215
|
+
const out_r6 = ctx.$implicit;
|
|
216
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
217
|
+
i0.ɵɵadvance(3);
|
|
218
|
+
i0.ɵɵclassMap(out_r6.FeatureKind === "numeric" ? "fa-solid fa-chart-line" : "fa-solid fa-tags");
|
|
219
|
+
i0.ɵɵstyleProp("color", out_r6.FeatureKind === "numeric" ? "#f59e0b" : "#8b5cf6");
|
|
220
|
+
i0.ɵɵadvance(2);
|
|
221
|
+
i0.ɵɵtextInterpolate(out_r6.Name);
|
|
222
|
+
i0.ɵɵadvance(2);
|
|
223
|
+
i0.ɵɵclassProp("rpf-type-numeric", out_r6.FeatureKind === "numeric")("rpf-type-categorical", out_r6.FeatureKind === "categorical")("rpf-type-default", out_r6.FeatureKind !== "numeric" && out_r6.FeatureKind !== "categorical");
|
|
224
|
+
i0.ɵɵadvance();
|
|
225
|
+
i0.ɵɵtextInterpolate1(" ", out_r6.FeatureKind, " ");
|
|
226
|
+
i0.ɵɵadvance(2);
|
|
227
|
+
i0.ɵɵproperty("title", "Violation policy: " + out_r6.ViolationPolicy);
|
|
228
|
+
i0.ɵɵadvance(2);
|
|
229
|
+
i0.ɵɵtextInterpolate1(" ", out_r6.ConstraintSummary, " ");
|
|
230
|
+
i0.ɵɵadvance(3);
|
|
231
|
+
i0.ɵɵclassMap(out_r6.TargetFieldExists ? "fa-solid fa-check-circle rpf-binding-valid" : "fa-solid fa-triangle-exclamation rpf-binding-invalid");
|
|
232
|
+
i0.ɵɵadvance(2);
|
|
233
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.TargetEntityName, ".");
|
|
234
|
+
i0.ɵɵadvance(2);
|
|
235
|
+
i0.ɵɵtextInterpolate(out_r6.TargetField);
|
|
236
|
+
i0.ɵɵadvance(2);
|
|
237
|
+
i0.ɵɵtextInterpolate1("(", out_r6.TargetFieldType, ")");
|
|
238
|
+
i0.ɵɵadvance(2);
|
|
239
|
+
i0.ɵɵconditional(out_r6.ReasoningTarget === "Enabled" ? 23 : 24);
|
|
240
|
+
} }
|
|
241
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
+
i0.ɵɵrepeaterCreate(0, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_For_1_Template, 25, 20, "tr", null, _forTrack1);
|
|
243
|
+
} if (rf & 2) {
|
|
244
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
245
|
+
i0.ɵɵrepeater(ctx_r1.FeatureOutputs);
|
|
246
|
+
} }
|
|
247
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_59_Template(rf, ctx) { if (rf & 1) {
|
|
248
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 107);
|
|
249
|
+
i0.ɵɵtext(2, " No output features defined yet. Use the ");
|
|
250
|
+
i0.ɵɵelementStart(3, "em");
|
|
251
|
+
i0.ɵɵtext(4, "Pipeline Configuration");
|
|
252
|
+
i0.ɵɵelementEnd();
|
|
253
|
+
i0.ɵɵtext(5, " builder tab to add output features. ");
|
|
254
|
+
i0.ɵɵelementEnd()();
|
|
255
|
+
} }
|
|
256
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_71_Template(rf, ctx) { if (rf & 1) {
|
|
257
|
+
i0.ɵɵelementStart(0, "div", 94)(1, "pre")(2, "code");
|
|
258
|
+
i0.ɵɵtext(3);
|
|
259
|
+
i0.ɵɵelementEnd()()();
|
|
260
|
+
} if (rf & 2) {
|
|
261
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
262
|
+
i0.ɵɵadvance(3);
|
|
263
|
+
i0.ɵɵtextInterpolate(ctx_r1.FormattedRawJson);
|
|
264
|
+
} }
|
|
265
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
i0.ɵɵelementStart(0, "div", 95);
|
|
267
|
+
i0.ɵɵelement(1, "mj-form-field", 108)(2, "mj-form-field", 109)(3, "mj-form-field", 110);
|
|
268
|
+
i0.ɵɵelementEnd();
|
|
269
|
+
} if (rf & 2) {
|
|
270
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
271
|
+
i0.ɵɵadvance();
|
|
272
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
273
|
+
i0.ɵɵadvance();
|
|
274
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
275
|
+
i0.ɵɵadvance();
|
|
276
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
277
|
+
} }
|
|
278
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Template(rf, ctx) { if (rf & 1) {
|
|
123
279
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
124
|
-
i0.ɵɵelementStart(0, "div")(1, "
|
|
125
|
-
i0.ɵɵ
|
|
280
|
+
i0.ɵɵelementStart(0, "div", 69)(1, "div", 70)(2, "div", 71);
|
|
281
|
+
i0.ɵɵelement(3, "i");
|
|
282
|
+
i0.ɵɵelementStart(4, "span");
|
|
283
|
+
i0.ɵɵtext(5);
|
|
284
|
+
i0.ɵɵelementEnd()();
|
|
285
|
+
i0.ɵɵelementStart(6, "div", 71);
|
|
286
|
+
i0.ɵɵelement(7, "i", 72);
|
|
287
|
+
i0.ɵɵelementStart(8, "span");
|
|
288
|
+
i0.ɵɵtext(9);
|
|
289
|
+
i0.ɵɵelementEnd()();
|
|
290
|
+
i0.ɵɵelementStart(10, "div", 71);
|
|
291
|
+
i0.ɵɵelement(11, "i", 16);
|
|
292
|
+
i0.ɵɵelementStart(12, "span");
|
|
293
|
+
i0.ɵɵtext(13);
|
|
294
|
+
i0.ɵɵelementEnd()()()();
|
|
295
|
+
i0.ɵɵelementStart(14, "div", 73)(15, "div", 74)(16, "div", 75);
|
|
296
|
+
i0.ɵɵtext(17, "Bound AI Prompt");
|
|
297
|
+
i0.ɵɵelementEnd();
|
|
298
|
+
i0.ɵɵelementStart(18, "div", 76);
|
|
299
|
+
i0.ɵɵelement(19, "i", 77);
|
|
300
|
+
i0.ɵɵelementStart(20, "span");
|
|
301
|
+
i0.ɵɵtext(21);
|
|
302
|
+
i0.ɵɵelementEnd()();
|
|
303
|
+
i0.ɵɵelementStart(22, "div", 78);
|
|
304
|
+
i0.ɵɵconditionalCreate(23, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_23_Template, 2, 1, "span", 79);
|
|
305
|
+
i0.ɵɵelementStart(24, "span", 80);
|
|
306
|
+
i0.ɵɵelement(25, "i", 64);
|
|
307
|
+
i0.ɵɵtext(26, " Feature Infer Engine");
|
|
308
|
+
i0.ɵɵelementEnd();
|
|
309
|
+
i0.ɵɵelementStart(27, "span", 80);
|
|
310
|
+
i0.ɵɵelement(28, "i", 29);
|
|
311
|
+
i0.ɵɵtext(29, " LLM Output Parser");
|
|
312
|
+
i0.ɵɵelementEnd()();
|
|
313
|
+
i0.ɵɵconditionalCreate(30, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_30_Template, 2, 4, "div", 81);
|
|
314
|
+
i0.ɵɵelementEnd();
|
|
315
|
+
i0.ɵɵelementStart(31, "div", 74)(32, "div", 75);
|
|
316
|
+
i0.ɵɵtext(33, "Prompt Parameter Resolution");
|
|
317
|
+
i0.ɵɵelementEnd();
|
|
318
|
+
i0.ɵɵconditionalCreate(34, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_34_Template, 3, 0, "div", 82)(35, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_35_Template, 2, 0, "div", 83);
|
|
319
|
+
i0.ɵɵelementEnd()();
|
|
320
|
+
i0.ɵɵelementStart(36, "div", 84)(37, "div", 85);
|
|
321
|
+
i0.ɵɵelement(38, "i", 86);
|
|
322
|
+
i0.ɵɵtext(39, " Context Retrieval Query ");
|
|
323
|
+
i0.ɵɵelementEnd();
|
|
324
|
+
i0.ɵɵelementStart(40, "div", 87)(41, "code");
|
|
325
|
+
i0.ɵɵtext(42);
|
|
326
|
+
i0.ɵɵelementEnd()()();
|
|
327
|
+
i0.ɵɵelementStart(43, "div", 88)(44, "table", 89)(45, "thead")(46, "tr")(47, "th");
|
|
328
|
+
i0.ɵɵtext(48, "Feature Name");
|
|
329
|
+
i0.ɵɵelementEnd();
|
|
330
|
+
i0.ɵɵelementStart(49, "th");
|
|
331
|
+
i0.ɵɵtext(50, "Kind / Type");
|
|
332
|
+
i0.ɵɵelementEnd();
|
|
333
|
+
i0.ɵɵelementStart(51, "th");
|
|
334
|
+
i0.ɵɵtext(52, "Validation Constraints");
|
|
335
|
+
i0.ɵɵelementEnd();
|
|
336
|
+
i0.ɵɵelementStart(53, "th");
|
|
337
|
+
i0.ɵɵtext(54, "Target Field Binding");
|
|
338
|
+
i0.ɵɵelementEnd();
|
|
339
|
+
i0.ɵɵelementStart(55, "th");
|
|
340
|
+
i0.ɵɵtext(56, "Reasoning");
|
|
341
|
+
i0.ɵɵelementEnd()()();
|
|
342
|
+
i0.ɵɵelementStart(57, "tbody");
|
|
343
|
+
i0.ɵɵconditionalCreate(58, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_58_Template, 2, 0)(59, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_59_Template, 6, 0, "tr");
|
|
344
|
+
i0.ɵɵelementEnd()()();
|
|
345
|
+
i0.ɵɵelementStart(60, "div", 90)(61, "div", 91);
|
|
346
|
+
i0.ɵɵlistener("click", function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Template_div_click_61_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.ToggleRawJson()); });
|
|
347
|
+
i0.ɵɵelementStart(62, "div", 92);
|
|
348
|
+
i0.ɵɵelement(63, "i")(64, "i", 86);
|
|
349
|
+
i0.ɵɵelementStart(65, "span");
|
|
350
|
+
i0.ɵɵtext(66, "Power User Escape Hatch: View Raw Pipeline Configuration JSON");
|
|
351
|
+
i0.ɵɵelementEnd()();
|
|
352
|
+
i0.ɵɵelementStart(67, "button", 93);
|
|
353
|
+
i0.ɵɵlistener("click", function RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Template_button_click_67_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.CopyRawJson()); });
|
|
354
|
+
i0.ɵɵelement(68, "i");
|
|
355
|
+
i0.ɵɵelementStart(69, "span");
|
|
356
|
+
i0.ɵɵtext(70);
|
|
357
|
+
i0.ɵɵelementEnd()()();
|
|
358
|
+
i0.ɵɵconditionalCreate(71, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_71_Template, 4, 1, "div", 94);
|
|
359
|
+
i0.ɵɵelementEnd();
|
|
360
|
+
i0.ɵɵconditionalCreate(72, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Conditional_72_Template, 4, 12, "div", 95);
|
|
361
|
+
} if (rf & 2) {
|
|
362
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
363
|
+
i0.ɵɵclassProp("rpf-audit-bar-warning", !ctx_r1.IsSpecValid);
|
|
364
|
+
i0.ɵɵadvance(2);
|
|
365
|
+
i0.ɵɵclassProp("rpf-audit-chip-valid", ctx_r1.IsSpecValid)("rpf-audit-chip-warning", !ctx_r1.IsSpecValid);
|
|
366
|
+
i0.ɵɵadvance();
|
|
367
|
+
i0.ɵɵclassMap(ctx_r1.IsSpecValid ? "fa-solid fa-shield-check" : "fa-solid fa-triangle-exclamation");
|
|
368
|
+
i0.ɵɵadvance(2);
|
|
369
|
+
i0.ɵɵtextInterpolate(ctx_r1.IsSpecValid ? "Configuration Valid" : "Configuration Issues Found");
|
|
370
|
+
i0.ɵɵadvance(4);
|
|
371
|
+
i0.ɵɵtextInterpolate2("", ctx_r1.BoundFeaturesCount, " of ", ctx_r1.TotalFeaturesCount, " Features Bound to Target");
|
|
372
|
+
i0.ɵɵadvance(4);
|
|
373
|
+
i0.ɵɵtextInterpolate1("Context: ", ctx_r1.ContextModeText);
|
|
374
|
+
i0.ɵɵadvance(8);
|
|
375
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.PromptID ? "Prompt Configured" : "No Prompt Selected");
|
|
376
|
+
i0.ɵɵadvance(2);
|
|
377
|
+
i0.ɵɵconditional(ctx_r1.record.PromptID ? 23 : -1);
|
|
378
|
+
i0.ɵɵadvance(7);
|
|
379
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 30 : -1);
|
|
380
|
+
i0.ɵɵadvance(4);
|
|
381
|
+
i0.ɵɵconditional(ctx_r1.ParameterMappings.length > 0 ? 34 : 35);
|
|
382
|
+
i0.ɵɵadvance(8);
|
|
383
|
+
i0.ɵɵtextInterpolate(ctx_r1.ContextQueryDisplay);
|
|
384
|
+
i0.ɵɵadvance(16);
|
|
385
|
+
i0.ɵɵconditional(ctx_r1.FeatureOutputs.length > 0 ? 58 : 59);
|
|
386
|
+
i0.ɵɵadvance(5);
|
|
387
|
+
i0.ɵɵclassMap(ctx_r1.RawJsonExpanded ? "fa-solid fa-chevron-down" : "fa-solid fa-chevron-right");
|
|
388
|
+
i0.ɵɵadvance(5);
|
|
389
|
+
i0.ɵɵclassMap(ctx_r1.RawJsonCopied ? "fa-solid fa-check" : "fa-regular fa-copy");
|
|
390
|
+
i0.ɵɵadvance(2);
|
|
391
|
+
i0.ɵɵtextInterpolate(ctx_r1.RawJsonCopied ? "Copied!" : "Copy JSON");
|
|
392
|
+
i0.ɵɵadvance();
|
|
393
|
+
i0.ɵɵconditional(ctx_r1.RawJsonExpanded ? 71 : -1);
|
|
394
|
+
i0.ɵɵadvance();
|
|
395
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 72 : -1);
|
|
396
|
+
} }
|
|
397
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_80_Template(rf, ctx) { if (rf & 1) {
|
|
398
|
+
i0.ɵɵelement(0, "mj-form-field", 108)(1, "mj-form-field", 111)(2, "mj-form-field", 112)(3, "mj-form-field", 96)(4, "mj-form-field", 113)(5, "mj-form-field", 110)(6, "mj-form-field", 109);
|
|
399
|
+
} if (rf & 2) {
|
|
400
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
401
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
402
|
+
i0.ɵɵadvance();
|
|
403
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
404
|
+
i0.ɵɵadvance();
|
|
405
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
406
|
+
i0.ɵɵadvance();
|
|
407
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
408
|
+
i0.ɵɵadvance();
|
|
409
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
410
|
+
i0.ɵɵadvance();
|
|
411
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
412
|
+
i0.ɵɵadvance();
|
|
413
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
414
|
+
} }
|
|
415
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
416
|
+
i0.ɵɵelementStart(0, "span", 117);
|
|
417
|
+
i0.ɵɵelement(1, "i", 118);
|
|
418
|
+
i0.ɵɵelementStart(2, "span");
|
|
419
|
+
i0.ɵɵtext(3, "Filter Active");
|
|
420
|
+
i0.ɵɵelementEnd()();
|
|
421
|
+
} }
|
|
422
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
423
|
+
i0.ɵɵelementStart(0, "div", 84)(1, "div", 85);
|
|
424
|
+
i0.ɵɵelement(2, "i", 16);
|
|
425
|
+
i0.ɵɵtext(3, " SQL Scope Filter (WHERE clause) ");
|
|
426
|
+
i0.ɵɵelementEnd();
|
|
427
|
+
i0.ɵɵelementStart(4, "div", 87)(5, "code");
|
|
428
|
+
i0.ɵɵtext(6);
|
|
429
|
+
i0.ɵɵelementEnd()()();
|
|
430
|
+
} if (rf & 2) {
|
|
431
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
432
|
+
i0.ɵɵadvance(6);
|
|
433
|
+
i0.ɵɵtextInterpolate(ctx_r1.FormattedScopeFilter);
|
|
434
|
+
} }
|
|
435
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
i0.ɵɵelementStart(0, "div", 36);
|
|
437
|
+
i0.ɵɵelement(1, "i", 67);
|
|
438
|
+
i0.ɵɵelementStart(2, "span");
|
|
439
|
+
i0.ɵɵtext(3, "No scope filter applied. All records in ");
|
|
440
|
+
i0.ɵɵelementStart(4, "strong");
|
|
441
|
+
i0.ɵɵtext(5);
|
|
442
|
+
i0.ɵɵelementEnd();
|
|
443
|
+
i0.ɵɵtext(6, " will be evaluated.");
|
|
444
|
+
i0.ɵɵelementEnd()();
|
|
445
|
+
} if (rf & 2) {
|
|
446
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
447
|
+
i0.ɵɵadvance(5);
|
|
448
|
+
i0.ɵɵtextInterpolate(ctx_r1.TargetEntityName);
|
|
449
|
+
} }
|
|
450
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
451
|
+
i0.ɵɵelementStart(0, "div", 95);
|
|
452
|
+
i0.ɵɵelement(1, "mj-form-field", 119)(2, "mj-form-field", 120);
|
|
453
|
+
i0.ɵɵelementEnd();
|
|
454
|
+
} if (rf & 2) {
|
|
455
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
456
|
+
i0.ɵɵadvance();
|
|
457
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
458
|
+
i0.ɵɵadvance();
|
|
459
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
460
|
+
} }
|
|
461
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Template(rf, ctx) { if (rf & 1) {
|
|
462
|
+
i0.ɵɵelementStart(0, "div", 45)(1, "div", 114)(2, "div", 115)(3, "span", 116);
|
|
463
|
+
i0.ɵɵelement(4, "i", 22);
|
|
464
|
+
i0.ɵɵelementStart(5, "span");
|
|
465
|
+
i0.ɵɵtext(6, "Scope Type: ");
|
|
466
|
+
i0.ɵɵelementStart(7, "strong");
|
|
467
|
+
i0.ɵɵtext(8);
|
|
468
|
+
i0.ɵɵelementEnd()()();
|
|
469
|
+
i0.ɵɵconditionalCreate(9, RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_9_Template, 4, 0, "span", 117);
|
|
470
|
+
i0.ɵɵelementEnd()();
|
|
471
|
+
i0.ɵɵconditionalCreate(10, RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_10_Template, 7, 1, "div", 84)(11, RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_11_Template, 7, 1, "div", 36);
|
|
472
|
+
i0.ɵɵconditionalCreate(12, RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Conditional_12_Template, 3, 8, "div", 95);
|
|
473
|
+
i0.ɵɵelementEnd();
|
|
474
|
+
} if (rf & 2) {
|
|
475
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
476
|
+
i0.ɵɵadvance(8);
|
|
477
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.ScopeType || "Filter");
|
|
478
|
+
i0.ɵɵadvance();
|
|
479
|
+
i0.ɵɵconditional(ctx_r1.record.ScopeFilter ? 9 : -1);
|
|
480
|
+
i0.ɵɵadvance();
|
|
481
|
+
i0.ɵɵconditional(ctx_r1.FormattedScopeFilter ? 10 : 11);
|
|
482
|
+
i0.ɵɵadvance(2);
|
|
483
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 12 : -1);
|
|
484
|
+
} }
|
|
485
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_83_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
+
i0.ɵɵelement(0, "mj-form-field", 119)(1, "mj-form-field", 121)(2, "mj-form-field", 122)(3, "mj-form-field", 120);
|
|
487
|
+
} if (rf & 2) {
|
|
488
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
489
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
490
|
+
i0.ɵɵadvance();
|
|
491
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
492
|
+
i0.ɵɵadvance();
|
|
493
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
494
|
+
i0.ɵɵadvance();
|
|
495
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
496
|
+
} }
|
|
497
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_93_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
498
|
+
i0.ɵɵelementStart(0, "div", 95);
|
|
499
|
+
i0.ɵɵelement(1, "mj-form-field", 128)(2, "mj-form-field", 129)(3, "mj-form-field", 130)(4, "mj-form-field", 131);
|
|
500
|
+
i0.ɵɵelementEnd();
|
|
501
|
+
} if (rf & 2) {
|
|
502
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
503
|
+
i0.ɵɵadvance();
|
|
504
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
505
|
+
i0.ɵɵadvance();
|
|
506
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
507
|
+
i0.ɵɵadvance();
|
|
508
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
509
|
+
i0.ɵɵadvance();
|
|
510
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
511
|
+
} }
|
|
512
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_93_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
i0.ɵɵelementStart(0, "div", 123)(1, "div", 124)(2, "div", 125);
|
|
514
|
+
i0.ɵɵtext(3, "Delta Watermark");
|
|
515
|
+
i0.ɵɵelementEnd();
|
|
516
|
+
i0.ɵɵelementStart(4, "div", 126);
|
|
517
|
+
i0.ɵɵtext(5);
|
|
518
|
+
i0.ɵɵelementEnd();
|
|
519
|
+
i0.ɵɵelementStart(6, "div", 127);
|
|
520
|
+
i0.ɵɵtext(7, "Evaluates row state changes");
|
|
521
|
+
i0.ɵɵelementEnd()();
|
|
522
|
+
i0.ɵɵelementStart(8, "div", 124)(9, "div", 125);
|
|
523
|
+
i0.ɵɵtext(10, "Batch Processing");
|
|
524
|
+
i0.ɵɵelementEnd();
|
|
525
|
+
i0.ɵɵelementStart(11, "div", 126);
|
|
526
|
+
i0.ɵɵtext(12);
|
|
527
|
+
i0.ɵɵelementEnd();
|
|
528
|
+
i0.ɵɵelementStart(13, "div", 127);
|
|
529
|
+
i0.ɵɵtext(14, "Per inference chunk");
|
|
530
|
+
i0.ɵɵelementEnd()();
|
|
531
|
+
i0.ɵɵelementStart(15, "div", 124)(16, "div", 125);
|
|
532
|
+
i0.ɵɵtext(17, "Concurrency");
|
|
533
|
+
i0.ɵɵelementEnd();
|
|
534
|
+
i0.ɵɵelementStart(18, "div", 126);
|
|
535
|
+
i0.ɵɵtext(19);
|
|
536
|
+
i0.ɵɵelementEnd();
|
|
537
|
+
i0.ɵɵelementStart(20, "div", 127);
|
|
538
|
+
i0.ɵɵtext(21, "Concurrent worker threads");
|
|
539
|
+
i0.ɵɵelementEnd()();
|
|
540
|
+
i0.ɵɵelementStart(22, "div", 124)(23, "div", 125);
|
|
541
|
+
i0.ɵɵtext(24, "Skip Unchanged");
|
|
542
|
+
i0.ɵɵelementEnd();
|
|
543
|
+
i0.ɵɵelementStart(25, "div", 126);
|
|
544
|
+
i0.ɵɵelement(26, "i");
|
|
545
|
+
i0.ɵɵtext(27);
|
|
546
|
+
i0.ɵɵelementEnd();
|
|
547
|
+
i0.ɵɵelementStart(28, "div", 127);
|
|
548
|
+
i0.ɵɵtext(29, "Skips re-evaluating unchanged rows");
|
|
549
|
+
i0.ɵɵelementEnd()()();
|
|
550
|
+
i0.ɵɵconditionalCreate(30, RecordProcessFormComponentExtended_Conditional_0_Conditional_93_Conditional_30_Template, 5, 16, "div", 95);
|
|
551
|
+
} if (rf & 2) {
|
|
552
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
553
|
+
i0.ɵɵadvance(5);
|
|
554
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.WatermarkStrategy || "Checksum");
|
|
555
|
+
i0.ɵɵadvance(7);
|
|
556
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.record.BatchSize || 100, " records");
|
|
557
|
+
i0.ɵɵadvance(7);
|
|
558
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.record.MaxConcurrency || 1, " Parallel");
|
|
559
|
+
i0.ɵɵadvance(6);
|
|
560
|
+
i0.ɵɵclassProp("rpf-text-success", ctx_r1.record.SkipUnchanged);
|
|
561
|
+
i0.ɵɵadvance();
|
|
562
|
+
i0.ɵɵclassMap(ctx_r1.record.SkipUnchanged ? "fa-solid fa-check" : "fa-solid fa-minus");
|
|
563
|
+
i0.ɵɵadvance();
|
|
564
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.record.SkipUnchanged ? "Enabled" : "Disabled", " ");
|
|
565
|
+
i0.ɵɵadvance(3);
|
|
566
|
+
i0.ɵɵconditional(ctx_r1.EditMode ? 30 : -1);
|
|
567
|
+
} }
|
|
568
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_94_Template(rf, ctx) { if (rf & 1) {
|
|
569
|
+
i0.ɵɵelement(0, "mj-form-field", 128)(1, "mj-form-field", 129)(2, "mj-form-field", 130)(3, "mj-form-field", 131);
|
|
570
|
+
} if (rf & 2) {
|
|
571
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
572
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
573
|
+
i0.ɵɵadvance();
|
|
574
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
575
|
+
i0.ɵɵadvance();
|
|
576
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
577
|
+
i0.ɵɵadvance();
|
|
578
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
579
|
+
} }
|
|
580
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_100_Template(rf, ctx) { if (rf & 1) {
|
|
581
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
582
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 132);
|
|
583
|
+
i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Conditional_100_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function RecordProcessFormComponentExtended_Conditional_0_Conditional_100_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJRecordProcessWatermarks", $event.totalRowCount)); });
|
|
126
584
|
i0.ɵɵelementEnd()();
|
|
127
585
|
} if (rf & 2) {
|
|
128
586
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
129
587
|
i0.ɵɵadvance();
|
|
130
588
|
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Record Process Watermarks", "RecordProcessID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: Record Process Watermarks", "RecordProcessID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJRecordProcessWatermarks"))("ShowToolbar", true);
|
|
131
589
|
} }
|
|
132
|
-
function
|
|
133
|
-
const
|
|
134
|
-
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid",
|
|
135
|
-
i0.ɵɵlistener("Navigate", function
|
|
590
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_102_Template(rf, ctx) { if (rf & 1) {
|
|
591
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
592
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 132);
|
|
593
|
+
i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Conditional_102_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function RecordProcessFormComponentExtended_Conditional_0_Conditional_102_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJMLModelScoringBindings", $event.totalRowCount)); });
|
|
136
594
|
i0.ɵɵelementEnd()();
|
|
137
595
|
} if (rf & 2) {
|
|
138
596
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
139
597
|
i0.ɵɵadvance();
|
|
140
598
|
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: ML Model Scoring Bindings", "RecordProcessID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: ML Model Scoring Bindings", "RecordProcessID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJMLModelScoringBindings"))("ShowToolbar", true);
|
|
141
599
|
} }
|
|
142
|
-
function
|
|
143
|
-
const
|
|
144
|
-
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid",
|
|
145
|
-
i0.ɵɵlistener("Navigate", function
|
|
600
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_104_Template(rf, ctx) { if (rf & 1) {
|
|
601
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
602
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 132);
|
|
603
|
+
i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Conditional_104_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function RecordProcessFormComponentExtended_Conditional_0_Conditional_104_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJFeatureValues", $event.totalRowCount)); });
|
|
146
604
|
i0.ɵɵelementEnd()();
|
|
147
605
|
} if (rf & 2) {
|
|
148
606
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
149
607
|
i0.ɵɵadvance();
|
|
150
608
|
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: Feature Values", "RecordProcessID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: Feature Values", "RecordProcessID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJFeatureValues"))("ShowToolbar", true);
|
|
151
609
|
} }
|
|
152
|
-
function
|
|
153
|
-
const
|
|
154
|
-
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid",
|
|
155
|
-
i0.ɵɵlistener("Navigate", function
|
|
610
|
+
function RecordProcessFormComponentExtended_Conditional_0_Conditional_106_Template(rf, ctx) { if (rf & 1) {
|
|
611
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
612
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 132);
|
|
613
|
+
i0.ɵɵlistener("Navigate", function RecordProcessFormComponentExtended_Conditional_0_Conditional_106_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function RecordProcessFormComponentExtended_Conditional_0_Conditional_106_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJFeatureValueCaches", $event.totalRowCount)); });
|
|
156
614
|
i0.ɵɵelementEnd()();
|
|
157
615
|
} if (rf & 2) {
|
|
158
616
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -230,7 +688,7 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
230
688
|
i0.ɵɵtext(64);
|
|
231
689
|
i0.ɵɵelementEnd()()()()();
|
|
232
690
|
i0.ɵɵelementStart(65, "mj-collapsible-panel", 30);
|
|
233
|
-
i0.ɵɵconditionalCreate(66, RecordProcessFormComponentExtended_Conditional_0_Conditional_66_Template, 2,
|
|
691
|
+
i0.ɵɵconditionalCreate(66, RecordProcessFormComponentExtended_Conditional_0_Conditional_66_Template, 2, 3, "div", 31)(67, RecordProcessFormComponentExtended_Conditional_0_Conditional_67_Template, 2, 3, "div", 32)(68, RecordProcessFormComponentExtended_Conditional_0_Conditional_68_Template, 14, 1, "div", 33);
|
|
234
692
|
i0.ɵɵelementEnd();
|
|
235
693
|
i0.ɵɵelementStart(69, "mj-collapsible-panel", 34);
|
|
236
694
|
i0.ɵɵconditionalCreate(70, RecordProcessFormComponentExtended_Conditional_0_Conditional_70_Template, 2, 1, "div", 35)(71, RecordProcessFormComponentExtended_Conditional_0_Conditional_71_Template, 4, 0, "div", 36);
|
|
@@ -239,34 +697,34 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
239
697
|
i0.ɵɵelement(73, "mj-form-field", 38)(74, "mj-form-field", 39)(75, "mj-form-field", 40)(76, "mj-form-field", 41)(77, "mj-form-field", 42);
|
|
240
698
|
i0.ɵɵelementEnd();
|
|
241
699
|
i0.ɵɵelementStart(78, "mj-collapsible-panel", 43);
|
|
242
|
-
i0.ɵɵ
|
|
700
|
+
i0.ɵɵconditionalCreate(79, RecordProcessFormComponentExtended_Conditional_0_Conditional_79_Template, 73, 25)(80, RecordProcessFormComponentExtended_Conditional_0_Conditional_80_Template, 7, 28);
|
|
243
701
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(
|
|
245
|
-
i0.ɵɵ
|
|
702
|
+
i0.ɵɵelementStart(81, "mj-collapsible-panel", 44);
|
|
703
|
+
i0.ɵɵconditionalCreate(82, RecordProcessFormComponentExtended_Conditional_0_Conditional_82_Template, 13, 4, "div", 45)(83, RecordProcessFormComponentExtended_Conditional_0_Conditional_83_Template, 4, 16);
|
|
246
704
|
i0.ɵɵelementEnd();
|
|
247
|
-
i0.ɵɵelementStart(
|
|
248
|
-
i0.ɵɵelement(
|
|
705
|
+
i0.ɵɵelementStart(84, "mj-collapsible-panel", 46);
|
|
706
|
+
i0.ɵɵelement(85, "mj-form-field", 47)(86, "mj-form-field", 48)(87, "mj-form-field", 49)(88, "mj-form-field", 50)(89, "mj-form-field", 51)(90, "mj-form-field", 52)(91, "mj-form-field", 53);
|
|
249
707
|
i0.ɵɵelementEnd();
|
|
250
|
-
i0.ɵɵelementStart(
|
|
251
|
-
i0.ɵɵ
|
|
708
|
+
i0.ɵɵelementStart(92, "mj-collapsible-panel", 54);
|
|
709
|
+
i0.ɵɵconditionalCreate(93, RecordProcessFormComponentExtended_Conditional_0_Conditional_93_Template, 31, 9)(94, RecordProcessFormComponentExtended_Conditional_0_Conditional_94_Template, 4, 16);
|
|
252
710
|
i0.ɵɵelementEnd();
|
|
253
|
-
i0.ɵɵelementStart(
|
|
254
|
-
i0.ɵɵelement(
|
|
711
|
+
i0.ɵɵelementStart(95, "mj-collapsible-panel", 55);
|
|
712
|
+
i0.ɵɵelement(96, "mj-form-field", 56)(97, "mj-form-field", 57);
|
|
255
713
|
i0.ɵɵelementEnd();
|
|
256
|
-
i0.ɵɵelement(
|
|
257
|
-
i0.ɵɵelementStart(
|
|
258
|
-
i0.ɵɵconditionalCreate(
|
|
714
|
+
i0.ɵɵelement(98, "mj-form-panel-slot", 58);
|
|
715
|
+
i0.ɵɵelementStart(99, "mj-collapsible-panel", 59);
|
|
716
|
+
i0.ɵɵconditionalCreate(100, RecordProcessFormComponentExtended_Conditional_0_Conditional_100_Template, 2, 4, "div");
|
|
259
717
|
i0.ɵɵelementEnd();
|
|
260
|
-
i0.ɵɵelementStart(
|
|
261
|
-
i0.ɵɵconditionalCreate(
|
|
718
|
+
i0.ɵɵelementStart(101, "mj-collapsible-panel", 60);
|
|
719
|
+
i0.ɵɵconditionalCreate(102, RecordProcessFormComponentExtended_Conditional_0_Conditional_102_Template, 2, 4, "div");
|
|
262
720
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵelementStart(
|
|
264
|
-
i0.ɵɵconditionalCreate(
|
|
721
|
+
i0.ɵɵelementStart(103, "mj-collapsible-panel", 61);
|
|
722
|
+
i0.ɵɵconditionalCreate(104, RecordProcessFormComponentExtended_Conditional_0_Conditional_104_Template, 2, 4, "div");
|
|
265
723
|
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵelementStart(
|
|
267
|
-
i0.ɵɵconditionalCreate(
|
|
724
|
+
i0.ɵɵelementStart(105, "mj-collapsible-panel", 62);
|
|
725
|
+
i0.ɵɵconditionalCreate(106, RecordProcessFormComponentExtended_Conditional_0_Conditional_106_Template, 2, 4, "div");
|
|
268
726
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelement(
|
|
727
|
+
i0.ɵɵelement(107, "mj-form-panel-slot", 63);
|
|
270
728
|
i0.ɵɵelementEnd();
|
|
271
729
|
} if (rf & 2) {
|
|
272
730
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -334,30 +792,12 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
334
792
|
i0.ɵɵadvance();
|
|
335
793
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
|
|
336
794
|
i0.ɵɵadvance();
|
|
337
|
-
i0.ɵɵ
|
|
338
|
-
i0.ɵɵadvance();
|
|
339
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
340
|
-
i0.ɵɵadvance();
|
|
341
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
342
|
-
i0.ɵɵadvance();
|
|
343
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
344
|
-
i0.ɵɵadvance();
|
|
345
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
346
|
-
i0.ɵɵadvance();
|
|
347
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
348
|
-
i0.ɵɵadvance();
|
|
349
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
350
|
-
i0.ɵɵadvance();
|
|
795
|
+
i0.ɵɵconditional(ctx_r1.record.WorkType === "Infer" ? 79 : 80);
|
|
796
|
+
i0.ɵɵadvance(2);
|
|
351
797
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
352
798
|
i0.ɵɵadvance();
|
|
353
|
-
i0.ɵɵ
|
|
354
|
-
i0.ɵɵadvance();
|
|
355
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
356
|
-
i0.ɵɵadvance();
|
|
357
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
358
|
-
i0.ɵɵadvance();
|
|
359
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
360
|
-
i0.ɵɵadvance();
|
|
799
|
+
i0.ɵɵconditional(ctx_r1.record.WorkType === "Infer" ? 82 : 83);
|
|
800
|
+
i0.ɵɵadvance(2);
|
|
361
801
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
362
802
|
i0.ɵɵadvance();
|
|
363
803
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
@@ -376,14 +816,8 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
376
816
|
i0.ɵɵadvance();
|
|
377
817
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
378
818
|
i0.ɵɵadvance();
|
|
379
|
-
i0.ɵɵ
|
|
380
|
-
i0.ɵɵadvance();
|
|
381
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
382
|
-
i0.ɵɵadvance();
|
|
383
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
384
|
-
i0.ɵɵadvance();
|
|
385
|
-
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
386
|
-
i0.ɵɵadvance();
|
|
819
|
+
i0.ɵɵconditional(ctx_r1.record.WorkType === "Infer" ? 93 : 94);
|
|
820
|
+
i0.ɵɵadvance(2);
|
|
387
821
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", false);
|
|
388
822
|
i0.ɵɵadvance();
|
|
389
823
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
@@ -394,22 +828,205 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
394
828
|
i0.ɵɵadvance();
|
|
395
829
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJRecordProcessWatermarks"))("DefaultExpanded", false);
|
|
396
830
|
i0.ɵɵadvance();
|
|
397
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
831
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 100 : -1);
|
|
398
832
|
i0.ɵɵadvance();
|
|
399
833
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJMLModelScoringBindings"))("DefaultExpanded", false);
|
|
400
834
|
i0.ɵɵadvance();
|
|
401
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
835
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 102 : -1);
|
|
402
836
|
i0.ɵɵadvance();
|
|
403
837
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJFeatureValues"))("DefaultExpanded", false);
|
|
404
838
|
i0.ɵɵadvance();
|
|
405
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
839
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 104 : -1);
|
|
406
840
|
i0.ɵɵadvance();
|
|
407
841
|
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJFeatureValueCaches"))("DefaultExpanded", false);
|
|
408
842
|
i0.ɵɵadvance();
|
|
409
|
-
i0.ɵɵconditional(ctx_r1.record.IsSaved ?
|
|
843
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 106 : -1);
|
|
410
844
|
i0.ɵɵadvance();
|
|
411
845
|
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
412
846
|
} }
|
|
847
|
+
/**
|
|
848
|
+
* Pure helper function to format raw JSON.
|
|
849
|
+
*/
|
|
850
|
+
export function FormatRawPipelineJson(configuration) {
|
|
851
|
+
if (!configuration)
|
|
852
|
+
return '';
|
|
853
|
+
const parsed = SafeJSONParse(configuration);
|
|
854
|
+
return parsed ? JSON.stringify(parsed, null, 2) : configuration;
|
|
855
|
+
}
|
|
856
|
+
/** @deprecated Use {@link FormatRawPipelineJson}. */
|
|
857
|
+
export function formatRawPipelineJson(configuration) {
|
|
858
|
+
return FormatRawPipelineJson(configuration);
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* Pure helper function to parse DataFeatureSpec safely.
|
|
862
|
+
*/
|
|
863
|
+
export function ParsePipelineSpec(configuration) {
|
|
864
|
+
if (!configuration)
|
|
865
|
+
return null;
|
|
866
|
+
return SafeJSONParse(configuration);
|
|
867
|
+
}
|
|
868
|
+
/** @deprecated Use {@link ParsePipelineSpec}. */
|
|
869
|
+
export function parsePipelineSpec(configuration) {
|
|
870
|
+
return ParsePipelineSpec(configuration);
|
|
871
|
+
}
|
|
872
|
+
/**
|
|
873
|
+
* Pure helper function to validate pipeline spec against entity stub.
|
|
874
|
+
*/
|
|
875
|
+
export function ValidatePipelineSpec(spec, entityStub) {
|
|
876
|
+
if (!spec)
|
|
877
|
+
return [];
|
|
878
|
+
return validateSpec(spec, entityStub);
|
|
879
|
+
}
|
|
880
|
+
/** @deprecated Use {@link ValidatePipelineSpec}. */
|
|
881
|
+
export function validatePipelineSpec(spec, entityStub) {
|
|
882
|
+
return ValidatePipelineSpec(spec, entityStub);
|
|
883
|
+
}
|
|
884
|
+
/**
|
|
885
|
+
* Pure helper to build feature output view-models from spec or output mapping.
|
|
886
|
+
*/
|
|
887
|
+
export function BuildFeatureOutputViewModels(spec, entityInfo, outputMapping) {
|
|
888
|
+
const outputs = [];
|
|
889
|
+
if (spec?.Outputs && spec.Outputs.length > 0) {
|
|
890
|
+
for (const out of spec.Outputs) {
|
|
891
|
+
let targetFieldName = '';
|
|
892
|
+
const targetMode = out.Target?.Mode;
|
|
893
|
+
if (out.Target?.Mode === 'field') {
|
|
894
|
+
targetFieldName = out.Target.EntityFieldName;
|
|
895
|
+
}
|
|
896
|
+
else if (out.Target?.Mode === 'child') {
|
|
897
|
+
targetFieldName = `Child: ${out.Target.EntityName}`;
|
|
898
|
+
}
|
|
899
|
+
else if (out.Target?.Mode === 'tags') {
|
|
900
|
+
targetFieldName = `Tags (${out.Target.Growth || 'taxonomy'})`;
|
|
901
|
+
}
|
|
902
|
+
let constraintText = 'None';
|
|
903
|
+
let violationPolicy = 'error';
|
|
904
|
+
const c = out.Constraint;
|
|
905
|
+
if (c) {
|
|
906
|
+
if (c.OnViolation) {
|
|
907
|
+
violationPolicy = c.OnViolation;
|
|
908
|
+
}
|
|
909
|
+
switch (c.Type) {
|
|
910
|
+
case 'numeric':
|
|
911
|
+
case 'money': {
|
|
912
|
+
const min = c.Min != null ? String(c.Min) : '-∞';
|
|
913
|
+
const max = c.Max != null ? String(c.Max) : '+∞';
|
|
914
|
+
constraintText = `[${min}, ${max}]`;
|
|
915
|
+
break;
|
|
916
|
+
}
|
|
917
|
+
case 'enum': {
|
|
918
|
+
if (c.Values && c.Values.length > 0) {
|
|
919
|
+
constraintText = `Allowed: ${c.Values.slice(0, 3).join(', ')}${c.Values.length > 3 ? '...' : ''}`;
|
|
920
|
+
}
|
|
921
|
+
else if (c.FromFieldMetadata) {
|
|
922
|
+
constraintText = 'From Field Metadata';
|
|
923
|
+
}
|
|
924
|
+
break;
|
|
925
|
+
}
|
|
926
|
+
case 'lookup': {
|
|
927
|
+
constraintText = `Lookup: ${c.Entity || ''}.${c.MatchField || ''}`;
|
|
928
|
+
break;
|
|
929
|
+
}
|
|
930
|
+
case 'date': {
|
|
931
|
+
constraintText = `Date: [${c.Min || '-∞'}, ${c.Max || '+∞'}]`;
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
case 'boolean': {
|
|
935
|
+
constraintText = 'Boolean';
|
|
936
|
+
break;
|
|
937
|
+
}
|
|
938
|
+
case 'freetext': {
|
|
939
|
+
constraintText = c.MaxLength != null ? `Max: ${c.MaxLength} chars` : 'Freetext';
|
|
940
|
+
break;
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
const isFieldMode = targetMode === 'field';
|
|
945
|
+
const field = isFieldMode && targetFieldName && entityInfo?.Fields
|
|
946
|
+
? entityInfo.Fields.find((f) => f.Name.toLowerCase() === targetFieldName.toLowerCase())
|
|
947
|
+
: undefined;
|
|
948
|
+
outputs.push({
|
|
949
|
+
Name: out.Name || out.Ref || 'Unnamed',
|
|
950
|
+
Ref: out.Ref || '',
|
|
951
|
+
FeatureKind: out.FeatureKind || (c?.Type === 'numeric' ? 'numeric' : 'categorical'),
|
|
952
|
+
TargetField: targetFieldName || '—',
|
|
953
|
+
TargetFieldExists: isFieldMode ? !!field : true,
|
|
954
|
+
TargetFieldType: isFieldMode ? (field?.TSType || field?.Type || 'unbound') : (targetMode || 'custom'),
|
|
955
|
+
ConstraintSummary: constraintText,
|
|
956
|
+
ViolationPolicy: violationPolicy,
|
|
957
|
+
ReasoningTarget: spec.CaptureReasoning ? 'Enabled' : 'None',
|
|
958
|
+
});
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
else if (outputMapping) {
|
|
962
|
+
const mapping = SafeJSONParse(outputMapping);
|
|
963
|
+
const fieldsObj = (mapping && 'fields' in mapping && mapping.fields) ? mapping.fields : mapping;
|
|
964
|
+
if (fieldsObj && typeof fieldsObj === 'object') {
|
|
965
|
+
for (const [key, val] of Object.entries(fieldsObj)) {
|
|
966
|
+
const field = entityInfo?.Fields?.find((f) => f.Name.toLowerCase() === key.toLowerCase());
|
|
967
|
+
outputs.push({
|
|
968
|
+
Name: String(val),
|
|
969
|
+
Ref: String(val),
|
|
970
|
+
FeatureKind: 'field',
|
|
971
|
+
TargetField: key,
|
|
972
|
+
TargetFieldExists: !!field,
|
|
973
|
+
TargetFieldType: field?.TSType || field?.Type || 'unbound',
|
|
974
|
+
ConstraintSummary: 'Standard',
|
|
975
|
+
ViolationPolicy: 'null',
|
|
976
|
+
ReasoningTarget: 'None',
|
|
977
|
+
});
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
return outputs;
|
|
982
|
+
}
|
|
983
|
+
/** @deprecated Use {@link BuildFeatureOutputViewModels}. */
|
|
984
|
+
export function buildFeatureOutputViewModels(spec, entityInfo, outputMapping) {
|
|
985
|
+
return BuildFeatureOutputViewModels(spec, entityInfo, outputMapping);
|
|
986
|
+
}
|
|
987
|
+
/**
|
|
988
|
+
* Pure helper to build prompt parameter resolution mappings.
|
|
989
|
+
*/
|
|
990
|
+
export function BuildPromptParamViewModels(spec, inputMapping) {
|
|
991
|
+
const mappings = [];
|
|
992
|
+
if (spec?.Context?.QueryParams) {
|
|
993
|
+
for (const [param, field] of Object.entries(spec.Context.QueryParams)) {
|
|
994
|
+
mappings.push({ Param: `@${param}`, Field: String(field) });
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
else if (spec?.Context?.InputMapping) {
|
|
998
|
+
for (const [param, field] of Object.entries(spec.Context.InputMapping)) {
|
|
999
|
+
mappings.push({ Param: `@${param}`, Field: String(field) });
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
else if (inputMapping) {
|
|
1003
|
+
const raw = SafeJSONParse(inputMapping);
|
|
1004
|
+
if (raw) {
|
|
1005
|
+
for (const [param, field] of Object.entries(raw)) {
|
|
1006
|
+
mappings.push({ Param: `@${param}`, Field: String(field) });
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
return mappings;
|
|
1011
|
+
}
|
|
1012
|
+
/** @deprecated Use {@link BuildPromptParamViewModels}. */
|
|
1013
|
+
export function buildPromptParamViewModels(spec, inputMapping) {
|
|
1014
|
+
return BuildPromptParamViewModels(spec, inputMapping);
|
|
1015
|
+
}
|
|
1016
|
+
/** The message the form refuses a save with when the builder flagged the pipeline without listing why. */
|
|
1017
|
+
export const PIPELINE_BUILDER_INVALID_MESSAGE = 'The pipeline configuration has errors. Fix them under Pipeline Configuration before saving.';
|
|
1018
|
+
/**
|
|
1019
|
+
* Why the record form refuses to save an Infer pipeline the builder reports invalid: the builder's error
|
|
1020
|
+
* messages, once each, or {@link PIPELINE_BUILDER_INVALID_MESSAGE} when they are not available. Empty for
|
|
1021
|
+
* any other work type (the builder only edits Infer pipelines), and while the builder reports it valid.
|
|
1022
|
+
*/
|
|
1023
|
+
export function GetPipelineBuilderSaveErrors(workType, pipelineValid, builderIssues) {
|
|
1024
|
+
if (workType !== 'Infer' || pipelineValid) {
|
|
1025
|
+
return [];
|
|
1026
|
+
}
|
|
1027
|
+
const messages = (builderIssues ?? []).filter((issue) => issue.Severity === 'error').map((issue) => issue.Message);
|
|
1028
|
+
return messages.length > 0 ? Array.from(new Set(messages)) : [PIPELINE_BUILDER_INVALID_MESSAGE];
|
|
1029
|
+
}
|
|
413
1030
|
/**
|
|
414
1031
|
* Custom form override for `MJ: Record Processes` (priority 100).
|
|
415
1032
|
* Presents the Record Process / Feature Pipeline in a first-class MJ form with:
|
|
@@ -417,19 +1034,58 @@ function RecordProcessFormComponentExtended_Conditional_0_Template(rf, ctx) { if
|
|
|
417
1034
|
* - Builder panel: "Pipeline Configuration" embedding the visual <mj-feature-pipeline-builder> for Infer / Feature Pipelines,
|
|
418
1035
|
* or the <mj-record-process-editor> for Field Rules.
|
|
419
1036
|
* - History panel: "Prior Runs" embedding <mj-record-process-history> with run status, metrics, and per-record diff drill-down.
|
|
420
|
-
* -
|
|
1037
|
+
* - Details panel (Option A Structured Cards): First-class semantic cards for Infer pipelines, replacing raw JSON
|
|
1038
|
+
* with configuration health diagnostics, prompt context binding, feature output schema & column validation,
|
|
1039
|
+
* scope preview, and a collapsible raw JSON drawer.
|
|
421
1040
|
* - Related entity sections: Watermarks, ML Model Scoring Bindings, Feature Values, Feature Value Caches.
|
|
422
1041
|
* - System Metadata panel.
|
|
423
1042
|
*/
|
|
424
1043
|
let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtended extends MJRecordProcessFormComponent {
|
|
425
1044
|
constructor() {
|
|
426
1045
|
super(...arguments);
|
|
427
|
-
|
|
1046
|
+
/** Whether the Feature Pipeline builder last reported the pipeline valid. The form refuses to save while it is false. */
|
|
1047
|
+
this.PipelineValid = true;
|
|
1048
|
+
this.RawJsonExpanded = false;
|
|
1049
|
+
this.RawJsonCopied = false;
|
|
1050
|
+
this.LoadedQuery = null;
|
|
1051
|
+
}
|
|
1052
|
+
/** @deprecated Use {@link PipelineValid}. */
|
|
1053
|
+
get pipelineValid() {
|
|
1054
|
+
return this.PipelineValid;
|
|
1055
|
+
}
|
|
1056
|
+
/** @deprecated Use {@link PipelineValid}. */
|
|
1057
|
+
set pipelineValid(value) {
|
|
1058
|
+
this.PipelineValid = value;
|
|
1059
|
+
}
|
|
1060
|
+
/** @deprecated Use {@link RawJsonExpanded}. */
|
|
1061
|
+
get rawJsonExpanded() {
|
|
1062
|
+
return this.RawJsonExpanded;
|
|
1063
|
+
}
|
|
1064
|
+
/** @deprecated Use {@link RawJsonExpanded}. */
|
|
1065
|
+
set rawJsonExpanded(value) {
|
|
1066
|
+
this.RawJsonExpanded = value;
|
|
1067
|
+
}
|
|
1068
|
+
/** @deprecated Use {@link RawJsonCopied}. */
|
|
1069
|
+
get rawJsonCopied() {
|
|
1070
|
+
return this.RawJsonCopied;
|
|
1071
|
+
}
|
|
1072
|
+
/** @deprecated Use {@link RawJsonCopied}. */
|
|
1073
|
+
set rawJsonCopied(value) {
|
|
1074
|
+
this.RawJsonCopied = value;
|
|
1075
|
+
}
|
|
1076
|
+
/** @deprecated Use {@link LoadedQuery}. */
|
|
1077
|
+
get loadedQuery() {
|
|
1078
|
+
return this.LoadedQuery;
|
|
1079
|
+
}
|
|
1080
|
+
/** @deprecated Use {@link LoadedQuery}. */
|
|
1081
|
+
set loadedQuery(value) {
|
|
1082
|
+
this.LoadedQuery = value;
|
|
428
1083
|
}
|
|
429
1084
|
async ngOnInit() {
|
|
430
1085
|
await super.ngOnInit();
|
|
431
1086
|
this.initSections([
|
|
432
1087
|
{ sectionKey: 'processOverview', sectionName: 'Overview & Status', isExpanded: true },
|
|
1088
|
+
{ sectionKey: 'inferConfig', sectionName: 'Infer Configuration', isExpanded: true },
|
|
433
1089
|
{ sectionKey: 'pipelineConfiguration', sectionName: 'Pipeline Configuration', isExpanded: true },
|
|
434
1090
|
{ sectionKey: 'processRuns', sectionName: 'Prior Runs', isExpanded: true },
|
|
435
1091
|
{ sectionKey: 'processDefinition', sectionName: 'Process Definition', isExpanded: true },
|
|
@@ -443,6 +1099,31 @@ let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtende
|
|
|
443
1099
|
{ sectionKey: 'mJFeatureValueCaches', sectionName: 'Feature Value Caches', isExpanded: false },
|
|
444
1100
|
{ sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },
|
|
445
1101
|
]);
|
|
1102
|
+
await this.loadContextQuery();
|
|
1103
|
+
}
|
|
1104
|
+
async loadContextQuery() {
|
|
1105
|
+
const queryId = this.ParsedSpec?.Context?.QueryID;
|
|
1106
|
+
if (!queryId)
|
|
1107
|
+
return;
|
|
1108
|
+
try {
|
|
1109
|
+
const rv = new RunView();
|
|
1110
|
+
const res = await rv.RunView({
|
|
1111
|
+
EntityName: 'MJ: Queries',
|
|
1112
|
+
ExtraFilter: `ID = '${EscapeSQLString(queryId)}'`,
|
|
1113
|
+
Fields: ['ID', 'Name', 'SQL'],
|
|
1114
|
+
ResultType: 'simple',
|
|
1115
|
+
});
|
|
1116
|
+
if (res.Success && res.Results && res.Results.length > 0) {
|
|
1117
|
+
this.LoadedQuery = res.Results[0];
|
|
1118
|
+
this.cdr.markForCheck();
|
|
1119
|
+
}
|
|
1120
|
+
else if (!res.Success) {
|
|
1121
|
+
LogError(`[RecordProcessForm] Failed to load context query ${queryId}: ${res.ErrorMessage}`);
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
catch (e) {
|
|
1125
|
+
LogError(`[RecordProcessForm] Exception loading context query ${queryId}`, undefined, e);
|
|
1126
|
+
}
|
|
446
1127
|
}
|
|
447
1128
|
get TargetEntityName() {
|
|
448
1129
|
if (!this.record?.EntityID)
|
|
@@ -450,6 +1131,11 @@ let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtende
|
|
|
450
1131
|
const entity = this.ProviderToUse.EntityByID(this.record.EntityID);
|
|
451
1132
|
return entity?.DisplayName || entity?.Name || this.record.EntityID;
|
|
452
1133
|
}
|
|
1134
|
+
get TargetEntityInfo() {
|
|
1135
|
+
if (!this.record?.EntityID)
|
|
1136
|
+
return undefined;
|
|
1137
|
+
return this.ProviderToUse.EntityByID(this.record.EntityID);
|
|
1138
|
+
}
|
|
453
1139
|
get WorkTypeIcon() {
|
|
454
1140
|
switch (this.record?.WorkType) {
|
|
455
1141
|
case 'Infer':
|
|
@@ -482,15 +1168,134 @@ let RecordProcessFormComponentExtended = class RecordProcessFormComponentExtende
|
|
|
482
1168
|
this.cdr.markForCheck();
|
|
483
1169
|
}
|
|
484
1170
|
OnPipelineValidChange(valid) {
|
|
485
|
-
this.
|
|
1171
|
+
this.PipelineValid = valid;
|
|
486
1172
|
this.cdr.markForCheck();
|
|
487
1173
|
}
|
|
1174
|
+
/**
|
|
1175
|
+
* The record's validation (which includes the shared Feature Pipeline save check), plus the builder's
|
|
1176
|
+
* verdict: while the builder reports an Infer pipeline invalid, the save is refused and its errors are
|
|
1177
|
+
* listed on Configuration.
|
|
1178
|
+
*/
|
|
1179
|
+
Validate() {
|
|
1180
|
+
const result = super.Validate();
|
|
1181
|
+
const builderErrors = GetPipelineBuilderSaveErrors(this.record?.WorkType, this.PipelineValid, this.pipelineBuilder?.ValidationErrors);
|
|
1182
|
+
for (const message of builderErrors) {
|
|
1183
|
+
if (!result.Errors.some((error) => error.Message === message)) {
|
|
1184
|
+
result.Errors.push(new ValidationErrorInfo('Configuration', message, this.record?.Configuration, ValidationErrorType.Failure));
|
|
1185
|
+
}
|
|
1186
|
+
}
|
|
1187
|
+
if (builderErrors.length > 0) {
|
|
1188
|
+
result.Success = false;
|
|
1189
|
+
}
|
|
1190
|
+
return result;
|
|
1191
|
+
}
|
|
1192
|
+
ToggleRawJson() {
|
|
1193
|
+
this.RawJsonExpanded = !this.RawJsonExpanded;
|
|
1194
|
+
this.cdr.markForCheck();
|
|
1195
|
+
}
|
|
1196
|
+
/** @deprecated Use {@link ToggleRawJson}. */
|
|
1197
|
+
toggleRawJson() {
|
|
1198
|
+
return this.ToggleRawJson();
|
|
1199
|
+
}
|
|
1200
|
+
async CopyRawJson() {
|
|
1201
|
+
try {
|
|
1202
|
+
if (navigator?.clipboard && this.FormattedRawJson) {
|
|
1203
|
+
await navigator.clipboard.writeText(this.FormattedRawJson);
|
|
1204
|
+
this.RawJsonCopied = true;
|
|
1205
|
+
this.cdr.markForCheck();
|
|
1206
|
+
setTimeout(() => {
|
|
1207
|
+
this.RawJsonCopied = false;
|
|
1208
|
+
this.cdr.markForCheck();
|
|
1209
|
+
}, 2000);
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
catch (e) {
|
|
1213
|
+
LogError('[RecordProcessForm] Failed to copy raw JSON to clipboard', undefined, e);
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
/** @deprecated Use {@link CopyRawJson}. */
|
|
1217
|
+
async copyRawJson() {
|
|
1218
|
+
return this.CopyRawJson();
|
|
1219
|
+
}
|
|
1220
|
+
get FormattedRawJson() {
|
|
1221
|
+
return FormatRawPipelineJson(this.record?.Configuration);
|
|
1222
|
+
}
|
|
1223
|
+
get ParsedSpec() {
|
|
1224
|
+
return ParsePipelineSpec(this.record?.Configuration);
|
|
1225
|
+
}
|
|
1226
|
+
get EntityStub() {
|
|
1227
|
+
const entity = this.TargetEntityInfo;
|
|
1228
|
+
if (!entity)
|
|
1229
|
+
return undefined;
|
|
1230
|
+
return {
|
|
1231
|
+
Name: entity.Name,
|
|
1232
|
+
Fields: (entity.Fields ?? []).map((f) => ({
|
|
1233
|
+
Name: f.Name,
|
|
1234
|
+
TSType: f.TSType,
|
|
1235
|
+
IsVirtual: f.IsVirtual,
|
|
1236
|
+
AllowsNull: f.AllowsNull,
|
|
1237
|
+
RelatedEntity: f.RelatedEntity,
|
|
1238
|
+
RelatedEntityID: f.RelatedEntityID,
|
|
1239
|
+
EntityFieldValues: f.EntityFieldValues
|
|
1240
|
+
? f.EntityFieldValues.map((v) => ({ Value: v.Value, Code: v.Code }))
|
|
1241
|
+
: undefined,
|
|
1242
|
+
})),
|
|
1243
|
+
};
|
|
1244
|
+
}
|
|
1245
|
+
get SpecIssues() {
|
|
1246
|
+
return ValidatePipelineSpec(this.ParsedSpec, this.EntityStub);
|
|
1247
|
+
}
|
|
1248
|
+
get IsSpecValid() {
|
|
1249
|
+
return this.SpecIssues.filter((i) => i.Severity === 'error').length === 0;
|
|
1250
|
+
}
|
|
1251
|
+
get FeatureOutputs() {
|
|
1252
|
+
return BuildFeatureOutputViewModels(this.ParsedSpec, this.TargetEntityInfo, this.record?.OutputMapping);
|
|
1253
|
+
}
|
|
1254
|
+
get TotalFeaturesCount() {
|
|
1255
|
+
return this.FeatureOutputs.length;
|
|
1256
|
+
}
|
|
1257
|
+
get BoundFeaturesCount() {
|
|
1258
|
+
return this.FeatureOutputs.filter((f) => f.TargetFieldExists).length;
|
|
1259
|
+
}
|
|
1260
|
+
get ParameterMappings() {
|
|
1261
|
+
return BuildPromptParamViewModels(this.ParsedSpec, this.record?.InputMapping);
|
|
1262
|
+
}
|
|
1263
|
+
get ContextModeText() {
|
|
1264
|
+
const spec = this.ParsedSpec;
|
|
1265
|
+
if (spec?.Context?.EntityDocumentID)
|
|
1266
|
+
return 'Entity Document Template';
|
|
1267
|
+
if (spec?.Context?.QueryID) {
|
|
1268
|
+
return this.LoadedQuery?.Name ? `Query: ${this.LoadedQuery.Name}` : `Saved Query (${spec.Context.QueryID.substring(0, 8)}...)`;
|
|
1269
|
+
}
|
|
1270
|
+
if (spec?.Context?.Fields && spec.Context.Fields.length > 0)
|
|
1271
|
+
return `Fields (${spec.Context.Fields.join(', ')})`;
|
|
1272
|
+
return 'Record Fields (Automatic)';
|
|
1273
|
+
}
|
|
1274
|
+
get ContextQueryDisplay() {
|
|
1275
|
+
const spec = this.ParsedSpec;
|
|
1276
|
+
if (spec?.Context?.QueryID) {
|
|
1277
|
+
if (this.LoadedQuery?.SQL) {
|
|
1278
|
+
return `-- Saved Query: ${this.LoadedQuery.Name}\n${this.LoadedQuery.SQL}`;
|
|
1279
|
+
}
|
|
1280
|
+
const paramName = spec.Context.QueryParams ? Object.keys(spec.Context.QueryParams)[0] || 'RecordID' : 'RecordID';
|
|
1281
|
+
return `-- Saved Query: ${spec.Context.QueryID}\nSELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @${paramName}`;
|
|
1282
|
+
}
|
|
1283
|
+
return `SELECT a.* FROM ${this.TargetEntityName || 'TargetEntity'} a WHERE a.ID = @RecordID`;
|
|
1284
|
+
}
|
|
1285
|
+
get FormattedScopeFilter() {
|
|
1286
|
+
return this.record?.ScopeFilter?.trim() || '';
|
|
1287
|
+
}
|
|
488
1288
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵRecordProcessFormComponentExtended_BaseFactory; return function RecordProcessFormComponentExtended_Factory(__ngFactoryType__) { return (ɵRecordProcessFormComponentExtended_BaseFactory || (ɵRecordProcessFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(RecordProcessFormComponentExtended)))(__ngFactoryType__ || RecordProcessFormComponentExtended); }; })(); }
|
|
489
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RecordProcessFormComponentExtended, selectors: [["mj-record-process-form-extended"]],
|
|
490
|
-
i0.ɵɵ
|
|
1289
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RecordProcessFormComponentExtended, selectors: [["mj-record-process-form-extended"]], viewQuery: function RecordProcessFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
|
|
1290
|
+
i0.ɵɵviewQuery(FeaturePipelineBuilderComponent, 5);
|
|
1291
|
+
} if (rf & 2) {
|
|
1292
|
+
let _t;
|
|
1293
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pipelineBuilder = _t.first);
|
|
1294
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "processOverview", "SectionName", "Overview & Status", "Icon", "fa-solid fa-gauge-high", 3, "Form", "FormContext", "DefaultExpanded"], [1, "rpf-overview-container"], [1, "rpf-hero-card"], [1, "rpf-hero-main"], [1, "rpf-hero-icon-wrap"], [1, "rpf-hero-info"], [1, "rpf-hero-title-row"], [1, "rpf-hero-title"], [1, "rpf-badge", 3, "ngClass"], [1, "rpf-badge-dot"], [1, "rpf-hero-desc"], [1, "rpf-hero-pills"], ["title", "Target Entity", 1, "rpf-pill"], [1, "fa-solid", "fa-database"], ["title", "Work Type", 1, "rpf-pill"], ["title", "Feature Pipeline", 1, "rpf-pill", "rpf-pill-feature"], [1, "rpf-kpi-grid"], [1, "rpf-kpi-card"], [1, "rpf-kpi-label"], [1, "fa-solid", "fa-filter"], [1, "rpf-kpi-value"], [1, "rpf-kpi-sub", 3, "title"], [1, "fa-solid", "fa-bolt"], [1, "muted"], [1, "rpf-kpi-sub"], [1, "fa-solid", "fa-water"], [1, "fa-solid", "fa-microchip"], ["SectionKey", "pipelineConfiguration", "SectionName", "Pipeline Configuration", "Icon", "fa-solid fa-wand-magic-sparkles", "Variant", "related-entity", 3, "Form", "FormContext", "DefaultExpanded"], [1, "rpf-pipeline-builder-wrap"], [1, "rpf-editor-wrap"], [1, "rpf-generic-config-wrap"], ["SectionKey", "processRuns", "SectionName", "Prior Runs", "Icon", "fa-solid fa-clock-rotate-left", "Variant", "related-entity", 3, "Form", "FormContext", "DefaultExpanded"], [1, "rpf-history-wrap"], [1, "rpf-notice-card"], ["SectionKey", "processDefinition", "SectionName", "Process Definition", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "EntityID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "executionLogic", "SectionName", "Execution Logic", "Icon", "fa fa-play", 3, "Form", "FormContext", "DefaultExpanded"], ["SectionKey", "scopeConfiguration", "SectionName", "Scope Configuration", "Icon", "fa fa-filter", 3, "Form", "FormContext"], [1, "rpf-scope-infer-wrap"], ["SectionKey", "triggers", "SectionName", "Triggers", "Icon", "fa fa-bolt", 3, "Form", "FormContext"], ["FieldName", "OnChangeEnabled", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "OnChangeInvocationType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "OnChangeFilter", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ScheduleEnabled", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CronExpression", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Timezone", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "OnDemandEnabled", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "performanceAndOptimization", "SectionName", "Performance and Optimization", "Icon", "fa fa-tachometer-alt", 3, "Form", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-database", 3, "Form", "FormContext", "DefaultExpanded"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "mJRecordProcessWatermarks", "SectionName", "Record Process Watermarks", "Icon", "fa fa-water", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJMLModelScoringBindings", "SectionName", "ML Model Scoring Bindings", "Icon", "fa fa-project-diagram", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJFeatureValues", "SectionName", "Feature Values", "Icon", "fa fa-history", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJFeatureValueCaches", "SectionName", "Feature Value Caches", "Icon", "fa fa-database", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "fa-solid", "fa-sparkles"], [3, "SpecChange", "ValidChange", "Record", "EntityID", "Provider"], [3, "Record", "ShowToolbar", "Provider"], [1, "fa-solid", "fa-circle-info"], [3, "RecordProcessID"], [1, "rpf-audit-bar"], [1, "rpf-audit-badges"], [1, "rpf-audit-chip"], [1, "fa-solid", "fa-check-circle", 2, "color", "var(--mj-status-success)"], [1, "rpf-prompt-grid"], [1, "rpf-card-box"], [1, "rpf-box-eyebrow"], [1, "rpf-prompt-title"], [1, "fa-solid", "fa-message-code"], [1, "rpf-chip-wrap"], [1, "rpf-sm-chip", "rpf-sm-chip-brand"], [1, "rpf-sm-chip"], [2, "margin-top", "10px"], [1, "rpf-param-list"], [2, "font-size", "12px", "color", "var(--mj-text-muted)"], [1, "rpf-sql-preview-box"], [1, "rpf-sql-preview-label"], [1, "fa-solid", "fa-code"], [1, "rpf-sql-preview-code"], [1, "rpf-table-wrap"], [1, "rpf-feature-table"], [1, "rpf-raw-json-drawer"], [1, "rpf-raw-json-header", 3, "click"], [1, "rpf-raw-json-title"], ["type", "button", 1, "rpf-sm-chip", 3, "click"], [1, "rpf-raw-json-body"], [1, "rpf-edit-fields-divider"], ["FieldName", "PromptID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "rpf-param-row"], [1, "rpf-param-name"], [1, "fa-solid", "fa-arrow-left", "rpf-param-arrow"], [1, "rpf-feature-name-cell"], [1, "rpf-type-tag"], [1, "rpf-sm-chip", 3, "title"], [1, "fa-solid", "fa-shield"], [1, "rpf-binding-pill"], [2, "color", "var(--mj-text-muted)", "font-size", "11px"], [1, "fa-solid", "fa-brain"], ["colspan", "5", 2, "text-align", "center", "color", "var(--mj-text-muted)", "padding", "20px"], ["FieldName", "WorkType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Configuration", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "OutputMapping", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ActionID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AgentID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "InputMapping", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "rpf-scope-summary-row"], [1, "rpf-scope-badge-group"], [1, "rpf-scope-chip"], [1, "rpf-scope-chip", "rpf-scope-chip-brand"], [1, "fa-solid", "fa-calculator"], ["FieldName", "ScopeType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ScopeFilter", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ScopeViewID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ScopeListID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "rpf-opt-grid"], [1, "rpf-opt-card"], [1, "rpf-opt-label"], [1, "rpf-opt-value"], [1, "rpf-opt-sub"], ["FieldName", "SkipUnchanged", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "WatermarkStrategy", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "BatchSize", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "MaxConcurrency", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function RecordProcessFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1295
|
+
i0.ɵɵconditionalCreate(0, RecordProcessFormComponentExtended_Conditional_0_Template, 108, 142, "mj-record-form-container", 0);
|
|
491
1296
|
} if (rf & 2) {
|
|
492
1297
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
493
|
-
} }, dependencies: [i1.NgClass, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.ExplorerEntityDataGridComponent, i2.FormPanelSlotComponent, i3.RecordProcessEditorComponent, i3.FeaturePipelineBuilderComponent, i3.RecordProcessHistoryComponent], styles: ["\n\n\n\n\n.rpf-overview-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 4px 0 12px 0;\n}\n\n\n.rpf-hero-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 10px;\n padding: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.rpf-hero-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 18px;\n}\n\n.rpf-hero-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary, #0284c7);\n font-size: 22px;\n flex-shrink: 0;\n}\n\n.rpf-hero-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.rpf-hero-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.rpf-hero-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.3;\n}\n\n.rpf-hero-desc[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary, #64748b);\n line-height: 1.5;\n}\n\n.rpf-hero-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.rpf-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-pill-feature[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n.rpf-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.rpf-badge-dot[_ngcontent-%COMP%] {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n\n.rpf-status-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg, color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-success-text, var(--mj-status-success));\n border: 1px solid var(--mj-status-success-border, color-mix(in srgb, var(--mj-status-success) 30%, transparent));\n}\n.rpf-status-active[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.rpf-status-draft[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg, color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n border: 1px solid var(--mj-status-warning-border, color-mix(in srgb, var(--mj-status-warning) 30%, transparent));\n}\n.rpf-status-draft[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.rpf-status-disabled[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-subtle);\n}\n.rpf-status-disabled[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}\n\n.rpf-status-default[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #64748b);\n border: 1px solid var(--mj-border-subtle, #cbd5e1);\n}\n.rpf-status-default[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-text-secondary, #64748b);\n}\n\n\n.rpf-kpi-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.rpf-kpi-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.rpf-kpi-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #94a3b8);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-kpi-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-kpi-sub[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary, #64748b);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.rpf-kpi-sub[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: var(--mj-font-mono, monospace);\n font-size: 11px;\n padding: 1px 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border-radius: 4px;\n}\n\n\n.rpf-pipeline-builder-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-editor-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-history-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n border-radius: 8px;\n color: var(--mj-text-secondary, #64748b);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-brand-primary, #0284c7);\n margin-top: 2px;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n color: var(--mj-text-primary, #0f172a);\n margin-bottom: 2px;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}"] }); }
|
|
1298
|
+
} }, dependencies: [i1.NgClass, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.ExplorerEntityDataGridComponent, i2.FormPanelSlotComponent, i3.RecordProcessEditorComponent, i3.FeaturePipelineBuilderComponent, i3.RecordProcessHistoryComponent], styles: ["\n\n\n\n\n.rpf-overview-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 4px 0 12px 0;\n}\n\n\n.rpf-hero-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 10px;\n padding: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.rpf-hero-main[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 18px;\n}\n\n.rpf-hero-icon-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary, #0284c7);\n font-size: 22px;\n flex-shrink: 0;\n}\n\n.rpf-hero-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.rpf-hero-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.rpf-hero-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.3;\n}\n\n.rpf-hero-desc[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary, #64748b);\n line-height: 1.5;\n}\n\n.rpf-hero-pills[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.rpf-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-pill-feature[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n\n.rpf-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.rpf-badge-dot[_ngcontent-%COMP%] {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n\n.rpf-status-active[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg, color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-success-text, var(--mj-status-success));\n border: 1px solid var(--mj-status-success-border, color-mix(in srgb, var(--mj-status-success) 30%, transparent));\n}\n.rpf-status-active[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n.rpf-status-draft[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg, color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n border: 1px solid var(--mj-status-warning-border, color-mix(in srgb, var(--mj-status-warning) 30%, transparent));\n}\n.rpf-status-draft[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n}\n\n.rpf-status-disabled[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-subtle);\n}\n.rpf-status-disabled[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}\n\n.rpf-status-default[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #64748b);\n border: 1px solid var(--mj-border-subtle, #cbd5e1);\n}\n.rpf-status-default[_ngcontent-%COMP%] .rpf-badge-dot[_ngcontent-%COMP%] {\n background: var(--mj-text-secondary, #64748b);\n}\n\n\n.rpf-kpi-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.rpf-kpi-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.rpf-kpi-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #94a3b8);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-kpi-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-kpi-sub[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary, #64748b);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.rpf-kpi-sub[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: var(--mj-font-mono, monospace);\n font-size: 11px;\n padding: 1px 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border-radius: 4px;\n}\n\n\n.rpf-pipeline-builder-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-editor-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-history-wrap[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n border-radius: 8px;\n color: var(--mj-text-secondary, #64748b);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-brand-primary, #0284c7);\n margin-top: 2px;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n display: block;\n color: var(--mj-text-primary, #0f172a);\n margin-bottom: 2px;\n}\n\n.rpf-notice-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n\n\n\n\n\n.rpf-audit-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 12px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-left: 4px solid var(--mj-status-success, #22c55e);\n border-radius: 8px;\n margin-bottom: 16px;\n}\n\n.rpf-audit-bar-warning[_ngcontent-%COMP%] {\n border-left-color: var(--mj-status-warning, #f59e0b);\n}\n\n.rpf-audit-badges[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.rpf-audit-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-secondary, #475569);\n font-weight: 500;\n}\n\n.rpf-audit-chip-valid[_ngcontent-%COMP%] {\n color: var(--mj-status-success-text, #15803d);\n font-weight: 600;\n}\n\n.rpf-audit-chip-warning[_ngcontent-%COMP%] {\n color: var(--mj-status-warning-text, #b45309);\n font-weight: 600;\n}\n\n\n.rpf-prompt-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n margin-bottom: 16px;\n}\n\n@media (max-width: 768px) {\n .rpf-prompt-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}\n\n.rpf-card-box[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n}\n\n.rpf-box-eyebrow[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n}\n\n.rpf-prompt-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-brand-primary, #0076b6);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-chip-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 10px;\n}\n\n.rpf-sm-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface, #ffffff);\n color: var(--mj-text-secondary, #475569);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n}\n\n.rpf-sm-chip-brand[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n font-weight: 600;\n}\n\n.rpf-param-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.rpf-param-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.rpf-param-name[_ngcontent-%COMP%] {\n font-family: var(--mj-font-mono, monospace);\n color: var(--mj-text-secondary, #475569);\n font-weight: 600;\n}\n\n.rpf-param-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted, #94a3b8);\n font-size: 10px;\n margin: 0 4px;\n}\n\n\n.rpf-sql-preview-box[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n margin-bottom: 16px;\n}\n\n.rpf-sql-preview-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-sql-preview-code[_ngcontent-%COMP%] {\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.6;\n overflow-x: auto;\n}\n\n\n.rpf-table-wrap[_ngcontent-%COMP%] {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n background: var(--mj-bg-surface, #ffffff);\n margin-bottom: 16px;\n}\n\n.rpf-feature-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.rpf-feature-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 10px 14px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border-bottom: 2px solid var(--mj-border-default, #e2e8f0);\n}\n\n.rpf-feature-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-subtle, #f1f5f9);\n vertical-align: middle;\n}\n\n.rpf-feature-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.rpf-feature-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover, #f8fafc);\n}\n\n.rpf-feature-name-cell[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-type-tag[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.rpf-type-numeric[_ngcontent-%COMP%] {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.rpf-type-categorical[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rpf-type-default[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-binding-pill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.rpf-binding-valid[_ngcontent-%COMP%] {\n color: var(--mj-status-success, #22c55e);\n}\n\n.rpf-binding-invalid[_ngcontent-%COMP%] {\n color: var(--mj-status-warning, #f59e0b);\n}\n\n\n.rpf-opt-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n\n@media (max-width: 900px) {\n .rpf-opt-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n.rpf-opt-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n}\n\n.rpf-opt-label[_ngcontent-%COMP%] {\n font-size: 11px;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.rpf-opt-value[_ngcontent-%COMP%] {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-opt-sub[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-secondary, #64748b);\n margin-top: 2px;\n}\n\n.rpf-text-success[_ngcontent-%COMP%] {\n color: var(--mj-status-success-text, #15803d) !important;\n}\n\n\n.rpf-raw-json-drawer[_ngcontent-%COMP%] {\n border: 1px dashed var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n margin-top: 20px;\n padding: 14px 16px;\n}\n\n.rpf-raw-json-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n user-select: none;\n}\n\n.rpf-raw-json-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary, #475569);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-raw-json-body[_ngcontent-%COMP%] {\n margin-top: 12px;\n}\n\n.rpf-raw-json-body[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 6px;\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.5;\n max-height: 350px;\n overflow-y: auto;\n}\n\n.rpf-scope-infer-wrap[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.rpf-scope-summary-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.rpf-scope-badge-group[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-scope-chip[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-scope-chip-brand[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n font-weight: 600;\n}\n\n.rpf-edit-fields-divider[_ngcontent-%COMP%] {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-default, #e2e8f0);\n}"] }); }
|
|
494
1299
|
};
|
|
495
1300
|
RecordProcessFormComponentExtended = __decorate([
|
|
496
1301
|
RegisterClass(BaseFormComponent, 'MJ: Record Processes', 100)
|
|
@@ -498,15 +1303,24 @@ RecordProcessFormComponentExtended = __decorate([
|
|
|
498
1303
|
export { RecordProcessFormComponentExtended };
|
|
499
1304
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RecordProcessFormComponentExtended, [{
|
|
500
1305
|
type: Component,
|
|
501
|
-
args: [{ standalone: false, selector: 'mj-record-process-form-extended', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n OVERVIEW & STATUS (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processOverview\"\n SectionName=\"Overview & Status\"\n Icon=\"fa-solid fa-gauge-high\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"rpf-overview-container\">\n <!-- Hero Header Card -->\n <div class=\"rpf-hero-card\">\n <div class=\"rpf-hero-main\">\n <div class=\"rpf-hero-icon-wrap\">\n <i [class]=\"WorkTypeIcon\"></i>\n </div>\n <div class=\"rpf-hero-info\">\n <div class=\"rpf-hero-title-row\">\n <h2 class=\"rpf-hero-title\">{{ record.Name || 'Untitled Process' }}</h2>\n <span class=\"rpf-badge\" [ngClass]=\"StatusBadgeClass\">\n <span class=\"rpf-badge-dot\"></span>\n {{ record.Status || 'Draft' }}\n </span>\n </div>\n <p class=\"rpf-hero-desc\">{{ record.Description || 'No description provided for this process.' }}</p>\n <div class=\"rpf-hero-pills\">\n <span class=\"rpf-pill\" title=\"Target Entity\">\n <i class=\"fa-solid fa-database\"></i>\n <span>{{ TargetEntityName }}</span>\n </span>\n <span class=\"rpf-pill\" title=\"Work Type\">\n <i [class]=\"WorkTypeIcon\"></i>\n <span>{{ record.WorkType || 'Not set' }}</span>\n </span>\n @if (record.WorkType === 'Infer') {\n <span class=\"rpf-pill rpf-pill-feature\" title=\"Feature Pipeline\">\n <i class=\"fa-solid fa-sparkles\"></i>\n <span>Feature Pipeline</span>\n </span>\n }\n </div>\n </div>\n </div>\n </div>\n\n <!-- KPI Summary Grid -->\n <div class=\"rpf-kpi-grid\">\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-filter\"></i> Target Scope</div>\n <div class=\"rpf-kpi-value\">{{ record.ScopeType || 'Filter' }}</div>\n <div class=\"rpf-kpi-sub\" [title]=\"record.ScopeFilter || 'All records in scope'\">\n {{ record.ScopeFilter ? record.ScopeFilter : 'No filter applied (all records)' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-bolt\"></i> Triggers</div>\n <div class=\"rpf-kpi-value\">\n @if (record.ScheduleEnabled) {\n <span>Scheduled</span>\n } @else if (record.OnChangeEnabled) {\n <span>On Change</span>\n } @else if (record.OnDemandEnabled) {\n <span>On Demand</span>\n } @else {\n <span class=\"muted\">Manual</span>\n }\n </div>\n <div class=\"rpf-kpi-sub\">\n @if (record.ScheduleEnabled && record.CronExpression) {\n <code>{{ record.CronExpression }}</code>\n } @else if (record.OnChangeEnabled) {\n <span>Mode: {{ record.OnChangeInvocationType || 'Immediate' }}</span>\n } @else {\n <span>On demand execution</span>\n }\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-water\"></i> Optimization</div>\n <div class=\"rpf-kpi-value\">{{ record.WatermarkStrategy || 'None' }}</div>\n <div class=\"rpf-kpi-sub\">\n Batch: {{ record.BatchSize || 'default' }} | Concurrency: {{ record.MaxConcurrency || '1' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-microchip\"></i> Skip Unchanged</div>\n <div class=\"rpf-kpi-value\">{{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"rpf-kpi-sub\">\n {{ record.SkipUnchanged ? 'Skips re-evaluating unchanged rows' : 'Processes all matching rows' }}\n </div>\n </div>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n PIPELINE CONFIGURATION (Visual Builder)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"pipelineConfiguration\"\n SectionName=\"Pipeline Configuration\"\n Icon=\"fa-solid fa-wand-magic-sparkles\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-pipeline-builder-wrap\">\n <mj-feature-pipeline-builder\n [Record]=\"record\"\n [EntityID]=\"record.EntityID\"\n (SpecChange)=\"OnPipelineSpecChange()\"\n (ValidChange)=\"OnPipelineValidChange($event)\">\n </mj-feature-pipeline-builder>\n </div>\n } @else if (record.WorkType === 'FieldRules') {\n <div class=\"rpf-editor-wrap\">\n <mj-record-process-editor\n [Record]=\"record\"\n [ShowToolbar]=\"false\"\n [Provider]=\"ProviderToUse\">\n </mj-record-process-editor>\n </div>\n } @else {\n <div class=\"rpf-generic-config-wrap\">\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <div>\n <strong>{{ record.WorkType || 'Custom' }} Execution Logic</strong>\n <p>Configure actions, prompts, and mappings in the <em>Process Definition</em> and <em>Execution Logic</em> sections below.</p>\n </div>\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n PRIOR RUNS & AUDIT (Embedded History)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processRuns\"\n SectionName=\"Prior Runs\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.IsSaved) {\n <div class=\"rpf-history-wrap\">\n <mj-record-process-history\n [RecordProcessID]=\"record.ID\">\n </mj-record-process-history>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>Save this record process to view execution history and per-record audit logs.</span>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details rail)\n ======================================== -->\n\n <!-- Process Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"processDefinition\"\n SectionName=\"Process Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CategoryID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"EntityID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Execution Logic Section -->\n <mj-collapsible-panel\n SectionKey=\"executionLogic\"\n SectionName=\"Execution Logic\"\n Icon=\"fa fa-play\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ActionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"InputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-filter\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeViewID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeListID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Triggers Section -->\n <mj-collapsible-panel\n SectionKey=\"triggers\"\n SectionName=\"Triggers\"\n Icon=\"fa fa-bolt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeInvocationType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduleEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CronExpression\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Timezone\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnDemandEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Performance and Optimization Section -->\n <mj-collapsible-panel\n SectionKey=\"performanceAndOptimization\"\n SectionName=\"Performance and Optimization\"\n Icon=\"fa fa-tachometer-alt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Record Process Watermarks Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRecordProcessWatermarks\"\n SectionName=\"Record Process Watermarks\"\n Icon=\"fa fa-water\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRecordProcessWatermarks')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Record Process Watermarks','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Record Process Watermarks','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRecordProcessWatermarks')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRecordProcessWatermarks', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ML Model Scoring Bindings Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLModelScoringBindings\"\n SectionName=\"ML Model Scoring Bindings\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLModelScoringBindings')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Values Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValues\"\n SectionName=\"Feature Values\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValues')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Values','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Values','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValues')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValues', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Value Caches Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValueCaches\"\n SectionName=\"Feature Value Caches\"\n Icon=\"fa fa-database\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValueCaches')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Value Caches','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Value Caches','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValueCaches')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValueCaches', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n", styles: ["/* ==========================================================================\n Record Process / Feature Pipeline Custom Form Styles\n Uses standard MemberJunction design tokens for full light & dark mode support.\n ========================================================================== */\n\n.rpf-overview-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 4px 0 12px 0;\n}\n\n/* Hero Header Card */\n.rpf-hero-card {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 10px;\n padding: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.rpf-hero-main {\n display: flex;\n align-items: flex-start;\n gap: 18px;\n}\n\n.rpf-hero-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary, #0284c7);\n font-size: 22px;\n flex-shrink: 0;\n}\n\n.rpf-hero-info {\n flex: 1;\n min-width: 0;\n}\n\n.rpf-hero-title-row {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.rpf-hero-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.3;\n}\n\n.rpf-hero-desc {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary, #64748b);\n line-height: 1.5;\n}\n\n.rpf-hero-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.rpf-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-pill-feature {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Status Badges */\n.rpf-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.rpf-badge-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n\n.rpf-status-active {\n background: var(--mj-status-success-bg, color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-success-text, var(--mj-status-success));\n border: 1px solid var(--mj-status-success-border, color-mix(in srgb, var(--mj-status-success) 30%, transparent));\n}\n.rpf-status-active .rpf-badge-dot {\n background: var(--mj-status-success);\n}\n\n.rpf-status-draft {\n background: var(--mj-status-warning-bg, color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n border: 1px solid var(--mj-status-warning-border, color-mix(in srgb, var(--mj-status-warning) 30%, transparent));\n}\n.rpf-status-draft .rpf-badge-dot {\n background: var(--mj-status-warning);\n}\n\n.rpf-status-disabled {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-subtle);\n}\n.rpf-status-disabled .rpf-badge-dot {\n background: var(--mj-text-muted);\n}\n\n.rpf-status-default {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #64748b);\n border: 1px solid var(--mj-border-subtle, #cbd5e1);\n}\n.rpf-status-default .rpf-badge-dot {\n background: var(--mj-text-secondary, #64748b);\n}\n\n/* KPI Grid */\n.rpf-kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.rpf-kpi-card {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.rpf-kpi-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #94a3b8);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-kpi-value {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-kpi-sub {\n font-size: 12px;\n color: var(--mj-text-secondary, #64748b);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.rpf-kpi-sub code {\n font-family: var(--mj-font-mono, monospace);\n font-size: 11px;\n padding: 1px 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border-radius: 4px;\n}\n\n/* Wrappers for child components */\n.rpf-pipeline-builder-wrap {\n padding: 8px 0;\n}\n\n.rpf-editor-wrap {\n padding: 8px 0;\n}\n\n.rpf-history-wrap {\n padding: 8px 0;\n}\n\n.rpf-notice-card {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n border-radius: 8px;\n color: var(--mj-text-secondary, #64748b);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.rpf-notice-card i {\n font-size: 16px;\n color: var(--mj-brand-primary, #0284c7);\n margin-top: 2px;\n}\n\n.rpf-notice-card strong {\n display: block;\n color: var(--mj-text-primary, #0f172a);\n margin-bottom: 2px;\n}\n\n.rpf-notice-card p {\n margin: 0;\n}\n"] }]
|
|
502
|
-
}], null,
|
|
503
|
-
|
|
1306
|
+
args: [{ standalone: false, selector: 'mj-record-process-form-extended', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n OVERVIEW & STATUS (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processOverview\"\n SectionName=\"Overview & Status\"\n Icon=\"fa-solid fa-gauge-high\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"rpf-overview-container\">\n <!-- Hero Header Card -->\n <div class=\"rpf-hero-card\">\n <div class=\"rpf-hero-main\">\n <div class=\"rpf-hero-icon-wrap\">\n <i [class]=\"WorkTypeIcon\"></i>\n </div>\n <div class=\"rpf-hero-info\">\n <div class=\"rpf-hero-title-row\">\n <h2 class=\"rpf-hero-title\">{{ record.Name || 'Untitled Process' }}</h2>\n <span class=\"rpf-badge\" [ngClass]=\"StatusBadgeClass\">\n <span class=\"rpf-badge-dot\"></span>\n {{ record.Status || 'Draft' }}\n </span>\n </div>\n <p class=\"rpf-hero-desc\">{{ record.Description || 'No description provided for this process.' }}</p>\n <div class=\"rpf-hero-pills\">\n <span class=\"rpf-pill\" title=\"Target Entity\">\n <i class=\"fa-solid fa-database\"></i>\n <span>{{ TargetEntityName }}</span>\n </span>\n <span class=\"rpf-pill\" title=\"Work Type\">\n <i [class]=\"WorkTypeIcon\"></i>\n <span>{{ record.WorkType || 'Not set' }}</span>\n </span>\n @if (record.WorkType === 'Infer') {\n <span class=\"rpf-pill rpf-pill-feature\" title=\"Feature Pipeline\">\n <i class=\"fa-solid fa-sparkles\"></i>\n <span>Feature Pipeline</span>\n </span>\n }\n </div>\n </div>\n </div>\n </div>\n\n <!-- KPI Summary Grid -->\n <div class=\"rpf-kpi-grid\">\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-filter\"></i> Target Scope</div>\n <div class=\"rpf-kpi-value\">{{ record.ScopeType || 'Filter' }}</div>\n <div class=\"rpf-kpi-sub\" [title]=\"record.ScopeFilter || 'All records in scope'\">\n {{ record.ScopeFilter ? record.ScopeFilter : 'No filter applied (all records)' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-bolt\"></i> Triggers</div>\n <div class=\"rpf-kpi-value\">\n @if (record.ScheduleEnabled) {\n <span>Scheduled</span>\n } @else if (record.OnChangeEnabled) {\n <span>On Change</span>\n } @else if (record.OnDemandEnabled) {\n <span>On Demand</span>\n } @else {\n <span class=\"muted\">Manual</span>\n }\n </div>\n <div class=\"rpf-kpi-sub\">\n @if (record.ScheduleEnabled && record.CronExpression) {\n <code>{{ record.CronExpression }}</code>\n } @else if (record.OnChangeEnabled) {\n <span>Mode: {{ record.OnChangeInvocationType || 'Immediate' }}</span>\n } @else {\n <span>On demand execution</span>\n }\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-water\"></i> Optimization</div>\n <div class=\"rpf-kpi-value\">{{ record.WatermarkStrategy || 'None' }}</div>\n <div class=\"rpf-kpi-sub\">\n Batch: {{ record.BatchSize || 'default' }} | Concurrency: {{ record.MaxConcurrency || '1' }}\n </div>\n </div>\n\n <div class=\"rpf-kpi-card\">\n <div class=\"rpf-kpi-label\"><i class=\"fa-solid fa-microchip\"></i> Skip Unchanged</div>\n <div class=\"rpf-kpi-value\">{{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}</div>\n <div class=\"rpf-kpi-sub\">\n {{ record.SkipUnchanged ? 'Skips re-evaluating unchanged rows' : 'Processes all matching rows' }}\n </div>\n </div>\n </div>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n PIPELINE CONFIGURATION (Visual Builder)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"pipelineConfiguration\"\n SectionName=\"Pipeline Configuration\"\n Icon=\"fa-solid fa-wand-magic-sparkles\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-pipeline-builder-wrap\">\n <mj-feature-pipeline-builder\n [Record]=\"record\"\n [EntityID]=\"record.EntityID\"\n [Provider]=\"ProviderToUse\"\n (SpecChange)=\"OnPipelineSpecChange()\"\n (ValidChange)=\"OnPipelineValidChange($event)\">\n </mj-feature-pipeline-builder>\n </div>\n } @else if (record.WorkType === 'FieldRules') {\n <div class=\"rpf-editor-wrap\">\n <mj-record-process-editor\n [Record]=\"record\"\n [ShowToolbar]=\"false\"\n [Provider]=\"ProviderToUse\">\n </mj-record-process-editor>\n </div>\n } @else {\n <div class=\"rpf-generic-config-wrap\">\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <div>\n <strong>{{ record.WorkType || 'Custom' }} Execution Logic</strong>\n <p>Configure actions, prompts, and mappings in the <em>Process Definition</em> and <em>Execution Logic</em> sections below.</p>\n </div>\n </div>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n PRIOR RUNS & AUDIT (Embedded History)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"processRuns\"\n SectionName=\"Prior Runs\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n @if (record.IsSaved) {\n <div class=\"rpf-history-wrap\">\n <mj-record-process-history\n [RecordProcessID]=\"record.ID\">\n </mj-record-process-history>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>Save this record process to view execution history and per-record audit logs.</span>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details rail)\n ======================================== -->\n\n <!-- Process Definition Section -->\n <mj-collapsible-panel\n SectionKey=\"processDefinition\"\n SectionName=\"Process Definition\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Name\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CategoryID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"EntityID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Status\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Execution Logic Section -->\n <mj-collapsible-panel\n SectionKey=\"executionLogic\"\n SectionName=\"Execution Logic\"\n Icon=\"fa fa-play\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n @if (record.WorkType === 'Infer') {\n <!-- Health & Schema Audit Bar -->\n <div class=\"rpf-audit-bar\" [class.rpf-audit-bar-warning]=\"!IsSpecValid\">\n <div class=\"rpf-audit-badges\">\n <div class=\"rpf-audit-chip\" [class.rpf-audit-chip-valid]=\"IsSpecValid\" [class.rpf-audit-chip-warning]=\"!IsSpecValid\">\n <i [class]=\"IsSpecValid ? 'fa-solid fa-shield-check' : 'fa-solid fa-triangle-exclamation'\"></i>\n <span>{{ IsSpecValid ? 'Configuration Valid' : 'Configuration Issues Found' }}</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-check-circle\" style=\"color: var(--mj-status-success);\"></i>\n <span>{{ BoundFeaturesCount }} of {{ TotalFeaturesCount }} Features Bound to Target</span>\n </div>\n <div class=\"rpf-audit-chip\">\n <i class=\"fa-solid fa-database\"></i>\n <span>Context: {{ ContextModeText }}</span>\n </div>\n </div>\n </div>\n\n <!-- AI Model & Context Query Section -->\n <div class=\"rpf-prompt-grid\">\n <!-- Prompt Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Bound AI Prompt</div>\n <div class=\"rpf-prompt-title\">\n <i class=\"fa-solid fa-message-code\"></i>\n <span>{{ record.PromptID ? 'Prompt Configured' : 'No Prompt Selected' }}</span>\n </div>\n <div class=\"rpf-chip-wrap\">\n @if (record.PromptID) {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\">ID: {{ record.PromptID.substring(0, 8) }}...</span>\n }\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-sparkles\"></i> Feature Infer Engine</span>\n <span class=\"rpf-sm-chip\"><i class=\"fa-solid fa-microchip\"></i> LLM Output Parser</span>\n </div>\n @if (EditMode) {\n <div style=\"margin-top: 10px;\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n </div>\n }\n </div>\n\n <!-- Parameters Resolution Card -->\n <div class=\"rpf-card-box\">\n <div class=\"rpf-box-eyebrow\">Prompt Parameter Resolution</div>\n @if (ParameterMappings.length > 0) {\n <div class=\"rpf-param-list\">\n @for (item of ParameterMappings; track item.Param) {\n <div class=\"rpf-param-row\">\n <span class=\"rpf-param-name\">{{ item.Param }}</span>\n <span>\n <i class=\"fa-solid fa-arrow-left rpf-param-arrow\"></i>\n <span>Column: <code>{{ item.Field }}</code></span>\n </span>\n </div>\n }\n </div>\n } @else {\n <div style=\"font-size: 12px; color: var(--mj-text-muted);\">\n No parameter bindings configured. Entire row context will be passed to prompt.\n </div>\n }\n </div>\n </div>\n\n <!-- Context Query Display -->\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-code\"></i> Context Retrieval Query\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ ContextQueryDisplay }}</code>\n </div>\n </div>\n\n <!-- Feature Output Schema & Entity Mappings Table -->\n <div class=\"rpf-table-wrap\">\n <table class=\"rpf-feature-table\">\n <thead>\n <tr>\n <th>Feature Name</th>\n <th>Kind / Type</th>\n <th>Validation Constraints</th>\n <th>Target Field Binding</th>\n <th>Reasoning</th>\n </tr>\n </thead>\n <tbody>\n @if (FeatureOutputs.length > 0) {\n @for (out of FeatureOutputs; track out.Name) {\n <tr>\n <td>\n <div class=\"rpf-feature-name-cell\">\n <i [class]=\"out.FeatureKind === 'numeric' ? 'fa-solid fa-chart-line' : 'fa-solid fa-tags'\"\n [style.color]=\"out.FeatureKind === 'numeric' ? '#f59e0b' : '#8b5cf6'\"></i>\n <span>{{ out.Name }}</span>\n </div>\n </td>\n <td>\n <span class=\"rpf-type-tag\"\n [class.rpf-type-numeric]=\"out.FeatureKind === 'numeric'\"\n [class.rpf-type-categorical]=\"out.FeatureKind === 'categorical'\"\n [class.rpf-type-default]=\"out.FeatureKind !== 'numeric' && out.FeatureKind !== 'categorical'\">\n {{ out.FeatureKind }}\n </span>\n </td>\n <td>\n <span class=\"rpf-sm-chip\" [title]=\"'Violation policy: ' + out.ViolationPolicy\">\n <i class=\"fa-solid fa-shield\"></i> {{ out.ConstraintSummary }}\n </span>\n </td>\n <td>\n <div class=\"rpf-binding-pill\">\n <i [class]=\"out.TargetFieldExists ? 'fa-solid fa-check-circle rpf-binding-valid' : 'fa-solid fa-triangle-exclamation rpf-binding-invalid'\"></i>\n <span>{{ TargetEntityName }}.<strong>{{ out.TargetField }}</strong></span>\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">({{ out.TargetFieldType }})</span>\n </div>\n </td>\n <td>\n @if (out.ReasoningTarget === 'Enabled') {\n <span class=\"rpf-sm-chip rpf-sm-chip-brand\"><i class=\"fa-solid fa-brain\"></i> Captured</span>\n } @else {\n <span style=\"color: var(--mj-text-muted); font-size: 11px;\">None</span>\n }\n </td>\n </tr>\n }\n } @else {\n <tr>\n <td colspan=\"5\" style=\"text-align: center; color: var(--mj-text-muted); padding: 20px;\">\n No output features defined yet. Use the <em>Pipeline Configuration</em> builder tab to add output features.\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <!-- Advanced Raw JSON Drawer -->\n <div class=\"rpf-raw-json-drawer\">\n <div class=\"rpf-raw-json-header\" (click)=\"ToggleRawJson()\">\n <div class=\"rpf-raw-json-title\">\n <i [class]=\"RawJsonExpanded ? 'fa-solid fa-chevron-down' : 'fa-solid fa-chevron-right'\"></i>\n <i class=\"fa-solid fa-code\"></i>\n <span>Power User Escape Hatch: View Raw Pipeline Configuration JSON</span>\n </div>\n <button type=\"button\" class=\"rpf-sm-chip\" (click)=\"$event.stopPropagation(); CopyRawJson()\">\n <i [class]=\"RawJsonCopied ? 'fa-solid fa-check' : 'fa-regular fa-copy'\"></i>\n <span>{{ RawJsonCopied ? 'Copied!' : 'Copy JSON' }}</span>\n </button>\n </div>\n @if (RawJsonExpanded) {\n <div class=\"rpf-raw-json-body\">\n <pre><code>{{ FormattedRawJson }}</code></pre>\n </div>\n }\n </div>\n\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WorkType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ActionID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"AgentID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PromptID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"InputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OutputMapping\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Configuration\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Scope Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"scopeConfiguration\"\n SectionName=\"Scope Configuration\"\n Icon=\"fa fa-filter\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-scope-infer-wrap\">\n <div class=\"rpf-scope-summary-row\">\n <div class=\"rpf-scope-badge-group\">\n <span class=\"rpf-scope-chip\">\n <i class=\"fa-solid fa-filter\"></i>\n <span>Scope Type: <strong>{{ record.ScopeType || 'Filter' }}</strong></span>\n </span>\n @if (record.ScopeFilter) {\n <span class=\"rpf-scope-chip rpf-scope-chip-brand\">\n <i class=\"fa-solid fa-calculator\"></i>\n <span>Filter Active</span>\n </span>\n }\n </div>\n </div>\n @if (FormattedScopeFilter) {\n <div class=\"rpf-sql-preview-box\">\n <div class=\"rpf-sql-preview-label\">\n <i class=\"fa-solid fa-database\"></i> SQL Scope Filter (WHERE clause)\n </div>\n <div class=\"rpf-sql-preview-code\">\n <code>{{ FormattedScopeFilter }}</code>\n </div>\n </div>\n } @else {\n <div class=\"rpf-notice-card\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <span>No scope filter applied. All records in <strong>{{ TargetEntityName }}</strong> will be evaluated.</span>\n </div>\n }\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n </div>\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeViewID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeListID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" LinkType=\"Record\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScopeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- Triggers Section -->\n <mj-collapsible-panel\n SectionKey=\"triggers\"\n SectionName=\"Triggers\"\n Icon=\"fa fa-bolt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeInvocationType\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnChangeFilter\" Type=\"code\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ScheduleEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"CronExpression\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Timezone\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"OnDemandEnabled\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Performance and Optimization Section -->\n <mj-collapsible-panel\n SectionKey=\"performanceAndOptimization\"\n SectionName=\"Performance and Optimization\"\n Icon=\"fa fa-tachometer-alt\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n @if (record.WorkType === 'Infer') {\n <div class=\"rpf-opt-grid\">\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Delta Watermark</div>\n <div class=\"rpf-opt-value\">{{ record.WatermarkStrategy || 'Checksum' }}</div>\n <div class=\"rpf-opt-sub\">Evaluates row state changes</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Batch Processing</div>\n <div class=\"rpf-opt-value\">{{ record.BatchSize || 100 }} records</div>\n <div class=\"rpf-opt-sub\">Per inference chunk</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Concurrency</div>\n <div class=\"rpf-opt-value\">{{ record.MaxConcurrency || 1 }} Parallel</div>\n <div class=\"rpf-opt-sub\">Concurrent worker threads</div>\n </div>\n <div class=\"rpf-opt-card\">\n <div class=\"rpf-opt-label\">Skip Unchanged</div>\n <div class=\"rpf-opt-value\" [class.rpf-text-success]=\"record.SkipUnchanged\">\n <i [class]=\"record.SkipUnchanged ? 'fa-solid fa-check' : 'fa-solid fa-minus'\"></i>\n {{ record.SkipUnchanged ? 'Enabled' : 'Disabled' }}\n </div>\n <div class=\"rpf-opt-sub\">Skips re-evaluating unchanged rows</div>\n </div>\n </div>\n @if (EditMode) {\n <div class=\"rpf-edit-fields-divider\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n }\n } @else {\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"SkipUnchanged\" Type=\"checkbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"WatermarkStrategy\" Type=\"select\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"BatchSize\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"MaxConcurrency\" Type=\"number\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n }\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-database\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"false\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Record Process Watermarks Section -->\n <mj-collapsible-panel\n SectionKey=\"mJRecordProcessWatermarks\"\n SectionName=\"Record Process Watermarks\"\n Icon=\"fa fa-water\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJRecordProcessWatermarks')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Record Process Watermarks','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Record Process Watermarks','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJRecordProcessWatermarks')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJRecordProcessWatermarks', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- ML Model Scoring Bindings Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLModelScoringBindings\"\n SectionName=\"ML Model Scoring Bindings\"\n Icon=\"fa fa-project-diagram\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLModelScoringBindings')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Values Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValues\"\n SectionName=\"Feature Values\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValues')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Values','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Values','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValues')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValues', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Feature Value Caches Section -->\n <mj-collapsible-panel\n SectionKey=\"mJFeatureValueCaches\"\n SectionName=\"Feature Value Caches\"\n Icon=\"fa fa-database\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJFeatureValueCaches')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Feature Value Caches','RecordProcessID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Feature Value Caches','RecordProcessID')\"\n [AllowLoad]=\"IsSectionExpanded('mJFeatureValueCaches')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJFeatureValueCaches', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n}\n", styles: ["/* ==========================================================================\n Record Process / Feature Pipeline Custom Form Styles\n Uses standard MemberJunction design tokens for full light & dark mode support.\n ========================================================================== */\n\n.rpf-overview-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 4px 0 12px 0;\n}\n\n/* Hero Header Card */\n.rpf-hero-card {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 10px;\n padding: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.rpf-hero-main {\n display: flex;\n align-items: flex-start;\n gap: 18px;\n}\n\n.rpf-hero-icon-wrap {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary, #0284c7);\n font-size: 22px;\n flex-shrink: 0;\n}\n\n.rpf-hero-info {\n flex: 1;\n min-width: 0;\n}\n\n.rpf-hero-title-row {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.rpf-hero-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.3;\n}\n\n.rpf-hero-desc {\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-text-secondary, #64748b);\n line-height: 1.5;\n}\n\n.rpf-hero-pills {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.rpf-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-pill-feature {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n/* Status Badges */\n.rpf-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.rpf-badge-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n\n.rpf-status-active {\n background: var(--mj-status-success-bg, color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-success-text, var(--mj-status-success));\n border: 1px solid var(--mj-status-success-border, color-mix(in srgb, var(--mj-status-success) 30%, transparent));\n}\n.rpf-status-active .rpf-badge-dot {\n background: var(--mj-status-success);\n}\n\n.rpf-status-draft {\n background: var(--mj-status-warning-bg, color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface)));\n color: var(--mj-status-warning-text, var(--mj-status-warning));\n border: 1px solid var(--mj-status-warning-border, color-mix(in srgb, var(--mj-status-warning) 30%, transparent));\n}\n.rpf-status-draft .rpf-badge-dot {\n background: var(--mj-status-warning);\n}\n\n.rpf-status-disabled {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-subtle);\n}\n.rpf-status-disabled .rpf-badge-dot {\n background: var(--mj-text-muted);\n}\n\n.rpf-status-default {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #64748b);\n border: 1px solid var(--mj-border-subtle, #cbd5e1);\n}\n.rpf-status-default .rpf-badge-dot {\n background: var(--mj-text-secondary, #64748b);\n}\n\n/* KPI Grid */\n.rpf-kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 12px;\n}\n\n.rpf-kpi-card {\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.rpf-kpi-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #94a3b8);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-kpi-value {\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-kpi-sub {\n font-size: 12px;\n color: var(--mj-text-secondary, #64748b);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.rpf-kpi-sub code {\n font-family: var(--mj-font-mono, monospace);\n font-size: 11px;\n padding: 1px 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border-radius: 4px;\n}\n\n/* Wrappers for child components */\n.rpf-pipeline-builder-wrap {\n padding: 8px 0;\n}\n\n.rpf-editor-wrap {\n padding: 8px 0;\n}\n\n.rpf-history-wrap {\n padding: 8px 0;\n}\n\n.rpf-notice-card {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n border-radius: 8px;\n color: var(--mj-text-secondary, #64748b);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.rpf-notice-card i {\n font-size: 16px;\n color: var(--mj-brand-primary, #0284c7);\n margin-top: 2px;\n}\n\n.rpf-notice-card strong {\n display: block;\n color: var(--mj-text-primary, #0f172a);\n margin-bottom: 2px;\n}\n\n.rpf-notice-card p {\n margin: 0;\n}\n\n/* ==========================================================================\n Option A: Semantic Cards for Infer Feature Pipeline Details\n ========================================================================== */\n\n/* Schema Health / Audit Banner */\n.rpf-audit-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 12px;\n padding: 10px 16px;\n background: var(--mj-bg-surface-elevated, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-left: 4px solid var(--mj-status-success, #22c55e);\n border-radius: 8px;\n margin-bottom: 16px;\n}\n\n.rpf-audit-bar-warning {\n border-left-color: var(--mj-status-warning, #f59e0b);\n}\n\n.rpf-audit-badges {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.rpf-audit-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-secondary, #475569);\n font-weight: 500;\n}\n\n.rpf-audit-chip-valid {\n color: var(--mj-status-success-text, #15803d);\n font-weight: 600;\n}\n\n.rpf-audit-chip-warning {\n color: var(--mj-status-warning-text, #b45309);\n font-weight: 600;\n}\n\n/* Prompt Card & Resolution Grid */\n.rpf-prompt-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 14px;\n margin-bottom: 16px;\n}\n\n@media (max-width: 768px) {\n .rpf-prompt-grid {\n grid-template-columns: 1fr;\n }\n}\n\n.rpf-card-box {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n}\n\n.rpf-box-eyebrow {\n font-size: 11px;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n}\n\n.rpf-prompt-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-brand-primary, #0076b6);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-chip-wrap {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 10px;\n}\n\n.rpf-sm-chip {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 2px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface, #ffffff);\n color: var(--mj-text-secondary, #475569);\n border: 1px solid var(--mj-border-subtle, #e2e8f0);\n}\n\n.rpf-sm-chip-brand {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n font-weight: 600;\n}\n\n.rpf-param-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.rpf-param-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n padding: 2px 0;\n}\n\n.rpf-param-name {\n font-family: var(--mj-font-mono, monospace);\n color: var(--mj-text-secondary, #475569);\n font-weight: 600;\n}\n\n.rpf-param-arrow {\n color: var(--mj-text-muted, #94a3b8);\n font-size: 10px;\n margin: 0 4px;\n}\n\n/* SQL / Code Display Boxes */\n.rpf-sql-preview-box {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n margin-bottom: 16px;\n}\n\n.rpf-sql-preview-label {\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.rpf-sql-preview-code {\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.6;\n overflow-x: auto;\n}\n\n/* Feature Schema Table */\n.rpf-table-wrap {\n overflow-x: auto;\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n background: var(--mj-bg-surface, #ffffff);\n margin-bottom: 16px;\n}\n\n.rpf-feature-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n\n.rpf-feature-table th {\n text-align: left;\n padding: 10px 14px;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n border-bottom: 2px solid var(--mj-border-default, #e2e8f0);\n}\n\n.rpf-feature-table td {\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-subtle, #f1f5f9);\n vertical-align: middle;\n}\n\n.rpf-feature-table tr:last-child td {\n border-bottom: none;\n}\n\n.rpf-feature-table tr:hover td {\n background: var(--mj-bg-surface-hover, #f8fafc);\n}\n\n.rpf-feature-name-cell {\n font-weight: 600;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-type-tag {\n font-size: 11px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 600;\n}\n\n.rpf-type-numeric {\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n\n.rpf-type-categorical {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info-text);\n}\n\n.rpf-type-default {\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-binding-pill {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.rpf-binding-valid {\n color: var(--mj-status-success, #22c55e);\n}\n\n.rpf-binding-invalid {\n color: var(--mj-status-warning, #f59e0b);\n}\n\n/* Optimization Grid */\n.rpf-opt-grid {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n\n@media (max-width: 900px) {\n .rpf-opt-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n.rpf-opt-card {\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n padding: 14px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n}\n\n.rpf-opt-label {\n font-size: 11px;\n text-transform: uppercase;\n font-weight: 700;\n color: var(--mj-text-muted, #94a3b8);\n letter-spacing: 0.5px;\n margin-bottom: 4px;\n}\n\n.rpf-opt-value {\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.rpf-opt-sub {\n font-size: 11px;\n color: var(--mj-text-secondary, #64748b);\n margin-top: 2px;\n}\n\n.rpf-text-success {\n color: var(--mj-status-success-text, #15803d) !important;\n}\n\n/* Raw JSON Accordion */\n.rpf-raw-json-drawer {\n border: 1px dashed var(--mj-border-default, #e2e8f0);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken, #f8fafc);\n margin-top: 20px;\n padding: 14px 16px;\n}\n\n.rpf-raw-json-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n user-select: none;\n}\n\n.rpf-raw-json-title {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary, #475569);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-raw-json-body {\n margin-top: 12px;\n}\n\n.rpf-raw-json-body pre {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: 6px;\n font-family: var(--mj-font-mono, monospace);\n font-size: 12px;\n color: var(--mj-text-primary, #0f172a);\n line-height: 1.5;\n max-height: 350px;\n overflow-y: auto;\n}\n\n.rpf-scope-infer-wrap {\n padding: 4px 0;\n}\n\n.rpf-scope-summary-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.rpf-scope-badge-group {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.rpf-scope-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 12px;\n background: var(--mj-bg-surface-sunken, #f1f5f9);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n color: var(--mj-text-secondary, #475569);\n}\n\n.rpf-scope-chip-brand {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n font-weight: 600;\n}\n\n.rpf-edit-fields-divider {\n margin-top: 16px;\n padding-top: 16px;\n border-top: 1px dashed var(--mj-border-default, #e2e8f0);\n}\n"] }]
|
|
1307
|
+
}], null, { pipelineBuilder: [{
|
|
1308
|
+
type: ViewChild,
|
|
1309
|
+
args: [FeaturePipelineBuilderComponent]
|
|
1310
|
+
}] }); })();
|
|
1311
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RecordProcessFormComponentExtended, { className: "RecordProcessFormComponentExtended", filePath: "src/lib/custom/RecordProcesses/record-process-form.component.ts", lineNumber: 269 }); })();
|
|
504
1312
|
/**
|
|
505
|
-
* Form policy ensuring the Overview
|
|
506
|
-
*
|
|
1313
|
+
* Form policy ensuring the Overview panel sits as the lead group
|
|
1314
|
+
* on the left-nav rail with proper title and icon.
|
|
507
1315
|
*/
|
|
508
1316
|
let RecordProcessFormPolicy = class RecordProcessFormPolicy extends BaseFormPolicy {
|
|
509
1317
|
DecorateChrome(spec, _ctx) {
|
|
1318
|
+
const detailsGroup = spec.Groups.find(g => g.Key === DETAILS_SECTION_KEY || g.Key === 'details');
|
|
1319
|
+
if (detailsGroup) {
|
|
1320
|
+
detailsGroup.Title = 'Overview';
|
|
1321
|
+
detailsGroup.Icon = 'fa-solid fa-gauge-high';
|
|
1322
|
+
detailsGroup.IsLead = true;
|
|
1323
|
+
}
|
|
510
1324
|
const overview = spec.Groups.find(g => g.Key === 'processOverview');
|
|
511
1325
|
if (overview) {
|
|
512
1326
|
overview.IsLead = true;
|