@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,480 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Metadata, RunView } from '@memberjunction/core';
|
|
3
|
+
import { Subject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
const _forTrack0 = ($index, $item) => $item.id;
|
|
6
|
+
function ViewSelectorComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
7
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
8
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
9
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_1_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDropdown()); });
|
|
10
|
+
i0.ɵɵelementEnd();
|
|
11
|
+
} }
|
|
12
|
+
function ViewSelectorComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelementStart(0, "span", 6);
|
|
14
|
+
i0.ɵɵtext(1, "\u2022");
|
|
15
|
+
i0.ɵɵelementEnd();
|
|
16
|
+
} }
|
|
17
|
+
function ViewSelectorComponent_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelement(0, "i", 16);
|
|
19
|
+
} }
|
|
20
|
+
function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
21
|
+
i0.ɵɵelement(0, "i", 33);
|
|
22
|
+
} }
|
|
23
|
+
function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
+
i0.ɵɵelement(0, "i", 34);
|
|
25
|
+
} }
|
|
26
|
+
function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelement(0, "i", 16);
|
|
28
|
+
} }
|
|
29
|
+
function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
32
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template_div_click_0_listener() { const view_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectView(view_r5)); });
|
|
33
|
+
i0.ɵɵelement(1, "i", 32);
|
|
34
|
+
i0.ɵɵelementStart(2, "span", 15);
|
|
35
|
+
i0.ɵɵtext(3);
|
|
36
|
+
i0.ɵɵelementEnd();
|
|
37
|
+
i0.ɵɵtemplate(4, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_4_Template, 1, 0, "i", 33)(5, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_5_Template, 1, 0, "i", 34)(6, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Conditional_6_Template, 1, 0, "i", 16);
|
|
38
|
+
i0.ɵɵelementEnd();
|
|
39
|
+
} if (rf & 2) {
|
|
40
|
+
const view_r5 = ctx.$implicit;
|
|
41
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
42
|
+
i0.ɵɵclassProp("selected", ctx_r1.selectedViewId === view_r5.id);
|
|
43
|
+
i0.ɵɵadvance(3);
|
|
44
|
+
i0.ɵɵtextInterpolate(view_r5.name);
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵconditional(view_r5.isShared ? 4 : -1);
|
|
47
|
+
i0.ɵɵadvance();
|
|
48
|
+
i0.ɵɵconditional(view_r5.isDefault ? 5 : -1);
|
|
49
|
+
i0.ɵɵadvance();
|
|
50
|
+
i0.ɵɵconditional(ctx_r1.selectedViewId === view_r5.id ? 6 : -1);
|
|
51
|
+
} }
|
|
52
|
+
function ViewSelectorComponent_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 26);
|
|
54
|
+
i0.ɵɵelement(2, "i", 27);
|
|
55
|
+
i0.ɵɵelementStart(3, "span", 28);
|
|
56
|
+
i0.ɵɵtext(4, "My Views");
|
|
57
|
+
i0.ɵɵelementEnd();
|
|
58
|
+
i0.ɵɵelementStart(5, "span", 29);
|
|
59
|
+
i0.ɵɵtext(6);
|
|
60
|
+
i0.ɵɵelementEnd()();
|
|
61
|
+
i0.ɵɵrepeaterCreate(7, ViewSelectorComponent_Conditional_9_Conditional_7_For_8_Template, 7, 6, "div", 30, _forTrack0);
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
65
|
+
i0.ɵɵadvance(6);
|
|
66
|
+
i0.ɵɵtextInterpolate(ctx_r1.myViews.length);
|
|
67
|
+
i0.ɵɵadvance();
|
|
68
|
+
i0.ɵɵrepeater(ctx_r1.myViews);
|
|
69
|
+
} }
|
|
70
|
+
function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
71
|
+
i0.ɵɵelement(0, "i", 36);
|
|
72
|
+
} }
|
|
73
|
+
function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
74
|
+
i0.ɵɵelement(0, "i", 16);
|
|
75
|
+
} }
|
|
76
|
+
function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
78
|
+
i0.ɵɵelementStart(0, "div", 31);
|
|
79
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template_div_click_0_listener() { const view_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectView(view_r7)); });
|
|
80
|
+
i0.ɵɵelement(1, "i", 32);
|
|
81
|
+
i0.ɵɵelementStart(2, "span", 15);
|
|
82
|
+
i0.ɵɵtext(3);
|
|
83
|
+
i0.ɵɵelementEnd();
|
|
84
|
+
i0.ɵɵtemplate(4, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_4_Template, 1, 0, "i", 36)(5, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Conditional_5_Template, 1, 0, "i", 16);
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const view_r7 = ctx.$implicit;
|
|
88
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
89
|
+
i0.ɵɵclassProp("selected", ctx_r1.selectedViewId === view_r7.id);
|
|
90
|
+
i0.ɵɵadvance(3);
|
|
91
|
+
i0.ɵɵtextInterpolate(view_r7.name);
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵconditional(!view_r7.userCanEdit ? 4 : -1);
|
|
94
|
+
i0.ɵɵadvance();
|
|
95
|
+
i0.ɵɵconditional(ctx_r1.selectedViewId === view_r7.id ? 5 : -1);
|
|
96
|
+
} }
|
|
97
|
+
function ViewSelectorComponent_Conditional_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 26);
|
|
99
|
+
i0.ɵɵelement(2, "i", 35);
|
|
100
|
+
i0.ɵɵelementStart(3, "span", 28);
|
|
101
|
+
i0.ɵɵtext(4, "Shared Views");
|
|
102
|
+
i0.ɵɵelementEnd();
|
|
103
|
+
i0.ɵɵelementStart(5, "span", 29);
|
|
104
|
+
i0.ɵɵtext(6);
|
|
105
|
+
i0.ɵɵelementEnd()();
|
|
106
|
+
i0.ɵɵrepeaterCreate(7, ViewSelectorComponent_Conditional_9_Conditional_8_For_8_Template, 6, 5, "div", 30, _forTrack0);
|
|
107
|
+
i0.ɵɵelementEnd();
|
|
108
|
+
} if (rf & 2) {
|
|
109
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
110
|
+
i0.ɵɵadvance(6);
|
|
111
|
+
i0.ɵɵtextInterpolate(ctx_r1.sharedViews.length);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵrepeater(ctx_r1.sharedViews);
|
|
114
|
+
} }
|
|
115
|
+
function ViewSelectorComponent_Conditional_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 19);
|
|
117
|
+
i0.ɵɵelement(1, "i", 37);
|
|
118
|
+
i0.ɵɵelementStart(2, "span");
|
|
119
|
+
i0.ɵɵtext(3, "No saved views yet");
|
|
120
|
+
i0.ɵɵelementEnd()();
|
|
121
|
+
} }
|
|
122
|
+
function ViewSelectorComponent_Conditional_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
123
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
124
|
+
i0.ɵɵelement(1, "i", 38);
|
|
125
|
+
i0.ɵɵelementStart(2, "span");
|
|
126
|
+
i0.ɵɵtext(3, "Loading views...");
|
|
127
|
+
i0.ɵɵelementEnd()();
|
|
128
|
+
} }
|
|
129
|
+
function ViewSelectorComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
130
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
131
|
+
i0.ɵɵelementStart(0, "div", 8)(1, "div", 13);
|
|
132
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.selectDefault()); });
|
|
133
|
+
i0.ɵɵelement(2, "i", 14);
|
|
134
|
+
i0.ɵɵelementStart(3, "span", 15);
|
|
135
|
+
i0.ɵɵtext(4, "(Default)");
|
|
136
|
+
i0.ɵɵelementEnd();
|
|
137
|
+
i0.ɵɵtemplate(5, ViewSelectorComponent_Conditional_9_Conditional_5_Template, 1, 0, "i", 16);
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
i0.ɵɵelement(6, "div", 17);
|
|
140
|
+
i0.ɵɵtemplate(7, ViewSelectorComponent_Conditional_9_Conditional_7_Template, 9, 1, "div", 18)(8, ViewSelectorComponent_Conditional_9_Conditional_8_Template, 9, 1, "div", 18)(9, ViewSelectorComponent_Conditional_9_Conditional_9_Template, 4, 0, "div", 19)(10, ViewSelectorComponent_Conditional_9_Conditional_10_Template, 4, 0, "div", 20);
|
|
141
|
+
i0.ɵɵelement(11, "div", 17);
|
|
142
|
+
i0.ɵɵelementStart(12, "div", 21)(13, "button", 22);
|
|
143
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveView()); });
|
|
144
|
+
i0.ɵɵelement(14, "i", 23);
|
|
145
|
+
i0.ɵɵelementStart(15, "span");
|
|
146
|
+
i0.ɵɵtext(16, "Save View");
|
|
147
|
+
i0.ɵɵelementEnd()();
|
|
148
|
+
i0.ɵɵelementStart(17, "button", 24);
|
|
149
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_9_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSaveAsNewView()); });
|
|
150
|
+
i0.ɵɵelement(18, "i", 25);
|
|
151
|
+
i0.ɵɵelementStart(19, "span");
|
|
152
|
+
i0.ɵɵtext(20, "Save As New");
|
|
153
|
+
i0.ɵɵelementEnd()()()();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
156
|
+
i0.ɵɵadvance();
|
|
157
|
+
i0.ɵɵclassProp("selected", !ctx_r1.selectedViewId);
|
|
158
|
+
i0.ɵɵadvance(4);
|
|
159
|
+
i0.ɵɵconditional(!ctx_r1.selectedViewId ? 5 : -1);
|
|
160
|
+
i0.ɵɵadvance(2);
|
|
161
|
+
i0.ɵɵconditional(ctx_r1.myViews.length > 0 ? 7 : -1);
|
|
162
|
+
i0.ɵɵadvance();
|
|
163
|
+
i0.ɵɵconditional(ctx_r1.sharedViews.length > 0 ? 8 : -1);
|
|
164
|
+
i0.ɵɵadvance();
|
|
165
|
+
i0.ɵɵconditional(!ctx_r1.hasViews && !ctx_r1.isLoading ? 9 : -1);
|
|
166
|
+
i0.ɵɵadvance();
|
|
167
|
+
i0.ɵɵconditional(ctx_r1.isLoading ? 10 : -1);
|
|
168
|
+
i0.ɵɵadvance(3);
|
|
169
|
+
i0.ɵɵproperty("disabled", !ctx_r1.viewModified && !ctx_r1.selectedViewId);
|
|
170
|
+
} }
|
|
171
|
+
function ViewSelectorComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
173
|
+
i0.ɵɵelementStart(0, "button", 39);
|
|
174
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOpenInTab()); });
|
|
175
|
+
i0.ɵɵelement(1, "i", 40);
|
|
176
|
+
i0.ɵɵelementEnd();
|
|
177
|
+
} }
|
|
178
|
+
/**
|
|
179
|
+
* ViewSelectorComponent - Dropdown for selecting saved views
|
|
180
|
+
*
|
|
181
|
+
* Features:
|
|
182
|
+
* - Shows "(Default)" option when no view is selected
|
|
183
|
+
* - Groups views into "My Views" and "Shared Views"
|
|
184
|
+
* - "Save Current View" and "Manage Views" actions
|
|
185
|
+
* - "Open in Tab" button for saved views
|
|
186
|
+
*/
|
|
187
|
+
export class ViewSelectorComponent {
|
|
188
|
+
cdr;
|
|
189
|
+
/**
|
|
190
|
+
* The entity to load views for
|
|
191
|
+
*/
|
|
192
|
+
entity = null;
|
|
193
|
+
/**
|
|
194
|
+
* Currently selected view ID (null = default view)
|
|
195
|
+
*/
|
|
196
|
+
selectedViewId = null;
|
|
197
|
+
/**
|
|
198
|
+
* Whether the current view has unsaved modifications
|
|
199
|
+
*/
|
|
200
|
+
viewModified = false;
|
|
201
|
+
/**
|
|
202
|
+
* Emitted when a view is selected
|
|
203
|
+
*/
|
|
204
|
+
viewSelected = new EventEmitter();
|
|
205
|
+
/**
|
|
206
|
+
* Emitted when user requests to save the current view
|
|
207
|
+
*/
|
|
208
|
+
saveViewRequested = new EventEmitter();
|
|
209
|
+
/**
|
|
210
|
+
* Emitted when user wants to open the view management panel
|
|
211
|
+
*/
|
|
212
|
+
manageViewsRequested = new EventEmitter();
|
|
213
|
+
/**
|
|
214
|
+
* Emitted when user wants to open the current view in its own tab
|
|
215
|
+
*/
|
|
216
|
+
openInTabRequested = new EventEmitter();
|
|
217
|
+
/**
|
|
218
|
+
* Emitted when user wants to configure the current view
|
|
219
|
+
*/
|
|
220
|
+
configureViewRequested = new EventEmitter();
|
|
221
|
+
// Internal state
|
|
222
|
+
isLoading = false;
|
|
223
|
+
isDropdownOpen = false;
|
|
224
|
+
myViews = [];
|
|
225
|
+
sharedViews = [];
|
|
226
|
+
selectedView = null;
|
|
227
|
+
destroy$ = new Subject();
|
|
228
|
+
metadata = new Metadata();
|
|
229
|
+
constructor(cdr) {
|
|
230
|
+
this.cdr = cdr;
|
|
231
|
+
}
|
|
232
|
+
ngOnChanges(changes) {
|
|
233
|
+
if (changes['entity']) {
|
|
234
|
+
if (this.entity) {
|
|
235
|
+
this.loadViews();
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
this.myViews = [];
|
|
239
|
+
this.sharedViews = [];
|
|
240
|
+
this.selectedView = null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (changes['selectedViewId'] && this.selectedViewId) {
|
|
244
|
+
// If we have a selected view ID and it's in our lists, update selectedView
|
|
245
|
+
this.updateSelectedViewFromId();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
ngOnDestroy() {
|
|
249
|
+
this.destroy$.next();
|
|
250
|
+
this.destroy$.complete();
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Load views for the current entity
|
|
254
|
+
*/
|
|
255
|
+
async loadViews() {
|
|
256
|
+
if (!this.entity) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
this.isLoading = true;
|
|
260
|
+
this.cdr.detectChanges();
|
|
261
|
+
try {
|
|
262
|
+
const userId = this.metadata.CurrentUser?.ID;
|
|
263
|
+
const rv = new RunView();
|
|
264
|
+
// Load all views for this entity that the user owns OR that are shared
|
|
265
|
+
const result = await rv.RunView({
|
|
266
|
+
EntityName: 'User Views',
|
|
267
|
+
ExtraFilter: `EntityID = '${this.entity.ID}' AND (UserID = '${userId}' OR IsShared = 1)`,
|
|
268
|
+
OrderBy: 'Name',
|
|
269
|
+
ResultType: 'entity_object'
|
|
270
|
+
});
|
|
271
|
+
if (result.Success && result.Results) {
|
|
272
|
+
// Filter views the user can actually view
|
|
273
|
+
const accessibleViews = result.Results.filter(v => v.UserCanView);
|
|
274
|
+
// Separate into owned and shared
|
|
275
|
+
this.myViews = accessibleViews
|
|
276
|
+
.filter(v => v.UserID === userId)
|
|
277
|
+
.map(v => this.mapViewToListItem(v, true));
|
|
278
|
+
this.sharedViews = accessibleViews
|
|
279
|
+
.filter(v => v.UserID !== userId)
|
|
280
|
+
.map(v => this.mapViewToListItem(v, false));
|
|
281
|
+
// Update selected view reference
|
|
282
|
+
this.updateSelectedViewFromId();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error('Failed to load views:', error);
|
|
287
|
+
}
|
|
288
|
+
finally {
|
|
289
|
+
this.isLoading = false;
|
|
290
|
+
this.cdr.detectChanges();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Map a view entity to a list item
|
|
295
|
+
*/
|
|
296
|
+
mapViewToListItem(view, isOwned) {
|
|
297
|
+
return {
|
|
298
|
+
id: view.ID,
|
|
299
|
+
name: view.Name,
|
|
300
|
+
isOwned,
|
|
301
|
+
isShared: view.IsShared,
|
|
302
|
+
isDefault: view.IsDefault,
|
|
303
|
+
userCanEdit: view.UserCanEdit,
|
|
304
|
+
entity: view
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Update the selectedView reference based on selectedViewId
|
|
309
|
+
*/
|
|
310
|
+
updateSelectedViewFromId() {
|
|
311
|
+
if (!this.selectedViewId) {
|
|
312
|
+
this.selectedView = null;
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
// Search in both lists
|
|
316
|
+
const myView = this.myViews.find(v => v.id === this.selectedViewId);
|
|
317
|
+
if (myView) {
|
|
318
|
+
this.selectedView = myView.entity;
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const sharedView = this.sharedViews.find(v => v.id === this.selectedViewId);
|
|
322
|
+
if (sharedView) {
|
|
323
|
+
this.selectedView = sharedView.entity;
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
// View not in lists yet - it might need to be loaded
|
|
327
|
+
this.selectedView = null;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get the display name for the current selection
|
|
331
|
+
*/
|
|
332
|
+
get displayName() {
|
|
333
|
+
if (this.selectedView) {
|
|
334
|
+
return this.selectedView.Name;
|
|
335
|
+
}
|
|
336
|
+
return '(Default)';
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Toggle dropdown open/closed
|
|
340
|
+
*/
|
|
341
|
+
toggleDropdown() {
|
|
342
|
+
this.isDropdownOpen = !this.isDropdownOpen;
|
|
343
|
+
this.cdr.detectChanges();
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Close the dropdown
|
|
347
|
+
*/
|
|
348
|
+
closeDropdown() {
|
|
349
|
+
this.isDropdownOpen = false;
|
|
350
|
+
this.cdr.detectChanges();
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Select the default view (no saved view)
|
|
354
|
+
*/
|
|
355
|
+
selectDefault() {
|
|
356
|
+
this.selectedView = null;
|
|
357
|
+
this.viewSelected.emit({ viewId: null, view: null });
|
|
358
|
+
this.closeDropdown();
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Select a view from the list
|
|
362
|
+
*/
|
|
363
|
+
selectView(item) {
|
|
364
|
+
this.selectedView = item.entity;
|
|
365
|
+
this.viewSelected.emit({ viewId: item.id, view: item.entity });
|
|
366
|
+
this.closeDropdown();
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Request to save the current view
|
|
370
|
+
*/
|
|
371
|
+
onSaveView() {
|
|
372
|
+
this.saveViewRequested.emit({ saveAsNew: false });
|
|
373
|
+
this.closeDropdown();
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Request to save as a new view
|
|
377
|
+
*/
|
|
378
|
+
onSaveAsNewView() {
|
|
379
|
+
this.saveViewRequested.emit({ saveAsNew: true });
|
|
380
|
+
this.closeDropdown();
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Request to manage views
|
|
384
|
+
*/
|
|
385
|
+
onManageViews() {
|
|
386
|
+
this.manageViewsRequested.emit();
|
|
387
|
+
this.closeDropdown();
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Request to open the current view in a tab
|
|
391
|
+
*/
|
|
392
|
+
onOpenInTab() {
|
|
393
|
+
if (this.selectedViewId) {
|
|
394
|
+
this.openInTabRequested.emit(this.selectedViewId);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Request to configure the current view
|
|
399
|
+
*/
|
|
400
|
+
onConfigureView() {
|
|
401
|
+
this.configureViewRequested.emit();
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Check if there are any views to show
|
|
405
|
+
*/
|
|
406
|
+
get hasViews() {
|
|
407
|
+
return this.myViews.length > 0 || this.sharedViews.length > 0;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Check if the current user can edit the selected view
|
|
411
|
+
*/
|
|
412
|
+
get canEditSelectedView() {
|
|
413
|
+
return this.selectedView?.UserCanEdit ?? false;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Handle click outside to close dropdown
|
|
417
|
+
*/
|
|
418
|
+
onClickOutside(event) {
|
|
419
|
+
this.closeDropdown();
|
|
420
|
+
}
|
|
421
|
+
static ɵfac = function ViewSelectorComponent_Factory(t) { return new (t || ViewSelectorComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
422
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ViewSelectorComponent, selectors: [["mj-view-selector"]], inputs: { entity: "entity", selectedViewId: "selectedViewId", viewModified: "viewModified" }, outputs: { viewSelected: "viewSelected", saveViewRequested: "saveViewRequested", manageViewsRequested: "manageViewsRequested", openInTabRequested: "openInTabRequested", configureViewRequested: "configureViewRequested" }, features: [i0.ɵɵNgOnChangesFeature], decls: 13, vars: 12, consts: [[1, "view-selector-container"], [1, "dropdown-backdrop"], [1, "view-selector-wrapper"], ["title", "Select a saved view", 1, "view-selector-button", 3, "click", "disabled"], [1, "fa-solid", "fa-layer-group", "view-icon"], [1, "view-name"], ["title", "View has unsaved changes", 1, "modified-indicator"], [1, "fa-solid", "fa-chevron-down", "dropdown-arrow"], [1, "dropdown-panel"], ["title", "Open this view in a new tab", 1, "open-in-tab-button"], ["title", "Configure view settings (columns, filters, sorting)", 1, "configure-view-button", 3, "click"], [1, "fa-solid", "fa-sliders-h"], [1, "dropdown-backdrop", 3, "click"], [1, "dropdown-item", "default-option", 3, "click"], [1, "fa-solid", "fa-table", "item-icon"], [1, "item-name"], [1, "fa-solid", "fa-check", "selected-check"], [1, "dropdown-divider"], [1, "dropdown-section"], [1, "empty-views-message"], [1, "loading-views"], [1, "dropdown-actions"], ["title", "Save current configuration", 1, "action-button", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], ["title", "Save as a new view", 1, "action-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "section-header"], [1, "fa-solid", "fa-user", "section-icon"], [1, "section-title"], [1, "section-count"], [1, "dropdown-item", "view-item", 3, "selected"], [1, "dropdown-item", "view-item", 3, "click"], [1, "fa-solid", "fa-layer-group", "item-icon"], ["title", "Shared with others", 1, "fa-solid", "fa-share-alt", "shared-indicator"], ["title", "Default view for this entity", 1, "fa-solid", "fa-star", "default-indicator"], [1, "fa-solid", "fa-users", "section-icon"], ["title", "View-only access", 1, "fa-solid", "fa-lock", "readonly-indicator"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["title", "Open this view in a new tab", 1, "open-in-tab-button", 3, "click"], [1, "fa-solid", "fa-external-link-alt"]], template: function ViewSelectorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
423
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
424
|
+
i0.ɵɵtemplate(1, ViewSelectorComponent_Conditional_1_Template, 1, 0, "div", 1);
|
|
425
|
+
i0.ɵɵelementStart(2, "div", 2)(3, "button", 3);
|
|
426
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Template_button_click_3_listener() { return ctx.toggleDropdown(); });
|
|
427
|
+
i0.ɵɵelement(4, "i", 4);
|
|
428
|
+
i0.ɵɵelementStart(5, "span", 5);
|
|
429
|
+
i0.ɵɵtext(6);
|
|
430
|
+
i0.ɵɵelementEnd();
|
|
431
|
+
i0.ɵɵtemplate(7, ViewSelectorComponent_Conditional_7_Template, 2, 0, "span", 6);
|
|
432
|
+
i0.ɵɵelement(8, "i", 7);
|
|
433
|
+
i0.ɵɵelementEnd();
|
|
434
|
+
i0.ɵɵtemplate(9, ViewSelectorComponent_Conditional_9_Template, 21, 8, "div", 8);
|
|
435
|
+
i0.ɵɵelementEnd();
|
|
436
|
+
i0.ɵɵtemplate(10, ViewSelectorComponent_Conditional_10_Template, 2, 0, "button", 9);
|
|
437
|
+
i0.ɵɵelementStart(11, "button", 10);
|
|
438
|
+
i0.ɵɵlistener("click", function ViewSelectorComponent_Template_button_click_11_listener() { return ctx.onConfigureView(); });
|
|
439
|
+
i0.ɵɵelement(12, "i", 11);
|
|
440
|
+
i0.ɵɵelementEnd()();
|
|
441
|
+
} if (rf & 2) {
|
|
442
|
+
i0.ɵɵadvance();
|
|
443
|
+
i0.ɵɵconditional(ctx.isDropdownOpen ? 1 : -1);
|
|
444
|
+
i0.ɵɵadvance(2);
|
|
445
|
+
i0.ɵɵclassProp("modified", ctx.viewModified)("open", ctx.isDropdownOpen);
|
|
446
|
+
i0.ɵɵproperty("disabled", ctx.isLoading);
|
|
447
|
+
i0.ɵɵadvance(3);
|
|
448
|
+
i0.ɵɵtextInterpolate(ctx.displayName);
|
|
449
|
+
i0.ɵɵadvance();
|
|
450
|
+
i0.ɵɵconditional(ctx.viewModified ? 7 : -1);
|
|
451
|
+
i0.ɵɵadvance();
|
|
452
|
+
i0.ɵɵclassProp("rotated", ctx.isDropdownOpen);
|
|
453
|
+
i0.ɵɵadvance();
|
|
454
|
+
i0.ɵɵconditional(ctx.isDropdownOpen ? 9 : -1);
|
|
455
|
+
i0.ɵɵadvance();
|
|
456
|
+
i0.ɵɵconditional(ctx.selectedViewId ? 10 : -1);
|
|
457
|
+
} }, styles: ["\n\n.view-selector-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n position: relative;\n}\n\n\n\n.dropdown-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n background: transparent;\n}\n\n.view-selector-wrapper[_ngcontent-%COMP%] {\n position: relative;\n}\n\n\n\n.view-selector-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n min-width: 140px;\n max-width: 280px;\n}\n\n.view-selector-button[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.view-selector-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.view-selector-button.open[_ngcontent-%COMP%] {\n background: var(--background-active, #e0e0e0);\n border-color: var(--primary-color, #007bff);\n}\n\n.view-selector-button.modified[_ngcontent-%COMP%] {\n border-color: var(--warning-color, #f59e0b);\n}\n\n.view-icon[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 12px;\n}\n\n.view-name[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.modified-indicator[_ngcontent-%COMP%] {\n color: var(--warning-color, #f59e0b);\n font-weight: bold;\n font-size: 18px;\n line-height: 1;\n}\n\n.dropdown-arrow[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.dropdown-arrow.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n\n\n.dropdown-panel[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 280px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: var(--background-panel, #fff);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.dropdown-item[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #f5f5f5);\n}\n\n.dropdown-item.selected[_ngcontent-%COMP%] {\n background: var(--primary-light, #e6f0ff);\n}\n\n.dropdown-item.selected[_ngcontent-%COMP%]:hover {\n background: var(--primary-light-hover, #d6e4f9);\n}\n\n.default-option[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--text-secondary, #666);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.item-name[_ngcontent-%COMP%] {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.shared-indicator[_ngcontent-%COMP%], \n.default-indicator[_ngcontent-%COMP%], \n.readonly-indicator[_ngcontent-%COMP%] {\n color: var(--text-tertiary, #999);\n font-size: 11px;\n}\n\n.default-indicator[_ngcontent-%COMP%] {\n color: var(--warning-color, #f59e0b);\n}\n\n.selected-check[_ngcontent-%COMP%] {\n color: var(--primary-color, #007bff);\n font-size: 12px;\n}\n\n\n\n.dropdown-section[_ngcontent-%COMP%] {\n padding: 4px 0;\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px 6px;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-tertiary, #999);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.section-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.section-count[_ngcontent-%COMP%] {\n background: var(--background-alt, #f0f0f0);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n}\n\n\n\n.dropdown-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: var(--border-color-light, #eee);\n margin: 4px 0;\n}\n\n\n\n.empty-views-message[_ngcontent-%COMP%], \n.loading-views[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 20px;\n color: var(--text-tertiary, #999);\n font-size: 13px;\n}\n\n\n\n.dropdown-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 10px 14px;\n}\n\n.action-button[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 8px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n}\n\n.action-button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.action-button[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n\n\n.open-in-tab-button[_ngcontent-%COMP%], \n.configure-view-button[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n color: var(--text-secondary, #666);\n transition: all 0.15s ease;\n}\n\n.open-in-tab-button[_ngcontent-%COMP%]:hover, \n.configure-view-button[_ngcontent-%COMP%]:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n color: var(--primary-color, #007bff);\n}\n\n.open-in-tab-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.configure-view-button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n@media (max-width: 768px) {\n .view-selector-button[_ngcontent-%COMP%] {\n min-width: 100px;\n max-width: 180px;\n padding: 6px 10px;\n }\n\n .dropdown-panel[_ngcontent-%COMP%] {\n min-width: 240px;\n max-width: calc(100vw - 32px);\n }\n\n .dropdown-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"] });
|
|
458
|
+
}
|
|
459
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ViewSelectorComponent, [{
|
|
460
|
+
type: Component,
|
|
461
|
+
args: [{ selector: 'mj-view-selector', template: "<div class=\"view-selector-container\">\n <!-- Backdrop for closing dropdown -->\n @if (isDropdownOpen) {\n <div class=\"dropdown-backdrop\" (click)=\"closeDropdown()\"></div>\n }\n\n <!-- Main View Selector Button -->\n <div class=\"view-selector-wrapper\">\n <button\n class=\"view-selector-button\"\n [class.modified]=\"viewModified\"\n [class.open]=\"isDropdownOpen\"\n (click)=\"toggleDropdown()\"\n [disabled]=\"isLoading\"\n title=\"Select a saved view\">\n <i class=\"fa-solid fa-layer-group view-icon\"></i>\n <span class=\"view-name\">{{ displayName }}</span>\n @if (viewModified) {\n <span class=\"modified-indicator\" title=\"View has unsaved changes\">\u2022</span>\n }\n <i class=\"fa-solid fa-chevron-down dropdown-arrow\" [class.rotated]=\"isDropdownOpen\"></i>\n </button>\n\n <!-- Dropdown Panel -->\n @if (isDropdownOpen) {\n <div class=\"dropdown-panel\">\n <!-- Default Option -->\n <div\n class=\"dropdown-item default-option\"\n [class.selected]=\"!selectedViewId\"\n (click)=\"selectDefault()\">\n <i class=\"fa-solid fa-table item-icon\"></i>\n <span class=\"item-name\">(Default)</span>\n @if (!selectedViewId) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n\n <div class=\"dropdown-divider\"></div>\n\n <!-- My Views Section -->\n @if (myViews.length > 0) {\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-user section-icon\"></i>\n <span class=\"section-title\">My Views</span>\n <span class=\"section-count\">{{ myViews.length }}</span>\n </div>\n @for (view of myViews; track view.id) {\n <div\n class=\"dropdown-item view-item\"\n [class.selected]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <i class=\"fa-solid fa-layer-group item-icon\"></i>\n <span class=\"item-name\">{{ view.name }}</span>\n @if (view.isShared) {\n <i class=\"fa-solid fa-share-alt shared-indicator\" title=\"Shared with others\"></i>\n }\n @if (view.isDefault) {\n <i class=\"fa-solid fa-star default-indicator\" title=\"Default view for this entity\"></i>\n }\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- Shared Views Section -->\n @if (sharedViews.length > 0) {\n <div class=\"dropdown-section\">\n <div class=\"section-header\">\n <i class=\"fa-solid fa-users section-icon\"></i>\n <span class=\"section-title\">Shared Views</span>\n <span class=\"section-count\">{{ sharedViews.length }}</span>\n </div>\n @for (view of sharedViews; track view.id) {\n <div\n class=\"dropdown-item view-item\"\n [class.selected]=\"selectedViewId === view.id\"\n (click)=\"selectView(view)\">\n <i class=\"fa-solid fa-layer-group item-icon\"></i>\n <span class=\"item-name\">{{ view.name }}</span>\n @if (!view.userCanEdit) {\n <i class=\"fa-solid fa-lock readonly-indicator\" title=\"View-only access\"></i>\n }\n @if (selectedViewId === view.id) {\n <i class=\"fa-solid fa-check selected-check\"></i>\n }\n </div>\n }\n </div>\n }\n\n <!-- No Views Message -->\n @if (!hasViews && !isLoading) {\n <div class=\"empty-views-message\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No saved views yet</span>\n </div>\n }\n\n <!-- Loading Indicator -->\n @if (isLoading) {\n <div class=\"loading-views\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading views...</span>\n </div>\n }\n\n <div class=\"dropdown-divider\"></div>\n\n <!-- Actions Section -->\n <div class=\"dropdown-actions\">\n <button\n class=\"action-button\"\n (click)=\"onSaveView()\"\n [disabled]=\"!viewModified && !selectedViewId\"\n title=\"Save current configuration\">\n <i class=\"fa-solid fa-save\"></i>\n <span>Save View</span>\n </button>\n <button\n class=\"action-button\"\n (click)=\"onSaveAsNewView()\"\n title=\"Save as a new view\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>Save As New</span>\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Open in Tab Button (only visible when a view is selected) -->\n @if (selectedViewId) {\n <button\n class=\"open-in-tab-button\"\n (click)=\"onOpenInTab()\"\n title=\"Open this view in a new tab\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n }\n\n <!-- Configure View Button -->\n <button\n class=\"configure-view-button\"\n (click)=\"onConfigureView()\"\n title=\"Configure view settings (columns, filters, sorting)\">\n <i class=\"fa-solid fa-sliders-h\"></i>\n </button>\n</div>\n", styles: ["/* View Selector Container */\n.view-selector-container {\n display: flex;\n align-items: center;\n gap: 4px;\n position: relative;\n}\n\n/* Backdrop for closing dropdown */\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n background: transparent;\n}\n\n.view-selector-wrapper {\n position: relative;\n}\n\n/* Main Button */\n.view-selector-button {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n min-width: 140px;\n max-width: 280px;\n}\n\n.view-selector-button:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.view-selector-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.view-selector-button.open {\n background: var(--background-active, #e0e0e0);\n border-color: var(--primary-color, #007bff);\n}\n\n.view-selector-button.modified {\n border-color: var(--warning-color, #f59e0b);\n}\n\n.view-icon {\n color: var(--text-secondary, #666);\n font-size: 12px;\n}\n\n.view-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n}\n\n.modified-indicator {\n color: var(--warning-color, #f59e0b);\n font-weight: bold;\n font-size: 18px;\n line-height: 1;\n}\n\n.dropdown-arrow {\n color: var(--text-secondary, #666);\n font-size: 10px;\n transition: transform 0.2s ease;\n}\n\n.dropdown-arrow.rotated {\n transform: rotate(180deg);\n}\n\n/* Dropdown Panel */\n.dropdown-panel {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 280px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: var(--background-panel, #fff);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n z-index: 1000;\n}\n\n/* Dropdown Items */\n.dropdown-item {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n cursor: pointer;\n transition: background 0.1s ease;\n}\n\n.dropdown-item:hover {\n background: var(--background-hover, #f5f5f5);\n}\n\n.dropdown-item.selected {\n background: var(--primary-light, #e6f0ff);\n}\n\n.dropdown-item.selected:hover {\n background: var(--primary-light-hover, #d6e4f9);\n}\n\n.default-option {\n font-weight: 500;\n}\n\n.item-icon {\n color: var(--text-secondary, #666);\n font-size: 13px;\n width: 16px;\n text-align: center;\n}\n\n.item-name {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: 13px;\n}\n\n.shared-indicator,\n.default-indicator,\n.readonly-indicator {\n color: var(--text-tertiary, #999);\n font-size: 11px;\n}\n\n.default-indicator {\n color: var(--warning-color, #f59e0b);\n}\n\n.selected-check {\n color: var(--primary-color, #007bff);\n font-size: 12px;\n}\n\n/* Dropdown Sections */\n.dropdown-section {\n padding: 4px 0;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 14px 6px;\n font-size: 11px;\n font-weight: 600;\n color: var(--text-tertiary, #999);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.section-icon {\n font-size: 10px;\n}\n\n.section-title {\n flex: 1;\n}\n\n.section-count {\n background: var(--background-alt, #f0f0f0);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n}\n\n/* Dropdown Divider */\n.dropdown-divider {\n height: 1px;\n background: var(--border-color-light, #eee);\n margin: 4px 0;\n}\n\n/* Empty State */\n.empty-views-message,\n.loading-views {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 20px;\n color: var(--text-tertiary, #999);\n font-size: 13px;\n}\n\n/* Actions Section */\n.dropdown-actions {\n display: flex;\n gap: 8px;\n padding: 10px 14px;\n}\n\n.action-button {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 6px;\n padding: 8px 12px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n font-size: 12px;\n color: var(--text-primary, #333);\n transition: all 0.15s ease;\n}\n\n.action-button:hover:not(:disabled) {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n}\n\n.action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.action-button i {\n font-size: 11px;\n}\n\n/* Open in Tab Button */\n.open-in-tab-button,\n.configure-view-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: var(--background-alt, #f5f5f5);\n border: 1px solid var(--border-color, #e0e0e0);\n border-radius: 6px;\n cursor: pointer;\n color: var(--text-secondary, #666);\n transition: all 0.15s ease;\n}\n\n.open-in-tab-button:hover,\n.configure-view-button:hover {\n background: var(--background-hover, #e8e8e8);\n border-color: var(--border-color-hover, #ccc);\n color: var(--primary-color, #007bff);\n}\n\n.open-in-tab-button i,\n.configure-view-button i {\n font-size: 12px;\n}\n\n/* Responsive Adjustments */\n@media (max-width: 768px) {\n .view-selector-button {\n min-width: 100px;\n max-width: 180px;\n padding: 6px 10px;\n }\n\n .dropdown-panel {\n min-width: 240px;\n max-width: calc(100vw - 32px);\n }\n\n .dropdown-actions {\n flex-direction: column;\n }\n}\n"] }]
|
|
462
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { entity: [{
|
|
463
|
+
type: Input
|
|
464
|
+
}], selectedViewId: [{
|
|
465
|
+
type: Input
|
|
466
|
+
}], viewModified: [{
|
|
467
|
+
type: Input
|
|
468
|
+
}], viewSelected: [{
|
|
469
|
+
type: Output
|
|
470
|
+
}], saveViewRequested: [{
|
|
471
|
+
type: Output
|
|
472
|
+
}], manageViewsRequested: [{
|
|
473
|
+
type: Output
|
|
474
|
+
}], openInTabRequested: [{
|
|
475
|
+
type: Output
|
|
476
|
+
}], configureViewRequested: [{
|
|
477
|
+
type: Output
|
|
478
|
+
}] }); })();
|
|
479
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ViewSelectorComponent, { className: "ViewSelectorComponent", filePath: "src/DataExplorer/components/view-selector/view-selector.component.ts", lineNumber: 50 }); })();
|
|
480
|
+
//# sourceMappingURL=view-selector.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-selector.component.js","sourceRoot":"","sources":["../../../../src/DataExplorer/components/view-selector/view-selector.component.ts","../../../../src/DataExplorer/components/view-selector/view-selector.component.html"],"names":[],"mappings":"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"}
|