@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.
- package/dist/AI/components/agents/agent-configuration.component.js +3 -3
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
- package/dist/AI/components/analytics/ai-analytics-resource.component.js +157 -137
- package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +4 -4
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +3 -3
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
- package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +329 -371
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +137 -142
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +111 -116
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Admin/admin-data-schema.component.js +13 -65
- package/dist/Admin/admin-data-schema.component.js.map +1 -1
- package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
- package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
- package/dist/Admin/admin-identity-access.component.js +13 -65
- package/dist/Admin/admin-identity-access.component.js.map +1 -1
- package/dist/Admin/admin-monitoring.component.js +13 -65
- package/dist/Admin/admin-monitoring.component.js.map +1 -1
- package/dist/Admin/base-admin-container.component.d.ts +9 -7
- package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
- package/dist/Admin/base-admin-container.component.js +26 -17
- package/dist/Admin/base-admin-container.component.js.map +1 -1
- package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
- package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
- package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
- package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
- package/dist/Communication/communication-new-message-resource.component.js +661 -0
- package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
- package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
- package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
- package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
- package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
- package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
- package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
- package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
- package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/app-state-inspector.component.js +46 -72
- package/dist/DevTools/app-state-inspector.component.js.map +1 -1
- package/dist/DevTools/class-registry.component.js +88 -100
- package/dist/DevTools/class-registry.component.js.map +1 -1
- package/dist/DevTools/event-monitor.component.js +158 -168
- package/dist/DevTools/event-monitor.component.js.map +1 -1
- package/dist/DevTools/graphql-console.component.js +257 -264
- package/dist/DevTools/graphql-console.component.js.map +1 -1
- package/dist/DevTools/layout-inspector.component.d.ts +5 -0
- package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
- package/dist/DevTools/layout-inspector.component.js +46 -64
- package/dist/DevTools/layout-inspector.component.js.map +1 -1
- package/dist/DevTools/lazy-module-status.component.js +75 -84
- package/dist/DevTools/lazy-module-status.component.js.map +1 -1
- package/dist/DevTools/settings-explorer.component.js +76 -85
- package/dist/DevTools/settings-explorer.component.js.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
- package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
- package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
- package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +97 -99
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +842 -855
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +78 -89
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
- package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
- package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
- package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/Lists/index.d.ts +1 -0
- package/dist/Lists/index.d.ts.map +1 -1
- package/dist/Lists/index.js +1 -0
- package/dist/Lists/index.js.map +1 -1
- package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
- package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
- package/dist/Lists/services/list-set-operations.service.js +236 -10
- package/dist/Lists/services/list-set-operations.service.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +19 -19
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
- package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
- package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
- package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
- package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +543 -629
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +50 -49
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +1 -1
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +16 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +9 -7
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +13 -4
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +1 -1
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +16 -1
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +10 -9
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +13 -2
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/dist/testing-dashboards.module.d.ts +1 -1
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +13 -1
- package/dist/testing-dashboards.module.js.map +1 -1
- 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)
|
|
22
|
-
i0.ɵɵpipe(
|
|
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(
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
72
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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",
|
|
77
|
-
i0.ɵɵelement(1, "i",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
129
|
+
i0.ɵɵelementStart(5, "th", 46);
|
|
132
130
|
i0.ɵɵtext(6, "Processed");
|
|
133
131
|
i0.ɵɵelementEnd();
|
|
134
|
-
i0.ɵɵelementStart(7, "th",
|
|
132
|
+
i0.ɵɵelementStart(7, "th", 46);
|
|
135
133
|
i0.ɵɵtext(8, "Created");
|
|
136
134
|
i0.ɵɵelementEnd();
|
|
137
|
-
i0.ɵɵelementStart(9, "th",
|
|
135
|
+
i0.ɵɵelementStart(9, "th", 46);
|
|
138
136
|
i0.ɵɵtext(10, "Updated");
|
|
139
137
|
i0.ɵɵelementEnd();
|
|
140
|
-
i0.ɵɵelementStart(11, "th",
|
|
138
|
+
i0.ɵɵelementStart(11, "th", 46);
|
|
141
139
|
i0.ɵɵtext(12, "Deleted");
|
|
142
140
|
i0.ɵɵelementEnd();
|
|
143
|
-
i0.ɵɵelementStart(13, "th",
|
|
141
|
+
i0.ɵɵelementStart(13, "th", 46);
|
|
144
142
|
i0.ɵɵtext(14, "Errored");
|
|
145
143
|
i0.ɵɵelementEnd();
|
|
146
|
-
i0.ɵɵelementStart(15, "th",
|
|
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",
|
|
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",
|
|
159
|
-
i0.ɵɵelement(2, "i",
|
|
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",
|
|
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",
|
|
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",
|
|
175
|
-
i0.ɵɵconditionalCreate(4, ActivityComponent_Conditional_18_For_3_Conditional_22_Conditional_4_Template, 6, 1, "div",
|
|
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",
|
|
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",
|
|
190
|
-
i0.ɵɵelement(2, "span")(3, "i",
|
|
191
|
-
i0.ɵɵelementStart(4, "div",
|
|
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",
|
|
192
|
+
i0.ɵɵelementStart(7, "span", 29);
|
|
195
193
|
i0.ɵɵtext(8);
|
|
196
194
|
i0.ɵɵelementEnd()();
|
|
197
|
-
i0.ɵɵelementStart(9, "div",
|
|
195
|
+
i0.ɵɵelementStart(9, "div", 30);
|
|
198
196
|
i0.ɵɵtext(10);
|
|
199
197
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(11, "div",
|
|
198
|
+
i0.ɵɵelementStart(11, "div", 31);
|
|
201
199
|
i0.ɵɵtext(12);
|
|
202
200
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(13, "div",
|
|
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",
|
|
208
|
-
i0.ɵɵconditionalCreate(17, ActivityComponent_Conditional_18_For_3_Conditional_17_Template, 1, 0, "i",
|
|
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",
|
|
208
|
+
i0.ɵɵelementStart(18, "div", 35);
|
|
211
209
|
i0.ɵɵtext(19);
|
|
212
210
|
i0.ɵɵelementEnd();
|
|
213
|
-
i0.ɵɵelementStart(20, "button",
|
|
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",
|
|
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",
|
|
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",
|
|
253
|
-
i0.ɵɵelement(2, "div",
|
|
250
|
+
i0.ɵɵelementStart(0, "div", 58)(1, "div", 64);
|
|
251
|
+
i0.ɵɵelement(2, "div", 65);
|
|
254
252
|
i0.ɵɵelementEnd();
|
|
255
|
-
i0.ɵɵelementStart(3, "div",
|
|
253
|
+
i0.ɵɵelementStart(3, "div", 66)(4, "span");
|
|
256
254
|
i0.ɵɵtext(5);
|
|
257
255
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(6, "span",
|
|
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",
|
|
277
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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",
|
|
282
|
-
i0.ɵɵelement(1, "i",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
335
|
+
i0.ɵɵelementStart(5, "th", 46);
|
|
338
336
|
i0.ɵɵtext(6, "Processed");
|
|
339
337
|
i0.ɵɵelementEnd();
|
|
340
|
-
i0.ɵɵelementStart(7, "th",
|
|
338
|
+
i0.ɵɵelementStart(7, "th", 46);
|
|
341
339
|
i0.ɵɵtext(8, "Created");
|
|
342
340
|
i0.ɵɵelementEnd();
|
|
343
|
-
i0.ɵɵelementStart(9, "th",
|
|
341
|
+
i0.ɵɵelementStart(9, "th", 46);
|
|
344
342
|
i0.ɵɵtext(10, "Updated");
|
|
345
343
|
i0.ɵɵelementEnd();
|
|
346
|
-
i0.ɵɵelementStart(11, "th",
|
|
344
|
+
i0.ɵɵelementStart(11, "th", 46);
|
|
347
345
|
i0.ɵɵtext(12, "Deleted");
|
|
348
346
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(13, "th",
|
|
347
|
+
i0.ɵɵelementStart(13, "th", 46);
|
|
350
348
|
i0.ɵɵtext(14, "Errors");
|
|
351
349
|
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵelementStart(15, "th",
|
|
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",
|
|
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",
|
|
365
|
-
i0.ɵɵelement(2, "i",
|
|
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",
|
|
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",
|
|
378
|
-
i0.ɵɵconditionalCreate(3, ActivityComponent_Conditional_18_Conditional_4_Conditional_21_Conditional_3_Template, 6, 1, "div",
|
|
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",
|
|
388
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
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",
|
|
393
|
-
i0.ɵɵelement(1, "i",
|
|
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",
|
|
400
|
+
i0.ɵɵelementStart(3, "td")(4, "span", 75);
|
|
403
401
|
i0.ɵɵtext(5);
|
|
404
402
|
i0.ɵɵelementEnd()();
|
|
405
|
-
i0.ɵɵelementStart(6, "td",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
457
|
+
i0.ɵɵelementStart(8, "span", 55);
|
|
460
458
|
i0.ɵɵtext(9);
|
|
461
459
|
i0.ɵɵelementEnd()();
|
|
462
|
-
i0.ɵɵelementStart(10, "button",
|
|
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",
|
|
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",
|
|
467
|
-
i0.ɵɵelementStart(13, "div",
|
|
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",
|
|
467
|
+
i0.ɵɵelement(15, "i", 61);
|
|
470
468
|
i0.ɵɵtext(16, " Entity Breakdown ");
|
|
471
469
|
i0.ɵɵelementEnd();
|
|
472
|
-
i0.ɵɵelementStart(17, "button",
|
|
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",
|
|
472
|
+
i0.ɵɵelement(18, "i", 62);
|
|
475
473
|
i0.ɵɵtext(19, " Watermarks ");
|
|
476
474
|
i0.ɵɵelementEnd()();
|
|
477
|
-
i0.ɵɵelementStart(20, "div",
|
|
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",
|
|
506
|
-
i0.ɵɵrepeaterCreate(2, ActivityComponent_Conditional_18_For_3_Template, 23, 29, "div",
|
|
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",
|
|
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", "
|
|
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,
|
|
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() {
|