@memberjunction/ng-dashboard-viewer 6.2.0-edge.2 → 6.2.0-edge.4
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 +165 -17
- package/dist/lib/config-dialogs/confirm-dialog.component.d.ts +3 -4
- package/dist/lib/config-dialogs/confirm-dialog.component.d.ts.map +1 -1
- package/dist/lib/config-dialogs/confirm-dialog.component.js +3 -2
- package/dist/lib/config-dialogs/confirm-dialog.component.js.map +1 -1
- package/dist/lib/config-panels/artifact-config-panel.component.d.ts.map +1 -1
- package/dist/lib/config-panels/artifact-config-panel.component.js +59 -50
- package/dist/lib/config-panels/artifact-config-panel.component.js.map +1 -1
- package/dist/lib/config-panels/base-config-panel.d.ts +8 -3
- package/dist/lib/config-panels/base-config-panel.d.ts.map +1 -1
- package/dist/lib/config-panels/base-config-panel.js +10 -3
- package/dist/lib/config-panels/base-config-panel.js.map +1 -1
- package/dist/lib/config-panels/query-config-panel.component.js +124 -99
- package/dist/lib/config-panels/query-config-panel.component.js.map +1 -1
- package/dist/lib/config-panels/view-config-panel.component.js +111 -103
- package/dist/lib/config-panels/view-config-panel.component.js.map +1 -1
- package/dist/lib/config-panels/weburl-config-panel.component.js +89 -80
- package/dist/lib/config-panels/weburl-config-panel.component.js.map +1 -1
- package/dist/lib/dashboard-browser/dashboard-browser.component.d.ts +79 -28
- package/dist/lib/dashboard-browser/dashboard-browser.component.d.ts.map +1 -1
- package/dist/lib/dashboard-browser/dashboard-browser.component.js +446 -447
- package/dist/lib/dashboard-browser/dashboard-browser.component.js.map +1 -1
- package/dist/lib/dashboard-card/dashboard-card.component.d.ts +69 -0
- package/dist/lib/dashboard-card/dashboard-card.component.d.ts.map +1 -0
- package/dist/lib/dashboard-card/dashboard-card.component.js +281 -0
- package/dist/lib/dashboard-card/dashboard-card.component.js.map +1 -0
- package/dist/lib/dashboard-card/dashboard-card.helpers.d.ts +18 -0
- package/dist/lib/dashboard-card/dashboard-card.helpers.d.ts.map +1 -0
- package/dist/lib/dashboard-card/dashboard-card.helpers.js +43 -0
- package/dist/lib/dashboard-card/dashboard-card.helpers.js.map +1 -0
- package/dist/lib/dashboard-card/layout-preview-cache.d.ts +15 -0
- package/dist/lib/dashboard-card/layout-preview-cache.d.ts.map +1 -0
- package/dist/lib/dashboard-card/layout-preview-cache.js +22 -0
- package/dist/lib/dashboard-card/layout-preview-cache.js.map +1 -0
- package/dist/lib/dashboard-viewer/dashboard-viewer.component.d.ts +69 -12
- package/dist/lib/dashboard-viewer/dashboard-viewer.component.d.ts.map +1 -1
- package/dist/lib/dashboard-viewer/dashboard-viewer.component.js +173 -145
- package/dist/lib/dashboard-viewer/dashboard-viewer.component.js.map +1 -1
- package/dist/lib/dashboard-viewer.module.d.ts +24 -20
- package/dist/lib/dashboard-viewer.module.d.ts.map +1 -1
- package/dist/lib/dashboard-viewer.module.js +42 -5
- package/dist/lib/dashboard-viewer.module.js.map +1 -1
- package/dist/lib/dialogs/add-panel-dialog/add-panel-dialog.component.d.ts +7 -12
- package/dist/lib/dialogs/add-panel-dialog/add-panel-dialog.component.d.ts.map +1 -1
- package/dist/lib/dialogs/add-panel-dialog/add-panel-dialog.component.js +3 -1
- package/dist/lib/dialogs/add-panel-dialog/add-panel-dialog.component.js.map +1 -1
- package/dist/lib/dialogs/dashboard-name-dialog/dashboard-name-dialog.component.d.ts +54 -0
- package/dist/lib/dialogs/dashboard-name-dialog/dashboard-name-dialog.component.d.ts.map +1 -0
- package/dist/lib/dialogs/dashboard-name-dialog/dashboard-name-dialog.component.js +156 -0
- package/dist/lib/dialogs/dashboard-name-dialog/dashboard-name-dialog.component.js.map +1 -0
- package/dist/lib/dialogs/edit-part-dialog/edit-part-dialog.component.d.ts +5 -11
- package/dist/lib/dialogs/edit-part-dialog/edit-part-dialog.component.d.ts.map +1 -1
- package/dist/lib/dialogs/edit-part-dialog/edit-part-dialog.component.js +3 -1
- package/dist/lib/dialogs/edit-part-dialog/edit-part-dialog.component.js.map +1 -1
- package/dist/lib/dialogs/part-dialog/dashboard-part-dialog.component.d.ts +147 -0
- package/dist/lib/dialogs/part-dialog/dashboard-part-dialog.component.d.ts.map +1 -0
- package/dist/lib/dialogs/part-dialog/dashboard-part-dialog.component.js +536 -0
- package/dist/lib/dialogs/part-dialog/dashboard-part-dialog.component.js.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview-node.component.d.ts +20 -0
- package/dist/lib/layout-preview/dashboard-layout-preview-node.component.d.ts.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview-node.component.js +80 -0
- package/dist/lib/layout-preview/dashboard-layout-preview-node.component.js.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.component.d.ts +28 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.component.d.ts.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.component.js +62 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.component.js.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.d.ts +33 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.d.ts.map +1 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.js +138 -0
- package/dist/lib/layout-preview/dashboard-layout-preview.js.map +1 -0
- package/dist/lib/models/dashboard-layout-editor.d.ts +78 -0
- package/dist/lib/models/dashboard-layout-editor.d.ts.map +1 -0
- package/dist/lib/models/dashboard-layout-editor.js +374 -0
- package/dist/lib/models/dashboard-layout-editor.js.map +1 -0
- package/dist/lib/models/remove-part-confirm.d.ts +8 -0
- package/dist/lib/models/remove-part-confirm.d.ts.map +1 -0
- package/dist/lib/models/remove-part-confirm.js +23 -0
- package/dist/lib/models/remove-part-confirm.js.map +1 -0
- package/dist/lib/parts/artifact-part.component.js +2 -2
- package/dist/lib/parts/artifact-part.component.js.map +1 -1
- package/dist/lib/parts/query-part.component.js +2 -2
- package/dist/lib/parts/query-part.component.js.map +1 -1
- package/dist/lib/parts/view-part.component.js +2 -2
- package/dist/lib/parts/view-part.component.js.map +1 -1
- package/dist/lib/parts/weburl-part.component.js +2 -2
- package/dist/lib/parts/weburl-part.component.js.map +1 -1
- package/dist/lib/services/golden-layout-wrapper.service.d.ts +40 -0
- package/dist/lib/services/golden-layout-wrapper.service.d.ts.map +1 -1
- package/dist/lib/services/golden-layout-wrapper.service.js +117 -9
- package/dist/lib/services/golden-layout-wrapper.service.js.map +1 -1
- package/dist/lib/services/stack-part-actions.d.ts +11 -0
- package/dist/lib/services/stack-part-actions.d.ts.map +1 -0
- package/dist/lib/services/stack-part-actions.js +41 -0
- package/dist/lib/services/stack-part-actions.js.map +1 -0
- package/dist/public-api.d.ts +9 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +13 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ graph TD
|
|
|
16
16
|
B --> B1[DashboardViewerComponent]
|
|
17
17
|
B --> B2[DashboardBrowserComponent]
|
|
18
18
|
B --> B3[DashboardBreadcrumbComponent]
|
|
19
|
+
B --> B4[DashboardCardComponent]
|
|
19
20
|
|
|
20
21
|
C --> C1["WebURLConfigPanel
|
|
21
22
|
(@RegisterClass)"]
|
|
@@ -35,9 +36,11 @@ graph TD
|
|
|
35
36
|
D --> D4["ArtifactPartComponent
|
|
36
37
|
(@RegisterClass)"]
|
|
37
38
|
|
|
38
|
-
E -->
|
|
39
|
-
E -->
|
|
40
|
-
E -->
|
|
39
|
+
E --> E0[DashboardPartDialogComponent]
|
|
40
|
+
E --> E4[DashboardNameDialogComponent]
|
|
41
|
+
E --> E1["AddPanelDialogComponent (deprecated)"]
|
|
42
|
+
E --> E2["EditPartDialogComponent (deprecated)"]
|
|
43
|
+
E --> E3["ConfirmDialogComponent (deprecated)"]
|
|
41
44
|
|
|
42
45
|
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
43
46
|
style B fill:#7c5295,stroke:#563a6b,color:#fff
|
|
@@ -71,35 +74,145 @@ Render a full dashboard by ID:
|
|
|
71
74
|
|
|
72
75
|
```html
|
|
73
76
|
<mj-dashboard-viewer
|
|
74
|
-
[
|
|
75
|
-
[
|
|
76
|
-
|
|
77
|
-
(
|
|
77
|
+
[DashboardId]="selectedDashboardId"
|
|
78
|
+
[IsEditing]="isEditing"
|
|
79
|
+
[CanEdit]="canEdit"
|
|
80
|
+
(DashboardSaved)="onDashboardSaved($event)"
|
|
81
|
+
(PanelInteraction)="onPanelInteraction($event)">
|
|
78
82
|
</mj-dashboard-viewer>
|
|
79
83
|
```
|
|
80
84
|
|
|
85
|
+
The viewer asks the host to add, edit or remove a part through `PanelInteraction`; see [DashboardViewerComponent](#dashboardviewercomponent).
|
|
86
|
+
|
|
81
87
|
### Dashboard Browser
|
|
82
88
|
|
|
83
|
-
Browse
|
|
89
|
+
Browse dashboards as cards or as a list, by category folder:
|
|
84
90
|
|
|
85
91
|
```html
|
|
86
92
|
<mj-dashboard-browser
|
|
87
|
-
[
|
|
88
|
-
|
|
93
|
+
[Dashboards]="dashboards"
|
|
94
|
+
[Categories]="categories"
|
|
95
|
+
[SelectedCategoryId]="selectedCategoryId"
|
|
96
|
+
[DashboardPermissions]="permissions"
|
|
97
|
+
(DashboardOpen)="onDashboardOpen($event)"
|
|
98
|
+
(DashboardEdit)="onDashboardEdit($event)"
|
|
99
|
+
(DashboardDelete)="onDashboardDelete($event)">
|
|
89
100
|
</mj-dashboard-browser>
|
|
90
101
|
```
|
|
91
102
|
|
|
103
|
+
Set `[FlatMode]="true"` to show every dashboard you pass in one flat list, with no folder scoping and no folder cards (for example, a list of favorites or of dashboards shared with the user). Flat mode ignores `SelectedCategoryId`, so new dashboards and categories are created at the root.
|
|
104
|
+
|
|
105
|
+
Each dashboard in the card view is an `mj-dashboard-card` (see [Dashboard Card](#dashboard-card)). These inputs fill the cards and the empty state:
|
|
106
|
+
|
|
107
|
+
| Input | Default | Description |
|
|
108
|
+
|-------|---------|-------------|
|
|
109
|
+
| `FavoriteIds` | `[]` | IDs of the user's favorite dashboards. Their cards show a filled star. IDs match in any letter case. |
|
|
110
|
+
| `ShowFavorites` | `false` | Shows the star on each card. Turn it on when the host handles `DashboardFavoriteToggle`. |
|
|
111
|
+
| `OwnerLabels` | empty | Map of dashboard ID to the owner text its card shows, for example `"You"` or `"Ana Ruiz"`. A dashboard that is not in the map shows no owner. |
|
|
112
|
+
| `FlatEmptyIcon`, `FlatEmptyTitle`, `FlatEmptyMessage` | "No dashboards to show" | The empty state of a flat list with no dashboards and no search. |
|
|
113
|
+
| `FlatEmptyWelcome` | `false` | An empty flat list with no search shows the first-run welcome instead. |
|
|
114
|
+
|
|
115
|
+
- `DashboardFavoriteToggle` gives a `DashboardFavoriteToggleEvent` (`{ Dashboard }`) when the user clicks a card's star. The browser does not change `FavoriteIds` itself; the host updates it.
|
|
116
|
+
- A card shows the Shared marker for a dashboard the user can read but does not own (from `DashboardPermissions`).
|
|
117
|
+
- In flat mode each card also shows its category path (the user's filing, from `EffectiveCategoryMap`, else the dashboard's category).
|
|
118
|
+
- Outside selection mode, a click on a card opens the dashboard (`DashboardOpen`), and a Shift, Ctrl or Cmd click sets `OpenInNewTab`. In selection mode, a Ctrl or Cmd click toggles the card, a Shift-click selects a range, and the card's checkbox toggles it. A double-click emits `DashboardEdit`.
|
|
119
|
+
|
|
120
|
+
### Dashboard Layout Preview
|
|
121
|
+
|
|
122
|
+
A miniature of a dashboard's saved panel layout, for dashboard cards: each panel is a box with its icon and title, sized like the saved layout. It fills its container, renders only phrasing elements (so it can sit inside a button), and is `aria-hidden`, so the host must name the dashboard. It draws nothing when `UIConfigDetails` has no panel layout. `BuildDashboardLayoutPreview(uiConfigDetails)` returns the tree it draws, or null, so a host can choose another picture first. A host that already has the tree passes it in `[Preview]`, and the configuration is not parsed again.
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<mj-dashboard-layout-preview [UIConfigDetails]="dashboard.UIConfigDetails"></mj-dashboard-layout-preview>
|
|
126
|
+
<mj-dashboard-layout-preview [Preview]="tree"></mj-dashboard-layout-preview>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Dashboard Card
|
|
130
|
+
|
|
131
|
+
One dashboard as a card: a picture, the name, the description, and a meta row with the owner, a Shared marker, the category path and the last update. The picture is the dashboard's screenshot (`Thumbnail`), else a miniature of its saved panel layout, else an icon. A Config dashboard with no parts shows the icon and "Not set up yet", also when it has an old screenshot. The card is presentational: the host gives it its state and decides what each event does.
|
|
132
|
+
|
|
133
|
+
```html
|
|
134
|
+
<mj-dashboard-card
|
|
135
|
+
[Dashboard]="dashboard"
|
|
136
|
+
[IsFavorite]="isFavorite"
|
|
137
|
+
[IsShared]="isShared"
|
|
138
|
+
[OwnerLabel]="ownerLabel"
|
|
139
|
+
[CategoryPath]="categoryPath"
|
|
140
|
+
(CardClick)="open($event.Dashboard, $event.MouseEvent)"
|
|
141
|
+
(ToggleFavorite)="toggleFavorite($event)">
|
|
142
|
+
</mj-dashboard-card>
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
- Inputs: `Dashboard` (required), `IsFavorite`, `ShowFavorite` (default `true`), `IsShared`, `OwnerLabel` and `CategoryPath` (null shows none), `HighlightQuery` (search text to mark in the name and description), `Selectable` and `Selected` (the selection checkbox), `CanEdit` and `CanDelete` (the Edit and Delete buttons).
|
|
146
|
+
- `CardClick` and `CardDoubleClick` give a `DashboardCardClickEvent` (`{ Dashboard, MouseEvent }`), so the host can read the Shift, Ctrl and Cmd keys. A click on a card button counts only as that button: `ToggleFavorite`, `Edit`, `Delete` and `SelectionToggle` each emit the dashboard.
|
|
147
|
+
- The card never shows the dashboard's `User` field (the owner's user name, often an e-mail). Pass the text to show in `OwnerLabel`.
|
|
148
|
+
- Helpers: `IsDashboardNotSetUp(dashboard)`, `FormatDashboardDate(date)` ("Today", "Yesterday", "N days ago" under a week, else the local date) and `DashboardCategoryPath(categoryId, categories)` (for example "Sales › Pipeline").
|
|
149
|
+
- A module that declares the card itself (for example a test module) also declares `DashboardLayoutPreviewComponent` and `DashboardLayoutPreviewNodeComponent`.
|
|
150
|
+
|
|
151
|
+
### Part Dialog
|
|
152
|
+
|
|
153
|
+
One dialog, on `mj-dialog`, adds a part or edits one. It shows the part type tiles, the part type's settings panel as the Source section, the title and, for a query, the parameter-controls and automatic refresh options. Create it with `@if` each time it opens:
|
|
154
|
+
|
|
155
|
+
```html
|
|
156
|
+
@if (PartDialogMode) {
|
|
157
|
+
<mj-dashboard-part-dialog
|
|
158
|
+
[Visible]="true"
|
|
159
|
+
[Mode]="PartDialogMode"
|
|
160
|
+
[PartTypes]="viewer.PartTypes"
|
|
161
|
+
[Panel]="EditPartPanel"
|
|
162
|
+
[Provider]="Provider"
|
|
163
|
+
(Saved)="OnPartDialogSaved($event)"
|
|
164
|
+
(Cancelled)="PartDialogMode = null">
|
|
165
|
+
</mj-dashboard-part-dialog>
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
- `Mode` is `'add'` or `'edit'`. In edit mode, `Panel` is the part. Its part type cannot change, so the other type tiles are disabled.
|
|
170
|
+
- `Saved` gives a `DashboardPartDialogResult`: `{ PartType, Config, Title, Icon? }`. Pass it to the viewer's `AddPanel(r.PartType.ID, r.Config, r.Title, r.Icon)` or `UpdatePanelConfig(panel.id, r.Config, r.Title, r.Icon)`, then close the dialog. The dialog does not close itself.
|
|
171
|
+
- The tiles show the active part types by `SortOrder`, with the part type's metadata `Icon`.
|
|
172
|
+
- An empty title gives the part the name of its source. The title field's placeholder shows that name.
|
|
173
|
+
- A query part's refresh interval is one of `QUERY_REFRESH_SECONDS` (30, 60, 300 or 600 seconds).
|
|
174
|
+
- The dialog loads the settings panel that ClassFactory registers under the part type's `ConfigDialogClass`. It passes the panel its `Provider` and sets the panel's `ShowCommonFields` to `false`, so the panel leaves out the title and query options that the dialog shows itself. A part type without a settings panel gets a config that names only its type.
|
|
175
|
+
|
|
176
|
+
### Name Dialog
|
|
177
|
+
|
|
178
|
+
Asks for the name of a new dashboard before the host creates it. The component is standalone, so the host imports `DashboardNameDialogComponent` itself:
|
|
179
|
+
|
|
180
|
+
```html
|
|
181
|
+
<mj-dashboard-name-dialog
|
|
182
|
+
[Visible]="ShowNewDashboardDialog"
|
|
183
|
+
[MaxLength]="NewDashboardNameMaxLength"
|
|
184
|
+
[Processing]="IsCreatingDashboard"
|
|
185
|
+
(Confirmed)="OnNewDashboardNamed($event)"
|
|
186
|
+
(Cancelled)="OnNewDashboardCancelled()">
|
|
187
|
+
</mj-dashboard-name-dialog>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
- Create stays disabled until the trimmed name has 1 to `MaxLength` characters. The default is `DASHBOARD_NAME_MAX_LENGTH` (255, the length of `MJ: Dashboards.Name`).
|
|
191
|
+
- Create, or Enter in the field, emits `Confirmed` with the trimmed name, and the dialog stays open. The host creates the dashboard, sets `Processing` while it saves, and closes the dialog through `Visible`.
|
|
192
|
+
- Cancel, Esc, the backdrop and the close button emit `Cancelled`. The host closes the dialog and creates nothing.
|
|
193
|
+
- `Title` ("New dashboard"), `ConfirmText` ("Create") and `Placeholder` ("Name this dashboard") change the texts. The name field is empty each time the dialog opens.
|
|
194
|
+
|
|
92
195
|
### Dashboard Breadcrumb
|
|
93
196
|
|
|
94
|
-
|
|
197
|
+
The path from the root to a category, and optionally the current dashboard:
|
|
95
198
|
|
|
96
199
|
```html
|
|
97
200
|
<mj-dashboard-breadcrumb
|
|
98
|
-
[
|
|
99
|
-
|
|
201
|
+
[Categories]="categories"
|
|
202
|
+
[CurrentCategoryId]="selectedCategoryId"
|
|
203
|
+
[CurrentDashboard]="dashboard"
|
|
204
|
+
[ShowDashboardName]="true"
|
|
205
|
+
RootLabel="Dashboards"
|
|
206
|
+
RootIcon="fa-solid fa-gauge-high"
|
|
207
|
+
(Navigate)="onBreadcrumbNavigate($event)"
|
|
208
|
+
(DashboardDrop)="onDashboardDrop($event)">
|
|
100
209
|
</mj-dashboard-breadcrumb>
|
|
101
210
|
```
|
|
102
211
|
|
|
212
|
+
- `Navigate` gives a `BreadcrumbNavigateEvent` (`{ CategoryId, Category }`; null for the root) when the user clicks a crumb. The last category crumb emits it only when `ShowDashboardName` is true.
|
|
213
|
+
- `DashboardDrop` gives a `BreadcrumbDropEvent` (`{ TargetCategoryId, DashboardIds }`) when the user drops dashboards on a crumb. Set `AllowDragDrop` (default `true`) to `false` to turn this off.
|
|
214
|
+
- Set `Visible` (default `true`) to `false` to hide it. `Size` is `'normal'` or `'large'`.
|
|
215
|
+
|
|
103
216
|
## Architecture
|
|
104
217
|
|
|
105
218
|
### Plugin System
|
|
@@ -124,6 +237,8 @@ export class CustomChartConfigComponent extends BaseDashboardConfigPanel {
|
|
|
124
237
|
}
|
|
125
238
|
```
|
|
126
239
|
|
|
240
|
+
The part dialog shows the title field itself and sets the panel's `ShowCommonFields` input to `false`. If the panel has its own title field, wrap it in `@if (ShowCommonFields) { … }`.
|
|
241
|
+
|
|
127
242
|
2. Create a runtime part component:
|
|
128
243
|
|
|
129
244
|
```typescript
|
|
@@ -155,9 +270,39 @@ export class CustomChartPartComponent extends BaseDashboardPart {
|
|
|
155
270
|
|
|
156
271
|
Main viewer component that renders a dashboard's panels and parts.
|
|
157
272
|
|
|
273
|
+
The viewer reads the dashboard's saved layout (`UIConfigDetails`) when it gets the dashboard. Two methods keep a host in step with saves made elsewhere:
|
|
274
|
+
|
|
275
|
+
- `HasNewerSavedLayout(dashboard?)` returns true when the saved layout differs from the one the viewer last loaded or saved, for example after another tab saved the dashboard. Pass another copy of the dashboard to compare that copy.
|
|
276
|
+
- `ReloadFromSaved(dashboard?)` shows the saved layout again (of the given copy, if any) and drops unsaved layout changes. An edit-mode change made right after the call applies to the new layout. A hidden viewer builds the layout when its container gets a size.
|
|
277
|
+
- `UseSavedCopy(dashboard)` takes another copy of the shown dashboard whose saved layout is the one shown (for example after `DashboardEngine` reloaded its dashboards), without rebuilding the layout. Later saves write that copy. It returns false for a copy of another dashboard or with another saved layout.
|
|
278
|
+
|
|
279
|
+
Editing:
|
|
280
|
+
|
|
281
|
+
- `IsEditing` puts the dashboard in edit mode. `CanEdit` (default `false`) tells the viewer that the user may edit the dashboard: an empty dashboard then offers Add part in view mode too, and the host decides how to enter edit mode.
|
|
282
|
+
- The parts are tabs in tab groups (Golden Layout stacks). In edit mode, each tab group's header has an Edit part button and a Remove button, which act on the group's active part. Tabs can be dragged only in edit mode. In both modes, the keyboard reaches each tab, and Enter or Space shows it.
|
|
283
|
+
- The viewer does not open a dialog itself. It asks the host through `PanelInteraction`, with `interactionType: 'custom'` and one of these payloads:
|
|
284
|
+
|
|
285
|
+
| `payload.action` | When | Also in the event |
|
|
286
|
+
|------------------|------|-------------------|
|
|
287
|
+
| `add-panel-requested` | Add part (the toolbar, or the empty state) | `payload.partTypes` |
|
|
288
|
+
| `configure-part-requested` | Edit part | `panelId` |
|
|
289
|
+
| `remove-part-requested` | Remove | `panelId`, `payload.panelTitle`, `payload.partTypeName` (the `MJ: Dashboard Part Types` name, or null) |
|
|
290
|
+
|
|
291
|
+
- `RemovePartConfirmOptions(panelTitle, partTypeName)` gives the texts of the Remove part confirm, for `MJConfirmService.ConfirmDelete`: for example `Remove "Revenue" from this dashboard?`, and for the four built-in part types a detail line that says the view, query, artifact or page itself is not deleted.
|
|
292
|
+
|
|
293
|
+
### GoldenLayoutWrapperService
|
|
294
|
+
|
|
295
|
+
The viewer's Golden Layout wrapper. In edit mode, `OnStackAction` emits a `StackActionEvent` (`{ Action, PanelId }`) when the user clicks Edit part (`Action: 'edit'`) or Remove (`'remove'`) in a tab group's header; `PanelId` is the group's active part at the time of the click. `DASHBOARD_STACK_HEADER_HEIGHT` (44) and `DASHBOARD_TAB_CONTROL_OFFSET` (78) are the header height and the room kept beside the tabs, in pixels. The wrapper writes both into each layout it loads, and the viewer CSS uses the same values.
|
|
296
|
+
|
|
158
297
|
### DashboardBrowserComponent
|
|
159
298
|
|
|
160
|
-
Grid/list browser for navigating available dashboards with category tree sidebar.
|
|
299
|
+
Grid/list browser for navigating available dashboards with category tree sidebar. Each dashboard in the grid is an `mj-dashboard-card`; see [Dashboard Browser](#dashboard-browser) for the inputs that fill the cards.
|
|
300
|
+
|
|
301
|
+
Delete asks the user to confirm through `MJConfirmService` (from `@memberjunction/ng-ui-components`), then emits `DashboardDelete`. The host deletes the dashboards and does not ask again.
|
|
302
|
+
|
|
303
|
+
### DashboardCardComponent
|
|
304
|
+
|
|
305
|
+
One dashboard as a card (`<mj-dashboard-card>`); see [Dashboard Card](#dashboard-card).
|
|
161
306
|
|
|
162
307
|
### DashboardBreadcrumbComponent
|
|
163
308
|
|
|
@@ -167,9 +312,11 @@ Breadcrumb navigation showing the current dashboard path.
|
|
|
167
312
|
|
|
168
313
|
| Component | Description |
|
|
169
314
|
|-----------|-------------|
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
315
|
+
| `DashboardPartDialogComponent` | Adds a part or edits one (`<mj-dashboard-part-dialog>`); see [Part Dialog](#part-dialog) |
|
|
316
|
+
| `DashboardNameDialogComponent` | Asks for a new dashboard's name (`<mj-dashboard-name-dialog>`, standalone); see [Name Dialog](#name-dialog) |
|
|
317
|
+
| `AddPanelDialogComponent` | Deprecated. Use `DashboardPartDialogComponent` with `Mode="add"` |
|
|
318
|
+
| `EditPartDialogComponent` | Deprecated. Use `DashboardPartDialogComponent` with `Mode="edit"` |
|
|
319
|
+
| `ConfirmDialogComponent` | Deprecated. Use `MJConfirmService` (or `MJConfirmDialogComponent`) from `@memberjunction/ng-ui-components`. MJ Explorer's dashboard tab still renders it for its two Dashboard Studio confirms |
|
|
173
320
|
|
|
174
321
|
## Dependencies
|
|
175
322
|
|
|
@@ -183,6 +330,7 @@ Breadcrumb navigation showing the current dashboard path.
|
|
|
183
330
|
| `@memberjunction/ng-query-viewer` | Query result display |
|
|
184
331
|
| `@memberjunction/ng-shared-generic` | Shared generic components |
|
|
185
332
|
| `@memberjunction/ng-trees` | Tree view components |
|
|
333
|
+
| `@memberjunction/ng-ui-components` | Dialogs, buttons, empty state, and `MJConfirmService` |
|
|
186
334
|
|
|
187
335
|
### Peer Dependencies
|
|
188
336
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { EventEmitter, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Confirmation dialog types
|
|
5
|
-
*/
|
|
3
|
+
/** @deprecated Use `MJConfirmDialogType` from `@memberjunction/ng-ui-components`. */
|
|
6
4
|
export type ConfirmDialogType = 'warning' | 'danger' | 'info';
|
|
7
5
|
/**
|
|
8
|
-
* A
|
|
6
|
+
* A confirmation dialog for the dashboard viewer's hosts.
|
|
7
|
+
* @deprecated Use `MJConfirmService` (imperative) or `MJConfirmDialogComponent` (`<mj-confirm-dialog>`) from `@memberjunction/ng-ui-components`.
|
|
9
8
|
*/
|
|
10
9
|
export declare class ConfirmDialogComponent {
|
|
11
10
|
private cdr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-dialogs/confirm-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;;AAE1F
|
|
1
|
+
{"version":3,"file":"confirm-dialog.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-dialogs/confirm-dialog.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;;AAE1F,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE9D;;;GAGG;AACH,qBAMa,sBAAsB;IA6GnB,OAAO,CAAC,GAAG;IA5GvB,oCAAoC;IAC3B,OAAO,UAAS;IAEzB,uCAAuC;IACvC,IAAa,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAE5D;IACD,uCAAuC;IACvC,IAAI,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAE/C;IAED,oDAAoD;IAC3C,IAAI,EAAE,iBAAiB,CAAa;IAE7C,oCAAoC;IACpC,IAAa,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAEzC;IACD,oCAAoC;IACpC,IAAI,IAAI,IAAI,iBAAiB,CAE5B;IAED,mBAAmB;IACV,KAAK,SAAoB;IAElC,qCAAqC;IACrC,IAAa,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,EAExD;IACD,qCAAqC;IACrC,IAAI,KAAK,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAE3C;IAED,qBAAqB;IACZ,OAAO,SAAuC;IAEvD,uCAAuC;IACvC,IAAa,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,SAAS,CAAC,EAE5D;IACD,uCAAuC;IACvC,IAAI,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAE/C;IAED,0BAA0B;IACjB,WAAW,SAAa;IAEjC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,EAEpE;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,sBAAsB,CAAC,aAAa,CAAC,CAEvD;IAED,yBAAyB;IAChB,UAAU,SAAY;IAE/B,0CAA0C;IAC1C,IAAa,UAAU,CAAC,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAElE;IACD,0CAA0C;IAC1C,IAAI,UAAU,IAAI,sBAAsB,CAAC,YAAY,CAAC,CAErD;IAED,+EAA+E;IACtE,IAAI,SAAM;IAEnB,oCAAoC;IACpC,IAAa,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAEtD;IACD,oCAAoC;IACpC,IAAI,IAAI,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAEzC;IAED,iCAAiC;IACvB,SAAS,qBAA4B;IAE/C;;;;;;OAMG;IACO,SAAS,qBAAkB;IAErC,gCAAgC;IACtB,SAAS,qBAA4B;IAE/C;;;;;;OAMG;IACO,SAAS,qBAAkB;gBAEjB,GAAG,EAAE,iBAAiB;IAEnC,OAAO,IAAI,MAAM;IAaxB,uCAAuC;IAChC,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,IAAI;IAItB,uCAAuC;IAChC,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,IAAI;IAIrB,sCAAsC;IAC/B,MAAM,IAAI,IAAI;yCA/IZ,sBAAsB;2CAAtB,sBAAsB;CAkJlC"}
|
|
@@ -41,7 +41,8 @@ function ConfirmDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
41
41
|
i0.ɵɵtextInterpolate(ctx_r1.cancelText);
|
|
42
42
|
} }
|
|
43
43
|
/**
|
|
44
|
-
* A
|
|
44
|
+
* A confirmation dialog for the dashboard viewer's hosts.
|
|
45
|
+
* @deprecated Use `MJConfirmService` (imperative) or `MJConfirmDialogComponent` (`<mj-confirm-dialog>`) from `@memberjunction/ng-ui-components`.
|
|
45
46
|
*/
|
|
46
47
|
export class ConfirmDialogComponent {
|
|
47
48
|
cdr;
|
|
@@ -215,5 +216,5 @@ export class ConfirmDialogComponent {
|
|
|
215
216
|
}], cancelled: [{
|
|
216
217
|
type: Output
|
|
217
218
|
}] }); })();
|
|
218
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfirmDialogComponent, { className: "ConfirmDialogComponent", filePath: "src/lib/config-dialogs/confirm-dialog.component.ts", lineNumber:
|
|
219
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfirmDialogComponent, { className: "ConfirmDialogComponent", filePath: "src/lib/config-dialogs/confirm-dialog.component.ts", lineNumber: 16 }); })();
|
|
219
220
|
//# sourceMappingURL=confirm-dialog.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/config-dialogs/confirm-dialog.component.ts","../../../src/lib/config-dialogs/confirm-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,MAAM,eAAe,CAAC;;;;ICExF,8BAAsD;IAAnB,uLAAS,eAAQ,KAAC;IACnD,8BAA6E;IAAnC,oHAAS,wBAAwB,IAAC;IAGxE,AADF,8BAA4B,aACwE;IAChG,oBAA2B;IAC7B,iBAAM;IACN,6BAA0B;IAAA,YAAW;IAAA,iBAAK;IAC1C,4BAA2B;IAAA,YAAa;IAC1C,AAD0C,iBAAI,EACxC;IAGJ,AADF,8BAA2B,iBAGH;IAApB,2LAAS,gBAAS,KAAC;IACnB,aACF;IAAA,iBAAS;IACT,kCAAiD;IAAnB,2LAAS,eAAQ,KAAC;IAAC,aAAgB;IAGvE,AADE,AADE,AADmE,iBAAS,EACtE,EACF,EACF;;;IAhB0B,eAAoC;IAAC,AAArC,oDAAoC,oCAAmC;IAC5F,cAAmB;IAAnB,+BAAmB;IAEE,eAAW;IAAX,kCAAW;IACV,eAAa;IAAb,oCAAa;IAKtC,eAA0D;IAA1D,sEAA0D;IAE1D,cACF;IADE,mDACF;IACiD,eAAgB;IAAhB,uCAAgB;;
|
|
1
|
+
{"version":3,"file":"confirm-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/config-dialogs/confirm-dialog.component.ts","../../../src/lib/config-dialogs/confirm-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\n\n/** @deprecated Use `MJConfirmDialogType` from `@memberjunction/ng-ui-components`. */\nexport type ConfirmDialogType = 'warning' | 'danger' | 'info';\n\n/**\n * A confirmation dialog for the dashboard viewer's hosts.\n * @deprecated Use `MJConfirmService` (imperative) or `MJConfirmDialogComponent` (`<mj-confirm-dialog>`) from `@memberjunction/ng-ui-components`.\n */\n@Component({\n standalone: false,\n selector: 'mj-confirm-dialog',\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./config-dialog.component.css']\n})\nexport class ConfirmDialogComponent {\n /** Whether the dialog is visible */\n @Input() Visible = false;\n\n /** @deprecated Use {@link Visible}. */\n @Input() set visible(value: ConfirmDialogComponent['Visible']) {\n this.Visible = value;\n }\n /** @deprecated Use {@link Visible}. */\n get visible(): ConfirmDialogComponent['Visible'] {\n return this.Visible;\n }\n\n /** Dialog type (affects icon and button styling) */\n @Input() Type: ConfirmDialogType = 'warning';\n\n /** @deprecated Use {@link Type}. */\n @Input() set type(value: ConfirmDialogType) {\n this.Type = value;\n }\n /** @deprecated Use {@link Type}. */\n get type(): ConfirmDialogType {\n return this.Type;\n }\n\n /** Dialog title */\n @Input() Title = 'Confirm Action';\n\n /** @deprecated Use {@link Title}. */\n @Input() set title(value: ConfirmDialogComponent['Title']) {\n this.Title = value;\n }\n /** @deprecated Use {@link Title}. */\n get title(): ConfirmDialogComponent['Title'] {\n return this.Title;\n }\n\n /** Dialog message */\n @Input() Message = 'Are you sure you want to proceed?';\n\n /** @deprecated Use {@link Message}. */\n @Input() set message(value: ConfirmDialogComponent['Message']) {\n this.Message = value;\n }\n /** @deprecated Use {@link Message}. */\n get message(): ConfirmDialogComponent['Message'] {\n return this.Message;\n }\n\n /** Confirm button text */\n @Input() ConfirmText = 'Confirm';\n\n /** @deprecated Use {@link ConfirmText}. */\n @Input() set confirmText(value: ConfirmDialogComponent['ConfirmText']) {\n this.ConfirmText = value;\n }\n /** @deprecated Use {@link ConfirmText}. */\n get confirmText(): ConfirmDialogComponent['ConfirmText'] {\n return this.ConfirmText;\n }\n\n /** Cancel button text */\n @Input() CancelText = 'Cancel';\n\n /** @deprecated Use {@link CancelText}. */\n @Input() set cancelText(value: ConfirmDialogComponent['CancelText']) {\n this.CancelText = value;\n }\n /** @deprecated Use {@link CancelText}. */\n get cancelText(): ConfirmDialogComponent['CancelText'] {\n return this.CancelText;\n }\n\n /** Custom icon class (optional, uses default based on type if not provided) */\n @Input() Icon = '';\n\n /** @deprecated Use {@link Icon}. */\n @Input() set icon(value: ConfirmDialogComponent['Icon']) {\n this.Icon = value;\n }\n /** @deprecated Use {@link Icon}. */\n get icon(): ConfirmDialogComponent['Icon'] {\n return this.Icon;\n }\n\n /** Emitted when user confirms */\n @Output() Confirmed = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Confirmed}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (confirmed) keeps working. Must stay AFTER Confirmed: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() confirmed = this.Confirmed;\n\n /** Emitted when user cancels */\n @Output() Cancelled = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Cancelled}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (cancelled) keeps working. Must stay AFTER Cancelled: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() cancelled = this.Cancelled;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n public GetIcon(): string {\n if (this.Icon) return this.Icon;\n\n switch (this.Type) {\n case 'danger':\n return 'fa-solid fa-trash';\n case 'info':\n return 'fa-solid fa-info-circle';\n default:\n return 'fa-solid fa-exclamation-triangle';\n }\n }\n\n /** @deprecated Use {@link GetIcon}. */\n public getIcon(): string {\n return this.GetIcon();\n }\n\n public Confirm(): void {\n this.Confirmed.emit();\n }\n\n /** @deprecated Use {@link Confirm}. */\n public confirm(): void {\n return this.Confirm();\n }\n\n public Cancel(): void {\n this.Cancelled.emit();\n }\n\n /** @deprecated Use {@link Cancel}. */\n public cancel(): void {\n return this.Cancel();\n }\n}\n","<!-- Confirm Dialog -->\n@if (visible) {\n <div class=\"config-dialog-overlay\" (click)=\"cancel()\">\n <div class=\"config-dialog confirm-dialog\" (click)=\"$event.stopPropagation()\">\n <!-- Content -->\n <div class=\"dialog-content\">\n <div class=\"confirm-icon\" [class.warning]=\"type === 'warning'\" [class.danger]=\"type === 'danger'\">\n <i [class]=\"getIcon()\"></i>\n </div>\n <h3 class=\"confirm-title\">{{ title }}</h3>\n <p class=\"confirm-message\">{{ message }}</p>\n </div>\n <!-- Footer - Action button on left, Cancel on right -->\n <div class=\"dialog-footer\">\n <button\n [class]=\"type === 'danger' ? 'btn-danger' : 'btn-primary'\"\n (click)=\"confirm()\">\n {{ confirmText }}\n </button>\n <button class=\"btn-secondary\" (click)=\"cancel()\">{{ cancelText }}</button>\n </div>\n </div>\n </div>\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"artifact-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts"],"names":[],"mappings":"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"}
|