@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
|
@@ -7,55 +7,74 @@
|
|
|
7
7
|
* count). The slide-in CRUD form stays in the host — this tab emits
|
|
8
8
|
* Add/Edit intents up via @Output and the host opens its existing form.
|
|
9
9
|
*/
|
|
10
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
10
|
+
import { Component, ChangeDetectorRef, EventEmitter, Input, Output, inject } from '@angular/core';
|
|
11
11
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
12
12
|
import { formatNumber } from '../shared/classify.format';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@memberjunction/ng-
|
|
14
|
+
import * as i1 from "@memberjunction/ng-shared-generic";
|
|
15
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
16
|
+
import * as i3 from "../components/classify-org-context-editor.component";
|
|
15
17
|
const _forTrack0 = ($index, $item) => $item.ID;
|
|
16
|
-
function
|
|
18
|
+
function ClassifyTypesTabComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
19
|
+
i0.ɵɵelement(0, "i", 18);
|
|
20
|
+
i0.ɵɵelementStart(1, "span", 5);
|
|
21
|
+
i0.ɵɵtext(2, "Refreshing\u2026");
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} }
|
|
24
|
+
function ClassifyTypesTabComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
i0.ɵɵelement(0, "i", 19);
|
|
26
|
+
i0.ɵɵelementStart(1, "span", 5);
|
|
27
|
+
i0.ɵɵtext(2, "Refresh");
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} }
|
|
30
|
+
function ClassifyTypesTabComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
32
|
+
i0.ɵɵelement(1, "mj-loading", 20);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} }
|
|
35
|
+
function ClassifyTypesTabComponent_For_17_Template(rf, ctx) { if (rf & 1) {
|
|
17
36
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
18
|
-
i0.ɵɵelementStart(0, "div",
|
|
37
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "div", 21)(2, "span", 22);
|
|
19
38
|
i0.ɵɵtext(3);
|
|
20
39
|
i0.ɵɵelementEnd();
|
|
21
|
-
i0.ɵɵelementStart(4, "span",
|
|
40
|
+
i0.ɵɵelementStart(4, "span", 23);
|
|
22
41
|
i0.ɵɵtext(5);
|
|
23
42
|
i0.ɵɵelementEnd()();
|
|
24
|
-
i0.ɵɵelementStart(6, "div",
|
|
43
|
+
i0.ɵɵelementStart(6, "div", 24)(7, "span", 25);
|
|
25
44
|
i0.ɵɵtext(8, "Description");
|
|
26
45
|
i0.ɵɵelementEnd();
|
|
27
|
-
i0.ɵɵelementStart(9, "span",
|
|
46
|
+
i0.ɵɵelementStart(9, "span", 26);
|
|
28
47
|
i0.ɵɵtext(10);
|
|
29
48
|
i0.ɵɵelementEnd()();
|
|
30
|
-
i0.ɵɵelementStart(11, "div",
|
|
49
|
+
i0.ɵɵelementStart(11, "div", 24)(12, "span", 25);
|
|
31
50
|
i0.ɵɵtext(13, "Sources Using");
|
|
32
51
|
i0.ɵɵelementEnd();
|
|
33
|
-
i0.ɵɵelementStart(14, "span",
|
|
52
|
+
i0.ɵɵelementStart(14, "span", 26);
|
|
34
53
|
i0.ɵɵtext(15);
|
|
35
54
|
i0.ɵɵelementEnd()();
|
|
36
|
-
i0.ɵɵelementStart(16, "div",
|
|
55
|
+
i0.ɵɵelementStart(16, "div", 24)(17, "span", 25);
|
|
37
56
|
i0.ɵɵtext(18, "Items Tagged");
|
|
38
57
|
i0.ɵɵelementEnd();
|
|
39
|
-
i0.ɵɵelementStart(19, "span",
|
|
58
|
+
i0.ɵɵelementStart(19, "span", 26);
|
|
40
59
|
i0.ɵɵtext(20);
|
|
41
60
|
i0.ɵɵelementEnd()();
|
|
42
|
-
i0.ɵɵelementStart(21, "div",
|
|
43
|
-
i0.ɵɵelement(22, "i",
|
|
61
|
+
i0.ɵɵelementStart(21, "div", 27);
|
|
62
|
+
i0.ɵɵelement(22, "i", 28);
|
|
44
63
|
i0.ɵɵelementStart(23, "span");
|
|
45
64
|
i0.ɵɵtext(24);
|
|
46
65
|
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelementStart(25, "div",
|
|
48
|
-
i0.ɵɵelement(26, "div",
|
|
66
|
+
i0.ɵɵelementStart(25, "div", 29);
|
|
67
|
+
i0.ɵɵelement(26, "div", 30);
|
|
49
68
|
i0.ɵɵelementEnd();
|
|
50
69
|
i0.ɵɵelementStart(27, "span");
|
|
51
70
|
i0.ɵɵtext(28);
|
|
52
71
|
i0.ɵɵelementEnd();
|
|
53
|
-
i0.ɵɵelementStart(29, "span",
|
|
72
|
+
i0.ɵɵelementStart(29, "span", 31);
|
|
54
73
|
i0.ɵɵtext(30, "tags/item");
|
|
55
74
|
i0.ɵɵelementEnd()();
|
|
56
|
-
i0.ɵɵelementStart(31, "div",
|
|
57
|
-
i0.ɵɵlistener("click", function
|
|
58
|
-
i0.ɵɵelement(33, "i",
|
|
75
|
+
i0.ɵɵelementStart(31, "div", 32)(32, "button", 33);
|
|
76
|
+
i0.ɵɵlistener("click", function ClassifyTypesTabComponent_For_17_Template_button_click_32_listener() { const card_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onEditType(card_r2)); });
|
|
77
|
+
i0.ɵɵelement(33, "i", 34);
|
|
59
78
|
i0.ɵɵtext(34, " Edit");
|
|
60
79
|
i0.ɵɵelementEnd()()();
|
|
61
80
|
} if (rf & 2) {
|
|
@@ -79,6 +98,9 @@ function ClassifyTypesTabComponent_For_11_Template(rf, ctx) { if (rf & 1) {
|
|
|
79
98
|
i0.ɵɵtextInterpolate(card_r2.MaxTags);
|
|
80
99
|
} }
|
|
81
100
|
export class ClassifyTypesTabComponent extends BaseAngularComponent {
|
|
101
|
+
cdr = inject(ChangeDetectorRef);
|
|
102
|
+
/** Shown while a manual Refresh() recomputes the content-type cards. */
|
|
103
|
+
IsLoading = false;
|
|
82
104
|
/** Raw `MJ: Content Types` rows — the primary source for the cards. */
|
|
83
105
|
_contentTypes = [];
|
|
84
106
|
set ContentTypes(value) {
|
|
@@ -121,6 +143,18 @@ export class ClassifyTypesTabComponent extends BaseAngularComponent {
|
|
|
121
143
|
/** Bubble Add/Edit intents to the host, which owns the slide-in CRUD form. */
|
|
122
144
|
AddTypeRequested = new EventEmitter();
|
|
123
145
|
EditTypeRequested = new EventEmitter();
|
|
146
|
+
/**
|
|
147
|
+
* Recompute the content-type cards from the current host-supplied inputs. The
|
|
148
|
+
* data is host-owned (flows in via @Input); Refresh rebuilds the view models
|
|
149
|
+
* and surfaces a brief loading state for user feedback.
|
|
150
|
+
*/
|
|
151
|
+
async Refresh() {
|
|
152
|
+
this.IsLoading = true;
|
|
153
|
+
this.cdr.detectChanges();
|
|
154
|
+
this.rebuild();
|
|
155
|
+
this.IsLoading = false;
|
|
156
|
+
this.cdr.detectChanges();
|
|
157
|
+
}
|
|
124
158
|
onAddType() {
|
|
125
159
|
this.AddTypeRequested.emit();
|
|
126
160
|
}
|
|
@@ -175,34 +209,51 @@ export class ClassifyTypesTabComponent extends BaseAngularComponent {
|
|
|
175
209
|
return counts;
|
|
176
210
|
}
|
|
177
211
|
static ɵfac = /*@__PURE__*/ (() => { let ɵClassifyTypesTabComponent_BaseFactory; return function ClassifyTypesTabComponent_Factory(__ngFactoryType__) { return (ɵClassifyTypesTabComponent_BaseFactory || (ɵClassifyTypesTabComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ClassifyTypesTabComponent)))(__ngFactoryType__ || ClassifyTypesTabComponent); }; })();
|
|
178
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifyTypesTabComponent, selectors: [["classify-types-tab"]], inputs: { ContentTypes: "ContentTypes", Sources: "Sources", Items: "Items", TotalItemCount: "TotalItemCount" }, outputs: { AddTypeRequested: "AddTypeRequested", EditTypeRequested: "EditTypeRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
212
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifyTypesTabComponent, selectors: [["classify-types-tab"]], inputs: { ContentTypes: "ContentTypes", Sources: "Sources", Items: "Items", TotalItemCount: "TotalItemCount" }, outputs: { AddTypeRequested: "AddTypeRequested", EditTypeRequested: "EditTypeRequested" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 24, vars: 6, consts: [["Title", "Content Types", "Subtitle", "Configure AI tagging rules per content category"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "mj-action-label"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-loading-overlay"], [1, "at-page-body"], [1, "at-org-ctx-wrap"], [3, "Provider"], [1, "at-ct-grid"], [1, "at-ct-card"], [1, "at-add-type-card", 3, "click"], [1, "fa-solid", "fa-plus-circle"], [2, "font-size", "0.85rem", "font-weight", "600"], [2, "font-size", "0.72rem"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-arrows-rotate"], ["text", "Refreshing content types\u2026"], [1, "at-ct-card-header"], [1, "at-ct-card-name"], [1, "at-ct-card-model"], [1, "at-ct-field"], [1, "at-ct-field-label"], [1, "at-ct-field-value"], [1, "at-ct-tag-range"], [1, "fa-solid", "fa-tags"], [1, "at-ct-tag-range-bar"], [1, "at-ct-tag-range-fill"], [1, "at-ct-range-suffix"], [1, "at-source-card-actions", 2, "margin-top", "10px"], [1, "at-source-action-btn", 3, "click"], [1, "fa-solid", "fa-pen"]], template: function ClassifyTypesTabComponent_Template(rf, ctx) { if (rf & 1) {
|
|
179
213
|
i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1)(2, "button", 2);
|
|
180
|
-
i0.ɵɵlistener("click", function ClassifyTypesTabComponent_Template_button_click_2_listener() { return ctx.
|
|
181
|
-
i0.ɵɵ
|
|
182
|
-
i0.ɵɵ
|
|
183
|
-
i0.ɵɵ
|
|
214
|
+
i0.ɵɵlistener("click", function ClassifyTypesTabComponent_Template_button_click_2_listener() { return ctx.Refresh(); });
|
|
215
|
+
i0.ɵɵconditionalCreate(3, ClassifyTypesTabComponent_Conditional_3_Template, 3, 0)(4, ClassifyTypesTabComponent_Conditional_4_Template, 3, 0);
|
|
216
|
+
i0.ɵɵelementEnd();
|
|
217
|
+
i0.ɵɵelementStart(5, "button", 3);
|
|
218
|
+
i0.ɵɵlistener("click", function ClassifyTypesTabComponent_Template_button_click_5_listener() { return ctx.onAddType(); });
|
|
219
|
+
i0.ɵɵelement(6, "i", 4);
|
|
220
|
+
i0.ɵɵelementStart(7, "span", 5);
|
|
221
|
+
i0.ɵɵtext(8, "Add Type");
|
|
184
222
|
i0.ɵɵelementEnd()()()();
|
|
185
|
-
i0.ɵɵelementStart(
|
|
186
|
-
i0.ɵɵ
|
|
187
|
-
i0.ɵɵelementStart(12, "div", 10);
|
|
188
|
-
i0.ɵɵ
|
|
189
|
-
i0.ɵɵ
|
|
190
|
-
i0.ɵɵelementStart(
|
|
191
|
-
i0.ɵɵ
|
|
223
|
+
i0.ɵɵelementStart(9, "mj-page-body-interior", 6)(10, "div", 7);
|
|
224
|
+
i0.ɵɵconditionalCreate(11, ClassifyTypesTabComponent_Conditional_11_Template, 2, 0, "div", 8);
|
|
225
|
+
i0.ɵɵelementStart(12, "div", 9)(13, "div", 10);
|
|
226
|
+
i0.ɵɵelement(14, "classify-org-context-editor", 11);
|
|
227
|
+
i0.ɵɵelementEnd();
|
|
228
|
+
i0.ɵɵelementStart(15, "div", 12);
|
|
229
|
+
i0.ɵɵrepeaterCreate(16, ClassifyTypesTabComponent_For_17_Template, 35, 11, "div", 13, _forTrack0);
|
|
230
|
+
i0.ɵɵelementStart(18, "div", 14);
|
|
231
|
+
i0.ɵɵlistener("click", function ClassifyTypesTabComponent_Template_div_click_18_listener() { return ctx.onAddType(); });
|
|
232
|
+
i0.ɵɵelement(19, "i", 15);
|
|
233
|
+
i0.ɵɵelementStart(20, "span", 16);
|
|
234
|
+
i0.ɵɵtext(21, "Add Content Type");
|
|
192
235
|
i0.ɵɵelementEnd();
|
|
193
|
-
i0.ɵɵelementStart(
|
|
194
|
-
i0.ɵɵtext(
|
|
236
|
+
i0.ɵɵelementStart(22, "span", 17);
|
|
237
|
+
i0.ɵɵtext(23, "Configure tagging rules");
|
|
195
238
|
i0.ɵɵelementEnd()()()()()();
|
|
196
239
|
} if (rf & 2) {
|
|
240
|
+
i0.ɵɵadvance(2);
|
|
241
|
+
i0.ɵɵproperty("disabled", ctx.IsLoading);
|
|
242
|
+
i0.ɵɵadvance();
|
|
243
|
+
i0.ɵɵconditional(ctx.IsLoading ? 3 : 4);
|
|
197
244
|
i0.ɵɵadvance(6);
|
|
198
245
|
i0.ɵɵproperty("Padding", false)("Flex", true);
|
|
199
|
-
i0.ɵɵadvance(
|
|
246
|
+
i0.ɵɵadvance(2);
|
|
247
|
+
i0.ɵɵconditional(ctx.IsLoading ? 11 : -1);
|
|
248
|
+
i0.ɵɵadvance(3);
|
|
249
|
+
i0.ɵɵproperty("Provider", ctx.Provider);
|
|
250
|
+
i0.ɵɵadvance(2);
|
|
200
251
|
i0.ɵɵrepeater(ctx.ContentTypeCards);
|
|
201
|
-
} }, dependencies: [i1.MJButtonDirective,
|
|
252
|
+
} }, dependencies: [i1.LoadingComponent, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJPageBodyInteriorComponent, i3.ClassifyOrgContextEditorComponent], styles: ["\n\n\n\n\n\n\n\n\n\n.at-org-ctx-wrap[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}"] });
|
|
202
253
|
}
|
|
203
254
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassifyTypesTabComponent, [{
|
|
204
255
|
type: Component,
|
|
205
|
-
args: [{ standalone: false, selector: 'classify-types-tab', template: "<mj-page-header-interior\n Title=\"Content Types\"\n Subtitle=\"Configure AI tagging rules per content category\">\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Type</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-ct-grid\">\n @for (card of ContentTypeCards; track card.ID) {\n <div class=\"at-ct-card\">\n <div class=\"at-ct-card-header\">\n <span class=\"at-ct-card-name\">{{ card.Name }}</span>\n <span class=\"at-ct-card-model\">{{ card.AIModelName }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Description</span>\n <span class=\"at-ct-field-value\">{{ card.Description || '\u2014' }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Sources Using</span>\n <span class=\"at-ct-field-value\">{{ card.SourcesUsing }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Items Tagged</span>\n <span class=\"at-ct-field-value\">{{ formatNumber(card.ItemsTagged) }}</span>\n </div>\n <div class=\"at-ct-tag-range\">\n <i class=\"fa-solid fa-tags\"></i>\n <span>{{ card.MinTags }}</span>\n <div class=\"at-ct-tag-range-bar\">\n <div class=\"at-ct-tag-range-fill\" [style.left.%]=\"card.RangeLeftPct\" [style.right.%]=\"card.RangeRightPct\"></div>\n </div>\n <span>{{ card.MaxTags }}</span>\n <span class=\"at-ct-range-suffix\">tags/item</span>\n </div>\n <div class=\"at-source-card-actions\" style=\"margin-top: 10px;\">\n <button class=\"at-source-action-btn\" (click)=\"onEditType(card)\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n </div>\n </div>\n }\n <!-- Add Content Type Card -->\n <div class=\"at-add-type-card\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Type</span>\n <span style=\"font-size: 0.72rem;\">Configure tagging rules</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n", styles: ["/*\n * Content Types tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup while it\n * renders inside the host shell. Tab-specific rules live here as the shared CSS\n * is partitioned during the host-slim step.\n */\n"] }]
|
|
256
|
+
args: [{ standalone: false, selector: 'classify-types-tab', template: "<mj-page-header-interior\n Title=\"Content Types\"\n Subtitle=\"Configure AI tagging rules per content category\">\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=\"primary\" size=\"sm\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Type</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 content types\u2026\"></mj-loading>\n </div>\n }\n <div class=\"at-page-body\">\n <!-- Org-level domain context (broadest classification-context scope) -->\n <div class=\"at-org-ctx-wrap\">\n <classify-org-context-editor [Provider]=\"Provider\"></classify-org-context-editor>\n </div>\n\n <div class=\"at-ct-grid\">\n @for (card of ContentTypeCards; track card.ID) {\n <div class=\"at-ct-card\">\n <div class=\"at-ct-card-header\">\n <span class=\"at-ct-card-name\">{{ card.Name }}</span>\n <span class=\"at-ct-card-model\">{{ card.AIModelName }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Description</span>\n <span class=\"at-ct-field-value\">{{ card.Description || '\u2014' }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Sources Using</span>\n <span class=\"at-ct-field-value\">{{ card.SourcesUsing }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Items Tagged</span>\n <span class=\"at-ct-field-value\">{{ formatNumber(card.ItemsTagged) }}</span>\n </div>\n <div class=\"at-ct-tag-range\">\n <i class=\"fa-solid fa-tags\"></i>\n <span>{{ card.MinTags }}</span>\n <div class=\"at-ct-tag-range-bar\">\n <div class=\"at-ct-tag-range-fill\" [style.left.%]=\"card.RangeLeftPct\" [style.right.%]=\"card.RangeRightPct\"></div>\n </div>\n <span>{{ card.MaxTags }}</span>\n <span class=\"at-ct-range-suffix\">tags/item</span>\n </div>\n <div class=\"at-source-card-actions\" style=\"margin-top: 10px;\">\n <button class=\"at-source-action-btn\" (click)=\"onEditType(card)\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n </div>\n </div>\n }\n <!-- Add Content Type Card -->\n <div class=\"at-add-type-card\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Type</span>\n <span style=\"font-size: 0.72rem;\">Configure tagging rules</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n", styles: ["/*\n * Content Types tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup while it\n * renders inside the host shell. Tab-specific rules live here as the shared CSS\n * is partitioned during the host-slim step.\n */\n\n.at-org-ctx-wrap {\n margin-bottom: 16px;\n}\n"] }]
|
|
206
257
|
}], null, { ContentTypes: [{
|
|
207
258
|
type: Input
|
|
208
259
|
}], Sources: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types-tab.component.js","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/types-tab.component.ts","../../../../../src/AI/components/autotagging/tabs/types-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Classify · Content Types tab.\n *\n * Self-contained sub-page: owns its header-interior and the content-type cards\n * grid. Receives the shared raw data needed to build the cards from the host\n * orchestrator (content types, sources, items, and the accurate total item\n * count). The slide-in CRUD form stays in the host — this tab emits\n * Add/Edit intents up via @Output and the host opens its existing form.\n */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { ContentTypeCard } from '../shared/classify.types';\nimport { formatNumber } from '../shared/classify.format';\n\n@Component({\n standalone: false,\n selector: 'classify-types-tab',\n templateUrl: './types-tab.component.html',\n styleUrls: ['./types-tab.component.css']\n})\nexport class ClassifyTypesTabComponent extends BaseAngularComponent {\n /** Raw `MJ: Content Types` rows — the primary source for the cards. */\n private _contentTypes: Record<string, unknown>[] = [];\n @Input()\n set ContentTypes(value: Record<string, unknown>[]) {\n this._contentTypes = value ?? [];\n this.rebuild();\n }\n get ContentTypes(): Record<string, unknown>[] {\n return this._contentTypes;\n }\n\n /** Raw `MJ: Content Sources` rows — used to count sources per content type. */\n private _sources: Record<string, unknown>[] = [];\n @Input()\n set Sources(value: Record<string, unknown>[]) {\n this._sources = value ?? [];\n this.rebuild();\n }\n get Sources(): Record<string, unknown>[] {\n return this._sources;\n }\n\n /** Raw `MJ: Content Items` rows — used to count items per content type. */\n private _items: Record<string, unknown>[] = [];\n @Input()\n set Items(value: Record<string, unknown>[]) {\n this._items = value ?? [];\n this.rebuild();\n }\n get Items(): Record<string, unknown>[] {\n return this._items;\n }\n\n /** Accurate total item count from TotalRowCount (used when a single content type exists). */\n private _totalItemCount = 0;\n @Input()\n set TotalItemCount(value: number) {\n this._totalItemCount = value ?? 0;\n this.rebuild();\n }\n get TotalItemCount(): number {\n return this._totalItemCount;\n }\n\n public ContentTypeCards: ContentTypeCard[] = [];\n\n /** Template-facing formatter (exposed so `formatNumber(...)` resolves in the view). */\n public readonly formatNumber = formatNumber;\n\n /** Bubble Add/Edit intents to the host, which owns the slide-in CRUD form. */\n @Output() AddTypeRequested = new EventEmitter<void>();\n @Output() EditTypeRequested = new EventEmitter<ContentTypeCard>();\n\n public onAddType(): void {\n this.AddTypeRequested.emit();\n }\n\n public onEditType(card: ContentTypeCard): void {\n this.EditTypeRequested.emit(card);\n }\n\n /** Rebuild the card view models from the current inputs. */\n private rebuild(): void {\n const sourcesUsingByType = this.countSourcesByContentType();\n // When items are capped by MaxRows, countItemsByContentType undercounts.\n // For a single content type, use the accurate TotalItemCount.\n const singleType = this._contentTypes.length === 1;\n const itemsByType = singleType ? null : this.countItemsByContentType();\n\n this.ContentTypeCards = this._contentTypes.map(ct => {\n const id = ct['ID'] as string;\n const minTags = (ct['MinTags'] as number) ?? 1;\n const maxTags = (ct['MaxTags'] as number) ?? 10;\n const range = 15; // max possible\n return {\n ID: id,\n Name: (ct['Name'] as string) ?? 'Unnamed',\n Description: (ct['Description'] as string) ?? '',\n AIModelName: (ct['AIModel'] as string) ?? 'Default Model',\n AIModelID: (ct['AIModelID'] as string) ?? '',\n MinTags: minTags,\n MaxTags: maxTags,\n SourcesUsing: sourcesUsingByType.get(id) ?? 0,\n ItemsTagged: singleType ? this._totalItemCount : (itemsByType!.get(id) ?? 0),\n RangeLeftPct: Math.round((minTags / range) * 100),\n RangeRightPct: Math.round(100 - (maxTags / range) * 100),\n EmbeddingModelID: (ct['EmbeddingModelID'] as string) ?? '',\n VectorIndexID: (ct['VectorIndexID'] as string) ?? ''\n };\n });\n }\n\n private countSourcesByContentType(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const source of this._sources) {\n const typeId = source['ContentTypeID'] as string;\n if (typeId) counts.set(typeId, (counts.get(typeId) ?? 0) + 1);\n }\n return counts;\n }\n\n private countItemsByContentType(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const item of this._items) {\n const typeId = item['ContentTypeID'] as string;\n if (typeId) counts.set(typeId, (counts.get(typeId) ?? 0) + 1);\n }\n return counts;\n }\n}\n","<mj-page-header-interior\n Title=\"Content Types\"\n Subtitle=\"Configure AI tagging rules per content category\">\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Type</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-ct-grid\">\n @for (card of ContentTypeCards; track card.ID) {\n <div class=\"at-ct-card\">\n <div class=\"at-ct-card-header\">\n <span class=\"at-ct-card-name\">{{ card.Name }}</span>\n <span class=\"at-ct-card-model\">{{ card.AIModelName }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Description</span>\n <span class=\"at-ct-field-value\">{{ card.Description || '—' }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Sources Using</span>\n <span class=\"at-ct-field-value\">{{ card.SourcesUsing }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Items Tagged</span>\n <span class=\"at-ct-field-value\">{{ formatNumber(card.ItemsTagged) }}</span>\n </div>\n <div class=\"at-ct-tag-range\">\n <i class=\"fa-solid fa-tags\"></i>\n <span>{{ card.MinTags }}</span>\n <div class=\"at-ct-tag-range-bar\">\n <div class=\"at-ct-tag-range-fill\" [style.left.%]=\"card.RangeLeftPct\" [style.right.%]=\"card.RangeRightPct\"></div>\n </div>\n <span>{{ card.MaxTags }}</span>\n <span class=\"at-ct-range-suffix\">tags/item</span>\n </div>\n <div class=\"at-source-card-actions\" style=\"margin-top: 10px;\">\n <button class=\"at-source-action-btn\" (click)=\"onEditType(card)\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n </div>\n </div>\n }\n <!-- Add Content Type Card -->\n <div class=\"at-add-type-card\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Type</span>\n <span style=\"font-size: 0.72rem;\">Configure tagging rules</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n"]}
|
|
1
|
+
{"version":3,"file":"types-tab.component.js","sourceRoot":"","sources":["../../../../../src/AI/components/autotagging/tabs/types-tab.component.ts","../../../../../src/AI/components/autotagging/tabs/types-tab.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Classify · Content Types tab.\n *\n * Self-contained sub-page: owns its header-interior and the content-type cards\n * grid. Receives the shared raw data needed to build the cards from the host\n * orchestrator (content types, sources, items, and the accurate total item\n * count). The slide-in CRUD form stays in the host — this tab emits\n * Add/Edit intents up via @Output and the host opens its existing form.\n */\nimport { Component, ChangeDetectorRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { ContentTypeCard } from '../shared/classify.types';\nimport { formatNumber } from '../shared/classify.format';\n\n@Component({\n standalone: false,\n selector: 'classify-types-tab',\n templateUrl: './types-tab.component.html',\n styleUrls: ['./types-tab.component.css']\n})\nexport class ClassifyTypesTabComponent extends BaseAngularComponent {\n private cdr = inject(ChangeDetectorRef);\n\n /** Shown while a manual Refresh() recomputes the content-type cards. */\n public IsLoading = false;\n\n /** Raw `MJ: Content Types` rows — the primary source for the cards. */\n private _contentTypes: Record<string, unknown>[] = [];\n @Input()\n set ContentTypes(value: Record<string, unknown>[]) {\n this._contentTypes = value ?? [];\n this.rebuild();\n }\n get ContentTypes(): Record<string, unknown>[] {\n return this._contentTypes;\n }\n\n /** Raw `MJ: Content Sources` rows — used to count sources per content type. */\n private _sources: Record<string, unknown>[] = [];\n @Input()\n set Sources(value: Record<string, unknown>[]) {\n this._sources = value ?? [];\n this.rebuild();\n }\n get Sources(): Record<string, unknown>[] {\n return this._sources;\n }\n\n /** Raw `MJ: Content Items` rows — used to count items per content type. */\n private _items: Record<string, unknown>[] = [];\n @Input()\n set Items(value: Record<string, unknown>[]) {\n this._items = value ?? [];\n this.rebuild();\n }\n get Items(): Record<string, unknown>[] {\n return this._items;\n }\n\n /** Accurate total item count from TotalRowCount (used when a single content type exists). */\n private _totalItemCount = 0;\n @Input()\n set TotalItemCount(value: number) {\n this._totalItemCount = value ?? 0;\n this.rebuild();\n }\n get TotalItemCount(): number {\n return this._totalItemCount;\n }\n\n public ContentTypeCards: ContentTypeCard[] = [];\n\n /** Template-facing formatter (exposed so `formatNumber(...)` resolves in the view). */\n public readonly formatNumber = formatNumber;\n\n /** Bubble Add/Edit intents to the host, which owns the slide-in CRUD form. */\n @Output() AddTypeRequested = new EventEmitter<void>();\n @Output() EditTypeRequested = new EventEmitter<ContentTypeCard>();\n\n /**\n * Recompute the content-type cards from the current host-supplied inputs. The\n * data is host-owned (flows in via @Input); Refresh rebuilds the view models\n * and surfaces a brief loading state for user feedback.\n */\n public async Refresh(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n this.rebuild();\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n\n public onAddType(): void {\n this.AddTypeRequested.emit();\n }\n\n public onEditType(card: ContentTypeCard): void {\n this.EditTypeRequested.emit(card);\n }\n\n /** Rebuild the card view models from the current inputs. */\n private rebuild(): void {\n const sourcesUsingByType = this.countSourcesByContentType();\n // When items are capped by MaxRows, countItemsByContentType undercounts.\n // For a single content type, use the accurate TotalItemCount.\n const singleType = this._contentTypes.length === 1;\n const itemsByType = singleType ? null : this.countItemsByContentType();\n\n this.ContentTypeCards = this._contentTypes.map(ct => {\n const id = ct['ID'] as string;\n const minTags = (ct['MinTags'] as number) ?? 1;\n const maxTags = (ct['MaxTags'] as number) ?? 10;\n const range = 15; // max possible\n return {\n ID: id,\n Name: (ct['Name'] as string) ?? 'Unnamed',\n Description: (ct['Description'] as string) ?? '',\n AIModelName: (ct['AIModel'] as string) ?? 'Default Model',\n AIModelID: (ct['AIModelID'] as string) ?? '',\n MinTags: minTags,\n MaxTags: maxTags,\n SourcesUsing: sourcesUsingByType.get(id) ?? 0,\n ItemsTagged: singleType ? this._totalItemCount : (itemsByType!.get(id) ?? 0),\n RangeLeftPct: Math.round((minTags / range) * 100),\n RangeRightPct: Math.round(100 - (maxTags / range) * 100),\n EmbeddingModelID: (ct['EmbeddingModelID'] as string) ?? '',\n VectorIndexID: (ct['VectorIndexID'] as string) ?? ''\n };\n });\n }\n\n private countSourcesByContentType(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const source of this._sources) {\n const typeId = source['ContentTypeID'] as string;\n if (typeId) counts.set(typeId, (counts.get(typeId) ?? 0) + 1);\n }\n return counts;\n }\n\n private countItemsByContentType(): Map<string, number> {\n const counts = new Map<string, number>();\n for (const item of this._items) {\n const typeId = item['ContentTypeID'] as string;\n if (typeId) counts.set(typeId, (counts.get(typeId) ?? 0) + 1);\n }\n return counts;\n }\n}\n","<mj-page-header-interior\n Title=\"Content Types\"\n Subtitle=\"Configure AI tagging rules per content category\">\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…</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=\"primary\" size=\"sm\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus\"></i> <span class=\"mj-action-label\">Add Type</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 content types…\"></mj-loading>\n </div>\n }\n <div class=\"at-page-body\">\n <!-- Org-level domain context (broadest classification-context scope) -->\n <div class=\"at-org-ctx-wrap\">\n <classify-org-context-editor [Provider]=\"Provider\"></classify-org-context-editor>\n </div>\n\n <div class=\"at-ct-grid\">\n @for (card of ContentTypeCards; track card.ID) {\n <div class=\"at-ct-card\">\n <div class=\"at-ct-card-header\">\n <span class=\"at-ct-card-name\">{{ card.Name }}</span>\n <span class=\"at-ct-card-model\">{{ card.AIModelName }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Description</span>\n <span class=\"at-ct-field-value\">{{ card.Description || '—' }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Sources Using</span>\n <span class=\"at-ct-field-value\">{{ card.SourcesUsing }}</span>\n </div>\n <div class=\"at-ct-field\">\n <span class=\"at-ct-field-label\">Items Tagged</span>\n <span class=\"at-ct-field-value\">{{ formatNumber(card.ItemsTagged) }}</span>\n </div>\n <div class=\"at-ct-tag-range\">\n <i class=\"fa-solid fa-tags\"></i>\n <span>{{ card.MinTags }}</span>\n <div class=\"at-ct-tag-range-bar\">\n <div class=\"at-ct-tag-range-fill\" [style.left.%]=\"card.RangeLeftPct\" [style.right.%]=\"card.RangeRightPct\"></div>\n </div>\n <span>{{ card.MaxTags }}</span>\n <span class=\"at-ct-range-suffix\">tags/item</span>\n </div>\n <div class=\"at-source-card-actions\" style=\"margin-top: 10px;\">\n <button class=\"at-source-action-btn\" (click)=\"onEditType(card)\"><i class=\"fa-solid fa-pen\"></i> Edit</button>\n </div>\n </div>\n }\n <!-- Add Content Type Card -->\n <div class=\"at-add-type-card\" (click)=\"onAddType()\">\n <i class=\"fa-solid fa-plus-circle\"></i>\n <span style=\"font-size: 0.85rem; font-weight: 600;\">Add Content Type</span>\n <span style=\"font-size: 0.72rem;\">Configure tagging rules</span>\n </div>\n </div>\n </div>\n </div>\n</mj-page-body-interior>\n"]}
|
|
@@ -83,6 +83,9 @@ export declare class DuplicateDetectionResourceComponent extends BaseResourceCom
|
|
|
83
83
|
/** Close comparison panel on Escape key */
|
|
84
84
|
OnEscapeKey(): void;
|
|
85
85
|
private cdr;
|
|
86
|
+
private activityService;
|
|
87
|
+
/** Activity-tracker id for the currently running detection (P3). */
|
|
88
|
+
private detectionActivityID;
|
|
86
89
|
protected navigationService: NavigationService;
|
|
87
90
|
protected destroy$: Subject<void>;
|
|
88
91
|
private filterSubject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicate-detection-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/duplicates/duplicate-detection-resource.component.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAgC,SAAS,EAAE,aAAa,EAAkD,MAAM,eAAe,CAAC;AACvI,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAuB,gBAAgB,EAA+B,MAAM,sBAAsB,CAAC;AAExH,OAAO,EACH,YAAY,EACZ,oBAAoB,EACpB,0BAA0B,EAC1B,+BAA+B,EAGlC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"duplicate-detection-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/duplicates/duplicate-detection-resource.component.ts"],"names":[],"mappings":"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"}
|