@memberjunction/ng-core-entity-forms 6.2.0 → 6.3.0-edge.0
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 +5 -6
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +862 -812
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
- 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 +821 -763
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
- 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 +223 -175
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +502 -453
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +3 -3
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +836 -801
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +355 -338
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +493 -444
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +118 -74
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +471 -451
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
- 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 +5 -0
- 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 +453 -433
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +3 -3
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
- 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 +276 -216
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -1
- package/dist/lib/custom/custom-forms.module.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 +32 -14
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.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 +44 -36
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +452 -443
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -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.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +2 -2
- package/dist/lib/shared/phone-hero.d.ts +17 -0
- package/dist/lib/shared/phone-hero.d.ts.map +1 -0
- package/dist/lib/shared/phone-hero.js +30 -0
- package/dist/lib/shared/phone-hero.js.map +1 -0
- package/dist/lib/shared/phone-sections-state.d.ts +28 -0
- package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
- package/dist/lib/shared/phone-sections-state.js +38 -0
- package/dist/lib/shared/phone-sections-state.js.map +1 -0
- package/package.json +50 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-model-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/MLModels/ps-model-detail.component.ts","../../../../src/lib/custom/MLModels/ps-model-detail.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { IMetadataProvider, UserInfo } from '@memberjunction/core';\nimport {\n MJMLModelEntity,\n PredictiveStudioPromoteModelOperation,\n PredictiveStudioModelTargetStatus,\n} from '@memberjunction/core-entities';\nimport { ImportanceDisplay } from '@memberjunction/predictive-studio-core';\n\nimport {\n PSFeatureBar,\n PSMetricDisplay,\n PS_FEATURE_DOMINANCE_THRESHOLD,\n FormatMetricValue,\n HumanizeFeatureName,\n MaxFeatureImportance,\n MetricsToDisplay,\n ModelImportanceView,\n OverfitGap,\n ParseFeatureImportance,\n ParseMetrics,\n PrimaryModelScore,\n} from './ml-model-view-models';\n\n/** A pending promote/archive action awaiting user confirmation. */\ninterface PendingPromotion {\n modelId: string;\n modelName: string;\n targetStatus: PredictiveStudioModelTargetStatus;\n leakageFlagged: boolean;\n}\n\n/**\n * **PSModelDetailComponent** — Unified enterprise component for inspecting, evaluating,\n * and promoting versioned ML Models. Shared between:\n * 1. **Predictive Studio Model Registry** (`PSRegistryComponent`)\n * 2. **Custom Entity Form for `MJ: ML Models`** (`MLModelFormComponentExtended`)\n *\n * Renders:\n * - Identity & immutable snapshot badge\n * - Progressive 4-stage lifecycle stepper (Draft → Validated → Published → Archived)\n * - In-sample train vs out-of-sample holdout performance cards and overfit gap check\n * - Key feature importance rankings with single-feature dominance warnings\n * - Target leakage gate verification and required sign-off rationale capture\n * - Remote Operation lifecycle promotion (Validate, Publish, Archive)\n */\n@Component({\n standalone: true,\n selector: 'ps-model-detail',\n templateUrl: './ps-model-detail.component.html',\n styleUrls: ['./ps-model-detail.component.css'],\n imports: [CommonModule, FormsModule, MJButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PSModelDetailComponent {\n @Input() Model: MJMLModelEntity | null = null;\n\n /** @deprecated Use {@link Model}. */\n @Input() set model(value: MJMLModelEntity | null) {\n this.Model = value;\n }\n /** @deprecated Use {@link Model}. */\n get model(): MJMLModelEntity | null {\n return this.Model;\n }\n @Input() Provider: IMetadataProvider | null = null;\n\n /** @deprecated Use {@link Provider}. */\n @Input() set provider(value: IMetadataProvider | null) {\n this.Provider = value;\n }\n /** @deprecated Use {@link Provider}. */\n get provider(): IMetadataProvider | null {\n return this.Provider;\n }\n @Input() CurrentUser: UserInfo | null = null;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo | null) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo | null {\n return this.CurrentUser;\n }\n @Input() ShowActions = true;\n\n /** @deprecated Use {@link ShowActions}. */\n @Input() set showActions(value: PSModelDetailComponent['ShowActions']) {\n this.ShowActions = value;\n }\n /** @deprecated Use {@link ShowActions}. */\n get showActions(): PSModelDetailComponent['ShowActions'] {\n return this.ShowActions;\n }\n\n @Output() StatusChanged = new EventEmitter<{ modelId: string; newStatus: string }>();\n\n /**\n * @deprecated Use {@link StatusChanged}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (statusChanged) keeps working. Must stay AFTER StatusChanged: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() statusChanged = this.StatusChanged;\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly notifications = inject(MJNotificationService);\n\n public readonly LifecycleSteps = ['Draft', 'Validated', 'Published', 'Archived'] as const;\n\n /** @deprecated Use {@link LifecycleSteps}. */\n public get lifecycleSteps() {\n return this.LifecycleSteps;\n }\n public readonly DominanceThreshold = PS_FEATURE_DOMINANCE_THRESHOLD.toFixed(2);\n\n /** @deprecated Use {@link DominanceThreshold}. */\n public get dominanceThreshold() {\n return this.DominanceThreshold;\n }\n\n public Pending: PendingPromotion | null = null;\n\n /** @deprecated Use {@link Pending}. */\n public get pending(): PendingPromotion | null {\n return this.Pending;\n }\n /** @deprecated Use {@link Pending}. */\n public set pending(value: PendingPromotion | null) {\n this.Pending = value;\n }\n public PendingReason = '';\n\n /** @deprecated Use {@link PendingReason}. */\n public get pendingReason() {\n return this.PendingReason;\n }\n /** @deprecated Use {@link PendingReason}. */\n public set pendingReason(value) {\n this.PendingReason = value;\n }\n public Busy = false;\n\n /** @deprecated Use {@link Busy}. */\n public get busy() {\n return this.Busy;\n }\n /** @deprecated Use {@link Busy}. */\n public set busy(value) {\n this.Busy = value;\n }\n\n @Input() displayName?: string;\n\n public get ModelDisplayName(): string {\n if (this.displayName) return this.displayName;\n if (!this.Model) return '';\n return this.Model.Pipeline || (this.Model.Algorithm ? `${this.Model.Algorithm} Model` : 'ML Model');\n }\n\n /** @deprecated Use {@link ModelDisplayName}. */\n public get modelDisplayName(): string {\n return this.ModelDisplayName;\n }\n\n // ── Badges & Lifecycle Stepper ──\n\n public StatusBadgeClass(status: string | null | undefined): string {\n switch ((status ?? '').toLowerCase()) {\n case 'published':\n return 'green';\n case 'validated':\n return 'blue';\n case 'draft':\n return 'amber';\n case 'archived':\n return 'gray';\n default:\n return 'gray';\n }\n }\n\n /** @deprecated Use {@link StatusBadgeClass}. */\n public statusBadgeClass(status: string | null | undefined): string {\n return this.StatusBadgeClass(status);\n }\n\n public StepState(step: string): 'done' | 'curr' | 'todo' {\n const order = ['Draft', 'Validated', 'Published', 'Archived'];\n const currIdx = order.indexOf(this.Model?.Status ?? 'Draft');\n const stepIdx = order.indexOf(step);\n if (stepIdx < currIdx) return 'done';\n if (stepIdx === currIdx) return 'curr';\n return 'todo';\n }\n\n /** @deprecated Use {@link StepState}. */\n public stepState(step: string): 'done' | 'curr' | 'todo' {\n return this.StepState(step);\n }\n\n public get TargetSuffix(): string {\n const target = this.Model?.TargetVariable;\n return target ? ` · predicts ${target}` : '';\n }\n\n /** @deprecated Use {@link TargetSuffix}. */\n public get targetSuffix(): string {\n return this.TargetSuffix;\n }\n\n // ── Metrics & Performance Derivations ──\n\n public get PrimaryScoreLabel(): string {\n if (!this.Model) return 'Score';\n const score = PrimaryModelScore(this.Model);\n return score?.label ?? 'AUC';\n }\n\n /** @deprecated Use {@link PrimaryScoreLabel}. */\n public get primaryScoreLabel(): string {\n return this.PrimaryScoreLabel;\n }\n\n public get TrainPrimaryScore(): string {\n if (!this.Model) return '—';\n const score = PrimaryModelScore(this.Model);\n const trainMetrics = ParseMetrics(this.Model.Metrics);\n if (score && trainMetrics[score.key] != null) {\n return FormatMetricValue(score.key, trainMetrics[score.key]!);\n }\n return trainMetrics.AUC != null ? trainMetrics.AUC.toFixed(3) : '—';\n }\n\n /** @deprecated Use {@link TrainPrimaryScore}. */\n public get trainPrimaryScore(): string {\n return this.TrainPrimaryScore;\n }\n\n public get HoldoutPrimaryScore(): string {\n if (!this.Model) return '—';\n const score = PrimaryModelScore(this.Model);\n const holdoutMetrics = ParseMetrics(this.Model.HoldoutMetrics);\n if (score && holdoutMetrics[score.key] != null) {\n return FormatMetricValue(score.key, holdoutMetrics[score.key]!);\n }\n return holdoutMetrics.AUC != null ? holdoutMetrics.AUC.toFixed(3) : '—';\n }\n\n /** @deprecated Use {@link HoldoutPrimaryScore}. */\n public get holdoutPrimaryScore(): string {\n return this.HoldoutPrimaryScore;\n }\n\n public get SecondaryMetrics(): PSMetricDisplay[] {\n if (!this.Model) return [];\n const score = PrimaryModelScore(this.Model);\n const primaryKey = score?.key;\n const holdout = MetricsToDisplay(ParseMetrics(this.Model.HoldoutMetrics), { excludeAuc: false });\n const all = holdout.length > 0 ? holdout : MetricsToDisplay(ParseMetrics(this.Model.Metrics), { excludeAuc: false });\n return primaryKey ? all.filter((m) => m.key !== primaryKey) : all.filter((m) => m.key !== 'AUC');\n }\n\n /** @deprecated Use {@link SecondaryMetrics}. */\n public get secondaryMetrics(): PSMetricDisplay[] {\n return this.SecondaryMetrics;\n }\n\n public get GapText(): string {\n if (!this.Model) return '';\n const gap = OverfitGap(this.Model);\n return gap == null ? '' : Math.abs(gap).toFixed(3);\n }\n\n /** @deprecated Use {@link GapText}. */\n public get gapText(): string {\n return this.GapText;\n }\n\n public get GapVerdict(): string {\n if (!this.Model) return '';\n const gap = OverfitGap(this.Model);\n if (gap == null) return '';\n return gap > 0.1 ? 'is wide — watch for overfitting' : 'is within tolerance — no overfitting flag';\n }\n\n /** @deprecated Use {@link GapVerdict}. */\n public get gapVerdict(): string {\n return this.GapVerdict;\n }\n\n // ── Feature Importance & Leakage Gate ──\n\n /** Cached parsed and displayed importance bars for the last (Lineage JSON, importance JSON) pair. */\n private importanceCache: { key: string; allBars: PSFeatureBar[]; displayedBars: PSFeatureBar[] } | null = null;\n\n private get cachedImportance(): { allBars: PSFeatureBar[]; displayedBars: PSFeatureBar[] } {\n if (!this.Model) return { allBars: [], displayedBars: [] };\n const key = `${this.Model.Lineage}\\u0000${this.Model.FeatureImportance}`;\n if (this.importanceCache?.key !== key) {\n const allBars = ParseFeatureImportance(this.Model.FeatureImportance, 6).map((b) => ({\n ...b,\n name: HumanizeFeatureName(b.name),\n }));\n const displayedBars = ModelImportanceView.DisplayedFeatureImportance(this.Model.Lineage, this.Model.FeatureImportance, 6).map((b) => ({\n ...b,\n name: HumanizeFeatureName(b.name),\n }));\n this.importanceCache = { key, allBars, displayedBars };\n }\n return this.importanceCache;\n }\n\n public get Importance(): PSFeatureBar[] {\n return this.cachedImportance.allBars;\n }\n\n /** @deprecated Use {@link Importance}. */\n public get importance(): PSFeatureBar[] {\n return this.Importance;\n }\n\n /**\n * The importance bars shown in the Feature Importance card (empty for split / impurity importance). Cached on the\n * Lineage JSON (which holds the stored importance kind) and the importance JSON, so the parse runs once per model and\n * again whenever either value changes\n * (coding standards §7: getters Angular bindings hit).\n */\n public get DisplayedImportance(): PSFeatureBar[] {\n return this.cachedImportance.displayedBars;\n }\n\n /** True when the model has importance data that is hidden because of its kind. */\n public get ImportanceHidden(): boolean {\n return this.Importance.length > 0 && this.DisplayedImportance.length === 0;\n }\n\n /** The note shown in place of hidden importance. */\n public readonly ImportanceHiddenNote = ImportanceDisplay.HiddenNote;\n\n /** The Feature Importance card's caption. The template hides it when {@link ImportanceHidden}, along with the bars. */\n public get ImportanceCaption(): string {\n const n = this.Importance.length;\n return n === 0 ? 'no data' : `normalized · top ${n}`;\n }\n\n /** @deprecated Use {@link ImportanceCaption}. */\n public get importanceCaption(): string {\n return this.ImportanceCaption;\n }\n\n public get TopFeatureName(): string {\n return this.Importance[0]?.name ?? '—';\n }\n\n /** @deprecated Use {@link TopFeatureName}. */\n public get topFeatureName(): string {\n return this.TopFeatureName;\n }\n\n public get TopFeatureValue(): string {\n return this.Importance[0]?.value ?? '—';\n }\n\n /** @deprecated Use {@link TopFeatureValue}. */\n public get topFeatureValue(): string {\n return this.TopFeatureValue;\n }\n\n public get LeakageFlagged(): boolean {\n if (!this.Model) return false;\n const max = MaxFeatureImportance(this.Model.FeatureImportance);\n return max != null && max >= PS_FEATURE_DOMINANCE_THRESHOLD;\n }\n\n /** @deprecated Use {@link LeakageFlagged}. */\n public get leakageFlagged(): boolean {\n return this.LeakageFlagged;\n }\n\n // ── Actions & Promotion Flow ──\n\n public get CanValidate(): boolean {\n return this.Model?.Status === 'Draft';\n }\n\n /** @deprecated Use {@link CanValidate}. */\n public get canValidate(): boolean {\n return this.CanValidate;\n }\n\n public get CanPublish(): boolean {\n return this.Model?.Status === 'Validated';\n }\n\n /** @deprecated Use {@link CanPublish}. */\n public get canPublish(): boolean {\n return this.CanPublish;\n }\n\n public get CanArchive(): boolean {\n return this.Model?.Status === 'Published' || this.Model?.Status === 'Validated';\n }\n\n /** @deprecated Use {@link CanArchive}. */\n public get canArchive(): boolean {\n return this.CanArchive;\n }\n\n public get ActionHint(): string {\n switch (this.Model?.Status) {\n case 'Draft':\n return 'Verify metrics and feature importance before validating or publishing.';\n case 'Validated':\n return 'Validated and sign-off clear. Ready to promote to production serving.';\n case 'Published':\n return 'Active in production serving. Archiving will detach live predictions.';\n case 'Archived':\n return 'Archived snapshot. Preserved for governance and historical auditing.';\n default:\n return '';\n }\n }\n\n /** @deprecated Use {@link ActionHint}. */\n public get actionHint(): string {\n return this.ActionHint;\n }\n\n public RequestPromote(targetStatus: PredictiveStudioModelTargetStatus): void {\n if (!this.Model) return;\n this.PendingReason = '';\n this.Pending = {\n modelId: this.Model.ID,\n modelName: `${this.ModelDisplayName} v${this.Model.Version}`,\n targetStatus,\n leakageFlagged: this.LeakageFlagged && targetStatus !== 'Archived',\n };\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link RequestPromote}. */\n public requestPromote(targetStatus: PredictiveStudioModelTargetStatus): void {\n return this.RequestPromote(targetStatus);\n }\n\n public CancelPromote(): void {\n if (this.Busy) return;\n this.Pending = null;\n this.PendingReason = '';\n this.cdr.markForCheck();\n }\n\n /** @deprecated Use {@link CancelPromote}. */\n public cancelPromote(): void {\n return this.CancelPromote();\n }\n\n public get PendingTitle(): string {\n if (!this.Pending) return '';\n return this.Pending.targetStatus === 'Archived' ? 'Archive model' : `Promote to ${this.Pending.targetStatus}`;\n }\n\n /** @deprecated Use {@link PendingTitle}. */\n public get pendingTitle(): string {\n return this.PendingTitle;\n }\n\n public get PendingIcon(): string {\n if (!this.Pending) return 'fa-solid fa-check';\n return this.Pending.targetStatus === 'Archived' ? 'fa-solid fa-box-archive' : 'fa-solid fa-arrow-up';\n }\n\n /** @deprecated Use {@link PendingIcon}. */\n public get pendingIcon(): string {\n return this.PendingIcon;\n }\n\n public get PendingConfirmLabel(): string {\n if (!this.Pending) return 'Confirm';\n return this.Pending.targetStatus === 'Archived' ? 'Archive' : `Promote to ${this.Pending.targetStatus}`;\n }\n\n /** @deprecated Use {@link PendingConfirmLabel}. */\n public get pendingConfirmLabel(): string {\n return this.PendingConfirmLabel;\n }\n\n public get PendingVariant(): 'info' | 'warn' | 'danger' {\n if (!this.Pending) return 'info';\n if (this.Pending.targetStatus === 'Archived') return 'warn';\n return this.Pending.leakageFlagged ? 'warn' : 'info';\n }\n\n /** @deprecated Use {@link PendingVariant}. */\n public get pendingVariant(): 'info' | 'warn' | 'danger' {\n return this.PendingVariant;\n }\n\n public get PendingMessage(): string {\n if (!this.Pending) return '';\n const name = this.escapeHtml(this.Pending.modelName);\n if (this.Pending.targetStatus === 'Archived') {\n return `Archive <strong>${name}</strong>? This detaches any active scoring bindings and removes it from production scoring. The model artifact remains immutable and recoverable.`;\n }\n if (this.Pending.leakageFlagged) {\n return `<strong>${name}</strong> is flagged for possible target leakage. Publishing requires an explicit sign-off — confirm you understand the risk and provide a reason below.`;\n }\n return `Promote <strong>${name}</strong> to <strong>${this.Pending.targetStatus}</strong>? This changes only the lifecycle state — the trained weights never change.`;\n }\n\n /** @deprecated Use {@link PendingMessage}. */\n public get pendingMessage(): string {\n return this.PendingMessage;\n }\n\n public async ConfirmPromote(reason: string): Promise<void> {\n if (!this.Pending || this.Busy || !this.Model) return;\n this.Busy = true;\n this.cdr.markForCheck();\n\n const { modelId, modelName, targetStatus, leakageFlagged } = this.Pending;\n\n try {\n const op = new PredictiveStudioPromoteModelOperation();\n const result = await op.Execute(\n {\n modelId,\n targetStatus,\n signOff: leakageFlagged ? true : undefined,\n reason: reason || undefined,\n },\n { provider: this.Provider ?? undefined, user: this.CurrentUser ?? undefined },\n );\n\n if (result.Success && result.Output?.promoted) {\n const newStatus = result.Output.status;\n this.Model.Status = newStatus as 'Draft' | 'Validated' | 'Published' | 'Archived';\n this.notifications.CreateSimpleNotification(`${modelName} → ${newStatus}`, 'success', 3500);\n this.StatusChanged.emit({ modelId, newStatus });\n this.Pending = null;\n this.PendingReason = '';\n } else {\n this.notifications.CreateSimpleNotification(\n result.ErrorMessage || `Could not promote ${modelName} (status: ${result.Output?.status ?? 'unchanged'}).`,\n 'error',\n 5000,\n );\n }\n } catch (e) {\n this.notifications.CreateSimpleNotification(\n `Promotion failed: ${e instanceof Error ? e.message : String(e)}`,\n 'error',\n 5000,\n );\n } finally {\n this.Busy = false;\n this.cdr.markForCheck();\n }\n }\n\n /** @deprecated Use {@link ConfirmPromote}. */\n public async confirmPromote(reason: string): Promise<void> {\n return this.ConfirmPromote(reason);\n }\n\n private escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n }\n}\n","<div class=\"ps-model-detail\" data-testid=\"ps-model-detail\">\n @if (model) {\n <!-- 1. Header Card -->\n <div class=\"ps-card\">\n <div class=\"ps-card-body dh\">\n <div class=\"big-ico\"><i class=\"fa-solid fa-cube\"></i></div>\n <div style=\"flex:1;min-width:0;\">\n <h2 data-testid=\"ps-registry-detail-name\">\n {{ modelDisplayName }}\n <span class=\"ps-tag ps-mono\">v{{ model.Version }}</span>\n </h2>\n <div class=\"ps-muted ps-small sub\">\n {{ model.Algorithm || 'Model' }}{{ targetSuffix }} • immutable snapshot\n </div>\n </div>\n <span class=\"ps-badge\" [class]=\"statusBadgeClass(model.Status)\">{{ model.Status }}</span>\n </div>\n </div>\n\n <!-- 2. Lifecycle Stepper -->\n <div class=\"ps-card\">\n <div class=\"ps-card-body\">\n <div class=\"ps-section-title\">Lifecycle</div>\n <div class=\"ps-stepper\">\n @for (step of lifecycleSteps; track step; let last = $last) {\n <div class=\"ps-step\" [class.done]=\"stepState(step) === 'done'\" [class.curr]=\"stepState(step) === 'curr'\">\n <span class=\"pip\">\n @if (stepState(step) === 'done') {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ $index + 1 }}\n }\n </span>\n {{ step }}\n </div>\n @if (!last) {\n <span class=\"ln\"></span>\n }\n }\n </div>\n <div class=\"ps-small ps-muted\" style=\"margin-top:10px\">\n Models are immutable once registered; promotion only changes lifecycle state, never weights.\n </div>\n </div>\n </div>\n\n <!-- 3. Performance Metrics -->\n <div class=\"ps-card\">\n <div class=\"ps-card-head\">\n <h3>Performance</h3>\n <span class=\"ps-muted ps-small\">Holdout = held-out test fold, never seen in training</span>\n </div>\n <div class=\"ps-card-body\">\n <div class=\"metric-pair\">\n <div class=\"mtile\">\n <div class=\"ps-section-title\">Train {{ primaryScoreLabel }}</div>\n <div class=\"v\">{{ trainPrimaryScore }}</div>\n <div class=\"ps-muted ps-small\">in-sample • optimistic</div>\n </div>\n <div class=\"mtile honest\">\n <div class=\"ps-section-title\">Holdout {{ primaryScoreLabel }}</div>\n <div class=\"v\">{{ holdoutPrimaryScore }}</div>\n <div class=\"ps-muted ps-small\">out-of-sample • the honest number</div>\n </div>\n </div>\n\n @if (secondaryMetrics.length > 0) {\n <div class=\"stat-bar\">\n @for (s of secondaryMetrics; track s.key) {\n <div class=\"b\">\n <span class=\"ps-muted ps-small\">{{ s.label }}</span>\n <strong>{{ s.value }}</strong>\n </div>\n }\n </div>\n } @else {\n <div class=\"ps-small ps-muted\" style=\"margin-top:6px\">No secondary metrics recorded for this model.</div>\n }\n\n @if (gapText) {\n <div class=\"ps-small ps-muted\" style=\"margin-top:10px\">\n Train–holdout gap of <strong>{{ gapText }}</strong> {{ gapVerdict }}.\n </div>\n }\n </div>\n </div>\n\n <!-- 4. Feature Importance -->\n <div class=\"ps-card\">\n <div class=\"ps-card-head\">\n <h3>Feature Importance</h3>\n @if (!ImportanceHidden) {\n <span class=\"ps-muted ps-small\" data-testid=\"ps-importance-caption\">{{ ImportanceCaption }}</span>\n }\n </div>\n <div class=\"ps-card-body\">\n @if (DisplayedImportance.length > 0) {\n @for (f of DisplayedImportance; track f.name) {\n <div class=\"ps-fbar\">\n <span class=\"name ps-small\" [title]=\"f.name\">{{ f.name }}</span>\n <div class=\"track\">\n <span [class.warn]=\"f.warning\" [style.width.%]=\"f.pct\"></span>\n </div>\n <span class=\"ps-mono\">{{ f.value }}</span>\n </div>\n }\n } @else {\n @if (ImportanceHidden) {\n <div class=\"ps-small ps-muted\" data-testid=\"ps-importance-hidden\">{{ ImportanceHiddenNote }}</div>\n } @else {\n <div class=\"ps-small ps-muted\">No feature-importance data was recorded for this model.</div>\n }\n }\n </div>\n </div>\n\n <!-- 5. Leakage Sign-Off Gate -->\n @if (Importance.length > 0) {\n <div class=\"ps-callout gate\" data-testid=\"ps-leakage-gate\" [class.success]=\"!LeakageFlagged\" [class.warn]=\"LeakageFlagged\">\n <i [class]=\"LeakageFlagged ? 'fa-solid fa-triangle-exclamation' : 'fa-solid fa-shield-halved'\"></i>\n <div>\n @if (LeakageFlagged) {\n @if (ImportanceHidden) {\n <strong>Leakage flag raised.</strong> A single feature's split share is at or above the\n <strong>{{ dominanceThreshold }}</strong> dominance threshold.\n } @else {\n <strong>Leakage flag raised.</strong> A single feature dominates — top importance is\n <strong>{{ TopFeatureName }} at {{ TopFeatureValue }}</strong>, at/above the\n <strong>{{ dominanceThreshold }}</strong> dominance threshold.\n }\n <div class=\"ps-small\" style=\"margin-top:6px\">\n <i class=\"fa-solid fa-pen\"></i> Sign-off with a reason is required to publish this model.\n </div>\n } @else {\n @if (ImportanceHidden) {\n <strong>Leakage gate clear.</strong> No single feature's split share is at or above the\n <strong>{{ dominanceThreshold }}</strong> dominance threshold.\n } @else {\n <strong>Leakage gate clear.</strong> No single feature dominates — top importance is\n <strong>{{ TopFeatureName }} at {{ TopFeatureValue }}</strong>, below the\n <strong>{{ dominanceThreshold }}</strong> dominance threshold.\n }\n <div class=\"ps-small\" style=\"margin-top:6px\">\n <i class=\"fa-solid fa-check\"></i> Sign-off required before any Validated → Published promotion.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- 6. Lifecycle Actions -->\n @if (showActions) {\n <div class=\"ps-card\">\n <div class=\"ps-card-body ps-row\" style=\"align-items:center;flex-wrap:wrap;gap:8px\">\n <span class=\"ps-muted ps-small\" style=\"flex:1\">{{ actionHint }}</span>\n @if (canValidate) {\n <button mjButton variant=\"secondary\" size=\"sm\" data-testid=\"ps-registry-validate\" (click)=\"requestPromote('Validated')\">\n <i class=\"fa-solid fa-circle-check\"></i> Mark Validated\n </button>\n }\n @if (canPublish) {\n <button mjButton variant=\"primary\" size=\"sm\" data-testid=\"ps-registry-promote\" (click)=\"requestPromote('Published')\">\n <i class=\"fa-solid fa-arrow-up\"></i> Promote to Published\n </button>\n }\n @if (canArchive) {\n <button mjButton variant=\"secondary\" size=\"sm\" data-testid=\"ps-registry-archive\" (click)=\"requestPromote('Archived')\">\n <i class=\"fa-solid fa-box-archive\"></i> Archive\n </button>\n }\n </div>\n </div>\n }\n\n <!-- 7. Confirm Promotion Modal -->\n @if (pending) {\n <div class=\"ps-modal-backdrop\" (click)=\"cancelPromote()\">\n <div class=\"ps-modal\" (click)=\"$event.stopPropagation()\" data-testid=\"ps-confirm-modal\">\n <div class=\"ps-modal-head\" [class.warn]=\"pendingVariant === 'warn'\" [class.danger]=\"pendingVariant === 'danger'\">\n <span class=\"ico\"><i [class]=\"pendingIcon\"></i></span>\n <h3>{{ pendingTitle }}</h3>\n </div>\n <div class=\"ps-modal-body\">\n <div [innerHTML]=\"pendingMessage\"></div>\n @if (pending.leakageFlagged || pending.targetStatus === 'Archived') {\n <div class=\"ps-field\" style=\"margin-top:12px\">\n <label>\n {{ pending.leakageFlagged ? 'Leakage sign-off reason' : 'Reason (optional)' }}\n {{ pending.leakageFlagged ? ' *' : '' }}\n </label>\n <textarea\n class=\"ps-input\"\n rows=\"3\"\n [(ngModel)]=\"pendingReason\"\n [placeholder]=\"pending.leakageFlagged ? 'Explain why this model is safe to publish despite the leakage flag…' : 'Add an optional note for the record…'\"\n [disabled]=\"busy\"></textarea>\n </div>\n }\n </div>\n <div class=\"ps-modal-foot\">\n <button\n mjButton\n [variant]=\"pendingVariant === 'danger' ? 'danger' : 'primary'\"\n size=\"sm\"\n [disabled]=\"busy || (pending.leakageFlagged && !pendingReason.trim())\"\n (click)=\"confirmPromote(pendingReason.trim())\">\n @if (busy) {\n <i class=\"fa-solid fa-circle-notch fa-spin\"></i>\n } @else {\n <i [class]=\"pendingIcon\"></i>\n }\n {{ pendingConfirmLabel }}\n </button>\n <span class=\"ps-spacer\" style=\"flex:1\"></span>\n <button mjButton variant=\"secondary\" size=\"sm\" [disabled]=\"busy\" (click)=\"cancelPromote()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n } @else {\n <div class=\"ps-empty\" style=\"padding: 32px; text-align: center;\">\n <span class=\"ps-empty-ico\"><i class=\"fa-solid fa-cube\"></i></span>\n <h3>No Model Selected</h3>\n <p class=\"ps-muted\">Select an ML Model from the list to inspect its configuration and metrics.</p>\n </div>\n }\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"ps-model-detail.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/MLModels/ps-model-detail.component.ts","../../../../src/lib/custom/MLModels/ps-model-detail.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { IMetadataProvider, UserInfo } from '@memberjunction/core';\nimport {\n MJMLModelEntity,\n PredictiveStudioPromoteModelOperation,\n PredictiveStudioModelTargetStatus,\n} from '@memberjunction/core-entities';\nimport { ImportanceDisplay } from '@memberjunction/predictive-studio-core';\n\nimport {\n PSFeatureBar,\n PSMetricDisplay,\n PS_FEATURE_DOMINANCE_THRESHOLD,\n FormatMetricValue,\n HumanizeFeatureName,\n MaxFeatureImportance,\n MetricsToDisplay,\n ModelImportanceView,\n OverfitGap,\n ParseFeatureImportance,\n ParseMetrics,\n PrimaryModelScore,\n TrainScoreIsInnerCv,\n} from './ml-model-view-models';\n\n/** A pending promote/archive action awaiting user confirmation. */\ninterface PendingPromotion {\n modelId: string;\n modelName: string;\n targetStatus: PredictiveStudioModelTargetStatus;\n leakageFlagged: boolean;\n}\n\n/**\n * **PSModelDetailComponent** — Unified enterprise component for inspecting, evaluating,\n * and promoting versioned ML Models. Shared between:\n * 1. **Predictive Studio Model Registry** (`PSRegistryComponent`)\n * 2. **Custom Entity Form for `MJ: ML Models`** (`MLModelFormComponentExtended`)\n *\n * Renders:\n * - Identity & immutable snapshot badge\n * - Progressive 4-stage lifecycle stepper (Draft → Validated → Published → Archived)\n * - Train (inner-CV estimate, or in-sample for older models) vs out-of-sample holdout performance cards and overfit gap check\n * - Key feature importance rankings with single-feature dominance warnings\n * - Target leakage gate verification and required sign-off rationale capture\n * - Remote Operation lifecycle promotion (Validate, Publish, Archive)\n */\n@Component({\n standalone: true,\n selector: 'ps-model-detail',\n templateUrl: './ps-model-detail.component.html',\n styleUrls: ['./ps-model-detail.component.css'],\n imports: [CommonModule, FormsModule, MJButtonDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PSModelDetailComponent {\n @Input() Model: MJMLModelEntity | null = null;\n\n @Input() Provider: IMetadataProvider | null = null;\n\n @Input() CurrentUser: UserInfo | null = null;\n\n @Input() ShowActions = true;\n\n @Output() StatusChanged = new EventEmitter<{ modelId: string; newStatus: string }>();\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly notifications = inject(MJNotificationService);\n\n public readonly LifecycleSteps = ['Draft', 'Validated', 'Published', 'Archived'] as const;\n\n public readonly DominanceThreshold = PS_FEATURE_DOMINANCE_THRESHOLD.toFixed(2);\n\n public Pending: PendingPromotion | null = null;\n\n public PendingReason = '';\n\n public Busy = false;\n\n @Input() displayName?: string;\n\n public get ModelDisplayName(): string {\n if (this.displayName) return this.displayName;\n if (!this.Model) return '';\n return this.Model.Pipeline || (this.Model.Algorithm ? `${this.Model.Algorithm} Model` : 'ML Model');\n }\n\n // ── Badges & Lifecycle Stepper ──\n\n public StatusBadgeClass(status: string | null | undefined): string {\n switch ((status ?? '').toLowerCase()) {\n case 'published':\n return 'green';\n case 'validated':\n return 'blue';\n case 'draft':\n return 'amber';\n case 'archived':\n return 'gray';\n default:\n return 'gray';\n }\n }\n\n public StepState(step: string): 'done' | 'curr' | 'todo' {\n const order = ['Draft', 'Validated', 'Published', 'Archived'];\n const currIdx = order.indexOf(this.Model?.Status ?? 'Draft');\n const stepIdx = order.indexOf(step);\n if (stepIdx < currIdx) return 'done';\n if (stepIdx === currIdx) return 'curr';\n return 'todo';\n }\n\n public get TargetSuffix(): string {\n const target = this.Model?.TargetVariable;\n return target ? ` · predicts ${target}` : '';\n }\n\n // ── Metrics & Performance Derivations ──\n\n public get PrimaryScoreLabel(): string {\n if (!this.Model) return 'Score';\n const score = PrimaryModelScore(this.Model);\n return score?.label ?? 'Score';\n }\n\n /**\n * What the train tile's number is: for a model trained under an Evaluation Protocol, the inner cross-validation\n * estimate on the development rows; for an older model, its in-sample training score. Optimistic either way.\n */\n public get TrainScoreCaption(): string {\n return TrainScoreIsInnerCv(this.Model?.Lineage) ? 'inner-CV estimate • optimistic' : 'in-sample • optimistic';\n }\n\n public get TrainPrimaryScore(): string {\n if (!this.Model) return '—';\n const score = PrimaryModelScore(this.Model);\n const trainMetrics = ParseMetrics(this.Model.Metrics);\n if (score && trainMetrics[score.key] != null) {\n return FormatMetricValue(score.key, trainMetrics[score.key]!);\n }\n // No value of the primary metric: say so, never another metric's number under the primary metric's title.\n return '—';\n }\n\n public get HoldoutPrimaryScore(): string {\n if (!this.Model) return '—';\n const score = PrimaryModelScore(this.Model);\n const holdoutMetrics = ParseMetrics(this.Model.HoldoutMetrics);\n if (score && holdoutMetrics[score.key] != null) {\n return FormatMetricValue(score.key, holdoutMetrics[score.key]!);\n }\n // No value of the primary metric: say so, never another metric's number under the primary metric's title.\n return '—';\n }\n\n public get SecondaryMetrics(): PSMetricDisplay[] {\n if (!this.Model) return [];\n const score = PrimaryModelScore(this.Model);\n const primaryKey = score?.key;\n // holdout only: the bar sits under the \"Holdout = held-out test fold\" heading with unqualified labels\n const holdout = MetricsToDisplay(ParseMetrics(this.Model.HoldoutMetrics), { excludeAuc: false });\n return primaryKey ? holdout.filter((m) => m.key !== primaryKey) : holdout.filter((m) => m.key !== 'AUC');\n }\n\n public get GapText(): string {\n if (!this.Model) return '';\n const gap = OverfitGap(this.Model);\n return gap == null ? '' : Math.abs(gap).toFixed(3);\n }\n\n public get GapVerdict(): string {\n if (!this.Model) return '';\n const gap = OverfitGap(this.Model);\n if (gap == null) return '';\n return gap > 0.1 ? 'is wide — watch for overfitting' : 'is within tolerance — no overfitting flag';\n }\n\n // ── Feature Importance & Leakage Gate ──\n\n /** Cached parsed and displayed importance bars for the last (Lineage JSON, importance JSON) pair. */\n private importanceCache: { key: string; allBars: PSFeatureBar[]; displayedBars: PSFeatureBar[] } | null = null;\n\n private get cachedImportance(): { allBars: PSFeatureBar[]; displayedBars: PSFeatureBar[] } {\n if (!this.Model) return { allBars: [], displayedBars: [] };\n const key = `${this.Model.Lineage}\\u0000${this.Model.FeatureImportance}`;\n if (this.importanceCache?.key !== key) {\n const allBars = ParseFeatureImportance(this.Model.FeatureImportance, 6).map((b) => ({\n ...b,\n name: HumanizeFeatureName(b.name),\n }));\n const displayedBars = ModelImportanceView.DisplayedFeatureImportance(this.Model.Lineage, this.Model.FeatureImportance, 6).map((b) => ({\n ...b,\n name: HumanizeFeatureName(b.name),\n }));\n this.importanceCache = { key, allBars, displayedBars };\n }\n return this.importanceCache;\n }\n\n public get Importance(): PSFeatureBar[] {\n return this.cachedImportance.allBars;\n }\n\n /**\n * The importance bars shown in the Feature Importance card (empty for split / impurity importance). Cached on the\n * Lineage JSON (which holds the stored importance kind) and the importance JSON, so the parse runs once per model and\n * again whenever either value changes\n * (coding standards §7: getters Angular bindings hit).\n */\n public get DisplayedImportance(): PSFeatureBar[] {\n return this.cachedImportance.displayedBars;\n }\n\n /** True when the model has importance data that is hidden because of its kind. */\n public get ImportanceHidden(): boolean {\n return this.Importance.length > 0 && this.DisplayedImportance.length === 0;\n }\n\n /** The note shown in place of hidden importance. */\n public readonly ImportanceHiddenNote = ImportanceDisplay.HiddenNote;\n\n /** The Feature Importance card's caption. The template hides it when {@link ImportanceHidden}, along with the bars. */\n public get ImportanceCaption(): string {\n const n = this.Importance.length;\n return n === 0 ? 'no data' : `normalized · top ${n}`;\n }\n\n public get TopFeatureName(): string {\n return this.Importance[0]?.name ?? '—';\n }\n\n public get TopFeatureValue(): string {\n return this.Importance[0]?.value ?? '—';\n }\n\n public get LeakageFlagged(): boolean {\n if (!this.Model) return false;\n const max = MaxFeatureImportance(this.Model.FeatureImportance);\n return max != null && max >= PS_FEATURE_DOMINANCE_THRESHOLD;\n }\n\n // ── Actions & Promotion Flow ──\n\n public get CanValidate(): boolean {\n return this.Model?.Status === 'Draft';\n }\n\n public get CanPublish(): boolean {\n return this.Model?.Status === 'Validated';\n }\n\n public get CanArchive(): boolean {\n return this.Model?.Status === 'Published' || this.Model?.Status === 'Validated';\n }\n\n public get ActionHint(): string {\n switch (this.Model?.Status) {\n case 'Draft':\n return 'Verify metrics and feature importance before validating or publishing.';\n case 'Validated':\n return 'Validated and sign-off clear. Ready to promote to production serving.';\n case 'Published':\n return 'Active in production serving. Archiving will detach live predictions.';\n case 'Archived':\n return 'Archived snapshot. Preserved for governance and historical auditing.';\n default:\n return '';\n }\n }\n\n public RequestPromote(targetStatus: PredictiveStudioModelTargetStatus): void {\n if (!this.Model) return;\n this.PendingReason = '';\n this.Pending = {\n modelId: this.Model.ID,\n modelName: `${this.ModelDisplayName} v${this.Model.Version}`,\n targetStatus,\n leakageFlagged: this.LeakageFlagged && targetStatus !== 'Archived',\n };\n this.cdr.markForCheck();\n }\n\n public CancelPromote(): void {\n if (this.Busy) return;\n this.Pending = null;\n this.PendingReason = '';\n this.cdr.markForCheck();\n }\n\n public get PendingTitle(): string {\n if (!this.Pending) return '';\n return this.Pending.targetStatus === 'Archived' ? 'Archive model' : `Promote to ${this.Pending.targetStatus}`;\n }\n\n public get PendingIcon(): string {\n if (!this.Pending) return 'fa-solid fa-check';\n return this.Pending.targetStatus === 'Archived' ? 'fa-solid fa-box-archive' : 'fa-solid fa-arrow-up';\n }\n\n public get PendingConfirmLabel(): string {\n if (!this.Pending) return 'Confirm';\n return this.Pending.targetStatus === 'Archived' ? 'Archive' : `Promote to ${this.Pending.targetStatus}`;\n }\n\n public get PendingVariant(): 'info' | 'warn' | 'danger' {\n if (!this.Pending) return 'info';\n if (this.Pending.targetStatus === 'Archived') return 'warn';\n return this.Pending.leakageFlagged ? 'warn' : 'info';\n }\n\n public get PendingMessage(): string {\n if (!this.Pending) return '';\n const name = this.escapeHtml(this.Pending.modelName);\n if (this.Pending.targetStatus === 'Archived') {\n return `Archive <strong>${name}</strong>? This detaches any active scoring bindings and removes it from production scoring. The model artifact remains immutable and recoverable.`;\n }\n if (this.Pending.leakageFlagged) {\n return `<strong>${name}</strong> is flagged for possible target leakage. Publishing requires an explicit sign-off — confirm you understand the risk and provide a reason below.`;\n }\n return `Promote <strong>${name}</strong> to <strong>${this.Pending.targetStatus}</strong>? This changes only the lifecycle state — the trained weights never change.`;\n }\n\n public async ConfirmPromote(reason: string): Promise<void> {\n if (!this.Pending || this.Busy || !this.Model) return;\n this.Busy = true;\n this.cdr.markForCheck();\n\n const { modelId, modelName, targetStatus, leakageFlagged } = this.Pending;\n\n try {\n const op = new PredictiveStudioPromoteModelOperation();\n const result = await op.Execute(\n {\n modelId,\n targetStatus,\n signOff: leakageFlagged ? true : undefined,\n reason: reason || undefined,\n },\n { provider: this.Provider ?? undefined, user: this.CurrentUser ?? undefined },\n );\n\n if (result.Success && result.Output?.promoted) {\n const newStatus = result.Output.status;\n this.Model.Status = newStatus as 'Draft' | 'Validated' | 'Published' | 'Archived';\n this.notifications.CreateSimpleNotification(`${modelName} → ${newStatus}`, 'success', 3500);\n this.StatusChanged.emit({ modelId, newStatus });\n this.Pending = null;\n this.PendingReason = '';\n } else {\n this.notifications.CreateSimpleNotification(\n result.ErrorMessage || `Could not promote ${modelName} (status: ${result.Output?.status ?? 'unchanged'}).`,\n 'error',\n 5000,\n );\n }\n } catch (e) {\n this.notifications.CreateSimpleNotification(\n `Promotion failed: ${e instanceof Error ? e.message : String(e)}`,\n 'error',\n 5000,\n );\n } finally {\n this.Busy = false;\n this.cdr.markForCheck();\n }\n }\n\n private escapeHtml(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n }\n}\n","<div class=\"ps-model-detail\" data-testid=\"ps-model-detail\">\n @if (Model) {\n <!-- 1. Header Card -->\n <div class=\"ps-card\">\n <div class=\"ps-card-body dh\">\n <div class=\"big-ico\"><i class=\"fa-solid fa-cube\"></i></div>\n <div style=\"flex:1;min-width:0;\">\n <h2 data-testid=\"ps-registry-detail-name\">\n {{ ModelDisplayName }}\n <span class=\"ps-tag ps-mono\">v{{ Model.Version }}</span>\n </h2>\n <div class=\"ps-muted ps-small sub\">\n {{ Model.Algorithm || 'Model' }}{{ TargetSuffix }} • immutable snapshot\n </div>\n </div>\n <span class=\"ps-badge\" [class]=\"StatusBadgeClass(Model.Status)\">{{ Model.Status }}</span>\n </div>\n </div>\n\n <!-- 2. Lifecycle Stepper -->\n <div class=\"ps-card\">\n <div class=\"ps-card-body\">\n <div class=\"ps-section-title\">Lifecycle</div>\n <div class=\"ps-stepper\">\n @for (step of LifecycleSteps; track step; let last = $last) {\n <div class=\"ps-step\" [class.done]=\"StepState(step) === 'done'\" [class.curr]=\"StepState(step) === 'curr'\">\n <span class=\"pip\">\n @if (StepState(step) === 'done') {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n {{ $index + 1 }}\n }\n </span>\n {{ step }}\n </div>\n @if (!last) {\n <span class=\"ln\"></span>\n }\n }\n </div>\n <div class=\"ps-small ps-muted\" style=\"margin-top:10px\">\n Models are immutable once registered; promotion only changes lifecycle state, never weights.\n </div>\n </div>\n </div>\n\n <!-- 3. Performance Metrics -->\n <div class=\"ps-card\">\n <div class=\"ps-card-head\">\n <h3>Performance</h3>\n <span class=\"ps-muted ps-small\">Holdout = held-out test fold, never seen in training</span>\n </div>\n <div class=\"ps-card-body\">\n <div class=\"metric-pair\">\n <div class=\"mtile\">\n <div class=\"ps-section-title\">Train {{ PrimaryScoreLabel }}</div>\n <div class=\"v\">{{ TrainPrimaryScore }}</div>\n <div class=\"ps-muted ps-small\" data-testid=\"ps-train-caption\">{{ TrainScoreCaption }}</div>\n </div>\n <div class=\"mtile honest\">\n <div class=\"ps-section-title\">Holdout {{ PrimaryScoreLabel }}</div>\n <div class=\"v\">{{ HoldoutPrimaryScore }}</div>\n <div class=\"ps-muted ps-small\">out-of-sample • the honest number</div>\n </div>\n </div>\n\n @if (SecondaryMetrics.length > 0) {\n <div class=\"stat-bar\">\n @for (s of SecondaryMetrics; track s.key) {\n <div class=\"b\">\n <span class=\"ps-muted ps-small\">{{ s.label }}</span>\n <strong>{{ s.value }}</strong>\n </div>\n }\n </div>\n } @else {\n <div class=\"ps-small ps-muted\" style=\"margin-top:6px\">No secondary metrics recorded for this model.</div>\n }\n\n @if (GapText) {\n <div class=\"ps-small ps-muted\" style=\"margin-top:10px\">\n Train–holdout gap of <strong>{{ GapText }}</strong> {{ GapVerdict }}.\n </div>\n }\n </div>\n </div>\n\n <!-- 4. Feature Importance -->\n <div class=\"ps-card\">\n <div class=\"ps-card-head\">\n <h3>Feature Importance</h3>\n @if (!ImportanceHidden) {\n <span class=\"ps-muted ps-small\" data-testid=\"ps-importance-caption\">{{ ImportanceCaption }}</span>\n }\n </div>\n <div class=\"ps-card-body\">\n @if (DisplayedImportance.length > 0) {\n @for (f of DisplayedImportance; track f.name) {\n <div class=\"ps-fbar\">\n <span class=\"name ps-small\" [title]=\"f.name\">{{ f.name }}</span>\n <div class=\"track\">\n <span [class.warn]=\"f.warning\" [style.width.%]=\"f.pct\"></span>\n </div>\n <span class=\"ps-mono\">{{ f.value }}</span>\n </div>\n }\n } @else {\n @if (ImportanceHidden) {\n <div class=\"ps-small ps-muted\" data-testid=\"ps-importance-hidden\">{{ ImportanceHiddenNote }}</div>\n } @else {\n <div class=\"ps-small ps-muted\">No feature-importance data was recorded for this model.</div>\n }\n }\n </div>\n </div>\n\n <!-- 5. Leakage Sign-Off Gate -->\n @if (Importance.length > 0) {\n <div class=\"ps-callout gate\" data-testid=\"ps-leakage-gate\" [class.success]=\"!LeakageFlagged\" [class.warn]=\"LeakageFlagged\">\n <i [class]=\"LeakageFlagged ? 'fa-solid fa-triangle-exclamation' : 'fa-solid fa-shield-halved'\"></i>\n <div>\n @if (LeakageFlagged) {\n @if (ImportanceHidden) {\n <strong>Leakage flag raised.</strong> A single feature's split share is at or above the\n <strong>{{ DominanceThreshold }}</strong> dominance threshold.\n } @else {\n <strong>Leakage flag raised.</strong> A single feature dominates — top importance is\n <strong>{{ TopFeatureName }} at {{ TopFeatureValue }}</strong>, at/above the\n <strong>{{ DominanceThreshold }}</strong> dominance threshold.\n }\n <div class=\"ps-small\" style=\"margin-top:6px\">\n <i class=\"fa-solid fa-pen\"></i> Sign-off with a reason is required to publish this model.\n </div>\n } @else {\n @if (ImportanceHidden) {\n <strong>Leakage gate clear.</strong> No single feature's split share is at or above the\n <strong>{{ DominanceThreshold }}</strong> dominance threshold.\n } @else {\n <strong>Leakage gate clear.</strong> No single feature dominates — top importance is\n <strong>{{ TopFeatureName }} at {{ TopFeatureValue }}</strong>, below the\n <strong>{{ DominanceThreshold }}</strong> dominance threshold.\n }\n <div class=\"ps-small\" style=\"margin-top:6px\">\n <i class=\"fa-solid fa-check\"></i> Sign-off required before any Validated → Published promotion.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- 6. Lifecycle Actions -->\n @if (ShowActions) {\n <div class=\"ps-card\">\n <div class=\"ps-card-body ps-row\" style=\"align-items:center;flex-wrap:wrap;gap:8px\">\n <span class=\"ps-muted ps-small\" style=\"flex:1\">{{ ActionHint }}</span>\n @if (CanValidate) {\n <button mjButton variant=\"secondary\" size=\"sm\" data-testid=\"ps-registry-validate\" (click)=\"RequestPromote('Validated')\">\n <i class=\"fa-solid fa-circle-check\"></i> Mark Validated\n </button>\n }\n @if (CanPublish) {\n <button mjButton variant=\"primary\" size=\"sm\" data-testid=\"ps-registry-promote\" (click)=\"RequestPromote('Published')\">\n <i class=\"fa-solid fa-arrow-up\"></i> Promote to Published\n </button>\n }\n @if (CanArchive) {\n <button mjButton variant=\"secondary\" size=\"sm\" data-testid=\"ps-registry-archive\" (click)=\"RequestPromote('Archived')\">\n <i class=\"fa-solid fa-box-archive\"></i> Archive\n </button>\n }\n </div>\n </div>\n }\n\n <!-- 7. Confirm Promotion Modal -->\n @if (Pending) {\n <div class=\"ps-modal-backdrop\" (click)=\"CancelPromote()\">\n <div class=\"ps-modal\" (click)=\"$event.stopPropagation()\" data-testid=\"ps-confirm-modal\">\n <div class=\"ps-modal-head\" [class.warn]=\"PendingVariant === 'warn'\" [class.danger]=\"PendingVariant === 'danger'\">\n <span class=\"ico\"><i [class]=\"PendingIcon\"></i></span>\n <h3>{{ PendingTitle }}</h3>\n </div>\n <div class=\"ps-modal-body\">\n <div [innerHTML]=\"PendingMessage\"></div>\n @if (Pending.leakageFlagged || Pending.targetStatus === 'Archived') {\n <div class=\"ps-field\" style=\"margin-top:12px\">\n <label>\n {{ Pending.leakageFlagged ? 'Leakage sign-off reason' : 'Reason (optional)' }}\n {{ Pending.leakageFlagged ? ' *' : '' }}\n </label>\n <textarea\n class=\"ps-input\"\n rows=\"3\"\n [(ngModel)]=\"PendingReason\"\n [placeholder]=\"Pending.leakageFlagged ? 'Explain why this model is safe to publish despite the leakage flag…' : 'Add an optional note for the record…'\"\n [disabled]=\"Busy\"></textarea>\n </div>\n }\n </div>\n <div class=\"ps-modal-foot\">\n <button\n mjButton\n [variant]=\"PendingVariant === 'danger' ? 'danger' : 'primary'\"\n size=\"sm\"\n [disabled]=\"Busy || (Pending.leakageFlagged && !PendingReason.trim())\"\n (click)=\"ConfirmPromote(PendingReason.trim())\">\n @if (Busy) {\n <i class=\"fa-solid fa-circle-notch fa-spin\"></i>\n } @else {\n <i [class]=\"PendingIcon\"></i>\n }\n {{ PendingConfirmLabel }}\n </button>\n <span class=\"ps-spacer\" style=\"flex:1\"></span>\n <button mjButton variant=\"secondary\" size=\"sm\" [disabled]=\"Busy\" (click)=\"CancelPromote()\">\n Cancel\n </button>\n </div>\n </div>\n </div>\n }\n } @else {\n <div class=\"ps-empty\" style=\"padding: 32px; text-align: center;\">\n <span class=\"ps-empty-ico\"><i class=\"fa-solid fa-cube\"></i></span>\n <h3>No Model Selected</h3>\n <p class=\"ps-muted\">Select an ML Model from the list to inspect its configuration and metrics.</p>\n </div>\n }\n</div>\n"]}
|
|
@@ -7,6 +7,7 @@ import { CompositeKey, BaseEntity } from '@memberjunction/core';
|
|
|
7
7
|
import { TreeBranchConfig } from '@memberjunction/ng-trees';
|
|
8
8
|
import { CodeEditorComponent, CompositionTokenClickEvent } from '@memberjunction/ng-code-editor';
|
|
9
9
|
import type { QueryRefreshScope } from '@memberjunction/ng-query-viewer';
|
|
10
|
+
import { PhoneSectionsState } from '../../shared/phone-sections-state';
|
|
10
11
|
import * as i0 from "@angular/core";
|
|
11
12
|
interface CategoryTreeNode {
|
|
12
13
|
id: string;
|
|
@@ -14,6 +15,14 @@ interface CategoryTreeNode {
|
|
|
14
15
|
items?: CategoryTreeNode[];
|
|
15
16
|
}
|
|
16
17
|
export declare class MJQueryFormComponentExtended extends MJQueryFormComponent implements OnInit, OnDestroy, AfterViewInit {
|
|
18
|
+
/** Phone width shows the stacked accordions as sections behind one picker (design call 7A). */
|
|
19
|
+
Phone: PhoneSectionsState;
|
|
20
|
+
/** Phone hero (6A): whether the summary line is expanded to show the rest of the hero. */
|
|
21
|
+
HeroDetailsOpen: boolean;
|
|
22
|
+
/** Toggles the phone hero between its compact identity row and the full hero. */
|
|
23
|
+
ToggleHeroDetails(): void;
|
|
24
|
+
/** The phone hero's one-line summary of what the compact hero leaves out. */
|
|
25
|
+
get HeroSummary(): string;
|
|
17
26
|
record: MJQueryEntityExtended;
|
|
18
27
|
QueryParameters: MJQueryParameterEntity[];
|
|
19
28
|
/** @deprecated Use {@link QueryParameters}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-form.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAgC,aAAa,EAAU,MAAM,eAAe,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,EAAsC,MAAM,+BAA+B,CAAC;AACpP,OAAO,KAAK,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAEvG,OAAO,EAAqB,iBAAiB,EAAwD,MAAM,+BAA+B,CAAC;AAC3I,OAAO,EAAE,oBAAoB,EAAE,MAAM,yDAAyD,CAAC;AAC/F,OAAO,EAAyB,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAEjG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC
|
|
1
|
+
{"version":3,"file":"query-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Queries/query-form.component.ts"],"names":[],"mappings":"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"}
|