@memberjunction/ng-dashboards 5.35.0 → 5.37.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.js +3 -3
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -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 +157 -137
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +4 -4
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +3 -3
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +329 -371
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +137 -142
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +111 -116
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +13 -65
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +13 -65
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +13 -65
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/Admin/base-admin-container.component.d.ts +9 -7
- package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
- package/dist/Admin/base-admin-container.component.js +26 -17
- package/dist/Admin/base-admin-container.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
- package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-new-message-resource.component.js +661 -0
- package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
- package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
- 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 +7 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
- package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +46 -72
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -100
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +158 -168
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +257 -264
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.d.ts +5 -0
- package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +46 -64
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/DevTools/lazy-module-status.component.js +75 -84
- package/dist/DevTools/lazy-module-status.component.js.map +1 -1
- package/dist/DevTools/settings-explorer.component.js +76 -85
- package/dist/DevTools/settings-explorer.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +97 -99
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +842 -855
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +78 -89
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +1 -0
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +1 -0
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +236 -10
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +19 -19
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +543 -629
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +50 -49
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +1 -1
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +16 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +9 -7
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +13 -4
- 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 +16 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +10 -9
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +13 -2
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +1 -1
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +13 -1
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +53 -52
|
@@ -33,143 +33,101 @@ import * as i7 from "./error-analysis/error-analysis.component";
|
|
|
33
33
|
import * as i8 from "./usage-patterns/usage-patterns.component";
|
|
34
34
|
const _c0 = ["executiveSummary"];
|
|
35
35
|
const _c1 = ["promptRuns"];
|
|
36
|
-
const _forTrack0 = ($index, $item) => $item.
|
|
37
|
-
|
|
38
|
-
function AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
36
|
+
const _forTrack0 = ($index, $item) => $item.value;
|
|
37
|
+
function AIAnalyticsResourceComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
39
38
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
40
|
-
i0.ɵɵelementStart(0, "mj-filter-popover",
|
|
41
|
-
i0.ɵɵlistener("ClearAllRequested", function
|
|
42
|
-
i0.ɵɵelementStart(1, "mj-filter-panel",
|
|
43
|
-
i0.ɵɵlistener("ValuesChange", function
|
|
39
|
+
i0.ɵɵelementStart(0, "mj-filter-popover", 16);
|
|
40
|
+
i0.ɵɵlistener("ClearAllRequested", function AIAnalyticsResourceComponent_Conditional_7_Template_mj_filter_popover_ClearAllRequested_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.resetPopoverFilters()); });
|
|
41
|
+
i0.ɵɵelementStart(1, "mj-filter-panel", 17);
|
|
42
|
+
i0.ɵɵlistener("ValuesChange", function AIAnalyticsResourceComponent_Conditional_7_Template_mj_filter_panel_ValuesChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAnalyticsFilterValuesChange($event)); })("Reset", function AIAnalyticsResourceComponent_Conditional_7_Template_mj_filter_panel_Reset_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.resetPopoverFilters()); });
|
|
44
43
|
i0.ɵɵelementEnd()();
|
|
45
44
|
} if (rf & 2) {
|
|
46
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
45
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
47
46
|
i0.ɵɵproperty("ActiveCount", ctx_r1.ActiveFilterCount)("ShowClearAll", ctx_r1.ActiveFilterCount > 0);
|
|
48
47
|
i0.ɵɵadvance();
|
|
49
48
|
i0.ɵɵproperty("Fields", ctx_r1.analyticsFilterFields)("Values", ctx_r1.analyticsFilterValues);
|
|
50
49
|
} }
|
|
51
|
-
function
|
|
50
|
+
function AIAnalyticsResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
52
51
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
53
|
-
i0.ɵɵelementStart(0, "button",
|
|
54
|
-
i0.ɵɵtwoWayListener("selectedChange", function
|
|
55
|
-
i0.ɵɵlistener("selectedChange", function
|
|
56
|
-
i0.ɵɵelement(1, "i",
|
|
52
|
+
i0.ɵɵelementStart(0, "button", 18);
|
|
53
|
+
i0.ɵɵtwoWayListener("selectedChange", function AIAnalyticsResourceComponent_Conditional_8_Template_button_selectedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.compareActive, $event) || (ctx_r1.compareActive = $event); return i0.ɵɵresetView($event); });
|
|
54
|
+
i0.ɵɵlistener("selectedChange", function AIAnalyticsResourceComponent_Conditional_8_Template_button_selectedChange_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleCompare()); });
|
|
55
|
+
i0.ɵɵelement(1, "i", 19);
|
|
57
56
|
i0.ɵɵtext(2, " Compare ");
|
|
58
57
|
i0.ɵɵelementEnd();
|
|
59
58
|
} if (rf & 2) {
|
|
60
|
-
const ctx_r1 = i0.ɵɵnextContext(
|
|
59
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
61
60
|
i0.ɵɵproperty("toggleable", true);
|
|
62
61
|
i0.ɵɵtwoWayProperty("selected", ctx_r1.compareActive);
|
|
63
62
|
} }
|
|
64
|
-
function
|
|
63
|
+
function AIAnalyticsResourceComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
65
64
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
66
|
-
i0.ɵɵelementStart(0, "button",
|
|
67
|
-
i0.ɵɵlistener("click", function
|
|
68
|
-
i0.ɵɵelement(1, "i",
|
|
65
|
+
i0.ɵɵelementStart(0, "button", 20);
|
|
66
|
+
i0.ɵɵlistener("click", function AIAnalyticsResourceComponent_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnExportClicked()); });
|
|
67
|
+
i0.ɵɵelement(1, "i", 21);
|
|
69
68
|
i0.ɵɵtext(2, " Export ");
|
|
70
69
|
i0.ɵɵelementEnd();
|
|
71
70
|
} }
|
|
72
|
-
function
|
|
73
|
-
i0.ɵɵelementStart(0, "div", 3);
|
|
74
|
-
i0.ɵɵconditionalCreate(1, AIAnalyticsResourceComponent_Conditional_2_Conditional_1_Template, 2, 4, "mj-filter-popover", 11);
|
|
75
|
-
i0.ɵɵconditionalCreate(2, AIAnalyticsResourceComponent_Conditional_2_Conditional_2_Template, 3, 2, "button", 12);
|
|
76
|
-
i0.ɵɵconditionalCreate(3, AIAnalyticsResourceComponent_Conditional_2_Conditional_3_Template, 3, 0, "button", 13);
|
|
77
|
-
i0.ɵɵelementEnd();
|
|
78
|
-
} if (rf & 2) {
|
|
79
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
80
|
-
i0.ɵɵadvance();
|
|
81
|
-
i0.ɵɵconditional(ctx_r1.analyticsFilterFields.length > 0 ? 1 : -1);
|
|
82
|
-
i0.ɵɵadvance();
|
|
83
|
-
i0.ɵɵconditional(ctx_r1.FilterBarConfig.ShowCompareToggle ? 2 : -1);
|
|
84
|
-
i0.ɵɵadvance();
|
|
85
|
-
i0.ɵɵconditional(ctx_r1.FilterBarConfig.ShowExportButton ? 3 : -1);
|
|
86
|
-
} }
|
|
87
|
-
function AIAnalyticsResourceComponent_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
function AIAnalyticsResourceComponent_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
88
72
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
89
|
-
i0.ɵɵelementStart(0, "mj-filter-chip",
|
|
90
|
-
i0.ɵɵlistener("Clicked", function
|
|
73
|
+
i0.ɵɵelementStart(0, "mj-filter-chip", 23);
|
|
74
|
+
i0.ɵɵlistener("Clicked", function AIAnalyticsResourceComponent_Conditional_10_For_2_Template_mj_filter_chip_Clicked_0_listener() { const chip_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnTimeRangeChange(chip_r6.value)); });
|
|
91
75
|
i0.ɵɵelementEnd();
|
|
92
76
|
} if (rf & 2) {
|
|
93
77
|
const chip_r6 = ctx.$implicit;
|
|
94
78
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
95
79
|
i0.ɵɵproperty("Label", chip_r6.text)("Active", ctx_r1.CurrentTimeRange === chip_r6.value);
|
|
96
80
|
} }
|
|
97
|
-
function
|
|
98
|
-
i0.ɵɵelementStart(0, "div",
|
|
99
|
-
i0.ɵɵrepeaterCreate(1,
|
|
81
|
+
function AIAnalyticsResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
83
|
+
i0.ɵɵrepeaterCreate(1, AIAnalyticsResourceComponent_Conditional_10_For_2_Template, 1, 2, "mj-filter-chip", 22, _forTrack0);
|
|
100
84
|
i0.ɵɵelementEnd();
|
|
101
85
|
} if (rf & 2) {
|
|
102
86
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
103
87
|
i0.ɵɵadvance();
|
|
104
88
|
i0.ɵɵrepeater(ctx_r1.timeRangeChipOptions);
|
|
105
89
|
} }
|
|
106
|
-
function
|
|
107
|
-
i0.ɵɵelement(0, "div", 22);
|
|
108
|
-
} }
|
|
109
|
-
function AIAnalyticsResourceComponent_For_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
function AIAnalyticsResourceComponent_Case_13_Template(rf, ctx) { if (rf & 1) {
|
|
110
91
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
111
|
-
i0.ɵɵelementStart(0, "
|
|
112
|
-
i0.ɵɵlistener("
|
|
113
|
-
i0.ɵɵelement(1, "i");
|
|
114
|
-
i0.ɵɵelementStart(2, "span");
|
|
115
|
-
i0.ɵɵtext(3);
|
|
116
|
-
i0.ɵɵelementEnd()();
|
|
117
|
-
} if (rf & 2) {
|
|
118
|
-
const item_r8 = i0.ɵɵnextContext().$implicit;
|
|
119
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
120
|
-
i0.ɵɵclassProp("active", ctx_r1.ActiveSection === item_r8.Key);
|
|
121
|
-
i0.ɵɵadvance();
|
|
122
|
-
i0.ɵɵclassMap(item_r8.Icon);
|
|
123
|
-
i0.ɵɵadvance(2);
|
|
124
|
-
i0.ɵɵtextInterpolate(item_r8.Label);
|
|
125
|
-
} }
|
|
126
|
-
function AIAnalyticsResourceComponent_For_7_Template(rf, ctx) { if (rf & 1) {
|
|
127
|
-
i0.ɵɵconditionalCreate(0, AIAnalyticsResourceComponent_For_7_Conditional_0_Template, 1, 0, "div", 22)(1, AIAnalyticsResourceComponent_For_7_Conditional_1_Template, 4, 5, "button", 23);
|
|
128
|
-
} if (rf & 2) {
|
|
129
|
-
const item_r8 = ctx.$implicit;
|
|
130
|
-
i0.ɵɵconditional(item_r8.Key === "divider" ? 0 : 1);
|
|
131
|
-
} }
|
|
132
|
-
function AIAnalyticsResourceComponent_Case_9_Template(rf, ctx) { if (rf & 1) {
|
|
133
|
-
const _r9 = i0.ɵɵgetCurrentView();
|
|
134
|
-
i0.ɵɵelementStart(0, "app-analytics-executive-summary", 25, 0);
|
|
135
|
-
i0.ɵɵlistener("SectionNavigate", function AIAnalyticsResourceComponent_Case_9_Template_app_analytics_executive_summary_SectionNavigate_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionChange($event)); });
|
|
92
|
+
i0.ɵɵelementStart(0, "app-analytics-executive-summary", 24, 0);
|
|
93
|
+
i0.ɵɵlistener("SectionNavigate", function AIAnalyticsResourceComponent_Case_13_Template_app_analytics_executive_summary_SectionNavigate_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionChange($event)); });
|
|
136
94
|
i0.ɵɵelementEnd();
|
|
137
95
|
} if (rf & 2) {
|
|
138
96
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
139
97
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
|
|
140
98
|
} }
|
|
141
|
-
function
|
|
142
|
-
i0.ɵɵelement(0, "app-analytics-prompt-runs",
|
|
99
|
+
function AIAnalyticsResourceComponent_Case_14_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
+
i0.ɵɵelement(0, "app-analytics-prompt-runs", 13, 1);
|
|
143
101
|
} if (rf & 2) {
|
|
144
102
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
145
103
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
|
|
146
104
|
} }
|
|
147
|
-
function
|
|
148
|
-
i0.ɵɵelement(0, "app-analytics-agent-runs",
|
|
105
|
+
function AIAnalyticsResourceComponent_Case_15_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
i0.ɵɵelement(0, "app-analytics-agent-runs", 13);
|
|
149
107
|
} if (rf & 2) {
|
|
150
108
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
151
109
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
|
|
152
110
|
} }
|
|
153
|
-
function
|
|
154
|
-
i0.ɵɵelement(0, "app-analytics-model-performance",
|
|
111
|
+
function AIAnalyticsResourceComponent_Case_16_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
+
i0.ɵɵelement(0, "app-analytics-model-performance", 14);
|
|
155
113
|
} if (rf & 2) {
|
|
156
114
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
157
115
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("SortBy", ctx_r1.CurrentSortBy)("SelectedVendor", ctx_r1.CurrentVendor);
|
|
158
116
|
} }
|
|
159
|
-
function
|
|
160
|
-
i0.ɵɵelement(0, "app-analytics-cost-budget",
|
|
117
|
+
function AIAnalyticsResourceComponent_Case_17_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelement(0, "app-analytics-cost-budget", 13);
|
|
161
119
|
} if (rf & 2) {
|
|
162
120
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
163
121
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
|
|
164
122
|
} }
|
|
165
|
-
function
|
|
166
|
-
i0.ɵɵelement(0, "app-analytics-error-analysis",
|
|
123
|
+
function AIAnalyticsResourceComponent_Case_18_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
i0.ɵɵelement(0, "app-analytics-error-analysis", 13);
|
|
167
125
|
} if (rf & 2) {
|
|
168
126
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
169
127
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange)("Filters", ctx_r1.CurrentFilters);
|
|
170
128
|
} }
|
|
171
|
-
function
|
|
172
|
-
i0.ɵɵelement(0, "app-analytics-usage-patterns",
|
|
129
|
+
function AIAnalyticsResourceComponent_Case_19_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
+
i0.ɵɵelement(0, "app-analytics-usage-patterns", 15);
|
|
173
131
|
} if (rf & 2) {
|
|
174
132
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
175
133
|
i0.ɵɵproperty("TimeRange", ctx_r1.CurrentTimeRange);
|
|
@@ -380,15 +338,57 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
|
|
|
380
338
|
this.OnCompareToggled(this.compareActive);
|
|
381
339
|
}
|
|
382
340
|
NavItems = [
|
|
383
|
-
{ Label: 'Executive Summary', Icon: 'fa-solid fa-gauge-high', Key: 'executive-summary'
|
|
384
|
-
|
|
385
|
-
{ Label: '
|
|
386
|
-
|
|
341
|
+
{ Label: 'Executive Summary', Icon: 'fa-solid fa-gauge-high', Key: 'executive-summary',
|
|
342
|
+
Description: 'High-level KPIs and trends across the platform' },
|
|
343
|
+
{ Label: 'Prompt Runs', Icon: 'fa-solid fa-comment-dots', Key: 'prompt-runs',
|
|
344
|
+
Description: 'Detailed analysis of individual prompt executions' },
|
|
345
|
+
{ Label: 'Agent Runs', Icon: 'fa-solid fa-robot', Key: 'agent-runs',
|
|
346
|
+
Description: 'Performance breakdown by agent' },
|
|
347
|
+
{ Label: 'Model Performance', Icon: 'fa-solid fa-microchip', Key: 'model-performance',
|
|
348
|
+
Description: 'Compare models across cost, speed, and quality' },
|
|
387
349
|
{ Key: 'divider' },
|
|
388
|
-
{ Label: 'Cost & Budget', Icon: 'fa-solid fa-coins', Key: 'cost-budget'
|
|
389
|
-
|
|
390
|
-
{ Label: '
|
|
350
|
+
{ Label: 'Cost & Budget', Icon: 'fa-solid fa-coins', Key: 'cost-budget',
|
|
351
|
+
Description: 'Spend trends and budget tracking' },
|
|
352
|
+
{ Label: 'Error Analysis', Icon: 'fa-solid fa-triangle-exclamation', Key: 'error-analysis',
|
|
353
|
+
Description: 'Failure patterns and root causes' },
|
|
354
|
+
{ Label: 'Usage Patterns', Icon: 'fa-solid fa-clock', Key: 'usage-patterns',
|
|
355
|
+
Description: 'Volume, frequency, and concurrency over time' },
|
|
391
356
|
];
|
|
357
|
+
/**
|
|
358
|
+
* Active section metadata — drives <mj-page-header-interior> Title +
|
|
359
|
+
* Subtitle. Mirrors the pattern in KH Configuration / KH Analytics: one
|
|
360
|
+
* source of truth (NavItems) used both to build the rail and to render
|
|
361
|
+
* per-section identity.
|
|
362
|
+
*/
|
|
363
|
+
get currentSection() {
|
|
364
|
+
return this.NavItems.find(n => n.Key === this.ActiveSection);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Wraps `NavItems` for `<mj-left-nav>`. The `{ Key: 'divider' }` entry
|
|
368
|
+
* splits the items into two `MJLeftNavSection`s (an unlabeled section per
|
|
369
|
+
* group) — the rail's natural section break replaces the bespoke
|
|
370
|
+
* `.nav-divider` line.
|
|
371
|
+
*/
|
|
372
|
+
get navSections() {
|
|
373
|
+
const sections = [{ items: [] }];
|
|
374
|
+
for (const item of this.NavItems) {
|
|
375
|
+
if (item.Key === 'divider') {
|
|
376
|
+
sections.push({ items: [] });
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
sections[sections.length - 1].items.push({
|
|
380
|
+
id: item.Key,
|
|
381
|
+
label: item.Label ?? '',
|
|
382
|
+
icon: item.Icon
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return sections;
|
|
387
|
+
}
|
|
388
|
+
/** Adapter for `<mj-left-nav>`'s `(ItemClicked)` output. */
|
|
389
|
+
onNavItemClicked(item) {
|
|
390
|
+
this.OnSectionChange(item.id);
|
|
391
|
+
}
|
|
392
392
|
async ngOnInit() {
|
|
393
393
|
super.ngOnInit();
|
|
394
394
|
this.setupSettingsDebounce();
|
|
@@ -509,30 +509,43 @@ let AIAnalyticsResourceComponent = class AIAnalyticsResourceComponent extends Ba
|
|
|
509
509
|
let _t;
|
|
510
510
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.executiveSummary = _t.first);
|
|
511
511
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.promptRuns = _t.first);
|
|
512
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
513
|
-
i0.ɵɵelementStart(0, "mj-page-layout")
|
|
514
|
-
i0.ɵɵ
|
|
515
|
-
i0.ɵɵ
|
|
512
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 20, vars: 11, consts: [["executiveSummary", ""], ["promptRuns", ""], ["Title", "AI Analytics", "Icon", "fa-solid fa-chart-line", "Subtitle", "Performance, cost, and usage analytics"], [1, "analytics-shell", 3, "Padding"], [3, "ItemClicked", "Sections", "ActiveId"], [3, "Title", "Subtitle"], ["actions", ""], [3, "ActiveCount", "ShowClearAll"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "toggleable", "selected"], ["mjButton", "", "variant", "secondary", "size", "sm"], ["toolbar", "", 1, "time-range-chips"], [3, "Padding"], [1, "analytics-content"], [3, "TimeRange", "Filters"], [3, "TimeRange", "SortBy", "SelectedVendor"], [3, "TimeRange"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "selectedChange", "toggleable", "selected"], [1, "fa-solid", "fa-code-compare"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-download"], [3, "Label", "Active"], [3, "Clicked", "Label", "Active"], [3, "SectionNavigate", "TimeRange", "Filters"]], template: function AIAnalyticsResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
513
|
+
i0.ɵɵelementStart(0, "mj-page-layout");
|
|
514
|
+
i0.ɵɵelement(1, "mj-page-header", 2);
|
|
515
|
+
i0.ɵɵelementStart(2, "mj-page-body", 3)(3, "mj-left-nav", 4);
|
|
516
|
+
i0.ɵɵlistener("ItemClicked", function AIAnalyticsResourceComponent_Template_mj_left_nav_ItemClicked_3_listener($event) { return ctx.onNavItemClicked($event); });
|
|
516
517
|
i0.ɵɵelementEnd();
|
|
517
|
-
i0.ɵɵelementStart(4, "mj-page-
|
|
518
|
-
i0.ɵɵ
|
|
518
|
+
i0.ɵɵelementStart(4, "mj-left-nav-content")(5, "mj-page-header-interior", 5)(6, "div", 6);
|
|
519
|
+
i0.ɵɵconditionalCreate(7, AIAnalyticsResourceComponent_Conditional_7_Template, 2, 4, "mj-filter-popover", 7);
|
|
520
|
+
i0.ɵɵconditionalCreate(8, AIAnalyticsResourceComponent_Conditional_8_Template, 3, 2, "button", 8);
|
|
521
|
+
i0.ɵɵconditionalCreate(9, AIAnalyticsResourceComponent_Conditional_9_Template, 3, 0, "button", 9);
|
|
519
522
|
i0.ɵɵelementEnd();
|
|
520
|
-
i0.ɵɵ
|
|
521
|
-
i0.ɵɵ
|
|
522
|
-
i0.ɵɵ
|
|
523
|
+
i0.ɵɵconditionalCreate(10, AIAnalyticsResourceComponent_Conditional_10_Template, 3, 0, "div", 10);
|
|
524
|
+
i0.ɵɵelementEnd();
|
|
525
|
+
i0.ɵɵelementStart(11, "mj-page-body-interior", 11)(12, "div", 12);
|
|
526
|
+
i0.ɵɵconditionalCreate(13, AIAnalyticsResourceComponent_Case_13_Template, 2, 2, "app-analytics-executive-summary", 13)(14, AIAnalyticsResourceComponent_Case_14_Template, 2, 2, "app-analytics-prompt-runs", 13)(15, AIAnalyticsResourceComponent_Case_15_Template, 1, 2, "app-analytics-agent-runs", 13)(16, AIAnalyticsResourceComponent_Case_16_Template, 1, 3, "app-analytics-model-performance", 14)(17, AIAnalyticsResourceComponent_Case_17_Template, 1, 2, "app-analytics-cost-budget", 13)(18, AIAnalyticsResourceComponent_Case_18_Template, 1, 2, "app-analytics-error-analysis", 13)(19, AIAnalyticsResourceComponent_Case_19_Template, 1, 1, "app-analytics-usage-patterns", 15);
|
|
527
|
+
i0.ɵɵelementEnd()()()()();
|
|
523
528
|
} if (rf & 2) {
|
|
524
|
-
let
|
|
529
|
+
let tmp_10_0;
|
|
530
|
+
i0.ɵɵadvance(2);
|
|
531
|
+
i0.ɵɵproperty("Padding", false);
|
|
532
|
+
i0.ɵɵadvance();
|
|
533
|
+
i0.ɵɵproperty("Sections", ctx.navSections)("ActiveId", ctx.ActiveSection);
|
|
534
|
+
i0.ɵɵadvance(2);
|
|
535
|
+
i0.ɵɵproperty("Title", (ctx.currentSection == null ? null : ctx.currentSection.Label) || "")("Subtitle", (ctx.currentSection == null ? null : ctx.currentSection.Description) || "");
|
|
525
536
|
i0.ɵɵadvance(2);
|
|
526
|
-
i0.ɵɵconditional(ctx.
|
|
537
|
+
i0.ɵɵconditional(ctx.analyticsFilterFields.length > 0 ? 7 : -1);
|
|
527
538
|
i0.ɵɵadvance();
|
|
528
|
-
i0.ɵɵconditional(ctx.
|
|
539
|
+
i0.ɵɵconditional(ctx.FilterBarConfig.ShowCompareToggle ? 8 : -1);
|
|
540
|
+
i0.ɵɵadvance();
|
|
541
|
+
i0.ɵɵconditional(ctx.FilterBarConfig.ShowExportButton ? 9 : -1);
|
|
542
|
+
i0.ɵɵadvance();
|
|
543
|
+
i0.ɵɵconditional(ctx.timeRangeChipOptions.length > 0 ? 10 : -1);
|
|
529
544
|
i0.ɵɵadvance();
|
|
530
545
|
i0.ɵɵproperty("Padding", false);
|
|
531
546
|
i0.ɵɵadvance(2);
|
|
532
|
-
i0.ɵɵ
|
|
533
|
-
|
|
534
|
-
i0.ɵɵconditional((tmp_4_0 = ctx.ActiveSection) === "executive-summary" ? 9 : tmp_4_0 === "prompt-runs" ? 10 : tmp_4_0 === "agent-runs" ? 11 : tmp_4_0 === "model-performance" ? 12 : tmp_4_0 === "cost-budget" ? 13 : tmp_4_0 === "error-analysis" ? 14 : tmp_4_0 === "usage-patterns" ? 15 : -1);
|
|
535
|
-
} }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJFilterChipComponent, i2.AnalyticsExecutiveSummaryComponent, i3.AnalyticsPromptRunsComponent, i4.AnalyticsAgentRunsComponent, i5.AnalyticsModelPerformanceComponent, i6.AnalyticsCostBudgetComponent, i7.AnalyticsErrorAnalysisComponent, i8.AnalyticsUsagePatternsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .analytics-shell[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n \n\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 220px;\n min-width: 220px;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n padding: 12px 0;\n overflow-y: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 18px;\n border: none;\n border-left: 3px solid transparent;\n background: transparent;\n color: var(--mj-text-secondary);\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n text-align: left;\n width: 100%;\n }\n\n .nav-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-left-color: var(--mj-brand-primary);\n font-weight: 600;\n }\n\n .nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n text-align: center;\n font-size: 14px;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--mj-border-subtle);\n margin: 8px 18px;\n }\n\n \n\n\n .analytics-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n \n\n\n .section-placeholder[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n \n\n\n @media (max-width: 768px) {\n .analytics-shell[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .analytics-nav[_ngcontent-%COMP%] {\n width: 100%;\n min-width: unset;\n flex-direction: row;\n overflow-x: auto;\n overflow-y: hidden;\n border-right: none;\n border-bottom: 1px solid var(--mj-border-default);\n padding: 0 8px;\n gap: 2px;\n }\n\n .nav-header[_ngcontent-%COMP%] {\n display: none;\n }\n\n .nav-divider[_ngcontent-%COMP%] {\n width: 1px;\n height: 28px;\n margin: auto 4px;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n white-space: nowrap;\n border-left: none;\n border-bottom: 3px solid transparent;\n padding: 10px 14px;\n }\n\n .nav-item.active[_ngcontent-%COMP%] {\n border-left-color: transparent;\n border-bottom-color: var(--mj-brand-primary);\n }\n\n .analytics-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n }"] });
|
|
547
|
+
i0.ɵɵconditional((tmp_10_0 = ctx.ActiveSection) === "executive-summary" ? 13 : tmp_10_0 === "prompt-runs" ? 14 : tmp_10_0 === "agent-runs" ? 15 : tmp_10_0 === "model-performance" ? 16 : tmp_10_0 === "cost-budget" ? 17 : tmp_10_0 === "error-analysis" ? 18 : tmp_10_0 === "usage-patterns" ? 19 : -1);
|
|
548
|
+
} }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJPageHeaderInteriorComponent, i1.MJPageBodyInteriorComponent, i1.MJLeftNavComponent, i1.MJLeftNavContentComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJFilterChipComponent, i2.AnalyticsExecutiveSummaryComponent, i3.AnalyticsPromptRunsComponent, i4.AnalyticsAgentRunsComponent, i5.AnalyticsModelPerformanceComponent, i6.AnalyticsCostBudgetComponent, i7.AnalyticsErrorAnalysisComponent, i8.AnalyticsUsagePatternsComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n }\n\n .analytics-shell[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n \n\n\n \n\n\n\n\n \n\n\n .analytics-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n \n\n\n .section-placeholder[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n \n\n\n \n\n\n @media (max-width: 768px) {\n .analytics-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n }"] });
|
|
536
549
|
};
|
|
537
550
|
AIAnalyticsResourceComponent = __decorate([
|
|
538
551
|
RegisterClass(BaseResourceComponent, 'AIAnalyticsResource')
|
|
@@ -542,10 +555,32 @@ export { AIAnalyticsResourceComponent };
|
|
|
542
555
|
type: Component,
|
|
543
556
|
args: [{ standalone: false, selector: 'app-ai-analytics-resource', template: `
|
|
544
557
|
<mj-page-layout>
|
|
558
|
+
<!-- Outer chrome — pure identity. Every control (filter-popover,
|
|
559
|
+
TimeRange chips, Compare, Export) lives in the per-section
|
|
560
|
+
<mj-page-header-interior> card below because each section
|
|
561
|
+
configures its own filter fields and time-range options. -->
|
|
545
562
|
<mj-page-header
|
|
546
|
-
Title="Analytics"
|
|
547
|
-
Icon="fa-solid fa-chart-line"
|
|
548
|
-
|
|
563
|
+
Title="AI Analytics"
|
|
564
|
+
Icon="fa-solid fa-chart-line"
|
|
565
|
+
Subtitle="Performance, cost, and usage analytics">
|
|
566
|
+
</mj-page-header>
|
|
567
|
+
<mj-page-body [Padding]="false" class="analytics-shell">
|
|
568
|
+
<mj-left-nav
|
|
569
|
+
[Sections]="navSections"
|
|
570
|
+
[ActiveId]="ActiveSection"
|
|
571
|
+
(ItemClicked)="onNavItemClicked($event)">
|
|
572
|
+
</mj-left-nav>
|
|
573
|
+
|
|
574
|
+
<mj-left-nav-content>
|
|
575
|
+
<!-- Per-section interior chrome owns the complete control surface
|
|
576
|
+
for the active section: identity + actions + the section's
|
|
577
|
+
own time-range chip strip. Even TimeRange options vary per
|
|
578
|
+
section (Cost & Budget adds MTD / YTD, Model Performance
|
|
579
|
+
drops 1h / 6h, etc.) so it belongs here rather than in the
|
|
580
|
+
outer chrome. -->
|
|
581
|
+
<mj-page-header-interior
|
|
582
|
+
[Title]="currentSection?.Label || ''"
|
|
583
|
+
[Subtitle]="currentSection?.Description || ''">
|
|
549
584
|
<div actions>
|
|
550
585
|
@if (analyticsFilterFields.length > 0) {
|
|
551
586
|
<mj-filter-popover
|
|
@@ -571,36 +606,19 @@ export { AIAnalyticsResourceComponent };
|
|
|
571
606
|
</button>
|
|
572
607
|
}
|
|
573
608
|
</div>
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
</div>
|
|
585
|
-
}
|
|
586
|
-
</mj-page-header>
|
|
587
|
-
<mj-page-body [Padding]="false" class="analytics-shell">
|
|
588
|
-
<nav class="analytics-nav">
|
|
589
|
-
@for (item of NavItems; track item.Key) {
|
|
590
|
-
@if (item.Key === 'divider') {
|
|
591
|
-
<div class="nav-divider"></div>
|
|
592
|
-
} @else {
|
|
593
|
-
<button
|
|
594
|
-
class="nav-item"
|
|
595
|
-
[class.active]="ActiveSection === item.Key"
|
|
596
|
-
(click)="OnSectionChange(item.Key)">
|
|
597
|
-
<i [class]="item.Icon"></i>
|
|
598
|
-
<span>{{ item.Label }}</span>
|
|
599
|
-
</button>
|
|
600
|
-
}
|
|
609
|
+
@if (timeRangeChipOptions.length > 0) {
|
|
610
|
+
<div toolbar class="time-range-chips">
|
|
611
|
+
@for (chip of timeRangeChipOptions; track chip.value) {
|
|
612
|
+
<mj-filter-chip
|
|
613
|
+
[Label]="chip.text"
|
|
614
|
+
[Active]="CurrentTimeRange === chip.value"
|
|
615
|
+
(Clicked)="OnTimeRangeChange(chip.value)">
|
|
616
|
+
</mj-filter-chip>
|
|
617
|
+
}
|
|
618
|
+
</div>
|
|
601
619
|
}
|
|
602
|
-
</
|
|
603
|
-
|
|
620
|
+
</mj-page-header-interior>
|
|
621
|
+
<mj-page-body-interior [Padding]="false">
|
|
604
622
|
<div class="analytics-content">
|
|
605
623
|
@switch (ActiveSection) {
|
|
606
624
|
@case ('executive-summary') {
|
|
@@ -650,9 +668,11 @@ export { AIAnalyticsResourceComponent };
|
|
|
650
668
|
}
|
|
651
669
|
}
|
|
652
670
|
</div>
|
|
671
|
+
</mj-page-body-interior>
|
|
672
|
+
</mj-left-nav-content>
|
|
653
673
|
</mj-page-body>
|
|
654
674
|
</mj-page-layout>
|
|
655
|
-
`, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n\n .analytics-shell {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n /* \u2500\u2500 Left Navigation \u2500\u2500 */\n\n
|
|
675
|
+
`, styles: ["\n :host {\n display: block;\n height: 100%;\n }\n\n .analytics-shell {\n display: flex;\n flex: 1;\n min-height: 0;\n background: var(--mj-bg-page);\n }\n\n /* \u2500\u2500 Left Navigation \u2500\u2500 */\n\n /* Rail width + nav-item styling now owned by <mj-left-nav>; the\n divider is expressed as a new MJLeftNavSection rather than a CSS\n rule. */\n\n /* \u2500\u2500 Content Area \u2500\u2500 */\n\n .analytics-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n }\n\n /* \u2500\u2500 Section Placeholders \u2500\u2500 */\n\n .section-placeholder {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 80px 24px;\n color: var(--mj-text-muted);\n }\n\n .placeholder-icon {\n font-size: 48px;\n margin-bottom: 20px;\n color: var(--mj-brand-primary);\n opacity: 0.4;\n }\n\n .section-placeholder h2 {\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px;\n }\n\n .section-placeholder p {\n font-size: 14px;\n color: var(--mj-text-muted);\n margin: 0;\n max-width: 420px;\n }\n\n /* \u2500\u2500 Responsive: collapse nav to horizontal strip \u2500\u2500 */\n\n /* Responsive \u2014 <mj-left-nav> handles its own collapse-to-row at\n narrow viewports. We only need to tune the content padding. */\n @media (max-width: 768px) {\n .analytics-content {\n padding: 16px;\n }\n }\n "] }]
|
|
656
676
|
}], null, { executiveSummary: [{
|
|
657
677
|
type: ViewChild,
|
|
658
678
|
args: ['executiveSummary']
|
|
@@ -660,7 +680,7 @@ export { AIAnalyticsResourceComponent };
|
|
|
660
680
|
type: ViewChild,
|
|
661
681
|
args: ['promptRuns']
|
|
662
682
|
}] }); })();
|
|
663
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAnalyticsResourceComponent, { className: "AIAnalyticsResourceComponent", filePath: "src/AI/components/analytics/ai-analytics-resource.component.ts", lineNumber:
|
|
683
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AIAnalyticsResourceComponent, { className: "AIAnalyticsResourceComponent", filePath: "src/AI/components/analytics/ai-analytics-resource.component.ts", lineNumber: 231 }); })();
|
|
664
684
|
export function LoadAIAnalyticsResource() {
|
|
665
685
|
// Prevents tree-shaking of the @RegisterClass decorator
|
|
666
686
|
}
|