@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -16,11 +16,11 @@ import * as i1 from "@angular/common";
16
16
  import * as i2 from "@memberjunction/ng-ui-components";
17
17
  import * as i3 from "@memberjunction/ng-shared-generic";
18
18
  const _c0 = a0 => ({ "expanded": a0 });
19
- function VersionHistoryRestoreResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelement(0, "mj-loading", 9);
19
+ function VersionHistoryRestoreResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelement(0, "mj-loading", 8);
21
21
  } }
22
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 31);
22
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "div", 30);
24
24
  i0.ɵɵtext(1);
25
25
  i0.ɵɵelementEnd();
26
26
  } if (rf & 2) {
@@ -29,11 +29,11 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
29
29
  i0.ɵɵadvance();
30
30
  i0.ɵɵtextInterpolate(ctx_r2.FormatDate(restore_r2.StartedAt));
31
31
  } }
32
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "div", 39)(1, "span", 40);
32
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 39);
34
34
  i0.ɵɵtext(2, "Restored By");
35
35
  i0.ɵɵelementEnd();
36
- i0.ɵɵelementStart(3, "span", 42);
36
+ i0.ɵɵelementStart(3, "span", 41);
37
37
  i0.ɵɵtext(4);
38
38
  i0.ɵɵelementEnd()();
39
39
  } if (rf & 2) {
@@ -41,8 +41,8 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
41
41
  i0.ɵɵadvance(4);
42
42
  i0.ɵɵtextInterpolate(restore_r2.User);
43
43
  } }
44
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "span", 44);
44
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "span", 43);
46
46
  i0.ɵɵtext(1);
47
47
  i0.ɵɵelementEnd();
48
48
  } if (rf & 2) {
@@ -50,8 +50,8 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
50
50
  i0.ɵɵadvance();
51
51
  i0.ɵɵtextInterpolate1(" ", restore_r2.PreRestoreLabel, " ");
52
52
  } }
53
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "span", 44);
53
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "span", 43);
55
55
  i0.ɵɵtext(1);
56
56
  i0.ɵɵpipe(2, "slice");
57
57
  i0.ɵɵelementEnd();
@@ -60,12 +60,12 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
60
60
  i0.ɵɵadvance();
61
61
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 1, restore_r2.PreRestoreLabelID, 0, 20), "... ");
62
62
  } }
63
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "div", 39)(1, "span", 40);
63
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 39);
65
65
  i0.ɵɵtext(2, "Pre-Restore Label");
66
66
  i0.ɵɵelementEnd();
67
- i0.ɵɵconditionalCreate(3, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template, 2, 1, "span", 44);
68
- i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template, 3, 5, "span", 44);
67
+ i0.ɵɵconditionalCreate(3, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template, 2, 1, "span", 43);
68
+ i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template, 3, 5, "span", 43);
69
69
  i0.ɵɵelementEnd();
70
70
  } if (rf & 2) {
71
71
  const restore_r2 = i0.ɵɵnextContext(2).$implicit;
@@ -74,12 +74,12 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
74
74
  i0.ɵɵadvance();
75
75
  i0.ɵɵconditional(!restore_r2.PreRestoreLabel ? 4 : -1);
76
76
  } }
77
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_19_Template(rf, ctx) { if (rf & 1) {
78
- i0.ɵɵelementStart(0, "div", 43)(1, "div", 45);
79
- i0.ɵɵelement(2, "i", 46);
77
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_19_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 44);
79
+ i0.ɵɵelement(2, "i", 45);
80
80
  i0.ɵɵtext(3, " Error Log ");
81
81
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(4, "pre", 47);
82
+ i0.ɵɵelementStart(4, "pre", 46);
83
83
  i0.ɵɵtext(5);
84
84
  i0.ɵɵelementEnd()();
85
85
  } if (rf & 2) {
@@ -87,29 +87,29 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
87
87
  i0.ɵɵadvance(5);
88
88
  i0.ɵɵtextInterpolate(restore_r2.ErrorLog);
89
89
  } }
90
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "div", 37)(1, "div", 38)(2, "div", 39)(3, "span", 40);
90
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 36)(1, "div", 37)(2, "div", 38)(3, "span", 39);
92
92
  i0.ɵɵtext(4, "Status");
93
93
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(5, "span", 41);
94
+ i0.ɵɵelementStart(5, "span", 40);
95
95
  i0.ɵɵtext(6);
96
96
  i0.ɵɵelementEnd()();
97
- i0.ɵɵelementStart(7, "div", 39)(8, "span", 40);
97
+ i0.ɵɵelementStart(7, "div", 38)(8, "span", 39);
98
98
  i0.ɵɵtext(9, "Items Completed");
99
99
  i0.ɵɵelementEnd();
100
- i0.ɵɵelementStart(10, "span", 42);
100
+ i0.ɵɵelementStart(10, "span", 41);
101
101
  i0.ɵɵtext(11);
102
102
  i0.ɵɵelementEnd()();
103
- i0.ɵɵelementStart(12, "div", 39)(13, "span", 40);
103
+ i0.ɵɵelementStart(12, "div", 38)(13, "span", 39);
104
104
  i0.ɵɵtext(14, "Items Failed");
105
105
  i0.ɵɵelementEnd();
106
- i0.ɵɵelementStart(15, "span", 42);
106
+ i0.ɵɵelementStart(15, "span", 41);
107
107
  i0.ɵɵtext(16);
108
108
  i0.ɵɵelementEnd()();
109
- i0.ɵɵconditionalCreate(17, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_17_Template, 5, 1, "div", 39);
110
- i0.ɵɵconditionalCreate(18, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Template, 5, 2, "div", 39);
109
+ i0.ɵɵconditionalCreate(17, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_17_Template, 5, 1, "div", 38);
110
+ i0.ɵɵconditionalCreate(18, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Template, 5, 2, "div", 38);
111
111
  i0.ɵɵelementEnd();
112
- i0.ɵɵconditionalCreate(19, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_19_Template, 6, 1, "div", 43);
112
+ i0.ɵɵconditionalCreate(19, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_19_Template, 6, 1, "div", 42);
113
113
  i0.ɵɵelementEnd();
114
114
  } if (rf & 2) {
115
115
  const restore_r2 = i0.ɵɵnextContext().$implicit;
@@ -131,26 +131,26 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
131
131
  i0.ɵɵadvance();
132
132
  i0.ɵɵconditional(restore_r2.ErrorLog ? 19 : -1);
133
133
  } }
134
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
134
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
135
135
  const _r1 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26);
137
- i0.ɵɵlistener("click", function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template_div_click_1_listener() { const restore_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ToggleExpand(restore_r2.ID)); });
138
- i0.ɵɵelementStart(2, "div", 27);
139
- i0.ɵɵelement(3, "i", 28);
140
- i0.ɵɵelementStart(4, "div", 29)(5, "div", 30);
136
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 25);
137
+ i0.ɵɵlistener("click", function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template_div_click_1_listener() { const restore_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ToggleExpand(restore_r2.ID)); });
138
+ i0.ɵɵelementStart(2, "div", 26);
139
+ i0.ɵɵelement(3, "i", 27);
140
+ i0.ɵɵelementStart(4, "div", 28)(5, "div", 29);
141
141
  i0.ɵɵtext(6);
142
142
  i0.ɵɵelementEnd();
143
- i0.ɵɵconditionalCreate(7, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_7_Template, 2, 1, "div", 31);
143
+ i0.ɵɵconditionalCreate(7, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_7_Template, 2, 1, "div", 30);
144
144
  i0.ɵɵelementEnd()();
145
- i0.ɵɵelementStart(8, "div", 32)(9, "div", 33);
146
- i0.ɵɵelement(10, "div", 34);
145
+ i0.ɵɵelementStart(8, "div", 31)(9, "div", 32);
146
+ i0.ɵɵelement(10, "div", 33);
147
147
  i0.ɵɵelementEnd();
148
- i0.ɵɵelementStart(11, "span", 35);
148
+ i0.ɵɵelementStart(11, "span", 34);
149
149
  i0.ɵɵtext(12);
150
150
  i0.ɵɵelementEnd();
151
- i0.ɵɵelement(13, "i", 36);
151
+ i0.ɵɵelement(13, "i", 35);
152
152
  i0.ɵɵelementEnd()();
153
- i0.ɵɵconditionalCreate(14, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Template, 20, 9, "div", 37);
153
+ i0.ɵɵconditionalCreate(14, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Template, 20, 9, "div", 36);
154
154
  i0.ɵɵelementEnd();
155
155
  } if (rf & 2) {
156
156
  const restore_r2 = ctx.$implicit;
@@ -173,33 +173,33 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
173
173
  i0.ɵɵadvance();
174
174
  i0.ɵɵconditional(ctx_r2.IsExpanded(restore_r2.ID) ? 14 : -1);
175
175
  } }
176
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Template(rf, ctx) { if (rf & 1) {
177
- i0.ɵɵelementStart(0, "div", 23);
178
- i0.ɵɵrepeaterCreate(1, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template, 15, 15, "div", 25, i0.ɵɵrepeaterTrackByIdentity);
176
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 22);
178
+ i0.ɵɵrepeaterCreate(1, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template, 15, 15, "div", 24, i0.ɵɵrepeaterTrackByIdentity);
179
179
  i0.ɵɵelementEnd();
180
180
  } if (rf & 2) {
181
181
  const ctx_r2 = i0.ɵɵnextContext(2);
182
182
  i0.ɵɵadvance();
183
183
  i0.ɵɵrepeater(ctx_r2.FilteredRestores);
184
184
  } }
185
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
185
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
186
186
  i0.ɵɵelementStart(0, "p");
187
187
  i0.ɵɵtext(1, " Try adjusting your filters. ");
188
188
  i0.ɵɵelementEnd();
189
189
  } }
190
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
190
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
191
191
  i0.ɵɵelementStart(0, "p");
192
192
  i0.ɵɵtext(1, " No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state. ");
193
193
  i0.ɵɵelementEnd();
194
194
  } }
195
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵelementStart(0, "div", 24);
197
- i0.ɵɵelement(1, "i", 48);
195
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelementStart(0, "div", 23);
197
+ i0.ɵɵelement(1, "i", 47);
198
198
  i0.ɵɵelementStart(2, "h3");
199
199
  i0.ɵɵtext(3, "No restore operations found");
200
200
  i0.ɵɵelementEnd();
201
- i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_4_Template, 2, 0, "p");
202
- i0.ɵɵconditionalCreate(5, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_5_Template, 2, 0, "p");
201
+ i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_4_Template, 2, 0, "p");
202
+ i0.ɵɵconditionalCreate(5, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_5_Template, 2, 0, "p");
203
203
  i0.ɵɵelementEnd();
204
204
  } if (rf & 2) {
205
205
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -208,45 +208,45 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Te
208
208
  i0.ɵɵadvance();
209
209
  i0.ɵɵconditional(!ctx_r2.StatusFilter ? 5 : -1);
210
210
  } }
211
- function VersionHistoryRestoreResourceComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
212
- i0.ɵɵelementStart(0, "div", 10)(1, "div", 11)(2, "div", 12);
213
- i0.ɵɵelement(3, "i", 13);
211
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "div", 11);
213
+ i0.ɵɵelement(3, "i", 12);
214
214
  i0.ɵɵelementEnd();
215
- i0.ɵɵelementStart(4, "div", 14)(5, "div", 15);
215
+ i0.ɵɵelementStart(4, "div", 13)(5, "div", 14);
216
216
  i0.ɵɵtext(6);
217
217
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(7, "div", 16);
218
+ i0.ɵɵelementStart(7, "div", 15);
219
219
  i0.ɵɵtext(8, "Total Restores");
220
220
  i0.ɵɵelementEnd()()();
221
- i0.ɵɵelementStart(9, "div", 11)(10, "div", 17);
222
- i0.ɵɵelement(11, "i", 18);
221
+ i0.ɵɵelementStart(9, "div", 10)(10, "div", 16);
222
+ i0.ɵɵelement(11, "i", 17);
223
223
  i0.ɵɵelementEnd();
224
- i0.ɵɵelementStart(12, "div", 14)(13, "div", 15);
224
+ i0.ɵɵelementStart(12, "div", 13)(13, "div", 14);
225
225
  i0.ɵɵtext(14);
226
226
  i0.ɵɵelementEnd();
227
- i0.ɵɵelementStart(15, "div", 16);
227
+ i0.ɵɵelementStart(15, "div", 15);
228
228
  i0.ɵɵtext(16, "Successful");
229
229
  i0.ɵɵelementEnd()()();
230
- i0.ɵɵelementStart(17, "div", 11)(18, "div", 19);
231
- i0.ɵɵelement(19, "i", 20);
230
+ i0.ɵɵelementStart(17, "div", 10)(18, "div", 18);
231
+ i0.ɵɵelement(19, "i", 19);
232
232
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(20, "div", 14)(21, "div", 15);
233
+ i0.ɵɵelementStart(20, "div", 13)(21, "div", 14);
234
234
  i0.ɵɵtext(22);
235
235
  i0.ɵɵelementEnd();
236
- i0.ɵɵelementStart(23, "div", 16);
236
+ i0.ɵɵelementStart(23, "div", 15);
237
237
  i0.ɵɵtext(24, "Failed");
238
238
  i0.ɵɵelementEnd()()();
239
- i0.ɵɵelementStart(25, "div", 11)(26, "div", 21);
240
- i0.ɵɵelement(27, "i", 22);
239
+ i0.ɵɵelementStart(25, "div", 10)(26, "div", 20);
240
+ i0.ɵɵelement(27, "i", 21);
241
241
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(28, "div", 14)(29, "div", 15);
242
+ i0.ɵɵelementStart(28, "div", 13)(29, "div", 14);
243
243
  i0.ɵɵtext(30);
244
244
  i0.ɵɵelementEnd();
245
- i0.ɵɵelementStart(31, "div", 16);
245
+ i0.ɵɵelementStart(31, "div", 15);
246
246
  i0.ɵɵtext(32, "Partial");
247
247
  i0.ɵɵelementEnd()()()();
248
- i0.ɵɵconditionalCreate(33, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Template, 3, 0, "div", 23);
249
- i0.ɵɵconditionalCreate(34, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Template, 6, 2, "div", 24);
248
+ i0.ɵɵconditionalCreate(33, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_Template, 3, 0, "div", 22);
249
+ i0.ɵɵconditionalCreate(34, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Template, 6, 2, "div", 23);
250
250
  } if (rf & 2) {
251
251
  const ctx_r2 = i0.ɵɵnextContext();
252
252
  i0.ɵɵadvance(6);
@@ -346,6 +346,36 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
346
346
  this.applyFilters();
347
347
  this.persistPreferences();
348
348
  }
349
+ // -- Concise chrome: Status lives behind the one Filter popover ------------
350
+ get statusFilterFields() {
351
+ return [{
352
+ key: 'status',
353
+ type: 'chips',
354
+ label: 'Status',
355
+ chipOptions: [
356
+ { text: 'All', value: '' },
357
+ { text: 'Complete', value: 'Complete', icon: 'fa-solid fa-circle-check' },
358
+ { text: 'Error', value: 'Error', icon: 'fa-solid fa-circle-xmark' },
359
+ { text: 'Partial', value: 'Partial', icon: 'fa-solid fa-circle-half-stroke' },
360
+ ],
361
+ }];
362
+ }
363
+ get statusFilterValues() {
364
+ return { status: this.StatusFilter };
365
+ }
366
+ get ActiveFilterCount() {
367
+ return this.StatusFilter ? 1 : 0;
368
+ }
369
+ onFilterValuesChange(values) {
370
+ this.StatusFilter = values['status'] ?? '';
371
+ this.applyFilters();
372
+ this.persistPreferences();
373
+ }
374
+ resetStatusFilter() {
375
+ this.StatusFilter = '';
376
+ this.applyFilters();
377
+ this.persistPreferences();
378
+ }
349
379
  loadUserPreferences() {
350
380
  try {
351
381
  const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryRestoreResourceComponent_1.PREFS_KEY);
@@ -419,25 +449,21 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
419
449
  this.LoadData();
420
450
  }
421
451
  static ɵfac = function VersionHistoryRestoreResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VersionHistoryRestoreResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
422
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryRestoreResourceComponent, selectors: [["mj-version-history-restore-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 8, consts: [["Title", "Restore History", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Track all restore operations and their outcomes"], ["meta", ""], ["Label", "restores", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], ["Label", "Complete", "Icon", "fa-solid fa-circle-check", 3, "Clicked", "Active"], ["Label", "Error", "Icon", "fa-solid fa-circle-xmark", 3, "Clicked", "Active"], ["Label", "Partial", "Icon", "fa-solid fa-circle-half-stroke", 3, "Clicked", "Active"], ["text", "Loading restore history..."], [1, "kpi-row"], [1, "kpi-card"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-success) 10%, transparent)", "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-circle-check"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-error) 10%, transparent)", "color", "var(--mj-status-error)"], [1, "fa-solid", "fa-circle-xmark"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-warning) 10%, transparent)", "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-circle-half-stroke"], [1, "restore-list"], [1, "empty-state"], [1, "restore-card", 3, "ngClass"], [1, "restore-header", 3, "click"], [1, "restore-header-left"], [1, "status-icon", 3, "ngClass"], [1, "restore-info"], [1, "restore-label-name"], [1, "restore-date"], [1, "restore-header-right"], [1, "restore-progress-bar"], [1, "progress-fill", 3, "ngClass"], [1, "restore-count"], [1, "expand-icon", 3, "ngClass"], [1, "restore-details"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", 3, "ngClass"], [1, "detail-value"], [1, "error-log"], [1, "detail-value", "detail-mono"], [1, "error-log-header"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log-content"], [1, "fa-solid", "fa-clock-rotate-left", "empty-icon"]], template: function VersionHistoryRestoreResourceComponent_Template(rf, ctx) { if (rf & 1) {
452
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryRestoreResourceComponent, selectors: [["mj-version-history-restore-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 9, consts: [["Title", "Restore History", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Track all restore operations and their outcomes"], ["meta", ""], ["Label", "restores", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["text", "Loading restore history..."], [1, "kpi-row"], [1, "kpi-card"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-success) 10%, transparent)", "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-circle-check"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-error) 10%, transparent)", "color", "var(--mj-status-error)"], [1, "fa-solid", "fa-circle-xmark"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-warning) 10%, transparent)", "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-circle-half-stroke"], [1, "restore-list"], [1, "empty-state"], [1, "restore-card", 3, "ngClass"], [1, "restore-header", 3, "click"], [1, "restore-header-left"], [1, "status-icon", 3, "ngClass"], [1, "restore-info"], [1, "restore-label-name"], [1, "restore-date"], [1, "restore-header-right"], [1, "restore-progress-bar"], [1, "progress-fill", 3, "ngClass"], [1, "restore-count"], [1, "expand-icon", 3, "ngClass"], [1, "restore-details"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", 3, "ngClass"], [1, "detail-value"], [1, "error-log"], [1, "detail-value", "detail-mono"], [1, "error-log-header"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log-content"], [1, "fa-solid", "fa-clock-rotate-left", "empty-icon"]], template: function VersionHistoryRestoreResourceComponent_Template(rf, ctx) { if (rf & 1) {
423
453
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
424
454
  i0.ɵɵelement(3, "mj-stat-badge", 2);
425
455
  i0.ɵɵelementEnd();
426
456
  i0.ɵɵelementStart(4, "div", 3)(5, "mj-refresh-button", 4);
427
457
  i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_refresh_button_Clicked_5_listener() { return ctx.Refresh(); });
428
458
  i0.ɵɵelementEnd()();
429
- i0.ɵɵelementStart(6, "div", 5)(7, "mj-filter-chip", 6);
430
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_7_listener() { return ctx.OnStatusFilterChange("Complete"); });
431
- i0.ɵɵelementEnd();
432
- i0.ɵɵelementStart(8, "mj-filter-chip", 7);
433
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_8_listener() { return ctx.OnStatusFilterChange("Error"); });
434
- i0.ɵɵelementEnd();
435
- i0.ɵɵelementStart(9, "mj-filter-chip", 8);
436
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_9_listener() { return ctx.OnStatusFilterChange("Partial"); });
437
- i0.ɵɵelementEnd()()();
438
- i0.ɵɵelementStart(10, "mj-page-body");
439
- i0.ɵɵconditionalCreate(11, VersionHistoryRestoreResourceComponent_Conditional_11_Template, 1, 0, "mj-loading", 9);
440
- i0.ɵɵconditionalCreate(12, VersionHistoryRestoreResourceComponent_Conditional_12_Template, 35, 6);
459
+ i0.ɵɵelementStart(6, "div", 5)(7, "mj-filter-popover", 6);
460
+ i0.ɵɵlistener("ClearAllRequested", function VersionHistoryRestoreResourceComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { return ctx.resetStatusFilter(); });
461
+ i0.ɵɵelementStart(8, "mj-filter-panel", 7);
462
+ i0.ɵɵlistener("ValuesChange", function VersionHistoryRestoreResourceComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function VersionHistoryRestoreResourceComponent_Template_mj_filter_panel_Reset_8_listener() { return ctx.resetStatusFilter(); });
463
+ i0.ɵɵelementEnd()()()();
464
+ i0.ɵɵelementStart(9, "mj-page-body");
465
+ i0.ɵɵconditionalCreate(10, VersionHistoryRestoreResourceComponent_Conditional_10_Template, 1, 0, "mj-loading", 8);
466
+ i0.ɵɵconditionalCreate(11, VersionHistoryRestoreResourceComponent_Conditional_11_Template, 35, 6);
441
467
  i0.ɵɵelementEnd()();
442
468
  } if (rf & 2) {
443
469
  i0.ɵɵadvance(3);
@@ -445,16 +471,14 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
445
471
  i0.ɵɵadvance(2);
446
472
  i0.ɵɵproperty("Loading", ctx.IsLoading);
447
473
  i0.ɵɵadvance(2);
448
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Complete");
449
- i0.ɵɵadvance();
450
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Error");
474
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
451
475
  i0.ɵɵadvance();
452
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Partial");
476
+ i0.ɵɵproperty("Fields", ctx.statusFilterFields)("Values", ctx.statusFilterValues);
453
477
  i0.ɵɵadvance(2);
454
- i0.ɵɵconditional(ctx.IsLoading ? 11 : -1);
478
+ i0.ɵɵconditional(ctx.IsLoading ? 10 : -1);
455
479
  i0.ɵɵadvance();
456
- i0.ɵɵconditional(!ctx.IsLoading ? 12 : -1);
457
- } }, dependencies: [i1.NgClass, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJFilterChipComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i1.SlicePipe], styles: ["\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.restore-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded[_ngcontent-%COMP%] {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.status-success[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.status-failed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.status-progress[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.status-pending[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n\n.restore-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar[_ngcontent-%COMP%] {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.progress-fill.status-failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.progress-fill.status-progress[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.progress-fill.status-pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n\n.restore-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n\n\n.restore-details[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}"], changeDetection: 0 });
480
+ i0.ɵɵconditional(!ctx.IsLoading ? 11 : -1);
481
+ } }, dependencies: [i1.NgClass, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJFilterPopoverComponent, i2.MJFilterPanelComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i1.SlicePipe], styles: ["\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.restore-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded[_ngcontent-%COMP%] {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.status-success[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.status-failed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.status-progress[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.status-pending[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n\n.restore-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar[_ngcontent-%COMP%] {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.progress-fill.status-failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.progress-fill.status-progress[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.progress-fill.status-pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n\n.restore-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n\n\n.restore-details[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}"], changeDetection: 0 });
458
482
  };
459
483
  VersionHistoryRestoreResourceComponent = VersionHistoryRestoreResourceComponent_1 = __decorate([
460
484
  RegisterClass(BaseResourceComponent, 'VersionHistoryRestoreResource')
@@ -462,7 +486,7 @@ VersionHistoryRestoreResourceComponent = VersionHistoryRestoreResourceComponent_
462
486
  export { VersionHistoryRestoreResourceComponent };
463
487
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VersionHistoryRestoreResourceComponent, [{
464
488
  type: Component,
465
- args: [{ standalone: false, selector: 'mj-version-history-restore-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Restore History\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Track all restore operations and their outcomes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredRestores.length\"\n [Total]=\"Restores.length\"\n Label=\"restores\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-filter-chip\n Label=\"Complete\"\n Icon=\"fa-solid fa-circle-check\"\n [Active]=\"StatusFilter === 'Complete'\"\n (Clicked)=\"OnStatusFilterChange('Complete')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Error\"\n Icon=\"fa-solid fa-circle-xmark\"\n [Active]=\"StatusFilter === 'Error'\"\n (Clicked)=\"OnStatusFilterChange('Error')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Partial\"\n Icon=\"fa-solid fa-circle-half-stroke\"\n [Active]=\"StatusFilter === 'Partial'\"\n (Clicked)=\"OnStatusFilterChange('Partial')\">\n </mj-filter-chip>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading) {\n <mj-loading text=\"Loading restore history...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{TotalRestores}}</div>\n <div class=\"kpi-label\">Total Restores</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{SuccessfulRestores}}</div>\n <div class=\"kpi-label\">Successful</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error);\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FailedRestores}}</div>\n <div class=\"kpi-label\">Failed</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-circle-half-stroke\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{PartialRestores}}</div>\n <div class=\"kpi-label\">Partial</div>\n </div>\n </div>\n </div>\n <!-- Restore List -->\n @if (FilteredRestores.length > 0) {\n <div class=\"restore-list\">\n @for (restore of FilteredRestores; track restore) {\n <div class=\"restore-card\"\n [ngClass]=\"{'expanded': IsExpanded(restore.ID)}\">\n <div class=\"restore-header\" (click)=\"ToggleExpand(restore.ID)\">\n <div class=\"restore-header-left\">\n <i [class]=\"GetStatusIcon(restore.Status)\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n class=\"status-icon\"></i>\n <div class=\"restore-info\">\n <div class=\"restore-label-name\">\n {{restore.VersionLabel}}\n </div>\n @if (restore.StartedAt) {\n <div class=\"restore-date\">{{FormatDate(restore.StartedAt)}}</div>\n }\n </div>\n </div>\n <div class=\"restore-header-right\">\n <div class=\"restore-progress-bar\">\n <div class=\"progress-fill\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n [style.width.%]=\"GetProgressPercent(restore)\">\n </div>\n </div>\n <span class=\"restore-count\">\n {{restore.CompletedItems ?? 0}} / {{restore.TotalItems ?? 0}} items\n </span>\n <i class=\"fa-solid\"\n [ngClass]=\"IsExpanded(restore.ID) ? 'fa-chevron-up' : 'fa-chevron-down'\"\n class=\"expand-icon\">\n </i>\n </div>\n </div>\n <!-- Expanded Details -->\n @if (IsExpanded(restore.ID)) {\n <div class=\"restore-details\">\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\" [ngClass]=\"GetStatusClass(restore.Status)\">\n {{restore.Status}}\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Completed</span>\n <span class=\"detail-value\">{{restore.CompletedItems ?? 0}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Failed</span>\n <span class=\"detail-value\" [class.text-error]=\"(restore.FailedItems ?? 0) > 0\">\n {{restore.FailedItems ?? 0}}\n </span>\n </div>\n @if (restore.User) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Restored By</span>\n <span class=\"detail-value\">{{restore.User}}</span>\n </div>\n }\n @if (restore.PreRestoreLabelID) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Pre-Restore Label</span>\n @if (restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabel}}\n </span>\n }\n @if (!restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabelID | slice:0:20}}...\n </span>\n }\n </div>\n }\n </div>\n @if (restore.ErrorLog) {\n <div class=\"error-log\">\n <div class=\"error-log-header\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n Error Log\n </div>\n <pre class=\"error-log-content\">{{restore.ErrorLog}}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (FilteredRestores.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-clock-rotate-left empty-icon\"></i>\n <h3>No restore operations found</h3>\n @if (StatusFilter) {\n <p>\n Try adjusting your filters.\n </p>\n }\n @if (!StatusFilter) {\n <p>\n No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state.\n </p>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Restore List */\n.restore-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon {\n font-size: 20px;\n}\n\n.status-success { color: var(--mj-status-success); }\n.status-failed { color: var(--mj-status-error); }\n.status-progress { color: var(--mj-brand-primary); }\n.status-pending { color: var(--mj-status-warning); }\n\n.restore-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success { background: var(--mj-status-success); }\n.progress-fill.status-failed { background: var(--mj-status-error); }\n.progress-fill.status-progress { background: var(--mj-brand-primary); }\n.progress-fill.status-pending { background: var(--mj-status-warning); }\n\n.restore-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n/* Expanded Details */\n.restore-details {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error {\n color: var(--mj-status-error);\n}\n\n/* Error Log */\n.error-log {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row { grid-template-columns: repeat(2, 1fr); }\n}\n"] }]
489
+ args: [{ standalone: false, selector: 'mj-version-history-restore-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Restore History\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Track all restore operations and their outcomes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredRestores.length\"\n [Total]=\"Restores.length\"\n Label=\"restores\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetStatusFilter()\">\n <mj-filter-panel\n [Fields]=\"statusFilterFields\"\n [Values]=\"statusFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetStatusFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading) {\n <mj-loading text=\"Loading restore history...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{TotalRestores}}</div>\n <div class=\"kpi-label\">Total Restores</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{SuccessfulRestores}}</div>\n <div class=\"kpi-label\">Successful</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error);\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FailedRestores}}</div>\n <div class=\"kpi-label\">Failed</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-circle-half-stroke\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{PartialRestores}}</div>\n <div class=\"kpi-label\">Partial</div>\n </div>\n </div>\n </div>\n <!-- Restore List -->\n @if (FilteredRestores.length > 0) {\n <div class=\"restore-list\">\n @for (restore of FilteredRestores; track restore) {\n <div class=\"restore-card\"\n [ngClass]=\"{'expanded': IsExpanded(restore.ID)}\">\n <div class=\"restore-header\" (click)=\"ToggleExpand(restore.ID)\">\n <div class=\"restore-header-left\">\n <i [class]=\"GetStatusIcon(restore.Status)\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n class=\"status-icon\"></i>\n <div class=\"restore-info\">\n <div class=\"restore-label-name\">\n {{restore.VersionLabel}}\n </div>\n @if (restore.StartedAt) {\n <div class=\"restore-date\">{{FormatDate(restore.StartedAt)}}</div>\n }\n </div>\n </div>\n <div class=\"restore-header-right\">\n <div class=\"restore-progress-bar\">\n <div class=\"progress-fill\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n [style.width.%]=\"GetProgressPercent(restore)\">\n </div>\n </div>\n <span class=\"restore-count\">\n {{restore.CompletedItems ?? 0}} / {{restore.TotalItems ?? 0}} items\n </span>\n <i class=\"fa-solid\"\n [ngClass]=\"IsExpanded(restore.ID) ? 'fa-chevron-up' : 'fa-chevron-down'\"\n class=\"expand-icon\">\n </i>\n </div>\n </div>\n <!-- Expanded Details -->\n @if (IsExpanded(restore.ID)) {\n <div class=\"restore-details\">\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\" [ngClass]=\"GetStatusClass(restore.Status)\">\n {{restore.Status}}\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Completed</span>\n <span class=\"detail-value\">{{restore.CompletedItems ?? 0}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Failed</span>\n <span class=\"detail-value\" [class.text-error]=\"(restore.FailedItems ?? 0) > 0\">\n {{restore.FailedItems ?? 0}}\n </span>\n </div>\n @if (restore.User) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Restored By</span>\n <span class=\"detail-value\">{{restore.User}}</span>\n </div>\n }\n @if (restore.PreRestoreLabelID) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Pre-Restore Label</span>\n @if (restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabel}}\n </span>\n }\n @if (!restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabelID | slice:0:20}}...\n </span>\n }\n </div>\n }\n </div>\n @if (restore.ErrorLog) {\n <div class=\"error-log\">\n <div class=\"error-log-header\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n Error Log\n </div>\n <pre class=\"error-log-content\">{{restore.ErrorLog}}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (FilteredRestores.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-clock-rotate-left empty-icon\"></i>\n <h3>No restore operations found</h3>\n @if (StatusFilter) {\n <p>\n Try adjusting your filters.\n </p>\n }\n @if (!StatusFilter) {\n <p>\n No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state.\n </p>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Restore List */\n.restore-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon {\n font-size: 20px;\n}\n\n.status-success { color: var(--mj-status-success); }\n.status-failed { color: var(--mj-status-error); }\n.status-progress { color: var(--mj-brand-primary); }\n.status-pending { color: var(--mj-status-warning); }\n\n.restore-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success { background: var(--mj-status-success); }\n.progress-fill.status-failed { background: var(--mj-status-error); }\n.progress-fill.status-progress { background: var(--mj-brand-primary); }\n.progress-fill.status-pending { background: var(--mj-status-warning); }\n\n.restore-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n/* Expanded Details */\n.restore-details {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error {\n color: var(--mj-status-error);\n}\n\n/* Error Log */\n.error-log {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row { grid-template-columns: repeat(2, 1fr); }\n}\n"] }]
466
490
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
467
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryRestoreResourceComponent, { className: "VersionHistoryRestoreResourceComponent", filePath: "src/VersionHistory/components/restore-resource.component.ts", lineNumber: 19 }); })();
491
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryRestoreResourceComponent, { className: "VersionHistoryRestoreResourceComponent", filePath: "src/VersionHistory/components/restore-resource.component.ts", lineNumber: 20 }); })();
468
492
  //# sourceMappingURL=restore-resource.component.js.map