@memberjunction/ng-explorer-core 6.1.4 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app-routing.module.d.ts +23 -1
- package/dist/app-routing.module.d.ts.map +1 -1
- package/dist/app-routing.module.js +73 -17
- package/dist/app-routing.module.js.map +1 -1
- package/dist/generated/lazy-feature-config.d.ts +1 -1
- package/dist/generated/lazy-feature-config.d.ts.map +1 -1
- package/dist/generated/lazy-feature-config.js +1 -8
- package/dist/generated/lazy-feature-config.js.map +1 -1
- package/dist/lib/command-palette/command-palette.component.d.ts +7 -1
- package/dist/lib/command-palette/command-palette.component.d.ts.map +1 -1
- package/dist/lib/command-palette/command-palette.component.js +28 -14
- package/dist/lib/command-palette/command-palette.component.js.map +1 -1
- package/dist/lib/conversation-feedback/conversation-feedback.d.ts +103 -13
- package/dist/lib/conversation-feedback/conversation-feedback.d.ts.map +1 -1
- package/dist/lib/conversation-feedback/conversation-feedback.js +219 -67
- package/dist/lib/conversation-feedback/conversation-feedback.js.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts +64 -10
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.d.ts.map +1 -1
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js +172 -66
- package/dist/lib/dashboard-preferences-dialog/dashboard-preferences-dialog.component.js.map +1 -1
- package/dist/lib/generic/resource-container-component.d.ts +19 -5
- package/dist/lib/generic/resource-container-component.d.ts.map +1 -1
- package/dist/lib/generic/resource-container-component.js +43 -13
- package/dist/lib/generic/resource-container-component.js.map +1 -1
- package/dist/lib/guards/entities.guard.d.ts +4 -0
- package/dist/lib/guards/entities.guard.d.ts.map +1 -1
- package/dist/lib/guards/entities.guard.js +10 -2
- package/dist/lib/guards/entities.guard.js.map +1 -1
- package/dist/lib/identity-claims/claim-redeem.component.d.ts +4 -0
- package/dist/lib/identity-claims/claim-redeem.component.d.ts.map +1 -1
- package/dist/lib/identity-claims/claim-redeem.component.js +10 -2
- package/dist/lib/identity-claims/claim-redeem.component.js.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.d.ts +4 -0
- package/dist/lib/oauth/oauth-callback.component.d.ts.map +1 -1
- package/dist/lib/oauth/oauth-callback.component.js +10 -2
- package/dist/lib/oauth/oauth-callback.component.js.map +1 -1
- package/dist/lib/profile/profile-dialog.component.d.ts.map +1 -1
- package/dist/lib/profile/profile-dialog.component.js +194 -191
- package/dist/lib/profile/profile-dialog.component.js.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts +20 -2
- package/dist/lib/resource-wrappers/artifact-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/artifact-resource.component.js +33 -9
- package/dist/lib/resource-wrappers/artifact-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts +80 -10
- package/dist/lib/resource-wrappers/chat-collections-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js +168 -56
- package/dist/lib/resource-wrappers/chat-collections-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts +186 -23
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js +500 -177
- package/dist/lib/resource-wrappers/chat-conversations-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts +2 -0
- package/dist/lib/resource-wrappers/chat-deeplink-params.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.js +5 -1
- package/dist/lib/resource-wrappers/chat-deeplink-params.js.map +1 -1
- package/dist/lib/resource-wrappers/chat-search-routing.d.ts +25 -0
- package/dist/lib/resource-wrappers/chat-search-routing.d.ts.map +1 -0
- package/dist/lib/resource-wrappers/chat-search-routing.js +24 -0
- package/dist/lib/resource-wrappers/chat-search-routing.js.map +1 -0
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts +14 -2
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js +32 -8
- package/dist/lib/resource-wrappers/chat-tasks-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts +54 -8
- package/dist/lib/resource-wrappers/dashboard-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/dashboard-resource.component.js +138 -46
- package/dist/lib/resource-wrappers/dashboard-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts +223 -30
- package/dist/lib/resource-wrappers/livekit-room-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js +438 -118
- package/dist/lib/resource-wrappers/livekit-room-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts +7 -3
- package/dist/lib/resource-wrappers/search-results-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/search-results-resource.component.js +23 -15
- package/dist/lib/resource-wrappers/search-results-resource.component.js.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.d.ts +68 -10
- package/dist/lib/resource-wrappers/view-resource.component.d.ts.map +1 -1
- package/dist/lib/resource-wrappers/view-resource.component.js +178 -62
- package/dist/lib/resource-wrappers/view-resource.component.js.map +1 -1
- package/dist/lib/services/startup-validation.service.d.ts +4 -0
- package/dist/lib/services/startup-validation.service.d.ts.map +1 -1
- package/dist/lib/services/startup-validation.service.js +10 -2
- package/dist/lib/services/startup-validation.service.js.map +1 -1
- package/dist/lib/services/system-validation.service.d.ts +13 -1
- package/dist/lib/services/system-validation.service.d.ts.map +1 -1
- package/dist/lib/services/system-validation.service.js +29 -5
- package/dist/lib/services/system-validation.service.js.map +1 -1
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts +54 -4
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.d.ts.map +1 -1
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.js +130 -40
- package/dist/lib/shell/components/dialogs/app-access-dialog.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts +29 -1
- package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
- package/dist/lib/shell/components/header/app-nav.component.js +56 -12
- package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.d.ts +33 -5
- package/dist/lib/shell/components/header/app-switcher.component.d.ts.map +1 -1
- package/dist/lib/shell/components/header/app-switcher.component.js +85 -29
- package/dist/lib/shell/components/header/app-switcher.component.js.map +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts +7 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.d.ts.map +1 -1
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js +63 -9
- package/dist/lib/shell/components/record-open/record-origin-crumb.component.js.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts +30 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/component-cache-manager.js +63 -15
- package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts +99 -9
- package/dist/lib/shell/components/tabs/tab-container.component.d.ts.map +1 -1
- package/dist/lib/shell/components/tabs/tab-container.component.js +310 -110
- package/dist/lib/shell/components/tabs/tab-container.component.js.map +1 -1
- package/dist/lib/shell/loading-themes.d.ts +16 -12
- package/dist/lib/shell/loading-themes.d.ts.map +1 -1
- package/dist/lib/shell/loading-themes.js +145 -137
- package/dist/lib/shell/loading-themes.js.map +1 -1
- package/dist/lib/shell/readiness-beacon.d.ts +24 -0
- package/dist/lib/shell/readiness-beacon.d.ts.map +1 -0
- package/dist/lib/shell/readiness-beacon.js +40 -0
- package/dist/lib/shell/readiness-beacon.js.map +1 -0
- package/dist/lib/shell/services/about-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/about-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/about-dialog.service.js +16 -4
- package/dist/lib/shell/services/about-dialog.service.js.map +1 -1
- package/dist/lib/shell/services/profile-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/profile-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/profile-dialog.service.js +16 -4
- package/dist/lib/shell/services/profile-dialog.service.js.map +1 -1
- package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts +6 -0
- package/dist/lib/shell/services/user-sharing-center-dialog.service.d.ts.map +1 -1
- package/dist/lib/shell/services/user-sharing-center-dialog.service.js +15 -3
- package/dist/lib/shell/services/user-sharing-center-dialog.service.js.map +1 -1
- package/dist/lib/shell/shell.component.d.ts +275 -40
- package/dist/lib/shell/shell.component.d.ts.map +1 -1
- package/dist/lib/shell/shell.component.js +704 -290
- package/dist/lib/shell/shell.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts +64 -8
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +129 -37
- package/dist/lib/single-dashboard/Components/add-item/add-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts +26 -2
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +48 -10
- package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts +84 -6
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +133 -29
- package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts +173 -23
- package/dist/lib/single-dashboard/single-dashboard.component.d.ts.map +1 -1
- package/dist/lib/single-dashboard/single-dashboard.component.js +383 -109
- package/dist/lib/single-dashboard/single-dashboard.component.js.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts +383 -55
- package/dist/lib/single-list-detail/single-list-detail.component.d.ts.map +1 -1
- package/dist/lib/single-list-detail/single-list-detail.component.js +962 -326
- package/dist/lib/single-list-detail/single-list-detail.component.js.map +1 -1
- package/dist/lib/single-query/single-query.component.d.ts +22 -2
- package/dist/lib/single-query/single-query.component.d.ts.map +1 -1
- package/dist/lib/single-query/single-query.component.js +40 -10
- package/dist/lib/single-query/single-query.component.js.map +1 -1
- package/dist/lib/single-record/single-record.component.d.ts +41 -3
- package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
- package/dist/lib/single-record/single-record.component.js +71 -11
- package/dist/lib/single-record/single-record.component.js.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.d.ts +23 -3
- package/dist/lib/single-search-result/single-search-result.component.d.ts.map +1 -1
- package/dist/lib/single-search-result/single-search-result.component.js +42 -12
- package/dist/lib/single-search-result/single-search-result.component.js.map +1 -1
- package/dist/lib/system-validation/system-validation-banner.component.d.ts +12 -2
- package/dist/lib/system-validation/system-validation-banner.component.d.ts.map +1 -1
- package/dist/lib/system-validation/system-validation-banner.component.js +25 -5
- package/dist/lib/system-validation/system-validation-banner.component.js.map +1 -1
- package/dist/lib/user-menu/user-menu.types.d.ts +4 -0
- package/dist/lib/user-menu/user-menu.types.d.ts.map +1 -1
- package/dist/lib/user-menu/user-menu.types.js +10 -2
- package/dist/lib/user-menu/user-menu.types.js.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.d.ts +59 -7
- package/dist/lib/user-notifications/user-notifications.component.d.ts.map +1 -1
- package/dist/lib/user-notifications/user-notifications.component.js +151 -47
- package/dist/lib/user-notifications/user-notifications.component.js.map +1 -1
- package/dist/lib/user-profile/user-profile.component.d.ts +3 -2
- package/dist/lib/user-profile/user-profile.component.d.ts.map +1 -1
- package/dist/lib/user-profile/user-profile.component.js +5 -4
- package/dist/lib/user-profile/user-profile.component.js.map +1 -1
- package/package.json +52 -52
|
@@ -140,23 +140,103 @@ function UserViewResource_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
140
140
|
let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
141
141
|
cdr;
|
|
142
142
|
exportService;
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
ContainerElement;
|
|
144
|
+
/** @deprecated Use {@link ContainerElement}. */
|
|
145
|
+
get containerElement() {
|
|
146
|
+
return this.ContainerElement;
|
|
147
|
+
}
|
|
148
|
+
/** @deprecated Use {@link ContainerElement}. */
|
|
149
|
+
set containerElement(value) {
|
|
150
|
+
this.ContainerElement = value;
|
|
151
|
+
}
|
|
152
|
+
EntityViewerRef;
|
|
153
|
+
/** @deprecated Use {@link EntityViewerRef}. */
|
|
154
|
+
get entityViewerRef() {
|
|
155
|
+
return this.EntityViewerRef;
|
|
156
|
+
}
|
|
157
|
+
/** @deprecated Use {@link EntityViewerRef}. */
|
|
158
|
+
set entityViewerRef(value) {
|
|
159
|
+
this.EntityViewerRef = value;
|
|
160
|
+
}
|
|
145
161
|
isLoading = false;
|
|
146
162
|
errorMessage = null;
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
163
|
+
EntityInfo = null;
|
|
164
|
+
/** @deprecated Use {@link EntityInfo}. */
|
|
165
|
+
get entityInfo() {
|
|
166
|
+
return this.EntityInfo;
|
|
167
|
+
}
|
|
168
|
+
/** @deprecated Use {@link EntityInfo}. */
|
|
169
|
+
set entityInfo(value) {
|
|
170
|
+
this.EntityInfo = value;
|
|
171
|
+
}
|
|
172
|
+
ViewEntity = null;
|
|
173
|
+
/** @deprecated Use {@link ViewEntity}. */
|
|
174
|
+
get viewEntity() {
|
|
175
|
+
return this.ViewEntity;
|
|
176
|
+
}
|
|
177
|
+
/** @deprecated Use {@link ViewEntity}. */
|
|
178
|
+
set viewEntity(value) {
|
|
179
|
+
this.ViewEntity = value;
|
|
180
|
+
}
|
|
181
|
+
GridState = null;
|
|
182
|
+
/** @deprecated Use {@link GridState}. */
|
|
183
|
+
get gridState() {
|
|
184
|
+
return this.GridState;
|
|
185
|
+
}
|
|
186
|
+
/** @deprecated Use {@link GridState}. */
|
|
187
|
+
set gridState(value) {
|
|
188
|
+
this.GridState = value;
|
|
189
|
+
}
|
|
150
190
|
// Export state. The header Export button is a FALLBACK shown only for view types that don't
|
|
151
191
|
// provide their own export UI (Cards / Map / Timeline). The Grid renderer has its own in-toolbar
|
|
152
192
|
// Export (full result set + format/sampling dialog), so we suppress this one there to avoid a
|
|
153
193
|
// duplicate/confusing second button — while keeping export available for every other view type.
|
|
154
|
-
|
|
155
|
-
|
|
194
|
+
IsExporting = false;
|
|
195
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
196
|
+
get isExporting() {
|
|
197
|
+
return this.IsExporting;
|
|
198
|
+
}
|
|
199
|
+
/** @deprecated Use {@link IsExporting}. */
|
|
200
|
+
set isExporting(value) {
|
|
201
|
+
this.IsExporting = value;
|
|
202
|
+
}
|
|
203
|
+
ShowFallbackExportButton = false;
|
|
204
|
+
/** @deprecated Use {@link ShowFallbackExportButton}. */
|
|
205
|
+
get showFallbackExportButton() {
|
|
206
|
+
return this.ShowFallbackExportButton;
|
|
207
|
+
}
|
|
208
|
+
/** @deprecated Use {@link ShowFallbackExportButton}. */
|
|
209
|
+
set showFallbackExportButton(value) {
|
|
210
|
+
this.ShowFallbackExportButton = value;
|
|
211
|
+
}
|
|
156
212
|
// Save-as-list dialog state
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
213
|
+
SaveAsListDialogVisible = false;
|
|
214
|
+
/** @deprecated Use {@link SaveAsListDialogVisible}. */
|
|
215
|
+
get saveAsListDialogVisible() {
|
|
216
|
+
return this.SaveAsListDialogVisible;
|
|
217
|
+
}
|
|
218
|
+
/** @deprecated Use {@link SaveAsListDialogVisible}. */
|
|
219
|
+
set saveAsListDialogVisible(value) {
|
|
220
|
+
this.SaveAsListDialogVisible = value;
|
|
221
|
+
}
|
|
222
|
+
SaveAsListRecordCount = null;
|
|
223
|
+
/** @deprecated Use {@link SaveAsListRecordCount}. */
|
|
224
|
+
get saveAsListRecordCount() {
|
|
225
|
+
return this.SaveAsListRecordCount;
|
|
226
|
+
}
|
|
227
|
+
/** @deprecated Use {@link SaveAsListRecordCount}. */
|
|
228
|
+
set saveAsListRecordCount(value) {
|
|
229
|
+
this.SaveAsListRecordCount = value;
|
|
230
|
+
}
|
|
231
|
+
IsSavingAsList = false;
|
|
232
|
+
/** @deprecated Use {@link IsSavingAsList}. */
|
|
233
|
+
get isSavingAsList() {
|
|
234
|
+
return this.IsSavingAsList;
|
|
235
|
+
}
|
|
236
|
+
/** @deprecated Use {@link IsSavingAsList}. */
|
|
237
|
+
set isSavingAsList(value) {
|
|
238
|
+
this.IsSavingAsList = value;
|
|
239
|
+
}
|
|
160
240
|
dataLoaded = false;
|
|
161
241
|
get metadata() { return this.ProviderToUse; }
|
|
162
242
|
constructor(cdr, exportService) {
|
|
@@ -176,9 +256,9 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
176
256
|
if (!this.dataLoaded || newRecordId !== previousRecordId || newEntity !== previousEntity) {
|
|
177
257
|
this.dataLoaded = true;
|
|
178
258
|
// Reset state before loading new view
|
|
179
|
-
this.
|
|
180
|
-
this.
|
|
181
|
-
this.
|
|
259
|
+
this.EntityInfo = null;
|
|
260
|
+
this.ViewEntity = null;
|
|
261
|
+
this.GridState = null;
|
|
182
262
|
this.errorMessage = null;
|
|
183
263
|
this.loadView();
|
|
184
264
|
}
|
|
@@ -239,25 +319,25 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
239
319
|
if (!view) {
|
|
240
320
|
throw new Error(`View with ID ${viewId} not found`);
|
|
241
321
|
}
|
|
242
|
-
this.
|
|
322
|
+
this.ViewEntity = view;
|
|
243
323
|
// Check permissions
|
|
244
|
-
if (!this.
|
|
324
|
+
if (!this.ViewEntity.UserCanView) {
|
|
245
325
|
throw new Error('You do not have permission to view this view');
|
|
246
326
|
}
|
|
247
327
|
// Load the entity info
|
|
248
|
-
const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.
|
|
328
|
+
const entity = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.ViewEntity.EntityID));
|
|
249
329
|
if (!entity) {
|
|
250
330
|
throw new Error(`Entity for view not found`);
|
|
251
331
|
}
|
|
252
|
-
this.
|
|
332
|
+
this.EntityInfo = entity;
|
|
253
333
|
// Parse grid state if available
|
|
254
|
-
if (this.
|
|
334
|
+
if (this.ViewEntity.GridState) {
|
|
255
335
|
try {
|
|
256
|
-
this.
|
|
336
|
+
this.GridState = JSON.parse(this.ViewEntity.GridState);
|
|
257
337
|
}
|
|
258
338
|
catch (e) {
|
|
259
339
|
console.warn('Failed to parse GridState:', e);
|
|
260
|
-
this.
|
|
340
|
+
this.GridState = null;
|
|
261
341
|
}
|
|
262
342
|
}
|
|
263
343
|
// View-type + per-view-type config persistence is fully owned by mj-entity-viewer
|
|
@@ -272,25 +352,29 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
272
352
|
if (!entity) {
|
|
273
353
|
throw new Error(`Entity '${entityName}' not found`);
|
|
274
354
|
}
|
|
275
|
-
this.
|
|
276
|
-
this.
|
|
277
|
-
this.
|
|
355
|
+
this.EntityInfo = entity;
|
|
356
|
+
this.ViewEntity = null;
|
|
357
|
+
this.GridState = null;
|
|
278
358
|
// For dynamic views, we could create a synthetic viewEntity with just the WhereClause
|
|
279
359
|
// but for now, we'll rely on the entity-viewer's default behavior
|
|
280
360
|
}
|
|
281
361
|
/**
|
|
282
362
|
* Handle record opened event - open in new tab
|
|
283
363
|
*/
|
|
284
|
-
|
|
364
|
+
OnRecordOpened(event) {
|
|
285
365
|
if (event && event.entity && event.compositeKey) {
|
|
286
366
|
this.navigationService.OpenEntityRecord(event.entity.Name, event.compositeKey);
|
|
287
367
|
}
|
|
288
368
|
}
|
|
369
|
+
/** @deprecated Use {@link OnRecordOpened}. */
|
|
370
|
+
onRecordOpened(event) {
|
|
371
|
+
return this.OnRecordOpened(event);
|
|
372
|
+
}
|
|
289
373
|
/**
|
|
290
374
|
* Handle a related-record navigation requested from within a view-type renderer
|
|
291
375
|
* (e.g. a foreign-key cell) - open the target record in a new tab.
|
|
292
376
|
*/
|
|
293
|
-
|
|
377
|
+
OnOpenRelatedRecord(nav) {
|
|
294
378
|
if (nav?.entityName && nav.recordKey != null) {
|
|
295
379
|
// The related entity is arbitrary, so its key column can have any name — resolve the key
|
|
296
380
|
// against its metadata rather than hardcoding `ID` via FromID.
|
|
@@ -298,17 +382,29 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
298
382
|
this.navigationService.OpenEntityRecord(nav.entityName, CompositeKey.FromURLSegment(entityInfo, String(nav.recordKey)));
|
|
299
383
|
}
|
|
300
384
|
}
|
|
385
|
+
/** @deprecated Use {@link OnOpenRelatedRecord}. */
|
|
386
|
+
onOpenRelatedRecord(nav) {
|
|
387
|
+
return this.OnOpenRelatedRecord(nav);
|
|
388
|
+
}
|
|
301
389
|
/**
|
|
302
390
|
* Handle data loaded event from entity-viewer
|
|
303
391
|
*/
|
|
304
|
-
|
|
392
|
+
OnDataLoaded() {
|
|
305
393
|
this.NotifyLoadComplete();
|
|
306
394
|
this.refreshFallbackExportVisibility();
|
|
307
395
|
}
|
|
396
|
+
/** @deprecated Use {@link OnDataLoaded}. */
|
|
397
|
+
onDataLoaded() {
|
|
398
|
+
return this.OnDataLoaded();
|
|
399
|
+
}
|
|
308
400
|
/** The active view type changed — recompute whether the fallback Export button is needed. */
|
|
309
|
-
|
|
401
|
+
OnViewTypeChanged() {
|
|
310
402
|
this.refreshFallbackExportVisibility();
|
|
311
403
|
}
|
|
404
|
+
/** @deprecated Use {@link OnViewTypeChanged}. */
|
|
405
|
+
onViewTypeChanged() {
|
|
406
|
+
return this.OnViewTypeChanged();
|
|
407
|
+
}
|
|
312
408
|
/**
|
|
313
409
|
* Show the wrapper's Export button only for view types that don't ship their own export UI. The
|
|
314
410
|
* entity-viewer reports this via {@link EntityViewerComponent.ActiveViewTypeHasOwnExport} (true for
|
|
@@ -316,9 +412,9 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
316
412
|
* detection to avoid an ExpressionChanged error from reading child state during a CD pass.
|
|
317
413
|
*/
|
|
318
414
|
refreshFallbackExportVisibility() {
|
|
319
|
-
const next = !!this.
|
|
320
|
-
if (next !== this.
|
|
321
|
-
this.
|
|
415
|
+
const next = !!this.EntityViewerRef && !this.EntityViewerRef.ActiveViewTypeHasOwnExport;
|
|
416
|
+
if (next !== this.ShowFallbackExportButton) {
|
|
417
|
+
this.ShowFallbackExportButton = next;
|
|
322
418
|
this.cdr.detectChanges();
|
|
323
419
|
}
|
|
324
420
|
}
|
|
@@ -327,21 +423,21 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
327
423
|
* FULL result set via the entity-viewer's capped, filter/sort-aware fetch (same path the grid uses,
|
|
328
424
|
* so it's bounded and warns past the cap) and writes an Excel file.
|
|
329
425
|
*/
|
|
330
|
-
async
|
|
426
|
+
async OnExport() {
|
|
331
427
|
// Never fail silently — a "nothing happens" click is impossible to diagnose. Surface the
|
|
332
428
|
// reason both in the UI and the console.
|
|
333
|
-
if (!this.
|
|
429
|
+
if (!this.EntityInfo || !this.EntityViewerRef) {
|
|
334
430
|
console.error('[ViewResource] Export: viewer not ready', {
|
|
335
|
-
hasEntity: !!this.
|
|
431
|
+
hasEntity: !!this.EntityInfo, hasViewer: !!this.EntityViewerRef
|
|
336
432
|
});
|
|
337
433
|
this.showNotification('Export is not ready yet — try again in a moment.', 'error', 5000);
|
|
338
434
|
return;
|
|
339
435
|
}
|
|
340
|
-
this.
|
|
436
|
+
this.IsExporting = true;
|
|
341
437
|
this.cdr.detectChanges();
|
|
342
438
|
this.showNotification('Preparing your Excel export…', 'info', 2000);
|
|
343
439
|
try {
|
|
344
|
-
const rows = await this.
|
|
440
|
+
const rows = await this.EntityViewerRef.FetchAllRowsForExport();
|
|
345
441
|
if (!rows || rows.length === 0) {
|
|
346
442
|
this.showNotification('Nothing to export — the view returned no records.', 'warning', 5000);
|
|
347
443
|
return;
|
|
@@ -365,31 +461,35 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
365
461
|
console.error('[ViewResource] Export error:', e);
|
|
366
462
|
}
|
|
367
463
|
finally {
|
|
368
|
-
this.
|
|
464
|
+
this.IsExporting = false;
|
|
369
465
|
this.cdr.detectChanges();
|
|
370
466
|
}
|
|
371
467
|
}
|
|
468
|
+
/** @deprecated Use {@link OnExport}. */
|
|
469
|
+
async onExport() {
|
|
470
|
+
return this.OnExport();
|
|
471
|
+
}
|
|
372
472
|
/** Columns to export — from grid state, else the view's columns, else the entity's real fields. */
|
|
373
473
|
buildExportColumns() {
|
|
374
|
-
if (!this.
|
|
474
|
+
if (!this.EntityInfo)
|
|
375
475
|
return [];
|
|
376
|
-
if (this.
|
|
377
|
-
return this.
|
|
476
|
+
if (this.GridState?.columnSettings && this.GridState.columnSettings.length > 0) {
|
|
477
|
+
return this.GridState.columnSettings
|
|
378
478
|
.filter(col => col.hidden !== true)
|
|
379
479
|
.map(col => ({ name: col.Name, displayName: col.DisplayName || col.Name }));
|
|
380
480
|
}
|
|
381
|
-
if (this.
|
|
382
|
-
return this.
|
|
481
|
+
if (this.ViewEntity?.Columns) {
|
|
482
|
+
return this.ViewEntity.Columns
|
|
383
483
|
.filter(col => !col.hidden)
|
|
384
484
|
.map(col => ({ name: col.Name, displayName: col.DisplayName || col.Name }));
|
|
385
485
|
}
|
|
386
|
-
return this.
|
|
486
|
+
return this.EntityInfo.Fields
|
|
387
487
|
.filter(f => !f.IsVirtual)
|
|
388
488
|
.map(f => ({ name: f.Name, displayName: f.DisplayNameOrName }));
|
|
389
489
|
}
|
|
390
490
|
buildExportFileName() {
|
|
391
|
-
const viewName = this.
|
|
392
|
-
return `${this.
|
|
491
|
+
const viewName = this.ViewEntity?.Name || 'Data';
|
|
492
|
+
return `${this.EntityInfo.Name}_${viewName}_${new Date().toISOString().split('T')[0]}`;
|
|
393
493
|
}
|
|
394
494
|
/**
|
|
395
495
|
* Get display name for the resource tab
|
|
@@ -416,38 +516,50 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
416
516
|
/**
|
|
417
517
|
* Handle creating a new record for the current entity
|
|
418
518
|
*/
|
|
419
|
-
|
|
420
|
-
if (!this.
|
|
519
|
+
OnCreateNewRecord() {
|
|
520
|
+
if (!this.EntityInfo)
|
|
421
521
|
return;
|
|
422
522
|
// Use NavigationService to open a new record form
|
|
423
|
-
this.navigationService.OpenNewEntityRecord(this.
|
|
523
|
+
this.navigationService.OpenNewEntityRecord(this.EntityInfo.Name);
|
|
524
|
+
}
|
|
525
|
+
/** @deprecated Use {@link OnCreateNewRecord}. */
|
|
526
|
+
onCreateNewRecord() {
|
|
527
|
+
return this.OnCreateNewRecord();
|
|
424
528
|
}
|
|
425
529
|
/**
|
|
426
530
|
* Open the Save-as-List dialog. Only meaningful for saved views (a
|
|
427
531
|
* ViewID is required to materialize). Dynamic views fall back to a
|
|
428
532
|
* user-visible notification rather than silently doing nothing.
|
|
429
533
|
*/
|
|
430
|
-
|
|
431
|
-
if (!this.
|
|
534
|
+
OnSaveAsList() {
|
|
535
|
+
if (!this.ViewEntity?.ID) {
|
|
432
536
|
this.showNotification('Save as List requires a saved View. Save this view first.', 'info', 4000);
|
|
433
537
|
return;
|
|
434
538
|
}
|
|
435
539
|
// Best-effort record-count hint — the entity-viewer exposes the
|
|
436
540
|
// grid's row count on its gridState; we surface it so the dialog's
|
|
437
541
|
// confirm button can say "Save List (476 records)".
|
|
438
|
-
this.
|
|
439
|
-
this.
|
|
542
|
+
this.SaveAsListRecordCount = this.EntityViewerRef?.TotalRecordCount ?? null;
|
|
543
|
+
this.SaveAsListDialogVisible = true;
|
|
440
544
|
this.cdr.detectChanges();
|
|
441
545
|
}
|
|
442
|
-
|
|
443
|
-
|
|
546
|
+
/** @deprecated Use {@link OnSaveAsList}. */
|
|
547
|
+
onSaveAsList() {
|
|
548
|
+
return this.OnSaveAsList();
|
|
549
|
+
}
|
|
550
|
+
OnSaveAsListCancelled() {
|
|
551
|
+
this.SaveAsListDialogVisible = false;
|
|
444
552
|
this.cdr.detectChanges();
|
|
445
553
|
}
|
|
446
|
-
|
|
447
|
-
|
|
554
|
+
/** @deprecated Use {@link OnSaveAsListCancelled}. */
|
|
555
|
+
onSaveAsListCancelled() {
|
|
556
|
+
return this.OnSaveAsListCancelled();
|
|
557
|
+
}
|
|
558
|
+
async OnSaveAsListSubmit(payload) {
|
|
559
|
+
const viewId = this.ViewEntity?.ID;
|
|
448
560
|
if (!viewId)
|
|
449
561
|
return;
|
|
450
|
-
this.
|
|
562
|
+
this.IsSavingAsList = true;
|
|
451
563
|
this.cdr.detectChanges();
|
|
452
564
|
try {
|
|
453
565
|
const provider = this.ProviderToUse;
|
|
@@ -461,7 +573,7 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
461
573
|
RefreshMode: payload.RefreshMode,
|
|
462
574
|
});
|
|
463
575
|
if (result.Success && result.CreatedListId) {
|
|
464
|
-
this.
|
|
576
|
+
this.SaveAsListDialogVisible = false;
|
|
465
577
|
this.showNotification(`List created with ${result.Counts?.Added ?? 0} record(s).`, 'success', 3000);
|
|
466
578
|
this.navigationService.OpenEntityRecord('MJ: Lists', CompositeKey.FromID(result.CreatedListId));
|
|
467
579
|
}
|
|
@@ -474,10 +586,14 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
474
586
|
this.showNotification(`Save failed: ${message}`, 'error', 5000);
|
|
475
587
|
}
|
|
476
588
|
finally {
|
|
477
|
-
this.
|
|
589
|
+
this.IsSavingAsList = false;
|
|
478
590
|
this.cdr.detectChanges();
|
|
479
591
|
}
|
|
480
592
|
}
|
|
593
|
+
/** @deprecated Use {@link OnSaveAsListSubmit}. */
|
|
594
|
+
async onSaveAsListSubmit(payload) {
|
|
595
|
+
return this.OnSaveAsListSubmit(payload);
|
|
596
|
+
}
|
|
481
597
|
/**
|
|
482
598
|
* Show a notification to the user
|
|
483
599
|
*/
|
|
@@ -498,8 +614,8 @@ let UserViewResource = class UserViewResource extends BaseResourceComponent {
|
|
|
498
614
|
i0.ɵɵviewQuery(_c0, 7)(_c1, 5);
|
|
499
615
|
} if (rf & 2) {
|
|
500
616
|
let _t;
|
|
501
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
502
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
617
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.ContainerElement = _t.first);
|
|
618
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.EntityViewerRef = _t.first);
|
|
503
619
|
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 1, consts: [["container", ""], ["entityViewer", ""], [1, "view-resource-container"], [1, "view-loading-state"], [1, "view-error-state"], ["text", "Loading view...", "size", "large"], [1, "fas", "fa-exclamation-triangle"], [1, "view-header"], [1, "header-left"], [1, "view-title"], [1, "view-description"], [1, "header-right"], [1, "action-button", "create-button", 3, "click", "title"], [1, "fa-solid", "fa-plus"], ["title", "Materialize these results as a static List", 1, "action-button", "save-as-list-button", 3, "disabled"], ["title", "Export", 1, "action-button", "export-button", 3, "disabled"], [3, "RecordOpened", "OpenRelatedRecordRequested", "AfterViewTypeChange", "DataLoaded", "Entity", "Provider", "ViewEntity", "GridState", "AutoSaveView"], [3, "Save", "Cancel", "Provider", "Visible", "ViewId", "ViewName", "RecordCount"], ["title", "Materialize these results as a static List", 1, "action-button", "save-as-list-button", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-floppy-disk"], ["title", "Export", 1, "action-button", "export-button", 3, "click", "disabled"], [1, "fa-solid", "fa-file-excel"]], template: function UserViewResource_Template(rf, ctx) { if (rf & 1) {
|
|
504
620
|
i0.ɵɵelementStart(0, "div", 2, 0);
|
|
505
621
|
i0.ɵɵconditionalCreate(2, UserViewResource_Conditional_2_Template, 2, 0, "div", 3)(3, UserViewResource_Conditional_3_Template, 4, 1, "div", 4)(4, UserViewResource_Conditional_4_Template, 15, 16);
|
|
@@ -516,10 +632,10 @@ export { UserViewResource };
|
|
|
516
632
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserViewResource, [{
|
|
517
633
|
type: Component,
|
|
518
634
|
args: [{ standalone: false, selector: 'mj-userview-resource', template: "<div #container class=\"view-resource-container\">\n @if (isLoading) {\n <div class=\"view-loading-state\">\n <mj-loading text=\"Loading view...\" size=\"large\"></mj-loading>\n </div>\n } @else if (errorMessage) {\n <div class=\"view-error-state\">\n <i class=\"fas fa-exclamation-triangle\"></i>\n <p>{{ errorMessage }}</p>\n </div>\n } @else if (entityInfo) {\n <!-- Header with title and action buttons -->\n <div class=\"view-header\">\n <div class=\"header-left\">\n <h2 class=\"view-title\">{{ viewEntity?.Name || entityInfo.Name }}</h2>\n @if (viewEntity?.Description) {\n <p class=\"view-description\">{{ viewEntity!.Description }}</p>\n }\n </div>\n <div class=\"header-right\">\n <!-- Create New Record Button -->\n <button\n class=\"action-button create-button\"\n (click)=\"onCreateNewRecord()\"\n title=\"Create new {{ entityInfo.Name }} record\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Record</span>\n </button>\n\n <!-- Save as List Button \u2014 only meaningful for saved (non-dynamic) views. -->\n @if (viewEntity?.ID) {\n <button\n class=\"action-button save-as-list-button\"\n (click)=\"onSaveAsList()\"\n [disabled]=\"isSavingAsList\"\n title=\"Materialize these results as a static List\">\n @if (isSavingAsList) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-floppy-disk\"></i>\n }\n <span>{{ isSavingAsList ? 'Saving...' : 'Save as List' }}</span>\n </button>\n }\n <!-- Fallback Export button. Shown ONLY for view types that lack their own export UI\n (Cards / Map / Timeline). The Grid renderer has its own in-toolbar Export (full\n result set + format/sampling dialog), so this is suppressed there to avoid a\n duplicate/confusing second button. -->\n @if (showFallbackExportButton) {\n <button\n class=\"action-button export-button\"\n (click)=\"onExport()\"\n [disabled]=\"isExporting\"\n title=\"Export\">\n @if (isExporting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-file-excel\"></i>\n }\n <span>{{ isExporting ? 'Exporting...' : 'Export' }}</span>\n </button>\n }\n </div>\n </div>\n\n <!-- Entity Viewer -->\n <mj-entity-viewer\n #entityViewer\n [Entity]=\"entityInfo\"\n [Provider]=\"Provider\"\n [ViewEntity]=\"viewEntity\"\n [GridState]=\"gridState\"\n [AutoSaveView]=\"true\"\n (RecordOpened)=\"onRecordOpened($any($event))\"\n (OpenRelatedRecordRequested)=\"onOpenRelatedRecord($event)\"\n (AfterViewTypeChange)=\"onViewTypeChanged()\"\n (DataLoaded)=\"onDataLoaded()\">\n </mj-entity-viewer>\n\n <!-- Save-as-List dialog -->\n <mj-save-view-as-list-dialog\n [Provider]=\"ProviderToUse\"\n [Visible]=\"saveAsListDialogVisible\"\n [ViewId]=\"viewEntity?.ID ?? null\"\n [ViewName]=\"viewEntity?.Name ?? null\"\n [RecordCount]=\"saveAsListRecordCount\"\n (Save)=\"onSaveAsListSubmit($event)\"\n (Cancel)=\"onSaveAsListCancelled()\">\n </mj-save-view-as-list-dialog>\n }\n</div>\n", styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n .view-resource-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n .view-header {\n padding: 16px 20px 8px 20px;\n flex-shrink: 0;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n gap: 16px;\n }\n .header-left {\n flex: 1;\n min-width: 0;\n }\n .header-right {\n display: flex;\n gap: 8px;\n flex-shrink: 0;\n }\n .view-title {\n margin: 0 0 4px 0;\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--text-primary, #1a1a1a);\n }\n .view-description {\n margin: 0;\n font-size: 0.875rem;\n color: var(--text-secondary, #666);\n }\n .action-button {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n font-size: 0.875rem;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n white-space: nowrap;\n }\n .action-button:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-default);\n }\n .action-button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .action-button i {\n font-size: 0.875rem;\n }\n .create-button {\n background: var(--mj-brand-primary);\n color: white;\n border-color: var(--mj-brand-primary);\n }\n .create-button:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n border-color: var(--mj-brand-primary-hover);\n }\n .export-button:hover:not(:disabled) {\n color: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n }\n .view-loading-state,\n .view-error-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 16px;\n }\n .view-error-state {\n color: var(--danger-color, #dc3545);\n }\n .view-error-state i {\n font-size: 2rem;\n }\n .view-error-state p {\n margin: 0;\n font-size: 1rem;\n }\n mj-entity-viewer {\n flex: 1;\n min-height: 0;\n }\n "] }]
|
|
519
|
-
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.ExportService }], {
|
|
635
|
+
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.ExportService }], { ContainerElement: [{
|
|
520
636
|
type: ViewChild,
|
|
521
637
|
args: ['container', { static: true }]
|
|
522
|
-
}],
|
|
638
|
+
}], EntityViewerRef: [{
|
|
523
639
|
type: ViewChild,
|
|
524
640
|
args: ['entityViewer']
|
|
525
641
|
}] }); })();
|