@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
|
@@ -19,7 +19,7 @@ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
|
19
19
|
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
20
20
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
21
21
|
import { KnowledgeHubMetadataEngine } from '@memberjunction/core-entities';
|
|
22
|
-
import { formatNumber, formatDate, computeDuration, displayStatus, getSourceTypeIcon, CronToHumanReadable } from '../shared/classify.format';
|
|
22
|
+
import { formatNumber, formatDate, computeDuration, displayStatus, getSourceTypeIcon, CronToHumanReadable, deriveDisplayName } from '../shared/classify.format';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
import * as i1 from "@angular/forms";
|
|
25
25
|
import * as i2 from "@memberjunction/ng-shared-generic";
|
|
@@ -27,547 +27,585 @@ import * as i3 from "@memberjunction/ng-ui-components";
|
|
|
27
27
|
import * as i4 from "../dialogs/dry-run-preview.dialog.component";
|
|
28
28
|
import * as i5 from "@angular/common";
|
|
29
29
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
30
|
-
function
|
|
30
|
+
function ClassifySourcesTabComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelement(0, "i", 21);
|
|
32
|
+
i0.ɵɵelementStart(1, "span", 5);
|
|
33
|
+
i0.ɵɵtext(2, "Refreshing\u2026");
|
|
34
|
+
i0.ɵɵelementEnd();
|
|
35
|
+
} }
|
|
36
|
+
function ClassifySourcesTabComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
+
i0.ɵɵelement(0, "i", 22);
|
|
38
|
+
i0.ɵɵelementStart(1, "span", 5);
|
|
39
|
+
i0.ɵɵtext(2, "Refresh");
|
|
40
|
+
i0.ɵɵelementEnd();
|
|
41
|
+
} }
|
|
42
|
+
function ClassifySourcesTabComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
44
|
+
i0.ɵɵelement(1, "mj-loading", 23);
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
} }
|
|
47
|
+
function ClassifySourcesTabComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
48
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
49
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
50
|
+
i0.ɵɵelement(1, "i", 24);
|
|
51
|
+
i0.ɵɵelementStart(2, "h3");
|
|
52
|
+
i0.ɵɵtext(3, "No content sources yet");
|
|
53
|
+
i0.ɵɵelementEnd();
|
|
54
|
+
i0.ɵɵelementStart(4, "p");
|
|
55
|
+
i0.ɵɵtext(5, "Use the guided setup to stand up your first source \u2014 pick an entity or URL, configure its document, taxonomy, and domain context in one flow.");
|
|
56
|
+
i0.ɵɵelementEnd();
|
|
57
|
+
i0.ɵɵelementStart(6, "div", 25)(7, "button", 6);
|
|
58
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_17_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddSourceGuided()); });
|
|
59
|
+
i0.ɵɵelement(8, "i", 4);
|
|
60
|
+
i0.ɵɵtext(9, " Add Source (Guided) ");
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
62
|
+
i0.ɵɵelementStart(10, "button", 3);
|
|
63
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_17_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onAddSource()); });
|
|
64
|
+
i0.ɵɵelement(11, "i", 7);
|
|
65
|
+
i0.ɵɵtext(12, " Add manually ");
|
|
66
|
+
i0.ɵɵelementEnd()()();
|
|
67
|
+
} }
|
|
68
|
+
function ClassifySourcesTabComponent_For_20_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
31
69
|
i0.ɵɵtext(0);
|
|
32
70
|
} if (rf & 2) {
|
|
33
|
-
const
|
|
34
|
-
i0.ɵɵtextInterpolate1(" \u00B7 ",
|
|
71
|
+
const card_r4 = i0.ɵɵnextContext().$implicit;
|
|
72
|
+
i0.ɵɵtextInterpolate1(" \u00B7 ", card_r4.FileTypeName);
|
|
35
73
|
} }
|
|
36
|
-
function
|
|
37
|
-
i0.ɵɵelementStart(0, "div",
|
|
74
|
+
function ClassifySourcesTabComponent_For_20_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
75
|
+
i0.ɵɵelementStart(0, "div", 33);
|
|
38
76
|
i0.ɵɵtext(1);
|
|
39
77
|
i0.ɵɵelementEnd();
|
|
40
78
|
} if (rf & 2) {
|
|
41
|
-
const
|
|
79
|
+
const card_r4 = i0.ɵɵnextContext().$implicit;
|
|
42
80
|
i0.ɵɵadvance();
|
|
43
|
-
i0.ɵɵtextInterpolate(
|
|
81
|
+
i0.ɵɵtextInterpolate(card_r4.URL);
|
|
44
82
|
} }
|
|
45
|
-
function
|
|
46
|
-
const
|
|
47
|
-
i0.ɵɵelementStart(0, "div",
|
|
48
|
-
i0.ɵɵlistener("click", function
|
|
49
|
-
i0.ɵɵelement(1, "i",
|
|
83
|
+
function ClassifySourcesTabComponent_For_20_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
84
|
+
const _r5 = i0.ɵɵgetCurrentView();
|
|
85
|
+
i0.ɵɵelementStart(0, "div", 47);
|
|
86
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Conditional_35_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const card_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.RemoveSchedule(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
87
|
+
i0.ɵɵelement(1, "i", 48);
|
|
50
88
|
i0.ɵɵelementStart(2, "span");
|
|
51
89
|
i0.ɵɵtext(3);
|
|
52
90
|
i0.ɵɵelementEnd()();
|
|
53
91
|
} if (rf & 2) {
|
|
54
|
-
const
|
|
55
|
-
const
|
|
92
|
+
const card_r4 = i0.ɵɵnextContext().$implicit;
|
|
93
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
56
94
|
i0.ɵɵadvance(3);
|
|
57
|
-
i0.ɵɵtextInterpolate(
|
|
95
|
+
i0.ɵɵtextInterpolate(ctx_r1.GetScheduleLabel(card_r4));
|
|
58
96
|
} }
|
|
59
|
-
function
|
|
60
|
-
const
|
|
61
|
-
i0.ɵɵelementStart(0, "button",
|
|
62
|
-
i0.ɵɵlistener("click", function
|
|
63
|
-
i0.ɵɵelement(1, "i",
|
|
97
|
+
function ClassifySourcesTabComponent_For_20_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
99
|
+
i0.ɵɵelementStart(0, "button", 49);
|
|
100
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Conditional_46_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const card_r4 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.OpenScheduleDialog(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
101
|
+
i0.ɵɵelement(1, "i", 48);
|
|
64
102
|
i0.ɵɵtext(2, " Schedule");
|
|
65
103
|
i0.ɵɵelementEnd();
|
|
66
104
|
} }
|
|
67
|
-
function
|
|
68
|
-
const
|
|
69
|
-
i0.ɵɵelementStart(0, "div",
|
|
70
|
-
i0.ɵɵlistener("click", function
|
|
71
|
-
i0.ɵɵelementStart(1, "div",
|
|
105
|
+
function ClassifySourcesTabComponent_For_20_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
108
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_div_click_0_listener() { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OpenSourceDetail(card_r4)); });
|
|
109
|
+
i0.ɵɵelementStart(1, "div", 27)(2, "div", 28);
|
|
72
110
|
i0.ɵɵelement(3, "i");
|
|
73
111
|
i0.ɵɵelementEnd();
|
|
74
|
-
i0.ɵɵelementStart(4, "div")(5, "div",
|
|
112
|
+
i0.ɵɵelementStart(4, "div")(5, "div", 29);
|
|
75
113
|
i0.ɵɵtext(6);
|
|
76
114
|
i0.ɵɵelementEnd();
|
|
77
|
-
i0.ɵɵelementStart(7, "div",
|
|
115
|
+
i0.ɵɵelementStart(7, "div", 30);
|
|
78
116
|
i0.ɵɵtext(8);
|
|
79
|
-
i0.ɵɵconditionalCreate(9,
|
|
117
|
+
i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_For_20_Conditional_9_Template, 1, 1);
|
|
80
118
|
i0.ɵɵelementEnd()();
|
|
81
|
-
i0.ɵɵelementStart(10, "div",
|
|
82
|
-
i0.ɵɵelement(11, "div",
|
|
119
|
+
i0.ɵɵelementStart(10, "div", 31);
|
|
120
|
+
i0.ɵɵelement(11, "div", 32);
|
|
83
121
|
i0.ɵɵtext(12);
|
|
84
122
|
i0.ɵɵelementEnd()();
|
|
85
|
-
i0.ɵɵconditionalCreate(13,
|
|
86
|
-
i0.ɵɵelementStart(14, "div",
|
|
123
|
+
i0.ɵɵconditionalCreate(13, ClassifySourcesTabComponent_For_20_Conditional_13_Template, 2, 1, "div", 33);
|
|
124
|
+
i0.ɵɵelementStart(14, "div", 34)(15, "div", 35)(16, "div", 36);
|
|
87
125
|
i0.ɵɵtext(17);
|
|
88
126
|
i0.ɵɵelementEnd();
|
|
89
|
-
i0.ɵɵelementStart(18, "div",
|
|
127
|
+
i0.ɵɵelementStart(18, "div", 37);
|
|
90
128
|
i0.ɵɵtext(19, "Items");
|
|
91
129
|
i0.ɵɵelementEnd()();
|
|
92
|
-
i0.ɵɵelementStart(20, "div",
|
|
130
|
+
i0.ɵɵelementStart(20, "div", 35)(21, "div", 36);
|
|
93
131
|
i0.ɵɵtext(22);
|
|
94
132
|
i0.ɵɵelementEnd();
|
|
95
|
-
i0.ɵɵelementStart(23, "div",
|
|
133
|
+
i0.ɵɵelementStart(23, "div", 37);
|
|
96
134
|
i0.ɵɵtext(24, "Tags");
|
|
97
135
|
i0.ɵɵelementEnd()();
|
|
98
|
-
i0.ɵɵelementStart(25, "div",
|
|
136
|
+
i0.ɵɵelementStart(25, "div", 35)(26, "div", 36);
|
|
99
137
|
i0.ɵɵtext(27);
|
|
100
138
|
i0.ɵɵelementEnd();
|
|
101
|
-
i0.ɵɵelementStart(28, "div",
|
|
139
|
+
i0.ɵɵelementStart(28, "div", 37);
|
|
102
140
|
i0.ɵɵtext(29, "Avg Tags");
|
|
103
141
|
i0.ɵɵelementEnd()();
|
|
104
|
-
i0.ɵɵelementStart(30, "div",
|
|
142
|
+
i0.ɵɵelementStart(30, "div", 35)(31, "div", 36);
|
|
105
143
|
i0.ɵɵtext(32);
|
|
106
144
|
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵelementStart(33, "div",
|
|
145
|
+
i0.ɵɵelementStart(33, "div", 37);
|
|
108
146
|
i0.ɵɵtext(34, "Last Run");
|
|
109
147
|
i0.ɵɵelementEnd()()();
|
|
110
|
-
i0.ɵɵconditionalCreate(35,
|
|
111
|
-
i0.ɵɵelementStart(36, "div",
|
|
112
|
-
i0.ɵɵlistener("click", function
|
|
113
|
-
i0.ɵɵelement(38, "i",
|
|
148
|
+
i0.ɵɵconditionalCreate(35, ClassifySourcesTabComponent_For_20_Conditional_35_Template, 4, 1, "div", 38);
|
|
149
|
+
i0.ɵɵelementStart(36, "div", 39)(37, "button", 40);
|
|
150
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_37_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onEditSource(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
151
|
+
i0.ɵɵelement(38, "i", 41);
|
|
114
152
|
i0.ɵɵtext(39, " Edit");
|
|
115
153
|
i0.ɵɵelementEnd();
|
|
116
|
-
i0.ɵɵelementStart(40, "button",
|
|
117
|
-
i0.ɵɵlistener("click", function
|
|
118
|
-
i0.ɵɵelement(41, "i",
|
|
154
|
+
i0.ɵɵelementStart(40, "button", 40);
|
|
155
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_40_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.onRunSource(card_r4.ID); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
156
|
+
i0.ɵɵelement(41, "i", 42);
|
|
119
157
|
i0.ɵɵtext(42, " Run");
|
|
120
158
|
i0.ɵɵelementEnd();
|
|
121
|
-
i0.ɵɵelementStart(43, "button",
|
|
122
|
-
i0.ɵɵlistener("click", function
|
|
123
|
-
i0.ɵɵelement(44, "i",
|
|
159
|
+
i0.ɵɵelementStart(43, "button", 40);
|
|
160
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_43_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.OpenDryRunPreview(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
161
|
+
i0.ɵɵelement(44, "i", 43);
|
|
124
162
|
i0.ɵɵtext(45, " Preview");
|
|
125
163
|
i0.ɵɵelementEnd();
|
|
126
|
-
i0.ɵɵconditionalCreate(46,
|
|
127
|
-
i0.ɵɵelementStart(47, "button",
|
|
128
|
-
i0.ɵɵlistener("click", function
|
|
129
|
-
i0.ɵɵelement(48, "i",
|
|
164
|
+
i0.ɵɵconditionalCreate(46, ClassifySourcesTabComponent_For_20_Conditional_46_Template, 3, 0, "button", 44);
|
|
165
|
+
i0.ɵɵelementStart(47, "button", 45);
|
|
166
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_For_20_Template_button_click_47_listener($event) { const card_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.DeleteSource(card_r4); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
167
|
+
i0.ɵɵelement(48, "i", 46);
|
|
130
168
|
i0.ɵɵtext(49, " Delete");
|
|
131
169
|
i0.ɵɵelementEnd()()();
|
|
132
170
|
} if (rf & 2) {
|
|
133
|
-
const
|
|
134
|
-
const
|
|
171
|
+
const card_r4 = ctx.$implicit;
|
|
172
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
135
173
|
i0.ɵɵadvance(3);
|
|
136
|
-
i0.ɵɵclassMap(
|
|
174
|
+
i0.ɵɵclassMap(card_r4.Icon);
|
|
137
175
|
i0.ɵɵadvance(3);
|
|
138
|
-
i0.ɵɵtextInterpolate(
|
|
176
|
+
i0.ɵɵtextInterpolate(card_r4.Name);
|
|
139
177
|
i0.ɵɵadvance(2);
|
|
140
|
-
i0.ɵɵtextInterpolate(
|
|
178
|
+
i0.ɵɵtextInterpolate(card_r4.SourceTypeName);
|
|
141
179
|
i0.ɵɵadvance();
|
|
142
|
-
i0.ɵɵconditional(
|
|
180
|
+
i0.ɵɵconditional(card_r4.RequiresFileType ? 9 : -1);
|
|
143
181
|
i0.ɵɵadvance();
|
|
144
|
-
i0.ɵɵclassMap(
|
|
182
|
+
i0.ɵɵclassMap(card_r4.StatusClass);
|
|
145
183
|
i0.ɵɵadvance();
|
|
146
|
-
i0.ɵɵclassMap(
|
|
184
|
+
i0.ɵɵclassMap(card_r4.StatusClass);
|
|
147
185
|
i0.ɵɵadvance();
|
|
148
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
186
|
+
i0.ɵɵtextInterpolate1(" ", card_r4.StatusLabel, " ");
|
|
149
187
|
i0.ɵɵadvance();
|
|
150
|
-
i0.ɵɵconditional(
|
|
188
|
+
i0.ɵɵconditional(card_r4.URL ? 13 : -1);
|
|
151
189
|
i0.ɵɵadvance(4);
|
|
152
|
-
i0.ɵɵtextInterpolate(
|
|
190
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatNumber(card_r4.ItemCount));
|
|
153
191
|
i0.ɵɵadvance(5);
|
|
154
|
-
i0.ɵɵtextInterpolate(
|
|
192
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatNumber(card_r4.TagCount));
|
|
155
193
|
i0.ɵɵadvance(5);
|
|
156
|
-
i0.ɵɵtextInterpolate(
|
|
194
|
+
i0.ɵɵtextInterpolate(card_r4.AvgTags);
|
|
157
195
|
i0.ɵɵadvance(5);
|
|
158
|
-
i0.ɵɵtextInterpolate(
|
|
196
|
+
i0.ɵɵtextInterpolate(card_r4.LastRunAgo);
|
|
159
197
|
i0.ɵɵadvance(3);
|
|
160
|
-
i0.ɵɵconditional(
|
|
198
|
+
i0.ɵɵconditional(card_r4.ScheduledActionID ? 35 : -1);
|
|
161
199
|
i0.ɵɵadvance(11);
|
|
162
|
-
i0.ɵɵconditional(!
|
|
200
|
+
i0.ɵɵconditional(!card_r4.ScheduledActionID ? 46 : -1);
|
|
163
201
|
} }
|
|
164
|
-
function
|
|
165
|
-
i0.ɵɵelementStart(0, "div",
|
|
166
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
202
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
204
|
+
i0.ɵɵelement(1, "mj-loading", 56);
|
|
167
205
|
i0.ɵɵelementEnd();
|
|
168
206
|
} }
|
|
169
|
-
function
|
|
170
|
-
i0.ɵɵelementStart(0, "div",
|
|
207
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
208
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "span", 66);
|
|
171
209
|
i0.ɵɵtext(2, "URL");
|
|
172
210
|
i0.ɵɵelementEnd();
|
|
173
|
-
i0.ɵɵelementStart(3, "a",
|
|
211
|
+
i0.ɵɵelementStart(3, "a", 86);
|
|
174
212
|
i0.ɵɵtext(4);
|
|
175
213
|
i0.ɵɵelementEnd()();
|
|
176
214
|
} if (rf & 2) {
|
|
177
|
-
const
|
|
215
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
178
216
|
i0.ɵɵadvance(3);
|
|
179
|
-
i0.ɵɵproperty("href",
|
|
217
|
+
i0.ɵɵproperty("href", ctx_r1.SelectedSource.URL, i0.ɵɵsanitizeUrl);
|
|
180
218
|
i0.ɵɵadvance();
|
|
181
|
-
i0.ɵɵtextInterpolate(
|
|
219
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.URL);
|
|
182
220
|
} }
|
|
183
|
-
function
|
|
184
|
-
i0.ɵɵelementStart(0, "div",
|
|
221
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
222
|
+
i0.ɵɵelementStart(0, "div", 65)(1, "span", 66);
|
|
185
223
|
i0.ɵɵtext(2, "Content Type");
|
|
186
224
|
i0.ɵɵelementEnd();
|
|
187
|
-
i0.ɵɵelementStart(3, "span",
|
|
225
|
+
i0.ɵɵelementStart(3, "span", 67);
|
|
188
226
|
i0.ɵɵtext(4);
|
|
189
227
|
i0.ɵɵelementEnd()();
|
|
190
|
-
i0.ɵɵelementStart(5, "div",
|
|
228
|
+
i0.ɵɵelementStart(5, "div", 65)(6, "span", 66);
|
|
191
229
|
i0.ɵɵtext(7, "File Type");
|
|
192
230
|
i0.ɵɵelementEnd();
|
|
193
|
-
i0.ɵɵelementStart(8, "span",
|
|
231
|
+
i0.ɵɵelementStart(8, "span", 67);
|
|
194
232
|
i0.ɵɵtext(9);
|
|
195
233
|
i0.ɵɵelementEnd()();
|
|
196
234
|
} if (rf & 2) {
|
|
197
|
-
const
|
|
235
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
198
236
|
i0.ɵɵadvance(4);
|
|
199
|
-
i0.ɵɵtextInterpolate(
|
|
237
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.ContentTypeName);
|
|
200
238
|
i0.ɵɵadvance(5);
|
|
201
|
-
i0.ɵɵtextInterpolate(
|
|
239
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.FileTypeName);
|
|
202
240
|
} }
|
|
203
|
-
function
|
|
204
|
-
i0.ɵɵelementStart(0, "option",
|
|
241
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_64_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
+
i0.ɵɵelementStart(0, "option", 75);
|
|
205
243
|
i0.ɵɵtext(1);
|
|
206
244
|
i0.ɵɵelementEnd();
|
|
207
245
|
} if (rf & 2) {
|
|
208
|
-
const
|
|
209
|
-
i0.ɵɵproperty("value",
|
|
246
|
+
const opt_r9 = ctx.$implicit;
|
|
247
|
+
i0.ɵɵproperty("value", opt_r9);
|
|
210
248
|
i0.ɵɵadvance();
|
|
211
|
-
i0.ɵɵtextInterpolate(
|
|
249
|
+
i0.ɵɵtextInterpolate(opt_r9);
|
|
212
250
|
} }
|
|
213
|
-
function
|
|
214
|
-
i0.ɵɵelementStart(0, "div",
|
|
251
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_69_Template(rf, ctx) { if (rf & 1) {
|
|
252
|
+
i0.ɵɵelementStart(0, "div", 79)(1, "p");
|
|
215
253
|
i0.ɵɵtext(2);
|
|
216
254
|
i0.ɵɵelementEnd()();
|
|
217
255
|
} if (rf & 2) {
|
|
218
|
-
const
|
|
256
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
219
257
|
i0.ɵɵadvance(2);
|
|
220
|
-
i0.ɵɵtextInterpolate(
|
|
258
|
+
i0.ɵɵtextInterpolate(ctx_r1.SourceDetailStatusFilter === "All" ? "No content items yet." : "No items match this filter.");
|
|
221
259
|
} }
|
|
222
|
-
function
|
|
223
|
-
const
|
|
224
|
-
i0.ɵɵelementStart(0, "div",
|
|
225
|
-
i0.ɵɵlistener("click", function
|
|
226
|
-
i0.ɵɵelement(1, "div",
|
|
227
|
-
i0.ɵɵelementStart(2, "span",
|
|
260
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template(rf, ctx) { if (rf & 1) {
|
|
261
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
262
|
+
i0.ɵɵelementStart(0, "div", 87);
|
|
263
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template_div_click_0_listener() { const ci_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OpenContentItemDetail(ci_r11)); });
|
|
264
|
+
i0.ɵɵelement(1, "div", 88);
|
|
265
|
+
i0.ɵɵelementStart(2, "span", 89);
|
|
228
266
|
i0.ɵɵtext(3);
|
|
229
267
|
i0.ɵɵelementEnd();
|
|
230
|
-
i0.ɵɵelementStart(4, "span",
|
|
268
|
+
i0.ɵɵelementStart(4, "span", 90);
|
|
231
269
|
i0.ɵɵtext(5);
|
|
232
270
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵelementStart(6, "span",
|
|
271
|
+
i0.ɵɵelementStart(6, "span", 90);
|
|
234
272
|
i0.ɵɵtext(7);
|
|
235
273
|
i0.ɵɵelementEnd();
|
|
236
|
-
i0.ɵɵelementStart(8, "span",
|
|
274
|
+
i0.ɵɵelementStart(8, "span", 91);
|
|
237
275
|
i0.ɵɵtext(9);
|
|
238
276
|
i0.ɵɵelementEnd();
|
|
239
|
-
i0.ɵɵelementStart(10, "span",
|
|
277
|
+
i0.ɵɵelementStart(10, "span", 92);
|
|
240
278
|
i0.ɵɵtext(11);
|
|
241
279
|
i0.ɵɵelementEnd()();
|
|
242
280
|
} if (rf & 2) {
|
|
243
|
-
const
|
|
244
|
-
const
|
|
281
|
+
const ci_r11 = ctx.$implicit;
|
|
282
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
245
283
|
i0.ɵɵadvance();
|
|
246
|
-
i0.ɵɵclassMap(
|
|
284
|
+
i0.ɵɵclassMap(ci_r11.StatusDot);
|
|
247
285
|
i0.ɵɵadvance(2);
|
|
248
|
-
i0.ɵɵtextInterpolate(
|
|
286
|
+
i0.ɵɵtextInterpolate(ci_r11.Name);
|
|
249
287
|
i0.ɵɵadvance();
|
|
250
|
-
i0.ɵɵclassMap(
|
|
288
|
+
i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ci_r11.EmbeddingStatus));
|
|
251
289
|
i0.ɵɵadvance();
|
|
252
|
-
i0.ɵɵtextInterpolate1("E:",
|
|
290
|
+
i0.ɵɵtextInterpolate1("E:", ci_r11.EmbeddingStatus);
|
|
253
291
|
i0.ɵɵadvance();
|
|
254
|
-
i0.ɵɵclassMap(
|
|
292
|
+
i0.ɵɵclassMap(ctx_r1.GetStatusBadgeClass(ci_r11.TaggingStatus));
|
|
255
293
|
i0.ɵɵadvance();
|
|
256
|
-
i0.ɵɵtextInterpolate1("T:",
|
|
294
|
+
i0.ɵɵtextInterpolate1("T:", ci_r11.TaggingStatus);
|
|
257
295
|
i0.ɵɵadvance(2);
|
|
258
|
-
i0.ɵɵtextInterpolate1("",
|
|
296
|
+
i0.ɵɵtextInterpolate1("", ci_r11.TagCount, " tags");
|
|
259
297
|
i0.ɵɵadvance(2);
|
|
260
|
-
i0.ɵɵtextInterpolate(
|
|
298
|
+
i0.ɵɵtextInterpolate(ci_r11.UpdatedAt);
|
|
261
299
|
} }
|
|
262
|
-
function
|
|
263
|
-
const
|
|
264
|
-
i0.ɵɵelementStart(0, "div",
|
|
265
|
-
i0.ɵɵlistener("click", function
|
|
266
|
-
i0.ɵɵelement(2, "i",
|
|
300
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template(rf, ctx) { if (rf & 1) {
|
|
301
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
302
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "button", 93);
|
|
303
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SourceDetailPrevPage()); });
|
|
304
|
+
i0.ɵɵelement(2, "i", 94);
|
|
267
305
|
i0.ɵɵtext(3, " Prev ");
|
|
268
306
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelementStart(4, "span",
|
|
307
|
+
i0.ɵɵelementStart(4, "span", 95);
|
|
270
308
|
i0.ɵɵtext(5);
|
|
271
309
|
i0.ɵɵelementEnd();
|
|
272
|
-
i0.ɵɵelementStart(6, "button",
|
|
273
|
-
i0.ɵɵlistener("click", function
|
|
310
|
+
i0.ɵɵelementStart(6, "button", 93);
|
|
311
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.SourceDetailNextPage()); });
|
|
274
312
|
i0.ɵɵtext(7, " Next ");
|
|
275
|
-
i0.ɵɵelement(8, "i",
|
|
313
|
+
i0.ɵɵelement(8, "i", 96);
|
|
276
314
|
i0.ɵɵelementEnd()();
|
|
277
315
|
} if (rf & 2) {
|
|
278
|
-
const
|
|
316
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
279
317
|
i0.ɵɵadvance();
|
|
280
|
-
i0.ɵɵproperty("disabled",
|
|
318
|
+
i0.ɵɵproperty("disabled", ctx_r1.SourceDetailPage === 0);
|
|
281
319
|
i0.ɵɵadvance(4);
|
|
282
|
-
i0.ɵɵtextInterpolate2("Page ",
|
|
320
|
+
i0.ɵɵtextInterpolate2("Page ", ctx_r1.SourceDetailPage + 1, " of ", ctx_r1.SourceDetailTotalPages);
|
|
283
321
|
i0.ɵɵadvance();
|
|
284
|
-
i0.ɵɵproperty("disabled",
|
|
322
|
+
i0.ɵɵproperty("disabled", ctx_r1.SourceDetailPage >= ctx_r1.SourceDetailTotalPages - 1);
|
|
285
323
|
} }
|
|
286
|
-
function
|
|
287
|
-
i0.ɵɵelementStart(0, "div",
|
|
324
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
+
i0.ɵɵelementStart(0, "div", 98)(1, "span", 99);
|
|
288
326
|
i0.ɵɵtext(2);
|
|
289
327
|
i0.ɵɵelementEnd();
|
|
290
|
-
i0.ɵɵelementStart(3, "span",
|
|
328
|
+
i0.ɵɵelementStart(3, "span", 100);
|
|
291
329
|
i0.ɵɵtext(4);
|
|
292
330
|
i0.ɵɵelementEnd();
|
|
293
|
-
i0.ɵɵelementStart(5, "span",
|
|
331
|
+
i0.ɵɵelementStart(5, "span", 101);
|
|
294
332
|
i0.ɵɵtext(6);
|
|
295
333
|
i0.ɵɵelementEnd();
|
|
296
|
-
i0.ɵɵelementStart(7, "span",
|
|
334
|
+
i0.ɵɵelementStart(7, "span", 102);
|
|
297
335
|
i0.ɵɵtext(8);
|
|
298
336
|
i0.ɵɵelementEnd()();
|
|
299
337
|
} if (rf & 2) {
|
|
300
|
-
const
|
|
338
|
+
const run_r13 = ctx.$implicit;
|
|
301
339
|
i0.ɵɵadvance();
|
|
302
|
-
i0.ɵɵclassMap(
|
|
340
|
+
i0.ɵɵclassMap(run_r13.StatusClass);
|
|
303
341
|
i0.ɵɵadvance();
|
|
304
|
-
i0.ɵɵtextInterpolate(
|
|
342
|
+
i0.ɵɵtextInterpolate(run_r13.Status);
|
|
305
343
|
i0.ɵɵadvance(2);
|
|
306
|
-
i0.ɵɵtextInterpolate(
|
|
344
|
+
i0.ɵɵtextInterpolate(run_r13.StartedDisplay);
|
|
307
345
|
i0.ɵɵadvance(2);
|
|
308
|
-
i0.ɵɵtextInterpolate(
|
|
346
|
+
i0.ɵɵtextInterpolate(run_r13.Duration);
|
|
309
347
|
i0.ɵɵadvance(2);
|
|
310
|
-
i0.ɵɵtextInterpolate1("",
|
|
348
|
+
i0.ɵɵtextInterpolate1("", run_r13.Items, " items");
|
|
311
349
|
} }
|
|
312
|
-
function
|
|
313
|
-
i0.ɵɵelementStart(0, "div",
|
|
350
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_Template(rf, ctx) { if (rf & 1) {
|
|
351
|
+
i0.ɵɵelementStart(0, "div", 62)(1, "div", 63);
|
|
314
352
|
i0.ɵɵtext(2, "Recent Runs");
|
|
315
353
|
i0.ɵɵelementEnd();
|
|
316
|
-
i0.ɵɵelementStart(3, "div",
|
|
317
|
-
i0.ɵɵrepeaterCreate(4,
|
|
354
|
+
i0.ɵɵelementStart(3, "div", 97);
|
|
355
|
+
i0.ɵɵrepeaterCreate(4, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_For_5_Template, 9, 6, "div", 98, _forTrack0);
|
|
318
356
|
i0.ɵɵelementEnd()();
|
|
319
357
|
} if (rf & 2) {
|
|
320
|
-
const
|
|
358
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
321
359
|
i0.ɵɵadvance(4);
|
|
322
|
-
i0.ɵɵrepeater(
|
|
360
|
+
i0.ɵɵrepeater(ctx_r1.SelectedSource.RunHistory);
|
|
323
361
|
} }
|
|
324
|
-
function
|
|
325
|
-
const
|
|
326
|
-
i0.ɵɵelementStart(0, "div",
|
|
362
|
+
function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
363
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
364
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "div", 28);
|
|
327
365
|
i0.ɵɵelement(2, "i");
|
|
328
366
|
i0.ɵɵelementEnd();
|
|
329
|
-
i0.ɵɵelementStart(3, "div")(4, "h4",
|
|
367
|
+
i0.ɵɵelementStart(3, "div")(4, "h4", 58);
|
|
330
368
|
i0.ɵɵtext(5);
|
|
331
369
|
i0.ɵɵelementEnd();
|
|
332
|
-
i0.ɵɵelementStart(6, "div",
|
|
370
|
+
i0.ɵɵelementStart(6, "div", 59)(7, "span", 60);
|
|
333
371
|
i0.ɵɵtext(8);
|
|
334
372
|
i0.ɵɵelementEnd();
|
|
335
|
-
i0.ɵɵelementStart(9, "span",
|
|
373
|
+
i0.ɵɵelementStart(9, "span", 61);
|
|
336
374
|
i0.ɵɵtext(10);
|
|
337
375
|
i0.ɵɵelementEnd()()()();
|
|
338
|
-
i0.ɵɵelementStart(11, "div",
|
|
376
|
+
i0.ɵɵelementStart(11, "div", 62)(12, "div", 63);
|
|
339
377
|
i0.ɵɵtext(13, "Configuration");
|
|
340
378
|
i0.ɵɵelementEnd();
|
|
341
|
-
i0.ɵɵelementStart(14, "div",
|
|
342
|
-
i0.ɵɵconditionalCreate(15,
|
|
343
|
-
i0.ɵɵconditionalCreate(16,
|
|
344
|
-
i0.ɵɵelementStart(17, "div",
|
|
379
|
+
i0.ɵɵelementStart(14, "div", 64);
|
|
380
|
+
i0.ɵɵconditionalCreate(15, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_15_Template, 5, 2, "div", 65);
|
|
381
|
+
i0.ɵɵconditionalCreate(16, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_16_Template, 10, 2);
|
|
382
|
+
i0.ɵɵelementStart(17, "div", 65)(18, "span", 66);
|
|
345
383
|
i0.ɵɵtext(19, "Embedding Model");
|
|
346
384
|
i0.ɵɵelementEnd();
|
|
347
|
-
i0.ɵɵelementStart(20, "span",
|
|
385
|
+
i0.ɵɵelementStart(20, "span", 67);
|
|
348
386
|
i0.ɵɵtext(21);
|
|
349
387
|
i0.ɵɵelementEnd()();
|
|
350
|
-
i0.ɵɵelementStart(22, "div",
|
|
388
|
+
i0.ɵɵelementStart(22, "div", 65)(23, "span", 66);
|
|
351
389
|
i0.ɵɵtext(24, "Vector Index");
|
|
352
390
|
i0.ɵɵelementEnd();
|
|
353
|
-
i0.ɵɵelementStart(25, "span",
|
|
391
|
+
i0.ɵɵelementStart(25, "span", 67);
|
|
354
392
|
i0.ɵɵtext(26);
|
|
355
393
|
i0.ɵɵelementEnd()()()();
|
|
356
|
-
i0.ɵɵelementStart(27, "div",
|
|
394
|
+
i0.ɵɵelementStart(27, "div", 62)(28, "div", 63);
|
|
357
395
|
i0.ɵɵtext(29, "Statistics");
|
|
358
396
|
i0.ɵɵelementEnd();
|
|
359
|
-
i0.ɵɵelementStart(30, "div",
|
|
397
|
+
i0.ɵɵelementStart(30, "div", 68)(31, "div", 69)(32, "div", 70);
|
|
360
398
|
i0.ɵɵtext(33);
|
|
361
399
|
i0.ɵɵelementEnd();
|
|
362
|
-
i0.ɵɵelementStart(34, "div",
|
|
400
|
+
i0.ɵɵelementStart(34, "div", 71);
|
|
363
401
|
i0.ɵɵtext(35, "Items");
|
|
364
402
|
i0.ɵɵelementEnd()();
|
|
365
|
-
i0.ɵɵelementStart(36, "div",
|
|
403
|
+
i0.ɵɵelementStart(36, "div", 69)(37, "div", 70);
|
|
366
404
|
i0.ɵɵtext(38);
|
|
367
405
|
i0.ɵɵelementEnd();
|
|
368
|
-
i0.ɵɵelementStart(39, "div",
|
|
406
|
+
i0.ɵɵelementStart(39, "div", 71);
|
|
369
407
|
i0.ɵɵtext(40, "Tags");
|
|
370
408
|
i0.ɵɵelementEnd()();
|
|
371
|
-
i0.ɵɵelementStart(41, "div",
|
|
409
|
+
i0.ɵɵelementStart(41, "div", 69)(42, "div", 70);
|
|
372
410
|
i0.ɵɵtext(43);
|
|
373
411
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(44, "div",
|
|
412
|
+
i0.ɵɵelementStart(44, "div", 71);
|
|
375
413
|
i0.ɵɵtext(45, "Avg Tags");
|
|
376
414
|
i0.ɵɵelementEnd()();
|
|
377
|
-
i0.ɵɵelementStart(46, "div",
|
|
415
|
+
i0.ɵɵelementStart(46, "div", 69)(47, "div", 70);
|
|
378
416
|
i0.ɵɵtext(48);
|
|
379
417
|
i0.ɵɵelementEnd();
|
|
380
|
-
i0.ɵɵelementStart(49, "div",
|
|
418
|
+
i0.ɵɵelementStart(49, "div", 71);
|
|
381
419
|
i0.ɵɵtext(50, "Last Run");
|
|
382
420
|
i0.ɵɵelementEnd()();
|
|
383
|
-
i0.ɵɵelementStart(51, "div",
|
|
421
|
+
i0.ɵɵelementStart(51, "div", 69)(52, "div", 70);
|
|
384
422
|
i0.ɵɵtext(53);
|
|
385
423
|
i0.ɵɵelementEnd();
|
|
386
|
-
i0.ɵɵelementStart(54, "div",
|
|
424
|
+
i0.ɵɵelementStart(54, "div", 71);
|
|
387
425
|
i0.ɵɵtext(55, "Errors");
|
|
388
426
|
i0.ɵɵelementEnd()()()();
|
|
389
|
-
i0.ɵɵelementStart(56, "div",
|
|
427
|
+
i0.ɵɵelementStart(56, "div", 62)(57, "div", 72)(58, "div", 63);
|
|
390
428
|
i0.ɵɵtext(59);
|
|
391
429
|
i0.ɵɵpipe(60, "number");
|
|
392
430
|
i0.ɵɵelementEnd();
|
|
393
|
-
i0.ɵɵelementStart(61, "div",
|
|
394
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
395
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
396
|
-
i0.ɵɵrepeaterCreate(63,
|
|
431
|
+
i0.ɵɵelementStart(61, "div", 73)(62, "select", 74);
|
|
432
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_select_ngModelChange_62_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.SourceDetailStatusFilter, $event) || (ctx_r1.SourceDetailStatusFilter = $event); return i0.ɵɵresetView($event); });
|
|
433
|
+
i0.ɵɵlistener("ngModelChange", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_select_ngModelChange_62_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnSourceDetailStatusFilterChange()); });
|
|
434
|
+
i0.ɵɵrepeaterCreate(63, ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_64_Template, 2, 2, "option", 75, i0.ɵɵrepeaterTrackByIdentity);
|
|
397
435
|
i0.ɵɵelementEnd();
|
|
398
|
-
i0.ɵɵelementStart(65, "button",
|
|
399
|
-
i0.ɵɵlistener("click", function
|
|
400
|
-
i0.ɵɵelement(66, "i",
|
|
436
|
+
i0.ɵɵelementStart(65, "button", 76);
|
|
437
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_65_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RetryFailedItems()); });
|
|
438
|
+
i0.ɵɵelement(66, "i", 77);
|
|
401
439
|
i0.ɵɵtext(67, " Retry Failed ");
|
|
402
440
|
i0.ɵɵelementEnd()()();
|
|
403
|
-
i0.ɵɵelementStart(68, "div",
|
|
404
|
-
i0.ɵɵconditionalCreate(69,
|
|
405
|
-
i0.ɵɵrepeaterCreate(70,
|
|
441
|
+
i0.ɵɵelementStart(68, "div", 78);
|
|
442
|
+
i0.ɵɵconditionalCreate(69, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_69_Template, 3, 1, "div", 79);
|
|
443
|
+
i0.ɵɵrepeaterCreate(70, ClassifySourcesTabComponent_Conditional_27_Conditional_10_For_71_Template, 12, 11, "div", 80, _forTrack0);
|
|
406
444
|
i0.ɵɵelementEnd();
|
|
407
|
-
i0.ɵɵconditionalCreate(72,
|
|
445
|
+
i0.ɵɵconditionalCreate(72, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_72_Template, 9, 4, "div", 81);
|
|
408
446
|
i0.ɵɵelementEnd();
|
|
409
|
-
i0.ɵɵconditionalCreate(73,
|
|
410
|
-
i0.ɵɵelementStart(74, "div",
|
|
411
|
-
i0.ɵɵlistener("click", function
|
|
412
|
-
i0.ɵɵelement(76, "i",
|
|
447
|
+
i0.ɵɵconditionalCreate(73, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Conditional_73_Template, 6, 0, "div", 62);
|
|
448
|
+
i0.ɵɵelementStart(74, "div", 82)(75, "button", 83);
|
|
449
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_75_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OpenEditSourceFromDetail()); });
|
|
450
|
+
i0.ɵɵelement(76, "i", 41);
|
|
413
451
|
i0.ɵɵtext(77, " Edit ");
|
|
414
452
|
i0.ɵɵelementEnd();
|
|
415
|
-
i0.ɵɵelementStart(78, "button",
|
|
416
|
-
i0.ɵɵlistener("click", function
|
|
417
|
-
i0.ɵɵelement(79, "i",
|
|
453
|
+
i0.ɵɵelementStart(78, "button", 84);
|
|
454
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_78_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.RunSourceFromDetail()); });
|
|
455
|
+
i0.ɵɵelement(79, "i", 42);
|
|
418
456
|
i0.ɵɵtext(80, " Run Now ");
|
|
419
457
|
i0.ɵɵelementEnd();
|
|
420
|
-
i0.ɵɵelementStart(81, "button",
|
|
421
|
-
i0.ɵɵlistener("click", function
|
|
422
|
-
i0.ɵɵelement(82, "i",
|
|
458
|
+
i0.ɵɵelementStart(81, "button", 85);
|
|
459
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template_button_click_81_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.DeleteSourceFromDetail()); });
|
|
460
|
+
i0.ɵɵelement(82, "i", 46);
|
|
423
461
|
i0.ɵɵtext(83, " Delete ");
|
|
424
462
|
i0.ɵɵelementEnd()();
|
|
425
463
|
} if (rf & 2) {
|
|
426
|
-
const
|
|
464
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
427
465
|
i0.ɵɵadvance(2);
|
|
428
|
-
i0.ɵɵclassMap(
|
|
466
|
+
i0.ɵɵclassMap(ctx_r1.SelectedSource.Icon);
|
|
429
467
|
i0.ɵɵadvance(3);
|
|
430
|
-
i0.ɵɵtextInterpolate(
|
|
468
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.Name);
|
|
431
469
|
i0.ɵɵadvance(3);
|
|
432
|
-
i0.ɵɵtextInterpolate(
|
|
470
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.SourceTypeName);
|
|
433
471
|
i0.ɵɵadvance();
|
|
434
|
-
i0.ɵɵclassMap("at-detail-badge-status-" +
|
|
472
|
+
i0.ɵɵclassMap("at-detail-badge-status-" + ctx_r1.SelectedSource.StatusClass);
|
|
435
473
|
i0.ɵɵadvance();
|
|
436
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
474
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.SelectedSource.StatusLabel, " ");
|
|
437
475
|
i0.ɵɵadvance(5);
|
|
438
|
-
i0.ɵɵconditional(
|
|
476
|
+
i0.ɵɵconditional(ctx_r1.SelectedSource.URL ? 15 : -1);
|
|
439
477
|
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵconditional(
|
|
478
|
+
i0.ɵɵconditional(ctx_r1.SelectedSource.RequiresFileType ? 16 : -1);
|
|
441
479
|
i0.ɵɵadvance(5);
|
|
442
|
-
i0.ɵɵtextInterpolate(
|
|
480
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.EmbeddingModelName);
|
|
443
481
|
i0.ɵɵadvance(5);
|
|
444
|
-
i0.ɵɵtextInterpolate(
|
|
482
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.VectorIndexName);
|
|
445
483
|
i0.ɵɵadvance(7);
|
|
446
|
-
i0.ɵɵtextInterpolate(
|
|
484
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatNumber(ctx_r1.SelectedSource.ItemCount));
|
|
447
485
|
i0.ɵɵadvance(5);
|
|
448
|
-
i0.ɵɵtextInterpolate(
|
|
486
|
+
i0.ɵɵtextInterpolate(ctx_r1.formatNumber(ctx_r1.SelectedSource.TagCount));
|
|
449
487
|
i0.ɵɵadvance(5);
|
|
450
|
-
i0.ɵɵtextInterpolate(
|
|
488
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.AvgTags);
|
|
451
489
|
i0.ɵɵadvance(5);
|
|
452
|
-
i0.ɵɵtextInterpolate(
|
|
490
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.LastRunAgo);
|
|
453
491
|
i0.ɵɵadvance(4);
|
|
454
|
-
i0.ɵɵclassProp("at-kpi-error-value",
|
|
492
|
+
i0.ɵɵclassProp("at-kpi-error-value", ctx_r1.SelectedSource.ErrorCount > 0);
|
|
455
493
|
i0.ɵɵadvance();
|
|
456
|
-
i0.ɵɵtextInterpolate(
|
|
494
|
+
i0.ɵɵtextInterpolate(ctx_r1.SelectedSource.ErrorCount);
|
|
457
495
|
i0.ɵɵadvance(6);
|
|
458
|
-
i0.ɵɵtextInterpolate2("Content Library (",
|
|
496
|
+
i0.ɵɵtextInterpolate2("Content Library (", ctx_r1.FilteredSourceDetailTotal, " of ", i0.ɵɵpipeBind1(60, 24, ctx_r1.SelectedSource.ItemCount), ")");
|
|
459
497
|
i0.ɵɵadvance(3);
|
|
460
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
498
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SourceDetailStatusFilter);
|
|
461
499
|
i0.ɵɵadvance();
|
|
462
|
-
i0.ɵɵrepeater(
|
|
500
|
+
i0.ɵɵrepeater(ctx_r1.SourceDetailStatusOptions);
|
|
463
501
|
i0.ɵɵadvance(6);
|
|
464
|
-
i0.ɵɵconditional(
|
|
502
|
+
i0.ɵɵconditional(ctx_r1.FilteredSourceDetailItems.length === 0 ? 69 : -1);
|
|
465
503
|
i0.ɵɵadvance();
|
|
466
|
-
i0.ɵɵrepeater(
|
|
504
|
+
i0.ɵɵrepeater(ctx_r1.FilteredSourceDetailItems);
|
|
467
505
|
i0.ɵɵadvance(2);
|
|
468
|
-
i0.ɵɵconditional(
|
|
506
|
+
i0.ɵɵconditional(ctx_r1.SourceDetailTotalPages > 1 ? 72 : -1);
|
|
469
507
|
i0.ɵɵadvance();
|
|
470
|
-
i0.ɵɵconditional(
|
|
508
|
+
i0.ɵɵconditional(ctx_r1.SelectedSource.RunHistory.length > 0 ? 73 : -1);
|
|
471
509
|
} }
|
|
472
|
-
function
|
|
473
|
-
const
|
|
474
|
-
i0.ɵɵelementStart(0, "div",
|
|
475
|
-
i0.ɵɵlistener("click", function
|
|
510
|
+
function ClassifySourcesTabComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
511
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
512
|
+
i0.ɵɵelementStart(0, "div", 50);
|
|
513
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseSourceDetail()); });
|
|
476
514
|
i0.ɵɵelementEnd();
|
|
477
|
-
i0.ɵɵelementStart(1, "div",
|
|
478
|
-
i0.ɵɵelement(4, "i",
|
|
515
|
+
i0.ɵɵelementStart(1, "div", 51)(2, "div", 52)(3, "h3");
|
|
516
|
+
i0.ɵɵelement(4, "i", 24);
|
|
479
517
|
i0.ɵɵtext(5, " Source Detail");
|
|
480
518
|
i0.ɵɵelementEnd();
|
|
481
|
-
i0.ɵɵelementStart(6, "button",
|
|
482
|
-
i0.ɵɵlistener("click", function
|
|
483
|
-
i0.ɵɵelement(7, "i",
|
|
519
|
+
i0.ɵɵelementStart(6, "button", 53);
|
|
520
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_27_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseSourceDetail()); });
|
|
521
|
+
i0.ɵɵelement(7, "i", 54);
|
|
484
522
|
i0.ɵɵelementEnd()();
|
|
485
|
-
i0.ɵɵelementStart(8, "div",
|
|
486
|
-
i0.ɵɵconditionalCreate(9,
|
|
487
|
-
i0.ɵɵconditionalCreate(10,
|
|
523
|
+
i0.ɵɵelementStart(8, "div", 55);
|
|
524
|
+
i0.ɵɵconditionalCreate(9, ClassifySourcesTabComponent_Conditional_27_Conditional_9_Template, 2, 0, "div", 10);
|
|
525
|
+
i0.ɵɵconditionalCreate(10, ClassifySourcesTabComponent_Conditional_27_Conditional_10_Template, 84, 26);
|
|
488
526
|
i0.ɵɵelementEnd()();
|
|
489
527
|
} if (rf & 2) {
|
|
490
|
-
const
|
|
528
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
491
529
|
i0.ɵɵadvance(9);
|
|
492
|
-
i0.ɵɵconditional(
|
|
530
|
+
i0.ɵɵconditional(ctx_r1.SourceDetailLoading ? 9 : -1);
|
|
493
531
|
i0.ɵɵadvance();
|
|
494
|
-
i0.ɵɵconditional(!
|
|
532
|
+
i0.ɵɵconditional(!ctx_r1.SourceDetailLoading && ctx_r1.SelectedSource ? 10 : -1);
|
|
495
533
|
} }
|
|
496
|
-
function
|
|
497
|
-
i0.ɵɵelement(0, "i",
|
|
534
|
+
function ClassifySourcesTabComponent_Conditional_28_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
535
|
+
i0.ɵɵelement(0, "i", 21);
|
|
498
536
|
i0.ɵɵtext(1, " Saving... ");
|
|
499
537
|
} }
|
|
500
|
-
function
|
|
501
|
-
i0.ɵɵelement(0, "i",
|
|
538
|
+
function ClassifySourcesTabComponent_Conditional_28_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
539
|
+
i0.ɵɵelement(0, "i", 120);
|
|
502
540
|
i0.ɵɵtext(1, " Create Schedule ");
|
|
503
541
|
} }
|
|
504
|
-
function
|
|
505
|
-
const
|
|
506
|
-
i0.ɵɵelementStart(0, "div",
|
|
507
|
-
i0.ɵɵlistener("click", function
|
|
508
|
-
i0.ɵɵelementStart(1, "div",
|
|
509
|
-
i0.ɵɵlistener("click", function
|
|
510
|
-
i0.ɵɵelementStart(2, "div",
|
|
511
|
-
i0.ɵɵelement(4, "i",
|
|
542
|
+
function ClassifySourcesTabComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
543
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
544
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
545
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
|
|
546
|
+
i0.ɵɵelementStart(1, "div", 104);
|
|
547
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r14); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
548
|
+
i0.ɵɵelementStart(2, "div", 105)(3, "h3");
|
|
549
|
+
i0.ɵɵelement(4, "i", 48);
|
|
512
550
|
i0.ɵɵtext(5, " Schedule Pipeline");
|
|
513
551
|
i0.ɵɵelementEnd();
|
|
514
|
-
i0.ɵɵelementStart(6, "button",
|
|
515
|
-
i0.ɵɵlistener("click", function
|
|
516
|
-
i0.ɵɵelement(7, "i",
|
|
552
|
+
i0.ɵɵelementStart(6, "button", 106);
|
|
553
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
|
|
554
|
+
i0.ɵɵelement(7, "i", 54);
|
|
517
555
|
i0.ɵɵelementEnd()();
|
|
518
|
-
i0.ɵɵelementStart(8, "div",
|
|
556
|
+
i0.ɵɵelementStart(8, "div", 107)(9, "div", 108)(10, "label");
|
|
519
557
|
i0.ɵɵtext(11, "Source");
|
|
520
558
|
i0.ɵɵelementEnd();
|
|
521
|
-
i0.ɵɵelementStart(12, "div",
|
|
559
|
+
i0.ɵɵelementStart(12, "div", 109);
|
|
522
560
|
i0.ɵɵelement(13, "i");
|
|
523
561
|
i0.ɵɵtext(14);
|
|
524
562
|
i0.ɵɵelementEnd()();
|
|
525
|
-
i0.ɵɵelementStart(15, "div",
|
|
563
|
+
i0.ɵɵelementStart(15, "div", 108)(16, "label");
|
|
526
564
|
i0.ɵɵtext(17, "Action");
|
|
527
565
|
i0.ɵɵelementEnd();
|
|
528
|
-
i0.ɵɵelementStart(18, "div",
|
|
566
|
+
i0.ɵɵelementStart(18, "div", 110);
|
|
529
567
|
i0.ɵɵtext(19, "Autotag and Vectorize Content");
|
|
530
568
|
i0.ɵɵelementEnd()();
|
|
531
|
-
i0.ɵɵelementStart(20, "div",
|
|
569
|
+
i0.ɵɵelementStart(20, "div", 108)(21, "label", 111);
|
|
532
570
|
i0.ɵɵtext(22, "Cron Expression");
|
|
533
571
|
i0.ɵɵelementEnd();
|
|
534
|
-
i0.ɵɵelementStart(23, "input",
|
|
535
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
572
|
+
i0.ɵɵelementStart(23, "input", 112);
|
|
573
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_28_Template_input_ngModelChange_23_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleCron, $event) || (ctx_r1.ScheduleCron = $event); return i0.ɵɵresetView($event); });
|
|
536
574
|
i0.ɵɵelementEnd();
|
|
537
|
-
i0.ɵɵelementStart(24, "div",
|
|
538
|
-
i0.ɵɵelement(25, "i",
|
|
575
|
+
i0.ɵɵelementStart(24, "div", 113);
|
|
576
|
+
i0.ɵɵelement(25, "i", 114);
|
|
539
577
|
i0.ɵɵtext(26);
|
|
540
578
|
i0.ɵɵelementEnd()();
|
|
541
|
-
i0.ɵɵelementStart(27, "div",
|
|
579
|
+
i0.ɵɵelementStart(27, "div", 115)(28, "label", 116);
|
|
542
580
|
i0.ɵɵtext(29, "Enabled");
|
|
543
581
|
i0.ɵɵelementEnd();
|
|
544
|
-
i0.ɵɵelementStart(30, "input",
|
|
545
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
582
|
+
i0.ɵɵelementStart(30, "input", 117);
|
|
583
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ClassifySourcesTabComponent_Conditional_28_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.ScheduleEnabled, $event) || (ctx_r1.ScheduleEnabled = $event); return i0.ɵɵresetView($event); });
|
|
546
584
|
i0.ɵɵelementEnd()()();
|
|
547
|
-
i0.ɵɵelementStart(31, "div",
|
|
548
|
-
i0.ɵɵlistener("click", function
|
|
549
|
-
i0.ɵɵconditionalCreate(33,
|
|
585
|
+
i0.ɵɵelementStart(31, "div", 118)(32, "button", 119);
|
|
586
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_32_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SaveSchedule()); });
|
|
587
|
+
i0.ɵɵconditionalCreate(33, ClassifySourcesTabComponent_Conditional_28_Conditional_33_Template, 2, 0)(34, ClassifySourcesTabComponent_Conditional_28_Conditional_34_Template, 2, 0);
|
|
550
588
|
i0.ɵɵelementEnd();
|
|
551
|
-
i0.ɵɵelementStart(35, "button",
|
|
552
|
-
i0.ɵɵlistener("click", function
|
|
589
|
+
i0.ɵɵelementStart(35, "button", 84);
|
|
590
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Conditional_28_Template_button_click_35_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.CloseScheduleDialog()); });
|
|
553
591
|
i0.ɵɵtext(36, "Cancel");
|
|
554
592
|
i0.ɵɵelementEnd()()()();
|
|
555
593
|
} if (rf & 2) {
|
|
556
|
-
const
|
|
594
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
557
595
|
i0.ɵɵadvance(13);
|
|
558
|
-
i0.ɵɵclassMap(
|
|
596
|
+
i0.ɵɵclassMap(ctx_r1.SchedulingSourceCard.Icon);
|
|
559
597
|
i0.ɵɵadvance();
|
|
560
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
598
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.SchedulingSourceCard.Name, " ");
|
|
561
599
|
i0.ɵɵadvance(9);
|
|
562
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
600
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleCron);
|
|
563
601
|
i0.ɵɵadvance(3);
|
|
564
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
602
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.GetCronPreview(ctx_r1.ScheduleCron), " ");
|
|
565
603
|
i0.ɵɵadvance(4);
|
|
566
|
-
i0.ɵɵtwoWayProperty("ngModel",
|
|
604
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ScheduleEnabled);
|
|
567
605
|
i0.ɵɵadvance(2);
|
|
568
|
-
i0.ɵɵproperty("disabled",
|
|
606
|
+
i0.ɵɵproperty("disabled", ctx_r1.ScheduleSaving);
|
|
569
607
|
i0.ɵɵadvance();
|
|
570
|
-
i0.ɵɵconditional(
|
|
608
|
+
i0.ɵɵconditional(ctx_r1.ScheduleSaving ? 33 : 34);
|
|
571
609
|
} }
|
|
572
610
|
export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
573
611
|
cdr = inject(ChangeDetectorRef);
|
|
@@ -644,6 +682,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
644
682
|
return this._entityRecordDocCache;
|
|
645
683
|
}
|
|
646
684
|
// ── Tab-local view state ──
|
|
685
|
+
/** Shown while a manual Refresh() recomputes the source cards. */
|
|
686
|
+
IsLoading = false;
|
|
647
687
|
SourceCards = [];
|
|
648
688
|
// Source Detail slide-in
|
|
649
689
|
SelectedSource = null;
|
|
@@ -667,6 +707,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
667
707
|
// ── Cross-tab intents (host owns the slide-in form, navigation, pipeline) ──
|
|
668
708
|
/** Bubble "add source" up — host opens its slide-in CRUD form. */
|
|
669
709
|
AddSourceRequested = new EventEmitter();
|
|
710
|
+
/** Bubble "add source (guided)" up — host opens the setup wizard. */
|
|
711
|
+
AddSourceGuidedRequested = new EventEmitter();
|
|
670
712
|
/** Bubble "edit source" up — host opens its slide-in CRUD form pre-filled. */
|
|
671
713
|
EditSourceRequested = new EventEmitter();
|
|
672
714
|
/** Bubble "run pipeline for source" up — host runs the pipeline for the given source ID. */
|
|
@@ -675,9 +717,24 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
675
717
|
OpenContentItemRequested = new EventEmitter();
|
|
676
718
|
/** Fired after a delete / schedule change so the host reloads the shared source list. */
|
|
677
719
|
DataChanged = new EventEmitter();
|
|
720
|
+
/**
|
|
721
|
+
* Recompute the source cards from the current host-supplied inputs. The data
|
|
722
|
+
* itself is owned by the host (flows in via @Input); Refresh just rebuilds the
|
|
723
|
+
* view models and surfaces a brief loading state for user feedback.
|
|
724
|
+
*/
|
|
725
|
+
async Refresh() {
|
|
726
|
+
this.IsLoading = true;
|
|
727
|
+
this.cdr.detectChanges();
|
|
728
|
+
this.rebuild();
|
|
729
|
+
this.IsLoading = false;
|
|
730
|
+
this.cdr.detectChanges();
|
|
731
|
+
}
|
|
678
732
|
onAddSource() {
|
|
679
733
|
this.AddSourceRequested.emit();
|
|
680
734
|
}
|
|
735
|
+
onAddSourceGuided() {
|
|
736
|
+
this.AddSourceGuidedRequested.emit();
|
|
737
|
+
}
|
|
681
738
|
onEditSource(card) {
|
|
682
739
|
this.EditSourceRequested.emit(card);
|
|
683
740
|
}
|
|
@@ -1254,7 +1311,7 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
1254
1311
|
const itemStatuses = this.inferPipelineStatuses(item, tagCount);
|
|
1255
1312
|
return {
|
|
1256
1313
|
ID: itemId,
|
|
1257
|
-
Name: item['Name']
|
|
1314
|
+
Name: deriveDisplayName({ Name: item['Name'], Description: item['Description'] }),
|
|
1258
1315
|
SourceName: item['ContentSource'] ?? '',
|
|
1259
1316
|
SourceTypeName: item['ContentSourceType'] ?? '',
|
|
1260
1317
|
ContentTypeName: item['ContentType'] ?? '',
|
|
@@ -1314,45 +1371,67 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
1314
1371
|
});
|
|
1315
1372
|
}
|
|
1316
1373
|
static ɵfac = /*@__PURE__*/ (() => { let ɵClassifySourcesTabComponent_BaseFactory; return function ClassifySourcesTabComponent_Factory(__ngFactoryType__) { return (ɵClassifySourcesTabComponent_BaseFactory || (ɵClassifySourcesTabComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ClassifySourcesTabComponent)))(__ngFactoryType__ || ClassifySourcesTabComponent); }; })();
|
|
1317
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifySourcesTabComponent, selectors: [["classify-sources-tab"]], inputs: { Sources: "Sources", Items: "Items", Tags: "Tags", Runs: "Runs", TotalItemCount: "TotalItemCount", TotalTagCount: "TotalTagCount", ScheduledActions: "ScheduledActions", EntityRecordDocCache: "EntityRecordDocCache" }, outputs: { AddSourceRequested: "AddSourceRequested", EditSourceRequested: "EditSourceRequested", RunSourceRequested: "RunSourceRequested", OpenContentItemRequested: "OpenContentItemRequested", DataChanged: "DataChanged" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
1374
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifySourcesTabComponent, selectors: [["classify-sources-tab"]], inputs: { Sources: "Sources", Items: "Items", Tags: "Tags", Runs: "Runs", TotalItemCount: "TotalItemCount", TotalTagCount: "TotalTagCount", ScheduledActions: "ScheduledActions", EntityRecordDocCache: "EntityRecordDocCache" }, outputs: { AddSourceRequested: "AddSourceRequested", AddSourceGuidedRequested: "AddSourceGuidedRequested", EditSourceRequested: "EditSourceRequested", RunSourceRequested: "RunSourceRequested", OpenContentItemRequested: "OpenContentItemRequested", DataChanged: "DataChanged" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 30, vars: 11, consts: [["Title", "Content Sources", "Subtitle", "Configure where content is ingested from"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "disabled"], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], [1, "mj-action-label"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-loading-overlay"], [1, "at-page-body"], [1, "at-sources-empty"], [1, "at-sources-grid"], [1, "at-source-card-full", "at-source-card-clickable"], [1, "at-add-source-card", 3, "click"], [1, "fa-solid", "fa-plus-circle"], [2, "font-size", "0.85rem", "font-weight", "600"], [2, "font-size", "0.72rem"], [1, "at-schedule-overlay"], [3, "Closed", "Provider", "Show", "SourceCard"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-arrows-rotate"], ["text", "Refreshing sources\u2026"], [1, "fa-solid", "fa-database"], [1, "at-sources-empty-actions"], [1, "at-source-card-full", "at-source-card-clickable", 3, "click"], [1, "at-source-card-header"], [1, "at-source-card-icon"], [1, "at-source-card-title"], [1, "at-source-card-type"], [1, "at-source-card-status"], [1, "at-source-mini-status"], [1, "at-source-card-url"], [1, "at-source-card-stats"], [1, "at-source-stat"], [1, "at-source-stat-value"], [1, "at-source-stat-label"], ["title", "Click to remove schedule", 1, "at-schedule-indicator"], [1, "at-source-card-actions"], [1, "at-source-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-flask"], [1, "at-source-action-btn", "at-source-schedule-btn"], [1, "at-source-action-btn", "at-source-delete-btn", 3, "click"], [1, "fa-solid", "fa-trash"], ["title", "Click to remove schedule", 1, "at-schedule-indicator", 3, "click"], [1, "fa-regular", "fa-clock"], [1, "at-source-action-btn", "at-source-schedule-btn", 3, "click"], [1, "at-slide-overlay", 3, "click"], [1, "at-slide-panel", "at-detail-panel"], [1, "at-slide-header"], ["aria-label", "Close source detail", 1, "at-slide-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "at-slide-body"], ["text", "Loading source details..."], [1, "at-detail-source-header"], [1, "at-detail-item-name"], [1, "at-detail-badges"], [1, "at-detail-badge", "at-detail-badge-type"], [1, "at-detail-badge"], [1, "at-detail-section"], [1, "at-detail-section-label"], [1, "at-detail-meta-grid"], [1, "at-detail-meta-row"], [1, "at-detail-meta-key"], [1, "at-detail-meta-value"], [1, "at-detail-stats-strip"], [1, "at-detail-stat"], [1, "at-detail-stat-value"], [1, "at-detail-stat-label"], [1, "at-detail-section-header-row"], [1, "at-detail-section-controls"], [1, "at-detail-filter-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["title", "Re-queue failed items for processing", 1, "at-action-btn", "at-retry-btn", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "at-detail-content-list"], [1, "at-empty-state", 2, "padding", "16px"], [1, "at-detail-content-item"], [1, "at-detail-pagination"], [1, "at-detail-actions"], [1, "at-action-btn", "at-primary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", 3, "click"], [1, "at-action-btn", "at-secondary-btn", "at-source-delete-btn", 3, "click"], ["target", "_blank", 1, "at-detail-link", "at-detail-meta-value", 3, "href"], [1, "at-detail-content-item", 3, "click"], [1, "at-feed-status-dot"], [1, "at-detail-content-item-name"], [1, "at-status-badge"], [1, "at-detail-content-item-tags"], [1, "at-detail-content-item-time"], [1, "at-page-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "at-page-info"], [1, "fa-solid", "fa-chevron-right"], [1, "at-detail-run-history"], [1, "at-detail-run-row"], [1, "at-run-status-badge"], [1, "at-detail-run-time"], [1, "at-detail-run-duration"], [1, "at-detail-run-items"], [1, "at-schedule-overlay", 3, "click"], [1, "at-schedule-dialog", 3, "click"], [1, "at-schedule-dialog-header"], ["aria-label", "Close", 1, "at-schedule-dialog-close", 3, "click"], [1, "at-schedule-dialog-body"], [1, "at-schedule-field"], [1, "at-schedule-source-name"], [1, "at-schedule-action-name"], ["for", "schedule-cron"], ["id", "schedule-cron", "type", "text", "placeholder", "0 2 * * *", 1, "mj-input", "at-schedule-cron-input", 3, "ngModelChange", "ngModel"], [1, "at-schedule-cron-preview"], [1, "fa-solid", "fa-info-circle"], [1, "at-schedule-field", "at-schedule-toggle-row"], ["for", "schedule-enabled"], ["id", "schedule-enabled", "type", "checkbox", 1, "mj-checkbox", 3, "ngModelChange", "ngModel"], [1, "at-schedule-dialog-footer"], [1, "at-action-btn", "at-primary-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-check"]], template: function ClassifySourcesTabComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1318
1375
|
i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1)(2, "button", 2);
|
|
1319
|
-
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_2_listener() { return ctx.
|
|
1320
|
-
i0.ɵɵ
|
|
1321
|
-
i0.ɵɵ
|
|
1322
|
-
i0.ɵɵ
|
|
1376
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_2_listener() { return ctx.Refresh(); });
|
|
1377
|
+
i0.ɵɵconditionalCreate(3, ClassifySourcesTabComponent_Conditional_3_Template, 3, 0)(4, ClassifySourcesTabComponent_Conditional_4_Template, 3, 0);
|
|
1378
|
+
i0.ɵɵelementEnd();
|
|
1379
|
+
i0.ɵɵelementStart(5, "button", 3);
|
|
1380
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_5_listener() { return ctx.onAddSourceGuided(); });
|
|
1381
|
+
i0.ɵɵelement(6, "i", 4);
|
|
1382
|
+
i0.ɵɵelementStart(7, "span", 5);
|
|
1383
|
+
i0.ɵɵtext(8, "Add Source (Guided)");
|
|
1384
|
+
i0.ɵɵelementEnd()();
|
|
1385
|
+
i0.ɵɵelementStart(9, "button", 6);
|
|
1386
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_button_click_9_listener() { return ctx.onAddSource(); });
|
|
1387
|
+
i0.ɵɵelement(10, "i", 7);
|
|
1388
|
+
i0.ɵɵelementStart(11, "span", 5);
|
|
1389
|
+
i0.ɵɵtext(12, "Add Source");
|
|
1323
1390
|
i0.ɵɵelementEnd()()()();
|
|
1324
|
-
i0.ɵɵelementStart(
|
|
1325
|
-
i0.ɵɵ
|
|
1326
|
-
i0.ɵɵelementStart(
|
|
1327
|
-
i0.ɵɵ
|
|
1328
|
-
i0.ɵɵ
|
|
1329
|
-
i0.ɵɵ
|
|
1330
|
-
i0.ɵɵ
|
|
1391
|
+
i0.ɵɵelementStart(13, "mj-page-body-interior", 8)(14, "div", 9);
|
|
1392
|
+
i0.ɵɵconditionalCreate(15, ClassifySourcesTabComponent_Conditional_15_Template, 2, 0, "div", 10);
|
|
1393
|
+
i0.ɵɵelementStart(16, "div", 11);
|
|
1394
|
+
i0.ɵɵconditionalCreate(17, ClassifySourcesTabComponent_Conditional_17_Template, 13, 0, "div", 12);
|
|
1395
|
+
i0.ɵɵelementStart(18, "div", 13);
|
|
1396
|
+
i0.ɵɵrepeaterCreate(19, ClassifySourcesTabComponent_For_20_Template, 50, 17, "div", 14, _forTrack0);
|
|
1397
|
+
i0.ɵɵelementStart(21, "div", 15);
|
|
1398
|
+
i0.ɵɵlistener("click", function ClassifySourcesTabComponent_Template_div_click_21_listener() { return ctx.onAddSource(); });
|
|
1399
|
+
i0.ɵɵelement(22, "i", 16);
|
|
1400
|
+
i0.ɵɵelementStart(23, "span", 17);
|
|
1401
|
+
i0.ɵɵtext(24, "Add Content Source");
|
|
1331
1402
|
i0.ɵɵelementEnd();
|
|
1332
|
-
i0.ɵɵelementStart(
|
|
1333
|
-
i0.ɵɵtext(
|
|
1403
|
+
i0.ɵɵelementStart(25, "span", 18);
|
|
1404
|
+
i0.ɵɵtext(26, "Web, RSS, Email, Files, API");
|
|
1334
1405
|
i0.ɵɵelementEnd()()()()()();
|
|
1335
|
-
i0.ɵɵconditionalCreate(
|
|
1336
|
-
i0.ɵɵconditionalCreate(
|
|
1337
|
-
i0.ɵɵelementStart(
|
|
1338
|
-
i0.ɵɵlistener("Closed", function
|
|
1406
|
+
i0.ɵɵconditionalCreate(27, ClassifySourcesTabComponent_Conditional_27_Template, 11, 2);
|
|
1407
|
+
i0.ɵɵconditionalCreate(28, ClassifySourcesTabComponent_Conditional_28_Template, 37, 8, "div", 19);
|
|
1408
|
+
i0.ɵɵelementStart(29, "classify-dry-run-preview", 20);
|
|
1409
|
+
i0.ɵɵlistener("Closed", function ClassifySourcesTabComponent_Template_classify_dry_run_preview_Closed_29_listener() { return ctx.CloseDryRunPreview(); });
|
|
1339
1410
|
i0.ɵɵelementEnd();
|
|
1340
1411
|
} if (rf & 2) {
|
|
1341
|
-
i0.ɵɵadvance(
|
|
1412
|
+
i0.ɵɵadvance(2);
|
|
1413
|
+
i0.ɵɵproperty("disabled", ctx.IsLoading);
|
|
1414
|
+
i0.ɵɵadvance();
|
|
1415
|
+
i0.ɵɵconditional(ctx.IsLoading ? 3 : 4);
|
|
1416
|
+
i0.ɵɵadvance(10);
|
|
1342
1417
|
i0.ɵɵproperty("Padding", false)("Flex", true);
|
|
1343
|
-
i0.ɵɵadvance(
|
|
1418
|
+
i0.ɵɵadvance(2);
|
|
1419
|
+
i0.ɵɵconditional(ctx.IsLoading ? 15 : -1);
|
|
1420
|
+
i0.ɵɵadvance(2);
|
|
1421
|
+
i0.ɵɵconditional(ctx.SourceCards.length === 0 && !ctx.IsLoading ? 17 : -1);
|
|
1422
|
+
i0.ɵɵadvance(2);
|
|
1344
1423
|
i0.ɵɵrepeater(ctx.SourceCards);
|
|
1345
1424
|
i0.ɵɵadvance(8);
|
|
1346
|
-
i0.ɵɵconditional(ctx.ShowSourceDetail ?
|
|
1425
|
+
i0.ɵɵconditional(ctx.ShowSourceDetail ? 27 : -1);
|
|
1347
1426
|
i0.ɵɵadvance();
|
|
1348
|
-
i0.ɵɵconditional(ctx.ShowScheduleDialog && ctx.SchedulingSourceCard ?
|
|
1427
|
+
i0.ɵɵconditional(ctx.ShowScheduleDialog && ctx.SchedulingSourceCard ? 28 : -1);
|
|
1349
1428
|
i0.ɵɵadvance();
|
|
1350
1429
|
i0.ɵɵproperty("Provider", ctx.Provider)("Show", ctx.ShowDryRunPreview)("SourceCard", ctx.DryRunSourceCard);
|
|
1351
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJButtonDirective, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i4.ClassifyDryRunPreviewDialogComponent, i5.DecimalPipe],
|
|
1430
|
+
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.CheckboxControlValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.MJButtonDirective, i3.MJPageHeaderInteriorComponent, i3.MJPageBodyInteriorComponent, i4.ClassifyDryRunPreviewDialogComponent, i5.DecimalPipe], styles: ["\n\n\n\n\n\n\n\n\n\n\n.at-sources-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 10px;\n padding: 48px 24px;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: 12px;\n}\n.at-sources-empty[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 2rem;\n color: var(--mj-brand-primary);\n}\n.at-sources-empty[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n.at-sources-empty[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n max-width: 460px;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n.at-sources-empty-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}"] });
|
|
1352
1431
|
}
|
|
1353
1432
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassifySourcesTabComponent, [{
|
|
1354
1433
|
type: Component,
|
|
1355
|
-
args: [{ standalone: false, selector: 'classify-sources-tab', template: "<mj-page-header-interior\n Title=\"Content Sources\"\n Subtitle=\"Configure where content is ingested from\">\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Source</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 <div class=\"at-sources-grid\">\n @for (card of SourceCards; track card.ID) {\n <div class=\"at-source-card-full at-source-card-clickable\" (click)=\"OpenSourceDetail(card)\">\n <div class=\"at-source-card-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"card.Icon\"></i></div>\n <div>\n <div class=\"at-source-card-title\">{{ card.Name }}</div>\n <div class=\"at-source-card-type\">{{ card.SourceTypeName }}@if (card.RequiresFileType) { \u00B7 {{ card.FileTypeName }}}</div>\n </div>\n <div class=\"at-source-card-status\" [class]=\"card.StatusClass\">\n <div class=\"at-source-mini-status\" [class]=\"card.StatusClass\"></div>\n {{ card.StatusLabel }}\n </div>\n </div>\n @if (card.URL) {\n <div class=\"at-source-card-url\">{{ card.URL }}</div>\n }\n <div class=\"at-source-card-stats\">\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.ItemCount) }}</div>\n <div class=\"at-source-stat-label\">Items</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.TagCount) }}</div>\n <div class=\"at-source-stat-label\">Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.AvgTags }}</div>\n <div class=\"at-source-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.LastRunAgo }}</div>\n <div class=\"at-source-stat-label\">Last Run</div>\n </div>\n </div>\n <!-- Schedule indicator -->\n @if (card.ScheduledActionID) {\n <div class=\"at-schedule-indicator\" (click)=\"RemoveSchedule(card); $event.stopPropagation()\" title=\"Click to remove schedule\">\n <i class=\"fa-regular fa-clock\"></i>\n <span>{{ GetScheduleLabel(card) }}</span>\n </div>\n }\n <div class=\"at-source-card-actions\">\n <button class=\"at-source-action-btn\" (click)=\"onEditSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n <button class=\"at-source-action-btn\" (click)=\"onRunSource(card.ID); $event.stopPropagation()\"><i class=\"fa-solid fa-play\"></i> Run</button>\n <button class=\"at-source-action-btn\" (click)=\"OpenDryRunPreview(card); $event.stopPropagation()\"><i class=\"fa-solid fa-flask\"></i> Preview</button>\n @if (!card.ScheduledActionID) {\n <button class=\"at-source-action-btn at-source-schedule-btn\" (click)=\"OpenScheduleDialog(card); $event.stopPropagation()\"><i class=\"fa-regular fa-clock\"></i> Schedule</button>\n }\n <button class=\"at-source-action-btn at-source-delete-btn\" (click)=\"DeleteSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-trash\"></i> Delete</button>\n </div>\n </div>\n }\n\n <!-- Add Source Card -->\n <div class=\"at-add-source-card\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Source</span>\n <span style=\"font-size: 0.72rem;\">Web, RSS, Email, Files, API</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SOURCE DETAIL SLIDE-IN \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowSourceDetail) {\n <div class=\"at-slide-overlay\" (click)=\"CloseSourceDetail()\"></div>\n <div class=\"at-slide-panel at-detail-panel\">\n <div class=\"at-slide-header\">\n <h3><i class=\"fa-solid fa-database\"></i> Source Detail</h3>\n <button class=\"at-slide-close\" aria-label=\"Close source detail\" (click)=\"CloseSourceDetail()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n <div class=\"at-slide-body\">\n @if (SourceDetailLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Loading source details...\"></mj-loading>\n </div>\n }\n @if (!SourceDetailLoading && SelectedSource) {\n <!-- Source Header -->\n <div class=\"at-detail-source-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"SelectedSource.Icon\"></i></div>\n <div>\n <h4 class=\"at-detail-item-name\">{{ SelectedSource.Name }}</h4>\n <div class=\"at-detail-badges\">\n <span class=\"at-detail-badge at-detail-badge-type\">{{ SelectedSource.SourceTypeName }}</span>\n <span class=\"at-detail-badge\" [class]=\"'at-detail-badge-status-' + SelectedSource.StatusClass\">\n {{ SelectedSource.StatusLabel }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Configuration -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Configuration</div>\n <div class=\"at-detail-meta-grid\">\n @if (SelectedSource.URL) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">URL</span>\n <a [href]=\"SelectedSource.URL\" target=\"_blank\" class=\"at-detail-link at-detail-meta-value\">{{ SelectedSource.URL }}</a>\n </div>\n }\n @if (SelectedSource.RequiresFileType) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Content Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.ContentTypeName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">File Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.FileTypeName }}</span>\n </div>\n }\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Embedding Model</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.EmbeddingModelName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Vector Index</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.VectorIndexName }}</span>\n </div>\n </div>\n </div>\n\n <!-- Stats -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Statistics</div>\n <div class=\"at-detail-stats-strip\">\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.ItemCount) }}</div>\n <div class=\"at-detail-stat-label\">Items</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.TagCount) }}</div>\n <div class=\"at-detail-stat-label\">Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.AvgTags }}</div>\n <div class=\"at-detail-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.LastRunAgo }}</div>\n <div class=\"at-detail-stat-label\">Last Run</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\" [class.at-kpi-error-value]=\"SelectedSource.ErrorCount > 0\">{{ SelectedSource.ErrorCount }}</div>\n <div class=\"at-detail-stat-label\">Errors</div>\n </div>\n </div>\n </div>\n\n <!-- Content Library (status badges, pagination) -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-header-row\">\n <div class=\"at-detail-section-label\">Content Library ({{ FilteredSourceDetailTotal }} of {{ SelectedSource.ItemCount | number }})</div>\n <div class=\"at-detail-section-controls\">\n <select class=\"at-detail-filter-select\" [(ngModel)]=\"SourceDetailStatusFilter\" (ngModelChange)=\"OnSourceDetailStatusFilterChange()\">\n @for (opt of SourceDetailStatusOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n <button class=\"at-action-btn at-retry-btn\" (click)=\"RetryFailedItems()\" title=\"Re-queue failed items for processing\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry Failed\n </button>\n </div>\n </div>\n <div class=\"at-detail-content-list\">\n @if (FilteredSourceDetailItems.length === 0) {\n <div class=\"at-empty-state\" style=\"padding: 16px;\">\n <p>{{ SourceDetailStatusFilter === 'All' ? 'No content items yet.' : 'No items match this filter.' }}</p>\n </div>\n }\n @for (ci of FilteredSourceDetailItems; track ci.ID) {\n <div class=\"at-detail-content-item\" (click)=\"OpenContentItemDetail(ci)\">\n <div class=\"at-feed-status-dot\" [class]=\"ci.StatusDot\"></div>\n <span class=\"at-detail-content-item-name\">{{ ci.Name }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.EmbeddingStatus)\">E:{{ ci.EmbeddingStatus }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.TaggingStatus)\">T:{{ ci.TaggingStatus }}</span>\n <span class=\"at-detail-content-item-tags\">{{ ci.TagCount }} tags</span>\n <span class=\"at-detail-content-item-time\">{{ ci.UpdatedAt }}</span>\n </div>\n }\n </div>\n <!-- Pagination -->\n @if (SourceDetailTotalPages > 1) {\n <div class=\"at-detail-pagination\">\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage === 0\" (click)=\"SourceDetailPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Prev\n </button>\n <span class=\"at-page-info\">Page {{ SourceDetailPage + 1 }} of {{ SourceDetailTotalPages }}</span>\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage >= SourceDetailTotalPages - 1\" (click)=\"SourceDetailNextPage()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Run History -->\n @if (SelectedSource.RunHistory.length > 0) {\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Recent Runs</div>\n <div class=\"at-detail-run-history\">\n @for (run of SelectedSource.RunHistory; track run.ID) {\n <div class=\"at-detail-run-row\">\n <span class=\"at-run-status-badge\" [class]=\"run.StatusClass\">{{ run.Status }}</span>\n <span class=\"at-detail-run-time\">{{ run.StartedDisplay }}</span>\n <span class=\"at-detail-run-duration\">{{ run.Duration }}</span>\n <span class=\"at-detail-run-items\">{{ run.Items }} items</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"at-detail-actions\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"OpenEditSourceFromDetail()\">\n <i class=\"fa-solid fa-pen\"></i> Edit\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"RunSourceFromDetail()\">\n <i class=\"fa-solid fa-play\"></i> Run Now\n </button>\n <button class=\"at-action-btn at-secondary-btn at-source-delete-btn\" (click)=\"DeleteSourceFromDetail()\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </button>\n </div>\n }\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SCHEDULE DIALOG \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowScheduleDialog && SchedulingSourceCard) {\n <div class=\"at-schedule-overlay\" (click)=\"CloseScheduleDialog()\">\n <div class=\"at-schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"at-schedule-dialog-header\">\n <h3><i class=\"fa-regular fa-clock\"></i> Schedule Pipeline</h3>\n <button class=\"at-schedule-dialog-close\" (click)=\"CloseScheduleDialog()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"at-schedule-dialog-body\">\n <div class=\"at-schedule-field\">\n <label>Source</label>\n <div class=\"at-schedule-source-name\">\n <i [class]=\"SchedulingSourceCard.Icon\"></i>\n {{ SchedulingSourceCard.Name }}\n </div>\n </div>\n <div class=\"at-schedule-field\">\n <label>Action</label>\n <div class=\"at-schedule-action-name\">Autotag and Vectorize Content</div>\n </div>\n <div class=\"at-schedule-field\">\n <label for=\"schedule-cron\">Cron Expression</label>\n <input id=\"schedule-cron\"\n type=\"text\"\n class=\"mj-input at-schedule-cron-input\"\n [(ngModel)]=\"ScheduleCron\"\n placeholder=\"0 2 * * *\" />\n <div class=\"at-schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetCronPreview(ScheduleCron) }}\n </div>\n </div>\n <div class=\"at-schedule-field at-schedule-toggle-row\">\n <label for=\"schedule-enabled\">Enabled</label>\n <input id=\"schedule-enabled\"\n type=\"checkbox\"\n class=\"mj-checkbox\"\n [(ngModel)]=\"ScheduleEnabled\" />\n </div>\n </div>\n <div class=\"at-schedule-dialog-footer\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"SaveSchedule()\" [disabled]=\"ScheduleSaving\">\n @if (ScheduleSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n }\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"CloseScheduleDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 DRY-RUN DISPOSITION PREVIEW (in-memory, nothing persisted) \u2550\u2550\u2550\u2550\u2550\u2550 -->\n<classify-dry-run-preview\n [Provider]=\"Provider\"\n [Show]=\"ShowDryRunPreview\"\n [SourceCard]=\"DryRunSourceCard\"\n (Closed)=\"CloseDryRunPreview()\">\n</classify-dry-run-preview>\n", styles: ["/*\n * Content Sources tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup (cards,\n * source-detail slide-in, schedule dialog) while it renders inside the host\n * shell. Tab-specific rules would live here; none are needed during the\n * host-slim step.\n */\n"] }]
|
|
1434
|
+
args: [{ standalone: false, selector: 'classify-sources-tab', template: "<mj-page-header-interior\n Title=\"Content Sources\"\n Subtitle=\"Configure where content is ingested from\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"Refresh()\" [disabled]=\"IsLoading\">\n @if (IsLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> <span class=\"mj-action-label\">Refreshing\u2026</span>\n } @else {\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n }\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> <span class=\"mj-action-label\">Add Source (Guided)</span>\n </button>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Source</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 @if (IsLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Refreshing sources\u2026\"></mj-loading>\n </div>\n }\n <div class=\"at-page-body\">\n @if (SourceCards.length === 0 && !IsLoading) {\n <div class=\"at-sources-empty\">\n <i class=\"fa-solid fa-database\"></i>\n <h3>No content sources yet</h3>\n <p>Use the guided setup to stand up your first source \u2014 pick an entity or URL, configure its document, taxonomy, and domain context in one flow.</p>\n <div class=\"at-sources-empty-actions\">\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddSourceGuided()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Add Source (Guided)\n </button>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus\"></i> Add manually\n </button>\n </div>\n </div>\n }\n\n <div class=\"at-sources-grid\">\n @for (card of SourceCards; track card.ID) {\n <div class=\"at-source-card-full at-source-card-clickable\" (click)=\"OpenSourceDetail(card)\">\n <div class=\"at-source-card-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"card.Icon\"></i></div>\n <div>\n <div class=\"at-source-card-title\">{{ card.Name }}</div>\n <div class=\"at-source-card-type\">{{ card.SourceTypeName }}@if (card.RequiresFileType) { \u00B7 {{ card.FileTypeName }}}</div>\n </div>\n <div class=\"at-source-card-status\" [class]=\"card.StatusClass\">\n <div class=\"at-source-mini-status\" [class]=\"card.StatusClass\"></div>\n {{ card.StatusLabel }}\n </div>\n </div>\n @if (card.URL) {\n <div class=\"at-source-card-url\">{{ card.URL }}</div>\n }\n <div class=\"at-source-card-stats\">\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.ItemCount) }}</div>\n <div class=\"at-source-stat-label\">Items</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ formatNumber(card.TagCount) }}</div>\n <div class=\"at-source-stat-label\">Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.AvgTags }}</div>\n <div class=\"at-source-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-source-stat\">\n <div class=\"at-source-stat-value\">{{ card.LastRunAgo }}</div>\n <div class=\"at-source-stat-label\">Last Run</div>\n </div>\n </div>\n <!-- Schedule indicator -->\n @if (card.ScheduledActionID) {\n <div class=\"at-schedule-indicator\" (click)=\"RemoveSchedule(card); $event.stopPropagation()\" title=\"Click to remove schedule\">\n <i class=\"fa-regular fa-clock\"></i>\n <span>{{ GetScheduleLabel(card) }}</span>\n </div>\n }\n <div class=\"at-source-card-actions\">\n <button class=\"at-source-action-btn\" (click)=\"onEditSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n <button class=\"at-source-action-btn\" (click)=\"onRunSource(card.ID); $event.stopPropagation()\"><i class=\"fa-solid fa-play\"></i> Run</button>\n <button class=\"at-source-action-btn\" (click)=\"OpenDryRunPreview(card); $event.stopPropagation()\"><i class=\"fa-solid fa-flask\"></i> Preview</button>\n @if (!card.ScheduledActionID) {\n <button class=\"at-source-action-btn at-source-schedule-btn\" (click)=\"OpenScheduleDialog(card); $event.stopPropagation()\"><i class=\"fa-regular fa-clock\"></i> Schedule</button>\n }\n <button class=\"at-source-action-btn at-source-delete-btn\" (click)=\"DeleteSource(card); $event.stopPropagation()\"><i class=\"fa-solid fa-trash\"></i> Delete</button>\n </div>\n </div>\n }\n\n <!-- Add Source Card -->\n <div class=\"at-add-source-card\" (click)=\"onAddSource()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Source</span>\n <span style=\"font-size: 0.72rem;\">Web, RSS, Email, Files, API</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SOURCE DETAIL SLIDE-IN \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowSourceDetail) {\n <div class=\"at-slide-overlay\" (click)=\"CloseSourceDetail()\"></div>\n <div class=\"at-slide-panel at-detail-panel\">\n <div class=\"at-slide-header\">\n <h3><i class=\"fa-solid fa-database\"></i> Source Detail</h3>\n <button class=\"at-slide-close\" aria-label=\"Close source detail\" (click)=\"CloseSourceDetail()\"><i class=\"fa-solid fa-times\"></i></button>\n </div>\n <div class=\"at-slide-body\">\n @if (SourceDetailLoading) {\n <div class=\"at-loading-overlay\">\n <mj-loading text=\"Loading source details...\"></mj-loading>\n </div>\n }\n @if (!SourceDetailLoading && SelectedSource) {\n <!-- Source Header -->\n <div class=\"at-detail-source-header\">\n <div class=\"at-source-card-icon\"><i [class]=\"SelectedSource.Icon\"></i></div>\n <div>\n <h4 class=\"at-detail-item-name\">{{ SelectedSource.Name }}</h4>\n <div class=\"at-detail-badges\">\n <span class=\"at-detail-badge at-detail-badge-type\">{{ SelectedSource.SourceTypeName }}</span>\n <span class=\"at-detail-badge\" [class]=\"'at-detail-badge-status-' + SelectedSource.StatusClass\">\n {{ SelectedSource.StatusLabel }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Configuration -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Configuration</div>\n <div class=\"at-detail-meta-grid\">\n @if (SelectedSource.URL) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">URL</span>\n <a [href]=\"SelectedSource.URL\" target=\"_blank\" class=\"at-detail-link at-detail-meta-value\">{{ SelectedSource.URL }}</a>\n </div>\n }\n @if (SelectedSource.RequiresFileType) {\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Content Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.ContentTypeName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">File Type</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.FileTypeName }}</span>\n </div>\n }\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Embedding Model</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.EmbeddingModelName }}</span>\n </div>\n <div class=\"at-detail-meta-row\">\n <span class=\"at-detail-meta-key\">Vector Index</span>\n <span class=\"at-detail-meta-value\">{{ SelectedSource.VectorIndexName }}</span>\n </div>\n </div>\n </div>\n\n <!-- Stats -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Statistics</div>\n <div class=\"at-detail-stats-strip\">\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.ItemCount) }}</div>\n <div class=\"at-detail-stat-label\">Items</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ formatNumber(SelectedSource.TagCount) }}</div>\n <div class=\"at-detail-stat-label\">Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.AvgTags }}</div>\n <div class=\"at-detail-stat-label\">Avg Tags</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\">{{ SelectedSource.LastRunAgo }}</div>\n <div class=\"at-detail-stat-label\">Last Run</div>\n </div>\n <div class=\"at-detail-stat\">\n <div class=\"at-detail-stat-value\" [class.at-kpi-error-value]=\"SelectedSource.ErrorCount > 0\">{{ SelectedSource.ErrorCount }}</div>\n <div class=\"at-detail-stat-label\">Errors</div>\n </div>\n </div>\n </div>\n\n <!-- Content Library (status badges, pagination) -->\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-header-row\">\n <div class=\"at-detail-section-label\">Content Library ({{ FilteredSourceDetailTotal }} of {{ SelectedSource.ItemCount | number }})</div>\n <div class=\"at-detail-section-controls\">\n <select class=\"at-detail-filter-select\" [(ngModel)]=\"SourceDetailStatusFilter\" (ngModelChange)=\"OnSourceDetailStatusFilterChange()\">\n @for (opt of SourceDetailStatusOptions; track opt) {\n <option [value]=\"opt\">{{ opt }}</option>\n }\n </select>\n <button class=\"at-action-btn at-retry-btn\" (click)=\"RetryFailedItems()\" title=\"Re-queue failed items for processing\">\n <i class=\"fa-solid fa-rotate-right\"></i> Retry Failed\n </button>\n </div>\n </div>\n <div class=\"at-detail-content-list\">\n @if (FilteredSourceDetailItems.length === 0) {\n <div class=\"at-empty-state\" style=\"padding: 16px;\">\n <p>{{ SourceDetailStatusFilter === 'All' ? 'No content items yet.' : 'No items match this filter.' }}</p>\n </div>\n }\n @for (ci of FilteredSourceDetailItems; track ci.ID) {\n <div class=\"at-detail-content-item\" (click)=\"OpenContentItemDetail(ci)\">\n <div class=\"at-feed-status-dot\" [class]=\"ci.StatusDot\"></div>\n <span class=\"at-detail-content-item-name\">{{ ci.Name }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.EmbeddingStatus)\">E:{{ ci.EmbeddingStatus }}</span>\n <span class=\"at-status-badge\" [class]=\"GetStatusBadgeClass(ci.TaggingStatus)\">T:{{ ci.TaggingStatus }}</span>\n <span class=\"at-detail-content-item-tags\">{{ ci.TagCount }} tags</span>\n <span class=\"at-detail-content-item-time\">{{ ci.UpdatedAt }}</span>\n </div>\n }\n </div>\n <!-- Pagination -->\n @if (SourceDetailTotalPages > 1) {\n <div class=\"at-detail-pagination\">\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage === 0\" (click)=\"SourceDetailPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i> Prev\n </button>\n <span class=\"at-page-info\">Page {{ SourceDetailPage + 1 }} of {{ SourceDetailTotalPages }}</span>\n <button class=\"at-page-btn\" [disabled]=\"SourceDetailPage >= SourceDetailTotalPages - 1\" (click)=\"SourceDetailNextPage()\">\n Next <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n\n <!-- Run History -->\n @if (SelectedSource.RunHistory.length > 0) {\n <div class=\"at-detail-section\">\n <div class=\"at-detail-section-label\">Recent Runs</div>\n <div class=\"at-detail-run-history\">\n @for (run of SelectedSource.RunHistory; track run.ID) {\n <div class=\"at-detail-run-row\">\n <span class=\"at-run-status-badge\" [class]=\"run.StatusClass\">{{ run.Status }}</span>\n <span class=\"at-detail-run-time\">{{ run.StartedDisplay }}</span>\n <span class=\"at-detail-run-duration\">{{ run.Duration }}</span>\n <span class=\"at-detail-run-items\">{{ run.Items }} items</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Actions -->\n <div class=\"at-detail-actions\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"OpenEditSourceFromDetail()\">\n <i class=\"fa-solid fa-pen\"></i> Edit\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"RunSourceFromDetail()\">\n <i class=\"fa-solid fa-play\"></i> Run Now\n </button>\n <button class=\"at-action-btn at-secondary-btn at-source-delete-btn\" (click)=\"DeleteSourceFromDetail()\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </button>\n </div>\n }\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 SCHEDULE DIALOG \u2550\u2550\u2550\u2550\u2550\u2550 -->\n@if (ShowScheduleDialog && SchedulingSourceCard) {\n <div class=\"at-schedule-overlay\" (click)=\"CloseScheduleDialog()\">\n <div class=\"at-schedule-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"at-schedule-dialog-header\">\n <h3><i class=\"fa-regular fa-clock\"></i> Schedule Pipeline</h3>\n <button class=\"at-schedule-dialog-close\" (click)=\"CloseScheduleDialog()\" aria-label=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <div class=\"at-schedule-dialog-body\">\n <div class=\"at-schedule-field\">\n <label>Source</label>\n <div class=\"at-schedule-source-name\">\n <i [class]=\"SchedulingSourceCard.Icon\"></i>\n {{ SchedulingSourceCard.Name }}\n </div>\n </div>\n <div class=\"at-schedule-field\">\n <label>Action</label>\n <div class=\"at-schedule-action-name\">Autotag and Vectorize Content</div>\n </div>\n <div class=\"at-schedule-field\">\n <label for=\"schedule-cron\">Cron Expression</label>\n <input id=\"schedule-cron\"\n type=\"text\"\n class=\"mj-input at-schedule-cron-input\"\n [(ngModel)]=\"ScheduleCron\"\n placeholder=\"0 2 * * *\" />\n <div class=\"at-schedule-cron-preview\">\n <i class=\"fa-solid fa-info-circle\"></i>\n {{ GetCronPreview(ScheduleCron) }}\n </div>\n </div>\n <div class=\"at-schedule-field at-schedule-toggle-row\">\n <label for=\"schedule-enabled\">Enabled</label>\n <input id=\"schedule-enabled\"\n type=\"checkbox\"\n class=\"mj-checkbox\"\n [(ngModel)]=\"ScheduleEnabled\" />\n </div>\n </div>\n <div class=\"at-schedule-dialog-footer\">\n <button class=\"at-action-btn at-primary-btn\" (click)=\"SaveSchedule()\" [disabled]=\"ScheduleSaving\">\n @if (ScheduleSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-check\"></i> Create Schedule\n }\n </button>\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"CloseScheduleDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n}\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550 DRY-RUN DISPOSITION PREVIEW (in-memory, nothing persisted) \u2550\u2550\u2550\u2550\u2550\u2550 -->\n<classify-dry-run-preview\n [Provider]=\"Provider\"\n [Show]=\"ShowDryRunPreview\"\n [SourceCard]=\"DryRunSourceCard\"\n (Closed)=\"CloseDryRunPreview()\">\n</classify-dry-run-preview>\n", styles: ["/*\n * Content Sources tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup (cards,\n * source-detail slide-in, schedule dialog) while it renders inside the host\n * shell. Tab-specific rules would live here; none are needed during the\n * host-slim step.\n */\n\n.at-sources-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 10px;\n padding: 48px 24px;\n background: var(--mj-bg-surface-card);\n border: 1px dashed var(--mj-border-default);\n border-radius: 12px;\n}\n.at-sources-empty > i {\n font-size: 2rem;\n color: var(--mj-brand-primary);\n}\n.at-sources-empty h3 {\n margin: 0;\n font-size: 1rem;\n color: var(--mj-text-primary);\n}\n.at-sources-empty p {\n margin: 0;\n max-width: 460px;\n font-size: 0.85rem;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n.at-sources-empty-actions {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n"] }]
|
|
1356
1435
|
}], null, { Sources: [{
|
|
1357
1436
|
type: Input
|
|
1358
1437
|
}], Items: [{
|
|
@@ -1371,6 +1450,8 @@ export class ClassifySourcesTabComponent extends BaseAngularComponent {
|
|
|
1371
1450
|
type: Input
|
|
1372
1451
|
}], AddSourceRequested: [{
|
|
1373
1452
|
type: Output
|
|
1453
|
+
}], AddSourceGuidedRequested: [{
|
|
1454
|
+
type: Output
|
|
1374
1455
|
}], EditSourceRequested: [{
|
|
1375
1456
|
type: Output
|
|
1376
1457
|
}], RunSourceRequested: [{
|