@memberjunction/ng-dashboards 5.24.0 → 5.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +233 -493
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
- package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +7 -7
- package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +43 -6
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1135 -864
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +4 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +1 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +14 -15
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.d.ts +4 -4
- package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
- package/dist/AI/components/models/model-management.component.js +5 -5
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
- package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +5 -5
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
- package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
- package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +9 -11
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +44 -8
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +648 -384
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +2 -0
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.d.ts +4 -5
- package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +11 -12
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.d.ts +2 -3
- package/dist/Actions/components/code-management.component.d.ts.map +1 -1
- package/dist/Actions/components/code-management.component.js +4 -6
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.d.ts +2 -3
- package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +4 -6
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
- package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +10 -11
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
- package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
- package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +4 -6
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.d.ts +2 -3
- package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +4 -6
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
- package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
- package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +1 -0
- package/dist/Communication/communication-dashboard.component.js.map +1 -1
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +4 -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 +4 -1
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +4 -1
- package/dist/Communication/communication-providers-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 +4 -1
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +4 -1
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
- package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
- package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +1 -0
- package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
- package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +453 -420
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
- package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
- package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
- package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
- package/dist/Home/home-dashboard.component.d.ts +4 -4
- package/dist/Home/home-dashboard.component.d.ts.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -5
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +2 -0
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +1 -0
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +2 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +2 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +2 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +4 -3
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +4 -3
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -3
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +220 -138
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +4 -3
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/index.d.ts +0 -1
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +0 -1
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +2 -0
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +2 -0
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +2 -0
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
- package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +25 -107
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
- package/dist/MCP/mcp-resource.component.js +1 -0
- package/dist/MCP/mcp-resource.component.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
- package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
- package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
- package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
- package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review-resource.component.js +2 -0
- package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
- package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-runs-resource.component.js +2 -0
- package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.d.ts +2 -1
- package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +1 -0
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/diff-resource.component.js +9 -10
- package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/graph-resource.component.js +2 -0
- package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
- package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/labels-resource.component.js +10 -11
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
- package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +2 -0
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +19 -19
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +4 -5
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +19 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +8 -0
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +2 -1
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +7 -3
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +1 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +49 -48
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -166
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -991
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
2
|
import { CompositeKey } from '@memberjunction/core';
|
|
3
|
-
import { BaseResourceComponent
|
|
3
|
+
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
4
4
|
import { ResourceData } from '@memberjunction/core-entities';
|
|
5
5
|
import { DataExplorerDashboardComponent } from './data-explorer-dashboard.component';
|
|
6
6
|
import { DataExplorerFilter } from './models/explorer-state.interface';
|
|
@@ -12,17 +12,24 @@ import * as i0 from "@angular/core";
|
|
|
12
12
|
*/
|
|
13
13
|
export declare class DataExplorerResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {
|
|
14
14
|
private cdr;
|
|
15
|
-
private navigationService;
|
|
16
15
|
entityFilter: DataExplorerFilter | null;
|
|
17
16
|
contextName: string | null;
|
|
18
17
|
contextIcon: string | null;
|
|
18
|
+
/** Initial query params from the URL, forwarded to the dashboard */
|
|
19
|
+
initialQueryParams: Record<string, string>;
|
|
19
20
|
dataExplorer: DataExplorerDashboardComponent;
|
|
20
21
|
private readonly _destroy$;
|
|
21
22
|
private _dataLoaded;
|
|
22
|
-
constructor(cdr: ChangeDetectorRef
|
|
23
|
+
constructor(cdr: ChangeDetectorRef);
|
|
23
24
|
set Data(value: ResourceData);
|
|
24
25
|
get Data(): ResourceData;
|
|
25
26
|
ngOnInit(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Forward query param changes from the framework to the inner dashboard.
|
|
29
|
+
* The shell delivers params here (on the resource wrapper), but the dashboard
|
|
30
|
+
* needs them for deep linking (entity, viewId, filter, view mode, map mode).
|
|
31
|
+
*/
|
|
32
|
+
protected OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void;
|
|
26
33
|
ngOnDestroy(): void;
|
|
27
34
|
GetResourceDisplayName(data: ResourceData): Promise<string>;
|
|
28
35
|
GetResourceIconClass(data: ResourceData): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-explorer-resource.component.d.ts","sourceRoot":"","sources":["../../src/DataExplorer/data-explorer-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAwD,MAAM,eAAe,CAAC;AAGtI,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"data-explorer-resource.component.d.ts","sourceRoot":"","sources":["../../src/DataExplorer/data-explorer-resource.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAwD,MAAM,eAAe,CAAC;AAGtI,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAsC,MAAM,2BAA2B,CAAC;AACtG,OAAO,EAAE,YAAY,EAAqB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;;AACvE;;;;GAIG;AACH,qBA8Ba,6BAA8B,SAAQ,qBAAsB,YAAW,MAAM,EAAE,SAAS;IAqB7F,OAAO,CAAC,GAAG;IAhBR,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC/C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,oEAAoE;IAC7D,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAEZ,YAAY,EAAG,8BAA8B,CAAC;IAEzF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,WAAW,CAAS;gBAOhB,GAAG,EAAE,iBAAiB;IAQlC,IAAa,IAAI,CAAC,KAAK,EAAE,YAAY,EAWpC;IAED,IAAa,IAAI,IAAI,YAAY,CAEhC;IAMD,QAAQ,IAAI,IAAI;IAKhB;;;;OAIG;cACgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IAM9G,WAAW,IAAI,IAAI;IAUb,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ/D,OAAO,CAAC,iBAAiB;IAoDlB,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAMjF,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;yCAlJtC,6BAA6B;2CAA7B,6BAA6B;CAqJzC"}
|
|
@@ -10,8 +10,7 @@ import { RegisterClass } from '@memberjunction/global';
|
|
|
10
10
|
import { BaseResourceComponent } from '@memberjunction/ng-shared';
|
|
11
11
|
import { DataExplorerDashboardComponent } from './data-explorer-dashboard.component';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "
|
|
14
|
-
import * as i2 from "./data-explorer-dashboard.component";
|
|
13
|
+
import * as i1 from "./data-explorer-dashboard.component";
|
|
15
14
|
/**
|
|
16
15
|
* Resource component for the Data Explorer.
|
|
17
16
|
* Wraps DataExplorerDashboardComponent as a BaseResourceComponent for use
|
|
@@ -19,23 +18,23 @@ import * as i2 from "./data-explorer-dashboard.component";
|
|
|
19
18
|
*/
|
|
20
19
|
let DataExplorerResourceComponent = class DataExplorerResourceComponent extends BaseResourceComponent {
|
|
21
20
|
cdr;
|
|
22
|
-
navigationService;
|
|
23
21
|
// ========================================
|
|
24
22
|
// State
|
|
25
23
|
// ========================================
|
|
26
24
|
entityFilter = null;
|
|
27
25
|
contextName = null;
|
|
28
26
|
contextIcon = null;
|
|
27
|
+
/** Initial query params from the URL, forwarded to the dashboard */
|
|
28
|
+
initialQueryParams = {};
|
|
29
29
|
dataExplorer;
|
|
30
30
|
_destroy$ = new Subject();
|
|
31
31
|
_dataLoaded = false;
|
|
32
32
|
// ========================================
|
|
33
33
|
// Constructor
|
|
34
34
|
// ========================================
|
|
35
|
-
constructor(cdr
|
|
35
|
+
constructor(cdr) {
|
|
36
36
|
super();
|
|
37
37
|
this.cdr = cdr;
|
|
38
|
-
this.navigationService = navigationService;
|
|
39
38
|
}
|
|
40
39
|
// ========================================
|
|
41
40
|
// Data Property Override
|
|
@@ -57,9 +56,21 @@ let DataExplorerResourceComponent = class DataExplorerResourceComponent extends
|
|
|
57
56
|
// Lifecycle
|
|
58
57
|
// ========================================
|
|
59
58
|
ngOnInit() {
|
|
59
|
+
super.ngOnInit();
|
|
60
60
|
// Configuration loaded via Data setter
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Forward query param changes from the framework to the inner dashboard.
|
|
64
|
+
* The shell delivers params here (on the resource wrapper), but the dashboard
|
|
65
|
+
* needs them for deep linking (entity, viewId, filter, view mode, map mode).
|
|
66
|
+
*/
|
|
67
|
+
OnQueryParamsChanged(params, source) {
|
|
68
|
+
if (this.dataExplorer) {
|
|
69
|
+
this.dataExplorer.HandleQueryParamsChanged(params, source);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
62
72
|
ngOnDestroy() {
|
|
73
|
+
super.ngOnDestroy();
|
|
63
74
|
this._destroy$.next();
|
|
64
75
|
this._destroy$.complete();
|
|
65
76
|
}
|
|
@@ -86,6 +97,17 @@ let DataExplorerResourceComponent = class DataExplorerResourceComponent extends
|
|
|
86
97
|
this.entityFilter = config['entityFilter'] || null;
|
|
87
98
|
this.contextName = config['appName'] || null;
|
|
88
99
|
this.contextIcon = config['appIcon'] || null;
|
|
100
|
+
// Build initial query params: start with workspace-saved params, then let
|
|
101
|
+
// browser URL params override. The URL is the source of truth for user intent —
|
|
102
|
+
// if the user navigates to a URL with specific params, those should take priority
|
|
103
|
+
// over potentially stale workspace state from a prior session.
|
|
104
|
+
const workspaceParams = config['queryParams'] || {};
|
|
105
|
+
const browserParams = new URLSearchParams(window.location.search);
|
|
106
|
+
const merged = { ...workspaceParams };
|
|
107
|
+
browserParams.forEach((value, key) => {
|
|
108
|
+
merged[key] = value;
|
|
109
|
+
});
|
|
110
|
+
this.initialQueryParams = merged;
|
|
89
111
|
this.cdr.detectChanges();
|
|
90
112
|
// Setup LoadCompleteEvent after view initializes
|
|
91
113
|
setTimeout(() => {
|
|
@@ -117,20 +139,20 @@ let DataExplorerResourceComponent = class DataExplorerResourceComponent extends
|
|
|
117
139
|
onDisplayNameChanged(name) {
|
|
118
140
|
this.NotifyDisplayNameChanged(name);
|
|
119
141
|
}
|
|
120
|
-
static ɵfac = function DataExplorerResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataExplorerResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)
|
|
142
|
+
static ɵfac = function DataExplorerResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataExplorerResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
121
143
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataExplorerResourceComponent, selectors: [["mj-data-explorer-resource"]], viewQuery: function DataExplorerResourceComponent_Query(rf, ctx) { if (rf & 1) {
|
|
122
144
|
i0.ɵɵviewQuery(DataExplorerDashboardComponent, 5);
|
|
123
145
|
} if (rf & 2) {
|
|
124
146
|
let _t;
|
|
125
147
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataExplorer = _t.first);
|
|
126
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars:
|
|
148
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 5, consts: [[1, "data-explorer-resource-container"], [3, "OpenEntityRecord", "DisplayNameChanged", "ParentTabId", "entityFilter", "contextName", "contextIcon", "initialQueryParams"]], template: function DataExplorerResourceComponent_Template(rf, ctx) { if (rf & 1) {
|
|
127
149
|
i0.ɵɵelementStart(0, "div", 0)(1, "mj-data-explorer-dashboard", 1);
|
|
128
150
|
i0.ɵɵlistener("OpenEntityRecord", function DataExplorerResourceComponent_Template_mj_data_explorer_dashboard_OpenEntityRecord_1_listener($event) { return ctx.onOpenEntityRecord($event); })("DisplayNameChanged", function DataExplorerResourceComponent_Template_mj_data_explorer_dashboard_DisplayNameChanged_1_listener($event) { return ctx.onDisplayNameChanged($event); });
|
|
129
151
|
i0.ɵɵelementEnd()();
|
|
130
152
|
} if (rf & 2) {
|
|
131
153
|
i0.ɵɵadvance();
|
|
132
|
-
i0.ɵɵproperty("entityFilter", ctx.entityFilter)("contextName", ctx.contextName)("contextIcon", ctx.contextIcon);
|
|
133
|
-
} }, dependencies: [
|
|
154
|
+
i0.ɵɵproperty("ParentTabId", ctx.getTabId())("entityFilter", ctx.entityFilter)("contextName", ctx.contextName)("contextIcon", ctx.contextIcon)("initialQueryParams", ctx.initialQueryParams);
|
|
155
|
+
} }, dependencies: [i1.DataExplorerDashboardComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n }\n .data-explorer-resource-container[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n }"], changeDetection: 0 });
|
|
134
156
|
};
|
|
135
157
|
DataExplorerResourceComponent = __decorate([
|
|
136
158
|
RegisterClass(BaseResourceComponent, 'DataExplorerResource')
|
|
@@ -141,17 +163,19 @@ export { DataExplorerResourceComponent };
|
|
|
141
163
|
args: [{ standalone: false, selector: 'mj-data-explorer-resource', template: `
|
|
142
164
|
<div class="data-explorer-resource-container">
|
|
143
165
|
<mj-data-explorer-dashboard
|
|
166
|
+
[ParentTabId]="getTabId()"
|
|
144
167
|
[entityFilter]="entityFilter"
|
|
145
168
|
[contextName]="contextName"
|
|
146
169
|
[contextIcon]="contextIcon"
|
|
170
|
+
[initialQueryParams]="initialQueryParams"
|
|
147
171
|
(OpenEntityRecord)="onOpenEntityRecord($event)"
|
|
148
172
|
(DisplayNameChanged)="onDisplayNameChanged($event)">
|
|
149
173
|
</mj-data-explorer-dashboard>
|
|
150
174
|
</div>
|
|
151
175
|
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n .data-explorer-resource-container {\n width: 100%;\n height: 100%;\n }\n "] }]
|
|
152
|
-
}], () => [{ type: i0.ChangeDetectorRef }
|
|
176
|
+
}], () => [{ type: i0.ChangeDetectorRef }], { dataExplorer: [{
|
|
153
177
|
type: ViewChild,
|
|
154
178
|
args: [DataExplorerDashboardComponent]
|
|
155
179
|
}] }); })();
|
|
156
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataExplorerResourceComponent, { className: "DataExplorerResourceComponent", filePath: "src/DataExplorer/data-explorer-resource.component.ts", lineNumber:
|
|
180
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataExplorerResourceComponent, { className: "DataExplorerResourceComponent", filePath: "src/DataExplorer/data-explorer-resource.component.ts", lineNumber: 44 }); })();
|
|
157
181
|
//# sourceMappingURL=data-explorer-resource.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-explorer-resource.component.js","sourceRoot":"","sources":["../../src/DataExplorer/data-explorer-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass } from '@memberjunction/global';\nimport { CompositeKey } from '@memberjunction/core';\nimport { BaseResourceComponent, NavigationService, DashboardConfig } from '@memberjunction/ng-shared';\nimport { ResourceData, MJDashboardEntity } from '@memberjunction/core-entities';\nimport { DataExplorerDashboardComponent } from './data-explorer-dashboard.component';\nimport { DataExplorerFilter } from './models/explorer-state.interface';\n/**\n * Resource component for the Data Explorer.\n * Wraps DataExplorerDashboardComponent as a BaseResourceComponent for use\n * in application nav items with ResourceType: \"Custom\".\n */\n@RegisterClass(BaseResourceComponent, 'DataExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-data-explorer-resource',\n template: `\n <div class=\"data-explorer-resource-container\">\n <mj-data-explorer-dashboard\n [entityFilter]=\"entityFilter\"\n [contextName]=\"contextName\"\n [contextIcon]=\"contextIcon\"\n (OpenEntityRecord)=\"onOpenEntityRecord($event)\"\n (DisplayNameChanged)=\"onDisplayNameChanged($event)\">\n </mj-data-explorer-dashboard>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n .data-explorer-resource-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataExplorerResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n // ========================================\n // State\n // ========================================\n\n public entityFilter: DataExplorerFilter | null = null;\n public contextName: string | null = null;\n public contextIcon: string | null = null;\n\n @ViewChild(DataExplorerDashboardComponent) dataExplorer!: DataExplorerDashboardComponent;\n\n private readonly _destroy$ = new Subject<void>();\n private _dataLoaded = false;\n\n // ========================================\n // Constructor\n // ========================================\n\n constructor(\n private cdr: ChangeDetectorRef,\n private navigationService: NavigationService\n ) {\n super();\n }\n\n // ========================================\n // Data Property Override\n // ========================================\n\n override set Data(value: ResourceData) {\n const previousConfig = JSON.stringify(super.Data?.Configuration || {});\n super.Data = value;\n\n const newConfig = JSON.stringify(value?.Configuration || {});\n\n // Load on first set, or when the configuration has changed\n if (!this._dataLoaded || previousConfig !== newConfig) {\n this._dataLoaded = true;\n this.loadConfiguration();\n }\n }\n\n override get Data(): ResourceData {\n return super.Data;\n }\n\n // ========================================\n // Lifecycle\n // ========================================\n\n ngOnInit(): void {\n // Configuration loaded via Data setter\n }\n\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n // ========================================\n // BaseResourceComponent Implementation\n // ========================================\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return data.Name || 'Data';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-table-cells';\n }\n\n // ========================================\n // Private Methods\n // ========================================\n\n private loadConfiguration(): void {\n const data = this.Data;\n if (!data) {\n this.NotifyLoadComplete();\n return;\n }\n\n const config = data.Configuration || {};\n\n // Extract configuration options\n this.entityFilter = config['entityFilter'] as DataExplorerFilter || null;\n this.contextName = config['appName'] as string || null;\n this.contextIcon = config['appIcon'] as string || null;\n\n this.cdr.detectChanges();\n\n // Setup LoadCompleteEvent after view initializes\n setTimeout(() => {\n if (this.dataExplorer) {\n this.dataExplorer.LoadCompleteEvent = () => {\n this.NotifyLoadComplete();\n };\n\n // Initialize with minimal config (no database dashboard)\n const dashboardConfig: DashboardConfig = {\n dashboard: null as unknown as MJDashboardEntity,\n userState: {}\n };\n this.dataExplorer.Config = dashboardConfig;\n this.dataExplorer.Refresh();\n } else {\n this.NotifyLoadComplete();\n }\n }, 0);\n }\n\n // ========================================\n // Event Handlers\n // ========================================\n\n public onOpenEntityRecord(event: { EntityName: string; RecordPKey: CompositeKey }): void {\n if (event && event.EntityName && event.RecordPKey) {\n this.navigationService.OpenEntityRecord(event.EntityName, event.RecordPKey);\n }\n }\n\n public onDisplayNameChanged(name: string): void {\n this.NotifyDisplayNameChanged(name);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"data-explorer-resource.component.js","sourceRoot":"","sources":["../../src/DataExplorer/data-explorer-resource.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RegisterClass } from '@memberjunction/global';\nimport { CompositeKey } from '@memberjunction/core';\nimport { BaseResourceComponent, NavigationService, DashboardConfig } from '@memberjunction/ng-shared';\nimport { ResourceData, MJDashboardEntity } from '@memberjunction/core-entities';\nimport { DataExplorerDashboardComponent } from './data-explorer-dashboard.component';\nimport { DataExplorerFilter } from './models/explorer-state.interface';\n/**\n * Resource component for the Data Explorer.\n * Wraps DataExplorerDashboardComponent as a BaseResourceComponent for use\n * in application nav items with ResourceType: \"Custom\".\n */\n@RegisterClass(BaseResourceComponent, 'DataExplorerResource')\n@Component({\n standalone: false,\n selector: 'mj-data-explorer-resource',\n template: `\n <div class=\"data-explorer-resource-container\">\n <mj-data-explorer-dashboard\n [ParentTabId]=\"getTabId()\"\n [entityFilter]=\"entityFilter\"\n [contextName]=\"contextName\"\n [contextIcon]=\"contextIcon\"\n [initialQueryParams]=\"initialQueryParams\"\n (OpenEntityRecord)=\"onOpenEntityRecord($event)\"\n (DisplayNameChanged)=\"onDisplayNameChanged($event)\">\n </mj-data-explorer-dashboard>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n .data-explorer-resource-container {\n width: 100%;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataExplorerResourceComponent extends BaseResourceComponent implements OnInit, OnDestroy {\n // ========================================\n // State\n // ========================================\n\n public entityFilter: DataExplorerFilter | null = null;\n public contextName: string | null = null;\n public contextIcon: string | null = null;\n /** Initial query params from the URL, forwarded to the dashboard */\n public initialQueryParams: Record<string, string> = {};\n\n @ViewChild(DataExplorerDashboardComponent) dataExplorer!: DataExplorerDashboardComponent;\n\n private readonly _destroy$ = new Subject<void>();\n private _dataLoaded = false;\n\n // ========================================\n // Constructor\n // ========================================\n\n constructor(\n private cdr: ChangeDetectorRef) {\n super();\n }\n\n // ========================================\n // Data Property Override\n // ========================================\n\n override set Data(value: ResourceData) {\n const previousConfig = JSON.stringify(super.Data?.Configuration || {});\n super.Data = value;\n\n const newConfig = JSON.stringify(value?.Configuration || {});\n\n // Load on first set, or when the configuration has changed\n if (!this._dataLoaded || previousConfig !== newConfig) {\n this._dataLoaded = true;\n this.loadConfiguration();\n }\n }\n\n override get Data(): ResourceData {\n return super.Data;\n }\n\n // ========================================\n // Lifecycle\n // ========================================\n\n ngOnInit(): void {\n super.ngOnInit();\n // Configuration loaded via Data setter\n }\n\n /**\n * Forward query param changes from the framework to the inner dashboard.\n * The shell delivers params here (on the resource wrapper), but the dashboard\n * needs them for deep linking (entity, viewId, filter, view mode, map mode).\n */\n protected override OnQueryParamsChanged(params: Record<string, string>, source: 'popstate' | 'deeplink'): void {\n if (this.dataExplorer) {\n this.dataExplorer.HandleQueryParamsChanged(params, source);\n }\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this._destroy$.next();\n this._destroy$.complete();\n }\n\n // ========================================\n // BaseResourceComponent Implementation\n // ========================================\n\n async GetResourceDisplayName(data: ResourceData): Promise<string> {\n return data.Name || 'Data';\n }\n\n async GetResourceIconClass(data: ResourceData): Promise<string> {\n return 'fa-solid fa-table-cells';\n }\n\n // ========================================\n // Private Methods\n // ========================================\n\n private loadConfiguration(): void {\n const data = this.Data;\n if (!data) {\n this.NotifyLoadComplete();\n return;\n }\n\n const config = data.Configuration || {};\n\n // Extract configuration options\n this.entityFilter = config['entityFilter'] as DataExplorerFilter || null;\n this.contextName = config['appName'] as string || null;\n this.contextIcon = config['appIcon'] as string || null;\n\n // Build initial query params: start with workspace-saved params, then let\n // browser URL params override. The URL is the source of truth for user intent —\n // if the user navigates to a URL with specific params, those should take priority\n // over potentially stale workspace state from a prior session.\n const workspaceParams = (config['queryParams'] as Record<string, string>) || {};\n const browserParams = new URLSearchParams(window.location.search);\n const merged = { ...workspaceParams };\n browserParams.forEach((value, key) => {\n merged[key] = value;\n });\n this.initialQueryParams = merged;\n\n this.cdr.detectChanges();\n\n // Setup LoadCompleteEvent after view initializes\n setTimeout(() => {\n if (this.dataExplorer) {\n this.dataExplorer.LoadCompleteEvent = () => {\n this.NotifyLoadComplete();\n };\n\n // Initialize with minimal config (no database dashboard)\n const dashboardConfig: DashboardConfig = {\n dashboard: null as unknown as MJDashboardEntity,\n userState: {}\n };\n this.dataExplorer.Config = dashboardConfig;\n this.dataExplorer.Refresh();\n } else {\n this.NotifyLoadComplete();\n }\n }, 0);\n }\n\n // ========================================\n // Event Handlers\n // ========================================\n\n public onOpenEntityRecord(event: { EntityName: string; RecordPKey: CompositeKey }): void {\n if (event && event.EntityName && event.RecordPKey) {\n this.navigationService.OpenEntityRecord(event.EntityName, event.RecordPKey);\n }\n }\n\n public onDisplayNameChanged(name: string): void {\n this.NotifyDisplayNameChanged(name);\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EntityInfo } from '@memberjunction/core';
|
|
2
|
+
import { MapRenderMode } from '@memberjunction/ng-map-view';
|
|
2
3
|
/**
|
|
3
4
|
* Filter configuration for the Data Explorer
|
|
4
5
|
* Allows constraining which entities are shown in the explorer
|
|
@@ -45,7 +46,7 @@ export interface BreadcrumbItem {
|
|
|
45
46
|
/**
|
|
46
47
|
* View mode options for the Data Explorer
|
|
47
48
|
*/
|
|
48
|
-
export type DataExplorerViewMode = 'grid' | 'cards' | 'timeline';
|
|
49
|
+
export type DataExplorerViewMode = 'grid' | 'cards' | 'timeline' | 'map';
|
|
49
50
|
/**
|
|
50
51
|
* Timeline orientation options
|
|
51
52
|
*/
|
|
@@ -59,10 +60,14 @@ export interface DataExplorerDeepLink {
|
|
|
59
60
|
entity?: string;
|
|
60
61
|
/** Record ID or composite key string to select */
|
|
61
62
|
record?: string;
|
|
62
|
-
/** Filter text to apply */
|
|
63
|
+
/** Filter text to apply (omitted when viewId is present — view carries its own filter) */
|
|
63
64
|
filter?: string;
|
|
64
|
-
/** View mode to use */
|
|
65
|
+
/** View mode to use (grid/cards/timeline/map) */
|
|
65
66
|
viewMode?: DataExplorerViewMode;
|
|
67
|
+
/** Saved view ID to load (uses view's filters/sort/grid state) */
|
|
68
|
+
viewId?: string;
|
|
69
|
+
/** Map render mode (point/choropleth/heatmap) — only relevant when viewMode is 'map' */
|
|
70
|
+
mapMode?: string;
|
|
66
71
|
}
|
|
67
72
|
/**
|
|
68
73
|
* Per-entity cached state (filters, scroll position, etc.)
|
|
@@ -145,6 +150,10 @@ export interface DataExplorerState {
|
|
|
145
150
|
timelineOrientation: TimelineOrientationType;
|
|
146
151
|
timelineDateFieldName: string | null;
|
|
147
152
|
timelineSortOrder: 'asc' | 'desc';
|
|
153
|
+
mapRenderMode: MapRenderMode;
|
|
154
|
+
mapZoom: number | null;
|
|
155
|
+
mapCenterLat: number | null;
|
|
156
|
+
mapCenterLng: number | null;
|
|
148
157
|
detailPanelOpen: boolean;
|
|
149
158
|
detailPanelWidth: number;
|
|
150
159
|
selectedRecordId: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer-state.interface.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"explorer-state.interface.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const DEFAULT_EXPLORER_STATE = {
|
|
5
5
|
navigationPanelWidth: 280,
|
|
6
|
-
navigationPanelCollapsed:
|
|
6
|
+
navigationPanelCollapsed: true,
|
|
7
7
|
selectedEntityName: null,
|
|
8
8
|
selectedViewId: null,
|
|
9
9
|
viewModified: false,
|
|
@@ -15,6 +15,10 @@ export const DEFAULT_EXPLORER_STATE = {
|
|
|
15
15
|
timelineOrientation: 'vertical',
|
|
16
16
|
timelineDateFieldName: null,
|
|
17
17
|
timelineSortOrder: 'desc',
|
|
18
|
+
mapRenderMode: 'point',
|
|
19
|
+
mapZoom: null,
|
|
20
|
+
mapCenterLat: null,
|
|
21
|
+
mapCenterLng: null,
|
|
18
22
|
detailPanelOpen: false,
|
|
19
23
|
detailPanelWidth: 400,
|
|
20
24
|
selectedRecordId: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explorer-state.interface.js","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"AAwQA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,oBAAoB,EAAE,GAAG;IACzB,wBAAwB,EAAE,KAAK;IAC/B,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,KAAK;IACnB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,MAAM;IAChB,mBAAmB,EAAE,UAAU;IAC/B,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,MAAM;IACzB,eAAe,EAAE,KAAK;IACtB,gBAAgB,EAAE,GAAG;IACrB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,wBAAwB,EAAE,IAAI;IAC9B,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI;IAC7B,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,oBAAoB;IACpB,eAAe,EAAE,KAAK,EAAG,0CAA0C;IACnE,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,EAAE;IACnB,+CAA+C;IAC/C,iBAAiB,EAAE,EAAE;IACrB,oBAAoB,EAAE,KAAK;IAC3B,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IACzF,YAAY,EAAE,KAAK;CACpB,CAAC","sourcesContent":["import { EntityInfo } from '@memberjunction/core';\n\n/**\n * Filter configuration for the Data Explorer\n * Allows constraining which entities are shown in the explorer\n */\nexport interface DataExplorerFilter {\n /**\n * Application ID to filter entities by.\n * Only entities linked via ApplicationEntities will be shown.\n */\n applicationId?: string;\n\n /**\n * Application name for display purposes (breadcrumbs, titles)\n */\n applicationName?: string;\n\n /**\n * Schema names to filter by (e.g., ['dbo', 'sales'])\n * Only entities in these schemas will be shown.\n */\n schemaNames?: string[];\n\n /**\n * Explicit entity names to include (e.g., ['Accounts', 'Contacts'])\n * If provided, only these entities will be shown.\n */\n entityNames?: string[];\n\n /**\n * Whether to show system entities (entities starting with __ or system schemas)\n * Default: false\n */\n includeSystemEntities?: boolean;\n}\n\n/**\n * Breadcrumb item for navigation display\n */\nexport interface BreadcrumbItem {\n label: string;\n type: 'application' | 'entity' | 'record';\n /** For entity type - the entity name */\n entityName?: string;\n /** For record type - the composite key string */\n compositeKeyString?: string;\n /** Icon class for the breadcrumb */\n icon?: string;\n}\n\n/**\n * View mode options for the Data Explorer\n */\nexport type DataExplorerViewMode = 'grid' | 'cards' | 'timeline';\n\n/**\n * Timeline orientation options\n */\nexport type TimelineOrientationType = 'vertical' | 'horizontal';\n\n/**\n * Initial navigation state from URL query parameters.\n * Used for deep linking into the Data Explorer.\n */\nexport interface DataExplorerDeepLink {\n /** Entity name to navigate to */\n entity?: string;\n /** Record ID or composite key string to select */\n record?: string;\n /** Filter text to apply */\n filter?: string;\n /** View mode to use */\n viewMode?: DataExplorerViewMode;\n}\n\n/**\n * Per-entity cached state (filters, scroll position, etc.)\n */\nexport interface EntityCacheEntry {\n filterText: string;\n scrollPosition?: number;\n lastAccessed: number; // timestamp for LRU eviction\n}\n\n/**\n * Recent entity access tracking for home screen\n */\nexport interface RecentEntityAccess {\n entityName: string;\n entityId: string;\n lastAccessed: Date;\n accessCount: number;\n}\n\n/**\n * Favorite entity for home screen (using User Favorites entity)\n */\nexport interface FavoriteEntity {\n userFavoriteId: string; // ID from User Favorites entity\n entityName: string;\n entityId: string;\n}\n\n/**\n * Recent record access for home screen (from User Record Logs)\n */\nexport interface RecentRecordAccess {\n entityName: string;\n entityId: string;\n recordId: string;\n recordName?: string;\n latestAt: Date;\n totalCount: number;\n}\n\n/**\n * Favorite record for home screen (from User Favorites, excluding entity favorites)\n */\nexport interface FavoriteRecord {\n userFavoriteId: string; // ID from User Favorites entity\n entityName: string;\n entityId: string;\n recordId: string;\n recordName?: string;\n}\n\n/**\n * Represents an application group with its entities for the home view.\n * Used by Concept D to organize entities by their first Application membership.\n */\nexport interface AppEntityGroup {\n applicationId: string;\n applicationName: string;\n applicationIcon: string;\n applicationColor: string | null;\n entities: EntityInfo[];\n isExpanded: boolean;\n}\n\n/**\n * Home view mode for the All/Favorites toggle\n */\nexport type HomeViewMode = 'all' | 'favorites';\n\n/**\n * State interface for the Data Explorer dashboard\n */\nexport interface DataExplorerState {\n // Navigation panel\n navigationPanelWidth: number;\n navigationPanelCollapsed: boolean;\n\n // Current context\n selectedEntityName: string | null;\n selectedViewId: string | null;\n\n // View modification tracking\n /** Whether the current view configuration has unsaved changes */\n viewModified: boolean;\n\n // View configuration panel\n /** Whether the view configuration panel is open */\n viewConfigPanelOpen: boolean;\n\n // Smart filter (current entity's filter - also cached in entityCache)\n smartFilterPrompt: string;\n smartFilterEnabled: boolean;\n\n // Per-entity cache for filters and state\n entityCache: Record<string, EntityCacheEntry>;\n\n // View mode\n viewMode: DataExplorerViewMode;\n\n // Timeline configuration (per-entity, but stored here for simplicity)\n timelineOrientation: TimelineOrientationType;\n timelineDateFieldName: string | null;\n timelineSortOrder: 'asc' | 'desc';\n\n // Detail panel\n detailPanelOpen: boolean;\n detailPanelWidth: number;\n selectedRecordId: string | null;\n /** Display name of the currently selected record (for breadcrumbs) */\n selectedRecordName: string | null;\n\n // Section states\n favoritesSectionExpanded: boolean;\n recentSectionExpanded: boolean;\n entitiesSectionExpanded: boolean;\n viewsSectionExpanded: boolean;\n\n // Recent items (legacy - records within current explorer context)\n recentItems: RecentItem[];\n\n // Favorites (legacy - records within current explorer context)\n favorites: FavoriteItem[];\n\n // Home screen state\n /** Whether to show all entities or just DefaultForNewUser entities */\n showAllEntities: boolean;\n /** Recent entity access tracking for home screen */\n recentEntityAccesses: RecentEntityAccess[];\n /** Favorite entities for home screen */\n favoriteEntities: FavoriteEntity[];\n /** Favorite records for home screen (non-entity favorites) */\n favoriteRecords: FavoriteRecord[];\n\n // Concept D: Application Groups + Search-First\n /** Which application group IDs are currently expanded */\n expandedAppGroups: string[];\n /** Whether the right-side quick access panel is open */\n quickAccessPanelOpen: boolean;\n /** Collapse state per section in the quick access panel (key = section id, value = expanded) */\n quickAccessSections: Record<string, boolean>;\n /** Home view mode toggle: show all entities or favorites only */\n homeViewMode: HomeViewMode;\n}\n\nexport interface RecentItem {\n entityName: string;\n /** Serialized CompositeKey using ToConcatenatedString format (Field1|Value1||Field2|Value2) */\n compositeKeyString: string;\n displayName: string;\n timestamp: Date;\n}\n\nexport interface FavoriteItem {\n type: 'record' | 'view' | 'entity';\n entityName?: string;\n /** Serialized CompositeKey using ToConcatenatedString format (Field1|Value1||Field2|Value2) */\n compositeKeyString?: string;\n viewId?: string;\n displayName: string;\n}\n\n/**\n * Field display type for smart rendering in cards\n */\nexport type CardFieldType = 'number' | 'boolean' | 'text' | 'date';\n\n/**\n * Metadata for a field to display in a card\n */\nexport interface CardDisplayField {\n name: string;\n type: CardFieldType;\n label: string;\n}\n\n/**\n * Auto-generated card template based on entity metadata\n */\nexport interface AutoCardTemplate {\n titleField: string;\n subtitleField: string | null;\n descriptionField: string | null;\n /** Display fields with type information for smart rendering */\n displayFields: CardDisplayField[];\n thumbnailField: string | null;\n badgeField: string | null;\n}\n\n/**\n * Default state for the Data Explorer\n */\nexport const DEFAULT_EXPLORER_STATE: DataExplorerState = {\n navigationPanelWidth: 280,\n navigationPanelCollapsed: false,\n selectedEntityName: null,\n selectedViewId: null,\n viewModified: false,\n viewConfigPanelOpen: false,\n smartFilterPrompt: '',\n smartFilterEnabled: true,\n entityCache: {},\n viewMode: 'grid',\n timelineOrientation: 'vertical',\n timelineDateFieldName: null,\n timelineSortOrder: 'desc',\n detailPanelOpen: false,\n detailPanelWidth: 400,\n selectedRecordId: null,\n selectedRecordName: null,\n favoritesSectionExpanded: true,\n recentSectionExpanded: true,\n entitiesSectionExpanded: true,\n viewsSectionExpanded: true,\n recentItems: [],\n favorites: [],\n // Home screen state\n showAllEntities: false, // Default to showing only common entities\n recentEntityAccesses: [],\n favoriteEntities: [],\n favoriteRecords: [],\n // Concept D: Application Groups + Search-First\n expandedAppGroups: [],\n quickAccessPanelOpen: false,\n quickAccessSections: { recentRecords: true, recentEntities: true, favoriteRecords: true },\n homeViewMode: 'all',\n};\n"]}
|
|
1
|
+
{"version":3,"file":"explorer-state.interface.js","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"AAmRA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,oBAAoB,EAAE,GAAG;IACzB,wBAAwB,EAAE,IAAI;IAC9B,kBAAkB,EAAE,IAAI;IACxB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,KAAK;IACnB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,MAAM;IAChB,mBAAmB,EAAE,UAAU;IAC/B,qBAAqB,EAAE,IAAI;IAC3B,iBAAiB,EAAE,MAAM;IACzB,aAAa,EAAE,OAAO;IACtB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,gBAAgB,EAAE,GAAG;IACrB,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,wBAAwB,EAAE,IAAI;IAC9B,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,IAAI;IAC7B,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,oBAAoB;IACpB,eAAe,EAAE,KAAK,EAAG,0CAA0C;IACnE,oBAAoB,EAAE,EAAE;IACxB,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,EAAE;IACnB,+CAA+C;IAC/C,iBAAiB,EAAE,EAAE;IACrB,oBAAoB,EAAE,KAAK;IAC3B,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;IACzF,YAAY,EAAE,KAAK;CACpB,CAAC","sourcesContent":["import { EntityInfo } from '@memberjunction/core';\nimport { MapRenderMode } from '@memberjunction/ng-map-view';\n\n/**\n * Filter configuration for the Data Explorer\n * Allows constraining which entities are shown in the explorer\n */\nexport interface DataExplorerFilter {\n /**\n * Application ID to filter entities by.\n * Only entities linked via ApplicationEntities will be shown.\n */\n applicationId?: string;\n\n /**\n * Application name for display purposes (breadcrumbs, titles)\n */\n applicationName?: string;\n\n /**\n * Schema names to filter by (e.g., ['dbo', 'sales'])\n * Only entities in these schemas will be shown.\n */\n schemaNames?: string[];\n\n /**\n * Explicit entity names to include (e.g., ['Accounts', 'Contacts'])\n * If provided, only these entities will be shown.\n */\n entityNames?: string[];\n\n /**\n * Whether to show system entities (entities starting with __ or system schemas)\n * Default: false\n */\n includeSystemEntities?: boolean;\n}\n\n/**\n * Breadcrumb item for navigation display\n */\nexport interface BreadcrumbItem {\n label: string;\n type: 'application' | 'entity' | 'record';\n /** For entity type - the entity name */\n entityName?: string;\n /** For record type - the composite key string */\n compositeKeyString?: string;\n /** Icon class for the breadcrumb */\n icon?: string;\n}\n\n/**\n * View mode options for the Data Explorer\n */\nexport type DataExplorerViewMode = 'grid' | 'cards' | 'timeline' | 'map';\n\n/**\n * Timeline orientation options\n */\nexport type TimelineOrientationType = 'vertical' | 'horizontal';\n\n/**\n * Initial navigation state from URL query parameters.\n * Used for deep linking into the Data Explorer.\n */\nexport interface DataExplorerDeepLink {\n /** Entity name to navigate to */\n entity?: string;\n /** Record ID or composite key string to select */\n record?: string;\n /** Filter text to apply (omitted when viewId is present — view carries its own filter) */\n filter?: string;\n /** View mode to use (grid/cards/timeline/map) */\n viewMode?: DataExplorerViewMode;\n /** Saved view ID to load (uses view's filters/sort/grid state) */\n viewId?: string;\n /** Map render mode (point/choropleth/heatmap) — only relevant when viewMode is 'map' */\n mapMode?: string;\n}\n\n/**\n * Per-entity cached state (filters, scroll position, etc.)\n */\nexport interface EntityCacheEntry {\n filterText: string;\n scrollPosition?: number;\n lastAccessed: number; // timestamp for LRU eviction\n}\n\n/**\n * Recent entity access tracking for home screen\n */\nexport interface RecentEntityAccess {\n entityName: string;\n entityId: string;\n lastAccessed: Date;\n accessCount: number;\n}\n\n/**\n * Favorite entity for home screen (using User Favorites entity)\n */\nexport interface FavoriteEntity {\n userFavoriteId: string; // ID from User Favorites entity\n entityName: string;\n entityId: string;\n}\n\n/**\n * Recent record access for home screen (from User Record Logs)\n */\nexport interface RecentRecordAccess {\n entityName: string;\n entityId: string;\n recordId: string;\n recordName?: string;\n latestAt: Date;\n totalCount: number;\n}\n\n/**\n * Favorite record for home screen (from User Favorites, excluding entity favorites)\n */\nexport interface FavoriteRecord {\n userFavoriteId: string; // ID from User Favorites entity\n entityName: string;\n entityId: string;\n recordId: string;\n recordName?: string;\n}\n\n/**\n * Represents an application group with its entities for the home view.\n * Used by Concept D to organize entities by their first Application membership.\n */\nexport interface AppEntityGroup {\n applicationId: string;\n applicationName: string;\n applicationIcon: string;\n applicationColor: string | null;\n entities: EntityInfo[];\n isExpanded: boolean;\n}\n\n/**\n * Home view mode for the All/Favorites toggle\n */\nexport type HomeViewMode = 'all' | 'favorites';\n\n/**\n * State interface for the Data Explorer dashboard\n */\nexport interface DataExplorerState {\n // Navigation panel\n navigationPanelWidth: number;\n navigationPanelCollapsed: boolean;\n\n // Current context\n selectedEntityName: string | null;\n selectedViewId: string | null;\n\n // View modification tracking\n /** Whether the current view configuration has unsaved changes */\n viewModified: boolean;\n\n // View configuration panel\n /** Whether the view configuration panel is open */\n viewConfigPanelOpen: boolean;\n\n // Smart filter (current entity's filter - also cached in entityCache)\n smartFilterPrompt: string;\n smartFilterEnabled: boolean;\n\n // Per-entity cache for filters and state\n entityCache: Record<string, EntityCacheEntry>;\n\n // View mode\n viewMode: DataExplorerViewMode;\n\n // Timeline configuration (per-entity, but stored here for simplicity)\n timelineOrientation: TimelineOrientationType;\n timelineDateFieldName: string | null;\n timelineSortOrder: 'asc' | 'desc';\n\n // Map configuration (persisted across page reloads)\n mapRenderMode: MapRenderMode;\n mapZoom: number | null;\n mapCenterLat: number | null;\n mapCenterLng: number | null;\n\n // Detail panel\n detailPanelOpen: boolean;\n detailPanelWidth: number;\n selectedRecordId: string | null;\n /** Display name of the currently selected record (for breadcrumbs) */\n selectedRecordName: string | null;\n\n // Section states\n favoritesSectionExpanded: boolean;\n recentSectionExpanded: boolean;\n entitiesSectionExpanded: boolean;\n viewsSectionExpanded: boolean;\n\n // Recent items (legacy - records within current explorer context)\n recentItems: RecentItem[];\n\n // Favorites (legacy - records within current explorer context)\n favorites: FavoriteItem[];\n\n // Home screen state\n /** Whether to show all entities or just DefaultForNewUser entities */\n showAllEntities: boolean;\n /** Recent entity access tracking for home screen */\n recentEntityAccesses: RecentEntityAccess[];\n /** Favorite entities for home screen */\n favoriteEntities: FavoriteEntity[];\n /** Favorite records for home screen (non-entity favorites) */\n favoriteRecords: FavoriteRecord[];\n\n // Concept D: Application Groups + Search-First\n /** Which application group IDs are currently expanded */\n expandedAppGroups: string[];\n /** Whether the right-side quick access panel is open */\n quickAccessPanelOpen: boolean;\n /** Collapse state per section in the quick access panel (key = section id, value = expanded) */\n quickAccessSections: Record<string, boolean>;\n /** Home view mode toggle: show all entities or favorites only */\n homeViewMode: HomeViewMode;\n}\n\nexport interface RecentItem {\n entityName: string;\n /** Serialized CompositeKey using ToConcatenatedString format (Field1|Value1||Field2|Value2) */\n compositeKeyString: string;\n displayName: string;\n timestamp: Date;\n}\n\nexport interface FavoriteItem {\n type: 'record' | 'view' | 'entity';\n entityName?: string;\n /** Serialized CompositeKey using ToConcatenatedString format (Field1|Value1||Field2|Value2) */\n compositeKeyString?: string;\n viewId?: string;\n displayName: string;\n}\n\n/**\n * Field display type for smart rendering in cards\n */\nexport type CardFieldType = 'number' | 'boolean' | 'text' | 'date';\n\n/**\n * Metadata for a field to display in a card\n */\nexport interface CardDisplayField {\n name: string;\n type: CardFieldType;\n label: string;\n}\n\n/**\n * Auto-generated card template based on entity metadata\n */\nexport interface AutoCardTemplate {\n titleField: string;\n subtitleField: string | null;\n descriptionField: string | null;\n /** Display fields with type information for smart rendering */\n displayFields: CardDisplayField[];\n thumbnailField: string | null;\n badgeField: string | null;\n}\n\n/**\n * Default state for the Data Explorer\n */\nexport const DEFAULT_EXPLORER_STATE: DataExplorerState = {\n navigationPanelWidth: 280,\n navigationPanelCollapsed: true,\n selectedEntityName: null,\n selectedViewId: null,\n viewModified: false,\n viewConfigPanelOpen: false,\n smartFilterPrompt: '',\n smartFilterEnabled: true,\n entityCache: {},\n viewMode: 'grid',\n timelineOrientation: 'vertical',\n timelineDateFieldName: null,\n timelineSortOrder: 'desc',\n mapRenderMode: 'point',\n mapZoom: null,\n mapCenterLat: null,\n mapCenterLng: null,\n detailPanelOpen: false,\n detailPanelWidth: 400,\n selectedRecordId: null,\n selectedRecordName: null,\n favoritesSectionExpanded: true,\n recentSectionExpanded: true,\n entitiesSectionExpanded: true,\n viewsSectionExpanded: true,\n recentItems: [],\n favorites: [],\n // Home screen state\n showAllEntities: false, // Default to showing only common entities\n recentEntityAccesses: [],\n favoriteEntities: [],\n favoriteRecords: [],\n // Concept D: Application Groups + Search-First\n expandedAppGroups: [],\n quickAccessPanelOpen: false,\n quickAccessSections: { recentRecords: true, recentEntities: true, favoriteRecords: true },\n homeViewMode: 'all',\n};\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { AfterViewInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { BaseResourceComponent, RecentAccessService, RecentAccessItem, HomeAppPinnedItem } from '@memberjunction/ng-shared';
|
|
3
4
|
import { ResourceData, MJUserFavoriteEntity, MJUserNotificationEntity } from '@memberjunction/core-entities';
|
|
4
5
|
import { ApplicationManager, BaseApplication } from '@memberjunction/ng-base-application';
|
|
5
6
|
import { UserAppConfigComponent } from '@memberjunction/ng-explorer-settings';
|
|
@@ -29,10 +30,9 @@ interface AppDisplayData {
|
|
|
29
30
|
*/
|
|
30
31
|
export declare class HomeDashboardComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {
|
|
31
32
|
private appManager;
|
|
32
|
-
private navigationService;
|
|
33
33
|
private recentAccessService;
|
|
34
34
|
private cdr;
|
|
35
|
-
|
|
35
|
+
protected destroy$: Subject<void>;
|
|
36
36
|
private metadata;
|
|
37
37
|
private pinService;
|
|
38
38
|
appConfigDialog: UserAppConfigComponent;
|
|
@@ -112,7 +112,7 @@ export declare class HomeDashboardComponent extends BaseResourceComponent implem
|
|
|
112
112
|
* Check if current device is mobile (width <= 768px)
|
|
113
113
|
*/
|
|
114
114
|
private isMobileDevice;
|
|
115
|
-
constructor(appManager: ApplicationManager,
|
|
115
|
+
constructor(appManager: ApplicationManager, recentAccessService: RecentAccessService, cdr: ChangeDetectorRef);
|
|
116
116
|
GetResourceDisplayName(data: ResourceData): Promise<string>;
|
|
117
117
|
GetResourceIconClass(data: ResourceData): Promise<string>;
|
|
118
118
|
ngAfterViewInit(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"home-dashboard.component.d.ts","sourceRoot":"","sources":["../../src/Home/home-dashboard.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAA8C,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"home-dashboard.component.d.ts","sourceRoot":"","sources":["../../src/Home/home-dashboard.component.ts"],"names":[],"mappings":"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"}
|