@memberjunction/ng-core-entity-forms 6.2.0-edge.5 → 6.2.0-edge.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +2 -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 +103 -95
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +6 -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 +6 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +2 -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 +2 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +2 -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 +21 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +2 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +29 -11
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +2 -0
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -0
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +11 -4
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +14 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +15 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +186 -92
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +2 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +2 -0
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +19 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +20 -27
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +14 -6
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- 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 +121 -111
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +105 -103
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentSession/mjaiagentsession.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCalendarEventLink/mjcalendareventlink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCalendarEventLink/mjcalendareventlink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCalendarEventLink/mjcalendareventlink.form.component.js +74 -0
- package/dist/lib/generated/Entities/MJCalendarEventLink/mjcalendareventlink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCalendarSyncState/mjcalendarsyncstate.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCalendarSyncState/mjcalendarsyncstate.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCalendarSyncState/mjcalendarsyncstate.form.component.js +64 -0
- package/dist/lib/generated/Entities/MJCalendarSyncState/mjcalendarsyncstate.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +62 -16
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +28 -10
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationObject/mjcompanyintegrationobject.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObject/mjcompanyintegrationobject.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObject/mjcompanyintegrationobject.form.component.js +189 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObject/mjcompanyintegrationobject.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObjectField/mjcompanyintegrationobjectfield.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObjectField/mjcompanyintegrationobjectfield.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObjectField/mjcompanyintegrationobjectfield.form.component.js +116 -0
- package/dist/lib/generated/Entities/MJCompanyIntegrationObjectField/mjcompanyintegrationobjectfield.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +51 -35
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js +36 -18
- package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js +74 -60
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js +30 -32
- package/dist/lib/generated/Entities/MJContentItemChunk/mjcontentitemchunk.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +43 -35
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +21 -19
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js +45 -29
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js +19 -17
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.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 +128 -92
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityAlternateBaseView/mjentityalternatebaseview.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityAlternateBaseView/mjentityalternatebaseview.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityAlternateBaseView/mjentityalternatebaseview.form.component.js +129 -0
- package/dist/lib/generated/Entities/MJEntityAlternateBaseView/mjentityalternatebaseview.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +30 -12
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +26 -8
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.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 +73 -59
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueryEntity/mjqueryentity.form.component.js +10 -8
- package/dist/lib/generated/Entities/MJQueryEntity/mjqueryentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueryParameter/mjqueryparameter.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQueryParameter/mjqueryparameter.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJQueryParameter/mjqueryparameter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +209 -137
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +50 -38
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +446 -441
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +15 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +10 -0
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +15 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +4 -0
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +77 -61
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +37 -0
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +424 -285
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +48 -48
|
@@ -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';\n\nimport {\n PSFeatureBar,\n PSMetricDisplay,\n PS_FEATURE_DOMINANCE_THRESHOLD,\n FormatMetricValue,\n HumanizeFeatureName,\n MaxFeatureImportance,\n MetricsToDisplay,\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 public get Importance(): PSFeatureBar[] {\n if (!this.Model) return [];\n return ParseFeatureImportance(this.Model.FeatureImportance, 6).map((b) => ({\n ...b,\n name: HumanizeFeatureName(b.name),\n }));\n }\n\n /** @deprecated Use {@link Importance}. */\n public get importance(): PSFeatureBar[] {\n return this.Importance;\n }\n\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 <span class=\"ps-muted ps-small\">{{ importanceCaption }}</span>\n </div>\n <div class=\"ps-card-body\">\n @if (importance.length > 0) {\n @for (f of importance; 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 <div class=\"ps-small ps-muted\">No feature-importance data was recorded for this model.</div>\n }\n </div>\n </div>\n\n <!-- 5. Leakage Sign-Off Gate -->\n @if (importance.length > 0) {\n <div class=\"ps-callout 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 <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 <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 <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 <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} 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"]}
|
|
@@ -161,6 +161,8 @@ export declare class MJQueryFormComponentExtended extends MJQueryFormComponent i
|
|
|
161
161
|
readonly ToolbarConfig: FormToolbarConfig;
|
|
162
162
|
/** Custom-layout Query form looks best full-width on first open. */
|
|
163
163
|
getDefaultFormWidthMode(): 'centered' | 'full-width';
|
|
164
|
+
/** Custom-layout form owns its entire body; suppress auto-filled relationship sections. */
|
|
165
|
+
get OwnsEntireFormBody(): boolean;
|
|
164
166
|
SqlEditor: CodeEditorComponent | null;
|
|
165
167
|
/** @deprecated Use {@link SqlEditor}. */
|
|
166
168
|
get sqlEditor(): CodeEditorComponent | null;
|
|
@@ -1 +1 @@
|
|
|
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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
|
|
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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"}
|
|
@@ -1460,6 +1460,8 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
|
|
|
1460
1460
|
}
|
|
1461
1461
|
/** Custom-layout Query form looks best full-width on first open. */
|
|
1462
1462
|
getDefaultFormWidthMode() { return 'full-width'; }
|
|
1463
|
+
/** Custom-layout form owns its entire body; suppress auto-filled relationship sections. */
|
|
1464
|
+
get OwnsEntireFormBody() { return true; }
|
|
1463
1465
|
/** @deprecated Use {@link SqlEditor}. */
|
|
1464
1466
|
get sqlEditor() {
|
|
1465
1467
|
return this.SqlEditor;
|