@memberjunction/ng-dashboards 5.35.0 → 5.36.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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -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 +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -18,23 +18,21 @@ const _forTrack1 = ($index, $item) => $item.ID;
18
18
  const _forTrack2 = ($index, $item) => $item.EntityID;
19
19
  function ActivityComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
20
20
  i0.ɵɵelementStart(0, "div", 1);
21
- i0.ɵɵelement(1, "mj-stat-badge", 15)(2, "mj-stat-badge", 16)(3, "mj-stat-badge", 17)(4, "mj-stat-badge", 18);
22
- i0.ɵɵpipe(5, "number");
21
+ i0.ɵɵelement(1, "mj-stat-badge", 15)(2, "mj-stat-badge", 16)(3, "mj-stat-badge", 17);
22
+ i0.ɵɵpipe(4, "number");
23
23
  i0.ɵɵelementEnd();
24
24
  } if (rf & 2) {
25
25
  const ctx_r0 = i0.ɵɵnextContext();
26
26
  i0.ɵɵadvance();
27
- i0.ɵɵproperty("Count", ctx_r0.TotalRuns);
28
- i0.ɵɵadvance();
29
27
  i0.ɵɵproperty("Count", ctx_r0.SuccessfulRuns);
30
28
  i0.ɵɵadvance();
31
29
  i0.ɵɵproperty("Count", ctx_r0.FailedRuns);
32
30
  i0.ɵɵadvance();
33
- i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(5, 4, ctx_r0.TotalRecordsProcessed));
31
+ i0.ɵɵproperty("Count", i0.ɵɵpipeBind1(4, 3, ctx_r0.TotalRecordsProcessed));
34
32
  } }
35
33
  function ActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
36
34
  const _r2 = i0.ɵɵgetCurrentView();
37
- i0.ɵɵelementStart(0, "mj-filter-chip", 19);
35
+ i0.ɵɵelementStart(0, "mj-filter-chip", 18);
38
36
  i0.ɵɵlistener("Clicked", function ActivityComponent_For_10_Template_mj_filter_chip_Clicked_0_listener() { const status_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetStatusFilter(status_r3)); });
39
37
  i0.ɵɵelementEnd();
40
38
  } if (rf & 2) {
@@ -44,7 +42,7 @@ function ActivityComponent_For_10_Template(rf, ctx) { if (rf & 1) {
44
42
  } }
45
43
  function ActivityComponent_For_13_Template(rf, ctx) { if (rf & 1) {
46
44
  const _r4 = i0.ɵɵgetCurrentView();
47
- i0.ɵɵelementStart(0, "mj-filter-chip", 19);
45
+ i0.ɵɵelementStart(0, "mj-filter-chip", 18);
48
46
  i0.ɵɵlistener("Clicked", function ActivityComponent_For_13_Template_mj_filter_chip_Clicked_0_listener() { const d_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDateFilter(d_r5.Value)); });
49
47
  i0.ɵɵelementEnd();
50
48
  } if (rf & 2) {
@@ -54,27 +52,27 @@ function ActivityComponent_For_13_Template(rf, ctx) { if (rf & 1) {
54
52
  } }
55
53
  function ActivityComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
56
54
  i0.ɵɵelementStart(0, "div", 12);
57
- i0.ɵɵelement(1, "mj-loading", 20);
55
+ i0.ɵɵelement(1, "mj-loading", 19);
58
56
  i0.ɵɵelementEnd();
59
57
  } }
60
58
  function ActivityComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
61
59
  i0.ɵɵelementStart(0, "div", 13);
62
- i0.ɵɵelement(1, "i", 21);
60
+ i0.ɵɵelement(1, "i", 20);
63
61
  i0.ɵɵelementStart(2, "p");
64
62
  i0.ɵɵtext(3, "No runs found for the selected filters.");
65
63
  i0.ɵɵelementEnd()();
66
64
  } }
67
65
  function ActivityComponent_Conditional_18_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
68
- i0.ɵɵelement(0, "i", 35);
66
+ i0.ɵɵelement(0, "i", 34);
69
67
  } }
70
68
  function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelementStart(0, "div", 41);
72
- i0.ɵɵelement(1, "mj-loading", 45);
69
+ i0.ɵɵelementStart(0, "div", 40);
70
+ i0.ɵɵelement(1, "mj-loading", 44);
73
71
  i0.ɵɵelementEnd();
74
72
  } }
75
73
  function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
76
- i0.ɵɵelementStart(0, "div", 42);
77
- i0.ɵɵelement(1, "i", 46);
74
+ i0.ɵɵelementStart(0, "div", 41);
75
+ i0.ɵɵelement(1, "i", 45);
78
76
  i0.ɵɵtext(2, " No entity details for this run. ");
79
77
  i0.ɵɵelementEnd();
80
78
  } }
@@ -82,27 +80,27 @@ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For
82
80
  i0.ɵɵelementStart(0, "tr")(1, "td");
83
81
  i0.ɵɵtext(2);
84
82
  i0.ɵɵelementEnd();
85
- i0.ɵɵelementStart(3, "td", 47);
83
+ i0.ɵɵelementStart(3, "td", 46);
86
84
  i0.ɵɵtext(4);
87
85
  i0.ɵɵpipe(5, "number");
88
86
  i0.ɵɵelementEnd();
89
- i0.ɵɵelementStart(6, "td", 49);
87
+ i0.ɵɵelementStart(6, "td", 48);
90
88
  i0.ɵɵtext(7);
91
89
  i0.ɵɵpipe(8, "number");
92
90
  i0.ɵɵelementEnd();
93
- i0.ɵɵelementStart(9, "td", 50);
91
+ i0.ɵɵelementStart(9, "td", 49);
94
92
  i0.ɵɵtext(10);
95
93
  i0.ɵɵpipe(11, "number");
96
94
  i0.ɵɵelementEnd();
97
- i0.ɵɵelementStart(12, "td", 47);
95
+ i0.ɵɵelementStart(12, "td", 46);
98
96
  i0.ɵɵtext(13);
99
97
  i0.ɵɵpipe(14, "number");
100
98
  i0.ɵɵelementEnd();
101
- i0.ɵɵelementStart(15, "td", 51);
99
+ i0.ɵɵelementStart(15, "td", 50);
102
100
  i0.ɵɵtext(16);
103
101
  i0.ɵɵpipe(17, "number");
104
102
  i0.ɵɵelementEnd();
105
- i0.ɵɵelementStart(18, "td", 47);
103
+ i0.ɵɵelementStart(18, "td", 46);
106
104
  i0.ɵɵtext(19);
107
105
  i0.ɵɵpipe(20, "number");
108
106
  i0.ɵɵelementEnd()();
@@ -125,29 +123,29 @@ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For
125
123
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r9.RecordsSkipped));
126
124
  } }
127
125
  function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
128
- i0.ɵɵelementStart(0, "table", 43)(1, "thead")(2, "tr")(3, "th");
126
+ i0.ɵɵelementStart(0, "table", 42)(1, "thead")(2, "tr")(3, "th");
129
127
  i0.ɵɵtext(4, "Entity");
130
128
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(5, "th", 47);
129
+ i0.ɵɵelementStart(5, "th", 46);
132
130
  i0.ɵɵtext(6, "Processed");
133
131
  i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(7, "th", 47);
132
+ i0.ɵɵelementStart(7, "th", 46);
135
133
  i0.ɵɵtext(8, "Created");
136
134
  i0.ɵɵelementEnd();
137
- i0.ɵɵelementStart(9, "th", 47);
135
+ i0.ɵɵelementStart(9, "th", 46);
138
136
  i0.ɵɵtext(10, "Updated");
139
137
  i0.ɵɵelementEnd();
140
- i0.ɵɵelementStart(11, "th", 47);
138
+ i0.ɵɵelementStart(11, "th", 46);
141
139
  i0.ɵɵtext(12, "Deleted");
142
140
  i0.ɵɵelementEnd();
143
- i0.ɵɵelementStart(13, "th", 47);
141
+ i0.ɵɵelementStart(13, "th", 46);
144
142
  i0.ɵɵtext(14, "Errored");
145
143
  i0.ɵɵelementEnd();
146
- i0.ɵɵelementStart(15, "th", 47);
144
+ i0.ɵɵelementStart(15, "th", 46);
147
145
  i0.ɵɵtext(16, "Skipped");
148
146
  i0.ɵɵelementEnd()()();
149
147
  i0.ɵɵelementStart(17, "tbody");
150
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 48, _forTrack2);
148
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_For_19_Template, 21, 21, "tr", 47, _forTrack2);
151
149
  i0.ɵɵelementEnd()();
152
150
  } if (rf & 2) {
153
151
  const ctx_r0 = i0.ɵɵnextContext(4);
@@ -155,11 +153,11 @@ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Tem
155
153
  i0.ɵɵrepeater(ctx_r0.GetExpandedDetails());
156
154
  } }
157
155
  function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵelementStart(0, "div", 44)(1, "div", 52);
159
- i0.ɵɵelement(2, "i", 35);
156
+ i0.ɵɵelementStart(0, "div", 43)(1, "div", 51);
157
+ i0.ɵɵelement(2, "i", 34);
160
158
  i0.ɵɵtext(3, " Error Log ");
161
159
  i0.ɵɵelementEnd();
162
- i0.ɵɵelementStart(4, "pre", 53);
160
+ i0.ɵɵelementStart(4, "pre", 52);
163
161
  i0.ɵɵtext(5);
164
162
  i0.ɵɵelementEnd()();
165
163
  } if (rf & 2) {
@@ -169,10 +167,10 @@ function ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Tem
169
167
  } }
170
168
  function ActivityComponent_Conditional_18_For_3_Conditional_22_Template(rf, ctx) { if (rf & 1) {
171
169
  const _r8 = i0.ɵɵgetCurrentView();
172
- i0.ɵɵelementStart(0, "div", 40);
170
+ i0.ɵɵelementStart(0, "div", 39);
173
171
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
174
- i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 41)(2, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 42)(3, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 43);
175
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 44);
172
+ i0.ɵɵconditionalCreate(1, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_1_Template, 2, 0, "div", 40)(2, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_2_Template, 3, 0, "div", 41)(3, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_3_Template, 20, 0, "table", 42);
173
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div", 43);
176
174
  i0.ɵɵelementEnd();
177
175
  } if (rf & 2) {
178
176
  const run_r7 = i0.ɵɵnextContext().$implicit;
@@ -184,37 +182,37 @@ function ActivityComponent_Conditional_18_For_3_Conditional_22_Template(rf, ctx)
184
182
  } }
185
183
  function ActivityComponent_Conditional_18_For_3_Template(rf, ctx) { if (rf & 1) {
186
184
  const _r6 = i0.ɵɵgetCurrentView();
187
- i0.ɵɵelementStart(0, "div", 25);
185
+ i0.ɵɵelementStart(0, "div", 24);
188
186
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_div_click_0_listener() { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(run_r7.ID)); });
189
- i0.ɵɵelementStart(1, "div", 26);
190
- i0.ɵɵelement(2, "span")(3, "i", 27);
191
- i0.ɵɵelementStart(4, "div", 28)(5, "span", 29);
187
+ i0.ɵɵelementStart(1, "div", 25);
188
+ i0.ɵɵelement(2, "span")(3, "i", 26);
189
+ i0.ɵɵelementStart(4, "div", 27)(5, "span", 28);
192
190
  i0.ɵɵtext(6);
193
191
  i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(7, "span", 30);
192
+ i0.ɵɵelementStart(7, "span", 29);
195
193
  i0.ɵɵtext(8);
196
194
  i0.ɵɵelementEnd()();
197
- i0.ɵɵelementStart(9, "div", 31);
195
+ i0.ɵɵelementStart(9, "div", 30);
198
196
  i0.ɵɵtext(10);
199
197
  i0.ɵɵelementEnd();
200
- i0.ɵɵelementStart(11, "div", 32);
198
+ i0.ɵɵelementStart(11, "div", 31);
201
199
  i0.ɵɵtext(12);
202
200
  i0.ɵɵelementEnd();
203
- i0.ɵɵelementStart(13, "div", 33);
201
+ i0.ɵɵelementStart(13, "div", 32);
204
202
  i0.ɵɵtext(14);
205
203
  i0.ɵɵpipe(15, "number");
206
204
  i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(16, "div", 34);
208
- i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i", 35);
205
+ i0.ɵɵelementStart(16, "div", 33);
206
+ i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i", 34);
209
207
  i0.ɵɵelementEnd();
210
- i0.ɵɵelementStart(18, "div", 36);
208
+ i0.ɵɵelementStart(18, "div", 35);
211
209
  i0.ɵɵtext(19);
212
210
  i0.ɵɵelementEnd();
213
- i0.ɵɵelementStart(20, "button", 37);
211
+ i0.ɵɵelementStart(20, "button", 36);
214
212
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_For_3_Template_button_click_20_listener($event) { const run_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); ctx_r0.ToggleExpand(run_r7.ID); return i0.ɵɵresetView($event.stopPropagation()); });
215
- i0.ɵɵelement(21, "i", 38);
213
+ i0.ɵɵelement(21, "i", 37);
216
214
  i0.ɵɵelementEnd()();
217
- i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_For_3_Conditional_22_Template, 5, 2, "div", 39);
215
+ i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_For_3_Conditional_22_Template, 5, 2, "div", 38);
218
216
  i0.ɵɵelementEnd();
219
217
  } if (rf & 2) {
220
218
  const run_r7 = ctx.$implicit;
@@ -249,13 +247,13 @@ function ActivityComponent_Conditional_18_For_3_Template(rf, ctx) { if (rf & 1)
249
247
  i0.ɵɵconditional(ctx_r0.IsExpanded(run_r7.ID) ? 22 : -1);
250
248
  } }
251
249
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(rf, ctx) { if (rf & 1) {
252
- i0.ɵɵelementStart(0, "div", 59)(1, "div", 65);
253
- i0.ɵɵelement(2, "div", 66);
250
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 64);
251
+ i0.ɵɵelement(2, "div", 65);
254
252
  i0.ɵɵelementEnd();
255
- i0.ɵɵelementStart(3, "div", 67)(4, "span");
253
+ i0.ɵɵelementStart(3, "div", 66)(4, "span");
256
254
  i0.ɵɵtext(5);
257
255
  i0.ɵɵelementEnd();
258
- i0.ɵɵelementStart(6, "span", 68);
256
+ i0.ɵɵelementStart(6, "span", 67);
259
257
  i0.ɵɵtext(7);
260
258
  i0.ɵɵelementEnd();
261
259
  i0.ɵɵelementStart(8, "span");
@@ -273,13 +271,13 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template(
273
271
  i0.ɵɵtextInterpolate(ctx_r0.FormatDate(ctx_r0.GetSelectedRun().EndedAt));
274
272
  } }
275
273
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template(rf, ctx) { if (rf & 1) {
276
- i0.ɵɵelementStart(0, "div", 69);
277
- i0.ɵɵelement(1, "mj-loading", 73);
274
+ i0.ɵɵelementStart(0, "div", 68);
275
+ i0.ɵɵelement(1, "mj-loading", 72);
278
276
  i0.ɵɵelementEnd();
279
277
  } }
280
278
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 70);
282
- i0.ɵɵelement(1, "i", 46);
279
+ i0.ɵɵelementStart(0, "div", 69);
280
+ i0.ɵɵelement(1, "i", 45);
283
281
  i0.ɵɵelementStart(2, "p");
284
282
  i0.ɵɵtext(3, "No entity detail records for this run.");
285
283
  i0.ɵɵelementEnd()();
@@ -288,27 +286,27 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
288
286
  i0.ɵɵelementStart(0, "tr")(1, "td");
289
287
  i0.ɵɵtext(2);
290
288
  i0.ɵɵelementEnd();
291
- i0.ɵɵelementStart(3, "td", 47);
289
+ i0.ɵɵelementStart(3, "td", 46);
292
290
  i0.ɵɵtext(4);
293
291
  i0.ɵɵpipe(5, "number");
294
292
  i0.ɵɵelementEnd();
295
- i0.ɵɵelementStart(6, "td", 49);
293
+ i0.ɵɵelementStart(6, "td", 48);
296
294
  i0.ɵɵtext(7);
297
295
  i0.ɵɵpipe(8, "number");
298
296
  i0.ɵɵelementEnd();
299
- i0.ɵɵelementStart(9, "td", 50);
297
+ i0.ɵɵelementStart(9, "td", 49);
300
298
  i0.ɵɵtext(10);
301
299
  i0.ɵɵpipe(11, "number");
302
300
  i0.ɵɵelementEnd();
303
- i0.ɵɵelementStart(12, "td", 47);
301
+ i0.ɵɵelementStart(12, "td", 46);
304
302
  i0.ɵɵtext(13);
305
303
  i0.ɵɵpipe(14, "number");
306
304
  i0.ɵɵelementEnd();
307
- i0.ɵɵelementStart(15, "td", 51);
305
+ i0.ɵɵelementStart(15, "td", 50);
308
306
  i0.ɵɵtext(16);
309
307
  i0.ɵɵpipe(17, "number");
310
308
  i0.ɵɵelementEnd();
311
- i0.ɵɵelementStart(18, "td", 47);
309
+ i0.ɵɵelementStart(18, "td", 46);
312
310
  i0.ɵɵtext(19);
313
311
  i0.ɵɵpipe(20, "number");
314
312
  i0.ɵɵelementEnd()();
@@ -331,29 +329,29 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
331
329
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(20, 19, detail_r11.RecordsSkipped));
332
330
  } }
333
331
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template(rf, ctx) { if (rf & 1) {
334
- i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
332
+ i0.ɵɵelementStart(0, "table", 70)(1, "thead")(2, "tr")(3, "th");
335
333
  i0.ɵɵtext(4, "Entity");
336
334
  i0.ɵɵelementEnd();
337
- i0.ɵɵelementStart(5, "th", 47);
335
+ i0.ɵɵelementStart(5, "th", 46);
338
336
  i0.ɵɵtext(6, "Processed");
339
337
  i0.ɵɵelementEnd();
340
- i0.ɵɵelementStart(7, "th", 47);
338
+ i0.ɵɵelementStart(7, "th", 46);
341
339
  i0.ɵɵtext(8, "Created");
342
340
  i0.ɵɵelementEnd();
343
- i0.ɵɵelementStart(9, "th", 47);
341
+ i0.ɵɵelementStart(9, "th", 46);
344
342
  i0.ɵɵtext(10, "Updated");
345
343
  i0.ɵɵelementEnd();
346
- i0.ɵɵelementStart(11, "th", 47);
344
+ i0.ɵɵelementStart(11, "th", 46);
347
345
  i0.ɵɵtext(12, "Deleted");
348
346
  i0.ɵɵelementEnd();
349
- i0.ɵɵelementStart(13, "th", 47);
347
+ i0.ɵɵelementStart(13, "th", 46);
350
348
  i0.ɵɵtext(14, "Errors");
351
349
  i0.ɵɵelementEnd();
352
- i0.ɵɵelementStart(15, "th", 47);
350
+ i0.ɵɵelementStart(15, "th", 46);
353
351
  i0.ɵɵtext(16, "Skipped");
354
352
  i0.ɵɵelementEnd()()();
355
353
  i0.ɵɵelementStart(17, "tbody");
356
- i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 48, _forTrack2);
354
+ i0.ɵɵrepeaterCreate(18, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_For_19_Template, 21, 21, "tr", 47, _forTrack2);
357
355
  i0.ɵɵelementEnd()();
358
356
  } if (rf & 2) {
359
357
  const ctx_r0 = i0.ɵɵnextContext(4);
@@ -361,11 +359,11 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
361
359
  i0.ɵɵrepeater(ctx_r0.SelectedRunDetails);
362
360
  } }
363
361
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "div", 72)(1, "div", 52);
365
- i0.ɵɵelement(2, "i", 35);
362
+ i0.ɵɵelementStart(0, "div", 71)(1, "div", 51);
363
+ i0.ɵɵelement(2, "i", 34);
366
364
  i0.ɵɵtext(3, " Error Log ");
367
365
  i0.ɵɵelementEnd();
368
- i0.ɵɵelementStart(4, "pre", 53);
366
+ i0.ɵɵelementStart(4, "pre", 52);
369
367
  i0.ɵɵtext(5);
370
368
  i0.ɵɵelementEnd()();
371
369
  } if (rf & 2) {
@@ -374,8 +372,8 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Condition
374
372
  i0.ɵɵtextInterpolate(ctx_r0.GetSelectedRun().ErrorLog);
375
373
  } }
376
374
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(rf, ctx) { if (rf & 1) {
377
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 71);
378
- i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 72);
375
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_0_Template, 2, 0, "div", 68)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_1_Template, 4, 0, "div", 69)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_2_Template, 20, 0, "table", 70);
376
+ i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div", 71);
379
377
  } if (rf & 2) {
380
378
  let tmp_4_0;
381
379
  const ctx_r0 = i0.ɵɵnextContext(3);
@@ -384,13 +382,13 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template(
384
382
  i0.ɵɵconditional(((tmp_4_0 = ctx_r0.GetSelectedRun()) == null ? null : tmp_4_0.ErrorLog) ? 3 : -1);
385
383
  } }
386
384
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
387
- i0.ɵɵelementStart(0, "div", 69);
388
- i0.ɵɵelement(1, "mj-loading", 74);
385
+ i0.ɵɵelementStart(0, "div", 68);
386
+ i0.ɵɵelement(1, "mj-loading", 73);
389
387
  i0.ɵɵelementEnd();
390
388
  } }
391
389
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
392
- i0.ɵɵelementStart(0, "div", 70);
393
- i0.ɵɵelement(1, "i", 75);
390
+ i0.ɵɵelementStart(0, "div", 69);
391
+ i0.ɵɵelement(1, "i", 74);
394
392
  i0.ɵɵelementStart(2, "p");
395
393
  i0.ɵɵtext(3, "No watermarks recorded for this integration.");
396
394
  i0.ɵɵelementEnd()();
@@ -399,10 +397,10 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Condition
399
397
  i0.ɵɵelementStart(0, "tr")(1, "td");
400
398
  i0.ɵɵtext(2);
401
399
  i0.ɵɵelementEnd();
402
- i0.ɵɵelementStart(3, "td")(4, "span", 76);
400
+ i0.ɵɵelementStart(3, "td")(4, "span", 75);
403
401
  i0.ɵɵtext(5);
404
402
  i0.ɵɵelementEnd()();
405
- i0.ɵɵelementStart(6, "td", 77);
403
+ i0.ɵɵelementStart(6, "td", 76);
406
404
  i0.ɵɵtext(7);
407
405
  i0.ɵɵelementEnd();
408
406
  i0.ɵɵelementStart(8, "td");
@@ -421,7 +419,7 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Condition
421
419
  i0.ɵɵtextInterpolate(ctx_r0.FormatDate(wm_r12.LastSyncAt));
422
420
  } }
423
421
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
424
- i0.ɵɵelementStart(0, "table", 71)(1, "thead")(2, "tr")(3, "th");
422
+ i0.ɵɵelementStart(0, "table", 70)(1, "thead")(2, "tr")(3, "th");
425
423
  i0.ɵɵtext(4, "Entity Map");
426
424
  i0.ɵɵelementEnd();
427
425
  i0.ɵɵelementStart(5, "th");
@@ -442,39 +440,39 @@ function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Condition
442
440
  i0.ɵɵrepeater(ctx_r0.WatermarkData);
443
441
  } }
444
442
  function ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template(rf, ctx) { if (rf & 1) {
445
- i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 69)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 70)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 71);
443
+ i0.ɵɵconditionalCreate(0, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_0_Template, 2, 0, "div", 68)(1, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_1_Template, 4, 0, "div", 69)(2, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Conditional_2_Template, 14, 0, "table", 70);
446
444
  } if (rf & 2) {
447
445
  const ctx_r0 = i0.ɵɵnextContext(3);
448
446
  i0.ɵɵconditional(ctx_r0.IsLoadingWatermarks ? 0 : ctx_r0.WatermarkData.length === 0 ? 1 : 2);
449
447
  } }
450
448
  function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
451
449
  const _r10 = i0.ɵɵgetCurrentView();
452
- i0.ɵɵelementStart(0, "div", 24)(1, "div", 54)(2, "div", 55)(3, "h3");
450
+ i0.ɵɵelementStart(0, "div", 23)(1, "div", 53)(2, "div", 54)(3, "h3");
453
451
  i0.ɵɵtext(4);
454
452
  i0.ɵɵelementEnd();
455
453
  i0.ɵɵelementStart(5, "span");
456
454
  i0.ɵɵelement(6, "i");
457
455
  i0.ɵɵtext(7);
458
456
  i0.ɵɵelementEnd();
459
- i0.ɵɵelementStart(8, "span", 56);
457
+ i0.ɵɵelementStart(8, "span", 55);
460
458
  i0.ɵɵtext(9);
461
459
  i0.ɵɵelementEnd()();
462
- i0.ɵɵelementStart(10, "button", 57);
460
+ i0.ɵɵelementStart(10, "button", 56);
463
461
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SelectRun(ctx_r0.SelectedRunID)); });
464
- i0.ɵɵelement(11, "i", 58);
462
+ i0.ɵɵelement(11, "i", 57);
465
463
  i0.ɵɵelementEnd()();
466
- i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template, 10, 5, "div", 59);
467
- i0.ɵɵelementStart(13, "div", 60)(14, "button", 61);
464
+ i0.ɵɵconditionalCreate(12, ActivityComponent_Conditional_18_Conditional_4_Conditional_12_Template, 10, 5, "div", 58);
465
+ i0.ɵɵelementStart(13, "div", 59)(14, "button", 60);
468
466
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("entities")); });
469
- i0.ɵɵelement(15, "i", 62);
467
+ i0.ɵɵelement(15, "i", 61);
470
468
  i0.ɵɵtext(16, " Entity Breakdown ");
471
469
  i0.ɵɵelementEnd();
472
- i0.ɵɵelementStart(17, "button", 61);
470
+ i0.ɵɵelementStart(17, "button", 60);
473
471
  i0.ɵɵlistener("click", function ActivityComponent_Conditional_18_Conditional_4_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r10); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.SetDetailTab("watermarks")); });
474
- i0.ɵɵelement(18, "i", 63);
472
+ i0.ɵɵelement(18, "i", 62);
475
473
  i0.ɵɵtext(19, " Watermarks ");
476
474
  i0.ɵɵelementEnd()();
477
- i0.ɵɵelementStart(20, "div", 64);
475
+ i0.ɵɵelementStart(20, "div", 63);
478
476
  i0.ɵɵconditionalCreate(21, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Template, 4, 2);
479
477
  i0.ɵɵconditionalCreate(22, ActivityComponent_Conditional_18_Conditional_4_Conditional_22_Template, 3, 1);
480
478
  i0.ɵɵelementEnd()();
@@ -502,10 +500,10 @@ function ActivityComponent_Conditional_18_Conditional_4_Template(rf, ctx) { if (
502
500
  i0.ɵɵconditional(ctx_r0.ActiveDetailTab === "watermarks" ? 22 : -1);
503
501
  } }
504
502
  function ActivityComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
505
- i0.ɵɵelementStart(0, "div", 14)(1, "div", 22);
506
- i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div", 23, _forTrack1);
503
+ i0.ɵɵelementStart(0, "div", 14)(1, "div", 21);
504
+ i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div", 22, _forTrack1);
507
505
  i0.ɵɵelementEnd();
508
- i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_Conditional_4_Template, 23, 14, "div", 24);
506
+ i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_Conditional_4_Template, 23, 14, "div", 23);
509
507
  i0.ɵɵelementEnd();
510
508
  } if (rf & 2) {
511
509
  const ctx_r0 = i0.ɵɵnextContext();
@@ -891,9 +889,9 @@ let ActivityComponent = class ActivityComponent extends BaseResourceComponent {
891
889
  return 'fa-solid fa-clock-rotate-left';
892
890
  }
893
891
  static ɵfac = /*@__PURE__*/ (() => { let ɵActivityComponent_BaseFactory; return function ActivityComponent_Factory(__ngFactoryType__) { return (ɵActivityComponent_BaseFactory || (ɵActivityComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ActivityComponent)))(__ngFactoryType__ || ActivityComponent); }; })();
894
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "Label", "Active"], ["aria-hidden", "true", 1, "toolbar-divider"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "total", 3, "Count"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], [3, "Clicked", "Label", "Active"], ["text", "Loading activity...", "size", "medium"], [1, "fa-solid", "fa-inbox"], [1, "run-list-panel"], [1, "run-row", 3, "selected"], [1, "detail-panel"], [1, "run-row", 3, "click"], [1, "run-row-main"], [1, "status-icon"], [1, "run-info"], [1, "run-integration"], [1, "run-company"], [1, "run-meta", 3, "title"], [1, "run-meta", "run-duration"], [1, "run-meta", "run-records"], [1, "run-meta", "run-errors"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "run-meta", "run-user"], ["title", "Show entity breakdown", 1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "expanded-section"], [1, "expanded-section", 3, "click"], [1, "expanded-loading"], [1, "expanded-empty"], [1, "entity-table"], [1, "error-log-block"], ["text", "Loading breakdown...", "size", "small"], [1, "fa-solid", "fa-circle-info"], [1, "num-col"], [3, "error-row"], [1, "num-col", "created-col"], [1, "num-col", "updated-col"], [1, "num-col", "error-col"], [1, "error-log-label"], [1, "error-log-content"], [1, "detail-header"], [1, "detail-header-info"], [1, "detail-time"], ["title", "Close", 1, "close-detail-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "duration-bar-container"], [1, "detail-tabs"], [1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-droplet"], [1, "detail-content"], [1, "duration-bar-track"], [1, "duration-bar-fill"], [1, "duration-bar-labels"], [1, "duration-bar-value"], [1, "detail-loading"], [1, "detail-empty"], [1, "detail-table"], [1, "error-log-block", "detail-error-log"], ["text", "Loading details...", "size", "small"], ["text", "Loading watermarks...", "size", "small"], [1, "fa-solid", "fa-droplet-slash"], [1, "type-badge"], [1, "mono-cell", "watermark-value"]], template: function ActivityComponent_Template(rf, ctx) { if (rf & 1) {
892
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityComponent, selectors: [["app-integration-activity"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 11, consts: [["Title", "Integration Activity", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Sync run history and outcomes"], ["meta", ""], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["toolbar", ""], ["Placeholder", "Search integrations...", 3, "ValueChange", "Value"], [3, "Label", "Active"], ["aria-hidden", "true", 1, "toolbar-divider"], [3, "Flex"], [1, "activity-container"], [1, "loading-area"], [1, "empty-state"], [1, "split-view"], ["Label", "succeeded", "Variant", "success", 3, "Count"], ["Label", "failed", "Variant", "error", 3, "Count"], ["Label", "records", 3, "Count"], [3, "Clicked", "Label", "Active"], ["text", "Loading activity...", "size", "medium"], [1, "fa-solid", "fa-inbox"], [1, "run-list-panel"], [1, "run-row", 3, "selected"], [1, "detail-panel"], [1, "run-row", 3, "click"], [1, "run-row-main"], [1, "status-icon"], [1, "run-info"], [1, "run-integration"], [1, "run-company"], [1, "run-meta", 3, "title"], [1, "run-meta", "run-duration"], [1, "run-meta", "run-records"], [1, "run-meta", "run-errors"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "run-meta", "run-user"], ["title", "Show entity breakdown", 1, "expand-btn", 3, "click"], [1, "fa-solid", "fa-chevron-down"], [1, "expanded-section"], [1, "expanded-section", 3, "click"], [1, "expanded-loading"], [1, "expanded-empty"], [1, "entity-table"], [1, "error-log-block"], ["text", "Loading breakdown...", "size", "small"], [1, "fa-solid", "fa-circle-info"], [1, "num-col"], [3, "error-row"], [1, "num-col", "created-col"], [1, "num-col", "updated-col"], [1, "num-col", "error-col"], [1, "error-log-label"], [1, "error-log-content"], [1, "detail-header"], [1, "detail-header-info"], [1, "detail-time"], ["title", "Close", 1, "close-detail-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "duration-bar-container"], [1, "detail-tabs"], [1, "tab-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-droplet"], [1, "detail-content"], [1, "duration-bar-track"], [1, "duration-bar-fill"], [1, "duration-bar-labels"], [1, "duration-bar-value"], [1, "detail-loading"], [1, "detail-empty"], [1, "detail-table"], [1, "error-log-block", "detail-error-log"], ["text", "Loading details...", "size", "small"], ["text", "Loading watermarks...", "size", "small"], [1, "fa-solid", "fa-droplet-slash"], [1, "type-badge"], [1, "mono-cell", "watermark-value"]], template: function ActivityComponent_Template(rf, ctx) { if (rf & 1) {
895
893
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0);
896
- i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 6, 6, "div", 1);
894
+ i0.ɵɵconditionalCreate(2, ActivityComponent_Conditional_2_Template, 5, 5, "div", 1);
897
895
  i0.ɵɵelementStart(3, "div", 2)(4, "mj-filter-popover", 3);
898
896
  i0.ɵɵlistener("ClearAllRequested", function ActivityComponent_Template_mj_filter_popover_ClearAllRequested_4_listener() { return ctx.ResetIntegrationFilter(); });
899
897
  i0.ɵɵelementStart(5, "mj-filter-panel", 4);
@@ -945,7 +943,7 @@ ActivityComponent = __decorate([
945
943
  export { ActivityComponent };
946
944
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityComponent, [{
947
945
  type: Component,
948
- args: [{ standalone: false, selector: 'app-integration-activity', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integration Activity\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Sync run history and outcomes\">\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\n <mj-stat-badge [Count]=\"TotalRuns\" Label=\"total\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"SuccessfulRuns\" Label=\"succeeded\" Variant=\"success\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"FailedRuns\" Label=\"failed\" Variant=\"error\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"TotalRecordsProcessed | number\" Label=\"records\"></mj-stat-badge>\n </div>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ResetIntegrationFilter()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n (Reset)=\"ResetIntegrationFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search integrations...\"\n [Value]=\"SearchQuery\"\n (ValueChange)=\"OnSearchValueChange($event)\">\n </mj-page-search>\n @for (status of StatusOptions; track status) {\n <mj-filter-chip\n [Label]=\"status\"\n [Active]=\"StatusFilter === status\"\n (Clicked)=\"SetStatusFilter(status)\">\n </mj-filter-chip>\n }\n <span class=\"toolbar-divider\" aria-hidden=\"true\"></span>\n @for (d of DateOptions; track d.Value) {\n <mj-filter-chip\n [Label]=\"d.Label\"\n [Active]=\"DateFilter === d.Value\"\n (Clicked)=\"SetDateFilter(d.Value)\">\n </mj-filter-chip>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n<div class=\"activity-container\">\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n /* padding / scroll now owned by <mj-page-body>; flex sizing keeps the\n inner split-view (flex: 1 + min-height: 0) able to fill remaining height. */\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n/* Slot passthrough now lives in <mj-page-header>'s SCSS; per-section\n .integration-header-* rules deleted. Stat badge styling now lives in\n <mj-stat-badge>; per-section .integration-stat-badge* rules deleted. */\n\n/* Vertical separator between distinct chip groups in the toolbar slot. */\n.toolbar-divider {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
946
+ args: [{ standalone: false, selector: 'app-integration-activity', template: "<mj-page-layout>\n <mj-page-header\n Title=\"Integration Activity\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Sync run history and outcomes\">\n <!-- [meta] retains the succeeded/failed status pills (genuine variant\n signal \u2014 error rate at a glance) and the records aggregate\n (non-trivially derived: count of records across all runs).\n \"Total runs\" dropped per chrome slot discipline audit Task B \u2014\n that count equals the visible list's row count. -->\n @if (!IsLoading && AllRuns.length > 0) {\n <div meta>\n <mj-stat-badge [Count]=\"SuccessfulRuns\" Label=\"succeeded\" Variant=\"success\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"FailedRuns\" Label=\"failed\" Variant=\"error\"></mj-stat-badge>\n <mj-stat-badge [Count]=\"TotalRecordsProcessed | number\" Label=\"records\"></mj-stat-badge>\n </div>\n }\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"ResetIntegrationFilter()\">\n <mj-filter-panel\n [Fields]=\"ActivityFilterFields\"\n [Values]=\"ActivityFilterValues\"\n (ValuesChange)=\"OnFilterValuesChange($event)\"\n (Reset)=\"ResetIntegrationFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search integrations...\"\n [Value]=\"SearchQuery\"\n (ValueChange)=\"OnSearchValueChange($event)\">\n </mj-page-search>\n @for (status of StatusOptions; track status) {\n <mj-filter-chip\n [Label]=\"status\"\n [Active]=\"StatusFilter === status\"\n (Clicked)=\"SetStatusFilter(status)\">\n </mj-filter-chip>\n }\n <span class=\"toolbar-divider\" aria-hidden=\"true\"></span>\n @for (d of DateOptions; track d.Value) {\n <mj-filter-chip\n [Label]=\"d.Label\"\n [Active]=\"DateFilter === d.Value\"\n (Clicked)=\"SetDateFilter(d.Value)\">\n </mj-filter-chip>\n }\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n<div class=\"activity-container\">\n\n <!-- Loading state -->\n @if (IsLoading) {\n <div class=\"loading-area\">\n <mj-loading text=\"Loading activity...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Empty state -->\n @if (!IsLoading && FilteredRuns.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No runs found for the selected filters.</p>\n </div>\n }\n\n <!-- Split View: Run List + Detail Panel -->\n @if (!IsLoading && FilteredRuns.length > 0) {\n <div class=\"split-view\">\n\n <!-- Left panel: Run list -->\n <div class=\"run-list-panel\">\n @for (run of FilteredRuns; track run.ID) {\n <!-- Run row -->\n <div class=\"run-row\"\n [class.selected]=\"IsSelectedRun(run.ID)\"\n (click)=\"SelectRun(run.ID)\">\n <div class=\"run-row-main\">\n <!-- Status indicator -->\n <span [class]=\"GetStatusDotClass(run.Status)\"></span>\n <i [class]=\"GetStatusIcon(run.Status)\"\n [class.icon-green]=\"run.Status === 'Success'\"\n [class.icon-red]=\"run.Status === 'Failed'\"\n [class.icon-amber]=\"run.Status === 'In Progress'\"\n [class.icon-gray]=\"run.Status === 'Pending'\"\n class=\"status-icon\"></i>\n\n <!-- Integration info -->\n <div class=\"run-info\">\n <span class=\"run-integration\">{{ run.Integration }}</span>\n <span class=\"run-company\">{{ run.Company }}</span>\n </div>\n\n <!-- Started time -->\n <div class=\"run-meta\" [title]=\"FormatAbsoluteDate(run.StartedAt)\">\n {{ GetRelativeTime(run.StartedAt) }}\n </div>\n\n <!-- Duration -->\n <div class=\"run-meta run-duration\">\n {{ FormatDuration(run.StartedAt, run.EndedAt) }}\n </div>\n\n <!-- Records -->\n <div class=\"run-meta run-records\">\n {{ run.TotalRecords | number }}\n </div>\n\n <!-- Errors -->\n <div class=\"run-meta run-errors\" [class.has-errors]=\"run.ErrorLog\">\n @if (run.ErrorLog) {\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n }\n </div>\n\n <!-- Triggered by -->\n <div class=\"run-meta run-user\">\n {{ run.RunByUser || 'Scheduled' }}\n </div>\n\n <!-- Expand chevron -->\n <button class=\"expand-btn\"\n (click)=\"ToggleExpand(run.ID); $event.stopPropagation()\"\n title=\"Show entity breakdown\">\n <i class=\"fa-solid fa-chevron-down\"\n [class.rotated]=\"IsExpanded(run.ID)\"></i>\n </button>\n </div>\n\n <!-- Expanded section: entity breakdown -->\n @if (IsExpanded(run.ID)) {\n <div class=\"expanded-section\" (click)=\"$event.stopPropagation()\">\n @if (IsLoadingExpandedDetails()) {\n <div class=\"expanded-loading\">\n <mj-loading text=\"Loading breakdown...\" size=\"small\"></mj-loading>\n </div>\n } @else if (GetExpandedDetails().length === 0) {\n <div class=\"expanded-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n No entity details for this run.\n </div>\n } @else {\n <table class=\"entity-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errored</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of GetExpandedDetails(); track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log in expanded view -->\n @if (run.ErrorLog) {\n <div class=\"error-log-block\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ run.ErrorLog }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Right panel: Detail -->\n @if (SelectedRunID && GetSelectedRun()) {\n <div class=\"detail-panel\">\n <div class=\"detail-header\">\n <div class=\"detail-header-info\">\n <h3>{{ GetSelectedRun()!.Integration }}</h3>\n <span [class]=\"StatusChipClass(GetSelectedRun()!.Status)\">\n <i [class]=\"GetStatusIcon(GetSelectedRun()!.Status)\"></i>\n {{ GetSelectedRun()!.Status }}\n </span>\n <span class=\"detail-time\">{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n </div>\n <button class=\"close-detail-btn\" (click)=\"SelectRun(SelectedRunID!)\" title=\"Close\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Duration bar -->\n @if (GetSelectedRun()!.StartedAt && GetSelectedRun()!.EndedAt) {\n <div class=\"duration-bar-container\">\n <div class=\"duration-bar-track\">\n <div class=\"duration-bar-fill\"\n [style.width.%]=\"GetDurationBarWidth(GetSelectedRun()!)\"></div>\n </div>\n <div class=\"duration-bar-labels\">\n <span>{{ FormatDate(GetSelectedRun()!.StartedAt) }}</span>\n <span class=\"duration-bar-value\">{{ GetDurationBarLabel(GetSelectedRun()!) }}</span>\n <span>{{ FormatDate(GetSelectedRun()!.EndedAt) }}</span>\n </div>\n </div>\n }\n\n <!-- Tabs -->\n <div class=\"detail-tabs\">\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'entities'\"\n (click)=\"SetDetailTab('entities')\">\n <i class=\"fa-solid fa-table\"></i> Entity Breakdown\n </button>\n <button class=\"tab-btn\" [class.active]=\"ActiveDetailTab === 'watermarks'\"\n (click)=\"SetDetailTab('watermarks')\">\n <i class=\"fa-solid fa-droplet\"></i> Watermarks\n </button>\n </div>\n\n <div class=\"detail-content\">\n <!-- Entity breakdown tab -->\n @if (ActiveDetailTab === 'entities') {\n @if (IsLoadingDetail) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading details...\" size=\"small\"></mj-loading>\n </div>\n } @else if (SelectedRunDetails.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>No entity detail records for this run.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity</th>\n <th class=\"num-col\">Processed</th>\n <th class=\"num-col\">Created</th>\n <th class=\"num-col\">Updated</th>\n <th class=\"num-col\">Deleted</th>\n <th class=\"num-col\">Errors</th>\n <th class=\"num-col\">Skipped</th>\n </tr>\n </thead>\n <tbody>\n @for (detail of SelectedRunDetails; track detail.EntityID) {\n <tr [class.error-row]=\"detail.RecordsErrored > 0\">\n <td>{{ detail.Entity }}</td>\n <td class=\"num-col\">{{ detail.RecordsProcessed | number }}</td>\n <td class=\"num-col created-col\">{{ detail.RecordsCreated | number }}</td>\n <td class=\"num-col updated-col\">{{ detail.RecordsUpdated | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsDeleted | number }}</td>\n <td class=\"num-col error-col\">{{ detail.RecordsErrored | number }}</td>\n <td class=\"num-col\">{{ detail.RecordsSkipped | number }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n\n <!-- Error log -->\n @if (GetSelectedRun()?.ErrorLog) {\n <div class=\"error-log-block detail-error-log\">\n <div class=\"error-log-label\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> Error Log\n </div>\n <pre class=\"error-log-content\">{{ GetSelectedRun()!.ErrorLog }}</pre>\n </div>\n }\n }\n\n <!-- Watermarks tab -->\n @if (ActiveDetailTab === 'watermarks') {\n @if (IsLoadingWatermarks) {\n <div class=\"detail-loading\">\n <mj-loading text=\"Loading watermarks...\" size=\"small\"></mj-loading>\n </div>\n } @else if (WatermarkData.length === 0) {\n <div class=\"detail-empty\">\n <i class=\"fa-solid fa-droplet-slash\"></i>\n <p>No watermarks recorded for this integration.</p>\n </div>\n } @else {\n <table class=\"detail-table\">\n <thead>\n <tr>\n <th>Entity Map</th>\n <th>Type</th>\n <th>Current Value</th>\n <th>Last Applied</th>\n </tr>\n </thead>\n <tbody>\n @for (wm of WatermarkData; track wm.ID) {\n <tr>\n <td>{{ wm.EntityMap }}</td>\n <td><span class=\"type-badge\">{{ wm.WatermarkType }}</span></td>\n <td class=\"mono-cell watermark-value\">{{ FormatWatermark(wm.WatermarkValue) }}</td>\n <td>{{ FormatDate(wm.LastSyncAt) }}</td>\n </tr>\n }\n </tbody>\n </table>\n }\n }\n </div>\n </div>\n }\n\n </div>\n }\n\n</div>\n </mj-page-body>\n</mj-page-layout>\n", styles: [":host {\n display: block;\n height: 100%;\n}\n\n.activity-container {\n /* padding / scroll now owned by <mj-page-body>; flex sizing keeps the\n inner split-view (flex: 1 + min-height: 0) able to fill remaining height. */\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n gap: 14px;\n}\n\n/* Slot passthrough now lives in <mj-page-header>'s SCSS; per-section\n .integration-header-* rules deleted. Stat badge styling now lives in\n <mj-stat-badge>; per-section .integration-stat-badge* rules deleted. */\n\n/* Vertical separator between distinct chip groups in the toolbar slot. */\n.toolbar-divider {\n display: inline-block;\n width: 1px;\n height: 18px;\n background: var(--mj-border-default);\n margin: 0 4px;\n}\n\n/* \u2500\u2500 Loading / Empty \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.loading-area {\n display: flex;\n justify-content: center;\n padding: 48px;\n}\n\n.empty-state {\n text-align: center;\n padding: 48px;\n color: var(--mj-text-disabled);\n}\n\n.empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n display: block;\n}\n\n.empty-state p {\n margin: 0;\n font-size: 14px;\n}\n\n/* \u2500\u2500 Split View \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.split-view {\n display: flex;\n gap: 16px;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n}\n\n/* \u2500\u2500 Run List Panel (left 70%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.run-list-panel {\n flex: 7;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n}\n\n.run-row {\n border-bottom: 1px solid var(--mj-border-subtle);\n cursor: pointer;\n transition: background 0.1s;\n}\n\n.run-row:hover {\n background: var(--mj-bg-page);\n}\n\n.run-row.selected {\n background: var(--mj-status-info-bg);\n}\n\n.run-row-main {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n}\n\n/* Status indicator */\n.status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.status-icon {\n font-size: 14px;\n width: 16px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.icon-green { color: var(--mj-color-success-600); }\n.icon-red { color: var(--mj-status-error); }\n.icon-amber { color: var(--mj-status-warning); }\n.icon-gray { color: var(--mj-text-disabled); }\n\n/* Run info */\n.run-info {\n flex: 2;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.run-integration {\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-company {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* Meta columns */\n.run-meta {\n flex-shrink: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n min-width: 60px;\n text-align: right;\n}\n\n.run-duration {\n font-variant-numeric: tabular-nums;\n min-width: 56px;\n}\n\n.run-records {\n font-variant-numeric: tabular-nums;\n min-width: 48px;\n}\n\n.run-errors {\n min-width: 24px;\n text-align: center;\n}\n\n.run-errors.has-errors {\n color: var(--mj-status-error);\n}\n\n.run-user {\n min-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.expand-btn {\n background: none;\n border: none;\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-disabled);\n font-size: 11px;\n transition: background 0.15s, transform 0.2s;\n flex-shrink: 0;\n}\n\n.expand-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n.expand-btn i.rotated {\n transform: rotate(180deg);\n}\n\n/* \u2500\u2500 Expanded Section \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.expanded-section {\n padding: 8px 14px 14px 48px;\n background: var(--mj-bg-page);\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n.expanded-loading,\n.expanded-empty {\n padding: 16px;\n text-align: center;\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.expanded-empty i {\n margin-right: 6px;\n}\n\n.entity-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.entity-table th {\n text-align: left;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n font-size: 11px;\n border-bottom: 1px solid var(--mj-border-default);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.entity-table td {\n padding: 5px 8px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.entity-table .num-col,\n.detail-table .num-col {\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n\n.entity-table .created-col,\n.detail-table .created-col {\n color: var(--mj-color-success-600);\n font-weight: 600;\n}\n\n.entity-table .updated-col,\n.detail-table .updated-col {\n color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.entity-table .error-col,\n.detail-table .error-col {\n color: var(--mj-color-error-600);\n font-weight: 600;\n}\n\n.error-row {\n background: var(--mj-status-error-bg);\n}\n\n/* \u2500\u2500 Error Log Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.error-log-block {\n margin-top: 10px;\n}\n\n.error-log-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-color-error-600);\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.error-log-content {\n margin: 0;\n padding: 10px 12px;\n background: var(--mj-text-primary);\n color: var(--mj-bg-surface-sunken);\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n border-radius: 8px;\n white-space: pre-wrap;\n word-break: break-word;\n max-height: 200px;\n overflow-y: auto;\n line-height: 1.5;\n}\n\n.detail-error-log {\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-subtle);\n}\n\n/* \u2500\u2500 Detail Panel (right 30%) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n.detail-panel {\n flex: 3;\n min-width: 340px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.detail-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n gap: 12px;\n}\n\n.detail-header-info {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-width: 0;\n}\n\n.detail-header-info h3 {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.detail-time {\n font-size: 12px;\n color: var(--mj-text-disabled);\n}\n\n.close-detail-btn {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mj-text-disabled);\n font-size: 16px;\n width: 28px;\n height: 28px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.close-detail-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-secondary);\n}\n\n/* Duration bar */\n.duration-bar-container {\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-subtle);\n}\n\n.duration-bar-track {\n height: 6px;\n background: var(--mj-bg-surface-active);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.duration-bar-fill {\n height: 100%;\n background: linear-gradient(90deg, var(--mj-brand-primary), var(--mj-color-accent-400));\n border-radius: 3px;\n transition: width 0.3s;\n}\n\n.duration-bar-labels {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 4px;\n font-size: 10px;\n color: var(--mj-text-disabled);\n}\n\n.duration-bar-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n\n/* Tabs */\n.detail-tabs {\n display: flex;\n border-bottom: 1px solid var(--mj-border-subtle);\n padding: 0 16px;\n gap: 2px;\n}\n\n.tab-btn {\n background: none;\n border: none;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-disabled);\n display: flex;\n align-items: center;\n gap: 5px;\n transition: color 0.15s, border-color 0.15s;\n}\n\n.tab-btn:hover {\n color: var(--mj-brand-primary);\n}\n\n.tab-btn.active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n/* Detail content area */\n.detail-content {\n flex: 1;\n overflow-y: auto;\n}\n\n.detail-loading,\n.detail-empty {\n padding: 24px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.detail-empty i {\n font-size: 24px;\n margin-bottom: 8px;\n display: block;\n}\n\n.detail-empty p {\n margin: 0;\n font-size: 13px;\n}\n\n.detail-table {\n width: 100%;\n border-collapse: collapse;\n font-size: 12px;\n}\n\n.detail-table th {\n text-align: left;\n padding: 8px 10px;\n color: var(--mj-text-disabled);\n font-weight: 600;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: var(--mj-bg-page);\n font-size: 11px;\n}\n\n.detail-table td {\n padding: 7px 10px;\n border-bottom: 1px solid var(--mj-bg-page);\n}\n\n.mono-cell {\n font-variant-numeric: tabular-nums;\n color: var(--mj-text-muted);\n}\n\n.watermark-value {\n font-family: 'SF Mono', 'Menlo', 'Consolas', monospace;\n font-size: 11px;\n}\n\n/* Status chips */\n.chip {\n font-size: 11px;\n font-weight: 600;\n padding: 3px 8px;\n border-radius: 10px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n white-space: nowrap;\n}\n\n.chip-green { background: var(--mj-color-success-100); color: var(--mj-color-success-600); }\n.chip-red { background: var(--mj-color-error-100); color: var(--mj-color-error-600); }\n.chip-amber { background: var(--mj-color-warning-100); color: var(--mj-color-warning-600); }\n.chip-gray { background: var(--mj-bg-surface-hover); color: var(--mj-text-muted); }\n\n/* Watermark type badge */\n.type-badge {\n display: inline-flex;\n padding: 2px 8px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-info-bg);\n color: var(--mj-brand-primary);\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n\n@media (max-width: 900px) {\n .split-view {\n flex-direction: column;\n }\n\n .detail-panel {\n min-width: 0;\n max-height: 50vh;\n }\n\n .run-user {\n display: none;\n }\n}\n"] }]
949
947
  }], null, null); })();
950
948
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityComponent, { className: "ActivityComponent", filePath: "src/Integration/components/activity/activity.component.ts", lineNumber: 39 }); })();
951
949
  export function LoadActivityComponent() {