@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources-tab.component.js","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/sources-tab.component.ts","../../../../../src/AI/components/autotagging/tabs/sources-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Classify · Content Sources tab.\n *\n * Self-contained sub-page: owns its header-interior, the source cards grid,\n * the per-source detail slide-in, and the quick-schedule dialog. Receives the\n * shared raw data needed to build the cards (sources, items, tags, runs, and\n * the cached ScheduledAction + EntityRecordDocument lookups) from the host\n * orchestrator via `@Input()`. Cross-tab concerns — opening the add/edit slide-in\n * form, running the pipeline, opening a content-item detail, and reloading the\n * shared source list after a mutation — bubble up via `@Output()`.\n *\n * Out of scope (stays in the host): the add/edit source slide-in FORM, the\n * pipeline tab, and the Content Duplicates section.\n */\nimport { Component, ChangeDetectorRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { BaseEntity, CompositeKey, RunView } from '@memberjunction/core';\nimport { UUIDsEqual, NormalizeUUID } from '@memberjunction/global';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { KnowledgeHubMetadataEngine, MJScheduledActionEntity, MJScheduledActionParamEntity, MJContentSourceEntity } from '@memberjunction/core-entities';\nimport {\n SourceCard, SourceDetailInfo, ContentItemDetail, RunHistoryRow, WeightedTag,\n ItemPipelineStatus\n} from '../shared/classify.types';\nimport { formatNumber, formatDate, computeDuration, displayStatus, getSourceTypeIcon, CronToHumanReadable, deriveDisplayName } from '../shared/classify.format';\n\n@Component({\n standalone: false,\n selector: 'classify-sources-tab',\n templateUrl: './sources-tab.component.html',\n styleUrls: ['./sources-tab.component.css']\n})\nexport class ClassifySourcesTabComponent extends BaseAngularComponent {\n private cdr = inject(ChangeDetectorRef);\n\n // ── Shared raw inputs (host is the data orchestrator) ──\n\n /** Raw `MJ: Content Sources` rows — the primary source for the cards. */\n private _sources: Record<string, unknown>[] = [];\n @Input()\n set Sources(value: Record<string, unknown>[]) {\n this._sources = value ?? [];\n this.rebuild();\n }\n get Sources(): Record<string, unknown>[] {\n return this._sources;\n }\n\n /** Raw `MJ: Content Items` rows — used to count items per source. */\n private _items: Record<string, unknown>[] = [];\n @Input()\n set Items(value: Record<string, unknown>[]) {\n this._items = value ?? [];\n this.rebuild();\n }\n get Items(): Record<string, unknown>[] {\n return this._items;\n }\n\n /** Raw `MJ: Content Item Tags` rows — used to count tags per source. */\n private _tags: Record<string, unknown>[] = [];\n @Input()\n set Tags(value: Record<string, unknown>[]) {\n this._tags = value ?? [];\n this.rebuild();\n }\n get Tags(): Record<string, unknown>[] {\n return this._tags;\n }\n\n /** Raw `MJ: Content Process Runs` rows — used to derive last-run + status. */\n private _runs: Record<string, unknown>[] = [];\n @Input()\n set Runs(value: Record<string, unknown>[]) {\n this._runs = value ?? [];\n this.rebuild();\n }\n get Runs(): Record<string, unknown>[] {\n return this._runs;\n }\n\n /** Accurate total item count from TotalRowCount (used when a single source exists). */\n private _totalItemCount = 0;\n @Input()\n set TotalItemCount(value: number) {\n this._totalItemCount = value ?? 0;\n this.rebuild();\n }\n get TotalItemCount(): number {\n return this._totalItemCount;\n }\n\n /** Accurate total tag count from TotalRowCount (used when a single source exists). */\n private _totalTagCount = 0;\n @Input()\n set TotalTagCount(value: number) {\n this._totalTagCount = value ?? 0;\n this.rebuild();\n }\n get TotalTagCount(): number {\n return this._totalTagCount;\n }\n\n /** Cached ScheduledAction entities, keyed by normalized ID, supplied by the host. */\n private _scheduledActions = new Map<string, MJScheduledActionEntity>();\n @Input()\n set ScheduledActions(value: Map<string, MJScheduledActionEntity>) {\n this._scheduledActions = value ?? new Map<string, MJScheduledActionEntity>();\n this.rebuild();\n }\n get ScheduledActions(): Map<string, MJScheduledActionEntity> {\n return this._scheduledActions;\n }\n\n /** Cache: EntityRecordDocument ID → RecordID, supplied by the host. */\n private _entityRecordDocCache = new Map<string, string>();\n @Input()\n set EntityRecordDocCache(value: Map<string, string>) {\n this._entityRecordDocCache = value ?? new Map<string, string>();\n }\n get EntityRecordDocCache(): Map<string, string> {\n return this._entityRecordDocCache;\n }\n\n // ── Tab-local view state ──\n\n /** Shown while a manual Refresh() recomputes the source cards. */\n public IsLoading = false;\n\n public SourceCards: SourceCard[] = [];\n\n // Source Detail slide-in\n public SelectedSource: SourceDetailInfo | null = null;\n public ShowSourceDetail = false;\n public SourceDetailLoading = false;\n public SourceDetailStatusFilter: ItemPipelineStatus | 'All' = 'All';\n public readonly SourceDetailStatusOptions: (ItemPipelineStatus | 'All')[] = ['All', 'Complete', 'Processing', 'Failed', 'Pending'];\n public SourceDetailPage = 0;\n public readonly SourceDetailPageSize = 10;\n\n // Dry-run preview dialog (hosted here, like the schedule + detail dialogs)\n public ShowDryRunPreview = false;\n public DryRunSourceCard: SourceCard | null = null;\n\n // Schedule dialog\n public ShowScheduleDialog = false;\n public ScheduleSaving = false;\n public SchedulingSourceCard: SourceCard | null = null;\n public ScheduleCron = '0 2 * * *';\n public ScheduleEnabled = true;\n\n /** Template-facing formatter. */\n public readonly formatNumber = formatNumber;\n\n // ── Cross-tab intents (host owns the slide-in form, navigation, pipeline) ──\n\n /** Bubble \"add source\" up — host opens its slide-in CRUD form. */\n @Output() AddSourceRequested = new EventEmitter<void>();\n /** Bubble \"add source (guided)\" up — host opens the setup wizard. */\n @Output() AddSourceGuidedRequested = new EventEmitter<void>();\n /** Bubble \"edit source\" up — host opens its slide-in CRUD form pre-filled. */\n @Output() EditSourceRequested = new EventEmitter<SourceCard>();\n /** Bubble \"run pipeline for source\" up — host runs the pipeline for the given source ID. */\n @Output() RunSourceRequested = new EventEmitter<string>();\n /** Bubble \"open content item detail\" up — host owns the item-detail slide-in. */\n @Output() OpenContentItemRequested = new EventEmitter<ContentItemDetail>();\n /** Fired after a delete / schedule change so the host reloads the shared source list. */\n @Output() DataChanged = new EventEmitter<void>();\n\n /**\n * Recompute the source cards from the current host-supplied inputs. The data\n * itself is owned by the host (flows in via @Input); Refresh just rebuilds the\n * view models and surfaces a brief loading state for user feedback.\n */\n public async Refresh(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n this.rebuild();\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n\n public onAddSource(): void {\n this.AddSourceRequested.emit();\n }\n\n public onAddSourceGuided(): void {\n this.AddSourceGuidedRequested.emit();\n }\n\n public onEditSource(card: SourceCard): void {\n this.EditSourceRequested.emit(card);\n }\n\n public onRunSource(sourceID: string): void {\n this.RunSourceRequested.emit(sourceID);\n }\n\n // ── Dry-run preview (in-memory, nothing persisted) ──\n\n /** Opens the dry-run disposition preview for a source. */\n public OpenDryRunPreview(card: SourceCard): void {\n this.DryRunSourceCard = card;\n this.ShowDryRunPreview = true;\n this.cdr.detectChanges();\n }\n\n public CloseDryRunPreview(): void {\n this.ShowDryRunPreview = false;\n this.DryRunSourceCard = null;\n this.cdr.detectChanges();\n }\n\n // ════════════════════════════════════════════\n // SOURCE CARDS\n // ════════════════════════════════════════════\n\n /** Rebuild the source card view models from the current inputs. */\n private rebuild(): void {\n const singleSource = this._sources.length === 1;\n const itemCountBySource = singleSource ? null : this.countItemsBySource();\n const tagCountBySource = singleSource ? null : this.countTagsBySource();\n const lastRunBySource = this.getLastRunBySource();\n\n this.SourceCards = this._sources.map(source => {\n const id = source['ID'] as string;\n const itemCount = singleSource ? this._totalItemCount : (itemCountBySource!.get(id) ?? 0);\n const tagCount = singleSource ? this._totalTagCount : (tagCountBySource!.get(id) ?? 0);\n const avgTags = itemCount > 0 ? (tagCount / itemCount).toFixed(1) : '0';\n const lastRun = lastRunBySource.get(id);\n const typeName = (source['ContentSourceType'] as string) ?? 'Unknown';\n const lastRunStatus = lastRun ? (lastRun['Status'] as string)?.toLowerCase() : null;\n const hasError = lastRunStatus === 'error' || lastRunStatus === 'failed';\n\n const scheduledActionID = (source['ScheduledActionID'] as string | null) ?? null;\n const scheduledActionName = (source['ScheduledAction'] as string | null) ?? null;\n const cronExpr = scheduledActionID ? this.getScheduledActionCron(scheduledActionID) : null;\n\n return {\n ID: id,\n Name: (source['Name'] as string) ?? 'Unnamed Source',\n SourceTypeName: typeName,\n ContentTypeName: (source['ContentType'] as string) ?? 'Unknown',\n FileTypeName: (source['ContentFileType'] as string) ?? 'Unknown',\n Icon: getSourceTypeIcon(typeName),\n StatusClass: hasError ? 'error' as const : 'active' as const,\n StatusLabel: hasError ? 'Error' : 'Active',\n URL: (source['URL'] as string) ?? '',\n ItemCount: itemCount,\n TagCount: tagCount,\n AvgTags: avgTags,\n LastRunAgo: lastRun ? this.formatRelativeTime(lastRun['StartTime'] as string) : 'Never',\n ContentSourceTypeID: source['ContentSourceTypeID'] as string,\n ContentTypeID: source['ContentTypeID'] as string,\n ContentFileTypeID: source['ContentFileTypeID'] as string,\n EmbeddingModelID: (source['EmbeddingModelID'] as string) ?? '',\n VectorIndexID: (source['VectorIndexID'] as string) ?? '',\n EntityID: (source['EntityID'] as string) ?? '',\n EntityDocumentID: (source['EntityDocumentID'] as string) ?? '',\n RequiresFileType: this.sourceTypeRequiresFileType(source['ContentSourceTypeID'] as string),\n ScheduledActionID: scheduledActionID,\n ScheduledActionName: scheduledActionName,\n ScheduleDescription: cronExpr ? CronToHumanReadable(cronExpr) : null,\n };\n });\n this.cdr.detectChanges();\n }\n\n // ── Aggregation utilities (read only the raw inputs) ──\n\n private countItemsBySource(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const item of this._items) {\n const sourceId = item['ContentSourceID'] as string;\n if (sourceId) counts.set(sourceId, (counts.get(sourceId) ?? 0) + 1);\n }\n return counts;\n }\n\n private countTagsBySource(): Map<string, number> {\n const itemSourceMap = new Map<string, string>();\n for (const item of this._items) {\n itemSourceMap.set(item['ID'] as string, item['ContentSourceID'] as string);\n }\n const counts = new Map<string, number>();\n for (const tag of this._tags) {\n const sourceId = itemSourceMap.get(tag['ItemID'] as string);\n if (sourceId) counts.set(sourceId, (counts.get(sourceId) ?? 0) + 1);\n }\n return counts;\n }\n\n private getLastRunBySource(): Map<string, Record<string, unknown>> {\n const map = new Map<string, Record<string, unknown>>();\n for (const run of this._runs) {\n const sourceId = run['SourceID'] as string;\n if (sourceId && !map.has(sourceId)) {\n map.set(sourceId, run);\n }\n }\n return map;\n }\n\n private countTagsByItem(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const tag of this._tags) {\n const itemId = NormalizeUUID(tag['ItemID'] as string);\n if (itemId) counts.set(itemId, (counts.get(itemId) ?? 0) + 1);\n }\n return counts;\n }\n\n private getAllWeightedTagsForItem(itemId: string): WeightedTag[] {\n const tags: WeightedTag[] = [];\n for (const tag of this._tags) {\n if (UUIDsEqual(tag['ItemID'] as string, itemId)) {\n tags.push({\n Tag: tag['Tag'] as string,\n Weight: Number(tag['Weight'] ?? 1),\n });\n }\n }\n return tags.sort((a, b) => b.Weight - a.Weight);\n }\n\n /** Check if a source type's Configuration says RequiresFileType !== false */\n private sourceTypeRequiresFileType(sourceTypeID: string): boolean {\n try {\n const engine = KnowledgeHubMetadataEngine.Instance;\n const st = engine.ContentSourceTypes.find(t => UUIDsEqual(t.ID, sourceTypeID));\n return st?.ConfigurationObject?.RequiresFileType !== false;\n } catch {\n return true;\n }\n }\n\n /** Resolve the entity record ID from the EntityRecordDocument for entity-sourced content items */\n private resolveEntityRecordID(item: Record<string, unknown>): string | null {\n const erdID = item['EntityRecordDocumentID'] as string | null;\n if (!erdID) return null;\n return this._entityRecordDocCache.get(NormalizeUUID(erdID)) ?? null;\n }\n\n /** Resolve the entity name for an entity-sourced content source */\n private resolveEntityName(sourceId: string): string | null {\n try {\n const engine = KnowledgeHubMetadataEngine.Instance;\n const source = engine.ContentSources.find(cs => UUIDsEqual(cs.ID, sourceId));\n if (!source?.EntityID) return null;\n const md = this.ProviderToUse;\n const entityInfo = md.Entities.find(e => UUIDsEqual(e.ID, source.EntityID));\n return entityInfo?.Name ?? null;\n } catch {\n return null;\n }\n }\n\n private resolveEmbeddingModelName(modelId: string): string {\n if (!modelId) return 'System default';\n const aiEngine = AIEngineBase.Instance;\n const model = aiEngine.Models.find(m => UUIDsEqual(m.ID, modelId));\n return model ? model.Name : 'Unknown';\n }\n\n private resolveVectorIndexName(indexId: string): string {\n if (!indexId) return 'System default';\n const engine = KnowledgeHubMetadataEngine.Instance;\n const idx = engine.GetVectorIndexById(indexId);\n return idx ? idx.Name : 'Unknown';\n }\n\n /**\n * Infer embedding and tagging pipeline statuses for a content item. Uses tag\n * count + run-history heuristics since dedicated status columns are not yet\n * available on the ContentItem entity.\n */\n private inferPipelineStatuses(\n rawItem: Record<string, unknown>,\n tagCount: number\n ): { EmbeddingStatus: ItemPipelineStatus; TaggingStatus: ItemPipelineStatus } {\n const explicitEmbedding = rawItem['EmbeddingStatus'] as string | undefined;\n const explicitTagging = rawItem['TaggingStatus'] as string | undefined;\n if (explicitEmbedding || explicitTagging) {\n return {\n EmbeddingStatus: this.mapStatusString(explicitEmbedding),\n TaggingStatus: this.mapStatusString(explicitTagging),\n };\n }\n\n const hasChecksum = !!(rawItem['Checksum'] as string);\n const hasText = !!((rawItem['Text'] as string)?.trim());\n const sourceID = rawItem['ContentSourceID'] as string;\n const lastRun = this._runs.find(r => r['SourceID'] as string === sourceID);\n const lastRunFailed = lastRun &&\n ((lastRun['Status'] as string)?.toLowerCase() === 'error' ||\n (lastRun['Status'] as string)?.toLowerCase() === 'failed');\n\n let embeddingStatus: ItemPipelineStatus = 'Pending';\n if (hasChecksum || hasText) embeddingStatus = 'Complete';\n else if (lastRunFailed) embeddingStatus = 'Failed';\n\n let taggingStatus: ItemPipelineStatus = 'Pending';\n if (tagCount > 0) taggingStatus = 'Complete';\n else if (embeddingStatus === 'Complete') taggingStatus = lastRunFailed ? 'Failed' : 'Pending';\n else if (lastRunFailed) taggingStatus = 'Failed';\n\n return { EmbeddingStatus: embeddingStatus, TaggingStatus: taggingStatus };\n }\n\n private mapStatusString(status: string | undefined): ItemPipelineStatus {\n if (!status) return 'Pending';\n const lower = status.toLowerCase();\n if (lower === 'complete' || lower === 'completed' || lower === 'done') return 'Complete';\n if (lower === 'processing' || lower === 'running') return 'Processing';\n if (lower === 'failed' || lower === 'error') return 'Failed';\n return 'Pending';\n }\n\n public formatRelativeTime(dateStr: string | null | undefined): string {\n if (!dateStr) return 'Never';\n const now = new Date();\n const then = new Date(dateStr);\n const diffMs = now.getTime() - then.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n\n if (diffMins < 1) return 'Just now';\n if (diffMins < 60) return `${diffMins}m ago`;\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours}h ago`;\n const diffDays = Math.floor(diffHours / 24);\n return `${diffDays}d ago`;\n }\n\n /** Looks up the cron expression for a cached ScheduledAction by ID */\n private getScheduledActionCron(scheduledActionID: string): string | null {\n const cached = this._scheduledActions.get(NormalizeUUID(scheduledActionID));\n return cached?.CronExpression ?? null;\n }\n\n /** Returns the CSS class for a pipeline status badge color */\n public GetStatusBadgeClass(status: ItemPipelineStatus): string {\n switch (status) {\n case 'Complete': return 'at-status-badge-complete';\n case 'Processing': return 'at-status-badge-processing';\n case 'Failed': return 'at-status-badge-failed';\n case 'Pending': return 'at-status-badge-pending';\n }\n }\n\n // ════════════════════════════════════════════\n // DELETE\n // ════════════════════════════════════════════\n\n public async DeleteSource(card: SourceCard): Promise<void> {\n if (!confirm(`Delete source \"${card.Name}\"? This cannot be undone.`)) return;\n\n try {\n const p = this.ProviderToUse;\n const entity = await p.GetEntityObject<BaseEntity>('MJ: Content Sources', p.CurrentUser);\n await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: card.ID }]));\n const deleted = await entity.Delete();\n if (deleted) {\n MJNotificationService.Instance.CreateSimpleNotification('Source deleted', 'success', 2500);\n this.DataChanged.emit();\n } else {\n MJNotificationService.Instance.CreateSimpleNotification('Failed to delete source', 'error', 3000);\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 4000);\n }\n }\n\n // ════════════════════════════════════════════\n // SCHEDULE DIALOG — Quick Schedule for Source\n // ════════════════════════════════════════════\n\n public OpenScheduleDialog(card: SourceCard): void {\n this.SchedulingSourceCard = card;\n this.ScheduleCron = '0 2 * * *';\n this.ScheduleEnabled = true;\n this.ShowScheduleDialog = true;\n this.cdr.detectChanges();\n }\n\n public CloseScheduleDialog(): void {\n this.ShowScheduleDialog = false;\n this.SchedulingSourceCard = null;\n this.cdr.detectChanges();\n }\n\n /**\n * Saves a new ScheduledAction for the current source, links it via\n * ContentSource.ScheduledActionID, and creates the default action params\n * for the Autotag and Vectorize action.\n */\n public async SaveSchedule(): Promise<void> {\n if (this.ScheduleSaving || !this.SchedulingSourceCard) return;\n this.ScheduleSaving = true;\n this.cdr.detectChanges();\n\n const card = this.SchedulingSourceCard;\n\n try {\n const p = this.ProviderToUse;\n\n // 1. Find the \"Autotag and Vectorize Content\" action\n const actionID = await this.findAutotagActionID();\n if (!actionID) {\n MJNotificationService.Instance.CreateSimpleNotification(\n 'Could not find the \"Autotag and Vectorize Content\" action. Please check action configuration.',\n 'error', 5000\n );\n return;\n }\n\n // 2. Create the ScheduledAction\n const scheduledAction = await p.GetEntityObject<MJScheduledActionEntity>('MJ: Scheduled Actions', p.CurrentUser);\n scheduledAction.NewRecord();\n scheduledAction.Name = `Autotag: ${card.Name}`;\n scheduledAction.Description = `Automated classification pipeline for content source \"${card.Name}\"`;\n scheduledAction.ActionID = actionID;\n scheduledAction.Type = 'Custom';\n scheduledAction.CronExpression = this.ScheduleCron;\n scheduledAction.CustomCronExpression = this.ScheduleCron;\n scheduledAction.Status = this.ScheduleEnabled ? 'Active' : 'Disabled';\n scheduledAction.Timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const saved = await scheduledAction.Save();\n if (!saved) {\n const errorDetail = scheduledAction.LatestResult?.CompleteMessage ?? 'Unknown error';\n MJNotificationService.Instance.CreateSimpleNotification(\n `Failed to create schedule: ${errorDetail}`, 'error', 5000\n );\n return;\n }\n\n // 3. Create ScheduledActionParam for sourceIDs\n await this.createSourceIDParam(scheduledAction.ID, actionID, card.ID);\n\n // 4. Link ScheduledAction to ContentSource\n await this.linkScheduleToSource(card.ID, scheduledAction.ID);\n\n // 5. Cache the new action for cron display\n this._scheduledActions.set(NormalizeUUID(scheduledAction.ID), scheduledAction);\n\n MJNotificationService.Instance.CreateSimpleNotification(\n `Schedule created: ${CronToHumanReadable(this.ScheduleCron)}`, 'success', 3000\n );\n\n this.CloseScheduleDialog();\n this.DataChanged.emit();\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[Classify] Schedule creation error:', error);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n } finally {\n this.ScheduleSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Removes the schedule from a source card by unlinking the ScheduledActionID.\n */\n public async RemoveSchedule(card: SourceCard): Promise<void> {\n if (!card.ScheduledActionID) return;\n if (!confirm(`Remove the schedule \"${card.ScheduleDescription ?? 'schedule'}\" from \"${card.Name}\"?`)) return;\n\n try {\n await this.linkScheduleToSource(card.ID, null);\n MJNotificationService.Instance.CreateSimpleNotification('Schedule removed from source', 'success', 2500);\n this.DataChanged.emit();\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 4000);\n }\n }\n\n /** Returns the human-readable schedule description for a source card. */\n public GetScheduleLabel(card: SourceCard): string {\n return card.ScheduleDescription ?? 'Scheduled';\n }\n\n /** Returns a human-readable preview of a cron expression for the schedule dialog. */\n public GetCronPreview(cron: string): string {\n return CronToHumanReadable(cron);\n }\n\n /** Finds the Action ID for \"Autotag and Vectorize Content\" by querying actions */\n private async findAutotagActionID(): Promise<string | null> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<{ ID: string }>({\n EntityName: 'Actions',\n ExtraFilter: `Name = 'Autotag and Vectorize Content'`,\n Fields: ['ID'],\n ResultType: 'simple',\n MaxRows: 1,\n });\n if (result.Success && result.Results.length > 0) {\n return result.Results[0].ID;\n }\n return null;\n }\n\n /**\n * Creates a ScheduledActionParam that passes the source ID to the action.\n * Looks up the \"EntityNames\" action param and sets the source ID as its value.\n */\n private async createSourceIDParam(scheduledActionID: string, actionID: string, sourceID: string): Promise<void> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const paramResult = await rv.RunView<{ ID: string; Name: string }>({\n EntityName: 'Action Params',\n ExtraFilter: `ActionID = '${actionID}' AND Name = 'EntityNames'`,\n Fields: ['ID', 'Name'],\n ResultType: 'simple',\n MaxRows: 1,\n });\n\n if (!paramResult.Success || paramResult.Results.length === 0) {\n console.warn('[Classify] Could not find EntityNames action param for source ID scheduling');\n return;\n }\n\n const p = this.ProviderToUse;\n const param = await p.GetEntityObject<MJScheduledActionParamEntity>('MJ: Scheduled Action Params', p.CurrentUser);\n param.NewRecord();\n param.ScheduledActionID = scheduledActionID;\n param.ActionParamID = paramResult.Results[0].ID;\n param.ValueType = 'Static';\n param.Value = sourceID;\n\n const saved = await param.Save();\n if (!saved) {\n console.warn('[Classify] Failed to save schedule param:', param.LatestResult?.CompleteMessage);\n }\n }\n\n /**\n * Links (or unlinks) a ScheduledAction to a ContentSource by updating\n * the ContentSource.ScheduledActionID field.\n */\n private async linkScheduleToSource(sourceID: string, scheduledActionID: string | null): Promise<void> {\n const p = this.ProviderToUse;\n const entity = await p.GetEntityObject<MJContentSourceEntity>('MJ: Content Sources', p.CurrentUser);\n await entity.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: sourceID }]));\n entity.ScheduledActionID = scheduledActionID;\n const saved = await entity.Save();\n if (!saved) {\n throw new Error(entity.LatestResult?.CompleteMessage ?? 'Failed to update content source');\n }\n }\n\n // ════════════════════════════════════════════\n // SOURCE DETAIL SLIDE-IN\n // ════════════════════════════════════════════\n\n public async OpenSourceDetail(card: SourceCard): Promise<void> {\n this.SourceDetailLoading = true;\n this.SourceDetailPage = 0;\n this.SourceDetailStatusFilter = 'All';\n this.ShowSourceDetail = true;\n this.cdr.detectChanges();\n\n try {\n const sourceItems = await this.loadContentItemsForSource(card.ID);\n const sourceRuns = await this.loadRunHistoryForSource(card.ID);\n\n const embeddingModelName = this.resolveEmbeddingModelName(card.EmbeddingModelID);\n const vectorIndexName = this.resolveVectorIndexName(card.VectorIndexID);\n const errorCount = sourceRuns.filter(r => r.StatusClass === 'failed').length;\n\n this.SelectedSource = {\n ID: card.ID,\n Name: card.Name,\n SourceTypeName: card.SourceTypeName,\n FileTypeName: card.FileTypeName,\n ContentTypeName: card.ContentTypeName,\n RequiresFileType: card.RequiresFileType,\n StatusClass: card.StatusClass,\n StatusLabel: card.StatusLabel,\n Icon: card.Icon,\n URL: card.URL,\n EmbeddingModelName: embeddingModelName,\n VectorIndexName: vectorIndexName,\n ItemCount: card.ItemCount,\n TagCount: card.TagCount,\n AvgTags: card.AvgTags,\n LastRunAgo: card.LastRunAgo,\n ErrorCount: errorCount,\n ContentItems: sourceItems,\n RunHistory: sourceRuns\n };\n } catch (error) {\n console.error('[Autotagging] Error loading source detail:', error);\n } finally {\n this.SourceDetailLoading = false;\n this.cdr.detectChanges();\n }\n }\n\n public CloseSourceDetail(): void {\n this.ShowSourceDetail = false;\n this.SelectedSource = null;\n this.cdr.detectChanges();\n }\n\n public OpenContentItemDetail(item: ContentItemDetail): void {\n this.OpenContentItemRequested.emit(item);\n }\n\n public OpenEditSourceFromDetail(): void {\n if (!this.SelectedSource) return;\n const card = this.SourceCards.find(c => UUIDsEqual(c.ID, this.SelectedSource!.ID));\n if (card) {\n this.CloseSourceDetail();\n this.EditSourceRequested.emit(card);\n }\n }\n\n public RunSourceFromDetail(): void {\n if (!this.SelectedSource) return;\n const sourceID = this.SelectedSource.ID;\n this.CloseSourceDetail();\n this.RunSourceRequested.emit(sourceID);\n }\n\n public async DeleteSourceFromDetail(): Promise<void> {\n if (!this.SelectedSource) return;\n const card = this.SourceCards.find(c => UUIDsEqual(c.ID, this.SelectedSource!.ID));\n if (card) {\n this.CloseSourceDetail();\n await this.DeleteSource(card);\n }\n }\n\n // ── Source-detail filtering + pagination ──\n\n public get FilteredSourceDetailItems(): ContentItemDetail[] {\n if (!this.SelectedSource) return [];\n const items = this.SourceDetailStatusFilter === 'All'\n ? this.SelectedSource.ContentItems\n : this.SelectedSource.ContentItems.filter(\n ci => ci.EmbeddingStatus === this.SourceDetailStatusFilter ||\n ci.TaggingStatus === this.SourceDetailStatusFilter\n );\n const start = this.SourceDetailPage * this.SourceDetailPageSize;\n return items.slice(start, start + this.SourceDetailPageSize);\n }\n\n public get FilteredSourceDetailTotal(): number {\n if (!this.SelectedSource) return 0;\n if (this.SourceDetailStatusFilter === 'All') return this.SelectedSource.ContentItems.length;\n return this.SelectedSource.ContentItems.filter(\n ci => ci.EmbeddingStatus === this.SourceDetailStatusFilter ||\n ci.TaggingStatus === this.SourceDetailStatusFilter\n ).length;\n }\n\n public get SourceDetailTotalPages(): number {\n return Math.max(1, Math.ceil(this.FilteredSourceDetailTotal / this.SourceDetailPageSize));\n }\n\n public SourceDetailPrevPage(): void {\n if (this.SourceDetailPage > 0) {\n this.SourceDetailPage--;\n this.cdr.detectChanges();\n }\n }\n\n public SourceDetailNextPage(): void {\n if (this.SourceDetailPage < this.SourceDetailTotalPages - 1) {\n this.SourceDetailPage++;\n this.cdr.detectChanges();\n }\n }\n\n public OnSourceDetailStatusFilterChange(): void {\n this.SourceDetailPage = 0;\n this.cdr.detectChanges();\n }\n\n /**\n * Placeholder handler for retrying failed items in source detail. Surfaces a\n * notification; the pipeline re-processes failed items on the next run.\n */\n public RetryFailedItems(): void {\n if (!this.SelectedSource) return;\n const failedCount = this.SelectedSource.ContentItems.filter(\n ci => ci.EmbeddingStatus === 'Failed' || ci.TaggingStatus === 'Failed'\n ).length;\n if (failedCount === 0) {\n MJNotificationService.Instance.CreateSimpleNotification('No failed items to retry', 'info', 2500);\n return;\n }\n MJNotificationService.Instance.CreateSimpleNotification(\n `Retry queued for ${failedCount} failed item${failedCount > 1 ? 's' : ''}. Pipeline will re-process on next run.`,\n 'info',\n 3000\n );\n }\n\n private async loadContentItemsForSource(sourceId: string): Promise<ContentItemDetail[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView({\n EntityName: 'MJ: Content Items',\n ExtraFilter: `ContentSourceID='${sourceId}'`,\n OrderBy: '__mj_UpdatedAt DESC',\n MaxRows: 100,\n ResultType: 'simple'\n });\n\n if (!result.Success) return [];\n\n const tagsByItem = this.countTagsByItem();\n return result.Results.map(item => {\n const itemId = item['ID'] as string;\n const allTags = this.getAllWeightedTagsForItem(itemId);\n const tagCount = tagsByItem.get(itemId) ?? allTags.length;\n const contentSourceTypeID = (item['ContentSourceTypeID'] as string) ?? '';\n const itemStatuses = this.inferPipelineStatuses(item, tagCount);\n return {\n ID: itemId,\n Name: deriveDisplayName({ Name: item['Name'] as string | null, Description: item['Description'] as string | null }),\n SourceName: (item['ContentSource'] as string) ?? '',\n SourceTypeName: (item['ContentSourceType'] as string) ?? '',\n ContentTypeName: (item['ContentType'] as string) ?? '',\n FileTypeName: (item['ContentFileType'] as string) ?? '',\n URL: (item['URL'] as string) ?? '',\n TextContent: (item['Text'] as string) ?? '',\n Checksum: (item['Checksum'] as string) ?? '',\n Tags: allTags,\n CreatedAt: formatDate((item['__mj_CreatedAt'] as string) ?? ''),\n UpdatedAt: formatDate((item['__mj_UpdatedAt'] as string) ?? ''),\n ContentSourceID: sourceId,\n ContentSourceTypeID: contentSourceTypeID,\n StatusDot: tagCount > 0 ? 'complete' : 'processing',\n TagCount: tagCount,\n RequiresContentType: this.sourceTypeRequiresFileType(contentSourceTypeID),\n EntityRecordID: this.resolveEntityRecordID(item),\n EntityName: this.resolveEntityName(sourceId),\n EmbeddingStatus: itemStatuses.EmbeddingStatus,\n TaggingStatus: itemStatuses.TaggingStatus,\n };\n });\n }\n\n private async loadRunHistoryForSource(sourceId: string): Promise<RunHistoryRow[]> {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView({\n EntityName: 'MJ: Content Process Runs',\n ExtraFilter: `SourceID='${sourceId}'`,\n OrderBy: 'StartTime DESC',\n MaxRows: 10,\n ResultType: 'simple'\n });\n\n if (!result.Success) return [];\n\n return result.Results.map(run => {\n const status = (run['Status'] as string) ?? 'Unknown';\n const startTime = run['StartTime'] as string | null;\n const endTime = run['EndTime'] as string | null;\n const duration = computeDuration(startTime, endTime);\n const processedItems = run['ProcessedItems'] as number | null;\n const errorCount = run['ErrorCount'] as number | null;\n const statusLower = status.toLowerCase();\n const isFailed = statusLower === 'error' || statusLower === 'failed';\n const isRunning = statusLower === 'running' || statusLower === 'processing';\n const hasErrors = (errorCount ?? 0) > 0;\n\n return {\n ID: run['ID'] as string,\n Status: displayStatus(status),\n StatusClass: isFailed ? 'failed' : isRunning ? 'running' : 'complete',\n SourceName: (run['Source'] as string) ?? 'Unknown',\n StartedDisplay: startTime ? formatDate(startTime) : '—',\n Duration: duration,\n Items: processedItems != null ? formatNumber(processedItems) : '—',\n Tags: '—',\n Errors: hasErrors ? formatNumber(errorCount!) : (isFailed ? status : '0'),\n ErrorClass: isFailed || hasErrors ? 'run-error-text' : ''\n };\n });\n }\n}\n","<mj-page-header-interior\n Title=\"Content Sources\"\n Subtitle=\"Configure where content is ingested from\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Refresh()\" [disabled]=\"IsLoading\">\n @if (IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> <span class=\"mj-action-label\">Refreshing…</span>\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n }\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> <span class=\"mj-action-label\">Add Source (Guided)</span>\n </button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Source</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n <div class=\"at-main-area\">\n @if (IsLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Refreshing sources…\"></mj-loading>\n </div>\n }\n <div class=\"at-page-body\">\n @if (SourceCards.length === 0 && !IsLoading) {\n <div class=\"at-sources-empty\">\n <i class=\"fa-solid fa-database\"></i>\n <h3>No content sources yet</h3>\n <p>Use the guided setup to stand up your first source — pick an entity or URL, configure its document, taxonomy, and domain context in one flow.</p>\n <div class=\"at-sources-empty-actions\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Add Source (Guided)\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> Add manually\n </button>\n </div>\n </div>\n }\n\n <div class=\"at-sources-grid\">\n @for (card of SourceCards; track card.ID) {\n <div class=\"at-source-card-full at-source-card-clickable\" (click)=\"OpenSourceDetail(card)\">\n <div class=\"at-source-card-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"card.Icon\"></i></div>\n <div>\n <div class=\"at-source-card-title\">{{ card.Name }}</div>\n <div class=\"at-source-card-type\">{{ card.SourceTypeName }}@if (card.RequiresFileType) { · {{ card.FileTypeName }}}</div>\n </div>\n <div class=\"at-source-card-status\" [class]=\"card.StatusClass\">\n <div class=\"at-source-mini-status\" [class]=\"card.StatusClass\"></div>\n {{ card.StatusLabel }}\n </div>\n </div>\n @if (card.URL) {\n <div class=\"at-source-card-url\">{{ card.URL }}</div>\n }\n <div class=\"at-source-card-stats\">\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.ItemCount) }}</div>\n <div class=\"at-source-stat-label\">Items</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.TagCount) }}</div>\n <div class=\"at-source-stat-label\">Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.AvgTags }}</div>\n <div class=\"at-source-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.LastRunAgo }}</div>\n <div class=\"at-source-stat-label\">Last Run</div>\n </div>\n </div>\n <!-- Schedule indicator -->\n @if (card.ScheduledActionID) {\n <div class=\"at-schedule-indicator\" (click)=\"RemoveSchedule(card); $event.stopPropagation()\" title=\"Click to remove schedule\">\n <i class=\"fa-regular fa-clock\"></i>\n <span>{{ GetScheduleLabel(card) }}</span>\n </div>\n }\n <div class=\"at-source-card-actions\">\n <button class=\"at-source-action-btn\" (click)=\"onEditSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n <button class=\"at-source-action-btn\" (click)=\"onRunSource(card.ID); $event.stopPropagation()\"><i class=\"fa-solid fa-play\"></i> Run</button>\n <button class=\"at-source-action-btn\" (click)=\"OpenDryRunPreview(card); $event.stopPropagation()\"><i class=\"fa-solid fa-flask\"></i> Preview</button>\n @if (!card.ScheduledActionID) {\n <button class=\"at-source-action-btn at-source-schedule-btn\" (click)=\"OpenScheduleDialog(card); $event.stopPropagation()\"><i class=\"fa-regular fa-clock\"></i> Schedule</button>\n }\n <button class=\"at-source-action-btn at-source-delete-btn\" (click)=\"DeleteSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-trash\"></i> Delete</button>\n </div>\n </div>\n }\n\n <!-- Add Source Card -->\n <div class=\"at-add-source-card\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Source</span>\n <span style=\"font-size: 0.72rem;\">Web, RSS, Email, Files, API</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n\n<!-- ══════ SOURCE DETAIL SLIDE-IN ══════ -->\n@if (ShowSourceDetail) {\n <div class=\"at-slide-overlay\" (click)=\"CloseSourceDetail()\"></div>\n <div class=\"at-slide-panel at-detail-panel\">\n <div class=\"at-slide-header\">\n <h3><i class=\"fa-solid fa-database\"></i> Source Detail</h3>\n <button class=\"at-slide-close\" aria-label=\"Close source detail\" (click)=\"CloseSourceDetail()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n <div class=\"at-slide-body\">\n @if (SourceDetailLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Loading source details...\"></mj-loading>\n </div>\n }\n @if (!SourceDetailLoading && SelectedSource) {\n <!-- Source Header -->\n <div class=\"at-detail-source-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"SelectedSource.Icon\"></i></div>\n <div>\n <h4 class=\"at-detail-item-name\">{{ SelectedSource.Name }}</h4>\n <div class=\"at-detail-badges\">\n <span class=\"at-detail-badge at-detail-badge-type\">{{ SelectedSource.SourceTypeName }}</span>\n <span class=\"at-detail-badge\" [class]=\"'at-detail-badge-status-' + SelectedSource.StatusClass\">\n {{ SelectedSource.StatusLabel }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Configuration -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Configuration</div>\n <div class=\"at-detail-meta-grid\">\n @if (SelectedSource.URL) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">URL</span>\n <a [href]=\"SelectedSource.URL\" target=\"_blank\" class=\"at-detail-link at-detail-meta-value\">{{ SelectedSource.URL }}</a>\n </div>\n }\n @if (SelectedSource.RequiresFileType) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Content Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.ContentTypeName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">File Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.FileTypeName }}</span>\n </div>\n }\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Embedding Model</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.EmbeddingModelName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Vector Index</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.VectorIndexName }}</span>\n </div>\n </div>\n </div>\n\n <!-- Stats -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Statistics</div>\n <div class=\"at-detail-stats-strip\">\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.ItemCount) }}</div>\n <div class=\"at-detail-stat-label\">Items</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.TagCount) }}</div>\n <div class=\"at-detail-stat-label\">Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.AvgTags }}</div>\n <div class=\"at-detail-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.LastRunAgo }}</div>\n <div class=\"at-detail-stat-label\">Last Run</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\" [class.at-kpi-error-value]=\"SelectedSource.ErrorCount > 0\">{{ SelectedSource.ErrorCount }}</div>\n <div class=\"at-detail-stat-label\">Errors</div>\n </div>\n </div>\n </div>\n\n <!-- Content Library (status badges, pagination) -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-header-row\">\n <div class=\"at-detail-section-label\">Content Library ({{ FilteredSourceDetailTotal }} of {{ SelectedSource.ItemCount | number }})</div>\n <div class=\"at-detail-section-controls\">\n <select class=\"at-detail-filter-select\" [(ngModel)]=\"SourceDetailStatusFilter\" (ngModelChange)=\"OnSourceDetailStatusFilterChange()\">\n @for (opt of SourceDetailStatusOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n <button class=\"at-action-btn at-retry-btn\" (click)=\"RetryFailedItems()\" title=\"Re-queue failed items for processing\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry Failed\n </button>\n </div>\n </div>\n <div class=\"at-detail-content-list\">\n @if (FilteredSourceDetailItems.length === 0) {\n <div class=\"at-empty-state\" style=\"padding: 16px;\">\n <p>{{ SourceDetailStatusFilter === 'All' ? 'No content items yet.' : 'No items match this filter.' }}</p>\n </div>\n }\n @for (ci of FilteredSourceDetailItems; track ci.ID) {\n <div class=\"at-detail-content-item\" (click)=\"OpenContentItemDetail(ci)\">\n <div class=\"at-feed-status-dot\" [class]=\"ci.StatusDot\"></div>\n <span class=\"at-detail-content-item-name\">{{ ci.Name }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.EmbeddingStatus)\">E:{{ ci.EmbeddingStatus }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.TaggingStatus)\">T:{{ ci.TaggingStatus }}</span>\n <span class=\"at-detail-content-item-tags\">{{ ci.TagCount }} tags</span>\n <span class=\"at-detail-content-item-time\">{{ ci.UpdatedAt }}</span>\n </div>\n }\n </div>\n <!-- Pagination -->\n @if (SourceDetailTotalPages > 1) {\n <div class=\"at-detail-pagination\">\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage === 0\" (click)=\"SourceDetailPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Prev\n </button>\n <span class=\"at-page-info\">Page {{ SourceDetailPage + 1 }} of {{ SourceDetailTotalPages }}</span>\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage >= SourceDetailTotalPages - 1\" (click)=\"SourceDetailNextPage()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Run History -->\n @if (SelectedSource.RunHistory.length > 0) {\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Recent Runs</div>\n <div class=\"at-detail-run-history\">\n @for (run of SelectedSource.RunHistory; track run.ID) {\n <div class=\"at-detail-run-row\">\n <span class=\"at-run-status-badge\" [class]=\"run.StatusClass\">{{ run.Status }}</span>\n <span class=\"at-detail-run-time\">{{ run.StartedDisplay }}</span>\n <span class=\"at-detail-run-duration\">{{ run.Duration }}</span>\n <span class=\"at-detail-run-items\">{{ run.Items }} items</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"at-detail-actions\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"OpenEditSourceFromDetail()\">\n <i class=\"fa-solid fa-pen\"></i> Edit\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"RunSourceFromDetail()\">\n <i class=\"fa-solid fa-play\"></i> Run Now\n </button>\n <button class=\"at-action-btn at-secondary-btn at-source-delete-btn\" (click)=\"DeleteSourceFromDetail()\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </button>\n </div>\n }\n </div>\n </div>\n}\n\n<!-- ══════ SCHEDULE DIALOG ══════ -->\n@if (ShowScheduleDialog && SchedulingSourceCard) {\n <div class=\"at-schedule-overlay\" (click)=\"CloseScheduleDialog()\">\n <div class=\"at-schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"at-schedule-dialog-header\">\n <h3><i class=\"fa-regular fa-clock\"></i> Schedule Pipeline</h3>\n <button class=\"at-schedule-dialog-close\" (click)=\"CloseScheduleDialog()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"at-schedule-dialog-body\">\n <div class=\"at-schedule-field\">\n <label>Source</label>\n <div class=\"at-schedule-source-name\">\n <i [class]=\"SchedulingSourceCard.Icon\"></i>\n {{ SchedulingSourceCard.Name }}\n </div>\n </div>\n <div class=\"at-schedule-field\">\n <label>Action</label>\n <div class=\"at-schedule-action-name\">Autotag and Vectorize Content</div>\n </div>\n <div class=\"at-schedule-field\">\n <label for=\"schedule-cron\">Cron Expression</label>\n <input id=\"schedule-cron\"\n type=\"text\"\n class=\"mj-input at-schedule-cron-input\"\n [(ngModel)]=\"ScheduleCron\"\n placeholder=\"0 2 * * *\" />\n <div class=\"at-schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetCronPreview(ScheduleCron) }}\n </div>\n </div>\n <div class=\"at-schedule-field at-schedule-toggle-row\">\n <label for=\"schedule-enabled\">Enabled</label>\n <input id=\"schedule-enabled\"\n type=\"checkbox\"\n class=\"mj-checkbox\"\n [(ngModel)]=\"ScheduleEnabled\" />\n </div>\n </div>\n <div class=\"at-schedule-dialog-footer\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"SaveSchedule()\" [disabled]=\"ScheduleSaving\">\n @if (ScheduleSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n }\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"CloseScheduleDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n}\n\n<!-- ══════ DRY-RUN DISPOSITION PREVIEW (in-memory, nothing persisted) ══════ -->\n<classify-dry-run-preview\n [Provider]=\"Provider\"\n [Show]=\"ShowDryRunPreview\"\n [SourceCard]=\"DryRunSourceCard\"\n (Closed)=\"CloseDryRunPreview()\">\n</classify-dry-run-preview>\n"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Classify · Tag Library tab.
|
|
3
|
+
*
|
|
4
|
+
* Self-contained sub-page: owns its header-interior (with the tag search box),
|
|
5
|
+
* the tag rows table, the word cloud, the tags-by-source breakdown, and the
|
|
6
|
+
* per-tag drill-down. Receives the shared raw tag + item rows from the host
|
|
7
|
+
* orchestrator via `[ContentTags]`/`[ContentItems]` and rebuilds its view
|
|
8
|
+
* models from them. Opening a content item from the drill-down is a cross-tab
|
|
9
|
+
* concern owned by the host's slide-in, so it bubbles up via @Output.
|
|
10
|
+
*/
|
|
11
|
+
import { EventEmitter } from '@angular/core';
|
|
12
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
13
|
+
import { WordCloudItem } from '@memberjunction/ng-word-cloud';
|
|
14
|
+
import { TagRow, TagBySource } from '../shared/classify.types';
|
|
15
|
+
import { formatWeight, tagFontSize } from '../shared/classify.format';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
/** One row in the per-tag drill-down (content items carrying a given tag). */
|
|
18
|
+
interface TagDrillDownItem {
|
|
19
|
+
ID: string;
|
|
20
|
+
Name: string;
|
|
21
|
+
SourceName: string;
|
|
22
|
+
Weight: number;
|
|
23
|
+
UpdatedAt: string;
|
|
24
|
+
FeedIndex: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class ClassifyTagsTabComponent extends BaseAngularComponent {
|
|
27
|
+
private cdr;
|
|
28
|
+
/** Shared raw `MJ: Content Item Tags` rows, supplied by the host orchestrator. */
|
|
29
|
+
private _contentTags;
|
|
30
|
+
set ContentTags(value: Record<string, unknown>[]);
|
|
31
|
+
get ContentTags(): Record<string, unknown>[];
|
|
32
|
+
/** Shared raw `MJ: Content Items` rows — used for source mapping and drill-down. */
|
|
33
|
+
private _contentItems;
|
|
34
|
+
set ContentItems(value: Record<string, unknown>[]);
|
|
35
|
+
get ContentItems(): Record<string, unknown>[];
|
|
36
|
+
/** Shown while a manual Refresh() rebuilds the tag view models. */
|
|
37
|
+
IsLoading: boolean;
|
|
38
|
+
TagRows: TagRow[];
|
|
39
|
+
FilteredTagRows: TagRow[];
|
|
40
|
+
TagCloudWordItems: WordCloudItem[];
|
|
41
|
+
TagsBySource: TagBySource[];
|
|
42
|
+
TagSearchQuery: string;
|
|
43
|
+
SelectedDrillDownTag: string | null;
|
|
44
|
+
TagDrillDownItems: TagDrillDownItem[];
|
|
45
|
+
/** Subtitle reflects the live tag count, mirroring the former host subtitle. */
|
|
46
|
+
get Subtitle(): string;
|
|
47
|
+
readonly TagFontSize: typeof tagFontSize;
|
|
48
|
+
readonly FormatWeight: typeof formatWeight;
|
|
49
|
+
/** Bubble a request to open a content item's detail slide-in (host-owned). */
|
|
50
|
+
OpenItemDetailRequested: EventEmitter<string>;
|
|
51
|
+
onOpenItemDetail(contentItemID: string): void;
|
|
52
|
+
/** Rebuild all tag-tab view models from the current inputs. */
|
|
53
|
+
private rebuild;
|
|
54
|
+
/**
|
|
55
|
+
* Rebuild the tag view models from the current host-supplied inputs. The tag
|
|
56
|
+
* data is host-owned (flows in via [ContentTags]/[ContentItems]); Refresh
|
|
57
|
+
* recomputes the rows/cloud/breakdown and surfaces a brief loading state.
|
|
58
|
+
*/
|
|
59
|
+
Refresh(): Promise<void>;
|
|
60
|
+
/** Apply a search query programmatically (used by the agent tool + deep link). Returns the match count. */
|
|
61
|
+
ApplySearch(query: string): number;
|
|
62
|
+
private buildTagRows;
|
|
63
|
+
private buildTagCloud;
|
|
64
|
+
private buildTagsBySource;
|
|
65
|
+
FilterTags(): void;
|
|
66
|
+
/** Drill down into content items matching a specific tag. */
|
|
67
|
+
DrillDownTag(tagName: string): void;
|
|
68
|
+
CloseDrillDownTag(): void;
|
|
69
|
+
private countAllTags;
|
|
70
|
+
/** Compute average weight per tag across all occurrences. */
|
|
71
|
+
private computeAvgWeights;
|
|
72
|
+
private getTopSourcePerTag;
|
|
73
|
+
private getFirstSeenPerTag;
|
|
74
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ClassifyTagsTabComponent, never>;
|
|
75
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ClassifyTagsTabComponent, "classify-tags-tab", never, { "ContentTags": { "alias": "ContentTags"; "required": false; }; "ContentItems": { "alias": "ContentItems"; "required": false; }; }, { "OpenItemDetailRequested": "OpenItemDetailRequested"; }, never, never, false, never>;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
78
|
+
//# sourceMappingURL=tags-tab.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-tab.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/tags-tab.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAgC,YAAY,EAAyB,MAAM,eAAe,CAAC;AAElG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsC,MAAM,2BAA2B,CAAC;;AAE1G,8EAA8E;AAC9E,UAAU,gBAAgB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAMa,wBAAyB,SAAQ,oBAAoB;IAC9D,OAAO,CAAC,GAAG,CAA6B;IAExC,kFAAkF;IAClF,OAAO,CAAC,YAAY,CAAiC;IACrD,IACI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAG/C;IACD,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3C;IAED,oFAAoF;IACpF,OAAO,CAAC,aAAa,CAAiC;IACtD,IACI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAGhD;IACD,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE5C;IAED,mEAAmE;IAC5D,SAAS,UAAS;IAElB,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,eAAe,EAAE,MAAM,EAAE,CAAM;IAC/B,iBAAiB,EAAE,aAAa,EAAE,CAAM;IACxC,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,cAAc,SAAM;IACpB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC3C,iBAAiB,EAAE,gBAAgB,EAAE,CAAM;IAElD,gFAAgF;IAChF,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAGD,SAAgB,WAAW,qBAAe;IAC1C,SAAgB,YAAY,sBAAgB;IAE5C,8EAA8E;IACpE,uBAAuB,uBAA8B;IAExD,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIpD,+DAA+D;IAC/D,OAAO,CAAC,OAAO;IAOf;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,2GAA2G;IACpG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQzC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,iBAAiB;IAelB,UAAU,IAAI,IAAI;IAQzB,6DAA6D;IACtD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAwCnC,iBAAiB,IAAI,IAAI;IAQhC,OAAO,CAAC,YAAY;IASpB,6DAA6D;IAC7D,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,kBAAkB;yCArPjB,wBAAwB;2CAAxB,wBAAwB;CAgQpC"}
|