@memberjunction/ng-dashboards 2.120.0 → 2.122.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 +23 -11
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +122 -95
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +88 -90
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +2 -2
- package/dist/AI/components/execution-monitoring.component.d.ts +23 -10
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +143 -124
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management-v2.component.d.ts +17 -13
- package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management-v2.component.js +248 -266
- package/dist/AI/components/models/model-management-v2.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +76 -78
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +2 -2
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +17 -15
- package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management-v2.component.js +372 -397
- package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +100 -102
- package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
- package/dist/AI/components/system/system-config-filter-panel.component.js +2 -2
- package/dist/AI/components/system/system-configuration.component.d.ts +17 -10
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +82 -61
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/kpi-card.component.js +11 -7
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/index.d.ts +4 -0
- package/dist/AI/index.d.ts.map +1 -1
- package/dist/AI/index.js +6 -1
- package/dist/AI/index.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +9 -9
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +16 -13
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +62 -48
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +9 -9
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +17 -7
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +45 -12
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +17 -7
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +45 -12
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +16 -10
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +56 -30
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +17 -7
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +45 -12
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +17 -7
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +45 -12
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/Actions/index.d.ts +6 -1
- package/dist/Actions/index.d.ts.map +1 -1
- package/dist/Actions/index.js +9 -1
- package/dist/Actions/index.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +8 -8
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +52 -57
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +8 -9
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +107 -0
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -0
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +553 -0
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +179 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +814 -0
- package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +151 -0
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -0
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +480 -0
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +439 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.js +2129 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -0
- package/dist/DataExplorer/index.d.ts +5 -0
- package/dist/DataExplorer/index.d.ts.map +1 -0
- package/dist/DataExplorer/index.js +10 -0
- package/dist/DataExplorer/index.js.map +1 -0
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +183 -0
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -0
- package/dist/DataExplorer/models/explorer-state.interface.js +31 -0
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -0
- package/dist/DataExplorer/services/explorer-state.service.d.ts +232 -0
- package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -0
- package/dist/DataExplorer/services/explorer-state.service.js +912 -0
- package/dist/DataExplorer/services/explorer-state.service.js.map +1 -0
- package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -1
- package/dist/EntityAdmin/components/entity-details.component.js +11 -13
- package/dist/EntityAdmin/components/entity-details.component.js.map +1 -1
- package/dist/EntityAdmin/components/entity-filter-panel.component.js +2 -2
- package/dist/EntityAdmin/components/erd-composite.component.js +2 -2
- package/dist/EntityAdmin/components/erd-diagram.component.js +2 -2
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +14 -15
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +122 -0
- package/dist/Home/home-dashboard.component.d.ts.map +1 -0
- package/dist/Home/home-dashboard.component.js +698 -0
- package/dist/Home/home-dashboard.component.js.map +1 -0
- package/dist/Scheduling/components/index.d.ts +11 -0
- package/dist/Scheduling/components/index.d.ts.map +1 -0
- package/dist/Scheduling/components/index.js +13 -0
- package/dist/Scheduling/components/index.js.map +1 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
- package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-health.component.js +7 -8
- package/dist/Scheduling/components/scheduling-health.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
- package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
- package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-history.component.js +7 -8
- package/dist/Scheduling/components/scheduling-history.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +20 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +55 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-jobs.component.js +7 -8
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
- package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
- package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-monitoring.component.js +7 -8
- package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
- package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
- package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
- package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
- package/dist/Scheduling/components/scheduling-types.component.js +7 -8
- package/dist/Scheduling/components/scheduling-types.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +3 -3
- package/dist/Testing/components/index.d.ts +11 -0
- package/dist/Testing/components/index.d.ts.map +1 -0
- package/dist/Testing/components/index.js +13 -0
- package/dist/Testing/components/index.js.map +1 -0
- package/dist/Testing/components/testing-analytics-resource.component.d.ts +20 -0
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-analytics-resource.component.js +55 -0
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
- package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-execution-resource.component.js +55 -0
- package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-execution.component.js +3 -3
- package/dist/Testing/components/testing-execution.component.js.map +1 -1
- package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
- package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
- package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
- package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-overview-resource.component.js +55 -0
- package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
- package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
- package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
- package/dist/Testing/components/testing-version-resource.component.js +55 -0
- package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
- package/dist/Testing/testing-dashboard.component.d.ts +1 -1
- package/dist/Testing/testing-dashboard.component.js +23 -25
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/module.d.ts +83 -66
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +137 -19
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +6 -4
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +41 -13
- package/dist/public-api.js.map +1 -1
- package/package.json +17 -14
- package/dist/AI/ai-dashboard.component.d.ts +0 -62
- package/dist/AI/ai-dashboard.component.d.ts.map +0 -1
- package/dist/AI/ai-dashboard.component.js +0 -338
- package/dist/AI/ai-dashboard.component.js.map +0 -1
- package/dist/Actions/actions-management-dashboard.component.d.ts +0 -52
- package/dist/Actions/actions-management-dashboard.component.d.ts.map +0 -1
- package/dist/Actions/actions-management-dashboard.component.js +0 -308
- package/dist/Actions/actions-management-dashboard.component.js.map +0 -1
- package/dist/generic/base-dashboard.d.ts +0 -65
- package/dist/generic/base-dashboard.d.ts.map +0 -1
- package/dist/generic/base-dashboard.js +0 -74
- package/dist/generic/base-dashboard.js.map +0 -1
|
@@ -0,0 +1,553 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Metadata, CompositeKey } from '@memberjunction/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
const _forTrack0 = ($index, $item) => $item.displayName;
|
|
6
|
+
const _forTrack1 = ($index, $item) => $item.compositeKeyString;
|
|
7
|
+
const _forTrack2 = ($index, $item) => $item.ID;
|
|
8
|
+
function NavigationPanelComponent_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
i0.ɵɵelementStart(0, "span", 9);
|
|
10
|
+
i0.ɵɵtext(1);
|
|
11
|
+
i0.ɵɵelementEnd();
|
|
12
|
+
} if (rf & 2) {
|
|
13
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
14
|
+
i0.ɵɵadvance();
|
|
15
|
+
i0.ɵɵtextInterpolate1("(", ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length, ")");
|
|
16
|
+
} }
|
|
17
|
+
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "span");
|
|
19
|
+
i0.ɵɵtext(2, "No favorites yet");
|
|
20
|
+
i0.ɵɵelementEnd()();
|
|
21
|
+
} }
|
|
22
|
+
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
24
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
25
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template_div_click_0_listener() { const favorite_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r4)); });
|
|
26
|
+
i0.ɵɵelement(1, "i");
|
|
27
|
+
i0.ɵɵelementStart(2, "span", 22);
|
|
28
|
+
i0.ɵɵtext(3);
|
|
29
|
+
i0.ɵɵelementEnd()();
|
|
30
|
+
} if (rf & 2) {
|
|
31
|
+
const favorite_r4 = ctx.$implicit;
|
|
32
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
33
|
+
i0.ɵɵproperty("title", favorite_r4.entityName ? favorite_r4.entityName + " - " + favorite_r4.displayName : favorite_r4.displayName);
|
|
34
|
+
i0.ɵɵadvance();
|
|
35
|
+
i0.ɵɵclassMap(ctx_r1.getFavoriteIcon(favorite_r4));
|
|
36
|
+
i0.ɵɵadvance(2);
|
|
37
|
+
i0.ɵɵtextInterpolate(favorite_r4.displayName);
|
|
38
|
+
} }
|
|
39
|
+
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
41
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
42
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template_div_click_0_listener() { const favorite_r6 = i0.ɵɵrestoreView(_r5).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onFavoriteClick(favorite_r6)); });
|
|
43
|
+
i0.ɵɵelement(1, "i");
|
|
44
|
+
i0.ɵɵelementStart(2, "span", 22);
|
|
45
|
+
i0.ɵɵtext(3);
|
|
46
|
+
i0.ɵɵelementEnd()();
|
|
47
|
+
} if (rf & 2) {
|
|
48
|
+
const favorite_r6 = ctx.$implicit;
|
|
49
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
50
|
+
i0.ɵɵproperty("title", favorite_r6.entityName ? favorite_r6.entityName + " - " + favorite_r6.displayName : favorite_r6.displayName);
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵclassMap(ctx_r1.getFavoriteIcon(favorite_r6));
|
|
53
|
+
i0.ɵɵadvance(2);
|
|
54
|
+
i0.ɵɵtextInterpolate(favorite_r6.displayName);
|
|
55
|
+
} }
|
|
56
|
+
function NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
|
|
58
|
+
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_3_Template, 4, 4, "div", 20, _forTrack0);
|
|
59
|
+
i0.ɵɵrepeaterCreate(4, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_For_5_Template, 4, 4, "div", 20, _forTrack0);
|
|
60
|
+
i0.ɵɵelementEnd()();
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
63
|
+
i0.ɵɵadvance(2);
|
|
64
|
+
i0.ɵɵrepeater(ctx_r1.favoriteEntities);
|
|
65
|
+
i0.ɵɵadvance(2);
|
|
66
|
+
i0.ɵɵrepeater(ctx_r1.favoriteRecords);
|
|
67
|
+
} }
|
|
68
|
+
function NavigationPanelComponent_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
70
|
+
i0.ɵɵtemplate(1, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_1_Template, 3, 0, "div", 17)(2, NavigationPanelComponent_Conditional_3_Conditional_8_Conditional_2_Template, 6, 0, "div", 18);
|
|
71
|
+
i0.ɵɵelementEnd();
|
|
72
|
+
} if (rf & 2) {
|
|
73
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
74
|
+
i0.ɵɵadvance();
|
|
75
|
+
i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length === 0 ? 1 : 2);
|
|
76
|
+
} }
|
|
77
|
+
function NavigationPanelComponent_Conditional_3_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
+
i0.ɵɵelementStart(0, "span", 9);
|
|
79
|
+
i0.ɵɵtext(1);
|
|
80
|
+
i0.ɵɵelementEnd();
|
|
81
|
+
} if (rf & 2) {
|
|
82
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
83
|
+
i0.ɵɵadvance();
|
|
84
|
+
i0.ɵɵtextInterpolate1("(", ctx_r1.filteredRecentItems.length, ")");
|
|
85
|
+
} }
|
|
86
|
+
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "span");
|
|
88
|
+
i0.ɵɵtext(2, "No recent items");
|
|
89
|
+
i0.ɵɵelementEnd()();
|
|
90
|
+
} }
|
|
91
|
+
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
92
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
93
|
+
i0.ɵɵelementStart(0, "div", 21);
|
|
94
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template_div_click_0_listener() { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onRecentClick(item_r8)); });
|
|
95
|
+
i0.ɵɵelement(1, "i");
|
|
96
|
+
i0.ɵɵelementStart(2, "div", 23)(3, "span", 22);
|
|
97
|
+
i0.ɵɵtext(4);
|
|
98
|
+
i0.ɵɵelementEnd();
|
|
99
|
+
i0.ɵɵelementStart(5, "span", 24);
|
|
100
|
+
i0.ɵɵtext(6);
|
|
101
|
+
i0.ɵɵelementEnd()()();
|
|
102
|
+
} if (rf & 2) {
|
|
103
|
+
const item_r8 = ctx.$implicit;
|
|
104
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
105
|
+
i0.ɵɵproperty("title", item_r8.entityName + " - " + item_r8.displayName);
|
|
106
|
+
i0.ɵɵadvance();
|
|
107
|
+
i0.ɵɵclassMap(ctx_r1.getRecentItemIcon(item_r8));
|
|
108
|
+
i0.ɵɵadvance(3);
|
|
109
|
+
i0.ɵɵtextInterpolate(item_r8.displayName);
|
|
110
|
+
i0.ɵɵadvance(2);
|
|
111
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatTimestamp(item_r8.timestamp));
|
|
112
|
+
} }
|
|
113
|
+
function NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 19);
|
|
115
|
+
i0.ɵɵrepeaterCreate(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_For_3_Template, 7, 5, "div", 20, _forTrack1);
|
|
116
|
+
i0.ɵɵelementEnd()();
|
|
117
|
+
} if (rf & 2) {
|
|
118
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
119
|
+
i0.ɵɵadvance(2);
|
|
120
|
+
i0.ɵɵrepeater(ctx_r1.filteredRecentItems);
|
|
121
|
+
} }
|
|
122
|
+
function NavigationPanelComponent_Conditional_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 11);
|
|
124
|
+
i0.ɵɵtemplate(1, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_1_Template, 3, 0, "div", 17)(2, NavigationPanelComponent_Conditional_3_Conditional_16_Conditional_2_Template, 4, 0, "div", 18);
|
|
125
|
+
i0.ɵɵelementEnd();
|
|
126
|
+
} if (rf & 2) {
|
|
127
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
128
|
+
i0.ɵɵadvance();
|
|
129
|
+
i0.ɵɵconditional(ctx_r1.filteredRecentItems.length === 0 ? 1 : 2);
|
|
130
|
+
} }
|
|
131
|
+
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
133
|
+
i0.ɵɵelementStart(0, "button", 32);
|
|
134
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.entitySearchTerm = ""); });
|
|
135
|
+
i0.ɵɵelement(1, "i", 33);
|
|
136
|
+
i0.ɵɵelementEnd();
|
|
137
|
+
} }
|
|
138
|
+
function NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
139
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
140
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
141
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template_div_click_0_listener() { const entity_r12 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEntityClick(entity_r12)); });
|
|
142
|
+
i0.ɵɵelement(1, "i");
|
|
143
|
+
i0.ɵɵelementStart(2, "span", 22);
|
|
144
|
+
i0.ɵɵtext(3);
|
|
145
|
+
i0.ɵɵelementEnd()();
|
|
146
|
+
} if (rf & 2) {
|
|
147
|
+
const entity_r12 = ctx.$implicit;
|
|
148
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
149
|
+
i0.ɵɵclassProp("selected", ctx_r1.isEntitySelected(entity_r12));
|
|
150
|
+
i0.ɵɵproperty("title", entity_r12.Description || entity_r12.Name);
|
|
151
|
+
i0.ɵɵadvance();
|
|
152
|
+
i0.ɵɵclassMap(ctx_r1.getEntityIcon(entity_r12));
|
|
153
|
+
i0.ɵɵadvance(2);
|
|
154
|
+
i0.ɵɵtextInterpolate(entity_r12.Name);
|
|
155
|
+
} }
|
|
156
|
+
function NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "span");
|
|
158
|
+
i0.ɵɵtext(2);
|
|
159
|
+
i0.ɵɵelementEnd()();
|
|
160
|
+
} if (rf & 2) {
|
|
161
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
162
|
+
i0.ɵɵadvance(2);
|
|
163
|
+
i0.ɵɵtextInterpolate1("No entities match \"", ctx_r1.entitySearchTerm, "\"");
|
|
164
|
+
} }
|
|
165
|
+
function NavigationPanelComponent_Conditional_3_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
167
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 25);
|
|
168
|
+
i0.ɵɵelement(2, "i", 26);
|
|
169
|
+
i0.ɵɵelementStart(3, "input", 27);
|
|
170
|
+
i0.ɵɵtwoWayListener("ngModelChange", function NavigationPanelComponent_Conditional_3_Conditional_25_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.entitySearchTerm, $event) || (ctx_r1.entitySearchTerm = $event); return i0.ɵɵresetView($event); });
|
|
171
|
+
i0.ɵɵelementEnd();
|
|
172
|
+
i0.ɵɵtemplate(4, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_4_Template, 2, 0, "button", 28);
|
|
173
|
+
i0.ɵɵelementEnd();
|
|
174
|
+
i0.ɵɵelementStart(5, "div", 29)(6, "div", 30);
|
|
175
|
+
i0.ɵɵrepeaterCreate(7, NavigationPanelComponent_Conditional_3_Conditional_25_For_8_Template, 4, 6, "div", 31, _forTrack2);
|
|
176
|
+
i0.ɵɵtemplate(9, NavigationPanelComponent_Conditional_3_Conditional_25_Conditional_9_Template, 3, 1, "div", 17);
|
|
177
|
+
i0.ɵɵelementEnd()()();
|
|
178
|
+
} if (rf & 2) {
|
|
179
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
180
|
+
i0.ɵɵadvance(3);
|
|
181
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.entitySearchTerm);
|
|
182
|
+
i0.ɵɵadvance();
|
|
183
|
+
i0.ɵɵconditional(ctx_r1.entitySearchTerm ? 4 : -1);
|
|
184
|
+
i0.ɵɵadvance(3);
|
|
185
|
+
i0.ɵɵrepeater(ctx_r1.filteredEntities);
|
|
186
|
+
i0.ɵɵadvance(2);
|
|
187
|
+
i0.ɵɵconditional(ctx_r1.filteredEntities.length === 0 && ctx_r1.entitySearchTerm ? 9 : -1);
|
|
188
|
+
} }
|
|
189
|
+
function NavigationPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
191
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 5)(2, "div", 6);
|
|
192
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("favorites")); });
|
|
193
|
+
i0.ɵɵelement(3, "i", 7);
|
|
194
|
+
i0.ɵɵelementStart(4, "span", 8);
|
|
195
|
+
i0.ɵɵtext(5, "Favorites");
|
|
196
|
+
i0.ɵɵelementEnd();
|
|
197
|
+
i0.ɵɵtemplate(6, NavigationPanelComponent_Conditional_3_Conditional_6_Template, 2, 1, "span", 9);
|
|
198
|
+
i0.ɵɵelement(7, "i", 10);
|
|
199
|
+
i0.ɵɵelementEnd();
|
|
200
|
+
i0.ɵɵtemplate(8, NavigationPanelComponent_Conditional_3_Conditional_8_Template, 3, 1, "div", 11);
|
|
201
|
+
i0.ɵɵelementEnd();
|
|
202
|
+
i0.ɵɵelementStart(9, "div", 12)(10, "div", 6);
|
|
203
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("recent")); });
|
|
204
|
+
i0.ɵɵelement(11, "i", 13);
|
|
205
|
+
i0.ɵɵelementStart(12, "span", 8);
|
|
206
|
+
i0.ɵɵtext(13, "Recent");
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
i0.ɵɵtemplate(14, NavigationPanelComponent_Conditional_3_Conditional_14_Template, 2, 1, "span", 9);
|
|
209
|
+
i0.ɵɵelement(15, "i", 10);
|
|
210
|
+
i0.ɵɵelementEnd();
|
|
211
|
+
i0.ɵɵtemplate(16, NavigationPanelComponent_Conditional_3_Conditional_16_Template, 3, 1, "div", 11);
|
|
212
|
+
i0.ɵɵelementEnd();
|
|
213
|
+
i0.ɵɵelementStart(17, "div", 14)(18, "div", 6);
|
|
214
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_3_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSectionToggle("entities")); });
|
|
215
|
+
i0.ɵɵelement(19, "i", 15);
|
|
216
|
+
i0.ɵɵelementStart(20, "span", 8);
|
|
217
|
+
i0.ɵɵtext(21, "Entities");
|
|
218
|
+
i0.ɵɵelementEnd();
|
|
219
|
+
i0.ɵɵelementStart(22, "span", 9);
|
|
220
|
+
i0.ɵɵtext(23);
|
|
221
|
+
i0.ɵɵelementEnd();
|
|
222
|
+
i0.ɵɵelement(24, "i", 10);
|
|
223
|
+
i0.ɵɵelementEnd();
|
|
224
|
+
i0.ɵɵtemplate(25, NavigationPanelComponent_Conditional_3_Conditional_25_Template, 10, 3, "div", 16);
|
|
225
|
+
i0.ɵɵelementEnd()();
|
|
226
|
+
} if (rf & 2) {
|
|
227
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
228
|
+
i0.ɵɵadvance(6);
|
|
229
|
+
i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length > 0 ? 6 : -1);
|
|
230
|
+
i0.ɵɵadvance();
|
|
231
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.favoritesSectionExpanded)("fa-chevron-right", !ctx_r1.favoritesSectionExpanded);
|
|
232
|
+
i0.ɵɵadvance();
|
|
233
|
+
i0.ɵɵconditional(ctx_r1.favoritesSectionExpanded ? 8 : -1);
|
|
234
|
+
i0.ɵɵadvance(6);
|
|
235
|
+
i0.ɵɵconditional(ctx_r1.filteredRecentItems.length > 0 ? 14 : -1);
|
|
236
|
+
i0.ɵɵadvance();
|
|
237
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.recentSectionExpanded)("fa-chevron-right", !ctx_r1.recentSectionExpanded);
|
|
238
|
+
i0.ɵɵadvance();
|
|
239
|
+
i0.ɵɵconditional(ctx_r1.recentSectionExpanded ? 16 : -1);
|
|
240
|
+
i0.ɵɵadvance(7);
|
|
241
|
+
i0.ɵɵtextInterpolate1("(", ctx_r1.entities.length, ")");
|
|
242
|
+
i0.ɵɵadvance();
|
|
243
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.entitiesSectionExpanded)("fa-chevron-right", !ctx_r1.entitiesSectionExpanded);
|
|
244
|
+
i0.ɵɵadvance();
|
|
245
|
+
i0.ɵɵconditional(ctx_r1.entitiesSectionExpanded ? 25 : -1);
|
|
246
|
+
} }
|
|
247
|
+
function NavigationPanelComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
248
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
249
|
+
i0.ɵɵtext(1);
|
|
250
|
+
i0.ɵɵelementEnd();
|
|
251
|
+
} if (rf & 2) {
|
|
252
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
253
|
+
i0.ɵɵadvance();
|
|
254
|
+
i0.ɵɵtextInterpolate(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length);
|
|
255
|
+
} }
|
|
256
|
+
function NavigationPanelComponent_Conditional_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
257
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
258
|
+
i0.ɵɵtext(1);
|
|
259
|
+
i0.ɵɵelementEnd();
|
|
260
|
+
} if (rf & 2) {
|
|
261
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
262
|
+
i0.ɵɵadvance();
|
|
263
|
+
i0.ɵɵtextInterpolate(ctx_r1.filteredRecentItems.length);
|
|
264
|
+
} }
|
|
265
|
+
function NavigationPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
266
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
267
|
+
i0.ɵɵelementStart(0, "div", 4)(1, "button", 35);
|
|
268
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("favorites")); });
|
|
269
|
+
i0.ɵɵelement(2, "i", 36);
|
|
270
|
+
i0.ɵɵtemplate(3, NavigationPanelComponent_Conditional_4_Conditional_3_Template, 2, 1, "span", 37);
|
|
271
|
+
i0.ɵɵelementEnd();
|
|
272
|
+
i0.ɵɵelementStart(4, "button", 38);
|
|
273
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("recent")); });
|
|
274
|
+
i0.ɵɵelement(5, "i", 39);
|
|
275
|
+
i0.ɵɵtemplate(6, NavigationPanelComponent_Conditional_4_Conditional_6_Template, 2, 1, "span", 37);
|
|
276
|
+
i0.ɵɵelementEnd();
|
|
277
|
+
i0.ɵɵelementStart(7, "button", 40);
|
|
278
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Conditional_4_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCollapsedIconClick("entities")); });
|
|
279
|
+
i0.ɵɵelement(8, "i", 41);
|
|
280
|
+
i0.ɵɵelementStart(9, "span", 37);
|
|
281
|
+
i0.ɵɵtext(10);
|
|
282
|
+
i0.ɵɵelementEnd()()();
|
|
283
|
+
} if (rf & 2) {
|
|
284
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
285
|
+
i0.ɵɵadvance(3);
|
|
286
|
+
i0.ɵɵconditional(ctx_r1.favoriteRecords.length + ctx_r1.favoriteEntities.length > 0 ? 3 : -1);
|
|
287
|
+
i0.ɵɵadvance(3);
|
|
288
|
+
i0.ɵɵconditional(ctx_r1.filteredRecentItems.length > 0 ? 6 : -1);
|
|
289
|
+
i0.ɵɵadvance(4);
|
|
290
|
+
i0.ɵɵtextInterpolate(ctx_r1.entities.length);
|
|
291
|
+
} }
|
|
292
|
+
export class NavigationPanelComponent {
|
|
293
|
+
entities = [];
|
|
294
|
+
selectedEntityName = null;
|
|
295
|
+
favorites = [];
|
|
296
|
+
recentItems = [];
|
|
297
|
+
collapsed = false;
|
|
298
|
+
/**
|
|
299
|
+
* Optional set of allowed entity names for filtering favorites/recents.
|
|
300
|
+
* If provided, only items matching these entities will be shown.
|
|
301
|
+
*/
|
|
302
|
+
allowedEntityNames = null;
|
|
303
|
+
// Section expansion states
|
|
304
|
+
favoritesSectionExpanded = true;
|
|
305
|
+
recentSectionExpanded = true;
|
|
306
|
+
entitiesSectionExpanded = true;
|
|
307
|
+
viewsSectionExpanded = true;
|
|
308
|
+
entitySelected = new EventEmitter();
|
|
309
|
+
toggleCollapse = new EventEmitter();
|
|
310
|
+
sectionToggled = new EventEmitter();
|
|
311
|
+
openRecord = new EventEmitter();
|
|
312
|
+
/** Emitted when a record should be selected within Data Explorer (navigate to entity + select record) */
|
|
313
|
+
selectRecord = new EventEmitter();
|
|
314
|
+
/** Emitted when a collapsed icon is clicked - expands panel and focuses section */
|
|
315
|
+
expandAndFocus = new EventEmitter();
|
|
316
|
+
metadata = new Metadata();
|
|
317
|
+
// Entity search/filter
|
|
318
|
+
entitySearchTerm = '';
|
|
319
|
+
/**
|
|
320
|
+
* Get filtered entities based on search term
|
|
321
|
+
*/
|
|
322
|
+
get filteredEntities() {
|
|
323
|
+
if (!this.entitySearchTerm) {
|
|
324
|
+
return this.entities;
|
|
325
|
+
}
|
|
326
|
+
const term = this.entitySearchTerm.toLowerCase();
|
|
327
|
+
return this.entities.filter(e => e.Name.toLowerCase().includes(term) ||
|
|
328
|
+
(e.Description && e.Description.toLowerCase().includes(term)));
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Get recent items filtered by allowed entities (if filter is active)
|
|
332
|
+
*/
|
|
333
|
+
get filteredRecentItems() {
|
|
334
|
+
if (!this.allowedEntityNames) {
|
|
335
|
+
return this.recentItems;
|
|
336
|
+
}
|
|
337
|
+
return this.recentItems.filter(r => this.allowedEntityNames.has(r.entityName));
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Get favorites filtered to records only (respecting entity filter)
|
|
341
|
+
*/
|
|
342
|
+
get favoriteRecords() {
|
|
343
|
+
const records = this.favorites.filter(f => f.type === 'record');
|
|
344
|
+
if (!this.allowedEntityNames) {
|
|
345
|
+
return records;
|
|
346
|
+
}
|
|
347
|
+
return records.filter(f => f.entityName && this.allowedEntityNames.has(f.entityName));
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get favorites filtered to entities only (respecting entity filter)
|
|
351
|
+
*/
|
|
352
|
+
get favoriteEntities() {
|
|
353
|
+
const entities = this.favorites.filter(f => f.type === 'entity');
|
|
354
|
+
if (!this.allowedEntityNames) {
|
|
355
|
+
return entities;
|
|
356
|
+
}
|
|
357
|
+
return entities.filter(f => f.entityName && this.allowedEntityNames.has(f.entityName));
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Handle entity click
|
|
361
|
+
*/
|
|
362
|
+
onEntityClick(entity) {
|
|
363
|
+
this.entitySelected.emit(entity);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Handle favorite click - navigates to entity and selects record within Data Explorer
|
|
367
|
+
*/
|
|
368
|
+
onFavoriteClick(favorite) {
|
|
369
|
+
if (favorite.type === 'entity' && favorite.entityName) {
|
|
370
|
+
const entity = this.entities.find(e => e.Name === favorite.entityName);
|
|
371
|
+
if (entity) {
|
|
372
|
+
this.entitySelected.emit(entity);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
else if (favorite.type === 'record' && favorite.entityName && favorite.compositeKeyString) {
|
|
376
|
+
// Extract record ID from the composite key string
|
|
377
|
+
// Format is "FieldName|Value" or "FieldName|Value||FieldName2|Value2"
|
|
378
|
+
const compositeKey = new CompositeKey();
|
|
379
|
+
compositeKey.LoadFromConcatenatedString(favorite.compositeKeyString);
|
|
380
|
+
const recordId = compositeKey.KeyValuePairs[0]?.Value?.toString() || '';
|
|
381
|
+
// Navigate to entity and select record within Data Explorer (not full tab)
|
|
382
|
+
this.selectRecord.emit({
|
|
383
|
+
entityName: favorite.entityName,
|
|
384
|
+
recordId
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Handle recent item click - navigates to entity and selects record within Data Explorer
|
|
390
|
+
*/
|
|
391
|
+
onRecentClick(item) {
|
|
392
|
+
// Extract record ID from the composite key string
|
|
393
|
+
const compositeKey = new CompositeKey();
|
|
394
|
+
compositeKey.LoadFromConcatenatedString(item.compositeKeyString);
|
|
395
|
+
const recordId = compositeKey.KeyValuePairs[0]?.Value?.toString() || '';
|
|
396
|
+
// Navigate to entity and select record within Data Explorer (not full tab)
|
|
397
|
+
this.selectRecord.emit({
|
|
398
|
+
entityName: item.entityName,
|
|
399
|
+
recordId
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Handle section header click
|
|
404
|
+
*/
|
|
405
|
+
onSectionToggle(section) {
|
|
406
|
+
this.sectionToggled.emit(section);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Handle collapse toggle
|
|
410
|
+
*/
|
|
411
|
+
onToggleCollapse() {
|
|
412
|
+
this.toggleCollapse.emit();
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Handle collapsed icon click - expands panel and focuses section
|
|
416
|
+
*/
|
|
417
|
+
onCollapsedIconClick(section) {
|
|
418
|
+
this.expandAndFocus.emit(section);
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Check if entity is selected
|
|
422
|
+
*/
|
|
423
|
+
isEntitySelected(entity) {
|
|
424
|
+
return entity.Name === this.selectedEntityName;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Get icon for entity
|
|
428
|
+
*/
|
|
429
|
+
getEntityIcon(entity) {
|
|
430
|
+
const icon = entity.Icon;
|
|
431
|
+
if (!icon) {
|
|
432
|
+
return 'fa-solid fa-table';
|
|
433
|
+
}
|
|
434
|
+
// If icon already has fa- prefix, use it as-is
|
|
435
|
+
if (icon.startsWith('fa-') || icon.startsWith('fa ')) {
|
|
436
|
+
// Ensure it has a style prefix (fa-solid, fa-regular, etc.)
|
|
437
|
+
if (icon.startsWith('fa-solid') || icon.startsWith('fa-regular') ||
|
|
438
|
+
icon.startsWith('fa-light') || icon.startsWith('fa-brands') ||
|
|
439
|
+
icon.startsWith('fa ')) {
|
|
440
|
+
return icon;
|
|
441
|
+
}
|
|
442
|
+
// It's just "fa-something", add fa-solid prefix
|
|
443
|
+
return `fa-solid ${icon}`;
|
|
444
|
+
}
|
|
445
|
+
// Check if it's just an icon name like "table" or "users"
|
|
446
|
+
return `fa-solid fa-${icon}`;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Format recent item timestamp
|
|
450
|
+
*/
|
|
451
|
+
formatTimestamp(timestamp) {
|
|
452
|
+
const date = new Date(timestamp);
|
|
453
|
+
const now = new Date();
|
|
454
|
+
const diffMs = now.getTime() - date.getTime();
|
|
455
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
456
|
+
if (diffMins < 1)
|
|
457
|
+
return 'Just now';
|
|
458
|
+
if (diffMins < 60)
|
|
459
|
+
return `${diffMins}m ago`;
|
|
460
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
461
|
+
if (diffHours < 24)
|
|
462
|
+
return `${diffHours}h ago`;
|
|
463
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
464
|
+
if (diffDays < 7)
|
|
465
|
+
return `${diffDays}d ago`;
|
|
466
|
+
return date.toLocaleDateString();
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Get icon for a recent item based on its entity
|
|
470
|
+
*/
|
|
471
|
+
getRecentItemIcon(item) {
|
|
472
|
+
const entityInfo = this.metadata.Entities.find(e => e.Name === item.entityName);
|
|
473
|
+
if (entityInfo) {
|
|
474
|
+
return this.getEntityIcon(entityInfo);
|
|
475
|
+
}
|
|
476
|
+
return 'fa-solid fa-file-alt';
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Get icon for a favorite item based on its type and entity
|
|
480
|
+
*/
|
|
481
|
+
getFavoriteIcon(favorite) {
|
|
482
|
+
if (favorite.type === 'view') {
|
|
483
|
+
return 'fa-solid fa-filter';
|
|
484
|
+
}
|
|
485
|
+
// For entity and record types, look up the entity icon
|
|
486
|
+
if (favorite.entityName) {
|
|
487
|
+
const entityInfo = this.metadata.Entities.find(e => e.Name === favorite.entityName);
|
|
488
|
+
if (entityInfo) {
|
|
489
|
+
return this.getEntityIcon(entityInfo);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
// Fallback icons
|
|
493
|
+
if (favorite.type === 'entity') {
|
|
494
|
+
return 'fa-solid fa-table';
|
|
495
|
+
}
|
|
496
|
+
return 'fa-solid fa-file-alt';
|
|
497
|
+
}
|
|
498
|
+
static ɵfac = function NavigationPanelComponent_Factory(t) { return new (t || NavigationPanelComponent)(); };
|
|
499
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NavigationPanelComponent, selectors: [["mj-explorer-navigation-panel"]], inputs: { entities: "entities", selectedEntityName: "selectedEntityName", favorites: "favorites", recentItems: "recentItems", collapsed: "collapsed", allowedEntityNames: "allowedEntityNames", favoritesSectionExpanded: "favoritesSectionExpanded", recentSectionExpanded: "recentSectionExpanded", entitiesSectionExpanded: "entitiesSectionExpanded", viewsSectionExpanded: "viewsSectionExpanded" }, outputs: { entitySelected: "entitySelected", toggleCollapse: "toggleCollapse", sectionToggled: "sectionToggled", openRecord: "openRecord", selectRecord: "selectRecord", expandAndFocus: "expandAndFocus" }, decls: 5, vars: 8, consts: [[1, "navigation-panel-container"], [1, "collapse-toggle", 3, "click", "title"], [1, "fa-solid"], [1, "panel-content"], [1, "collapsed-icons"], [1, "section", "favorites-section"], [1, "section-header", 3, "click"], [1, "fa-solid", "fa-star", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "fa-solid", "expand-icon"], [1, "section-content", "scrollable-section"], [1, "section", "recent-section"], [1, "fa-solid", "fa-clock", "section-icon"], [1, "section", "entities-section"], [1, "fa-solid", "fa-database", "section-icon"], [1, "section-content"], [1, "empty-section"], [1, "scrollable-list"], [1, "scrollable-list-inner"], [1, "nav-item", 3, "title"], [1, "nav-item", 3, "click", "title"], [1, "nav-item-label"], [1, "nav-item-content"], [1, "nav-item-meta"], [1, "entity-search"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "entity-list"], [1, "entity-list-inner"], [1, "nav-item", "entity-item", 3, "selected", "title"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-item", "entity-item", 3, "click", "title"], ["title", "Favorites", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-star"], [1, "collapsed-badge"], ["title", "Recent", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-clock"], ["title", "Entities", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-database"]], template: function NavigationPanelComponent_Template(rf, ctx) { if (rf & 1) {
|
|
500
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
|
|
501
|
+
i0.ɵɵlistener("click", function NavigationPanelComponent_Template_button_click_1_listener() { return ctx.onToggleCollapse(); });
|
|
502
|
+
i0.ɵɵelement(2, "i", 2);
|
|
503
|
+
i0.ɵɵelementEnd();
|
|
504
|
+
i0.ɵɵtemplate(3, NavigationPanelComponent_Conditional_3_Template, 26, 18, "div", 3)(4, NavigationPanelComponent_Conditional_4_Template, 11, 3, "div", 4);
|
|
505
|
+
i0.ɵɵelementEnd();
|
|
506
|
+
} if (rf & 2) {
|
|
507
|
+
i0.ɵɵclassProp("collapsed", ctx.collapsed);
|
|
508
|
+
i0.ɵɵadvance();
|
|
509
|
+
i0.ɵɵproperty("title", ctx.collapsed ? "Expand" : "Collapse");
|
|
510
|
+
i0.ɵɵadvance();
|
|
511
|
+
i0.ɵɵclassProp("fa-chevron-right", ctx.collapsed)("fa-chevron-left", !ctx.collapsed);
|
|
512
|
+
i0.ɵɵadvance();
|
|
513
|
+
i0.ɵɵconditional(!ctx.collapsed ? 3 : 4);
|
|
514
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel], styles: [".navigation-panel-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; \n\n position: relative;\n background: white;\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed[_ngcontent-%COMP%] {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid #e8e8e8;\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: #f5f5f5;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle[_ngcontent-%COMP%]:hover {\n background: #e8e8e8;\n color: #333;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%] {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed[_ngcontent-%COMP%] .collapse-toggle[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n\n.panel-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; \n\n}\n\n.section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n\n\n.section.favorites-section[_ngcontent-%COMP%], \n.section.recent-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; \n\n}\n\n.section.entities-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: #fafafa;\n}\n.section-header[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n}\n\n.section-icon[_ngcontent-%COMP%] {\n width: 20px;\n font-size: 13px;\n color: #666;\n margin-right: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: #555;\n}\n\n.section-count[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #999;\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n color: #999;\n transition: transform 0.15s ease;\n}\n\n.section-content[_ngcontent-%COMP%] {\n padding: 8px 12px 12px 12px;\n background: white;\n}\n\n\n\n.section-content.scrollable-section[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 3px;\n}\n.scrollable-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #ccc;\n}\n\n.scrollable-list-inner[_ngcontent-%COMP%] {\n \n\n}\n\n.entities-section[_ngcontent-%COMP%] .section-content[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; \n\n overflow: hidden;\n}\n\n.empty-section[_ngcontent-%COMP%] {\n padding: 20px 16px;\n text-align: center;\n color: #aaa;\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n.nav-item.selected[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);\n color: #1565c0;\n box-shadow: 0 1px 3px rgba(21, 101, 192, 0.15);\n}\n.nav-item.selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #1565c0;\n}\n.nav-item.selected[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 18px;\n font-size: 14px;\n color: #666;\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta[_ngcontent-%COMP%] {\n font-size: 11px;\n color: #999;\n}\n\n.entity-search[_ngcontent-%COMP%] {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: #999;\n}\n\n.search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n font-size: 13px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n.search-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #1976d2;\n background: white;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: #aaa;\n}\n\n.clear-search[_ngcontent-%COMP%] {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n}\n.clear-search[_ngcontent-%COMP%]:hover {\n background: #e0e0e0;\n color: #555;\n}\n\n.entity-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 3px;\n}\n.entity-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: #ccc;\n}\n\n.entity-list-inner[_ngcontent-%COMP%] {\n \n\n \n\n}\n\n.entity-item[_ngcontent-%COMP%] .nav-item-label[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.collapsed-icons[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #1976d2;\n}\n.icon-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.collapsed-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n background: #1976d2;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}"] });
|
|
515
|
+
}
|
|
516
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationPanelComponent, [{
|
|
517
|
+
type: Component,
|
|
518
|
+
args: [{ selector: 'mj-explorer-navigation-panel', template: "<div class=\"navigation-panel-container\" [class.collapsed]=\"collapsed\">\n <!-- Collapse Toggle -->\n <button class=\"collapse-toggle\" (click)=\"onToggleCollapse()\" [title]=\"collapsed ? 'Expand' : 'Collapse'\">\n <i class=\"fa-solid\" [class.fa-chevron-right]=\"collapsed\" [class.fa-chevron-left]=\"!collapsed\"></i>\n </button>\n\n @if (!collapsed) {\n <div class=\"panel-content\">\n <!-- Favorites Section -->\n <div class=\"section favorites-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('favorites')\">\n <i class=\"fa-solid fa-star section-icon\"></i>\n <span class=\"section-title\">Favorites</span>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"section-count\">({{ favoriteRecords.length + favoriteEntities.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"favoritesSectionExpanded\" [class.fa-chevron-right]=\"!favoritesSectionExpanded\"></i>\n </div>\n\n @if (favoritesSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (favoriteRecords.length + favoriteEntities.length === 0) {\n <div class=\"empty-section\">\n <span>No favorites yet</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (favorite of favoriteEntities; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n @for (favorite of favoriteRecords; track favorite.displayName) {\n <div class=\"nav-item\" (click)=\"onFavoriteClick(favorite)\" [title]=\"favorite.entityName ? favorite.entityName + ' - ' + favorite.displayName : favorite.displayName\">\n <i [class]=\"getFavoriteIcon(favorite)\"></i>\n <span class=\"nav-item-label\">{{ favorite.displayName }}</span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Recent Items Section -->\n <div class=\"section recent-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('recent')\">\n <i class=\"fa-solid fa-clock section-icon\"></i>\n <span class=\"section-title\">Recent</span>\n @if (filteredRecentItems.length > 0) {\n <span class=\"section-count\">({{ filteredRecentItems.length }})</span>\n }\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"recentSectionExpanded\" [class.fa-chevron-right]=\"!recentSectionExpanded\"></i>\n </div>\n\n @if (recentSectionExpanded) {\n <div class=\"section-content scrollable-section\">\n @if (filteredRecentItems.length === 0) {\n <div class=\"empty-section\">\n <span>No recent items</span>\n </div>\n } @else {\n <div class=\"scrollable-list\">\n <div class=\"scrollable-list-inner\">\n @for (item of filteredRecentItems; track item.compositeKeyString) {\n <div class=\"nav-item\" (click)=\"onRecentClick(item)\" [title]=\"item.entityName + ' - ' + item.displayName\">\n <i [class]=\"getRecentItemIcon(item)\"></i>\n <div class=\"nav-item-content\">\n <span class=\"nav-item-label\">{{ item.displayName }}</span>\n <span class=\"nav-item-meta\">{{ formatTimestamp(item.timestamp) }}</span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Entities Section -->\n <div class=\"section entities-section\">\n <div class=\"section-header\" (click)=\"onSectionToggle('entities')\">\n <i class=\"fa-solid fa-database section-icon\"></i>\n <span class=\"section-title\">Entities</span>\n <span class=\"section-count\">({{ entities.length }})</span>\n <i class=\"fa-solid expand-icon\" [class.fa-chevron-down]=\"entitiesSectionExpanded\" [class.fa-chevron-right]=\"!entitiesSectionExpanded\"></i>\n </div>\n\n @if (entitiesSectionExpanded) {\n <div class=\"section-content\">\n <!-- Entity Search -->\n <div class=\"entity-search\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input\n type=\"text\"\n class=\"search-input\"\n placeholder=\"Search entities...\"\n [(ngModel)]=\"entitySearchTerm\"\n />\n @if (entitySearchTerm) {\n <button class=\"clear-search\" (click)=\"entitySearchTerm = ''\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n\n <!-- Entity List (scrollable container) -->\n <div class=\"entity-list\">\n <!-- Inner content that grows naturally -->\n <div class=\"entity-list-inner\">\n @for (entity of filteredEntities; track entity.ID) {\n <div\n class=\"nav-item entity-item\"\n [class.selected]=\"isEntitySelected(entity)\"\n (click)=\"onEntityClick(entity)\"\n [title]=\"entity.Description || entity.Name\">\n <i [class]=\"getEntityIcon(entity)\"></i>\n <span class=\"nav-item-label\">{{ entity.Name }}</span>\n </div>\n }\n\n @if (filteredEntities.length === 0 && entitySearchTerm) {\n <div class=\"empty-section\">\n <span>No entities match \"{{ entitySearchTerm }}\"</span>\n </div>\n }\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- Collapsed State - Show Icons Only -->\n <div class=\"collapsed-icons\">\n <button class=\"icon-btn\" title=\"Favorites\" (click)=\"onCollapsedIconClick('favorites')\">\n <i class=\"fa-solid fa-star\"></i>\n @if (favoriteRecords.length + favoriteEntities.length > 0) {\n <span class=\"collapsed-badge\">{{ favoriteRecords.length + favoriteEntities.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Recent\" (click)=\"onCollapsedIconClick('recent')\">\n <i class=\"fa-solid fa-clock\"></i>\n @if (filteredRecentItems.length > 0) {\n <span class=\"collapsed-badge\">{{ filteredRecentItems.length }}</span>\n }\n </button>\n <button class=\"icon-btn\" title=\"Entities\" (click)=\"onCollapsedIconClick('entities')\">\n <i class=\"fa-solid fa-database\"></i>\n <span class=\"collapsed-badge\">{{ entities.length }}</span>\n </button>\n </div>\n }\n</div>\n", styles: [".navigation-panel-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0; /* Critical for nested flex scrolling */\n position: relative;\n background: white;\n box-shadow: 1px 0 3px rgba(0, 0, 0, 0.05);\n}\n.navigation-panel-container.collapsed {\n align-items: center;\n padding-top: 48px;\n}\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px;\n border-bottom: 1px solid #e8e8e8;\n flex-shrink: 0;\n}\n\n.panel-title {\n font-size: 14px;\n font-weight: 600;\n color: #333;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.collapse-toggle {\n position: absolute;\n top: 12px;\n right: 12px;\n width: 28px;\n height: 28px;\n border: none;\n background: #f5f5f5;\n border-radius: 6px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n z-index: 10;\n}\n.collapse-toggle:hover {\n background: #e8e8e8;\n color: #333;\n}\n.collapsed .collapse-toggle {\n right: auto;\n left: 50%;\n transform: translateX(-50%);\n background: transparent;\n}\n.collapsed .collapse-toggle:hover {\n background: #f5f5f5;\n}\n\n.panel-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding-top: 48px;\n min-height: 0; /* Allow flex children to shrink below content size */\n}\n\n.section {\n flex-shrink: 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n/* Scrollable sections (Favorites, Recent) - allow them to shrink and scroll */\n.section.favorites-section,\n.section.recent-section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n max-height: 200px; /* Limit height so entities section has room */\n}\n\n.section.entities-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n border-bottom: none;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s ease;\n background: #fafafa;\n}\n.section-header:hover {\n background: #f0f0f0;\n}\n\n.section-icon {\n width: 20px;\n font-size: 13px;\n color: #666;\n margin-right: 10px;\n}\n\n.section-title {\n flex: 1;\n font-size: 11px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.8px;\n color: #555;\n}\n\n.section-count {\n font-size: 11px;\n color: #999;\n margin-right: 8px;\n font-weight: 500;\n}\n\n.expand-icon {\n font-size: 10px;\n color: #999;\n transition: transform 0.15s ease;\n}\n\n.section-content {\n padding: 8px 12px 12px 12px;\n background: white;\n}\n\n/* Scrollable section content for Favorites and Recent */\n.section-content.scrollable-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n overflow: hidden;\n}\n\n.scrollable-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.scrollable-list::-webkit-scrollbar {\n width: 6px;\n}\n.scrollable-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.scrollable-list::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 3px;\n}\n.scrollable-list::-webkit-scrollbar-thumb:hover {\n background: #ccc;\n}\n\n.scrollable-list-inner {\n /* Inner container grows naturally based on content */\n}\n\n.entities-section .section-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0; /* Allow content to shrink */\n overflow: hidden;\n}\n\n.empty-section {\n padding: 20px 16px;\n text-align: center;\n color: #aaa;\n font-size: 12px;\n font-style: italic;\n}\n\n.nav-item {\n display: flex;\n align-items: center;\n padding: 10px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n gap: 10px;\n margin-bottom: 2px;\n}\n.nav-item:hover {\n background: #f5f5f5;\n}\n.nav-item.selected {\n background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);\n color: #1565c0;\n box-shadow: 0 1px 3px rgba(21, 101, 192, 0.15);\n}\n.nav-item.selected i {\n color: #1565c0;\n}\n.nav-item.selected .nav-item-label {\n font-weight: 600;\n}\n.nav-item i {\n width: 18px;\n font-size: 14px;\n color: #666;\n flex-shrink: 0;\n text-align: center;\n}\n\n.nav-item-content {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.nav-item-label {\n font-size: 13px;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.nav-item-meta {\n font-size: 11px;\n color: #999;\n}\n\n.entity-search {\n position: relative;\n margin-bottom: 12px;\n flex-shrink: 0;\n}\n\n.search-icon {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 12px;\n color: #999;\n}\n\n.search-input {\n width: 100%;\n padding: 10px 36px 10px 36px;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n font-size: 13px;\n background: #fafafa;\n transition: all 0.15s ease;\n}\n.search-input:focus {\n outline: none;\n border-color: #1976d2;\n background: white;\n box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.1);\n}\n.search-input::placeholder {\n color: #aaa;\n}\n\n.clear-search {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #999;\n}\n.clear-search:hover {\n background: #e0e0e0;\n color: #555;\n}\n\n.entity-list {\n flex: 1;\n overflow-y: auto;\n min-height: 0;\n padding-right: 4px;\n}\n.entity-list::-webkit-scrollbar {\n width: 6px;\n}\n.entity-list::-webkit-scrollbar-track {\n background: transparent;\n}\n.entity-list::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 3px;\n}\n.entity-list::-webkit-scrollbar-thumb:hover {\n background: #ccc;\n}\n\n.entity-list-inner {\n /* Inner container grows naturally based on content */\n /* Does not scroll - parent .entity-list handles scrolling */\n}\n\n.entity-item .nav-item-label {\n flex: 1;\n}\n\n.collapsed-icons {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n\n.icon-btn {\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 8px;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n transition: all 0.15s ease;\n position: relative;\n}\n.icon-btn:hover {\n background: #f0f0f0;\n color: #1976d2;\n}\n.icon-btn i {\n font-size: 16px;\n}\n\n.collapsed-badge {\n position: absolute;\n top: 2px;\n right: 2px;\n min-width: 16px;\n height: 16px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n background: #1976d2;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n}\n"] }]
|
|
519
|
+
}], null, { entities: [{
|
|
520
|
+
type: Input
|
|
521
|
+
}], selectedEntityName: [{
|
|
522
|
+
type: Input
|
|
523
|
+
}], favorites: [{
|
|
524
|
+
type: Input
|
|
525
|
+
}], recentItems: [{
|
|
526
|
+
type: Input
|
|
527
|
+
}], collapsed: [{
|
|
528
|
+
type: Input
|
|
529
|
+
}], allowedEntityNames: [{
|
|
530
|
+
type: Input
|
|
531
|
+
}], favoritesSectionExpanded: [{
|
|
532
|
+
type: Input
|
|
533
|
+
}], recentSectionExpanded: [{
|
|
534
|
+
type: Input
|
|
535
|
+
}], entitiesSectionExpanded: [{
|
|
536
|
+
type: Input
|
|
537
|
+
}], viewsSectionExpanded: [{
|
|
538
|
+
type: Input
|
|
539
|
+
}], entitySelected: [{
|
|
540
|
+
type: Output
|
|
541
|
+
}], toggleCollapse: [{
|
|
542
|
+
type: Output
|
|
543
|
+
}], sectionToggled: [{
|
|
544
|
+
type: Output
|
|
545
|
+
}], openRecord: [{
|
|
546
|
+
type: Output
|
|
547
|
+
}], selectRecord: [{
|
|
548
|
+
type: Output
|
|
549
|
+
}], expandAndFocus: [{
|
|
550
|
+
type: Output
|
|
551
|
+
}] }); })();
|
|
552
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NavigationPanelComponent, { className: "NavigationPanelComponent", filePath: "src/DataExplorer/components/navigation-panel/navigation-panel.component.ts", lineNumber: 26 }); })();
|
|
553
|
+
//# sourceMappingURL=navigation-panel.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation-panel.component.js","sourceRoot":"","sources":["../../../../src/DataExplorer/components/navigation-panel/navigation-panel.component.ts","../../../../src/DataExplorer/components/navigation-panel/navigation-panel.component.html"],"names":[],"mappings":"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"}
|