@memberjunction/ng-artifacts 6.1.4 → 6.2.0-edge.1

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 (125) hide show
  1. package/dist/lib/components/artifact-message-card.component.d.ts +60 -8
  2. package/dist/lib/components/artifact-message-card.component.d.ts.map +1 -1
  3. package/dist/lib/components/artifact-message-card.component.js +135 -39
  4. package/dist/lib/components/artifact-message-card.component.js.map +1 -1
  5. package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts +58 -6
  6. package/dist/lib/components/artifact-type-plugin-viewer.component.d.ts.map +1 -1
  7. package/dist/lib/components/artifact-type-plugin-viewer.component.js +113 -35
  8. package/dist/lib/components/artifact-type-plugin-viewer.component.js.map +1 -1
  9. package/dist/lib/components/artifact-version-download.d.ts +5 -3
  10. package/dist/lib/components/artifact-version-download.d.ts.map +1 -1
  11. package/dist/lib/components/artifact-version-download.js +11 -7
  12. package/dist/lib/components/artifact-version-download.js.map +1 -1
  13. package/dist/lib/components/artifact-version-history.component.d.ts +74 -8
  14. package/dist/lib/components/artifact-version-history.component.d.ts.map +1 -1
  15. package/dist/lib/components/artifact-version-history.component.js +152 -34
  16. package/dist/lib/components/artifact-version-history.component.js.map +1 -1
  17. package/dist/lib/components/artifact-viewer-panel.component.d.ts +328 -35
  18. package/dist/lib/components/artifact-viewer-panel.component.d.ts.map +1 -1
  19. package/dist/lib/components/artifact-viewer-panel.component.js +701 -213
  20. package/dist/lib/components/artifact-viewer-panel.component.js.map +1 -1
  21. package/dist/lib/components/file-artifact-toolbar.component.d.ts +112 -10
  22. package/dist/lib/components/file-artifact-toolbar.component.d.ts.map +1 -1
  23. package/dist/lib/components/file-artifact-toolbar.component.js +197 -23
  24. package/dist/lib/components/file-artifact-toolbar.component.js.map +1 -1
  25. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts +9 -1
  26. package/dist/lib/components/plugins/audio-artifact-viewer.component.d.ts.map +1 -1
  27. package/dist/lib/components/plugins/audio-artifact-viewer.component.js +20 -4
  28. package/dist/lib/components/plugins/audio-artifact-viewer.component.js.map +1 -1
  29. package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts +23 -5
  30. package/dist/lib/components/plugins/code-artifact-viewer.component.d.ts.map +1 -1
  31. package/dist/lib/components/plugins/code-artifact-viewer.component.js +69 -31
  32. package/dist/lib/components/plugins/code-artifact-viewer.component.js.map +1 -1
  33. package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts +136 -18
  34. package/dist/lib/components/plugins/component-artifact-viewer.component.d.ts.map +1 -1
  35. package/dist/lib/components/plugins/component-artifact-viewer.component.js +285 -97
  36. package/dist/lib/components/plugins/component-artifact-viewer.component.js.map +1 -1
  37. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.d.ts +2 -2
  38. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js +7 -7
  39. package/dist/lib/components/plugins/component-feedback-panel/component-feedback-panel.component.js.map +1 -1
  40. package/dist/lib/components/plugins/component-permission-evaluation.d.ts +2 -0
  41. package/dist/lib/components/plugins/component-permission-evaluation.d.ts.map +1 -1
  42. package/dist/lib/components/plugins/component-permission-evaluation.js +6 -2
  43. package/dist/lib/components/plugins/component-permission-evaluation.js.map +1 -1
  44. package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts +17 -6
  45. package/dist/lib/components/plugins/data-artifact-viewer.component.d.ts.map +1 -1
  46. package/dist/lib/components/plugins/data-artifact-viewer.component.js +32 -22
  47. package/dist/lib/components/plugins/data-artifact-viewer.component.js.map +1 -1
  48. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts +56 -4
  49. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.d.ts.map +1 -1
  50. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js +142 -36
  51. package/dist/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.js.map +1 -1
  52. package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts +14 -2
  53. package/dist/lib/components/plugins/docx-artifact-viewer.component.d.ts.map +1 -1
  54. package/dist/lib/components/plugins/docx-artifact-viewer.component.js +32 -8
  55. package/dist/lib/components/plugins/docx-artifact-viewer.component.js.map +1 -1
  56. package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts +17 -3
  57. package/dist/lib/components/plugins/html-artifact-viewer.component.d.ts.map +1 -1
  58. package/dist/lib/components/plugins/html-artifact-viewer.component.js +36 -8
  59. package/dist/lib/components/plugins/html-artifact-viewer.component.js.map +1 -1
  60. package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts +41 -5
  61. package/dist/lib/components/plugins/image-artifact-viewer.component.d.ts.map +1 -1
  62. package/dist/lib/components/plugins/image-artifact-viewer.component.js +102 -30
  63. package/dist/lib/components/plugins/image-artifact-viewer.component.js.map +1 -1
  64. package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts +33 -5
  65. package/dist/lib/components/plugins/json-artifact-viewer.component.d.ts.map +1 -1
  66. package/dist/lib/components/plugins/json-artifact-viewer.component.js +89 -33
  67. package/dist/lib/components/plugins/json-artifact-viewer.component.js.map +1 -1
  68. package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts +12 -2
  69. package/dist/lib/components/plugins/markdown-artifact-viewer.component.d.ts.map +1 -1
  70. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js +28 -8
  71. package/dist/lib/components/plugins/markdown-artifact-viewer.component.js.map +1 -1
  72. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts +4 -0
  73. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.d.ts.map +1 -1
  74. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js +14 -6
  75. package/dist/lib/components/plugins/ml-experiment-results-viewer.component.js.map +1 -1
  76. package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts +47 -5
  77. package/dist/lib/components/plugins/pdf-artifact-viewer.component.d.ts.map +1 -1
  78. package/dist/lib/components/plugins/pdf-artifact-viewer.component.js +129 -45
  79. package/dist/lib/components/plugins/pdf-artifact-viewer.component.js.map +1 -1
  80. package/dist/lib/components/plugins/save-query-dialog.component.d.ts +5 -1
  81. package/dist/lib/components/plugins/save-query-dialog.component.d.ts.map +1 -1
  82. package/dist/lib/components/plugins/save-query-dialog.component.js +12 -4
  83. package/dist/lib/components/plugins/save-query-dialog.component.js.map +1 -1
  84. package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts +17 -3
  85. package/dist/lib/components/plugins/svg-artifact-viewer.component.d.ts.map +1 -1
  86. package/dist/lib/components/plugins/svg-artifact-viewer.component.js +36 -8
  87. package/dist/lib/components/plugins/svg-artifact-viewer.component.js.map +1 -1
  88. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts +9 -1
  89. package/dist/lib/components/plugins/video-artifact-viewer.component.d.ts.map +1 -1
  90. package/dist/lib/components/plugins/video-artifact-viewer.component.js +20 -4
  91. package/dist/lib/components/plugins/video-artifact-viewer.component.js.map +1 -1
  92. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts +28 -4
  93. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.d.ts.map +1 -1
  94. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js +64 -16
  95. package/dist/lib/components/plugins/xlsx-artifact-viewer.component.js.map +1 -1
  96. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts +9 -1
  97. package/dist/lib/components/previews/audio-artifact-preview.component.d.ts.map +1 -1
  98. package/dist/lib/components/previews/audio-artifact-preview.component.js +20 -4
  99. package/dist/lib/components/previews/audio-artifact-preview.component.js.map +1 -1
  100. package/dist/lib/components/previews/image-artifact-preview.component.d.ts +16 -2
  101. package/dist/lib/components/previews/image-artifact-preview.component.d.ts.map +1 -1
  102. package/dist/lib/components/previews/image-artifact-preview.component.js +35 -7
  103. package/dist/lib/components/previews/image-artifact-preview.component.js.map +1 -1
  104. package/dist/lib/components/previews/video-artifact-preview.component.d.ts +9 -1
  105. package/dist/lib/components/previews/video-artifact-preview.component.d.ts.map +1 -1
  106. package/dist/lib/components/previews/video-artifact-preview.component.js +20 -4
  107. package/dist/lib/components/previews/video-artifact-preview.component.js.map +1 -1
  108. package/dist/lib/interfaces/artifact-viewer-plugin.interface.js.map +1 -1
  109. package/dist/lib/services/artifact-file.service.d.ts +8 -0
  110. package/dist/lib/services/artifact-file.service.d.ts.map +1 -1
  111. package/dist/lib/services/artifact-file.service.js +22 -6
  112. package/dist/lib/services/artifact-file.service.js.map +1 -1
  113. package/dist/lib/services/artifact-icon.service.d.ts +2 -0
  114. package/dist/lib/services/artifact-icon.service.d.ts.map +1 -1
  115. package/dist/lib/services/artifact-icon.service.js +5 -1
  116. package/dist/lib/services/artifact-icon.service.js.map +1 -1
  117. package/dist/lib/services/artifact-preview-resolver.service.d.ts +2 -0
  118. package/dist/lib/services/artifact-preview-resolver.service.d.ts.map +1 -1
  119. package/dist/lib/services/artifact-preview-resolver.service.js +5 -1
  120. package/dist/lib/services/artifact-preview-resolver.service.js.map +1 -1
  121. package/dist/lib/snapshot-helpers.d.ts +10 -0
  122. package/dist/lib/snapshot-helpers.d.ts.map +1 -1
  123. package/dist/lib/snapshot-helpers.js +25 -5
  124. package/dist/lib/snapshot-helpers.js.map +1 -1
  125. package/package.json +21 -21
@@ -510,77 +510,153 @@ function DataRequirementsViewerComponent_Conditional_2_Template(rf, ctx) { if (r
510
510
  * Displays entities, queries, and fields in an organized, visually appealing layout.
511
511
  */
512
512
  export class DataRequirementsViewerComponent {
513
- dataRequirements = null;
513
+ DataRequirements = null;
514
+ /** @deprecated Use {@link DataRequirements}. */
515
+ set dataRequirements(value) {
516
+ this.DataRequirements = value;
517
+ }
518
+ /** @deprecated Use {@link DataRequirements}. */
519
+ get dataRequirements() {
520
+ return this.DataRequirements;
521
+ }
514
522
  // Track expanded state for entities and queries
515
- expandedEntities = new Set();
516
- expandedQueries = new Set();
523
+ ExpandedEntities = new Set();
524
+ /** @deprecated Use {@link ExpandedEntities}. */
525
+ get expandedEntities() {
526
+ return this.ExpandedEntities;
527
+ }
528
+ /** @deprecated Use {@link ExpandedEntities}. */
529
+ set expandedEntities(value) {
530
+ this.ExpandedEntities = value;
531
+ }
532
+ ExpandedQueries = new Set();
533
+ /** @deprecated Use {@link ExpandedQueries}. */
534
+ get expandedQueries() {
535
+ return this.ExpandedQueries;
536
+ }
537
+ /** @deprecated Use {@link ExpandedQueries}. */
538
+ set expandedQueries(value) {
539
+ this.ExpandedQueries = value;
540
+ }
541
+ get HasData() {
542
+ return !!this.DataRequirements;
543
+ }
544
+ /** @deprecated Use {@link HasData}. */
517
545
  get hasData() {
518
- return !!this.dataRequirements;
546
+ return this.HasData;
519
547
  }
548
+ get Mode() {
549
+ return this.DataRequirements?.mode || 'views';
550
+ }
551
+ /** @deprecated Use {@link Mode}. */
520
552
  get mode() {
521
- return this.dataRequirements?.mode || 'views';
553
+ return this.Mode;
522
554
  }
523
- get modeLabel() {
524
- switch (this.mode) {
555
+ get ModeLabel() {
556
+ switch (this.Mode) {
525
557
  case 'views': return 'Entity Views';
526
558
  case 'queries': return 'Stored Queries';
527
559
  case 'hybrid': return 'Hybrid (Views + Queries)';
528
- default: return this.mode;
560
+ default: return this.Mode;
529
561
  }
530
562
  }
531
- get modeIcon() {
532
- switch (this.mode) {
563
+ /** @deprecated Use {@link ModeLabel}. */
564
+ get modeLabel() {
565
+ return this.ModeLabel;
566
+ }
567
+ get ModeIcon() {
568
+ switch (this.Mode) {
533
569
  case 'views': return 'fa-table';
534
570
  case 'queries': return 'fa-database';
535
571
  case 'hybrid': return 'fa-layer-group';
536
572
  default: return 'fa-database';
537
573
  }
538
574
  }
575
+ /** @deprecated Use {@link ModeIcon}. */
576
+ get modeIcon() {
577
+ return this.ModeIcon;
578
+ }
579
+ get Entities() {
580
+ return this.DataRequirements?.entities || [];
581
+ }
582
+ /** @deprecated Use {@link Entities}. */
539
583
  get entities() {
540
- return this.dataRequirements?.entities || [];
584
+ return this.Entities;
585
+ }
586
+ get Queries() {
587
+ return this.DataRequirements?.queries || [];
541
588
  }
589
+ /** @deprecated Use {@link Queries}. */
542
590
  get queries() {
543
- return this.dataRequirements?.queries || [];
591
+ return this.Queries;
544
592
  }
593
+ get Description() {
594
+ return this.DataRequirements?.description || '';
595
+ }
596
+ /** @deprecated Use {@link Description}. */
545
597
  get description() {
546
- return this.dataRequirements?.description || '';
598
+ return this.Description;
547
599
  }
548
- get totalFieldCount() {
600
+ get TotalFieldCount() {
549
601
  let count = 0;
550
- for (const entity of this.entities) {
602
+ for (const entity of this.Entities) {
551
603
  count += entity.fieldMetadata?.length || 0;
552
604
  }
553
- for (const query of this.queries) {
605
+ for (const query of this.Queries) {
554
606
  count += query.fields?.length || 0;
555
607
  }
556
608
  return count;
557
609
  }
558
- toggleEntity(entityName) {
559
- if (this.expandedEntities.has(entityName)) {
560
- this.expandedEntities.delete(entityName);
610
+ /** @deprecated Use {@link TotalFieldCount}. */
611
+ get totalFieldCount() {
612
+ return this.TotalFieldCount;
613
+ }
614
+ ToggleEntity(entityName) {
615
+ if (this.ExpandedEntities.has(entityName)) {
616
+ this.ExpandedEntities.delete(entityName);
561
617
  }
562
618
  else {
563
- this.expandedEntities.add(entityName);
619
+ this.ExpandedEntities.add(entityName);
564
620
  }
565
621
  }
566
- toggleQuery(queryKey) {
567
- if (this.expandedQueries.has(queryKey)) {
568
- this.expandedQueries.delete(queryKey);
622
+ /** @deprecated Use {@link ToggleEntity}. */
623
+ toggleEntity(entityName) {
624
+ return this.ToggleEntity(entityName);
625
+ }
626
+ ToggleQuery(queryKey) {
627
+ if (this.ExpandedQueries.has(queryKey)) {
628
+ this.ExpandedQueries.delete(queryKey);
569
629
  }
570
630
  else {
571
- this.expandedQueries.add(queryKey);
631
+ this.ExpandedQueries.add(queryKey);
572
632
  }
573
633
  }
634
+ /** @deprecated Use {@link ToggleQuery}. */
635
+ toggleQuery(queryKey) {
636
+ return this.ToggleQuery(queryKey);
637
+ }
638
+ IsEntityExpanded(entityName) {
639
+ return this.ExpandedEntities.has(entityName);
640
+ }
641
+ /** @deprecated Use {@link IsEntityExpanded}. */
574
642
  isEntityExpanded(entityName) {
575
- return this.expandedEntities.has(entityName);
643
+ return this.IsEntityExpanded(entityName);
576
644
  }
645
+ IsQueryExpanded(queryKey) {
646
+ return this.ExpandedQueries.has(queryKey);
647
+ }
648
+ /** @deprecated Use {@link IsQueryExpanded}. */
577
649
  isQueryExpanded(queryKey) {
578
- return this.expandedQueries.has(queryKey);
650
+ return this.IsQueryExpanded(queryKey);
579
651
  }
580
- getQueryKey(query) {
652
+ GetQueryKey(query) {
581
653
  return `${query.categoryPath}/${query.name}`;
582
654
  }
583
- getPermissionIcon(permission) {
655
+ /** @deprecated Use {@link GetQueryKey}. */
656
+ getQueryKey(query) {
657
+ return this.GetQueryKey(query);
658
+ }
659
+ GetPermissionIcon(permission) {
584
660
  switch (permission) {
585
661
  case 'read': return 'fa-eye';
586
662
  case 'create': return 'fa-plus';
@@ -589,7 +665,11 @@ export class DataRequirementsViewerComponent {
589
665
  default: return 'fa-question';
590
666
  }
591
667
  }
592
- getPermissionColor(permission) {
668
+ /** @deprecated Use {@link GetPermissionIcon}. */
669
+ getPermissionIcon(permission) {
670
+ return this.GetPermissionIcon(permission);
671
+ }
672
+ GetPermissionColor(permission) {
593
673
  switch (permission) {
594
674
  case 'read': return '#2196F3';
595
675
  case 'create': return '#4CAF50';
@@ -598,7 +678,11 @@ export class DataRequirementsViewerComponent {
598
678
  default: return '#9E9E9E';
599
679
  }
600
680
  }
601
- getFieldTypeIcon(type) {
681
+ /** @deprecated Use {@link GetPermissionColor}. */
682
+ getPermissionColor(permission) {
683
+ return this.GetPermissionColor(permission);
684
+ }
685
+ GetFieldTypeIcon(type) {
602
686
  const lowerType = (type || '').toLowerCase();
603
687
  if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {
604
688
  return 'fa-hashtag';
@@ -620,7 +704,11 @@ export class DataRequirementsViewerComponent {
620
704
  }
621
705
  return 'fa-circle';
622
706
  }
623
- getFieldTypeColor(type) {
707
+ /** @deprecated Use {@link GetFieldTypeIcon}. */
708
+ getFieldTypeIcon(type) {
709
+ return this.GetFieldTypeIcon(type);
710
+ }
711
+ GetFieldTypeColor(type) {
624
712
  const lowerType = (type || '').toLowerCase();
625
713
  if (lowerType.includes('int') || lowerType.includes('decimal') || lowerType.includes('float') || lowerType.includes('numeric') || lowerType.includes('money')) {
626
714
  return '#9C27B0';
@@ -639,10 +727,18 @@ export class DataRequirementsViewerComponent {
639
727
  }
640
728
  return '#9E9E9E';
641
729
  }
642
- formatFieldType(type) {
730
+ /** @deprecated Use {@link GetFieldTypeColor}. */
731
+ getFieldTypeColor(type) {
732
+ return this.GetFieldTypeColor(type);
733
+ }
734
+ FormatFieldType(type) {
643
735
  return type || 'unknown';
644
736
  }
645
- getFieldUsageTags(field, entity) {
737
+ /** @deprecated Use {@link FormatFieldType}. */
738
+ formatFieldType(type) {
739
+ return this.FormatFieldType(type);
740
+ }
741
+ GetFieldUsageTags(field, entity) {
646
742
  const tags = [];
647
743
  if (field.isPrimaryKey) {
648
744
  tags.push('PK');
@@ -658,7 +754,11 @@ export class DataRequirementsViewerComponent {
658
754
  }
659
755
  return tags;
660
756
  }
661
- getTagColor(tag) {
757
+ /** @deprecated Use {@link GetFieldUsageTags}. */
758
+ getFieldUsageTags(field, entity) {
759
+ return this.GetFieldUsageTags(field, entity);
760
+ }
761
+ GetTagColor(tag) {
662
762
  switch (tag) {
663
763
  case 'PK': return '#E91E63';
664
764
  case 'Display': return '#2196F3';
@@ -667,8 +767,12 @@ export class DataRequirementsViewerComponent {
667
767
  default: return '#9E9E9E';
668
768
  }
669
769
  }
770
+ /** @deprecated Use {@link GetTagColor}. */
771
+ getTagColor(tag) {
772
+ return this.GetTagColor(tag);
773
+ }
670
774
  static ɵfac = function DataRequirementsViewerComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DataRequirementsViewerComponent)(); };
671
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { dataRequirements: "dataRequirements" }, standalone: false, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], ["Icon", "fa-solid fa-database", "Title", "No Data Requirements", "Message", "This component doesn't have any data requirements defined.", "Size", "compact"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "fas", "fa-database"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
775
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataRequirementsViewerComponent, selectors: [["mj-data-requirements-viewer"]], inputs: { DataRequirements: "DataRequirements", dataRequirements: "dataRequirements" }, standalone: false, decls: 3, vars: 1, consts: [[1, "data-requirements-viewer"], ["Icon", "fa-solid fa-database", "Title", "No Data Requirements", "Message", "This component doesn't have any data requirements defined.", "Size", "compact"], [1, "summary-header"], [1, "mode-badge"], [1, "fas", 3, "ngClass"], [1, "stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "description-section"], [1, "section", "entities-section"], [1, "section", "queries-section"], [1, "description-title"], [1, "fas", "fa-info-circle"], [1, "description-content"], [3, "data", "enableCollapsibleHeadings", "enableLineNumbers", "enableSmartypants", "enableHtml"], [1, "section-title"], [1, "fas", "fa-table"], [1, "cards-container"], [1, "data-card", "entity-card", 3, "expanded"], [1, "data-card", "entity-card"], [1, "card-header", 3, "click"], [1, "card-title-row"], [1, "card-icon"], [1, "card-title-info"], [1, "card-title"], [1, "card-description"], [1, "expand-icon"], [1, "card-meta"], [1, "permissions-row"], [1, "permission-badge", 3, "background-color"], [1, "field-count"], [1, "card-body"], [1, "permission-badge"], [1, "usage-context"], [1, "fields-section"], [1, "fields-title"], [1, "fields-table"], [1, "fields-header"], [1, "field-col", "name-col"], [1, "field-col", "type-col"], [1, "field-col", "tags-col"], [1, "field-col", "desc-col"], [1, "field-row"], [1, "field-name"], ["title", "Required", 1, "required-indicator"], [1, "field-type"], [1, "usage-tag", 3, "background-color"], [1, "usage-tag"], [1, "fas", "fa-database"], [1, "data-card", "query-card", 3, "expanded"], [1, "data-card", "query-card"], [1, "card-icon", "query-icon"], [1, "fas", "fa-code"], [1, "title-with-badge"], ["title", "This query was newly created for this component", 1, "new-query-badge"], [1, "card-path"], [1, "entity-badges"], [1, "fas", "fa-sparkles"], [1, "entity-badge"], [1, "parameters-section"], [1, "sql-section"], [1, "parameters-title"], [1, "fas", "fa-sliders-h"], [1, "parameters-list"], [1, "parameter-item"], [1, "param-header"], [1, "param-name"], [1, "required-badge"], [1, "optional-badge"], [1, "param-type"], [1, "param-description"], [1, "param-sample"], [1, "sample-label"], [1, "sql-title"], [1, "fas", "fa-terminal"], [1, "sql-code"]], template: function DataRequirementsViewerComponent_Template(rf, ctx) { if (rf & 1) {
672
776
  i0.ɵɵelementStart(0, "div", 0);
673
777
  i0.ɵɵconditionalCreate(1, DataRequirementsViewerComponent_Conditional_1_Template, 1, 0, "mj-empty-state", 1)(2, DataRequirementsViewerComponent_Conditional_2_Template, 16, 9);
674
778
  i0.ɵɵelementEnd();
@@ -680,7 +784,9 @@ export class DataRequirementsViewerComponent {
680
784
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataRequirementsViewerComponent, [{
681
785
  type: Component,
682
786
  args: [{ standalone: false, selector: 'mj-data-requirements-viewer', template: "<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 || '\u2014' }}\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 || '\u2014' }}\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", styles: [".data-requirements-viewer {\n padding: 0;\n height: 100%;\n overflow-y: auto;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Summary Header */\n.summary-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 0;\n}\n\n.mode-badge {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.mode-badge i {\n font-size: 20px;\n opacity: 0.9;\n}\n\n.stats {\n display: flex;\n gap: 24px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 2px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 700;\n line-height: 1;\n}\n\n.stat-label {\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n opacity: 0.85;\n}\n\n/* Description Section */\n.description-section {\n padding: 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.description-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n}\n\n.description-title i {\n color: var(--mj-brand-primary);\n}\n\n.description-content {\n font-size: 14px;\n line-height: 1.6;\n color: var(--mj-text-secondary);\n}\n\n.description-content ::ng-deep p {\n margin: 0 0 12px 0;\n}\n\n.description-content ::ng-deep p:last-child {\n margin-bottom: 0;\n}\n\n.description-content ::ng-deep pre {\n background: var(--mj-bg-surface-sunken);\n padding: 12px;\n border-radius: 6px;\n overflow-x: auto;\n}\n\n.description-content ::ng-deep code {\n background: var(--mj-bg-surface-sunken);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 13px;\n}\n\n/* Section Styling */\n.section {\n padding: 20px;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 16px 0;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 18px;\n}\n\n/* Cards Container */\n.cards-container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* Data Card */\n.data-card {\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n transition: box-shadow 0.2s ease, border-color 0.2s ease;\n}\n\n.data-card:hover {\n border-color: var(--mj-border-default);\n box-shadow: var(--mj-shadow-sm);\n}\n\n.data-card.expanded {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n}\n\n/* Card Header */\n.card-header {\n padding: 16px;\n cursor: pointer;\n user-select: none;\n}\n\n.card-title-row {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n}\n\n.card-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n border-radius: 8px;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n font-size: 18px;\n flex-shrink: 0;\n}\n\n.card-icon.query-icon {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.card-title-info {\n flex: 1;\n min-width: 0;\n}\n\n.title-with-badge {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 4px;\n}\n\n.card-title {\n margin: 0;\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.new-query-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 10px;\n font-weight: 700;\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n animation: subtle-pulse 2s ease-in-out infinite;\n}\n\n.new-query-badge i {\n font-size: 9px;\n}\n\n@keyframes subtle-pulse {\n 0%, 100% {\n box-shadow: 0 2px 4px color-mix(in srgb, var(--mj-status-success) 20%, transparent);\n }\n 50% {\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-status-success) 40%, transparent);\n }\n}\n\n.card-path {\n margin: 0 0 4px 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.card-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.expand-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n padding: 4px;\n}\n\n.data-card.expanded .expand-icon {\n color: var(--mj-brand-primary);\n}\n\n/* Card Meta */\n.card-meta {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.permissions-row {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n color: var(--mj-text-inverse);\n text-transform: capitalize;\n}\n\n.permission-badge i {\n font-size: 10px;\n}\n\n.field-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.entity-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 3px 8px;\n border-radius: 4px;\n font-size: 11px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.entity-badge i {\n font-size: 10px;\n color: var(--mj-text-muted);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 16px 16px 16px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* Usage Context */\n.usage-context {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n padding: 12px;\n margin-top: 12px;\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n border-radius: 6px;\n font-size: 13px;\n color: var(--mj-status-warning);\n}\n\n.usage-context i {\n color: var(--mj-status-warning);\n margin-top: 2px;\n}\n\n/* Fields Section */\n.fields-section {\n margin-top: 16px;\n}\n\n.fields-title {\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Fields Table */\n.fields-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n overflow: hidden;\n}\n\n.fields-header {\n display: flex;\n padding: 10px 12px;\n background: var(--mj-bg-surface-sunken);\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.field-row {\n display: flex;\n padding: 10px 12px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n font-size: 13px;\n align-items: center;\n}\n\n.field-row:last-child {\n border-bottom: none;\n}\n\n.field-row:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-col {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.name-col {\n flex: 0 0 200px;\n min-width: 0;\n}\n\n.type-col {\n flex: 0 0 120px;\n}\n\n.tags-col {\n flex: 0 0 160px;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.desc-col {\n flex: 1;\n color: var(--mj-text-muted);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.field-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.required-indicator {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.field-type {\n padding: 2px 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.usage-tag {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n/* Parameters Section */\n.parameters-section {\n margin-top: 16px;\n}\n\n.parameters-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-title i {\n color: var(--mj-brand-primary);\n}\n\n.parameters-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.parameter-item {\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.param-name {\n font-weight: 600;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n\n.required-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.optional-badge {\n padding: 2px 6px;\n border-radius: 3px;\n font-size: 10px;\n font-weight: 600;\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n text-transform: uppercase;\n}\n\n.param-type {\n padding: 2px 6px;\n background: var(--mj-border-default);\n border-radius: 4px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n}\n\n.param-description {\n margin: 8px 0 0 0;\n font-size: 13px;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n}\n\n.param-sample {\n margin-top: 8px;\n font-size: 12px;\n}\n\n.sample-label {\n color: var(--mj-text-muted);\n margin-right: 4px;\n}\n\n.param-sample code {\n padding: 2px 6px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n color: var(--mj-status-error);\n}\n\n/* SQL Section */\n.sql-section {\n margin-top: 16px;\n}\n\n.sql-title {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.sql-title i {\n color: var(--mj-brand-primary);\n}\n\n.sql-code {\n margin: 0;\n padding: 16px;\n background: var(--mj-bg-code-block, #1e1e1e);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.5;\n color: var(--mj-text-code, #d4d4d4);\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Responsive adjustments */\n@media (max-width: 768px) {\n .summary-header {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n\n .stats {\n width: 100%;\n justify-content: space-around;\n }\n\n .name-col {\n flex: 0 0 140px;\n }\n\n .type-col {\n flex: 0 0 90px;\n }\n\n .tags-col {\n flex: 0 0 120px;\n }\n\n .card-meta {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n }\n}\n"] }]
683
- }], null, { dataRequirements: [{
787
+ }], null, { DataRequirements: [{
788
+ type: Input
789
+ }], dataRequirements: [{
684
790
  type: Input
685
791
  }] }); })();
686
792
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DataRequirementsViewerComponent, { className: "DataRequirementsViewerComponent", filePath: "src/lib/components/plugins/data-requirements-viewer/data-requirements-viewer.component.ts", lineNumber: 14 }); })();
@@ -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 <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"]}
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 /** @deprecated Use {@link DataRequirements}. */\n @Input() set dataRequirements(value: ComponentDataRequirements | null) {\n this.DataRequirements = value;\n }\n /** @deprecated Use {@link DataRequirements}. */\n get dataRequirements(): ComponentDataRequirements | null {\n return this.DataRequirements;\n }\n\n // Track expanded state for entities and queries\n ExpandedEntities: Set<string> = new Set();\n\n /** @deprecated Use {@link ExpandedEntities}. */\n get expandedEntities(): Set<string> {\n return this.ExpandedEntities;\n }\n /** @deprecated Use {@link ExpandedEntities}. */\n set expandedEntities(value: Set<string>) {\n this.ExpandedEntities = value;\n }\n ExpandedQueries: Set<string> = new Set();\n\n /** @deprecated Use {@link ExpandedQueries}. */\n get expandedQueries(): Set<string> {\n return this.ExpandedQueries;\n }\n /** @deprecated Use {@link ExpandedQueries}. */\n set expandedQueries(value: Set<string>) {\n this.ExpandedQueries = value;\n }\n\n get HasData(): boolean {\n return !!this.DataRequirements;\n }\n\n /** @deprecated Use {@link HasData}. */\n get hasData(): boolean {\n return this.HasData;\n }\n\n get Mode(): string {\n return this.DataRequirements?.mode || 'views';\n }\n\n /** @deprecated Use {@link Mode}. */\n get mode(): string {\n return this.Mode;\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 /** @deprecated Use {@link ModeLabel}. */\n get modeLabel(): string {\n return this.ModeLabel;\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 /** @deprecated Use {@link ModeIcon}. */\n get modeIcon(): string {\n return this.ModeIcon;\n }\n\n get Entities(): ComponentEntityDataRequirement[] {\n return this.DataRequirements?.entities || [];\n }\n\n /** @deprecated Use {@link Entities}. */\n get entities(): ComponentEntityDataRequirement[] {\n return this.Entities;\n }\n\n get Queries(): ComponentQueryDataRequirement[] {\n return this.DataRequirements?.queries || [];\n }\n\n /** @deprecated Use {@link Queries}. */\n get queries(): ComponentQueryDataRequirement[] {\n return this.Queries;\n }\n\n get Description(): string {\n return this.DataRequirements?.description || '';\n }\n\n /** @deprecated Use {@link Description}. */\n get description(): string {\n return this.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 /** @deprecated Use {@link TotalFieldCount}. */\n get totalFieldCount(): number {\n return this.TotalFieldCount;\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 /** @deprecated Use {@link ToggleEntity}. */\n toggleEntity(entityName: string): void {\n return this.ToggleEntity(entityName);\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 /** @deprecated Use {@link ToggleQuery}. */\n toggleQuery(queryKey: string): void {\n return this.ToggleQuery(queryKey);\n }\n\n IsEntityExpanded(entityName: string): boolean {\n return this.ExpandedEntities.has(entityName);\n }\n\n /** @deprecated Use {@link IsEntityExpanded}. */\n isEntityExpanded(entityName: string): boolean {\n return this.IsEntityExpanded(entityName);\n }\n\n IsQueryExpanded(queryKey: string): boolean {\n return this.ExpandedQueries.has(queryKey);\n }\n\n /** @deprecated Use {@link IsQueryExpanded}. */\n isQueryExpanded(queryKey: string): boolean {\n return this.IsQueryExpanded(queryKey);\n }\n\n GetQueryKey(query: ComponentQueryDataRequirement): string {\n return `${query.categoryPath}/${query.name}`;\n }\n\n /** @deprecated Use {@link GetQueryKey}. */\n getQueryKey(query: ComponentQueryDataRequirement): string {\n return this.GetQueryKey(query);\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 /** @deprecated Use {@link GetPermissionIcon}. */\n getPermissionIcon(permission: string): string {\n return this.GetPermissionIcon(permission);\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 /** @deprecated Use {@link GetPermissionColor}. */\n getPermissionColor(permission: string): string {\n return this.GetPermissionColor(permission);\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 /** @deprecated Use {@link GetFieldTypeIcon}. */\n getFieldTypeIcon(type: string): string {\n return this.GetFieldTypeIcon(type);\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 /** @deprecated Use {@link GetFieldTypeColor}. */\n getFieldTypeColor(type: string): string {\n return this.GetFieldTypeColor(type);\n }\n\n FormatFieldType(type: string): string {\n return type || 'unknown';\n }\n\n /** @deprecated Use {@link FormatFieldType}. */\n formatFieldType(type: string): string {\n return this.FormatFieldType(type);\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 /** @deprecated Use {@link GetFieldUsageTags}. */\n getFieldUsageTags(field: SimpleEntityFieldInfo, entity: ComponentEntityDataRequirement): string[] {\n return this.GetFieldUsageTags(field, entity);\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 /** @deprecated Use {@link GetTagColor}. */\n getTagColor(tag: string): string {\n return this.GetTagColor(tag);\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"]}
@@ -18,16 +18,28 @@ export declare class DocxArtifactViewerComponent extends BaseArtifactViewerPlugi
18
18
  private sanitizer;
19
19
  private cdr;
20
20
  isLoading: boolean;
21
- isDownloading: boolean;
21
+ IsDownloading: boolean;
22
+ /** @deprecated Use {@link IsDownloading}. */
23
+ get isDownloading(): boolean;
24
+ /** @deprecated Use {@link IsDownloading}. */
25
+ set isDownloading(value: boolean);
22
26
  errorMessage: string;
23
- safeHtml: SafeHtml;
27
+ SafeHtml: SafeHtml;
28
+ /** @deprecated Use {@link SafeHtml}. */
29
+ get safeHtml(): SafeHtml;
30
+ /** @deprecated Use {@link SafeHtml}. */
31
+ set safeHtml(value: SafeHtml);
24
32
  /** Raw HTML produced by mammoth — kept for print. */
25
33
  private rawHtml;
26
34
  private downloadUrl;
27
35
  constructor(fileService: ArtifactFileService, sanitizer: DomSanitizer, cdr: ChangeDetectorRef);
28
36
  get hasDisplayContent(): boolean;
29
37
  ngOnInit(): Promise<void>;
38
+ OnDownload(): Promise<void>;
39
+ /** @deprecated Use {@link OnDownload}. */
30
40
  onDownload(): Promise<void>;
41
+ OnPrint(): void;
42
+ /** @deprecated Use {@link OnPrint}. */
31
43
  onPrint(): void;
32
44
  private loadDocument;
33
45
  private convertDocxToHtml;
@@ -1 +1 @@
1
- {"version":3,"file":"docx-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/docx-artifact-viewer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,iBAAiB,EAAmB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;;AAE3E;;;;;;;;GAQG;AACH,qBAyGa,2BAA4B,SAAQ,iCAAkC,YAAW,MAAM;IAWhG,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IAZN,SAAS,UAAQ;IACjB,aAAa,UAAS;IACtB,YAAY,SAAM;IAClB,QAAQ,EAAE,QAAQ,CAAM;IAE/B,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,WAAW,CAAM;gBAGf,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,YAAY,EACvB,GAAG,EAAE,iBAAiB;IAKhC,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,OAAO,IAAI,IAAI;YASR,YAAY;YAuCZ,iBAAiB;YAUjB,kBAAkB;IAQhC,qEAAqE;IACrE,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,SAAS;IAMD,uBAAuB,IAAI,YAAY,GAAG,IAAI;yCA9InD,2BAA2B;2CAA3B,2BAA2B;CAyJvC"}
1
+ {"version":3,"file":"docx-artifact-viewer.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/plugins/docx-artifact-viewer.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAE,iBAAiB,EAAmB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;;AAE3E;;;;;;;;GAQG;AACH,qBAyGa,2BAA4B,SAAQ,iCAAkC,YAAW,MAAM;IA6BhG,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,GAAG;IA9BN,SAAS,UAAQ;IACjB,aAAa,UAAS;IAE7B,6CAA6C;IAC7C,IAAW,aAAa,YAEvB;IACD,6CAA6C;IAC7C,IAAW,aAAa,CAAC,KAAK,SAAA,EAE7B;IACM,YAAY,SAAM;IAClB,QAAQ,EAAE,QAAQ,CAAM;IAE/B,wCAAwC;IACxC,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IACD,wCAAwC;IACxC,IAAW,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAElC;IAED,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,WAAW,CAAM;gBAGf,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,YAAY,EACvB,GAAG,EAAE,iBAAiB;IAKhC,IAAoB,iBAAiB,IAAI,OAAO,CAE/C;IAEK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcxC,0CAA0C;IAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,IAAI,IAAI;IAOtB,uCAAuC;IAChC,OAAO,IAAI,IAAI;YAMR,YAAY;YAuCZ,iBAAiB;YAUjB,kBAAkB;IAQhC,qEAAqE;IACrE,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,SAAS;IAMD,uBAAuB,IAAI,YAAY,GAAG,IAAI;yCA1KnD,2BAA2B;2CAA3B,2BAA2B;CAqLvC"}