@memberjunction/ng-artifacts 5.43.0 → 5.44.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 (64) hide show
  1. package/README.md +6 -0
  2. package/dist/lib/artifacts.module.d.ts +28 -25
  3. package/dist/lib/artifacts.module.d.ts.map +1 -1
  4. package/dist/lib/artifacts.module.js +22 -2
  5. package/dist/lib/artifacts.module.js.map +1 -1
  6. package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact-version-history.component.js +26 -29
  8. package/dist/lib/components/artifact-version-history.component.js.map +1 -1
  9. package/dist/lib/components/artifact-viewer-panel.component.d.ts +3 -0
  10. package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
  11. package/dist/lib/components/artifact-viewer-panel.component.js +198 -112
  12. package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
  13. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +11 -0
  14. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
  15. package/dist/lib/components/plugins/audio-artifact-viewer.component.js +37 -12
  16. package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
  17. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts.map +1 -1
  18. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +40 -51
  19. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
  20. package/dist/lib/components/plugins/data-artifact-viewer.component.js +27 -47
  21. package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
  22. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +89 -95
  23. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
  24. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +227 -0
  25. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -0
  26. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +630 -0
  27. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -0
  28. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +11 -0
  29. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
  30. package/dist/lib/components/plugins/video-artifact-viewer.component.js +37 -12
  31. package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
  32. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +18 -4
  33. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
  34. package/dist/lib/components/previews/audio-artifact-preview.component.js +54 -21
  35. package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
  36. package/dist/lib/components/previews/video-artifact-preview.component.d.ts +19 -5
  37. package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
  38. package/dist/lib/components/previews/video-artifact-preview.component.js +54 -22
  39. package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
  40. package/dist/public-api.d.ts +1 -0
  41. package/dist/public-api.d.ts.map +1 -1
  42. package/dist/public-api.js +1 -0
  43. package/dist/public-api.js.map +1 -1
  44. package/package.json +21 -18
  45. package/dist/__tests__/exports.test.d.ts +0 -2
  46. package/dist/__tests__/exports.test.d.ts.map +0 -1
  47. package/dist/__tests__/exports.test.js +0 -17
  48. package/dist/__tests__/exports.test.js.map +0 -1
  49. package/dist/__tests__/image-artifact-viewer.test.d.ts +0 -2
  50. package/dist/__tests__/image-artifact-viewer.test.d.ts.map +0 -1
  51. package/dist/__tests__/image-artifact-viewer.test.js +0 -62
  52. package/dist/__tests__/image-artifact-viewer.test.js.map +0 -1
  53. package/dist/__tests__/index.test.d.ts +0 -2
  54. package/dist/__tests__/index.test.d.ts.map +0 -1
  55. package/dist/__tests__/index.test.js +0 -7
  56. package/dist/__tests__/index.test.js.map +0 -1
  57. package/dist/lib/__tests__/artifact-snapshots.test.d.ts +0 -2
  58. package/dist/lib/__tests__/artifact-snapshots.test.d.ts.map +0 -1
  59. package/dist/lib/__tests__/artifact-snapshots.test.js +0 -155
  60. package/dist/lib/__tests__/artifact-snapshots.test.js.map +0 -1
  61. package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts +0 -2
  62. package/dist/lib/__tests__/interactive-form-apply.service.test.d.ts.map +0 -1
  63. package/dist/lib/__tests__/interactive-form-apply.service.test.js +0 -211
  64. package/dist/lib/__tests__/interactive-form-apply.service.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data-requirements-viewer.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.ts","../../../../../src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { ComponentDataRequirements, ComponentEntityDataRequirement, ComponentQueryDataRequirement, SimpleEntityFieldInfo } from '@memberjunction/interactive-component-types';\n\n/**\n * Beautiful viewer component for ComponentDataRequirements.\n * Displays entities, queries, and fields in an organized, visually appealing layout.\n */\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-viewer',\n templateUrl: './data-requirements-viewer.component.html',\n styleUrls: ['./data-requirements-viewer.component.css']\n})\nexport class DataRequirementsViewerComponent {\n @Input() dataRequirements: ComponentDataRequirements | null = null;\n\n // Track expanded state for entities and queries\n expandedEntities: Set<string> = new Set();\n expandedQueries: Set<string> = new Set();\n\n get hasData(): boolean {\n return !!this.dataRequirements;\n }\n\n get mode(): string {\n return this.dataRequirements?.mode || 'views';\n }\n\n get modeLabel(): string {\n switch (this.mode) {\n case 'views': return 'Entity Views';\n case 'queries': return 'Stored Queries';\n case 'hybrid': return 'Hybrid (Views + Queries)';\n default: return this.mode;\n }\n }\n\n get modeIcon(): string {\n switch (this.mode) {\n case 'views': return 'fa-table';\n case 'queries': return 'fa-database';\n case 'hybrid': return 'fa-layer-group';\n default: return 'fa-database';\n }\n }\n\n get entities(): ComponentEntityDataRequirement[] {\n return this.dataRequirements?.entities || [];\n }\n\n get queries(): ComponentQueryDataRequirement[] {\n return this.dataRequirements?.queries || [];\n }\n\n get description(): string {\n return this.dataRequirements?.description || '';\n }\n\n get totalFieldCount(): number {\n let count = 0;\n for (const entity of this.entities) {\n count += entity.fieldMetadata?.length || 0;\n }\n for (const query of this.queries) {\n count += query.fields?.length || 0;\n }\n return count;\n }\n\n toggleEntity(entityName: string): void {\n if (this.expandedEntities.has(entityName)) {\n this.expandedEntities.delete(entityName);\n } else {\n this.expandedEntities.add(entityName);\n }\n }\n\n toggleQuery(queryKey: string): void {\n if (this.expandedQueries.has(queryKey)) {\n this.expandedQueries.delete(queryKey);\n } else {\n this.expandedQueries.add(queryKey);\n }\n }\n\n isEntityExpanded(entityName: string): boolean {\n return this.expandedEntities.has(entityName);\n }\n\n isQueryExpanded(queryKey: string): boolean {\n return this.expandedQueries.has(queryKey);\n }\n\n getQueryKey(query: ComponentQueryDataRequirement): string {\n return `${query.categoryPath}/${query.name}`;\n }\n\n getPermissionIcon(permission: string): string {\n switch (permission) {\n case 'read': return 'fa-eye';\n case 'create': return 'fa-plus';\n case 'update': return 'fa-pen';\n case 'delete': return 'fa-trash';\n default: return 'fa-question';\n }\n }\n\n getPermissionColor(permission: string): string {\n switch (permission) {\n case 'read': return '#2196F3';\n case 'create': return '#4CAF50';\n case 'update': return '#FF9800';\n case 'delete': return '#f44336';\n default: return '#9E9E9E';\n }\n }\n\n getFieldTypeIcon(type: string): string {\n const lowerType = (type || '').toLowerCase();\n if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {\n return 'fa-hashtag';\n }\n if (lowerType.includes('date') || lowerType.includes('time')) {\n return 'fa-calendar';\n }\n if (lowerType.includes('bit') || lowerType.includes('bool')) {\n return 'fa-toggle-on';\n }\n if (lowerType.includes('uniqueidentifier') || lowerType.includes('guid')) {\n return 'fa-fingerprint';\n }\n if (lowerType.includes('text') || lowerType.includes('varchar') || lowerType.includes('char') || lowerType.includes('nvarchar')) {\n return 'fa-font';\n }\n if (lowerType.includes('binary') || lowerType.includes('image') || lowerType.includes('varbinary')) {\n return 'fa-file-image';\n }\n return 'fa-circle';\n }\n\n getFieldTypeColor(type: string): string {\n const lowerType = (type || '').toLowerCase();\n if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {\n return '#9C27B0';\n }\n if (lowerType.includes('date') || lowerType.includes('time')) {\n return '#FF5722';\n }\n if (lowerType.includes('bit') || lowerType.includes('bool')) {\n return '#009688';\n }\n if (lowerType.includes('uniqueidentifier') || lowerType.includes('guid')) {\n return '#607D8B';\n }\n if (lowerType.includes('text') || lowerType.includes('varchar') || lowerType.includes('char') || lowerType.includes('nvarchar')) {\n return '#2196F3';\n }\n return '#9E9E9E';\n }\n\n formatFieldType(type: string): string {\n return type || 'unknown';\n }\n\n getFieldUsageTags(field: SimpleEntityFieldInfo, entity: ComponentEntityDataRequirement): string[] {\n const tags: string[] = [];\n if (field.isPrimaryKey) {\n tags.push('PK');\n }\n if (entity.displayFields?.includes(field.name)) {\n tags.push('Display');\n }\n if (entity.filterFields?.includes(field.name)) {\n tags.push('Filter');\n }\n if (entity.sortFields?.includes(field.name)) {\n tags.push('Sort');\n }\n return tags;\n }\n\n getTagColor(tag: string): string {\n switch (tag) {\n case 'PK': return '#E91E63';\n case 'Display': return '#2196F3';\n case 'Filter': return '#FF9800';\n case 'Sort': return '#9C27B0';\n default: return '#9E9E9E';\n }\n }\n}\n","<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <div class=\"empty-state\">\n <i class=\"fas fa-database\"></i>\n <h3>No Data Requirements</h3>\n <p>This component doesn't have any data requirements defined.</p>\n </div>\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n @if (entities.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n }\n @if (queries.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '—' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '—' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n"]}
1
+ {"version":3,"file":"data-requirements-viewer.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.ts","../../../../../src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { ComponentDataRequirements, ComponentEntityDataRequirement, ComponentQueryDataRequirement, SimpleEntityFieldInfo } from '@memberjunction/interactive-component-types';\n\n/**\n * Beautiful viewer component for ComponentDataRequirements.\n * Displays entities, queries, and fields in an organized, visually appealing layout.\n */\n@Component({\n standalone: false,\n selector: 'mj-data-requirements-viewer',\n templateUrl: './data-requirements-viewer.component.html',\n styleUrls: ['./data-requirements-viewer.component.css']\n})\nexport class DataRequirementsViewerComponent {\n @Input() dataRequirements: ComponentDataRequirements | null = null;\n\n // Track expanded state for entities and queries\n expandedEntities: Set<string> = new Set();\n expandedQueries: Set<string> = new Set();\n\n get hasData(): boolean {\n return !!this.dataRequirements;\n }\n\n get mode(): string {\n return this.dataRequirements?.mode || 'views';\n }\n\n get modeLabel(): string {\n switch (this.mode) {\n case 'views': return 'Entity Views';\n case 'queries': return 'Stored Queries';\n case 'hybrid': return 'Hybrid (Views + Queries)';\n default: return this.mode;\n }\n }\n\n get modeIcon(): string {\n switch (this.mode) {\n case 'views': return 'fa-table';\n case 'queries': return 'fa-database';\n case 'hybrid': return 'fa-layer-group';\n default: return 'fa-database';\n }\n }\n\n get entities(): ComponentEntityDataRequirement[] {\n return this.dataRequirements?.entities || [];\n }\n\n get queries(): ComponentQueryDataRequirement[] {\n return this.dataRequirements?.queries || [];\n }\n\n get description(): string {\n return this.dataRequirements?.description || '';\n }\n\n get totalFieldCount(): number {\n let count = 0;\n for (const entity of this.entities) {\n count += entity.fieldMetadata?.length || 0;\n }\n for (const query of this.queries) {\n count += query.fields?.length || 0;\n }\n return count;\n }\n\n toggleEntity(entityName: string): void {\n if (this.expandedEntities.has(entityName)) {\n this.expandedEntities.delete(entityName);\n } else {\n this.expandedEntities.add(entityName);\n }\n }\n\n toggleQuery(queryKey: string): void {\n if (this.expandedQueries.has(queryKey)) {\n this.expandedQueries.delete(queryKey);\n } else {\n this.expandedQueries.add(queryKey);\n }\n }\n\n isEntityExpanded(entityName: string): boolean {\n return this.expandedEntities.has(entityName);\n }\n\n isQueryExpanded(queryKey: string): boolean {\n return this.expandedQueries.has(queryKey);\n }\n\n getQueryKey(query: ComponentQueryDataRequirement): string {\n return `${query.categoryPath}/${query.name}`;\n }\n\n getPermissionIcon(permission: string): string {\n switch (permission) {\n case 'read': return 'fa-eye';\n case 'create': return 'fa-plus';\n case 'update': return 'fa-pen';\n case 'delete': return 'fa-trash';\n default: return 'fa-question';\n }\n }\n\n getPermissionColor(permission: string): string {\n switch (permission) {\n case 'read': return '#2196F3';\n case 'create': return '#4CAF50';\n case 'update': return '#FF9800';\n case 'delete': return '#f44336';\n default: return '#9E9E9E';\n }\n }\n\n getFieldTypeIcon(type: string): string {\n const lowerType = (type || '').toLowerCase();\n if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {\n return 'fa-hashtag';\n }\n if (lowerType.includes('date') || lowerType.includes('time')) {\n return 'fa-calendar';\n }\n if (lowerType.includes('bit') || lowerType.includes('bool')) {\n return 'fa-toggle-on';\n }\n if (lowerType.includes('uniqueidentifier') || lowerType.includes('guid')) {\n return 'fa-fingerprint';\n }\n if (lowerType.includes('text') || lowerType.includes('varchar') || lowerType.includes('char') || lowerType.includes('nvarchar')) {\n return 'fa-font';\n }\n if (lowerType.includes('binary') || lowerType.includes('image') || lowerType.includes('varbinary')) {\n return 'fa-file-image';\n }\n return 'fa-circle';\n }\n\n getFieldTypeColor(type: string): string {\n const lowerType = (type || '').toLowerCase();\n if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {\n return '#9C27B0';\n }\n if (lowerType.includes('date') || lowerType.includes('time')) {\n return '#FF5722';\n }\n if (lowerType.includes('bit') || lowerType.includes('bool')) {\n return '#009688';\n }\n if (lowerType.includes('uniqueidentifier') || lowerType.includes('guid')) {\n return '#607D8B';\n }\n if (lowerType.includes('text') || lowerType.includes('varchar') || lowerType.includes('char') || lowerType.includes('nvarchar')) {\n return '#2196F3';\n }\n return '#9E9E9E';\n }\n\n formatFieldType(type: string): string {\n return type || 'unknown';\n }\n\n getFieldUsageTags(field: SimpleEntityFieldInfo, entity: ComponentEntityDataRequirement): string[] {\n const tags: string[] = [];\n if (field.isPrimaryKey) {\n tags.push('PK');\n }\n if (entity.displayFields?.includes(field.name)) {\n tags.push('Display');\n }\n if (entity.filterFields?.includes(field.name)) {\n tags.push('Filter');\n }\n if (entity.sortFields?.includes(field.name)) {\n tags.push('Sort');\n }\n return tags;\n }\n\n getTagColor(tag: string): string {\n switch (tag) {\n case 'PK': return '#E91E63';\n case 'Display': return '#2196F3';\n case 'Filter': return '#FF9800';\n case 'Sort': return '#9C27B0';\n default: return '#9E9E9E';\n }\n }\n}\n","<div class=\"data-requirements-viewer\">\n @if (!hasData) {\n <mj-empty-state\n Icon=\"fa-solid fa-database\"\n Title=\"No Data Requirements\"\n Message=\"This component doesn't have any data requirements defined.\"\n Size=\"compact\" />\n } @else {\n <!-- Header Summary -->\n <div class=\"summary-header\">\n <div class=\"mode-badge\">\n <i class=\"fas\" [ngClass]=\"modeIcon\"></i>\n <span>{{ modeLabel }}</span>\n </div>\n <div class=\"stats\">\n @if (entities.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ entities.length }}</span>\n <span class=\"stat-label\">{{ entities.length === 1 ? 'Entity' : 'Entities' }}</span>\n </div>\n }\n @if (queries.length > 0) {\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ queries.length }}</span>\n <span class=\"stat-label\">{{ queries.length === 1 ? 'Query' : 'Queries' }}</span>\n </div>\n }\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{ totalFieldCount }}</span>\n <span class=\"stat-label\">{{ totalFieldCount === 1 ? 'Field' : 'Fields' }}</span>\n </div>\n </div>\n </div>\n\n <!-- Description / Overview (supports markdown including mermaid diagrams) -->\n @if (description) {\n <div class=\"description-section\">\n <h4 class=\"description-title\">\n <i class=\"fas fa-info-circle\"></i>\n Overview\n </h4>\n <div class=\"description-content\">\n <mj-markdown [data]=\"description\"\n [enableCollapsibleHeadings]=\"false\"\n [enableLineNumbers]=\"false\"\n [enableSmartypants]=\"true\"\n [enableHtml]=\"true\"></mj-markdown>\n </div>\n </div>\n }\n\n <!-- Entities Section -->\n @if (entities.length > 0) {\n <div class=\"section entities-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-table\"></i>\n Entities\n </h3>\n <div class=\"cards-container\">\n @for (entity of entities; track entity.name) {\n <div class=\"data-card entity-card\" [class.expanded]=\"isEntityExpanded(entity.name)\">\n <div class=\"card-header\" (click)=\"toggleEntity(entity.name)\">\n <div class=\"card-title-row\">\n <div class=\"card-icon\">\n <i class=\"fas fa-table\"></i>\n </div>\n <div class=\"card-title-info\">\n <h4 class=\"card-title\">{{ entity.name }}</h4>\n @if (entity.description) {\n <p class=\"card-description\">{{ entity.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isEntityExpanded(entity.name) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n <div class=\"permissions-row\">\n @for (perm of entity.permissionLevelNeeded; track perm) {\n <span class=\"permission-badge\" [style.background-color]=\"getPermissionColor(perm)\">\n <i class=\"fas\" [ngClass]=\"getPermissionIcon(perm)\"></i>\n {{ perm }}\n </span>\n }\n </div>\n <span class=\"field-count\">{{ entity.fieldMetadata.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isEntityExpanded(entity.name)) {\n <div class=\"card-body\">\n @if (entity.usageContext) {\n <div class=\"usage-context\">\n <i class=\"fas fa-info-circle\"></i>\n <span>{{ entity.usageContext }}</span>\n </div>\n }\n\n <!-- Fields Table -->\n @if (entity.fieldMetadata && entity.fieldMetadata.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col tags-col\">Usage</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of entity.fieldMetadata; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n @if (!field.allowsNull) {\n <span class=\"required-indicator\" title=\"Required\">*</span>\n }\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col tags-col\">\n @for (tag of getFieldUsageTags(field, entity); track tag) {\n <span class=\"usage-tag\" [style.background-color]=\"getTagColor(tag)\">{{ tag }}</span>\n }\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '—' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Queries Section -->\n @if (queries.length > 0) {\n <div class=\"section queries-section\">\n <h3 class=\"section-title\">\n <i class=\"fas fa-database\"></i>\n Queries\n </h3>\n <div class=\"cards-container\">\n @for (query of queries; track getQueryKey(query)) {\n <div class=\"data-card query-card\" [class.expanded]=\"isQueryExpanded(getQueryKey(query))\">\n <div class=\"card-header\" (click)=\"toggleQuery(getQueryKey(query))\">\n <div class=\"card-title-row\">\n <div class=\"card-icon query-icon\">\n <i class=\"fas fa-code\"></i>\n </div>\n <div class=\"card-title-info\">\n <div class=\"title-with-badge\">\n <h4 class=\"card-title\">{{ query.name }}</h4>\n @if (query.isNew) {\n <span class=\"new-query-badge\" title=\"This query was newly created for this component\">\n <i class=\"fas fa-sparkles\"></i>\n NEW\n </span>\n }\n </div>\n <p class=\"card-path\">{{ query.categoryPath }}</p>\n @if (query.description) {\n <p class=\"card-description\">{{ query.description }}</p>\n }\n </div>\n <div class=\"expand-icon\">\n <i class=\"fas\" [ngClass]=\"isQueryExpanded(getQueryKey(query)) ? 'fa-chevron-up' : 'fa-chevron-down'\"></i>\n </div>\n </div>\n <div class=\"card-meta\">\n @if (query.entityNames && query.entityNames.length > 0) {\n <div class=\"entity-badges\">\n @for (entityName of query.entityNames; track entityName) {\n <span class=\"entity-badge\">\n <i class=\"fas fa-table\"></i>\n {{ entityName }}\n </span>\n }\n </div>\n }\n <span class=\"field-count\">{{ query.fields.length || 0 }} fields</span>\n </div>\n </div>\n\n @if (isQueryExpanded(getQueryKey(query))) {\n <div class=\"card-body\">\n <!-- Parameters -->\n @if (query.parameters && query.parameters.length > 0) {\n <div class=\"parameters-section\">\n <h5 class=\"parameters-title\">\n <i class=\"fas fa-sliders-h\"></i>\n Parameters\n </h5>\n <div class=\"parameters-list\">\n @for (param of query.parameters; track param.name) {\n <div class=\"parameter-item\">\n <div class=\"param-header\">\n <span class=\"param-name\">{{ param.name }}</span>\n @if (param.isRequired) {\n <span class=\"required-badge\">Required</span>\n } @else {\n <span class=\"optional-badge\">Optional</span>\n }\n @if (param.type) {\n <code class=\"param-type\">{{ param.type }}</code>\n }\n </div>\n @if (param.description) {\n <p class=\"param-description\">{{ param.description }}</p>\n }\n @if (param.sampleValue || param.testValue) {\n <div class=\"param-sample\">\n <span class=\"sample-label\">Sample:</span>\n <code>{{ param.sampleValue || param.testValue }}</code>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Fields Table -->\n @if (query.fields && query.fields.length > 0) {\n <div class=\"fields-section\">\n <h5 class=\"fields-title\">Output Fields</h5>\n <div class=\"fields-table\">\n <div class=\"fields-header\">\n <span class=\"field-col name-col\">Name</span>\n <span class=\"field-col type-col\">Type</span>\n <span class=\"field-col desc-col\">Description</span>\n </div>\n @for (field of query.fields; track field.name) {\n <div class=\"field-row\">\n <span class=\"field-col name-col\">\n <i class=\"fas\" [ngClass]=\"getFieldTypeIcon(field.type)\" [style.color]=\"getFieldTypeColor(field.type)\"></i>\n <span class=\"field-name\">{{ field.name }}</span>\n </span>\n <span class=\"field-col type-col\">\n <code class=\"field-type\">{{ formatFieldType(field.type) }}</code>\n </span>\n <span class=\"field-col desc-col\">\n {{ field.description || '—' }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- New Query SQL -->\n @if (query.newQuerySQL) {\n <div class=\"sql-section\">\n <h5 class=\"sql-title\">\n <i class=\"fas fa-terminal\"></i>\n Query SQL\n </h5>\n <pre class=\"sql-code\">{{ query.newQuerySQL }}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n</div>\n"]}
@@ -0,0 +1,227 @@
1
+ import { OnInit, EventEmitter } from '@angular/core';
2
+ import { DataSnapshot } from '@memberjunction/core';
3
+ import { BaseArtifactViewerPluginComponent, ArtifactViewerTab, NavigationRequest } from '../base-artifact-viewer.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * A single feature-importance entry for the winning model.
7
+ */
8
+ interface MLFeatureImportance {
9
+ /** Display name of the feature */
10
+ feature?: string;
11
+ name?: string;
12
+ /** Importance weight (0..1 or any positive scale — bars are normalized to the max) */
13
+ importance?: number;
14
+ weight?: number;
15
+ value?: number;
16
+ }
17
+ /**
18
+ * A single leaderboard iteration row.
19
+ *
20
+ * Accepts both the **canonical** Core `ModelingPlanSpec.Leaderboard` shape
21
+ * (PascalCase: `Metric`/`ModelID`/`IterationID`, produced by the deterministic
22
+ * `ExperimentOrchestrator`) and the older / LLM-authored lowercase shape. All
23
+ * fields are optional so partial artifacts degrade gracefully.
24
+ */
25
+ interface MLLeaderboardEntry {
26
+ /** The iteration this entry scores (`MJ: Experiment Session Iterations` id). */
27
+ IterationID?: string;
28
+ /** The normalized leaderboard metric value (the Experiment's TargetMetric). */
29
+ Metric?: number;
30
+ /** The trained ML Model record ID for drill-through. */
31
+ ModelID?: string;
32
+ /** Rank (1 = best). If absent, derived from array order. */
33
+ rank?: number;
34
+ /** Algorithm name, e.g. "XGBoost" */
35
+ algorithm?: string;
36
+ algorithmName?: string;
37
+ /** Feature set label, e.g. "engagement", "full", "interpretable" */
38
+ featureSet?: string;
39
+ /** Primary normalized leaderboard score (the Experiment's TargetMetric) */
40
+ score?: number;
41
+ /** Optional secondary metric (e.g. cross-validation score) */
42
+ cvScore?: number;
43
+ /** The trained ML Model record ID for drill-through (lowercase fallback) */
44
+ modelId?: string;
45
+ /** Named metric label for the primary score column header */
46
+ metricName?: string;
47
+ }
48
+ /**
49
+ * Headline / extra metrics for the winning model card.
50
+ */
51
+ interface MLWinningMetric {
52
+ label?: string;
53
+ value?: number | string;
54
+ }
55
+ /**
56
+ * The reporting-phase block authored by the Model Development Agent.
57
+ */
58
+ interface MLExperimentReport {
59
+ name?: string;
60
+ summary?: string;
61
+ markdown?: string;
62
+ /** The winning ML Model record ID (drill-through target) */
63
+ bestModelId?: string;
64
+ bestModelName?: string;
65
+ bestModelVersion?: string;
66
+ }
67
+ /**
68
+ * The canonical best-model pointer on a `ModelingPlanSpec`-shaped artifact.
69
+ */
70
+ interface MLBestModel {
71
+ ID?: string;
72
+ Name?: string;
73
+ Version?: string | number;
74
+ }
75
+ /**
76
+ * ML Experiment Results artifact content shape.
77
+ *
78
+ * The **canonical** shape is the Core `ModelingPlanSpec` (PascalCase: `Goal`,
79
+ * `Leaderboard`, `BestModel`/`BestModelID`, `Markdown`, …) produced by the
80
+ * deterministic `ExperimentOrchestrator` and the Model Development Agent's
81
+ * reporting phase (content type `application/vnd.mj.ml-experiment-results`).
82
+ *
83
+ * Older / LLM-authored lowercase fields (`goal`, `leaderboard`, `report`, …)
84
+ * are retained as graceful fallbacks. All fields are optional so partial/older
85
+ * artifacts degrade gracefully.
86
+ */
87
+ interface MLExperimentResultsSpec {
88
+ /** Display name / title of the session (PascalCase). */
89
+ Name?: string;
90
+ /** The modeling goal, plain language (PascalCase). */
91
+ Goal?: string;
92
+ /** Plain-language summary of the results (PascalCase). */
93
+ Summary?: string;
94
+ /** The full results narrative in markdown (PascalCase). */
95
+ Markdown?: string;
96
+ /** Ranked leaderboard of experiment iterations (PascalCase Core shape). */
97
+ Leaderboard?: MLLeaderboardEntry[];
98
+ /** Feature importance for the winning model (PascalCase). */
99
+ FeatureImportance?: MLFeatureImportance[];
100
+ /** The winning model pointer (PascalCase). */
101
+ BestModel?: MLBestModel;
102
+ /** Convenience scalar pointer to the winning model ID (PascalCase). */
103
+ BestModelID?: string;
104
+ /** The normalized target metric name (PascalCase). */
105
+ TargetMetric?: string;
106
+ /** The modeling goal, plain language */
107
+ goal?: string;
108
+ /** Prediction target (e.g. "Renewed") */
109
+ target?: string;
110
+ /** As-of cutoff description (leakage guard) */
111
+ asOf?: string;
112
+ /** Validation strategy description */
113
+ validation?: string;
114
+ /** Budget usage description (e.g. "22 / 25 runs · 58 min") */
115
+ budgetUsed?: string;
116
+ /** The normalized target metric name (column header / headline label) */
117
+ targetMetric?: string;
118
+ /** Ranked leaderboard of experiment iterations */
119
+ leaderboard?: MLLeaderboardEntry[];
120
+ /** Feature importance for the winning model */
121
+ featureImportance?: MLFeatureImportance[];
122
+ /** Convenience pointer to the winning model ID (also resolvable via report/leaderboard) */
123
+ bestModelId?: string;
124
+ /** Extra headline metrics for the winning-model card */
125
+ winningMetrics?: MLWinningMetric[];
126
+ /** The reporting-phase block (markdown, summary, best model) */
127
+ report?: MLExperimentReport;
128
+ }
129
+ /**
130
+ * Normalized leaderboard row for the template (resolves alias fields + derived rank).
131
+ */
132
+ interface NormalizedLeaderboardRow {
133
+ rank: number;
134
+ algorithm: string;
135
+ featureSet: string;
136
+ score: number | null;
137
+ cvScore: number | null;
138
+ modelId: string | null;
139
+ isWinner: boolean;
140
+ }
141
+ /**
142
+ * Normalized feature-importance bar for the template (resolves alias + percent width).
143
+ */
144
+ interface NormalizedFeatureBar {
145
+ feature: string;
146
+ importance: number;
147
+ /** Width percentage relative to the most important feature (0..100) */
148
+ widthPct: number;
149
+ }
150
+ /**
151
+ * Viewer plugin for **ML Experiment Results** artifacts (Predictive Studio).
152
+ *
153
+ * Renders the experiment goal + headline best metric, a ranked leaderboard of
154
+ * iterations, feature-importance bars for the winning model, and a winning-model
155
+ * card with a drill-through button that issues a {@link NavigationRequest} to open
156
+ * the winning `MJ: ML Models` record in Predictive Studio's "Models" nav item.
157
+ *
158
+ * Falls back to a friendly empty state when the JSON can't be parsed, and exposes
159
+ * the agent-authored markdown report as an additional "Report" tab when present.
160
+ */
161
+ export declare class MLExperimentResultsViewerComponent extends BaseArtifactViewerPluginComponent implements OnInit {
162
+ /** Emitted to request app-level navigation (drill-through to the ML Model record). */
163
+ navigationRequest: EventEmitter<NavigationRequest>;
164
+ private cdr;
165
+ /** Parsed artifact content. */
166
+ Spec: MLExperimentResultsSpec | null;
167
+ IsLoading: boolean;
168
+ HasError: boolean;
169
+ ErrorMessage: string;
170
+ /** Normalized, ranked leaderboard rows for rendering. */
171
+ LeaderboardRows: NormalizedLeaderboardRow[];
172
+ /** Normalized feature-importance bars for rendering. */
173
+ FeatureBars: NormalizedFeatureBar[];
174
+ ngOnInit(): void;
175
+ get hasDisplayContent(): boolean;
176
+ GetCurrentStateSnapshot(): DataSnapshot | null;
177
+ /**
178
+ * Expose the agent-authored markdown report as an additional "Report" tab
179
+ * so users can read the full narrative alongside the rich visual display.
180
+ */
181
+ GetAdditionalTabs(): ArtifactViewerTab[];
182
+ get Goal(): string;
183
+ get Summary(): string;
184
+ get TargetMetricLabel(): string;
185
+ /** The winning row (rank 1) if any. */
186
+ get WinningRow(): NormalizedLeaderboardRow | null;
187
+ /** Headline best score (the winning row's primary score), formatted. */
188
+ get HeadlineScore(): string | null;
189
+ get WinningAlgorithm(): string;
190
+ get WinningModelSubtitle(): string;
191
+ /** Extra headline metrics for the winning-model card. */
192
+ get WinningMetrics(): MLWinningMetric[];
193
+ get WinningMarkdown(): string | null;
194
+ /** Whether we have a resolvable model ID to drill through to. */
195
+ get HasDrillThroughTarget(): boolean;
196
+ get LeaderboardSize(): number;
197
+ /**
198
+ * Drill through to the winning ML Model record in Predictive Studio.
199
+ * Matches the §9.4 contract: NavigationRequest to the 'Models' nav item.
200
+ */
201
+ OnDrillThroughToModel(): void;
202
+ /**
203
+ * Drill through to a specific leaderboard row's model, when that row carries a modelId.
204
+ */
205
+ OnOpenRowModel(row: NormalizedLeaderboardRow): void;
206
+ /**
207
+ * Resolve the winning model ID. Priority (canonical PascalCase first):
208
+ * BestModel.ID → BestModelID → report block → lowercase field → top leaderboard row.
209
+ */
210
+ private resolveBestModelId;
211
+ /** Build normalized, ranked leaderboard rows from raw entries. */
212
+ private buildLeaderboardRows;
213
+ /** Build normalized feature-importance bars (widths relative to the max). */
214
+ private buildFeatureBars;
215
+ /** First metric name found on the leaderboard, for column/label fallback. */
216
+ private firstMetricName;
217
+ /** Return the value if it's a finite number, else null. */
218
+ private firstDefined;
219
+ /** Format a numeric score for display (3 decimals, trimmed). */
220
+ formatScore(value: number | null): string;
221
+ /** Format an importance weight for the small bar label. */
222
+ formatImportance(value: number): string;
223
+ static ɵfac: i0.ɵɵFactoryDeclaration<MLExperimentResultsViewerComponent, never>;
224
+ static ɵcmp: i0.ɵɵComponentDeclaration<MLExperimentResultsViewerComponent, "mj-ml-experiment-results-viewer", never, {}, { "navigationRequest": "navigationRequest"; }, never, never, false, never>;
225
+ }
226
+ export {};
227
+ //# sourceMappingURL=ml-experiment-results-viewer.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ml-experiment-results-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/ml-experiment-results-viewer.component.ts"],"names":[],"mappings":"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"}