@memberjunction/ng-dashboards 5.39.0 → 5.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +128 -4
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +548 -145
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
- package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
- package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
- package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
- package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
- package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
- package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +100 -2
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +603 -213
- package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -1
- package/dist/AI/components/autotagging/shared/classify.format.d.ts +15 -0
- package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -1
- package/dist/AI/components/autotagging/shared/classify.format.js +51 -0
- package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -1
- package/dist/AI/components/autotagging/shared/classify.types.d.ts +43 -0
- package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -1
- package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +38 -1
- package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/history-tab.component.js +185 -68
- package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +10 -1
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +249 -188
- package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +12 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js +377 -296
- package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +8 -0
- package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js +112 -68
- package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -1
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +9 -0
- package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/tabs/types-tab.component.js +87 -36
- package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -3
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +1 -1
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
- package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
- package/dist/AI/components/tags/tags-resource.component.js +28 -6
- package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +330 -302
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +2 -2
- package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
- package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +12 -9
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -120
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
- package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
- package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
- package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +48 -38
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +41 -1
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +12 -14
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +5 -14
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +3 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +57 -55
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
- package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
- package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
|
@@ -20,7 +20,8 @@ import { formatTokenCount } from '../shared/classify.format';
|
|
|
20
20
|
import * as i0 from "@angular/core";
|
|
21
21
|
import * as i1 from "@angular/forms";
|
|
22
22
|
import * as i2 from "@memberjunction/ng-ui-components";
|
|
23
|
-
import * as i3 from "
|
|
23
|
+
import * as i3 from "../components/classify-overview-analytics.component";
|
|
24
|
+
import * as i4 from "@angular/common";
|
|
24
25
|
const _forTrack0 = ($index, $item) => $item.Label;
|
|
25
26
|
const _forTrack1 = ($index, $item) => $item.Name + $item.SourceName + $item.TimeAgo;
|
|
26
27
|
const _forTrack2 = ($index, $item) => $item.ID;
|
|
@@ -28,11 +29,11 @@ const _forTrack3 = ($index, $item) => $item.Tag;
|
|
|
28
29
|
const _forTrack4 = ($index, $item) => $item.Name;
|
|
29
30
|
const _forTrack5 = ($index, $item) => $item.SourceName;
|
|
30
31
|
function ClassifyPipelineTabComponent_For_11_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
-
i0.ɵɵelement(0, "i",
|
|
32
|
+
i0.ɵɵelement(0, "i", 53);
|
|
32
33
|
} }
|
|
33
34
|
function ClassifyPipelineTabComponent_For_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
-
i0.ɵɵelementStart(0, "div",
|
|
35
|
-
i0.ɵɵconditionalCreate(1, ClassifyPipelineTabComponent_For_11_Conditional_6_Conditional_1_Template, 1, 0, "i",
|
|
35
|
+
i0.ɵɵelementStart(0, "div", 52);
|
|
36
|
+
i0.ɵɵconditionalCreate(1, ClassifyPipelineTabComponent_For_11_Conditional_6_Conditional_1_Template, 1, 0, "i", 53);
|
|
36
37
|
i0.ɵɵtext(2);
|
|
37
38
|
i0.ɵɵelementEnd();
|
|
38
39
|
} if (rf & 2) {
|
|
@@ -44,14 +45,14 @@ function ClassifyPipelineTabComponent_For_11_Conditional_6_Template(rf, ctx) { i
|
|
|
44
45
|
i0.ɵɵtextInterpolate1(" ", kpi_r1.Trend, " ");
|
|
45
46
|
} }
|
|
46
47
|
function ClassifyPipelineTabComponent_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
47
|
-
i0.ɵɵelementStart(0, "div", 9)(1, "div",
|
|
48
|
+
i0.ɵɵelementStart(0, "div", 9)(1, "div", 49);
|
|
48
49
|
i0.ɵɵtext(2);
|
|
49
50
|
i0.ɵɵpipe(3, "number");
|
|
50
51
|
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelementStart(4, "div",
|
|
52
|
+
i0.ɵɵelementStart(4, "div", 50);
|
|
52
53
|
i0.ɵɵtext(5);
|
|
53
54
|
i0.ɵɵelementEnd();
|
|
54
|
-
i0.ɵɵconditionalCreate(6, ClassifyPipelineTabComponent_For_11_Conditional_6_Template, 3, 4, "div",
|
|
55
|
+
i0.ɵɵconditionalCreate(6, ClassifyPipelineTabComponent_For_11_Conditional_6_Template, 3, 4, "div", 51);
|
|
55
56
|
i0.ɵɵelementEnd();
|
|
56
57
|
} if (rf & 2) {
|
|
57
58
|
const kpi_r1 = ctx.$implicit;
|
|
@@ -64,55 +65,55 @@ function ClassifyPipelineTabComponent_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
64
65
|
i0.ɵɵadvance();
|
|
65
66
|
i0.ɵɵconditional(kpi_r1.Trend ? 6 : -1);
|
|
66
67
|
} }
|
|
67
|
-
function
|
|
68
|
-
i0.ɵɵelement(0, "i",
|
|
68
|
+
function ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelement(0, "i", 56);
|
|
69
70
|
} }
|
|
70
|
-
function
|
|
71
|
-
i0.ɵɵelement(0, "i",
|
|
71
|
+
function ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
+
i0.ɵɵelement(0, "i", 57);
|
|
72
73
|
} }
|
|
73
|
-
function
|
|
74
|
+
function ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
74
75
|
i0.ɵɵelement(0, "i");
|
|
75
76
|
} if (rf & 2) {
|
|
76
77
|
const stage_r2 = i0.ɵɵnextContext().$implicit;
|
|
77
78
|
i0.ɵɵclassMap(stage_r2.Icon);
|
|
78
79
|
} }
|
|
79
|
-
function
|
|
80
|
-
i0.ɵɵelement(0, "div",
|
|
80
|
+
function ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵelement(0, "div", 61);
|
|
81
82
|
} if (rf & 2) {
|
|
82
83
|
const stage_r2 = i0.ɵɵnextContext().$implicit;
|
|
83
84
|
i0.ɵɵclassProp("connector-complete", stage_r2.Status === "complete");
|
|
84
85
|
} }
|
|
85
|
-
function
|
|
86
|
-
i0.ɵɵelementStart(0, "div",
|
|
87
|
-
i0.ɵɵconditionalCreate(2,
|
|
86
|
+
function ClassifyPipelineTabComponent_Conditional_16_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
i0.ɵɵelementStart(0, "div", 54)(1, "div", 55);
|
|
88
|
+
i0.ɵɵconditionalCreate(2, ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_2_Template, 1, 0, "i", 56)(3, ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_3_Template, 1, 0, "i", 57)(4, ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_4_Template, 1, 2, "i", 58);
|
|
88
89
|
i0.ɵɵelementEnd();
|
|
89
|
-
i0.ɵɵelementStart(5, "div",
|
|
90
|
+
i0.ɵɵelementStart(5, "div", 59);
|
|
90
91
|
i0.ɵɵtext(6);
|
|
91
92
|
i0.ɵɵelementEnd()();
|
|
92
|
-
i0.ɵɵconditionalCreate(7,
|
|
93
|
+
i0.ɵɵconditionalCreate(7, ClassifyPipelineTabComponent_Conditional_16_For_2_Conditional_7_Template, 1, 2, "div", 60);
|
|
93
94
|
} if (rf & 2) {
|
|
94
95
|
const stage_r2 = ctx.$implicit;
|
|
95
|
-
const ɵ$
|
|
96
|
-
const ɵ$
|
|
96
|
+
const ɵ$index_48_r3 = ctx.$index;
|
|
97
|
+
const ɵ$count_48_r4 = ctx.$count;
|
|
97
98
|
i0.ɵɵclassProp("stage-idle", stage_r2.Status === "idle")("stage-active", stage_r2.Status === "active")("stage-complete", stage_r2.Status === "complete");
|
|
98
99
|
i0.ɵɵadvance(2);
|
|
99
100
|
i0.ɵɵconditional(stage_r2.Status === "active" ? 2 : stage_r2.Status === "complete" ? 3 : 4);
|
|
100
101
|
i0.ɵɵadvance(4);
|
|
101
102
|
i0.ɵɵtextInterpolate(stage_r2.Name);
|
|
102
103
|
i0.ɵɵadvance();
|
|
103
|
-
i0.ɵɵconditional(!(ɵ$
|
|
104
|
+
i0.ɵɵconditional(!(ɵ$index_48_r3 === ɵ$count_48_r4 - 1) ? 7 : -1);
|
|
104
105
|
} }
|
|
105
|
-
function
|
|
106
|
-
i0.ɵɵelementStart(0, "div",
|
|
107
|
-
i0.ɵɵrepeaterCreate(1,
|
|
106
|
+
function ClassifyPipelineTabComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
108
|
+
i0.ɵɵrepeaterCreate(1, ClassifyPipelineTabComponent_Conditional_16_For_2_Template, 8, 9, null, null, _forTrack4);
|
|
108
109
|
i0.ɵɵelementEnd();
|
|
109
110
|
} if (rf & 2) {
|
|
110
111
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
111
112
|
i0.ɵɵadvance();
|
|
112
113
|
i0.ɵɵrepeater(ctx_r4.PipelineStages);
|
|
113
114
|
} }
|
|
114
|
-
function
|
|
115
|
-
i0.ɵɵelementStart(0, "div",
|
|
115
|
+
function ClassifyPipelineTabComponent_Conditional_17_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 67);
|
|
116
117
|
i0.ɵɵtext(1);
|
|
117
118
|
i0.ɵɵelementEnd();
|
|
118
119
|
} if (rf & 2) {
|
|
@@ -120,44 +121,44 @@ function ClassifyPipelineTabComponent_Conditional_15_Conditional_9_Template(rf,
|
|
|
120
121
|
i0.ɵɵadvance();
|
|
121
122
|
i0.ɵɵtextInterpolate(ctx_r4.RunCurrentItem);
|
|
122
123
|
} }
|
|
123
|
-
function
|
|
124
|
+
function ClassifyPipelineTabComponent_Conditional_17_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
124
125
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
125
|
-
i0.ɵɵelementStart(0, "button",
|
|
126
|
-
i0.ɵɵlistener("click", function
|
|
127
|
-
i0.ɵɵelement(1, "i",
|
|
126
|
+
i0.ɵɵelementStart(0, "button", 73);
|
|
127
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_17_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onPause()); });
|
|
128
|
+
i0.ɵɵelement(1, "i", 74);
|
|
128
129
|
i0.ɵɵtext(2, " Pause ");
|
|
129
130
|
i0.ɵɵelementEnd();
|
|
130
131
|
} if (rf & 2) {
|
|
131
132
|
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
132
133
|
i0.ɵɵproperty("disabled", !ctx_r4.CurrentProcessRunID);
|
|
133
134
|
} }
|
|
134
|
-
function
|
|
135
|
+
function ClassifyPipelineTabComponent_Conditional_17_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
135
136
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
136
|
-
i0.ɵɵelementStart(0, "button",
|
|
137
|
-
i0.ɵɵlistener("click", function
|
|
138
|
-
i0.ɵɵelement(1, "i",
|
|
137
|
+
i0.ɵɵelementStart(0, "button", 75);
|
|
138
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_17_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onResume()); });
|
|
139
|
+
i0.ɵɵelement(1, "i", 76);
|
|
139
140
|
i0.ɵɵtext(2, " Resume ");
|
|
140
141
|
i0.ɵɵelementEnd();
|
|
141
142
|
} }
|
|
142
|
-
function
|
|
143
|
+
function ClassifyPipelineTabComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
143
144
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
144
|
-
i0.ɵɵelementStart(0, "div",
|
|
145
|
+
i0.ɵɵelementStart(0, "div", 15)(1, "div", 62)(2, "span", 63);
|
|
145
146
|
i0.ɵɵtext(3);
|
|
146
147
|
i0.ɵɵelementEnd();
|
|
147
|
-
i0.ɵɵelementStart(4, "span",
|
|
148
|
+
i0.ɵɵelementStart(4, "span", 64);
|
|
148
149
|
i0.ɵɵtext(5);
|
|
149
150
|
i0.ɵɵpipe(6, "number");
|
|
150
151
|
i0.ɵɵelementEnd()();
|
|
151
|
-
i0.ɵɵelementStart(7, "div",
|
|
152
|
-
i0.ɵɵelement(8, "div",
|
|
153
|
-
i0.ɵɵelementEnd();
|
|
154
|
-
i0.ɵɵconditionalCreate(9,
|
|
155
|
-
i0.ɵɵelementStart(10, "div",
|
|
156
|
-
i0.ɵɵconditionalCreate(11,
|
|
157
|
-
i0.ɵɵconditionalCreate(12,
|
|
158
|
-
i0.ɵɵelementStart(13, "button",
|
|
159
|
-
i0.ɵɵlistener("click", function
|
|
160
|
-
i0.ɵɵelement(14, "i",
|
|
152
|
+
i0.ɵɵelementStart(7, "div", 65);
|
|
153
|
+
i0.ɵɵelement(8, "div", 66);
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
i0.ɵɵconditionalCreate(9, ClassifyPipelineTabComponent_Conditional_17_Conditional_9_Template, 2, 1, "div", 67);
|
|
156
|
+
i0.ɵɵelementStart(10, "div", 68);
|
|
157
|
+
i0.ɵɵconditionalCreate(11, ClassifyPipelineTabComponent_Conditional_17_Conditional_11_Template, 3, 1, "button", 69);
|
|
158
|
+
i0.ɵɵconditionalCreate(12, ClassifyPipelineTabComponent_Conditional_17_Conditional_12_Template, 3, 0, "button", 70);
|
|
159
|
+
i0.ɵɵelementStart(13, "button", 71);
|
|
160
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_17_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r6); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onCancel()); });
|
|
161
|
+
i0.ɵɵelement(14, "i", 72);
|
|
161
162
|
i0.ɵɵtext(15, " Cancel ");
|
|
162
163
|
i0.ɵɵelementEnd()()();
|
|
163
164
|
} if (rf & 2) {
|
|
@@ -176,15 +177,15 @@ function ClassifyPipelineTabComponent_Conditional_15_Template(rf, ctx) { if (rf
|
|
|
176
177
|
i0.ɵɵadvance();
|
|
177
178
|
i0.ɵɵconditional(ctx_r4.IsPaused ? 12 : -1);
|
|
178
179
|
} }
|
|
179
|
-
function
|
|
180
|
-
i0.ɵɵelement(0, "i",
|
|
180
|
+
function ClassifyPipelineTabComponent_Conditional_18_For_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
181
|
+
i0.ɵɵelement(0, "i", 83);
|
|
181
182
|
} }
|
|
182
|
-
function
|
|
183
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
183
|
+
function ClassifyPipelineTabComponent_Conditional_18_For_25_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 81);
|
|
184
185
|
i0.ɵɵtext(2);
|
|
185
186
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵelementStart(3, "td")(4, "span",
|
|
187
|
-
i0.ɵɵconditionalCreate(5,
|
|
187
|
+
i0.ɵɵelementStart(3, "td")(4, "span", 82);
|
|
188
|
+
i0.ɵɵconditionalCreate(5, ClassifyPipelineTabComponent_Conditional_18_For_25_Conditional_5_Template, 1, 0, "i", 83);
|
|
188
189
|
i0.ɵɵtext(6);
|
|
189
190
|
i0.ɵɵelementEnd()();
|
|
190
191
|
i0.ɵɵelementStart(7, "td");
|
|
@@ -220,17 +221,17 @@ function ClassifyPipelineTabComponent_Conditional_16_For_25_Template(rf, ctx) {
|
|
|
220
221
|
i0.ɵɵadvance();
|
|
221
222
|
i0.ɵɵtextInterpolate(row_r10.ErrorCount);
|
|
222
223
|
} }
|
|
223
|
-
function
|
|
224
|
+
function ClassifyPipelineTabComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
224
225
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
225
|
-
i0.ɵɵelementStart(0, "div",
|
|
226
|
-
i0.ɵɵelement(3, "i",
|
|
226
|
+
i0.ɵɵelementStart(0, "div", 16)(1, "div", 18)(2, "span", 19);
|
|
227
|
+
i0.ɵɵelement(3, "i", 77);
|
|
227
228
|
i0.ɵɵtext(4, " Per-Source Progress");
|
|
228
229
|
i0.ɵɵelementEnd();
|
|
229
|
-
i0.ɵɵelementStart(5, "button",
|
|
230
|
-
i0.ɵɵlistener("click", function
|
|
230
|
+
i0.ɵɵelementStart(5, "button", 78);
|
|
231
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_18_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onLoadLiveRunDetails()); });
|
|
231
232
|
i0.ɵɵelement(6, "i", 3);
|
|
232
233
|
i0.ɵɵelementEnd()();
|
|
233
|
-
i0.ɵɵelementStart(7, "div",
|
|
234
|
+
i0.ɵɵelementStart(7, "div", 79)(8, "table", 80)(9, "thead")(10, "tr")(11, "th");
|
|
234
235
|
i0.ɵɵtext(12, "Source");
|
|
235
236
|
i0.ɵɵelementEnd();
|
|
236
237
|
i0.ɵɵelementStart(13, "th");
|
|
@@ -249,21 +250,21 @@ function ClassifyPipelineTabComponent_Conditional_16_Template(rf, ctx) { if (rf
|
|
|
249
250
|
i0.ɵɵtext(22, "Errors");
|
|
250
251
|
i0.ɵɵelementEnd()()();
|
|
251
252
|
i0.ɵɵelementStart(23, "tbody");
|
|
252
|
-
i0.ɵɵrepeaterCreate(24,
|
|
253
|
+
i0.ɵɵrepeaterCreate(24, ClassifyPipelineTabComponent_Conditional_18_For_25_Template, 15, 11, "tr", null, _forTrack5);
|
|
253
254
|
i0.ɵɵelementEnd()()()();
|
|
254
255
|
} if (rf & 2) {
|
|
255
256
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
256
257
|
i0.ɵɵadvance(24);
|
|
257
258
|
i0.ɵɵrepeater(ctx_r4.LiveRunDetailRows);
|
|
258
259
|
} }
|
|
259
|
-
function
|
|
260
|
+
function ClassifyPipelineTabComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
260
261
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
261
|
-
i0.ɵɵelementStart(0, "button",
|
|
262
|
-
i0.ɵɵlistener("click", function
|
|
263
|
-
i0.ɵɵelement(1, "i",
|
|
262
|
+
i0.ɵɵelementStart(0, "button", 84);
|
|
263
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r4 = i0.ɵɵnextContext(); ctx_r4.FeedSearchQuery = ""; return i0.ɵɵresetView(ctx_r4.OnFeedSearchChange()); });
|
|
264
|
+
i0.ɵɵelement(1, "i", 85);
|
|
264
265
|
i0.ɵɵelementEnd();
|
|
265
266
|
} }
|
|
266
|
-
function
|
|
267
|
+
function ClassifyPipelineTabComponent_Conditional_35_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
267
268
|
i0.ɵɵelementStart(0, "p");
|
|
268
269
|
i0.ɵɵtext(1);
|
|
269
270
|
i0.ɵɵelementEnd();
|
|
@@ -272,23 +273,23 @@ function ClassifyPipelineTabComponent_Conditional_33_Conditional_2_Template(rf,
|
|
|
272
273
|
i0.ɵɵadvance();
|
|
273
274
|
i0.ɵɵtextInterpolate1("No items match \"", ctx_r4.FeedSearchQuery, "\"");
|
|
274
275
|
} }
|
|
275
|
-
function
|
|
276
|
+
function ClassifyPipelineTabComponent_Conditional_35_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
276
277
|
i0.ɵɵelementStart(0, "p");
|
|
277
278
|
i0.ɵɵtext(1, "No processed items yet.");
|
|
278
279
|
i0.ɵɵelementEnd();
|
|
279
280
|
} }
|
|
280
|
-
function
|
|
281
|
-
i0.ɵɵelementStart(0, "div",
|
|
282
|
-
i0.ɵɵelement(1, "i",
|
|
283
|
-
i0.ɵɵconditionalCreate(2,
|
|
281
|
+
function ClassifyPipelineTabComponent_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
283
|
+
i0.ɵɵelement(1, "i", 86);
|
|
284
|
+
i0.ɵɵconditionalCreate(2, ClassifyPipelineTabComponent_Conditional_35_Conditional_2_Template, 2, 1, "p")(3, ClassifyPipelineTabComponent_Conditional_35_Conditional_3_Template, 2, 0, "p");
|
|
284
285
|
i0.ɵɵelementEnd();
|
|
285
286
|
} if (rf & 2) {
|
|
286
287
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
287
288
|
i0.ɵɵadvance(2);
|
|
288
289
|
i0.ɵɵconditional(ctx_r4.FeedSearchQuery ? 2 : 3);
|
|
289
290
|
} }
|
|
290
|
-
function
|
|
291
|
-
i0.ɵɵelementStart(0, "span",
|
|
291
|
+
function ClassifyPipelineTabComponent_For_37_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelementStart(0, "span", 93);
|
|
292
293
|
i0.ɵɵtext(1);
|
|
293
294
|
i0.ɵɵelementEnd();
|
|
294
295
|
} if (rf & 2) {
|
|
@@ -296,21 +297,21 @@ function ClassifyPipelineTabComponent_For_35_For_9_Template(rf, ctx) { if (rf &
|
|
|
296
297
|
i0.ɵɵadvance();
|
|
297
298
|
i0.ɵɵtextInterpolate(tag_r14);
|
|
298
299
|
} }
|
|
299
|
-
function
|
|
300
|
+
function ClassifyPipelineTabComponent_For_37_Template(rf, ctx) { if (rf & 1) {
|
|
300
301
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
301
|
-
i0.ɵɵelementStart(0, "div",
|
|
302
|
-
i0.ɵɵlistener("click", function
|
|
303
|
-
i0.ɵɵelement(1, "div",
|
|
304
|
-
i0.ɵɵelementStart(2, "div",
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 87);
|
|
303
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_For_37_Template_div_click_0_listener() { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onFeedItemClick(ctx_r4.GetFeedItemOriginalIndex(item_r13))); });
|
|
304
|
+
i0.ɵɵelement(1, "div", 88);
|
|
305
|
+
i0.ɵɵelementStart(2, "div", 89)(3, "span", 90);
|
|
305
306
|
i0.ɵɵtext(4);
|
|
306
307
|
i0.ɵɵelementEnd();
|
|
307
|
-
i0.ɵɵelementStart(5, "span",
|
|
308
|
+
i0.ɵɵelementStart(5, "span", 91);
|
|
308
309
|
i0.ɵɵtext(6);
|
|
309
310
|
i0.ɵɵelementEnd()();
|
|
310
|
-
i0.ɵɵelementStart(7, "div",
|
|
311
|
-
i0.ɵɵrepeaterCreate(8,
|
|
311
|
+
i0.ɵɵelementStart(7, "div", 92);
|
|
312
|
+
i0.ɵɵrepeaterCreate(8, ClassifyPipelineTabComponent_For_37_For_9_Template, 2, 1, "span", 93, i0.ɵɵrepeaterTrackByIdentity);
|
|
312
313
|
i0.ɵɵelementEnd();
|
|
313
|
-
i0.ɵɵelementStart(10, "span",
|
|
314
|
+
i0.ɵɵelementStart(10, "span", 94);
|
|
314
315
|
i0.ɵɵtext(11);
|
|
315
316
|
i0.ɵɵelementEnd()();
|
|
316
317
|
} if (rf & 2) {
|
|
@@ -326,18 +327,18 @@ function ClassifyPipelineTabComponent_For_35_Template(rf, ctx) { if (rf & 1) {
|
|
|
326
327
|
i0.ɵɵadvance(3);
|
|
327
328
|
i0.ɵɵtextInterpolate(item_r13.TimeAgo);
|
|
328
329
|
} }
|
|
329
|
-
function
|
|
330
|
+
function ClassifyPipelineTabComponent_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
330
331
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
331
|
-
i0.ɵɵelementStart(0, "div",
|
|
332
|
-
i0.ɵɵlistener("click", function
|
|
333
|
-
i0.ɵɵelement(2, "i",
|
|
332
|
+
i0.ɵɵelementStart(0, "div", 32)(1, "button", 73);
|
|
333
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_38_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.FeedPrevPage()); });
|
|
334
|
+
i0.ɵɵelement(2, "i", 95);
|
|
334
335
|
i0.ɵɵelementEnd();
|
|
335
|
-
i0.ɵɵelementStart(3, "span",
|
|
336
|
+
i0.ɵɵelementStart(3, "span", 96);
|
|
336
337
|
i0.ɵɵtext(4);
|
|
337
338
|
i0.ɵɵelementEnd();
|
|
338
|
-
i0.ɵɵelementStart(5, "button",
|
|
339
|
-
i0.ɵɵlistener("click", function
|
|
340
|
-
i0.ɵɵelement(6, "i",
|
|
339
|
+
i0.ɵɵelementStart(5, "button", 73);
|
|
340
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_38_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r15); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.FeedNextPage()); });
|
|
341
|
+
i0.ɵɵelement(6, "i", 97);
|
|
341
342
|
i0.ɵɵelementEnd()();
|
|
342
343
|
} if (rf & 2) {
|
|
343
344
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
@@ -348,103 +349,136 @@ function ClassifyPipelineTabComponent_Conditional_36_Template(rf, ctx) { if (rf
|
|
|
348
349
|
i0.ɵɵadvance();
|
|
349
350
|
i0.ɵɵproperty("disabled", ctx_r4.FeedPage >= ctx_r4.FeedTotalPages - 1);
|
|
350
351
|
} }
|
|
351
|
-
function
|
|
352
|
-
i0.ɵɵ
|
|
352
|
+
function ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
i0.ɵɵelement(0, "i", 56);
|
|
354
|
+
i0.ɵɵtext(1, " Loading\u2026 ");
|
|
355
|
+
} }
|
|
356
|
+
function ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
357
|
+
i0.ɵɵelement(0, "i", 101);
|
|
358
|
+
i0.ɵɵtext(1, " Load more ");
|
|
359
|
+
} }
|
|
360
|
+
function ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
361
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
362
|
+
i0.ɵɵelementStart(0, "button", 100);
|
|
363
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onLoadMoreItems()); });
|
|
364
|
+
i0.ɵɵconditionalCreate(1, ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Conditional_1_Template, 2, 0)(2, ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Conditional_2_Template, 2, 0);
|
|
365
|
+
i0.ɵɵelementEnd();
|
|
366
|
+
} if (rf & 2) {
|
|
367
|
+
const ctx_r4 = i0.ɵɵnextContext(2);
|
|
368
|
+
i0.ɵɵproperty("disabled", ctx_r4.IsLoadingMoreItems);
|
|
369
|
+
i0.ɵɵadvance();
|
|
370
|
+
i0.ɵɵconditional(ctx_r4.IsLoadingMoreItems ? 1 : 2);
|
|
371
|
+
} }
|
|
372
|
+
function ClassifyPipelineTabComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
i0.ɵɵelementStart(0, "div", 33)(1, "span", 98);
|
|
374
|
+
i0.ɵɵtext(2);
|
|
375
|
+
i0.ɵɵelementEnd();
|
|
376
|
+
i0.ɵɵconditionalCreate(3, ClassifyPipelineTabComponent_Conditional_39_Conditional_3_Template, 3, 2, "button", 99);
|
|
377
|
+
i0.ɵɵelementEnd();
|
|
378
|
+
} if (rf & 2) {
|
|
379
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
380
|
+
i0.ɵɵadvance(2);
|
|
381
|
+
i0.ɵɵtextInterpolate2("Showing ", ctx_r4.FeedItems.length, " of ", ctx_r4.TotalItemCount, " items");
|
|
382
|
+
i0.ɵɵadvance();
|
|
383
|
+
i0.ɵɵconditional(ctx_r4.HasMoreItems ? 3 : -1);
|
|
384
|
+
} }
|
|
385
|
+
function ClassifyPipelineTabComponent_For_48_Template(rf, ctx) { if (rf & 1) {
|
|
386
|
+
i0.ɵɵelementStart(0, "div", 38)(1, "div", 102);
|
|
353
387
|
i0.ɵɵelement(2, "i");
|
|
354
388
|
i0.ɵɵelementEnd();
|
|
355
|
-
i0.ɵɵelementStart(3, "div",
|
|
389
|
+
i0.ɵɵelementStart(3, "div", 103)(4, "div", 104);
|
|
356
390
|
i0.ɵɵtext(5);
|
|
357
391
|
i0.ɵɵelementEnd();
|
|
358
|
-
i0.ɵɵelementStart(6, "div",
|
|
392
|
+
i0.ɵɵelementStart(6, "div", 105);
|
|
359
393
|
i0.ɵɵtext(7);
|
|
360
394
|
i0.ɵɵelementEnd()();
|
|
361
|
-
i0.ɵɵelement(8, "div",
|
|
395
|
+
i0.ɵɵelement(8, "div", 106);
|
|
362
396
|
i0.ɵɵelementEnd();
|
|
363
397
|
} if (rf & 2) {
|
|
364
|
-
const
|
|
398
|
+
const source_r17 = ctx.$implicit;
|
|
365
399
|
i0.ɵɵadvance(2);
|
|
366
|
-
i0.ɵɵclassMap(
|
|
400
|
+
i0.ɵɵclassMap(source_r17.Icon);
|
|
367
401
|
i0.ɵɵadvance(3);
|
|
368
|
-
i0.ɵɵtextInterpolate(
|
|
402
|
+
i0.ɵɵtextInterpolate(source_r17.Name);
|
|
369
403
|
i0.ɵɵadvance(2);
|
|
370
|
-
i0.ɵɵtextInterpolate(
|
|
404
|
+
i0.ɵɵtextInterpolate(source_r17.Meta);
|
|
371
405
|
i0.ɵɵadvance();
|
|
372
|
-
i0.ɵɵclassMap(
|
|
406
|
+
i0.ɵɵclassMap(source_r17.StatusClass);
|
|
373
407
|
} }
|
|
374
|
-
function
|
|
375
|
-
i0.ɵɵelementStart(0, "span",
|
|
408
|
+
function ClassifyPipelineTabComponent_For_55_Template(rf, ctx) { if (rf & 1) {
|
|
409
|
+
i0.ɵɵelementStart(0, "span", 107);
|
|
376
410
|
i0.ɵɵtext(1);
|
|
377
411
|
i0.ɵɵelementEnd();
|
|
378
412
|
} if (rf & 2) {
|
|
379
|
-
const
|
|
380
|
-
i0.ɵɵclassMap(
|
|
381
|
-
i0.ɵɵstyleProp("opacity", 0.4 +
|
|
382
|
-
i0.ɵɵproperty("title", "Weight: " +
|
|
413
|
+
const tag_r18 = ctx.$implicit;
|
|
414
|
+
i0.ɵɵclassMap(tag_r18.SizeClass);
|
|
415
|
+
i0.ɵɵstyleProp("opacity", 0.4 + tag_r18.AvgWeight * 0.6);
|
|
416
|
+
i0.ɵɵproperty("title", "Weight: " + tag_r18.AvgWeight.toFixed(2));
|
|
383
417
|
i0.ɵɵadvance();
|
|
384
|
-
i0.ɵɵtextInterpolate(
|
|
418
|
+
i0.ɵɵtextInterpolate(tag_r18.Tag);
|
|
385
419
|
} }
|
|
386
|
-
function
|
|
387
|
-
const
|
|
388
|
-
i0.ɵɵelementStart(0, "div",
|
|
420
|
+
function ClassifyPipelineTabComponent_Conditional_62_Template(rf, ctx) { if (rf & 1) {
|
|
421
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
422
|
+
i0.ɵɵelementStart(0, "div", 48)(1, "div", 108)(2, "label", 109);
|
|
389
423
|
i0.ɵɵtext(3, "Batch Size");
|
|
390
424
|
i0.ɵɵelementEnd();
|
|
391
|
-
i0.ɵɵelementStart(4, "div",
|
|
392
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
425
|
+
i0.ɵɵelementStart(4, "div", 110)(5, "input", 111);
|
|
426
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.BatchSize, $event) || (ctx_r4.PipelineConfig.Pipeline.BatchSize = $event); return i0.ɵɵresetView($event); });
|
|
393
427
|
i0.ɵɵelementEnd()()();
|
|
394
|
-
i0.ɵɵelementStart(6, "div",
|
|
428
|
+
i0.ɵɵelementStart(6, "div", 108)(7, "label", 109);
|
|
395
429
|
i0.ɵɵtext(8, "Throttle (ms)");
|
|
396
430
|
i0.ɵɵelementEnd();
|
|
397
|
-
i0.ɵɵelementStart(9, "div",
|
|
398
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
431
|
+
i0.ɵɵelementStart(9, "div", 110)(10, "input", 112);
|
|
432
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs, $event) || (ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs = $event); return i0.ɵɵresetView($event); });
|
|
399
433
|
i0.ɵɵelementEnd();
|
|
400
|
-
i0.ɵɵelementStart(11, "span",
|
|
434
|
+
i0.ɵɵelementStart(11, "span", 113);
|
|
401
435
|
i0.ɵɵtext(12);
|
|
402
436
|
i0.ɵɵelementEnd()()();
|
|
403
|
-
i0.ɵɵelementStart(13, "div",
|
|
437
|
+
i0.ɵɵelementStart(13, "div", 108)(14, "label", 109);
|
|
404
438
|
i0.ɵɵtext(15, "Error Tolerance");
|
|
405
439
|
i0.ɵɵelementEnd();
|
|
406
|
-
i0.ɵɵelementStart(16, "div",
|
|
407
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
440
|
+
i0.ɵɵelementStart(16, "div", 110)(17, "input", 114);
|
|
441
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent, $event) || (ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent = $event); return i0.ɵɵresetView($event); });
|
|
408
442
|
i0.ɵɵelementEnd();
|
|
409
|
-
i0.ɵɵelementStart(18, "span",
|
|
443
|
+
i0.ɵɵelementStart(18, "span", 113);
|
|
410
444
|
i0.ɵɵtext(19);
|
|
411
445
|
i0.ɵɵelementEnd()()();
|
|
412
|
-
i0.ɵɵelementStart(20, "div",
|
|
446
|
+
i0.ɵɵelementStart(20, "div", 108)(21, "label", 109);
|
|
413
447
|
i0.ɵɵtext(22, "Auto-resume");
|
|
414
448
|
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵelementStart(23, "div",
|
|
416
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
449
|
+
i0.ɵɵelementStart(23, "div", 110)(24, "label", 115)(25, "input", 116);
|
|
450
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.ResumeFromLastBatch, $event) || (ctx_r4.PipelineConfig.Pipeline.ResumeFromLastBatch = $event); return i0.ɵɵresetView($event); });
|
|
417
451
|
i0.ɵɵelementEnd();
|
|
418
|
-
i0.ɵɵelementStart(26, "span",
|
|
419
|
-
i0.ɵɵelement(27, "span",
|
|
452
|
+
i0.ɵɵelementStart(26, "span", 117);
|
|
453
|
+
i0.ɵɵelement(27, "span", 118);
|
|
420
454
|
i0.ɵɵelementEnd()()()();
|
|
421
|
-
i0.ɵɵelement(28, "div",
|
|
422
|
-
i0.ɵɵelementStart(29, "div",
|
|
455
|
+
i0.ɵɵelement(28, "div", 119);
|
|
456
|
+
i0.ɵɵelementStart(29, "div", 120);
|
|
423
457
|
i0.ɵɵtext(30, "LLM Rate Limits");
|
|
424
458
|
i0.ɵɵelementEnd();
|
|
425
|
-
i0.ɵɵelementStart(31, "div",
|
|
459
|
+
i0.ɵɵelementStart(31, "div", 108)(32, "label", 109);
|
|
426
460
|
i0.ɵɵtext(33, "Requests/min");
|
|
427
461
|
i0.ɵɵelementEnd();
|
|
428
|
-
i0.ɵɵelementStart(34, "div",
|
|
429
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
462
|
+
i0.ɵɵelementStart(34, "div", 110)(35, "input", 121);
|
|
463
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_35_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.LLM.RequestsPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.LLM.RequestsPerMinute = $event); return i0.ɵɵresetView($event); });
|
|
430
464
|
i0.ɵɵelementEnd()()();
|
|
431
|
-
i0.ɵɵelementStart(36, "div",
|
|
465
|
+
i0.ɵɵelementStart(36, "div", 108)(37, "label", 109);
|
|
432
466
|
i0.ɵɵtext(38, "Tokens/min");
|
|
433
467
|
i0.ɵɵelementEnd();
|
|
434
|
-
i0.ɵɵelementStart(39, "div",
|
|
435
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
468
|
+
i0.ɵɵelementStart(39, "div", 110)(40, "input", 122);
|
|
469
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_40_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute = $event); return i0.ɵɵresetView($event); });
|
|
436
470
|
i0.ɵɵelementEnd();
|
|
437
|
-
i0.ɵɵelementStart(41, "span",
|
|
471
|
+
i0.ɵɵelementStart(41, "span", 113);
|
|
438
472
|
i0.ɵɵtext(42);
|
|
439
473
|
i0.ɵɵelementEnd()()();
|
|
440
|
-
i0.ɵɵelementStart(43, "div",
|
|
474
|
+
i0.ɵɵelementStart(43, "div", 120);
|
|
441
475
|
i0.ɵɵtext(44, "Embedding Rate Limits");
|
|
442
476
|
i0.ɵɵelementEnd();
|
|
443
|
-
i0.ɵɵelementStart(45, "div",
|
|
477
|
+
i0.ɵɵelementStart(45, "div", 108)(46, "label", 109);
|
|
444
478
|
i0.ɵɵtext(47, "Requests/min");
|
|
445
479
|
i0.ɵɵelementEnd();
|
|
446
|
-
i0.ɵɵelementStart(48, "div",
|
|
447
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
480
|
+
i0.ɵɵelementStart(48, "div", 110)(49, "input", 123);
|
|
481
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_62_Template_input_ngModelChange_49_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.Embedding.RequestsPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.Embedding.RequestsPerMinute = $event); return i0.ɵɵresetView($event); });
|
|
448
482
|
i0.ɵɵelementEnd()()()();
|
|
449
483
|
} if (rf & 2) {
|
|
450
484
|
const ctx_r4 = i0.ɵɵnextContext();
|
|
@@ -483,6 +517,10 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
483
517
|
TrendingTags = [];
|
|
484
518
|
/** Per-source live-run detail rows (shown during an active run). */
|
|
485
519
|
LiveRunDetailRows = [];
|
|
520
|
+
/** Total content-item count in the DB (from TotalRowCount) — drives the "Showing X of Y" line. */
|
|
521
|
+
TotalItemCount = 0;
|
|
522
|
+
/** True while the host is loading the next page of content items. */
|
|
523
|
+
IsLoadingMoreItems = false;
|
|
486
524
|
// ── Run state (data DOWN from the host) ──
|
|
487
525
|
IsRunning = false;
|
|
488
526
|
IsPaused = false;
|
|
@@ -524,6 +562,15 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
524
562
|
FeedItemClicked = new EventEmitter();
|
|
525
563
|
/** Toggle the config panel → host `TogglePipelineConfig()` (persists + reports to agent). */
|
|
526
564
|
ConfigToggled = new EventEmitter();
|
|
565
|
+
/** Request the host load the next page of content items (no silent truncation). */
|
|
566
|
+
LoadMoreItemsRequested = new EventEmitter();
|
|
567
|
+
/** Whether more content items exist in the DB than are currently loaded into the feed. */
|
|
568
|
+
get HasMoreItems() {
|
|
569
|
+
return this.TotalItemCount > this.FeedItems.length;
|
|
570
|
+
}
|
|
571
|
+
onLoadMoreItems() {
|
|
572
|
+
this.LoadMoreItemsRequested.emit();
|
|
573
|
+
}
|
|
527
574
|
// ════════════════════════════════════════════
|
|
528
575
|
// FEED — search, sort, pagination (presentational)
|
|
529
576
|
// ════════════════════════════════════════════
|
|
@@ -599,7 +646,7 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
599
646
|
this.ConfigToggled.emit();
|
|
600
647
|
}
|
|
601
648
|
static ɵfac = /*@__PURE__*/ (() => { let ɵClassifyPipelineTabComponent_BaseFactory; return function ClassifyPipelineTabComponent_Factory(__ngFactoryType__) { return (ɵClassifyPipelineTabComponent_BaseFactory || (ɵClassifyPipelineTabComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ClassifyPipelineTabComponent)))(__ngFactoryType__ || ClassifyPipelineTabComponent); }; })();
|
|
602
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifyPipelineTabComponent, selectors: [["classify-pipeline-tab"]], inputs: { KPIMetrics: "KPIMetrics", PipelineStages: "PipelineStages", FeedItems: "FeedItems", SourceMinis: "SourceMinis", TrendingTags: "TrendingTags", LiveRunDetailRows: "LiveRunDetailRows", IsRunning: "IsRunning", IsPaused: "IsPaused", RunProgress: "RunProgress", RunStage: "RunStage", RunCurrentItem: "RunCurrentItem", CurrentProcessRunID: "CurrentProcessRunID", PipelineConfig: "PipelineConfig", ShowPipelineConfig: "ShowPipelineConfig" }, outputs: { RefreshRequested: "RefreshRequested", PauseRequested: "PauseRequested", ResumeRequested: "ResumeRequested", CancelRequested: "CancelRequested", LoadLiveRunDetailsRequested: "LoadLiveRunDetailsRequested", FeedItemClicked: "FeedItemClicked", ConfigToggled: "ConfigToggled" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
649
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifyPipelineTabComponent, selectors: [["classify-pipeline-tab"]], inputs: { KPIMetrics: "KPIMetrics", PipelineStages: "PipelineStages", FeedItems: "FeedItems", SourceMinis: "SourceMinis", TrendingTags: "TrendingTags", LiveRunDetailRows: "LiveRunDetailRows", TotalItemCount: "TotalItemCount", IsLoadingMoreItems: "IsLoadingMoreItems", IsRunning: "IsRunning", IsPaused: "IsPaused", RunProgress: "RunProgress", RunStage: "RunStage", RunCurrentItem: "RunCurrentItem", CurrentProcessRunID: "CurrentProcessRunID", PipelineConfig: "PipelineConfig", ShowPipelineConfig: "ShowPipelineConfig" }, outputs: { RefreshRequested: "RefreshRequested", PauseRequested: "PauseRequested", ResumeRequested: "ResumeRequested", CancelRequested: "CancelRequested", LoadLiveRunDetailsRequested: "LoadLiveRunDetailsRequested", FeedItemClicked: "FeedItemClicked", ConfigToggled: "ConfigToggled", LoadMoreItemsRequested: "LoadMoreItemsRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 63, vars: 23, consts: [["Title", "Pipeline Monitor", "Subtitle", "Real-time processing status and recent activity"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "mj-action-label"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-page-body"], [1, "at-kpi-strip"], [1, "at-kpi-card"], [1, "at-analytics-section"], [3, "Provider"], [1, "at-pipeline-layout"], [1, "at-pipeline-center"], [1, "at-pipeline-stages"], [1, "at-progress-section"], [1, "at-card", 2, "margin-bottom", "12px"], [1, "at-card", "at-feed-card"], [1, "at-card-header"], [1, "at-card-title"], [1, "fa-solid", "fa-bolt"], [1, "at-feed-header-actions"], [1, "at-feed-sort-btn", 3, "click", "title"], [1, "fa-solid"], [1, "at-feed-count"], [1, "at-feed-search-bar"], [1, "fa-solid", "fa-search", "at-feed-search-icon"], ["type", "text", "placeholder", "Search items, sources, or tags...", 1, "mj-input", "at-feed-search-input", 3, "ngModelChange", "input", "ngModel"], [1, "at-feed-search-clear"], [1, "at-card-body", "at-feed-scroll-body"], [1, "at-empty-state"], [1, "at-feed-item", "at-feed-item-clickable"], [1, "at-feed-pagination"], [1, "at-load-more-bar"], [1, "at-pipeline-right"], [1, "at-card"], [1, "fa-solid", "fa-database"], [1, "at-card-body"], [1, "at-source-mini"], [1, "at-card", "at-tag-cloud-card"], [1, "at-card-title", 2, "margin-bottom", "10px"], [1, "fa-solid", "fa-chart-bar"], [1, "at-tag-cloud"], [1, "at-tag-pill", 3, "class", "opacity", "title"], [1, "at-card", "at-config-card"], [1, "at-card-header", 2, "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-sliders"], [1, "fa-solid", 2, "font-size", "0.7rem", "color", "var(--mj-text-muted)"], [1, "at-card-body", "at-config-body"], [1, "at-kpi-value"], [1, "at-kpi-label"], [1, "at-kpi-trend", 3, "up"], [1, "at-kpi-trend"], [1, "fa-solid", "fa-arrow-up"], [1, "at-pipeline-stage"], [1, "at-pipeline-stage-icon"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [3, "class"], [1, "at-pipeline-stage-name"], [1, "at-stage-connector", 3, "connector-complete"], [1, "at-stage-connector"], [1, "at-progress-header"], [1, "at-progress-stage-label"], [1, "at-progress-pct"], [1, "at-progress-bar"], [1, "at-progress-fill"], [1, "at-progress-current"], [1, "at-pipeline-controls"], [1, "at-action-btn", "at-secondary-btn", 3, "disabled"], [1, "at-action-btn", "at-primary-btn"], [1, "at-action-btn", "at-danger-btn", 3, "click"], [1, "fa-solid", "fa-stop"], [1, "at-action-btn", "at-secondary-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-pause"], [1, "at-action-btn", "at-primary-btn", 3, "click"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-list-check"], [1, "at-action-btn", "at-secondary-btn", 2, "font-size", "11px", "padding", "3px 8px", 3, "click"], [1, "at-card-body", 2, "max-height", "200px", "overflow-y", "auto"], [1, "at-run-table"], [1, "at-run-source-name"], [1, "at-run-status-badge"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "0.55rem"], [1, "at-feed-search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-inbox"], [1, "at-feed-item", "at-feed-item-clickable", 3, "click"], [1, "at-feed-status-dot"], [1, "at-feed-item-content"], [1, "at-feed-item-name"], [1, "at-feed-item-source-label"], [1, "at-feed-item-tags"], [1, "at-feed-tag"], [1, "at-feed-item-time"], [1, "fa-solid", "fa-chevron-left"], [1, "at-feed-pagination-label"], [1, "fa-solid", "fa-chevron-right"], [1, "at-load-more-count"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "disabled"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-down"], [1, "at-source-mini-icon"], [1, "at-source-mini-info"], [1, "at-source-mini-name"], [1, "at-source-mini-meta"], [1, "at-source-mini-status"], [1, "at-tag-pill", 3, "title"], [1, "at-config-row"], [1, "at-config-label"], [1, "at-config-control"], ["type", "number", "min", "10", "max", "1000", "step", "10", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "range", "min", "0", "max", "5000", "step", "100", 1, "at-config-slider", 3, "ngModelChange", "ngModel"], [1, "at-config-value"], ["type", "range", "min", "5", "max", "50", "step", "5", 1, "at-config-slider", 3, "ngModelChange", "ngModel"], [1, "at-config-toggle"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "at-toggle-track"], [1, "at-toggle-thumb"], [1, "at-config-divider"], [1, "at-config-section-label"], ["type", "number", "min", "1", "max", "500", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1000", "max", "5000000", "step", "10000", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1", "max", "1000", 1, "at-config-input", 3, "ngModelChange", "ngModel"]], template: function ClassifyPipelineTabComponent_Template(rf, ctx) { if (rf & 1) {
|
|
603
650
|
i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1)(2, "button", 2);
|
|
604
651
|
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_button_click_2_listener() { return ctx.onRefresh(); });
|
|
605
652
|
i0.ɵɵelement(3, "i", 3);
|
|
@@ -609,71 +656,77 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
609
656
|
i0.ɵɵelementStart(6, "mj-page-body-interior", 5)(7, "div", 6)(8, "div", 7)(9, "div", 8);
|
|
610
657
|
i0.ɵɵrepeaterCreate(10, ClassifyPipelineTabComponent_For_11_Template, 7, 7, "div", 9, _forTrack0);
|
|
611
658
|
i0.ɵɵelementEnd();
|
|
612
|
-
i0.ɵɵelementStart(12, "div", 10)
|
|
613
|
-
i0.ɵɵ
|
|
614
|
-
i0.ɵɵconditionalCreate(15, ClassifyPipelineTabComponent_Conditional_15_Template, 16, 12, "div", 13);
|
|
615
|
-
i0.ɵɵconditionalCreate(16, ClassifyPipelineTabComponent_Conditional_16_Template, 26, 0, "div", 14);
|
|
616
|
-
i0.ɵɵelementStart(17, "div", 15)(18, "div", 16)(19, "span", 17);
|
|
617
|
-
i0.ɵɵelement(20, "i", 18);
|
|
618
|
-
i0.ɵɵtext(21, " Recent Processing");
|
|
659
|
+
i0.ɵɵelementStart(12, "div", 10);
|
|
660
|
+
i0.ɵɵelement(13, "classify-overview-analytics", 11);
|
|
619
661
|
i0.ɵɵelementEnd();
|
|
620
|
-
i0.ɵɵelementStart(
|
|
621
|
-
i0.ɵɵ
|
|
622
|
-
i0.ɵɵ
|
|
623
|
-
i0.ɵɵ
|
|
662
|
+
i0.ɵɵelementStart(14, "div", 12)(15, "div", 13);
|
|
663
|
+
i0.ɵɵconditionalCreate(16, ClassifyPipelineTabComponent_Conditional_16_Template, 3, 0, "div", 14);
|
|
664
|
+
i0.ɵɵconditionalCreate(17, ClassifyPipelineTabComponent_Conditional_17_Template, 16, 12, "div", 15);
|
|
665
|
+
i0.ɵɵconditionalCreate(18, ClassifyPipelineTabComponent_Conditional_18_Template, 26, 0, "div", 16);
|
|
666
|
+
i0.ɵɵelementStart(19, "div", 17)(20, "div", 18)(21, "span", 19);
|
|
667
|
+
i0.ɵɵelement(22, "i", 20);
|
|
668
|
+
i0.ɵɵtext(23, " Recent Processing");
|
|
624
669
|
i0.ɵɵelementEnd();
|
|
625
|
-
i0.ɵɵelementStart(
|
|
670
|
+
i0.ɵɵelementStart(24, "div", 21)(25, "button", 22);
|
|
671
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_button_click_25_listener() { return ctx.ToggleFeedSort(); });
|
|
672
|
+
i0.ɵɵelement(26, "i", 23);
|
|
626
673
|
i0.ɵɵtext(27);
|
|
674
|
+
i0.ɵɵelementEnd();
|
|
675
|
+
i0.ɵɵelementStart(28, "span", 24);
|
|
676
|
+
i0.ɵɵtext(29);
|
|
627
677
|
i0.ɵɵelementEnd()()();
|
|
628
|
-
i0.ɵɵelementStart(
|
|
629
|
-
i0.ɵɵelement(
|
|
630
|
-
i0.ɵɵelementStart(
|
|
631
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
632
|
-
i0.ɵɵlistener("input", function
|
|
678
|
+
i0.ɵɵelementStart(30, "div", 25);
|
|
679
|
+
i0.ɵɵelement(31, "i", 26);
|
|
680
|
+
i0.ɵɵelementStart(32, "input", 27);
|
|
681
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Template_input_ngModelChange_32_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.FeedSearchQuery, $event) || (ctx.FeedSearchQuery = $event); return $event; });
|
|
682
|
+
i0.ɵɵlistener("input", function ClassifyPipelineTabComponent_Template_input_input_32_listener() { return ctx.OnFeedSearchChange(); });
|
|
633
683
|
i0.ɵɵelementEnd();
|
|
634
|
-
i0.ɵɵconditionalCreate(
|
|
684
|
+
i0.ɵɵconditionalCreate(33, ClassifyPipelineTabComponent_Conditional_33_Template, 2, 0, "button", 28);
|
|
635
685
|
i0.ɵɵelementEnd();
|
|
636
|
-
i0.ɵɵelementStart(
|
|
637
|
-
i0.ɵɵconditionalCreate(
|
|
638
|
-
i0.ɵɵrepeaterCreate(
|
|
686
|
+
i0.ɵɵelementStart(34, "div", 29);
|
|
687
|
+
i0.ɵɵconditionalCreate(35, ClassifyPipelineTabComponent_Conditional_35_Template, 4, 1, "div", 30);
|
|
688
|
+
i0.ɵɵrepeaterCreate(36, ClassifyPipelineTabComponent_For_37_Template, 12, 5, "div", 31, _forTrack1);
|
|
639
689
|
i0.ɵɵelementEnd();
|
|
640
|
-
i0.ɵɵconditionalCreate(
|
|
690
|
+
i0.ɵɵconditionalCreate(38, ClassifyPipelineTabComponent_Conditional_38_Template, 7, 4, "div", 32);
|
|
691
|
+
i0.ɵɵconditionalCreate(39, ClassifyPipelineTabComponent_Conditional_39_Template, 4, 3, "div", 33);
|
|
641
692
|
i0.ɵɵelementEnd()();
|
|
642
|
-
i0.ɵɵelementStart(
|
|
643
|
-
i0.ɵɵelement(
|
|
644
|
-
i0.ɵɵtext(
|
|
693
|
+
i0.ɵɵelementStart(40, "div", 34)(41, "div", 35)(42, "div", 18)(43, "span", 19);
|
|
694
|
+
i0.ɵɵelement(44, "i", 36);
|
|
695
|
+
i0.ɵɵtext(45, " Sources");
|
|
645
696
|
i0.ɵɵelementEnd()();
|
|
646
|
-
i0.ɵɵelementStart(
|
|
647
|
-
i0.ɵɵrepeaterCreate(
|
|
697
|
+
i0.ɵɵelementStart(46, "div", 37);
|
|
698
|
+
i0.ɵɵrepeaterCreate(47, ClassifyPipelineTabComponent_For_48_Template, 9, 6, "div", 38, _forTrack2);
|
|
648
699
|
i0.ɵɵelementEnd()();
|
|
649
|
-
i0.ɵɵelementStart(
|
|
650
|
-
i0.ɵɵelement(
|
|
651
|
-
i0.ɵɵtext(
|
|
700
|
+
i0.ɵɵelementStart(49, "div", 39)(50, "div", 40);
|
|
701
|
+
i0.ɵɵelement(51, "i", 41);
|
|
702
|
+
i0.ɵɵtext(52, " Trending Tags");
|
|
652
703
|
i0.ɵɵelementEnd();
|
|
653
|
-
i0.ɵɵelementStart(
|
|
654
|
-
i0.ɵɵrepeaterCreate(
|
|
704
|
+
i0.ɵɵelementStart(53, "div", 42);
|
|
705
|
+
i0.ɵɵrepeaterCreate(54, ClassifyPipelineTabComponent_For_55_Template, 2, 6, "span", 43, _forTrack3);
|
|
655
706
|
i0.ɵɵelementEnd()();
|
|
656
|
-
i0.ɵɵelementStart(
|
|
657
|
-
i0.ɵɵlistener("click", function
|
|
658
|
-
i0.ɵɵelementStart(
|
|
659
|
-
i0.ɵɵelement(
|
|
660
|
-
i0.ɵɵtext(
|
|
707
|
+
i0.ɵɵelementStart(56, "div", 44)(57, "div", 45);
|
|
708
|
+
i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_div_click_57_listener() { return ctx.onToggleConfig(); });
|
|
709
|
+
i0.ɵɵelementStart(58, "span", 19);
|
|
710
|
+
i0.ɵɵelement(59, "i", 46);
|
|
711
|
+
i0.ɵɵtext(60, " Pipeline Settings");
|
|
661
712
|
i0.ɵɵelementEnd();
|
|
662
|
-
i0.ɵɵelement(
|
|
713
|
+
i0.ɵɵelement(61, "i", 47);
|
|
663
714
|
i0.ɵɵelementEnd();
|
|
664
|
-
i0.ɵɵconditionalCreate(
|
|
715
|
+
i0.ɵɵconditionalCreate(62, ClassifyPipelineTabComponent_Conditional_62_Template, 50, 10, "div", 48);
|
|
665
716
|
i0.ɵɵelementEnd()()()()()();
|
|
666
717
|
} if (rf & 2) {
|
|
667
718
|
i0.ɵɵadvance(6);
|
|
668
719
|
i0.ɵɵproperty("Padding", false)("Flex", true);
|
|
669
720
|
i0.ɵɵadvance(4);
|
|
670
721
|
i0.ɵɵrepeater(ctx.KPIMetrics);
|
|
671
|
-
i0.ɵɵadvance(
|
|
672
|
-
i0.ɵɵ
|
|
722
|
+
i0.ɵɵadvance(3);
|
|
723
|
+
i0.ɵɵproperty("Provider", ctx.Provider);
|
|
724
|
+
i0.ɵɵadvance(3);
|
|
725
|
+
i0.ɵɵconditional(ctx.PipelineStages.length > 0 && (ctx.IsRunning || ctx.IsPaused) ? 16 : -1);
|
|
673
726
|
i0.ɵɵadvance();
|
|
674
|
-
i0.ɵɵconditional(ctx.IsRunning || ctx.IsPaused ?
|
|
727
|
+
i0.ɵɵconditional(ctx.IsRunning || ctx.IsPaused ? 17 : -1);
|
|
675
728
|
i0.ɵɵadvance();
|
|
676
|
-
i0.ɵɵconditional(ctx.IsRunning && ctx.LiveRunDetailRows.length > 0 ?
|
|
729
|
+
i0.ɵɵconditional(ctx.IsRunning && ctx.LiveRunDetailRows.length > 0 ? 18 : -1);
|
|
677
730
|
i0.ɵɵadvance(7);
|
|
678
731
|
i0.ɵɵproperty("title", ctx.FeedSortOrder === "newest" ? "Showing newest first" : "Showing oldest first");
|
|
679
732
|
i0.ɵɵadvance();
|
|
@@ -685,13 +738,15 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
685
738
|
i0.ɵɵadvance(3);
|
|
686
739
|
i0.ɵɵtwoWayProperty("ngModel", ctx.FeedSearchQuery);
|
|
687
740
|
i0.ɵɵadvance();
|
|
688
|
-
i0.ɵɵconditional(ctx.FeedSearchQuery ?
|
|
741
|
+
i0.ɵɵconditional(ctx.FeedSearchQuery ? 33 : -1);
|
|
689
742
|
i0.ɵɵadvance(2);
|
|
690
|
-
i0.ɵɵconditional(ctx.FilteredFeedItems.length === 0 ?
|
|
743
|
+
i0.ɵɵconditional(ctx.FilteredFeedItems.length === 0 ? 35 : -1);
|
|
691
744
|
i0.ɵɵadvance();
|
|
692
745
|
i0.ɵɵrepeater(ctx.PaginatedFeedItems);
|
|
693
746
|
i0.ɵɵadvance(2);
|
|
694
|
-
i0.ɵɵconditional(ctx.FeedTotalPages > 1 ?
|
|
747
|
+
i0.ɵɵconditional(ctx.FeedTotalPages > 1 ? 38 : -1);
|
|
748
|
+
i0.ɵɵadvance();
|
|
749
|
+
i0.ɵɵconditional(ctx.TotalItemCount > 0 ? 39 : -1);
|
|
695
750
|
i0.ɵɵadvance(8);
|
|
696
751
|
i0.ɵɵrepeater(ctx.SourceMinis);
|
|
697
752
|
i0.ɵɵadvance(7);
|
|
@@ -699,12 +754,12 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
699
754
|
i0.ɵɵadvance(7);
|
|
700
755
|
i0.ɵɵclassProp("fa-chevron-down", !ctx.ShowPipelineConfig)("fa-chevron-up", ctx.ShowPipelineConfig);
|
|
701
756
|
i0.ɵɵadvance();
|
|
702
|
-
i0.ɵɵconditional(ctx.ShowPipelineConfig ?
|
|
703
|
-
} }, dependencies: [i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.RangeValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJPageBodyInteriorComponent, i3.DecimalPipe],
|
|
757
|
+
i0.ɵɵconditional(ctx.ShowPipelineConfig ? 62 : -1);
|
|
758
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.RangeValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJPageBodyInteriorComponent, i3.ClassifyOverviewAnalyticsComponent, i4.DecimalPipe], styles: ["\n\n\n\n\n\n\n\n\n\n.at-analytics-section[_ngcontent-%COMP%] {\n margin: 12px 0 16px;\n}"] });
|
|
704
759
|
}
|
|
705
760
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassifyPipelineTabComponent, [{
|
|
706
761
|
type: Component,
|
|
707
|
-
args: [{ standalone: false, selector: 'classify-pipeline-tab', template: "<mj-page-header-interior\n Title=\"Pipeline Monitor\"\n Subtitle=\"Real-time processing status and recent activity\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onRefresh()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n<div class=\"at-main-area\">\n <div class=\"at-page-body\">\n <!-- KPIs -->\n <div class=\"at-kpi-strip\">\n @for (kpi of KPIMetrics; track kpi.Label) {\n <div class=\"at-kpi-card\">\n <div class=\"at-kpi-value\" [class.at-kpi-error-value]=\"kpi.Label === 'Errors' && kpi.Value > 0\">{{ kpi.Value | number }}</div>\n <div class=\"at-kpi-label\">{{ kpi.Label }}</div>\n @if (kpi.Trend) {\n <div class=\"at-kpi-trend\" [class.up]=\"kpi.TrendUp\">\n @if (kpi.TrendUp) { <i class=\"fa-solid fa-arrow-up\"></i> }\n {{ kpi.Trend }}\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"at-pipeline-layout\">\n <div class=\"at-pipeline-center\">\n <!-- Pipeline stages visualization (only during active run) -->\n @if (PipelineStages.length > 0 && (IsRunning || IsPaused)) {\n <div class=\"at-pipeline-stages\">\n @for (stage of PipelineStages; track stage.Name; let last = $last) {\n <div class=\"at-pipeline-stage\"\n [class.stage-idle]=\"stage.Status === 'idle'\"\n [class.stage-active]=\"stage.Status === 'active'\"\n [class.stage-complete]=\"stage.Status === 'complete'\">\n <div class=\"at-pipeline-stage-icon\">\n @if (stage.Status === 'active') {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else if (stage.Status === 'complete') {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i [class]=\"stage.Icon\"></i>\n }\n </div>\n <div class=\"at-pipeline-stage-name\">{{ stage.Name }}</div>\n </div>\n @if (!last) {\n <div class=\"at-stage-connector\"\n [class.connector-complete]=\"stage.Status === 'complete'\">\n </div>\n }\n }\n </div>\n }\n\n <!-- Progress bar (visible during run or paused) -->\n @if (IsRunning || IsPaused) {\n <div class=\"at-progress-section\">\n <div class=\"at-progress-header\">\n <span class=\"at-progress-stage-label\">{{ RunStage }}</span>\n <span class=\"at-progress-pct\">{{ RunProgress | number:'1.0-0' }}%</span>\n </div>\n <div class=\"at-progress-bar\"><div class=\"at-progress-fill\" [style.width.%]=\"RunProgress\" [class.at-progress-fill-paused]=\"IsPaused\"></div></div>\n @if (RunCurrentItem) {\n <div class=\"at-progress-current\">{{ RunCurrentItem }}</div>\n }\n <div class=\"at-pipeline-controls\">\n @if (IsRunning && !IsPaused) {\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"onPause()\" [disabled]=\"!CurrentProcessRunID\">\n <i class=\"fa-solid fa-pause\"></i> Pause\n </button>\n }\n @if (IsPaused) {\n <button class=\"at-action-btn at-primary-btn\" (click)=\"onResume()\">\n <i class=\"fa-solid fa-play\"></i> Resume\n </button>\n }\n <button class=\"at-action-btn at-danger-btn\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-stop\"></i> Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- D2: Live Per-Source Progress (visible during run) -->\n @if (IsRunning && LiveRunDetailRows.length > 0) {\n <div class=\"at-card\" style=\"margin-bottom: 12px;\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-list-check\"></i> Per-Source Progress</span>\n <button class=\"at-action-btn at-secondary-btn\" style=\"font-size: 11px; padding: 3px 8px;\" (click)=\"onLoadLiveRunDetails()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n <div class=\"at-card-body\" style=\"max-height: 200px; overflow-y: auto;\">\n <table class=\"at-run-table\">\n <thead>\n <tr>\n <th>Source</th>\n <th>Status</th>\n <th>Items</th>\n <th>Tagged</th>\n <th>Vectorized</th>\n <th>Errors</th>\n </tr>\n </thead>\n <tbody>\n @for (row of LiveRunDetailRows; track row.SourceName) {\n <tr>\n <td class=\"at-run-source-name\">{{ row.SourceName }}</td>\n <td>\n <span class=\"at-run-status-badge\" [class]=\"row.StatusClass\">\n @if (row.StatusClass === 'running') {\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 0.55rem\"></i>\n }\n {{ row.Status }}\n </span>\n </td>\n <td>{{ row.ItemsProcessed }}</td>\n <td>{{ row.ItemsTagged }}</td>\n <td>{{ row.ItemsVectorized }}</td>\n <td [class.run-error-text]=\"row.ErrorCount > 0\">{{ row.ErrorCount }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Recent Processing Feed -->\n <div class=\"at-card at-feed-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-bolt\"></i> Recent Processing</span>\n <div class=\"at-feed-header-actions\">\n <button class=\"at-feed-sort-btn\" (click)=\"ToggleFeedSort()\"\n [title]=\"FeedSortOrder === 'newest' ? 'Showing newest first' : 'Showing oldest first'\">\n <i class=\"fa-solid\" [class.fa-arrow-down-short-wide]=\"FeedSortOrder === 'newest'\"\n [class.fa-arrow-up-short-wide]=\"FeedSortOrder === 'oldest'\"></i>\n {{ FeedSortOrder === 'newest' ? 'Newest' : 'Oldest' }}\n </button>\n <span class=\"at-feed-count\">{{ FilteredFeedItems.length }} items</span>\n </div>\n </div>\n <!-- Feed search bar -->\n <div class=\"at-feed-search-bar\">\n <i class=\"fa-solid fa-search at-feed-search-icon\"></i>\n <input type=\"text\"\n class=\"mj-input at-feed-search-input\"\n placeholder=\"Search items, sources, or tags...\"\n [(ngModel)]=\"FeedSearchQuery\"\n (input)=\"OnFeedSearchChange()\">\n @if (FeedSearchQuery) {\n <button class=\"at-feed-search-clear\" (click)=\"FeedSearchQuery = ''; OnFeedSearchChange()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"at-card-body at-feed-scroll-body\">\n @if (FilteredFeedItems.length === 0) {\n <div class=\"at-empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n @if (FeedSearchQuery) {\n <p>No items match \"{{ FeedSearchQuery }}\"</p>\n } @else {\n <p>No processed items yet.</p>\n }\n </div>\n }\n @for (item of PaginatedFeedItems; track item.Name + item.SourceName + item.TimeAgo) {\n <div class=\"at-feed-item at-feed-item-clickable\" (click)=\"onFeedItemClick(GetFeedItemOriginalIndex(item))\">\n <div class=\"at-feed-status-dot\" [class]=\"item.Status\"></div>\n <div class=\"at-feed-item-content\">\n <span class=\"at-feed-item-name\">{{ item.Name }}</span>\n <span class=\"at-feed-item-source-label\">{{ item.SourceName }}</span>\n </div>\n <div class=\"at-feed-item-tags\">\n @for (tag of item.Tags; track tag) {\n <span class=\"at-feed-tag\">{{ tag }}</span>\n }\n </div>\n <span class=\"at-feed-item-time\">{{ item.TimeAgo }}</span>\n </div>\n }\n </div>\n <!-- Feed pagination -->\n @if (FeedTotalPages > 1) {\n <div class=\"at-feed-pagination\">\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage === 0\" (click)=\"FeedPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <span class=\"at-feed-pagination-label\">Page {{ FeedPage + 1 }} of {{ FeedTotalPages }}</span>\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage >= FeedTotalPages - 1\" (click)=\"FeedNextPage()\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n\n <!-- Right sidebar -->\n <div class=\"at-pipeline-right\">\n <!-- Sources Quick List -->\n <div class=\"at-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-database\"></i> Sources</span>\n </div>\n <div class=\"at-card-body\">\n @for (source of SourceMinis; track source.ID) {\n <div class=\"at-source-mini\">\n <div class=\"at-source-mini-icon\"><i [class]=\"source.Icon\"></i></div>\n <div class=\"at-source-mini-info\">\n <div class=\"at-source-mini-name\">{{ source.Name }}</div>\n <div class=\"at-source-mini-meta\">{{ source.Meta }}</div>\n </div>\n <div class=\"at-source-mini-status\" [class]=\"source.StatusClass\"></div>\n </div>\n }\n </div>\n </div>\n <!-- Trending Tags -->\n <div class=\"at-card at-tag-cloud-card\">\n <div class=\"at-card-title\" style=\"margin-bottom: 10px;\"><i class=\"fa-solid fa-chart-bar\"></i> Trending Tags</div>\n <div class=\"at-tag-cloud\">\n @for (tag of TrendingTags; track tag.Tag) {\n <span class=\"at-tag-pill\" [class]=\"tag.SizeClass\"\n [style.opacity]=\"0.4 + tag.AvgWeight * 0.6\"\n [title]=\"'Weight: ' + tag.AvgWeight.toFixed(2)\">{{ tag.Tag }}</span>\n }\n </div>\n </div>\n\n <!-- Pipeline Settings Widget -->\n <div class=\"at-card at-config-card\">\n <div class=\"at-card-header\" (click)=\"onToggleConfig()\" style=\"cursor:pointer\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-sliders\"></i> Pipeline Settings</span>\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!ShowPipelineConfig\" [class.fa-chevron-up]=\"ShowPipelineConfig\" style=\"font-size:0.7rem; color:var(--mj-text-muted)\"></i>\n </div>\n @if (ShowPipelineConfig) {\n <div class=\"at-card-body at-config-body\">\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Batch Size</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"10\" max=\"1000\" step=\"10\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.BatchSize\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Throttle (ms)</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"0\" max=\"5000\" step=\"100\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.DelayBetweenBatchesMs\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.DelayBetweenBatchesMs }}ms</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Error Tolerance</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"5\" max=\"50\" step=\"5\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.ErrorThresholdPercent\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.ErrorThresholdPercent }}%</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Auto-resume</label>\n <div class=\"at-config-control\">\n <label class=\"at-config-toggle\">\n <input type=\"checkbox\" [(ngModel)]=\"PipelineConfig.Pipeline!.ResumeFromLastBatch\">\n <span class=\"at-toggle-track\"><span class=\"at-toggle-thumb\"></span></span>\n </label>\n </div>\n </div>\n <div class=\"at-config-divider\"></div>\n <div class=\"at-config-section-label\">LLM Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"500\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.RequestsPerMinute\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Tokens/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1000\" max=\"5000000\" step=\"10000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.TokensPerMinute\">\n <span class=\"at-config-value\">{{ formatTokenCount(PipelineConfig.RateLimits!.LLM!.TokensPerMinute ?? 0) }}</span>\n </div>\n </div>\n <div class=\"at-config-section-label\">Embedding Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"1000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.Embedding!.RequestsPerMinute\">\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</mj-page-body-interior>\n", styles: ["/*\n * Pipeline Monitor tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup while it\n * renders inside the host shell. Tab-specific rules would live here as the\n * shared CSS is partitioned during the host-slim step.\n */\n"] }]
|
|
762
|
+
args: [{ standalone: false, selector: 'classify-pipeline-tab', template: "<mj-page-header-interior\n Title=\"Pipeline Monitor\"\n Subtitle=\"Real-time processing status and recent activity\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onRefresh()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n<div class=\"at-main-area\">\n <div class=\"at-page-body\">\n <!-- KPIs -->\n <div class=\"at-kpi-strip\">\n @for (kpi of KPIMetrics; track kpi.Label) {\n <div class=\"at-kpi-card\">\n <div class=\"at-kpi-value\" [class.at-kpi-error-value]=\"kpi.Label === 'Errors' && kpi.Value > 0\">{{ kpi.Value | number }}</div>\n <div class=\"at-kpi-label\">{{ kpi.Label }}</div>\n @if (kpi.Trend) {\n <div class=\"at-kpi-trend\" [class.up]=\"kpi.TrendUp\">\n @if (kpi.TrendUp) { <i class=\"fa-solid fa-arrow-up\"></i> }\n {{ kpi.Trend }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Phase 4: Overview analytics (KPI cards + hand-rolled SVG charts) -->\n <div class=\"at-analytics-section\">\n <classify-overview-analytics [Provider]=\"Provider\"></classify-overview-analytics>\n </div>\n\n <div class=\"at-pipeline-layout\">\n <div class=\"at-pipeline-center\">\n <!-- Pipeline stages visualization (only during active run) -->\n @if (PipelineStages.length > 0 && (IsRunning || IsPaused)) {\n <div class=\"at-pipeline-stages\">\n @for (stage of PipelineStages; track stage.Name; let last = $last) {\n <div class=\"at-pipeline-stage\"\n [class.stage-idle]=\"stage.Status === 'idle'\"\n [class.stage-active]=\"stage.Status === 'active'\"\n [class.stage-complete]=\"stage.Status === 'complete'\">\n <div class=\"at-pipeline-stage-icon\">\n @if (stage.Status === 'active') {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else if (stage.Status === 'complete') {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i [class]=\"stage.Icon\"></i>\n }\n </div>\n <div class=\"at-pipeline-stage-name\">{{ stage.Name }}</div>\n </div>\n @if (!last) {\n <div class=\"at-stage-connector\"\n [class.connector-complete]=\"stage.Status === 'complete'\">\n </div>\n }\n }\n </div>\n }\n\n <!-- Progress bar (visible during run or paused) -->\n @if (IsRunning || IsPaused) {\n <div class=\"at-progress-section\">\n <div class=\"at-progress-header\">\n <span class=\"at-progress-stage-label\">{{ RunStage }}</span>\n <span class=\"at-progress-pct\">{{ RunProgress | number:'1.0-0' }}%</span>\n </div>\n <div class=\"at-progress-bar\"><div class=\"at-progress-fill\" [style.width.%]=\"RunProgress\" [class.at-progress-fill-paused]=\"IsPaused\"></div></div>\n @if (RunCurrentItem) {\n <div class=\"at-progress-current\">{{ RunCurrentItem }}</div>\n }\n <div class=\"at-pipeline-controls\">\n @if (IsRunning && !IsPaused) {\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"onPause()\" [disabled]=\"!CurrentProcessRunID\">\n <i class=\"fa-solid fa-pause\"></i> Pause\n </button>\n }\n @if (IsPaused) {\n <button class=\"at-action-btn at-primary-btn\" (click)=\"onResume()\">\n <i class=\"fa-solid fa-play\"></i> Resume\n </button>\n }\n <button class=\"at-action-btn at-danger-btn\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-stop\"></i> Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- D2: Live Per-Source Progress (visible during run) -->\n @if (IsRunning && LiveRunDetailRows.length > 0) {\n <div class=\"at-card\" style=\"margin-bottom: 12px;\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-list-check\"></i> Per-Source Progress</span>\n <button class=\"at-action-btn at-secondary-btn\" style=\"font-size: 11px; padding: 3px 8px;\" (click)=\"onLoadLiveRunDetails()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n <div class=\"at-card-body\" style=\"max-height: 200px; overflow-y: auto;\">\n <table class=\"at-run-table\">\n <thead>\n <tr>\n <th>Source</th>\n <th>Status</th>\n <th>Items</th>\n <th>Tagged</th>\n <th>Vectorized</th>\n <th>Errors</th>\n </tr>\n </thead>\n <tbody>\n @for (row of LiveRunDetailRows; track row.SourceName) {\n <tr>\n <td class=\"at-run-source-name\">{{ row.SourceName }}</td>\n <td>\n <span class=\"at-run-status-badge\" [class]=\"row.StatusClass\">\n @if (row.StatusClass === 'running') {\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 0.55rem\"></i>\n }\n {{ row.Status }}\n </span>\n </td>\n <td>{{ row.ItemsProcessed }}</td>\n <td>{{ row.ItemsTagged }}</td>\n <td>{{ row.ItemsVectorized }}</td>\n <td [class.run-error-text]=\"row.ErrorCount > 0\">{{ row.ErrorCount }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Recent Processing Feed -->\n <div class=\"at-card at-feed-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-bolt\"></i> Recent Processing</span>\n <div class=\"at-feed-header-actions\">\n <button class=\"at-feed-sort-btn\" (click)=\"ToggleFeedSort()\"\n [title]=\"FeedSortOrder === 'newest' ? 'Showing newest first' : 'Showing oldest first'\">\n <i class=\"fa-solid\" [class.fa-arrow-down-short-wide]=\"FeedSortOrder === 'newest'\"\n [class.fa-arrow-up-short-wide]=\"FeedSortOrder === 'oldest'\"></i>\n {{ FeedSortOrder === 'newest' ? 'Newest' : 'Oldest' }}\n </button>\n <span class=\"at-feed-count\">{{ FilteredFeedItems.length }} items</span>\n </div>\n </div>\n <!-- Feed search bar -->\n <div class=\"at-feed-search-bar\">\n <i class=\"fa-solid fa-search at-feed-search-icon\"></i>\n <input type=\"text\"\n class=\"mj-input at-feed-search-input\"\n placeholder=\"Search items, sources, or tags...\"\n [(ngModel)]=\"FeedSearchQuery\"\n (input)=\"OnFeedSearchChange()\">\n @if (FeedSearchQuery) {\n <button class=\"at-feed-search-clear\" (click)=\"FeedSearchQuery = ''; OnFeedSearchChange()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"at-card-body at-feed-scroll-body\">\n @if (FilteredFeedItems.length === 0) {\n <div class=\"at-empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n @if (FeedSearchQuery) {\n <p>No items match \"{{ FeedSearchQuery }}\"</p>\n } @else {\n <p>No processed items yet.</p>\n }\n </div>\n }\n @for (item of PaginatedFeedItems; track item.Name + item.SourceName + item.TimeAgo) {\n <div class=\"at-feed-item at-feed-item-clickable\" (click)=\"onFeedItemClick(GetFeedItemOriginalIndex(item))\">\n <div class=\"at-feed-status-dot\" [class]=\"item.Status\"></div>\n <div class=\"at-feed-item-content\">\n <span class=\"at-feed-item-name\">{{ item.Name }}</span>\n <span class=\"at-feed-item-source-label\">{{ item.SourceName }}</span>\n </div>\n <div class=\"at-feed-item-tags\">\n @for (tag of item.Tags; track tag) {\n <span class=\"at-feed-tag\">{{ tag }}</span>\n }\n </div>\n <span class=\"at-feed-item-time\">{{ item.TimeAgo }}</span>\n </div>\n }\n </div>\n <!-- Feed pagination -->\n @if (FeedTotalPages > 1) {\n <div class=\"at-feed-pagination\">\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage === 0\" (click)=\"FeedPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <span class=\"at-feed-pagination-label\">Page {{ FeedPage + 1 }} of {{ FeedTotalPages }}</span>\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage >= FeedTotalPages - 1\" (click)=\"FeedNextPage()\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n @if (TotalItemCount > 0) {\n <div class=\"at-load-more-bar\">\n <span class=\"at-load-more-count\">Showing {{ FeedItems.length }} of {{ TotalItemCount }} items</span>\n @if (HasMoreItems) {\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onLoadMoreItems()\" [disabled]=\"IsLoadingMoreItems\">\n @if (IsLoadingMoreItems) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Loading\u2026\n } @else {\n <i class=\"fa-solid fa-chevron-down\"></i> Load more\n }\n </button>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Right sidebar -->\n <div class=\"at-pipeline-right\">\n <!-- Sources Quick List -->\n <div class=\"at-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-database\"></i> Sources</span>\n </div>\n <div class=\"at-card-body\">\n @for (source of SourceMinis; track source.ID) {\n <div class=\"at-source-mini\">\n <div class=\"at-source-mini-icon\"><i [class]=\"source.Icon\"></i></div>\n <div class=\"at-source-mini-info\">\n <div class=\"at-source-mini-name\">{{ source.Name }}</div>\n <div class=\"at-source-mini-meta\">{{ source.Meta }}</div>\n </div>\n <div class=\"at-source-mini-status\" [class]=\"source.StatusClass\"></div>\n </div>\n }\n </div>\n </div>\n <!-- Trending Tags -->\n <div class=\"at-card at-tag-cloud-card\">\n <div class=\"at-card-title\" style=\"margin-bottom: 10px;\"><i class=\"fa-solid fa-chart-bar\"></i> Trending Tags</div>\n <div class=\"at-tag-cloud\">\n @for (tag of TrendingTags; track tag.Tag) {\n <span class=\"at-tag-pill\" [class]=\"tag.SizeClass\"\n [style.opacity]=\"0.4 + tag.AvgWeight * 0.6\"\n [title]=\"'Weight: ' + tag.AvgWeight.toFixed(2)\">{{ tag.Tag }}</span>\n }\n </div>\n </div>\n\n <!-- Pipeline Settings Widget -->\n <div class=\"at-card at-config-card\">\n <div class=\"at-card-header\" (click)=\"onToggleConfig()\" style=\"cursor:pointer\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-sliders\"></i> Pipeline Settings</span>\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!ShowPipelineConfig\" [class.fa-chevron-up]=\"ShowPipelineConfig\" style=\"font-size:0.7rem; color:var(--mj-text-muted)\"></i>\n </div>\n @if (ShowPipelineConfig) {\n <div class=\"at-card-body at-config-body\">\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Batch Size</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"10\" max=\"1000\" step=\"10\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.BatchSize\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Throttle (ms)</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"0\" max=\"5000\" step=\"100\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.DelayBetweenBatchesMs\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.DelayBetweenBatchesMs }}ms</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Error Tolerance</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"5\" max=\"50\" step=\"5\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.ErrorThresholdPercent\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.ErrorThresholdPercent }}%</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Auto-resume</label>\n <div class=\"at-config-control\">\n <label class=\"at-config-toggle\">\n <input type=\"checkbox\" [(ngModel)]=\"PipelineConfig.Pipeline!.ResumeFromLastBatch\">\n <span class=\"at-toggle-track\"><span class=\"at-toggle-thumb\"></span></span>\n </label>\n </div>\n </div>\n <div class=\"at-config-divider\"></div>\n <div class=\"at-config-section-label\">LLM Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"500\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.RequestsPerMinute\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Tokens/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1000\" max=\"5000000\" step=\"10000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.TokensPerMinute\">\n <span class=\"at-config-value\">{{ formatTokenCount(PipelineConfig.RateLimits!.LLM!.TokensPerMinute ?? 0) }}</span>\n </div>\n </div>\n <div class=\"at-config-section-label\">Embedding Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"1000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.Embedding!.RequestsPerMinute\">\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</mj-page-body-interior>\n", styles: ["/*\n * Pipeline Monitor tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup while it\n * renders inside the host shell. Tab-specific rules would live here as the\n * shared CSS is partitioned during the host-slim step.\n */\n\n.at-analytics-section {\n margin: 12px 0 16px;\n}\n"] }]
|
|
708
763
|
}], null, { KPIMetrics: [{
|
|
709
764
|
type: Input
|
|
710
765
|
}], PipelineStages: [{
|
|
@@ -717,6 +772,10 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
717
772
|
type: Input
|
|
718
773
|
}], LiveRunDetailRows: [{
|
|
719
774
|
type: Input
|
|
775
|
+
}], TotalItemCount: [{
|
|
776
|
+
type: Input
|
|
777
|
+
}], IsLoadingMoreItems: [{
|
|
778
|
+
type: Input
|
|
720
779
|
}], IsRunning: [{
|
|
721
780
|
type: Input
|
|
722
781
|
}], IsPaused: [{
|
|
@@ -747,6 +806,8 @@ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
|
|
|
747
806
|
type: Output
|
|
748
807
|
}], ConfigToggled: [{
|
|
749
808
|
type: Output
|
|
809
|
+
}], LoadMoreItemsRequested: [{
|
|
810
|
+
type: Output
|
|
750
811
|
}] }); })();
|
|
751
812
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ClassifyPipelineTabComponent, { className: "ClassifyPipelineTabComponent", filePath: "src/AI/components/autotagging/tabs/pipeline-tab.component.ts", lineNumber: 34 }); })();
|
|
752
813
|
//# sourceMappingURL=pipeline-tab.component.js.map
|