@memberjunction/ng-dashboards 6.1.2 → 6.2.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/dist/AI/components/vectors/vector-management-resource.component.d.ts +6 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +99 -45
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +4 -0
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +16 -6
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +4 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +14 -4
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +2 -2
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/DevTools/graphql-console.component.d.ts.map +1 -1
- package/dist/DevTools/graphql-console.component.js +2 -0
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +2 -0
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts +4 -12
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +39 -78
- package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +3 -0
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +7 -6
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +3 -0
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +7 -6
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/at-risk.view-models.d.ts +41 -3
- package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +1 -1
- package/dist/PredictiveStudio/at-risk.view-models.js +99 -6
- package/dist/PredictiveStudio/at-risk.view-models.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-catalog.component.d.ts +4 -1
- package/dist/PredictiveStudio/components/ps-catalog.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-catalog.component.js +61 -37
- package/dist/PredictiveStudio/components/ps-catalog.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +12 -0
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.js +426 -184
- package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +84 -0
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -0
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +1397 -0
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -0
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +66 -34
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipelines.component.js +2456 -743
- package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +194 -0
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -0
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +1902 -0
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -0
- package/dist/PredictiveStudio/components/ps-production.component.d.ts +17 -1
- package/dist/PredictiveStudio/components/ps-production.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-production.component.js +653 -372
- package/dist/PredictiveStudio/components/ps-production.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-registry.component.d.ts +21 -61
- package/dist/PredictiveStudio/components/ps-registry.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-registry.component.js +214 -681
- package/dist/PredictiveStudio/components/ps-registry.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +49 -0
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +1 -0
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +658 -0
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +1 -0
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +42 -0
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -0
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js +90 -0
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -0
- package/dist/PredictiveStudio/predictive-studio.view-models.d.ts +14 -2
- package/dist/PredictiveStudio/predictive-studio.view-models.d.ts.map +1 -1
- package/dist/PredictiveStudio/predictive-studio.view-models.js +41 -5
- package/dist/PredictiveStudio/predictive-studio.view-models.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-models-resource.component.d.ts +9 -1
- package/dist/PredictiveStudio/resources/ps-models-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-models-resource.component.js +178 -65
- package/dist/PredictiveStudio/resources/ps-models-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +9 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +307 -369
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-resource-base.js +1 -1
- package/dist/PredictiveStudio/resources/ps-resource-base.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.d.ts +17 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +309 -138
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts +1 -0
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +6 -5
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/predictive-studio-dashboards.module.d.ts +10 -8
- package/dist/predictive-studio-dashboards.module.d.ts.map +1 -1
- package/dist/predictive-studio-dashboards.module.js +13 -3
- package/dist/predictive-studio-dashboards.module.js.map +1 -1
- package/package.json +64 -63
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps-pipeline-wizard.component.js","sourceRoot":"","sources":["../../../src/PredictiveStudio/components/ps-pipeline-wizard.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { IMetadataProvider, UserInfo, EntityInfo, EntityFieldInfo, Metadata } from '@memberjunction/core';\nimport {\n MJMLTrainingPipelineEntity,\n MJMLAlgorithmEntity,\n PredictiveStudioTrainModelOperation,\n} from '@memberjunction/core-entities';\nimport {\n DOMINANCE_THRESHOLD_DEFAULT,\n type SourceBinding,\n type FeatureStep,\n type AsOfStrategy,\n type LeakageGuard,\n type ValidationStrategy,\n type ProblemType,\n} from '@memberjunction/predictive-studio-core';\nimport { PredictiveStudioEngine } from '../engine/predictive-studio.engine';\n\nexport interface FieldSelectionItem {\n field: EntityFieldInfo;\n selected: boolean;\n isDenyList: boolean;\n isTarget: boolean;\n}\n\nexport type WizardStep = 'goal' | 'features' | 'preprocessing' | 'algorithm';\n\n@Component({\n standalone: true,\n selector: 'ps-pipeline-wizard',\n imports: [CommonModule, FormsModule, MJButtonDirective],\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['../predictive-studio.shared.css', './ps-pipeline-wizard.component.css'],\n template: `\n <div class=\"ps-modal-backdrop\" (click)=\"onBackdropClick($event)\">\n <div class=\"ps-modal-dialog ps-wizard-dialog\" role=\"dialog\" aria-modal=\"true\" data-testid=\"ps-pipeline-wizard\">\n <!-- Header -->\n <div class=\"ps-wizard-header\">\n <div class=\"ps-wizard-header-title\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <div>\n <h2>{{ isEditing ? 'Edit Training Pipeline' : 'New ML Training Pipeline' }}</h2>\n <span class=\"ps-wizard-subtitle\">Step-by-step pipeline configuration with leakage guard</span>\n </div>\n </div>\n <button class=\"ps-wizard-close\" (click)=\"cancel()\" aria-label=\"Close wizard\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Step Indicator Strip -->\n <div class=\"ps-wizard-stepper\">\n <button class=\"ps-step-tab\" [class.active]=\"currentStep === 'goal'\" [class.done]=\"isStepDone('goal')\" (click)=\"goToStep('goal')\">\n <span class=\"step-num\">1</span>\n <span class=\"step-label\">Goal & Target</span>\n </button>\n <div class=\"step-line\"></div>\n <button class=\"ps-step-tab\" [class.active]=\"currentStep === 'features'\" [class.done]=\"isStepDone('features')\" (click)=\"goToStep('features')\">\n <span class=\"step-num\">2</span>\n <span class=\"step-label\">Features & Leakage</span>\n </button>\n <div class=\"step-line\"></div>\n <button class=\"ps-step-tab\" [class.active]=\"currentStep === 'preprocessing'\" [class.done]=\"isStepDone('preprocessing')\" (click)=\"goToStep('preprocessing')\">\n <span class=\"step-num\">3</span>\n <span class=\"step-label\">Preprocessing</span>\n </button>\n <div class=\"step-line\"></div>\n <button class=\"ps-step-tab\" [class.active]=\"currentStep === 'algorithm'\" [class.done]=\"isStepDone('algorithm')\" (click)=\"goToStep('algorithm')\">\n <span class=\"step-num\">4</span>\n <span class=\"step-label\">Algorithm & Split</span>\n </button>\n </div>\n\n <!-- Step Content Area -->\n <div class=\"ps-wizard-body\">\n <!-- Step 1: Goal & Target -->\n @if (currentStep === 'goal') {\n <div class=\"ps-step-content\" data-testid=\"ps-wizard-step-goal\">\n <div class=\"ps-field\">\n <label for=\"pipeline-name\">Pipeline Name <span class=\"req\">*</span></label>\n <input id=\"pipeline-name\" class=\"mj-input\" type=\"text\" [(ngModel)]=\"pipelineName\" placeholder=\"e.g. Member Renewal Risk v1\" />\n </div>\n\n <div class=\"ps-field\">\n <label for=\"pipeline-desc\">Description</label>\n <textarea id=\"pipeline-desc\" class=\"mj-textarea\" rows=\"2\" [(ngModel)]=\"pipelineDescription\" placeholder=\"Predicts whether active members will renew before their period ends.\"></textarea>\n </div>\n\n <div class=\"ps-grid-2\">\n <div class=\"ps-field\">\n <label for=\"target-entity\">Target Entity <span class=\"req\">*</span></label>\n <select id=\"target-entity\" class=\"mj-input\" [ngModel]=\"selectedEntityId\" (ngModelChange)=\"onEntitySelected($event)\">\n <option [value]=\"''\" disabled>-- Select Entity --</option>\n @for (ent of availableEntities; track ent.ID) {\n <option [value]=\"ent.ID\">{{ ent.Name }} ({{ ent.BaseView || ent.BaseTable }})</option>\n }\n </select>\n </div>\n\n <div class=\"ps-field\">\n <label for=\"target-variable\">Target Variable (Label Column) <span class=\"req\">*</span></label>\n <select id=\"target-variable\" class=\"mj-input\" [(ngModel)]=\"targetVariable\" [disabled]=\"!selectedEntity\">\n <option [value]=\"''\" disabled>-- Select Label Field --</option>\n @for (f of availableFields; track f.Name) {\n <option [value]=\"f.Name\">{{ f.Name }} ({{ f.Type }})</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"ps-grid-2\">\n <div class=\"ps-field\">\n <label for=\"problem-type\">Problem Type</label>\n <select id=\"problem-type\" class=\"mj-input\" [(ngModel)]=\"problemType\" (ngModelChange)=\"onProblemTypeChange()\">\n <option value=\"classification\">Classification (Predict Categorical / Binary Outcome)</option>\n <option value=\"regression\">Regression (Predict Numeric Continuous Value)</option>\n </select>\n </div>\n\n <div class=\"ps-field\">\n <label for=\"eval-metric\">Primary Evaluation Metric</label>\n <select id=\"eval-metric\" class=\"mj-input\" [(ngModel)]=\"evaluationMetric\">\n @for (m of availableMetrics; track m) {\n <option [value]=\"m\">{{ m }}</option>\n }\n </select>\n </div>\n </div>\n\n <div class=\"ps-card as-of-box\">\n <div class=\"ps-card-head\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n <h4>Point-in-Time Cutoff (Temporal Leakage Guard)</h4>\n </div>\n <div class=\"ps-card-body\">\n <div class=\"ps-grid-2\">\n <div class=\"ps-field\">\n <label>Cutoff Mode</label>\n <select class=\"mj-input\" [(ngModel)]=\"asOfMode\">\n <option value=\"none\">None (Static Cross-Sectional Data)</option>\n <option value=\"column\">Date Column on Entity</option>\n <option value=\"offset\">Relative Days Offset before Event</option>\n </select>\n </div>\n\n @if (asOfMode === 'column') {\n <div class=\"ps-field\">\n <label>Decision Date Field</label>\n <select class=\"mj-input\" [(ngModel)]=\"asOfColumn\">\n <option [value]=\"''\">-- Select Date Field --</option>\n @for (f of dateFields; track f.Name) {\n <option [value]=\"f.Name\">{{ f.Name }}</option>\n }\n </select>\n </div>\n }\n\n @if (asOfMode === 'offset') {\n <div class=\"ps-field\">\n <label>Offset Days before Outcome</label>\n <input class=\"mj-input\" type=\"number\" min=\"1\" [(ngModel)]=\"asOfOffsetDays\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Step 2: Feature Selection & Leakage Guard -->\n @if (currentStep === 'features') {\n <div class=\"ps-step-content\" data-testid=\"ps-wizard-step-features\">\n <div class=\"feat-toolbar\">\n <div class=\"feat-search\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <input class=\"mj-input\" type=\"text\" [(ngModel)]=\"fieldSearchFilter\" placeholder=\"Filter fields by name or type…\" />\n </div>\n <div class=\"feat-actions\">\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"selectAllFields(true)\">Select All</button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"selectAllFields(false)\">Deselect All</button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"excludeAuditFields()\">Exclude IDs & Timestamps</button>\n </div>\n </div>\n\n <div class=\"feat-stats\">\n <span>Selected: <strong>{{ selectedFeaturesCount }}</strong> features</span>\n <span>Leakage Deny-List: <strong class=\"text-danger\">{{ denyListCount }}</strong> excluded fields</span>\n </div>\n\n <div class=\"feat-table-wrap\">\n <table class=\"ps-table feat-table\">\n <thead>\n <tr>\n <th style=\"width: 40px;\">Use</th>\n <th>Field Name</th>\n <th>Data Type</th>\n <th>Nullable</th>\n <th style=\"width: 140px; text-align: center;\">Leakage Guard</th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredFieldItems; track item.field.Name) {\n <tr [class.target-row]=\"item.isTarget\" [class.deny-row]=\"item.isDenyList\">\n <td>\n <input type=\"checkbox\" [(ngModel)]=\"item.selected\" [disabled]=\"item.isTarget || item.isDenyList\" />\n </td>\n <td>\n <strong>{{ item.field.Name }}</strong>\n @if (item.isTarget) {\n <span class=\"ps-badge info\" style=\"margin-left: 6px;\">Target Label</span>\n }\n </td>\n <td><code>{{ item.field.Type }}</code></td>\n <td>{{ item.field.AllowsNull ? 'Yes' : 'No' }}</td>\n <td style=\"text-align: center;\">\n @if (!item.isTarget) {\n <button class=\"ps-deny-toggle\" [class.denied]=\"item.isDenyList\" (click)=\"toggleDenyList(item)\" title=\"Add to leakage deny-list\">\n <i class=\"fa-solid\" [class.fa-shield-halved]=\"item.isDenyList\" [class.fa-shield]=\"!item.isDenyList\"></i>\n {{ item.isDenyList ? 'Denied' : 'Allow' }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"ps-field\" style=\"margin-top: 14px;\">\n <label>Single-Feature Dominance Threshold: <strong>{{ dominanceThreshold | percent }}</strong></label>\n <div class=\"slider-row\">\n <input type=\"range\" min=\"0.5\" max=\"0.99\" step=\"0.01\" [(ngModel)]=\"dominanceThreshold\" />\n <span class=\"ps-muted ps-small\">Warns and holds model if any single feature accounts for > {{ dominanceThreshold | percent }} of total importance.</span>\n </div>\n </div>\n </div>\n }\n\n <!-- Step 3: Preprocessing Recipe -->\n @if (currentStep === 'preprocessing') {\n <div class=\"ps-step-content\" data-testid=\"ps-wizard-step-preprocessing\">\n <div class=\"recipe-card\">\n <div class=\"recipe-icon\"><i class=\"fa-solid fa-table-cells\"></i></div>\n <div class=\"recipe-details\">\n <h4>Categorical Encoding</h4>\n <p class=\"ps-small ps-muted\">Converts text and discrete categoricals into numerical representations.</p>\n <select class=\"mj-input\" [(ngModel)]=\"categoricalEncoding\">\n <option value=\"onehot\">One-Hot Encoding (Recommended for cardinality < 50)</option>\n <option value=\"none\">Pass-Through / Native Algorithm Handling</option>\n </select>\n </div>\n </div>\n\n <div class=\"recipe-card\">\n <div class=\"recipe-icon\"><i class=\"fa-solid fa-fill-drip\"></i></div>\n <div class=\"recipe-details\">\n <h4>Missing Value Imputation</h4>\n <p class=\"ps-small ps-muted\">Strategy for filling null or missing entries in training matrices.</p>\n <select class=\"mj-input\" [(ngModel)]=\"imputeStrategy\">\n <option value=\"median\">Median (Robust against numeric outliers)</option>\n <option value=\"mean\">Mean (Standard arithmetic average)</option>\n <option value=\"mode\">Mode (Most frequent category)</option>\n <option value=\"constant\">Constant (Zero / Missing category token)</option>\n </select>\n </div>\n </div>\n\n <div class=\"recipe-card\">\n <div class=\"recipe-icon\"><i class=\"fa-solid fa-ruler-combined\"></i></div>\n <div class=\"recipe-details\">\n <h4>Numeric Standardization</h4>\n <p class=\"ps-small ps-muted\">Scales numeric features to prevent large magnitudes from dominating.</p>\n <select class=\"mj-input\" [(ngModel)]=\"standardizeStrategy\">\n <option value=\"standard\">Standard Scaling (Z-score: mean 0, variance 1)</option>\n <option value=\"minmax\">Min-Max Scaling (Bounding values to [0, 1])</option>\n <option value=\"none\">None (Native tree-based scaling)</option>\n </select>\n </div>\n </div>\n </div>\n }\n\n <!-- Step 4: Algorithm & Validation Split -->\n @if (currentStep === 'algorithm') {\n <div class=\"ps-step-content\" data-testid=\"ps-wizard-step-algorithm\">\n <div class=\"ps-field\">\n <label for=\"algorithm-select\">Algorithm <span class=\"req\">*</span></label>\n <select id=\"algorithm-select\" class=\"mj-input\" [ngModel]=\"selectedAlgorithmId\" (ngModelChange)=\"onAlgorithmSelected($event)\">\n @for (a of availableAlgorithms; track a.ID) {\n <option [value]=\"a.ID\">{{ a.Name }} ({{ a.DriverClass }})</option>\n }\n </select>\n </div>\n\n <!-- Hyperparameter controls -->\n <div class=\"ps-card\" style=\"margin: 12px 0;\">\n <div class=\"ps-card-head\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h4>Algorithm Hyperparameters</h4>\n </div>\n <div class=\"ps-card-body\">\n <div class=\"ps-grid-3\">\n <div class=\"ps-field\">\n <label>Estimators (Trees)</label>\n <input class=\"mj-input\" type=\"number\" min=\"10\" max=\"1000\" step=\"10\" [(ngModel)]=\"hyperparamEstimators\" />\n </div>\n <div class=\"ps-field\">\n <label>Max Depth</label>\n <input class=\"mj-input\" type=\"number\" min=\"1\" max=\"20\" [(ngModel)]=\"hyperparamMaxDepth\" />\n </div>\n <div class=\"ps-field\">\n <label>Learning Rate</label>\n <input class=\"mj-input\" type=\"number\" min=\"0.001\" max=\"1\" step=\"0.01\" [(ngModel)]=\"hyperparamLearningRate\" />\n </div>\n </div>\n </div>\n </div>\n\n <!-- Validation strategy -->\n <div class=\"ps-card\">\n <div class=\"ps-card-head\">\n <i class=\"fa-solid fa-scissors\"></i>\n <h4>Validation Strategy</h4>\n </div>\n <div class=\"ps-card-body\">\n <div class=\"ps-grid-2\">\n <div class=\"ps-field\">\n <label>Strategy</label>\n <select class=\"mj-input\" [(ngModel)]=\"validationStrategyType\">\n <option value=\"train_test_split\">Train / Test Split</option>\n <option value=\"kfold\">K-Fold Cross-Validation</option>\n </select>\n </div>\n\n @if (validationStrategyType === 'train_test_split') {\n <div class=\"ps-field\">\n <label>Test Holdout Percentage: <strong>{{ testSplitRatio | percent }}</strong></label>\n <input type=\"range\" min=\"0.1\" max=\"0.4\" step=\"0.05\" [(ngModel)]=\"testSplitRatio\" />\n </div>\n } @else {\n <div class=\"ps-field\">\n <label>Number of Folds (K)</label>\n <input class=\"mj-input\" type=\"number\" min=\"2\" max=\"10\" [(ngModel)]=\"kFolds\" />\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Footer Actions -->\n <div class=\"ps-wizard-footer\">\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"cancel()\">Cancel</button>\n <span class=\"ps-spacer\"></span>\n\n @if (currentStep !== 'goal') {\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"prevStep()\">\n <i class=\"fa-solid fa-arrow-left\"></i> Back\n </button>\n }\n\n @if (currentStep !== 'algorithm') {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"nextStep()\" [disabled]=\"!canProceed()\">\n Next <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n } @else {\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"saveDraft()\" [disabled]=\"busy || !canSave()\">\n <i class=\"fa-solid fa-floppy-disk\"></i> Save Draft\n </button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"saveAndTrain()\" [disabled]=\"busy || !canSave()\">\n <i class=\"fa-solid fa-play\"></i> Save & Train Now\n </button>\n }\n </div>\n </div>\n </div>\n `,\n})\nexport class PSPipelineWizardComponent implements OnInit {\n @Input() provider: IMetadataProvider | null = null;\n @Input() currentUser: UserInfo | null = null;\n @Input() engine: PredictiveStudioEngine | null = null;\n @Input() initialAlgorithmName?: string;\n @Input() initialAlgorithmId?: string;\n @Input() cloneFromPipeline?: MJMLTrainingPipelineEntity;\n @Input() set cloneFrom(p: MJMLTrainingPipelineEntity | null | undefined) {\n this.cloneFromPipeline = p ?? undefined;\n }\n\n @Output() closed = new EventEmitter<void>();\n @Output() saved = new EventEmitter<MJMLTrainingPipelineEntity>();\n @Output() trainRequested = new EventEmitter<MJMLTrainingPipelineEntity>();\n\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly notifications = inject(MJNotificationService);\n\n public currentStep: WizardStep = 'goal';\n public busy = false;\n public isEditing = false;\n\n // Step 1: Goal & Target\n public pipelineName = '';\n public pipelineDescription = '';\n public selectedEntityId = '';\n public targetVariable = '';\n public problemType: ProblemType = 'classification';\n public evaluationMetric = 'AUC';\n public asOfMode: 'none' | 'column' | 'offset' = 'none';\n public asOfColumn = '';\n public asOfOffsetDays = 30;\n\n // Step 2: Features\n public fieldItems: FieldSelectionItem[] = [];\n public fieldSearchFilter = '';\n public dominanceThreshold = DOMINANCE_THRESHOLD_DEFAULT;\n\n // Step 3: Preprocessing\n public categoricalEncoding: 'onehot' | 'none' = 'onehot';\n public imputeStrategy: 'mean' | 'median' | 'mode' | 'constant' = 'median';\n public standardizeStrategy: 'standard' | 'minmax' | 'none' = 'standard';\n\n // Step 4: Algorithm & Validation\n public selectedAlgorithmId = '';\n public hyperparamEstimators = 100;\n public hyperparamMaxDepth = 6;\n public hyperparamLearningRate = 0.1;\n public validationStrategyType: 'train_test_split' | 'kfold' = 'train_test_split';\n public testSplitRatio = 0.2;\n public kFolds = 5;\n\n public ngOnInit(): void {\n this.initFromDefaults();\n }\n\n public get availableEntities(): EntityInfo[] {\n if (!this.provider) return [];\n return this.provider.Entities.filter((e) => !e.VirtualEntity && e.AllowUserSearchAPI)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n public get selectedEntity(): EntityInfo | null {\n if (!this.selectedEntityId || !this.provider) return null;\n return this.provider.Entities.find((e) => UUIDsEqual(e.ID, this.selectedEntityId)) ?? null;\n }\n\n public get availableFields(): EntityFieldInfo[] {\n return this.selectedEntity?.Fields ?? [];\n }\n\n public get dateFields(): EntityFieldInfo[] {\n return this.availableFields.filter((f) => f.Type?.toLowerCase().includes('date') || f.Type?.toLowerCase().includes('time'));\n }\n\n public get availableMetrics(): string[] {\n if (this.problemType === 'classification') {\n return ['AUC', 'Accuracy', 'F1', 'Log Loss', 'Precision', 'Recall'];\n }\n return ['RMSE', 'MAE', 'R2', 'MSE'];\n }\n\n public get availableAlgorithms(): MJMLAlgorithmEntity[] {\n return this.engine?.Algorithms ?? [];\n }\n\n public get filteredFieldItems(): FieldSelectionItem[] {\n const q = this.fieldSearchFilter.trim().toLowerCase();\n if (!q) return this.fieldItems;\n return this.fieldItems.filter((item) => item.field.Name.toLowerCase().includes(q) || item.field.Type?.toLowerCase().includes(q));\n }\n\n public get selectedFeaturesCount(): number {\n return this.fieldItems.filter((i) => i.selected && !i.isDenyList && !i.isTarget).length;\n }\n\n public get denyListCount(): number {\n return this.fieldItems.filter((i) => i.isDenyList).length;\n }\n\n public onEntitySelected(entityId: string): void {\n this.selectedEntityId = entityId;\n this.targetVariable = '';\n this.populateFieldItems();\n this.cdr.detectChanges();\n }\n\n public onProblemTypeChange(): void {\n this.evaluationMetric = this.problemType === 'classification' ? 'AUC' : 'RMSE';\n this.cdr.detectChanges();\n }\n\n public onAlgorithmSelected(algoId: string): void {\n this.selectedAlgorithmId = algoId;\n this.cdr.detectChanges();\n }\n\n public toggleDenyList(item: FieldSelectionItem): void {\n item.isDenyList = !item.isDenyList;\n if (item.isDenyList) {\n item.selected = false;\n }\n this.cdr.detectChanges();\n }\n\n public selectAllFields(val: boolean): void {\n for (const item of this.fieldItems) {\n if (!item.isTarget && !item.isDenyList) {\n item.selected = val;\n }\n }\n this.cdr.detectChanges();\n }\n\n public excludeAuditFields(): void {\n for (const item of this.fieldItems) {\n const name = item.field.Name.toLowerCase();\n if (\n name === 'id' ||\n name.startsWith('__mj') ||\n name.includes('created') ||\n name.includes('updated') ||\n name.includes('password')\n ) {\n item.selected = false;\n }\n }\n this.cdr.detectChanges();\n }\n\n public isStepDone(step: WizardStep): boolean {\n switch (step) {\n case 'goal':\n return Boolean(this.pipelineName.trim() && this.selectedEntityId && this.targetVariable);\n case 'features':\n return this.selectedFeaturesCount > 0;\n case 'preprocessing':\n return true;\n case 'algorithm':\n return Boolean(this.selectedAlgorithmId);\n }\n }\n\n public canProceed(): boolean {\n return this.isStepDone(this.currentStep);\n }\n\n public canSave(): boolean {\n return (\n Boolean(this.pipelineName.trim()) &&\n Boolean(this.selectedEntityId) &&\n Boolean(this.targetVariable) &&\n Boolean(this.selectedAlgorithmId) &&\n this.selectedFeaturesCount > 0\n );\n }\n\n public goToStep(step: WizardStep): void {\n this.currentStep = step;\n this.cdr.detectChanges();\n }\n\n public nextStep(): void {\n if (this.currentStep === 'goal') this.currentStep = 'features';\n else if (this.currentStep === 'features') this.currentStep = 'preprocessing';\n else if (this.currentStep === 'preprocessing') this.currentStep = 'algorithm';\n this.cdr.detectChanges();\n }\n\n public prevStep(): void {\n if (this.currentStep === 'algorithm') this.currentStep = 'preprocessing';\n else if (this.currentStep === 'preprocessing') this.currentStep = 'features';\n else if (this.currentStep === 'features') this.currentStep = 'goal';\n this.cdr.detectChanges();\n }\n\n public cancel(): void {\n this.closed.emit();\n }\n\n public onBackdropClick(event: MouseEvent): void {\n if ((event.target as HTMLElement).classList.contains('ps-modal-backdrop')) {\n this.cancel();\n }\n }\n\n public async saveDraft(): Promise<MJMLTrainingPipelineEntity | null> {\n return this.persistPipeline(false);\n }\n\n public async saveAndTrain(): Promise<void> {\n const pipeline = await this.persistPipeline(true);\n if (!pipeline) return;\n this.trainRequested.emit(pipeline);\n }\n\n private async persistPipeline(andTrain: boolean): Promise<MJMLTrainingPipelineEntity | null> {\n if (!this.canSave()) {\n this.notifications.CreateSimpleNotification('Please complete required fields before saving.', 'warning', 3000);\n return null;\n }\n\n this.busy = true;\n this.cdr.detectChanges();\n\n try {\n const prov = this.provider ?? Metadata.Provider;\n const p = await prov.GetEntityObject<MJMLTrainingPipelineEntity>('MJ: ML Training Pipelines', this.currentUser ?? undefined);\n p.NewRecord();\n p.Name = this.pipelineName.trim();\n p.Description = this.pipelineDescription.trim();\n p.Version = 1;\n p.Status = 'Draft';\n p.TargetEntityID = this.selectedEntityId;\n p.TargetVariable = this.targetVariable;\n p.ProblemType = this.problemType;\n p.AlgorithmID = this.selectedAlgorithmId;\n\n // Source Bindings\n const sourceBindings: SourceBinding[] = [\n {\n Kind: 'Entity',\n Ref: this.selectedEntity?.Name ?? this.selectedEntityId,\n Alias: 'src_primary',\n },\n ];\n p.SourceBindings = JSON.stringify(sourceBindings);\n\n // Feature Steps\n const selectedColumns = this.fieldItems\n .filter((i) => i.selected && !i.isDenyList && !i.isTarget)\n .map((i) => i.field.Name);\n\n const steps: FeatureStep[] = [\n {\n Id: 'step_select',\n Kind: 'select',\n Label: 'Select Features',\n Inputs: ['src_primary'],\n Columns: selectedColumns,\n },\n ];\n\n if (this.categoricalEncoding === 'onehot') {\n const catCols = this.fieldItems\n .filter((i) => i.selected && !i.isDenyList && !i.isTarget)\n .filter((i) => {\n const t = i.field.Type?.toLowerCase() ?? '';\n return t.includes('char') || t.includes('text') || t.includes('string');\n })\n .map((i) => i.field.Name);\n\n for (const c of catCols) {\n steps.push({\n Id: `step_onehot_${c}`,\n Kind: 'onehot',\n Label: `One-Hot ${c}`,\n Inputs: ['step_select'],\n Column: c,\n });\n }\n }\n\n if (this.standardizeStrategy !== 'none') {\n const numCols = this.fieldItems\n .filter((i) => i.selected && !i.isDenyList && !i.isTarget)\n .filter((i) => {\n const t = i.field.Type?.toLowerCase() ?? '';\n return (\n t.includes('int') ||\n t.includes('decimal') ||\n t.includes('float') ||\n t.includes('money') ||\n t.includes('numeric')\n );\n })\n .map((i) => i.field.Name);\n\n if (numCols.length > 0) {\n steps.push({\n Id: 'step_standardize',\n Kind: 'standardize',\n Label: 'Standardize Numerics',\n Inputs: ['step_select'],\n Columns: numCols,\n });\n }\n }\n\n p.FeatureSteps = JSON.stringify({ Steps: steps });\n\n // As-Of Strategy\n const asOf: AsOfStrategy = {\n Mode: this.asOfMode,\n ...(this.asOfMode === 'column' ? { Column: this.asOfColumn } : {}),\n ...(this.asOfMode === 'offset' ? { OffsetDays: this.asOfOffsetDays } : {}),\n };\n p.AsOfStrategy = JSON.stringify(asOf);\n\n // Leakage Guard\n const denyList = this.fieldItems.filter((i) => i.isDenyList).map((i) => i.field.Name);\n const leakageGuard: LeakageGuard = {\n DenyFields: denyList,\n SingleFeatureDominanceThreshold: this.dominanceThreshold,\n };\n p.LeakageGuard = JSON.stringify(leakageGuard);\n\n // Validation Strategy\n const valStrategy: ValidationStrategy = {\n Strategy: this.validationStrategyType,\n LockedHoldoutFraction: 0.15,\n ...(this.validationStrategyType === 'train_test_split' ? { TestSize: this.testSplitRatio } : {}),\n ...(this.validationStrategyType === 'kfold' ? { K: this.kFolds } : {}),\n };\n p.ValidationStrategy = JSON.stringify(valStrategy);\n\n if (!(await p.Save())) {\n throw new Error(p.LatestResult?.CompleteMessage ?? 'Failed to save pipeline record.');\n }\n\n this.notifications.CreateSimpleNotification(\n `Training pipeline '${p.Name}' saved successfully.`,\n 'success',\n 3000\n );\n this.saved.emit(p);\n return p;\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n this.notifications.CreateSimpleNotification(`Error saving pipeline: ${msg}`, 'error', 5000);\n return null;\n } finally {\n this.busy = false;\n this.cdr.detectChanges();\n }\n }\n\n private initFromDefaults(): void {\n // If initial algorithm requested (e.g. from Catalog)\n if (this.initialAlgorithmId) {\n this.selectedAlgorithmId = this.initialAlgorithmId;\n } else if (this.initialAlgorithmName && (this.engine?.Algorithms.length ?? 0) > 0) {\n const match = this.engine!.Algorithms.find(\n (a) =>\n a.Name.toLowerCase() === this.initialAlgorithmName!.toLowerCase() ||\n a.DriverClass?.toLowerCase() === this.initialAlgorithmName!.toLowerCase()\n );\n if (match) this.selectedAlgorithmId = match.ID;\n } else if ((this.engine?.Algorithms.length ?? 0) > 0) {\n this.selectedAlgorithmId = this.engine!.Algorithms[0].ID;\n }\n\n // If cloning from existing pipeline\n if (this.cloneFromPipeline) {\n const cp = this.cloneFromPipeline;\n this.isEditing = false; // clone creates new\n this.pipelineName = `${cp.Name} (Copy)`;\n this.pipelineDescription = cp.Description || '';\n this.selectedEntityId = cp.TargetEntityID;\n this.targetVariable = cp.TargetVariable;\n this.problemType = (cp.ProblemType as ProblemType) || 'classification';\n if (cp.AlgorithmID) this.selectedAlgorithmId = cp.AlgorithmID;\n\n this.populateFieldItems();\n\n // Read leakage guard\n try {\n if (cp.LeakageGuard) {\n const lg = JSON.parse(cp.LeakageGuard) as Record<string, unknown>;\n const deny = (lg['DenyFields'] ?? lg['DenyList']) as string[] | undefined;\n if (Array.isArray(deny)) {\n const denySet = new Set(deny.map((d) => d.toLowerCase()));\n for (const item of this.fieldItems) {\n if (denySet.has(item.field.Name.toLowerCase())) {\n item.isDenyList = true;\n item.selected = false;\n }\n }\n }\n if (typeof lg['SingleFeatureDominanceThreshold'] === 'number') {\n this.dominanceThreshold = lg['SingleFeatureDominanceThreshold'];\n }\n }\n } catch {\n // Ignore\n }\n }\n }\n\n private populateFieldItems(): void {\n if (!this.selectedEntity) {\n this.fieldItems = [];\n return;\n }\n const targetLower = (this.targetVariable || '').toLowerCase();\n this.fieldItems = this.selectedEntity.Fields.map((f) => {\n const nameLower = f.Name.toLowerCase();\n const isTarget = Boolean(targetLower && nameLower === targetLower);\n const isSystem =\n nameLower === 'id' ||\n nameLower.startsWith('__mj') ||\n nameLower.includes('created') ||\n nameLower.includes('updated');\n return {\n field: f,\n selected: !isTarget && !isSystem,\n isDenyList: false,\n isTarget,\n };\n });\n }\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { EventEmitter, OnInit } from '@angular/core';
|
|
1
|
+
import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
3
|
-
import { MJMLTrainingPipelineEntity } from '@memberjunction/core-entities';
|
|
3
|
+
import { MJMLTrainingPipelineEntity, MJMLModelEntity } from '@memberjunction/core-entities';
|
|
4
4
|
import { type SourceBinding, type FeatureStep, type FeatureStepKind, type AsOfStrategy, type LeakageGuard, type ValidationStrategy, type ProblemType } from '@memberjunction/predictive-studio-core';
|
|
5
|
+
import { PSPanelKey } from '../predictive-studio.types';
|
|
5
6
|
import { PredictiveStudioEngine } from '../engine/predictive-studio.engine';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
type NodeType = 'src' | 'feat' | 'emb' | 'target' | 'algo' | 'output';
|
|
@@ -24,23 +25,21 @@ interface DagEdge {
|
|
|
24
25
|
from: string;
|
|
25
26
|
to: string;
|
|
26
27
|
}
|
|
27
|
-
|
|
28
|
-
* Training Pipelines panel — a LIVE, **editable** visual DAG builder over `MJ: ML Training Pipelines`.
|
|
29
|
-
* The whole graph is persisted as JSON (`SourceBindings` + `FeatureSteps` + `AlgorithmID` +
|
|
30
|
-
* `TargetVariable` + `AsOfStrategy`/`LeakageGuard`/`ValidationStrategy`), so the editor reads/writes the
|
|
31
|
-
* REAL spec. The parsed spec is the editable state; nodes/edges are derived from it for rendering, so an
|
|
32
|
-
* edit → re-derive → re-layout. Save serializes back to the entity; Train runs the pipeline. Editing is
|
|
33
|
-
* inspector-driven (explicit controls, no fiddly port-dragging) — better for a structured, persisted DAG.
|
|
34
|
-
* Fully entity-agnostic — every node derives from the pipeline's own refs. See
|
|
35
|
-
* plans/predictive-studio-pipeline-builder.md.
|
|
36
|
-
*/
|
|
37
|
-
export declare class PSPipelinesComponent implements OnInit {
|
|
28
|
+
export declare class PSPipelinesComponent implements OnInit, OnChanges {
|
|
38
29
|
engine: PredictiveStudioEngine;
|
|
39
30
|
provider: IMetadataProvider | null;
|
|
40
31
|
currentUser: UserInfo | null;
|
|
41
32
|
askAgent: EventEmitter<string>;
|
|
33
|
+
navigate: EventEmitter<PSPanelKey>;
|
|
42
34
|
private cdr;
|
|
43
35
|
private notifications;
|
|
36
|
+
private navigationService;
|
|
37
|
+
isCatalogCollapsed: boolean;
|
|
38
|
+
catalogSizePct: number;
|
|
39
|
+
workspaceSizePct: number;
|
|
40
|
+
isInspectorCollapsed: boolean;
|
|
41
|
+
canvasSizePct: number;
|
|
42
|
+
inspectorSizePct: number;
|
|
44
43
|
readonly starterPrompt: string;
|
|
45
44
|
readonly sourceKinds: ("Entity" | "Query" | "ExternalEntity" | "VectorSet" | "FeaturePipeline")[];
|
|
46
45
|
readonly stepKinds: FeatureStepKind[];
|
|
@@ -48,8 +47,23 @@ export declare class PSPipelinesComponent implements OnInit {
|
|
|
48
47
|
readonly imputeStrategies: ("mode" | "mean" | "median" | "constant")[];
|
|
49
48
|
pipelines: MJMLTrainingPipelineEntity[];
|
|
50
49
|
selectedPipelineId: string;
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
showWizard: boolean;
|
|
51
|
+
wizardClonePipeline: MJMLTrainingPipelineEntity | null;
|
|
52
|
+
initialWizardAlgorithmId?: string;
|
|
53
|
+
viewMode: 'stages' | 'graph' | 'dag';
|
|
54
|
+
searchQuery: string;
|
|
55
|
+
activeFilter: string;
|
|
56
|
+
readonly NODE_W = 230;
|
|
57
|
+
readonly NODE_H = 96;
|
|
58
|
+
Math: Math;
|
|
59
|
+
zoomLevel: number;
|
|
60
|
+
openWizard(algoId?: string): void;
|
|
61
|
+
cloneSelected(): void;
|
|
62
|
+
closeWizard(): void;
|
|
63
|
+
onWizardSaved(pipeline: MJMLTrainingPipelineEntity): Promise<void>;
|
|
64
|
+
onWizardTrainRequested(pipeline: MJMLTrainingPipelineEntity): Promise<void>;
|
|
65
|
+
editSources: SourceBinding[];
|
|
66
|
+
editSteps: FeatureStep[];
|
|
53
67
|
editTargetVariable: string;
|
|
54
68
|
editProblemType: ProblemType;
|
|
55
69
|
editAlgorithmId: string;
|
|
@@ -66,9 +80,42 @@ export declare class PSPipelinesComponent implements OnInit {
|
|
|
66
80
|
busy: boolean;
|
|
67
81
|
private nodeById;
|
|
68
82
|
private stepSeq;
|
|
83
|
+
ngOnChanges(_changes?: SimpleChanges): void;
|
|
69
84
|
ngOnInit(): void;
|
|
85
|
+
onSplitDragEnd(sizes: readonly (number | '*')[]): void;
|
|
86
|
+
toggleCatalog(): void;
|
|
87
|
+
onInspectorSplitDragEnd(sizes: readonly (number | '*')[]): void;
|
|
88
|
+
toggleInspector(): void;
|
|
89
|
+
private saveLayoutPrefs;
|
|
90
|
+
openModelRecord(modelId: string): void;
|
|
91
|
+
viewTrainingRuns(modelId?: string): void;
|
|
92
|
+
refreshFromEngine(): void;
|
|
93
|
+
get isGraphView(): boolean;
|
|
94
|
+
toggleViewMode(): void;
|
|
95
|
+
zoomIn(): void;
|
|
96
|
+
zoomOut(): void;
|
|
97
|
+
resetZoom(): void;
|
|
98
|
+
inputVal(e: Event): string;
|
|
99
|
+
isEdgeActive(edge: DagEdge): boolean;
|
|
100
|
+
setFilter(f: string): void;
|
|
101
|
+
onSearchInput(ev: Event): void;
|
|
102
|
+
get filteredPipelines(): MJMLTrainingPipelineEntity[];
|
|
103
|
+
pipelineDomain(p?: MJMLTrainingPipelineEntity): string;
|
|
104
|
+
targetEntityName(p?: MJMLTrainingPipelineEntity): string;
|
|
105
|
+
get pipelineModels(): MJMLModelEntity[];
|
|
106
|
+
get publishedModel(): MJMLModelEntity | undefined;
|
|
107
|
+
selectedModelVersionId: string | null;
|
|
108
|
+
get inspectedModel(): MJMLModelEntity | undefined;
|
|
109
|
+
selectModelVersion(id: string): void;
|
|
110
|
+
bestMetricForPipeline(p?: MJMLTrainingPipelineEntity): string | null;
|
|
111
|
+
selectStep(id: string): void;
|
|
112
|
+
getStepColumns(step: FeatureStep): string[];
|
|
113
|
+
getStepInputs(step: FeatureStep): string[];
|
|
114
|
+
formatHoldout(m: MJMLModelEntity): string;
|
|
115
|
+
get asOfLabel(): string;
|
|
116
|
+
get selectedAlgorithmName(): string;
|
|
70
117
|
selectPipeline(id: string): void;
|
|
71
|
-
|
|
118
|
+
get selectedPipeline(): MJMLTrainingPipelineEntity | undefined;
|
|
72
119
|
isSelectedPipeline(p: MJMLTrainingPipelineEntity): boolean;
|
|
73
120
|
private parse;
|
|
74
121
|
private markDirty;
|
|
@@ -91,29 +138,19 @@ export declare class PSPipelinesComponent implements OnInit {
|
|
|
91
138
|
setSourceAlias(alias: string): void;
|
|
92
139
|
get columnsText(): string;
|
|
93
140
|
setColumns(text: string): void;
|
|
94
|
-
/** Read an arbitrary field off the selected step for display (narrowed by template @switch). */
|
|
95
141
|
stepField(field: string): string;
|
|
96
142
|
setStepStr(field: string, value: string): void;
|
|
97
143
|
setStepNum(field: string, value: string): void;
|
|
98
144
|
setStepLabel(label: string): void;
|
|
99
|
-
/** Change a step's Kind, resetting its config to that Kind's defaults (preserving Id/Label/Inputs). */
|
|
100
145
|
setStepKind(kind: string): void;
|
|
101
146
|
hasInput(stepId: string): boolean;
|
|
102
|
-
/** Toggle an upstream step input, preventing cycles. */
|
|
103
147
|
toggleInput(stepId: string): void;
|
|
104
|
-
/** True if making `target` depend on `from` would create a cycle (from is downstream of target). */
|
|
105
148
|
private createsCycle;
|
|
106
149
|
setTargetVariable(v: string): void;
|
|
107
150
|
setProblemType(v: string): void;
|
|
108
151
|
setAlgorithm(id: string): void;
|
|
109
152
|
setHyperparams(v: string): void;
|
|
110
153
|
get denyText(): string;
|
|
111
|
-
/**
|
|
112
|
-
* Parse the deny-field input. Uses the shared `parseDenyList` so a pasted
|
|
113
|
-
* bracketed list ("[CheckInTime, Status]") yields clean column names rather than
|
|
114
|
-
* "[CheckInTime" / "Status]" — entries which match no column and therefore leave
|
|
115
|
-
* the most dangerous columns silently unguarded. The server re-validates on save.
|
|
116
|
-
*/
|
|
117
154
|
setDeny(text: string): void;
|
|
118
155
|
setThreshold(v: string): void;
|
|
119
156
|
setAsOfMode(v: string): void;
|
|
@@ -127,21 +164,16 @@ export declare class PSPipelinesComponent implements OnInit {
|
|
|
127
164
|
addStep(): void;
|
|
128
165
|
deleteSelected(): void;
|
|
129
166
|
private defaultStep;
|
|
130
|
-
/** Serialize the editable state back onto the pipeline entity and Save(). */
|
|
131
167
|
save(): Promise<void>;
|
|
132
|
-
/** Client-side spec sanity check before training. */
|
|
133
168
|
validate(): void;
|
|
134
|
-
/** Run the pipeline via the Train Remote Op, then refresh the engine. */
|
|
135
169
|
train(): Promise<void>;
|
|
136
170
|
refine(): void;
|
|
137
|
-
statusClass(status: string
|
|
171
|
+
statusClass(status: string): string;
|
|
138
172
|
nodeTypeLabel(type: NodeType): string;
|
|
139
|
-
private
|
|
140
|
-
private computeLayers;
|
|
141
|
-
private positionColumns;
|
|
173
|
+
private layoutGraph;
|
|
142
174
|
edgePath(edge: DagEdge): string;
|
|
143
175
|
static ɵfac: i0.ɵɵFactoryDeclaration<PSPipelinesComponent, never>;
|
|
144
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PSPipelinesComponent, "ps-pipelines", never, { "engine": { "alias": "engine"; "required": false; }; "provider": { "alias": "provider"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "askAgent": "askAgent"; }, never, never, true, never>;
|
|
176
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PSPipelinesComponent, "ps-pipelines", never, { "engine": { "alias": "engine"; "required": false; }; "provider": { "alias": "provider"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "viewMode": { "alias": "viewMode"; "required": false; }; }, { "askAgent": "askAgent"; "navigate": "navigate"; }, never, never, true, never>;
|
|
145
177
|
}
|
|
146
178
|
export {};
|
|
147
179
|
//# sourceMappingURL=ps-pipelines.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ps-pipelines.component.d.ts","sourceRoot":"","sources":["../../../src/PredictiveStudio/components/ps-pipelines.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,YAAY,EAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"ps-pipelines.component.d.ts","sourceRoot":"","sources":["../../../src/PredictiveStudio/components/ps-pipelines.component.ts"],"names":[],"mappings":"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"}
|