@memberjunction/ng-dashboard-viewer 5.30.0 → 5.31.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.
Files changed (25) hide show
  1. package/dist/lib/config-panels/artifact-config-panel.component.d.ts.map +1 -1
  2. package/dist/lib/config-panels/artifact-config-panel.component.js +3 -4
  3. package/dist/lib/config-panels/artifact-config-panel.component.js.map +1 -1
  4. package/dist/lib/config-panels/base-config-panel.d.ts +2 -1
  5. package/dist/lib/config-panels/base-config-panel.d.ts.map +1 -1
  6. package/dist/lib/config-panels/base-config-panel.js +4 -2
  7. package/dist/lib/config-panels/base-config-panel.js.map +1 -1
  8. package/dist/lib/dashboard-viewer/dashboard-viewer.component.d.ts +2 -1
  9. package/dist/lib/dashboard-viewer/dashboard-viewer.component.d.ts.map +1 -1
  10. package/dist/lib/dashboard-viewer/dashboard-viewer.component.js +7 -6
  11. package/dist/lib/dashboard-viewer/dashboard-viewer.component.js.map +1 -1
  12. package/dist/lib/parts/artifact-part.component.d.ts.map +1 -1
  13. package/dist/lib/parts/artifact-part.component.js +1 -2
  14. package/dist/lib/parts/artifact-part.component.js.map +1 -1
  15. package/dist/lib/parts/base-dashboard-part.d.ts +2 -1
  16. package/dist/lib/parts/base-dashboard-part.d.ts.map +1 -1
  17. package/dist/lib/parts/base-dashboard-part.js +4 -2
  18. package/dist/lib/parts/base-dashboard-part.js.map +1 -1
  19. package/dist/lib/parts/query-part.component.d.ts.map +1 -1
  20. package/dist/lib/parts/query-part.component.js +4 -5
  21. package/dist/lib/parts/query-part.component.js.map +1 -1
  22. package/dist/lib/parts/view-part.component.d.ts.map +1 -1
  23. package/dist/lib/parts/view-part.component.js +5 -6
  24. package/dist/lib/parts/view-part.component.js.map +1 -1
  25. package/package.json +11 -10
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAqB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,qBAAqB,EACxB,MAAM,0BAA0B,CAAC;;AAElC;;;GAGG;AACH,qBAOa,4BAA6B,SAAQ,eAAgB,YAAW,MAAM;IAEhD,gBAAgB,EAAG,qBAAqB,CAAC;IAGjE,KAAK,SAAM;IACX,UAAU,SAAM;IAChB,YAAY,SAAM;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,UAAU,UAAS;IACnB,QAAQ,UAAQ;IAChB,mBAAmB,UAAQ;IAC3B,YAAY,UAAS;IAGrB,QAAQ,EAAE,uBAAuB,EAAE,CAAM;IACzC,iBAAiB,UAAS;IACjC,OAAO,CAAC,oBAAoB,CAAM;IAG3B,WAAW,UAAS;IAGpB,aAAa,SAAM;IAGnB,gBAAgB,EAAG,gBAAgB,CAAC;IACpC,kBAAkB,EAAG,cAAc,CAAC;gBAE/B,GAAG,EAAE,iBAAiB;IAIlC,QAAQ,IAAI,IAAI;IAgDhB;;OAEG;IACH,IAAW,eAAe,IAAI,YAAY,GAAG,IAAI,CAEhD;IAEY,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B/D,WAAW,IAAI,WAAW;IAYjB,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAazD,eAAe,IAAI,MAAM;IAOzB,QAAQ,IAAI,MAAM;IAKlB,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACU,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnF;;OAEG;YACW,uBAAuB;IA6B9B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,IAAI;IAItB,aAAa,IAAI,IAAI;yCAzOnB,4BAA4B;2CAA5B,4BAA4B;CA4OxC"}
1
+ {"version":3,"file":"artifact-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAa,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACH,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,qBAAqB,EACxB,MAAM,0BAA0B,CAAC;;AAElC;;;GAGG;AACH,qBAOa,4BAA6B,SAAQ,eAAgB,YAAW,MAAM;IAEhD,gBAAgB,EAAG,qBAAqB,CAAC;IAGjE,KAAK,SAAM;IACX,UAAU,SAAM;IAChB,YAAY,SAAM;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,UAAU,UAAS;IACnB,QAAQ,UAAQ;IAChB,mBAAmB,UAAQ;IAC3B,YAAY,UAAS;IAGrB,QAAQ,EAAE,uBAAuB,EAAE,CAAM;IACzC,iBAAiB,UAAS;IACjC,OAAO,CAAC,oBAAoB,CAAM;IAG3B,WAAW,UAAS;IAGpB,aAAa,SAAM;IAGnB,gBAAgB,EAAG,gBAAgB,CAAC;IACpC,kBAAkB,EAAG,cAAc,CAAC;gBAE/B,GAAG,EAAE,iBAAiB;IAIlC,QAAQ,IAAI,IAAI;IA+ChB;;OAEG;IACH,IAAW,eAAe,IAAI,YAAY,GAAG,IAAI,CAEhD;IAEY,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B/D,WAAW,IAAI,WAAW;IAYjB,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAazD,eAAe,IAAI,MAAM;IAOzB,QAAQ,IAAI,MAAM;IAKlB,aAAa,IAAI,IAAI;IAI5B;;OAEG;IACU,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BnF;;OAEG;YACW,uBAAuB;IA6B9B,eAAe,IAAI,IAAI;IAIvB,cAAc,IAAI,IAAI;IAItB,aAAa,IAAI,IAAI;yCAxOnB,4BAA4B;2CAA5B,4BAA4B;CA2OxC"}
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Component, ViewChild } from '@angular/core';
8
8
  import { RegisterClass } from '@memberjunction/global';
9
- import { CompositeKey, Metadata, RunView } from '@memberjunction/core';
9
+ import { CompositeKey, RunView } from '@memberjunction/core';
10
10
  import { BaseConfigPanel } from './base-config-panel';
11
11
  import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/forms";
@@ -167,8 +167,7 @@ let ArtifactConfigPanelComponent = class ArtifactConfigPanelComponent extends Ba
167
167
  }
168
168
  ngOnInit() {
169
169
  // Get current user ID for filtering
170
- const md = new Metadata();
171
- const userId = md.CurrentUser?.ID;
170
+ const userId = this.ProviderToUse.CurrentUser?.ID;
172
171
  // Tree configuration for Collections (branches) and Artifacts (leaves)
173
172
  // Collections have hierarchical ParentID structure.
174
173
  // Filter to show only collections owned by the current user.
@@ -314,7 +313,7 @@ let ArtifactConfigPanelComponent = class ArtifactConfigPanelComponent extends Ba
314
313
  this.versions = [];
315
314
  this.cdr.detectChanges();
316
315
  try {
317
- const rv = new RunView();
316
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
318
317
  const result = await rv.RunView({
319
318
  EntityName: 'MJ: Artifact Versions',
320
319
  ExtraFilter: `ArtifactID = '${artifactId}'`,
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-config-panel.component.js","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts","../../../src/lib/config-panels/artifact-config-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef, ViewChild, OnInit } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { CompositeKey, Metadata, RunView } from '@memberjunction/core';\nimport { MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { BaseConfigPanel } from './base-config-panel';\nimport { PanelConfig } from '../models/dashboard-types';\nimport {\n TreeBranchConfig,\n TreeLeafConfig,\n TreeNode,\n TreeDropdownComponent\n} from '@memberjunction/ng-trees';\n\n/**\n * Configuration panel for Artifact parts.\n * Uses tree dropdown for collection-based artifact selection.\n */\n@RegisterClass(BaseConfigPanel, 'ArtifactPanelConfigDialog')\n@Component({\n standalone: false,\n selector: 'mj-artifact-config-panel',\n templateUrl: './artifact-config-panel.component.html',\n styleUrls: ['./config-panel.component.css']\n})\nexport class ArtifactConfigPanelComponent extends BaseConfigPanel implements OnInit {\n // ViewChild reference\n @ViewChild('artifactDropdown') artifactDropdown!: TreeDropdownComponent;\n\n // Form fields\n public title = '';\n public artifactId = '';\n public artifactName = '';\n public versionNumber: number | null = null;\n public showHeader = false; // Default false for clean dashboard embedding\n public showTabs = true;\n public showVersionSelector = true;\n public showMetadata = false;\n\n // Version selection\n public versions: MJArtifactVersionEntity[] = [];\n public isLoadingVersions = false;\n private previousArtifactName = ''; // Track for smart title updates\n\n // Collapsible section state\n public showOptions = false;\n\n // Validation\n public artifactError = '';\n\n // Tree configuration - initialized in ngOnInit with current user filter\n public CollectionConfig!: TreeBranchConfig;\n public ArtifactLeafConfig!: TreeLeafConfig;\n\n constructor(cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n ngOnInit(): void {\n // Get current user ID for filtering\n const md = new Metadata();\n const userId = md.CurrentUser?.ID;\n\n // Tree configuration for Collections (branches) and Artifacts (leaves)\n // Collections have hierarchical ParentID structure.\n // Filter to show only collections owned by the current user.\n this.CollectionConfig = {\n EntityName: 'MJ: Collections',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n IconField: 'Icon',\n ColorField: 'Color',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC',\n ExtraFilter: userId ? `OwnerID = '${userId}'` : ''\n };\n\n // Artifacts from MJ: Artifacts entity using M2M junction config.\n // The relationship is: Artifact -> ArtifactVersion -> CollectionArtifact -> Collection\n // We use JunctionConfig to properly parent artifacts under their collections.\n this.ArtifactLeafConfig = {\n EntityName: 'MJ: Artifacts',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentField: '', // Using JunctionConfig instead of direct parent field\n DefaultIcon: 'fa-solid fa-cube',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC',\n ExtraFilter: userId ? `UserID = '${userId}'` : '',\n // M2M junction configuration: Artifact -> ArtifactVersion -> CollectionArtifact -> Collection\n JunctionConfig: {\n EntityName: 'MJ: Collection Artifacts',\n LeafForeignKey: 'ArtifactVersionID', // Junction references ArtifactVersion, not Artifact directly\n BranchForeignKey: 'CollectionID',\n // Indirect mapping since junction references ArtifactVersion, not Artifact\n IndirectLeafMapping: {\n IntermediateEntity: 'MJ: Artifact Versions',\n IntermediateIDField: 'ID', // CollectionArtifact.ArtifactVersionID -> ArtifactVersion.ID\n LeafIDField: 'ArtifactID' // ArtifactVersion.ArtifactID -> Artifact.ID\n }\n }\n };\n }\n\n /**\n * Get the artifactId as a CompositeKey for the tree dropdown\n */\n public get ArtifactIdAsKey(): CompositeKey | null {\n return this.artifactId ? CompositeKey.FromID(this.artifactId) : null;\n }\n\n public async initFromConfig(config: PanelConfig | null): Promise<void> {\n if (config && config.type === 'Artifact') {\n this.artifactId = (config['artifactId'] as string) || '';\n this.versionNumber = (config['versionNumber'] as number) ?? null;\n this.showHeader = (config['showHeader'] as boolean) ?? false;\n this.showTabs = (config['showTabs'] as boolean) ?? true;\n this.showVersionSelector = (config['showVersionSelector'] as boolean) ?? true;\n this.showMetadata = (config['showMetadata'] as boolean) ?? false;\n } else {\n // Defaults for new Artifact panel\n this.artifactId = '';\n this.versionNumber = null;\n this.showHeader = false;\n this.showTabs = true;\n this.showVersionSelector = true;\n this.showMetadata = false;\n }\n\n this.title = this.panel?.title || '';\n this.artifactName = '';\n this.previousArtifactName = '';\n this.artifactError = '';\n this.versions = [];\n this.cdr.detectChanges();\n\n // If editing an existing artifact config, load its versions\n if (this.artifactId) {\n await this.loadVersionsForArtifact(this.artifactId);\n }\n }\n\n public buildConfig(): PanelConfig {\n return {\n type: 'Artifact',\n artifactId: this.artifactId.trim(),\n versionNumber: this.versionNumber ?? undefined,\n showHeader: this.showHeader,\n showTabs: this.showTabs,\n showVersionSelector: this.showVersionSelector,\n showMetadata: this.showMetadata\n };\n }\n\n public override validate(): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n this.artifactError = '';\n\n if (!this.artifactId.trim()) {\n this.artifactError = 'Please select an artifact';\n errors.push(this.artifactError);\n }\n\n this.cdr.detectChanges();\n return { valid: errors.length === 0, errors };\n }\n\n public getDefaultTitle(): string {\n if (this.artifactName) {\n return this.artifactName;\n }\n return 'Artifact';\n }\n\n public getTitle(): string {\n return this.title || this.getDefaultTitle();\n }\n\n // Form event handlers\n public onTitleChange(): void {\n this.emitConfigChanged();\n }\n\n /**\n * Handle artifact selection from tree dropdown\n */\n public async onArtifactSelection(node: TreeNode | TreeNode[] | null): Promise<void> {\n // Ignore null/empty selections (these happen during sync, not user interaction)\n if (!node || (Array.isArray(node) && node.length === 0)) {\n return;\n }\n\n this.artifactError = '';\n\n if (!Array.isArray(node)) {\n // Only accept leaf nodes (actual artifacts, not collections)\n if (node.Type === 'leaf') {\n const oldArtifactName = this.artifactName;\n this.artifactId = node.ID;\n this.artifactName = node.Label;\n\n // Smart title update: if title matches old name, update to new name\n if (!this.title || this.title === oldArtifactName || this.title === this.previousArtifactName) {\n this.title = node.Label;\n }\n this.previousArtifactName = node.Label;\n\n // Load versions for the selected artifact\n await this.loadVersionsForArtifact(node.ID);\n }\n }\n\n this.emitConfigChanged();\n this.cdr.detectChanges();\n }\n\n /**\n * Load all versions for a given artifact\n */\n private async loadVersionsForArtifact(artifactId: string): Promise<void> {\n this.isLoadingVersions = true;\n this.versions = [];\n this.cdr.detectChanges();\n\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.versions = result.Results;\n // Default to latest version (first in descending order) if no version selected\n if (this.versions.length > 0 && this.versionNumber == null) {\n this.versionNumber = this.versions[0].VersionNumber;\n }\n }\n } catch (error) {\n console.error('Failed to load artifact versions:', error);\n } finally {\n this.isLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n public onVersionChange(): void {\n this.emitConfigChanged();\n }\n\n public onOptionChange(): void {\n this.emitConfigChanged();\n }\n\n public toggleOptions(): void {\n this.showOptions = !this.showOptions;\n }\n}\n","<!-- Artifact Config Panel - Compact layout with tree dropdown and collapsible sections -->\n<div class=\"config-panel config-panel--compact\">\n <!-- Artifact Selection (Primary) -->\n <div class=\"form-group\">\n <label>\n <i class=\"fa-solid fa-cube\"></i>\n Select Artifact\n <span class=\"required\">*</span>\n </label>\n <mj-tree-dropdown\n #artifactDropdown\n [BranchConfig]=\"CollectionConfig\"\n [LeafConfig]=\"ArtifactLeafConfig\"\n [Value]=\"ArtifactIdAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search or browse artifacts...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"onArtifactSelection($event)\"\n [class.error]=\"artifactError\">\n </mj-tree-dropdown>\n @if (artifactError) {\n <span class=\"form-error\">{{ artifactError }}</span>\n }\n @if (!artifactError && !artifactId) {\n <span class=\"form-hint\">\n Browse collections or search to find an artifact\n </span>\n }\n @if (!artifactError && artifactId) {\n <span class=\"form-hint form-hint--selected\">\n <i class=\"fa-solid fa-check\"></i>\n Selected: {{ artifactName }}\n </span>\n }\n </div>\n\n <!-- Version Selection (Available only after artifact is selected) -->\n @if (artifactId) {\n <div class=\"form-group\">\n <label for=\"versionSelect\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version\n </label>\n <div class=\"version-select-wrapper\">\n @if (!isLoadingVersions && versions.length > 0) {\n <select\n id=\"versionSelect\"\n [(ngModel)]=\"versionNumber\"\n (change)=\"onVersionChange()\"\n class=\"form-select\">\n @for (v of versions; track v) {\n <option [ngValue]=\"v.VersionNumber\">\n v{{ v.VersionNumber }} - {{ v.__mj_CreatedAt | date:'short' }}\n </option>\n }\n </select>\n }\n @if (isLoadingVersions) {\n <span class=\"form-hint\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading versions...\n </span>\n }\n @if (!isLoadingVersions && versions.length === 0) {\n <span class=\"form-hint\">\n No versions available\n </span>\n }\n </div>\n @if (versions.length > 0) {\n <span class=\"form-hint\">\n Select which version to display (latest is default)\n </span>\n }\n </div>\n }\n\n <!-- Title (Optional) -->\n <div class=\"form-group\">\n <label for=\"partTitle\">\n <i class=\"fa-solid fa-heading\"></i>\n Part Title\n <span class=\"optional-tag\">(optional)</span>\n </label>\n <input\n type=\"text\"\n id=\"partTitle\"\n [(ngModel)]=\"title\"\n (input)=\"onTitleChange()\"\n [placeholder]=\"artifactName ? 'Default: ' + artifactName : 'Enter a custom title'\"\n class=\"form-input\">\n <span class=\"form-hint\">Leave empty to use artifact name as title</span>\n </div>\n\n <!-- Display Options (Collapsible) -->\n <div class=\"collapsible-section\">\n <button\n type=\"button\"\n class=\"collapsible-header\"\n (click)=\"toggleOptions()\"\n [attr.aria-expanded]=\"showOptions\">\n <span class=\"collapsible-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Display Options\n </span>\n <i class=\"collapsible-chevron fa-solid\"\n [class.fa-chevron-down]=\"!showOptions\"\n [class.fa-chevron-up]=\"showOptions\"></i>\n </button>\n\n @if (showOptions) {\n <div class=\"collapsible-content\">\n <div class=\"checkbox-group checkbox-group--compact\">\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showHeader\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Header</span>\n </label>\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showTabs\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Tabs</span>\n </label>\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showMetadata\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Metadata</span>\n </label>\n </div>\n </div>\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"artifact-config-panel.component.js","sourceRoot":"","sources":["../../../src/lib/config-panels/artifact-config-panel.component.ts","../../../src/lib/config-panels/artifact-config-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, ChangeDetectorRef, ViewChild, OnInit } from '@angular/core';\nimport { RegisterClass } from '@memberjunction/global';\nimport { CompositeKey, RunView } from '@memberjunction/core';\nimport { MJArtifactVersionEntity } from '@memberjunction/core-entities';\nimport { BaseConfigPanel } from './base-config-panel';\nimport { PanelConfig } from '../models/dashboard-types';\nimport {\n TreeBranchConfig,\n TreeLeafConfig,\n TreeNode,\n TreeDropdownComponent\n} from '@memberjunction/ng-trees';\n\n/**\n * Configuration panel for Artifact parts.\n * Uses tree dropdown for collection-based artifact selection.\n */\n@RegisterClass(BaseConfigPanel, 'ArtifactPanelConfigDialog')\n@Component({\n standalone: false,\n selector: 'mj-artifact-config-panel',\n templateUrl: './artifact-config-panel.component.html',\n styleUrls: ['./config-panel.component.css']\n})\nexport class ArtifactConfigPanelComponent extends BaseConfigPanel implements OnInit {\n // ViewChild reference\n @ViewChild('artifactDropdown') artifactDropdown!: TreeDropdownComponent;\n\n // Form fields\n public title = '';\n public artifactId = '';\n public artifactName = '';\n public versionNumber: number | null = null;\n public showHeader = false; // Default false for clean dashboard embedding\n public showTabs = true;\n public showVersionSelector = true;\n public showMetadata = false;\n\n // Version selection\n public versions: MJArtifactVersionEntity[] = [];\n public isLoadingVersions = false;\n private previousArtifactName = ''; // Track for smart title updates\n\n // Collapsible section state\n public showOptions = false;\n\n // Validation\n public artifactError = '';\n\n // Tree configuration - initialized in ngOnInit with current user filter\n public CollectionConfig!: TreeBranchConfig;\n public ArtifactLeafConfig!: TreeLeafConfig;\n\n constructor(cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n ngOnInit(): void {\n // Get current user ID for filtering\n const userId = this.ProviderToUse.CurrentUser?.ID;\n\n // Tree configuration for Collections (branches) and Artifacts (leaves)\n // Collections have hierarchical ParentID structure.\n // Filter to show only collections owned by the current user.\n this.CollectionConfig = {\n EntityName: 'MJ: Collections',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n IconField: 'Icon',\n ColorField: 'Color',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC',\n ExtraFilter: userId ? `OwnerID = '${userId}'` : ''\n };\n\n // Artifacts from MJ: Artifacts entity using M2M junction config.\n // The relationship is: Artifact -> ArtifactVersion -> CollectionArtifact -> Collection\n // We use JunctionConfig to properly parent artifacts under their collections.\n this.ArtifactLeafConfig = {\n EntityName: 'MJ: Artifacts',\n DisplayField: 'Name',\n IDField: 'ID',\n ParentField: '', // Using JunctionConfig instead of direct parent field\n DefaultIcon: 'fa-solid fa-cube',\n DescriptionField: 'Description',\n OrderBy: 'Name ASC',\n ExtraFilter: userId ? `UserID = '${userId}'` : '',\n // M2M junction configuration: Artifact -> ArtifactVersion -> CollectionArtifact -> Collection\n JunctionConfig: {\n EntityName: 'MJ: Collection Artifacts',\n LeafForeignKey: 'ArtifactVersionID', // Junction references ArtifactVersion, not Artifact directly\n BranchForeignKey: 'CollectionID',\n // Indirect mapping since junction references ArtifactVersion, not Artifact\n IndirectLeafMapping: {\n IntermediateEntity: 'MJ: Artifact Versions',\n IntermediateIDField: 'ID', // CollectionArtifact.ArtifactVersionID -> ArtifactVersion.ID\n LeafIDField: 'ArtifactID' // ArtifactVersion.ArtifactID -> Artifact.ID\n }\n }\n };\n }\n\n /**\n * Get the artifactId as a CompositeKey for the tree dropdown\n */\n public get ArtifactIdAsKey(): CompositeKey | null {\n return this.artifactId ? CompositeKey.FromID(this.artifactId) : null;\n }\n\n public async initFromConfig(config: PanelConfig | null): Promise<void> {\n if (config && config.type === 'Artifact') {\n this.artifactId = (config['artifactId'] as string) || '';\n this.versionNumber = (config['versionNumber'] as number) ?? null;\n this.showHeader = (config['showHeader'] as boolean) ?? false;\n this.showTabs = (config['showTabs'] as boolean) ?? true;\n this.showVersionSelector = (config['showVersionSelector'] as boolean) ?? true;\n this.showMetadata = (config['showMetadata'] as boolean) ?? false;\n } else {\n // Defaults for new Artifact panel\n this.artifactId = '';\n this.versionNumber = null;\n this.showHeader = false;\n this.showTabs = true;\n this.showVersionSelector = true;\n this.showMetadata = false;\n }\n\n this.title = this.panel?.title || '';\n this.artifactName = '';\n this.previousArtifactName = '';\n this.artifactError = '';\n this.versions = [];\n this.cdr.detectChanges();\n\n // If editing an existing artifact config, load its versions\n if (this.artifactId) {\n await this.loadVersionsForArtifact(this.artifactId);\n }\n }\n\n public buildConfig(): PanelConfig {\n return {\n type: 'Artifact',\n artifactId: this.artifactId.trim(),\n versionNumber: this.versionNumber ?? undefined,\n showHeader: this.showHeader,\n showTabs: this.showTabs,\n showVersionSelector: this.showVersionSelector,\n showMetadata: this.showMetadata\n };\n }\n\n public override validate(): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n this.artifactError = '';\n\n if (!this.artifactId.trim()) {\n this.artifactError = 'Please select an artifact';\n errors.push(this.artifactError);\n }\n\n this.cdr.detectChanges();\n return { valid: errors.length === 0, errors };\n }\n\n public getDefaultTitle(): string {\n if (this.artifactName) {\n return this.artifactName;\n }\n return 'Artifact';\n }\n\n public getTitle(): string {\n return this.title || this.getDefaultTitle();\n }\n\n // Form event handlers\n public onTitleChange(): void {\n this.emitConfigChanged();\n }\n\n /**\n * Handle artifact selection from tree dropdown\n */\n public async onArtifactSelection(node: TreeNode | TreeNode[] | null): Promise<void> {\n // Ignore null/empty selections (these happen during sync, not user interaction)\n if (!node || (Array.isArray(node) && node.length === 0)) {\n return;\n }\n\n this.artifactError = '';\n\n if (!Array.isArray(node)) {\n // Only accept leaf nodes (actual artifacts, not collections)\n if (node.Type === 'leaf') {\n const oldArtifactName = this.artifactName;\n this.artifactId = node.ID;\n this.artifactName = node.Label;\n\n // Smart title update: if title matches old name, update to new name\n if (!this.title || this.title === oldArtifactName || this.title === this.previousArtifactName) {\n this.title = node.Label;\n }\n this.previousArtifactName = node.Label;\n\n // Load versions for the selected artifact\n await this.loadVersionsForArtifact(node.ID);\n }\n }\n\n this.emitConfigChanged();\n this.cdr.detectChanges();\n }\n\n /**\n * Load all versions for a given artifact\n */\n private async loadVersionsForArtifact(artifactId: string): Promise<void> {\n this.isLoadingVersions = true;\n this.versions = [];\n this.cdr.detectChanges();\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJArtifactVersionEntity>({\n EntityName: 'MJ: Artifact Versions',\n ExtraFilter: `ArtifactID = '${artifactId}'`,\n OrderBy: 'VersionNumber DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n this.versions = result.Results;\n // Default to latest version (first in descending order) if no version selected\n if (this.versions.length > 0 && this.versionNumber == null) {\n this.versionNumber = this.versions[0].VersionNumber;\n }\n }\n } catch (error) {\n console.error('Failed to load artifact versions:', error);\n } finally {\n this.isLoadingVersions = false;\n this.cdr.detectChanges();\n }\n }\n\n public onVersionChange(): void {\n this.emitConfigChanged();\n }\n\n public onOptionChange(): void {\n this.emitConfigChanged();\n }\n\n public toggleOptions(): void {\n this.showOptions = !this.showOptions;\n }\n}\n","<!-- Artifact Config Panel - Compact layout with tree dropdown and collapsible sections -->\n<div class=\"config-panel config-panel--compact\">\n <!-- Artifact Selection (Primary) -->\n <div class=\"form-group\">\n <label>\n <i class=\"fa-solid fa-cube\"></i>\n Select Artifact\n <span class=\"required\">*</span>\n </label>\n <mj-tree-dropdown\n #artifactDropdown\n [BranchConfig]=\"CollectionConfig\"\n [LeafConfig]=\"ArtifactLeafConfig\"\n [Value]=\"ArtifactIdAsKey\"\n [SelectableTypes]=\"'leaf'\"\n [SelectionMode]=\"'single'\"\n [Placeholder]=\"'Search or browse artifacts...'\"\n [EnableSearch]=\"true\"\n (SelectionChange)=\"onArtifactSelection($event)\"\n [class.error]=\"artifactError\">\n </mj-tree-dropdown>\n @if (artifactError) {\n <span class=\"form-error\">{{ artifactError }}</span>\n }\n @if (!artifactError && !artifactId) {\n <span class=\"form-hint\">\n Browse collections or search to find an artifact\n </span>\n }\n @if (!artifactError && artifactId) {\n <span class=\"form-hint form-hint--selected\">\n <i class=\"fa-solid fa-check\"></i>\n Selected: {{ artifactName }}\n </span>\n }\n </div>\n\n <!-- Version Selection (Available only after artifact is selected) -->\n @if (artifactId) {\n <div class=\"form-group\">\n <label for=\"versionSelect\">\n <i class=\"fa-solid fa-code-branch\"></i>\n Version\n </label>\n <div class=\"version-select-wrapper\">\n @if (!isLoadingVersions && versions.length > 0) {\n <select\n id=\"versionSelect\"\n [(ngModel)]=\"versionNumber\"\n (change)=\"onVersionChange()\"\n class=\"form-select\">\n @for (v of versions; track v) {\n <option [ngValue]=\"v.VersionNumber\">\n v{{ v.VersionNumber }} - {{ v.__mj_CreatedAt | date:'short' }}\n </option>\n }\n </select>\n }\n @if (isLoadingVersions) {\n <span class=\"form-hint\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Loading versions...\n </span>\n }\n @if (!isLoadingVersions && versions.length === 0) {\n <span class=\"form-hint\">\n No versions available\n </span>\n }\n </div>\n @if (versions.length > 0) {\n <span class=\"form-hint\">\n Select which version to display (latest is default)\n </span>\n }\n </div>\n }\n\n <!-- Title (Optional) -->\n <div class=\"form-group\">\n <label for=\"partTitle\">\n <i class=\"fa-solid fa-heading\"></i>\n Part Title\n <span class=\"optional-tag\">(optional)</span>\n </label>\n <input\n type=\"text\"\n id=\"partTitle\"\n [(ngModel)]=\"title\"\n (input)=\"onTitleChange()\"\n [placeholder]=\"artifactName ? 'Default: ' + artifactName : 'Enter a custom title'\"\n class=\"form-input\">\n <span class=\"form-hint\">Leave empty to use artifact name as title</span>\n </div>\n\n <!-- Display Options (Collapsible) -->\n <div class=\"collapsible-section\">\n <button\n type=\"button\"\n class=\"collapsible-header\"\n (click)=\"toggleOptions()\"\n [attr.aria-expanded]=\"showOptions\">\n <span class=\"collapsible-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Display Options\n </span>\n <i class=\"collapsible-chevron fa-solid\"\n [class.fa-chevron-down]=\"!showOptions\"\n [class.fa-chevron-up]=\"showOptions\"></i>\n </button>\n\n @if (showOptions) {\n <div class=\"collapsible-content\">\n <div class=\"checkbox-group checkbox-group--compact\">\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showHeader\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Header</span>\n </label>\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showTabs\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Tabs</span>\n </label>\n <label class=\"checkbox-option checkbox-option--compact\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"showMetadata\"\n (change)=\"onOptionChange()\">\n <span class=\"checkbox-mark\"></span>\n <span class=\"checkbox-label\">Show Metadata</span>\n </label>\n </div>\n </div>\n }\n </div>\n</div>\n"]}
@@ -1,5 +1,6 @@
1
1
  import { EventEmitter, ChangeDetectorRef } from '@angular/core';
2
2
  import { MJDashboardPartTypeEntity } from '@memberjunction/core-entities';
3
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
3
4
  import { PanelConfig, DashboardPanel } from '../models/dashboard-types';
4
5
  import * as i0 from "@angular/core";
5
6
  /**
@@ -28,7 +29,7 @@ export interface ConfigPanelResult {
28
29
  *
29
30
  * Subclasses are registered with @RegisterClass and instantiated via ClassFactory.
30
31
  */
31
- export declare abstract class BaseConfigPanel {
32
+ export declare abstract class BaseConfigPanel extends BaseAngularComponent {
32
33
  protected cdr: ChangeDetectorRef;
33
34
  /** The part type being configured */
34
35
  partType: MJDashboardPartTypeEntity | null;
@@ -1 +1 @@
1
- {"version":3,"file":"base-config-panel.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/base-config-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,iBAAiB,EAAa,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;;AAExE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sCAAsC;IACtC,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,8BACsB,eAAe;IA0BrB,SAAS,CAAC,GAAG,EAAE,iBAAiB;IAzB5C,qCAAqC;IAC5B,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAQ;IAE3D,8DAA8D;IACrD,KAAK,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE7C,wDAAwD;IACxD,IACI,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAKnC;IACD,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAE/B;IACD,OAAO,CAAC,OAAO,CAA4B;IAE3C;;;OAGG;IACO,aAAa,kCAAyC;gBAE1C,GAAG,EAAE,iBAAiB;IAE5C;;;OAGG;aACa,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAEhE;;OAEG;aACa,WAAW,IAAI,WAAW;IAE1C;;;OAGG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAIvD;;OAEG;aACa,QAAQ,IAAI,MAAM;IAElC;;OAEG;aACa,eAAe,IAAI,MAAM;IAEzC;;OAEG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B;;;OAGG;IACI,SAAS,IAAI,iBAAiB;IAWrC;;;OAGG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;yCA1FjB,eAAe;2CAAf,eAAe;CA6FpC"}
1
+ {"version":3,"file":"base-config-panel.d.ts","sourceRoot":"","sources":["../../../src/lib/config-panels/base-config-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,iBAAiB,EAAa,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;;AAExE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,sCAAsC;IACtC,MAAM,EAAE,WAAW,CAAC;IACpB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,8BACsB,eAAgB,SAAQ,oBAAoB;IA0BlD,SAAS,CAAC,GAAG,EAAE,iBAAiB;IAzB5C,qCAAqC;IAC5B,QAAQ,EAAE,yBAAyB,GAAG,IAAI,CAAQ;IAE3D,8DAA8D;IACrD,KAAK,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE7C,wDAAwD;IACxD,IACI,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,EAKnC;IACD,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAE/B;IACD,OAAO,CAAC,OAAO,CAA4B;IAE3C;;;OAGG;IACO,aAAa,kCAAyC;gBAE1C,GAAG,EAAE,iBAAiB;IAI5C;;;OAGG;aACa,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAEhE;;OAEG;aACa,WAAW,IAAI,WAAW;IAE1C;;;OAGG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAIvD;;OAEG;aACa,QAAQ,IAAI,MAAM;IAElC;;OAEG;aACa,eAAe,IAAI,MAAM;IAEzC;;OAEG;IACI,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,cAAc,IAAI,MAAM;IAI/B;;;OAGG;IACI,SAAS,IAAI,iBAAiB;IAWrC;;;OAGG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;yCA5FjB,eAAe;2CAAf,eAAe;CA+FpC"}
@@ -1,4 +1,5 @@
1
1
  import { Input, Output, EventEmitter, Directive } from '@angular/core';
2
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
2
3
  import * as i0 from "@angular/core";
3
4
  /**
4
5
  * Base class for config panels.
@@ -11,7 +12,7 @@ import * as i0 from "@angular/core";
11
12
  *
12
13
  * Subclasses are registered with @RegisterClass and instantiated via ClassFactory.
13
14
  */
14
- export class BaseConfigPanel {
15
+ export class BaseConfigPanel extends BaseAngularComponent {
15
16
  cdr;
16
17
  /** The part type being configured */
17
18
  partType = null;
@@ -34,6 +35,7 @@ export class BaseConfigPanel {
34
35
  */
35
36
  configChanged = new EventEmitter();
36
37
  constructor(cdr) {
38
+ super();
37
39
  this.cdr = cdr;
38
40
  }
39
41
  /**
@@ -77,7 +79,7 @@ export class BaseConfigPanel {
77
79
  this.configChanged.emit(this.getResult());
78
80
  }
79
81
  static ɵfac = function BaseConfigPanel_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || BaseConfigPanel)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
80
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseConfigPanel, inputs: { partType: "partType", panel: "panel", config: "config" }, outputs: { configChanged: "configChanged" } });
82
+ static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: BaseConfigPanel, inputs: { partType: "partType", panel: "panel", config: "config" }, outputs: { configChanged: "configChanged" }, features: [i0.ɵɵInheritDefinitionFeature] });
81
83
  }
82
84
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseConfigPanel, [{
83
85
  type: Directive
@@ -1 +1 @@
1
- {"version":3,"file":"base-config-panel.js","sourceRoot":"","sources":["../../../src/lib/config-panels/base-config-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,SAAS,EAAE,MAAM,eAAe,CAAC;;AAoB1F;;;;;;;;;;GAUG;AAEH,MAAM,OAAgB,eAAe;IA0BX;IAzBtB,qCAAqC;IAC5B,QAAQ,GAAqC,IAAI,CAAC;IAE3D,8DAA8D;IACrD,KAAK,GAA0B,IAAI,CAAC;IAE7C,wDAAwD;IACxD,IACI,MAAM,CAAC,KAAyB;QAChC,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACO,OAAO,GAAuB,IAAI,CAAC;IAE3C;;;OAGG;IACO,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;IAEhE,YAAsB,GAAsB;QAAtB,QAAG,GAAH,GAAG,CAAmB;IAAG,CAAC;IAahD;;;OAGG;IACI,QAAQ;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IAYD;;OAEG;IACI,OAAO;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,0BAA0B,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,UAAU,CAAC,KAAK;YACzB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC;IACN,CAAC;IAED;;;OAGG;IACO,iBAAiB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;yGA5FiB,eAAe;6DAAf,eAAe;;iFAAf,eAAe;cADpC,SAAS;;kBAGL,KAAK;;kBAGL,KAAK;;kBAGL,KAAK;;kBAgBL,MAAM","sourcesContent":["import { Input, Output, EventEmitter, ChangeDetectorRef, Directive } from '@angular/core';\nimport { MJDashboardPartTypeEntity } from '@memberjunction/core-entities';\nimport { PanelConfig, DashboardPanel } from '../models/dashboard-types';\n\n/**\n * Result emitted when configuration changes or is validated\n */\nexport interface ConfigPanelResult {\n /** The current panel configuration */\n config: PanelConfig;\n /** Current title */\n title: string;\n /** Current icon */\n icon?: string;\n /** Whether the configuration is valid */\n isValid: boolean;\n /** Validation errors (if any) */\n errors: string[];\n}\n\n/**\n * Base class for config panels.\n * Config panels contain ONLY the form content - no dialog chrome (header, footer, buttons).\n * They communicate with their container via the configChanged output.\n *\n * This allows the same panel to be used:\n * 1. Embedded in the add-panel-dialog (step 2)\n * 2. Wrapped in a dialog for editing existing panels\n *\n * Subclasses are registered with @RegisterClass and instantiated via ClassFactory.\n */\n@Directive()\nexport abstract class BaseConfigPanel {\n /** The part type being configured */\n @Input() partType: MJDashboardPartTypeEntity | null = null;\n\n /** The existing panel (for editing) or null (for creating) */\n @Input() panel: DashboardPanel | null = null;\n\n /** The initial configuration to populate form fields */\n @Input()\n set config(value: PanelConfig | null) {\n if (value !== this._config) {\n this._config = value;\n this.initFromConfig(value);\n }\n }\n get config(): PanelConfig | null {\n return this._config;\n }\n private _config: PanelConfig | null = null;\n\n /**\n * Emitted when configuration changes.\n * Container should listen to this to update save button state, etc.\n */\n @Output() configChanged = new EventEmitter<ConfigPanelResult>();\n\n constructor(protected cdr: ChangeDetectorRef) {}\n\n /**\n * Initialize form fields from a configuration.\n * Called when config input changes.\n */\n public abstract initFromConfig(config: PanelConfig | null): void;\n\n /**\n * Build the configuration object from current form values.\n */\n public abstract buildConfig(): PanelConfig;\n\n /**\n * Validate the current form values.\n * @returns Validation result with valid flag and error messages\n */\n public validate(): { valid: boolean; errors: string[] } {\n return { valid: true, errors: [] };\n }\n\n /**\n * Get the current title for the panel.\n */\n public abstract getTitle(): string;\n\n /**\n * Get the default title for this part type.\n */\n public abstract getDefaultTitle(): string;\n\n /**\n * Get the current icon for the panel.\n */\n public getIcon(): string {\n return this.panel?.icon || this.getDefaultIcon();\n }\n\n /**\n * Get the default icon for this part type.\n */\n public getDefaultIcon(): string {\n return this.partType?.Icon || 'fa-solid fa-puzzle-piece';\n }\n\n /**\n * Get the current configuration result.\n * Called by container to get the final config when saving.\n */\n public getResult(): ConfigPanelResult {\n const validation = this.validate();\n return {\n config: this.buildConfig(),\n title: this.getTitle(),\n icon: this.getIcon(),\n isValid: validation.valid,\n errors: validation.errors\n };\n }\n\n /**\n * Emit configuration changed event.\n * Call this whenever form values change.\n */\n protected emitConfigChanged(): void {\n this.configChanged.emit(this.getResult());\n }\n}\n"]}
1
+ {"version":3,"file":"base-config-panel.js","sourceRoot":"","sources":["../../../src/lib/config-panels/base-config-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAqB,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAmBrE;;;;;;;;;;GAUG;AAEH,MAAM,OAAgB,eAAgB,SAAQ,oBAAoB;IA0BxC;IAzBtB,qCAAqC;IAC5B,QAAQ,GAAqC,IAAI,CAAC;IAE3D,8DAA8D;IACrD,KAAK,GAA0B,IAAI,CAAC;IAE7C,wDAAwD;IACxD,IACI,MAAM,CAAC,KAAyB;QAChC,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACO,OAAO,GAAuB,IAAI,CAAC;IAE3C;;;OAGG;IACO,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;IAEhE,YAAsB,GAAsB;QACxC,KAAK,EAAE,CAAC;QADU,QAAG,GAAH,GAAG,CAAmB;IAE5C,CAAC;IAaD;;;OAGG;IACI,QAAQ;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IAYD;;OAEG;IACI,OAAO;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,cAAc;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,0BAA0B,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACI,SAAS;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;YACpB,OAAO,EAAE,UAAU,CAAC,KAAK;YACzB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC;IACN,CAAC;IAED;;;OAGG;IACO,iBAAiB;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;yGA9FiB,eAAe;6DAAf,eAAe;;iFAAf,eAAe;cADpC,SAAS;;kBAGL,KAAK;;kBAGL,KAAK;;kBAGL,KAAK;;kBAgBL,MAAM","sourcesContent":["import { Input, Output, EventEmitter, ChangeDetectorRef, Directive } from '@angular/core';\nimport { MJDashboardPartTypeEntity } from '@memberjunction/core-entities';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { PanelConfig, DashboardPanel } from '../models/dashboard-types';\n\n/**\n * Result emitted when configuration changes or is validated\n */\nexport interface ConfigPanelResult {\n /** The current panel configuration */\n config: PanelConfig;\n /** Current title */\n title: string;\n /** Current icon */\n icon?: string;\n /** Whether the configuration is valid */\n isValid: boolean;\n /** Validation errors (if any) */\n errors: string[];\n}\n\n/**\n * Base class for config panels.\n * Config panels contain ONLY the form content - no dialog chrome (header, footer, buttons).\n * They communicate with their container via the configChanged output.\n *\n * This allows the same panel to be used:\n * 1. Embedded in the add-panel-dialog (step 2)\n * 2. Wrapped in a dialog for editing existing panels\n *\n * Subclasses are registered with @RegisterClass and instantiated via ClassFactory.\n */\n@Directive()\nexport abstract class BaseConfigPanel extends BaseAngularComponent {\n /** The part type being configured */\n @Input() partType: MJDashboardPartTypeEntity | null = null;\n\n /** The existing panel (for editing) or null (for creating) */\n @Input() panel: DashboardPanel | null = null;\n\n /** The initial configuration to populate form fields */\n @Input()\n set config(value: PanelConfig | null) {\n if (value !== this._config) {\n this._config = value;\n this.initFromConfig(value);\n }\n }\n get config(): PanelConfig | null {\n return this._config;\n }\n private _config: PanelConfig | null = null;\n\n /**\n * Emitted when configuration changes.\n * Container should listen to this to update save button state, etc.\n */\n @Output() configChanged = new EventEmitter<ConfigPanelResult>();\n\n constructor(protected cdr: ChangeDetectorRef) {\n super();\n }\n\n /**\n * Initialize form fields from a configuration.\n * Called when config input changes.\n */\n public abstract initFromConfig(config: PanelConfig | null): void;\n\n /**\n * Build the configuration object from current form values.\n */\n public abstract buildConfig(): PanelConfig;\n\n /**\n * Validate the current form values.\n * @returns Validation result with valid flag and error messages\n */\n public validate(): { valid: boolean; errors: string[] } {\n return { valid: true, errors: [] };\n }\n\n /**\n * Get the current title for the panel.\n */\n public abstract getTitle(): string;\n\n /**\n * Get the default title for this part type.\n */\n public abstract getDefaultTitle(): string;\n\n /**\n * Get the current icon for the panel.\n */\n public getIcon(): string {\n return this.panel?.icon || this.getDefaultIcon();\n }\n\n /**\n * Get the default icon for this part type.\n */\n public getDefaultIcon(): string {\n return this.partType?.Icon || 'fa-solid fa-puzzle-piece';\n }\n\n /**\n * Get the current configuration result.\n * Called by container to get the final config when saving.\n */\n public getResult(): ConfigPanelResult {\n const validation = this.validate();\n return {\n config: this.buildConfig(),\n title: this.getTitle(),\n icon: this.getIcon(),\n isValid: validation.valid,\n errors: validation.errors\n };\n }\n\n /**\n * Emit configuration changed event.\n * Call this whenever form values change.\n */\n protected emitConfigChanged(): void {\n this.configChanged.emit(this.getResult());\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter, OnDestroy, ElementRef, ChangeDetectorRef, ApplicationRef, Injector, EnvironmentInjector } from '@angular/core';
2
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
2
3
  import { MJDashboardEntity, MJDashboardPartTypeEntity, MJDashboardCategoryEntity } from '@memberjunction/core-entities';
3
4
  import { BreadcrumbNavigateEvent } from '../breadcrumb/dashboard-breadcrumb.component';
4
5
  import { DashboardConfig, DashboardPanel, PanelConfig, PanelInteractionEvent, DashboardConfigChangedEvent, DashboardNavRequestEvent } from '../models/dashboard-types';
@@ -11,7 +12,7 @@ import * as i0 from "@angular/core";
11
12
  * This component is GENERIC and has no routing dependencies.
12
13
  * Navigation events are bubbled up for the parent component to handle.
13
14
  */
14
- export declare class DashboardViewerComponent implements OnDestroy {
15
+ export declare class DashboardViewerComponent extends BaseAngularComponent implements OnDestroy {
15
16
  private readonly cdr;
16
17
  private readonly appRef;
17
18
  private readonly injector;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-viewer.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-viewer/dashboard-viewer.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-viewer.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard-viewer/dashboard-viewer.component.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { Component, Input, Output, EventEmitter, ViewChild, createComponent, ViewEncapsulation } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { takeUntil } from 'rxjs/operators';
4
- import { Metadata } from '@memberjunction/core';
5
4
  import { MJGlobal, UUIDsEqual } from '@memberjunction/global';
5
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
6
6
  import { DashboardEngine } from '@memberjunction/core-entities';
7
7
  import { createDefaultDashboardConfig, generatePanelId, extractPanelsFromLayout, findPanelInLayout } from '../models/dashboard-types';
8
8
  import { GoldenLayoutWrapperService } from '../services/golden-layout-wrapper.service';
@@ -138,7 +138,7 @@ function DashboardViewerComponent_Conditional_6_Template(rf, ctx) { if (rf & 1)
138
138
  * This component is GENERIC and has no routing dependencies.
139
139
  * Navigation events are bubbled up for the parent component to handle.
140
140
  */
141
- export class DashboardViewerComponent {
141
+ export class DashboardViewerComponent extends BaseAngularComponent {
142
142
  cdr;
143
143
  appRef;
144
144
  injector;
@@ -265,6 +265,7 @@ export class DashboardViewerComponent {
265
265
  // Constructor
266
266
  // ========================================
267
267
  constructor(cdr, appRef, injector, environmentInjector) {
268
+ super();
268
269
  this.cdr = cdr;
269
270
  this.appRef = appRef;
270
271
  this.injector = injector;
@@ -507,8 +508,8 @@ export class DashboardViewerComponent {
507
508
  try {
508
509
  this.isLoading = true;
509
510
  this.cdr.detectChanges();
510
- const md = new Metadata();
511
- const dashboard = await md.GetEntityObject('MJ: Dashboards');
511
+ const p = this.ProviderToUse;
512
+ const dashboard = await p.GetEntityObject('MJ: Dashboards', p.CurrentUser);
512
513
  const loaded = await dashboard.Load(id);
513
514
  if (loaded) {
514
515
  this._dashboard = dashboard;
@@ -1058,7 +1059,7 @@ export class DashboardViewerComponent {
1058
1059
  } if (rf & 2) {
1059
1060
  let _t;
1060
1061
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.layoutContainer = _t.first);
1061
- } }, inputs: { dashboard: "dashboard", dashboardId: "dashboardId", isEditing: "isEditing", showToolbar: "showToolbar", autoSave: "autoSave", showBreadcrumb: "showBreadcrumb", showOpenInTabButton: "showOpenInTabButton", showEditButton: "showEditButton", Categories: "Categories" }, outputs: { configChanged: "configChanged", navigationRequested: "navigationRequested", panelInteraction: "panelInteraction", dashboardSaved: "dashboardSaved", error: "error", editModeChanged: "editModeChanged", breadcrumbNavigate: "breadcrumbNavigate", openInTab: "openInTab" }, standalone: false, decls: 7, vars: 8, consts: [["layoutContainer", ""], [1, "dashboard-viewer"], ["Size", "large", "RootIcon", "fa-solid fa-gauge-high", "RootLabel", "Dashboards", 3, "Categories", "CurrentCategoryId", "CurrentDashboard", "ShowDashboardName", "AllowDragDrop"], [1, "dashboard-toolbar"], [1, "loading-overlay"], [1, "layout-container"], [1, "empty-state"], ["Size", "large", "RootIcon", "fa-solid fa-gauge-high", "RootLabel", "Dashboards", 3, "Navigate", "Categories", "CurrentCategoryId", "CurrentDashboard", "ShowDashboardName", "AllowDragDrop"], [1, "toolbar-left"], [1, "dashboard-title"], [1, "toolbar-center"], [1, "unsaved-indicator"], [1, "toolbar-right"], ["title", "Open in its own tab", 1, "toolbar-button"], [1, "toolbar-button"], [1, "toolbar-button", 3, "active"], [1, "toolbar-button", "primary"], [1, "fa-solid", "fa-chart-line"], [1, "fa-solid", "fa-circle"], ["title", "Open in its own tab", 1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-up-right-from-square"], [1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-edit"], [1, "toolbar-button", "primary", 3, "click"], [1, "fa-solid", "fa-save"], ["text", "Loading dashboard..."], [1, "empty-icon"], [1, "fa-solid", "fa-layer-group"], [1, "add-part-button"], [1, "add-part-button", 3, "click"]], template: function DashboardViewerComponent_Template(rf, ctx) { if (rf & 1) {
1062
+ } }, inputs: { dashboard: "dashboard", dashboardId: "dashboardId", isEditing: "isEditing", showToolbar: "showToolbar", autoSave: "autoSave", showBreadcrumb: "showBreadcrumb", showOpenInTabButton: "showOpenInTabButton", showEditButton: "showEditButton", Categories: "Categories" }, outputs: { configChanged: "configChanged", navigationRequested: "navigationRequested", panelInteraction: "panelInteraction", dashboardSaved: "dashboardSaved", error: "error", editModeChanged: "editModeChanged", breadcrumbNavigate: "breadcrumbNavigate", openInTab: "openInTab" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 8, consts: [["layoutContainer", ""], [1, "dashboard-viewer"], ["Size", "large", "RootIcon", "fa-solid fa-gauge-high", "RootLabel", "Dashboards", 3, "Categories", "CurrentCategoryId", "CurrentDashboard", "ShowDashboardName", "AllowDragDrop"], [1, "dashboard-toolbar"], [1, "loading-overlay"], [1, "layout-container"], [1, "empty-state"], ["Size", "large", "RootIcon", "fa-solid fa-gauge-high", "RootLabel", "Dashboards", 3, "Navigate", "Categories", "CurrentCategoryId", "CurrentDashboard", "ShowDashboardName", "AllowDragDrop"], [1, "toolbar-left"], [1, "dashboard-title"], [1, "toolbar-center"], [1, "unsaved-indicator"], [1, "toolbar-right"], ["title", "Open in its own tab", 1, "toolbar-button"], [1, "toolbar-button"], [1, "toolbar-button", 3, "active"], [1, "toolbar-button", "primary"], [1, "fa-solid", "fa-chart-line"], [1, "fa-solid", "fa-circle"], ["title", "Open in its own tab", 1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-up-right-from-square"], [1, "toolbar-button", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-edit"], [1, "toolbar-button", "primary", 3, "click"], [1, "fa-solid", "fa-save"], ["text", "Loading dashboard..."], [1, "empty-icon"], [1, "fa-solid", "fa-layer-group"], [1, "add-part-button"], [1, "add-part-button", 3, "click"]], template: function DashboardViewerComponent_Template(rf, ctx) { if (rf & 1) {
1062
1063
  i0.ɵɵelementStart(0, "div", 1);
1063
1064
  i0.ɵɵconditionalCreate(1, DashboardViewerComponent_Conditional_1_Template, 1, 5, "mj-dashboard-breadcrumb", 2);
1064
1065
  i0.ɵɵconditionalCreate(2, DashboardViewerComponent_Conditional_2_Template, 10, 6, "div", 3);
@@ -1119,5 +1120,5 @@ export class DashboardViewerComponent {
1119
1120
  type: ViewChild,
1120
1121
  args: ['layoutContainer', { static: true }]
1121
1122
  }] }); })();
1122
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardViewerComponent, { className: "DashboardViewerComponent", filePath: "src/lib/dashboard-viewer/dashboard-viewer.component.ts", lineNumber: 55 }); })();
1123
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DashboardViewerComponent, { className: "DashboardViewerComponent", filePath: "src/lib/dashboard-viewer/dashboard-viewer.component.ts", lineNumber: 56 }); })();
1123
1124
  //# sourceMappingURL=dashboard-viewer.component.js.map