@memberjunction/ng-dashboards 6.2.0-edge.5 → 6.2.0-edge.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +15 -7
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +7 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +209 -57
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts +12 -11
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js +15 -15
- package/dist/AI/components/duplicates/duplicate-detection-run-scope.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +28 -16
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +1 -0
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +30 -6
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +15 -7
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/sensitive-fields.d.ts +9 -4
- package/dist/AI/components/vectors/sensitive-fields.d.ts.map +1 -1
- package/dist/AI/components/vectors/sensitive-fields.js +39 -14
- package/dist/AI/components/vectors/sensitive-fields.js.map +1 -1
- package/dist/AI/components/vectors/vector-document-rules.d.ts +13 -0
- package/dist/AI/components/vectors/vector-document-rules.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-document-rules.js +14 -0
- package/dist/AI/components/vectors/vector-document-rules.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +34 -14
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +127 -50
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-store-selection.d.ts +32 -0
- package/dist/AI/components/vectors/vector-store-selection.d.ts.map +1 -0
- package/dist/AI/components/vectors/vector-store-selection.js +57 -0
- package/dist/AI/components/vectors/vector-store-selection.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts +236 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js +374 -0
- package/dist/ChiefOfStaff/chief-of-staff-agent-context.js.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts +195 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.d.ts.map +1 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js +2910 -0
- package/dist/ChiefOfStaff/chief-of-staff-dashboard.component.js.map +1 -0
- package/dist/ChiefOfStaff/index.d.ts +3 -0
- package/dist/ChiefOfStaff/index.d.ts.map +1 -0
- package/dist/ChiefOfStaff/index.js +3 -0
- package/dist/ChiefOfStaff/index.js.map +1 -0
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +2 -1
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +23 -18
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +11 -10
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/DashboardEditor/dashboard-editor.component.d.ts +17 -2
- package/dist/DashboardEditor/dashboard-editor.component.d.ts.map +1 -1
- package/dist/DashboardEditor/dashboard-editor.component.js +94 -43
- package/dist/DashboardEditor/dashboard-editor.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +24 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +146 -50
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +2 -0
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.d.ts +10 -2
- package/dist/LoginStudio/login-studio-resource.component.d.ts.map +1 -1
- package/dist/LoginStudio/login-studio-resource.component.js +110 -77
- package/dist/LoginStudio/login-studio-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +24 -4
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +118 -65
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.d.ts +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.d.ts.map +1 -1
- package/dist/PredictiveStudio/business-predictions.view-models.js +3 -3
- package/dist/PredictiveStudio/business-predictions.view-models.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts +6 -63
- package/dist/PredictiveStudio/components/ps-experiments.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-experiments.component.js +256 -521
- package/dist/PredictiveStudio/components/ps-experiments.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts +0 -18
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js +122 -249
- package/dist/PredictiveStudio/components/ps-pipeline-wizard.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +5 -9
- package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-pipelines.component.js +98 -130
- package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts +53 -4
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js +335 -326
- package/dist/PredictiveStudio/components/ps-predictions-grid.component.js.map +1 -1
- package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts +19 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.d.ts.map +1 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.js +85 -0
- package/dist/PredictiveStudio/components/ps-row-drivers.component.js.map +1 -0
- package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts +19 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.d.ts.map +1 -1
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js +51 -2
- package/dist/PredictiveStudio/engine/predictive-studio.engine.js.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts +3 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.d.ts.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-agent-context.js +3 -0
- package/dist/PredictiveStudio/predictive-studio-agent-context.js.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts +27 -4
- package/dist/PredictiveStudio/predictive-studio-score-history.service.d.ts.map +1 -1
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js +94 -61
- package/dist/PredictiveStudio/predictive-studio-score-history.service.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts +29 -5
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.d.ts.map +1 -1
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js +185 -103
- package/dist/PredictiveStudio/resources/ps-predictions-resource.component.js.map +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js +1 -1
- package/dist/PredictiveStudio/resources/ps-studio-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +22 -21
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +8 -2
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +71 -71
- package/dist/PredictiveStudio/at-risk.view-models.d.ts +0 -120
- package/dist/PredictiveStudio/at-risk.view-models.d.ts.map +0 -1
- package/dist/PredictiveStudio/at-risk.view-models.js +0 -261
- package/dist/PredictiveStudio/at-risk.view-models.js.map +0 -1
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts +0 -109
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.d.ts.map +0 -1
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.js +0 -323
- package/dist/PredictiveStudio/components/ps-confirm-modal.component.js.map +0 -1
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts +0 -137
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.d.ts.map +0 -1
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js +0 -826
- package/dist/PredictiveStudio/components/ps-run-experiment-modal.component.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AfterViewInit, EventEmitter, OnDestroy, TemplateRef } from '@angular/core';
|
|
2
2
|
import type { DashboardUserPermissions, MJDashboardEntity, MJDashboardPartTypeEntity } from '@memberjunction/core-entities';
|
|
3
3
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
4
|
-
import type { DashboardNavRequestEvent, DashboardPanel, DashboardPartDialogMode, DashboardPartDialogResult, DashboardViewerComponent } from '@memberjunction/ng-dashboard-viewer';
|
|
4
|
+
import type { DashboardNavRequestEvent, DashboardPanel, DashboardPartDialogMode, DashboardPartDialogResult, DashboardPropertiesDialogResult, DashboardProperty, DashboardViewerComponent, DashboardWire } from '@memberjunction/ng-dashboard-viewer';
|
|
5
5
|
import type { DashboardEditorBodyStyle, DashboardEditorLoadError, DashboardEditorTitleContext, DashboardSaveOverrides } from './dashboard-editor.types';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
/**
|
|
@@ -85,6 +85,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
|
|
|
85
85
|
PartDialogMode: DashboardPartDialogMode | null;
|
|
86
86
|
/** The part the part dialog edits in edit mode. */
|
|
87
87
|
EditPartPanel: DashboardPanel | null;
|
|
88
|
+
/** True while the dashboard's Properties and wires dialog is open. */
|
|
89
|
+
PropertiesDialogOpen: boolean;
|
|
90
|
+
/** The dashboard's parts when the Properties and wires dialog opened. */
|
|
91
|
+
PropertiesDialogPanels: DashboardPanel[];
|
|
88
92
|
private _dashboard;
|
|
89
93
|
private viewer;
|
|
90
94
|
private viewerRef;
|
|
@@ -109,6 +113,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
|
|
|
109
113
|
get CanEdit(): boolean;
|
|
110
114
|
/** The part types the part dialog offers: the viewer's part types. */
|
|
111
115
|
get PartTypes(): MJDashboardPartTypeEntity[];
|
|
116
|
+
/** The dashboard's properties, which the part dialog maps onto a part's inputs. */
|
|
117
|
+
get DashboardProperties(): DashboardProperty[];
|
|
118
|
+
/** The dashboard's wires. */
|
|
119
|
+
get DashboardWires(): DashboardWire[];
|
|
112
120
|
/** True when someone else owns the dashboard and shared it with the user. */
|
|
113
121
|
get IsSharedWithUser(): boolean;
|
|
114
122
|
/** True when the shown dashboard is one of the user's favorites. False when the favorites cannot be read. */
|
|
@@ -225,7 +233,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
|
|
|
225
233
|
* Returns the message the user sees.
|
|
226
234
|
*/
|
|
227
235
|
private onSaveFailed;
|
|
228
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* Why a save failed: the thrown error, else the viewer's refusal (a broken mapping or wire), else the
|
|
238
|
+
* dashboard's failed save result. Empty when none says.
|
|
239
|
+
*/
|
|
229
240
|
private saveFailureReason;
|
|
230
241
|
/** Passes a save of the viewer on to the host, with the new name when it changed. */
|
|
231
242
|
private onViewerSaved;
|
|
@@ -274,6 +285,10 @@ export declare class DashboardEditorComponent extends BaseAngularComponent imple
|
|
|
274
285
|
ClosePartDialog(): void;
|
|
275
286
|
/** Closes every part dialog. A part dialog belongs to one edit session. */
|
|
276
287
|
private closePartDialogs;
|
|
288
|
+
/** Opens the dashboard's Properties and wires dialog. Only while editing and not saving. */
|
|
289
|
+
OpenPropertiesDialog(): void;
|
|
290
|
+
/** Applies the dialog's properties and wires to the viewer. They are saved with the dashboard's Save. */
|
|
291
|
+
OnPropertiesDialogSaved(result: DashboardPropertiesDialogResult): Promise<void>;
|
|
277
292
|
/**
|
|
278
293
|
* Asks the user to confirm removing a part, then removes it. Changes nothing when the user cancels, or when the
|
|
279
294
|
* edit session, the viewer or the part changed while the confirm was open.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-editor.component.d.ts","sourceRoot":"","sources":["../../src/DashboardEditor/dashboard-editor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAA0D,YAAY,EAC5E,SAAS,EAAU,WAAW,EACxC,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAKrE,OAAO,KAAK,EACR,wBAAwB,EAAE,cAAc,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"dashboard-editor.component.d.ts","sourceRoot":"","sources":["../../src/DashboardEditor/dashboard-editor.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,22 +21,22 @@ const _c2 = [[["", "headerTools", ""]], [["", "viewActions", ""]]];
|
|
|
21
21
|
const _c3 = ["[headerTools]", "[viewActions]"];
|
|
22
22
|
const _c4 = (a0, a1) => ({ $implicit: a0, Dashboard: a1 });
|
|
23
23
|
function DashboardEditorComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
-
i0.ɵɵelement(0, "mj-stat-badge",
|
|
24
|
+
i0.ɵɵelement(0, "mj-stat-badge", 8);
|
|
25
25
|
} }
|
|
26
26
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
-
i0.ɵɵelementContainer(0,
|
|
27
|
+
i0.ɵɵelementContainer(0, 11);
|
|
28
28
|
} if (rf & 2) {
|
|
29
29
|
const dashboard_r1 = i0.ɵɵnextContext(2);
|
|
30
30
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
31
|
i0.ɵɵproperty("ngTemplateOutlet", ctx_r1.TitleTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c4, dashboard_r1, dashboard_r1));
|
|
32
32
|
} }
|
|
33
33
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
-
i0.ɵɵelement(0, "i",
|
|
34
|
+
i0.ɵɵelement(0, "i", 15);
|
|
35
35
|
} }
|
|
36
36
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
i0.ɵɵelementStart(0, "h1",
|
|
37
|
+
i0.ɵɵelementStart(0, "h1", 12);
|
|
38
38
|
i0.ɵɵtext(1);
|
|
39
|
-
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Conditional_2_Template, 1, 0, "i",
|
|
39
|
+
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Conditional_2_Template, 1, 0, "i", 15);
|
|
40
40
|
i0.ɵɵelementEnd();
|
|
41
41
|
} if (rf & 2) {
|
|
42
42
|
const dashboard_r1 = i0.ɵɵnextContext(2);
|
|
@@ -47,7 +47,7 @@ function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Temp
|
|
|
47
47
|
i0.ɵɵconditional(ctx_r1.IsSharedWithUser ? 2 : -1);
|
|
48
48
|
} }
|
|
49
49
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
-
i0.ɵɵelementStart(0, "p",
|
|
50
|
+
i0.ɵɵelementStart(0, "p", 13);
|
|
51
51
|
i0.ɵɵtext(1);
|
|
52
52
|
i0.ɵɵelementEnd();
|
|
53
53
|
} if (rf & 2) {
|
|
@@ -56,13 +56,13 @@ function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_2_Temp
|
|
|
56
56
|
i0.ɵɵtextInterpolate(dashboard_r1.Description);
|
|
57
57
|
} }
|
|
58
58
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
i0.ɵɵelementStart(0, "p",
|
|
59
|
+
i0.ɵɵelementStart(0, "p", 14);
|
|
60
60
|
i0.ɵɵtext(1, "Add a description");
|
|
61
61
|
i0.ɵɵelementEnd();
|
|
62
62
|
} }
|
|
63
63
|
function DashboardEditorComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
-
i0.ɵɵconditionalCreate(0, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_0_Template, 1, 5, "ng-container",
|
|
65
|
-
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_2_Template, 2, 1, "p",
|
|
64
|
+
i0.ɵɵconditionalCreate(0, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_0_Template, 1, 5, "ng-container", 11)(1, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_1_Template, 3, 2, "h1", 12);
|
|
65
|
+
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_2_Template, 2, 1, "p", 13)(3, DashboardEditorComponent_Conditional_0_Conditional_3_Conditional_3_Template, 2, 0, "p", 14);
|
|
66
66
|
} if (rf & 2) {
|
|
67
67
|
const dashboard_r1 = i0.ɵɵnextContext();
|
|
68
68
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -72,11 +72,11 @@ function DashboardEditorComponent_Conditional_0_Conditional_3_Template(rf, ctx)
|
|
|
72
72
|
} }
|
|
73
73
|
function DashboardEditorComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
74
74
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
75
|
-
i0.ɵɵelementStart(0, "input",
|
|
75
|
+
i0.ɵɵelementStart(0, "input", 16);
|
|
76
76
|
i0.ɵɵtwoWayListener("ngModelChange", function DashboardEditorComponent_Conditional_0_Conditional_4_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditingName, $event) || (ctx_r1.EditingName = $event); return i0.ɵɵresetView($event); });
|
|
77
77
|
i0.ɵɵlistener("blur", function DashboardEditorComponent_Conditional_0_Conditional_4_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnNameBlur()); });
|
|
78
78
|
i0.ɵɵelementEnd();
|
|
79
|
-
i0.ɵɵelementStart(1, "input",
|
|
79
|
+
i0.ɵɵelementStart(1, "input", 17);
|
|
80
80
|
i0.ɵɵtwoWayListener("ngModelChange", function DashboardEditorComponent_Conditional_0_Conditional_4_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.EditingDescription, $event) || (ctx_r1.EditingDescription = $event); return i0.ɵɵresetView($event); });
|
|
81
81
|
i0.ɵɵelementEnd();
|
|
82
82
|
} if (rf & 2) {
|
|
@@ -87,9 +87,9 @@ function DashboardEditorComponent_Conditional_0_Conditional_4_Template(rf, ctx)
|
|
|
87
87
|
} }
|
|
88
88
|
function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
89
89
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
90
|
-
i0.ɵɵelementStart(0, "button",
|
|
90
|
+
i0.ɵɵelementStart(0, "button", 20);
|
|
91
91
|
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_0_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ToggleFavorite()); });
|
|
92
|
-
i0.ɵɵelement(1, "i",
|
|
92
|
+
i0.ɵɵelement(1, "i", 21);
|
|
93
93
|
i0.ɵɵelementEnd();
|
|
94
94
|
} if (rf & 2) {
|
|
95
95
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -101,18 +101,18 @@ function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_0_Temp
|
|
|
101
101
|
} }
|
|
102
102
|
function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
103
103
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
104
|
-
i0.ɵɵelementStart(0, "button",
|
|
104
|
+
i0.ɵɵelementStart(0, "button", 22);
|
|
105
105
|
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const dashboard_r1 = i0.ɵɵnextContext(2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenInDashboardsRequested.emit(dashboard_r1)); });
|
|
106
|
-
i0.ɵɵelement(1, "i",
|
|
106
|
+
i0.ɵɵelement(1, "i", 23);
|
|
107
107
|
i0.ɵɵtext(2, " Open in Dashboards ");
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
109
109
|
} }
|
|
110
110
|
function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
111
111
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
112
|
-
i0.ɵɵelement(0, "span",
|
|
113
|
-
i0.ɵɵelementStart(1, "button",
|
|
112
|
+
i0.ɵɵelement(0, "span", 24);
|
|
113
|
+
i0.ɵɵelementStart(1, "button", 25);
|
|
114
114
|
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_3_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.EnterEditMode()); });
|
|
115
|
-
i0.ɵɵelement(2, "i",
|
|
115
|
+
i0.ɵɵelement(2, "i", 26);
|
|
116
116
|
i0.ɵɵtext(3, " Edit ");
|
|
117
117
|
i0.ɵɵelementEnd();
|
|
118
118
|
} if (rf & 2) {
|
|
@@ -121,9 +121,9 @@ function DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_3_Temp
|
|
|
121
121
|
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
122
122
|
} }
|
|
123
123
|
function DashboardEditorComponent_Conditional_0_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
-
i0.ɵɵconditionalCreate(0, DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_0_Template, 2, 6, "button",
|
|
124
|
+
i0.ɵɵconditionalCreate(0, DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_0_Template, 2, 6, "button", 18);
|
|
125
125
|
i0.ɵɵprojection(1, 1);
|
|
126
|
-
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_2_Template, 3, 0, "button",
|
|
126
|
+
i0.ɵɵconditionalCreate(2, DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_2_Template, 3, 0, "button", 19);
|
|
127
127
|
i0.ɵɵconditionalCreate(3, DashboardEditorComponent_Conditional_0_Conditional_7_Conditional_3_Template, 4, 1);
|
|
128
128
|
} if (rf & 2) {
|
|
129
129
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -135,24 +135,31 @@ function DashboardEditorComponent_Conditional_0_Conditional_7_Template(rf, ctx)
|
|
|
135
135
|
} }
|
|
136
136
|
function DashboardEditorComponent_Conditional_0_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
137
137
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
138
|
-
i0.ɵɵelementStart(0, "button",
|
|
138
|
+
i0.ɵɵelementStart(0, "button", 27);
|
|
139
139
|
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenAddPartDialog()); });
|
|
140
|
-
i0.ɵɵelement(1, "i",
|
|
140
|
+
i0.ɵɵelement(1, "i", 28);
|
|
141
141
|
i0.ɵɵtext(2, " Add part ");
|
|
142
142
|
i0.ɵɵelementEnd();
|
|
143
|
-
i0.ɵɵ
|
|
144
|
-
i0.ɵɵ
|
|
145
|
-
i0.ɵɵ
|
|
146
|
-
i0.ɵɵ
|
|
147
|
-
i0.ɵɵtext(6);
|
|
143
|
+
i0.ɵɵelementStart(3, "button", 29);
|
|
144
|
+
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenPropertiesDialog()); });
|
|
145
|
+
i0.ɵɵelement(4, "i", 30);
|
|
146
|
+
i0.ɵɵtext(5, " Properties ");
|
|
148
147
|
i0.ɵɵelementEnd();
|
|
149
|
-
i0.ɵɵ
|
|
150
|
-
i0.ɵɵ
|
|
151
|
-
i0.ɵɵ
|
|
148
|
+
i0.ɵɵelement(6, "span", 24);
|
|
149
|
+
i0.ɵɵelementStart(7, "button", 31);
|
|
150
|
+
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_8_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SaveDashboard()); });
|
|
151
|
+
i0.ɵɵelement(8, "i", 21);
|
|
152
|
+
i0.ɵɵtext(9);
|
|
153
|
+
i0.ɵɵelementEnd();
|
|
154
|
+
i0.ɵɵelementStart(10, "button", 32);
|
|
155
|
+
i0.ɵɵlistener("click", function DashboardEditorComponent_Conditional_0_Conditional_8_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.CancelEdit()); });
|
|
156
|
+
i0.ɵɵtext(11, "Cancel");
|
|
152
157
|
i0.ɵɵelementEnd();
|
|
153
158
|
} if (rf & 2) {
|
|
154
159
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
155
160
|
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
161
|
+
i0.ɵɵadvance(3);
|
|
162
|
+
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
156
163
|
i0.ɵɵadvance(4);
|
|
157
164
|
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
158
165
|
i0.ɵɵadvance();
|
|
@@ -163,14 +170,14 @@ function DashboardEditorComponent_Conditional_0_Conditional_8_Template(rf, ctx)
|
|
|
163
170
|
i0.ɵɵproperty("disabled", ctx_r1.IsSaving);
|
|
164
171
|
} }
|
|
165
172
|
function DashboardEditorComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
166
|
-
i0.ɵɵelementStart(0, "header",
|
|
167
|
-
i0.ɵɵconditionalCreate(1, DashboardEditorComponent_Conditional_0_Conditional_1_Template, 1, 0, "mj-stat-badge",
|
|
168
|
-
i0.ɵɵelementStart(2, "div",
|
|
173
|
+
i0.ɵɵelementStart(0, "header", 7);
|
|
174
|
+
i0.ɵɵconditionalCreate(1, DashboardEditorComponent_Conditional_0_Conditional_1_Template, 1, 0, "mj-stat-badge", 8);
|
|
175
|
+
i0.ɵɵelementStart(2, "div", 9);
|
|
169
176
|
i0.ɵɵconditionalCreate(3, DashboardEditorComponent_Conditional_0_Conditional_3_Template, 4, 2)(4, DashboardEditorComponent_Conditional_0_Conditional_4_Template, 2, 2);
|
|
170
177
|
i0.ɵɵelementEnd();
|
|
171
|
-
i0.ɵɵelementStart(5, "div",
|
|
178
|
+
i0.ɵɵelementStart(5, "div", 10);
|
|
172
179
|
i0.ɵɵprojection(6);
|
|
173
|
-
i0.ɵɵconditionalCreate(7, DashboardEditorComponent_Conditional_0_Conditional_7_Template, 4, 3)(8, DashboardEditorComponent_Conditional_0_Conditional_8_Template,
|
|
180
|
+
i0.ɵɵconditionalCreate(7, DashboardEditorComponent_Conditional_0_Conditional_7_Template, 4, 3)(8, DashboardEditorComponent_Conditional_0_Conditional_8_Template, 12, 7);
|
|
174
181
|
i0.ɵɵelementEnd()();
|
|
175
182
|
} if (rf & 2) {
|
|
176
183
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -184,12 +191,21 @@ function DashboardEditorComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
|
|
|
184
191
|
} }
|
|
185
192
|
function DashboardEditorComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
186
193
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
187
|
-
i0.ɵɵelementStart(0, "mj-dashboard-part-dialog",
|
|
194
|
+
i0.ɵɵelementStart(0, "mj-dashboard-part-dialog", 33);
|
|
188
195
|
i0.ɵɵlistener("Saved", function DashboardEditorComponent_Conditional_6_Template_mj_dashboard_part_dialog_Saved_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnPartDialogSaved($event)); })("Cancelled", function DashboardEditorComponent_Conditional_6_Template_mj_dashboard_part_dialog_Cancelled_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClosePartDialog()); });
|
|
189
196
|
i0.ɵɵelementEnd();
|
|
190
197
|
} if (rf & 2) {
|
|
191
198
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
192
|
-
i0.ɵɵproperty("Visible", true)("Mode", ctx_r1.PartDialogMode)("PartTypes", ctx_r1.PartTypes)("Panel", ctx_r1.EditPartPanel)("Provider", ctx_r1.Provider);
|
|
199
|
+
i0.ɵɵproperty("Visible", true)("Mode", ctx_r1.PartDialogMode)("PartTypes", ctx_r1.PartTypes)("Panel", ctx_r1.EditPartPanel)("Provider", ctx_r1.Provider)("DashboardProperties", ctx_r1.DashboardProperties);
|
|
200
|
+
} }
|
|
201
|
+
function DashboardEditorComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
202
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
203
|
+
i0.ɵɵelementStart(0, "mj-dashboard-properties-dialog", 34);
|
|
204
|
+
i0.ɵɵlistener("Saved", function DashboardEditorComponent_Conditional_7_Template_mj_dashboard_properties_dialog_Saved_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnPropertiesDialogSaved($event)); })("Cancelled", function DashboardEditorComponent_Conditional_7_Template_mj_dashboard_properties_dialog_Cancelled_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.ClosePartDialog()); });
|
|
205
|
+
i0.ɵɵelementEnd();
|
|
206
|
+
} if (rf & 2) {
|
|
207
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
208
|
+
i0.ɵɵproperty("Visible", true)("Properties", ctx_r1.DashboardProperties)("Wires", ctx_r1.DashboardWires)("Panels", ctx_r1.PropertiesDialogPanels)("Provider", ctx_r1.Provider);
|
|
193
209
|
} }
|
|
194
210
|
/** The entity of the dashboard records DashboardEngine caches. */
|
|
195
211
|
const DASHBOARDS_ENTITY_NAME = 'MJ: Dashboards';
|
|
@@ -201,6 +217,9 @@ const KEPT_EDITING = 'The user kept editing: the dashboard was saved elsewhere.'
|
|
|
201
217
|
const DASHBOARD_CHANGED_BEFORE_SAVE = 'The editor shows another dashboard now. The dashboard was not saved.';
|
|
202
218
|
/** The part types offered while no viewer is open: one empty list, so change detection sees a stable value. */
|
|
203
219
|
const NO_PART_TYPES = [];
|
|
220
|
+
/** The properties and wires of a dashboard without any: stable empty lists for change detection. */
|
|
221
|
+
const NO_PROPERTIES = [];
|
|
222
|
+
const NO_WIRES = [];
|
|
204
223
|
/** Permissions before a dashboard loads: nothing is allowed, so no Edit button flashes. */
|
|
205
224
|
const NO_PERMISSIONS = {
|
|
206
225
|
DashboardID: '', CanRead: false, CanEdit: false, CanDelete: false, CanShare: false, IsOwner: false, PermissionSource: 'none',
|
|
@@ -299,6 +318,10 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
299
318
|
PartDialogMode = null;
|
|
300
319
|
/** The part the part dialog edits in edit mode. */
|
|
301
320
|
EditPartPanel = null;
|
|
321
|
+
/** True while the dashboard's Properties and wires dialog is open. */
|
|
322
|
+
PropertiesDialogOpen = false;
|
|
323
|
+
/** The dashboard's parts when the Properties and wires dialog opened. */
|
|
324
|
+
PropertiesDialogPanels = [];
|
|
302
325
|
_dashboard = null;
|
|
303
326
|
viewer = null;
|
|
304
327
|
viewerRef = null;
|
|
@@ -324,6 +347,10 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
324
347
|
get CanEdit() { return this.Permissions.CanEdit; }
|
|
325
348
|
/** The part types the part dialog offers: the viewer's part types. */
|
|
326
349
|
get PartTypes() { return this.viewer?.GetPartTypes() ?? NO_PART_TYPES; }
|
|
350
|
+
/** The dashboard's properties, which the part dialog maps onto a part's inputs. */
|
|
351
|
+
get DashboardProperties() { return this.viewer?.GetDashboardProperties() ?? NO_PROPERTIES; }
|
|
352
|
+
/** The dashboard's wires. */
|
|
353
|
+
get DashboardWires() { return this.viewer?.GetWires() ?? NO_WIRES; }
|
|
327
354
|
/** True when someone else owns the dashboard and shared it with the user. */
|
|
328
355
|
get IsSharedWithUser() { return !this.Permissions.IsOwner && this.Permissions.PermissionSource !== 'none'; }
|
|
329
356
|
/** True when the shown dashboard is one of the user's favorites. False when the favorites cannot be read. */
|
|
@@ -714,10 +741,15 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
714
741
|
SafeDetectChanges(this.cdr);
|
|
715
742
|
return message;
|
|
716
743
|
}
|
|
717
|
-
/**
|
|
744
|
+
/**
|
|
745
|
+
* Why a save failed: the thrown error, else the viewer's refusal (a broken mapping or wire), else the
|
|
746
|
+
* dashboard's failed save result. Empty when none says.
|
|
747
|
+
*/
|
|
718
748
|
saveFailureReason(dashboard, error) {
|
|
719
749
|
if (error !== undefined)
|
|
720
750
|
return errorMessage(error);
|
|
751
|
+
if (this.viewer?.LastSaveError)
|
|
752
|
+
return this.viewer.LastSaveError;
|
|
721
753
|
const latest = dashboard.LatestResult;
|
|
722
754
|
return latest && !latest.Success ? latest.CompleteMessage : '';
|
|
723
755
|
}
|
|
@@ -887,6 +919,22 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
887
919
|
closePartDialogs() {
|
|
888
920
|
this.PartDialogMode = null;
|
|
889
921
|
this.EditPartPanel = null;
|
|
922
|
+
this.PropertiesDialogOpen = false;
|
|
923
|
+
this.PropertiesDialogPanels = [];
|
|
924
|
+
}
|
|
925
|
+
// ── Properties and wires ──────────────────────────────────
|
|
926
|
+
/** Opens the dashboard's Properties and wires dialog. Only while editing and not saving. */
|
|
927
|
+
OpenPropertiesDialog() {
|
|
928
|
+
if (!this.IsEditing || this.IsSaving || !this.viewer)
|
|
929
|
+
return;
|
|
930
|
+
this.PropertiesDialogPanels = ExtractPanelsFromLayout(this.viewer.getConfig()?.layout ?? null);
|
|
931
|
+
this.PropertiesDialogOpen = true;
|
|
932
|
+
SafeDetectChanges(this.cdr);
|
|
933
|
+
}
|
|
934
|
+
/** Applies the dialog's properties and wires to the viewer. They are saved with the dashboard's Save. */
|
|
935
|
+
async OnPropertiesDialogSaved(result) {
|
|
936
|
+
this.closePartDialogs();
|
|
937
|
+
await this.applyPartChange('Could not update the properties', v => v.SetPropertiesAndWires(result.Properties, result.Wires));
|
|
890
938
|
}
|
|
891
939
|
/**
|
|
892
940
|
* Asks the user to confirm removing a part, then removes it. Changes nothing when the user cancels, or when the
|
|
@@ -952,13 +1000,14 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
952
1000
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewerHost = _t.first);
|
|
953
1001
|
} }, hostVars: 2, hostBindings: function DashboardEditorComponent_HostBindings(rf, ctx) { if (rf & 2) {
|
|
954
1002
|
i0.ɵɵclassProp("dashboard-editor--fill", ctx.IsFill);
|
|
955
|
-
} }, inputs: { DashboardId: "DashboardId", StartInEditMode: "StartInEditMode", TitleTemplate: "TitleTemplate", ShowOpenInDashboards: "ShowOpenInDashboards", ShowFavorite: "ShowFavorite", BodyStyle: "BodyStyle" }, outputs: { StartInEditModeChange: "StartInEditModeChange", Loaded: "Loaded", LoadFailed: "LoadFailed", EditingChange: "EditingChange", Saved: "Saved", NameChanged: "NameChanged", ConfigChanged: "ConfigChanged", ReloadedFromSaved: "ReloadedFromSaved", FavoriteChange: "FavoriteChange", NavigationRequested: "NavigationRequested", OpenInDashboardsRequested: "OpenInDashboardsRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls:
|
|
1003
|
+
} }, inputs: { DashboardId: "DashboardId", StartInEditMode: "StartInEditMode", TitleTemplate: "TitleTemplate", ShowOpenInDashboards: "ShowOpenInDashboards", ShowFavorite: "ShowFavorite", BodyStyle: "BodyStyle" }, outputs: { StartInEditModeChange: "StartInEditModeChange", Loaded: "Loaded", LoadFailed: "LoadFailed", EditingChange: "EditingChange", Saved: "Saved", NameChanged: "NameChanged", ConfigChanged: "ConfigChanged", ReloadedFromSaved: "ReloadedFromSaved", FavoriteChange: "FavoriteChange", NavigationRequested: "NavigationRequested", OpenInDashboardsRequested: "OpenInDashboardsRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c3, decls: 8, vars: 5, consts: [["body", ""], ["viewerHost", ""], [1, "dashboard-editor-header", 3, "is-editing"], [1, "dashboard-editor-main"], [1, "dashboard-editor-body"], [3, "Visible", "Mode", "PartTypes", "Panel", "Provider", "DashboardProperties"], [3, "Visible", "Properties", "Wires", "Panels", "Provider"], [1, "dashboard-editor-header"], ["Variant", "info", "Icon", "fa-solid fa-pen", "Label", "Editing", 1, "dashboard-editor-badge"], [1, "dashboard-editor-namewrap"], [1, "dashboard-editor-actions"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "dashboard-editor-title"], [1, "dashboard-editor-desc"], [1, "dashboard-editor-desc", "is-placeholder"], ["role", "img", "title", "Shared with you", "aria-label", "Shared with you", 1, "fa-solid", "fa-share-nodes", "dashboard-editor-shared"], ["type", "text", "aria-label", "Dashboard name", "placeholder", "Name this dashboard", 1, "mj-input", "dashboard-editor-name", 3, "ngModelChange", "blur", "ngModel"], ["type", "text", "aria-label", "Dashboard description", "placeholder", "Add a description", 1, "dashboard-editor-desc", "is-editable", 3, "ngModelChange", "ngModel"], ["type", "button", "mjButton", "", "Variant", "icon", "Size", "sm", 1, "dashboard-editor-favorite", 3, "is-favorite", "title"], ["type", "button", "mjButton", "", "Variant", "secondary", "Size", "sm", 1, "dashboard-editor-open-in"], ["type", "button", "mjButton", "", "Variant", "icon", "Size", "sm", 1, "dashboard-editor-favorite", 3, "click", "title"], ["aria-hidden", "true"], ["type", "button", "mjButton", "", "Variant", "secondary", "Size", "sm", 1, "dashboard-editor-open-in", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-up-right-from-square"], ["aria-hidden", "true", 1, "dashboard-editor-divider"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", 1, "dashboard-editor-edit", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-pen"], ["type", "button", "mjButton", "", "Variant", "secondary", "Size", "sm", 1, "dashboard-editor-add-part", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["type", "button", "mjButton", "", "Variant", "secondary", "Size", "sm", 1, "dashboard-editor-properties", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-sliders"], ["type", "button", "mjButton", "", "Variant", "primary", "Size", "sm", 1, "dashboard-editor-save", 3, "click", "disabled"], ["type", "button", "mjButton", "", "Variant", "flat", "Size", "sm", 1, "dashboard-editor-cancel", 3, "click", "disabled"], [3, "Saved", "Cancelled", "Visible", "Mode", "PartTypes", "Panel", "Provider", "DashboardProperties"], [3, "Saved", "Cancelled", "Visible", "Properties", "Wires", "Panels", "Provider"]], template: function DashboardEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
956
1004
|
i0.ɵɵprojectionDef(_c2);
|
|
957
1005
|
i0.ɵɵconditionalCreate(0, DashboardEditorComponent_Conditional_0_Template, 9, 5, "header", 2);
|
|
958
1006
|
i0.ɵɵelementStart(1, "div", 3)(2, "div", 4, 0);
|
|
959
1007
|
i0.ɵɵelementContainer(4, null, 1);
|
|
960
1008
|
i0.ɵɵelementEnd()();
|
|
961
|
-
i0.ɵɵconditionalCreate(6, DashboardEditorComponent_Conditional_6_Template, 1,
|
|
1009
|
+
i0.ɵɵconditionalCreate(6, DashboardEditorComponent_Conditional_6_Template, 1, 6, "mj-dashboard-part-dialog", 5);
|
|
1010
|
+
i0.ɵɵconditionalCreate(7, DashboardEditorComponent_Conditional_7_Template, 1, 5, "mj-dashboard-properties-dialog", 6);
|
|
962
1011
|
} if (rf & 2) {
|
|
963
1012
|
let tmp_2_0;
|
|
964
1013
|
i0.ɵɵconditional((tmp_2_0 = ctx.Dashboard) ? 0 : -1, tmp_2_0);
|
|
@@ -966,11 +1015,13 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
966
1015
|
i0.ɵɵclassProp("is-card", ctx.BodyStyle === "card");
|
|
967
1016
|
i0.ɵɵadvance(5);
|
|
968
1017
|
i0.ɵɵconditional(ctx.Dashboard && ctx.IsEditing && ctx.PartDialogMode ? 6 : -1);
|
|
969
|
-
|
|
1018
|
+
i0.ɵɵadvance();
|
|
1019
|
+
i0.ɵɵconditional(ctx.Dashboard && ctx.IsEditing && ctx.PropertiesDialogOpen ? 7 : -1);
|
|
1020
|
+
} }, dependencies: [i1.NgTemplateOutlet, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.MJButtonDirective, i3.MJStatBadgeComponent, i4.DashboardPartDialogComponent, i4.DashboardPropertiesDialogComponent], styles: ["[_nghost-%COMP%] { display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n.dashboard-editor--fill[_nghost-%COMP%] { height: 100%; }\n\n.dashboard-editor-header[_ngcontent-%COMP%] {\n display: flex; align-items: center; gap: var(--mj-space-4); flex-shrink: 0;\n min-height: 72px; padding: var(--mj-space-3) var(--mj-space-8);\n background: var(--mj-bg-surface); border-bottom: 1px solid var(--mj-border-default);\n}\n.dashboard-editor-namewrap[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n.dashboard-editor-title[_ngcontent-%COMP%] {\n margin: 0; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight);\n color: var(--mj-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.dashboard-editor-shared[_ngcontent-%COMP%] { margin-left: var(--mj-space-2); font-size: var(--mj-text-xs); color: var(--mj-brand-primary); }\n\n\n.dashboard-editor-name[_ngcontent-%COMP%] { max-width: 520px; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight); }\n\n.dashboard-editor-desc[_ngcontent-%COMP%] {\n width: min(100%, 520px); margin: 0 0 0 -8px; padding: 3px 8px;\n font: inherit; font-size: var(--mj-text-xs); color: var(--mj-text-secondary);\n background: transparent; border: 1px solid transparent; border-radius: var(--mj-radius-md);\n}\n.dashboard-editor-desc.is-placeholder[_ngcontent-%COMP%], .dashboard-editor-desc[_ngcontent-%COMP%]::placeholder { color: var(--mj-text-muted); }\n.dashboard-editor-desc.is-editable[_ngcontent-%COMP%]:hover { border-color: var(--mj-border-default); background: var(--mj-bg-surface-card); }\n.dashboard-editor-desc.is-editable[_ngcontent-%COMP%]:focus {\n outline: none; border-color: var(--mj-border-focus); background: var(--mj-bg-surface); box-shadow: var(--mj-focus-ring);\n}\n\n.dashboard-editor-actions[_ngcontent-%COMP%] { display: flex; align-items: center; gap: var(--mj-space-2); flex-shrink: 0; }\n.dashboard-editor-divider[_ngcontent-%COMP%] { width: 1px; height: 22px; margin: 0 var(--mj-space-1); background: var(--mj-border-default); }\n\n.dashboard-editor-favorite.is-favorite[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n\n.dashboard-editor-main[_ngcontent-%COMP%] { display: flex; flex-direction: column; flex: 1; min-height: 0; }\n.dashboard-editor-body[_ngcontent-%COMP%] { position: relative; flex: 1; min-height: 0; overflow: hidden; }\n\n\n.dashboard-editor-main.is-card[_ngcontent-%COMP%] { padding: var(--mj-space-4) var(--mj-space-8) var(--mj-space-8); }\n.dashboard-editor-main.is-card[_ngcontent-%COMP%] .dashboard-editor-body[_ngcontent-%COMP%] {\n flex: none; height: max(480px, calc(100vh - 230px));\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg); box-shadow: var(--mj-shadow-sm);\n}\n\n@media (max-width: 900px) {\n .dashboard-editor-header[_ngcontent-%COMP%] { flex-wrap: wrap; padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n .dashboard-editor-main.is-card[_ngcontent-%COMP%] { padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n}"] });
|
|
970
1021
|
}
|
|
971
1022
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DashboardEditorComponent, [{
|
|
972
1023
|
type: Component,
|
|
973
|
-
args: [{ standalone: false, selector: 'mj-dashboard-editor', template: "@if (Dashboard; as dashboard) {\n <header class=\"dashboard-editor-header\" [class.is-editing]=\"IsEditing\">\n @if (IsEditing) {\n <mj-stat-badge class=\"dashboard-editor-badge\" Variant=\"info\" Icon=\"fa-solid fa-pen\" Label=\"Editing\"></mj-stat-badge>\n }\n\n <div class=\"dashboard-editor-namewrap\">\n @if (!IsEditing) {\n @if (TitleTemplate) {\n <ng-container [ngTemplateOutlet]=\"TitleTemplate\" [ngTemplateOutletContext]=\"{ $implicit: dashboard, Dashboard: dashboard }\"></ng-container>\n } @else {\n <h1 class=\"dashboard-editor-title\">\n {{ dashboard.Name }}\n @if (IsSharedWithUser) {\n <i class=\"fa-solid fa-share-nodes dashboard-editor-shared\" role=\"img\" title=\"Shared with you\" aria-label=\"Shared with you\"></i>\n }\n </h1>\n }\n @if (dashboard.Description) {\n <p class=\"dashboard-editor-desc\">{{ dashboard.Description }}</p>\n } @else if (CanEdit) {\n <p class=\"dashboard-editor-desc is-placeholder\">Add a description</p>\n }\n } @else {\n <input type=\"text\" class=\"mj-input dashboard-editor-name\" aria-label=\"Dashboard name\" placeholder=\"Name this dashboard\"\n [(ngModel)]=\"EditingName\" (blur)=\"OnNameBlur()\">\n <input type=\"text\" class=\"dashboard-editor-desc is-editable\" aria-label=\"Dashboard description\" placeholder=\"Add a description\"\n [(ngModel)]=\"EditingDescription\">\n }\n </div>\n\n <div class=\"dashboard-editor-actions\">\n <ng-content select=\"[headerTools]\"></ng-content>\n @if (!IsEditing) {\n @if (ShowFavorite) {\n <button type=\"button\" mjButton Variant=\"icon\" Size=\"sm\" class=\"dashboard-editor-favorite\" [class.is-favorite]=\"IsFavorite\"\n [title]=\"IsFavorite ? 'Remove from favorites' : 'Add to favorites'\"\n [attr.aria-label]=\"IsFavorite ? 'Remove from favorites' : 'Add to favorites'\" (click)=\"ToggleFavorite()\">\n <i [class]=\"IsFavorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\" aria-hidden=\"true\"></i>\n </button>\n }\n <ng-content select=\"[viewActions]\"></ng-content>\n @if (ShowOpenInDashboards) {\n <button type=\"button\" mjButton Variant=\"secondary\" Size=\"sm\" class=\"dashboard-editor-open-in\" (click)=\"OpenInDashboardsRequested.emit(dashboard)\">\n <i class=\"fa-solid fa-up-right-from-square\" aria-hidden=\"true\"></i> Open in Dashboards\n </button>\n }\n @if (CanEdit) {\n <span class=\"dashboard-editor-divider\" aria-hidden=\"true\"></span>\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" class=\"dashboard-editor-edit\" [disabled]=\"IsSaving\" (click)=\"EnterEditMode()\">\n <i class=\"fa-solid fa-pen\" aria-hidden=\"true\"></i> Edit\n </button>\n }\n } @else {\n <button type=\"button\" mjButton Variant=\"secondary\" Size=\"sm\" class=\"dashboard-editor-add-part\" [disabled]=\"IsSaving\" (click)=\"OpenAddPartDialog()\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> Add part\n </button>\n <span class=\"dashboard-editor-divider\" aria-hidden=\"true\"></span>\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" class=\"dashboard-editor-save\" [disabled]=\"IsSaving\" (click)=\"SaveDashboard()\">\n <i [class]=\"IsSaving ? 'fa-solid fa-spinner fa-spin' : 'fa-solid fa-check'\" aria-hidden=\"true\"></i>\n {{ IsSaving ? 'Saving...' : 'Save' }}\n </button>\n <button type=\"button\" mjButton Variant=\"flat\" Size=\"sm\" class=\"dashboard-editor-cancel\" [disabled]=\"IsSaving\" (click)=\"CancelEdit()\">Cancel</button>\n }\n </div>\n </header>\n}\n\n<div class=\"dashboard-editor-main\" [class.is-card]=\"BodyStyle === 'card'\">\n <div #body class=\"dashboard-editor-body\">\n <ng-container #viewerHost></ng-container>\n </div>\n</div>\n\n<!-- The part dialog belongs to one edit session -->\n@if (Dashboard && IsEditing && PartDialogMode) {\n <mj-dashboard-part-dialog [Visible]=\"true\" [Mode]=\"PartDialogMode\" [PartTypes]=\"PartTypes\"\n [Panel]=\"EditPartPanel\" [Provider]=\"Provider\"\n (Saved)=\"OnPartDialogSaved($event)\" (Cancelled)=\"ClosePartDialog()\"></mj-dashboard-part-dialog>\n}\n", styles: [":host { display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n:host(.dashboard-editor--fill) { height: 100%; }\n\n.dashboard-editor-header {\n display: flex; align-items: center; gap: var(--mj-space-4); flex-shrink: 0;\n min-height: 72px; padding: var(--mj-space-3) var(--mj-space-8);\n background: var(--mj-bg-surface); border-bottom: 1px solid var(--mj-border-default);\n}\n.dashboard-editor-namewrap { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n.dashboard-editor-title {\n margin: 0; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight);\n color: var(--mj-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.dashboard-editor-shared { margin-left: var(--mj-space-2); font-size: var(--mj-text-xs); color: var(--mj-brand-primary); }\n\n/* .mj-input (global, ui-components input.scss) gives the border, radius, padding, hover and focus ring */\n.dashboard-editor-name { max-width: 520px; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight); }\n\n.dashboard-editor-desc {\n width: min(100%, 520px); margin: 0 0 0 -8px; padding: 3px 8px;\n font: inherit; font-size: var(--mj-text-xs); color: var(--mj-text-secondary);\n background: transparent; border: 1px solid transparent; border-radius: var(--mj-radius-md);\n}\n.dashboard-editor-desc.is-placeholder, .dashboard-editor-desc::placeholder { color: var(--mj-text-muted); }\n.dashboard-editor-desc.is-editable:hover { border-color: var(--mj-border-default); background: var(--mj-bg-surface-card); }\n.dashboard-editor-desc.is-editable:focus {\n outline: none; border-color: var(--mj-border-focus); background: var(--mj-bg-surface); box-shadow: var(--mj-focus-ring);\n}\n\n.dashboard-editor-actions { display: flex; align-items: center; gap: var(--mj-space-2); flex-shrink: 0; }\n.dashboard-editor-divider { width: 1px; height: 22px; margin: 0 var(--mj-space-1); background: var(--mj-border-default); }\n/* The colour goes on the icon, never on the button: button.scss owns the button */\n.dashboard-editor-favorite.is-favorite i { color: var(--mj-status-warning); }\n\n.dashboard-editor-main { display: flex; flex-direction: column; flex: 1; min-height: 0; }\n.dashboard-editor-body { position: relative; flex: 1; min-height: 0; overflow: hidden; }\n\n/* Card style: a padded body with the dashboard in a card. Golden Layout sizes itself from the body, so it needs a definite height. */\n.dashboard-editor-main.is-card { padding: var(--mj-space-4) var(--mj-space-8) var(--mj-space-8); }\n.dashboard-editor-main.is-card .dashboard-editor-body {\n flex: none; height: max(480px, calc(100vh - 230px));\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg); box-shadow: var(--mj-shadow-sm);\n}\n\n@media (max-width: 900px) {\n .dashboard-editor-header { flex-wrap: wrap; padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n .dashboard-editor-main.is-card { padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n}\n"] }]
|
|
1024
|
+
args: [{ standalone: false, selector: 'mj-dashboard-editor', template: "@if (Dashboard; as dashboard) {\n <header class=\"dashboard-editor-header\" [class.is-editing]=\"IsEditing\">\n @if (IsEditing) {\n <mj-stat-badge class=\"dashboard-editor-badge\" Variant=\"info\" Icon=\"fa-solid fa-pen\" Label=\"Editing\"></mj-stat-badge>\n }\n\n <div class=\"dashboard-editor-namewrap\">\n @if (!IsEditing) {\n @if (TitleTemplate) {\n <ng-container [ngTemplateOutlet]=\"TitleTemplate\" [ngTemplateOutletContext]=\"{ $implicit: dashboard, Dashboard: dashboard }\"></ng-container>\n } @else {\n <h1 class=\"dashboard-editor-title\">\n {{ dashboard.Name }}\n @if (IsSharedWithUser) {\n <i class=\"fa-solid fa-share-nodes dashboard-editor-shared\" role=\"img\" title=\"Shared with you\" aria-label=\"Shared with you\"></i>\n }\n </h1>\n }\n @if (dashboard.Description) {\n <p class=\"dashboard-editor-desc\">{{ dashboard.Description }}</p>\n } @else if (CanEdit) {\n <p class=\"dashboard-editor-desc is-placeholder\">Add a description</p>\n }\n } @else {\n <input type=\"text\" class=\"mj-input dashboard-editor-name\" aria-label=\"Dashboard name\" placeholder=\"Name this dashboard\"\n [(ngModel)]=\"EditingName\" (blur)=\"OnNameBlur()\">\n <input type=\"text\" class=\"dashboard-editor-desc is-editable\" aria-label=\"Dashboard description\" placeholder=\"Add a description\"\n [(ngModel)]=\"EditingDescription\">\n }\n </div>\n\n <div class=\"dashboard-editor-actions\">\n <ng-content select=\"[headerTools]\"></ng-content>\n @if (!IsEditing) {\n @if (ShowFavorite) {\n <button type=\"button\" mjButton Variant=\"icon\" Size=\"sm\" class=\"dashboard-editor-favorite\" [class.is-favorite]=\"IsFavorite\"\n [title]=\"IsFavorite ? 'Remove from favorites' : 'Add to favorites'\"\n [attr.aria-label]=\"IsFavorite ? 'Remove from favorites' : 'Add to favorites'\" (click)=\"ToggleFavorite()\">\n <i [class]=\"IsFavorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\" aria-hidden=\"true\"></i>\n </button>\n }\n <ng-content select=\"[viewActions]\"></ng-content>\n @if (ShowOpenInDashboards) {\n <button type=\"button\" mjButton Variant=\"secondary\" Size=\"sm\" class=\"dashboard-editor-open-in\" (click)=\"OpenInDashboardsRequested.emit(dashboard)\">\n <i class=\"fa-solid fa-up-right-from-square\" aria-hidden=\"true\"></i> Open in Dashboards\n </button>\n }\n @if (CanEdit) {\n <span class=\"dashboard-editor-divider\" aria-hidden=\"true\"></span>\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" class=\"dashboard-editor-edit\" [disabled]=\"IsSaving\" (click)=\"EnterEditMode()\">\n <i class=\"fa-solid fa-pen\" aria-hidden=\"true\"></i> Edit\n </button>\n }\n } @else {\n <button type=\"button\" mjButton Variant=\"secondary\" Size=\"sm\" class=\"dashboard-editor-add-part\" [disabled]=\"IsSaving\" (click)=\"OpenAddPartDialog()\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i> Add part\n </button>\n <button type=\"button\" mjButton Variant=\"secondary\" Size=\"sm\" class=\"dashboard-editor-properties\" [disabled]=\"IsSaving\" (click)=\"OpenPropertiesDialog()\">\n <i class=\"fa-solid fa-sliders\" aria-hidden=\"true\"></i> Properties\n </button>\n <span class=\"dashboard-editor-divider\" aria-hidden=\"true\"></span>\n <button type=\"button\" mjButton Variant=\"primary\" Size=\"sm\" class=\"dashboard-editor-save\" [disabled]=\"IsSaving\" (click)=\"SaveDashboard()\">\n <i [class]=\"IsSaving ? 'fa-solid fa-spinner fa-spin' : 'fa-solid fa-check'\" aria-hidden=\"true\"></i>\n {{ IsSaving ? 'Saving...' : 'Save' }}\n </button>\n <button type=\"button\" mjButton Variant=\"flat\" Size=\"sm\" class=\"dashboard-editor-cancel\" [disabled]=\"IsSaving\" (click)=\"CancelEdit()\">Cancel</button>\n }\n </div>\n </header>\n}\n\n<div class=\"dashboard-editor-main\" [class.is-card]=\"BodyStyle === 'card'\">\n <div #body class=\"dashboard-editor-body\">\n <ng-container #viewerHost></ng-container>\n </div>\n</div>\n\n<!-- The part dialog belongs to one edit session -->\n@if (Dashboard && IsEditing && PartDialogMode) {\n <mj-dashboard-part-dialog [Visible]=\"true\" [Mode]=\"PartDialogMode\" [PartTypes]=\"PartTypes\"\n [Panel]=\"EditPartPanel\" [Provider]=\"Provider\" [DashboardProperties]=\"DashboardProperties\"\n (Saved)=\"OnPartDialogSaved($event)\" (Cancelled)=\"ClosePartDialog()\"></mj-dashboard-part-dialog>\n}\n\n<!-- The Properties and wires dialog belongs to one edit session -->\n@if (Dashboard && IsEditing && PropertiesDialogOpen) {\n <mj-dashboard-properties-dialog [Visible]=\"true\" [Properties]=\"DashboardProperties\" [Wires]=\"DashboardWires\"\n [Panels]=\"PropertiesDialogPanels\" [Provider]=\"Provider\"\n (Saved)=\"OnPropertiesDialogSaved($event)\" (Cancelled)=\"ClosePartDialog()\"></mj-dashboard-properties-dialog>\n}\n", styles: [":host { display: flex; flex-direction: column; min-width: 0; min-height: 0; }\n:host(.dashboard-editor--fill) { height: 100%; }\n\n.dashboard-editor-header {\n display: flex; align-items: center; gap: var(--mj-space-4); flex-shrink: 0;\n min-height: 72px; padding: var(--mj-space-3) var(--mj-space-8);\n background: var(--mj-bg-surface); border-bottom: 1px solid var(--mj-border-default);\n}\n.dashboard-editor-namewrap { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n.dashboard-editor-title {\n margin: 0; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight);\n color: var(--mj-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.dashboard-editor-shared { margin-left: var(--mj-space-2); font-size: var(--mj-text-xs); color: var(--mj-brand-primary); }\n\n/* .mj-input (global, ui-components input.scss) gives the border, radius, padding, hover and focus ring */\n.dashboard-editor-name { max-width: 520px; font-size: var(--mj-text-lg); font-weight: var(--mj-font-bold); letter-spacing: var(--mj-tracking-tight); }\n\n.dashboard-editor-desc {\n width: min(100%, 520px); margin: 0 0 0 -8px; padding: 3px 8px;\n font: inherit; font-size: var(--mj-text-xs); color: var(--mj-text-secondary);\n background: transparent; border: 1px solid transparent; border-radius: var(--mj-radius-md);\n}\n.dashboard-editor-desc.is-placeholder, .dashboard-editor-desc::placeholder { color: var(--mj-text-muted); }\n.dashboard-editor-desc.is-editable:hover { border-color: var(--mj-border-default); background: var(--mj-bg-surface-card); }\n.dashboard-editor-desc.is-editable:focus {\n outline: none; border-color: var(--mj-border-focus); background: var(--mj-bg-surface); box-shadow: var(--mj-focus-ring);\n}\n\n.dashboard-editor-actions { display: flex; align-items: center; gap: var(--mj-space-2); flex-shrink: 0; }\n.dashboard-editor-divider { width: 1px; height: 22px; margin: 0 var(--mj-space-1); background: var(--mj-border-default); }\n/* The colour goes on the icon, never on the button: button.scss owns the button */\n.dashboard-editor-favorite.is-favorite i { color: var(--mj-status-warning); }\n\n.dashboard-editor-main { display: flex; flex-direction: column; flex: 1; min-height: 0; }\n.dashboard-editor-body { position: relative; flex: 1; min-height: 0; overflow: hidden; }\n\n/* Card style: a padded body with the dashboard in a card. Golden Layout sizes itself from the body, so it needs a definite height. */\n.dashboard-editor-main.is-card { padding: var(--mj-space-4) var(--mj-space-8) var(--mj-space-8); }\n.dashboard-editor-main.is-card .dashboard-editor-body {\n flex: none; height: max(480px, calc(100vh - 230px));\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-lg); box-shadow: var(--mj-shadow-sm);\n}\n\n@media (max-width: 900px) {\n .dashboard-editor-header { flex-wrap: wrap; padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n .dashboard-editor-main.is-card { padding-left: var(--mj-space-4); padding-right: var(--mj-space-4); }\n}\n"] }]
|
|
974
1025
|
}], null, { DashboardId: [{
|
|
975
1026
|
type: Input
|
|
976
1027
|
}], StartInEditMode: [{
|
|
@@ -1015,7 +1066,7 @@ export class DashboardEditorComponent extends BaseAngularComponent {
|
|
|
1015
1066
|
type: ViewChild,
|
|
1016
1067
|
args: ['viewerHost', { read: ViewContainerRef, static: true }]
|
|
1017
1068
|
}] }); })();
|
|
1018
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardEditorComponent, { className: "DashboardEditorComponent", filePath: "src/DashboardEditor/dashboard-editor.component.ts", lineNumber:
|
|
1069
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardEditorComponent, { className: "DashboardEditorComponent", filePath: "src/DashboardEditor/dashboard-editor.component.ts", lineNumber: 67 }); })();
|
|
1019
1070
|
function errorMessage(error) {
|
|
1020
1071
|
return error instanceof Error ? error.message : String(error);
|
|
1021
1072
|
}
|