@memberjunction/ng-dashboards 5.38.0 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -7
- package/dist/AI/components/agents/agent-configuration.component.js +199 -198
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
- 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 +166 -58
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -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 +2 -1
- 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 +1 -0
- 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 +55 -36
- 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 +9 -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 +158 -117
- 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 +1 -0
- 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 +22 -8
- 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 +217 -860
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
- package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
- package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
- package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
- package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
- package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
- package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
- package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
- package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +209 -208
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +130 -128
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +17 -17
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +578 -538
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -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 +331 -303
- package/dist/AI/components/vectors/vector-management-resource.component.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 +14 -2
- package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
- package/dist/AI/services/cache-metrics.d.ts +50 -0
- package/dist/AI/services/cache-metrics.d.ts.map +1 -0
- package/dist/AI/services/cache-metrics.js +43 -0
- package/dist/AI/services/cache-metrics.js.map +1 -0
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
- package/dist/APIKeys/api-keys-resource.component.js +132 -131
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +141 -141
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +15 -15
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +2 -2
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +2 -2
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +2 -2
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +72 -50
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +103 -102
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +52 -51
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +39 -38
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +92 -89
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +18 -17
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -85
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +155 -150
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +245 -243
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +18 -17
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +236 -229
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +390 -389
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -2
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +525 -566
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +135 -134
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js +443 -438
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
- package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
- package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +436 -427
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +1 -1
- package/dist/Testing/components/testing-runs.component.js +116 -115
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +6 -7
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +173 -172
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +116 -92
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +57 -35
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +80 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +1 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +7 -1
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +12 -14
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +5 -14
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +4 -5
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +7 -5
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +57 -54
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-explorer.component.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/action-explorer.component.ts","../../../../src/Actions/components/explorer/action-explorer.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged, combineLatestWith } from 'rxjs/operators';\nimport { CompositeKey, LogError, RunView } from '@memberjunction/core';\nimport { MJActionCategoryEntity, MJActionEntity, MJActionParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { ActionEngineBase, MJActionEntityExtended } from '@memberjunction/actions-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ViewToggleOption } from '@memberjunction/ng-ui-components';\nimport {\n ActionExplorerStateService,\n ActionViewMode,\n SortConfig,\n SortField,\n SortDirection,\n ActionFilters\n} from '../../services/action-explorer-state.service';\nimport { ActionTreePanelComponent } from './action-tree-panel.component';\n\ninterface SortOption {\n field: SortField;\n label: string;\n icon: string;\n}\n@RegisterClass(BaseResourceComponent, 'ActionExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-action-explorer',\n templateUrl: './action-explorer.component.html',\n styleUrls: ['./action-explorer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ActionExplorerStateService]\n})\nexport class ActionExplorerComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n @ViewChild(ActionTreePanelComponent) TreePanel!: ActionTreePanelComponent;\n\n public IsLoading = true;\n public Actions: MJActionEntityExtended[] = [];\n public FilteredActions: MJActionEntityExtended[] = [];\n public Categories: MJActionCategoryEntity[] = [];\n public CategoriesMap = new Map<string, MJActionCategoryEntity>();\n\n public ViewMode: ActionViewMode = 'card';\n public SortField: SortField = 'name';\n public SortDirection: SortDirection = 'asc';\n public Filters: ActionFilters = {\n searchTerm: '',\n statuses: [],\n types: [],\n approvalStatuses: [],\n hasExecutions: null\n };\n public ShowSortDropdown = false;\n\n public SelectedCategoryId = 'all';\n public NewCategoryParentId: string | null = null;\n\n // Run dialog state\n public IsRunDialogOpen = false;\n public SelectedActionForRun: MJActionEntity | null = null;\n public SelectedActionParams: MJActionParamEntity[] = [];\n\n // ───── Toolbar option arrays + helpers (consolidated from former mj-action-toolbar) ─────\n\n public readonly ViewToggleOptions: ViewToggleOption[] = [\n { key: 'card', icon: 'fa-solid fa-grip', title: 'Card view' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List view' },\n { key: 'compact', icon: 'fa-solid fa-bars', title: 'Compact view' }\n ];\n\n public readonly SortOptions: SortOption[] = [\n { field: 'name', label: 'Name', icon: 'fa-solid fa-font' },\n { field: 'updated', label: 'Last Updated', icon: 'fa-solid fa-clock' },\n { field: 'status', label: 'Status', icon: 'fa-solid fa-circle-check' },\n { field: 'type', label: 'Type', icon: 'fa-solid fa-tag' },\n { field: 'category', label: 'Category', icon: 'fa-solid fa-folder' }\n ];\n\n public readonly StatusOptions = [\n { value: 'Active', label: 'Active' },\n { value: 'Pending', label: 'Pending' },\n { value: 'Disabled', label: 'Disabled' }\n ];\n\n public readonly TypeOptions = [\n { value: 'Generated', label: 'AI Generated', icon: 'fa-solid fa-robot' },\n { value: 'Custom', label: 'Custom', icon: 'fa-solid fa-code' }\n ];\n\n protected override destroy$ = new Subject<void>();\n private searchInput$ = new Subject<string>();\n\n constructor(\n public StateService: ActionExplorerStateService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscribeToState();\n this.setupSearchDebounce();\n this.applyQueryParams(this.GetQueryParams());\n this.StateService.loadSavedState();\n this.loadData();\n }\n\n private setupSearchDebounce(): void {\n this.searchInput$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(term => {\n this.StateService.setSearchTerm(term);\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeToState(): void {\n // Subscribe to view mode changes\n this.StateService.ViewMode$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(mode => {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n });\n\n // Subscribe to selected category changes\n this.StateService.SelectedCategoryId$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(id => {\n this.SelectedCategoryId = id;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n\n // Subscribe to filter and sort changes\n this.StateService.Filters$.pipe(\n combineLatestWith(this.StateService.SortConfig$),\n debounceTime(50),\n takeUntil(this.destroy$)\n ).subscribe(([filters, sort]) => {\n this.Filters = filters;\n this.SortField = sort.field;\n this.SortDirection = sort.direction;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Convert the framework's plain-object params into the StateService's URLSearchParams-based parser.\n */\n private applyQueryParams(params: Record<string, string>): void {\n const urlParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n urlParams.set(key, value);\n }\n }\n this.StateService.parseQueryParams(urlParams);\n }\n\n private async loadData(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n // Initialize ActionEngineBase\n await ActionEngineBase.Instance.Config(false);\n\n // Get actions and categories from engine\n this.Actions = ActionEngineBase.Instance.Actions;\n this.Categories = ActionEngineBase.Instance.ActionCategories;\n\n // Build categories map\n this.CategoriesMap.clear();\n this.Categories.forEach(c => this.CategoriesMap.set(c.ID, c));\n\n // Build tree panel if available\n if (this.TreePanel) {\n this.TreePanel.Categories = this.Categories;\n this.TreePanel.Actions = this.Actions;\n this.TreePanel.buildCategoryTree();\n }\n\n // Apply filters\n this.applyFilters();\n\n // Expand path to selected category if needed\n if (this.SelectedCategoryId !== 'all' && this.SelectedCategoryId !== 'uncategorized') {\n const categoryParentMap = new Map<string, string | null>();\n this.Categories.forEach(c => categoryParentMap.set(c.ID, c.ParentID || null));\n this.StateService.expandPathToCategory(this.SelectedCategoryId, categoryParentMap);\n }\n\n } catch (error) {\n LogError('Failed to load action explorer data', undefined, error);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n this.NotifyLoadComplete();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Actions];\n const filters = this.StateService.Filters;\n const sortConfig = this.StateService.SortConfig;\n\n // Apply category filter\n if (this.SelectedCategoryId === 'uncategorized') {\n filtered = filtered.filter(a => !a.CategoryID);\n } else if (this.SelectedCategoryId !== 'all') {\n // Include descendants\n const descendants = this.getDescendantCategoryIds(this.SelectedCategoryId);\n filtered = filtered.filter(a => a.CategoryID && descendants.has(a.CategoryID));\n }\n\n // Apply search filter\n if (filters.searchTerm) {\n const term = filters.searchTerm.toLowerCase();\n filtered = filtered.filter(a =>\n a.Name.toLowerCase().includes(term) ||\n (a.Description || '').toLowerCase().includes(term)\n );\n }\n\n // Apply status filter\n if (filters.statuses.length > 0) {\n filtered = filtered.filter(a => filters.statuses.includes(a.Status));\n }\n\n // Apply type filter\n if (filters.types.length > 0) {\n filtered = filtered.filter(a => filters.types.includes(a.Type));\n }\n\n // Apply sorting\n filtered = this.sortActions(filtered, sortConfig);\n\n this.FilteredActions = filtered;\n }\n\n private getDescendantCategoryIds(categoryId: string): Set<string> {\n const descendants = new Set<string>([categoryId]);\n\n const addDescendants = (parentId: string) => {\n this.Categories.forEach(c => {\n if (UUIDsEqual(c.ParentID, parentId) && !descendants.has(c.ID)) {\n descendants.add(c.ID);\n addDescendants(c.ID);\n }\n });\n };\n\n addDescendants(categoryId);\n return descendants;\n }\n\n private sortActions(actions: MJActionEntityExtended[], config: SortConfig): MJActionEntityExtended[] {\n const sorted = [...actions];\n const direction = config.direction === 'asc' ? 1 : -1;\n\n sorted.sort((a, b) => {\n let comparison = 0;\n\n switch (config.field) {\n case 'name':\n comparison = a.Name.localeCompare(b.Name);\n break;\n case 'updated':\n const dateA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n const dateB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n comparison = dateA - dateB;\n break;\n case 'status':\n comparison = (a.Status || '').localeCompare(b.Status || '');\n break;\n case 'type':\n comparison = (a.Type || '').localeCompare(b.Type || '');\n break;\n case 'category':\n const catA = this.CategoriesMap.get(a.CategoryID || '')?.Name || '';\n const catB = this.CategoriesMap.get(b.CategoryID || '')?.Name || '';\n comparison = catA.localeCompare(catB);\n break;\n }\n\n return comparison * direction;\n });\n\n return sorted;\n }\n\n /**\n * React to back/forward navigation or deep-link activation.\n * Called by the base class when the URL query params change externally.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n this.applyQueryParams(params);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public async onRefresh(): Promise<void> {\n await ActionEngineBase.Instance.Config(true); // Force refresh\n await this.loadData();\n }\n\n public onCategorySelect(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public onNewCategory(parentId: string | null): void {\n this.NewCategoryParentId = parentId;\n this.StateService.openNewCategoryPanel();\n }\n\n public onEditCategory(category: MJActionCategoryEntity): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: category.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Action Categories', key);\n }\n\n public onNewAction(): void {\n this.StateService.openNewActionPanel();\n }\n\n public onActionClick(action: MJActionEntityExtended): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: action.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Actions', key);\n }\n\n public onActionEdit(action: MJActionEntityExtended): void {\n this.onActionClick(action);\n }\n\n public async onActionRun(action: MJActionEntityExtended): Promise<void> {\n if (action.Status !== 'Active') {\n return; // Can't run inactive actions\n }\n\n try {\n // Load action params\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJActionParamEntity>({\n EntityName: 'MJ: Action Params',\n ExtraFilter: `ActionID='${action.ID}'`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n this.SelectedActionParams = result.Success ? result.Results || [] : [];\n // MJActionEntityExtended extends MJActionEntity, so this cast is safe\n this.SelectedActionForRun = action as unknown as MJActionEntity;\n this.IsRunDialogOpen = true;\n this.cdr.markForCheck();\n\n } catch (error) {\n LogError('Failed to open action run dialog', undefined, error);\n }\n }\n\n public OnRunDialogClose(): void {\n this.IsRunDialogOpen = false;\n this.SelectedActionForRun = null;\n this.SelectedActionParams = [];\n this.cdr.markForCheck();\n }\n\n public onCategoryClick(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public async onCategoryCreated(category: MJActionCategoryEntity): Promise<void> {\n // Refresh data to include new category\n await this.loadData();\n // Select the new category\n this.StateService.setSelectedCategoryId(category.ID);\n }\n\n public async onActionCreated(): Promise<void> {\n // Refresh data to include new action\n await this.loadData();\n }\n\n // ───── Toolbar handlers (consolidated from former mj-action-toolbar) ─────\n\n public onSearchInput(term: string): void {\n this.searchInput$.next(term);\n }\n\n public clearSearch(): void {\n this.StateService.setSearchTerm('');\n }\n\n public setViewMode(mode: ActionViewMode): void {\n this.StateService.setViewMode(mode);\n }\n\n public setSortField(field: SortField): void {\n this.StateService.setSortField(field);\n this.ShowSortDropdown = false;\n }\n\n public toggleStatus(status: string): void {\n const current = [...this.Filters.statuses];\n const i = current.indexOf(status);\n if (i >= 0) current.splice(i, 1);\n else current.push(status);\n this.StateService.setStatusFilter(current);\n }\n\n public toggleType(type: string): void {\n const current = [...this.Filters.types];\n const i = current.indexOf(type);\n if (i >= 0) current.splice(i, 1);\n else current.push(type);\n this.StateService.setTypeFilter(current);\n }\n\n public isStatusSelected(status: string): boolean {\n return this.Filters.statuses.includes(status);\n }\n\n public isTypeSelected(type: string): boolean {\n return this.Filters.types.includes(type);\n }\n\n public clearFilters(): void {\n this.StateService.clearFilters();\n }\n\n public hasActiveFilters(): boolean {\n return this.StateService.hasActiveFilters();\n }\n\n /** Active filter count for the popover badge — counts only Status + Type\n * (searchTerm has its own search input, not part of the popover). */\n public get StatusTypeFilterCount(): number {\n return this.Filters.statuses.length + this.Filters.types.length;\n }\n\n public toggleSortDropdown(): void {\n this.ShowSortDropdown = !this.ShowSortDropdown;\n }\n\n public getSortLabel(): string {\n const option = this.SortOptions.find(o => o.field === this.SortField);\n return option?.label || 'Sort';\n }\n\n public getSortIcon(): string {\n return this.SortDirection === 'asc' ? 'fa-solid fa-arrow-up-short-wide' : 'fa-solid fa-arrow-down-wide-short';\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Action Explorer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-tree';\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Action Explorer\"\n Icon=\"fa-solid fa-folder-tree\"\n Subtitle=\"Browse, organize, and run all configured actions\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredActions.length\"\n [Total]=\"Actions.length\"\n Label=\"actions\">\n </mj-stat-badge>\n </div>\n <div actions>\n <!-- Filters popover (shared trigger + popover chrome; multi-select checkbox content stays bespoke) -->\n <mj-filter-popover\n [ActiveCount]=\"StatusTypeFilterCount\"\n [ShowClearAll]=\"StatusTypeFilterCount > 0\"\n (ClearAllRequested)=\"clearFilters()\">\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Status</span>\n @if (Filters.statuses.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setStatusFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (status of StatusOptions; track status.value) {\n <label class=\"filter-option\" [class.selected]=\"isStatusSelected(status.value)\">\n <input type=\"checkbox\"\n [checked]=\"isStatusSelected(status.value)\"\n (change)=\"toggleStatus(status.value)\">\n <span class=\"status-dot\" [attr.data-status]=\"status.value\"></span>\n {{ status.label }}\n </label>\n }\n </div>\n </div>\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Type</span>\n @if (Filters.types.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setTypeFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (type of TypeOptions; track type.value) {\n <label class=\"filter-option\" [class.selected]=\"isTypeSelected(type.value)\">\n <input type=\"checkbox\"\n [checked]=\"isTypeSelected(type.value)\"\n (change)=\"toggleType(type.value)\">\n <i [class]=\"type.icon\"></i>\n {{ type.label }}\n </label>\n }\n </div>\n </div>\n </mj-filter-popover>\n\n <!-- Sort Dropdown (bespoke — no shared sort component yet) -->\n <div class=\"dropdown-container\" (clickOutside)=\"ShowSortDropdown = false\">\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"toggleSortDropdown()\">\n <i [class]=\"getSortIcon()\"></i> {{ getSortLabel() }}\n <i [class]=\"ShowSortDropdown ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n @if (ShowSortDropdown) {\n <div class=\"dropdown-menu sort-menu\">\n @for (option of SortOptions; track option.field) {\n <button class=\"sort-option\"\n [class.selected]=\"SortField === option.field\"\n (click)=\"setSortField(option.field)\">\n <i [class]=\"option.icon\"></i>\n {{ option.label }}\n @if (SortField === option.field) {\n <i [class]=\"SortDirection === 'asc' ? 'fa-solid fa-arrow-up' : 'fa-solid fa-arrow-down'\" class=\"direction-icon\"></i>\n }\n </button>\n }\n </div>\n }\n </div>\n\n <mj-view-toggle\n [Options]=\"ViewToggleOptions\"\n [ActiveKey]=\"ViewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n\n <mj-refresh-button (Clicked)=\"onRefresh()\"></mj-refresh-button>\n\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i> New Action\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search actions...\"\n [Value]=\"Filters.searchTerm\"\n (ValueChange)=\"onSearchInput($event)\">\n </mj-page-search>\n @if (hasActiveFilters()) {\n <div class=\"active-filters\">\n @for (status of Filters.statuses; track status) {\n <span class=\"status-chip removable\" (click)=\"toggleStatus(status)\">\n Status: {{ status }} <i class=\"fa-solid fa-times\"></i>\n </span>\n }\n @for (type of Filters.types; track type) {\n <span class=\"status-chip removable\" (click)=\"toggleType(type)\">\n Type: {{ type === 'Generated' ? 'AI Generated' : type }} <i class=\"fa-solid fa-times\"></i>\n </span>\n }\n </div>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<div class=\"action-explorer\">\n <!-- Full-page Loading Overlay -->\n @if (IsLoading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading actions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Tree Panel (Left Sidebar) -->\n <mj-action-tree-panel\n [Categories]=\"Categories\"\n [Actions]=\"Actions\"\n (CategorySelected)=\"onCategorySelect($event)\"\n (NewCategoryClick)=\"onNewCategory($event)\"\n (EditCategoryClick)=\"onEditCategory($event)\">\n </mj-action-tree-panel>\n\n <!-- Main Content Area -->\n <div class=\"explorer-main\">\n <!-- Breadcrumb -->\n <mj-action-breadcrumb\n [SelectedCategoryId]=\"SelectedCategoryId\"\n [Categories]=\"Categories\"\n (CategorySelect)=\"onCategorySelect($event)\">\n </mj-action-breadcrumb>\n\n <!-- Content Area -->\n <div class=\"explorer-content\">\n @if (FilteredActions.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n @if (StateService.hasActiveFilters() || SelectedCategoryId !== 'all') {\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n <h3>No actions match your filters</h3>\n <p>Try adjusting your search or filter criteria</p>\n <button mjButton\n variant=\"outline\"\n (click)=\"StateService.clearFilters(); StateService.setSelectedCategoryId('all')\">\n <i class=\"fa-solid fa-times\"></i>\n Clear All Filters\n </button>\n } @else {\n <i class=\"fa-solid fa-bolt\"></i>\n <h3>No actions yet</h3>\n <p>Create your first action to get started</p>\n <button mjButton\n variant=\"primary\"\n (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Action\n </button>\n }\n </div>\n } @else {\n <!-- Card View -->\n @if (ViewMode === 'card') {\n <div class=\"card-grid\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-card\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-card>\n }\n </div>\n }\n\n <!-- List View -->\n @if (ViewMode === 'list') {\n <div class=\"list-view\">\n <div class=\"list-header\">\n <div class=\"header-icon\"></div>\n <div class=\"header-name\">Name</div>\n <div class=\"header-category\">Category</div>\n <div class=\"header-status\">Status</div>\n <div class=\"header-type\">Type</div>\n <div class=\"header-params\">Params</div>\n <div class=\"header-updated\">Updated</div>\n <div class=\"header-actions\"></div>\n </div>\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"false\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n\n <!-- Compact View -->\n @if (ViewMode === 'compact') {\n <div class=\"compact-view\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"true\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Slide-in Panels -->\n <mj-new-category-panel\n [Categories]=\"Categories\"\n [PreselectedParentId]=\"NewCategoryParentId\"\n (CategoryCreated)=\"onCategoryCreated($event)\"\n (Close)=\"NewCategoryParentId = null\">\n </mj-new-category-panel>\n\n <mj-new-action-panel\n [Categories]=\"Categories\"\n (ActionCreated)=\"onActionCreated()\">\n </mj-new-action-panel>\n\n <!-- Action Run Dialog -->\n @if (SelectedActionForRun) {\n <mj-action-test-harness-dialog\n [Action]=\"SelectedActionForRun\"\n [ActionParams]=\"SelectedActionParams\"\n [IsOpen]=\"IsRunDialogOpen\"\n (Close)=\"OnRunDialogClose()\">\n </mj-action-test-harness-dialog>\n }\n</div>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
1
|
+
{"version":3,"file":"action-explorer.component.js","sourceRoot":"","sources":["../../../../src/Actions/components/explorer/action-explorer.component.ts","../../../../src/Actions/components/explorer/action-explorer.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged, combineLatestWith } from 'rxjs/operators';\nimport { CompositeKey, LogError, RunView } from '@memberjunction/core';\nimport { MJActionCategoryEntity, MJActionEntity, MJActionParamEntity, ResourceData } from '@memberjunction/core-entities';\nimport { ActionEngineBase, MJActionEntityExtended } from '@memberjunction/actions-base';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { ViewToggleOption } from '@memberjunction/ng-ui-components';\nimport {\n ActionExplorerStateService,\n ActionViewMode,\n SortConfig,\n SortField,\n SortDirection,\n ActionFilters\n} from '../../services/action-explorer-state.service';\nimport { ActionTreePanelComponent } from './action-tree-panel.component';\n\ninterface SortOption {\n field: SortField;\n label: string;\n icon: string;\n}\n@RegisterClass(BaseResourceComponent, 'ActionExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-action-explorer',\n templateUrl: './action-explorer.component.html',\n styleUrls: ['./action-explorer.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ActionExplorerStateService]\n})\nexport class ActionExplorerComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n @ViewChild(ActionTreePanelComponent) TreePanel!: ActionTreePanelComponent;\n\n public IsLoading = true;\n public Actions: MJActionEntityExtended[] = [];\n public FilteredActions: MJActionEntityExtended[] = [];\n public Categories: MJActionCategoryEntity[] = [];\n public CategoriesMap = new Map<string, MJActionCategoryEntity>();\n\n public ViewMode: ActionViewMode = 'card';\n public SortField: SortField = 'name';\n public SortDirection: SortDirection = 'asc';\n public Filters: ActionFilters = {\n searchTerm: '',\n statuses: [],\n types: [],\n approvalStatuses: [],\n hasExecutions: null\n };\n\n public SelectedCategoryId = 'all';\n public NewCategoryParentId: string | null = null;\n\n // Run dialog state\n public IsRunDialogOpen = false;\n public SelectedActionForRun: MJActionEntity | null = null;\n public SelectedActionParams: MJActionParamEntity[] = [];\n\n // ───── Toolbar option arrays + helpers (consolidated from former mj-action-toolbar) ─────\n\n public readonly ViewToggleOptions: ViewToggleOption[] = [\n { key: 'card', icon: 'fa-solid fa-grip', title: 'Card view' },\n { key: 'list', icon: 'fa-solid fa-list', title: 'List view' },\n { key: 'compact', icon: 'fa-solid fa-bars', title: 'Compact view' }\n ];\n\n public readonly SortOptions: SortOption[] = [\n { field: 'name', label: 'Name', icon: 'fa-solid fa-font' },\n { field: 'updated', label: 'Last Updated', icon: 'fa-solid fa-clock' },\n { field: 'status', label: 'Status', icon: 'fa-solid fa-circle-check' },\n { field: 'type', label: 'Type', icon: 'fa-solid fa-tag' },\n { field: 'category', label: 'Category', icon: 'fa-solid fa-folder' }\n ];\n\n public readonly StatusOptions = [\n { value: 'Active', label: 'Active' },\n { value: 'Pending', label: 'Pending' },\n { value: 'Disabled', label: 'Disabled' }\n ];\n\n public readonly TypeOptions = [\n { value: 'Generated', label: 'AI Generated', icon: 'fa-solid fa-robot' },\n { value: 'Custom', label: 'Custom', icon: 'fa-solid fa-code' }\n ];\n\n protected override destroy$ = new Subject<void>();\n private searchInput$ = new Subject<string>();\n\n constructor(\n public StateService: ActionExplorerStateService,\n private cdr: ChangeDetectorRef\n ) {\n super();\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.subscribeToState();\n this.setupSearchDebounce();\n this.applyQueryParams(this.GetQueryParams());\n this.StateService.loadSavedState();\n this.loadData();\n }\n\n private setupSearchDebounce(): void {\n this.searchInput$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n ).subscribe(term => {\n this.StateService.setSearchTerm(term);\n });\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeToState(): void {\n // Subscribe to view mode changes\n this.StateService.ViewMode$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(mode => {\n this.ViewMode = mode;\n this.cdr.markForCheck();\n });\n\n // Subscribe to selected category changes\n this.StateService.SelectedCategoryId$.pipe(\n takeUntil(this.destroy$)\n ).subscribe(id => {\n this.SelectedCategoryId = id;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n\n // Subscribe to filter and sort changes\n this.StateService.Filters$.pipe(\n combineLatestWith(this.StateService.SortConfig$),\n debounceTime(50),\n takeUntil(this.destroy$)\n ).subscribe(([filters, sort]) => {\n this.Filters = filters;\n this.SortField = sort.field;\n this.SortDirection = sort.direction;\n this.applyFilters();\n this.UpdateQueryParams(this.StateService.buildQueryParams());\n this.cdr.markForCheck();\n });\n }\n\n /**\n * Convert the framework's plain-object params into the StateService's URLSearchParams-based parser.\n */\n private applyQueryParams(params: Record<string, string>): void {\n const urlParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value != null) {\n urlParams.set(key, value);\n }\n }\n this.StateService.parseQueryParams(urlParams);\n }\n\n private async loadData(): Promise<void> {\n try {\n this.IsLoading = true;\n this.cdr.markForCheck();\n\n // Initialize ActionEngineBase\n await ActionEngineBase.Instance.Config(false);\n\n // Get actions and categories from engine\n this.Actions = ActionEngineBase.Instance.Actions;\n this.Categories = ActionEngineBase.Instance.ActionCategories;\n\n // Build categories map\n this.CategoriesMap.clear();\n this.Categories.forEach(c => this.CategoriesMap.set(c.ID, c));\n\n // Build tree panel if available\n if (this.TreePanel) {\n this.TreePanel.Categories = this.Categories;\n this.TreePanel.Actions = this.Actions;\n this.TreePanel.buildCategoryTree();\n }\n\n // Apply filters\n this.applyFilters();\n\n // Expand path to selected category if needed\n if (this.SelectedCategoryId !== 'all' && this.SelectedCategoryId !== 'uncategorized') {\n const categoryParentMap = new Map<string, string | null>();\n this.Categories.forEach(c => categoryParentMap.set(c.ID, c.ParentID || null));\n this.StateService.expandPathToCategory(this.SelectedCategoryId, categoryParentMap);\n }\n\n } catch (error) {\n LogError('Failed to load action explorer data', undefined, error);\n } finally {\n this.IsLoading = false;\n this.cdr.markForCheck();\n this.NotifyLoadComplete();\n }\n }\n\n private applyFilters(): void {\n let filtered = [...this.Actions];\n const filters = this.StateService.Filters;\n const sortConfig = this.StateService.SortConfig;\n\n // Apply category filter\n if (this.SelectedCategoryId === 'uncategorized') {\n filtered = filtered.filter(a => !a.CategoryID);\n } else if (this.SelectedCategoryId !== 'all') {\n // Include descendants\n const descendants = this.getDescendantCategoryIds(this.SelectedCategoryId);\n filtered = filtered.filter(a => a.CategoryID && descendants.has(a.CategoryID));\n }\n\n // Apply search filter\n if (filters.searchTerm) {\n const term = filters.searchTerm.toLowerCase();\n filtered = filtered.filter(a =>\n a.Name.toLowerCase().includes(term) ||\n (a.Description || '').toLowerCase().includes(term)\n );\n }\n\n // Apply status filter\n if (filters.statuses.length > 0) {\n filtered = filtered.filter(a => filters.statuses.includes(a.Status));\n }\n\n // Apply type filter\n if (filters.types.length > 0) {\n filtered = filtered.filter(a => filters.types.includes(a.Type));\n }\n\n // Apply sorting\n filtered = this.sortActions(filtered, sortConfig);\n\n this.FilteredActions = filtered;\n }\n\n private getDescendantCategoryIds(categoryId: string): Set<string> {\n const descendants = new Set<string>([categoryId]);\n\n const addDescendants = (parentId: string) => {\n this.Categories.forEach(c => {\n if (UUIDsEqual(c.ParentID, parentId) && !descendants.has(c.ID)) {\n descendants.add(c.ID);\n addDescendants(c.ID);\n }\n });\n };\n\n addDescendants(categoryId);\n return descendants;\n }\n\n private sortActions(actions: MJActionEntityExtended[], config: SortConfig): MJActionEntityExtended[] {\n const sorted = [...actions];\n const direction = config.direction === 'asc' ? 1 : -1;\n\n sorted.sort((a, b) => {\n let comparison = 0;\n\n switch (config.field) {\n case 'name':\n comparison = a.Name.localeCompare(b.Name);\n break;\n case 'updated':\n const dateA = a.__mj_UpdatedAt ? new Date(a.__mj_UpdatedAt).getTime() : 0;\n const dateB = b.__mj_UpdatedAt ? new Date(b.__mj_UpdatedAt).getTime() : 0;\n comparison = dateA - dateB;\n break;\n case 'status':\n comparison = (a.Status || '').localeCompare(b.Status || '');\n break;\n case 'type':\n comparison = (a.Type || '').localeCompare(b.Type || '');\n break;\n case 'category':\n const catA = this.CategoriesMap.get(a.CategoryID || '')?.Name || '';\n const catB = this.CategoriesMap.get(b.CategoryID || '')?.Name || '';\n comparison = catA.localeCompare(catB);\n break;\n }\n\n return comparison * direction;\n });\n\n return sorted;\n }\n\n /**\n * React to back/forward navigation or deep-link activation.\n * Called by the base class when the URL query params change externally.\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n this.applyQueryParams(params);\n this.applyFilters();\n this.cdr.markForCheck();\n }\n\n public async onRefresh(): Promise<void> {\n await ActionEngineBase.Instance.Config(true); // Force refresh\n await this.loadData();\n }\n\n public onCategorySelect(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public onNewCategory(parentId: string | null): void {\n this.NewCategoryParentId = parentId;\n this.StateService.openNewCategoryPanel();\n }\n\n public onEditCategory(category: MJActionCategoryEntity): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: category.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Action Categories', key);\n }\n\n public onNewAction(): void {\n this.StateService.openNewActionPanel();\n }\n\n public onActionClick(action: MJActionEntityExtended): void {\n const key = new CompositeKey([{ FieldName: 'ID', Value: action.ID }]);\n this.navigationService.OpenEntityRecord('MJ: Actions', key);\n }\n\n public onActionEdit(action: MJActionEntityExtended): void {\n this.onActionClick(action);\n }\n\n public async onActionRun(action: MJActionEntityExtended): Promise<void> {\n if (action.Status !== 'Active') {\n return; // Can't run inactive actions\n }\n\n try {\n // Load action params\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJActionParamEntity>({\n EntityName: 'MJ: Action Params',\n ExtraFilter: `ActionID='${action.ID}'`,\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n\n this.SelectedActionParams = result.Success ? result.Results || [] : [];\n // MJActionEntityExtended extends MJActionEntity, so this cast is safe\n this.SelectedActionForRun = action as unknown as MJActionEntity;\n this.IsRunDialogOpen = true;\n this.cdr.markForCheck();\n\n } catch (error) {\n LogError('Failed to open action run dialog', undefined, error);\n }\n }\n\n public OnRunDialogClose(): void {\n this.IsRunDialogOpen = false;\n this.SelectedActionForRun = null;\n this.SelectedActionParams = [];\n this.cdr.markForCheck();\n }\n\n public onCategoryClick(categoryId: string): void {\n this.StateService.setSelectedCategoryId(categoryId);\n }\n\n public async onCategoryCreated(category: MJActionCategoryEntity): Promise<void> {\n // Refresh data to include new category\n await this.loadData();\n // Select the new category\n this.StateService.setSelectedCategoryId(category.ID);\n }\n\n public async onActionCreated(): Promise<void> {\n // Refresh data to include new action\n await this.loadData();\n }\n\n // ───── Toolbar handlers (consolidated from former mj-action-toolbar) ─────\n\n public onSearchInput(term: string): void {\n this.searchInput$.next(term);\n }\n\n public clearSearch(): void {\n this.StateService.setSearchTerm('');\n }\n\n public setViewMode(mode: ActionViewMode): void {\n this.StateService.setViewMode(mode);\n }\n\n public setSortField(field: SortField): void {\n this.StateService.setSortField(field);\n }\n\n public toggleStatus(status: string): void {\n const current = [...this.Filters.statuses];\n const i = current.indexOf(status);\n if (i >= 0) current.splice(i, 1);\n else current.push(status);\n this.StateService.setStatusFilter(current);\n }\n\n public toggleType(type: string): void {\n const current = [...this.Filters.types];\n const i = current.indexOf(type);\n if (i >= 0) current.splice(i, 1);\n else current.push(type);\n this.StateService.setTypeFilter(current);\n }\n\n public isStatusSelected(status: string): boolean {\n return this.Filters.statuses.includes(status);\n }\n\n public isTypeSelected(type: string): boolean {\n return this.Filters.types.includes(type);\n }\n\n public clearFilters(): void {\n this.StateService.clearFilters();\n }\n\n /** Active filter count for the popover badge — counts only Status + Type\n * (searchTerm has its own search input, not part of the popover). */\n public get StatusTypeFilterCount(): number {\n return this.Filters.statuses.length + this.Filters.types.length;\n }\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return 'Action Explorer';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-folder-tree';\n }\n}\n","<mj-page-layout>\n <mj-page-header\n Title=\"Action Explorer\"\n Icon=\"fa-solid fa-folder-tree\"\n Subtitle=\"Browse, organize, and run all configured actions\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredActions.length\"\n [Total]=\"Actions.length\"\n Label=\"actions\">\n </mj-stat-badge>\n </div>\n <div actions>\n <!-- Verbs only per §3: secondary Refresh + the one primary CTA (rightmost). -->\n <mj-refresh-button (Clicked)=\"onRefresh()\"></mj-refresh-button>\n\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onNewAction()\" title=\"New Action\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"action-btn-label\">New Action</span>\n </button>\n </div>\n <div toolbar>\n <!-- Control bar per §3: search · Filter (Status/Type/Sort) · view. -->\n <mj-page-search\n Placeholder=\"Search actions...\"\n [Value]=\"Filters.searchTerm\"\n (ValueChange)=\"onSearchInput($event)\">\n </mj-page-search>\n\n <!-- Filters popover (shared trigger + popover chrome; multi-select checkbox content stays bespoke) -->\n <mj-filter-popover\n [ActiveCount]=\"StatusTypeFilterCount\"\n [ShowClearAll]=\"StatusTypeFilterCount > 0\"\n (ClearAllRequested)=\"clearFilters()\">\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Status</span>\n @if (Filters.statuses.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setStatusFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (status of StatusOptions; track status.value) {\n <label class=\"filter-option\" [class.selected]=\"isStatusSelected(status.value)\">\n <input type=\"checkbox\"\n [checked]=\"isStatusSelected(status.value)\"\n (change)=\"toggleStatus(status.value)\">\n <span class=\"status-dot\" [attr.data-status]=\"status.value\"></span>\n {{ status.label }}\n </label>\n }\n </div>\n </div>\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <span>Type</span>\n @if (Filters.types.length > 0) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"StateService.setTypeFilter([])\">Clear</button>\n }\n </div>\n <div class=\"filter-options\">\n @for (type of TypeOptions; track type.value) {\n <label class=\"filter-option\" [class.selected]=\"isTypeSelected(type.value)\">\n <input type=\"checkbox\"\n [checked]=\"isTypeSelected(type.value)\"\n (change)=\"toggleType(type.value)\">\n <i [class]=\"type.icon\"></i>\n {{ type.label }}\n </label>\n }\n </div>\n </div>\n <!-- Sort lives inside the Filters popover (was a standalone dropdown). -->\n <div class=\"dropdown-section\">\n <div class=\"section-header\"><span>Sort</span></div>\n <div class=\"filter-options\">\n @for (option of SortOptions; track option.field) {\n <button class=\"sort-option\"\n [class.selected]=\"SortField === option.field\"\n (click)=\"setSortField(option.field)\">\n <i [class]=\"option.icon\"></i>\n {{ option.label }}\n @if (SortField === option.field) {\n <i [class]=\"SortDirection === 'asc' ? 'fa-solid fa-arrow-up' : 'fa-solid fa-arrow-down'\" class=\"direction-icon\"></i>\n }\n </button>\n }\n </div>\n </div>\n </mj-filter-popover>\n\n <mj-view-toggle\n [Options]=\"ViewToggleOptions\"\n [ActiveKey]=\"ViewMode\"\n (KeyChange)=\"setViewMode($any($event))\">\n </mj-view-toggle>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\">\n<div class=\"action-explorer\">\n <!-- Full-page Loading Overlay -->\n @if (IsLoading) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Loading actions...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Tree Panel (Left Sidebar) -->\n <mj-action-tree-panel\n [Categories]=\"Categories\"\n [Actions]=\"Actions\"\n (CategorySelected)=\"onCategorySelect($event)\"\n (NewCategoryClick)=\"onNewCategory($event)\"\n (EditCategoryClick)=\"onEditCategory($event)\">\n </mj-action-tree-panel>\n\n <!-- Main Content Area -->\n <div class=\"explorer-main\">\n <!-- Breadcrumb -->\n <mj-action-breadcrumb\n [SelectedCategoryId]=\"SelectedCategoryId\"\n [Categories]=\"Categories\"\n (CategorySelect)=\"onCategorySelect($event)\">\n </mj-action-breadcrumb>\n\n <!-- Content Area -->\n <div class=\"explorer-content\">\n @if (FilteredActions.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n @if (StateService.hasActiveFilters() || SelectedCategoryId !== 'all') {\n <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n <h3>No actions match your filters</h3>\n <p>Try adjusting your search or filter criteria</p>\n <button mjButton\n variant=\"outline\"\n (click)=\"StateService.clearFilters(); StateService.setSelectedCategoryId('all')\">\n <i class=\"fa-solid fa-times\"></i>\n Clear All Filters\n </button>\n } @else {\n <i class=\"fa-solid fa-bolt\"></i>\n <h3>No actions yet</h3>\n <p>Create your first action to get started</p>\n <button mjButton\n variant=\"primary\"\n (click)=\"onNewAction()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Action\n </button>\n }\n </div>\n } @else {\n <!-- Card View -->\n @if (ViewMode === 'card') {\n <div class=\"card-grid\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-card\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-card>\n }\n </div>\n }\n\n <!-- List View -->\n @if (ViewMode === 'list') {\n <div class=\"list-view\">\n <div class=\"list-header\">\n <div class=\"header-icon\"></div>\n <div class=\"header-name\">Name</div>\n <div class=\"header-category\">Category</div>\n <div class=\"header-status\">Status</div>\n <div class=\"header-type\">Type</div>\n <div class=\"header-params\">Params</div>\n <div class=\"header-updated\">Updated</div>\n <div class=\"header-actions\"></div>\n </div>\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"false\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n\n <!-- Compact View -->\n @if (ViewMode === 'compact') {\n <div class=\"compact-view\">\n @for (action of FilteredActions; track action.ID) {\n <mj-action-list-item\n [Action]=\"action\"\n [Categories]=\"CategoriesMap\"\n [IsCompact]=\"true\"\n (ActionClick)=\"onActionClick($event)\"\n (EditClick)=\"onActionEdit($event)\"\n (RunClick)=\"onActionRun($event)\"\n (CategoryClick)=\"onCategoryClick($event)\">\n </mj-action-list-item>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Slide-in Panels -->\n <mj-new-category-panel\n [Categories]=\"Categories\"\n [PreselectedParentId]=\"NewCategoryParentId\"\n (CategoryCreated)=\"onCategoryCreated($event)\"\n (Close)=\"NewCategoryParentId = null\">\n </mj-new-category-panel>\n\n <mj-new-action-panel\n [Categories]=\"Categories\"\n (ActionCreated)=\"onActionCreated()\">\n </mj-new-action-panel>\n\n <!-- Action Run Dialog -->\n @if (SelectedActionForRun) {\n <mj-action-test-harness-dialog\n [Action]=\"SelectedActionForRun\"\n [ActionParams]=\"SelectedActionParams\"\n [IsOpen]=\"IsRunDialogOpen\"\n (Close)=\"OnRunDialogClose()\">\n </mj-action-test-harness-dialog>\n }\n</div>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -43,7 +43,7 @@ let AdminDataSchemaComponent = class AdminDataSchemaComponent extends BaseAdminC
|
|
|
43
43
|
}
|
|
44
44
|
];
|
|
45
45
|
static ɵfac = /*@__PURE__*/ (() => { let ɵAdminDataSchemaComponent_BaseFactory; return function AdminDataSchemaComponent_Factory(__ngFactoryType__) { return (ɵAdminDataSchemaComponent_BaseFactory || (ɵAdminDataSchemaComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminDataSchemaComponent)))(__ngFactoryType__ || AdminDataSchemaComponent); }; })();
|
|
46
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDataSchemaComponent, selectors: [["mj-admin-data-schema"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDataSchemaComponent_Template(rf, ctx) { if (rf & 1) {
|
|
46
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDataSchemaComponent, selectors: [["mj-admin-data-schema"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], ["MobileTitle", "Administration", 3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDataSchemaComponent_Template(rf, ctx) { if (rf & 1) {
|
|
47
47
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
48
48
|
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
49
49
|
i0.ɵɵelement(1, "mj-page-header", 1);
|
|
@@ -70,7 +70,7 @@ AdminDataSchemaComponent = __decorate([
|
|
|
70
70
|
export { AdminDataSchemaComponent };
|
|
71
71
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminDataSchemaComponent, [{
|
|
72
72
|
type: Component,
|
|
73
|
-
args: [{ standalone: false, selector: 'mj-admin-data-schema', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
73
|
+
args: [{ standalone: false, selector: 'mj-admin-data-schema', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
74
74
|
}], null, null); })();
|
|
75
75
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminDataSchemaComponent, { className: "AdminDataSchemaComponent", filePath: "src/Admin/admin-data-schema.component.ts", lineNumber: 18 }); })();
|
|
76
76
|
//# sourceMappingURL=admin-data-schema.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-data-schema.component.js","sourceRoot":"","sources":["../../src/Admin/admin-data-schema.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;;GAIG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,eAAe,CAAC;IACjC,aAAa,GAAG,sBAAsB,CAAC;IACvC,iBAAiB,GAAG,oDAAoD,CAAC;IAEzE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;SACtD;QACD;YACI,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACpE;QACD;YACI,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;KACJ,CAAC;6QA3BO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;;YCjBrC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,
|
|
1
|
+
{"version":3,"file":"admin-data-schema.component.js","sourceRoot":"","sources":["../../src/Admin/admin-data-schema.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;;GAIG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,eAAe,CAAC;IACjC,aAAa,GAAG,sBAAsB,CAAC;IACvC,iBAAiB,GAAG,oDAAoD,CAAC;IAEzE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE;SACtD;QACD;YACI,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,8BAA8B;YACpC,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,sBAAsB,EAAE;SACpE;QACD;YACI,EAAE,EAAE,mBAAmB;YACvB,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,iCAAiC;YACvC,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;KACJ,CAAC;6QA3BO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;;YCjBrC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,qBAKb;YAAzC,kKAAe,4BAAwB,KAAC;YAC5C,iBAAc;YACd,8CAA+D;YAC3D,iCAA0C;YAGtD,AADI,AADI,iBAAsB,EACX,EACF;;YAhBT,cAAwB;YAExB,AADA,AADA,0CAAwB,2BACF,mCACQ;YAGpB,cAAa;YAAC,AAAd,2BAAa,kBAAkB;YAGrC,cAAwB;YACxB,AADA,0CAAwB,+BACE;YAGT,cAAqB;YAAC,AAAtB,uCAAqB,wBAAoB;;;ADGzD,wBAAwB;IAPpC,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;GAO3C,wBAAwB,CA4BpC;;iFA5BY,wBAAwB;cANpC,SAAS;6BACM,KAAK,YACP,sBAAsB;;kFAIvB,wBAAwB","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Data & Schema. ERD viewer, query browser, and the database\n * designer wizard. Order matters here: ERD first (overview), then Query\n * Browser (read), then Database Designer (write).\n */\n@RegisterClass(BaseResourceComponent, 'AdminDataSchema')\n@Component({\n standalone: false,\n selector: 'mj-admin-data-schema',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminDataSchemaComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Data & Schema';\n public readonly ContainerIcon = 'fa-solid fa-database';\n public readonly ContainerSubtitle = 'Schema visualization, queries, and database design';\n\n public readonly Sections: AdminSection[] = [\n {\n id: 'erd',\n label: 'ERD',\n icon: 'fa-solid fa-diagram-project',\n description: 'Entity-relationship diagram',\n source: { kind: 'dashboard', dashboardName: 'ERD' }\n },\n {\n id: 'query-browser',\n label: 'Query Browser',\n icon: 'fa-solid fa-magnifying-glass',\n description: 'Browse and run stored queries',\n source: { kind: 'resource', driverClass: 'QueryBrowserResource' }\n },\n {\n id: 'database-designer',\n label: 'Database Designer',\n icon: 'fa-solid fa-wand-magic-sparkles',\n description: 'Create entities and fields',\n source: { kind: 'resource', driverClass: 'DatabaseDesignerDashboard' }\n }\n ];\n}\n","<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -69,7 +69,7 @@ let AdminDevToolsResourceComponent = class AdminDevToolsResourceComponent extend
|
|
|
69
69
|
}
|
|
70
70
|
];
|
|
71
71
|
static ɵfac = /*@__PURE__*/ (() => { let ɵAdminDevToolsResourceComponent_BaseFactory; return function AdminDevToolsResourceComponent_Factory(__ngFactoryType__) { return (ɵAdminDevToolsResourceComponent_BaseFactory || (ɵAdminDevToolsResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminDevToolsResourceComponent)))(__ngFactoryType__ || AdminDevToolsResourceComponent); }; })();
|
|
72
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDevToolsResourceComponent, selectors: [["mj-admin-dev-tools-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDevToolsResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminDevToolsResourceComponent, selectors: [["mj-admin-dev-tools-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], ["MobileTitle", "Administration", 3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminDevToolsResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
73
73
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
74
74
|
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
75
75
|
i0.ɵɵelement(1, "mj-page-header", 1);
|
|
@@ -96,7 +96,7 @@ AdminDevToolsResourceComponent = __decorate([
|
|
|
96
96
|
export { AdminDevToolsResourceComponent };
|
|
97
97
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminDevToolsResourceComponent, [{
|
|
98
98
|
type: Component,
|
|
99
|
-
args: [{ standalone: false, selector: 'mj-admin-dev-tools-resource', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
99
|
+
args: [{ standalone: false, selector: 'mj-admin-dev-tools-resource', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
100
100
|
}], null, null); })();
|
|
101
101
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminDevToolsResourceComponent, { className: "AdminDevToolsResourceComponent", filePath: "src/Admin/admin-dev-tools-resource.component.ts", lineNumber: 16 }); })();
|
|
102
102
|
//# sourceMappingURL=admin-dev-tools-resource.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-dev-tools-resource.component.js","sourceRoot":"","sources":["../../src/Admin/admin-dev-tools-resource.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;GAEG;AAQI,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,2BAA2B;IAC3D,cAAc,GAAG,iBAAiB,CAAC;IACnC,aAAa,GAAG,gCAAgC,CAAC;IACjD,iBAAiB,GAAG,gDAAgD,CAAC;IAErE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,yBAAyB,EAAE;SACvE;QACD;YACI,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,wBAAwB;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE;SACrE;QACD;YACI,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wBAAwB,EAAE;SACtE;QACD;YACI,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,yBAAyB;YACtC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,oCAAoC;YAC1C,WAAW,EAAE,uCAAuC;YACpD,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE;SACjE;QACD;YACI,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAC/D;KACJ,CAAC;qSAvDO,8BAA8B,yBAA9B,8BAA8B;6DAA9B,8BAA8B;;YCf3C,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,
|
|
1
|
+
{"version":3,"file":"admin-dev-tools-resource.component.js","sourceRoot":"","sources":["../../src/Admin/admin-dev-tools-resource.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;GAEG;AAQI,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,2BAA2B;IAC3D,cAAc,GAAG,iBAAiB,CAAC;IACnC,aAAa,GAAG,gCAAgC,CAAC;IACjD,iBAAiB,GAAG,gDAAgD,CAAC;IAErE,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,yBAAyB,EAAE;SACvE;QACD;YACI,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,wBAAwB;YACrC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,uBAAuB,EAAE;SACrE;QACD;YACI,EAAE,EAAE,SAAS;YACb,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,wBAAwB,EAAE;SACtE;QACD;YACI,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,yBAAyB;YACtC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,4BAA4B;YACzC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,oCAAoC;YAC1C,WAAW,EAAE,uCAAuC;YACpD,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE;SACjE;QACD;YACI,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAC/D;KACJ,CAAC;qSAvDO,8BAA8B,yBAA9B,8BAA8B;6DAA9B,8BAA8B;;YCf3C,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,qBAKb;YAAzC,wKAAe,4BAAwB,KAAC;YAC5C,iBAAc;YACd,8CAA+D;YAC3D,iCAA0C;YAGtD,AADI,AADI,iBAAsB,EACX,EACF;;YAhBT,cAAwB;YAExB,AADA,AADA,0CAAwB,2BACF,mCACQ;YAGpB,cAAa;YAAC,AAAd,2BAAa,kBAAkB;YAGrC,cAAwB;YACxB,AADA,0CAAwB,+BACE;YAGT,cAAqB;YAAC,AAAtB,uCAAqB,wBAAoB;;;ADCzD,8BAA8B;IAP1C,aAAa,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;GAO/C,8BAA8B,CAwD1C;;iFAxDY,8BAA8B;cAN1C,SAAS;6BACM,KAAK,YACP,6BAA6B;;kFAI9B,8BAA8B","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Developer Tools. Diagnostic and inspection sub-tools for developers.\n */\n@RegisterClass(BaseResourceComponent, 'AdminDeveloperTools')\n@Component({\n standalone: false,\n selector: 'mj-admin-dev-tools-resource',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminDevToolsResourceComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Developer Tools';\n public readonly ContainerIcon = 'fa-solid fa-screwdriver-wrench';\n public readonly ContainerSubtitle = 'Diagnostic and inspection tools for developers';\n\n public readonly Sections: AdminSection[] = [\n {\n id: 'graphql',\n label: 'GraphQL Console',\n icon: 'fa-solid fa-code',\n description: 'Run queries against the API',\n source: { kind: 'resource', driverClass: 'GraphQLConsoleInspector' }\n },\n {\n id: 'events',\n label: 'Event Monitor',\n icon: 'fa-solid fa-bolt',\n description: 'Live tail of MJ events',\n source: { kind: 'resource', driverClass: 'EventMonitorInspector' }\n },\n {\n id: 'classes',\n label: 'Class Registry',\n icon: 'fa-solid fa-cubes',\n description: 'All @RegisterClass entries',\n source: { kind: 'resource', driverClass: 'ClassRegistryInspector' }\n },\n {\n id: 'lazy',\n label: 'Lazy Loading',\n icon: 'fa-solid fa-puzzle-piece',\n description: 'Code-split chunk status',\n source: { kind: 'resource', driverClass: 'LazyModuleStatusInspector' }\n },\n {\n id: 'settings',\n label: 'Settings Explorer',\n icon: 'fa-solid fa-sliders',\n description: 'User and instance settings',\n source: { kind: 'resource', driverClass: 'SettingsExplorerInspector' }\n },\n {\n id: 'app-state',\n label: 'App State',\n icon: 'fa-solid fa-magnifying-glass-chart',\n description: 'Snapshot of user, provider, workspace',\n source: { kind: 'resource', driverClass: 'AppStateInspector' }\n },\n {\n id: 'layout',\n label: 'Layout',\n icon: 'fa-solid fa-table-columns',\n description: 'Workspace + Golden Layout config',\n source: { kind: 'resource', driverClass: 'LayoutInspector' }\n }\n ];\n}\n","<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -63,7 +63,7 @@ let AdminIdentityAccessComponent = class AdminIdentityAccessComponent extends Ba
|
|
|
63
63
|
}
|
|
64
64
|
];
|
|
65
65
|
static ɵfac = /*@__PURE__*/ (() => { let ɵAdminIdentityAccessComponent_BaseFactory; return function AdminIdentityAccessComponent_Factory(__ngFactoryType__) { return (ɵAdminIdentityAccessComponent_BaseFactory || (ɵAdminIdentityAccessComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminIdentityAccessComponent)))(__ngFactoryType__ || AdminIdentityAccessComponent); }; })();
|
|
66
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminIdentityAccessComponent, selectors: [["mj-admin-identity-access"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminIdentityAccessComponent_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminIdentityAccessComponent, selectors: [["mj-admin-identity-access"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], ["MobileTitle", "Administration", 3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminIdentityAccessComponent_Template(rf, ctx) { if (rf & 1) {
|
|
67
67
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
68
68
|
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
69
69
|
i0.ɵɵelement(1, "mj-page-header", 1);
|
|
@@ -90,7 +90,7 @@ AdminIdentityAccessComponent = __decorate([
|
|
|
90
90
|
export { AdminIdentityAccessComponent };
|
|
91
91
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminIdentityAccessComponent, [{
|
|
92
92
|
type: Component,
|
|
93
|
-
args: [{ standalone: false, selector: 'mj-admin-identity-access', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
93
|
+
args: [{ standalone: false, selector: 'mj-admin-identity-access', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
94
94
|
}], null, null); })();
|
|
95
95
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminIdentityAccessComponent, { className: "AdminIdentityAccessComponent", filePath: "src/Admin/admin-identity-access.component.ts", lineNumber: 17 }); })();
|
|
96
96
|
//# sourceMappingURL=admin-identity-access.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-identity-access.component.js","sourceRoot":"","sources":["../../src/Admin/admin-identity-access.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;GAGG;AAQI,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,2BAA2B;IACzD,cAAc,GAAG,mBAAmB,CAAC;IACrC,aAAa,GAAG,2BAA2B,CAAC;IAC5C,iBAAiB,GAAG,yCAAyC,CAAC;IAE9D,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE;SAClE;QACD;YACI,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,8BAA8B;YAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE;SAClE;QACD;YACI,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,2BAA2B;YACxC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,wBAAwB,EAAE;SACzE;QACD;YACI,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACxE;QACD;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE;SACrE;QACD;YACI,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAC/D;KACJ,CAAC;6RAhDO,4BAA4B,yBAA5B,4BAA4B;6DAA5B,4BAA4B;;YChBzC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,
|
|
1
|
+
{"version":3,"file":"admin-identity-access.component.js","sourceRoot":"","sources":["../../src/Admin/admin-identity-access.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;GAGG;AAQI,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,2BAA2B;IACzD,cAAc,GAAG,mBAAmB,CAAC;IACrC,aAAa,GAAG,2BAA2B,CAAC;IAC5C,iBAAiB,GAAG,yCAAyC,CAAC;IAE9D,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE;SAClE;QACD;YACI,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,8BAA8B;YAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,iBAAiB,EAAE;SAClE;QACD;YACI,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,2BAA2B;YACxC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,wBAAwB,EAAE;SACzE;QACD;YACI,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE;SACxE;QACD;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAAE;SACrE;QACD;YACI,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,+BAA+B;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE;SAC/D;KACJ,CAAC;6RAhDO,4BAA4B,yBAA5B,4BAA4B;6DAA5B,4BAA4B;;YChBzC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,qBAKb;YAAzC,sKAAe,4BAAwB,KAAC;YAC5C,iBAAc;YACd,8CAA+D;YAC3D,iCAA0C;YAGtD,AADI,AADI,iBAAsB,EACX,EACF;;YAhBT,cAAwB;YAExB,AADA,AADA,0CAAwB,2BACF,mCACQ;YAGpB,cAAa;YAAC,AAAd,2BAAa,kBAAkB;YAGrC,cAAwB;YACxB,AADA,0CAAwB,+BACE;YAGT,cAAqB;YAAC,AAAtB,uCAAqB,wBAAoB;;;ADEzD,4BAA4B;IAPxC,aAAa,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;GAO/C,4BAA4B,CAiDxC;;iFAjDY,4BAA4B;cANxC,SAAS;6BACM,KAAK,YACP,0BAA0B;;kFAI3B,4BAA4B","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Identity & Access. Users, roles, app-role assignments,\n * entity permissions, and API keys.\n */\n@RegisterClass(BaseResourceComponent, 'AdminIdentityAccess')\n@Component({\n standalone: false,\n selector: 'mj-admin-identity-access',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminIdentityAccessComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Identity & Access';\n public readonly ContainerIcon = 'fa-solid fa-shield-halved';\n public readonly ContainerSubtitle = 'Users, roles, permissions, and API keys';\n\n public readonly Sections: AdminSection[] = [\n {\n id: 'users',\n label: 'Users',\n icon: 'fa-solid fa-users',\n description: 'Manage user accounts',\n source: { kind: 'dashboard', dashboardName: 'User Management' }\n },\n {\n id: 'roles',\n label: 'Roles',\n icon: 'fa-solid fa-user-shield',\n description: 'Define roles and assignments',\n source: { kind: 'dashboard', dashboardName: 'Role Management' }\n },\n {\n id: 'apps',\n label: 'Apps',\n icon: 'fa-solid fa-th-large',\n description: 'Application configuration',\n source: { kind: 'dashboard', dashboardName: 'Application Management' }\n },\n {\n id: 'app-roles',\n label: 'App Roles',\n icon: 'fa-solid fa-people-roof',\n description: 'Role assignments per application',\n source: { kind: 'resource', driverClass: 'ApplicationRolesResource' }\n },\n {\n id: 'permissions',\n label: 'Permissions',\n icon: 'fa-solid fa-lock',\n description: 'Entity-level access and audit',\n source: { kind: 'dashboard', dashboardName: 'Entity Permissions' }\n },\n {\n id: 'api-keys',\n label: 'API Keys',\n icon: 'fa-solid fa-key',\n description: 'API authentication and scopes',\n source: { kind: 'resource', driverClass: 'APIKeysResource' }\n }\n ];\n}\n","<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n"]}
|
|
@@ -37,7 +37,7 @@ let AdminMonitoringComponent = class AdminMonitoringComponent extends BaseAdminC
|
|
|
37
37
|
}
|
|
38
38
|
];
|
|
39
39
|
static ɵfac = /*@__PURE__*/ (() => { let ɵAdminMonitoringComponent_BaseFactory; return function AdminMonitoringComponent_Factory(__ngFactoryType__) { return (ɵAdminMonitoringComponent_BaseFactory || (ɵAdminMonitoringComponent_BaseFactory = i0.ɵɵgetInheritedFactory(AdminMonitoringComponent)))(__ngFactoryType__ || AdminMonitoringComponent); }; })();
|
|
40
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminMonitoringComponent, selectors: [["mj-admin-monitoring"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminMonitoringComponent_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AdminMonitoringComponent, selectors: [["mj-admin-monitoring"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 9, consts: [["contentHost", ""], [3, "Title", "Icon", "Subtitle"], ["Direction", "row", 3, "Flex", "Padding"], ["MobileTitle", "Administration", 3, "ItemClicked", "Sections", "ActiveId"], [3, "Loading", "Error"]], template: function AdminMonitoringComponent_Template(rf, ctx) { if (rf & 1) {
|
|
41
41
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
42
42
|
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
43
43
|
i0.ɵɵelement(1, "mj-page-header", 1);
|
|
@@ -64,7 +64,7 @@ AdminMonitoringComponent = __decorate([
|
|
|
64
64
|
export { AdminMonitoringComponent };
|
|
65
65
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AdminMonitoringComponent, [{
|
|
66
66
|
type: Component,
|
|
67
|
-
args: [{ standalone: false, selector: 'mj-admin-monitoring', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
67
|
+
args: [{ standalone: false, selector: 'mj-admin-monitoring', template: "<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host { display: block; height: 100%; }\n\n/* Layout, rail styling, and content-area chrome all live in the shared\n <mj-page-body> / <mj-left-nav> / <mj-left-nav-content> components. The\n only thing this file owns is the responsive collapse of the parent flex\n direction at narrow viewports. See Section 10 of explorer-chrome-conventions. */\n@media (max-width: 700px) {\n :host ::ng-deep mj-page-body.mj-page-body--row {\n flex-direction: column;\n }\n}\n"] }]
|
|
68
68
|
}], null, null); })();
|
|
69
69
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AdminMonitoringComponent, { className: "AdminMonitoringComponent", filePath: "src/Admin/admin-monitoring.component.ts", lineNumber: 17 }); })();
|
|
70
70
|
//# sourceMappingURL=admin-monitoring.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-monitoring.component.js","sourceRoot":"","sources":["../../src/Admin/admin-monitoring.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;GAGG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,YAAY,CAAC;IAC9B,aAAa,GAAG,yBAAyB,CAAC;IAC1C,iBAAiB,GAAG,wCAAwC,CAAC;IAE7E,4EAA4E;IAC5E,sEAAsE;IACtD,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,iCAAiC;YAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;SAC9D;KACJ,CAAC;6QAtBO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;;YChBrC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,
|
|
1
|
+
{"version":3,"file":"admin-monitoring.component.js","sourceRoot":"","sources":["../../src/Admin/admin-monitoring.component.ts","../../src/Admin/admin-container.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAgB,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;;;AAE7F;;;GAGG;AAQI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,2BAA2B;IACrD,cAAc,GAAG,YAAY,CAAC;IAC9B,aAAa,GAAG,yBAAyB,CAAC;IAC1C,iBAAiB,GAAG,wCAAwC,CAAC;IAE7E,4EAA4E;IAC5E,sEAAsE;IACtD,QAAQ,GAAmB;QACvC;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,iCAAiC;YAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2BAA2B,EAAE;SACzE;QACD;YACI,EAAE,EAAE,aAAa;YACjB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE;SAC9D;KACJ,CAAC;6QAtBO,wBAAwB,yBAAxB,wBAAwB;6DAAxB,wBAAwB;;YChBrC,sCAAgB;YACZ,oCAIiB;YAGb,AADJ,uCAA8D,qBAKb;YAAzC,kKAAe,4BAAwB,KAAC;YAC5C,iBAAc;YACd,8CAA+D;YAC3D,iCAA0C;YAGtD,AADI,AADI,iBAAsB,EACX,EACF;;YAhBT,cAAwB;YAExB,AADA,AADA,0CAAwB,2BACF,mCACQ;YAGpB,cAAa;YAAC,AAAd,2BAAa,kBAAkB;YAGrC,cAAwB;YACxB,AADA,0CAAwB,+BACE;YAGT,cAAqB;YAAC,AAAtB,uCAAqB,wBAAoB;;;ADEzD,wBAAwB;IAPpC,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC;GAO3C,wBAAwB,CAuBpC;;iFAvBY,wBAAwB;cANpC,SAAS;6BACM,KAAK,YACP,qBAAqB;;kFAItB,wBAAwB","sourcesContent":["import { Component } from '@angular/core';\nimport { BaseResourceComponent } from '@memberjunction/ng-shared';\nimport { RegisterClass } from '@memberjunction/global';\nimport { AdminSection, BaseAdminContainerComponent } from './base-admin-container.component';\n\n/**\n * Admin → Monitoring. System health, SQL execution logs, and outbound\n * communication delivery monitoring.\n */\n@RegisterClass(BaseResourceComponent, 'AdminMonitoring')\n@Component({\n standalone: false,\n selector: 'mj-admin-monitoring',\n templateUrl: './admin-container.component.html',\n styleUrls: ['./admin-container.component.css']\n})\nexport class AdminMonitoringComponent extends BaseAdminContainerComponent {\n public readonly ContainerTitle = 'Monitoring';\n public readonly ContainerIcon = 'fa-solid fa-stethoscope';\n public readonly ContainerSubtitle = 'System health and query execution logs';\n\n // Communication Monitor intentionally NOT included here — outbound delivery\n // monitoring belongs in the Communications app, not in the Admin app.\n public readonly Sections: AdminSection[] = [\n {\n id: 'diagnostics',\n label: 'Diagnostics',\n icon: 'fa-solid fa-stethoscope',\n description: 'Runtime health and connectivity',\n source: { kind: 'resource', driverClass: 'SystemDiagnosticsResource' }\n },\n {\n id: 'sql-logging',\n label: 'SQL Logging',\n icon: 'fa-solid fa-file-code',\n description: 'Captured SQL execution logs',\n source: { kind: 'dashboard', dashboardName: 'SQL Logging' }\n }\n ];\n}\n","<mj-page-layout>\n <mj-page-header\n [Title]=\"ContainerTitle\"\n [Icon]=\"ContainerIcon\"\n [Subtitle]=\"ContainerSubtitle\">\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\" [Padding]=\"false\" Direction=\"row\">\n <mj-left-nav\n MobileTitle=\"Administration\"\n [Sections]=\"NavSections\"\n [ActiveId]=\"ActiveSection\"\n (ItemClicked)=\"OnNavItemClicked($event)\">\n </mj-left-nav>\n <mj-left-nav-content [Loading]=\"IsLoading\" [Error]=\"LoadError\">\n <ng-container #contentHost></ng-container>\n </mj-left-nav-content>\n </mj-page-body>\n</mj-page-layout>\n"]}
|