@memberjunction/ng-dashboards 5.3.1 → 5.4.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.
Files changed (173) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  2. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  3. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  4. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  5. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  6. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  7. package/dist/AI/components/models/model-management.component.js.map +1 -1
  8. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  10. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  11. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  12. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  14. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  15. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  16. package/dist/AI/index.js.map +1 -1
  17. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  18. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  19. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  20. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  21. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  22. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  23. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  24. package/dist/APIKeys/api-key-list.component.js +2 -2
  25. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  26. package/dist/APIKeys/api-keys-resource.component.js +2 -2
  27. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  28. package/dist/APIKeys/api-scopes-panel.component.js +2 -2
  29. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  30. package/dist/APIKeys/api-usage-panel.component.js +2 -2
  31. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  32. package/dist/APIKeys/index.js.map +1 -1
  33. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  34. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  35. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  36. package/dist/Actions/components/code-management.component.js.map +1 -1
  37. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  38. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  39. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  40. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  41. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  42. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  43. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  44. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  45. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  46. package/dist/Actions/components/explorer/index.js.map +1 -1
  47. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  48. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  49. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  50. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  51. package/dist/Actions/index.js.map +1 -1
  52. package/dist/Actions/services/action-explorer-state.service.js.map +1 -1
  53. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  54. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  55. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  56. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  57. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  58. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  59. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  60. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  61. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  62. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  63. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  64. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  65. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  66. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  67. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  68. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  69. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  70. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  71. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  72. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  73. package/dist/ComponentStudio/index.js.map +1 -1
  74. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  75. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  76. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  77. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  78. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  79. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  80. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  81. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  82. package/dist/Credentials/index.js.map +1 -1
  83. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  84. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  85. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  86. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  87. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +25 -3
  88. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  89. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +158 -34
  90. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  91. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  92. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +57 -23
  93. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  94. package/dist/DataExplorer/data-explorer-dashboard.component.js +600 -445
  95. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  96. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  97. package/dist/DataExplorer/index.js.map +1 -1
  98. package/dist/DataExplorer/models/explorer-state.interface.d.ts +25 -0
  99. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  100. package/dist/DataExplorer/models/explorer-state.interface.js +6 -1
  101. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  102. package/dist/DataExplorer/services/explorer-state.service.d.ts +21 -3
  103. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  104. package/dist/DataExplorer/services/explorer-state.service.js +70 -36
  105. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  106. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  107. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  108. package/dist/Home/home-application.js.map +1 -1
  109. package/dist/Home/home-dashboard.component.d.ts +20 -5
  110. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  111. package/dist/Home/home-dashboard.component.js +128 -79
  112. package/dist/Home/home-dashboard.component.js.map +1 -1
  113. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  114. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  115. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  116. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  117. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  118. package/dist/Lists/index.js.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  120. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  121. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  122. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  123. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  124. package/dist/MCP/index.js.map +1 -1
  125. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  126. package/dist/MCP/mcp-filter-panel.component.js.map +1 -1
  127. package/dist/MCP/mcp-resource.component.js.map +1 -1
  128. package/dist/MCP/mcp.module.js.map +1 -1
  129. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  130. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  131. package/dist/Scheduling/components/index.js.map +1 -1
  132. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  133. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  134. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  135. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  136. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  137. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  138. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  139. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  140. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  141. package/dist/SystemDiagnostics/index.js.map +1 -1
  142. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  143. package/dist/SystemDiagnostics/system-diagnostics.component.js +3 -3
  144. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  145. package/dist/Testing/components/index.js.map +1 -1
  146. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  147. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  148. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  149. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  150. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  151. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  152. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  153. package/dist/Testing/components/testing-review.component.js.map +1 -1
  154. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  155. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  156. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  157. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  158. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  159. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  160. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  161. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  162. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  163. package/dist/VersionHistory/components/index.js.map +1 -1
  164. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  165. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  166. package/dist/VersionHistory/index.js.map +1 -1
  167. package/dist/__tests__/dashboards.test.js.map +1 -1
  168. package/dist/module.js.map +1 -1
  169. package/dist/public-api.js.map +1 -1
  170. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  171. package/dist/shared/pipes/index.js.map +1 -1
  172. package/dist/shared/shared-pipes.module.js.map +1 -1
  173. package/package.json +38 -38
@@ -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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"}
1
+ {"version":3,"file":"data-explorer-resource.component.js","sourceRoot":"","sources":["../../src/DataExplorer/data-explorer-resource.component.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAwC,uBAAuB,EAAE,SAAS,EAAoB,MAAM,eAAe,CAAC;AACtI,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAsC,MAAM,2BAA2B,CAAC;AAEtG,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;;;;AAErF;;;;GAIG;AA4BI,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,qBAAqB;IAmBxD;IACA;IAnBZ,2CAA2C;IAC3C,QAAQ;IACR,2CAA2C;IAEpC,YAAY,GAA8B,IAAI,CAAC;IAC/C,WAAW,GAAkB,IAAI,CAAC;IAClC,WAAW,GAAkB,IAAI,CAAC;IAEE,YAAY,CAAkC;IAExE,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IACzC,WAAW,GAAG,KAAK,CAAC;IAE5B,2CAA2C;IAC3C,cAAc;IACd,2CAA2C;IAE3C,YACY,GAAsB,EACtB,iBAAoC;QAE5C,KAAK,EAAE,CAAC;QAHA,QAAG,GAAH,GAAG,CAAmB;QACtB,sBAAiB,GAAjB,iBAAiB,CAAmB;IAGhD,CAAC;IAED,2CAA2C;IAC3C,yBAAyB;IACzB,2CAA2C;IAE3C,IAAa,IAAI,CAAC,KAAmB;QACjC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,IAAa,IAAI;QACb,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,2CAA2C;IAC3C,YAAY;IACZ,2CAA2C;IAE3C,QAAQ;QACJ,uCAAuC;IAC3C,CAAC;IAED,WAAW;QACP,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,2CAA2C;IAC3C,uCAAuC;IACvC,2CAA2C;IAE3C,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC3C,OAAO,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAkB;QACzC,OAAO,yBAAyB,CAAC;IACrC,CAAC;IAED,2CAA2C;IAC3C,kBAAkB;IAClB,2CAA2C;IAEnC,iBAAiB;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAExC,gCAAgC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,cAAc,CAAuB,IAAI,IAAI,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAW,IAAI,IAAI,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAW,IAAI,IAAI,CAAC;QAEvD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAEzB,iDAAiD;QACjD,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,GAAG,EAAE;oBACvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC9B,CAAC,CAAC;gBAEF,yDAAyD;gBACzD,MAAM,eAAe,GAAoB;oBACrC,SAAS,EAAE,IAAoC;oBAC/C,SAAS,EAAE,EAAE;iBAChB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,eAAe,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;QACL,CAAC,EAAE,CAAC,CAAC,CAAC;IACV,CAAC;IAED,2CAA2C;IAC3C,iBAAiB;IACjB,2CAA2C;IAEpC,kBAAkB,CAAC,KAAuD;QAC7E,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;uHAlHQ,6BAA6B;6DAA7B,6BAA6B;2BAS3B,8BAA8B;;;;;YA9BjC,AADJ,8BAA8C,oCAKU;YAAhD,0JAAoB,8BAA0B,IAAC;YAEvD,AADI,iBAA6B,EAC3B;;YALE,cAA6B;YAE7B,AADA,AADA,+CAA6B,gCACF,gCACA;;;AAkB9B,6BAA6B;IA3BzC,aAAa,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;GA2BhD,6BAA6B,CAmHzC;;iFAnHY,6BAA6B;cA1BzC,SAAS;6BACI,KAAK,YACL,2BAA2B,YAC3B;;;;;;;;;KAST,mBAYgB,uBAAuB,CAAC,MAAM;;kBAW9C,SAAS;mBAAC,8BAA8B;;kFAThC,6BAA6B","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 </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 super.Data = value;\n if (!this._dataLoaded) {\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DataExplorer/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,sBAAsB;AACtB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,2DAA2D;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,mBAAmB;AACnB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AAEpG,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,SAAS;AACT,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/DataExplorer/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,sBAAsB;AACtB,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,2DAA2D;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF,mBAAmB;AACnB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AAEpG,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,SAAS;AACT,cAAc,mCAAmC,CAAC","sourcesContent":["// Data Explorer Dashboard - Main exports\n\n// Dashboard component\nexport { DataExplorerDashboardComponent } from './data-explorer-dashboard.component';\n\n// Resource component (BaseResourceComponent-based wrapper)\nexport { DataExplorerResourceComponent } from './data-explorer-resource.component';\n\n// Child components\nexport { NavigationPanelComponent } from './components/navigation-panel/navigation-panel.component';\n\n// Services\nexport { ExplorerStateService } from './services/explorer-state.service';\n\n// Models\nexport * from './models/explorer-state.interface';\n"]}
@@ -1,3 +1,4 @@
1
+ import { EntityInfo } from '@memberjunction/core';
1
2
  /**
2
3
  * Filter configuration for the Data Explorer
3
4
  * Allows constraining which entities are shown in the explorer
@@ -109,6 +110,22 @@ export interface FavoriteRecord {
109
110
  recordId: string;
110
111
  recordName?: string;
111
112
  }
113
+ /**
114
+ * Represents an application group with its entities for the home view.
115
+ * Used by Concept D to organize entities by their first Application membership.
116
+ */
117
+ export interface AppEntityGroup {
118
+ applicationId: string;
119
+ applicationName: string;
120
+ applicationIcon: string;
121
+ applicationColor: string | null;
122
+ entities: EntityInfo[];
123
+ isExpanded: boolean;
124
+ }
125
+ /**
126
+ * Home view mode for the All/Favorites toggle
127
+ */
128
+ export type HomeViewMode = 'all' | 'favorites';
112
129
  /**
113
130
  * State interface for the Data Explorer dashboard
114
131
  */
@@ -147,6 +164,14 @@ export interface DataExplorerState {
147
164
  favoriteEntities: FavoriteEntity[];
148
165
  /** Favorite records for home screen (non-entity favorites) */
149
166
  favoriteRecords: FavoriteRecord[];
167
+ /** Which application group IDs are currently expanded */
168
+ expandedAppGroups: string[];
169
+ /** Whether the right-side quick access panel is open */
170
+ quickAccessPanelOpen: boolean;
171
+ /** Collapse state per section in the quick access panel (key = section id, value = expanded) */
172
+ quickAccessSections: Record<string, boolean>;
173
+ /** Home view mode toggle: show all entities or favorites only */
174
+ homeViewMode: HomeViewMode;
150
175
  }
151
176
  export interface RecentItem {
152
177
  entityName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-state.interface.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer-state.interface.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,11 @@ export const DEFAULT_EXPLORER_STATE = {
29
29
  showAllEntities: false, // Default to showing only common entities
30
30
  recentEntityAccesses: [],
31
31
  favoriteEntities: [],
32
- favoriteRecords: []
32
+ favoriteRecords: [],
33
+ // Concept D: Application Groups + Search-First
34
+ expandedAppGroups: [],
35
+ quickAccessPanelOpen: false,
36
+ quickAccessSections: { recentRecords: true, recentEntities: true, favoriteRecords: true },
37
+ homeViewMode: 'all',
33
38
  };
34
39
  //# sourceMappingURL=explorer-state.interface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-state.interface.js","sourceRoot":"","sources":["../../../src/DataExplorer/models/explorer-state.interface.ts"],"names":[],"mappings":"AA0OA;;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;CACpB,CAAC"}
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"]}
@@ -173,6 +173,22 @@ export declare class ExplorerStateService {
173
173
  * Toggle between showing all entities or just common (DefaultForNewUser) entities
174
174
  */
175
175
  toggleShowAllEntities(): void;
176
+ /**
177
+ * Toggle the quick access (right) panel open/closed
178
+ */
179
+ toggleQuickAccessPanel(): void;
180
+ /**
181
+ * Toggle a quick access section's expanded state
182
+ */
183
+ toggleQuickAccessSection(sectionId: string): void;
184
+ /**
185
+ * Toggle an application group's expanded/collapsed state
186
+ */
187
+ toggleAppGroupExpanded(appId: string): void;
188
+ /**
189
+ * Set the home view mode (all vs favorites)
190
+ */
191
+ setHomeViewMode(mode: 'all' | 'favorites'): void;
176
192
  /**
177
193
  * Track entity access - called when user navigates to an entity
178
194
  */
@@ -202,10 +218,12 @@ export declare class ExplorerStateService {
202
218
  */
203
219
  private loadRecentRecords;
204
220
  /**
205
- * Build a CompositeKey for a given entity and record ID.
206
- * Assumes single primary key field named ID for most entities.
221
+ * Build a CompositeKey for a record. RecordID may be stored as either:
222
+ * - Concatenated format: "FieldName|Value" or "Field1|Val1||Field2|Val2"
223
+ * - Plain value: just the raw value (e.g. a GUID)
224
+ * Detects the format and constructs the key accordingly.
207
225
  */
208
- private buildCompositeKeyForEntity;
226
+ private buildCompositeKeyForRecord;
209
227
  /**
210
228
  * Refresh recent records (call after navigating to a record)
211
229
  */
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-state.service.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/services/explorer-state.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer-state.service.d.ts","sourceRoot":"","sources":["../../../src/DataExplorer/services/explorer-state.service.ts"],"names":[],"mappings":"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"}
@@ -490,6 +490,43 @@ export class ExplorerStateService {
490
490
  toggleShowAllEntities() {
491
491
  this.updateState({ showAllEntities: !this.state$.value.showAllEntities });
492
492
  }
493
+ // ========================================
494
+ // Concept D: Application Groups + Quick Access
495
+ // ========================================
496
+ /**
497
+ * Toggle the quick access (right) panel open/closed
498
+ */
499
+ toggleQuickAccessPanel() {
500
+ this.updateState({ quickAccessPanelOpen: !this.state$.value.quickAccessPanelOpen });
501
+ }
502
+ /**
503
+ * Toggle a quick access section's expanded state
504
+ */
505
+ toggleQuickAccessSection(sectionId) {
506
+ const sections = { ...this.state$.value.quickAccessSections };
507
+ sections[sectionId] = sections[sectionId] === false; // default to expanded (true)
508
+ this.updateState({ quickAccessSections: sections });
509
+ }
510
+ /**
511
+ * Toggle an application group's expanded/collapsed state
512
+ */
513
+ toggleAppGroupExpanded(appId) {
514
+ const expanded = [...this.state$.value.expandedAppGroups];
515
+ const index = expanded.indexOf(appId);
516
+ if (index >= 0) {
517
+ expanded.splice(index, 1);
518
+ }
519
+ else {
520
+ expanded.push(appId);
521
+ }
522
+ this.updateState({ expandedAppGroups: expanded });
523
+ }
524
+ /**
525
+ * Set the home view mode (all vs favorites)
526
+ */
527
+ setHomeViewMode(mode) {
528
+ this.updateState({ homeViewMode: mode });
529
+ }
493
530
  /**
494
531
  * Track entity access - called when user navigates to an entity
495
532
  */
@@ -692,10 +729,11 @@ export class ExplorerStateService {
692
729
  const index = recentRecords.length;
693
730
  recentRecords.push(recordAccess);
694
731
  // Build composite key for batch name lookup
695
- const compositeKey = this.buildCompositeKeyForEntity(entity, log.RecordID);
732
+ const compositeKey = this.buildCompositeKeyForRecord(entity.Name, log.RecordID);
696
733
  if (compositeKey) {
697
734
  recordNameInputs.push({ EntityName: entity.Name, CompositeKey: compositeKey });
698
- recordIndexMap.set(`${entity.Name}|${log.RecordID}`, index);
735
+ // Use the canonical concatenated string as the map key for consistent matching
736
+ recordIndexMap.set(`${entity.Name}||${compositeKey.ToConcatenatedString()}`, index);
699
737
  }
700
738
  }
701
739
  }
@@ -705,8 +743,7 @@ export class ExplorerStateService {
705
743
  const nameResults = await this.metadata.GetEntityRecordNames(recordNameInputs);
706
744
  for (const nameResult of nameResults) {
707
745
  if (nameResult.Success && nameResult.RecordName) {
708
- const pkValue = nameResult.CompositeKey.KeyValuePairs[0]?.Value?.toString();
709
- const key = `${nameResult.EntityName}|${pkValue}`;
746
+ const key = `${nameResult.EntityName}||${nameResult.CompositeKey.ToConcatenatedString()}`;
710
747
  const index = recordIndexMap.get(key);
711
748
  if (index !== undefined) {
712
749
  recentRecords[index].recordName = nameResult.RecordName;
@@ -726,39 +763,36 @@ export class ExplorerStateService {
726
763
  }
727
764
  }
728
765
  /**
729
- * Build a CompositeKey for a given entity and record ID.
730
- * Assumes single primary key field named ID for most entities.
766
+ * Build a CompositeKey for a record. RecordID may be stored as either:
767
+ * - Concatenated format: "FieldName|Value" or "Field1|Val1||Field2|Val2"
768
+ * - Plain value: just the raw value (e.g. a GUID)
769
+ * Detects the format and constructs the key accordingly.
731
770
  */
732
- buildCompositeKeyForEntity(entity, recordId) {
733
- try {
734
- const entityInfo = this.metadata.Entities.find(e => e.Name === entity.Name);
735
- if (!entityInfo)
736
- return null;
737
- const pkFields = entityInfo.PrimaryKeys;
738
- if (pkFields.length === 0)
739
- return null;
740
- const compositeKey = new CompositeKey();
741
- // For single PK, use the recordId directly
742
- if (pkFields.length === 1) {
743
- compositeKey.KeyValuePairs = [{
744
- FieldName: pkFields[0].Name,
745
- Value: recordId
746
- }];
771
+ buildCompositeKeyForRecord(entityName, recordId) {
772
+ if (!recordId)
773
+ return null;
774
+ // If recordId contains '|', it's in concatenated format
775
+ if (recordId.includes('|')) {
776
+ try {
777
+ const compositeKey = new CompositeKey();
778
+ compositeKey.LoadFromConcatenatedString(recordId);
779
+ if (compositeKey.KeyValuePairs.length > 0)
780
+ return compositeKey;
747
781
  }
748
- else {
749
- // For composite keys, we'd need to parse the recordId
750
- // For now, assume the recordId is already in the correct format
751
- // This is a simplified approach - composite keys would need more handling
752
- compositeKey.KeyValuePairs = [{
753
- FieldName: pkFields[0].Name,
754
- Value: recordId
755
- }];
782
+ catch {
783
+ // Fall through to entity-based lookup
756
784
  }
757
- return compositeKey;
758
785
  }
759
- catch {
786
+ // Plain value — look up entity primary key field(s) to construct the key
787
+ const entityInfo = this.metadata.Entities.find(e => e.Name === entityName);
788
+ if (!entityInfo)
760
789
  return null;
761
- }
790
+ const pkField = entityInfo.FirstPrimaryKey;
791
+ if (!pkField)
792
+ return null;
793
+ const compositeKey = new CompositeKey();
794
+ compositeKey.KeyValuePairs = [{ FieldName: pkField.Name, Value: recordId }];
795
+ return compositeKey;
762
796
  }
763
797
  /**
764
798
  * Refresh recent records (call after navigating to a record)
@@ -840,10 +874,11 @@ export class ExplorerStateService {
840
874
  const index = favoriteRecords.length;
841
875
  favoriteRecords.push(favoriteRecord);
842
876
  // Build composite key for batch name lookup
843
- const compositeKey = this.buildCompositeKeyForEntity(entity, fav.RecordID);
877
+ const compositeKey = this.buildCompositeKeyForRecord(entity.Name, fav.RecordID);
844
878
  if (compositeKey) {
845
879
  recordNameInputs.push({ EntityName: entity.Name, CompositeKey: compositeKey });
846
- recordIndexMap.set(`${entity.Name}|${fav.RecordID}`, index);
880
+ // Use the canonical concatenated string as the map key for consistent matching
881
+ recordIndexMap.set(`${entity.Name}||${compositeKey.ToConcatenatedString()}`, index);
847
882
  }
848
883
  }
849
884
  }
@@ -853,8 +888,7 @@ export class ExplorerStateService {
853
888
  const nameResults = await this.metadata.GetEntityRecordNames(recordNameInputs);
854
889
  for (const nameResult of nameResults) {
855
890
  if (nameResult.Success && nameResult.RecordName) {
856
- const pkValue = nameResult.CompositeKey.KeyValuePairs[0]?.Value?.toString();
857
- const key = `${nameResult.EntityName}|${pkValue}`;
891
+ const key = `${nameResult.EntityName}||${nameResult.CompositeKey.ToConcatenatedString()}`;
858
892
  const index = recordIndexMap.get(key);
859
893
  if (index !== undefined) {
860
894
  favoriteRecords[index].recordName = nameResult.RecordName;
@@ -1 +1 @@
1
- {"version":3,"file":"explorer-state.service.js","sourceRoot":"","sources":["../../../src/DataExplorer/services/explorer-state.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explorer-state.service.js","sourceRoot":"","sources":["../../../src/DataExplorer/services/explorer-state.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { Metadata, RunView, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';\nimport { MJUserSettingEntity, MJUserFavoriteEntity, MJApplicationEntityEntity, UserInfoEngine } from '@memberjunction/core-entities';\nimport { DataExplorerState, DEFAULT_EXPLORER_STATE, RecentItem, FavoriteItem, EntityCacheEntry, BreadcrumbItem, DataExplorerFilter, FavoriteEntity, RecentRecordAccess, FavoriteRecord, DataExplorerViewMode } from '../models/explorer-state.interface';\n\nconst BASE_SETTING_KEY = 'DataExplorer.State';\nconst MAX_RECENT_ITEMS = 20;\nconst MAX_RECENT_ENTITIES = 10;\nconst MAX_RECENT_RECORDS = 10;\nconst MAX_ENTITY_CACHE_SIZE = 50; // LRU cache limit\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExplorerStateService {\n private state$ = new BehaviorSubject<DataExplorerState>(DEFAULT_EXPLORER_STATE);\n private metadata = new Metadata();\n private saveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n /** Current context filter (determines which settings key to use) */\n private currentFilter: DataExplorerFilter | null = null;\n\n /** Computed breadcrumbs based on current state */\n private breadcrumbs$ = new BehaviorSubject<BreadcrumbItem[]>([]);\n\n /** Recent records loaded from User Record Logs */\n private recentRecords$ = new BehaviorSubject<RecentRecordAccess[]>([]);\n\n /** Favorite records loaded from User Favorites (non-entity favorites) */\n private favoriteRecords$ = new BehaviorSubject<FavoriteRecord[]>([]);\n\n /** Application entities with DefaultForNewUser info (loaded once per context) */\n private applicationEntities: MJApplicationEntityEntity[] = [];\n\n /** Set of entity IDs that have DefaultForNewUser=true */\n private defaultEntityIds = new Set<string>();\n\n constructor() {\n // Don't load state in constructor - wait for setContext to be called\n }\n\n /**\n * Set the context filter and load context-specific state.\n * Call this before using the service to ensure proper context isolation.\n */\n async setContext(filter: DataExplorerFilter | null): Promise<void> {\n this.currentFilter = filter;\n await this.loadState();\n // Load application entities first (needed for filtering recent/favorite records)\n await this.loadApplicationEntities();\n // Then load the rest in parallel\n await Promise.all([\n this.loadFavoriteEntities(),\n this.loadFavoriteRecords(),\n this.loadRecentRecords()\n ]);\n this.updateBreadcrumbs();\n }\n\n /**\n * Get the storage key based on current context.\n * Uses application ID if available for context-specific storage.\n */\n private getSettingKey(): string {\n if (this.currentFilter?.applicationId) {\n return `${BASE_SETTING_KEY}.${this.currentFilter.applicationId}`;\n }\n return BASE_SETTING_KEY;\n }\n\n /**\n * Get observable of current state\n */\n get State(): Observable<DataExplorerState> {\n return this.state$.asObservable();\n }\n\n /**\n * Get current state value\n */\n get CurrentState(): DataExplorerState {\n return this.state$.value;\n }\n\n /**\n * Observable of current breadcrumbs\n */\n get Breadcrumbs(): Observable<BreadcrumbItem[]> {\n return this.breadcrumbs$.asObservable();\n }\n\n /**\n * Get current breadcrumbs value\n */\n get CurrentBreadcrumbs(): BreadcrumbItem[] {\n return this.breadcrumbs$.value;\n }\n\n /**\n * Get the current context filter\n */\n get CurrentFilter(): DataExplorerFilter | null {\n return this.currentFilter;\n }\n\n /**\n * Observable of recent records (from User Record Logs)\n */\n get RecentRecords(): Observable<RecentRecordAccess[]> {\n return this.recentRecords$.asObservable();\n }\n\n /**\n * Get current recent records value\n */\n get CurrentRecentRecords(): RecentRecordAccess[] {\n return this.recentRecords$.value;\n }\n\n /**\n * Observable of favorite records (from User Favorites, non-entity)\n */\n get FavoriteRecords(): Observable<FavoriteRecord[]> {\n return this.favoriteRecords$.asObservable();\n }\n\n /**\n * Get current favorite records value\n */\n get CurrentFavoriteRecords(): FavoriteRecord[] {\n return this.favoriteRecords$.value;\n }\n\n /**\n * Get the set of entity IDs with DefaultForNewUser=true\n */\n get DefaultEntityIds(): Set<string> {\n return this.defaultEntityIds;\n }\n\n /**\n * Update state partially\n */\n updateState(partial: Partial<DataExplorerState>): void {\n const newState = { ...this.state$.value, ...partial };\n this.state$.next(newState);\n this.updateBreadcrumbs();\n this.debouncedSave();\n }\n\n /**\n * Set selected entity\n * Caches current entity's filter before switching, restores new entity's cached filter\n */\n selectEntity(entityName: string | null): void {\n const currentState = this.state$.value;\n const entityCache = { ...currentState.entityCache };\n\n // Cache current entity's filter before switching (if we have a current entity)\n if (currentState.selectedEntityName && currentState.smartFilterPrompt) {\n entityCache[currentState.selectedEntityName] = {\n filterText: currentState.smartFilterPrompt,\n lastAccessed: Date.now()\n };\n }\n\n // Restore filter for new entity (if cached) or clear it\n let restoredFilter = '';\n if (entityName && entityCache[entityName]) {\n restoredFilter = entityCache[entityName].filterText;\n entityCache[entityName].lastAccessed = Date.now();\n }\n\n // Evict old entries if cache is too large (LRU)\n this.evictOldCacheEntries(entityCache);\n\n this.updateState({\n selectedEntityName: entityName,\n selectedViewId: null, // Reset view when entity changes\n smartFilterPrompt: restoredFilter, // Restore cached filter or empty\n selectedRecordId: null,\n detailPanelOpen: false,\n entityCache\n });\n }\n\n /**\n * Evict oldest cache entries if over limit (LRU eviction)\n */\n private evictOldCacheEntries(cache: Record<string, EntityCacheEntry>): void {\n const entries = Object.entries(cache);\n if (entries.length <= MAX_ENTITY_CACHE_SIZE) return;\n\n // Sort by lastAccessed (oldest first) and remove excess\n entries.sort((a, b) => a[1].lastAccessed - b[1].lastAccessed);\n const toRemove = entries.length - MAX_ENTITY_CACHE_SIZE;\n for (let i = 0; i < toRemove; i++) {\n delete cache[entries[i][0]];\n }\n }\n\n /**\n * Set selected view\n */\n selectView(viewId: string | null): void {\n this.updateState({\n selectedViewId: viewId,\n viewModified: false // Reset modified state when selecting a different view\n });\n }\n\n /**\n * Mark the current view as modified (has unsaved changes)\n */\n setViewModified(modified: boolean): void {\n this.updateState({ viewModified: modified });\n }\n\n /**\n * Toggle the view configuration panel\n */\n toggleViewConfigPanel(): void {\n this.updateState({ viewConfigPanelOpen: !this.state$.value.viewConfigPanelOpen });\n }\n\n /**\n * Open the view configuration panel\n */\n openViewConfigPanel(): void {\n this.updateState({ viewConfigPanelOpen: true });\n }\n\n /**\n * Close the view configuration panel\n */\n closeViewConfigPanel(): void {\n this.updateState({ viewConfigPanelOpen: false });\n }\n\n /**\n * Set view mode\n */\n setViewMode(mode: DataExplorerViewMode): void {\n this.updateState({ viewMode: mode });\n }\n\n /**\n * Set smart filter prompt\n * Also updates the entity cache for the current entity\n */\n setSmartFilterPrompt(prompt: string): void {\n const currentState = this.state$.value;\n const entityCache = { ...currentState.entityCache };\n\n // Update cache for current entity\n if (currentState.selectedEntityName) {\n if (prompt) {\n entityCache[currentState.selectedEntityName] = {\n filterText: prompt,\n lastAccessed: Date.now()\n };\n } else {\n // Clear cache entry if filter is empty\n delete entityCache[currentState.selectedEntityName];\n }\n }\n\n this.updateState({ smartFilterPrompt: prompt, entityCache });\n }\n\n /**\n * Select a record and open detail panel\n * @param recordId The composite key string for the record\n * @param recordName Optional display name for the record (for breadcrumbs)\n */\n selectRecord(recordId: string | null, recordName?: string): void {\n this.updateState({\n selectedRecordId: recordId,\n selectedRecordName: recordName || null,\n detailPanelOpen: recordId !== null\n });\n }\n\n /**\n * Close detail panel\n */\n closeDetailPanel(): void {\n this.updateState({\n detailPanelOpen: false,\n selectedRecordId: null,\n selectedRecordName: null\n });\n }\n\n /**\n * Toggle navigation panel collapsed state\n */\n toggleNavigationPanel(): void {\n this.updateState({\n navigationPanelCollapsed: !this.state$.value.navigationPanelCollapsed\n });\n }\n\n /**\n * Expand navigation panel and ensure a specific section is expanded\n */\n expandAndFocusSection(section: 'favorites' | 'recent' | 'entities'): void {\n const updates: Partial<DataExplorerState> = {\n navigationPanelCollapsed: false\n };\n\n // Ensure the target section is expanded\n switch (section) {\n case 'favorites':\n updates.favoritesSectionExpanded = true;\n break;\n case 'recent':\n updates.recentSectionExpanded = true;\n break;\n case 'entities':\n updates.entitiesSectionExpanded = true;\n break;\n }\n\n this.updateState(updates);\n }\n\n /**\n * Add item to recent history\n */\n addRecentItem(item: Omit<RecentItem, 'timestamp'>): void {\n const recentItems = [...this.state$.value.recentItems];\n\n // Remove existing entry if present (match by entity and composite key)\n const existingIndex = recentItems.findIndex(\n r => r.entityName === item.entityName && r.compositeKeyString === item.compositeKeyString\n );\n if (existingIndex >= 0) {\n recentItems.splice(existingIndex, 1);\n }\n\n // Add to front with timestamp\n recentItems.unshift({\n ...item,\n timestamp: new Date()\n });\n\n // Trim to max size\n if (recentItems.length > MAX_RECENT_ITEMS) {\n recentItems.length = MAX_RECENT_ITEMS;\n }\n\n this.updateState({ recentItems });\n }\n\n /**\n * Add item to favorites\n */\n addFavorite(item: FavoriteItem): void {\n const favorites = [...this.state$.value.favorites];\n\n // Check if already exists\n const exists = favorites.some(f =>\n f.type === item.type &&\n f.entityName === item.entityName &&\n f.compositeKeyString === item.compositeKeyString &&\n f.viewId === item.viewId\n );\n\n if (!exists) {\n favorites.push(item);\n this.updateState({ favorites });\n }\n }\n\n /**\n * Remove item from favorites\n */\n removeFavorite(item: FavoriteItem): void {\n const favorites = this.state$.value.favorites.filter(f =>\n !(f.type === item.type &&\n f.entityName === item.entityName &&\n f.compositeKeyString === item.compositeKeyString &&\n f.viewId === item.viewId)\n );\n this.updateState({ favorites });\n }\n\n /**\n * Toggle section expanded state\n */\n toggleSection(section: 'favorites' | 'recent' | 'entities' | 'views'): void {\n const key = `${section}SectionExpanded` as keyof DataExplorerState;\n this.updateState({ [key]: !this.state$.value[key] } as Partial<DataExplorerState>);\n }\n\n /**\n * Load state from UserSetting using UserInfoEngine for cached access\n */\n private async loadState(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n const settingKey = this.getSettingKey();\n const engine = UserInfoEngine.Instance;\n\n // Find the setting from cached user settings\n const setting = engine.UserSettings.find(s => s.Setting === settingKey);\n\n if (setting?.Value) {\n const savedState = JSON.parse(setting.Value) as Partial<DataExplorerState>;\n // Merge with defaults to handle new properties\n this.state$.next({ ...DEFAULT_EXPLORER_STATE, ...savedState });\n } else {\n // No saved state, use defaults\n this.state$.next({ ...DEFAULT_EXPLORER_STATE });\n }\n } catch (error) {\n console.warn('Failed to load Data Explorer state:', error);\n this.state$.next({ ...DEFAULT_EXPLORER_STATE });\n }\n }\n\n /**\n * Update breadcrumbs based on current state and filter\n */\n private updateBreadcrumbs(): void {\n const breadcrumbs: BreadcrumbItem[] = [];\n const state = this.state$.value;\n\n // Always add a root/home breadcrumb - use application name if available, otherwise \"All\"\n const rootLabel = this.currentFilter?.applicationName || 'All';\n breadcrumbs.push({\n label: rootLabel,\n type: 'application',\n icon: 'fa-solid fa-th-large'\n });\n\n // Add entity breadcrumb if selected\n if (state.selectedEntityName) {\n const entityInfo = this.metadata.Entities.find(e => e.Name === state.selectedEntityName);\n breadcrumbs.push({\n label: state.selectedEntityName,\n type: 'entity',\n entityName: state.selectedEntityName,\n icon: entityInfo?.Icon ? this.formatEntityIcon(entityInfo.Icon) : 'fa-solid fa-table'\n });\n }\n\n // Add record breadcrumb if selected\n if (state.selectedRecordId && state.selectedRecordName) {\n breadcrumbs.push({\n label: state.selectedRecordName,\n type: 'record',\n entityName: state.selectedEntityName || undefined,\n compositeKeyString: state.selectedRecordId,\n icon: 'fa-solid fa-file-alt'\n });\n }\n\n this.breadcrumbs$.next(breadcrumbs);\n }\n\n /**\n * Format entity icon to ensure proper Font Awesome class format\n */\n private formatEntityIcon(icon: string): string {\n if (!icon) return 'fa-solid fa-table';\n if (icon.startsWith('fa-') || icon.startsWith('fa ')) {\n if (icon.startsWith('fa-solid') || icon.startsWith('fa-regular') ||\n icon.startsWith('fa-light') || icon.startsWith('fa-brands') ||\n icon.startsWith('fa ')) {\n return icon;\n }\n return `fa-solid ${icon}`;\n }\n return `fa-solid fa-${icon}`;\n }\n\n /**\n * Debounced save to avoid too many writes\n */\n private debouncedSave(): void {\n if (this.saveTimeout) {\n clearTimeout(this.saveTimeout);\n }\n this.saveTimeout = setTimeout(() => {\n this.saveState();\n }, 1000);\n }\n\n /**\n * Save state to UserSetting using UserInfoEngine for cached lookup\n */\n private async saveState(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n const settingKey = this.getSettingKey();\n const md = new Metadata();\n const engine = UserInfoEngine.Instance;\n\n // Find existing setting from cached user settings\n let setting = engine.UserSettings.find(s => s.Setting === settingKey);\n\n if (!setting) {\n // Create new setting if not found\n setting = await md.GetEntityObject<MJUserSettingEntity>('MJ: User Settings');\n setting.UserID = userId;\n setting.Setting = settingKey;\n }\n\n setting.Value = JSON.stringify(this.state$.value);\n await setting.Save();\n } catch (error) {\n console.warn('Failed to save Data Explorer state:', error);\n }\n }\n\n /**\n * Navigate to a specific breadcrumb level.\n * Clears any selection deeper than the clicked breadcrumb.\n */\n navigateToBreadcrumb(breadcrumb: BreadcrumbItem): void {\n switch (breadcrumb.type) {\n case 'application':\n // Clear entity and record selection (show home view)\n this.updateState({\n selectedEntityName: null,\n selectedViewId: null,\n selectedRecordId: null,\n selectedRecordName: null,\n smartFilterPrompt: '',\n detailPanelOpen: false\n });\n break;\n\n case 'entity':\n // Keep entity selected, clear record selection\n if (breadcrumb.entityName) {\n this.updateState({\n selectedRecordId: null,\n selectedRecordName: null,\n detailPanelOpen: false\n });\n }\n break;\n\n case 'record':\n // Already at record level, do nothing\n break;\n }\n }\n\n // ========================================\n // HOME SCREEN ENTITY MANAGEMENT\n // ========================================\n\n /**\n * Toggle between showing all entities or just common (DefaultForNewUser) entities\n */\n toggleShowAllEntities(): void {\n this.updateState({ showAllEntities: !this.state$.value.showAllEntities });\n }\n\n // ========================================\n // Concept D: Application Groups + Quick Access\n // ========================================\n\n /**\n * Toggle the quick access (right) panel open/closed\n */\n toggleQuickAccessPanel(): void {\n this.updateState({ quickAccessPanelOpen: !this.state$.value.quickAccessPanelOpen });\n }\n\n /**\n * Toggle a quick access section's expanded state\n */\n toggleQuickAccessSection(sectionId: string): void {\n const sections = { ...this.state$.value.quickAccessSections };\n sections[sectionId] = sections[sectionId] === false; // default to expanded (true)\n this.updateState({ quickAccessSections: sections });\n }\n\n /**\n * Toggle an application group's expanded/collapsed state\n */\n toggleAppGroupExpanded(appId: string): void {\n const expanded = [...this.state$.value.expandedAppGroups];\n const index = expanded.indexOf(appId);\n if (index >= 0) {\n expanded.splice(index, 1);\n } else {\n expanded.push(appId);\n }\n this.updateState({ expandedAppGroups: expanded });\n }\n\n /**\n * Set the home view mode (all vs favorites)\n */\n setHomeViewMode(mode: 'all' | 'favorites'): void {\n this.updateState({ homeViewMode: mode });\n }\n\n /**\n * Track entity access - called when user navigates to an entity\n */\n trackEntityAccess(entityName: string, entityId: string): void {\n const recentEntityAccesses = [...this.state$.value.recentEntityAccesses];\n\n // Find existing entry\n const existingIndex = recentEntityAccesses.findIndex(r => r.entityId === entityId);\n\n if (existingIndex >= 0) {\n // Update existing entry\n recentEntityAccesses[existingIndex] = {\n ...recentEntityAccesses[existingIndex],\n lastAccessed: new Date(),\n accessCount: recentEntityAccesses[existingIndex].accessCount + 1\n };\n // Move to front\n const [item] = recentEntityAccesses.splice(existingIndex, 1);\n recentEntityAccesses.unshift(item);\n } else {\n // Add new entry at front\n recentEntityAccesses.unshift({\n entityName,\n entityId,\n lastAccessed: new Date(),\n accessCount: 1\n });\n }\n\n // Trim to max size\n if (recentEntityAccesses.length > MAX_RECENT_ENTITIES) {\n recentEntityAccesses.length = MAX_RECENT_ENTITIES;\n }\n\n this.updateState({ recentEntityAccesses });\n }\n\n /**\n * Add entity to favorites using User Favorites entity\n */\n async addEntityToFavorites(entityName: string, entityId: string): Promise<boolean> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return false;\n\n // Check if already favorited\n const favorites = this.state$.value.favoriteEntities;\n if (favorites.some(f => f.entityId === entityId)) {\n return true; // Already favorited\n }\n\n // Get the Entities entity ID for favoriting\n const entitiesEntity = this.metadata.Entities.find(e => e.Name === 'MJ: Entities');\n if (!entitiesEntity) return false;\n\n // Create User Favorite record\n const md = new Metadata();\n const favorite = await md.GetEntityObject<MJUserFavoriteEntity>('MJ: User Favorites');\n favorite.UserID = userId;\n favorite.EntityID = entitiesEntity.ID;\n favorite.RecordID = entityId;\n\n const saved = await favorite.Save();\n if (saved) {\n // Update local state\n const favoriteEntities = [...favorites, {\n userFavoriteId: favorite.ID,\n entityName,\n entityId\n }];\n this.updateState({ favoriteEntities });\n }\n return saved;\n } catch (error) {\n console.warn('Failed to add entity to favorites:', error);\n return false;\n }\n }\n\n /**\n * Remove entity from favorites\n */\n async removeEntityFromFavorites(entityId: string): Promise<boolean> {\n try {\n const favorites = this.state$.value.favoriteEntities;\n const favorite = favorites.find(f => f.entityId === entityId);\n if (!favorite) return true; // Already not favorited\n\n // Delete User Favorite record\n const md = new Metadata();\n const favoriteEntity = await md.GetEntityObject<MJUserFavoriteEntity>('MJ: User Favorites');\n await favoriteEntity.Load(favorite.userFavoriteId);\n const deleted = await favoriteEntity.Delete();\n\n if (deleted) {\n // Update local state\n const favoriteEntities = favorites.filter(f => f.entityId !== entityId);\n this.updateState({ favoriteEntities });\n }\n return deleted;\n } catch (error) {\n console.warn('Failed to remove entity from favorites:', error);\n return false;\n }\n }\n\n /**\n * Check if an entity is favorited\n */\n isEntityFavorited(entityId: string): boolean {\n return this.state$.value.favoriteEntities.some(f => f.entityId === entityId);\n }\n\n /**\n * Load application entities with DefaultForNewUser information\n */\n private async loadApplicationEntities(): Promise<void> {\n try {\n if (!this.currentFilter?.applicationId) {\n this.applicationEntities = [];\n this.defaultEntityIds.clear();\n return;\n }\n\n const rv = new RunView();\n const result = await rv.RunView<MJApplicationEntityEntity>({\n EntityName: 'MJ: Application Entities',\n ExtraFilter: `ApplicationID = '${this.currentFilter.applicationId}'`,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.applicationEntities = result.Results;\n this.defaultEntityIds.clear();\n for (const appEntity of result.Results) {\n if (appEntity.DefaultForNewUser) {\n this.defaultEntityIds.add(appEntity.EntityID);\n }\n }\n }\n } catch (error) {\n console.warn('Failed to load application entities:', error);\n }\n }\n\n /**\n * Load favorite entities from User Favorites using UserInfoEngine\n */\n private async loadFavoriteEntities(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n // Get the Entities entity to filter favorites\n const entitiesEntity = this.metadata.Entities.find(e => e.Name === 'MJ: Entities');\n if (!entitiesEntity) return;\n\n // Use UserInfoEngine for cached access to user favorites\n const engine = UserInfoEngine.Instance;\n\n // Filter to only entity favorites (where EntityID is the Entities entity)\n const entityFavorites = engine.UserFavorites.filter(f => f.EntityID === entitiesEntity.ID);\n\n const favoriteEntities: FavoriteEntity[] = [];\n for (const fav of entityFavorites) {\n // Look up entity name from RecordID (which is the Entity.ID)\n const entity = this.metadata.Entities.find(e => e.ID === fav.RecordID);\n if (entity) {\n favoriteEntities.push({\n userFavoriteId: fav.ID,\n entityName: entity.Name,\n entityId: fav.RecordID\n });\n }\n }\n this.updateState({ favoriteEntities });\n } catch (error) {\n console.warn('Failed to load favorite entities:', error);\n }\n }\n\n /**\n * Load recent records from User Record Logs with batch record name lookup using UserInfoEngine\n */\n private async loadRecentRecords(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n // Use UserInfoEngine for cached access to user record logs\n const engine = UserInfoEngine.Instance;\n\n // Get recent records, limited to MAX_RECENT_RECORDS\n const userRecordLogs = engine.UserRecordLogs.slice(0, MAX_RECENT_RECORDS);\n\n const recentRecords: RecentRecordAccess[] = [];\n const recordNameInputs: EntityRecordNameInput[] = [];\n const recordIndexMap: Map<string, number> = new Map(); // Map composite key to array index\n\n for (const log of userRecordLogs) {\n // Look up entity name from EntityID\n const entity = this.metadata.Entities.find(e => e.ID === log.EntityID);\n if (entity) {\n // Filter by application context if applicable\n if (this.currentFilter?.applicationId && !this.applicationEntities.some(ae => ae.EntityID === log.EntityID)) {\n continue; // Skip records from entities not in this application\n }\n\n const recordAccess: RecentRecordAccess = {\n entityName: entity.Name,\n entityId: log.EntityID,\n recordId: log.RecordID,\n latestAt: log.LatestAt,\n totalCount: log.TotalCount\n };\n const index = recentRecords.length;\n recentRecords.push(recordAccess);\n\n // Build composite key for batch name lookup\n const compositeKey = this.buildCompositeKeyForRecord(entity.Name, log.RecordID);\n if (compositeKey) {\n recordNameInputs.push({ EntityName: entity.Name, CompositeKey: compositeKey });\n // Use the canonical concatenated string as the map key for consistent matching\n recordIndexMap.set(`${entity.Name}||${compositeKey.ToConcatenatedString()}`, index);\n }\n }\n }\n\n // Batch fetch record names\n if (recordNameInputs.length > 0) {\n try {\n const nameResults = await this.metadata.GetEntityRecordNames(recordNameInputs);\n for (const nameResult of nameResults) {\n if (nameResult.Success && nameResult.RecordName) {\n const key = `${nameResult.EntityName}||${nameResult.CompositeKey.ToConcatenatedString()}`;\n const index = recordIndexMap.get(key);\n if (index !== undefined) {\n recentRecords[index].recordName = nameResult.RecordName;\n }\n }\n }\n } catch (nameError) {\n console.warn('Failed to load record names:', nameError);\n // Continue without names - they'll show record IDs\n }\n }\n\n this.recentRecords$.next(recentRecords);\n } catch (error) {\n console.warn('Failed to load recent records:', error);\n }\n }\n\n /**\n * Build a CompositeKey for a record. RecordID may be stored as either:\n * - Concatenated format: \"FieldName|Value\" or \"Field1|Val1||Field2|Val2\"\n * - Plain value: just the raw value (e.g. a GUID)\n * Detects the format and constructs the key accordingly.\n */\n private buildCompositeKeyForRecord(entityName: string, recordId: string): CompositeKey | null {\n if (!recordId) return null;\n\n // If recordId contains '|', it's in concatenated format\n if (recordId.includes('|')) {\n try {\n const compositeKey = new CompositeKey();\n compositeKey.LoadFromConcatenatedString(recordId);\n if (compositeKey.KeyValuePairs.length > 0) return compositeKey;\n } catch {\n // Fall through to entity-based lookup\n }\n }\n\n // Plain value — look up entity primary key field(s) to construct the key\n const entityInfo = this.metadata.Entities.find(e => e.Name === entityName);\n if (!entityInfo) return null;\n\n const pkField = entityInfo.FirstPrimaryKey;\n if (!pkField) return null;\n\n const compositeKey = new CompositeKey();\n compositeKey.KeyValuePairs = [{ FieldName: pkField.Name, Value: recordId }];\n return compositeKey;\n }\n\n /**\n * Refresh recent records (call after navigating to a record)\n */\n async refreshRecentRecords(): Promise<void> {\n await this.loadRecentRecords();\n }\n\n /**\n * Add or update a recent record locally (without DB refresh).\n * Call this when a record is selected to provide instant UI feedback.\n * The DB write happens separately via RecentAccessService.logAccess().\n *\n * @param entityName The entity name\n * @param entityId The entity ID\n * @param recordId The record ID (primary key value)\n * @param recordName Optional display name for the record\n */\n addLocalRecentRecord(entityName: string, entityId: string, recordId: string, recordName?: string): void {\n // Filter by application context if applicable\n if (this.currentFilter?.applicationId && !this.applicationEntities.some(ae => ae.EntityID === entityId)) {\n return; // Don't add records from entities not in this application\n }\n\n const currentRecords = [...this.recentRecords$.value];\n\n // Find existing entry\n const existingIndex = currentRecords.findIndex(\n r => r.entityId === entityId && r.recordId === recordId\n );\n\n const newRecord: RecentRecordAccess = {\n entityName,\n entityId,\n recordId,\n recordName,\n latestAt: new Date(),\n totalCount: existingIndex >= 0 ? currentRecords[existingIndex].totalCount + 1 : 1\n };\n\n if (existingIndex >= 0) {\n // Remove existing entry (will be re-added at front)\n currentRecords.splice(existingIndex, 1);\n }\n\n // Add to front\n currentRecords.unshift(newRecord);\n\n // Trim to max size\n if (currentRecords.length > MAX_RECENT_RECORDS) {\n currentRecords.length = MAX_RECENT_RECORDS;\n }\n\n this.recentRecords$.next(currentRecords);\n }\n\n /**\n * Load favorite records from User Favorites (non-entity favorites) with batch record name lookup using UserInfoEngine.\n * Filters to only include records from entities in the current application context.\n */\n private async loadFavoriteRecords(): Promise<void> {\n try {\n const userId = this.metadata.CurrentUser?.ID;\n if (!userId) return;\n\n // Get the Entities entity to exclude entity favorites\n const entitiesEntity = this.metadata.Entities.find(e => e.Name === 'MJ: Entities');\n const entitiesEntityId = entitiesEntity?.ID || '';\n\n // Use UserInfoEngine for cached access to user favorites\n const engine = UserInfoEngine.Instance;\n\n // Filter to non-entity favorites (exclude favorites where EntityID is the Entities entity)\n const nonEntityFavorites = engine.UserFavorites.filter(f => f.EntityID !== entitiesEntityId);\n\n const favoriteRecords: FavoriteRecord[] = [];\n const recordNameInputs: EntityRecordNameInput[] = [];\n const recordIndexMap: Map<string, number> = new Map();\n\n for (const fav of nonEntityFavorites) {\n // Look up entity info from the EntityID\n const entity = this.metadata.Entities.find(e => e.ID === fav.EntityID);\n if (entity) {\n // Filter by application context if applicable\n if (this.currentFilter?.applicationId && !this.applicationEntities.some(ae => ae.EntityID === fav.EntityID)) {\n continue; // Skip records from entities not in this application\n }\n\n const favoriteRecord: FavoriteRecord = {\n userFavoriteId: fav.ID,\n entityName: entity.Name,\n entityId: fav.EntityID,\n recordId: fav.RecordID\n };\n const index = favoriteRecords.length;\n favoriteRecords.push(favoriteRecord);\n\n // Build composite key for batch name lookup\n const compositeKey = this.buildCompositeKeyForRecord(entity.Name, fav.RecordID);\n if (compositeKey) {\n recordNameInputs.push({ EntityName: entity.Name, CompositeKey: compositeKey });\n // Use the canonical concatenated string as the map key for consistent matching\n recordIndexMap.set(`${entity.Name}||${compositeKey.ToConcatenatedString()}`, index);\n }\n }\n }\n\n // Batch fetch record names\n if (recordNameInputs.length > 0) {\n try {\n const nameResults = await this.metadata.GetEntityRecordNames(recordNameInputs);\n for (const nameResult of nameResults) {\n if (nameResult.Success && nameResult.RecordName) {\n const key = `${nameResult.EntityName}||${nameResult.CompositeKey.ToConcatenatedString()}`;\n const index = recordIndexMap.get(key);\n if (index !== undefined) {\n favoriteRecords[index].recordName = nameResult.RecordName;\n }\n }\n }\n } catch (nameError) {\n console.warn('Failed to load record names for favorites:', nameError);\n // Continue without names - they'll show record IDs\n }\n }\n\n this.favoriteRecords$.next(favoriteRecords);\n this.updateState({ favoriteRecords });\n } catch (error) {\n console.warn('Failed to load favorite records:', error);\n }\n }\n}\n"]}