@memberjunction/ng-entity-viewer 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 (81) hide show
  1. package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts +18 -2
  2. package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts.map +1 -1
  3. package/dist/lib/aggregate-panel/aggregate-panel.component.js +47 -18
  4. package/dist/lib/aggregate-panel/aggregate-panel.component.js.map +1 -1
  5. package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.d.ts +22 -0
  6. package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.d.ts.map +1 -1
  7. package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.js +57 -13
  8. package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.js.map +1 -1
  9. package/dist/lib/entity-cards/entity-cards.component.d.ts +68 -5
  10. package/dist/lib/entity-cards/entity-cards.component.d.ts.map +1 -1
  11. package/dist/lib/entity-cards/entity-cards.component.js +213 -73
  12. package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
  13. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +156 -14
  14. package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
  15. package/dist/lib/entity-data-grid/entity-data-grid.component.js +432 -138
  16. package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
  17. package/dist/lib/entity-data-grid/events/grid-events.js +67 -67
  18. package/dist/lib/entity-data-grid/events/grid-events.js.map +1 -1
  19. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts +112 -8
  20. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts.map +1 -1
  21. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +255 -69
  22. package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
  23. package/dist/lib/entity-viewer/entity-viewer.component.d.ts +11 -0
  24. package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
  25. package/dist/lib/entity-viewer/entity-viewer.component.js +45 -8
  26. package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
  27. package/dist/lib/pill/pill.component.d.ts +13 -3
  28. package/dist/lib/pill/pill.component.d.ts.map +1 -1
  29. package/dist/lib/pill/pill.component.js +34 -10
  30. package/dist/lib/pill/pill.component.js.map +1 -1
  31. package/dist/lib/quick-save-dialog/quick-save-dialog.component.d.ts +29 -3
  32. package/dist/lib/quick-save-dialog/quick-save-dialog.component.d.ts.map +1 -1
  33. package/dist/lib/quick-save-dialog/quick-save-dialog.component.js +173 -114
  34. package/dist/lib/quick-save-dialog/quick-save-dialog.component.js.map +1 -1
  35. package/dist/lib/recycle-bin/recycle-bin.component.d.ts +4 -0
  36. package/dist/lib/recycle-bin/recycle-bin.component.d.ts.map +1 -1
  37. package/dist/lib/recycle-bin/recycle-bin.component.js +10 -2
  38. package/dist/lib/recycle-bin/recycle-bin.component.js.map +1 -1
  39. package/dist/lib/utils/aggregate-field.util.d.ts +21 -0
  40. package/dist/lib/utils/aggregate-field.util.d.ts.map +1 -0
  41. package/dist/lib/utils/aggregate-field.util.js +40 -0
  42. package/dist/lib/utils/aggregate-field.util.js.map +1 -0
  43. package/dist/lib/utils/highlight.util.d.ts +6 -0
  44. package/dist/lib/utils/highlight.util.d.ts.map +1 -1
  45. package/dist/lib/utils/highlight.util.js +23 -11
  46. package/dist/lib/utils/highlight.util.js.map +1 -1
  47. package/dist/lib/utils/record.util.d.ts +10 -0
  48. package/dist/lib/utils/record.util.d.ts.map +1 -1
  49. package/dist/lib/utils/record.util.js +20 -4
  50. package/dist/lib/utils/record.util.js.map +1 -1
  51. package/dist/lib/view-config-panel/view-config-panel.component.d.ts +22 -2
  52. package/dist/lib/view-config-panel/view-config-panel.component.d.ts.map +1 -1
  53. package/dist/lib/view-config-panel/view-config-panel.component.js +54 -14
  54. package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
  55. package/dist/lib/view-selector/view-selector.component.js +2 -2
  56. package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts +15 -3
  57. package/dist/lib/view-types/renderers/cards-view-renderer.component.d.ts.map +1 -1
  58. package/dist/lib/view-types/renderers/cards-view-renderer.component.js +33 -5
  59. package/dist/lib/view-types/renderers/cards-view-renderer.component.js.map +1 -1
  60. package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +160 -5
  61. package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -1
  62. package/dist/lib/view-types/renderers/grid-view-renderer.component.js +576 -36
  63. package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -1
  64. package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts +16 -2
  65. package/dist/lib/view-types/renderers/map-view-renderer.component.d.ts.map +1 -1
  66. package/dist/lib/view-types/renderers/map-view-renderer.component.js +37 -9
  67. package/dist/lib/view-types/renderers/map-view-renderer.component.js.map +1 -1
  68. package/dist/lib/view-types/view-type.contracts.js.map +1 -1
  69. package/dist/lib/view-workspace/view-workspace.component.d.ts +235 -24
  70. package/dist/lib/view-workspace/view-workspace.component.d.ts.map +1 -1
  71. package/dist/lib/view-workspace/view-workspace.component.js +600 -174
  72. package/dist/lib/view-workspace/view-workspace.component.js.map +1 -1
  73. package/dist/module.d.ts +5 -4
  74. package/dist/module.d.ts.map +1 -1
  75. package/dist/module.js +8 -1
  76. package/dist/module.js.map +1 -1
  77. package/dist/public-api.d.ts +1 -0
  78. package/dist/public-api.d.ts.map +1 -1
  79. package/dist/public-api.js +1 -0
  80. package/dist/public-api.js.map +1 -1
  81. package/package.json +21 -20
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.util.js","sourceRoot":"","sources":["../../../src/lib/utils/highlight.util.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * HighlightUtil - Utility class for highlighting search matches in text\n *\n * This class provides methods to:\n * 1. Check if text matches a search term (with SQL-style % wildcard support)\n * 2. Highlight matching portions of text with HTML markup\n *\n * The key distinction is that highlighting should only occur when the text\n * actually matches the search pattern. For wildcard searches like \"food%ass\",\n * the text must contain \"food\" followed by \"ass\" in order - we shouldn't\n * highlight partial matches that don't satisfy the full pattern.\n */\nexport class HighlightUtil {\n /**\n * Check if a value matches the search term (supports SQL-style % wildcards)\n * This is used for filtering records.\n *\n * @param value The text value to check\n * @param searchTerm The search term (may include % wildcards)\n * @returns true if the value matches the search pattern\n */\n static matches(value: string, searchTerm: string): boolean {\n if (!value || !searchTerm) return false;\n\n const lowerValue = value.toLowerCase();\n const lowerTerm = searchTerm.toLowerCase().trim();\n\n if (!lowerTerm.includes('%')) {\n // No wildcards - simple substring match\n return lowerValue.includes(lowerTerm);\n }\n\n // Split by % to get fragments that must appear in order\n const fragments = lowerTerm.split('%').filter(s => s.length > 0);\n\n if (fragments.length === 0) {\n // Just wildcards, matches everything\n return true;\n }\n\n // Each fragment must appear in the value, in order\n let searchStartIndex = 0;\n for (const fragment of fragments) {\n const foundIndex = lowerValue.indexOf(fragment, searchStartIndex);\n if (foundIndex === -1) {\n return false;\n }\n searchStartIndex = foundIndex + fragment.length;\n }\n\n return true;\n }\n\n /**\n * Highlight matching text in a string based on the filter text.\n * IMPORTANT: Only highlights if the text actually matches the pattern.\n * For wildcard searches, all segments must be present in order.\n *\n * @param text The text to highlight\n * @param searchTerm The search term (may include % wildcards)\n * @param escapeHtml Whether to escape HTML characters (default: true)\n * @returns HTML string with highlighted matches, or the original text if no match\n */\n static highlight(text: string, searchTerm: string, escapeHtml: boolean = true): string {\n if (!text) return '';\n if (!searchTerm || searchTerm.trim() === '') {\n return escapeHtml ? this.escapeHtml(text) : text;\n }\n\n const trimmedSearch = searchTerm.trim();\n\n // First check if this text actually matches the pattern\n if (!this.matches(text, trimmedSearch)) {\n // No match - return text without highlighting\n return escapeHtml ? this.escapeHtml(text) : text;\n }\n\n // Text matches - now apply highlighting\n if (!trimmedSearch.includes('%')) {\n // Simple case: no wildcards, highlight the exact match\n return this.highlightSimple(text, trimmedSearch, escapeHtml);\n }\n\n // Wildcard case: highlight each segment that appears in order\n return this.highlightWildcard(text, trimmedSearch, escapeHtml);\n }\n\n /**\n * Highlight a simple (non-wildcard) search term\n */\n private static highlightSimple(text: string, searchTerm: string, escapeHtml: boolean): string {\n const regex = new RegExp(`(${this.escapeRegex(searchTerm)})`, 'gi');\n\n if (escapeHtml) {\n // Need to escape HTML first, then apply highlighting\n // Find all match positions first\n const matches = this.findMatchPositions(text, [searchTerm]);\n return this.buildHighlightedString(text, matches, true);\n } else {\n return text.replace(regex, '<span class=\"highlight-match\">$1</span>');\n }\n }\n\n /**\n * Highlight a wildcard search term (segments separated by %)\n * Only highlights segments that appear in the correct order\n */\n private static highlightWildcard(text: string, searchTerm: string, escapeHtml: boolean): string {\n const segments = searchTerm.split('%').filter(s => s.length > 0);\n if (segments.length === 0) {\n return escapeHtml ? this.escapeHtml(text) : text;\n }\n\n // Find positions of each segment in order (only the first occurrence that maintains order)\n const matches = this.findOrderedMatchPositions(text, segments);\n\n if (matches.length === 0) {\n return escapeHtml ? this.escapeHtml(text) : text;\n }\n\n return this.buildHighlightedString(text, matches, escapeHtml);\n }\n\n /**\n * Find all positions of segments in text (for simple highlighting)\n */\n private static findMatchPositions(text: string, segments: string[]): MatchRange[] {\n const matches: MatchRange[] = [];\n const lowerText = text.toLowerCase();\n\n for (const segment of segments) {\n const lowerSegment = segment.toLowerCase();\n let searchStart = 0;\n while (searchStart < lowerText.length) {\n const idx = lowerText.indexOf(lowerSegment, searchStart);\n if (idx === -1) break;\n matches.push({ start: idx, end: idx + segment.length });\n searchStart = idx + 1;\n }\n }\n\n return this.mergeOverlappingRanges(matches);\n }\n\n /**\n * Find positions of segments that appear in order (for wildcard highlighting)\n * This ensures we only highlight the segments that form the actual match\n */\n private static findOrderedMatchPositions(text: string, segments: string[]): MatchRange[] {\n const matches: MatchRange[] = [];\n const lowerText = text.toLowerCase();\n\n let searchStart = 0;\n for (const segment of segments) {\n const lowerSegment = segment.toLowerCase();\n const idx = lowerText.indexOf(lowerSegment, searchStart);\n if (idx === -1) {\n // This shouldn't happen if matches() returned true, but be safe\n return [];\n }\n matches.push({ start: idx, end: idx + segment.length });\n searchStart = idx + segment.length;\n }\n\n return this.mergeOverlappingRanges(matches);\n }\n\n /**\n * Merge overlapping or adjacent ranges\n */\n private static mergeOverlappingRanges(matches: MatchRange[]): MatchRange[] {\n if (matches.length === 0) return [];\n\n // Sort by start position\n matches.sort((a, b) => a.start - b.start);\n\n const merged: MatchRange[] = [];\n for (const match of matches) {\n if (merged.length === 0 || merged[merged.length - 1].end < match.start) {\n merged.push({ ...match });\n } else {\n // Extend the previous range if overlapping\n merged[merged.length - 1].end = Math.max(merged[merged.length - 1].end, match.end);\n }\n }\n\n return merged;\n }\n\n /**\n * Build the final highlighted string from match ranges\n */\n private static buildHighlightedString(text: string, ranges: MatchRange[], escapeHtml: boolean): string {\n let result = '';\n let lastEnd = 0;\n\n for (const range of ranges) {\n // Add text before this match\n const before = text.substring(lastEnd, range.start);\n result += escapeHtml ? this.escapeHtml(before) : before;\n\n // Add highlighted match\n const match = text.substring(range.start, range.end);\n result += '<span class=\"highlight-match\">';\n result += escapeHtml ? this.escapeHtml(match) : match;\n result += '</span>';\n\n lastEnd = range.end;\n }\n\n // Add remaining text\n const remaining = text.substring(lastEnd);\n result += escapeHtml ? this.escapeHtml(remaining) : remaining;\n\n return result;\n }\n\n /**\n * Escape special regex characters\n */\n private static escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n static escapeHtml(text: string): string {\n if (typeof document !== 'undefined') {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n // Fallback for SSR\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n}\n\n/**\n * Interface for match position ranges\n */\ninterface MatchRange {\n start: number;\n end: number;\n}\n"]}
1
+ {"version":3,"file":"highlight.util.js","sourceRoot":"","sources":["../../../src/lib/utils/highlight.util.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * HighlightUtil - Utility class for highlighting search matches in text\n *\n * This class provides methods to:\n * 1. Check if text matches a search term (with SQL-style % wildcard support)\n * 2. Highlight matching portions of text with HTML markup\n *\n * The key distinction is that highlighting should only occur when the text\n * actually matches the search pattern. For wildcard searches like \"food%ass\",\n * the text must contain \"food\" followed by \"ass\" in order - we shouldn't\n * highlight partial matches that don't satisfy the full pattern.\n */\nexport class HighlightUtil {\n /**\n * Check if a value matches the search term (supports SQL-style % wildcards)\n * This is used for filtering records.\n *\n * @param value The text value to check\n * @param searchTerm The search term (may include % wildcards)\n * @returns true if the value matches the search pattern\n */\n static Matches(value: string, searchTerm: string): boolean {\n if (!value || !searchTerm) return false;\n\n const lowerValue = value.toLowerCase();\n const lowerTerm = searchTerm.toLowerCase().trim();\n\n if (!lowerTerm.includes('%')) {\n // No wildcards - simple substring match\n return lowerValue.includes(lowerTerm);\n }\n\n // Split by % to get fragments that must appear in order\n const fragments = lowerTerm.split('%').filter(s => s.length > 0);\n\n if (fragments.length === 0) {\n // Just wildcards, matches everything\n return true;\n }\n\n // Each fragment must appear in the value, in order\n let searchStartIndex = 0;\n for (const fragment of fragments) {\n const foundIndex = lowerValue.indexOf(fragment, searchStartIndex);\n if (foundIndex === -1) {\n return false;\n }\n searchStartIndex = foundIndex + fragment.length;\n }\n\n return true;\n }\n\n /** @deprecated Use {@link Matches}. */\n static matches(value: string, searchTerm: string): boolean {\n return this.Matches(value, searchTerm);\n }\n\n /**\n * Highlight matching text in a string based on the filter text.\n * IMPORTANT: Only highlights if the text actually matches the pattern.\n * For wildcard searches, all segments must be present in order.\n *\n * @param text The text to highlight\n * @param searchTerm The search term (may include % wildcards)\n * @param escapeHtml Whether to escape HTML characters (default: true)\n * @returns HTML string with highlighted matches, or the original text if no match\n */\n static Highlight(text: string, searchTerm: string, escapeHtml: boolean = true): string {\n if (!text) return '';\n if (!searchTerm || searchTerm.trim() === '') {\n return escapeHtml ? this.EscapeHtml(text) : text;\n }\n\n const trimmedSearch = searchTerm.trim();\n\n // First check if this text actually matches the pattern\n if (!this.Matches(text, trimmedSearch)) {\n // No match - return text without highlighting\n return escapeHtml ? this.EscapeHtml(text) : text;\n }\n\n // Text matches - now apply highlighting\n if (!trimmedSearch.includes('%')) {\n // Simple case: no wildcards, highlight the exact match\n return this.highlightSimple(text, trimmedSearch, escapeHtml);\n }\n\n // Wildcard case: highlight each segment that appears in order\n return this.highlightWildcard(text, trimmedSearch, escapeHtml);\n }\n\n /** @deprecated Use {@link Highlight}. */\n static highlight(text: string, searchTerm: string, escapeHtml: boolean = true): string {\n return this.Highlight(text, searchTerm, escapeHtml);\n }\n\n /**\n * Highlight a simple (non-wildcard) search term\n */\n private static highlightSimple(text: string, searchTerm: string, escapeHtml: boolean): string {\n const regex = new RegExp(`(${this.escapeRegex(searchTerm)})`, 'gi');\n\n if (escapeHtml) {\n // Need to escape HTML first, then apply highlighting\n // Find all match positions first\n const matches = this.findMatchPositions(text, [searchTerm]);\n return this.buildHighlightedString(text, matches, true);\n } else {\n return text.replace(regex, '<span class=\"highlight-match\">$1</span>');\n }\n }\n\n /**\n * Highlight a wildcard search term (segments separated by %)\n * Only highlights segments that appear in the correct order\n */\n private static highlightWildcard(text: string, searchTerm: string, escapeHtml: boolean): string {\n const segments = searchTerm.split('%').filter(s => s.length > 0);\n if (segments.length === 0) {\n return escapeHtml ? this.EscapeHtml(text) : text;\n }\n\n // Find positions of each segment in order (only the first occurrence that maintains order)\n const matches = this.findOrderedMatchPositions(text, segments);\n\n if (matches.length === 0) {\n return escapeHtml ? this.EscapeHtml(text) : text;\n }\n\n return this.buildHighlightedString(text, matches, escapeHtml);\n }\n\n /**\n * Find all positions of segments in text (for simple highlighting)\n */\n private static findMatchPositions(text: string, segments: string[]): MatchRange[] {\n const matches: MatchRange[] = [];\n const lowerText = text.toLowerCase();\n\n for (const segment of segments) {\n const lowerSegment = segment.toLowerCase();\n let searchStart = 0;\n while (searchStart < lowerText.length) {\n const idx = lowerText.indexOf(lowerSegment, searchStart);\n if (idx === -1) break;\n matches.push({ start: idx, end: idx + segment.length });\n searchStart = idx + 1;\n }\n }\n\n return this.mergeOverlappingRanges(matches);\n }\n\n /**\n * Find positions of segments that appear in order (for wildcard highlighting)\n * This ensures we only highlight the segments that form the actual match\n */\n private static findOrderedMatchPositions(text: string, segments: string[]): MatchRange[] {\n const matches: MatchRange[] = [];\n const lowerText = text.toLowerCase();\n\n let searchStart = 0;\n for (const segment of segments) {\n const lowerSegment = segment.toLowerCase();\n const idx = lowerText.indexOf(lowerSegment, searchStart);\n if (idx === -1) {\n // This shouldn't happen if matches() returned true, but be safe\n return [];\n }\n matches.push({ start: idx, end: idx + segment.length });\n searchStart = idx + segment.length;\n }\n\n return this.mergeOverlappingRanges(matches);\n }\n\n /**\n * Merge overlapping or adjacent ranges\n */\n private static mergeOverlappingRanges(matches: MatchRange[]): MatchRange[] {\n if (matches.length === 0) return [];\n\n // Sort by start position\n matches.sort((a, b) => a.start - b.start);\n\n const merged: MatchRange[] = [];\n for (const match of matches) {\n if (merged.length === 0 || merged[merged.length - 1].end < match.start) {\n merged.push({ ...match });\n } else {\n // Extend the previous range if overlapping\n merged[merged.length - 1].end = Math.max(merged[merged.length - 1].end, match.end);\n }\n }\n\n return merged;\n }\n\n /**\n * Build the final highlighted string from match ranges\n */\n private static buildHighlightedString(text: string, ranges: MatchRange[], escapeHtml: boolean): string {\n let result = '';\n let lastEnd = 0;\n\n for (const range of ranges) {\n // Add text before this match\n const before = text.substring(lastEnd, range.start);\n result += escapeHtml ? this.EscapeHtml(before) : before;\n\n // Add highlighted match\n const match = text.substring(range.start, range.end);\n result += '<span class=\"highlight-match\">';\n result += escapeHtml ? this.EscapeHtml(match) : match;\n result += '</span>';\n\n lastEnd = range.end;\n }\n\n // Add remaining text\n const remaining = text.substring(lastEnd);\n result += escapeHtml ? this.EscapeHtml(remaining) : remaining;\n\n return result;\n }\n\n /**\n * Escape special regex characters\n */\n private static escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n /**\n * Escape HTML special characters to prevent XSS\n */\n static EscapeHtml(text: string): string {\n if (typeof document !== 'undefined') {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n }\n // Fallback for SSR\n return text\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#039;');\n }\n\n /** @deprecated Use {@link EscapeHtml}. */\n static escapeHtml(text: string): string {\n return this.EscapeHtml(text);\n }\n}\n\n/**\n * Interface for match position ranges\n */\ninterface MatchRange {\n start: number;\n end: number;\n}\n"]}
@@ -4,11 +4,15 @@ import { ViewGridState } from '../types';
4
4
  * Build a CompositeKey from a plain record using EntityInfo PK fields.
5
5
  * Works with both plain objects (from ResultType: 'simple') and BaseEntity instances.
6
6
  */
7
+ export declare function BuildCompositeKey(record: Record<string, unknown>, entityInfo: EntityInfo): CompositeKey;
8
+ /** @deprecated Use {@link BuildCompositeKey}. */
7
9
  export declare function buildCompositeKey(record: Record<string, unknown>, entityInfo: EntityInfo): CompositeKey;
8
10
  /**
9
11
  * Build a PK concatenated string matching CompositeKey.ToConcatenatedString() format.
10
12
  * Used as a stable row identifier for selection, tracking, and map keys.
11
13
  */
14
+ export declare function BuildPkString(record: Record<string, unknown>, entityInfo: EntityInfo): string;
15
+ /** @deprecated Use {@link BuildPkString}. */
12
16
  export declare function buildPkString(record: Record<string, unknown>, entityInfo: EntityInfo): string;
13
17
  /**
14
18
  * Rewrite host-supplied column field names to the entity's OWN spelling.
@@ -28,6 +32,10 @@ export declare function buildPkString(record: Record<string, unknown>, entityInf
28
32
  * ones as copies — the host's own array and objects are never mutated. A name matching no field is
29
33
  * left alone for the existing validation to reject.
30
34
  */
35
+ export declare function CanonicalizeColumnFields<T extends {
36
+ field: string;
37
+ }>(entityInfo: EntityInfo, columns: readonly T[]): T[];
38
+ /** @deprecated Use {@link CanonicalizeColumnFields}. */
31
39
  export declare function canonicalizeColumnFields<T extends {
32
40
  field: string;
33
41
  }>(entityInfo: EntityInfo, columns: readonly T[]): T[];
@@ -35,5 +43,7 @@ export declare function canonicalizeColumnFields<T extends {
35
43
  * Compute the Fields array to request from RunView based on EntityInfo and optional grid state.
36
44
  * Includes: PK fields, NameField, visible display fields, and timestamp fields.
37
45
  */
46
+ export declare function ComputeFieldsList(entityInfo: EntityInfo, gridState?: ViewGridState | null, hostColumnFields?: readonly string[] | null): string[];
47
+ /** @deprecated Use {@link ComputeFieldsList}. */
38
48
  export declare function computeFieldsList(entityInfo: EntityInfo, gridState?: ViewGridState | null, hostColumnFields?: readonly string[] | null): string[];
39
49
  //# sourceMappingURL=record.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.util.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/record.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,CAEvG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAE7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAChE,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,CAAC,EAAE,GACtB,CAAC,EAAE,CAKL;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,EAChC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC5C,MAAM,EAAE,CA2FV"}
1
+ {"version":3,"file":"record.util.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/record.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,CAEvG;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY,CAEvG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAE7F;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAE7F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAChE,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,CAAC,EAAE,GACtB,CAAC,EAAE,CAKL;AAED,wDAAwD;AACxD,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAChE,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,SAAS,CAAC,EAAE,GACtB,CAAC,EAAE,CAEL;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,EAChC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC5C,MAAM,EAAE,CA2FV;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,EAChC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAC5C,MAAM,EAAE,CAEV"}
@@ -3,15 +3,23 @@ import { CompositeKey } from '@memberjunction/core';
3
3
  * Build a CompositeKey from a plain record using EntityInfo PK fields.
4
4
  * Works with both plain objects (from ResultType: 'simple') and BaseEntity instances.
5
5
  */
6
- export function buildCompositeKey(record, entityInfo) {
6
+ export function BuildCompositeKey(record, entityInfo) {
7
7
  return CompositeKey.FromEntityRecord(entityInfo, record);
8
8
  }
9
+ /** @deprecated Use {@link BuildCompositeKey}. */
10
+ export function buildCompositeKey(record, entityInfo) {
11
+ return BuildCompositeKey(record, entityInfo);
12
+ }
9
13
  /**
10
14
  * Build a PK concatenated string matching CompositeKey.ToConcatenatedString() format.
11
15
  * Used as a stable row identifier for selection, tracking, and map keys.
12
16
  */
17
+ export function BuildPkString(record, entityInfo) {
18
+ return BuildCompositeKey(record, entityInfo).ToConcatenatedString();
19
+ }
20
+ /** @deprecated Use {@link BuildPkString}. */
13
21
  export function buildPkString(record, entityInfo) {
14
- return buildCompositeKey(record, entityInfo).ToConcatenatedString();
22
+ return BuildPkString(record, entityInfo);
15
23
  }
16
24
  /**
17
25
  * Rewrite host-supplied column field names to the entity's OWN spelling.
@@ -31,17 +39,21 @@ export function buildPkString(record, entityInfo) {
31
39
  * ones as copies — the host's own array and objects are never mutated. A name matching no field is
32
40
  * left alone for the existing validation to reject.
33
41
  */
34
- export function canonicalizeColumnFields(entityInfo, columns) {
42
+ export function CanonicalizeColumnFields(entityInfo, columns) {
35
43
  return columns.map(col => {
36
44
  const field = entityInfo.Fields.find(f => f.Name.toLowerCase() === col.field.toLowerCase());
37
45
  return field && field.Name !== col.field ? { ...col, field: field.Name } : col;
38
46
  });
39
47
  }
48
+ /** @deprecated Use {@link CanonicalizeColumnFields}. */
49
+ export function canonicalizeColumnFields(entityInfo, columns) {
50
+ return CanonicalizeColumnFields(entityInfo, columns);
51
+ }
40
52
  /**
41
53
  * Compute the Fields array to request from RunView based on EntityInfo and optional grid state.
42
54
  * Includes: PK fields, NameField, visible display fields, and timestamp fields.
43
55
  */
44
- export function computeFieldsList(entityInfo, gridState, hostColumnFields) {
56
+ export function ComputeFieldsList(entityInfo, gridState, hostColumnFields) {
45
57
  const fields = new Set();
46
58
  // Fields the HOST explicitly asked to display. Without these, a page that supplies `[Columns]`
47
59
  // renders columns whose data was never fetched — every cell shows as empty, which reads as a
@@ -125,4 +137,8 @@ export function computeFieldsList(entityInfo, gridState, hostColumnFields) {
125
137
  }
126
138
  return Array.from(fields);
127
139
  }
140
+ /** @deprecated Use {@link ComputeFieldsList}. */
141
+ export function computeFieldsList(entityInfo, gridState, hostColumnFields) {
142
+ return ComputeFieldsList(entityInfo, gridState, hostColumnFields);
143
+ }
128
144
  //# sourceMappingURL=record.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.util.js","sourceRoot":"","sources":["../../../src/lib/utils/record.util.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityInfo, CompositeKey } from '@memberjunction/core';\nimport { ViewGridState } from '../types';\n\n/**\n * Build a CompositeKey from a plain record using EntityInfo PK fields.\n * Works with both plain objects (from ResultType: 'simple') and BaseEntity instances.\n */\nexport function buildCompositeKey(record: Record<string, unknown>, entityInfo: EntityInfo): CompositeKey {\n return CompositeKey.FromEntityRecord(entityInfo, record);\n}\n\n/**\n * Build a PK concatenated string matching CompositeKey.ToConcatenatedString() format.\n * Used as a stable row identifier for selection, tracking, and map keys.\n */\nexport function buildPkString(record: Record<string, unknown>, entityInfo: EntityInfo): string {\n return buildCompositeKey(record, entityInfo).ToConcatenatedString();\n}\n\n/**\n * Rewrite host-supplied column field names to the entity's OWN spelling.\n *\n * A page may reasonably write `field: 'name'` where the entity says `Name`, and the grid resolves\n * host names case-insensitively when it looks up metadata — so such a column *renders*. But the\n * spelling does not stay cosmetic: it becomes the AG Grid colDef's `field`, and therefore its\n * `colId`, and therefore the key in captured grid state and sort settings. Meanwhile the row objects\n * the grid builds are keyed by the ENTITY's spelling. Anything that addresses data or matches state\n * by that name then misses: cells resolve to undefined, the captured state drops the column, a saved\n * sort is discarded.\n *\n * Normalising once, here, is what keeps those two vocabularies from diverging — the alternative is a\n * case-insensitive comparison at every one of those sites, which is the state that produced the bug.\n *\n * Unchanged columns are returned by REFERENCE (so callers can detect a no-op cheaply), and changed\n * ones as copies — the host's own array and objects are never mutated. A name matching no field is\n * left alone for the existing validation to reject.\n */\nexport function canonicalizeColumnFields<T extends { field: string }>(\n entityInfo: EntityInfo,\n columns: readonly T[],\n): T[] {\n return columns.map(col => {\n const field = entityInfo.Fields.find(f => f.Name.toLowerCase() === col.field.toLowerCase());\n return field && field.Name !== col.field ? { ...col, field: field.Name } : col;\n });\n}\n\n/**\n * Compute the Fields array to request from RunView based on EntityInfo and optional grid state.\n * Includes: PK fields, NameField, visible display fields, and timestamp fields.\n */\nexport function computeFieldsList(\n entityInfo: EntityInfo,\n gridState?: ViewGridState | null,\n hostColumnFields?: readonly string[] | null,\n): string[] {\n const fields = new Set<string>();\n\n // Fields the HOST explicitly asked to display. Without these, a page that supplies `[Columns]`\n // renders columns whose data was never fetched — every cell shows as empty, which reads as a\n // data bug rather than a missing SELECT. They are added unconditionally (not as an alternative\n // to the branches below) because a host column list says what to SHOW, while DefaultInView and\n // the grid state say what to fetch by default; the host's columns must be a superset, not a\n // replacement. Names are validated against the entity so a stale column can't break the query.\n if (hostColumnFields?.length) {\n for (const name of hostColumnFields) {\n const field = entityInfo.Fields.find(f => f.Name.toLowerCase() === name.toLowerCase());\n // Add the ENTITY's spelling, not the host's. A page may reasonably write `field: 'name'`\n // where the entity says `Name`, and metadata lookups here are case-insensitive so the\n // column is accepted — but this list goes on the wire. On the GraphQL transport it is\n // interpolated straight into the selection set, and GraphQL field names are case\n // SENSITIVE, so the host's spelling produces `Cannot query field \"name\"` and the whole\n // view fails: an error and zero rows, not one odd column. (This Set is case-sensitive\n // too, so the two spellings would not even collapse into one entry.)\n //\n // Callers that hand this function raw host names should also run them through\n // `canonicalizeColumnFields` for the column definitions, or the rendered column will\n // address a key the fetched rows do not have.\n if (field) {\n fields.add(field.Name);\n }\n }\n }\n\n // Always include PK fields\n for (const pk of entityInfo.PrimaryKeys) {\n fields.add(pk.Name);\n }\n\n // Include NameField for display name resolution\n if (entityInfo.NameField) {\n fields.add(entityInfo.NameField.Name);\n }\n\n // Include visible fields from gridState or DefaultInView\n if (gridState?.columnSettings?.length) {\n for (const col of gridState.columnSettings) {\n if (!col.hidden) {\n fields.add(col.Name);\n }\n }\n } else {\n // First try to use DefaultInView fields\n const defaultInViewFields = entityInfo.Fields.filter(f => f.DefaultInView);\n\n if (defaultInViewFields.length > 0) {\n for (const f of defaultInViewFields) {\n fields.add(f.Name);\n }\n } else {\n // Fallback: when no DefaultInView fields are defined, include the first 10\n // non-system fields. This matches the fallback in generateAgColumnDefs()\n // which uses getDefaultFieldsFallback() to show columns even when\n // DefaultInView isn't configured.\n const fallbackFields = entityInfo.Fields\n .filter(f =>\n !f.Name.startsWith('__mj_') &&\n !(f.IsPrimaryKey && f.SQLFullType?.toLowerCase() === 'uniqueidentifier') &&\n (f.Length <= 500 || f.Length < 0) // Exclude very long text unless nvarchar(max)\n )\n .slice(0, 10);\n\n for (const f of fallbackFields) {\n fields.add(f.Name);\n }\n }\n }\n\n // Include __mj timestamp fields (commonly used for sort and display)\n fields.add('__mj_CreatedAt');\n fields.add('__mj_UpdatedAt');\n\n // Lat/lng only — never address-tagged fields. The map uses pre-geocoded\n // coords, never text-based location guessing.\n for (const f of entityInfo.Fields) {\n if (f.ExtendedType === 'GeoLatitude' || f.ExtendedType === 'GeoLongitude') {\n fields.add(f.Name);\n }\n }\n // Gated on SupportsGeoCoding — BoundaryGeoJSON is nvarchar(max), wasteful\n // to pull for grid views that won't render a map.\n if (entityInfo.SupportsGeoCoding && entityInfo.Fields.some(f => f.Name === 'BoundaryGeoJSON')) {\n fields.add('BoundaryGeoJSON');\n }\n\n return Array.from(fields);\n}\n"]}
1
+ {"version":3,"file":"record.util.js","sourceRoot":"","sources":["../../../src/lib/utils/record.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGhE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA+B,EAAE,UAAsB;IACrF,OAAO,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAAC,MAA+B,EAAE,UAAsB;IACrF,OAAO,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAA+B,EAAE,UAAsB;IACjF,OAAO,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,oBAAoB,EAAE,CAAC;AACxE,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,MAA+B,EAAE,UAAsB;IACjF,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB,CACpC,UAAsB,EACtB,OAAqB;IAErB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACrB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5F,OAAO,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,wBAAwB,CACpC,UAAsB,EACtB,OAAqB;IAErB,OAAO,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC7B,UAAsB,EACtB,SAAgC,EAChC,gBAA2C;IAE3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,+FAA+F;IAC/F,6FAA6F;IAC7F,+FAA+F;IAC/F,+FAA+F;IAC/F,4FAA4F;IAC5F,+FAA+F;IAC/F,IAAI,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACvF,yFAAyF;YACzF,sFAAsF;YACtF,sFAAsF;YACtF,iFAAiF;YACjF,uFAAuF;YACvF,sFAAsF;YACtF,qEAAqE;YACrE,EAAE;YACF,8EAA8E;YAC9E,qFAAqF;YACrF,8CAA8C;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,yDAAyD;IACzD,IAAI,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,wCAAwC;QACxC,MAAM,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAE3E,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE,CAAC;gBAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,2EAA2E;YAC3E,yEAAyE;YACzE,kEAAkE;YAClE,kCAAkC;YAClC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM;iBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CACR,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3B,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,kBAAkB,CAAC;gBACxE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAE,8CAA8C;aACpF;iBACA,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAElB,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAE7B,wEAAwE;IACxE,8CAA8C;IAC9C,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,YAAY,KAAK,aAAa,IAAI,CAAC,CAAC,YAAY,KAAK,cAAc,EAAE,CAAC;YACxE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,0EAA0E;IAC1E,kDAAkD;IAClD,IAAI,UAAU,CAAC,iBAAiB,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,EAAE,CAAC;QAC5F,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB,CAC7B,UAAsB,EACtB,SAAgC,EAChC,gBAA2C;IAE3C,OAAO,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import { EntityInfo, CompositeKey } from '@memberjunction/core';\nimport { ViewGridState } from '../types';\n\n/**\n * Build a CompositeKey from a plain record using EntityInfo PK fields.\n * Works with both plain objects (from ResultType: 'simple') and BaseEntity instances.\n */\nexport function BuildCompositeKey(record: Record<string, unknown>, entityInfo: EntityInfo): CompositeKey {\n return CompositeKey.FromEntityRecord(entityInfo, record);\n}\n\n/** @deprecated Use {@link BuildCompositeKey}. */\nexport function buildCompositeKey(record: Record<string, unknown>, entityInfo: EntityInfo): CompositeKey {\n return BuildCompositeKey(record, entityInfo);\n}\n\n/**\n * Build a PK concatenated string matching CompositeKey.ToConcatenatedString() format.\n * Used as a stable row identifier for selection, tracking, and map keys.\n */\nexport function BuildPkString(record: Record<string, unknown>, entityInfo: EntityInfo): string {\n return BuildCompositeKey(record, entityInfo).ToConcatenatedString();\n}\n\n/** @deprecated Use {@link BuildPkString}. */\nexport function buildPkString(record: Record<string, unknown>, entityInfo: EntityInfo): string {\n return BuildPkString(record, entityInfo);\n}\n\n/**\n * Rewrite host-supplied column field names to the entity's OWN spelling.\n *\n * A page may reasonably write `field: 'name'` where the entity says `Name`, and the grid resolves\n * host names case-insensitively when it looks up metadata — so such a column *renders*. But the\n * spelling does not stay cosmetic: it becomes the AG Grid colDef's `field`, and therefore its\n * `colId`, and therefore the key in captured grid state and sort settings. Meanwhile the row objects\n * the grid builds are keyed by the ENTITY's spelling. Anything that addresses data or matches state\n * by that name then misses: cells resolve to undefined, the captured state drops the column, a saved\n * sort is discarded.\n *\n * Normalising once, here, is what keeps those two vocabularies from diverging — the alternative is a\n * case-insensitive comparison at every one of those sites, which is the state that produced the bug.\n *\n * Unchanged columns are returned by REFERENCE (so callers can detect a no-op cheaply), and changed\n * ones as copies — the host's own array and objects are never mutated. A name matching no field is\n * left alone for the existing validation to reject.\n */\nexport function CanonicalizeColumnFields<T extends { field: string }>(\n entityInfo: EntityInfo,\n columns: readonly T[],\n): T[] {\n return columns.map(col => {\n const field = entityInfo.Fields.find(f => f.Name.toLowerCase() === col.field.toLowerCase());\n return field && field.Name !== col.field ? { ...col, field: field.Name } : col;\n });\n}\n\n/** @deprecated Use {@link CanonicalizeColumnFields}. */\nexport function canonicalizeColumnFields<T extends { field: string }>(\n entityInfo: EntityInfo,\n columns: readonly T[],\n): T[] {\n return CanonicalizeColumnFields(entityInfo, columns);\n}\n\n/**\n * Compute the Fields array to request from RunView based on EntityInfo and optional grid state.\n * Includes: PK fields, NameField, visible display fields, and timestamp fields.\n */\nexport function ComputeFieldsList(\n entityInfo: EntityInfo,\n gridState?: ViewGridState | null,\n hostColumnFields?: readonly string[] | null,\n): string[] {\n const fields = new Set<string>();\n\n // Fields the HOST explicitly asked to display. Without these, a page that supplies `[Columns]`\n // renders columns whose data was never fetched — every cell shows as empty, which reads as a\n // data bug rather than a missing SELECT. They are added unconditionally (not as an alternative\n // to the branches below) because a host column list says what to SHOW, while DefaultInView and\n // the grid state say what to fetch by default; the host's columns must be a superset, not a\n // replacement. Names are validated against the entity so a stale column can't break the query.\n if (hostColumnFields?.length) {\n for (const name of hostColumnFields) {\n const field = entityInfo.Fields.find(f => f.Name.toLowerCase() === name.toLowerCase());\n // Add the ENTITY's spelling, not the host's. A page may reasonably write `field: 'name'`\n // where the entity says `Name`, and metadata lookups here are case-insensitive so the\n // column is accepted — but this list goes on the wire. On the GraphQL transport it is\n // interpolated straight into the selection set, and GraphQL field names are case\n // SENSITIVE, so the host's spelling produces `Cannot query field \"name\"` and the whole\n // view fails: an error and zero rows, not one odd column. (This Set is case-sensitive\n // too, so the two spellings would not even collapse into one entry.)\n //\n // Callers that hand this function raw host names should also run them through\n // `canonicalizeColumnFields` for the column definitions, or the rendered column will\n // address a key the fetched rows do not have.\n if (field) {\n fields.add(field.Name);\n }\n }\n }\n\n // Always include PK fields\n for (const pk of entityInfo.PrimaryKeys) {\n fields.add(pk.Name);\n }\n\n // Include NameField for display name resolution\n if (entityInfo.NameField) {\n fields.add(entityInfo.NameField.Name);\n }\n\n // Include visible fields from gridState or DefaultInView\n if (gridState?.columnSettings?.length) {\n for (const col of gridState.columnSettings) {\n if (!col.hidden) {\n fields.add(col.Name);\n }\n }\n } else {\n // First try to use DefaultInView fields\n const defaultInViewFields = entityInfo.Fields.filter(f => f.DefaultInView);\n\n if (defaultInViewFields.length > 0) {\n for (const f of defaultInViewFields) {\n fields.add(f.Name);\n }\n } else {\n // Fallback: when no DefaultInView fields are defined, include the first 10\n // non-system fields. This matches the fallback in generateAgColumnDefs()\n // which uses getDefaultFieldsFallback() to show columns even when\n // DefaultInView isn't configured.\n const fallbackFields = entityInfo.Fields\n .filter(f =>\n !f.Name.startsWith('__mj_') &&\n !(f.IsPrimaryKey && f.SQLFullType?.toLowerCase() === 'uniqueidentifier') &&\n (f.Length <= 500 || f.Length < 0) // Exclude very long text unless nvarchar(max)\n )\n .slice(0, 10);\n\n for (const f of fallbackFields) {\n fields.add(f.Name);\n }\n }\n }\n\n // Include __mj timestamp fields (commonly used for sort and display)\n fields.add('__mj_CreatedAt');\n fields.add('__mj_UpdatedAt');\n\n // Lat/lng only — never address-tagged fields. The map uses pre-geocoded\n // coords, never text-based location guessing.\n for (const f of entityInfo.Fields) {\n if (f.ExtendedType === 'GeoLatitude' || f.ExtendedType === 'GeoLongitude') {\n fields.add(f.Name);\n }\n }\n // Gated on SupportsGeoCoding — BoundaryGeoJSON is nvarchar(max), wasteful\n // to pull for grid views that won't render a map.\n if (entityInfo.SupportsGeoCoding && entityInfo.Fields.some(f => f.Name === 'BoundaryGeoJSON')) {\n fields.add('BoundaryGeoJSON');\n }\n\n return Array.from(fields);\n}\n\n/** @deprecated Use {@link ComputeFieldsList}. */\nexport function computeFieldsList(\n entityInfo: EntityInfo,\n gridState?: ViewGridState | null,\n hostColumnFields?: readonly string[] | null,\n): string[] {\n return ComputeFieldsList(entityInfo, gridState, hostColumnFields);\n}\n"]}
@@ -130,6 +130,22 @@ export declare class ViewConfigPanelComponent extends BaseAngularComponent imple
130
130
  * Pre-populated sharing preference from the quick save dialog (used when DefaultSaveAsNew is true)
131
131
  */
132
132
  PendingNewViewIsShared: boolean;
133
+ /**
134
+ * Pre-populated traditional filter from the quick save dialog (used when DefaultSaveAsNew is
135
+ * true). Without it, reopening this panel from the dialog would reset the filter the user had
136
+ * already configured. {@link ExternalFilterState} can't carry it back: the staged filter is the
137
+ * very object this panel is already bound to, so that input never registers a change.
138
+ */
139
+ PendingNewViewFilterState: CompositeFilterDescriptor | null;
140
+ /**
141
+ * Pre-populated smart-filter toggle from the quick save dialog (used when DefaultSaveAsNew is
142
+ * true) — the smart-mode counterpart of {@link PendingNewViewFilterState}.
143
+ */
144
+ PendingNewViewSmartFilterEnabled: boolean;
145
+ /**
146
+ * Pre-populated smart-filter prompt from the quick save dialog (used when DefaultSaveAsNew is true)
147
+ */
148
+ PendingNewViewSmartFilterPrompt: string;
133
149
  /**
134
150
  * Emitted when user wants to duplicate the current view (F-005)
135
151
  */
@@ -435,7 +451,11 @@ export declare class ViewConfigPanelComponent extends BaseAngularComponent imple
435
451
  /**
436
452
  * Format a value for preview display
437
453
  */
438
- FormatPreviewValue(value: unknown, format: ColumnFormat | undefined): string;
454
+ /**
455
+ * @param field The column's field, so a SQL `date` previews as its stored calendar day rather
456
+ * than shifting into the reader's zone (MJ#4210).
457
+ */
458
+ FormatPreviewValue(value: unknown, format: ColumnFormat | undefined, field?: EntityFieldInfo): string;
439
459
  private formatNumber;
440
460
  private formatCurrency;
441
461
  private formatPercent;
@@ -593,6 +613,6 @@ export declare class ViewConfigPanelComponent extends BaseAngularComponent imple
593
613
  */
594
614
  private buildAggregatesConfig;
595
615
  static ɵfac: i0.ɵɵFactoryDeclaration<ViewConfigPanelComponent, never>;
596
- static ɵcmp: i0.ɵɵComponentDeclaration<ViewConfigPanelComponent, "mj-view-config-panel", never, { "Entity": { "alias": "Entity"; "required": false; }; "ViewEntity": { "alias": "ViewEntity"; "required": false; }; "IsOpen": { "alias": "IsOpen"; "required": false; }; "CurrentGridState": { "alias": "CurrentGridState"; "required": false; }; "SampleData": { "alias": "SampleData"; "required": false; }; "ExternalFilterState": { "alias": "ExternalFilterState"; "required": false; }; "DefaultSaveAsNew": { "alias": "DefaultSaveAsNew"; "required": false; }; "PendingNewViewName": { "alias": "PendingNewViewName"; "required": false; }; "PendingNewViewDescription": { "alias": "PendingNewViewDescription"; "required": false; }; "PendingNewViewIsShared": { "alias": "PendingNewViewIsShared"; "required": false; }; "IsSaving": { "alias": "IsSaving"; "required": false; }; }, { "Close": "Close"; "Save": "Save"; "SaveDefaults": "SaveDefaults"; "Delete": "Delete"; "OpenFilterDialogRequest": "OpenFilterDialogRequest"; "Duplicate": "Duplicate"; }, never, never, false, never>;
616
+ static ɵcmp: i0.ɵɵComponentDeclaration<ViewConfigPanelComponent, "mj-view-config-panel", never, { "Entity": { "alias": "Entity"; "required": false; }; "ViewEntity": { "alias": "ViewEntity"; "required": false; }; "IsOpen": { "alias": "IsOpen"; "required": false; }; "CurrentGridState": { "alias": "CurrentGridState"; "required": false; }; "SampleData": { "alias": "SampleData"; "required": false; }; "ExternalFilterState": { "alias": "ExternalFilterState"; "required": false; }; "DefaultSaveAsNew": { "alias": "DefaultSaveAsNew"; "required": false; }; "PendingNewViewName": { "alias": "PendingNewViewName"; "required": false; }; "PendingNewViewDescription": { "alias": "PendingNewViewDescription"; "required": false; }; "PendingNewViewIsShared": { "alias": "PendingNewViewIsShared"; "required": false; }; "PendingNewViewFilterState": { "alias": "PendingNewViewFilterState"; "required": false; }; "PendingNewViewSmartFilterEnabled": { "alias": "PendingNewViewSmartFilterEnabled"; "required": false; }; "PendingNewViewSmartFilterPrompt": { "alias": "PendingNewViewSmartFilterPrompt"; "required": false; }; "IsSaving": { "alias": "IsSaving"; "required": false; }; }, { "Close": "Close"; "Save": "Save"; "SaveDefaults": "SaveDefaults"; "Delete": "Delete"; "OpenFilterDialogRequest": "OpenFilterDialogRequest"; "Duplicate": "Duplicate"; }, never, never, false, never>;
597
617
  }
598
618
  //# sourceMappingURL=view-config-panel.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/view-config-panel/view-config-panel.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view-config-panel.component.d.ts","sourceRoot":"","sources":["../../../src/lib/view-config-panel/view-config-panel.component.ts"],"names":[],"mappings":"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"}