@memberjunction/ng-dashboards 5.30.1 → 5.31.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/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +4 -4
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +8 -6
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
- package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
- package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +4 -3
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +2 -2
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +2 -2
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
- package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
- package/dist/AI/components/tags/tags-resource.component.js +7487 -0
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/index.d.ts +1 -0
- package/dist/AI/index.d.ts.map +1 -1
- package/dist/AI/index.js +5 -0
- package/dist/AI/index.js.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
- package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
- package/dist/AI/services/ai-instrumentation.service.js +12 -4
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +5 -4
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
- package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.d.ts +2 -1
- package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +6 -5
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +4 -4
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +8 -6
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
- package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -8
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
- package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +6 -5
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +2 -2
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +6 -5
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +1 -1
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
- package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +6 -4
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
- package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
- package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +1 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +1 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +3 -3
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +1 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +3 -3
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
- package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-version.service.js +16 -6
- package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -1
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
- package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
- package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
- package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
- package/dist/DataExplorer/services/explorer-state.service.js +15 -5
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
- package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
- package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
- package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
- package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
- package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
- package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
- package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
- package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
- package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
- package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
- package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
- package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
- package/dist/DatabaseDesigner/database-designer.types.js +26 -0
- package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
- package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
- package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
- package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
- package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
- package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
- package/dist/Home/action-pin-config-dialog.component.js +6 -4
- package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
- package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
- package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
- package/dist/Home/action-pin-runner-dialog.component.js +5 -4
- package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +10 -12
- package/dist/Home/home-application.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +3 -3
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.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 +11 -10
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +5 -4
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/services/integration-data.service.d.ts +5 -1
- package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
- package/dist/Integration/services/integration-data.service.js +27 -19
- package/dist/Integration/services/integration-data.service.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +6 -6
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +4 -4
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +11 -10
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +11 -3
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
- package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
- package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +12 -12
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Permissions/permissions-shared.d.ts +3 -3
- package/dist/Permissions/permissions-shared.d.ts.map +1 -1
- package/dist/Permissions/permissions-shared.js +5 -5
- package/dist/Permissions/permissions-shared.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +1 -1
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +1 -2
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +9 -7
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
- package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
- package/dist/Testing/services/testing-instrumentation.service.js +21 -11
- package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +3 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +15 -11
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +5 -5
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +1 -2
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +3 -3
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +35 -34
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +6 -0
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/module.d.ts +13 -12
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +7 -0
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +3 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -1
- package/dist/public-api.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +4 -3
- package/dist/shared/entity-field-display.d.ts.map +1 -1
- package/dist/shared/entity-field-display.js +9 -9
- package/dist/shared/entity-field-display.js.map +1 -1
- package/package.json +52 -51
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Component, Input, Output, EventEmitter, inject } from '@angular/core';
|
|
2
|
-
import { RunView
|
|
1
|
+
import { Component, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';
|
|
2
|
+
import { RunView } from '@memberjunction/core';
|
|
3
3
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
4
4
|
import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
|
6
6
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
7
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@angular/forms";
|
|
9
10
|
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
@@ -243,7 +244,7 @@ function ArtifactSelectionDialogComponent_Conditional_30_Template(rf, ctx) { if
|
|
|
243
244
|
i0.ɵɵadvance(5);
|
|
244
245
|
i0.ɵɵconditional(ctx_r0.artifactVersions.length > 0 ? 5 : 6);
|
|
245
246
|
} }
|
|
246
|
-
export class ArtifactSelectionDialogComponent {
|
|
247
|
+
export class ArtifactSelectionDialogComponent extends BaseAngularComponent {
|
|
247
248
|
Visible = false;
|
|
248
249
|
Close = new EventEmitter();
|
|
249
250
|
// Data
|
|
@@ -268,11 +269,12 @@ export class ArtifactSelectionDialogComponent {
|
|
|
268
269
|
// New Artifact Form
|
|
269
270
|
newArtifactName = '';
|
|
270
271
|
newArtifactDescription = '';
|
|
271
|
-
metadata
|
|
272
|
+
get metadata() { return this.ProviderToUse; }
|
|
272
273
|
currentUser = null;
|
|
273
274
|
destroy$ = new Subject();
|
|
274
275
|
searchSubject = new Subject();
|
|
275
276
|
notificationService = inject(MJNotificationService);
|
|
277
|
+
cdr = inject(ChangeDetectorRef);
|
|
276
278
|
async ngOnInit() {
|
|
277
279
|
// Setup search debouncing
|
|
278
280
|
this.searchSubject.pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$)).subscribe(() => {
|
|
@@ -286,8 +288,9 @@ export class ArtifactSelectionDialogComponent {
|
|
|
286
288
|
}
|
|
287
289
|
async loadArtifacts() {
|
|
288
290
|
this.isLoading = true;
|
|
291
|
+
this.cdr.detectChanges();
|
|
289
292
|
try {
|
|
290
|
-
const rv =
|
|
293
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
291
294
|
// Calculate StartRow for server-side paging
|
|
292
295
|
const startRow = this.currentPage * this.pageSize;
|
|
293
296
|
// Load artifacts with paging
|
|
@@ -312,6 +315,7 @@ export class ArtifactSelectionDialogComponent {
|
|
|
312
315
|
}
|
|
313
316
|
finally {
|
|
314
317
|
this.isLoading = false;
|
|
318
|
+
this.cdr.detectChanges();
|
|
315
319
|
}
|
|
316
320
|
}
|
|
317
321
|
_artifactFilter = undefined;
|
|
@@ -330,7 +334,7 @@ export class ArtifactSelectionDialogComponent {
|
|
|
330
334
|
}
|
|
331
335
|
// Filter by user email if provided
|
|
332
336
|
if (this.userEmail?.trim()) {
|
|
333
|
-
const md =
|
|
337
|
+
const md = this.ProviderToUse;
|
|
334
338
|
const schemaName = md.EntityByName("MJ: Users")?.SchemaName || "__mj";
|
|
335
339
|
const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;
|
|
336
340
|
filters.push(userFilter);
|
|
@@ -349,12 +353,13 @@ export class ArtifactSelectionDialogComponent {
|
|
|
349
353
|
this.showNewArtifactForm = false;
|
|
350
354
|
this.versionAction = 'new';
|
|
351
355
|
this.selectedVersion = null;
|
|
356
|
+
this.cdr.detectChanges();
|
|
352
357
|
// Load versions for this artifact
|
|
353
358
|
await this.loadVersions(artifact.ID);
|
|
354
359
|
}
|
|
355
360
|
async loadVersions(artifactId) {
|
|
356
361
|
try {
|
|
357
|
-
const rv =
|
|
362
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
358
363
|
const result = await rv.RunView({
|
|
359
364
|
EntityName: 'MJ: Artifact Versions',
|
|
360
365
|
ExtraFilter: `ArtifactID = '${artifactId}'`,
|
|
@@ -369,6 +374,9 @@ export class ArtifactSelectionDialogComponent {
|
|
|
369
374
|
console.error('Error loading versions:', error);
|
|
370
375
|
this.artifactVersions = [];
|
|
371
376
|
}
|
|
377
|
+
finally {
|
|
378
|
+
this.cdr.detectChanges();
|
|
379
|
+
}
|
|
372
380
|
}
|
|
373
381
|
getNextVersionNumber() {
|
|
374
382
|
if (this.artifactVersions.length === 0)
|
|
@@ -480,7 +488,7 @@ export class ArtifactSelectionDialogComponent {
|
|
|
480
488
|
artifact.Name = this.newArtifactName;
|
|
481
489
|
artifact.Description = this.newArtifactDescription || null;
|
|
482
490
|
// Get Component artifact type
|
|
483
|
-
const rv =
|
|
491
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
484
492
|
const typeResult = await rv.RunView({
|
|
485
493
|
EntityName: 'MJ: Artifact Types',
|
|
486
494
|
ExtraFilter: `Name = 'Component'`,
|
|
@@ -521,8 +529,8 @@ export class ArtifactSelectionDialogComponent {
|
|
|
521
529
|
IsVersionSelected(version) {
|
|
522
530
|
return UUIDsEqual(this.selectedVersion?.ID, version.ID);
|
|
523
531
|
}
|
|
524
|
-
static ɵfac = function ArtifactSelectionDialogComponent_Factory(__ngFactoryType__) { return
|
|
525
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactSelectionDialogComponent, selectors: [["app-artifact-selection-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, decls: 37, vars: 21, consts: [["Title", "Save Component to Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-selection-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], [1, "create-section"], [1, "divider"], ["mjButton", "", "variant", "primary", 1, "create-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "new-artifact-form"], [1, "version-panel"], ["mjButton", "", 3, "click", "variant", "disabled"], [1, "fa-solid", "fa-save"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "fa-solid", "fa-file-code"], [1, "artifact-description"], [1, "artifact-meta"], ["placeholder", "Artifact name...", 1, "mj-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Description (optional)...", 1, "mj-textarea", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], [1, "info-state"], [1, "version-actions"], [1, "radio-label"], ["type", "radio", "name", "versionAction", "value", "new", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "versionAction", "value", "update", 3, "ngModelChange", "ngModel"], [1, "version-selection"], [1, "version-item", 3, "selected"], [1, "warning"], [1, "version-item"], ["type", "radio", "name", "selectedVersion", 3, "ngModelChange", "value", "ngModel"], [1, "version-info"], [1, "version-number"], [1, "version-date"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-info-circle"]], template: function ArtifactSelectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
532
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵArtifactSelectionDialogComponent_BaseFactory; return function ArtifactSelectionDialogComponent_Factory(__ngFactoryType__) { return (ɵArtifactSelectionDialogComponent_BaseFactory || (ɵArtifactSelectionDialogComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ArtifactSelectionDialogComponent)))(__ngFactoryType__ || ArtifactSelectionDialogComponent); }; })();
|
|
533
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArtifactSelectionDialogComponent, selectors: [["app-artifact-selection-dialog"]], inputs: { Visible: "Visible" }, outputs: { Close: "Close" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 21, consts: [["Title", "Save Component to Artifact", 3, "Close", "Visible", "Width", "MinWidth"], [1, "artifact-selection-content"], [1, "filter-panel"], [1, "panel-header"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "filter-count"], [1, "filter-content"], [1, "main-content"], [1, "paging-controls"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "artifacts-list"], [1, "loading-state"], [1, "empty-state"], [1, "create-section"], [1, "divider"], ["mjButton", "", "variant", "primary", 1, "create-btn", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "new-artifact-form"], [1, "version-panel"], ["mjButton", "", 3, "click", "variant", "disabled"], [1, "fa-solid", "fa-save"], ["mjButton", "", 3, "click"], [1, "filter-group"], ["type", "text", "placeholder", "Name or description...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "filter-select", 3, "ngModelChange", "change", "ngModel"], ["value", ""], ["value", "Component"], ["value", "Report"], ["value", "Dashboard"], ["type", "text", "placeholder", "Enter user email...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], ["text", "Loading artifacts...", "size", "small"], [1, "fa-solid", "fa-inbox"], [1, "artifact-item", 3, "selected"], [1, "artifact-item", 3, "click"], [1, "artifact-content"], [1, "artifact-main"], [1, "artifact-name"], [1, "fa-solid", "fa-file-code"], [1, "artifact-description"], [1, "artifact-meta"], ["placeholder", "Artifact name...", 1, "mj-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Description (optional)...", 1, "mj-textarea", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-code-branch"], [1, "version-content"], [1, "info-state"], [1, "version-actions"], [1, "radio-label"], ["type", "radio", "name", "versionAction", "value", "new", 3, "ngModelChange", "change", "ngModel"], ["type", "radio", "name", "versionAction", "value", "update", 3, "ngModelChange", "ngModel"], [1, "version-selection"], [1, "version-item", 3, "selected"], [1, "warning"], [1, "version-item"], ["type", "radio", "name", "selectedVersion", 3, "ngModelChange", "value", "ngModel"], [1, "version-info"], [1, "version-number"], [1, "version-date"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-info-circle"]], template: function ArtifactSelectionDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
526
534
|
i0.ɵɵelementStart(0, "mj-dialog", 0);
|
|
527
535
|
i0.ɵɵlistener("Close", function ArtifactSelectionDialogComponent_Template_mj_dialog_Close_0_listener() { return ctx.cancel(); });
|
|
528
536
|
i0.ɵɵelementStart(1, "div", 1)(2, "div", 2)(3, "div", 3);
|
|
@@ -609,5 +617,5 @@ export class ArtifactSelectionDialogComponent {
|
|
|
609
617
|
}], Close: [{
|
|
610
618
|
type: Output
|
|
611
619
|
}] }); })();
|
|
612
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactSelectionDialogComponent, { className: "ArtifactSelectionDialogComponent", filePath: "src/ComponentStudio/components/artifact-selection-dialog.component.ts", lineNumber:
|
|
620
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ArtifactSelectionDialogComponent, { className: "ArtifactSelectionDialogComponent", filePath: "src/ComponentStudio/components/artifact-selection-dialog.component.ts", lineNumber: 22 }); })();
|
|
613
621
|
//# sourceMappingURL=artifact-selection-dialog.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, inject } from '@angular/core';\nimport { RunView, Metadata, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n\n // Paging State\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI State\n isLoading = true;\n searchTerm = '';\n userEmail = '';\n selectedArtifactType = '';\n showNewArtifactForm = false;\n isFilterPanelCollapsed = false;\n\n\n // Selection State\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n versionAction: 'new' | 'update' = 'new';\n \n // New Artifact Form\n newArtifactName = '';\n newArtifactDescription = '';\n \n private metadata = new Metadata();\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n \n await this.filterArtifacts();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n try {\n const rv = new RunView();\n\n // Calculate StartRow for server-side paging\n const startRow = this.currentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n\n // Calculate total pages using TotalRowCount from server\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async filterArtifacts() {\n // Reset to first page when filters change\n this.currentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.selectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.userEmail?.trim()) {\n const md = new Metadata();\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.loadArtifacts();\n }\n\n selectCreateNew() {\n this.showNewArtifactForm = true;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.showNewArtifactForm = false;\n this.versionAction = 'new';\n this.selectedVersion = null;\n\n // Load versions for this artifact\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n }\n }\n\n getNextVersionNumber(): number {\n if (this.artifactVersions.length === 0) return 1;\n return Math.max(...this.artifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n // Paging methods\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canSave(): boolean {\n if (this.showNewArtifactForm) {\n return this.newArtifactName.trim().length > 0;\n }\n \n if (!this.selectedArtifact) return false;\n \n if (this.versionAction === 'update') {\n return this.selectedVersion !== null;\n }\n \n return true;\n }\n\n getSaveButtonText(): string {\n if (this.showNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.versionAction === 'update' && this.selectedVersion) {\n return `Update Version ${this.selectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.getNextVersionNumber()}`;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.canSave()) return;\n \n // Handle new artifact creation\n if (this.showNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.selectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.selectedArtifact,\n action: this.versionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.versionAction === 'update' ? this.selectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.versionAction === 'update') {\n const confirm = window.confirm(\n `Are you sure you want to overwrite version ${this.selectedVersion!.VersionNumber}? This action cannot be undone.`\n );\n\n if (!confirm) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.newArtifactName;\n artifact.Description = this.newArtifactDescription || null;\n\n // Get Component artifact type\n const rv = new RunView();\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\" \n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\" \n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">All Types</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n \n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\" \n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total items)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Existing Artifacts -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n } \n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n } \n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\" \n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
1
|
+
{"version":3,"file":"artifact-selection-dialog.component.js","sourceRoot":"","sources":["../../../src/ComponentStudio/components/artifact-selection-dialog.component.ts","../../../src/ComponentStudio/components/artifact-selection-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ChangeDetectorRef, inject } from '@angular/core';\nimport { RunView, UserInfo } from '@memberjunction/core';\nimport { MJArtifactEntity, MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { UUIDsEqual } from '@memberjunction/global';\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\n\nexport interface ArtifactSelectionResult {\n artifact: MJArtifactEntity;\n action: 'new-version' | 'update-version';\n versionToUpdate?: MJArtifactVersionEntity;\n}\n\n@Component({\n standalone: false,\n selector: 'app-artifact-selection-dialog',\n templateUrl: './artifact-selection-dialog.component.html',\n styleUrl: './artifact-selection-dialog.component.css'\n})\nexport class ArtifactSelectionDialogComponent extends BaseAngularComponent implements OnInit, OnDestroy {\n @Input() Visible = false;\n @Output() Close = new EventEmitter<ArtifactSelectionResult | undefined>();\n\n // Data\n artifacts: MJArtifactEntity[] = [];\n artifactVersions: MJArtifactVersionEntity[] = [];\n\n // Paging State\n currentPage = 0;\n pageSize = 25;\n totalArtifacts = 0;\n hasMorePages = false;\n\n // UI State\n isLoading = true;\n searchTerm = '';\n userEmail = '';\n selectedArtifactType = '';\n showNewArtifactForm = false;\n isFilterPanelCollapsed = false;\n\n\n // Selection State\n selectedArtifact: MJArtifactEntity | null = null;\n selectedVersion: MJArtifactVersionEntity | null = null;\n versionAction: 'new' | 'update' = 'new';\n \n // New Artifact Form\n newArtifactName = '';\n newArtifactDescription = '';\n \n private get metadata() { return this.ProviderToUse; }\n private currentUser: UserInfo | null = null;\n private destroy$ = new Subject<void>();\n private searchSubject = new Subject<string>();\n\n private notificationService = inject(MJNotificationService);\n private cdr = inject(ChangeDetectorRef);\n\n async ngOnInit() {\n // Setup search debouncing\n this.searchSubject.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(() => {\n this.filterArtifacts();\n });\n \n await this.filterArtifacts();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n async loadArtifacts() {\n this.isLoading = true;\n this.cdr.detectChanges();\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n\n // Calculate StartRow for server-side paging\n const startRow = this.currentPage * this.pageSize;\n\n // Load artifacts with paging\n const result = await rv.RunView<MJArtifactEntity>({\n ExtraFilter: this._artifactFilter,\n EntityName: 'MJ: Artifacts',\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: this.pageSize,\n StartRow: startRow,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifacts = result.Results;\n\n // Calculate total pages using TotalRowCount from server\n this.totalArtifacts = result.TotalRowCount || 0;\n const totalPages = Math.ceil(this.totalArtifacts / this.pageSize);\n this.hasMorePages = this.currentPage < totalPages - 1;\n }\n } catch (error) {\n console.error('Error loading artifacts:', error);\n } finally {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n private _artifactFilter: string | undefined= undefined;\n public async filterArtifacts() {\n // Reset to first page when filters change\n this.currentPage = 0;\n \n const filters: string[] = [];\n \n // Filter by search term\n if (this.searchTerm?.trim()) {\n const term = this.searchTerm.toLowerCase();\n filters.push(`(Name LIKE '%${term}%' OR Description LIKE '%${term}%')`);\n }\n \n // Filter by artifact type\n if (this.selectedArtifactType) {\n filters.push(`ArtifactTypeID IN (SELECT ID FROM __mj.vwArtifactTypes WHERE Name = '${this.selectedArtifactType}')`);\n }\n \n // Filter by user email if provided\n if (this.userEmail?.trim()) {\n const md = this.ProviderToUse;\n const schemaName = md.EntityByName(\"MJ: Users\")?.SchemaName || \"__mj\";\n const userFilter = `UserID IN (SELECT ID FROM ${schemaName}.vwUsers WHERE Email LIKE '%${this.userEmail.trim()}%')`;\n filters.push(userFilter);\n }\n \n // Combine all filters\n this._artifactFilter = filters.length > 0 ? filters.join(' AND ') : undefined;\n\n await this.loadArtifacts();\n }\n\n selectCreateNew() {\n this.showNewArtifactForm = true;\n this.selectedArtifact = null;\n this.selectedVersion = null;\n }\n\n async selectArtifact(artifact: MJArtifactEntity) {\n this.selectedArtifact = artifact;\n this.showNewArtifactForm = false;\n this.versionAction = 'new';\n this.selectedVersion = null;\n this.cdr.detectChanges();\n\n // Load versions for this artifact\n await this.loadVersions(artifact.ID);\n }\n\n async loadVersions(artifactId: string) {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.artifactVersions = result.Results;\n }\n } catch (error) {\n console.error('Error loading versions:', error);\n this.artifactVersions = [];\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n getNextVersionNumber(): number {\n if (this.artifactVersions.length === 0) return 1;\n return Math.max(...this.artifactVersions.map(v => v.VersionNumber)) + 1;\n }\n\n // Paging methods\n async nextPage() {\n if (this.hasMorePages) {\n this.currentPage++;\n await this.loadArtifacts();\n }\n }\n\n async previousPage() {\n if (this.currentPage > 0) {\n this.currentPage--;\n await this.loadArtifacts();\n }\n }\n\n canGoNext(): boolean {\n return this.hasMorePages;\n }\n\n canGoPrevious(): boolean {\n return this.currentPage > 0;\n }\n\n getTotalPages(): number {\n return Math.ceil(this.totalArtifacts / this.pageSize);\n }\n\n toggleFilterPanel() {\n this.isFilterPanelCollapsed = !this.isFilterPanelCollapsed;\n }\n\n onSearchInput() {\n this.searchSubject.next(this.searchTerm);\n }\n\n onArtifactTypeChange() {\n // Clear selected artifact when type changes\n this.selectedArtifact = null;\n this.selectedVersion = null;\n this.artifactVersions = [];\n this.filterArtifacts();\n }\n\n getActiveFilterCount(): number {\n let count = 0;\n if (this.searchTerm?.trim()) count++;\n if (this.selectedArtifactType) count++;\n if (this.userEmail?.trim()) count++;\n return count;\n }\n\n canSave(): boolean {\n if (this.showNewArtifactForm) {\n return this.newArtifactName.trim().length > 0;\n }\n \n if (!this.selectedArtifact) return false;\n \n if (this.versionAction === 'update') {\n return this.selectedVersion !== null;\n }\n \n return true;\n }\n\n getSaveButtonText(): string {\n if (this.showNewArtifactForm) {\n return 'Create & Save';\n }\n\n if (this.versionAction === 'update' && this.selectedVersion) {\n return `Update Version ${this.selectedVersion.VersionNumber}`;\n }\n\n return `Save as Version ${this.getNextVersionNumber()}`;\n }\n\n cancel() {\n this.Close.emit(undefined);\n }\n\n async save() {\n if (!this.canSave()) return;\n \n // Handle new artifact creation\n if (this.showNewArtifactForm) {\n const newArtifact = await this.createNewArtifact();\n if (newArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: newArtifact,\n action: 'new-version'\n };\n this.Close.emit(result);\n }\n return;\n }\n \n // Handle existing artifact selection\n if (this.selectedArtifact) {\n const result: ArtifactSelectionResult = {\n artifact: this.selectedArtifact,\n action: this.versionAction === 'update' ? 'update-version' : 'new-version',\n versionToUpdate: this.versionAction === 'update' ? this.selectedVersion! : undefined\n };\n \n // If updating, show confirmation\n if (this.versionAction === 'update') {\n const confirm = window.confirm(\n `Are you sure you want to overwrite version ${this.selectedVersion!.VersionNumber}? This action cannot be undone.`\n );\n\n if (!confirm) return;\n }\n\n this.Close.emit(result);\n }\n }\n\n private async createNewArtifact(): Promise<MJArtifactEntity | null> {\n try {\n const artifact = await this.metadata.GetEntityObject<MJArtifactEntity>('MJ: Artifacts');\n artifact.Name = this.newArtifactName;\n artifact.Description = this.newArtifactDescription || null;\n\n // Get Component artifact type\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const typeResult = await rv.RunView({\n EntityName: 'MJ: Artifact Types',\n ExtraFilter: `Name = 'Component'`,\n MaxRows: 1\n });\n\n if (typeResult.Success && typeResult.Results?.length > 0) {\n artifact.TypeID = typeResult.Results[0].ID;\n }\n\n // Set default environment if available from current user\n // Environment ID is optional - will be set by server if not provided\n const envId = (this.metadata.CurrentUser as any)?.EnvironmentID;\n if (envId) {\n artifact.EnvironmentID = envId;\n }\n\n artifact.Comments = 'Created from Component Studio';\n\n const saveResult = await artifact.Save();\n if (saveResult) {\n this.notificationService.CreateSimpleNotification(\n `Artifact \"${artifact.Name}\" created successfully`,\n 'success',\n 3000\n );\n return artifact;\n } else {\n console.error('Failed to create artifact - Full LatestResult:', artifact.LatestResult);\n this.notificationService.CreateSimpleNotification(\n 'Failed to create artifact',\n 'error'\n );\n return null;\n }\n } catch (error) {\n console.error('Error creating artifact:', error);\n this.notificationService.CreateSimpleNotification(\n 'Error creating artifact',\n 'error'\n );\n return null;\n }\n }\n\n /** Case-insensitive UUID check whether an artifact is the currently selected artifact. */\n IsArtifactSelected(artifact: MJArtifactEntity): boolean {\n return UUIDsEqual(this.selectedArtifact?.ID, artifact.ID);\n }\n\n /** Case-insensitive UUID check whether a version is the currently selected version. */\n IsVersionSelected(version: MJArtifactVersionEntity): boolean {\n return UUIDsEqual(this.selectedVersion?.ID, version.ID);\n }\n}","<mj-dialog [Visible]=\"true\" Title=\"Save Component to Artifact\" (Close)=\"cancel()\" [Width]=\"1200\" [MinWidth]=\"600\">\n <div class=\"artifact-selection-content\">\n <!-- Left Filter Panel -->\n <div class=\"filter-panel\" [style.width]=\"isFilterPanelCollapsed ? '40px' : '280px'\">\n <!-- Panel Header -->\n <div class=\"panel-header\">\n @if (!isFilterPanelCollapsed) {\n <span>Filters</span>\n }\n <button mjButton (click)=\"toggleFilterPanel()\"\n variant=\"flat\"\n [class.filter-active]=\"getActiveFilterCount() > 0\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (isFilterPanelCollapsed && getActiveFilterCount() > 0) {\n <span class=\"filter-count\">{{ getActiveFilterCount() }}</span>\n }\n </button>\n </div>\n\n @if (!isFilterPanelCollapsed) {\n <div class=\"filter-content\">\n <!-- Search -->\n <div class=\"filter-group\">\n <label>Search</label>\n <input type=\"text\" \n [(ngModel)]=\"searchTerm\"\n (input)=\"onSearchInput()\"\n placeholder=\"Name or description...\"\n class=\"filter-input\">\n </div>\n\n <!-- Artifact Type -->\n <div class=\"filter-group\">\n <label>Artifact Type</label>\n <select [(ngModel)]=\"selectedArtifactType\" \n (change)=\"onArtifactTypeChange()\"\n class=\"filter-select\">\n <option value=\"\">All Types</option>\n <option value=\"Component\">Component</option>\n <option value=\"Report\">Report</option>\n <option value=\"Dashboard\">Dashboard</option>\n </select>\n </div>\n \n <!-- User Email -->\n <div class=\"filter-group\">\n <label>Filter by User</label>\n <input type=\"text\" \n [(ngModel)]=\"userEmail\"\n (input)=\"filterArtifacts()\"\n placeholder=\"Enter user email...\"\n class=\"filter-input\">\n </div>\n </div>\n }\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-content\">\n <!-- Paging Controls -->\n <div class=\"paging-controls\">\n <button mjButton\n (click)=\"previousPage()\"\n [disabled]=\"!canGoPrevious()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Previous\n </button>\n <span class=\"page-info\">\n Page {{ currentPage + 1 }} of {{ getTotalPages() }}\n ({{ totalArtifacts }} total items)\n </span>\n <button mjButton\n (click)=\"nextPage()\"\n [disabled]=\"!canGoNext()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n\n <!-- Existing Artifacts -->\n <div class=\"artifacts-list\">\n @if (isLoading) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading artifacts...\" size=\"small\"></mj-loading>\n </div>\n } \n @else if (artifacts.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No artifacts found</p>\n </div>\n } \n @else {\n @for (artifact of artifacts; track artifact.ID) {\n <div class=\"artifact-item\" \n [class.selected]=\"IsArtifactSelected(artifact)\"\n (click)=\"selectArtifact(artifact)\">\n <div class=\"artifact-content\">\n <div class=\"artifact-main\">\n <div class=\"artifact-name\">\n <i class=\"fa-solid fa-file-code\"></i>\n <span>{{ artifact.Name }}</span>\n </div>\n @if (artifact.Description) {\n <div class=\"artifact-description\">\n {{ artifact.Description }}\n </div>\n }\n </div>\n <div class=\"artifact-meta\">\n <div>{{ artifact.Type }}</div>\n <div>{{ artifact.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </div>\n </div>\n }\n }\n </div>\n \n <!-- Create New Artifact Section (at bottom) -->\n <div class=\"create-section\">\n <div class=\"divider\">OR CREATE NEW ARTIFACT</div>\n \n <button mjButton\n (click)=\"selectCreateNew()\"\n variant=\"primary\"\n class=\"create-btn\">\n <i class=\"fa-solid fa-plus\"></i> Create New Artifact\n </button>\n \n @if (showNewArtifactForm) {\n <div class=\"new-artifact-form\">\n <input class=\"mj-input\"\n [(ngModel)]=\"newArtifactName\"\n placeholder=\"Artifact name...\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"newArtifactDescription\"\n placeholder=\"Description (optional)...\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Right Version Panel (only show when artifact selected) -->\n @if (selectedArtifact) {\n <div class=\"version-panel\">\n <div class=\"panel-header\">\n <h4><i class=\"fa-solid fa-code-branch\"></i> Version</h4>\n </div>\n \n @if (artifactVersions.length > 0) {\n <div class=\"version-content\">\n <div class=\"version-actions\">\n <label>Action</label>\n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"new\"\n [(ngModel)]=\"versionAction\"\n (change)=\"selectedVersion = null\">\n <span>Create New Version (v{{ getNextVersionNumber() }})</span>\n </label>\n \n <label class=\"radio-label\">\n <input type=\"radio\" \n name=\"versionAction\" \n value=\"update\"\n [(ngModel)]=\"versionAction\">\n <span>Update Existing Version</span>\n </label>\n </div>\n \n @if (versionAction === 'update') {\n <div class=\"version-selection\">\n <label>Select Version</label>\n @for (version of artifactVersions; track version.ID) {\n <label class=\"version-item\" \n [class.selected]=\"IsVersionSelected(version)\">\n <input type=\"radio\"\n name=\"selectedVersion\"\n [value]=\"version\"\n [(ngModel)]=\"selectedVersion\">\n <div class=\"version-info\">\n <div class=\"version-number\">Version {{ version.VersionNumber }}</div>\n <div class=\"version-date\">{{ version.__mj_UpdatedAt | date:'short' }}</div>\n </div>\n </label>\n }\n </div>\n \n @if (selectedVersion) {\n <div class=\"warning\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>Warning: This will overwrite version {{ selectedVersion.VersionNumber }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <div class=\"info-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No versions available for this artifact.</p>\n <p>A new version will be created.</p>\n </div>\n }\n </div>\n }\n </div>\n\n <mj-dialog-actions>\n <button mjButton\n [variant]=\"versionAction === 'update' && selectedVersion ? 'warning' : 'primary'\"\n (click)=\"save()\"\n [disabled]=\"!canSave()\">\n <i class=\"fa-solid fa-save\"></i>\n {{ getSaveButtonText() }}\n </button>\n <button mjButton (click)=\"cancel()\">Cancel</button>\n </mj-dialog-actions>\n</mj-dialog>\n"]}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import { ChangeDetectorRef } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
|
|
2
2
|
import { ComponentStudioStateService } from '../../services/component-studio-state.service';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class DataRequirementsEditorComponent {
|
|
4
|
+
export declare class DataRequirementsEditorComponent implements OnInit, OnDestroy {
|
|
5
5
|
State: ComponentStudioStateService;
|
|
6
6
|
private cdr;
|
|
7
7
|
EditableContent: string;
|
|
8
8
|
IsEditing: boolean;
|
|
9
9
|
private _parsedRequirements;
|
|
10
|
+
private destroy$;
|
|
10
11
|
constructor(State: ComponentStudioStateService, cdr: ChangeDetectorRef);
|
|
11
12
|
get HasDataRequirements(): boolean;
|
|
12
13
|
get EntityCount(): number;
|
|
13
14
|
get QueryCount(): number;
|
|
14
15
|
get DataMode(): string;
|
|
15
16
|
ngOnInit(): void;
|
|
17
|
+
ngOnDestroy(): void;
|
|
16
18
|
OnContentChanged(): void;
|
|
17
19
|
ApplyChanges(): void;
|
|
18
20
|
CancelChanges(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-requirements-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"data-requirements-editor.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGhF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;;AAG5F,qBA+Ia,+BAAgC,YAAW,MAAM,EAAE,SAAS;IAQ9D,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IARb,eAAe,EAAE,MAAM,CAAM;IAC7B,SAAS,EAAE,OAAO,CAAS;IAE3B,OAAO,CAAC,mBAAmB,CAAwC;IACnE,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,WAAW,IAAI,MAAM,CAIxB;IAED,IAAI,UAAU,IAAI,MAAM,CAIvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,QAAQ,IAAI,IAAI;IAQhB,WAAW,IAAI,IAAI;IAKnB,gBAAgB,IAAI,IAAI;IAKxB,YAAY,IAAI,IAAI;IAapB,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,YAAY;yCAlFT,+BAA+B;2CAA/B,+BAA+B;CAyF3C"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
import * as i1 from "../../services/component-studio-state.service";
|
|
4
6
|
import * as i2 from "@angular/forms";
|
|
@@ -65,6 +67,7 @@ export class DataRequirementsEditorComponent {
|
|
|
65
67
|
EditableContent = '';
|
|
66
68
|
IsEditing = false;
|
|
67
69
|
_parsedRequirements = null;
|
|
70
|
+
destroy$ = new Subject();
|
|
68
71
|
constructor(State, cdr) {
|
|
69
72
|
this.State = State;
|
|
70
73
|
this.cdr = cdr;
|
|
@@ -91,11 +94,15 @@ export class DataRequirementsEditorComponent {
|
|
|
91
94
|
}
|
|
92
95
|
ngOnInit() {
|
|
93
96
|
this.loadContent();
|
|
94
|
-
this.State.StateChanged.subscribe(() => {
|
|
97
|
+
this.State.StateChanged.pipe(takeUntil(this.destroy$)).subscribe(() => {
|
|
95
98
|
this.loadContent();
|
|
96
99
|
this.cdr.detectChanges();
|
|
97
100
|
});
|
|
98
101
|
}
|
|
102
|
+
ngOnDestroy() {
|
|
103
|
+
this.destroy$.next();
|
|
104
|
+
this.destroy$.complete();
|
|
105
|
+
}
|
|
99
106
|
OnContentChanged() {
|
|
100
107
|
this.IsEditing = true;
|
|
101
108
|
this.parseContent();
|
|
@@ -105,8 +112,9 @@ export class DataRequirementsEditorComponent {
|
|
|
105
112
|
const spec = JSON.parse(this.State.EditableSpec);
|
|
106
113
|
const dataReq = JSON.parse(this.EditableContent);
|
|
107
114
|
spec.dataRequirements = dataReq;
|
|
108
|
-
this.State.UpdateSpec(spec);
|
|
109
115
|
this.IsEditing = false;
|
|
116
|
+
this.State.UpdateSpec(spec);
|
|
117
|
+
this.cdr.detectChanges();
|
|
110
118
|
}
|
|
111
119
|
catch (error) {
|
|
112
120
|
console.error('Error applying data requirements changes:', error);
|
|
@@ -212,5 +220,5 @@ export class DataRequirementsEditorComponent {
|
|
|
212
220
|
</div>
|
|
213
221
|
`, styles: ["\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n "] }]
|
|
214
222
|
}], () => [{ type: i1.ComponentStudioStateService }, { type: i0.ChangeDetectorRef }], null); })();
|
|
215
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsEditorComponent, { className: "DataRequirementsEditorComponent", filePath: "src/ComponentStudio/components/editors/data-requirements-editor.component.ts", lineNumber:
|
|
223
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsEditorComponent, { className: "DataRequirementsEditorComponent", filePath: "src/ComponentStudio/components/editors/data-requirements-editor.component.ts", lineNumber: 150 }); })();
|
|
216
224
|
//# sourceMappingURL=data-requirements-editor.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-requirements-editor.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef } from '@angular/core';\nimport { ComponentStudioStateService } from '../../services/component-studio-state.service';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\n\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-editor',\n template: `\n <div class=\"data-requirements-editor\">\n <div class=\"editor-header\">\n <span class=\"header-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data Requirements\n </span>\n @if (IsEditing) {\n <div class=\"action-buttons\">\n <button mjButton variant=\"primary\" (click)=\"ApplyChanges()\">\n <i class=\"fa-solid fa-check\"></i> Apply Changes\n </button>\n <button mjButton (click)=\"CancelChanges()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n </div>\n }\n </div>\n\n <div class=\"editor-body\">\n @if (State.SelectedComponent) {\n @if (HasDataRequirements) {\n <div class=\"summary-bar\">\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n {{ EntityCount }} {{ EntityCount === 1 ? 'entity' : 'entities' }}\n </span>\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-search\"></i>\n {{ QueryCount }} {{ QueryCount === 1 ? 'query' : 'queries' }}\n </span>\n <span class=\"summary-item mode-badge\">\n {{ DataMode }}\n </span>\n </div>\n }\n <div class=\"json-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"EditableContent\"\n [language]=\"'json'\"\n [indentWithTab]=\"true\"\n [placeholder]=\"'Enter data requirements JSON...'\"\n (ngModelChange)=\"OnContentChanged()\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select a component to edit its data requirements.</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n `]\n})\nexport class DataRequirementsEditorComponent {\n EditableContent: string = '';\n IsEditing: boolean = false;\n\n private _parsedRequirements: Record<string, unknown> | null = null;\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get HasDataRequirements(): boolean {\n return this._parsedRequirements != null;\n }\n\n get EntityCount(): number {\n if (!this._parsedRequirements) return 0;\n const entities = this._parsedRequirements['entities'];\n return Array.isArray(entities) ? entities.length : 0;\n }\n\n get QueryCount(): number {\n if (!this._parsedRequirements) return 0;\n const queries = this._parsedRequirements['queries'];\n return Array.isArray(queries) ? queries.length : 0;\n }\n\n get DataMode(): string {\n if (!this._parsedRequirements) return '';\n return (this._parsedRequirements['mode'] as string) || 'views';\n }\n\n ngOnInit(): void {\n this.loadContent();\n this.State.StateChanged.subscribe(() => {\n this.loadContent();\n this.cdr.detectChanges();\n });\n }\n\n OnContentChanged(): void {\n this.IsEditing = true;\n this.parseContent();\n }\n\n ApplyChanges(): void {\n try {\n const spec: ComponentSpec = JSON.parse(this.State.EditableSpec);\n const dataReq = JSON.parse(this.EditableContent);\n spec.dataRequirements = dataReq;\n this.State.UpdateSpec(spec);\n this.IsEditing = false;\n } catch (error) {\n console.error('Error applying data requirements changes:', error);\n }\n }\n\n CancelChanges(): void {\n this.loadContent();\n this.IsEditing = false;\n this.cdr.detectChanges();\n }\n\n private loadContent(): void {\n try {\n const spec = JSON.parse(this.State.EditableSpec);\n const dataReq = spec.dataRequirements || { mode: 'views', entities: [], queries: [] };\n this.EditableContent = JSON.stringify(dataReq, null, 2);\n this.parseContent();\n } catch {\n this.EditableContent = '';\n this._parsedRequirements = null;\n }\n }\n\n private parseContent(): void {\n try {\n this._parsedRequirements = JSON.parse(this.EditableContent);\n } catch {\n this._parsedRequirements = null;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"data-requirements-editor.component.js","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/editors/data-requirements-editor.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ComponentStudioStateService } from '../../services/component-studio-state.service';\nimport { ComponentSpec } from '@memberjunction/interactive-component-types';\n\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-editor',\n template: `\n <div class=\"data-requirements-editor\">\n <div class=\"editor-header\">\n <span class=\"header-title\">\n <i class=\"fa-solid fa-database\"></i>\n Data Requirements\n </span>\n @if (IsEditing) {\n <div class=\"action-buttons\">\n <button mjButton variant=\"primary\" (click)=\"ApplyChanges()\">\n <i class=\"fa-solid fa-check\"></i> Apply Changes\n </button>\n <button mjButton (click)=\"CancelChanges()\">\n <i class=\"fa-solid fa-times\"></i> Cancel\n </button>\n </div>\n }\n </div>\n\n <div class=\"editor-body\">\n @if (State.SelectedComponent) {\n @if (HasDataRequirements) {\n <div class=\"summary-bar\">\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n {{ EntityCount }} {{ EntityCount === 1 ? 'entity' : 'entities' }}\n </span>\n <span class=\"summary-item\">\n <i class=\"fa-solid fa-search\"></i>\n {{ QueryCount }} {{ QueryCount === 1 ? 'query' : 'queries' }}\n </span>\n <span class=\"summary-item mode-badge\">\n {{ DataMode }}\n </span>\n </div>\n }\n <div class=\"json-editor-container\">\n <mj-code-editor\n [(ngModel)]=\"EditableContent\"\n [language]=\"'json'\"\n [indentWithTab]=\"true\"\n [placeholder]=\"'Enter data requirements JSON...'\"\n (ngModelChange)=\"OnContentChanged()\">\n </mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select a component to edit its data requirements.</p>\n </div>\n }\n </div>\n </div>\n `,\n styles: [`\n .data-requirements-editor {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n .editor-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n flex-shrink: 0;\n }\n .header-title {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n }\n .header-title i {\n margin-right: 6px;\n color: var(--mj-text-secondary);\n }\n .action-buttons {\n display: flex;\n gap: 6px;\n }\n .summary-bar {\n display: flex;\n gap: 12px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 12px;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n }\n .summary-item {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n .mode-badge {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-primary);\n padding: 1px 8px;\n border-radius: 10px;\n font-weight: 600;\n text-transform: uppercase;\n font-size: 10px;\n }\n .editor-body {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n }\n .json-editor-container {\n flex: 1;\n overflow: hidden;\n }\n .json-editor-container mj-code-editor {\n display: block;\n height: 100%;\n }\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n flex: 1;\n }\n .empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n }\n .empty-state p {\n margin: 0;\n font-size: 13px;\n text-align: center;\n }\n `]\n})\nexport class DataRequirementsEditorComponent implements OnInit, OnDestroy {\n EditableContent: string = '';\n IsEditing: boolean = false;\n\n private _parsedRequirements: Record<string, unknown> | null = null;\n private destroy$ = new Subject<void>();\n\n constructor(\n public State: ComponentStudioStateService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get HasDataRequirements(): boolean {\n return this._parsedRequirements != null;\n }\n\n get EntityCount(): number {\n if (!this._parsedRequirements) return 0;\n const entities = this._parsedRequirements['entities'];\n return Array.isArray(entities) ? entities.length : 0;\n }\n\n get QueryCount(): number {\n if (!this._parsedRequirements) return 0;\n const queries = this._parsedRequirements['queries'];\n return Array.isArray(queries) ? queries.length : 0;\n }\n\n get DataMode(): string {\n if (!this._parsedRequirements) return '';\n return (this._parsedRequirements['mode'] as string) || 'views';\n }\n\n ngOnInit(): void {\n this.loadContent();\n this.State.StateChanged.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.loadContent();\n this.cdr.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n OnContentChanged(): void {\n this.IsEditing = true;\n this.parseContent();\n }\n\n ApplyChanges(): void {\n try {\n const spec: ComponentSpec = JSON.parse(this.State.EditableSpec);\n const dataReq = JSON.parse(this.EditableContent);\n spec.dataRequirements = dataReq;\n this.IsEditing = false;\n this.State.UpdateSpec(spec);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Error applying data requirements changes:', error);\n }\n }\n\n CancelChanges(): void {\n this.loadContent();\n this.IsEditing = false;\n this.cdr.detectChanges();\n }\n\n private loadContent(): void {\n try {\n const spec = JSON.parse(this.State.EditableSpec);\n const dataReq = spec.dataRequirements || { mode: 'views', entities: [], queries: [] };\n this.EditableContent = JSON.stringify(dataReq, null, 2);\n this.parseContent();\n } catch {\n this.EditableContent = '';\n this._parsedRequirements = null;\n }\n }\n\n private parseContent(): void {\n try {\n this._parsedRequirements = JSON.parse(this.EditableContent);\n } catch {\n this._parsedRequirements = null;\n }\n }\n}\n"]}
|
|
@@ -38,6 +38,13 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
|
|
|
38
38
|
GetActivePreset(): ViewportPreset;
|
|
39
39
|
GetPreviewContainerMaxWidth(): string;
|
|
40
40
|
OnComponentEvent(event: ReactComponentEvent): void;
|
|
41
|
+
/**
|
|
42
|
+
* Fires once the React bridge has resolved the full component hierarchy from the
|
|
43
|
+
* registry. The bridge stores the resolved spec (with real dependency code, not
|
|
44
|
+
* registry-reference stubs) on its public `resolvedComponentSpec` field — pull it
|
|
45
|
+
* across so the code-editor tabs can render actual source instead of "No code available".
|
|
46
|
+
*/
|
|
47
|
+
OnReactInitialized(): void;
|
|
41
48
|
OnOpenEntityRecord(event: {
|
|
42
49
|
entityName: string;
|
|
43
50
|
key: CompositeKey;
|
|
@@ -47,7 +54,9 @@ export declare class ComponentPreviewComponent implements OnInit, OnDestroy {
|
|
|
47
54
|
private syncSpecFromState;
|
|
48
55
|
/**
|
|
49
56
|
* Refresh the preview by nulling the spec, detecting changes,
|
|
50
|
-
* then restoring the spec after a short delay.
|
|
57
|
+
* then restoring the spec after a short delay. The bridge's own
|
|
58
|
+
* `initializeComponent` purges the runtime registry + manager fetch cache
|
|
59
|
+
* for the new spec's keys, so consumers don't need to clear anything here.
|
|
51
60
|
*/
|
|
52
61
|
private refreshPreview;
|
|
53
62
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentPreviewComponent, never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,MAAM,EACN,SAAS,EAET,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACf,MAAM,+CAA+C,CAAC;;AAEvD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAMa,yBAA0B,YAAW,MAAM,EAAE,SAAS;IAqBxD,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IApBgB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAExD,UAAU,+BAAsC;IAGnD,cAAc,EAAE,YAAY,CAAa;IAEhD,SAAgB,eAAe,EAAE,cAAc,EAAE,CAI/C;IAGK,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEvD,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAiBhB,WAAW,IAAI,IAAI;IASZ,oBAAoB,IAAI,IAAI;IAM5B,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,aAAa,IAAI,IAAI;IAWrB,eAAe,IAAI,cAAc;IAIjC,2BAA2B,IAAI,MAAM;IAQrC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"component-preview.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/workspace/component-preview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,MAAM,EACN,SAAS,EAET,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACf,MAAM,+CAA+C,CAAC;;AAEvD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D,UAAU,cAAc;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAMa,yBAA0B,YAAW,MAAM,EAAE,SAAS;IAqBxD,KAAK,EAAE,2BAA2B;IACzC,OAAO,CAAC,GAAG;IApBgB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAExD,UAAU,+BAAsC;IAGnD,cAAc,EAAE,YAAY,CAAa;IAEhD,SAAgB,eAAe,EAAE,cAAc,EAAE,CAI/C;IAGK,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAAQ;IAEvD,OAAO,CAAC,QAAQ,CAAuB;gBAG9B,KAAK,EAAE,2BAA2B,EACjC,GAAG,EAAE,iBAAiB;IAGhC,QAAQ,IAAI,IAAI;IAiBhB,WAAW,IAAI,IAAI;IASZ,oBAAoB,IAAI,IAAI;IAM5B,aAAa,IAAI,IAAI;IAKrB,gBAAgB,IAAI,IAAI;IAOxB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAKrC,aAAa,IAAI,IAAI;IAWrB,eAAe,IAAI,cAAc;IAIjC,2BAA2B,IAAI,MAAM;IAQrC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAWzD;;;;;OAKG;IACI,kBAAkB,IAAI,IAAI;IAQ1B,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAQ1E,gBAAgB,IAAI,MAAM;IAK1B,uBAAuB,IAAI,MAAM,GAAG,SAAS;IASpD,OAAO,CAAC,iBAAiB;IAIzB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;yCA1JX,yBAAyB;2CAAzB,yBAAyB;CA+KrC"}
|