@memberjunction/ng-versions 5.30.1 → 5.32.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/lib/label-create/label-create.component.d.ts +3 -2
- package/dist/lib/label-create/label-create.component.d.ts.map +1 -1
- package/dist/lib/label-create/label-create.component.js +8 -6
- package/dist/lib/label-create/label-create.component.js.map +1 -1
- package/dist/lib/label-detail/label-detail.component.d.ts +3 -2
- package/dist/lib/label-detail/label-detail.component.d.ts.map +1 -1
- package/dist/lib/label-detail/label-detail.component.js +11 -9
- package/dist/lib/label-detail/label-detail.component.js.map +1 -1
- package/dist/lib/panel/slide-panel.component.d.ts +7 -1
- package/dist/lib/panel/slide-panel.component.d.ts.map +1 -1
- package/dist/lib/panel/slide-panel.component.js +14 -4
- package/dist/lib/panel/slide-panel.component.js.map +1 -1
- package/dist/lib/record-micro-view/record-micro-view.component.d.ts +3 -2
- package/dist/lib/record-micro-view/record-micro-view.component.d.ts.map +1 -1
- package/dist/lib/record-micro-view/record-micro-view.component.js +8 -6
- package/dist/lib/record-micro-view/record-micro-view.component.js.map +1 -1
- package/package.json +7 -6
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, ChangeDetectorRef, NgZone } from '@angular/core';
|
|
2
2
|
import { EntityInfo } from '@memberjunction/core';
|
|
3
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
4
|
import { CreateVersionLabelProgress } from '@memberjunction/graphql-dataprovider';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export interface RecordOption {
|
|
@@ -7,7 +8,7 @@ export interface RecordOption {
|
|
|
7
8
|
DisplayName: string;
|
|
8
9
|
Selected: boolean;
|
|
9
10
|
}
|
|
10
|
-
export declare class MjLabelCreateComponent implements OnInit {
|
|
11
|
+
export declare class MjLabelCreateComponent extends BaseAngularComponent implements OnInit {
|
|
11
12
|
private cdr;
|
|
12
13
|
private ngZone;
|
|
13
14
|
/**
|
|
@@ -41,7 +42,7 @@ export declare class MjLabelCreateComponent implements OnInit {
|
|
|
41
42
|
CreatedLabelCount: number;
|
|
42
43
|
CreatedItemCount: number;
|
|
43
44
|
CreateProgress: CreateVersionLabelProgress | null;
|
|
44
|
-
private metadata;
|
|
45
|
+
private get metadata();
|
|
45
46
|
constructor(cdr: ChangeDetectorRef, ngZone: NgZone);
|
|
46
47
|
ngOnInit(): void;
|
|
47
48
|
private skipToDetailsWithPreselection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-create.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,YAAY,EACZ,MAAM,EACN,iBAAiB,EAEjB,MAAM,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"label-create.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,YAAY,EACZ,MAAM,EACN,iBAAiB,EAEjB,MAAM,EACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAGH,0BAA0B,EAC7B,MAAM,sCAAsC,CAAC;;AAE9C,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,qBAOa,sBAAuB,SAAQ,oBAAqB,YAAW,MAAM;IA6ClE,OAAO,CAAC,GAAG;IAAqB,OAAO,CAAC,MAAM;IA5C1D;;OAEG;IACM,iBAAiB,EAAE,UAAU,GAAG,IAAI,CAAQ;IAErD;;;OAGG;IACM,oBAAoB,EAAE,MAAM,EAAE,CAAM;IAE7C,oDAAoD;IAC1C,OAAO;oBAAkC,MAAM;mBAAa,MAAM;OAAM;IAElF,qCAAqC;IAC3B,MAAM,qBAA4B;IAGrC,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAY;IAG9E,gBAAgB,SAAM;IACtB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAQ;IAGzC,gBAAgB,SAAM;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAM;IACtC,eAAe,EAAE,YAAY,EAAE,CAAM;IACrC,gBAAgB,UAAS;IAGzB,SAAS,SAAM;IACf,gBAAgB,SAAM;IAGtB,eAAe,UAAS;IACxB,WAAW,SAAM;IACjB,iBAAiB,SAAK;IACtB,gBAAgB,SAAK;IACrB,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAQ;IAEhE,OAAO,KAAK,QAAQ,GAAiC;gBAEjC,GAAG,EAAE,iBAAiB,EAAU,MAAM,EAAE,MAAM;IAElE,QAAQ,IAAI,IAAI;YAqBF,6BAA6B;IAU3C,OAAO,CAAC,qBAAqB;IAWtB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAUxC,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAUtC,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASxC,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKjD,gBAAgB,IAAI,IAAI;IAOxB,kBAAkB,IAAI,IAAI;IAOjC,IAAW,mBAAmB,IAAI,MAAM,CAEvC;IAMM,eAAe,IAAI,IAAI;IAOvB,eAAe,IAAI,IAAI;IAKvB,cAAc,IAAI,IAAI;IAYhB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAiCnC,YAAY,IAAI,IAAI;IAOpB,QAAQ,IAAI,IAAI;YAQT,iBAAiB;YA2BjB,mBAAmB;YAwDnB,iBAAiB;IA4C/B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,iBAAiB;yCAvXhB,sBAAsB;2CAAtB,sBAAsB;CAuYlC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
-
import { RunView
|
|
2
|
+
import { RunView } from '@memberjunction/core';
|
|
3
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
3
4
|
import { GraphQLDataProvider, GraphQLVersionHistoryClient } from '@memberjunction/graphql-dataprovider';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/forms";
|
|
@@ -409,7 +410,7 @@ function MjLabelCreateComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
409
410
|
i0.ɵɵadvance();
|
|
410
411
|
i0.ɵɵconditional(ctx_r0.CreateError ? 2 : -1);
|
|
411
412
|
} }
|
|
412
|
-
export class MjLabelCreateComponent {
|
|
413
|
+
export class MjLabelCreateComponent extends BaseAngularComponent {
|
|
413
414
|
cdr;
|
|
414
415
|
ngZone;
|
|
415
416
|
/**
|
|
@@ -445,8 +446,9 @@ export class MjLabelCreateComponent {
|
|
|
445
446
|
CreatedLabelCount = 0;
|
|
446
447
|
CreatedItemCount = 0;
|
|
447
448
|
CreateProgress = null;
|
|
448
|
-
metadata
|
|
449
|
+
get metadata() { return this.ProviderToUse; }
|
|
449
450
|
constructor(cdr, ngZone) {
|
|
451
|
+
super();
|
|
450
452
|
this.cdr = cdr;
|
|
451
453
|
this.ngZone = ngZone;
|
|
452
454
|
}
|
|
@@ -678,7 +680,7 @@ export class MjLabelCreateComponent {
|
|
|
678
680
|
this.RecordSearchText = '';
|
|
679
681
|
this.cdr.markForCheck();
|
|
680
682
|
try {
|
|
681
|
-
const rv =
|
|
683
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
682
684
|
const nameField = this.findNameField(entity);
|
|
683
685
|
const fields = nameField ? ['ID', nameField] : ['ID'];
|
|
684
686
|
const result = await rv.RunView({
|
|
@@ -756,7 +758,7 @@ export class MjLabelCreateComponent {
|
|
|
756
758
|
this.CreateProgress = null;
|
|
757
759
|
}
|
|
758
760
|
static ɵfac = function MjLabelCreateComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelCreateComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
|
|
759
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
761
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelCreateComponent, selectors: [["mj-label-create"]], inputs: { PreselectedEntity: "PreselectedEntity", PreselectedRecordIds: "PreselectedRecordIds" }, outputs: { Created: "Created", Cancel: "Cancel" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 6, consts: [[1, "label-create-container"], [1, "step-indicator"], [1, "dialog-step"], [1, "dialog-step", "creating-step"], [1, "dialog-step", "done-step"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "step-description"], [1, "dialog-search"], [1, "fa-solid", "fa-search", "dialog-search-icon"], ["type", "text", "placeholder", "Search entities...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "entity-list"], [1, "entity-option"], [1, "entity-list-empty"], [1, "entity-option", 3, "click"], [1, "entity-option-info"], [1, "entity-option-name"], [1, "entity-option-desc"], [1, "fa-solid", "fa-chevron-right", "entity-option-arrow"], [1, "step-header-row"], [1, "btn-back"], ["text", "Loading records..."], [1, "btn-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "records-toolbar"], [1, "dialog-search", 2, "flex", "1"], ["type", "text", "placeholder", "Search records...", 1, "dialog-search-input", 3, "ngModelChange", "ngModel"], [1, "selection-actions"], [1, "btn-text", 3, "click"], [1, "record-list"], [1, "record-option", 3, "selected"], [1, "records-footer"], [1, "selection-count"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], [1, "record-option", 3, "click"], [1, "record-checkbox"], [1, "fa-solid", "fa-check"], [1, "record-name"], [1, "details-summary"], [1, "summary-item"], [1, "fa-solid", "fa-table"], [1, "fa-solid", "fa-check-double"], [1, "form-field"], [1, "form-label"], ["type", "text", "placeholder", "e.g. Customer Support Agent v2.0", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this version represent?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "details-footer"], [1, "fa-solid", "fa-tag"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-layer-group"], [1, "creating-animation"], [1, "fa-solid", "fa-tag", "fa-spin", "creating-icon"], [1, "creating-title"], [1, "progress-container"], [1, "creating-progress"], [1, "progress-bar-track"], [1, "progress-bar-fill"], [1, "progress-details"], [1, "progress-message"], [1, "progress-pct"], [1, "progress-stats"], [1, "progress-stat"], [1, "fa-solid", "fa-camera"], [1, "btn-primary", 3, "click"], [1, "done-icon-wrap", "success"], [1, "done-title"], [1, "done-message"], [1, "done-icon-wrap", "error"], [1, "fa-solid", "fa-xmark"], [1, "done-message", "error-text"]], template: function MjLabelCreateComponent_Template(rf, ctx) { if (rf & 1) {
|
|
760
762
|
i0.ɵɵelementStart(0, "div", 0);
|
|
761
763
|
i0.ɵɵconditionalCreate(1, MjLabelCreateComponent_Conditional_1_Template, 18, 14, "div", 1);
|
|
762
764
|
i0.ɵɵconditionalCreate(2, MjLabelCreateComponent_Conditional_2_Template, 10, 2, "div", 2);
|
|
@@ -792,5 +794,5 @@ export class MjLabelCreateComponent {
|
|
|
792
794
|
}], Cancel: [{
|
|
793
795
|
type: Output
|
|
794
796
|
}] }); })();
|
|
795
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelCreateComponent, { className: "MjLabelCreateComponent", filePath: "src/lib/label-create/label-create.component.ts", lineNumber:
|
|
797
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelCreateComponent, { className: "MjLabelCreateComponent", filePath: "src/lib/label-create/label-create.component.ts", lineNumber: 32 }); })();
|
|
796
798
|
//# sourceMappingURL=label-create.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-create.component.js","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts","../../../src/lib/label-create/label-create.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n NgZone\n} from '@angular/core';\nimport { RunView, Metadata, EntityInfo } from '@memberjunction/core';\nimport {\n GraphQLDataProvider,\n GraphQLVersionHistoryClient,\n CreateVersionLabelProgress\n} from '@memberjunction/graphql-dataprovider';\n\nexport interface RecordOption {\n ID: string;\n DisplayName: string;\n Selected: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-label-create',\n templateUrl: './label-create.component.html',\n styleUrls: ['./label-create.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MjLabelCreateComponent implements OnInit {\n /**\n * When set, skips the entity picker step and pre-selects this entity.\n */\n @Input() PreselectedEntity: EntityInfo | null = null;\n\n /**\n * When set along with PreselectedEntity, auto-selects these record IDs\n * and skips directly to the details step.\n */\n @Input() PreselectedRecordIds: string[] = [];\n\n /** Emitted when labels are successfully created. */\n @Output() Created = new EventEmitter<{ LabelCount: number; ItemCount: number }>();\n\n /** Emitted when the user cancels. */\n @Output() Cancel = new EventEmitter<void>();\n\n // Wizard state\n public CreateStep: 'entity' | 'records' | 'details' | 'creating' | 'done' = 'entity';\n\n // Step 1: Entity selection\n public EntitySearchText = '';\n public FilteredEntities: EntityInfo[] = [];\n public SelectedEntity: EntityInfo | null = null;\n\n // Step 2: Record selection\n public RecordSearchText = '';\n public AvailableRecords: RecordOption[] = [];\n public FilteredRecords: RecordOption[] = [];\n public IsLoadingRecords = false;\n\n // Step 3: Details\n public LabelName = '';\n public LabelDescription = '';\n\n // Creating / done state\n public IsCreatingLabel = false;\n public CreateError = '';\n public CreatedLabelCount = 0;\n public CreatedItemCount = 0;\n public CreateProgress: CreateVersionLabelProgress | null = null;\n\n private metadata = new Metadata();\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {}\n\n ngOnInit(): void {\n this.resetCreateDialog();\n\n if (this.PreselectedEntity) {\n this.SelectedEntity = this.PreselectedEntity;\n\n if (this.PreselectedRecordIds.length > 0) {\n this.skipToDetailsWithPreselection();\n } else {\n this.CreateStep = 'records';\n this.loadEntityRecords(this.PreselectedEntity);\n }\n } else {\n this.FilteredEntities = this.getTrackableEntities();\n }\n }\n\n // =======================================================================\n // Pre-selection helpers\n // =======================================================================\n\n private async skipToDetailsWithPreselection(): Promise<void> {\n await this.loadEntityRecords(this.SelectedEntity!);\n this.ngZone.run(() => {\n this.preselectRecordsByIds(this.PreselectedRecordIds);\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n });\n }\n\n private preselectRecordsByIds(ids: string[]): void {\n const idSet = new Set(ids);\n for (const record of this.AvailableRecords) {\n record.Selected = idSet.has(record.ID);\n }\n }\n\n // =======================================================================\n // Step 1: Entity picker\n // =======================================================================\n\n public OnEntitySearchChange(text: string): void {\n this.EntitySearchText = text;\n const search = text.toLowerCase();\n const all = this.getTrackableEntities();\n this.FilteredEntities = search\n ? all.filter(e => e.Name.toLowerCase().includes(search))\n : all;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entity: EntityInfo): void {\n this.SelectedEntity = entity;\n this.CreateStep = 'records';\n this.loadEntityRecords(entity);\n }\n\n // =======================================================================\n // Step 2: Record selection\n // =======================================================================\n\n public OnRecordSearchChange(text: string): void {\n this.RecordSearchText = text;\n const search = text.toLowerCase();\n this.FilteredRecords = search\n ? this.AvailableRecords.filter(r => r.DisplayName.toLowerCase().includes(search))\n : [...this.AvailableRecords];\n this.cdr.markForCheck();\n }\n\n public ToggleRecordSelection(record: RecordOption): void {\n record.Selected = !record.Selected;\n this.cdr.markForCheck();\n }\n\n public SelectAllRecords(): void {\n for (const r of this.FilteredRecords) {\n r.Selected = true;\n }\n this.cdr.markForCheck();\n }\n\n public DeselectAllRecords(): void {\n for (const r of this.AvailableRecords) {\n r.Selected = false;\n }\n this.cdr.markForCheck();\n }\n\n public get SelectedRecordCount(): number {\n return this.AvailableRecords.filter(r => r.Selected).length;\n }\n\n // =======================================================================\n // Step navigation\n // =======================================================================\n\n public GoToDetailsStep(): void {\n if (this.SelectedRecordCount === 0) return;\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n }\n\n public GoBackToRecords(): void {\n this.CreateStep = 'records';\n this.cdr.markForCheck();\n }\n\n public GoBackToEntity(): void {\n this.CreateStep = 'entity';\n this.SelectedEntity = null;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.cdr.markForCheck();\n }\n\n // =======================================================================\n // Step 3: Create labels\n // =======================================================================\n\n public async CreateLabels(): Promise<void> {\n if (!this.SelectedEntity || !this.LabelName.trim()) return;\n\n this.IsCreatingLabel = true;\n this.CreateStep = 'creating';\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.cdr.markForCheck();\n\n try {\n const selected = this.AvailableRecords.filter(r => r.Selected);\n\n if (selected.length === 1) {\n await this.createSingleLabel(selected[0]);\n } else {\n await this.createGroupedLabels(selected);\n }\n\n this.CreateStep = 'done';\n } catch (e: unknown) {\n this.ngZone.run(() => {\n this.CreateError = e instanceof Error ? e.message : String(e);\n this.CreateStep = 'done';\n });\n } finally {\n this.ngZone.run(() => {\n this.IsCreatingLabel = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n public FinishCreate(): void {\n this.Created.emit({\n LabelCount: this.CreatedLabelCount,\n ItemCount: this.CreatedItemCount\n });\n }\n\n public OnCancel(): void {\n this.Cancel.emit();\n }\n\n // =======================================================================\n // Create helpers\n // =======================================================================\n\n private async createSingleLabel(record: RecordOption): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n const result = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!result.Success) {\n throw new Error(result.Error ?? 'Failed to create version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = result.ItemsCaptured ?? 0;\n });\n }\n\n private async createGroupedLabels(records: RecordOption[]): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n\n // Create parent container label (no RecordKey -> acts as a grouping label)\n const parentResult = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Entity',\n EntityName: this.SelectedEntity!.Name,\n });\n\n if (!parentResult.Success) {\n throw new Error(parentResult.Error ?? 'Failed to create parent version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = parentResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n\n // Create child labels for each selected record\n for (const record of records) {\n const childResult = await vhClient.CreateLabel({\n Name: `${this.LabelName.trim()} \\u2014 ${record.DisplayName}`,\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n ParentID: parentResult.LabelID,\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!childResult.Success) {\n console.error(`Failed to create child label for record ${record.ID}: ${childResult.Error}`);\n continue;\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount++;\n this.CreatedItemCount += childResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Data loading\n // =======================================================================\n\n private async loadEntityRecords(entity: EntityInfo): Promise<void> {\n this.IsLoadingRecords = true;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.RecordSearchText = '';\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const nameField = this.findNameField(entity);\n const fields = nameField ? ['ID', nameField] : ['ID'];\n\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: entity.Name,\n Fields: fields,\n OrderBy: nameField ?? 'ID',\n MaxRows: 500,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableRecords = result.Results.map(r => ({\n ID: String(r['ID'] ?? ''),\n DisplayName: nameField\n ? String(r[nameField] ?? r['ID'] ?? '')\n : String(r['ID'] ?? ''),\n Selected: false\n }));\n this.FilteredRecords = [...this.AvailableRecords];\n }\n } catch (error) {\n console.error('Error loading entity records:', error);\n } finally {\n this.ngZone.run(() => {\n this.IsLoadingRecords = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Utility helpers\n // =======================================================================\n\n private findNameField(entity: EntityInfo): string | null {\n const candidates = ['Name', 'Title', 'DisplayName', 'Label', 'Subject', 'Description'];\n for (const name of candidates) {\n const field = entity.Fields.find(f =>\n f.Name.toLowerCase() === name.toLowerCase() && f.TSType === 'string'\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private getTrackableEntities(): EntityInfo[] {\n return this.metadata.Entities\n .filter(e => e.TrackRecordChanges)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n private suggestLabelName(): string {\n const entityName = this.SelectedEntity?.Name ?? '';\n const selected = this.AvailableRecords.filter(r => r.Selected);\n if (selected.length === 1) {\n return `${selected[0].DisplayName} v1.0`;\n }\n const date = new Date().toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n return `${entityName} \\u2014 ${date}`;\n }\n\n private resetCreateDialog(): void {\n this.CreateStep = 'entity';\n this.EntitySearchText = '';\n this.SelectedEntity = null;\n this.RecordSearchText = '';\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.IsLoadingRecords = false;\n this.LabelName = '';\n this.LabelDescription = '';\n this.IsCreatingLabel = false;\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.CreateProgress = null;\n }\n}\n","<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> · {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n"]}
|
|
1
|
+
{"version":3,"file":"label-create.component.js","sourceRoot":"","sources":["../../../src/lib/label-create/label-create.component.ts","../../../src/lib/label-create/label-create.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n NgZone\n} from '@angular/core';\nimport { RunView, EntityInfo } from '@memberjunction/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport {\n GraphQLDataProvider,\n GraphQLVersionHistoryClient,\n CreateVersionLabelProgress\n} from '@memberjunction/graphql-dataprovider';\n\nexport interface RecordOption {\n ID: string;\n DisplayName: string;\n Selected: boolean;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-label-create',\n templateUrl: './label-create.component.html',\n styleUrls: ['./label-create.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MjLabelCreateComponent extends BaseAngularComponent implements OnInit {\n /**\n * When set, skips the entity picker step and pre-selects this entity.\n */\n @Input() PreselectedEntity: EntityInfo | null = null;\n\n /**\n * When set along with PreselectedEntity, auto-selects these record IDs\n * and skips directly to the details step.\n */\n @Input() PreselectedRecordIds: string[] = [];\n\n /** Emitted when labels are successfully created. */\n @Output() Created = new EventEmitter<{ LabelCount: number; ItemCount: number }>();\n\n /** Emitted when the user cancels. */\n @Output() Cancel = new EventEmitter<void>();\n\n // Wizard state\n public CreateStep: 'entity' | 'records' | 'details' | 'creating' | 'done' = 'entity';\n\n // Step 1: Entity selection\n public EntitySearchText = '';\n public FilteredEntities: EntityInfo[] = [];\n public SelectedEntity: EntityInfo | null = null;\n\n // Step 2: Record selection\n public RecordSearchText = '';\n public AvailableRecords: RecordOption[] = [];\n public FilteredRecords: RecordOption[] = [];\n public IsLoadingRecords = false;\n\n // Step 3: Details\n public LabelName = '';\n public LabelDescription = '';\n\n // Creating / done state\n public IsCreatingLabel = false;\n public CreateError = '';\n public CreatedLabelCount = 0;\n public CreatedItemCount = 0;\n public CreateProgress: CreateVersionLabelProgress | null = null;\n\n private get metadata() { return this.ProviderToUse; }\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) { super(); }\n\n ngOnInit(): void {\n this.resetCreateDialog();\n\n if (this.PreselectedEntity) {\n this.SelectedEntity = this.PreselectedEntity;\n\n if (this.PreselectedRecordIds.length > 0) {\n this.skipToDetailsWithPreselection();\n } else {\n this.CreateStep = 'records';\n this.loadEntityRecords(this.PreselectedEntity);\n }\n } else {\n this.FilteredEntities = this.getTrackableEntities();\n }\n }\n\n // =======================================================================\n // Pre-selection helpers\n // =======================================================================\n\n private async skipToDetailsWithPreselection(): Promise<void> {\n await this.loadEntityRecords(this.SelectedEntity!);\n this.ngZone.run(() => {\n this.preselectRecordsByIds(this.PreselectedRecordIds);\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n });\n }\n\n private preselectRecordsByIds(ids: string[]): void {\n const idSet = new Set(ids);\n for (const record of this.AvailableRecords) {\n record.Selected = idSet.has(record.ID);\n }\n }\n\n // =======================================================================\n // Step 1: Entity picker\n // =======================================================================\n\n public OnEntitySearchChange(text: string): void {\n this.EntitySearchText = text;\n const search = text.toLowerCase();\n const all = this.getTrackableEntities();\n this.FilteredEntities = search\n ? all.filter(e => e.Name.toLowerCase().includes(search))\n : all;\n this.cdr.markForCheck();\n }\n\n public SelectEntity(entity: EntityInfo): void {\n this.SelectedEntity = entity;\n this.CreateStep = 'records';\n this.loadEntityRecords(entity);\n }\n\n // =======================================================================\n // Step 2: Record selection\n // =======================================================================\n\n public OnRecordSearchChange(text: string): void {\n this.RecordSearchText = text;\n const search = text.toLowerCase();\n this.FilteredRecords = search\n ? this.AvailableRecords.filter(r => r.DisplayName.toLowerCase().includes(search))\n : [...this.AvailableRecords];\n this.cdr.markForCheck();\n }\n\n public ToggleRecordSelection(record: RecordOption): void {\n record.Selected = !record.Selected;\n this.cdr.markForCheck();\n }\n\n public SelectAllRecords(): void {\n for (const r of this.FilteredRecords) {\n r.Selected = true;\n }\n this.cdr.markForCheck();\n }\n\n public DeselectAllRecords(): void {\n for (const r of this.AvailableRecords) {\n r.Selected = false;\n }\n this.cdr.markForCheck();\n }\n\n public get SelectedRecordCount(): number {\n return this.AvailableRecords.filter(r => r.Selected).length;\n }\n\n // =======================================================================\n // Step navigation\n // =======================================================================\n\n public GoToDetailsStep(): void {\n if (this.SelectedRecordCount === 0) return;\n this.CreateStep = 'details';\n this.LabelName = this.suggestLabelName();\n this.cdr.markForCheck();\n }\n\n public GoBackToRecords(): void {\n this.CreateStep = 'records';\n this.cdr.markForCheck();\n }\n\n public GoBackToEntity(): void {\n this.CreateStep = 'entity';\n this.SelectedEntity = null;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.cdr.markForCheck();\n }\n\n // =======================================================================\n // Step 3: Create labels\n // =======================================================================\n\n public async CreateLabels(): Promise<void> {\n if (!this.SelectedEntity || !this.LabelName.trim()) return;\n\n this.IsCreatingLabel = true;\n this.CreateStep = 'creating';\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.cdr.markForCheck();\n\n try {\n const selected = this.AvailableRecords.filter(r => r.Selected);\n\n if (selected.length === 1) {\n await this.createSingleLabel(selected[0]);\n } else {\n await this.createGroupedLabels(selected);\n }\n\n this.CreateStep = 'done';\n } catch (e: unknown) {\n this.ngZone.run(() => {\n this.CreateError = e instanceof Error ? e.message : String(e);\n this.CreateStep = 'done';\n });\n } finally {\n this.ngZone.run(() => {\n this.IsCreatingLabel = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n public FinishCreate(): void {\n this.Created.emit({\n LabelCount: this.CreatedLabelCount,\n ItemCount: this.CreatedItemCount\n });\n }\n\n public OnCancel(): void {\n this.Cancel.emit();\n }\n\n // =======================================================================\n // Create helpers\n // =======================================================================\n\n private async createSingleLabel(record: RecordOption): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n const result = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!result.Success) {\n throw new Error(result.Error ?? 'Failed to create version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = result.ItemsCaptured ?? 0;\n });\n }\n\n private async createGroupedLabels(records: RecordOption[]): Promise<void> {\n const vhClient = new GraphQLVersionHistoryClient(GraphQLDataProvider.Instance);\n\n // Create parent container label (no RecordKey -> acts as a grouping label)\n const parentResult = await vhClient.CreateLabel({\n Name: this.LabelName.trim(),\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Entity',\n EntityName: this.SelectedEntity!.Name,\n });\n\n if (!parentResult.Success) {\n throw new Error(parentResult.Error ?? 'Failed to create parent version label');\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount = 1;\n this.CreatedItemCount = parentResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n\n // Create child labels for each selected record\n for (const record of records) {\n const childResult = await vhClient.CreateLabel({\n Name: `${this.LabelName.trim()} \\u2014 ${record.DisplayName}`,\n Description: this.LabelDescription.trim() || undefined,\n Scope: 'Record',\n EntityName: this.SelectedEntity!.Name,\n RecordKeys: [{ Key: 'ID', Value: record.ID }],\n ParentID: parentResult.LabelID,\n IncludeDependencies: true,\n OnProgress: (progress) => {\n this.ngZone.run(() => {\n this.CreateProgress = progress;\n this.cdr.markForCheck();\n });\n },\n });\n\n if (!childResult.Success) {\n console.error(`Failed to create child label for record ${record.ID}: ${childResult.Error}`);\n continue;\n }\n\n this.ngZone.run(() => {\n this.CreatedLabelCount++;\n this.CreatedItemCount += childResult.ItemsCaptured ?? 0;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Data loading\n // =======================================================================\n\n private async loadEntityRecords(entity: EntityInfo): Promise<void> {\n this.IsLoadingRecords = true;\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.RecordSearchText = '';\n this.cdr.markForCheck();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const nameField = this.findNameField(entity);\n const fields = nameField ? ['ID', nameField] : ['ID'];\n\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: entity.Name,\n Fields: fields,\n OrderBy: nameField ?? 'ID',\n MaxRows: 500,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.AvailableRecords = result.Results.map(r => ({\n ID: String(r['ID'] ?? ''),\n DisplayName: nameField\n ? String(r[nameField] ?? r['ID'] ?? '')\n : String(r['ID'] ?? ''),\n Selected: false\n }));\n this.FilteredRecords = [...this.AvailableRecords];\n }\n } catch (error) {\n console.error('Error loading entity records:', error);\n } finally {\n this.ngZone.run(() => {\n this.IsLoadingRecords = false;\n this.cdr.markForCheck();\n });\n }\n }\n\n // =======================================================================\n // Utility helpers\n // =======================================================================\n\n private findNameField(entity: EntityInfo): string | null {\n const candidates = ['Name', 'Title', 'DisplayName', 'Label', 'Subject', 'Description'];\n for (const name of candidates) {\n const field = entity.Fields.find(f =>\n f.Name.toLowerCase() === name.toLowerCase() && f.TSType === 'string'\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private getTrackableEntities(): EntityInfo[] {\n return this.metadata.Entities\n .filter(e => e.TrackRecordChanges)\n .sort((a, b) => a.Name.localeCompare(b.Name));\n }\n\n private suggestLabelName(): string {\n const entityName = this.SelectedEntity?.Name ?? '';\n const selected = this.AvailableRecords.filter(r => r.Selected);\n if (selected.length === 1) {\n return `${selected[0].DisplayName} v1.0`;\n }\n const date = new Date().toLocaleDateString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n });\n return `${entityName} \\u2014 ${date}`;\n }\n\n private resetCreateDialog(): void {\n this.CreateStep = 'entity';\n this.EntitySearchText = '';\n this.SelectedEntity = null;\n this.RecordSearchText = '';\n this.AvailableRecords = [];\n this.FilteredRecords = [];\n this.IsLoadingRecords = false;\n this.LabelName = '';\n this.LabelDescription = '';\n this.IsCreatingLabel = false;\n this.CreateError = '';\n this.CreatedLabelCount = 0;\n this.CreatedItemCount = 0;\n this.CreateProgress = null;\n }\n}\n","<div class=\"label-create-container\">\n\n <!-- Step indicator -->\n @if (CreateStep !== 'creating' && CreateStep !== 'done') {\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CreateStep === 'entity'\" [class.completed]=\"CreateStep !== 'entity'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Entity</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep !== 'entity'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'records'\" [class.completed]=\"CreateStep === 'details'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Records</span>\n </div>\n <div class=\"step-connector\" [class.active]=\"CreateStep === 'details'\"></div>\n <div class=\"step\" [class.active]=\"CreateStep === 'details'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Details</span>\n </div>\n </div>\n }\n\n <!-- Step 1: Pick Entity -->\n @if (CreateStep === 'entity') {\n <div class=\"dialog-step\">\n <p class=\"step-description\">Choose an entity type to label records from.</p>\n <div class=\"dialog-search\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search entities...\"\n [ngModel]=\"EntitySearchText\"\n (ngModelChange)=\"OnEntitySearchChange($event)\" />\n </div>\n <div class=\"entity-list\">\n @for (entity of FilteredEntities; track entity) {\n <div class=\"entity-option\"\n (click)=\"SelectEntity(entity)\">\n <div class=\"entity-option-info\">\n <span class=\"entity-option-name\">{{entity.Name}}</span>\n @if (entity.Description) {\n <span class=\"entity-option-desc\">{{entity.Description | slice:0:80}}</span>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right entity-option-arrow\"></i>\n </div>\n }\n @if (FilteredEntities.length === 0) {\n <div class=\"entity-list-empty\">\n No entities match your search.\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Step 2: Select Records -->\n @if (CreateStep === 'records') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n @if (!PreselectedEntity) {\n <button class=\"btn-back\" (click)=\"GoBackToEntity()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n }\n <div>\n <p class=\"step-description\">\n Select records from <strong>{{SelectedEntity?.Name}}</strong> to label.\n </p>\n </div>\n </div>\n @if (IsLoadingRecords) {\n <mj-loading text=\"Loading records...\"></mj-loading>\n }\n @if (!IsLoadingRecords) {\n <div class=\"records-toolbar\">\n <div class=\"dialog-search\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-search dialog-search-icon\"></i>\n <input type=\"text\"\n class=\"dialog-search-input\"\n placeholder=\"Search records...\"\n [ngModel]=\"RecordSearchText\"\n (ngModelChange)=\"OnRecordSearchChange($event)\" />\n </div>\n <div class=\"selection-actions\">\n <button class=\"btn-text\" (click)=\"SelectAllRecords()\">Select All</button>\n <button class=\"btn-text\" (click)=\"DeselectAllRecords()\">Clear</button>\n </div>\n </div>\n <div class=\"record-list\">\n @for (record of FilteredRecords; track record) {\n <div class=\"record-option\"\n [class.selected]=\"record.Selected\"\n (click)=\"ToggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.Selected) {\n <i class=\"fa-solid fa-check\"></i>\n }\n </div>\n <span class=\"record-name\">{{record.DisplayName}}</span>\n </div>\n }\n @if (FilteredRecords.length === 0 && !IsLoadingRecords) {\n <div class=\"entity-list-empty\">\n No records found for this entity.\n </div>\n }\n </div>\n <div class=\"records-footer\">\n <span class=\"selection-count\">{{SelectedRecordCount}} selected</span>\n <button class=\"btn-primary\"\n [disabled]=\"SelectedRecordCount === 0\"\n (click)=\"GoToDetailsStep()\">\n Continue\n <i class=\"fa-solid fa-arrow-right\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Step 3: Label Details -->\n @if (CreateStep === 'details') {\n <div class=\"dialog-step\">\n <div class=\"step-header-row\">\n <button class=\"btn-back\" (click)=\"GoBackToRecords()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n </button>\n <p class=\"step-description\">Name your version label.</p>\n </div>\n <div class=\"details-summary\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-table\"></i>\n <span>{{SelectedEntity?.Name}}</span>\n </div>\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-check-double\"></i>\n <span>{{SelectedRecordCount}} record{{SelectedRecordCount > 1 ? 's' : ''}} selected</span>\n </div>\n @if (SelectedRecordCount > 1) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Will create 1 group + {{SelectedRecordCount}} child labels</span>\n </div>\n }\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Label Name</label>\n <input type=\"text\"\n class=\"form-input\"\n placeholder=\"e.g. Customer Support Agent v2.0\"\n [(ngModel)]=\"LabelName\" />\n </div>\n <div class=\"form-field\">\n <label class=\"form-label\">Description (optional)</label>\n <textarea class=\"form-textarea\"\n rows=\"3\"\n placeholder=\"What does this version represent?\"\n [(ngModel)]=\"LabelDescription\"></textarea>\n </div>\n <div class=\"details-footer\">\n <button class=\"btn-primary\"\n [disabled]=\"!LabelName.trim()\"\n (click)=\"CreateLabels()\">\n <i class=\"fa-solid fa-tag\"></i>\n Create Label{{SelectedRecordCount > 1 ? 's' : ''}}\n </button>\n <button class=\"btn-secondary\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- Creating state -->\n @if (CreateStep === 'creating') {\n <div class=\"dialog-step creating-step\">\n <div class=\"creating-animation\">\n <i class=\"fa-solid fa-tag fa-spin creating-icon\"></i>\n </div>\n <h3 class=\"creating-title\">Creating Labels...</h3>\n <!-- Progress bar -->\n @if (CreateProgress) {\n <div class=\"progress-container\">\n <div class=\"progress-bar-track\">\n <div class=\"progress-bar-fill\" [style.width.%]=\"CreateProgress.Percentage\"></div>\n </div>\n <div class=\"progress-details\">\n <span class=\"progress-message\">{{CreateProgress.Message}}</span>\n <span class=\"progress-pct\">{{CreateProgress.Percentage}}%</span>\n </div>\n @if (CreateProgress.RecordsProcessed != null && CreateProgress.TotalRecords) {\n <div class=\"progress-stats\">\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-camera\"></i>\n {{CreateProgress.RecordsProcessed}} / {{CreateProgress.TotalRecords}} records\n </span>\n @if (CreateProgress.CurrentEntity) {\n <span class=\"progress-stat\">\n <i class=\"fa-solid fa-table\"></i>\n {{CreateProgress.CurrentEntity}}\n </span>\n }\n </div>\n }\n </div>\n }\n @if (!CreateProgress) {\n <p class=\"creating-progress\">\n {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}} created\n @if (CreatedItemCount > 0) {\n <span> · {{CreatedItemCount}} items captured</span>\n }\n </p>\n }\n </div>\n }\n\n <!-- Done state -->\n @if (CreateStep === 'done') {\n <div class=\"dialog-step done-step\">\n @if (!CreateError) {\n <div class=\"done-icon-wrap success\">\n <i class=\"fa-solid fa-check\"></i>\n </div>\n <h3 class=\"done-title\">Labels Created</h3>\n <p class=\"done-message\">\n Successfully created {{CreatedLabelCount}} label{{CreatedLabelCount !== 1 ? 's' : ''}}\n @if (CreatedItemCount > 0) {\n <span> with {{CreatedItemCount}} items captured</span>\n }.\n </p>\n }\n @if (CreateError) {\n <div class=\"done-icon-wrap error\">\n <i class=\"fa-solid fa-xmark\"></i>\n </div>\n <h3 class=\"done-title\">Error</h3>\n <p class=\"done-message error-text\">{{CreateError}}</p>\n }\n <button class=\"btn-primary\" (click)=\"FinishCreate()\">Done</button>\n </div>\n }\n </div>\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, ElementRef, NgZone } from '@angular/core';
|
|
2
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
2
3
|
import { MJVersionLabelEntityType, MJVersionLabelItemEntityType, MJVersionLabelRestoreEntityType } from '@memberjunction/core-entities';
|
|
3
4
|
import { MicroViewData, FieldChangeView } from '../types';
|
|
4
5
|
import { EntityLinkClickEvent } from '../record-micro-view/record-micro-view.component';
|
|
@@ -45,7 +46,7 @@ interface DependencyEntityView {
|
|
|
45
46
|
Depth: number;
|
|
46
47
|
IsExpanded: boolean;
|
|
47
48
|
}
|
|
48
|
-
export declare class MjLabelDetailComponent implements OnInit, OnDestroy {
|
|
49
|
+
export declare class MjLabelDetailComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
49
50
|
private cdr;
|
|
50
51
|
private ngZone;
|
|
51
52
|
private elRef;
|
|
@@ -91,7 +92,7 @@ export declare class MjLabelDetailComponent implements OnInit, OnDestroy {
|
|
|
91
92
|
private resizeMinWidth;
|
|
92
93
|
private resizeMaxWidthRatio;
|
|
93
94
|
private static readonly PREFS_KEY;
|
|
94
|
-
private metadata;
|
|
95
|
+
private get metadata();
|
|
95
96
|
private destroy$;
|
|
96
97
|
private boundOnResizeMove;
|
|
97
98
|
private boundOnResizeEnd;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"label-detail.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-detail/label-detail.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAyC,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKxK,OAAO,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,+BAA+B,EAAwB,MAAM,+BAA+B,CAAC;AAC9J,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;;AAMxF,KAAK,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnF,UAAU,mBAAmB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,gBAAgB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,UAAU,gBAAgB;IACtB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,YAAY,EAAE,qBAAqB,EAAE,CAAC;CACzC;AAED,UAAU,qBAAqB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,gBAAgB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,GAAG,WAAW,CAAC;IACrC,YAAY,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACvB;AAcD,qBAOa,sBAAuB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"label-detail.component.d.ts","sourceRoot":"","sources":["../../../src/lib/label-detail/label-detail.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, HostListener } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
|
-
import { RunView,
|
|
3
|
+
import { RunView, CompositeKey, EntityRecordNameInput } from '@memberjunction/core';
|
|
4
4
|
import { UserInfoEngine } from '@memberjunction/core-entities';
|
|
5
5
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
6
|
+
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/common";
|
|
8
9
|
import * as i2 from "@angular/forms";
|
|
@@ -1089,7 +1090,7 @@ function MjLabelDetailComponent_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
|
1089
1090
|
// =========================================================================
|
|
1090
1091
|
// Component
|
|
1091
1092
|
// =========================================================================
|
|
1092
|
-
export class MjLabelDetailComponent {
|
|
1093
|
+
export class MjLabelDetailComponent extends BaseAngularComponent {
|
|
1093
1094
|
cdr;
|
|
1094
1095
|
ngZone;
|
|
1095
1096
|
elRef;
|
|
@@ -1145,12 +1146,13 @@ export class MjLabelDetailComponent {
|
|
|
1145
1146
|
resizeMinWidth = 400;
|
|
1146
1147
|
resizeMaxWidthRatio = 0.92;
|
|
1147
1148
|
static PREFS_KEY = 'VersionHistory.DetailPanel.UserPreferences';
|
|
1148
|
-
metadata
|
|
1149
|
+
get metadata() { return this.ProviderToUse; }
|
|
1149
1150
|
destroy$ = new Subject();
|
|
1150
1151
|
// Bound handlers for resize (need references for removeEventListener)
|
|
1151
1152
|
boundOnResizeMove = this.onResizeMove.bind(this);
|
|
1152
1153
|
boundOnResizeEnd = this.onResizeEnd.bind(this);
|
|
1153
1154
|
constructor(cdr, ngZone, elRef) {
|
|
1155
|
+
super();
|
|
1154
1156
|
this.cdr = cdr;
|
|
1155
1157
|
this.ngZone = ngZone;
|
|
1156
1158
|
this.elRef = elRef;
|
|
@@ -1211,7 +1213,7 @@ export class MjLabelDetailComponent {
|
|
|
1211
1213
|
this.IsArchiving = true;
|
|
1212
1214
|
this.cdr.markForCheck();
|
|
1213
1215
|
try {
|
|
1214
|
-
const md =
|
|
1216
|
+
const md = this.ProviderToUse;
|
|
1215
1217
|
const label = await md.GetEntityObject('MJ: Version Labels');
|
|
1216
1218
|
await label.InnerLoad(new CompositeKey([{ FieldName: 'ID', Value: this.Label.ID }]));
|
|
1217
1219
|
label.Status = 'Archived';
|
|
@@ -1241,7 +1243,7 @@ export class MjLabelDetailComponent {
|
|
|
1241
1243
|
this.IsLoadingItems = true;
|
|
1242
1244
|
this.cdr.markForCheck();
|
|
1243
1245
|
try {
|
|
1244
|
-
const rv =
|
|
1246
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
1245
1247
|
const result = await rv.RunView({
|
|
1246
1248
|
EntityName: 'MJ: Version Label Items',
|
|
1247
1249
|
ExtraFilter: `VersionLabelID = '${this.Label.ID}'`,
|
|
@@ -1406,7 +1408,7 @@ export class MjLabelDetailComponent {
|
|
|
1406
1408
|
this.IsLoadingDiff = true;
|
|
1407
1409
|
this.cdr.markForCheck();
|
|
1408
1410
|
try {
|
|
1409
|
-
const rv =
|
|
1411
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
1410
1412
|
const entityGroups = [];
|
|
1411
1413
|
let totalChanged = 0;
|
|
1412
1414
|
let totalUnchanged = 0;
|
|
@@ -1630,7 +1632,7 @@ export class MjLabelDetailComponent {
|
|
|
1630
1632
|
this.IsLoadingHistory = true;
|
|
1631
1633
|
this.cdr.markForCheck();
|
|
1632
1634
|
try {
|
|
1633
|
-
const rv =
|
|
1635
|
+
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
1634
1636
|
const result = await rv.RunView({
|
|
1635
1637
|
EntityName: 'MJ: Version Label Restores',
|
|
1636
1638
|
ExtraFilter: `VersionLabelID = '${this.Label.ID}'`,
|
|
@@ -1975,7 +1977,7 @@ export class MjLabelDetailComponent {
|
|
|
1975
1977
|
static ɵfac = function MjLabelDetailComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MjLabelDetailComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
1976
1978
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MjLabelDetailComponent, selectors: [["mj-label-detail-panel"]], hostBindings: function MjLabelDetailComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1977
1979
|
i0.ɵɵlistener("keydown.escape", function MjLabelDetailComponent_keydown_escape_HostBindingHandler() { return ctx.OnEscapeKey(); }, i0.ɵɵresolveDocument);
|
|
1978
|
-
} }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-camera"], [1, "kpi-mini-content"], [1, "kpi-mini-value"], [1, "kpi-mini-label"], [1, "fa-solid", "fa-table"], [1, "tab-bar"], [1, "breadcrumb-bar"], [1, "tab-content"], [1, "kpi-mini-icon", 2, "background", "rgba(16, 185, 129, 0.1)", "color", "#10b981"], [1, "fa-solid", "fa-stopwatch"], [1, "kpi-mini-icon", 2, "background", "rgba(245, 158, 11, 0.1)", "color", "#f59e0b"], [1, "fa-solid", "fa-layer-group"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-info-circle", "tab-icon"], [1, "fa-solid", "fa-camera", "tab-icon"], [1, "tab-count"], [1, "fa-solid", "fa-diagram-project", "tab-icon"], [1, "fa-solid", "fa-code-compare", "tab-icon"], [1, "fa-solid", "fa-clock-rotate-left", "tab-icon"], [1, "breadcrumb-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "breadcrumb-trail"], [1, "breadcrumb-item", "clickable", 3, "click"], [1, "fa-solid", "fa-camera", "breadcrumb-icon"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], [1, "breadcrumb-item", "current"], [1, "fa-solid", "fa-file-lines", "breadcrumb-icon"], ["text", "Loading label data..."], [1, "tab-pane"], [1, "detail-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "detail-grid"], [1, "detail-field"], [1, "field-label"], [1, "field-value"], [1, "inline-badge", 3, "ngClass"], [2, "margin-right", "6px"], [1, "record-card"], [1, "fa-solid", "fa-clock", "section-icon"], [2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "field-value", "field-mono"], [1, "record-card-main"], [1, "record-card-icon"], [1, "record-card-info"], [1, "record-card-name"], [1, "record-card-name", "record-card-name-loading"], [1, "record-card-entity"], [1, "record-card-id"], ["title", "Open record", 1, "record-card-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-align-left", "section-icon"], [1, "description-text"], [1, "fa-solid", "fa-user", 2, "margin-right", "6px", "opacity", "0.5"], [1, "fa-solid", "fa-sitemap", "section-icon"], [1, "hierarchy-item", "parent"], [1, "hierarchy-children"], [1, "fa-solid", "fa-arrow-up", "hierarchy-icon"], [1, "hierarchy-label"], [1, "hierarchy-name"], [1, "hierarchy-item", "child"], [1, "fa-solid", "fa-arrow-turn-down-right", "hierarchy-icon"], [1, "hierarchy-meta"], [1, "snapshot-toolbar"], [1, "snapshot-search"], [1, "fa-solid", "fa-search", "snapshot-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "snapshot-search-input", 3, "ngModelChange", "ngModel"], [1, "snapshot-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-a-z"], [1, "fa-solid", "fa-arrow-up-z-a"], ["title", "Sort by record count", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-9-1"], [1, "fa-solid", "fa-arrow-up-1-9"], [1, "snapshot-view-toggle"], [1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-list"], [1, "fa-solid", "fa-grip"], [1, "snapshot-groups"], [1, "snapshot-group"], [1, "tab-empty"], [1, "group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "group-chevron"], [1, "group-entity-icon"], [1, "group-name"], [1, "group-count-inline"], [1, "group-content"], [1, "group-names-loading"], [1, "snapshot-cards"], ["text", "Loading record names...", "size", "small"], [1, "snapshot-list-item"], [1, "snapshot-list-item", 3, "click"], [1, "fa-solid", "fa-file-lines", "snapshot-item-icon"], [1, "snapshot-item-name"], [1, "fa-solid", "fa-chevron-right", "snapshot-item-arrow"], [1, "snapshot-card"], [1, "snapshot-card", 3, "click"], [1, "snapshot-card-header"], [1, "fa-solid", "fa-file-lines"], [1, "snapshot-card-name"], [1, "fa-solid", "fa-camera", "tab-empty-icon"], ["text", "Loading dependencies..."], [1, "dep-root"], [1, "dep-root-entity"], [1, "dep-root-icon"], [1, "dep-root-name"], [1, "dep-root-badge"], [1, "dep-empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-diagram-project", "tab-empty-icon"], [1, "dep-node"], [1, "dep-node-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "dep-chevron", 3, "expanded"], [1, "dep-node-spacer"], [1, "dep-node-icon"], [1, "dep-node-name"], [1, "dep-node-field"], [1, "dep-node-count"], [1, "fa-solid", "fa-chevron-right", "dep-chevron"], ["text", "Computing differences..."], [1, "diff-summary"], [1, "diff-stat"], [1, "diff-stat-value", "change-modified"], [1, "diff-stat-label"], [1, "diff-stat-value"], [1, "diff-toolbar"], [1, "diff-groups"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-group"], [1, "diff-group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "diff-chevron"], [1, "diff-group-icon"], [1, "diff-group-name"], [1, "diff-group-count", "change-modified"], [1, "diff-group-content"], [1, "diff-record"], [1, "diff-record-header"], [3, "ngClass"], [1, "diff-record-id"], [1, "diff-fields"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-circle-check", "tab-empty-icon", 2, "color", "#10b981"], ["text", "Loading history..."], [1, "fa-solid", "fa-clock-rotate-left", "section-icon"], [1, "history-list"], [1, "history-item"], [1, "history-item-icon", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "history-item-content"], [1, "history-item-title"], [1, "history-item-meta"], [1, "history-item-date"], [1, "fa-solid", "fa-tags", "section-icon"], [1, "history-item-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tag"], [1, "inline-badge", "small", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left", "tab-empty-icon"], [3, "Close", "EntityLinkClick", "OpenRecord", "Data", "Inline"]], template: function MjLabelDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1980
|
+
} }, inputs: { Label: "Label", AllLabels: "AllLabels", ItemCountMap: "ItemCountMap" }, outputs: { Close: "Close", LabelUpdated: "LabelUpdated", EntityLinkClick: "EntityLinkClick" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 45, vars: 22, consts: [["depNode", ""], [1, "panel-backdrop", 3, "click"], [1, "detail-panel"], [1, "resize-handle", 3, "mousedown"], [1, "resize-handle-grip"], [1, "panel-header"], [1, "header-info"], [1, "header-title-row"], [1, "header-scope-icon"], [1, "header-title"], [1, "header-status", 3, "ngClass"], [1, "header-scope-badge"], [1, "header-description"], [1, "header-actions"], ["title", "Archive this label", 1, "header-action-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-box-archive"], ["title", "View changes", 1, "header-action-btn", 3, "click"], [1, "fa-solid", "fa-code-compare"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "summary-kpis"], [1, "summary-kpi"], [1, "kpi-mini-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-camera"], [1, "kpi-mini-content"], [1, "kpi-mini-value"], [1, "kpi-mini-label"], [1, "fa-solid", "fa-table"], [1, "tab-bar"], [1, "breadcrumb-bar"], [1, "tab-content"], [1, "kpi-mini-icon", 2, "background", "rgba(16, 185, 129, 0.1)", "color", "#10b981"], [1, "fa-solid", "fa-stopwatch"], [1, "kpi-mini-icon", 2, "background", "rgba(245, 158, 11, 0.1)", "color", "#f59e0b"], [1, "fa-solid", "fa-layer-group"], [1, "tab", 3, "click"], [1, "fa-solid", "fa-info-circle", "tab-icon"], [1, "fa-solid", "fa-camera", "tab-icon"], [1, "tab-count"], [1, "fa-solid", "fa-diagram-project", "tab-icon"], [1, "fa-solid", "fa-code-compare", "tab-icon"], [1, "fa-solid", "fa-clock-rotate-left", "tab-icon"], [1, "breadcrumb-back", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "breadcrumb-trail"], [1, "breadcrumb-item", "clickable", 3, "click"], [1, "fa-solid", "fa-camera", "breadcrumb-icon"], [1, "fa-solid", "fa-chevron-right", "breadcrumb-separator"], [1, "breadcrumb-item", "current"], [1, "fa-solid", "fa-file-lines", "breadcrumb-icon"], ["text", "Loading label data..."], [1, "tab-pane"], [1, "detail-section"], [1, "section-title"], [1, "fa-solid", "fa-info-circle", "section-icon"], [1, "detail-grid"], [1, "detail-field"], [1, "field-label"], [1, "field-value"], [1, "inline-badge", 3, "ngClass"], [2, "margin-right", "6px"], [1, "record-card"], [1, "fa-solid", "fa-clock", "section-icon"], [2, "margin-right", "6px", "color", "var(--mj-brand-primary)"], [1, "field-value", "field-mono"], [1, "record-card-main"], [1, "record-card-icon"], [1, "record-card-info"], [1, "record-card-name"], [1, "record-card-name", "record-card-name-loading"], [1, "record-card-entity"], [1, "record-card-id"], ["title", "Open record", 1, "record-card-open-btn", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-align-left", "section-icon"], [1, "description-text"], [1, "fa-solid", "fa-user", 2, "margin-right", "6px", "opacity", "0.5"], [1, "fa-solid", "fa-sitemap", "section-icon"], [1, "hierarchy-item", "parent"], [1, "hierarchy-children"], [1, "fa-solid", "fa-arrow-up", "hierarchy-icon"], [1, "hierarchy-label"], [1, "hierarchy-name"], [1, "hierarchy-item", "child"], [1, "fa-solid", "fa-arrow-turn-down-right", "hierarchy-icon"], [1, "hierarchy-meta"], [1, "snapshot-toolbar"], [1, "snapshot-search"], [1, "fa-solid", "fa-search", "snapshot-search-icon"], ["type", "text", "placeholder", "Search by entity or record...", 1, "snapshot-search-input", 3, "ngModelChange", "ngModel"], [1, "snapshot-sort-toggle"], ["title", "Sort by name", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-a-z"], [1, "fa-solid", "fa-arrow-up-z-a"], ["title", "Sort by record count", 1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-arrow-down-9-1"], [1, "fa-solid", "fa-arrow-up-1-9"], [1, "snapshot-view-toggle"], [1, "toggle-btn-sm", 3, "click"], [1, "fa-solid", "fa-list"], [1, "fa-solid", "fa-grip"], [1, "snapshot-groups"], [1, "snapshot-group"], [1, "tab-empty"], [1, "group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "group-chevron"], [1, "group-entity-icon"], [1, "group-name"], [1, "group-count-inline"], [1, "group-content"], [1, "group-names-loading"], [1, "snapshot-cards"], ["text", "Loading record names...", "size", "small"], [1, "snapshot-list-item"], [1, "snapshot-list-item", 3, "click"], [1, "fa-solid", "fa-file-lines", "snapshot-item-icon"], [1, "snapshot-item-name"], [1, "fa-solid", "fa-chevron-right", "snapshot-item-arrow"], [1, "snapshot-card"], [1, "snapshot-card", 3, "click"], [1, "snapshot-card-header"], [1, "fa-solid", "fa-file-lines"], [1, "snapshot-card-name"], [1, "fa-solid", "fa-camera", "tab-empty-icon"], ["text", "Loading dependencies..."], [1, "dep-root"], [1, "dep-root-entity"], [1, "dep-root-icon"], [1, "dep-root-name"], [1, "dep-root-badge"], [1, "dep-empty"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "fa-solid", "fa-diagram-project", "tab-empty-icon"], [1, "dep-node"], [1, "dep-node-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "dep-chevron", 3, "expanded"], [1, "dep-node-spacer"], [1, "dep-node-icon"], [1, "dep-node-name"], [1, "dep-node-field"], [1, "dep-node-count"], [1, "fa-solid", "fa-chevron-right", "dep-chevron"], ["text", "Computing differences..."], [1, "diff-summary"], [1, "diff-stat"], [1, "diff-stat-value", "change-modified"], [1, "diff-stat-label"], [1, "diff-stat-value"], [1, "diff-toolbar"], [1, "diff-groups"], ["title", "Expand all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-down"], ["title", "Collapse all", 1, "toolbar-action-btn", 3, "click"], [1, "fa-solid", "fa-angles-up"], [1, "diff-group"], [1, "diff-group-header", 3, "click"], [1, "fa-solid", "fa-chevron-right", "diff-chevron"], [1, "diff-group-icon"], [1, "diff-group-name"], [1, "diff-group-count", "change-modified"], [1, "diff-group-content"], [1, "diff-record"], [1, "diff-record-header"], [3, "ngClass"], [1, "diff-record-id"], [1, "diff-fields"], [1, "diff-field", 3, "ngClass"], [1, "diff-field-name"], [1, "diff-field-old"], [1, "fa-solid", "fa-arrow-right", "diff-field-arrow"], [1, "diff-field-new"], [1, "fa-solid", "fa-circle-check", "tab-empty-icon", 2, "color", "#10b981"], ["text", "Loading history..."], [1, "fa-solid", "fa-clock-rotate-left", "section-icon"], [1, "history-list"], [1, "history-item"], [1, "history-item-icon", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "history-item-content"], [1, "history-item-title"], [1, "history-item-meta"], [1, "history-item-date"], [1, "fa-solid", "fa-tags", "section-icon"], [1, "history-item-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-tag"], [1, "inline-badge", "small", 3, "ngClass"], [1, "fa-solid", "fa-clock-rotate-left", "tab-empty-icon"], [3, "Close", "EntityLinkClick", "OpenRecord", "Data", "Inline"]], template: function MjLabelDetailComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1979
1981
|
i0.ɵɵelementStart(0, "div", 1);
|
|
1980
1982
|
i0.ɵɵlistener("click", function MjLabelDetailComponent_Template_div_click_0_listener() { return ctx.OnBackdropClick(); });
|
|
1981
1983
|
i0.ɵɵelementEnd();
|
|
@@ -2090,5 +2092,5 @@ export class MjLabelDetailComponent {
|
|
|
2090
2092
|
type: HostListener,
|
|
2091
2093
|
args: ['document:keydown.escape']
|
|
2092
2094
|
}] }); })();
|
|
2093
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelDetailComponent, { className: "MjLabelDetailComponent", filePath: "src/lib/label-detail/label-detail.component.ts", lineNumber:
|
|
2095
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MjLabelDetailComponent, { className: "MjLabelDetailComponent", filePath: "src/lib/label-detail/label-detail.component.ts", lineNumber: 79 }); })();
|
|
2094
2096
|
//# sourceMappingURL=label-detail.component.js.map
|