@memberjunction/ng-dashboards 5.34.0 → 5.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +399 -292
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
- package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
- package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
- package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
- 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 +104 -103
- package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
- package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
- 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 +12 -19
- 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 +96 -203
- 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.map +1 -1
- package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
- 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.map +1 -1
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
- package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +17 -0
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +370 -425
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +317 -357
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +403 -362
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +781 -783
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +6 -0
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +79 -30
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +196 -142
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/index.d.ts +0 -1
- package/dist/Actions/components/explorer/index.d.ts.map +1 -1
- package/dist/Actions/components/explorer/index.js +0 -1
- package/dist/Actions/components/explorer/index.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +32 -40
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +32 -40
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +32 -40
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-config-resource.component.js +24 -5
- package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
- package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
- package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +80 -99
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +127 -106
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +44 -45
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +60 -58
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +139 -162
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +6 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +521 -485
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts +8 -0
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +309 -318
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +866 -847
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +182 -163
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +241 -241
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +1 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +28 -1
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +486 -532
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +152 -160
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +234 -246
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +1248 -1338
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +1 -1
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +34 -1
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Permissions/audit-log-resource.component.js +76 -85
- package/dist/Permissions/audit-log-resource.component.js.map +1 -1
- package/dist/Permissions/resource-access-resource.component.js +64 -69
- package/dist/Permissions/resource-access-resource.component.js.map +1 -1
- package/dist/Permissions/user-access-resource.component.js +63 -74
- package/dist/Permissions/user-access-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
- package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -0
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
- package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +420 -393
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
- package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +587 -608
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +9 -12
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts +3 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +310 -274
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +16 -19
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.d.ts +3 -1
- package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +307 -273
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -0
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +107 -93
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +185 -188
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +154 -184
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +350 -354
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +163 -169
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/actions-dashboards.module.d.ts +15 -16
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +34 -11
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +45 -48
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +36 -10
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/archiving-dashboards.module.d.ts +2 -1
- package/dist/archiving-dashboards.module.d.ts.map +1 -1
- package/dist/archiving-dashboards.module.js +12 -2
- package/dist/archiving-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +2 -1
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +24 -3
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +31 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +1 -1
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +28 -1
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +1 -1
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +28 -1
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -3
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +1 -1
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +31 -1
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +8 -7
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +30 -0
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +52 -52
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
- package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
- package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
- package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
- package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
- package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
|
@@ -9,73 +9,111 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
|
9
9
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@memberjunction/ng-ui-components";
|
|
12
|
-
function
|
|
13
|
-
const
|
|
14
|
-
i0.ɵɵelementStart(0, "
|
|
15
|
-
i0.ɵɵ
|
|
12
|
+
function AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
14
|
+
i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
|
|
15
|
+
i0.ɵɵtext(2, "Model");
|
|
16
16
|
i0.ɵɵelementEnd();
|
|
17
|
+
i0.ɵɵelementStart(3, "mj-dropdown", 10);
|
|
18
|
+
i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnModelChange($event)); });
|
|
19
|
+
i0.ɵɵelementEnd()();
|
|
17
20
|
} if (rf & 2) {
|
|
18
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
21
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
22
|
+
i0.ɵɵadvance(3);
|
|
19
23
|
i0.ɵɵproperty("Data", ctx_r1.ModelOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.modelDefaultItem)("Filterable", ctx_r1.ModelOptions.length > 10);
|
|
20
24
|
} }
|
|
21
|
-
function
|
|
22
|
-
const
|
|
23
|
-
i0.ɵɵelementStart(0, "
|
|
24
|
-
i0.ɵɵ
|
|
25
|
+
function AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
27
|
+
i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
|
|
28
|
+
i0.ɵɵtext(2, "Agent");
|
|
25
29
|
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵelementStart(3, "mj-dropdown", 11);
|
|
31
|
+
i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnAgentChange($event)); });
|
|
32
|
+
i0.ɵɵelementEnd()();
|
|
26
33
|
} if (rf & 2) {
|
|
27
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
34
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
35
|
+
i0.ɵɵadvance(3);
|
|
28
36
|
i0.ɵɵproperty("Data", ctx_r1.AgentOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.agentDefaultItem)("Filterable", ctx_r1.AgentOptions.length > 10);
|
|
29
37
|
} }
|
|
30
|
-
function
|
|
31
|
-
const
|
|
32
|
-
i0.ɵɵelementStart(0, "
|
|
33
|
-
i0.ɵɵ
|
|
38
|
+
function AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
40
|
+
i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
|
|
41
|
+
i0.ɵɵtext(2, "Prompt");
|
|
34
42
|
i0.ɵɵelementEnd();
|
|
43
|
+
i0.ɵɵelementStart(3, "mj-dropdown", 12);
|
|
44
|
+
i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPromptChange($event)); });
|
|
45
|
+
i0.ɵɵelementEnd()();
|
|
35
46
|
} if (rf & 2) {
|
|
36
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
47
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
48
|
+
i0.ɵɵadvance(3);
|
|
37
49
|
i0.ɵɵproperty("Data", ctx_r1.PromptOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.promptDefaultItem)("Filterable", ctx_r1.PromptOptions.length > 10);
|
|
38
50
|
} }
|
|
39
|
-
function
|
|
40
|
-
const
|
|
41
|
-
i0.ɵɵelementStart(0, "
|
|
42
|
-
i0.ɵɵ
|
|
51
|
+
function AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
53
|
+
i0.ɵɵelementStart(0, "label", 8)(1, "span", 9);
|
|
54
|
+
i0.ɵɵtext(2, "Status");
|
|
43
55
|
i0.ɵɵelementEnd();
|
|
56
|
+
i0.ɵɵelementStart(3, "mj-dropdown", 13);
|
|
57
|
+
i0.ɵɵlistener("ValueChange", function AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template_mj_dropdown_ValueChange_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnStatusChange($event)); });
|
|
58
|
+
i0.ɵɵelementEnd()();
|
|
44
59
|
} if (rf & 2) {
|
|
45
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
60
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
61
|
+
i0.ɵɵadvance(3);
|
|
46
62
|
i0.ɵɵproperty("Data", ctx_r1.StatusOptions)("ValuePrimitive", true)("DefaultItem", ctx_r1.statusDefaultItem);
|
|
47
63
|
} }
|
|
48
|
-
function
|
|
49
|
-
const
|
|
50
|
-
i0.ɵɵelementStart(0, "
|
|
51
|
-
i0.ɵɵlistener("
|
|
52
|
-
i0.ɵɵ
|
|
64
|
+
function AnalyticsFilterBarComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
66
|
+
i0.ɵɵelementStart(0, "mj-filter-popover", 6);
|
|
67
|
+
i0.ɵɵlistener("ClearAllRequested", function AnalyticsFilterBarComponent_Conditional_1_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClearAllFilters()); });
|
|
68
|
+
i0.ɵɵelementStart(1, "div", 7);
|
|
69
|
+
i0.ɵɵconditionalCreate(2, AnalyticsFilterBarComponent_Conditional_1_Conditional_2_Template, 4, 4, "label", 8);
|
|
70
|
+
i0.ɵɵconditionalCreate(3, AnalyticsFilterBarComponent_Conditional_1_Conditional_3_Template, 4, 4, "label", 8);
|
|
71
|
+
i0.ɵɵconditionalCreate(4, AnalyticsFilterBarComponent_Conditional_1_Conditional_4_Template, 4, 4, "label", 8);
|
|
72
|
+
i0.ɵɵconditionalCreate(5, AnalyticsFilterBarComponent_Conditional_1_Conditional_5_Template, 4, 3, "label", 8);
|
|
73
|
+
i0.ɵɵelementEnd()();
|
|
74
|
+
} if (rf & 2) {
|
|
75
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
76
|
+
i0.ɵɵproperty("ActiveCount", ctx_r1.ActiveFilterCount)("ShowClearAll", ctx_r1.ActiveFilterCount > 0);
|
|
77
|
+
i0.ɵɵadvance(2);
|
|
78
|
+
i0.ɵɵconditional(ctx_r1.ShowModelFilter ? 2 : -1);
|
|
79
|
+
i0.ɵɵadvance();
|
|
80
|
+
i0.ɵɵconditional(ctx_r1.ShowAgentFilter ? 3 : -1);
|
|
81
|
+
i0.ɵɵadvance();
|
|
82
|
+
i0.ɵɵconditional(ctx_r1.ShowPromptFilter ? 4 : -1);
|
|
83
|
+
i0.ɵɵadvance();
|
|
84
|
+
i0.ɵɵconditional(ctx_r1.ShowStatusFilter ? 5 : -1);
|
|
85
|
+
} }
|
|
86
|
+
function AnalyticsFilterBarComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "button", 14);
|
|
89
|
+
i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ToggleCompare()); });
|
|
90
|
+
i0.ɵɵelement(1, "i", 15);
|
|
53
91
|
i0.ɵɵtext(2, " Compare ");
|
|
54
92
|
i0.ɵɵelementEnd();
|
|
55
93
|
} if (rf & 2) {
|
|
56
94
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
57
95
|
i0.ɵɵclassProp("active", ctx_r1.compareActive);
|
|
58
96
|
} }
|
|
59
|
-
function
|
|
60
|
-
const
|
|
61
|
-
i0.ɵɵelementStart(0, "button",
|
|
62
|
-
i0.ɵɵlistener("click", function
|
|
63
|
-
i0.ɵɵelement(1, "i",
|
|
97
|
+
function AnalyticsFilterBarComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
99
|
+
i0.ɵɵelementStart(0, "button", 16);
|
|
100
|
+
i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ExportClicked.emit()); });
|
|
101
|
+
i0.ɵɵelement(1, "i", 17);
|
|
64
102
|
i0.ɵɵtext(2, " Export ");
|
|
65
103
|
i0.ɵɵelementEnd();
|
|
66
104
|
} }
|
|
67
|
-
function
|
|
68
|
-
const
|
|
69
|
-
i0.ɵɵelementStart(0, "button",
|
|
70
|
-
i0.ɵɵlistener("click", function
|
|
105
|
+
function AnalyticsFilterBarComponent_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
107
|
+
i0.ɵɵelementStart(0, "button", 18);
|
|
108
|
+
i0.ɵɵlistener("click", function AnalyticsFilterBarComponent_For_6_Template_button_click_0_listener() { const option_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnTimeRangeSelect(option_r10)); });
|
|
71
109
|
i0.ɵɵtext(1);
|
|
72
110
|
i0.ɵɵelementEnd();
|
|
73
111
|
} if (rf & 2) {
|
|
74
|
-
const
|
|
112
|
+
const option_r10 = ctx.$implicit;
|
|
75
113
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
76
|
-
i0.ɵɵclassProp("active", ctx_r1.TimeRange ===
|
|
114
|
+
i0.ɵɵclassProp("active", ctx_r1.TimeRange === option_r10);
|
|
77
115
|
i0.ɵɵadvance();
|
|
78
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
116
|
+
i0.ɵɵtextInterpolate1(" ", option_r10, " ");
|
|
79
117
|
} }
|
|
80
118
|
export class AnalyticsFilterBarComponent {
|
|
81
119
|
TimeRange = '24h';
|
|
@@ -107,6 +145,19 @@ export class AnalyticsFilterBarComponent {
|
|
|
107
145
|
promptDefaultItem = { text: 'All Prompts', value: '' };
|
|
108
146
|
statusDefaultItem = { text: 'All Statuses', value: '' };
|
|
109
147
|
compareActive = false;
|
|
148
|
+
/** True when at least one of the filter dropdowns is enabled — drives whether to render the popover trigger. */
|
|
149
|
+
get HasFilterDropdowns() {
|
|
150
|
+
return this.ShowModelFilter || this.ShowAgentFilter || this.ShowPromptFilter || this.ShowStatusFilter;
|
|
151
|
+
}
|
|
152
|
+
/** Number of active filter selections — drives the popover badge. */
|
|
153
|
+
get ActiveFilterCount() {
|
|
154
|
+
const f = this.Filters ?? { Models: [], Agents: [], Prompts: [], Statuses: [] };
|
|
155
|
+
return (f.Models?.length ?? 0) + (f.Agents?.length ?? 0) + (f.Prompts?.length ?? 0) + (f.Statuses?.length ?? 0);
|
|
156
|
+
}
|
|
157
|
+
ClearAllFilters() {
|
|
158
|
+
this.Filters = { Models: [], Agents: [], Prompts: [], Statuses: [] };
|
|
159
|
+
this.FiltersChange.emit(this.Filters);
|
|
160
|
+
}
|
|
110
161
|
ngOnInit() {
|
|
111
162
|
this.BuildOptions();
|
|
112
163
|
}
|
|
@@ -152,116 +203,114 @@ export class AnalyticsFilterBarComponent {
|
|
|
152
203
|
.sort((a, b) => a.text.localeCompare(b.text));
|
|
153
204
|
}
|
|
154
205
|
static ɵfac = function AnalyticsFilterBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AnalyticsFilterBarComponent)(); };
|
|
155
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsFilterBarComponent, selectors: [["app-analytics-filter-bar"]], inputs: { TimeRange: "TimeRange", TimeRangeOptions: "TimeRangeOptions", ShowModelFilter: "ShowModelFilter", ShowAgentFilter: "ShowAgentFilter", ShowPromptFilter: "ShowPromptFilter", ShowStatusFilter: "ShowStatusFilter", ShowCompareToggle: "ShowCompareToggle", ShowExportButton: "ShowExportButton", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange", CompareToggled: "CompareToggled", ExportClicked: "ExportClicked" }, standalone: false, decls:
|
|
156
|
-
i0.ɵɵelementStart(0, "div", 0)
|
|
157
|
-
i0.ɵɵ
|
|
158
|
-
i0.ɵɵ
|
|
159
|
-
i0.ɵɵ
|
|
160
|
-
i0.ɵɵ
|
|
161
|
-
i0.ɵɵ
|
|
162
|
-
i0.ɵɵconditionalCreate(7, AnalyticsFilterBarComponent_Conditional_7_Template, 1, 4, "mj-dropdown", 6);
|
|
163
|
-
i0.ɵɵconditionalCreate(8, AnalyticsFilterBarComponent_Conditional_8_Template, 1, 3, "mj-dropdown", 7);
|
|
164
|
-
i0.ɵɵconditionalCreate(9, AnalyticsFilterBarComponent_Conditional_9_Template, 3, 2, "button", 8);
|
|
165
|
-
i0.ɵɵconditionalCreate(10, AnalyticsFilterBarComponent_Conditional_10_Template, 3, 0, "button", 9);
|
|
166
|
-
i0.ɵɵelementEnd();
|
|
167
|
-
i0.ɵɵelementStart(11, "div", 10);
|
|
168
|
-
i0.ɵɵrepeaterCreate(12, AnalyticsFilterBarComponent_For_13_Template, 2, 3, "button", 11, i0.ɵɵrepeaterTrackByIdentity);
|
|
206
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AnalyticsFilterBarComponent, selectors: [["app-analytics-filter-bar"]], inputs: { TimeRange: "TimeRange", TimeRangeOptions: "TimeRangeOptions", ShowModelFilter: "ShowModelFilter", ShowAgentFilter: "ShowAgentFilter", ShowPromptFilter: "ShowPromptFilter", ShowStatusFilter: "ShowStatusFilter", ShowCompareToggle: "ShowCompareToggle", ShowExportButton: "ShowExportButton", Filters: "Filters" }, outputs: { TimeRangeChange: "TimeRangeChange", FiltersChange: "FiltersChange", CompareToggled: "CompareToggled", ExportClicked: "ExportClicked" }, standalone: false, decls: 7, vars: 3, consts: [[1, "filter-bar"], [3, "ActiveCount", "ShowClearAll"], [1, "compare-btn", 3, "active"], [1, "export-btn"], [1, "time-chips"], [1, "time-chip", 3, "active"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [1, "popover-fields"], [1, "popover-field"], [1, "popover-field-label"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Models", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Agents", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Prompts", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem", "Filterable"], ["TextField", "text", "ValueField", "value", "Placeholder", "All Statuses", 3, "ValueChange", "Data", "ValuePrimitive", "DefaultItem"], [1, "compare-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "export-btn", 3, "click"], [1, "fa-solid", "fa-download"], [1, "time-chip", 3, "click"]], template: function AnalyticsFilterBarComponent_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
208
|
+
i0.ɵɵconditionalCreate(1, AnalyticsFilterBarComponent_Conditional_1_Template, 6, 6, "mj-filter-popover", 1);
|
|
209
|
+
i0.ɵɵconditionalCreate(2, AnalyticsFilterBarComponent_Conditional_2_Template, 3, 2, "button", 2);
|
|
210
|
+
i0.ɵɵconditionalCreate(3, AnalyticsFilterBarComponent_Conditional_3_Template, 3, 0, "button", 3);
|
|
211
|
+
i0.ɵɵelementStart(4, "div", 4);
|
|
212
|
+
i0.ɵɵrepeaterCreate(5, AnalyticsFilterBarComponent_For_6_Template, 2, 3, "button", 5, i0.ɵɵrepeaterTrackByIdentity);
|
|
169
213
|
i0.ɵɵelementEnd()();
|
|
170
214
|
} if (rf & 2) {
|
|
171
|
-
i0.ɵɵadvance(5);
|
|
172
|
-
i0.ɵɵconditional(ctx.ShowModelFilter ? 5 : -1);
|
|
173
|
-
i0.ɵɵadvance();
|
|
174
|
-
i0.ɵɵconditional(ctx.ShowAgentFilter ? 6 : -1);
|
|
175
215
|
i0.ɵɵadvance();
|
|
176
|
-
i0.ɵɵconditional(ctx.
|
|
216
|
+
i0.ɵɵconditional(ctx.HasFilterDropdowns ? 1 : -1);
|
|
177
217
|
i0.ɵɵadvance();
|
|
178
|
-
i0.ɵɵconditional(ctx.
|
|
218
|
+
i0.ɵɵconditional(ctx.ShowCompareToggle ? 2 : -1);
|
|
179
219
|
i0.ɵɵadvance();
|
|
180
|
-
i0.ɵɵconditional(ctx.
|
|
181
|
-
i0.ɵɵadvance();
|
|
182
|
-
i0.ɵɵconditional(ctx.ShowExportButton ? 10 : -1);
|
|
220
|
+
i0.ɵɵconditional(ctx.ShowExportButton ? 3 : -1);
|
|
183
221
|
i0.ɵɵadvance(2);
|
|
184
222
|
i0.ɵɵrepeater(ctx.TimeRangeOptions);
|
|
185
|
-
} }, dependencies: [i1.MJDropdownComponent], styles: [".filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap:
|
|
223
|
+
} }, dependencies: [i1.MJDropdownComponent, i1.MJFilterPopoverComponent], styles: ["\n\n .filter-bar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n \n\n .popover-fields[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field [_nghost-%COMP%] mj-dropdown, \n [_nghost-%COMP%] .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn[_ngcontent-%COMP%], \n .export-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn[_ngcontent-%COMP%]:hover, \n .export-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .time-chips[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .time-chip[_ngcontent-%COMP%] {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n @media (max-width: 768px) {\n .filter-bar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips[_ngcontent-%COMP%] {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }"] });
|
|
186
224
|
}
|
|
187
225
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnalyticsFilterBarComponent, [{
|
|
188
226
|
type: Component,
|
|
189
227
|
args: [{ standalone: false, selector: 'app-analytics-filter-bar', template: `
|
|
190
228
|
<div class="filter-bar">
|
|
191
|
-
|
|
192
|
-
<
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
229
|
+
@if (HasFilterDropdowns) {
|
|
230
|
+
<mj-filter-popover
|
|
231
|
+
[ActiveCount]="ActiveFilterCount"
|
|
232
|
+
[ShowClearAll]="ActiveFilterCount > 0"
|
|
233
|
+
(ClearAllRequested)="ClearAllFilters()">
|
|
234
|
+
<div class="popover-fields">
|
|
235
|
+
@if (ShowModelFilter) {
|
|
236
|
+
<label class="popover-field">
|
|
237
|
+
<span class="popover-field-label">Model</span>
|
|
238
|
+
<mj-dropdown
|
|
239
|
+
[Data]="ModelOptions"
|
|
240
|
+
TextField="text"
|
|
241
|
+
ValueField="value"
|
|
242
|
+
[ValuePrimitive]="true"
|
|
243
|
+
[DefaultItem]="modelDefaultItem"
|
|
244
|
+
[Filterable]="ModelOptions.length > 10"
|
|
245
|
+
Placeholder="All Models"
|
|
246
|
+
(ValueChange)="OnModelChange($event)">
|
|
247
|
+
</mj-dropdown>
|
|
248
|
+
</label>
|
|
249
|
+
}
|
|
250
|
+
@if (ShowAgentFilter) {
|
|
251
|
+
<label class="popover-field">
|
|
252
|
+
<span class="popover-field-label">Agent</span>
|
|
253
|
+
<mj-dropdown
|
|
254
|
+
[Data]="AgentOptions"
|
|
255
|
+
TextField="text"
|
|
256
|
+
ValueField="value"
|
|
257
|
+
[ValuePrimitive]="true"
|
|
258
|
+
[DefaultItem]="agentDefaultItem"
|
|
259
|
+
[Filterable]="AgentOptions.length > 10"
|
|
260
|
+
Placeholder="All Agents"
|
|
261
|
+
(ValueChange)="OnAgentChange($event)">
|
|
262
|
+
</mj-dropdown>
|
|
263
|
+
</label>
|
|
264
|
+
}
|
|
265
|
+
@if (ShowPromptFilter) {
|
|
266
|
+
<label class="popover-field">
|
|
267
|
+
<span class="popover-field-label">Prompt</span>
|
|
268
|
+
<mj-dropdown
|
|
269
|
+
[Data]="PromptOptions"
|
|
270
|
+
TextField="text"
|
|
271
|
+
ValueField="value"
|
|
272
|
+
[ValuePrimitive]="true"
|
|
273
|
+
[DefaultItem]="promptDefaultItem"
|
|
274
|
+
[Filterable]="PromptOptions.length > 10"
|
|
275
|
+
Placeholder="All Prompts"
|
|
276
|
+
(ValueChange)="OnPromptChange($event)">
|
|
277
|
+
</mj-dropdown>
|
|
278
|
+
</label>
|
|
279
|
+
}
|
|
280
|
+
@if (ShowStatusFilter) {
|
|
281
|
+
<label class="popover-field">
|
|
282
|
+
<span class="popover-field-label">Status</span>
|
|
283
|
+
<mj-dropdown
|
|
284
|
+
[Data]="StatusOptions"
|
|
285
|
+
TextField="text"
|
|
286
|
+
ValueField="value"
|
|
287
|
+
[ValuePrimitive]="true"
|
|
288
|
+
[DefaultItem]="statusDefaultItem"
|
|
289
|
+
Placeholder="All Statuses"
|
|
290
|
+
(ValueChange)="OnStatusChange($event)">
|
|
291
|
+
</mj-dropdown>
|
|
292
|
+
</label>
|
|
293
|
+
}
|
|
294
|
+
</div>
|
|
295
|
+
</mj-filter-popover>
|
|
296
|
+
}
|
|
196
297
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
(ValueChange)="OnModelChange($event)">
|
|
207
|
-
</mj-dropdown>
|
|
208
|
-
}
|
|
298
|
+
@if (ShowCompareToggle) {
|
|
299
|
+
<button
|
|
300
|
+
class="compare-btn"
|
|
301
|
+
[class.active]="compareActive"
|
|
302
|
+
(click)="ToggleCompare()">
|
|
303
|
+
<i class="fa-solid fa-code-compare"></i>
|
|
304
|
+
Compare
|
|
305
|
+
</button>
|
|
306
|
+
}
|
|
209
307
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
[DefaultItem]="agentDefaultItem"
|
|
217
|
-
[Filterable]="AgentOptions.length > 10"
|
|
218
|
-
Placeholder="All Agents"
|
|
219
|
-
(ValueChange)="OnAgentChange($event)">
|
|
220
|
-
</mj-dropdown>
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
@if (ShowPromptFilter) {
|
|
224
|
-
<mj-dropdown
|
|
225
|
-
[Data]="PromptOptions"
|
|
226
|
-
TextField="text"
|
|
227
|
-
ValueField="value"
|
|
228
|
-
[ValuePrimitive]="true"
|
|
229
|
-
[DefaultItem]="promptDefaultItem"
|
|
230
|
-
[Filterable]="PromptOptions.length > 10"
|
|
231
|
-
Placeholder="All Prompts"
|
|
232
|
-
(ValueChange)="OnPromptChange($event)">
|
|
233
|
-
</mj-dropdown>
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
@if (ShowStatusFilter) {
|
|
237
|
-
<mj-dropdown
|
|
238
|
-
[Data]="StatusOptions"
|
|
239
|
-
TextField="text"
|
|
240
|
-
ValueField="value"
|
|
241
|
-
[ValuePrimitive]="true"
|
|
242
|
-
[DefaultItem]="statusDefaultItem"
|
|
243
|
-
Placeholder="All Statuses"
|
|
244
|
-
(ValueChange)="OnStatusChange($event)">
|
|
245
|
-
</mj-dropdown>
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
@if (ShowCompareToggle) {
|
|
249
|
-
<button
|
|
250
|
-
class="compare-btn"
|
|
251
|
-
[class.active]="compareActive"
|
|
252
|
-
(click)="ToggleCompare()">
|
|
253
|
-
<i class="fa-solid fa-code-compare"></i>
|
|
254
|
-
Compare
|
|
255
|
-
</button>
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
@if (ShowExportButton) {
|
|
259
|
-
<button class="export-btn" (click)="ExportClicked.emit()">
|
|
260
|
-
<i class="fa-solid fa-download"></i>
|
|
261
|
-
Export
|
|
262
|
-
</button>
|
|
263
|
-
}
|
|
264
|
-
</div>
|
|
308
|
+
@if (ShowExportButton) {
|
|
309
|
+
<button class="export-btn" (click)="ExportClicked.emit()">
|
|
310
|
+
<i class="fa-solid fa-download"></i>
|
|
311
|
+
Export
|
|
312
|
+
</button>
|
|
313
|
+
}
|
|
265
314
|
|
|
266
315
|
<div class="time-chips">
|
|
267
316
|
@for (option of TimeRangeOptions; track option) {
|
|
@@ -274,7 +323,7 @@ export class AnalyticsFilterBarComponent {
|
|
|
274
323
|
}
|
|
275
324
|
</div>
|
|
276
325
|
</div>
|
|
277
|
-
`, styles: ["\n .filter-bar {\n display: flex;\n align-items: center;\n gap:
|
|
326
|
+
`, styles: ["\n /* Filter bar renders inline inside <mj-page-header>'s actions slot \u2014 no wrapper card. */\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Popover panel content \u2014 stacked labeled fields */\n .popover-fields {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field :host ::ng-deep mj-dropdown,\n :host ::ng-deep .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .time-chip {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n @media (max-width: 768px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }\n "] }]
|
|
278
327
|
}], null, { TimeRange: [{
|
|
279
328
|
type: Input
|
|
280
329
|
}], TimeRangeOptions: [{
|
|
@@ -302,5 +351,5 @@ export class AnalyticsFilterBarComponent {
|
|
|
302
351
|
}], ExportClicked: [{
|
|
303
352
|
type: Output
|
|
304
353
|
}] }); })();
|
|
305
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsFilterBarComponent, { className: "AnalyticsFilterBarComponent", filePath: "src/AI/components/analytics/analytics-filter-bar.component.ts", lineNumber:
|
|
354
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AnalyticsFilterBarComponent, { className: "AnalyticsFilterBarComponent", filePath: "src/AI/components/analytics/analytics-filter-bar.component.ts", lineNumber: 232 }); })();
|
|
306
355
|
//# sourceMappingURL=analytics-filter-bar.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-filter-bar.component.js","sourceRoot":"","sources":["../../../../src/AI/components/analytics/analytics-filter-bar.component.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAU,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;;;;;IAqB1C,uCAQ0C;IAAtC,sNAAe,4BAAqB,KAAC;IACzC,iBAAc;;;IAHV,AADA,AADA,AAHA,0CAAqB,wBAGE,wCACS,+CACO;;;;IAO3C,uCAQ0C;IAAtC,sNAAe,4BAAqB,KAAC;IACzC,iBAAc;;;IAHV,AADA,AADA,AAHA,0CAAqB,wBAGE,wCACS,+CACO;;;;IAO3C,uCAQ2C;IAAvC,sNAAe,6BAAsB,KAAC;IAC1C,iBAAc;;;IAHV,AADA,AADA,AAHA,2CAAsB,wBAGC,yCACU,gDACO;;;;IAO5C,uCAO2C;IAAvC,sNAAe,6BAAsB,KAAC;IAC1C,iBAAc;;;IAHV,AADA,AAHA,2CAAsB,wBAGC,yCACU;;;;IAOrC,kCAG8B;IAA1B,+LAAS,sBAAe,KAAC;IACzB,wBAAwC;IACxC,yBACJ;IAAA,iBAAS;;;IAJL,8CAA8B;;;;IAQlC,kCAA0D;IAA/B,gMAAS,2BAAoB,KAAC;IACrD,wBAAoC;IACpC,wBACJ;IAAA,iBAAS;;;;IAMT,kCAGwC;IAApC,oNAAS,mCAAyB,KAAC;IACnC,YACJ;IAAA,iBAAS;;;;IAHL,wDAAqC;IAErC,cACJ;IADI,0CACJ;;AA2HpB,MAAM,OAAO,2BAA2B;IAC3B,SAAS,GAAG,KAAK,CAAC;IAClB,gBAAgB,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,eAAe,GAAG,IAAI,CAAC;IACvB,eAAe,GAAG,IAAI,CAAC;IACvB,gBAAgB,GAAG,IAAI,CAAC;IACxB,gBAAgB,GAAG,IAAI,CAAC;IACxB,iBAAiB,GAAG,IAAI,CAAC;IACzB,gBAAgB,GAAG,KAAK,CAAC;IACzB,OAAO,GAAsB,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAElF,eAAe,GAAG,IAAI,YAAY,EAAU,CAAC;IAC7C,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;IACtD,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;IAC7C,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE5C,YAAY,GAAmB,EAAE,CAAC;IAClC,YAAY,GAAmB,EAAE,CAAC;IAClC,aAAa,GAAmB,EAAE,CAAC;IACnC,aAAa,GAAmB;QACnC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;QACjC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;QACrC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;KAC1C,CAAC;IAEF,wEAAwE;IACjE,gBAAgB,GAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,gBAAgB,GAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACnE,iBAAiB,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACrE,iBAAiB,GAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEtE,aAAa,GAAG,KAAK,CAAC;IAE7B,QAAQ;QACJ,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,iBAAiB,CAAC,KAAa;QAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,aAAa,CAAC,KAAc;QAC/B,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa,CAAC,KAAc;QAC/B,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,cAAc,CAAC,KAAc;QAChC,MAAM,EAAE,GAAI,KAAgB,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,cAAc,CAAC,KAAc;QAChC,MAAM,MAAM,GAAI,KAAgB,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEM,aAAa;QAChB,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjD,CAAC;IAEO,YAAY;QAChB,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC;QAErC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM;aAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;qHAxFQ,2BAA2B;6DAA3B,2BAA2B;YA5MxB,AADJ,AADJ,8BAAwB,aACS,cACE;YACvB,uBAAkC;YAClC,0BACJ;YAAA,iBAAO;YAEP,qGAAuB;YAavB,qGAAuB;YAavB,qGAAwB;YAaxB,qGAAwB;YAYxB,gGAAyB;YAUzB,kGAAwB;YAM5B,iBAAM;YAEN,gCAAwB;YACpB,sHAOC;YAET,AADI,iBAAM,EACJ;;YA/EE,eAWC;YAXD,8CAWC;YAED,cAWC;YAXD,8CAWC;YAED,cAWC;YAXD,+CAWC;YAED,cAUC;YAVD,+CAUC;YAED,cAQC;YARD,gDAQC;YAED,cAKC;YALD,gDAKC;YAID,eAOC;YAPD,mCAOC;;;iFA0HJ,2BAA2B;cAlNvC,SAAS;6BACM,KAAK,YACP,0BAA0B,YAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwFT;;kBAwHA,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kBACN,MAAM;;kFAdE,2BAA2B","sourcesContent":["/**\n * @fileoverview Reusable filter bar for AI Analytics dashboard sections.\n *\n * Provides time-range chips, model/agent/prompt/status dropdowns\n * (using mj-dropdown), a compare toggle, and an optional export button.\n * Each section shows/hides filters via boolean inputs.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { GlobalFilterState } from '../../interfaces/analytics-preferences.interface';\n\ninterface FilterOption {\n text: string;\n value: string;\n [key: string]: unknown;\n}\n\n@Component({\n standalone: false,\n selector: 'app-analytics-filter-bar',\n template: `\n <div class=\"filter-bar\">\n <div class=\"filter-controls\">\n <span class=\"filter-label\">\n <i class=\"fa-solid fa-filter\"></i>\n Filters:\n </span>\n\n @if (ShowModelFilter) {\n <mj-dropdown\n [Data]=\"ModelOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"modelDefaultItem\"\n [Filterable]=\"ModelOptions.length > 10\"\n Placeholder=\"All Models\"\n (ValueChange)=\"OnModelChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowAgentFilter) {\n <mj-dropdown\n [Data]=\"AgentOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"agentDefaultItem\"\n [Filterable]=\"AgentOptions.length > 10\"\n Placeholder=\"All Agents\"\n (ValueChange)=\"OnAgentChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowPromptFilter) {\n <mj-dropdown\n [Data]=\"PromptOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"promptDefaultItem\"\n [Filterable]=\"PromptOptions.length > 10\"\n Placeholder=\"All Prompts\"\n (ValueChange)=\"OnPromptChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowStatusFilter) {\n <mj-dropdown\n [Data]=\"StatusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"statusDefaultItem\"\n Placeholder=\"All Statuses\"\n (ValueChange)=\"OnStatusChange($event)\">\n </mj-dropdown>\n }\n\n @if (ShowCompareToggle) {\n <button\n class=\"compare-btn\"\n [class.active]=\"compareActive\"\n (click)=\"ToggleCompare()\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Compare\n </button>\n }\n\n @if (ShowExportButton) {\n <button class=\"export-btn\" (click)=\"ExportClicked.emit()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n }\n </div>\n\n <div class=\"time-chips\">\n @for (option of TimeRangeOptions; track option) {\n <button\n class=\"time-chip\"\n [class.active]=\"TimeRange === option\"\n (click)=\"OnTimeRangeSelect(option)\">\n {{ option }}\n </button>\n }\n </div>\n </div>\n `,\n styles: [`\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 12px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n padding: 12px 16px;\n flex-wrap: wrap;\n }\n\n .filter-controls {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: wrap;\n }\n\n .filter-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n\n .filter-label i {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n :host ::ng-deep mj-dropdown {\n min-width: 160px;\n max-width: 220px;\n }\n\n :host ::ng-deep mj-dropdown .mj-dropdown {\n font-size: 13px;\n border-radius: 6px;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n }\n\n .time-chip {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n @media (max-width: 768px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }\n `]\n})\nexport class AnalyticsFilterBarComponent implements OnInit {\n @Input() TimeRange = '24h';\n @Input() TimeRangeOptions: string[] = ['1h', '6h', '24h', '7d', '30d'];\n @Input() ShowModelFilter = true;\n @Input() ShowAgentFilter = true;\n @Input() ShowPromptFilter = true;\n @Input() ShowStatusFilter = true;\n @Input() ShowCompareToggle = true;\n @Input() ShowExportButton = false;\n @Input() Filters: GlobalFilterState = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n\n @Output() TimeRangeChange = new EventEmitter<string>();\n @Output() FiltersChange = new EventEmitter<GlobalFilterState>();\n @Output() CompareToggled = new EventEmitter<boolean>();\n @Output() ExportClicked = new EventEmitter<void>();\n\n public ModelOptions: FilterOption[] = [];\n public AgentOptions: FilterOption[] = [];\n public PromptOptions: FilterOption[] = [];\n public StatusOptions: FilterOption[] = [\n { text: 'Success', value: 'Success' },\n { text: 'Error', value: 'Error' },\n { text: 'Running', value: 'Running' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Canceled', value: 'Canceled' }\n ];\n\n /** Default items shown when nothing is selected (the \"All X\" option) */\n public modelDefaultItem: FilterOption = { text: 'All Models', value: '' };\n public agentDefaultItem: FilterOption = { text: 'All Agents', value: '' };\n public promptDefaultItem: FilterOption = { text: 'All Prompts', value: '' };\n public statusDefaultItem: FilterOption = { text: 'All Statuses', value: '' };\n\n public compareActive = false;\n\n ngOnInit(): void {\n this.BuildOptions();\n }\n\n public OnTimeRangeSelect(range: string): void {\n this.TimeRange = range;\n this.TimeRangeChange.emit(range);\n }\n\n public OnModelChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Models: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnAgentChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Agents: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnPromptChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Prompts: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnStatusChange(event: unknown): void {\n const status = (event as string) ?? '';\n this.Filters = { ...this.Filters, Statuses: status ? [status] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public ToggleCompare(): void {\n this.compareActive = !this.compareActive;\n this.CompareToggled.emit(this.compareActive);\n }\n\n private BuildOptions(): void {\n const engine = AIEngineBase.Instance;\n\n this.ModelOptions = engine.Models\n .map(m => ({ text: m.Name ?? '', value: m.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.AgentOptions = engine.Agents\n .filter(a => a.Status === 'Active')\n .map(a => ({ text: a.Name ?? '', value: a.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.PromptOptions = engine.Prompts\n .map(p => ({ text: p.Name ?? '', value: p.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"analytics-filter-bar.component.js","sourceRoot":"","sources":["../../../../src/AI/components/analytics/analytics-filter-bar.component.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Reusable filter bar for AI Analytics dashboard sections.\n *\n * Provides time-range chips, model/agent/prompt/status dropdowns\n * (using mj-dropdown), a compare toggle, and an optional export button.\n * Each section shows/hides filters via boolean inputs.\n */\n\nimport { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { GlobalFilterState } from '../../interfaces/analytics-preferences.interface';\n\ninterface FilterOption {\n text: string;\n value: string;\n [key: string]: unknown;\n}\n\n@Component({\n standalone: false,\n selector: 'app-analytics-filter-bar',\n template: `\n <div class=\"filter-bar\">\n @if (HasFilterDropdowns) {\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ClearAllFilters()\">\n <div class=\"popover-fields\">\n @if (ShowModelFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Model</span>\n <mj-dropdown\n [Data]=\"ModelOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"modelDefaultItem\"\n [Filterable]=\"ModelOptions.length > 10\"\n Placeholder=\"All Models\"\n (ValueChange)=\"OnModelChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowAgentFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Agent</span>\n <mj-dropdown\n [Data]=\"AgentOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"agentDefaultItem\"\n [Filterable]=\"AgentOptions.length > 10\"\n Placeholder=\"All Agents\"\n (ValueChange)=\"OnAgentChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowPromptFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Prompt</span>\n <mj-dropdown\n [Data]=\"PromptOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"promptDefaultItem\"\n [Filterable]=\"PromptOptions.length > 10\"\n Placeholder=\"All Prompts\"\n (ValueChange)=\"OnPromptChange($event)\">\n </mj-dropdown>\n </label>\n }\n @if (ShowStatusFilter) {\n <label class=\"popover-field\">\n <span class=\"popover-field-label\">Status</span>\n <mj-dropdown\n [Data]=\"StatusOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [DefaultItem]=\"statusDefaultItem\"\n Placeholder=\"All Statuses\"\n (ValueChange)=\"OnStatusChange($event)\">\n </mj-dropdown>\n </label>\n }\n </div>\n </mj-filter-popover>\n }\n\n @if (ShowCompareToggle) {\n <button\n class=\"compare-btn\"\n [class.active]=\"compareActive\"\n (click)=\"ToggleCompare()\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Compare\n </button>\n }\n\n @if (ShowExportButton) {\n <button class=\"export-btn\" (click)=\"ExportClicked.emit()\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n }\n\n <div class=\"time-chips\">\n @for (option of TimeRangeOptions; track option) {\n <button\n class=\"time-chip\"\n [class.active]=\"TimeRange === option\"\n (click)=\"OnTimeRangeSelect(option)\">\n {{ option }}\n </button>\n }\n </div>\n </div>\n `,\n styles: [`\n /* Filter bar renders inline inside <mj-page-header>'s actions slot — no wrapper card. */\n .filter-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n /* Popover panel content — stacked labeled fields */\n .popover-fields {\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .popover-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .popover-field-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n\n .popover-field :host ::ng-deep mj-dropdown,\n :host ::ng-deep .popover-field mj-dropdown {\n display: block;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .compare-btn,\n .export-btn {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n white-space: nowrap;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n\n .compare-btn:hover,\n .export-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .compare-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n\n .time-chips {\n display: flex;\n align-items: center;\n gap: 4px;\n }\n\n .time-chip {\n padding: 5px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n white-space: nowrap;\n }\n\n .time-chip:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .time-chip.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n @media (max-width: 768px) {\n .filter-bar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .time-chips {\n margin-left: 0;\n justify-content: flex-start;\n flex-wrap: wrap;\n }\n }\n `]\n})\nexport class AnalyticsFilterBarComponent implements OnInit {\n @Input() TimeRange = '24h';\n @Input() TimeRangeOptions: string[] = ['1h', '6h', '24h', '7d', '30d'];\n @Input() ShowModelFilter = true;\n @Input() ShowAgentFilter = true;\n @Input() ShowPromptFilter = true;\n @Input() ShowStatusFilter = true;\n @Input() ShowCompareToggle = true;\n @Input() ShowExportButton = false;\n @Input() Filters: GlobalFilterState = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n\n @Output() TimeRangeChange = new EventEmitter<string>();\n @Output() FiltersChange = new EventEmitter<GlobalFilterState>();\n @Output() CompareToggled = new EventEmitter<boolean>();\n @Output() ExportClicked = new EventEmitter<void>();\n\n public ModelOptions: FilterOption[] = [];\n public AgentOptions: FilterOption[] = [];\n public PromptOptions: FilterOption[] = [];\n public StatusOptions: FilterOption[] = [\n { text: 'Success', value: 'Success' },\n { text: 'Error', value: 'Error' },\n { text: 'Running', value: 'Running' },\n { text: 'Pending', value: 'Pending' },\n { text: 'Canceled', value: 'Canceled' }\n ];\n\n /** Default items shown when nothing is selected (the \"All X\" option) */\n public modelDefaultItem: FilterOption = { text: 'All Models', value: '' };\n public agentDefaultItem: FilterOption = { text: 'All Agents', value: '' };\n public promptDefaultItem: FilterOption = { text: 'All Prompts', value: '' };\n public statusDefaultItem: FilterOption = { text: 'All Statuses', value: '' };\n\n public compareActive = false;\n\n /** True when at least one of the filter dropdowns is enabled — drives whether to render the popover trigger. */\n public get HasFilterDropdowns(): boolean {\n return this.ShowModelFilter || this.ShowAgentFilter || this.ShowPromptFilter || this.ShowStatusFilter;\n }\n\n /** Number of active filter selections — drives the popover badge. */\n public get ActiveFilterCount(): number {\n const f = this.Filters ?? { Models: [], Agents: [], Prompts: [], Statuses: [] };\n return (f.Models?.length ?? 0) + (f.Agents?.length ?? 0) + (f.Prompts?.length ?? 0) + (f.Statuses?.length ?? 0);\n }\n\n public ClearAllFilters(): void {\n this.Filters = { Models: [], Agents: [], Prompts: [], Statuses: [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n ngOnInit(): void {\n this.BuildOptions();\n }\n\n public OnTimeRangeSelect(range: string): void {\n this.TimeRange = range;\n this.TimeRangeChange.emit(range);\n }\n\n public OnModelChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Models: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnAgentChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Agents: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnPromptChange(event: unknown): void {\n const id = (event as string) ?? '';\n this.Filters = { ...this.Filters, Prompts: id ? [id] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public OnStatusChange(event: unknown): void {\n const status = (event as string) ?? '';\n this.Filters = { ...this.Filters, Statuses: status ? [status] : [] };\n this.FiltersChange.emit(this.Filters);\n }\n\n public ToggleCompare(): void {\n this.compareActive = !this.compareActive;\n this.CompareToggled.emit(this.compareActive);\n }\n\n private BuildOptions(): void {\n const engine = AIEngineBase.Instance;\n\n this.ModelOptions = engine.Models\n .map(m => ({ text: m.Name ?? '', value: m.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.AgentOptions = engine.Agents\n .filter(a => a.Status === 'Active')\n .map(a => ({ text: a.Name ?? '', value: a.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n\n this.PromptOptions = engine.Prompts\n .map(p => ({ text: p.Name ?? '', value: p.ID }))\n .sort((a, b) => a.text.localeCompare(b.text));\n }\n}\n"]}
|
|
@@ -42,10 +42,16 @@ interface CostByModelRow {
|
|
|
42
42
|
PercentOfTotal: number;
|
|
43
43
|
}
|
|
44
44
|
export declare class AnalyticsCostBudgetComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
private _timeRange;
|
|
46
|
+
set TimeRange(value: string);
|
|
47
|
+
get TimeRange(): string;
|
|
48
|
+
private _filters;
|
|
49
|
+
set Filters(value: GlobalFilterState);
|
|
50
|
+
get Filters(): GlobalFilterState;
|
|
51
|
+
private shallowFiltersEqual;
|
|
47
52
|
TimeRangeChange: EventEmitter<string>;
|
|
48
53
|
FiltersChange: EventEmitter<GlobalFilterState>;
|
|
54
|
+
private initialized;
|
|
49
55
|
private cdr;
|
|
50
56
|
private destroy$;
|
|
51
57
|
IsLoading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost-budget.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/cost-budget/cost-budget.component.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACuB,YAAY,EACtC,MAAM,EAAE,SAAS,EACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;;AAmBxF,UAAU,OAAO;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,cAAc;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAkBD,
|
|
1
|
+
{"version":3,"file":"cost-budget.component.d.ts","sourceRoot":"","sources":["../../../../../src/AI/components/analytics/cost-budget/cost-budget.component.ts"],"names":[],"mappings":"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"}
|