@memberjunction/ng-core-entity-forms 6.1.4 → 6.2.0-edge.1
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/README.md +22 -0
- 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-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 +794 -262
- 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 +686 -238
- 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/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 +209 -28
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +494 -138
- 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-form.component.d.ts +27 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js +193 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +75 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js +244 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +173 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +883 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -0
- 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 +133 -7
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +1268 -19
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- 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 +142 -17
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +333 -113
- 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 +217 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +549 -169
- 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 +390 -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 +1015 -343
- 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 +2 -2
- 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 +121 -14
- 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 +287 -79
- 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 +32 -30
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +21 -4
- 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/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +62 -26
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.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 +59 -51
- 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/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +33 -15
- package/dist/lib/generated/Entities/MJCredential/mjcredential.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 +100 -82
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -20
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +122 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +125 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.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 +23 -5
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.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/MJQuery/mjquery.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +11 -15
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +43 -7
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.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 +155 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +240 -237
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +11 -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 +122 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +236 -11
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +72 -13
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +577 -78
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +322 -124
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +43 -41
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { BaseFormPolicy, FormChromeContext, FormChromeSpec } from '@memberjunction/ng-base-forms';
|
|
3
|
+
import { MJMLModelFormComponent } from '../../generated/Entities/MJMLModel/mjmlmodel.form.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Custom form override for `MJ: ML Models` (priority 100).
|
|
7
|
+
* Presents the ML Model in a left-nav experience with:
|
|
8
|
+
* - Lead panel: "Overview & Lifecycle" (<ps-model-detail>)
|
|
9
|
+
* - Details card: Model Identity & Status, Schema & Configuration, Training & Performance
|
|
10
|
+
* - Related grids: ML Training Runs, ML Model Scoring Bindings
|
|
11
|
+
* - More folder: System Metadata
|
|
12
|
+
*/
|
|
13
|
+
export declare class MLModelFormComponentExtended extends MJMLModelFormComponent implements OnInit {
|
|
14
|
+
ngOnInit(): Promise<void>;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MLModelFormComponentExtended, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MLModelFormComponentExtended, "mj-ml-model-form-extended", never, {}, {}, never, never, false, never>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Policy ensuring that the Overview & Lifecycle panel sits as the lead group
|
|
20
|
+
* before the Details group on the left-nav rail.
|
|
21
|
+
*/
|
|
22
|
+
export declare class MLModelFormPolicy extends BaseFormPolicy {
|
|
23
|
+
DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec;
|
|
24
|
+
}
|
|
25
|
+
/** Tree-shaking guard so the override and policy register with the ClassFactory. */
|
|
26
|
+
export declare function LoadMLModelFormComponentExtended(): void;
|
|
27
|
+
//# sourceMappingURL=ml-model-form.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ml-model-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/MLModels/ml-model-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAqB,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6DAA6D,CAAC;;AAErG;;;;;;;GAOG;AACH,qBAOa,4BAA6B,SAAQ,sBAAuB,YAAW,MAAM;IACvE,QAAQ;yCADd,4BAA4B;2CAA5B,4BAA4B;CAaxC;AAED;;;GAGG;AACH,qBACa,iBAAkB,SAAQ,cAAc;IACjC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,GAAG,cAAc;CAYhG;AAED,oFAAoF;AACpF,wBAAgB,gCAAgC,IAAI,IAAI,CAGvD"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Component } from '@angular/core';
|
|
8
|
+
import { RegisterClass, RegisterClassEx } from '@memberjunction/global';
|
|
9
|
+
import { BaseFormComponent, BaseFormPolicy } from '@memberjunction/ng-base-forms';
|
|
10
|
+
import { MJMLModelFormComponent } from '../../generated/Entities/MJMLModel/mjmlmodel.form.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "./ps-model-detail.component";
|
|
13
|
+
import * as i2 from "@memberjunction/ng-base-forms";
|
|
14
|
+
function MLModelFormComponentExtended_Conditional_0_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
16
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 32);
|
|
17
|
+
i0.ɵɵlistener("Navigate", function MLModelFormComponentExtended_Conditional_0_Conditional_29_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MLModelFormComponentExtended_Conditional_0_Conditional_29_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJMLTrainingRuns", $event.totalRowCount)); });
|
|
18
|
+
i0.ɵɵelementEnd()();
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
21
|
+
i0.ɵɵadvance();
|
|
22
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: ML Training Runs", "ResultingModelID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: ML Training Runs", "ResultingModelID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJMLTrainingRuns"))("ShowToolbar", true);
|
|
23
|
+
} }
|
|
24
|
+
function MLModelFormComponentExtended_Conditional_0_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
26
|
+
i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 32);
|
|
27
|
+
i0.ɵɵlistener("Navigate", function MLModelFormComponentExtended_Conditional_0_Conditional_31_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function MLModelFormComponentExtended_Conditional_0_Conditional_31_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJMLModelScoringBindings", $event.totalRowCount)); });
|
|
28
|
+
i0.ɵɵelementEnd()();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
31
|
+
i0.ɵɵadvance();
|
|
32
|
+
i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: ML Model Scoring Bindings", "MLModelID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: ML Model Scoring Bindings", "MLModelID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJMLModelScoringBindings"))("ShowToolbar", true);
|
|
33
|
+
} }
|
|
34
|
+
function MLModelFormComponentExtended_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "mj-record-form-container", 1);
|
|
37
|
+
i0.ɵɵlistener("Navigate", function MLModelFormComponentExtended_Conditional_0_Template_mj_record_form_container_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("DeleteRequested", function MLModelFormComponentExtended_Conditional_0_Template_mj_record_form_container_DeleteRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteRequested()); })("FavoriteToggled", function MLModelFormComponentExtended_Conditional_0_Template_mj_record_form_container_FavoriteToggled_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFavoriteToggled()); })("HistoryRequested", function MLModelFormComponentExtended_Conditional_0_Template_mj_record_form_container_HistoryRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnHistoryRequested()); })("ListManagementRequested", function MLModelFormComponentExtended_Conditional_0_Template_mj_record_form_container_ListManagementRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnListManagementRequested()); });
|
|
38
|
+
i0.ɵɵelement(1, "mj-form-panel-slot", 2);
|
|
39
|
+
i0.ɵɵelementStart(2, "mj-collapsible-panel", 3)(3, "div", 4);
|
|
40
|
+
i0.ɵɵelement(4, "ps-model-detail", 5);
|
|
41
|
+
i0.ɵɵelementEnd()();
|
|
42
|
+
i0.ɵɵelementStart(5, "mj-collapsible-panel", 6);
|
|
43
|
+
i0.ɵɵelement(6, "mj-form-field", 7)(7, "mj-form-field", 8)(8, "mj-form-field", 9)(9, "mj-form-field", 10)(10, "mj-form-field", 11)(11, "mj-form-field", 12);
|
|
44
|
+
i0.ɵɵelementEnd();
|
|
45
|
+
i0.ɵɵelementStart(12, "mj-collapsible-panel", 13);
|
|
46
|
+
i0.ɵɵelement(13, "mj-form-field", 14)(14, "mj-form-field", 15)(15, "mj-form-field", 16)(16, "mj-form-field", 17);
|
|
47
|
+
i0.ɵɵelementEnd();
|
|
48
|
+
i0.ɵɵelementStart(17, "mj-collapsible-panel", 18);
|
|
49
|
+
i0.ɵɵelement(18, "mj-form-field", 19)(19, "mj-form-field", 20)(20, "mj-form-field", 21)(21, "mj-form-field", 22)(22, "mj-form-field", 23)(23, "mj-form-field", 24);
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
i0.ɵɵelementStart(24, "mj-collapsible-panel", 25);
|
|
52
|
+
i0.ɵɵelement(25, "mj-form-field", 26)(26, "mj-form-field", 27);
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
i0.ɵɵelement(27, "mj-form-panel-slot", 28);
|
|
55
|
+
i0.ɵɵelementStart(28, "mj-collapsible-panel", 29);
|
|
56
|
+
i0.ɵɵconditionalCreate(29, MLModelFormComponentExtended_Conditional_0_Conditional_29_Template, 2, 4, "div");
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
i0.ɵɵelementStart(30, "mj-collapsible-panel", 30);
|
|
59
|
+
i0.ɵɵconditionalCreate(31, MLModelFormComponentExtended_Conditional_0_Conditional_31_Template, 2, 4, "div");
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
i0.ɵɵelement(32, "mj-form-panel-slot", 31);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
65
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("FormComponent", ctx_r1);
|
|
66
|
+
i0.ɵɵadvance();
|
|
67
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
68
|
+
i0.ɵɵadvance();
|
|
69
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("DefaultExpanded", true);
|
|
70
|
+
i0.ɵɵadvance(2);
|
|
71
|
+
i0.ɵɵproperty("model", ctx_r1.record)("provider", ctx_r1.ProviderToUse)("currentUser", ctx_r1.ProviderToUse.CurrentUser ?? null);
|
|
72
|
+
i0.ɵɵadvance();
|
|
73
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
74
|
+
i0.ɵɵadvance();
|
|
75
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
76
|
+
i0.ɵɵadvance();
|
|
77
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
78
|
+
i0.ɵɵadvance();
|
|
79
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
80
|
+
i0.ɵɵadvance();
|
|
81
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
82
|
+
i0.ɵɵadvance();
|
|
83
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
84
|
+
i0.ɵɵadvance();
|
|
85
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
86
|
+
i0.ɵɵadvance();
|
|
87
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
88
|
+
i0.ɵɵadvance();
|
|
89
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
90
|
+
i0.ɵɵadvance();
|
|
91
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
94
|
+
i0.ɵɵadvance();
|
|
95
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
96
|
+
i0.ɵɵadvance();
|
|
97
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
98
|
+
i0.ɵɵadvance();
|
|
99
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
100
|
+
i0.ɵɵadvance();
|
|
101
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
102
|
+
i0.ɵɵadvance();
|
|
103
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
104
|
+
i0.ɵɵadvance();
|
|
105
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
106
|
+
i0.ɵɵadvance();
|
|
107
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
108
|
+
i0.ɵɵadvance();
|
|
109
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
110
|
+
i0.ɵɵadvance();
|
|
111
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
114
|
+
i0.ɵɵadvance();
|
|
115
|
+
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.EditMode)("FormContext", ctx_r1.formContext);
|
|
116
|
+
i0.ɵɵadvance();
|
|
117
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
118
|
+
i0.ɵɵadvance();
|
|
119
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJMLTrainingRuns"))("DefaultExpanded", false);
|
|
120
|
+
i0.ɵɵadvance();
|
|
121
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 29 : -1);
|
|
122
|
+
i0.ɵɵadvance();
|
|
123
|
+
i0.ɵɵproperty("Form", ctx_r1)("FormContext", ctx_r1.formContext)("BadgeCount", ctx_r1.GetSectionRowCount("mJMLModelScoringBindings"))("DefaultExpanded", false);
|
|
124
|
+
i0.ɵɵadvance();
|
|
125
|
+
i0.ɵɵconditional(ctx_r1.record.IsSaved ? 31 : -1);
|
|
126
|
+
i0.ɵɵadvance();
|
|
127
|
+
i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx_r1.record.EntityInfo.Name))("Record", ctx_r1.record)("FormComponent", ctx_r1)("FormContext", ctx_r1.formContext);
|
|
128
|
+
} }
|
|
129
|
+
/**
|
|
130
|
+
* Custom form override for `MJ: ML Models` (priority 100).
|
|
131
|
+
* Presents the ML Model in a left-nav experience with:
|
|
132
|
+
* - Lead panel: "Overview & Lifecycle" (<ps-model-detail>)
|
|
133
|
+
* - Details card: Model Identity & Status, Schema & Configuration, Training & Performance
|
|
134
|
+
* - Related grids: ML Training Runs, ML Model Scoring Bindings
|
|
135
|
+
* - More folder: System Metadata
|
|
136
|
+
*/
|
|
137
|
+
let MLModelFormComponentExtended = class MLModelFormComponentExtended extends MJMLModelFormComponent {
|
|
138
|
+
async ngOnInit() {
|
|
139
|
+
await super.ngOnInit();
|
|
140
|
+
this.initSections([
|
|
141
|
+
{ sectionKey: 'modelOverview', sectionName: 'Overview & Lifecycle', isExpanded: true },
|
|
142
|
+
{ sectionKey: 'modelIdentityStatus', sectionName: 'Model Identity & Status', isExpanded: true },
|
|
143
|
+
{ sectionKey: 'schemaConfiguration', sectionName: 'Schema & Configuration', isExpanded: true },
|
|
144
|
+
{ sectionKey: 'trainingPerformance', sectionName: 'Training & Performance', isExpanded: true },
|
|
145
|
+
{ sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },
|
|
146
|
+
{ sectionKey: 'mJMLTrainingRuns', sectionName: 'ML Training Runs', isExpanded: false },
|
|
147
|
+
{ sectionKey: 'mJMLModelScoringBindings', sectionName: 'ML Model Scoring Bindings', isExpanded: false }
|
|
148
|
+
]);
|
|
149
|
+
}
|
|
150
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMLModelFormComponentExtended_BaseFactory; return function MLModelFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMLModelFormComponentExtended_BaseFactory || (ɵMLModelFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MLModelFormComponentExtended)))(__ngFactoryType__ || MLModelFormComponentExtended); }; })(); }
|
|
151
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MLModelFormComponentExtended, selectors: [["mj-ml-model-form-extended"]], 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", "modelOverview", "SectionName", "Overview & Lifecycle", "Icon", "fa-solid fa-gauge-high", "Variant", "related-entity", 3, "Form", "FormContext", "DefaultExpanded"], [1, "ml-model-form-content"], [3, "model", "provider", "currentUser"], ["SectionKey", "modelIdentityStatus", "SectionName", "Model Identity & Status", "Icon", "fa fa-tag", 3, "Form", "FormContext"], ["FieldName", "PipelineID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Version", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AlgorithmID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ArtifactFileID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Lineage", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "schemaConfiguration", "SectionName", "Schema & Configuration", "Icon", "fa fa-sliders-h", 3, "Form", "FormContext"], ["FieldName", "FittedPreprocessing", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "FeatureSchema", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TargetVariable", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProblemType", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "trainingPerformance", "SectionName", "Training & Performance", "Icon", "fa fa-chart-line", 3, "Form", "FormContext"], ["FieldName", "Metrics", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "HoldoutMetrics", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "FeatureImportance", "Type", "code", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TrainedAt", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TrainingDurationSec", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TrainingRowCount", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext"], ["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", "mJMLTrainingRuns", "SectionName", "ML Training Runs", "Icon", "fa-solid fa-flask", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJMLModelScoringBindings", "SectionName", "ML Model Scoring Bindings", "Icon", "fa-solid fa-satellite-dish", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function MLModelFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
+
i0.ɵɵconditionalCreate(0, MLModelFormComponentExtended_Conditional_0_Template, 33, 113, "mj-record-form-container", 0);
|
|
153
|
+
} if (rf & 2) {
|
|
154
|
+
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
155
|
+
} }, dependencies: [i1.PSModelDetailComponent, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.ExplorerEntityDataGridComponent, i2.FormPanelSlotComponent], styles: [".ml-model-form-content[_ngcontent-%COMP%] {\n padding: 20px 24px;\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n box-sizing: border-box;\n}"] }); }
|
|
156
|
+
};
|
|
157
|
+
MLModelFormComponentExtended = __decorate([
|
|
158
|
+
RegisterClass(BaseFormComponent, 'MJ: ML Models', 100)
|
|
159
|
+
], MLModelFormComponentExtended);
|
|
160
|
+
export { MLModelFormComponentExtended };
|
|
161
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MLModelFormComponentExtended, [{
|
|
162
|
+
type: Component,
|
|
163
|
+
args: [{ standalone: false, selector: 'mj-ml-model-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 PANEL (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"modelOverview\"\n SectionName=\"Overview & Lifecycle\"\n Icon=\"fa-solid fa-gauge-high\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"ml-model-form-content\">\n <ps-model-detail\n [model]=\"record\"\n [provider]=\"ProviderToUse\"\n [currentUser]=\"ProviderToUse.CurrentUser ?? null\">\n </ps-model-detail>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details)\n ======================================== -->\n <!-- Model Identity & Status Section -->\n <mj-collapsible-panel\n SectionKey=\"modelIdentityStatus\"\n SectionName=\"Model Identity & Status\"\n Icon=\"fa fa-tag\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"PipelineID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Version\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"AlgorithmID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ArtifactFileID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Lineage\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Schema & Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"schemaConfiguration\"\n SectionName=\"Schema & Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FittedPreprocessing\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FeatureSchema\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TargetVariable\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProblemType\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Training & Performance Section -->\n <mj-collapsible-panel\n SectionKey=\"trainingPerformance\"\n SectionName=\"Training & Performance\"\n Icon=\"fa fa-chart-line\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Metrics\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"HoldoutMetrics\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FeatureImportance\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainedAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainingDurationSec\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainingRowCount\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></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-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></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 <!-- ML Training Runs Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLTrainingRuns\"\n SectionName=\"ML Training Runs\"\n Icon=\"fa-solid fa-flask\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLTrainingRuns')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Training Runs','ResultingModelID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Training Runs','ResultingModelID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLTrainingRuns')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLTrainingRuns', $event.totalRowCount)\"\n >\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-solid fa-satellite-dish\"\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','MLModelID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','MLModelID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\"\n >\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\n</mj-record-form-container>\n}\n", styles: [".ml-model-form-content {\n padding: 20px 24px;\n max-width: 1200px;\n margin: 0 auto;\n width: 100%;\n box-sizing: border-box;\n}\n"] }]
|
|
164
|
+
}], null, null); })();
|
|
165
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MLModelFormComponentExtended, { className: "MLModelFormComponentExtended", filePath: "src/lib/custom/MLModels/ml-model-form.component.ts", lineNumber: 21 }); })();
|
|
166
|
+
/**
|
|
167
|
+
* Policy ensuring that the Overview & Lifecycle panel sits as the lead group
|
|
168
|
+
* before the Details group on the left-nav rail.
|
|
169
|
+
*/
|
|
170
|
+
let MLModelFormPolicy = class MLModelFormPolicy extends BaseFormPolicy {
|
|
171
|
+
DecorateChrome(spec, _ctx) {
|
|
172
|
+
const overview = spec.Groups.find(g => g.Key === 'modelOverview');
|
|
173
|
+
if (overview) {
|
|
174
|
+
overview.IsLead = true;
|
|
175
|
+
const remaining = spec.Groups.filter(g => g.Key !== 'modelOverview');
|
|
176
|
+
return {
|
|
177
|
+
...spec,
|
|
178
|
+
Groups: [overview, ...remaining],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return spec;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
MLModelFormPolicy = __decorate([
|
|
185
|
+
RegisterClassEx(BaseFormPolicy, { key: 'MJ: ML Models', metadata: { entity: 'MJ: ML Models' } })
|
|
186
|
+
], MLModelFormPolicy);
|
|
187
|
+
export { MLModelFormPolicy };
|
|
188
|
+
/** Tree-shaking guard so the override and policy register with the ClassFactory. */
|
|
189
|
+
export function LoadMLModelFormComponentExtended() {
|
|
190
|
+
void MLModelFormComponentExtended;
|
|
191
|
+
void MLModelFormPolicy;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=ml-model-form.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ml-model-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/MLModels/ml-model-form.component.ts","../../../../src/lib/custom/MLModels/ml-model-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit } from '@angular/core';\nimport { RegisterClass, RegisterClassEx } from '@memberjunction/global';\nimport { BaseFormComponent, BaseFormPolicy, FormChromeContext, FormChromeSpec } from '@memberjunction/ng-base-forms';\nimport { MJMLModelFormComponent } from '../../generated/Entities/MJMLModel/mjmlmodel.form.component';\n\n/**\n * Custom form override for `MJ: ML Models` (priority 100).\n * Presents the ML Model in a left-nav experience with:\n * - Lead panel: \"Overview & Lifecycle\" (<ps-model-detail>)\n * - Details card: Model Identity & Status, Schema & Configuration, Training & Performance\n * - Related grids: ML Training Runs, ML Model Scoring Bindings\n * - More folder: System Metadata\n */\n@RegisterClass(BaseFormComponent, 'MJ: ML Models', 100)\n@Component({\n standalone: false,\n selector: 'mj-ml-model-form-extended',\n templateUrl: './ml-model-form.component.html',\n styleUrls: ['./ml-model-form.component.css'],\n})\nexport class MLModelFormComponentExtended extends MJMLModelFormComponent implements OnInit {\n override async ngOnInit() {\n await super.ngOnInit();\n this.initSections([\n { sectionKey: 'modelOverview', sectionName: 'Overview & Lifecycle', isExpanded: true },\n { sectionKey: 'modelIdentityStatus', sectionName: 'Model Identity & Status', isExpanded: true },\n { sectionKey: 'schemaConfiguration', sectionName: 'Schema & Configuration', isExpanded: true },\n { sectionKey: 'trainingPerformance', sectionName: 'Training & Performance', isExpanded: true },\n { sectionKey: 'systemMetadata', sectionName: 'System Metadata', isExpanded: false },\n { sectionKey: 'mJMLTrainingRuns', sectionName: 'ML Training Runs', isExpanded: false },\n { sectionKey: 'mJMLModelScoringBindings', sectionName: 'ML Model Scoring Bindings', isExpanded: false }\n ]);\n }\n}\n\n/**\n * Policy ensuring that the Overview & Lifecycle panel sits as the lead group\n * before the Details group on the left-nav rail.\n */\n@RegisterClassEx(BaseFormPolicy, { key: 'MJ: ML Models', metadata: { entity: 'MJ: ML Models' } })\nexport class MLModelFormPolicy extends BaseFormPolicy {\n public override DecorateChrome(spec: FormChromeSpec, _ctx: FormChromeContext): FormChromeSpec {\n const overview = spec.Groups.find(g => g.Key === 'modelOverview');\n if (overview) {\n overview.IsLead = true;\n const remaining = spec.Groups.filter(g => g.Key !== 'modelOverview');\n return {\n ...spec,\n Groups: [overview, ...remaining],\n };\n }\n return spec;\n }\n}\n\n/** Tree-shaking guard so the override and policy register with the ClassFactory. */\nexport function LoadMLModelFormComponentExtended(): void {\n void MLModelFormComponentExtended;\n void MLModelFormPolicy;\n}\n","@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 PANEL (Lead Panel)\n ======================================== -->\n <mj-collapsible-panel\n SectionKey=\"modelOverview\"\n SectionName=\"Overview & Lifecycle\"\n Icon=\"fa-solid fa-gauge-high\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [DefaultExpanded]=\"true\">\n <div class=\"ml-model-form-content\">\n <ps-model-detail\n [model]=\"record\"\n [provider]=\"ProviderToUse\"\n [currentUser]=\"ProviderToUse.CurrentUser ?? null\">\n </ps-model-detail>\n </div>\n </mj-collapsible-panel>\n\n <!-- ========================================\n FIELD PANELS (Fold into Details)\n ======================================== -->\n <!-- Model Identity & Status Section -->\n <mj-collapsible-panel\n SectionKey=\"modelIdentityStatus\"\n SectionName=\"Model Identity & Status\"\n Icon=\"fa fa-tag\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"PipelineID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Version\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"AlgorithmID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ArtifactFileID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Lineage\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Schema & Configuration Section -->\n <mj-collapsible-panel\n SectionKey=\"schemaConfiguration\"\n SectionName=\"Schema & Configuration\"\n Icon=\"fa fa-sliders-h\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FittedPreprocessing\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FeatureSchema\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TargetVariable\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProblemType\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n </mj-collapsible-panel>\n\n <!-- Training & Performance Section -->\n <mj-collapsible-panel\n SectionKey=\"trainingPerformance\"\n SectionName=\"Training & Performance\"\n Icon=\"fa fa-chart-line\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Metrics\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"HoldoutMetrics\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"FeatureImportance\"\n Type=\"code\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainedAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainingDurationSec\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TrainingRowCount\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></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-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></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 <!-- ML Training Runs Section -->\n <mj-collapsible-panel\n SectionKey=\"mJMLTrainingRuns\"\n SectionName=\"ML Training Runs\"\n Icon=\"fa-solid fa-flask\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJMLTrainingRuns')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: ML Training Runs','ResultingModelID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Training Runs','ResultingModelID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLTrainingRuns')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLTrainingRuns', $event.totalRowCount)\"\n >\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-solid fa-satellite-dish\"\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','MLModelID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: ML Model Scoring Bindings','MLModelID')\"\n [AllowLoad]=\"IsSectionExpanded('mJMLModelScoringBindings')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJMLModelScoringBindings', $event.totalRowCount)\"\n >\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\n</mj-record-form-container>\n}\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure view-model functions and types for ML Model detail and metrics rendering.
|
|
3
|
+
* Framework-free, deterministic calculations over plain model entity data.
|
|
4
|
+
*/
|
|
5
|
+
export interface PSFeatureBar {
|
|
6
|
+
name: string;
|
|
7
|
+
value: string;
|
|
8
|
+
pct: number;
|
|
9
|
+
warning: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface PSMetricDisplay {
|
|
12
|
+
key: string;
|
|
13
|
+
label: string;
|
|
14
|
+
value: string;
|
|
15
|
+
raw: number;
|
|
16
|
+
}
|
|
17
|
+
export type PSMetricKey = 'AUC' | 'Accuracy' | 'Precision' | 'Recall' | 'F1' | 'LogLoss' | 'R2' | 'RMSE' | 'MAE';
|
|
18
|
+
export type PSMetricMap = Partial<Record<PSMetricKey, number>>;
|
|
19
|
+
export declare const PS_KNOWN_METRIC_KEYS: readonly PSMetricKey[];
|
|
20
|
+
export declare const METRIC_LABELS: Record<PSMetricKey, string>;
|
|
21
|
+
export declare const PS_FEATURE_DOMINANCE_THRESHOLD = 0.6;
|
|
22
|
+
export declare function HumanizeFeatureName(name: string): string;
|
|
23
|
+
/** @deprecated Use {@link HumanizeFeatureName}. */
|
|
24
|
+
export declare function humanizeFeatureName(name: string): string;
|
|
25
|
+
export declare function ParseMetrics(json: string | null | undefined): PSMetricMap;
|
|
26
|
+
/** @deprecated Use {@link ParseMetrics}. */
|
|
27
|
+
export declare function parseMetrics(json: string | null | undefined): PSMetricMap;
|
|
28
|
+
export declare function CanonicalMetricKey(rawKey: string): PSMetricKey | null;
|
|
29
|
+
/** @deprecated Use {@link CanonicalMetricKey}. */
|
|
30
|
+
export declare function canonicalMetricKey(rawKey: string): PSMetricKey | null;
|
|
31
|
+
export declare function FormatMetricValue(key: PSMetricKey | string, val: number): string;
|
|
32
|
+
/** @deprecated Use {@link FormatMetricValue}. */
|
|
33
|
+
export declare function formatMetricValue(key: PSMetricKey | string, val: number): string;
|
|
34
|
+
export declare function PrimaryModelScore(model: {
|
|
35
|
+
Metrics?: string | null;
|
|
36
|
+
HoldoutMetrics?: string | null;
|
|
37
|
+
ProblemType?: string | null;
|
|
38
|
+
}): {
|
|
39
|
+
key: PSMetricKey;
|
|
40
|
+
label: string;
|
|
41
|
+
value: number;
|
|
42
|
+
} | null;
|
|
43
|
+
/** @deprecated Use {@link PrimaryModelScore}. */
|
|
44
|
+
export declare function primaryModelScore(model: {
|
|
45
|
+
Metrics?: string | null;
|
|
46
|
+
HoldoutMetrics?: string | null;
|
|
47
|
+
ProblemType?: string | null;
|
|
48
|
+
}): {
|
|
49
|
+
key: PSMetricKey;
|
|
50
|
+
label: string;
|
|
51
|
+
value: number;
|
|
52
|
+
} | null;
|
|
53
|
+
export declare function MetricsToDisplay(metrics: PSMetricMap, options?: {
|
|
54
|
+
excludeAuc?: boolean;
|
|
55
|
+
}): PSMetricDisplay[];
|
|
56
|
+
/** @deprecated Use {@link MetricsToDisplay}. */
|
|
57
|
+
export declare function metricsToDisplay(metrics: PSMetricMap, options?: {
|
|
58
|
+
excludeAuc?: boolean;
|
|
59
|
+
}): PSMetricDisplay[];
|
|
60
|
+
export declare function ParseFeatureImportance(raw: string | null | undefined, topN?: number): PSFeatureBar[];
|
|
61
|
+
/** @deprecated Use {@link ParseFeatureImportance}. */
|
|
62
|
+
export declare function parseFeatureImportance(raw: string | null | undefined, topN?: number): PSFeatureBar[];
|
|
63
|
+
export declare function MaxFeatureImportance(raw: string | null | undefined): number | null;
|
|
64
|
+
/** @deprecated Use {@link MaxFeatureImportance}. */
|
|
65
|
+
export declare function maxFeatureImportance(raw: string | null | undefined): number | null;
|
|
66
|
+
export declare function OverfitGap(model: {
|
|
67
|
+
Metrics?: string | null;
|
|
68
|
+
HoldoutMetrics?: string | null;
|
|
69
|
+
}): number | null;
|
|
70
|
+
/** @deprecated Use {@link OverfitGap}. */
|
|
71
|
+
export declare function overfitGap(model: {
|
|
72
|
+
Metrics?: string | null;
|
|
73
|
+
HoldoutMetrics?: string | null;
|
|
74
|
+
}): number | null;
|
|
75
|
+
//# sourceMappingURL=ml-model-view-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ml-model-view-models.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/MLModels/ml-model-view-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure view-model functions and types for ML Model detail and metrics rendering.
|
|
3
|
+
* Framework-free, deterministic calculations over plain model entity data.
|
|
4
|
+
*/
|
|
5
|
+
export const PS_KNOWN_METRIC_KEYS = [
|
|
6
|
+
'AUC',
|
|
7
|
+
'Accuracy',
|
|
8
|
+
'Precision',
|
|
9
|
+
'Recall',
|
|
10
|
+
'F1',
|
|
11
|
+
'LogLoss',
|
|
12
|
+
'R2',
|
|
13
|
+
'RMSE',
|
|
14
|
+
'MAE',
|
|
15
|
+
];
|
|
16
|
+
export const METRIC_LABELS = {
|
|
17
|
+
AUC: 'AUC (ROC)',
|
|
18
|
+
Accuracy: 'Accuracy',
|
|
19
|
+
Precision: 'Precision',
|
|
20
|
+
Recall: 'Recall',
|
|
21
|
+
F1: 'F1 Score',
|
|
22
|
+
LogLoss: 'Log Loss',
|
|
23
|
+
R2: 'R² (Fit)',
|
|
24
|
+
RMSE: 'RMSE',
|
|
25
|
+
MAE: 'MAE',
|
|
26
|
+
};
|
|
27
|
+
const METRIC_ALIASES = {
|
|
28
|
+
auc: 'AUC',
|
|
29
|
+
'roc-auc': 'AUC',
|
|
30
|
+
roc_auc: 'AUC',
|
|
31
|
+
acc: 'Accuracy',
|
|
32
|
+
accuracy: 'Accuracy',
|
|
33
|
+
prec: 'Precision',
|
|
34
|
+
precision: 'Precision',
|
|
35
|
+
rec: 'Recall',
|
|
36
|
+
recall: 'Recall',
|
|
37
|
+
f1: 'F1',
|
|
38
|
+
'f1-score': 'F1',
|
|
39
|
+
f1_score: 'F1',
|
|
40
|
+
logloss: 'LogLoss',
|
|
41
|
+
'log-loss': 'LogLoss',
|
|
42
|
+
log_loss: 'LogLoss',
|
|
43
|
+
r2: 'R2',
|
|
44
|
+
'r-squared': 'R2',
|
|
45
|
+
r_squared: 'R2',
|
|
46
|
+
rmse: 'RMSE',
|
|
47
|
+
mae: 'MAE',
|
|
48
|
+
};
|
|
49
|
+
export const PS_FEATURE_DOMINANCE_THRESHOLD = 0.6;
|
|
50
|
+
export function HumanizeFeatureName(name) {
|
|
51
|
+
if (!name)
|
|
52
|
+
return '';
|
|
53
|
+
return name
|
|
54
|
+
.replace(/^Is([A-Z])/, '$1')
|
|
55
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
56
|
+
.replace(/_/g, ' ')
|
|
57
|
+
.trim()
|
|
58
|
+
.replace(/\b[a-z]/g, (c) => c.toUpperCase());
|
|
59
|
+
}
|
|
60
|
+
/** @deprecated Use {@link HumanizeFeatureName}. */
|
|
61
|
+
export function humanizeFeatureName(name) {
|
|
62
|
+
return HumanizeFeatureName(name);
|
|
63
|
+
}
|
|
64
|
+
export function ParseMetrics(json) {
|
|
65
|
+
if (!json)
|
|
66
|
+
return {};
|
|
67
|
+
let parsed;
|
|
68
|
+
try {
|
|
69
|
+
parsed = JSON.parse(json);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
75
|
+
return {};
|
|
76
|
+
const out = {};
|
|
77
|
+
for (const [rawKey, rawVal] of Object.entries(parsed)) {
|
|
78
|
+
const value = typeof rawVal === 'number' && Number.isFinite(rawVal) ? rawVal : null;
|
|
79
|
+
if (value == null)
|
|
80
|
+
continue;
|
|
81
|
+
const canonical = CanonicalMetricKey(rawKey);
|
|
82
|
+
if (canonical && out[canonical] == null)
|
|
83
|
+
out[canonical] = value;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
/** @deprecated Use {@link ParseMetrics}. */
|
|
88
|
+
export function parseMetrics(json) {
|
|
89
|
+
return ParseMetrics(json);
|
|
90
|
+
}
|
|
91
|
+
export function CanonicalMetricKey(rawKey) {
|
|
92
|
+
const exact = PS_KNOWN_METRIC_KEYS.find((k) => k === rawKey);
|
|
93
|
+
if (exact)
|
|
94
|
+
return exact;
|
|
95
|
+
return METRIC_ALIASES[rawKey.trim().toLowerCase()] ?? null;
|
|
96
|
+
}
|
|
97
|
+
/** @deprecated Use {@link CanonicalMetricKey}. */
|
|
98
|
+
export function canonicalMetricKey(rawKey) {
|
|
99
|
+
return CanonicalMetricKey(rawKey);
|
|
100
|
+
}
|
|
101
|
+
export function FormatMetricValue(key, val) {
|
|
102
|
+
if (!Number.isFinite(val))
|
|
103
|
+
return '—';
|
|
104
|
+
switch (key) {
|
|
105
|
+
case 'AUC':
|
|
106
|
+
case 'Accuracy':
|
|
107
|
+
case 'Precision':
|
|
108
|
+
case 'Recall':
|
|
109
|
+
case 'F1':
|
|
110
|
+
case 'R2':
|
|
111
|
+
return val.toFixed(3);
|
|
112
|
+
case 'LogLoss':
|
|
113
|
+
case 'RMSE':
|
|
114
|
+
case 'MAE':
|
|
115
|
+
return val < 10 ? val.toFixed(3) : val.toLocaleString(undefined, { maximumFractionDigits: 2 });
|
|
116
|
+
default:
|
|
117
|
+
return val.toFixed(3);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** @deprecated Use {@link FormatMetricValue}. */
|
|
121
|
+
export function formatMetricValue(key, val) {
|
|
122
|
+
return FormatMetricValue(key, val);
|
|
123
|
+
}
|
|
124
|
+
export function PrimaryModelScore(model) {
|
|
125
|
+
const isReg = (model.ProblemType ?? '').toLowerCase() === 'regression';
|
|
126
|
+
const holdout = ParseMetrics(model.HoldoutMetrics);
|
|
127
|
+
const train = ParseMetrics(model.Metrics);
|
|
128
|
+
if (isReg) {
|
|
129
|
+
for (const k of ['R2', 'RMSE', 'MAE']) {
|
|
130
|
+
if (holdout[k] != null)
|
|
131
|
+
return { key: k, label: METRIC_LABELS[k], value: holdout[k] };
|
|
132
|
+
}
|
|
133
|
+
for (const k of ['R2', 'RMSE', 'MAE']) {
|
|
134
|
+
if (train[k] != null)
|
|
135
|
+
return { key: k, label: METRIC_LABELS[k], value: train[k] };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
for (const k of ['AUC', 'Accuracy', 'F1', 'R2', 'RMSE']) {
|
|
139
|
+
if (holdout[k] != null)
|
|
140
|
+
return { key: k, label: METRIC_LABELS[k], value: holdout[k] };
|
|
141
|
+
}
|
|
142
|
+
for (const k of ['AUC', 'Accuracy', 'F1', 'R2', 'RMSE']) {
|
|
143
|
+
if (train[k] != null)
|
|
144
|
+
return { key: k, label: METRIC_LABELS[k], value: train[k] };
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
/** @deprecated Use {@link PrimaryModelScore}. */
|
|
149
|
+
export function primaryModelScore(model) {
|
|
150
|
+
return PrimaryModelScore(model);
|
|
151
|
+
}
|
|
152
|
+
export function MetricsToDisplay(metrics, options = {}) {
|
|
153
|
+
const out = [];
|
|
154
|
+
for (const k of PS_KNOWN_METRIC_KEYS) {
|
|
155
|
+
if (options.excludeAuc && k === 'AUC')
|
|
156
|
+
continue;
|
|
157
|
+
const v = metrics[k];
|
|
158
|
+
if (v != null) {
|
|
159
|
+
out.push({
|
|
160
|
+
key: k,
|
|
161
|
+
label: METRIC_LABELS[k] ?? k,
|
|
162
|
+
value: FormatMetricValue(k, v),
|
|
163
|
+
raw: v,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return out;
|
|
168
|
+
}
|
|
169
|
+
/** @deprecated Use {@link MetricsToDisplay}. */
|
|
170
|
+
export function metricsToDisplay(metrics, options = {}) {
|
|
171
|
+
return MetricsToDisplay(metrics, options);
|
|
172
|
+
}
|
|
173
|
+
export function ParseFeatureImportance(raw, topN = 6) {
|
|
174
|
+
if (!raw)
|
|
175
|
+
return [];
|
|
176
|
+
let parsed;
|
|
177
|
+
try {
|
|
178
|
+
parsed = JSON.parse(raw);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
const entries = [];
|
|
184
|
+
if (Array.isArray(parsed)) {
|
|
185
|
+
for (const item of parsed) {
|
|
186
|
+
const name = typeof item?.feature === 'string' ? item.feature : typeof item?.name === 'string' ? item.name : '';
|
|
187
|
+
const rawVal = typeof item?.importance === 'number' ? item.importance : typeof item?.weight === 'number' ? item.weight : typeof item?.value === 'number' ? item.value : NaN;
|
|
188
|
+
const val = Number(rawVal);
|
|
189
|
+
if (name && Number.isFinite(val)) {
|
|
190
|
+
entries.push({ name, val: Math.abs(val) });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
else if (parsed && typeof parsed === 'object') {
|
|
195
|
+
for (const [k, v] of Object.entries(parsed)) {
|
|
196
|
+
const val = typeof v === 'number' && Number.isFinite(v) ? Math.abs(v) : NaN;
|
|
197
|
+
if (k && Number.isFinite(val)) {
|
|
198
|
+
entries.push({ name: k, val });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (entries.length === 0)
|
|
203
|
+
return [];
|
|
204
|
+
entries.sort((a, b) => b.val - a.val);
|
|
205
|
+
const sliced = entries.slice(0, topN);
|
|
206
|
+
const max = sliced[0]?.val ?? 1;
|
|
207
|
+
return sliced.map((e) => ({
|
|
208
|
+
name: e.name,
|
|
209
|
+
value: e.val < 1 ? e.val.toFixed(3) : e.val.toFixed(1),
|
|
210
|
+
pct: max > 0 ? Math.round((e.val / max) * 100) : 0,
|
|
211
|
+
warning: e.val >= PS_FEATURE_DOMINANCE_THRESHOLD,
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
/** @deprecated Use {@link ParseFeatureImportance}. */
|
|
215
|
+
export function parseFeatureImportance(raw, topN = 6) {
|
|
216
|
+
return ParseFeatureImportance(raw, topN);
|
|
217
|
+
}
|
|
218
|
+
export function MaxFeatureImportance(raw) {
|
|
219
|
+
const bars = ParseFeatureImportance(raw, 1);
|
|
220
|
+
if (bars.length === 0)
|
|
221
|
+
return null;
|
|
222
|
+
const num = parseFloat(bars[0].value);
|
|
223
|
+
return Number.isFinite(num) ? num : null;
|
|
224
|
+
}
|
|
225
|
+
/** @deprecated Use {@link MaxFeatureImportance}. */
|
|
226
|
+
export function maxFeatureImportance(raw) {
|
|
227
|
+
return MaxFeatureImportance(raw);
|
|
228
|
+
}
|
|
229
|
+
export function OverfitGap(model) {
|
|
230
|
+
const train = ParseMetrics(model.Metrics);
|
|
231
|
+
const holdout = ParseMetrics(model.HoldoutMetrics);
|
|
232
|
+
if (train.AUC != null && holdout.AUC != null) {
|
|
233
|
+
return train.AUC - holdout.AUC;
|
|
234
|
+
}
|
|
235
|
+
if (train.R2 != null && holdout.R2 != null) {
|
|
236
|
+
return train.R2 - holdout.R2;
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
/** @deprecated Use {@link OverfitGap}. */
|
|
241
|
+
export function overfitGap(model) {
|
|
242
|
+
return OverfitGap(model);
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=ml-model-view-models.js.map
|