@memberjunction/ng-entity-viewer 6.1.3 → 6.2.0-edge.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts +18 -2
- package/dist/lib/aggregate-panel/aggregate-panel.component.d.ts.map +1 -1
- package/dist/lib/aggregate-panel/aggregate-panel.component.js +47 -18
- package/dist/lib/aggregate-panel/aggregate-panel.component.js.map +1 -1
- package/dist/lib/entity-cards/entity-cards.component.d.ts +1 -0
- package/dist/lib/entity-cards/entity-cards.component.d.ts.map +1 -1
- package/dist/lib/entity-cards/entity-cards.component.js +11 -2
- package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts +18 -0
- package/dist/lib/entity-data-grid/entity-data-grid.component.d.ts.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js +71 -25
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.d.ts.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js +10 -8
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts +11 -0
- package/dist/lib/entity-viewer/entity-viewer.component.d.ts.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js +29 -0
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/utils/aggregate-field.util.d.ts +21 -0
- package/dist/lib/utils/aggregate-field.util.d.ts.map +1 -0
- package/dist/lib/utils/aggregate-field.util.js +40 -0
- package/dist/lib/utils/aggregate-field.util.js.map +1 -0
- package/dist/lib/view-config-panel/view-config-panel.component.d.ts +5 -1
- package/dist/lib/view-config-panel/view-config-panel.component.d.ts.map +1 -1
- package/dist/lib/view-config-panel/view-config-panel.component.js +15 -8
- package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts +93 -3
- package/dist/lib/view-types/renderers/grid-view-renderer.component.d.ts.map +1 -1
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js +432 -10
- package/dist/lib/view-types/renderers/grid-view-renderer.component.js.map +1 -1
- package/dist/module.d.ts +5 -4
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +8 -1
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +1 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +20 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-cards.component.js","sourceRoot":"","sources":["../../../src/lib/entity-cards/entity-cards.component.ts","../../../src/lib/entity-cards/entity-cards.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, OnInit, SimpleChanges, ElementRef, AfterViewChecked, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { EntityInfo, EntityFieldInfo, EntityFieldValueListType, RunView, CoerceImageSrc } from '@memberjunction/core';\nimport { CardTemplate, CardDisplayField, CardFieldType, RecordSelectedEvent, RecordOpenedEvent } from '../types';\nimport { buildCompositeKey, buildPkString, computeFieldsList } from '../utils/record.util';\nimport { PillColorUtil } from '../pill/pill.component';\nimport { HighlightUtil } from '../utils/highlight.util';\n\n/**\n * Precomputed display field value for a card, resolved once per record per\n * (records/filter/template) change rather than via per-CD method calls.\n */\ninterface CardDisplayFieldVM {\n /** The underlying display field definition (name/type/label). */\n field: CardDisplayField;\n /** Boolean value (used when field.type === 'boolean'). */\n booleanValue: boolean;\n /** Numeric display string (used when field.type === 'number'). */\n numericValue: string;\n /** Date display string (used when field.type === 'date'). */\n dateValue: string;\n /** Highlighted text HTML (used for default/text fields). */\n highlightedText: string;\n}\n\n/**\n * Precomputed, per-record view-model backing a single card. Built once whenever\n * the source records, filter text, or template change — NOT on every Angular\n * change-detection cycle. Mirrors the canonical precompute pattern used by\n * conversations' MessageItemComponent (`_messageClasses` / `buildMessageClasses`).\n */\ninterface CardViewModel {\n /** The original record (passed through to event emitters). */\n record: Record<string, unknown>;\n /** Stable PK concatenated string — computed ONCE here instead of 4-5x/CD. */\n pkString: string;\n /** Stable track id for @for (falls back to record_<index> when no PK). */\n trackId: string;\n /** Whether this card is the currently selected record. */\n isSelected: boolean;\n /** Avatar/background color derived from the PK hash. */\n color: string;\n /** How to render the thumbnail (image/icon/none). */\n thumbnailType: 'image' | 'icon' | 'none';\n /** Thumbnail URL/value (image src or icon class). */\n thumbnailUrl: string;\n /** Two-letter initials shown when there is no thumbnail. */\n initials: string;\n /** Highlighted combined title HTML. */\n highlightedTitle: string;\n /** Raw subtitle value (used for the pill rendering path). */\n subtitleValue: string;\n /** Highlighted subtitle HTML (used for the non-pill rendering path). */\n highlightedSubtitle: string;\n /** Highlighted description HTML (empty when no description field). */\n highlightedDescription: string;\n /** Precomputed display field VMs in template order. */\n displayFields: CardDisplayFieldVM[];\n /** Raw badge value (used for the footer pill). */\n badgeValue: string;\n /** Whether this record matched on a hidden (non-visible) field. */\n hasHiddenFieldMatch: boolean;\n /** Display name of the hidden field that matched ('' when none). */\n hiddenMatchFieldName: string;\n}\n\n/**\n * EntityCardsComponent - Card-based view for entity records\n *\n * This component provides an auto-generated card layout for displaying\n * entity records. Cards are automatically structured based on entity metadata.\n *\n * Supports two modes:\n * 1. Parent-managed data: Records are passed in via [records] input\n * 2. Standalone: Component loads its own data with pagination\n *\n * @example\n * ```html\n * <mj-entity-cards\n * [entity]=\"selectedEntity\"\n * [records]=\"filteredRecords\"\n * [selectedRecordId]=\"selectedId\"\n * (recordSelected)=\"onRecordSelected($event)\"\n * (recordOpened)=\"onRecordOpened($event)\">\n * </mj-entity-cards>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-entity-cards',\n templateUrl: './entity-cards.component.html',\n styleUrls: ['./entity-cards.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class EntityCardsComponent extends BaseAngularComponent implements OnChanges, OnInit, AfterViewChecked {\n constructor(\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n /**\n * The entity metadata for the records being displayed\n */\n @Input() entity: EntityInfo | null = null;\n\n /**\n * The records to display as cards (optional - component can load its own)\n */\n @Input() records: Record<string, unknown>[] | null = null;\n\n /**\n * The currently selected record's primary key string\n */\n @Input() selectedRecordId: string | null = null;\n\n /**\n * Custom card template (optional - auto-generated if not provided)\n */\n @Input() cardTemplate: CardTemplate | null = null;\n\n /**\n * Map of record IDs to hidden field names that matched the filter\n * Used to display an indicator when a match occurred in a non-visible field\n */\n @Input() hiddenFieldMatches: Map<string, string> = new Map();\n\n /**\n * Current filter text for highlighting matches\n * Supports SQL-style % wildcards\n */\n @Input() filterText: string = '';\n\n /**\n * Page size for standalone data loading\n * @default 100\n */\n @Input() pageSize: number = 100;\n\n /**\n * Emitted when a record is selected (single click)\n */\n @Output() recordSelected = new EventEmitter<RecordSelectedEvent>();\n\n /**\n * Emitted when a record should be opened (double click or open button)\n */\n @Output() recordOpened = new EventEmitter<RecordOpenedEvent>();\n\n /** Auto-generated card template */\n public autoCardTemplate: CardTemplate | null = null;\n\n /** Internal records when loading standalone */\n private internalRecords: Record<string, unknown>[] = [];\n\n /** Track if we're in standalone mode */\n private standaloneMode: boolean = false;\n\n /** Loading state for standalone mode */\n public isLoading: boolean = false;\n\n /** Flag to trigger scroll to selected card after view renders */\n private pendingScrollToSelected: boolean = false;\n\n /**\n * Precomputed per-record view-models bound by the template's @for. Rebuilt\n * only when the source records, filter, selection, hidden matches, or template\n * change — never per change-detection cycle. This eliminates the 4-5\n * buildPkString() allocations + 4 RegExp-building highlight calls that the\n * previous per-card-per-CD method bindings incurred.\n */\n public cardViewModels: CardViewModel[] = [];\n\n ngOnInit(): void {\n this.standaloneMode = this.records === null;\n\n if (this.entity?.Fields && !this.effectiveTemplate) {\n this.autoCardTemplate = this.generateCardTemplate(this.entity);\n }\n\n if (this.standaloneMode && this.entity) {\n this.loadData();\n }\n\n this.buildCardViewModels();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['entity'] && this.entity?.Fields) {\n this.autoCardTemplate = this.generateCardTemplate(this.entity);\n } else if (changes['entity'] && !this.entity) {\n this.autoCardTemplate = null;\n }\n\n if (changes['entity'] && this.standaloneMode && this.entity) {\n this.loadData();\n }\n\n if (changes['records']) {\n this.standaloneMode = this.records === null;\n // When records change and we have a selection, scroll to it\n if (this.selectedRecordId) {\n this.pendingScrollToSelected = true;\n }\n }\n\n // When selectedRecordId changes programmatically, scroll to the selected card\n if (changes['selectedRecordId'] && this.selectedRecordId) {\n this.pendingScrollToSelected = true;\n }\n\n // Rebuild the precomputed VMs whenever any input that affects card *content*\n // changes. cardTemplate is included because effectiveTemplate derives from it.\n // A selection-only change must NOT trigger a full rebuild — that would re-run\n // the expensive per-card buildPkString()/CompositeKey allocations and the 4\n // RegExp-building highlightMatch() calls for every card on every selection\n // click (O(n) heavy work). Instead we only flip the cheap isSelected flags.\n const contentChanged = !!(changes['records'] || changes['filterText'] ||\n changes['hiddenFieldMatches'] || changes['entity'] || changes['cardTemplate']);\n if (contentChanged) {\n // Full rebuild also recomputes isSelected correctly (buildCardViewModel does).\n this.buildCardViewModels();\n } else if (changes['selectedRecordId']) {\n // Selection-only change: just update the isSelected flags on the existing\n // VMs (string compare per card — no rebuild, no regex, no allocation).\n this.updateSelectionFlags();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.pendingScrollToSelected && this.selectedRecordId) {\n this.pendingScrollToSelected = false;\n // Delay scroll to allow detail panel animation to complete and layout to stabilize\n // This ensures the scroll happens after the viewport width has adjusted\n setTimeout(() => this.scrollToSelectedCard(), 350);\n }\n }\n\n /**\n * Scroll the selected card into view\n */\n private scrollToSelectedCard(): void {\n if (!this.selectedRecordId) return;\n\n // Find the selected card element using the CSS class\n const selectedCard = this.elementRef.nativeElement.querySelector('.data-card.selected') as HTMLElement;\n if (selectedCard) {\n selectedCard.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }\n }\n\n /**\n * Get effective records (external or internal)\n */\n get effectiveRecords(): Record<string, unknown>[] {\n return this.records ?? this.internalRecords;\n }\n\n /**\n * Load data in standalone mode\n */\n private async loadData(): Promise<void> {\n if (!this.entity) return;\n\n this.isLoading = true;\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: this.entity.Name,\n ResultType: 'simple',\n Fields: computeFieldsList(this.entity),\n MaxRows: this.pageSize\n });\n\n if (result.Success) {\n this.internalRecords = result.Results;\n this.buildCardViewModels();\n }\n } catch (error) {\n console.error('Error loading cards data:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n /**\n * Get the effective card template (custom or auto-generated)\n */\n get effectiveTemplate(): CardTemplate | null {\n return this.cardTemplate || this.autoCardTemplate;\n }\n\n // ========================================\n // TEMPLATE GENERATION\n // ========================================\n\n /**\n * Generate card template from entity metadata\n */\n private generateCardTemplate(entity: EntityInfo): CardTemplate | null {\n const fields = entity.Fields;\n if (!fields || fields.length === 0) return null;\n\n return {\n titleFields: this.findTitleFields(entity, fields),\n subtitleField: this.findSubtitleField(fields),\n descriptionField: this.findDescriptionField(fields),\n displayFields: this.findDisplayFields(fields),\n thumbnailFields: this.findThumbnailFields(fields),\n badgeField: this.findBadgeField(fields)\n };\n }\n\n /**\n * Find all fields that form the record title, in display order.\n * Supports multiple IsNameField fields (e.g., FirstName + LastName → \"Elizabeth Rodriguez\").\n */\n private findTitleFields(entity: EntityInfo, fields: EntityFieldInfo[]): string[] {\n // 1. All IsNameField fields, sorted by Sequence\n const nameFields = fields\n .filter(f => f.IsNameField)\n .sort((a, b) => (a.Sequence ?? 9999) - (b.Sequence ?? 9999));\n if (nameFields.length > 0) return nameFields.map(f => f.Name);\n\n // 2. Single NameField from entity\n if (entity.NameField) return [entity.NameField.Name];\n\n // 3. Heuristic: field named \"Name\" or \"Title\"\n const heuristic = fields.find(f =>\n (f.Name.toLowerCase() === 'name' || f.Name.toLowerCase() === 'title') &&\n f.TSType === 'string' && !f.IsPrimaryKey\n );\n if (heuristic) return [heuristic.Name];\n\n // 4. Field ending with \"Name\"\n const endsWithName = fields.find(f =>\n f.Name.toLowerCase().endsWith('name') && f.TSType === 'string' &&\n !f.IsPrimaryKey && !f.Name.toLowerCase().includes('file')\n );\n if (endsWithName) return [endsWithName.Name];\n\n // 5. First string field\n const firstString = fields.find(f =>\n f.TSType === 'string' && !f.IsPrimaryKey && !f.Name.toLowerCase().includes('id')\n );\n if (firstString) return [firstString.Name];\n\n const pk = fields.find(f => f.IsPrimaryKey);\n return [pk?.Name || 'ID'];\n }\n\n private findSubtitleField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['status', 'type', 'category', 'state', 'stage'];\n for (const keyword of keywords) {\n const field = fields.find(f =>\n f.Name.toLowerCase().includes(keyword) && f.TSType === 'string' && !f.IsPrimaryKey\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private findDescriptionField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['description', 'desc', 'summary', 'notes', 'comments'];\n for (const keyword of keywords) {\n const field = fields.find(f => f.Name.toLowerCase().includes(keyword) && f.TSType === 'string');\n if (field) return field.Name;\n }\n return null;\n }\n\n private findDisplayFields(fields: EntityFieldInfo[]): CardDisplayField[] {\n const displayFields: CardDisplayField[] = [];\n const excludePatterns = ['id', 'name', 'title', 'description', 'desc', 'summary', 'notes',\n 'status', 'type', 'category', 'state', 'stage', 'password', 'secret',\n '__mj_', 'createdat', 'updatedat', 'createdby', 'updatedby'];\n\n const defaultInViewFields = fields.filter(f =>\n f.DefaultInView === true && !f.IsPrimaryKey &&\n !excludePatterns.some(p => f.Name.toLowerCase().includes(p))\n );\n\n for (const field of defaultInViewFields) {\n if (displayFields.length >= 4) break;\n displayFields.push({\n name: field.Name,\n type: this.getFieldType(field),\n label: this.getFieldLabel(field)\n });\n }\n\n if (displayFields.length >= 2) return displayFields;\n\n const metricKeywords = ['amount', 'total', 'count', 'value', 'price', 'cost', 'quantity', 'qty', 'balance', 'revenue', 'score'];\n for (const field of fields) {\n if (displayFields.length >= 4) break;\n if (displayFields.some(df => df.name === field.Name)) continue;\n\n if (metricKeywords.some(kw => field.Name.toLowerCase().includes(kw))) {\n displayFields.push({\n name: field.Name,\n type: this.getFieldType(field),\n label: this.getFieldLabel(field)\n });\n }\n }\n\n return displayFields;\n }\n\n /**\n * Find all potential thumbnail fields in priority order\n * Returns an array so we can fall back per-record if one is empty\n */\n private findThumbnailFields(fields: EntityFieldInfo[]): string[] {\n const images = fields\n .filter(f => f.ExtendedType === 'Image' && f.TSType === 'string')\n .map(f => f.Name);\n const imageSet = new Set(images);\n const icons = fields\n .filter(f => f.ExtendedType === 'Icon' && f.TSType === 'string' && !imageSet.has(f.Name))\n .map(f => f.Name);\n return [...images, ...icons];\n }\n\n private findBadgeField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['priority', 'severity', 'importance', 'rating', 'rank', 'level'];\n for (const keyword of keywords) {\n const field = fields.find(f => f.Name.toLowerCase().includes(keyword));\n if (field) return field.Name;\n }\n return null;\n }\n\n private getFieldType(field: EntityFieldInfo): CardFieldType {\n if (field.TSType === 'boolean' || field.Type?.toLowerCase() === 'bit') return 'boolean';\n if (field.TSType === 'number') return 'number';\n if (field.TSType === 'Date' || field.Type?.toLowerCase().includes('date')) return 'date';\n return 'text';\n }\n\n // ========================================\n // VALUE FORMATTING\n // ========================================\n\n getFieldValue(record: Record<string, unknown>, fieldName: string | null): string {\n if (!fieldName) return '';\n const value = record[fieldName];\n if (value === null || value === undefined) return '';\n return String(value);\n }\n\n getNumericValue(record: Record<string, unknown>, fieldName: string): string {\n const value = record[fieldName];\n if (value === null || value === undefined) return '-';\n\n const num = Number(value);\n if (isNaN(num)) return String(value);\n\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n\n const fieldNameLower = fieldName.toLowerCase();\n if (['amount', 'price', 'cost', 'value', 'revenue', 'total'].some(k => fieldNameLower.includes(k))) {\n return `$${num.toLocaleString()}`;\n }\n\n return num.toLocaleString();\n }\n\n getBooleanValue(record: Record<string, unknown>, fieldName: string): boolean {\n const value = record[fieldName];\n if (value === null || value === undefined) return false;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'number') return value !== 0;\n if (typeof value === 'string') return value.toLowerCase() === 'true' || value === '1';\n return Boolean(value);\n }\n\n getTextValue(record: Record<string, unknown>, fieldName: string, maxLength: number = 50): string {\n const value = this.getFieldValue(record, fieldName);\n if (!value) return '-';\n if (value.length <= maxLength) return value;\n return value.substring(0, maxLength) + '...';\n }\n\n getDateValue(record: Record<string, unknown>, fieldName: string): string {\n const value = record[fieldName];\n if (value === null || value === undefined) return '-';\n\n try {\n const date = value instanceof Date ? value : new Date(value as string | number);\n if (isNaN(date.getTime())) return String(value);\n return date.toLocaleDateString(undefined, { month: 'short', day: 'numeric', year: 'numeric' });\n } catch {\n return String(value);\n }\n }\n\n /**\n * Get display label for a field using EntityFieldInfo's built-in DisplayNameOrName property\n */\n getFieldLabel(field: EntityFieldInfo): string {\n return field.DisplayNameOrName;\n }\n\n // ========================================\n // CARD DISPLAY HELPERS\n // ========================================\n\n getRecordTrackId(record: Record<string, unknown>, index: number): string {\n if (!this.entity) return `record_${index}`;\n try {\n const pk = buildPkString(record, this.entity);\n if (pk && pk.trim().length > 0) return pk;\n } catch { /* ignore */ }\n return `record_${index}`;\n }\n\n isSelected(record: Record<string, unknown>): boolean {\n if (!this.entity) return false;\n return buildPkString(record, this.entity) === this.selectedRecordId;\n }\n\n onCardClick(record: Record<string, unknown>): void {\n if (!this.entity) return;\n this.recordSelected.emit({\n record,\n entity: this.entity,\n compositeKey: buildCompositeKey(record, this.entity)\n });\n }\n\n onOpenClick(event: Event, record: Record<string, unknown>): void {\n event.stopPropagation();\n if (!this.entity) return;\n this.recordOpened.emit({\n record,\n entity: this.entity,\n compositeKey: buildCompositeKey(record, this.entity)\n });\n }\n\n // ========================================\n // PRECOMPUTED VIEW-MODELS (perf)\n // ========================================\n\n /**\n * Rebuild the precomputed per-record view-models. Called from ngOnInit,\n * ngOnChanges (on any render-affecting input), and after standalone loadData.\n * Doing this work here — once per data/filter/selection change — instead of via\n * template method bindings avoids re-running it on every Angular CD cycle.\n */\n private buildCardViewModels(): void {\n const records = this.effectiveRecords;\n this.cardViewModels = records.map((record, index) => this.buildCardViewModel(record, index));\n }\n\n /**\n * Cheaply update the isSelected flag on the EXISTING card view-models in place,\n * preserving the array and every VM object reference. Called when ONLY\n * selectedRecordId changes — avoids a full buildCardViewModels() rebuild (which\n * re-runs buildPkString() allocations + RegExp-building highlightMatch() calls\n * per card). Uses the already-computed vm.pkString, so this is a plain string\n * compare per card with zero allocation or regex work.\n */\n private updateSelectionFlags(): void {\n for (const vm of this.cardViewModels) {\n vm.isSelected = vm.pkString.length > 0 && vm.pkString === this.selectedRecordId;\n }\n }\n\n /**\n * Build a single card view-model, computing the PK string exactly once and\n * reusing it for selection, color, hidden-match, and track-id derivation.\n */\n private buildCardViewModel(record: Record<string, unknown>, index: number): CardViewModel {\n const pkString = this.computePkString(record);\n const trackId = pkString && pkString.trim().length > 0 ? pkString : `record_${index}`;\n const template = this.effectiveTemplate;\n\n const subtitleField = template?.subtitleField ?? null;\n const subtitleValue = subtitleField ? this.getFieldValue(record, subtitleField) : '';\n const descriptionField = template?.descriptionField ?? null;\n\n return {\n record,\n pkString,\n trackId,\n isSelected: pkString.length > 0 && pkString === this.selectedRecordId,\n color: this.computeRecordColor(pkString),\n thumbnailType: this.getThumbnailType(record),\n thumbnailUrl: this.getThumbnailUrl(record),\n initials: this.getInitials(record),\n highlightedTitle: this.highlightMatch(this.getCombinedTitle(record)),\n subtitleValue,\n highlightedSubtitle: this.highlightMatch(subtitleValue),\n highlightedDescription: descriptionField\n ? this.highlightMatch(this.getTextValue(record, descriptionField, 100))\n : '',\n displayFields: this.buildDisplayFieldVMs(record, template),\n badgeValue: template?.badgeField ? this.getFieldValue(record, template.badgeField) : '',\n hasHiddenFieldMatch: this.computeHasHiddenFieldMatch(pkString),\n hiddenMatchFieldName: this.computeHiddenMatchFieldName(pkString)\n };\n }\n\n /**\n * Precompute the display-field VMs for a record, in template order.\n */\n private buildDisplayFieldVMs(record: Record<string, unknown>, template: CardTemplate | null): CardDisplayFieldVM[] {\n if (!template || template.displayFields.length === 0) return [];\n return template.displayFields.map(field => ({\n field,\n booleanValue: this.getBooleanValue(record, field.name),\n numericValue: this.getNumericValue(record, field.name),\n dateValue: this.getDateValue(record, field.name),\n highlightedText: this.highlightMatch(this.getTextValue(record, field.name, 40))\n }));\n }\n\n /**\n * Compute the PK concatenated string for a record. Returns '' when no entity\n * or on error, so callers can treat it as \"no stable key\".\n */\n private computePkString(record: Record<string, unknown>): string {\n if (!this.entity) return '';\n try {\n return buildPkString(record, this.entity);\n } catch {\n return '';\n }\n }\n\n /**\n * Derive the avatar/background color from an already-computed PK string.\n */\n private computeRecordColor(pkString: string): string {\n if (!this.entity || !pkString) return 'var(--mj-brand-primary)';\n const colors = ['var(--mj-brand-primary)', 'var(--mj-status-success)', 'var(--mj-status-warning)', 'var(--mj-brand-primary)', 'var(--mj-status-error)', 'var(--mj-brand-primary)', 'var(--mj-text-muted)', 'var(--mj-text-secondary)'];\n let hash = 0;\n for (let i = 0; i < pkString.length; i++) {\n hash = pkString.charCodeAt(i) + ((hash << 5) - hash);\n }\n return colors[Math.abs(hash) % colors.length];\n }\n\n /**\n * Whether the record (by PK string) matched on a hidden field.\n */\n private computeHasHiddenFieldMatch(pkString: string): boolean {\n if (!this.entity || !pkString) return false;\n return this.hiddenFieldMatches.has(pkString);\n }\n\n /**\n * Resolve the display name of the hidden field that matched, from a PK string.\n */\n private computeHiddenMatchFieldName(pkString: string): string {\n if (!this.entity || !pkString) return '';\n const fieldName = this.hiddenFieldMatches.get(pkString);\n if (!fieldName) return '';\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n return field ? field.DisplayNameOrName : fieldName;\n }\n\n /**\n * Get the combined title from all title fields for a record.\n * Joins multiple IsNameField values with spaces (e.g., \"Elizabeth Rodriguez\").\n */\n getCombinedTitle(record: Record<string, unknown>): string {\n const template = this.effectiveTemplate;\n if (!template?.titleFields || template.titleFields.length === 0) return '';\n const parts = template.titleFields\n .map(f => this.getFieldValue(record, f))\n .filter(v => v && v.trim().length > 0);\n return parts.length > 0 ? parts.join(' ') : '';\n }\n\n getInitials(record: Record<string, unknown>): string {\n const title = this.getCombinedTitle(record);\n if (!title) return '?';\n\n const words = title.split(/\\s+/).filter(w => w.length > 0);\n if (words.length === 1) return words[0].substring(0, 2).toUpperCase();\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n\n /**\n * Get the thumbnail type for a record, with per-record fallback through thumbnailFields\n */\n getThumbnailType(record: Record<string, unknown>): 'image' | 'icon' | 'none' {\n const fieldInfo = this.getEffectiveThumbnailField(record);\n if (!fieldInfo) return 'none';\n\n const { fieldName, value } = fieldInfo;\n const fieldMeta = this.entity?.Fields.find(f => f.Name === fieldName);\n\n if (fieldMeta?.ExtendedType === 'Image' && CoerceImageSrc(value)) return 'image';\n if (fieldMeta?.ExtendedType === 'Icon') return 'icon';\n\n if (this.isImageValue(value)) return 'image';\n if (this.isIconClass(value)) return 'icon';\n\n return 'none';\n }\n\n /**\n * Get the thumbnail URL/value for a record, with per-record fallback\n */\n getThumbnailUrl(record: Record<string, unknown>): string {\n const fieldInfo = this.getEffectiveThumbnailField(record);\n if (!fieldInfo) return '';\n return CoerceImageSrc(fieldInfo.value) || fieldInfo.value;\n }\n\n /**\n * Find the first thumbnail field that has a value for this record\n * Returns both the field name and value for type determination\n */\n private getEffectiveThumbnailField(record: Record<string, unknown>): { fieldName: string; value: string } | null {\n const template = this.effectiveTemplate;\n if (!template?.thumbnailFields || template.thumbnailFields.length === 0) return null;\n\n // Try each field in priority order until we find one with a value\n for (const fieldName of template.thumbnailFields) {\n const value = this.getFieldValue(record, fieldName);\n if (value && value.trim() !== '') {\n return { fieldName, value };\n }\n }\n\n return null;\n }\n\n private isImageValue(value: string): boolean {\n return CoerceImageSrc(value) != null;\n }\n\n private isIconClass(value: string): boolean {\n if (!value) return false;\n const trimmed = value.trim().toLowerCase();\n if (trimmed.startsWith('fa-') || trimmed.startsWith('fa ') ||\n trimmed.startsWith('fas ') || trimmed.startsWith('far ') ||\n trimmed.startsWith('fal ') || trimmed.startsWith('fab ')) return true;\n if (trimmed.includes('material-icons') || trimmed.startsWith('mat-icon')) return true;\n if (trimmed.startsWith('bi-') || trimmed.startsWith('bi ')) return true;\n return false;\n }\n\n getRecordColor(record: Record<string, unknown>): string {\n return this.computeRecordColor(this.computePkString(record));\n }\n\n isEnumField(fieldName: string): boolean {\n if (!this.entity) return false;\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n if (!field) return false;\n return field.ValueListTypeEnum !== EntityFieldValueListType.None && field.EntityFieldValues.length > 0;\n }\n\n get subtitleIsPill(): boolean {\n const template = this.effectiveTemplate;\n if (!template?.subtitleField || !this.entity) return false;\n return this.isEnumField(template.subtitleField);\n }\n\n getPillColorType(value: string): string {\n return PillColorUtil.getColorType(value);\n }\n\n /**\n * Check if a record matched on a hidden field\n */\n hasHiddenFieldMatch(record: Record<string, unknown>): boolean {\n if (!this.entity) return false;\n return this.hiddenFieldMatches.has(buildPkString(record, this.entity));\n }\n\n /**\n * Get the display name of the hidden field that matched\n */\n getHiddenMatchFieldName(record: Record<string, unknown>): string {\n if (!this.entity) return '';\n const fieldName = this.hiddenFieldMatches.get(buildPkString(record, this.entity));\n if (!fieldName || !this.entity) return '';\n // Look up the field in entity metadata and use DisplayNameOrName\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n return field ? field.DisplayNameOrName : fieldName;\n }\n\n /**\n * Highlight matching text in a string based on the filter text\n * Uses HighlightUtil which only highlights if the text actually matches the pattern\n */\n highlightMatch(text: string): string {\n return HighlightUtil.highlight(text, this.filterText, false);\n }\n}\n","<div class=\"cards-view-wrapper\">\n @if (isLoading && effectiveRecords.length === 0) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading records...\"></mj-loading>\n </div>\n } @else {\n <div class=\"cards-container\">\n @for (vm of cardViewModels; track vm.trackId) {\n <div\n class=\"data-card\"\n [class.selected]=\"vm.isSelected\"\n (click)=\"onCardClick(vm.record)\">\n\n <!-- Card Header with Avatar/Icon -->\n <div class=\"card-header\">\n @switch (vm.thumbnailType) {\n @case ('image') {\n <div class=\"card-thumbnail\">\n <img [src]=\"vm.thumbnailUrl\" alt=\"\" />\n </div>\n }\n @case ('icon') {\n <div class=\"card-avatar\" [style.background-color]=\"vm.color\">\n <i [class]=\"vm.thumbnailUrl\"></i>\n </div>\n }\n @default {\n <div class=\"card-avatar\" [style.background-color]=\"vm.color\">\n {{ vm.initials }}\n </div>\n }\n }\n\n <div class=\"card-header-content\">\n <h3 class=\"card-title\" [innerHTML]=\"vm.highlightedTitle\"></h3>\n @if (effectiveTemplate?.subtitleField) {\n @if (subtitleIsPill) {\n <mj-pill [value]=\"vm.subtitleValue\"></mj-pill>\n } @else {\n <span class=\"card-subtitle\" [innerHTML]=\"vm.highlightedSubtitle\"></span>\n }\n }\n </div>\n\n <button class=\"card-open-btn\" (click)=\"onOpenClick($event, vm.record)\" title=\"Open Record\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (effectiveTemplate?.descriptionField) {\n <p class=\"card-description\" [innerHTML]=\"vm.highlightedDescription\"></p>\n }\n\n <!-- Display Fields -->\n @if (vm.displayFields.length > 0) {\n <div class=\"card-fields\">\n @for (df of vm.displayFields; track df.field.name) {\n <div class=\"field-item\" [class.field-boolean]=\"df.field.type === 'boolean'\" [class.field-text]=\"df.field.type === 'text'\">\n @switch (df.field.type) {\n @case ('boolean') {\n <i class=\"field-icon\" [class.fa-solid]=\"true\"\n [class.fa-check]=\"df.booleanValue\"\n [class.fa-minus]=\"!df.booleanValue\"\n [class.bool-true]=\"df.booleanValue\"\n [class.bool-false]=\"!df.booleanValue\"></i>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @case ('number') {\n <span class=\"field-value\">{{ df.numericValue }}</span>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @case ('date') {\n <span class=\"field-value field-date\">{{ df.dateValue }}</span>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @default {\n <span class=\"field-label\">{{ df.field.label }}</span>\n <span class=\"field-text-value\" [innerHTML]=\"df.highlightedText\"></span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Footer with Badge -->\n @if (effectiveTemplate?.badgeField) {\n <div class=\"card-footer\">\n <mj-pill [value]=\"vm.badgeValue\"></mj-pill>\n </div>\n }\n\n <!-- Hidden field match indicator -->\n @if (vm.hasHiddenFieldMatch) {\n <div class=\"hidden-match-indicator\" [title]=\"'Matched in: ' + vm.hiddenMatchFieldName\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <span>{{ vm.hiddenMatchFieldName }}</span>\n </div>\n }\n </div>\n }\n\n @if (effectiveRecords.length === 0) {\n <mj-empty-state\n class=\"no-results\"\n Variant=\"no-results\"\n Title=\"No records to display\" />\n }\n </div>\n }\n</div>\n"]}
|
|
1
|
+
{"version":3,"file":"entity-cards.component.js","sourceRoot":"","sources":["../../../src/lib/entity-cards/entity-cards.component.ts","../../../src/lib/entity-cards/entity-cards.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, OnInit, SimpleChanges, ElementRef, AfterViewChecked, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { EntityInfo, EntityFieldInfo, EntityFieldValueListType, RunView, CoerceImageSrc, IsDateOnlySQLType, FormatDateOnly } from '@memberjunction/core';\nimport { CardTemplate, CardDisplayField, CardFieldType, RecordSelectedEvent, RecordOpenedEvent } from '../types';\nimport { buildCompositeKey, buildPkString, computeFieldsList } from '../utils/record.util';\nimport { PillColorUtil } from '../pill/pill.component';\nimport { HighlightUtil } from '../utils/highlight.util';\n\n/**\n * Precomputed display field value for a card, resolved once per record per\n * (records/filter/template) change rather than via per-CD method calls.\n */\ninterface CardDisplayFieldVM {\n /** The underlying display field definition (name/type/label). */\n field: CardDisplayField;\n /** Boolean value (used when field.type === 'boolean'). */\n booleanValue: boolean;\n /** Numeric display string (used when field.type === 'number'). */\n numericValue: string;\n /** Date display string (used when field.type === 'date'). */\n dateValue: string;\n /** Highlighted text HTML (used for default/text fields). */\n highlightedText: string;\n}\n\n/**\n * Precomputed, per-record view-model backing a single card. Built once whenever\n * the source records, filter text, or template change — NOT on every Angular\n * change-detection cycle. Mirrors the canonical precompute pattern used by\n * conversations' MessageItemComponent (`_messageClasses` / `buildMessageClasses`).\n */\ninterface CardViewModel {\n /** The original record (passed through to event emitters). */\n record: Record<string, unknown>;\n /** Stable PK concatenated string — computed ONCE here instead of 4-5x/CD. */\n pkString: string;\n /** Stable track id for @for (falls back to record_<index> when no PK). */\n trackId: string;\n /** Whether this card is the currently selected record. */\n isSelected: boolean;\n /** Avatar/background color derived from the PK hash. */\n color: string;\n /** How to render the thumbnail (image/icon/none). */\n thumbnailType: 'image' | 'icon' | 'none';\n /** Thumbnail URL/value (image src or icon class). */\n thumbnailUrl: string;\n /** Two-letter initials shown when there is no thumbnail. */\n initials: string;\n /** Highlighted combined title HTML. */\n highlightedTitle: string;\n /** Raw subtitle value (used for the pill rendering path). */\n subtitleValue: string;\n /** Highlighted subtitle HTML (used for the non-pill rendering path). */\n highlightedSubtitle: string;\n /** Highlighted description HTML (empty when no description field). */\n highlightedDescription: string;\n /** Precomputed display field VMs in template order. */\n displayFields: CardDisplayFieldVM[];\n /** Raw badge value (used for the footer pill). */\n badgeValue: string;\n /** Whether this record matched on a hidden (non-visible) field. */\n hasHiddenFieldMatch: boolean;\n /** Display name of the hidden field that matched ('' when none). */\n hiddenMatchFieldName: string;\n}\n\n/**\n * EntityCardsComponent - Card-based view for entity records\n *\n * This component provides an auto-generated card layout for displaying\n * entity records. Cards are automatically structured based on entity metadata.\n *\n * Supports two modes:\n * 1. Parent-managed data: Records are passed in via [records] input\n * 2. Standalone: Component loads its own data with pagination\n *\n * @example\n * ```html\n * <mj-entity-cards\n * [entity]=\"selectedEntity\"\n * [records]=\"filteredRecords\"\n * [selectedRecordId]=\"selectedId\"\n * (recordSelected)=\"onRecordSelected($event)\"\n * (recordOpened)=\"onRecordOpened($event)\">\n * </mj-entity-cards>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-entity-cards',\n templateUrl: './entity-cards.component.html',\n styleUrls: ['./entity-cards.component.css'],\n encapsulation: ViewEncapsulation.None\n})\nexport class EntityCardsComponent extends BaseAngularComponent implements OnChanges, OnInit, AfterViewChecked {\n constructor(\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n /**\n * The entity metadata for the records being displayed\n */\n @Input() entity: EntityInfo | null = null;\n\n /**\n * The records to display as cards (optional - component can load its own)\n */\n @Input() records: Record<string, unknown>[] | null = null;\n\n /**\n * The currently selected record's primary key string\n */\n @Input() selectedRecordId: string | null = null;\n\n /**\n * Custom card template (optional - auto-generated if not provided)\n */\n @Input() cardTemplate: CardTemplate | null = null;\n\n /**\n * Map of record IDs to hidden field names that matched the filter\n * Used to display an indicator when a match occurred in a non-visible field\n */\n @Input() hiddenFieldMatches: Map<string, string> = new Map();\n\n /**\n * Current filter text for highlighting matches\n * Supports SQL-style % wildcards\n */\n @Input() filterText: string = '';\n\n /**\n * Page size for standalone data loading\n * @default 100\n */\n @Input() pageSize: number = 100;\n\n /**\n * Emitted when a record is selected (single click)\n */\n @Output() recordSelected = new EventEmitter<RecordSelectedEvent>();\n\n /**\n * Emitted when a record should be opened (double click or open button)\n */\n @Output() recordOpened = new EventEmitter<RecordOpenedEvent>();\n\n /** Auto-generated card template */\n public autoCardTemplate: CardTemplate | null = null;\n\n /** Internal records when loading standalone */\n private internalRecords: Record<string, unknown>[] = [];\n\n /** Track if we're in standalone mode */\n private standaloneMode: boolean = false;\n\n /** Loading state for standalone mode */\n public isLoading: boolean = false;\n\n /** Flag to trigger scroll to selected card after view renders */\n private pendingScrollToSelected: boolean = false;\n\n /**\n * Precomputed per-record view-models bound by the template's @for. Rebuilt\n * only when the source records, filter, selection, hidden matches, or template\n * change — never per change-detection cycle. This eliminates the 4-5\n * buildPkString() allocations + 4 RegExp-building highlight calls that the\n * previous per-card-per-CD method bindings incurred.\n */\n public cardViewModels: CardViewModel[] = [];\n\n ngOnInit(): void {\n this.standaloneMode = this.records === null;\n\n if (this.entity?.Fields && !this.effectiveTemplate) {\n this.autoCardTemplate = this.generateCardTemplate(this.entity);\n }\n\n if (this.standaloneMode && this.entity) {\n this.loadData();\n }\n\n this.buildCardViewModels();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['entity'] && this.entity?.Fields) {\n this.autoCardTemplate = this.generateCardTemplate(this.entity);\n } else if (changes['entity'] && !this.entity) {\n this.autoCardTemplate = null;\n }\n\n if (changes['entity'] && this.standaloneMode && this.entity) {\n this.loadData();\n }\n\n if (changes['records']) {\n this.standaloneMode = this.records === null;\n // When records change and we have a selection, scroll to it\n if (this.selectedRecordId) {\n this.pendingScrollToSelected = true;\n }\n }\n\n // When selectedRecordId changes programmatically, scroll to the selected card\n if (changes['selectedRecordId'] && this.selectedRecordId) {\n this.pendingScrollToSelected = true;\n }\n\n // Rebuild the precomputed VMs whenever any input that affects card *content*\n // changes. cardTemplate is included because effectiveTemplate derives from it.\n // A selection-only change must NOT trigger a full rebuild — that would re-run\n // the expensive per-card buildPkString()/CompositeKey allocations and the 4\n // RegExp-building highlightMatch() calls for every card on every selection\n // click (O(n) heavy work). Instead we only flip the cheap isSelected flags.\n const contentChanged = !!(changes['records'] || changes['filterText'] ||\n changes['hiddenFieldMatches'] || changes['entity'] || changes['cardTemplate']);\n if (contentChanged) {\n // Full rebuild also recomputes isSelected correctly (buildCardViewModel does).\n this.buildCardViewModels();\n } else if (changes['selectedRecordId']) {\n // Selection-only change: just update the isSelected flags on the existing\n // VMs (string compare per card — no rebuild, no regex, no allocation).\n this.updateSelectionFlags();\n }\n }\n\n ngAfterViewChecked(): void {\n if (this.pendingScrollToSelected && this.selectedRecordId) {\n this.pendingScrollToSelected = false;\n // Delay scroll to allow detail panel animation to complete and layout to stabilize\n // This ensures the scroll happens after the viewport width has adjusted\n setTimeout(() => this.scrollToSelectedCard(), 350);\n }\n }\n\n /**\n * Scroll the selected card into view\n */\n private scrollToSelectedCard(): void {\n if (!this.selectedRecordId) return;\n\n // Find the selected card element using the CSS class\n const selectedCard = this.elementRef.nativeElement.querySelector('.data-card.selected') as HTMLElement;\n if (selectedCard) {\n selectedCard.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }\n }\n\n /**\n * Get effective records (external or internal)\n */\n get effectiveRecords(): Record<string, unknown>[] {\n return this.records ?? this.internalRecords;\n }\n\n /**\n * Load data in standalone mode\n */\n private async loadData(): Promise<void> {\n if (!this.entity) return;\n\n this.isLoading = true;\n\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: this.entity.Name,\n ResultType: 'simple',\n Fields: computeFieldsList(this.entity),\n MaxRows: this.pageSize\n });\n\n if (result.Success) {\n this.internalRecords = result.Results;\n this.buildCardViewModels();\n }\n } catch (error) {\n console.error('Error loading cards data:', error);\n } finally {\n this.isLoading = false;\n }\n }\n\n /**\n * Get the effective card template (custom or auto-generated)\n */\n get effectiveTemplate(): CardTemplate | null {\n return this.cardTemplate || this.autoCardTemplate;\n }\n\n // ========================================\n // TEMPLATE GENERATION\n // ========================================\n\n /**\n * Generate card template from entity metadata\n */\n private generateCardTemplate(entity: EntityInfo): CardTemplate | null {\n const fields = entity.Fields;\n if (!fields || fields.length === 0) return null;\n\n return {\n titleFields: this.findTitleFields(entity, fields),\n subtitleField: this.findSubtitleField(fields),\n descriptionField: this.findDescriptionField(fields),\n displayFields: this.findDisplayFields(fields),\n thumbnailFields: this.findThumbnailFields(fields),\n badgeField: this.findBadgeField(fields)\n };\n }\n\n /**\n * Find all fields that form the record title, in display order.\n * Supports multiple IsNameField fields (e.g., FirstName + LastName → \"Elizabeth Rodriguez\").\n */\n private findTitleFields(entity: EntityInfo, fields: EntityFieldInfo[]): string[] {\n // 1. All IsNameField fields, sorted by Sequence\n const nameFields = fields\n .filter(f => f.IsNameField)\n .sort((a, b) => (a.Sequence ?? 9999) - (b.Sequence ?? 9999));\n if (nameFields.length > 0) return nameFields.map(f => f.Name);\n\n // 2. Single NameField from entity\n if (entity.NameField) return [entity.NameField.Name];\n\n // 3. Heuristic: field named \"Name\" or \"Title\"\n const heuristic = fields.find(f =>\n (f.Name.toLowerCase() === 'name' || f.Name.toLowerCase() === 'title') &&\n f.TSType === 'string' && !f.IsPrimaryKey\n );\n if (heuristic) return [heuristic.Name];\n\n // 4. Field ending with \"Name\"\n const endsWithName = fields.find(f =>\n f.Name.toLowerCase().endsWith('name') && f.TSType === 'string' &&\n !f.IsPrimaryKey && !f.Name.toLowerCase().includes('file')\n );\n if (endsWithName) return [endsWithName.Name];\n\n // 5. First string field\n const firstString = fields.find(f =>\n f.TSType === 'string' && !f.IsPrimaryKey && !f.Name.toLowerCase().includes('id')\n );\n if (firstString) return [firstString.Name];\n\n const pk = fields.find(f => f.IsPrimaryKey);\n return [pk?.Name || 'ID'];\n }\n\n private findSubtitleField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['status', 'type', 'category', 'state', 'stage'];\n for (const keyword of keywords) {\n const field = fields.find(f =>\n f.Name.toLowerCase().includes(keyword) && f.TSType === 'string' && !f.IsPrimaryKey\n );\n if (field) return field.Name;\n }\n return null;\n }\n\n private findDescriptionField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['description', 'desc', 'summary', 'notes', 'comments'];\n for (const keyword of keywords) {\n const field = fields.find(f => f.Name.toLowerCase().includes(keyword) && f.TSType === 'string');\n if (field) return field.Name;\n }\n return null;\n }\n\n private findDisplayFields(fields: EntityFieldInfo[]): CardDisplayField[] {\n const displayFields: CardDisplayField[] = [];\n const excludePatterns = ['id', 'name', 'title', 'description', 'desc', 'summary', 'notes',\n 'status', 'type', 'category', 'state', 'stage', 'password', 'secret',\n '__mj_', 'createdat', 'updatedat', 'createdby', 'updatedby'];\n\n const defaultInViewFields = fields.filter(f =>\n f.DefaultInView === true && !f.IsPrimaryKey &&\n !excludePatterns.some(p => f.Name.toLowerCase().includes(p))\n );\n\n for (const field of defaultInViewFields) {\n if (displayFields.length >= 4) break;\n displayFields.push({\n name: field.Name,\n type: this.getFieldType(field),\n label: this.getFieldLabel(field)\n });\n }\n\n if (displayFields.length >= 2) return displayFields;\n\n const metricKeywords = ['amount', 'total', 'count', 'value', 'price', 'cost', 'quantity', 'qty', 'balance', 'revenue', 'score'];\n for (const field of fields) {\n if (displayFields.length >= 4) break;\n if (displayFields.some(df => df.name === field.Name)) continue;\n\n if (metricKeywords.some(kw => field.Name.toLowerCase().includes(kw))) {\n displayFields.push({\n name: field.Name,\n type: this.getFieldType(field),\n label: this.getFieldLabel(field)\n });\n }\n }\n\n return displayFields;\n }\n\n /**\n * Find all potential thumbnail fields in priority order\n * Returns an array so we can fall back per-record if one is empty\n */\n private findThumbnailFields(fields: EntityFieldInfo[]): string[] {\n const images = fields\n .filter(f => f.ExtendedType === 'Image' && f.TSType === 'string')\n .map(f => f.Name);\n const imageSet = new Set(images);\n const icons = fields\n .filter(f => f.ExtendedType === 'Icon' && f.TSType === 'string' && !imageSet.has(f.Name))\n .map(f => f.Name);\n return [...images, ...icons];\n }\n\n private findBadgeField(fields: EntityFieldInfo[]): string | null {\n const keywords = ['priority', 'severity', 'importance', 'rating', 'rank', 'level'];\n for (const keyword of keywords) {\n const field = fields.find(f => f.Name.toLowerCase().includes(keyword));\n if (field) return field.Name;\n }\n return null;\n }\n\n private getFieldType(field: EntityFieldInfo): CardFieldType {\n if (field.TSType === 'boolean' || field.Type?.toLowerCase() === 'bit') return 'boolean';\n if (field.TSType === 'number') return 'number';\n if (field.TSType === 'Date' || field.Type?.toLowerCase().includes('date')) return 'date';\n return 'text';\n }\n\n // ========================================\n // VALUE FORMATTING\n // ========================================\n\n getFieldValue(record: Record<string, unknown>, fieldName: string | null): string {\n if (!fieldName) return '';\n const value = record[fieldName];\n if (value === null || value === undefined) return '';\n return String(value);\n }\n\n getNumericValue(record: Record<string, unknown>, fieldName: string): string {\n const value = record[fieldName];\n if (value === null || value === undefined) return '-';\n\n const num = Number(value);\n if (isNaN(num)) return String(value);\n\n if (num >= 1000000) return `${(num / 1000000).toFixed(1)}M`;\n if (num >= 1000) return `${(num / 1000).toFixed(1)}K`;\n\n const fieldNameLower = fieldName.toLowerCase();\n if (['amount', 'price', 'cost', 'value', 'revenue', 'total'].some(k => fieldNameLower.includes(k))) {\n return `$${num.toLocaleString()}`;\n }\n\n return num.toLocaleString();\n }\n\n getBooleanValue(record: Record<string, unknown>, fieldName: string): boolean {\n const value = record[fieldName];\n if (value === null || value === undefined) return false;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'number') return value !== 0;\n if (typeof value === 'string') return value.toLowerCase() === 'true' || value === '1';\n return Boolean(value);\n }\n\n getTextValue(record: Record<string, unknown>, fieldName: string, maxLength: number = 50): string {\n const value = this.getFieldValue(record, fieldName);\n if (!value) return '-';\n if (value.length <= maxLength) return value;\n return value.substring(0, maxLength) + '...';\n }\n\n getDateValue(record: Record<string, unknown>, fieldName: string): string {\n const value = record[fieldName];\n if (value === null || value === undefined) return '-';\n\n try {\n const date = value instanceof Date ? value : new Date(value as string | number);\n if (isNaN(date.getTime())) return String(value);\n const options: Intl.DateTimeFormatOptions = { month: 'short', day: 'numeric', year: 'numeric' };\n // A `date` column is a calendar day that arrives as UTC midnight; a local-zone formatter\n // would land on the previous day for every reader west of Greenwich (MJ#4210). A timestamp\n // names an instant and stays in local time.\n if (this.isDateOnlyField(fieldName)) return FormatDateOnly(date, options);\n return date.toLocaleDateString(undefined, options);\n } catch {\n return String(value);\n }\n }\n\n private isDateOnlyField(fieldName: string): boolean {\n return IsDateOnlySQLType(this.entity?.Fields.find(f => f.Name === fieldName)?.Type);\n }\n\n /**\n * Get display label for a field using EntityFieldInfo's built-in DisplayNameOrName property\n */\n getFieldLabel(field: EntityFieldInfo): string {\n return field.DisplayNameOrName;\n }\n\n // ========================================\n // CARD DISPLAY HELPERS\n // ========================================\n\n getRecordTrackId(record: Record<string, unknown>, index: number): string {\n if (!this.entity) return `record_${index}`;\n try {\n const pk = buildPkString(record, this.entity);\n if (pk && pk.trim().length > 0) return pk;\n } catch { /* ignore */ }\n return `record_${index}`;\n }\n\n isSelected(record: Record<string, unknown>): boolean {\n if (!this.entity) return false;\n return buildPkString(record, this.entity) === this.selectedRecordId;\n }\n\n onCardClick(record: Record<string, unknown>): void {\n if (!this.entity) return;\n this.recordSelected.emit({\n record,\n entity: this.entity,\n compositeKey: buildCompositeKey(record, this.entity)\n });\n }\n\n onOpenClick(event: Event, record: Record<string, unknown>): void {\n event.stopPropagation();\n if (!this.entity) return;\n this.recordOpened.emit({\n record,\n entity: this.entity,\n compositeKey: buildCompositeKey(record, this.entity)\n });\n }\n\n // ========================================\n // PRECOMPUTED VIEW-MODELS (perf)\n // ========================================\n\n /**\n * Rebuild the precomputed per-record view-models. Called from ngOnInit,\n * ngOnChanges (on any render-affecting input), and after standalone loadData.\n * Doing this work here — once per data/filter/selection change — instead of via\n * template method bindings avoids re-running it on every Angular CD cycle.\n */\n private buildCardViewModels(): void {\n const records = this.effectiveRecords;\n this.cardViewModels = records.map((record, index) => this.buildCardViewModel(record, index));\n }\n\n /**\n * Cheaply update the isSelected flag on the EXISTING card view-models in place,\n * preserving the array and every VM object reference. Called when ONLY\n * selectedRecordId changes — avoids a full buildCardViewModels() rebuild (which\n * re-runs buildPkString() allocations + RegExp-building highlightMatch() calls\n * per card). Uses the already-computed vm.pkString, so this is a plain string\n * compare per card with zero allocation or regex work.\n */\n private updateSelectionFlags(): void {\n for (const vm of this.cardViewModels) {\n vm.isSelected = vm.pkString.length > 0 && vm.pkString === this.selectedRecordId;\n }\n }\n\n /**\n * Build a single card view-model, computing the PK string exactly once and\n * reusing it for selection, color, hidden-match, and track-id derivation.\n */\n private buildCardViewModel(record: Record<string, unknown>, index: number): CardViewModel {\n const pkString = this.computePkString(record);\n const trackId = pkString && pkString.trim().length > 0 ? pkString : `record_${index}`;\n const template = this.effectiveTemplate;\n\n const subtitleField = template?.subtitleField ?? null;\n const subtitleValue = subtitleField ? this.getFieldValue(record, subtitleField) : '';\n const descriptionField = template?.descriptionField ?? null;\n\n return {\n record,\n pkString,\n trackId,\n isSelected: pkString.length > 0 && pkString === this.selectedRecordId,\n color: this.computeRecordColor(pkString),\n thumbnailType: this.getThumbnailType(record),\n thumbnailUrl: this.getThumbnailUrl(record),\n initials: this.getInitials(record),\n highlightedTitle: this.highlightMatch(this.getCombinedTitle(record)),\n subtitleValue,\n highlightedSubtitle: this.highlightMatch(subtitleValue),\n highlightedDescription: descriptionField\n ? this.highlightMatch(this.getTextValue(record, descriptionField, 100))\n : '',\n displayFields: this.buildDisplayFieldVMs(record, template),\n badgeValue: template?.badgeField ? this.getFieldValue(record, template.badgeField) : '',\n hasHiddenFieldMatch: this.computeHasHiddenFieldMatch(pkString),\n hiddenMatchFieldName: this.computeHiddenMatchFieldName(pkString)\n };\n }\n\n /**\n * Precompute the display-field VMs for a record, in template order.\n */\n private buildDisplayFieldVMs(record: Record<string, unknown>, template: CardTemplate | null): CardDisplayFieldVM[] {\n if (!template || template.displayFields.length === 0) return [];\n return template.displayFields.map(field => ({\n field,\n booleanValue: this.getBooleanValue(record, field.name),\n numericValue: this.getNumericValue(record, field.name),\n dateValue: this.getDateValue(record, field.name),\n highlightedText: this.highlightMatch(this.getTextValue(record, field.name, 40))\n }));\n }\n\n /**\n * Compute the PK concatenated string for a record. Returns '' when no entity\n * or on error, so callers can treat it as \"no stable key\".\n */\n private computePkString(record: Record<string, unknown>): string {\n if (!this.entity) return '';\n try {\n return buildPkString(record, this.entity);\n } catch {\n return '';\n }\n }\n\n /**\n * Derive the avatar/background color from an already-computed PK string.\n */\n private computeRecordColor(pkString: string): string {\n if (!this.entity || !pkString) return 'var(--mj-brand-primary)';\n const colors = ['var(--mj-brand-primary)', 'var(--mj-status-success)', 'var(--mj-status-warning)', 'var(--mj-brand-primary)', 'var(--mj-status-error)', 'var(--mj-brand-primary)', 'var(--mj-text-muted)', 'var(--mj-text-secondary)'];\n let hash = 0;\n for (let i = 0; i < pkString.length; i++) {\n hash = pkString.charCodeAt(i) + ((hash << 5) - hash);\n }\n return colors[Math.abs(hash) % colors.length];\n }\n\n /**\n * Whether the record (by PK string) matched on a hidden field.\n */\n private computeHasHiddenFieldMatch(pkString: string): boolean {\n if (!this.entity || !pkString) return false;\n return this.hiddenFieldMatches.has(pkString);\n }\n\n /**\n * Resolve the display name of the hidden field that matched, from a PK string.\n */\n private computeHiddenMatchFieldName(pkString: string): string {\n if (!this.entity || !pkString) return '';\n const fieldName = this.hiddenFieldMatches.get(pkString);\n if (!fieldName) return '';\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n return field ? field.DisplayNameOrName : fieldName;\n }\n\n /**\n * Get the combined title from all title fields for a record.\n * Joins multiple IsNameField values with spaces (e.g., \"Elizabeth Rodriguez\").\n */\n getCombinedTitle(record: Record<string, unknown>): string {\n const template = this.effectiveTemplate;\n if (!template?.titleFields || template.titleFields.length === 0) return '';\n const parts = template.titleFields\n .map(f => this.getFieldValue(record, f))\n .filter(v => v && v.trim().length > 0);\n return parts.length > 0 ? parts.join(' ') : '';\n }\n\n getInitials(record: Record<string, unknown>): string {\n const title = this.getCombinedTitle(record);\n if (!title) return '?';\n\n const words = title.split(/\\s+/).filter(w => w.length > 0);\n if (words.length === 1) return words[0].substring(0, 2).toUpperCase();\n return (words[0][0] + words[words.length - 1][0]).toUpperCase();\n }\n\n /**\n * Get the thumbnail type for a record, with per-record fallback through thumbnailFields\n */\n getThumbnailType(record: Record<string, unknown>): 'image' | 'icon' | 'none' {\n const fieldInfo = this.getEffectiveThumbnailField(record);\n if (!fieldInfo) return 'none';\n\n const { fieldName, value } = fieldInfo;\n const fieldMeta = this.entity?.Fields.find(f => f.Name === fieldName);\n\n if (fieldMeta?.ExtendedType === 'Image' && CoerceImageSrc(value)) return 'image';\n if (fieldMeta?.ExtendedType === 'Icon') return 'icon';\n\n if (this.isImageValue(value)) return 'image';\n if (this.isIconClass(value)) return 'icon';\n\n return 'none';\n }\n\n /**\n * Get the thumbnail URL/value for a record, with per-record fallback\n */\n getThumbnailUrl(record: Record<string, unknown>): string {\n const fieldInfo = this.getEffectiveThumbnailField(record);\n if (!fieldInfo) return '';\n return CoerceImageSrc(fieldInfo.value) || fieldInfo.value;\n }\n\n /**\n * Find the first thumbnail field that has a value for this record\n * Returns both the field name and value for type determination\n */\n private getEffectiveThumbnailField(record: Record<string, unknown>): { fieldName: string; value: string } | null {\n const template = this.effectiveTemplate;\n if (!template?.thumbnailFields || template.thumbnailFields.length === 0) return null;\n\n // Try each field in priority order until we find one with a value\n for (const fieldName of template.thumbnailFields) {\n const value = this.getFieldValue(record, fieldName);\n if (value && value.trim() !== '') {\n return { fieldName, value };\n }\n }\n\n return null;\n }\n\n private isImageValue(value: string): boolean {\n return CoerceImageSrc(value) != null;\n }\n\n private isIconClass(value: string): boolean {\n if (!value) return false;\n const trimmed = value.trim().toLowerCase();\n if (trimmed.startsWith('fa-') || trimmed.startsWith('fa ') ||\n trimmed.startsWith('fas ') || trimmed.startsWith('far ') ||\n trimmed.startsWith('fal ') || trimmed.startsWith('fab ')) return true;\n if (trimmed.includes('material-icons') || trimmed.startsWith('mat-icon')) return true;\n if (trimmed.startsWith('bi-') || trimmed.startsWith('bi ')) return true;\n return false;\n }\n\n getRecordColor(record: Record<string, unknown>): string {\n return this.computeRecordColor(this.computePkString(record));\n }\n\n isEnumField(fieldName: string): boolean {\n if (!this.entity) return false;\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n if (!field) return false;\n return field.ValueListTypeEnum !== EntityFieldValueListType.None && field.EntityFieldValues.length > 0;\n }\n\n get subtitleIsPill(): boolean {\n const template = this.effectiveTemplate;\n if (!template?.subtitleField || !this.entity) return false;\n return this.isEnumField(template.subtitleField);\n }\n\n getPillColorType(value: string): string {\n return PillColorUtil.getColorType(value);\n }\n\n /**\n * Check if a record matched on a hidden field\n */\n hasHiddenFieldMatch(record: Record<string, unknown>): boolean {\n if (!this.entity) return false;\n return this.hiddenFieldMatches.has(buildPkString(record, this.entity));\n }\n\n /**\n * Get the display name of the hidden field that matched\n */\n getHiddenMatchFieldName(record: Record<string, unknown>): string {\n if (!this.entity) return '';\n const fieldName = this.hiddenFieldMatches.get(buildPkString(record, this.entity));\n if (!fieldName || !this.entity) return '';\n // Look up the field in entity metadata and use DisplayNameOrName\n const field = this.entity.Fields.find(f => f.Name === fieldName);\n return field ? field.DisplayNameOrName : fieldName;\n }\n\n /**\n * Highlight matching text in a string based on the filter text\n * Uses HighlightUtil which only highlights if the text actually matches the pattern\n */\n highlightMatch(text: string): string {\n return HighlightUtil.highlight(text, this.filterText, false);\n }\n}\n","<div class=\"cards-view-wrapper\">\n @if (isLoading && effectiveRecords.length === 0) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading records...\"></mj-loading>\n </div>\n } @else {\n <div class=\"cards-container\">\n @for (vm of cardViewModels; track vm.trackId) {\n <div\n class=\"data-card\"\n [class.selected]=\"vm.isSelected\"\n (click)=\"onCardClick(vm.record)\">\n\n <!-- Card Header with Avatar/Icon -->\n <div class=\"card-header\">\n @switch (vm.thumbnailType) {\n @case ('image') {\n <div class=\"card-thumbnail\">\n <img [src]=\"vm.thumbnailUrl\" alt=\"\" />\n </div>\n }\n @case ('icon') {\n <div class=\"card-avatar\" [style.background-color]=\"vm.color\">\n <i [class]=\"vm.thumbnailUrl\"></i>\n </div>\n }\n @default {\n <div class=\"card-avatar\" [style.background-color]=\"vm.color\">\n {{ vm.initials }}\n </div>\n }\n }\n\n <div class=\"card-header-content\">\n <h3 class=\"card-title\" [innerHTML]=\"vm.highlightedTitle\"></h3>\n @if (effectiveTemplate?.subtitleField) {\n @if (subtitleIsPill) {\n <mj-pill [value]=\"vm.subtitleValue\"></mj-pill>\n } @else {\n <span class=\"card-subtitle\" [innerHTML]=\"vm.highlightedSubtitle\"></span>\n }\n }\n </div>\n\n <button class=\"card-open-btn\" (click)=\"onOpenClick($event, vm.record)\" title=\"Open Record\">\n <i class=\"fa-solid fa-external-link-alt\"></i>\n </button>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (effectiveTemplate?.descriptionField) {\n <p class=\"card-description\" [innerHTML]=\"vm.highlightedDescription\"></p>\n }\n\n <!-- Display Fields -->\n @if (vm.displayFields.length > 0) {\n <div class=\"card-fields\">\n @for (df of vm.displayFields; track df.field.name) {\n <div class=\"field-item\" [class.field-boolean]=\"df.field.type === 'boolean'\" [class.field-text]=\"df.field.type === 'text'\">\n @switch (df.field.type) {\n @case ('boolean') {\n <i class=\"field-icon\" [class.fa-solid]=\"true\"\n [class.fa-check]=\"df.booleanValue\"\n [class.fa-minus]=\"!df.booleanValue\"\n [class.bool-true]=\"df.booleanValue\"\n [class.bool-false]=\"!df.booleanValue\"></i>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @case ('number') {\n <span class=\"field-value\">{{ df.numericValue }}</span>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @case ('date') {\n <span class=\"field-value field-date\">{{ df.dateValue }}</span>\n <span class=\"field-label\">{{ df.field.label }}</span>\n }\n @default {\n <span class=\"field-label\">{{ df.field.label }}</span>\n <span class=\"field-text-value\" [innerHTML]=\"df.highlightedText\"></span>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Footer with Badge -->\n @if (effectiveTemplate?.badgeField) {\n <div class=\"card-footer\">\n <mj-pill [value]=\"vm.badgeValue\"></mj-pill>\n </div>\n }\n\n <!-- Hidden field match indicator -->\n @if (vm.hasHiddenFieldMatch) {\n <div class=\"hidden-match-indicator\" [title]=\"'Matched in: ' + vm.hiddenMatchFieldName\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <span>{{ vm.hiddenMatchFieldName }}</span>\n </div>\n }\n </div>\n }\n\n @if (effectiveRecords.length === 0) {\n <mj-empty-state\n class=\"no-results\"\n Variant=\"no-results\"\n Title=\"No records to display\" />\n }\n </div>\n }\n</div>\n"]}
|
|
@@ -447,6 +447,13 @@ export declare class EntityDataGridComponent extends BaseAngularComponent implem
|
|
|
447
447
|
* Get formatted aggregate value for display
|
|
448
448
|
*/
|
|
449
449
|
getAggregateValue(agg: ViewGridAggregate): string;
|
|
450
|
+
/**
|
|
451
|
+
* Whether an aggregate summarises a date-only column. An aggregate carries no field metadata of
|
|
452
|
+
* its own, so the column is read from a single-field expression such as `MIN(IntakeDate)` or
|
|
453
|
+
* from the column the aggregate is pinned under. A `date` column is a calendar day and must not
|
|
454
|
+
* be shifted into the reader's zone (MJ#4210).
|
|
455
|
+
*/
|
|
456
|
+
private aggregateIsDateOnly;
|
|
450
457
|
/**
|
|
451
458
|
* Emitted when aggregate results are loaded.
|
|
452
459
|
* Contains the array of AggregateResult objects and a values map for easy lookup.
|
|
@@ -911,10 +918,21 @@ export declare class EntityDataGridComponent extends BaseAngularComponent implem
|
|
|
911
918
|
/**
|
|
912
919
|
* Format a value using custom ColumnFormat settings
|
|
913
920
|
*/
|
|
921
|
+
/**
|
|
922
|
+
* Default rendering of a date-family cell. A `date` column is a calendar day that arrives as UTC
|
|
923
|
+
* midnight; a local-zone formatter would land on the previous day for every reader west of
|
|
924
|
+
* Greenwich (MJ#4210). A timestamp names an instant and stays in local time.
|
|
925
|
+
*/
|
|
926
|
+
private formatDefaultDate;
|
|
914
927
|
private formatValueWithCustomFormat;
|
|
915
928
|
private formatCustomNumber;
|
|
916
929
|
private formatCustomCurrency;
|
|
917
930
|
private formatCustomPercent;
|
|
931
|
+
/**
|
|
932
|
+
* @param dateOnly The column is a SQL `date`: a calendar day at UTC midnight with no time to show.
|
|
933
|
+
* It is rendered in UTC so the day does not shift west of Greenwich, and a `datetime` column
|
|
934
|
+
* format cannot add a time of day to it (MJ#4210). A timestamp column keeps local rendering.
|
|
935
|
+
*/
|
|
918
936
|
private formatCustomDate;
|
|
919
937
|
private formatCustomBoolean;
|
|
920
938
|
private updateAgRowSelection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-data-grid.component.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-data-grid/entity-data-grid.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity-data-grid.component.d.ts","sourceRoot":"","sources":["../../../src/lib/entity-data-grid/entity-data-grid.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,11 @@ import { trigger, transition, style, animate } from '@angular/animations';
|
|
|
3
3
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { LogError, RunView, RunViewParams, CoerceImageSrc, ParseCssHexColor, CompositeKey } from '@memberjunction/core';
|
|
6
|
+
import { LogError, RunView, RunViewParams, CoerceImageSrc, ParseCssHexColor, CompositeKey, IsDateOnlySQLType, FormatDateOnly, EntityFieldTSType } from '@memberjunction/core';
|
|
7
7
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
8
8
|
import { EntityActionEngineBase } from '@memberjunction/actions-base';
|
|
9
9
|
import { buildPkString, canonicalizeColumnFields, computeFieldsList } from '../utils/record.util';
|
|
10
|
+
import { AggregateField } from '../utils/aggregate-field.util';
|
|
10
11
|
import { ViewInfo, UserViewEngine, UserInfoEngine } from '@memberjunction/core-entities';
|
|
11
12
|
import { ModuleRegistry, AllCommunityModule, themeAlpine } from 'ag-grid-community';
|
|
12
13
|
// Use the existing HighlightUtil from entity-viewer package
|
|
@@ -1548,11 +1549,33 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
1548
1549
|
minimumFractionDigits: 0
|
|
1549
1550
|
});
|
|
1550
1551
|
}
|
|
1552
|
+
// A date aggregate reaches the browser as an ISO string: the server JSON-stringifies the value
|
|
1553
|
+
// and the client parses it back, which turns a Date into text. Resolve the column's type first
|
|
1554
|
+
// so a `date` column renders as its stored day whether the value is a Date or that string.
|
|
1555
|
+
if (typeof value !== 'boolean' && this.aggregateIsDateOnly(agg)) {
|
|
1556
|
+
return FormatDateOnly(value);
|
|
1557
|
+
}
|
|
1551
1558
|
if (value instanceof Date) {
|
|
1552
1559
|
return value.toLocaleDateString();
|
|
1553
1560
|
}
|
|
1561
|
+
// A timestamp aggregate arrives as the same ISO string. It names an instant, so it is rendered
|
|
1562
|
+
// in local time, as a Date instance would be — not printed as the wire text.
|
|
1563
|
+
if (typeof value === 'string' && AggregateField(agg, this._entityInfo)?.TSType === EntityFieldTSType.Date) {
|
|
1564
|
+
const date = new Date(value);
|
|
1565
|
+
if (!isNaN(date.getTime()))
|
|
1566
|
+
return date.toLocaleDateString();
|
|
1567
|
+
}
|
|
1554
1568
|
return String(value);
|
|
1555
1569
|
}
|
|
1570
|
+
/**
|
|
1571
|
+
* Whether an aggregate summarises a date-only column. An aggregate carries no field metadata of
|
|
1572
|
+
* its own, so the column is read from a single-field expression such as `MIN(IntakeDate)` or
|
|
1573
|
+
* from the column the aggregate is pinned under. A `date` column is a calendar day and must not
|
|
1574
|
+
* be shifted into the reader's zone (MJ#4210).
|
|
1575
|
+
*/
|
|
1576
|
+
aggregateIsDateOnly(agg) {
|
|
1577
|
+
return IsDateOnlySQLType(AggregateField(agg, this._entityInfo)?.Type);
|
|
1578
|
+
}
|
|
1556
1579
|
// ========================================
|
|
1557
1580
|
// Event Outputs
|
|
1558
1581
|
// ========================================
|
|
@@ -2621,8 +2644,24 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
2621
2644
|
// AG Grid Column Building
|
|
2622
2645
|
// ========================================
|
|
2623
2646
|
buildAgColumnDefs() {
|
|
2624
|
-
|
|
2625
|
-
|
|
2647
|
+
// A grid state whose settings name NONE of this entity's fields is not a column preference —
|
|
2648
|
+
// it is evidence the state belongs to a different entity. `_gridState` outlives an entity
|
|
2649
|
+
// change when one viewer is rebound from entity A to entity B (`EntityName` is a rebindable
|
|
2650
|
+
// input), every setting is then dropped for naming a field B does not have, and taking that
|
|
2651
|
+
// empty array as the answer rendered a grid with no header and no cells while the rows loaded
|
|
2652
|
+
// and the row count read correctly — no error, no warning. So treat an empty result as NO
|
|
2653
|
+
// usable state and fall through to the sources that describe the entity actually in hand.
|
|
2654
|
+
// This is the floor `generateAgColumnDefs()` already has for an entity with no DefaultInView
|
|
2655
|
+
// fields; the grid-state branch was the one path without one.
|
|
2656
|
+
//
|
|
2657
|
+
// Only a TOTAL miss is treated this way. One surviving setting is a real preference — a saved
|
|
2658
|
+
// view whose entity has since lost a field — and discarding it would throw away the user's
|
|
2659
|
+
// columns to guess at state that is legitimately theirs.
|
|
2660
|
+
const fromGridState = (this._gridState?.columnSettings?.length && this._entityInfo)
|
|
2661
|
+
? this.buildAgColumnDefsFromGridState(this._gridState.columnSettings)
|
|
2662
|
+
: [];
|
|
2663
|
+
if (fromGridState.length > 0) {
|
|
2664
|
+
this.agColumnDefs = fromGridState;
|
|
2626
2665
|
}
|
|
2627
2666
|
else if (this._columns.length > 0) {
|
|
2628
2667
|
this.agColumnDefs = this._columns.map(col => this.mapColumnConfigToColDef(col));
|
|
@@ -3088,7 +3127,7 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3088
3127
|
const useCustomFormat = customFormat && customFormat.type && customFormat.type !== 'auto';
|
|
3089
3128
|
if (useCustomFormat) {
|
|
3090
3129
|
// Use custom formatting
|
|
3091
|
-
displayValue = this.formatValueWithCustomFormat(params.value, customFormat);
|
|
3130
|
+
displayValue = this.formatValueWithCustomFormat(params.value, customFormat, field);
|
|
3092
3131
|
// Check if formatCustomBoolean returned HTML (icon or checkbox)
|
|
3093
3132
|
if (customFormat.type === 'boolean' &&
|
|
3094
3133
|
(customFormat.booleanDisplay === 'icon' || customFormat.booleanDisplay === 'checkbox')) {
|
|
@@ -3112,20 +3151,7 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3112
3151
|
}
|
|
3113
3152
|
// Date formatting
|
|
3114
3153
|
else if (fieldType === 'Date') {
|
|
3115
|
-
|
|
3116
|
-
if (isNaN(date.getTime())) {
|
|
3117
|
-
displayValue = String(params.value);
|
|
3118
|
-
}
|
|
3119
|
-
else if (vc.friendlyDates) {
|
|
3120
|
-
displayValue = date.toLocaleDateString(undefined, {
|
|
3121
|
-
month: 'short',
|
|
3122
|
-
day: 'numeric',
|
|
3123
|
-
year: 'numeric'
|
|
3124
|
-
});
|
|
3125
|
-
}
|
|
3126
|
-
else {
|
|
3127
|
-
displayValue = date.toISOString().split('T')[0];
|
|
3128
|
-
}
|
|
3154
|
+
displayValue = this.formatDefaultDate(params.value, field, !!vc.friendlyDates);
|
|
3129
3155
|
}
|
|
3130
3156
|
// Currency formatting
|
|
3131
3157
|
else if (fieldType === 'number' && isCurrency) {
|
|
@@ -3243,7 +3269,21 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3243
3269
|
/**
|
|
3244
3270
|
* Format a value using custom ColumnFormat settings
|
|
3245
3271
|
*/
|
|
3246
|
-
|
|
3272
|
+
/**
|
|
3273
|
+
* Default rendering of a date-family cell. A `date` column is a calendar day that arrives as UTC
|
|
3274
|
+
* midnight; a local-zone formatter would land on the previous day for every reader west of
|
|
3275
|
+
* Greenwich (MJ#4210). A timestamp names an instant and stays in local time.
|
|
3276
|
+
*/
|
|
3277
|
+
formatDefaultDate(value, field, friendlyDates) {
|
|
3278
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
3279
|
+
if (isNaN(date.getTime()))
|
|
3280
|
+
return String(value);
|
|
3281
|
+
if (!friendlyDates)
|
|
3282
|
+
return date.toISOString().split('T')[0];
|
|
3283
|
+
const options = { month: 'short', day: 'numeric', year: 'numeric' };
|
|
3284
|
+
return IsDateOnlySQLType(field.Type) ? FormatDateOnly(date, options) : date.toLocaleDateString(undefined, options);
|
|
3285
|
+
}
|
|
3286
|
+
formatValueWithCustomFormat(value, format, field) {
|
|
3247
3287
|
if (value == null)
|
|
3248
3288
|
return '—';
|
|
3249
3289
|
switch (format.type) {
|
|
@@ -3255,7 +3295,7 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3255
3295
|
return this.formatCustomPercent(value, format);
|
|
3256
3296
|
case 'date':
|
|
3257
3297
|
case 'datetime':
|
|
3258
|
-
return this.formatCustomDate(value, format);
|
|
3298
|
+
return this.formatCustomDate(value, format, IsDateOnlySQLType(field.Type));
|
|
3259
3299
|
case 'boolean':
|
|
3260
3300
|
return this.formatCustomBoolean(value, format);
|
|
3261
3301
|
default:
|
|
@@ -3297,7 +3337,12 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3297
3337
|
// Assume value is already a percentage (e.g., 50 = 50%), divide by 100
|
|
3298
3338
|
return new Intl.NumberFormat('en-US', options).format(num / 100);
|
|
3299
3339
|
}
|
|
3300
|
-
|
|
3340
|
+
/**
|
|
3341
|
+
* @param dateOnly The column is a SQL `date`: a calendar day at UTC midnight with no time to show.
|
|
3342
|
+
* It is rendered in UTC so the day does not shift west of Greenwich, and a `datetime` column
|
|
3343
|
+
* format cannot add a time of day to it (MJ#4210). A timestamp column keeps local rendering.
|
|
3344
|
+
*/
|
|
3345
|
+
formatCustomDate(value, format, dateOnly) {
|
|
3301
3346
|
const date = value instanceof Date ? value : new Date(value);
|
|
3302
3347
|
if (isNaN(date.getTime()))
|
|
3303
3348
|
return String(value);
|
|
@@ -3305,6 +3350,7 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3305
3350
|
const formatStr = format.dateFormat || 'medium';
|
|
3306
3351
|
const includeWeekday = formatStr.includes('-weekday');
|
|
3307
3352
|
const baseFormat = formatStr.replace('-weekday', '');
|
|
3353
|
+
const withTime = format.type === 'datetime' && !dateOnly;
|
|
3308
3354
|
let options;
|
|
3309
3355
|
// Intl.DateTimeFormat doesn't allow combining dateStyle with weekday
|
|
3310
3356
|
// So we must use individual components when weekday is requested
|
|
@@ -3319,7 +3365,7 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3319
3365
|
// medium
|
|
3320
3366
|
options = { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric' };
|
|
3321
3367
|
}
|
|
3322
|
-
if (
|
|
3368
|
+
if (withTime) {
|
|
3323
3369
|
options.hour = 'numeric';
|
|
3324
3370
|
options.minute = '2-digit';
|
|
3325
3371
|
}
|
|
@@ -3329,11 +3375,11 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
3329
3375
|
options = {
|
|
3330
3376
|
dateStyle: baseFormat === 'short' ? 'short' : baseFormat === 'long' ? 'long' : 'medium'
|
|
3331
3377
|
};
|
|
3332
|
-
if (
|
|
3378
|
+
if (withTime) {
|
|
3333
3379
|
options.timeStyle = 'short';
|
|
3334
3380
|
}
|
|
3335
3381
|
}
|
|
3336
|
-
return new Intl.DateTimeFormat('en-US', options).format(date);
|
|
3382
|
+
return dateOnly ? FormatDateOnly(date, options, 'en-US') : new Intl.DateTimeFormat('en-US', options).format(date);
|
|
3337
3383
|
}
|
|
3338
3384
|
formatCustomBoolean(value, format) {
|
|
3339
3385
|
if (format.booleanDisplay === 'icon') {
|
|
@@ -5268,5 +5314,5 @@ export class EntityDataGridComponent extends BaseAngularComponent {
|
|
|
5268
5314
|
type: ViewChild,
|
|
5269
5315
|
args: ['gridContainer']
|
|
5270
5316
|
}] }); })();
|
|
5271
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityDataGridComponent, { className: "EntityDataGridComponent", filePath: "src/lib/entity-data-grid/entity-data-grid.component.ts", lineNumber:
|
|
5317
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EntityDataGridComponent, { className: "EntityDataGridComponent", filePath: "src/lib/entity-data-grid/entity-data-grid.component.ts", lineNumber: 191 }); })();
|
|
5272
5318
|
//# sourceMappingURL=entity-data-grid.component.js.map
|