@memberjunction/ng-dashboards 5.30.1 → 5.32.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
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module entity-review-panel.component
|
|
3
|
+
* @description Read-only schema review table — mirrors the prototype table the
|
|
4
|
+
* Database Designer agent produces in chat. Used in wizard Step 4 (Review) and
|
|
5
|
+
* in the Modify view's "Review Changes" tab.
|
|
6
|
+
*
|
|
7
|
+
* In `alter` mode, new or changed columns are highlighted in green and
|
|
8
|
+
* existing-but-hidden columns are dimmed to show the diff.
|
|
9
|
+
*/
|
|
10
|
+
import { Component, Input, ChangeDetectionStrategy, } from '@angular/core';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
const _forTrack0 = ($index, $item) => $item.ColumnName;
|
|
13
|
+
function EntityReviewPanelComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
14
|
+
i0.ɵɵelementStart(0, "span", 7);
|
|
15
|
+
i0.ɵɵtext(1, "NEW");
|
|
16
|
+
i0.ɵɵelementEnd();
|
|
17
|
+
} }
|
|
18
|
+
function EntityReviewPanelComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelementStart(0, "span", 8);
|
|
20
|
+
i0.ɵɵtext(1, "ALTER");
|
|
21
|
+
i0.ɵɵelementEnd();
|
|
22
|
+
} }
|
|
23
|
+
function EntityReviewPanelComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelementStart(0, "p", 9);
|
|
25
|
+
i0.ɵɵtext(1);
|
|
26
|
+
i0.ɵɵelementEnd();
|
|
27
|
+
} if (rf & 2) {
|
|
28
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
29
|
+
i0.ɵɵadvance();
|
|
30
|
+
i0.ɵɵtextInterpolate(ctx_r0.TableDefinition.Description);
|
|
31
|
+
} }
|
|
32
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "span", 26);
|
|
34
|
+
i0.ɵɵtext(1, "+NEW");
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
} }
|
|
37
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
i0.ɵɵelement(0, "i", 18);
|
|
39
|
+
} }
|
|
40
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelementStart(0, "span", 27);
|
|
42
|
+
i0.ɵɵtext(1, "No");
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} }
|
|
45
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
i0.ɵɵelementStart(0, "code", 20);
|
|
47
|
+
i0.ɵɵtext(1);
|
|
48
|
+
i0.ɵɵelementEnd();
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const row_r2 = i0.ɵɵnextContext().$implicit;
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵtextInterpolate(row_r2.column.DefaultValue);
|
|
53
|
+
} }
|
|
54
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
+
i0.ɵɵelementStart(0, "span", 28);
|
|
56
|
+
i0.ɵɵtext(1, "\u2014");
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
} }
|
|
59
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
60
|
+
i0.ɵɵelementStart(0, "span", 29);
|
|
61
|
+
i0.ɵɵtext(1);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const row_r2 = i0.ɵɵnextContext().$implicit;
|
|
65
|
+
i0.ɵɵadvance();
|
|
66
|
+
i0.ɵɵtextInterpolate(row_r2.column.Description);
|
|
67
|
+
} }
|
|
68
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "span", 28);
|
|
70
|
+
i0.ɵɵtext(1, "\u2014");
|
|
71
|
+
i0.ɵɵelementEnd();
|
|
72
|
+
} }
|
|
73
|
+
function EntityReviewPanelComponent_Conditional_0_For_80_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 13)(2, "code");
|
|
75
|
+
i0.ɵɵtext(3);
|
|
76
|
+
i0.ɵɵelementEnd();
|
|
77
|
+
i0.ɵɵconditionalCreate(4, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_4_Template, 2, 0, "span", 26);
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(5, "td", 16)(6, "code");
|
|
80
|
+
i0.ɵɵtext(7);
|
|
81
|
+
i0.ɵɵelementEnd()();
|
|
82
|
+
i0.ɵɵelementStart(8, "td", 17);
|
|
83
|
+
i0.ɵɵconditionalCreate(9, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_9_Template, 1, 0, "i", 18)(10, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_10_Template, 2, 0, "span", 27);
|
|
84
|
+
i0.ɵɵelementEnd();
|
|
85
|
+
i0.ɵɵelementStart(11, "td", 19);
|
|
86
|
+
i0.ɵɵconditionalCreate(12, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_12_Template, 2, 1, "code", 20)(13, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_13_Template, 2, 0, "span", 28);
|
|
87
|
+
i0.ɵɵelementEnd();
|
|
88
|
+
i0.ɵɵelementStart(14, "td", 21);
|
|
89
|
+
i0.ɵɵconditionalCreate(15, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_15_Template, 2, 1, "span", 29)(16, EntityReviewPanelComponent_Conditional_0_For_80_Conditional_16_Template, 2, 0, "span", 28);
|
|
90
|
+
i0.ɵɵelementEnd()();
|
|
91
|
+
} if (rf & 2) {
|
|
92
|
+
const row_r2 = ctx.$implicit;
|
|
93
|
+
i0.ɵɵclassProp("row-new", row_r2.diffState === "new");
|
|
94
|
+
i0.ɵɵadvance(3);
|
|
95
|
+
i0.ɵɵtextInterpolate(row_r2.column.Name);
|
|
96
|
+
i0.ɵɵadvance();
|
|
97
|
+
i0.ɵɵconditional(row_r2.diffState === "new" ? 4 : -1);
|
|
98
|
+
i0.ɵɵadvance(3);
|
|
99
|
+
i0.ɵɵtextInterpolate(row_r2.sqlType);
|
|
100
|
+
i0.ɵɵadvance(2);
|
|
101
|
+
i0.ɵɵconditional(!row_r2.column.IsNullable ? 9 : 10);
|
|
102
|
+
i0.ɵɵadvance(3);
|
|
103
|
+
i0.ɵɵconditional(row_r2.column.DefaultValue ? 12 : 13);
|
|
104
|
+
i0.ɵɵadvance(3);
|
|
105
|
+
i0.ɵɵconditional(row_r2.column.Description ? 15 : 16);
|
|
106
|
+
} }
|
|
107
|
+
function EntityReviewPanelComponent_Conditional_0_Conditional_81_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
+
i0.ɵɵelementStart(0, "li", 33)(1, "code");
|
|
109
|
+
i0.ɵɵtext(2);
|
|
110
|
+
i0.ɵɵelementEnd();
|
|
111
|
+
i0.ɵɵelementStart(3, "span", 34);
|
|
112
|
+
i0.ɵɵtext(4, "\u2192");
|
|
113
|
+
i0.ɵɵelementEnd();
|
|
114
|
+
i0.ɵɵelementStart(5, "code");
|
|
115
|
+
i0.ɵɵtext(6);
|
|
116
|
+
i0.ɵɵelementEnd();
|
|
117
|
+
i0.ɵɵelementStart(7, "span", 35);
|
|
118
|
+
i0.ɵɵtext(8);
|
|
119
|
+
i0.ɵɵelementEnd()();
|
|
120
|
+
} if (rf & 2) {
|
|
121
|
+
const fk_r3 = ctx.$implicit;
|
|
122
|
+
i0.ɵɵadvance(2);
|
|
123
|
+
i0.ɵɵtextInterpolate(fk_r3.ColumnName);
|
|
124
|
+
i0.ɵɵadvance(4);
|
|
125
|
+
i0.ɵɵtextInterpolate3("", fk_r3.ReferencedSchema, ".", fk_r3.ReferencedTable, ".", fk_r3.ReferencedColumn);
|
|
126
|
+
i0.ɵɵadvance();
|
|
127
|
+
i0.ɵɵclassProp("soft", fk_r3.IsSoft);
|
|
128
|
+
i0.ɵɵadvance();
|
|
129
|
+
i0.ɵɵtextInterpolate1(" ", fk_r3.IsSoft ? "soft FK" : "hard FK", " ");
|
|
130
|
+
} }
|
|
131
|
+
function EntityReviewPanelComponent_Conditional_0_Conditional_81_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
i0.ɵɵelementStart(0, "div", 25)(1, "h4", 30);
|
|
133
|
+
i0.ɵɵelement(2, "i", 31);
|
|
134
|
+
i0.ɵɵtext(3, " Relationships ");
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
i0.ɵɵelementStart(4, "ul", 32);
|
|
137
|
+
i0.ɵɵrepeaterCreate(5, EntityReviewPanelComponent_Conditional_0_Conditional_81_For_6_Template, 9, 7, "li", 33, _forTrack0);
|
|
138
|
+
i0.ɵɵelementEnd()();
|
|
139
|
+
} if (rf & 2) {
|
|
140
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
141
|
+
i0.ɵɵadvance(5);
|
|
142
|
+
i0.ɵɵrepeater(ctx_r0.ForeignKeys);
|
|
143
|
+
} }
|
|
144
|
+
function EntityReviewPanelComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
145
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 2)(2, "div", 3);
|
|
146
|
+
i0.ɵɵelement(3, "i", 4);
|
|
147
|
+
i0.ɵɵelementStart(4, "span", 5);
|
|
148
|
+
i0.ɵɵtext(5);
|
|
149
|
+
i0.ɵɵelementEnd();
|
|
150
|
+
i0.ɵɵelementStart(6, "span", 6);
|
|
151
|
+
i0.ɵɵtext(7);
|
|
152
|
+
i0.ɵɵelementEnd();
|
|
153
|
+
i0.ɵɵconditionalCreate(8, EntityReviewPanelComponent_Conditional_0_Conditional_8_Template, 2, 0, "span", 7)(9, EntityReviewPanelComponent_Conditional_0_Conditional_9_Template, 2, 0, "span", 8);
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
i0.ɵɵconditionalCreate(10, EntityReviewPanelComponent_Conditional_0_Conditional_10_Template, 2, 1, "p", 9);
|
|
156
|
+
i0.ɵɵelementEnd();
|
|
157
|
+
i0.ɵɵelementStart(11, "table", 10)(12, "thead")(13, "tr")(14, "th", 11);
|
|
158
|
+
i0.ɵɵtext(15, "Column");
|
|
159
|
+
i0.ɵɵelementEnd();
|
|
160
|
+
i0.ɵɵelementStart(16, "th", 11);
|
|
161
|
+
i0.ɵɵtext(17, "SQL Type");
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
i0.ɵɵelementStart(18, "th", 11);
|
|
164
|
+
i0.ɵɵtext(19, "Required");
|
|
165
|
+
i0.ɵɵelementEnd();
|
|
166
|
+
i0.ɵɵelementStart(20, "th", 11);
|
|
167
|
+
i0.ɵɵtext(21, "Default");
|
|
168
|
+
i0.ɵɵelementEnd();
|
|
169
|
+
i0.ɵɵelementStart(22, "th", 11);
|
|
170
|
+
i0.ɵɵtext(23, "Description");
|
|
171
|
+
i0.ɵɵelementEnd()()();
|
|
172
|
+
i0.ɵɵelementStart(24, "tbody")(25, "tr", 12)(26, "td", 13);
|
|
173
|
+
i0.ɵɵelement(27, "i", 14);
|
|
174
|
+
i0.ɵɵelementStart(28, "code");
|
|
175
|
+
i0.ɵɵtext(29, "ID");
|
|
176
|
+
i0.ɵɵelementEnd();
|
|
177
|
+
i0.ɵɵelementStart(30, "span", 15);
|
|
178
|
+
i0.ɵɵtext(31, "PK");
|
|
179
|
+
i0.ɵɵelementEnd()();
|
|
180
|
+
i0.ɵɵelementStart(32, "td", 16)(33, "code");
|
|
181
|
+
i0.ɵɵtext(34, "UNIQUEIDENTIFIER");
|
|
182
|
+
i0.ɵɵelementEnd()();
|
|
183
|
+
i0.ɵɵelementStart(35, "td", 17);
|
|
184
|
+
i0.ɵɵelement(36, "i", 18);
|
|
185
|
+
i0.ɵɵelementEnd();
|
|
186
|
+
i0.ɵɵelementStart(37, "td", 19)(38, "code", 20);
|
|
187
|
+
i0.ɵɵtext(39, "NEWSEQUENTIALID()");
|
|
188
|
+
i0.ɵɵelementEnd()();
|
|
189
|
+
i0.ɵɵelementStart(40, "td", 21)(41, "span", 22);
|
|
190
|
+
i0.ɵɵtext(42, "Primary key \u2014 always present");
|
|
191
|
+
i0.ɵɵelementEnd()()();
|
|
192
|
+
i0.ɵɵelementStart(43, "tr", 12)(44, "td", 13);
|
|
193
|
+
i0.ɵɵelement(45, "i", 14);
|
|
194
|
+
i0.ɵɵelementStart(46, "code");
|
|
195
|
+
i0.ɵɵtext(47, "__mj_CreatedAt");
|
|
196
|
+
i0.ɵɵelementEnd();
|
|
197
|
+
i0.ɵɵelementStart(48, "span", 15);
|
|
198
|
+
i0.ɵɵtext(49, "AUTO");
|
|
199
|
+
i0.ɵɵelementEnd()();
|
|
200
|
+
i0.ɵɵelementStart(50, "td", 16)(51, "code");
|
|
201
|
+
i0.ɵɵtext(52, "DATETIMEOFFSET");
|
|
202
|
+
i0.ɵɵelementEnd()();
|
|
203
|
+
i0.ɵɵelementStart(53, "td", 17);
|
|
204
|
+
i0.ɵɵelement(54, "i", 18);
|
|
205
|
+
i0.ɵɵelementEnd();
|
|
206
|
+
i0.ɵɵelementStart(55, "td", 19)(56, "code", 20);
|
|
207
|
+
i0.ɵɵtext(57, "GETUTCDATE()");
|
|
208
|
+
i0.ɵɵelementEnd()();
|
|
209
|
+
i0.ɵɵelementStart(58, "td", 21)(59, "span", 22);
|
|
210
|
+
i0.ɵɵtext(60, "Record creation timestamp");
|
|
211
|
+
i0.ɵɵelementEnd()()();
|
|
212
|
+
i0.ɵɵelementStart(61, "tr", 23)(62, "td", 13);
|
|
213
|
+
i0.ɵɵelement(63, "i", 14);
|
|
214
|
+
i0.ɵɵelementStart(64, "code");
|
|
215
|
+
i0.ɵɵtext(65, "__mj_UpdatedAt");
|
|
216
|
+
i0.ɵɵelementEnd();
|
|
217
|
+
i0.ɵɵelementStart(66, "span", 15);
|
|
218
|
+
i0.ɵɵtext(67, "AUTO");
|
|
219
|
+
i0.ɵɵelementEnd()();
|
|
220
|
+
i0.ɵɵelementStart(68, "td", 16)(69, "code");
|
|
221
|
+
i0.ɵɵtext(70, "DATETIMEOFFSET");
|
|
222
|
+
i0.ɵɵelementEnd()();
|
|
223
|
+
i0.ɵɵelementStart(71, "td", 17);
|
|
224
|
+
i0.ɵɵelement(72, "i", 18);
|
|
225
|
+
i0.ɵɵelementEnd();
|
|
226
|
+
i0.ɵɵelementStart(73, "td", 19)(74, "code", 20);
|
|
227
|
+
i0.ɵɵtext(75, "GETUTCDATE()");
|
|
228
|
+
i0.ɵɵelementEnd()();
|
|
229
|
+
i0.ɵɵelementStart(76, "td", 21)(77, "span", 22);
|
|
230
|
+
i0.ɵɵtext(78, "Last update timestamp");
|
|
231
|
+
i0.ɵɵelementEnd()()();
|
|
232
|
+
i0.ɵɵrepeaterCreate(79, EntityReviewPanelComponent_Conditional_0_For_80_Template, 17, 8, "tr", 24, i0.ɵɵcomponentInstance().TrackByName, true);
|
|
233
|
+
i0.ɵɵelementEnd()();
|
|
234
|
+
i0.ɵɵconditionalCreate(81, EntityReviewPanelComponent_Conditional_0_Conditional_81_Template, 7, 0, "div", 25);
|
|
235
|
+
i0.ɵɵelementEnd();
|
|
236
|
+
} if (rf & 2) {
|
|
237
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
238
|
+
i0.ɵɵadvance(5);
|
|
239
|
+
i0.ɵɵtextInterpolate(ctx_r0.TableDefinition.EntityName);
|
|
240
|
+
i0.ɵɵadvance(2);
|
|
241
|
+
i0.ɵɵtextInterpolate2(" ", ctx_r0.TableDefinition.SchemaName, ".", ctx_r0.TableDefinition.TableName, " ");
|
|
242
|
+
i0.ɵɵadvance();
|
|
243
|
+
i0.ɵɵconditional(ctx_r0.ModificationType === "create" ? 8 : 9);
|
|
244
|
+
i0.ɵɵadvance(2);
|
|
245
|
+
i0.ɵɵconditional(ctx_r0.TableDefinition.Description ? 10 : -1);
|
|
246
|
+
i0.ɵɵadvance(69);
|
|
247
|
+
i0.ɵɵrepeater(ctx_r0.Rows);
|
|
248
|
+
i0.ɵɵadvance(2);
|
|
249
|
+
i0.ɵɵconditional(ctx_r0.ForeignKeys.length > 0 ? 81 : -1);
|
|
250
|
+
} }
|
|
251
|
+
function EntityReviewPanelComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelementStart(0, "div", 1);
|
|
253
|
+
i0.ɵɵelement(1, "i", 36);
|
|
254
|
+
i0.ɵɵelementStart(2, "p");
|
|
255
|
+
i0.ɵɵtext(3, "No schema defined yet. Complete the previous steps to see a review.");
|
|
256
|
+
i0.ɵɵelementEnd()();
|
|
257
|
+
} }
|
|
258
|
+
export class EntityReviewPanelComponent {
|
|
259
|
+
/** The table / entity definition being reviewed. */
|
|
260
|
+
set TableDefinition(v) {
|
|
261
|
+
this._tableDefinition = v;
|
|
262
|
+
this.rebuildRows();
|
|
263
|
+
}
|
|
264
|
+
get TableDefinition() { return this._tableDefinition; }
|
|
265
|
+
_tableDefinition = null;
|
|
266
|
+
/** 'create' (all rows are new) vs 'alter' (diff against existingColumns). */
|
|
267
|
+
set ModificationType(v) {
|
|
268
|
+
this._modificationType = v;
|
|
269
|
+
this.rebuildRows();
|
|
270
|
+
}
|
|
271
|
+
get ModificationType() { return this._modificationType; }
|
|
272
|
+
_modificationType = 'create';
|
|
273
|
+
/** Columns already in the DB — used in alter mode to compute the diff. */
|
|
274
|
+
set ExistingColumns(v) {
|
|
275
|
+
this._existingColumns = v;
|
|
276
|
+
this.rebuildRows();
|
|
277
|
+
}
|
|
278
|
+
get ExistingColumns() { return this._existingColumns; }
|
|
279
|
+
_existingColumns = [];
|
|
280
|
+
/** Prepared rows ready for the template. */
|
|
281
|
+
Rows = [];
|
|
282
|
+
/** Convenient accessor for the template. */
|
|
283
|
+
get ForeignKeys() {
|
|
284
|
+
return this._tableDefinition?.ForeignKeys ?? [];
|
|
285
|
+
}
|
|
286
|
+
TrackByName(_, row) {
|
|
287
|
+
return row.column.Name;
|
|
288
|
+
}
|
|
289
|
+
// ─── Helpers ───────────────────────────────────────────────────────────
|
|
290
|
+
rebuildRows() {
|
|
291
|
+
if (!this._tableDefinition) {
|
|
292
|
+
this.Rows = [];
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
const existingNames = new Set(this._existingColumns.map(c => c.Name.toLowerCase()));
|
|
296
|
+
this.Rows = this._tableDefinition.Columns.map(col => ({
|
|
297
|
+
column: col,
|
|
298
|
+
diffState: this.diffState(col, existingNames),
|
|
299
|
+
sqlType: this.resolveSqlType(col),
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
diffState(col, existingNames) {
|
|
303
|
+
if (this._modificationType === 'create')
|
|
304
|
+
return 'unchanged';
|
|
305
|
+
return existingNames.has(col.Name.toLowerCase()) ? 'existing' : 'new';
|
|
306
|
+
}
|
|
307
|
+
/** Resolve a human-readable SQL type from the ColumnSpec. */
|
|
308
|
+
resolveSqlType(col) {
|
|
309
|
+
if (col.RawSqlType)
|
|
310
|
+
return col.RawSqlType;
|
|
311
|
+
switch (col.Type) {
|
|
312
|
+
case 'string': return col.MaxLength ? `NVARCHAR(${col.MaxLength})` : 'NVARCHAR(200)';
|
|
313
|
+
case 'text':
|
|
314
|
+
case 'json': return 'NVARCHAR(MAX)';
|
|
315
|
+
case 'integer': return 'INT';
|
|
316
|
+
case 'bigint': return 'BIGINT';
|
|
317
|
+
case 'decimal': return `DECIMAL(${col.Precision ?? 18},${col.Scale ?? 2})`;
|
|
318
|
+
case 'boolean': return 'BIT';
|
|
319
|
+
case 'datetime': return 'DATETIMEOFFSET';
|
|
320
|
+
case 'date': return 'DATE';
|
|
321
|
+
case 'time': return 'TIME';
|
|
322
|
+
case 'uuid': return 'UNIQUEIDENTIFIER';
|
|
323
|
+
case 'float': return 'FLOAT';
|
|
324
|
+
default: return col.Type ?? 'NVARCHAR(200)';
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
static ɵfac = function EntityReviewPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || EntityReviewPanelComponent)(); };
|
|
328
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EntityReviewPanelComponent, selectors: [["mj-database-review-panel"]], inputs: { TableDefinition: "TableDefinition", ModificationType: "ModificationType", ExistingColumns: "ExistingColumns" }, standalone: false, decls: 2, vars: 1, consts: [[1, "review-panel"], [1, "review-empty"], [1, "review-header"], [1, "entity-badge"], [1, "fa-solid", "fa-table-cells-large"], [1, "entity-name"], [1, "schema-path"], [1, "mode-tag", "new"], [1, "mode-tag", "alter"], [1, "entity-description"], ["aria-label", "Column definitions", 1, "review-table"], ["scope", "col"], [1, "auto-col-row"], [1, "col-name"], ["title", "Auto-managed", 1, "fa-solid", "fa-lock-keyhole", "auto-lock"], [1, "auto-badge"], [1, "col-type"], [1, "col-req"], ["title", "Required", 1, "fa-solid", "fa-check", "req-yes"], [1, "col-default"], [1, "default-val"], [1, "col-desc"], [1, "desc-text", "auto-desc"], [1, "auto-col-row", "auto-col-divider"], [3, "row-new"], [1, "fk-section"], ["title", "New column", 1, "diff-badge", "new"], [1, "req-no"], [1, "empty-val"], [1, "desc-text"], [1, "fk-title"], [1, "fa-solid", "fa-link"], [1, "fk-list"], [1, "fk-item"], [1, "fk-arrow"], [1, "fk-type"], [1, "fa-regular", "fa-rectangle-list"]], template: function EntityReviewPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
329
|
+
i0.ɵɵconditionalCreate(0, EntityReviewPanelComponent_Conditional_0_Template, 82, 6, "div", 0)(1, EntityReviewPanelComponent_Conditional_1_Template, 4, 0, "div", 1);
|
|
330
|
+
} if (rf & 2) {
|
|
331
|
+
i0.ɵɵconditional(ctx.TableDefinition ? 0 : 1);
|
|
332
|
+
} }, styles: [".review-panel[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n\n\n\n.review-header[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.entity-name[_ngcontent-%COMP%] {\n font-weight: 700;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n\n.schema-path[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n.mode-tag[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.7rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n padding: 2px 7px;\n border-radius: 10px;\n}\n\n.mode-tag.new[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n\n.mode-tag.alter[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.entity-description[_ngcontent-%COMP%] {\n margin: 8px 0 4px;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n\n\n\n.review-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n}\n\n.review-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.review-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.review-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n color: var(--mj-text-primary);\n}\n\n.review-table[_ngcontent-%COMP%] tr.row-new[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n}\n\n\n\n\n.col-name[_ngcontent-%COMP%] code[_ngcontent-%COMP%], \n.col-type[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.8125rem;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\n\n.diff-badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.65rem;\n font-weight: 700;\n text-transform: uppercase;\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n vertical-align: middle;\n}\n\n.diff-badge.new[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid var(--mj-status-success-border);\n}\n\n.req-yes[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.req-no[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.default-val[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.8125rem;\n color: var(--mj-text-secondary);\n}\n\n.empty-val[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.desc-text[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n\n\n\n.auto-col-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n opacity: 0.75;\n}\n\n.auto-col-divider[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.auto-lock[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n margin-right: 5px;\n}\n\n.auto-badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 5px;\n vertical-align: middle;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n}\n\n.auto-desc[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-muted);\n}\n\n\n\n\n.fk-section[_ngcontent-%COMP%] {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.fk-title[_ngcontent-%COMP%] {\n margin: 0 0 10px;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 7px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.fk-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.fk-list[_ngcontent-%COMP%] {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.fk-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n color: var(--mj-text-primary);\n}\n\n.fk-item[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 0.8125rem;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.fk-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.fk-type[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.fk-type.soft[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n\n\n\n.review-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 48px 24px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.review-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n}\n\n.review-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.9rem;\n}"], changeDetection: 0 });
|
|
333
|
+
}
|
|
334
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EntityReviewPanelComponent, [{
|
|
335
|
+
type: Component,
|
|
336
|
+
args: [{ standalone: false, selector: 'mj-database-review-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (TableDefinition) {\n <div class=\"review-panel\">\n\n <!-- \u2500\u2500 Entity header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <div class=\"review-header\">\n <div class=\"entity-badge\">\n <i class=\"fa-solid fa-table-cells-large\"></i>\n <span class=\"entity-name\">{{ TableDefinition.EntityName }}</span>\n <span class=\"schema-path\">\n {{ TableDefinition.SchemaName }}.{{ TableDefinition.TableName }}\n </span>\n @if (ModificationType === 'create') {\n <span class=\"mode-tag new\">NEW</span>\n } @else {\n <span class=\"mode-tag alter\">ALTER</span>\n }\n </div>\n @if (TableDefinition.Description) {\n <p class=\"entity-description\">{{ TableDefinition.Description }}</p>\n }\n </div>\n\n <!-- \u2500\u2500 Column table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n <table class=\"review-table\" aria-label=\"Column definitions\">\n <thead>\n <tr>\n <th scope=\"col\">Column</th>\n <th scope=\"col\">SQL Type</th>\n <th scope=\"col\">Required</th>\n <th scope=\"col\">Default</th>\n <th scope=\"col\">Description</th>\n </tr>\n </thead>\n <tbody>\n <!-- \u2500\u2500 Auto-managed columns \u2014 always injected, cannot be removed \u2500\u2500 -->\n <tr class=\"auto-col-row\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>ID</code>\n <span class=\"auto-badge\">PK</span>\n </td>\n <td class=\"col-type\"><code>UNIQUEIDENTIFIER</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">NEWSEQUENTIALID()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Primary key \u2014 always present</span></td>\n </tr>\n <tr class=\"auto-col-row\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>__mj_CreatedAt</code>\n <span class=\"auto-badge\">AUTO</span>\n </td>\n <td class=\"col-type\"><code>DATETIMEOFFSET</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">GETUTCDATE()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Record creation timestamp</span></td>\n </tr>\n <tr class=\"auto-col-row auto-col-divider\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>__mj_UpdatedAt</code>\n <span class=\"auto-badge\">AUTO</span>\n </td>\n <td class=\"col-type\"><code>DATETIMEOFFSET</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">GETUTCDATE()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Last update timestamp</span></td>\n </tr>\n\n <!-- \u2500\u2500 User-defined columns \u2500\u2500 -->\n @for (row of Rows; track TrackByName($index, row)) {\n <tr [class.row-new]=\"row.diffState === 'new'\">\n <td class=\"col-name\">\n <code>{{ row.column.Name }}</code>\n @if (row.diffState === 'new') {\n <span class=\"diff-badge new\" title=\"New column\">+NEW</span>\n }\n </td>\n <td class=\"col-type\">\n <code>{{ row.sqlType }}</code>\n </td>\n <td class=\"col-req\">\n @if (!row.column.IsNullable) {\n <i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i>\n } @else {\n <span class=\"req-no\">No</span>\n }\n </td>\n <td class=\"col-default\">\n @if (row.column.DefaultValue) {\n <code class=\"default-val\">{{ row.column.DefaultValue }}</code>\n } @else {\n <span class=\"empty-val\">\u2014</span>\n }\n </td>\n <td class=\"col-desc\">\n @if (row.column.Description) {\n <span class=\"desc-text\">{{ row.column.Description }}</span>\n } @else {\n <span class=\"empty-val\">\u2014</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- \u2500\u2500 Foreign key section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n @if (ForeignKeys.length > 0) {\n <div class=\"fk-section\">\n <h4 class=\"fk-title\">\n <i class=\"fa-solid fa-link\"></i>\n Relationships\n </h4>\n <ul class=\"fk-list\">\n @for (fk of ForeignKeys; track fk.ColumnName) {\n <li class=\"fk-item\">\n <code>{{ fk.ColumnName }}</code>\n <span class=\"fk-arrow\">\u2192</span>\n <code>{{ fk.ReferencedSchema }}.{{ fk.ReferencedTable }}.{{ fk.ReferencedColumn }}</code>\n <span class=\"fk-type\" [class.soft]=\"fk.IsSoft\">\n {{ fk.IsSoft ? 'soft FK' : 'hard FK' }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n\n </div>\n} @else {\n <div class=\"review-empty\">\n <i class=\"fa-regular fa-rectangle-list\"></i>\n <p>No schema defined yet. Complete the previous steps to see a review.</p>\n </div>\n}\n", styles: [".review-panel {\n display: flex;\n flex-direction: column;\n gap: 0;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.review-header {\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n}\n\n.entity-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.entity-badge i {\n color: var(--mj-brand-primary);\n}\n\n.entity-name {\n font-weight: 700;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n\n.schema-path {\n font-family: monospace;\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n}\n\n.mode-tag {\n display: inline-block;\n font-size: 0.7rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n padding: 2px 7px;\n border-radius: 10px;\n}\n\n.mode-tag.new {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n}\n\n.mode-tag.alter {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 30%, transparent);\n}\n\n.entity-description {\n margin: 8px 0 4px;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n line-height: 1.5;\n}\n\n/* \u2500\u2500 Review table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.review-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 0.875rem;\n}\n\n.review-table thead tr {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.review-table th {\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.8rem;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n}\n\n.review-table td {\n padding: 10px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n vertical-align: middle;\n color: var(--mj-text-primary);\n}\n\n.review-table tr.row-new td {\n background: var(--mj-status-success-bg);\n}\n\n/* \u2500\u2500 Cell content \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.col-name code,\n.col-type code {\n font-family: monospace;\n font-size: 0.8125rem;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n word-break: break-all;\n overflow-wrap: break-word;\n}\n\n.diff-badge {\n display: inline-block;\n font-size: 0.65rem;\n font-weight: 700;\n text-transform: uppercase;\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n vertical-align: middle;\n}\n\n.diff-badge.new {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid var(--mj-status-success-border);\n}\n\n.req-yes {\n color: var(--mj-status-success);\n}\n\n.req-no {\n color: var(--mj-text-muted);\n}\n\n.default-val {\n font-family: monospace;\n font-size: 0.8125rem;\n color: var(--mj-text-secondary);\n}\n\n.empty-val {\n color: var(--mj-text-muted);\n}\n\n.desc-text {\n color: var(--mj-text-secondary);\n font-size: 0.875rem;\n}\n\n/* \u2500\u2500 Auto-managed columns \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.auto-col-row td {\n background: var(--mj-bg-surface-sunken);\n opacity: 0.75;\n}\n\n.auto-col-divider td {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.auto-lock {\n font-size: 0.7rem;\n color: var(--mj-text-muted);\n margin-right: 5px;\n}\n\n.auto-badge {\n display: inline-block;\n font-size: 0.6rem;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 5px;\n vertical-align: middle;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-muted);\n border: 1px solid var(--mj-border-default);\n}\n\n.auto-desc {\n font-style: italic;\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Foreign keys \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.fk-section {\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.fk-title {\n margin: 0 0 10px;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 7px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n}\n\n.fk-title i {\n color: var(--mj-text-muted);\n}\n\n.fk-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.fk-item {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.875rem;\n color: var(--mj-text-primary);\n}\n\n.fk-item code {\n font-family: monospace;\n font-size: 0.8125rem;\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 3px;\n}\n\n.fk-arrow {\n color: var(--mj-text-muted);\n}\n\n.fk-type {\n font-size: 0.75rem;\n font-weight: 600;\n padding: 2px 8px;\n border-radius: 4px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.fk-type.soft {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n/* \u2500\u2500 Empty state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.review-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n padding: 48px 24px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.review-empty i {\n font-size: 3rem;\n}\n\n.review-empty p {\n margin: 0;\n font-size: 0.9rem;\n}\n"] }]
|
|
337
|
+
}], null, { TableDefinition: [{
|
|
338
|
+
type: Input
|
|
339
|
+
}], ModificationType: [{
|
|
340
|
+
type: Input
|
|
341
|
+
}], ExistingColumns: [{
|
|
342
|
+
type: Input
|
|
343
|
+
}] }); })();
|
|
344
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityReviewPanelComponent, { className: "EntityReviewPanelComponent", filePath: "src/DatabaseDesigner/components/shared/entity-review-panel.component.ts", lineNumber: 31 }); })();
|
|
345
|
+
//# sourceMappingURL=entity-review-panel.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-review-panel.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/entity-review-panel.component.ts","../../../../src/DatabaseDesigner/components/shared/entity-review-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @module entity-review-panel.component\n * @description Read-only schema review table — mirrors the prototype table the\n * Database Designer agent produces in chat. Used in wizard Step 4 (Review) and\n * in the Modify view's \"Review Changes\" tab.\n *\n * In `alter` mode, new or changed columns are highlighted in green and\n * existing-but-hidden columns are dimmed to show the diff.\n */\n\nimport {\n Component, Input, ChangeDetectionStrategy,\n} from '@angular/core';\nimport type { EntityTableSpec, ColumnSpec, ForeignKeySpec } from '../../database-designer.types.js';\n\n/** Internal view model for a row in the review table. */\ninterface ReviewRow {\n column: ColumnSpec;\n /** 'existing' | 'new' | 'hidden' — only populated in alter mode. */\n diffState: 'existing' | 'new' | 'hidden' | 'unchanged';\n sqlType: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-database-review-panel',\n templateUrl: './entity-review-panel.component.html',\n styleUrls: ['./entity-review-panel.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EntityReviewPanelComponent {\n\n /** The table / entity definition being reviewed. */\n @Input() public set TableDefinition(v: EntityTableSpec | null) {\n this._tableDefinition = v;\n this.rebuildRows();\n }\n public get TableDefinition(): EntityTableSpec | null { return this._tableDefinition; }\n private _tableDefinition: EntityTableSpec | null = null;\n\n /** 'create' (all rows are new) vs 'alter' (diff against existingColumns). */\n @Input() public set ModificationType(v: 'create' | 'alter') {\n this._modificationType = v;\n this.rebuildRows();\n }\n public get ModificationType(): 'create' | 'alter' { return this._modificationType; }\n private _modificationType: 'create' | 'alter' = 'create';\n\n /** Columns already in the DB — used in alter mode to compute the diff. */\n @Input() public set ExistingColumns(v: ColumnSpec[]) {\n this._existingColumns = v;\n this.rebuildRows();\n }\n public get ExistingColumns(): ColumnSpec[] { return this._existingColumns; }\n private _existingColumns: ColumnSpec[] = [];\n\n /** Prepared rows ready for the template. */\n public Rows: ReviewRow[] = [];\n\n /** Convenient accessor for the template. */\n public get ForeignKeys(): ForeignKeySpec[] {\n return this._tableDefinition?.ForeignKeys ?? [];\n }\n\n public TrackByName(_: number, row: ReviewRow): string {\n return row.column.Name;\n }\n\n // ─── Helpers ───────────────────────────────────────────────────────────\n\n private rebuildRows(): void {\n if (!this._tableDefinition) {\n this.Rows = [];\n return;\n }\n\n const existingNames = new Set(\n this._existingColumns.map(c => c.Name.toLowerCase())\n );\n\n this.Rows = this._tableDefinition.Columns.map(col => ({\n column: col,\n diffState: this.diffState(col, existingNames),\n sqlType: this.resolveSqlType(col),\n }));\n }\n\n private diffState(\n col: ColumnSpec,\n existingNames: Set<string>,\n ): ReviewRow['diffState'] {\n if (this._modificationType === 'create') return 'unchanged';\n return existingNames.has(col.Name.toLowerCase()) ? 'existing' : 'new';\n }\n\n /** Resolve a human-readable SQL type from the ColumnSpec. */\n private resolveSqlType(col: ColumnSpec): string {\n if (col.RawSqlType) return col.RawSqlType;\n switch (col.Type) {\n case 'string': return col.MaxLength ? `NVARCHAR(${col.MaxLength})` : 'NVARCHAR(200)';\n case 'text':\n case 'json': return 'NVARCHAR(MAX)';\n case 'integer': return 'INT';\n case 'bigint': return 'BIGINT';\n case 'decimal': return `DECIMAL(${col.Precision ?? 18},${col.Scale ?? 2})`;\n case 'boolean': return 'BIT';\n case 'datetime': return 'DATETIMEOFFSET';\n case 'date': return 'DATE';\n case 'time': return 'TIME';\n case 'uuid': return 'UNIQUEIDENTIFIER';\n case 'float': return 'FLOAT';\n default: return col.Type ?? 'NVARCHAR(200)';\n }\n }\n}\n","@if (TableDefinition) {\n <div class=\"review-panel\">\n\n <!-- ── Entity header ─────────────────────────────────────────────────── -->\n <div class=\"review-header\">\n <div class=\"entity-badge\">\n <i class=\"fa-solid fa-table-cells-large\"></i>\n <span class=\"entity-name\">{{ TableDefinition.EntityName }}</span>\n <span class=\"schema-path\">\n {{ TableDefinition.SchemaName }}.{{ TableDefinition.TableName }}\n </span>\n @if (ModificationType === 'create') {\n <span class=\"mode-tag new\">NEW</span>\n } @else {\n <span class=\"mode-tag alter\">ALTER</span>\n }\n </div>\n @if (TableDefinition.Description) {\n <p class=\"entity-description\">{{ TableDefinition.Description }}</p>\n }\n </div>\n\n <!-- ── Column table ───────────────────────────────────────────────────── -->\n <table class=\"review-table\" aria-label=\"Column definitions\">\n <thead>\n <tr>\n <th scope=\"col\">Column</th>\n <th scope=\"col\">SQL Type</th>\n <th scope=\"col\">Required</th>\n <th scope=\"col\">Default</th>\n <th scope=\"col\">Description</th>\n </tr>\n </thead>\n <tbody>\n <!-- ── Auto-managed columns — always injected, cannot be removed ── -->\n <tr class=\"auto-col-row\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>ID</code>\n <span class=\"auto-badge\">PK</span>\n </td>\n <td class=\"col-type\"><code>UNIQUEIDENTIFIER</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">NEWSEQUENTIALID()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Primary key — always present</span></td>\n </tr>\n <tr class=\"auto-col-row\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>__mj_CreatedAt</code>\n <span class=\"auto-badge\">AUTO</span>\n </td>\n <td class=\"col-type\"><code>DATETIMEOFFSET</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">GETUTCDATE()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Record creation timestamp</span></td>\n </tr>\n <tr class=\"auto-col-row auto-col-divider\">\n <td class=\"col-name\">\n <i class=\"fa-solid fa-lock-keyhole auto-lock\" title=\"Auto-managed\"></i>\n <code>__mj_UpdatedAt</code>\n <span class=\"auto-badge\">AUTO</span>\n </td>\n <td class=\"col-type\"><code>DATETIMEOFFSET</code></td>\n <td class=\"col-req\"><i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i></td>\n <td class=\"col-default\"><code class=\"default-val\">GETUTCDATE()</code></td>\n <td class=\"col-desc\"><span class=\"desc-text auto-desc\">Last update timestamp</span></td>\n </tr>\n\n <!-- ── User-defined columns ── -->\n @for (row of Rows; track TrackByName($index, row)) {\n <tr [class.row-new]=\"row.diffState === 'new'\">\n <td class=\"col-name\">\n <code>{{ row.column.Name }}</code>\n @if (row.diffState === 'new') {\n <span class=\"diff-badge new\" title=\"New column\">+NEW</span>\n }\n </td>\n <td class=\"col-type\">\n <code>{{ row.sqlType }}</code>\n </td>\n <td class=\"col-req\">\n @if (!row.column.IsNullable) {\n <i class=\"fa-solid fa-check req-yes\" title=\"Required\"></i>\n } @else {\n <span class=\"req-no\">No</span>\n }\n </td>\n <td class=\"col-default\">\n @if (row.column.DefaultValue) {\n <code class=\"default-val\">{{ row.column.DefaultValue }}</code>\n } @else {\n <span class=\"empty-val\">—</span>\n }\n </td>\n <td class=\"col-desc\">\n @if (row.column.Description) {\n <span class=\"desc-text\">{{ row.column.Description }}</span>\n } @else {\n <span class=\"empty-val\">—</span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n <!-- ── Foreign key section ───────────────────────────────────────────── -->\n @if (ForeignKeys.length > 0) {\n <div class=\"fk-section\">\n <h4 class=\"fk-title\">\n <i class=\"fa-solid fa-link\"></i>\n Relationships\n </h4>\n <ul class=\"fk-list\">\n @for (fk of ForeignKeys; track fk.ColumnName) {\n <li class=\"fk-item\">\n <code>{{ fk.ColumnName }}</code>\n <span class=\"fk-arrow\">→</span>\n <code>{{ fk.ReferencedSchema }}.{{ fk.ReferencedTable }}.{{ fk.ReferencedColumn }}</code>\n <span class=\"fk-type\" [class.soft]=\"fk.IsSoft\">\n {{ fk.IsSoft ? 'soft FK' : 'hard FK' }}\n </span>\n </li>\n }\n </ul>\n </div>\n }\n\n </div>\n} @else {\n <div class=\"review-empty\">\n <i class=\"fa-regular fa-rectangle-list\"></i>\n <p>No schema defined yet. Complete the previous steps to see a review.</p>\n </div>\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WizardStepDef } from '../../database-designer.types.js';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class WizardStepIndicatorComponent {
|
|
4
|
+
/** Ordered list of step definitions. */
|
|
5
|
+
Steps: WizardStepDef[];
|
|
6
|
+
/** 0-based index of the currently active step. */
|
|
7
|
+
CurrentStep: number;
|
|
8
|
+
/** Used by @for track. */
|
|
9
|
+
TrackByStep(_: number, step: WizardStepDef): string;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<WizardStepIndicatorComponent, never>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<WizardStepIndicatorComponent, "mj-entity-wizard-step-indicator", never, { "Steps": { "alias": "Steps"; "required": false; }; "CurrentStep": { "alias": "CurrentStep"; "required": false; }; }, {}, never, never, false, never>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=wizard-step-indicator.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-step-indicator.component.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/wizard-step-indicator.component.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;;AAEtE,qBAOa,4BAA4B;IAErC,wCAAwC;IACxB,KAAK,EAAE,aAAa,EAAE,CAAM;IAE5C,kDAAkD;IAClC,WAAW,SAAK;IAEhC,0BAA0B;IACnB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM;yCATjD,4BAA4B;2CAA5B,4BAA4B;CAYxC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module wizard-step-indicator.component
|
|
3
|
+
* @description Pure-display step breadcrumb bar for the Database Designer create wizard.
|
|
4
|
+
*
|
|
5
|
+
* Renders a horizontal step progression:
|
|
6
|
+
* ① Basics ── ② Fields ── ③ Relationships ── ④ Review ── ⑤ Create
|
|
7
|
+
*
|
|
8
|
+
* Completed steps show a checkmark. The active step is highlighted.
|
|
9
|
+
* Future steps are muted. Parent controls all state via inputs — this
|
|
10
|
+
* component has no local state and emits no events.
|
|
11
|
+
*/
|
|
12
|
+
import { Component, Input, ChangeDetectionStrategy, } from '@angular/core';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
function WizardStepIndicatorComponent_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵelement(0, "i", 3);
|
|
16
|
+
} }
|
|
17
|
+
function WizardStepIndicatorComponent_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelementStart(0, "span");
|
|
19
|
+
i0.ɵɵtext(1);
|
|
20
|
+
i0.ɵɵelementEnd();
|
|
21
|
+
} if (rf & 2) {
|
|
22
|
+
const ɵ$index_3_r1 = i0.ɵɵnextContext().$index;
|
|
23
|
+
i0.ɵɵadvance();
|
|
24
|
+
i0.ɵɵtextInterpolate(ɵ$index_3_r1 + 1);
|
|
25
|
+
} }
|
|
26
|
+
function WizardStepIndicatorComponent_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelement(0, "div", 6);
|
|
28
|
+
} if (rf & 2) {
|
|
29
|
+
const step_r2 = i0.ɵɵnextContext().$implicit;
|
|
30
|
+
i0.ɵɵclassProp("connector-done", step_r2.isComplete);
|
|
31
|
+
} }
|
|
32
|
+
function WizardStepIndicatorComponent_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
33
|
+
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
|
|
34
|
+
i0.ɵɵconditionalCreate(2, WizardStepIndicatorComponent_For_2_Conditional_2_Template, 1, 0, "i", 3)(3, WizardStepIndicatorComponent_For_2_Conditional_3_Template, 2, 1, "span");
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
i0.ɵɵelementStart(4, "span", 4);
|
|
37
|
+
i0.ɵɵtext(5);
|
|
38
|
+
i0.ɵɵelementEnd()();
|
|
39
|
+
i0.ɵɵconditionalCreate(6, WizardStepIndicatorComponent_For_2_Conditional_6_Template, 1, 2, "div", 5);
|
|
40
|
+
} if (rf & 2) {
|
|
41
|
+
const step_r2 = ctx.$implicit;
|
|
42
|
+
const ɵ$index_3_r1 = ctx.$index;
|
|
43
|
+
const ɵ$count_3_r3 = ctx.$count;
|
|
44
|
+
i0.ɵɵclassProp("step-complete", step_r2.isComplete)("step-active", step_r2.isActive)("step-future", !step_r2.isComplete && !step_r2.isActive);
|
|
45
|
+
i0.ɵɵattribute("aria-current", step_r2.isActive ? "step" : null);
|
|
46
|
+
i0.ɵɵadvance(2);
|
|
47
|
+
i0.ɵɵconditional(step_r2.isComplete ? 2 : 3);
|
|
48
|
+
i0.ɵɵadvance(3);
|
|
49
|
+
i0.ɵɵtextInterpolate(step_r2.label);
|
|
50
|
+
i0.ɵɵadvance();
|
|
51
|
+
i0.ɵɵconditional(!(ɵ$index_3_r1 === ɵ$count_3_r3 - 1) ? 6 : -1);
|
|
52
|
+
} }
|
|
53
|
+
export class WizardStepIndicatorComponent {
|
|
54
|
+
/** Ordered list of step definitions. */
|
|
55
|
+
Steps = [];
|
|
56
|
+
/** 0-based index of the currently active step. */
|
|
57
|
+
CurrentStep = 0;
|
|
58
|
+
/** Used by @for track. */
|
|
59
|
+
TrackByStep(_, step) {
|
|
60
|
+
return step.id;
|
|
61
|
+
}
|
|
62
|
+
static ɵfac = function WizardStepIndicatorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || WizardStepIndicatorComponent)(); };
|
|
63
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WizardStepIndicatorComponent, selectors: [["mj-entity-wizard-step-indicator"]], inputs: { Steps: "Steps", CurrentStep: "CurrentStep" }, standalone: false, decls: 3, vars: 0, consts: [["aria-label", "Wizard steps", 1, "step-indicator"], [1, "step"], [1, "step-circle"], [1, "fa-solid", "fa-check"], [1, "step-label"], [1, "step-connector", 3, "connector-done"], [1, "step-connector"]], template: function WizardStepIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
+
i0.ɵɵelementStart(0, "nav", 0);
|
|
65
|
+
i0.ɵɵrepeaterCreate(1, WizardStepIndicatorComponent_For_2_Template, 7, 10, null, null, ctx.TrackByStep, true);
|
|
66
|
+
i0.ɵɵelementEnd();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
i0.ɵɵadvance();
|
|
69
|
+
i0.ɵɵrepeater(ctx.Steps);
|
|
70
|
+
} }, styles: [".step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n gap: 0;\n}\n\n\n\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.step-circle[_ngcontent-%COMP%] {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.8rem;\n font-weight: 600;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n transition: background 0.2s, border-color 0.2s, color 0.2s;\n flex-shrink: 0;\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: color 0.2s;\n}\n\n\n\n\n.step-active[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step-active[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step-complete[_ngcontent-%COMP%] .step-circle[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-complete[_ngcontent-%COMP%] .step-label[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n\n\n\n.step-connector[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 20px;\n height: 3px;\n background: var(--mj-border-default);\n margin: 0 8px;\n border-radius: 2px;\n transition: background 0.2s;\n}\n\n.connector-done[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}"], changeDetection: 0 });
|
|
71
|
+
}
|
|
72
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WizardStepIndicatorComponent, [{
|
|
73
|
+
type: Component,
|
|
74
|
+
args: [{ standalone: false, selector: 'mj-entity-wizard-step-indicator', changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav class=\"step-indicator\" aria-label=\"Wizard steps\">\n @for (step of Steps; track TrackByStep($index, step); let last = $last; let i = $index) {\n <div\n class=\"step\"\n [class.step-complete]=\"step.isComplete\"\n [class.step-active]=\"step.isActive\"\n [class.step-future]=\"!step.isComplete && !step.isActive\"\n [attr.aria-current]=\"step.isActive ? 'step' : null\">\n\n <div class=\"step-circle\">\n @if (step.isComplete) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <span>{{ i + 1 }}</span>\n }\n </div>\n\n <span class=\"step-label\">{{ step.label }}</span>\n </div>\n\n @if (!last) {\n <div class=\"step-connector\" [class.connector-done]=\"step.isComplete\"></div>\n }\n }\n</nav>\n", styles: [".step-indicator {\n display: flex;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n gap: 0;\n}\n\n/* \u2500\u2500 Step item \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.step-circle {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 0.8rem;\n font-weight: 600;\n border: 2px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n transition: background 0.2s, border-color 0.2s, color 0.2s;\n flex-shrink: 0;\n}\n\n.step-label {\n font-size: 0.8125rem;\n font-weight: 500;\n color: var(--mj-text-muted);\n white-space: nowrap;\n transition: color 0.2s;\n}\n\n/* \u2500\u2500 States \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.step-active .step-circle {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step-active .step-label {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.step-complete .step-circle {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-complete .step-label {\n color: var(--mj-text-secondary);\n}\n\n/* \u2500\u2500 Connector line \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.step-connector {\n flex: 1;\n min-width: 20px;\n height: 3px;\n background: var(--mj-border-default);\n margin: 0 8px;\n border-radius: 2px;\n transition: background 0.2s;\n}\n\n.connector-done {\n background: var(--mj-status-success);\n}\n"] }]
|
|
75
|
+
}], null, { Steps: [{
|
|
76
|
+
type: Input
|
|
77
|
+
}], CurrentStep: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}] }); })();
|
|
80
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WizardStepIndicatorComponent, { className: "WizardStepIndicatorComponent", filePath: "src/DatabaseDesigner/components/shared/wizard-step-indicator.component.ts", lineNumber: 25 }); })();
|
|
81
|
+
//# sourceMappingURL=wizard-step-indicator.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard-step-indicator.component.js","sourceRoot":"","sources":["../../../../src/DatabaseDesigner/components/shared/wizard-step-indicator.component.ts","../../../../src/DatabaseDesigner/components/shared/wizard-step-indicator.component.html"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACH,SAAS,EAAE,KAAK,EAAE,uBAAuB,GAC5C,MAAM,eAAe,CAAC;;;ICHb,uBAAiC;;;IAEjC,4BAAM;IAAA,YAAW;IAAA,iBAAO;;;IAAlB,cAAW;IAAX,sCAAW;;;IAQrB,yBAA2E;;;IAA/C,oDAAwC;;;IAZpE,AAPF,8BAKsD,aAE3B;IAGrB,AAFF,kGAAuB,4EAEd;IAGX,iBAAM;IAEN,+BAAyB;IAAA,YAAgB;IAC3C,AAD2C,iBAAO,EAC5C;IAEN,oGAAa;;;;;IAdX,AADA,AADA,mDAAuC,iCACJ,yDACqB;;IAItD,eAIC;IAJD,4CAIC;IAGsB,eAAgB;IAAhB,mCAAgB;IAG3C,cAEC;IAFD,+DAEC;;ADEL,MAAM,OAAO,4BAA4B;IAErC,wCAAwC;IACxB,KAAK,GAAoB,EAAE,CAAC;IAE5C,kDAAkD;IAClC,WAAW,GAAG,CAAC,CAAC;IAEhC,0BAA0B;IACnB,WAAW,CAAC,CAAS,EAAE,IAAmB;QAC7C,OAAO,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;sHAXQ,4BAA4B;6DAA5B,4BAA4B;YCxBzC,8BAAsD;YACpD,6GAsBC;YACH,iBAAM;;YAvBJ,cAsBC;YAtBD,wBAsBC;;;iFDCU,4BAA4B;cAPxC,SAAS;6BACM,KAAK,YACP,iCAAiC,mBAG1B,uBAAuB,CAAC,MAAM;;kBAK9C,KAAK;;kBAGL,KAAK;;kFANG,4BAA4B","sourcesContent":["/**\n * @module wizard-step-indicator.component\n * @description Pure-display step breadcrumb bar for the Database Designer create wizard.\n *\n * Renders a horizontal step progression:\n * ① Basics ── ② Fields ── ③ Relationships ── ④ Review ── ⑤ Create\n *\n * Completed steps show a checkmark. The active step is highlighted.\n * Future steps are muted. Parent controls all state via inputs — this\n * component has no local state and emits no events.\n */\n\nimport {\n Component, Input, ChangeDetectionStrategy,\n} from '@angular/core';\nimport type { WizardStepDef } from '../../database-designer.types.js';\n\n@Component({\n standalone: false,\n selector: 'mj-entity-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n styleUrls: ['./wizard-step-indicator.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WizardStepIndicatorComponent {\n\n /** Ordered list of step definitions. */\n @Input() public Steps: WizardStepDef[] = [];\n\n /** 0-based index of the currently active step. */\n @Input() public CurrentStep = 0;\n\n /** Used by @for track. */\n public TrackByStep(_: number, step: WizardStepDef): string {\n return step.id;\n }\n}\n","<nav class=\"step-indicator\" aria-label=\"Wizard steps\">\n @for (step of Steps; track TrackByStep($index, step); let last = $last; let i = $index) {\n <div\n class=\"step\"\n [class.step-complete]=\"step.isComplete\"\n [class.step-active]=\"step.isActive\"\n [class.step-future]=\"!step.isComplete && !step.isActive\"\n [attr.aria-current]=\"step.isActive ? 'step' : null\">\n\n <div class=\"step-circle\">\n @if (step.isComplete) {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <span>{{ i + 1 }}</span>\n }\n </div>\n\n <span class=\"step-label\">{{ step.label }}</span>\n </div>\n\n @if (!last) {\n <div class=\"step-connector\" [class.connector-done]=\"step.isComplete\"></div>\n }\n }\n</nav>\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./components/database-designer-dashboard.component";
|
|
3
|
+
import * as i2 from "./components/entity-list.component";
|
|
4
|
+
import * as i3 from "./components/shared/wizard-step-indicator.component";
|
|
5
|
+
import * as i4 from "./components/shared/entity-fields-grid.component";
|
|
6
|
+
import * as i5 from "./components/shared/entity-review-panel.component";
|
|
7
|
+
import * as i6 from "./components/shared/entity-pipeline-panel.component";
|
|
8
|
+
import * as i7 from "./components/shared/database-preview-pane.component";
|
|
9
|
+
import * as i8 from "./components/create-wizard/database-create-wizard.component";
|
|
10
|
+
import * as i9 from "./components/create-wizard/steps/step-basics.component";
|
|
11
|
+
import * as i10 from "./components/create-wizard/steps/step-fields.component";
|
|
12
|
+
import * as i11 from "./components/create-wizard/steps/step-relationships.component";
|
|
13
|
+
import * as i12 from "./components/create-wizard/steps/step-review.component";
|
|
14
|
+
import * as i13 from "./components/create-wizard/steps/step-pipeline.component";
|
|
15
|
+
import * as i14 from "./components/modify/database-modify.component";
|
|
16
|
+
import * as i15 from "@angular/common";
|
|
17
|
+
import * as i16 from "@angular/forms";
|
|
18
|
+
import * as i17 from "@memberjunction/ng-ui-components";
|
|
19
|
+
import * as i18 from "@memberjunction/ng-shared-generic";
|
|
20
|
+
import * as i19 from "@memberjunction/ng-versions";
|
|
21
|
+
import * as i20 from "@memberjunction/ng-markdown";
|
|
22
|
+
import * as i21 from "@memberjunction/ng-code-editor";
|
|
23
|
+
import * as i22 from "@memberjunction/ng-entity-relationship-diagram";
|
|
24
|
+
import * as i23 from "angular-split";
|
|
25
|
+
export declare class DatabaseDesignerDashboardsModule {
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DatabaseDesignerDashboardsModule, never>;
|
|
27
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DatabaseDesignerDashboardsModule, [typeof i1.DatabaseDesignerDashboardComponent, typeof i2.EntityListComponent, typeof i3.WizardStepIndicatorComponent, typeof i4.EntityFieldsGridComponent, typeof i5.EntityReviewPanelComponent, typeof i6.EntityPipelinePanelComponent, typeof i7.DatabasePreviewPaneComponent, typeof i8.DatabaseCreateWizardComponent, typeof i9.StepBasicsComponent, typeof i10.StepFieldsComponent, typeof i11.StepRelationshipsComponent, typeof i12.StepReviewComponent, typeof i13.StepPipelineComponent, typeof i14.DatabaseModifyComponent], [typeof i15.CommonModule, typeof i16.FormsModule, typeof i17.MJButtonDirective, typeof i18.SharedGenericModule, typeof i19.VersionsModule, typeof i20.MarkdownModule, typeof i21.CodeEditorModule, typeof i22.EntityRelationshipDiagramModule, typeof i23.AngularSplitModule], [typeof i1.DatabaseDesignerDashboardComponent, typeof i2.EntityListComponent, typeof i3.WizardStepIndicatorComponent, typeof i4.EntityFieldsGridComponent, typeof i5.EntityReviewPanelComponent, typeof i6.EntityPipelinePanelComponent, typeof i8.DatabaseCreateWizardComponent]>;
|
|
28
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DatabaseDesignerDashboardsModule>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=database-designer-dashboards.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-designer-dashboards.module.d.ts","sourceRoot":"","sources":["../../src/DatabaseDesigner/database-designer-dashboards.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwCA,qBA4Ca,gCAAgC;yCAAhC,gCAAgC;0CAAhC,gCAAgC;0CAAhC,gCAAgC;CAAG"}
|