@memberjunction/ng-entity-viewer 5.3.1 → 5.4.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/__tests__/highlight.test.js.map +1 -1
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/lib/aggregate-panel/aggregate-panel.component.js.map +1 -1
- package/dist/lib/aggregate-setup-dialog/aggregate-setup-dialog.component.js.map +1 -1
- package/dist/lib/confirm-dialog/confirm-dialog.component.js.map +1 -1
- package/dist/lib/duplicate-view-dialog/duplicate-view-dialog.component.js.map +1 -1
- package/dist/lib/entity-cards/entity-cards.component.js.map +1 -1
- package/dist/lib/entity-data-grid/entity-data-grid.component.js.map +1 -1
- package/dist/lib/entity-data-grid/events/grid-events.js.map +1 -1
- package/dist/lib/entity-data-grid/models/grid-types.js.map +1 -1
- package/dist/lib/entity-record-detail-panel/entity-record-detail-panel.component.js.map +1 -1
- package/dist/lib/entity-viewer/entity-viewer.component.js.map +1 -1
- package/dist/lib/pagination/pagination.component.js.map +1 -1
- package/dist/lib/pill/pill.component.js.map +1 -1
- package/dist/lib/quick-save-dialog/quick-save-dialog.component.js.map +1 -1
- package/dist/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.js.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils/highlight.util.js.map +1 -1
- package/dist/lib/utils/record.util.js.map +1 -1
- package/dist/lib/view-config-panel/view-config-panel.component.js.map +1 -1
- package/dist/lib/view-header/view-header.component.js.map +1 -1
- package/dist/module.js.map +1 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-viewer.component.js","sourceRoot":"","sources":["../../../src/lib/entity-viewer/entity-viewer.component.ts","../../../src/lib/entity-viewer/entity-viewer.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entity-viewer.component.js","sourceRoot":"","sources":["../../../src/lib/entity-viewer/entity-viewer.component.ts","../../../src/lib/entity-viewer/entity-viewer.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, ViewChild, NgZone } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { EntityInfo, EntityFieldInfo, EntityFieldTSType, RunView, RunViewParams, Metadata, CompositeKey } from '@memberjunction/core';\nimport { MJUserViewEntityExtended } from '@memberjunction/core-entities';\nimport { buildCompositeKey, buildPkString, computeFieldsList } from '../utils/record.util';\nimport { TimelineGroup, TimeSegmentGrouping, TimelineSortOrder, AfterEventClickArgs } from '@memberjunction/ng-timeline';\nimport {\n EntityViewMode,\n EntityViewerConfig,\n DEFAULT_VIEWER_CONFIG,\n RecordSelectedEvent,\n RecordOpenedEvent,\n DataLoadedEvent,\n FilteredCountChangedEvent,\n CardTemplate,\n GridColumnDef,\n SortState,\n SortChangedEvent,\n PaginationState,\n ViewGridState,\n GridStateChangedEvent,\n TimelineSegmentGrouping,\n TimelineOrientation,\n TimelineState\n} from '../types';\nimport {\n AfterRowClickEventArgs,\n AfterRowDoubleClickEventArgs,\n AfterSortEventArgs\n} from '../entity-data-grid/events/grid-events';\nimport { GridToolbarConfig, GridSelectionMode, ForeignKeyClickEvent } from '../entity-data-grid/models/grid-types';\nimport { EntityDataGridComponent } from '../entity-data-grid/entity-data-grid.component';\n\n/**\n * EntityViewerComponent - Full-featured composite component for viewing entity data\n *\n * This component provides a complete data viewing experience with:\n * - Switchable grid (AG Grid) and card views\n * - Server-side filtering with UserSearchString\n * - Server-side pagination with StartRow/MaxRows\n * - Server-side sorting with OrderBy\n * - Selection handling with configurable behavior\n * - Loading, empty, and error states\n * - Beautiful pagination UI with \"Load More\" pattern\n *\n * @example\n * ```html\n * <!-- Basic usage - loads data automatically -->\n * <mj-entity-viewer\n * [entity]=\"selectedEntity\"\n * (recordSelected)=\"onRecordSelected($event)\"\n * (recordOpened)=\"onRecordOpened($event)\">\n * </mj-entity-viewer>\n *\n * <!-- With external state control (like Data Explorer) -->\n * <mj-entity-viewer\n * [entity]=\"selectedEntity\"\n * [(viewMode)]=\"state.viewMode\"\n * [filterText]=\"state.filterText\"\n * [selectedRecordId]=\"state.selectedRecordId\"\n * (recordSelected)=\"onRecordSelected($event)\"\n * (recordOpened)=\"onRecordOpened($event)\"\n * (sortChanged)=\"onSortChanged($event)\">\n * </mj-entity-viewer>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-entity-viewer',\n templateUrl: './entity-viewer.component.html',\n styleUrls: ['./entity-viewer.component.css'],\n host: {\n 'style': 'display: block; height: 100%;'\n }\n})\nexport class EntityViewerComponent implements OnInit, OnDestroy {\n // ========================================\n // INPUTS (using getter/setter pattern)\n // ========================================\n\n private _entity: EntityInfo | null = null;\n private _records: Record<string, unknown>[] | null = null;\n private _config: Partial<EntityViewerConfig> = {};\n private _viewMode: EntityViewMode | null = null;\n private _filterText: string | null = null;\n private _sortState: SortState | null = null;\n private _viewEntity: MJUserViewEntityExtended | null = null;\n private _timelineConfig: TimelineState | null = null;\n private _initialized = false;\n\n /**\n * The entity to display records for\n */\n @Input()\n get entity(): EntityInfo | null {\n return this._entity;\n }\n set entity(value: EntityInfo | null) {\n this._entity = value;\n\n // Detect date fields for timeline support\n this.detectDateFields();\n\n if (this._initialized) {\n if (value && !this._records) {\n // Reset state for new entity - synchronously clear all data and force change detection\n // before starting the async load to prevent stale data display\n this.resetPaginationState();\n this.cdr.detectChanges();\n this.loadData();\n } else if (!value) {\n this.internalRecords = [];\n this.totalRecordCount = 0;\n this.filteredRecordCount = 0;\n this.resetPaginationState();\n this.cdr.detectChanges();\n }\n }\n }\n\n /**\n * Pre-loaded records (optional - if not provided, component loads data)\n */\n @Input()\n get records(): Record<string, unknown>[] | null {\n return this._records;\n }\n set records(value: Record<string, unknown>[] | null) {\n this._records = value;\n\n if (value) {\n this.internalRecords = value;\n this.totalRecordCount = value.length;\n this.filteredRecordCount = value.length;\n // Update timeline with new records\n this.updateTimelineGroups();\n }\n }\n\n /**\n * Configuration options for the viewer\n */\n @Input()\n get config(): Partial<EntityViewerConfig> {\n return this._config;\n }\n set config(value: Partial<EntityViewerConfig>) {\n this._config = value;\n this.applyConfig();\n }\n\n /**\n * Currently selected record ID (primary key string)\n */\n @Input() selectedRecordId: string | null = null;\n\n /**\n * External view mode - allows parent to control view mode\n * Supports two-way binding: [(viewMode)]=\"state.viewMode\"\n */\n @Input()\n get viewMode(): EntityViewMode | null {\n return this._viewMode;\n }\n set viewMode(value: EntityViewMode | null) {\n this._viewMode = value;\n if (value !== null) {\n this.internalViewMode = value;\n }\n }\n\n /**\n * External filter text - allows parent to control filter\n * Supports two-way binding: [(filterText)]=\"state.filterText\"\n */\n @Input()\n get filterText(): string | null {\n return this._filterText;\n }\n set filterText(value: string | null) {\n const oldFilter = this.debouncedFilterText;\n this._filterText = value;\n\n const newFilter = value ?? '';\n this.internalFilterText = newFilter;\n this.debouncedFilterText = newFilter;\n\n if (this._initialized) {\n // If server-side filtering and filter changed, reload from page 1\n // Keep existing records visible during refresh for better UX\n if (this.effectiveConfig.serverSideFiltering && newFilter !== oldFilter && !this._records) {\n this.resetPaginationState(false);\n this.loadData();\n } else {\n this.updateFilteredCount();\n }\n this.cdr.detectChanges();\n }\n }\n\n /**\n * External sort state - allows parent to control sorting\n */\n @Input()\n get sortState(): SortState | null {\n return this._sortState;\n }\n set sortState(value: SortState | null) {\n const oldSort = this.internalSortState;\n this._sortState = value;\n\n if (value !== null) {\n this.internalSortState = value;\n\n if (this._initialized) {\n // If sort changed and using server-side sorting, reload\n // Keep existing records visible during refresh for better UX\n if (this.effectiveConfig.serverSideSorting && !this._records) {\n const sortChanged = !oldSort || !value ||\n oldSort.field !== value.field ||\n oldSort.direction !== value.direction;\n\n if (sortChanged) {\n this.resetPaginationState(false);\n this.loadData();\n }\n }\n }\n }\n }\n\n /**\n * Custom grid column definitions\n */\n @Input() gridColumns: GridColumnDef[] = [];\n\n /**\n * Custom card template\n */\n @Input() cardTemplate: CardTemplate | null = null;\n\n /**\n * Optional User View entity that provides view configuration\n * When provided, the component will use the view's WhereClause, GridState, SortState, etc.\n * The view's filter is additive - UserSearchString is applied ON TOP of the view's WhereClause\n */\n @Input()\n get viewEntity(): MJUserViewEntityExtended | null {\n return this._viewEntity;\n }\n set viewEntity(value: MJUserViewEntityExtended | null) {\n this._viewEntity = value;\n\n if (this._initialized && this._entity && !this._records) {\n // Apply view's sort state if available, then reset pagination and reload\n this.applySortStateFromView(value);\n this.resetPaginationState();\n this.loadData();\n }\n }\n\n /**\n * Grid state configuration from a User View\n * Controls column visibility, widths, order, and sort settings\n */\n @Input() gridState: ViewGridState | null = null;\n\n /**\n * Timeline configuration state\n * Controls which date field is used and segment grouping\n */\n @Input()\n get timelineConfig(): TimelineState | null {\n return this._timelineConfig;\n }\n set timelineConfig(value: TimelineState | null) {\n const prev = this._timelineConfig;\n // Compare by value, not reference\n const isEqual = (prev === null && value === null) ||\n (prev !== null && value !== null &&\n prev.dateFieldName === value.dateFieldName &&\n prev.sortOrder === value.sortOrder &&\n prev.orientation === value.orientation &&\n prev.segmentGrouping === value.segmentGrouping);\n\n if (!isEqual) {\n this._timelineConfig = value;\n if (value && this._entity) {\n this.configureTimeline();\n this.cdr.markForCheck();\n }\n }\n }\n\n /**\n * Whether to show the grid toolbar.\n * When false, the grid is displayed without its own toolbar - useful when\n * entity-viewer provides its own filter/actions in the header.\n * @default false\n */\n @Input() showGridToolbar: boolean = false;\n\n /**\n * Grid toolbar configuration - controls which buttons are shown and their behavior\n * When not provided, uses sensible defaults\n */\n @Input() gridToolbarConfig: Partial<GridToolbarConfig> | null = null;\n\n /**\n * Grid selection mode\n * @default 'single'\n */\n @Input() gridSelectionMode: GridSelectionMode = 'single';\n\n /**\n * Show the \"Add to List\" button in the grid toolbar.\n * Requires gridSelectionMode to be 'multiple' for best UX.\n * @default false\n */\n @Input() showAddToListButton: boolean = false;\n\n // ========================================\n // OUTPUTS\n // ========================================\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 /**\n * Emitted when data is loaded\n */\n @Output() dataLoaded = new EventEmitter<DataLoadedEvent>();\n\n /**\n * Emitted when the view mode changes (for two-way binding)\n */\n @Output() viewModeChange = new EventEmitter<EntityViewMode>();\n\n /**\n * Emitted when filter text changes (for two-way binding)\n */\n @Output() filterTextChange = new EventEmitter<string>();\n\n /**\n * Emitted when filtered count changes\n */\n @Output() filteredCountChanged = new EventEmitter<FilteredCountChangedEvent>();\n\n /**\n * Emitted when sort state changes\n */\n @Output() sortChanged = new EventEmitter<SortChangedEvent>();\n\n /**\n * Emitted when grid state changes (column resize, reorder, etc.)\n */\n @Output() gridStateChanged = new EventEmitter<GridStateChangedEvent>();\n\n /**\n * Emitted when timeline configuration changes (date field, grouping, etc.)\n */\n @Output() timelineConfigChange = new EventEmitter<TimelineState>();\n\n /**\n * Emitted when the Add/New button is clicked in the grid toolbar\n */\n @Output() addRequested = new EventEmitter<void>();\n\n /**\n * Emitted when the Delete button is clicked in the grid toolbar\n * Includes the selected records to be deleted\n */\n @Output() deleteRequested = new EventEmitter<{ records: Record<string, unknown>[] }>();\n\n /**\n * Emitted when the Refresh button is clicked in the grid toolbar\n */\n @Output() refreshRequested = new EventEmitter<void>();\n\n /**\n * Emitted when the Export button is clicked in the grid toolbar\n */\n @Output() exportRequested = new EventEmitter<{ format: 'excel' | 'csv' | 'json' }>();\n\n /**\n * Emitted when the Add to List button is clicked in the grid toolbar.\n * Parent components should handle this to show the list management dialog.\n */\n @Output() addToListRequested = new EventEmitter<{\n entityInfo: EntityInfo;\n records: Record<string, unknown>[];\n recordIds: string[];\n }>();\n\n /**\n * Emitted when grid selection changes.\n * Parent components can use this to track selected records for their own toolbar buttons.\n */\n @Output() selectionChanged = new EventEmitter<{\n records: Record<string, unknown>[];\n recordIds: string[];\n }>();\n\n // ========================================\n // INTERNAL STATE\n // ========================================\n\n public internalViewMode: EntityViewMode = 'grid';\n public internalFilterText: string = '';\n public debouncedFilterText: string = '';\n public isLoading: boolean = false;\n public loadingMessage: string = 'Loading...';\n public internalRecords: Record<string, unknown>[] = [];\n public totalRecordCount: number = 0;\n public filteredRecordCount: number = 0;\n\n /** Track which records matched on hidden (non-visible) fields */\n public hiddenFieldMatches = new Map<string, string>();\n\n /** Current sort state */\n public internalSortState: SortState | null = null;\n\n /** Cached grid params to avoid recreating object on every change detection */\n private _cachedGridParams: RunViewParams | null = null;\n private _lastGridParamsEntity: string | null = null;\n private _lastGridParamsViewEntity: MJUserViewEntityExtended | null = null;\n\n /** Pagination state */\n public pagination: PaginationState = {\n currentPage: 0,\n pageSize: 100,\n totalRecords: 0,\n hasMore: false,\n isLoading: false\n };\n\n // ========================================\n // TIMELINE STATE\n // ========================================\n\n /** Whether the current entity has date fields available for timeline view */\n public hasDateFields: boolean = false;\n\n /** Available date fields from the entity (sorted by priority) */\n public availableDateFields: EntityFieldInfo[] = [];\n\n /** Timeline groups configuration for the timeline component */\n get timelineGroups(): TimelineGroup<Record<string, unknown>>[] {\n return this._timelineGroups;\n }\n set timelineGroups(value: TimelineGroup<Record<string, unknown>>[]) {\n const prev = this._timelineGroups;\n this._timelineGroups = value;\n\n // Detect meaningful changes to trigger refresh in child timeline component\n const hasChanged = prev !== value ||\n (prev.length > 0 && value.length > 0 &&\n (prev[0].EntityObjects !== value[0]?.EntityObjects ||\n prev[0].DateFieldName !== value[0]?.DateFieldName));\n\n if (hasChanged) {\n // Force change detection to propagate to child timeline component\n this.cdr.markForCheck();\n }\n }\n private _timelineGroups: TimelineGroup<Record<string, unknown>>[] = [];\n\n /** Timeline sort order */\n public timelineSortOrder: TimelineSortOrder = 'desc';\n\n /** Timeline segment grouping */\n public timelineSegmentGrouping: TimeSegmentGrouping = 'month';\n\n /** Timeline orientation (vertical or horizontal) */\n public timelineOrientation: TimelineOrientation = 'vertical';\n\n /** Currently selected date field for timeline */\n public selectedTimelineDateField: string | null = null;\n\n private destroy$ = new Subject<void>();\n private filterInput$ = new Subject<string>();\n\n /** Track if this is the first load (vs. load more) */\n private isInitialLoad: boolean = true;\n\n /** Reference to the data grid component for flushing pending changes */\n @ViewChild(EntityDataGridComponent) private dataGridRef: EntityDataGridComponent | undefined;\n\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone) {}\n\n // ========================================\n // PUBLIC METHODS\n // ========================================\n\n /**\n * Ensures any pending grid state changes are saved immediately without waiting for debounce.\n * Call this before switching views or entities to ensure changes are saved.\n */\n public EnsurePendingChangesSaved(): void {\n this.dataGridRef?.EnsurePendingChangesSaved();\n }\n\n // ========================================\n // COMPUTED PROPERTIES\n // ========================================\n\n /**\n * Get the effective entity - uses entity input if provided, otherwise derives from viewEntity\n * This allows callers to provide just a viewEntity without explicitly setting the entity input.\n * Uses fallback resolution when ViewEntityInfo is not available.\n */\n get effectiveEntity(): EntityInfo | null {\n if (this.entity) {\n return this.entity;\n }\n // Auto-derive from viewEntity if available\n if (this.viewEntity) {\n return this.getEntityInfoFromViewEntity(this.viewEntity);\n }\n return null;\n }\n\n /**\n * Gets EntityInfo from a ViewEntity with multiple fallback strategies.\n * Priority: 1) ViewEntityInfo property (set by Load)\n * 2) Entity name lookup (virtual field)\n * 3) EntityID lookup\n * Returns null if entity cannot be determined.\n */\n private getEntityInfoFromViewEntity(viewEntity: MJUserViewEntityExtended): EntityInfo | null {\n // First try: ViewEntityInfo is the preferred source (set by MJUserViewEntityExtended.Load)\n if (viewEntity.ViewEntityInfo) {\n return viewEntity.ViewEntityInfo;\n }\n\n const md = new Metadata();\n\n // Second try: Look up by Entity name (virtual field that returns entity name)\n if (viewEntity.Entity) {\n const entityByName = md.Entities.find(e => e.Name === viewEntity.Entity);\n if (entityByName) {\n return entityByName;\n }\n }\n\n // Third try: Look up by EntityID\n if (viewEntity.EntityID) {\n const entityById = md.Entities.find(e => e.ID === viewEntity.EntityID);\n if (entityById) {\n return entityById;\n }\n }\n\n console.warn(`[EntityViewer] Could not determine entity for view \"${viewEntity.Name}\" (ID: ${viewEntity.ID})`);\n return null;\n }\n\n /**\n * Get the effective view mode (external or internal)\n */\n get effectiveViewMode(): EntityViewMode {\n return this.viewMode ?? this.internalViewMode;\n }\n\n /**\n * Get the effective filter text (external or internal)\n */\n get effectiveFilterText(): string {\n return this.filterText ?? this.internalFilterText;\n }\n\n /**\n * Get the raw ID value from selectedRecordId for timeline selection.\n * The selectedRecordId is in composite key format (e.g., \"ID|abc-123\" or \"ID=abc-123\"),\n * but the timeline stores just the raw ID value.\n */\n get timelineSelectedEventId(): string | null {\n if (!this.selectedRecordId) return null;\n\n // Handle \"ID|value\" format (pipe separator)\n if (this.selectedRecordId.includes('|')) {\n const parts = this.selectedRecordId.split('|');\n return parts.length > 1 ? parts[1] : this.selectedRecordId;\n }\n\n // Handle \"ID=value\" format (equals separator)\n if (this.selectedRecordId.includes('=')) {\n const parts = this.selectedRecordId.split('=');\n return parts.length > 1 ? parts[1] : this.selectedRecordId;\n }\n\n // Return as-is if no separator found\n return this.selectedRecordId;\n }\n\n /**\n * Get the effective sort state (external or internal)\n */\n get effectiveSortState(): SortState | null {\n return this.sortState ?? this.internalSortState;\n }\n\n /**\n * Get the OrderBy string for mj-entity-data-grid from the effective sort state\n */\n get effectiveSortOrderBy(): string {\n const sortState = this.effectiveSortState;\n if (!sortState?.field || !sortState.direction) {\n return '';\n }\n return `${sortState.field} ${sortState.direction.toUpperCase()}`;\n }\n\n /**\n * Get merged configuration with defaults\n */\n get effectiveConfig(): Required<EntityViewerConfig> {\n return { ...DEFAULT_VIEWER_CONFIG, ...this.config };\n }\n\n /**\n * Get cached grid params - only recreates object when entity or viewEntity changes\n * This prevents Angular from seeing a new object reference on every change detection\n * which would cause the grid to reinitialize\n */\n get gridParams(): RunViewParams | null {\n const entity = this.effectiveEntity;\n if (!entity) {\n return null;\n }\n\n // Check if we need to recreate the params object\n const entityChanged = this._lastGridParamsEntity !== entity.Name;\n const viewEntityChanged = this._lastGridParamsViewEntity !== this.viewEntity;\n\n if (entityChanged || viewEntityChanged || !this._cachedGridParams) {\n this._lastGridParamsEntity = entity.Name;\n this._lastGridParamsViewEntity = this.viewEntity ?? null;\n this._cachedGridParams = {\n EntityName: entity.Name,\n ViewEntity: this.viewEntity || undefined\n };\n }\n\n return this._cachedGridParams;\n }\n\n /**\n * Get the effective grid toolbar configuration\n * Merges user-provided config with defaults appropriate for entity-viewer context\n */\n get effectiveGridToolbarConfig(): GridToolbarConfig {\n const defaults: GridToolbarConfig = {\n showSearch: false, // Entity-viewer has its own filter\n showRefresh: true,\n showAdd: true,\n showDelete: true,\n showExport: true,\n showColumnChooser: true,\n showRowCount: true,\n showSelectionCount: true\n };\n return { ...defaults, ...this.gridToolbarConfig };\n }\n\n /**\n * Get the records to display (external or internal)\n */\n get displayRecords(): Record<string, unknown>[] {\n return this.records ?? this.internalRecords;\n }\n\n /**\n * Get filtered records - when using server-side filtering, records are already filtered\n * When using client-side filtering, apply filter locally\n */\n get filteredRecords(): Record<string, unknown>[] {\n const records = this.displayRecords;\n\n // If server-side filtering is enabled, records are already filtered\n if (this.effectiveConfig.serverSideFiltering) {\n return records;\n }\n\n // Client-side filtering fallback\n const filterText = this.debouncedFilterText?.trim().toLowerCase();\n this.hiddenFieldMatches.clear();\n\n if (!filterText || !this.entity) {\n return records;\n }\n\n const visibleFields = this.getVisibleFieldNames();\n\n return records.filter(record => {\n const matchResult = this.recordMatchesFilter(record, filterText, visibleFields);\n if (matchResult.matches && matchResult.matchedField && !matchResult.matchedInVisibleField) {\n const recordKey = buildPkString(record, this.entity!);\n this.hiddenFieldMatches.set(recordKey, matchResult.matchedField);\n }\n return matchResult.matches;\n });\n }\n\n /**\n * Check if a record matches the filter text (client-side)\n */\n private recordMatchesFilter(\n record: Record<string, unknown>,\n filterText: string,\n visibleFields: Set<string>\n ): { matches: boolean; matchedField: string | null; matchedInVisibleField: boolean } {\n if (!this.entity) return { matches: true, matchedField: null, matchedInVisibleField: false };\n\n let matchedField: string | null = null;\n let matchedInVisibleField = false;\n\n for (const field of this.entity.Fields) {\n if (!this.shouldSearchField(field)) continue;\n\n const value = record[field.Name];\n if (value == null) continue;\n\n const stringValue = String(value).toLowerCase();\n if (this.matchesSearchTerm(stringValue, filterText)) {\n matchedField = field.Name;\n if (visibleFields.has(field.Name)) {\n matchedInVisibleField = true;\n break;\n }\n }\n }\n\n return {\n matches: matchedField !== null,\n matchedField,\n matchedInVisibleField\n };\n }\n\n /**\n * Determine if a field should be included in search\n */\n private shouldSearchField(field: EntityFieldInfo): boolean {\n if (field.Name.startsWith('__mj_')) return false;\n if (field.TSType === 'Date') return false;\n if (field.SQLFullType?.trim().toLowerCase() === 'uniqueidentifier') return false;\n return true;\n }\n\n /**\n * Check if a value matches the search term (supports SQL-style % wildcards)\n */\n private matchesSearchTerm(value: string, searchTerm: string): boolean {\n if (!searchTerm.includes('%')) {\n return value.includes(searchTerm);\n }\n\n const fragments = searchTerm.split('%').filter(s => s.length > 0);\n if (fragments.length === 0) return true;\n\n let searchStartIndex = 0;\n for (const fragment of fragments) {\n const foundIndex = value.indexOf(fragment, searchStartIndex);\n if (foundIndex === -1) return false;\n searchStartIndex = foundIndex + fragment.length;\n }\n return true;\n }\n\n /**\n * Get set of field names that are visible in the current view\n */\n private getVisibleFieldNames(): Set<string> {\n const visible = new Set<string>();\n if (!this.entity) return visible;\n\n for (const field of this.entity.Fields) {\n if (field.DefaultInView === true) {\n visible.add(field.Name);\n }\n }\n\n if (this.entity.NameField) {\n visible.add(this.entity.NameField.Name);\n }\n\n return visible;\n }\n\n /**\n * Check if a record matched on a hidden field\n */\n public hasHiddenFieldMatch(record: Record<string, unknown>): boolean {\n if (!this.debouncedFilterText || !this.entity) return false;\n return this.hiddenFieldMatches.has(buildPkString(record, this.entity));\n }\n\n /**\n * Get the name of the hidden field that matched for display\n */\n public 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 const field = this.entity.Fields.find(f => f.Name === fieldName);\n return field ? field.DisplayNameOrName : fieldName;\n }\n\n // ========================================\n // LIFECYCLE HOOKS\n // ========================================\n\n ngOnInit(): void {\n this.applyConfig();\n this.setupFilterDebounce();\n\n // Initialize debounced filter from external filter text if provided\n if (this.filterText !== null) {\n this.debouncedFilterText = this.filterText;\n }\n\n // Initialize sort state from config\n if (this.effectiveConfig.defaultSortField) {\n this.internalSortState = {\n field: this.effectiveConfig.defaultSortField,\n direction: this.effectiveConfig.defaultSortDirection ?? 'asc'\n };\n }\n\n // Mark as initialized - setters will now trigger data loading\n this._initialized = true;\n\n // If viewEntity was set before initialization, extract its sort state now.\n // The viewEntity setter skips this when _initialized is false.\n if (this._viewEntity) {\n this.applySortStateFromView(this._viewEntity);\n }\n\n // If entity was set before initialization, load data now\n if (this._entity && !this._records) {\n this.loadData();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ========================================\n // CONFIGURATION\n // ========================================\n\n /**\n * Extracts sort state from a view entity, checking ViewSortInfo first then\n * falling back to GridState.sortSettings. Resets internalSortState if the\n * view has no sort defined (prevents stale sort from a previous view).\n */\n private applySortStateFromView(view: MJUserViewEntityExtended | null): void {\n if (!view) {\n this.internalSortState = null;\n return;\n }\n\n // Priority 1: SortState column (via ViewSortInfo)\n const viewSortInfo = view.ViewSortInfo;\n if (viewSortInfo && viewSortInfo.length > 0) {\n this.internalSortState = {\n field: viewSortInfo[0].field,\n direction: viewSortInfo[0].direction?.toLowerCase() === 'desc' ? 'desc' : 'asc'\n };\n return;\n }\n\n // Priority 2: GridState.sortSettings (sort may only be stored here)\n if (view.GridState) {\n try {\n const gridState = JSON.parse(view.GridState) as ViewGridState;\n if (gridState.sortSettings && gridState.sortSettings.length > 0) {\n const firstSort = gridState.sortSettings[0];\n this.internalSortState = {\n field: firstSort.field,\n direction: firstSort.dir === 'desc' ? 'desc' : 'asc'\n };\n return;\n }\n } catch {\n // Invalid GridState JSON — ignore\n }\n }\n\n // No sort defined — reset to prevent stale sort from previous view\n this.internalSortState = null;\n }\n\n private applyConfig(): void {\n const config = this.effectiveConfig;\n this.pagination.pageSize = config.pageSize;\n\n if (this.viewMode === null) {\n this.internalViewMode = config.defaultViewMode;\n }\n }\n\n private setupFilterDebounce(): void {\n this.filterInput$\n .pipe(\n debounceTime(this.effectiveConfig.filterDebounceMs),\n distinctUntilChanged(),\n takeUntil(this.destroy$)\n )\n .subscribe(filterText => {\n const oldFilter = this.debouncedFilterText;\n this.debouncedFilterText = filterText;\n this.filterTextChange.emit(filterText);\n\n // If server-side filtering and filter changed, reload from page 1\n // Keep existing records visible during refresh for better UX\n if (this.effectiveConfig.serverSideFiltering && filterText !== oldFilter && !this.records) {\n this.resetPaginationState(false);\n this.loadData();\n } else {\n this.updateFilteredCount();\n }\n this.cdr.detectChanges();\n });\n }\n\n /**\n * Update the filtered record count and emit event\n */\n private updateFilteredCount(): void {\n const newCount = this.filteredRecords.length;\n if (this.filteredRecordCount !== newCount) {\n this.filteredRecordCount = newCount;\n this.filteredCountChanged.emit({\n filteredCount: newCount,\n totalCount: this.totalRecordCount\n });\n }\n }\n\n /**\n * Reset pagination state for a fresh load.\n * When clearRecords is true (default), clears all record data - use for entity switches.\n * When clearRecords is false, keeps existing records visible during refresh - use for sort/filter changes.\n */\n private resetPaginationState(clearRecords: boolean = true): void {\n this.pagination = {\n currentPage: 0,\n pageSize: this.effectiveConfig.pageSize,\n totalRecords: clearRecords ? 0 : this.pagination.totalRecords,\n hasMore: false,\n isLoading: false\n };\n if (clearRecords) {\n this.internalRecords = [];\n this.totalRecordCount = 0;\n this.filteredRecordCount = 0;\n }\n this.isInitialLoad = true;\n }\n\n // ========================================\n // DATA LOADING\n // ========================================\n\n // Sequence counter for tracking load requests and detecting stale responses\n private _loadSequence = 0;\n // Flag to indicate a reload is pending (requested while another load was in progress)\n private _pendingReload = false;\n\n /**\n * Load data for the current entity with server-side filtering/sorting/pagination\n */\n public async loadData(): Promise<void> {\n const entity = this.effectiveEntity;\n if (!entity) {\n this.internalRecords = [];\n this.totalRecordCount = 0;\n this.filteredRecordCount = 0;\n return;\n }\n\n // Increment sequence to track this load request\n const loadId = ++this._loadSequence;\n\n // If a load is already in progress, mark that we need to reload when it completes\n // This handles the case where view/filter changes occur during an active load\n if (this.isLoading) {\n this._pendingReload = true;\n return;\n }\n\n this.isLoading = true;\n this.pagination.isLoading = true;\n this.loadingMessage = this.isInitialLoad\n ? `Loading ${entity.Name}...`\n : 'Loading more records...';\n this.cdr.detectChanges();\n\n const startTime = Date.now();\n const config = this.effectiveConfig;\n\n try {\n const rv = new RunView();\n\n // Build OrderBy clause\n // Priority: 1) External sort state 2) View's OrderByClause 3) undefined\n let orderBy: string | undefined;\n const sortState = this.effectiveSortState;\n if (config.serverSideSorting && sortState?.field && sortState.direction) {\n orderBy = `${sortState.field} ${sortState.direction.toUpperCase()}`;\n } else if (this.viewEntity?.OrderByClause) {\n orderBy = this.viewEntity.OrderByClause;\n }\n\n // Calculate StartRow for pagination\n const startRow = this.pagination.currentPage * config.pageSize;\n\n // Build ExtraFilter from view's WhereClause if available\n // The view's WhereClause is the \"business filter\" - UserSearchString is additive\n const extraFilter = this.viewEntity?.WhereClause || undefined;\n\n const result = await rv.RunView<Record<string, unknown>>({\n EntityName: entity.Name,\n ResultType: 'simple',\n Fields: computeFieldsList(entity, this.gridState),\n MaxRows: config.pageSize,\n StartRow: startRow,\n OrderBy: orderBy,\n ExtraFilter: extraFilter,\n // Only use UserSearchString for regular text search, NOT for smart filters\n // Smart filters generate WhereClause via AI on the server, so the prompt text should not be passed as UserSearchString\n UserSearchString: config.serverSideFiltering && !this.viewEntity?.SmartFilterEnabled\n ? this.debouncedFilterText || undefined\n : undefined\n });\n\n // Check if this load is still the current one (detect stale responses)\n if (loadId !== this._loadSequence) {\n return;\n }\n\n if (result.Success) {\n\n // Append or replace records based on whether this is initial load\n if (this.isInitialLoad) {\n this.internalRecords = result.Results;\n } else {\n this.internalRecords = [...this.internalRecords, ...result.Results];\n }\n\n this.totalRecordCount = result.TotalRowCount;\n this.filteredRecordCount = this.internalRecords.length;\n\n // Update pagination state\n this.pagination.totalRecords = result.TotalRowCount;\n this.pagination.hasMore = this.internalRecords.length < result.TotalRowCount;\n\n this.dataLoaded.emit({\n totalRowCount: result.TotalRowCount,\n loadedRowCount: this.internalRecords.length,\n loadTime: Date.now() - startTime,\n records: this.internalRecords\n });\n\n this.filteredCountChanged.emit({\n filteredCount: this.internalRecords.length,\n totalCount: result.TotalRowCount\n });\n\n // Update timeline groups with new data\n this.updateTimelineGroups();\n } else {\n if (this.isInitialLoad) {\n this.internalRecords = [];\n }\n this.totalRecordCount = 0;\n this.filteredRecordCount = 0;\n }\n } catch (error) {\n if (this.isInitialLoad) {\n this.internalRecords = [];\n }\n this.totalRecordCount = 0;\n this.filteredRecordCount = 0;\n } finally {\n // Use ngZone.run() to ensure state changes trigger change detection.\n // With es2022 native async/await + zone.js 0.16, the await resumes\n // outside Angular's zone, so detectChanges() alone may not flush properly.\n this.ngZone.run(() => {\n this.isLoading = false;\n this.pagination.isLoading = false;\n this.isInitialLoad = false;\n this.cdr.detectChanges();\n });\n\n // If a reload was requested while we were loading, trigger it now\n if (this._pendingReload) {\n this._pendingReload = false;\n this.resetPaginationState();\n // Use setTimeout to break the call stack and allow Angular to process\n setTimeout(() => this.loadData(), 0);\n }\n }\n }\n\n /**\n * Load more records (next page)\n */\n public loadMore(): void {\n if (this.pagination.isLoading || !this.pagination.hasMore) {\n return;\n }\n\n this.pagination.currentPage++;\n this.loadData();\n }\n\n /**\n * Refresh data (re-load from server, starting at page 1)\n * Keeps existing records visible during refresh for better UX\n */\n public refresh(): void {\n if (!this.records) {\n this.resetPaginationState(false);\n this.loadData();\n }\n }\n\n // ========================================\n // VIEW MODE\n // ========================================\n\n /**\n * Set the view mode and emit change event\n */\n setViewMode(mode: EntityViewMode): void {\n if (this.effectiveViewMode !== mode) {\n this.internalViewMode = mode;\n this.viewModeChange.emit(mode);\n this.cdr.detectChanges();\n }\n }\n\n // ========================================\n // FILTERING\n // ========================================\n\n /**\n * Handle filter input change\n */\n onFilterChange(value: string): void {\n this.internalFilterText = value;\n this.filterInput$.next(value);\n }\n\n /**\n * Clear the filter\n */\n clearFilter(): void {\n this.internalFilterText = '';\n this.filterInput$.next('');\n this.cdr.detectChanges();\n }\n\n // ========================================\n // SORTING\n // ========================================\n\n /**\n * Handle sort change from grid component\n */\n onSortChanged(event: SortChangedEvent): void {\n const oldSort = this.internalSortState;\n this.internalSortState = event.sort;\n this.sortChanged.emit(event);\n\n // If server-side sorting, reload from page 1\n // Keep existing records visible during refresh for better UX\n if (this.effectiveConfig.serverSideSorting && !this.records) {\n const sortChanged = !oldSort || !event.sort ||\n oldSort.field !== event.sort?.field ||\n oldSort.direction !== event.sort?.direction;\n\n if (sortChanged) {\n this.resetPaginationState(false);\n this.loadData();\n }\n }\n }\n\n // ========================================\n // EVENT HANDLERS\n // ========================================\n\n /**\n * Handle record selection from child components (grid or cards)\n */\n onRecordSelected(event: RecordSelectedEvent): void {\n this.recordSelected.emit(event);\n }\n\n /**\n * Handle record opened from child components (grid or cards)\n */\n onRecordOpened(event: RecordOpenedEvent): void {\n this.recordOpened.emit(event);\n }\n\n /**\n * Handle grid state changes (column resize, reorder, etc.)\n */\n onGridStateChanged(event: GridStateChangedEvent): void {\n this.gridStateChanged.emit(event);\n }\n\n /**\n * Handle load more from pagination component\n */\n onLoadMore(): void {\n this.loadMore();\n }\n\n // ========================================\n // DATA GRID EVENT HANDLERS\n // ========================================\n\n /**\n * Handle row click from mj-entity-data-grid\n * Maps to recordSelected event for parent components\n */\n onDataGridRowClick(event: AfterRowClickEventArgs): void {\n const entity = this.effectiveEntity;\n if (!entity || !event.row) return;\n\n this.recordSelected.emit({\n record: event.row,\n entity: entity,\n compositeKey: buildCompositeKey(event.row, entity)\n });\n }\n\n /**\n * Handle row double-click from mj-entity-data-grid\n * Maps to recordOpened event for parent components\n */\n onDataGridRowDoubleClick(event: AfterRowDoubleClickEventArgs): void {\n const entity = this.effectiveEntity;\n if (!entity || !event.row) return;\n\n this.recordOpened.emit({\n record: event.row,\n entity: entity,\n compositeKey: buildCompositeKey(event.row, entity)\n });\n }\n\n /**\n * Handle sort changed from mj-entity-data-grid\n * Maps to sortChanged event for parent components\n */\n onDataGridSortChanged(event: AfterSortEventArgs): void {\n // Convert the data grid's sort state to our SortState format\n const newSort: SortState | null = event.newSortState && event.newSortState.length > 0\n ? {\n field: event.newSortState[0].field,\n direction: event.newSortState[0].direction\n }\n : null;\n\n this.internalSortState = newSort;\n this.sortChanged.emit({ sort: newSort });\n\n // If server-side sorting, reload from page 1\n // Keep existing records visible during refresh for better UX\n if (this.effectiveConfig.serverSideSorting && !this.records) {\n this.resetPaginationState(false);\n this.loadData();\n }\n }\n\n /**\n * Handle foreign key link click from mj-entity-data-grid\n * Bubbles the event up for parent components to handle navigation\n */\n /**\n * Handle foreign key link click from mj-entity-data-grid\n * Converts to recordOpened event for seamless navigation integration\n */\n onForeignKeyClick(event: ForeignKeyClickEvent): void {\n // Look up the related entity by name\n const md = new Metadata();\n const relatedEntity = event.relatedEntityName\n ? md.Entities.find(e => e.Name === event.relatedEntityName)\n : md.Entities.find(e => e.ID === event.relatedEntityId);\n\n if (!relatedEntity) {\n return;\n }\n\n // Create composite key from the FK value using the static factory method\n const compositeKey = CompositeKey.FromID(event.recordId);\n\n // Emit recordOpened for the related entity (record is undefined since it's not loaded)\n this.recordOpened.emit({\n entity: relatedEntity,\n compositeKey\n });\n }\n\n /**\n * Handle Add/New button click from data grid toolbar\n */\n onGridAddRequested(): void {\n this.addRequested.emit();\n }\n\n /**\n * Handle Refresh button click from data grid toolbar\n */\n onGridRefreshRequested(): void {\n this.refreshRequested.emit();\n // Also trigger an internal refresh\n this.refresh();\n }\n\n /**\n * Handle Delete button click from data grid toolbar\n */\n onGridDeleteRequested(records: Record<string, unknown>[]): void {\n this.deleteRequested.emit({ records });\n }\n\n /**\n * Handle Export button click from data grid toolbar\n */\n onGridExportRequested(): void {\n this.exportRequested.emit({ format: 'excel' });\n }\n\n /**\n * Handle Add to List button click from data grid toolbar.\n * Forwards the event to parent components for list management.\n */\n onGridAddToListRequested(event: { entityInfo: EntityInfo; records: Record<string, unknown>[]; recordIds: string[] }): void {\n this.addToListRequested.emit(event);\n }\n\n /**\n * Handle selection change from data grid.\n * Converts selected keys to records and forwards to parent components.\n */\n onGridSelectionChange(selectedKeys: string[]): void {\n const entity = this.effectiveEntity;\n if (!entity) return;\n\n // Find the actual records from our filtered records\n const records = this.filteredRecords.filter(record => {\n const key = buildPkString(record, entity);\n return selectedKeys.includes(key);\n });\n\n // Get the raw primary key values for list management\n const recordIds = records.map(record =>\n String(record[entity.PrimaryKeys[0].Name])\n );\n\n this.selectionChanged.emit({ records, recordIds });\n }\n\n // ========================================\n // TIMELINE METHODS\n // ========================================\n\n /**\n * Handle timeline event click - emit as record selection\n */\n onTimelineEventClick(event: AfterEventClickArgs): void {\n const record = event.event.entity as Record<string, unknown>;\n const entity = this.effectiveEntity;\n if (record && entity) {\n this.recordSelected.emit({\n record,\n entity: entity,\n compositeKey: buildCompositeKey(record, entity)\n });\n }\n }\n\n /**\n * Toggle timeline orientation between vertical and horizontal\n */\n toggleTimelineOrientation(): void {\n this.timelineOrientation = this.timelineOrientation === 'vertical' ? 'horizontal' : 'vertical';\n\n // Emit config change so parent can persist the preference\n this.emitTimelineConfigChange();\n this.cdr.detectChanges();\n }\n\n /**\n * Toggle timeline sort order between newest first (desc) and oldest first (asc)\n */\n toggleTimelineSortOrder(): void {\n this.timelineSortOrder = this.timelineSortOrder === 'desc' ? 'asc' : 'desc';\n\n // Emit config change so parent can persist the preference\n this.emitTimelineConfigChange();\n this.cdr.detectChanges();\n }\n\n /**\n * Change the date field used for the timeline\n */\n setTimelineDateField(fieldName: string): void {\n if (this.availableDateFields.some(f => f.Name === fieldName)) {\n this.selectedTimelineDateField = fieldName;\n this.updateTimelineGroups();\n this.emitTimelineConfigChange();\n this.cdr.detectChanges();\n }\n }\n\n /**\n * Get the display name of the currently selected timeline date field\n */\n get selectedDateFieldDisplayName(): string {\n if (!this.selectedTimelineDateField) return '';\n const field = this.availableDateFields.find(f => f.Name === this.selectedTimelineDateField);\n return field?.DisplayNameOrName || this.selectedTimelineDateField;\n }\n\n /**\n * Emit the current timeline configuration for persistence\n */\n private emitTimelineConfigChange(): void {\n if (this.selectedTimelineDateField) {\n this.timelineConfigChange.emit({\n dateFieldName: this.selectedTimelineDateField,\n sortOrder: this.timelineSortOrder,\n segmentGrouping: this.timelineSegmentGrouping as TimelineSegmentGrouping,\n orientation: this.timelineOrientation\n });\n }\n }\n\n /**\n * Detect and configure timeline based on entity's date fields\n * Called when entity changes\n */\n private detectDateFields(): void {\n if (!this.entity) {\n this.hasDateFields = false;\n this.availableDateFields = [];\n this.timelineGroups = [];\n this.fallbackFromTimelineIfNeeded();\n return;\n }\n\n // Find all date fields - include __mj_CreatedAt and __mj_UpdatedAt as they're useful for timelines\n const dateFields = this.entity.Fields.filter(\n f => f.TSType === EntityFieldTSType.Date\n );\n\n if (dateFields.length === 0) {\n this.hasDateFields = false;\n this.availableDateFields = [];\n this.timelineGroups = [];\n this.fallbackFromTimelineIfNeeded();\n return;\n }\n\n // Sort by priority: DefaultInView date fields first (by Sequence), then others (by Sequence)\n this.availableDateFields = this.sortDateFieldsByPriority(dateFields);\n this.hasDateFields = true;\n\n // Configure timeline with the best date field\n this.configureTimeline();\n }\n\n /**\n * If currently on timeline view but timeline is no longer available,\n * fall back to grid view\n */\n private fallbackFromTimelineIfNeeded(): void {\n if (this.effectiveViewMode === 'timeline' && !this.hasDateFields) {\n this.setViewMode('grid');\n }\n }\n\n /**\n * Sort date fields by priority:\n * 1. DefaultInView=true fields, sorted by Sequence (lowest first)\n * 2. Other date fields, sorted by Sequence (lowest first)\n */\n private sortDateFieldsByPriority(dateFields: EntityFieldInfo[]): EntityFieldInfo[] {\n const defaultInView = dateFields.filter(f => f.DefaultInView).sort((a, b) => a.Sequence - b.Sequence);\n const others = dateFields.filter(f => !f.DefaultInView).sort((a, b) => a.Sequence - b.Sequence);\n return [...defaultInView, ...others];\n }\n\n /**\n * Configure the timeline with the current date field and records\n */\n private configureTimeline(): void {\n if (!this.entity || !this.hasDateFields || this.availableDateFields.length === 0) {\n this.timelineGroups = [];\n return;\n }\n\n // Determine which date field to use\n const dateFieldName = this.getEffectiveTimelineDateField();\n this.selectedTimelineDateField = dateFieldName;\n\n // Apply timeline config if provided\n if (this.timelineConfig) {\n this.timelineSortOrder = (this.timelineConfig.sortOrder || 'desc') as TimelineSortOrder;\n this.timelineSegmentGrouping = (this.timelineConfig.segmentGrouping || 'month') as TimeSegmentGrouping;\n this.timelineOrientation = this.timelineConfig.orientation || 'vertical';\n }\n\n // Create a timeline group for the current entity's data\n this.updateTimelineGroups();\n }\n\n /**\n * Get the effective date field to use for timeline\n * Priority: timelineConfig > first available date field\n */\n private getEffectiveTimelineDateField(): string {\n // If we have a config with a specific date field, use it if valid\n if (this.timelineConfig?.dateFieldName) {\n const configField = this.availableDateFields.find(f => f.Name === this.timelineConfig!.dateFieldName);\n if (configField) {\n return configField.Name;\n }\n }\n\n // Otherwise use the first available date field (already sorted by priority)\n return this.availableDateFields[0].Name;\n }\n\n /**\n * Update timeline groups with current records\n * Called when records change\n */\n private updateTimelineGroups(): void {\n if (!this.entity || !this.selectedTimelineDateField) {\n this.timelineGroups = [];\n return;\n }\n\n // Find title field - prefer NameField, then first string field with DefaultInView\n const titleField = this.findTitleField();\n\n // Create a single group for the current data\n const group = new TimelineGroup<Record<string, unknown>>();\n group.DataSourceType = 'array';\n group.EntityObjects = this.filteredRecords;\n group.TitleFieldName = titleField;\n group.DateFieldName = this.selectedTimelineDateField;\n group.IdFieldName = 'ID';\n group.GroupLabel = this.entity.Name;\n\n // Find a suitable description field\n const descField = this.findDescriptionField();\n if (descField) {\n group.DescriptionFieldName = descField;\n }\n\n // Find a suitable subtitle field\n const subtitleField = this.findSubtitleField(titleField);\n if (subtitleField) {\n group.SubtitleFieldName = subtitleField;\n }\n\n // Configure card display\n group.CardConfig = {\n collapsible: true,\n defaultExpanded: false,\n showDate: true,\n dateFormat: 'MMM d, yyyy h:mm a'\n };\n\n this.timelineGroups = [group];\n }\n\n /**\n * Find the best field to use as the title\n */\n private findTitleField(): string {\n if (!this.entity) return 'ID';\n\n // Prefer the entity's NameField\n if (this.entity.NameField) {\n return this.entity.NameField.Name;\n }\n\n // Look for common name patterns in DefaultInView string fields\n const stringFields = this.entity.Fields.filter(\n f => f.TSType === EntityFieldTSType.String && f.DefaultInView && !f.Name.startsWith('__mj_')\n ).sort((a, b) => a.Sequence - b.Sequence);\n\n const namePatterns = ['name', 'title', 'subject', 'label'];\n for (const pattern of namePatterns) {\n const match = stringFields.find(f => f.Name.toLowerCase().includes(pattern));\n if (match) return match.Name;\n }\n\n // Fall back to first string field\n return stringFields.length > 0 ? stringFields[0].Name : 'ID';\n }\n\n /**\n * Find a suitable description field\n */\n private findDescriptionField(): string | null {\n if (!this.entity) return null;\n\n // Look for common description patterns\n const descPatterns = ['description', 'notes', 'summary', 'content', 'body', 'details'];\n const textFields = this.entity.Fields.filter(\n f => (f.TSType === EntityFieldTSType.String) && !f.Name.startsWith('__mj_')\n );\n\n for (const pattern of descPatterns) {\n const match = textFields.find(f => f.Name.toLowerCase().includes(pattern));\n if (match) return match.Name;\n }\n\n return null;\n }\n\n /**\n * Find a suitable subtitle field (different from title)\n */\n private findSubtitleField(excludeField: string): string | null {\n if (!this.entity) return null;\n\n // Look for status, type, category, or other short classification fields\n const patterns = ['status', 'type', 'category', 'state', 'priority'];\n const fields = this.entity.Fields.filter(\n f => f.TSType === EntityFieldTSType.String &&\n f.DefaultInView &&\n f.Name !== excludeField &&\n !f.Name.startsWith('__mj_')\n ).sort((a, b) => a.Sequence - b.Sequence);\n\n for (const pattern of patterns) {\n const match = fields.find(f => f.Name.toLowerCase().includes(pattern));\n if (match) return match.Name;\n }\n\n // Use the first string field that's not the title field\n const firstOther = fields.find(f => f.Name !== excludeField);\n return firstOther?.Name || null;\n }\n}\n\n","<div class=\"entity-viewer-container\" [style.height]=\"effectiveConfig.height\">\n <!-- Header -->\n @if (effectiveConfig.showFilter || effectiveConfig.showViewModeToggle || effectiveConfig.showRecordCount) {\n <div class=\"viewer-header\">\n <!-- Filter Input -->\n @if (effectiveConfig.showFilter) {\n <div class=\"filter-container\">\n <i class=\"fa-solid fa-search filter-icon\"></i>\n <input\n type=\"text\"\n class=\"filter-input\"\n [placeholder]=\"effectiveConfig.filterPlaceholder\"\n [value]=\"effectiveFilterText\"\n (input)=\"onFilterChange($any($event.target).value)\"\n />\n @if (effectiveFilterText) {\n <button class=\"clear-filter-btn\" (click)=\"clearFilter()\" title=\"Clear filter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n }\n\n <!-- Record Count -->\n @if (effectiveConfig.showRecordCount && effectiveEntity) {\n <div class=\"record-count\">\n @if (filteredRecordCount !== totalRecordCount) {\n <span>{{ filteredRecordCount | number }} of {{ totalRecordCount | number }} records</span>\n } @else {\n <span>{{ totalRecordCount | number }} records</span>\n }\n </div>\n }\n\n <!-- View Mode Toggle -->\n @if (effectiveConfig.showViewModeToggle) {\n <div class=\"view-mode-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'cards'\"\n (click)=\"setViewMode('cards')\"\n title=\"Cards View\">\n <i class=\"fa-solid fa-grip\"></i>\n </button>\n @if (hasDateFields) {\n <button\n class=\"toggle-btn\"\n [class.active]=\"effectiveViewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\">\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n }\n </div>\n }\n\n <!-- Timeline Controls (only shown when timeline is active) -->\n @if (effectiveViewMode === 'timeline' && hasDateFields) {\n <!-- Date Field Selector -->\n <div class=\"timeline-date-selector\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n @if (availableDateFields.length === 1) {\n <span class=\"date-field-label\">{{ selectedDateFieldDisplayName }}</span>\n } @else {\n <select\n class=\"date-field-select\"\n [value]=\"selectedTimelineDateField\"\n (change)=\"setTimelineDateField($any($event.target).value)\">\n @for (field of availableDateFields; track field.Name) {\n <option [value]=\"field.Name\">{{ field.DisplayNameOrName }}</option>\n }\n </select>\n }\n </div>\n\n <!-- Orientation Toggle -->\n <div class=\"timeline-orientation-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineOrientation()\"\n [title]=\"timelineOrientation === 'vertical' ? 'Switch to Horizontal' : 'Switch to Vertical'\">\n <i [class]=\"timelineOrientation === 'vertical' ? 'fa-solid fa-ellipsis-vertical' : 'fa-solid fa-ellipsis'\"></i>\n </button>\n </div>\n\n <!-- Sort Order Toggle -->\n <div class=\"timeline-sort-toggle\">\n <button\n class=\"toggle-btn\"\n (click)=\"toggleTimelineSortOrder()\"\n [title]=\"timelineSortOrder === 'desc' ? 'Showing Newest First (click for Oldest First)' : 'Showing Oldest First (click for Newest First)'\">\n <i [class]=\"timelineSortOrder === 'desc' ? 'fa-solid fa-arrow-down-wide-short' : 'fa-solid fa-arrow-up-wide-short'\"></i>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Content -->\n <div class=\"viewer-content\">\n <!-- Loading container - full page when no data exists -->\n <div class=\"loading-container\" [hidden]=\"!(isLoading && filteredRecords.length === 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Loading overlay - shown on top of content when loading with existing data -->\n <div class=\"loading-overlay\" [hidden]=\"!(isLoading && filteredRecords.length > 0)\">\n <mj-loading [text]=\"loadingMessage\" size=\"small\"></mj-loading>\n </div>\n\n <!-- Empty state: no entity selected -->\n <div class=\"empty-state\" [hidden]=\"!!effectiveEntity\">\n <i class=\"fa-solid fa-database\"></i>\n <p>Select an entity to view records</p>\n </div>\n\n <!-- Empty state: no records found -->\n <div class=\"empty-state\" [hidden]=\"!effectiveEntity || filteredRecords.length > 0 || isLoading\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>{{ debouncedFilterText ? 'No matching records' : 'No records found' }}</p>\n </div>\n\n <!-- Grid View - always rendered, visibility controlled by hidden -->\n <mj-entity-data-grid\n [hidden]=\"effectiveViewMode !== 'grid' || !effectiveEntity\"\n [Data]=\"filteredRecords\"\n [Params]=\"gridParams\"\n [FilterText]=\"debouncedFilterText\"\n [GridState]=\"gridState\"\n [Height]=\"'auto'\"\n [ShowToolbar]=\"showGridToolbar\"\n [ToolbarConfig]=\"effectiveGridToolbarConfig\"\n [SelectionMode]=\"gridSelectionMode\"\n [ShowAddToListButton]=\"showAddToListButton\"\n [AllowLoad]=\"false\"\n (AfterRowClick)=\"onDataGridRowClick($event)\"\n (AfterRowDoubleClick)=\"onDataGridRowDoubleClick($event)\"\n (AfterSort)=\"onDataGridSortChanged($event)\"\n (GridStateChanged)=\"onGridStateChanged($event)\"\n (SelectionChange)=\"onGridSelectionChange($event)\"\n (NewButtonClick)=\"onGridAddRequested()\"\n (RefreshButtonClick)=\"onGridRefreshRequested()\"\n (DeleteButtonClick)=\"onGridDeleteRequested($event)\"\n (ExportButtonClick)=\"onGridExportRequested()\"\n (AddToListRequested)=\"onGridAddToListRequested($event)\"\n (ForeignKeyClick)=\"onForeignKeyClick($event)\">\n </mj-entity-data-grid>\n\n <!-- Cards View - always rendered, visibility controlled by hidden -->\n <mj-entity-cards\n [hidden]=\"effectiveViewMode !== 'cards' || !effectiveEntity\"\n [entity]=\"effectiveEntity\"\n [records]=\"filteredRecords\"\n [selectedRecordId]=\"selectedRecordId\"\n [cardTemplate]=\"cardTemplate\"\n [hiddenFieldMatches]=\"hiddenFieldMatches\"\n [filterText]=\"debouncedFilterText\"\n (recordSelected)=\"onRecordSelected($event)\"\n (recordOpened)=\"onRecordOpened($event)\">\n </mj-entity-cards>\n\n <!-- Timeline View - always rendered when date fields exist, visibility controlled by hidden -->\n <mj-timeline\n [hidden]=\"effectiveViewMode !== 'timeline' || !hasDateFields\"\n [groups]=\"timelineGroups\"\n [orientation]=\"timelineOrientation\"\n [layout]=\"timelineOrientation === 'vertical' ? 'alternating' : 'single'\"\n [sortOrder]=\"timelineSortOrder\"\n [segmentGrouping]=\"timelineSegmentGrouping\"\n [segmentsCollapsible]=\"true\"\n [segmentsDefaultExpanded]=\"true\"\n [selectedEventId]=\"timelineSelectedEventId\"\n (afterEventClick)=\"onTimelineEventClick($event)\">\n </mj-timeline>\n </div>\n\n <!-- Pagination - only show when there's more data to load OR we've loaded more than one page -->\n @if (effectiveConfig.showPagination && effectiveEntity && (pagination.hasMore || pagination.totalRecords > effectiveConfig.pageSize)) {\n <mj-pagination\n [pagination]=\"pagination\"\n [loadedRecordCount]=\"filteredRecords.length\"\n (loadMore)=\"onLoadMore()\">\n </mj-pagination>\n }\n</div>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.component.js","sourceRoot":"","sources":["../../../src/lib/pagination/pagination.component.ts","../../../src/lib/pagination/pagination.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pagination.component.js","sourceRoot":"","sources":["../../../src/lib/pagination/pagination.component.ts","../../../src/lib/pagination/pagination.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { PaginationState } from '../types';\n\n/**\n * PaginationComponent - Beautiful pagination controls for entity data\n *\n * Provides a modern, responsive pagination UI with:\n * - Current page / total pages display\n * - Records count with range display\n * - Load more button for progressive loading\n * - Visual loading state\n *\n * @example\n * ```html\n * <mj-pagination\n * [pagination]=\"paginationState\"\n * (loadMore)=\"onLoadMore()\">\n * </mj-pagination>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.css']\n})\nexport class PaginationComponent implements OnChanges {\n /**\n * Current pagination state\n */\n @Input() pagination: PaginationState = {\n currentPage: 0,\n pageSize: 100,\n totalRecords: 0,\n hasMore: false,\n isLoading: false\n };\n\n /**\n * Number of records currently displayed\n */\n @Input() loadedRecordCount: number = 0;\n\n /**\n * Emitted when user requests more data\n */\n @Output() loadMore = new EventEmitter<void>();\n\n /**\n * Emitted when user requests to go to a specific page\n */\n @Output() goToPage = new EventEmitter<number>();\n\n // Computed display values\n public displayedFrom: number = 0;\n public displayedTo: number = 0;\n public totalPages: number = 0;\n public currentPageDisplay: number = 0;\n public remainingRecords: number = 0;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['pagination'] || changes['loadedRecordCount']) {\n this.updateDisplayValues();\n }\n }\n\n private updateDisplayValues(): void {\n const { currentPage, pageSize, totalRecords, hasMore } = this.pagination;\n\n // Calculate display range\n this.displayedFrom = totalRecords > 0 ? 1 : 0;\n this.displayedTo = this.loadedRecordCount;\n\n // Calculate total pages\n this.totalPages = Math.ceil(totalRecords / pageSize);\n this.currentPageDisplay = currentPage + 1;\n\n // Calculate remaining records\n this.remainingRecords = Math.max(0, totalRecords - this.loadedRecordCount);\n }\n\n /**\n * Handle load more button click\n */\n onLoadMore(): void {\n if (!this.pagination.isLoading && this.pagination.hasMore) {\n this.loadMore.emit();\n }\n }\n\n /**\n * Get the progress percentage for the progress bar\n */\n get progressPercent(): number {\n if (this.pagination.totalRecords === 0) return 100;\n return Math.min(100, (this.loadedRecordCount / this.pagination.totalRecords) * 100);\n }\n\n /**\n * Get the number of records that will load on next click\n */\n get nextLoadCount(): number {\n return Math.min(this.pagination.pageSize, this.remainingRecords);\n }\n}\n","<div class=\"pagination-container\">\n <!-- Records summary -->\n <div class=\"pagination-info\">\n <span class=\"records-display\">\n @if (pagination.totalRecords > 0) {\n <span class=\"records-shown\">{{ displayedTo | number }}</span>\n <span class=\"records-separator\">of</span>\n <span class=\"records-total\">{{ pagination.totalRecords | number }}</span>\n <span class=\"records-label\">records</span>\n } @else {\n <span class=\"no-records\">No records</span>\n }\n </span>\n </div>\n\n <!-- Progress bar -->\n @if (pagination.totalRecords > 0) {\n <div class=\"progress-section\">\n <div class=\"progress-bar-container\">\n <div\n class=\"progress-bar-fill\"\n [style.width.%]=\"progressPercent\"\n [class.complete]=\"!pagination.hasMore\">\n </div>\n </div>\n </div>\n }\n\n <!-- Load more button -->\n @if (pagination.hasMore) {\n <div class=\"load-more-section\">\n <button\n class=\"load-more-btn\"\n [disabled]=\"pagination.isLoading\"\n (click)=\"onLoadMore()\">\n @if (pagination.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin loading-icon\"></i>\n <span>Loading...</span>\n } @else {\n <i class=\"fa-solid fa-arrow-down load-icon\"></i>\n <span>Load {{ nextLoadCount | number }} more</span>\n <span class=\"remaining-badge\">{{ remainingRecords | number }} remaining</span>\n }\n </button>\n </div>\n }\n\n <!-- All loaded indicator -->\n @if (!pagination.hasMore && pagination.totalRecords > 0) {\n <div class=\"all-loaded\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span>All records loaded</span>\n </div>\n }\n</div>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pill.component.js","sourceRoot":"","sources":["../../../src/lib/pill/pill.component.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pill.component.js","sourceRoot":"","sources":["../../../src/lib/pill/pill.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAGjD;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,sCAAsC;IAC9B,MAAM,CAAU,eAAe,GAAG;QACxC,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY;QACtE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW;QAC9D,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;QACtE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW;KACnD,CAAC;IAEF,8CAA8C;IACtC,MAAM,CAAU,eAAe,GAAG;QACxC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY;QACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;QAC9D,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ;KAC3D,CAAC;IAEF,mCAAmC;IAC3B,MAAM,CAAU,cAAc,GAAG;QACvC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ;QAC9D,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS;QAC3D,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW;QACzD,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ;QAChE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;KAC5C,CAAC;IAEF,kCAAkC;IAC1B,MAAM,CAAU,YAAY,GAAG;QACrC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;QACzD,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO;KACjD,CAAC;IAEF;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,KAAgC;QAClD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAEnD,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACjE,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,QAAkB;QAChE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC7B,KAAK,KAAK,OAAO;YACjB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvB,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;IACJ,CAAC;;AAGH;;;;;;;;;;;;;;GAcG;AA+CH,MAAM,OAAO,aAAa;IACxB;;OAEG;IACM,KAAK,GAA8B,EAAE,CAAC;IAE/C;;OAEG;IACM,KAAK,GAAyB,IAAI,CAAC;IAE5C;;OAEG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,kBAAkB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;uGA1BU,aAAa;6DAAb,aAAa;YA1CtB,+BAA0D;YACxD,YACF;YAAA,iBAAO;;YAFY,+CAAsC;YACvD,cACF;YADE,iDACF;;;iFAwCS,aAAa;cA9CzB,SAAS;6BACI,KAAK,YACP,SAAS,YACT;;;;GAIT;;kBA2CA,KAAK;;kBAKL,KAAK;;kFATK,aAAa","sourcesContent":["import { Component, Input } from '@angular/core';\nimport { PillColorType } from '../types';\n\n/**\n * Utility class to determine pill colors based on value semantics\n */\nexport class PillColorUtil {\n /** Positive/success values - green */\n private static readonly successPatterns = [\n 'active', 'approved', 'complete', 'completed', 'success', 'successful',\n 'enabled', 'yes', 'true', 'verified', 'confirmed', 'published',\n 'accepted', 'valid', 'available', 'open', 'live', 'running', 'healthy',\n 'done', 'resolved', 'paid', 'shipped', 'delivered'\n ];\n\n /** Warning/attention values - yellow/amber */\n private static readonly warningPatterns = [\n 'pending', 'waiting', 'review', 'in review', 'in progress', 'processing',\n 'draft', 'scheduled', 'queued', 'on hold', 'paused', 'partial',\n 'incomplete', 'warning', 'attention', 'moderate', 'medium'\n ];\n\n /** Negative/danger values - red */\n private static readonly dangerPatterns = [\n 'failed', 'failure', 'error', 'rejected', 'declined', 'denied',\n 'expired', 'inactive', 'disabled', 'no', 'false', 'invalid',\n 'cancelled', 'canceled', 'closed', 'blocked', 'suspended',\n 'deleted', 'removed', 'terminated', 'critical', 'high', 'urgent',\n 'overdue', 'unpaid', 'refunded', 'returned'\n ];\n\n /** Informational values - blue */\n private static readonly infoPatterns = [\n 'new', 'info', 'information', 'note', 'update', 'updated',\n 'created', 'modified', 'changed', 'low', 'minor'\n ];\n\n /**\n * Determine the appropriate color type for a given value\n * @param value The value to analyze\n * @returns The semantic color type\n */\n static getColorType(value: string | null | undefined): PillColorType {\n if (!value) return 'neutral';\n\n const normalizedValue = value.toLowerCase().trim();\n\n if (this.matchesAnyPattern(normalizedValue, this.successPatterns)) {\n return 'success';\n }\n if (this.matchesAnyPattern(normalizedValue, this.dangerPatterns)) {\n return 'danger';\n }\n if (this.matchesAnyPattern(normalizedValue, this.warningPatterns)) {\n return 'warning';\n }\n if (this.matchesAnyPattern(normalizedValue, this.infoPatterns)) {\n return 'info';\n }\n\n return 'neutral';\n }\n\n private static matchesAnyPattern(value: string, patterns: string[]): boolean {\n return patterns.some(pattern =>\n value === pattern ||\n value.includes(pattern) ||\n value.replace(/[_-]/g, ' ').includes(pattern)\n );\n }\n}\n\n/**\n * PillComponent - displays categorical values as colored pills\n *\n * Automatically determines color based on semantic meaning of the value.\n * Works for status, type, category, priority, or any enum-like field.\n *\n * @example\n * ```html\n * <!-- Auto-color based on value semantics -->\n * <mj-pill [value]=\"record.Status\"></mj-pill>\n *\n * <!-- Force a specific color -->\n * <mj-pill [value]=\"record.Type\" color=\"info\"></mj-pill>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-pill',\n template: `\n <span class=\"pill\" [class]=\"'pill-' + effectiveColorType\">\n {{ displayValue }}\n </span>\n `,\n styles: [`\n .pill {\n display: inline-flex;\n align-items: center;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n white-space: nowrap;\n text-transform: capitalize;\n }\n\n .pill-success {\n background-color: #e8f5e9;\n color: #2e7d32;\n }\n\n .pill-warning {\n background-color: #fff8e1;\n color: #f57c00;\n }\n\n .pill-danger {\n background-color: #ffebee;\n color: #c62828;\n }\n\n .pill-info {\n background-color: #e3f2fd;\n color: #1565c0;\n }\n\n .pill-neutral {\n background-color: #f5f5f5;\n color: #616161;\n }\n `]\n})\nexport class PillComponent {\n /**\n * The value to display in the pill\n */\n @Input() value: string | null | undefined = '';\n\n /**\n * Optional: Force a specific color instead of auto-detecting\n */\n @Input() color: PillColorType | null = null;\n\n /**\n * Get the display value\n */\n get displayValue(): string {\n return this.value || '';\n }\n\n /**\n * Get the effective color type (forced or auto-detected)\n */\n get effectiveColorType(): PillColorType {\n if (this.color) {\n return this.color;\n }\n return PillColorUtil.getColorType(this.value);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quick-save-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/quick-save-dialog/quick-save-dialog.component.ts","../../../src/lib/quick-save-dialog/quick-save-dialog.component.html"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quick-save-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/quick-save-dialog/quick-save-dialog.component.ts","../../../src/lib/quick-save-dialog/quick-save-dialog.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\nimport { MJUserViewEntityExtended } from '@memberjunction/core-entities';\nimport { ViewConfigSummary, QuickSaveEvent } from '../types';\n\n/**\n * QuickSaveDialogComponent - Focused modal for saving views quickly\n *\n * Replaces the 7+ click \"create new view\" flow with a focused 2-3 click dialog.\n * Shows essential fields (name, description, share) plus a summary preview\n * of what the view configuration includes.\n *\n * Footer buttons determine the action:\n * - No existing view: \"Create View\" button\n * - Existing view: \"Update\" (primary) + \"Save As New\" (secondary) buttons\n *\n * @example\n * ```html\n * <mj-quick-save-dialog\n * [IsOpen]=\"showQuickSave\"\n * [ViewEntity]=\"currentView\"\n * [EntityName]=\"entity.Name\"\n * [Summary]=\"configSummary\"\n * [IsSaving]=\"isSaving\"\n * (Save)=\"onQuickSave($event)\"\n * (Close)=\"showQuickSave = false\"\n * (OpenAdvanced)=\"openConfigPanel()\">\n * </mj-quick-save-dialog>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-quick-save-dialog',\n templateUrl: './quick-save-dialog.component.html',\n styleUrls: ['./quick-save-dialog.component.css']\n})\nexport class QuickSaveDialogComponent implements OnChanges {\n /**\n * Whether the dialog is open\n */\n @Input() IsOpen: boolean = false;\n\n /**\n * The existing view entity (null = creating new)\n */\n @Input() ViewEntity: MJUserViewEntityExtended | null = null;\n\n /**\n * Display name of the entity being viewed\n */\n @Input() EntityName: string = '';\n\n /**\n * Summary of what the current view configuration includes\n */\n @Input() Summary: ViewConfigSummary | null = null;\n\n /**\n * Whether a save is in progress\n */\n @Input() IsSaving: boolean = false;\n\n /**\n * Whether to default to Save As New mode (no longer used for toggle, kept for API compat)\n */\n @Input() DefaultSaveAsNew: boolean = false;\n\n /**\n * Emitted when the user saves\n */\n @Output() Save = new EventEmitter<QuickSaveEvent>();\n\n /**\n * Emitted when the dialog should close\n */\n @Output() Close = new EventEmitter<void>();\n\n /**\n * Emitted when user wants to open the full config panel\n */\n @Output() OpenAdvanced = new EventEmitter<void>();\n\n // Form state\n public Name: string = '';\n public Description: string = '';\n public IsShared: boolean = false;\n public NameTouched: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['IsOpen'] && this.IsOpen) {\n this.initializeForm();\n }\n }\n\n /**\n * Initialize form from view entity or defaults\n */\n private initializeForm(): void {\n this.NameTouched = false;\n if (this.ViewEntity) {\n this.Name = this.ViewEntity.Name;\n this.Description = this.ViewEntity.Description || '';\n this.IsShared = this.ViewEntity.IsShared;\n } else {\n this.Name = '';\n this.Description = '';\n this.IsShared = false;\n }\n this.cdr.detectChanges();\n }\n\n /**\n * Handle save button click\n * @param saveAsNew - true to create a new view, false to update existing\n */\n OnSave(saveAsNew: boolean): void {\n if (!this.Name.trim() || this.IsSaving) return;\n\n this.Save.emit({\n Name: this.Name.trim(),\n Description: this.Description,\n IsShared: this.IsShared,\n SaveAsNew: saveAsNew\n });\n }\n\n /**\n * Handle close/cancel\n */\n OnClose(): void {\n this.Close.emit();\n }\n\n /**\n * Open advanced configuration panel\n */\n OnOpenAdvanced(): void {\n this.OpenAdvanced.emit();\n }\n}\n","<!-- Dialog Backdrop -->\n@if (IsOpen) {\n <div class=\"dialog-backdrop\" (click)=\"OnClose()\"></div>\n}\n\n<!-- Dialog Panel -->\n<div class=\"dialog-panel\" [class.open]=\"IsOpen\">\n <!-- Header -->\n <div class=\"dialog-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-bookmark\"></i>\n <span>Save View</span>\n </div>\n @if (EntityName) {\n <span class=\"entity-badge\">{{ EntityName }}</span>\n }\n <button class=\"close-btn\" (click)=\"OnClose()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"dialog-content\">\n <!-- Name Field -->\n <div class=\"form-group\">\n <label for=\"quickSaveName\">View Name</label>\n <input\n id=\"quickSaveName\"\n type=\"text\"\n class=\"form-input\"\n [class.invalid]=\"NameTouched && !Name.trim()\"\n placeholder=\"e.g., Active West Coast Contacts\"\n [(ngModel)]=\"Name\"\n (blur)=\"NameTouched = true\"\n (keydown.enter)=\"OnSave(false)\"\n />\n @if (NameTouched && !Name.trim()) {\n <span class=\"validation-error\">Name is required</span>\n }\n </div>\n\n <!-- Description Field -->\n <div class=\"form-group\">\n <label for=\"quickSaveDescription\">Description <span class=\"optional\">(optional)</span></label>\n <textarea\n id=\"quickSaveDescription\"\n class=\"form-input form-textarea\"\n placeholder=\"What does this view show?\"\n [(ngModel)]=\"Description\"\n rows=\"2\"\n ></textarea>\n </div>\n\n <!-- Share Toggle -->\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"IsShared\" />\n <span class=\"checkbox-text\">\n <strong>Share with others</strong>\n <small>Allow other users to use this view</small>\n </span>\n </label>\n\n <!-- View Summary Preview -->\n @if (Summary) {\n <div class=\"summary-section\">\n <div class=\"summary-header\">\n <i class=\"fa-solid fa-list-check\"></i>\n <span>View includes:</span>\n </div>\n <div class=\"summary-items\">\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-columns\"></i>\n <span>{{ Summary.ColumnCount }} column{{ Summary.ColumnCount !== 1 ? 's' : '' }}</span>\n </div>\n @if (Summary.SortCount > 0) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-arrow-up-wide-short\"></i>\n <span>{{ Summary.SortCount }} sort level{{ Summary.SortCount !== 1 ? 's' : '' }}</span>\n </div>\n }\n @if (Summary.SmartFilterActive) {\n <div class=\"summary-item smart-filter\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i>\n <span>Smart filter: \"{{ Summary.SmartFilterPrompt }}\"</span>\n </div>\n }\n @if (Summary.FilterCount > 0) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-filter\"></i>\n <span>{{ Summary.FilterCount }} filter{{ Summary.FilterCount !== 1 ? 's' : '' }}</span>\n </div>\n }\n @if (Summary.AggregateCount > 0) {\n <div class=\"summary-item\">\n <i class=\"fa-solid fa-chart-simple\"></i>\n <span>{{ Summary.AggregateCount }} aggregate{{ Summary.AggregateCount !== 1 ? 's' : '' }}</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Advanced Link -->\n <button class=\"advanced-link\" (click)=\"OnOpenAdvanced()\">\n <i class=\"fa-solid fa-sliders\"></i>\n <span>Customize columns, filters & sorting...</span>\n </button>\n </div>\n\n <!-- Footer -->\n <div class=\"dialog-footer\">\n <div class=\"footer-actions\">\n @if (ViewEntity) {\n <!-- Existing view: Update + Save As New -->\n <button\n class=\"btn btn-primary\"\n (click)=\"OnSave(false)\"\n [disabled]=\"!Name.trim() || IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n }\n {{ IsSaving ? 'Saving...' : 'Update' }}\n </button>\n <button\n class=\"btn btn-secondary\"\n (click)=\"OnSave(true)\"\n [disabled]=\"!Name.trim() || IsSaving\">\n <i class=\"fa-solid fa-plus\"></i>\n Save As New\n </button>\n } @else {\n <!-- New view: Create -->\n <button\n class=\"btn btn-primary\"\n (click)=\"OnSave(true)\"\n [disabled]=\"!Name.trim() || IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n <i class=\"fa-solid fa-plus\"></i>\n }\n {{ IsSaving ? 'Saving...' : 'Create View' }}\n </button>\n }\n </div>\n <button class=\"btn btn-cancel\" (click)=\"OnClose()\">\n Cancel\n </button>\n </div>\n</div>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-view-warning-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.ts","../../../src/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;ICErE,+BAAkD;IAArB,iMAAS,iBAAU,KAAC;IAAC,iBAAM;;ADK1D;;;;;;;;;;;;;;;;;;GAkBG;AAOH,MAAM,OAAO,gCAAgC;IAClC,MAAM,GAAY,KAAK,CAAC;IACxB,QAAQ,GAAW,EAAE,CAAC;IAErB,MAAM,GAAG,IAAI,YAAY,EAAoB,CAAC;IAC9C,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE5C,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;0HAjBU,gCAAgC;6DAAhC,gCAAgC;YC/B7C,kGAAc;YAQV,AADF,AAFF,8BAAgD,aAEnB,aACQ;YAC/B,uBAAiC;YACnC,iBAAM;YACN,+BAA2B;YAAA,2BAAW;YAAA,iBAAO;YAC7C,iCAA6D;YAAnC,6GAAS,cAAU,IAAC;YAC5C,uBAAiC;YAErC,AADE,iBAAS,EACL;YAKF,AADF,AADF,8BAAyB,YACJ,cACT;YAAA,aAAgB;YAAA,iBAAS;YAAC,wGAEpC;YAAA,iBAAI;YACJ,gCAAyB;YACvB,yBAAgD;YAChD,6BAAM;YAAA,iFAAgE;YAE1E,AADE,AADwE,iBAAO,EACzE,EACF;YAIJ,AADF,gCAA2B,kBACkC;YAA3B,8GAAS,oBAAgB,IAAC;YACxD,yBAAgC;YAChC,qCACF;YAAA,iBAAS;YACT,mCAA2D;YAAzB,8GAAS,kBAAc,IAAC;YACxD,yBAAgC;YAChC,kCACF;YAAA,iBAAS;YACT,mCAAmD;YAArB,8GAAS,cAAU,IAAC;YAChD,yBACF;YAEJ,AADE,AADE,iBAAS,EACL,EACF;;YA3CN,qCAEC;YAGyB,cAAqB;YAArB,kCAAqB;YAejC,gBAAgB;YAAhB,+CAAgB;;;iFDWjB,gCAAgC;cAN5C,SAAS;6BACI,KAAK,YACP,+BAA+B;;kBAKxC,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kBACN,MAAM;;kFALI,gCAAgC"}
|
|
1
|
+
{"version":3,"file":"shared-view-warning-dialog.component.js","sourceRoot":"","sources":["../../../src/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.ts","../../../src/lib/shared-view-warning-dialog/shared-view-warning-dialog.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;;;;ICErE,+BAAkD;IAArB,iMAAS,iBAAU,KAAC;IAAC,iBAAM;;ADK1D;;;;;;;;;;;;;;;;;;GAkBG;AAOH,MAAM,OAAO,gCAAgC;IAClC,MAAM,GAAY,KAAK,CAAC;IACxB,QAAQ,GAAW,EAAE,CAAC;IAErB,MAAM,GAAG,IAAI,YAAY,EAAoB,CAAC;IAC9C,MAAM,GAAG,IAAI,YAAY,EAAQ,CAAC;IAE5C,cAAc;QACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;0HAjBU,gCAAgC;6DAAhC,gCAAgC;YC/B7C,kGAAc;YAQV,AADF,AAFF,8BAAgD,aAEnB,aACQ;YAC/B,uBAAiC;YACnC,iBAAM;YACN,+BAA2B;YAAA,2BAAW;YAAA,iBAAO;YAC7C,iCAA6D;YAAnC,6GAAS,cAAU,IAAC;YAC5C,uBAAiC;YAErC,AADE,iBAAS,EACL;YAKF,AADF,AADF,8BAAyB,YACJ,cACT;YAAA,aAAgB;YAAA,iBAAS;YAAC,wGAEpC;YAAA,iBAAI;YACJ,gCAAyB;YACvB,yBAAgD;YAChD,6BAAM;YAAA,iFAAgE;YAE1E,AADE,AADwE,iBAAO,EACzE,EACF;YAIJ,AADF,gCAA2B,kBACkC;YAA3B,8GAAS,oBAAgB,IAAC;YACxD,yBAAgC;YAChC,qCACF;YAAA,iBAAS;YACT,mCAA2D;YAAzB,8GAAS,kBAAc,IAAC;YACxD,yBAAgC;YAChC,kCACF;YAAA,iBAAS;YACT,mCAAmD;YAArB,8GAAS,cAAU,IAAC;YAChD,yBACF;YAEJ,AADE,AADE,iBAAS,EACL,EACF;;YA3CN,qCAEC;YAGyB,cAAqB;YAArB,kCAAqB;YAejC,gBAAgB;YAAhB,+CAAgB;;;iFDWjB,gCAAgC;cAN5C,SAAS;6BACI,KAAK,YACP,+BAA+B;;kBAKxC,KAAK;;kBACL,KAAK;;kBAEL,MAAM;;kBACN,MAAM;;kFALI,gCAAgC","sourcesContent":["import { Component, Input, Output, EventEmitter } from '@angular/core';\n\n/**\n * Result of the shared view warning dialog\n */\nexport type SharedViewAction = 'update-shared' | 'save-as-copy' | 'cancel';\n\n/**\n * SharedViewWarningDialogComponent - Warning dialog when saving changes to a shared view\n *\n * Shows when a user attempts to save changes to a view that is shared with other users.\n * Presents three options:\n * - Update Shared View: save changes affecting all users\n * - Save As My Copy: create a personal copy with the changes\n * - Cancel: abort the save\n *\n * @example\n * ```html\n * <mj-shared-view-warning-dialog\n * [IsOpen]=\"showSharedWarning\"\n * [ViewName]=\"currentView.Name\"\n * (Action)=\"onSharedViewAction($event)\"\n * (Cancel)=\"showSharedWarning = false\">\n * </mj-shared-view-warning-dialog>\n * ```\n */\n@Component({\n standalone: false,\n selector: 'mj-shared-view-warning-dialog',\n templateUrl: './shared-view-warning-dialog.component.html',\n styleUrls: ['./shared-view-warning-dialog.component.css']\n})\nexport class SharedViewWarningDialogComponent {\n @Input() IsOpen: boolean = false;\n @Input() ViewName: string = '';\n\n @Output() Action = new EventEmitter<SharedViewAction>();\n @Output() Cancel = new EventEmitter<void>();\n\n OnUpdateShared(): void {\n this.Action.emit('update-shared');\n }\n\n OnSaveAsCopy(): void {\n this.Action.emit('save-as-copy');\n }\n\n OnCancel(): void {\n this.Cancel.emit();\n }\n}\n","<!-- Dialog Backdrop -->\n@if (IsOpen) {\n <div class=\"dialog-backdrop\" (click)=\"OnCancel()\"></div>\n}\n\n<!-- Dialog Panel -->\n<div class=\"dialog-panel\" [class.open]=\"IsOpen\">\n <!-- Header -->\n <div class=\"dialog-header\">\n <div class=\"icon-circle warning\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <span class=\"header-title\">Shared View</span>\n <button class=\"close-btn\" (click)=\"OnCancel()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"dialog-body\">\n <p class=\"message\">\n <strong>\"{{ ViewName }}\"</strong> is shared with other users.\n Changes you save will affect everyone who uses this view.\n </p>\n <div class=\"warning-box\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n <span>Other users may be relying on this view's current configuration.</span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"dialog-footer\">\n <button class=\"btn btn-primary\" (click)=\"OnUpdateShared()\">\n <i class=\"fa-solid fa-save\"></i>\n Update Shared View\n </button>\n <button class=\"btn btn-secondary\" (click)=\"OnSaveAsCopy()\">\n <i class=\"fa-solid fa-plus\"></i>\n Save As My Copy\n </button>\n <button class=\"btn btn-ghost\" (click)=\"OnCancel()\">\n Cancel\n </button>\n </div>\n</div>\n"]}
|
package/dist/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AA2bA,MAAM,CAAC,MAAM,qBAAqB,GAAiC;IACjE,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,WAAW;IAC9B,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,KAAK;IACxB,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,GAAG;IACrB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,IAAI;KACjB;IACD,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,EAAE;IACpB,oBAAoB,EAAE,KAAK;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AA2bA,MAAM,CAAC,MAAM,qBAAqB,GAAiC;IACjE,UAAU,EAAE,IAAI;IAChB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,WAAW;IAC9B,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,KAAK;IACxB,QAAQ,EAAE,GAAG;IACb,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,GAAG;IACrB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,EAAE;QACjB,eAAe,EAAE,EAAE;QACnB,UAAU,EAAE,IAAI;KACjB;IACD,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,IAAI;IACvB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,EAAE;IACpB,oBAAoB,EAAE,KAAK;CAC5B,CAAC","sourcesContent":["import { EntityInfo, CompositeKey } from '@memberjunction/core';\nimport {\n ViewColumnPinned as CoreViewColumnPinned,\n ViewGridSortSetting as CoreViewGridSortSetting,\n ViewGridColumnSetting as CoreViewGridColumnSetting,\n ViewGridState as CoreViewGridState,\n} from '@memberjunction/core-entities';\n\n// Re-export core types for direct usage\nexport type ViewColumnPinned = CoreViewColumnPinned;\nexport type ViewGridSortSetting = CoreViewGridSortSetting;\nexport type ViewGridColumnSetting = CoreViewGridColumnSetting;\nexport type ViewGridState = CoreViewGridState;\n\n/**\n * View modes supported by the EntityViewer component\n */\nexport type EntityViewMode = 'grid' | 'cards' | 'timeline';\n\n/**\n * Behavior when a record is selected\n */\nexport type RecordSelectionBehavior =\n | 'emit-only' // Only emit the recordSelected event\n | 'show-detail' // Show the detail panel (if available)\n | 'emit-and-detail'; // Both emit event and show detail panel\n\n/**\n * Field display type for smart rendering in cards\n */\nexport type CardFieldType = 'number' | 'boolean' | 'text' | 'date';\n\n/**\n * Color categories for status pills based on semantic meaning\n */\nexport type PillColorType = 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n\n/**\n * Metadata for a field to display in a card\n */\nexport interface CardDisplayField {\n /** Field name from the entity */\n name: string;\n /** Display type for rendering */\n type: CardFieldType;\n /** Human-readable label */\n label: string;\n}\n\n/**\n * Auto-generated card template based on entity metadata\n */\nexport interface CardTemplate {\n /** Primary title field name */\n titleField: string;\n /** Secondary subtitle field name */\n subtitleField: string | null;\n /** Description/notes field name */\n descriptionField: string | null;\n /** Display fields with type information for smart rendering */\n displayFields: CardDisplayField[];\n /**\n * Array of thumbnail field names in priority order\n * Per-record fallback: if the first field is empty, try the next, etc.\n */\n thumbnailFields: string[];\n /** Badge/priority field name */\n badgeField: string | null;\n}\n\n/**\n * Column definition for the grid view\n */\nexport interface GridColumnDef {\n /** Field name from the entity */\n field: string;\n /** Column header text */\n headerName: string;\n /** Column width in pixels */\n width?: number;\n /** Minimum column width */\n minWidth?: number;\n /** Maximum column width */\n maxWidth?: number;\n /** Whether column is sortable */\n sortable?: boolean;\n /** Whether column is filterable */\n filter?: boolean;\n /** Whether column is resizable */\n resizable?: boolean;\n /** Whether to hide this column */\n hide?: boolean;\n /** Custom cell renderer type */\n cellRenderer?: string;\n /** Value formatter function name */\n valueFormatter?: string;\n}\n\n/**\n * Event emitted when a record is selected (clicked)\n */\nexport interface RecordSelectedEvent {\n /** The selected record (plain object from ResultType: 'simple') */\n record: Record<string, unknown>;\n /** The entity metadata */\n entity: EntityInfo;\n /** The composite key of the record */\n compositeKey: CompositeKey;\n}\n\n/**\n * Event emitted when a record should be opened (double-click or open button)\n */\nexport interface RecordOpenedEvent {\n /** The record to open (may be undefined for FK navigation where record isn't loaded) */\n record?: Record<string, unknown>;\n /** The entity metadata */\n entity: EntityInfo;\n /** The composite key of the record */\n compositeKey: CompositeKey;\n}\n\n/**\n * Event emitted when data is loaded\n */\nexport interface DataLoadedEvent {\n /** Total number of records available */\n totalRowCount: number;\n /** Number of records currently loaded */\n loadedRowCount: number;\n /** Time taken to load in milliseconds */\n loadTime: number;\n /** The loaded records - allows parent to access records for state restoration */\n records: Record<string, unknown>[];\n}\n\n/**\n * Event emitted when filtered count changes\n */\nexport interface FilteredCountChangedEvent {\n /** Number of records after filtering */\n filteredCount: number;\n /** Total number of records before filtering */\n totalCount: number;\n}\n\n/**\n * Sort direction for server-side sorting\n */\nexport type SortDirection = 'asc' | 'desc' | null;\n\n/**\n * Sort state for a column\n */\nexport interface SortState {\n /** Field name to sort by */\n field: string;\n /** Sort direction */\n direction: SortDirection;\n}\n\n/**\n * Event emitted when sort changes in the grid\n */\nexport interface SortChangedEvent {\n /** The new sort state (null if no sorting) */\n sort: SortState | null;\n}\n\n/**\n * Pagination state for server-side paging\n */\nexport interface PaginationState {\n /** Current page number (0-based) */\n currentPage: number;\n /** Number of records per page */\n pageSize: number;\n /** Total number of records available (from server) */\n totalRecords: number;\n /** Whether there are more records to load */\n hasMore: boolean;\n /** Whether data is currently being loaded */\n isLoading: boolean;\n}\n\n/**\n * Event emitted when pagination changes\n */\nexport interface PaginationChangedEvent {\n /** The new pagination state */\n pagination: PaginationState;\n}\n\n/**\n * Event emitted when requesting to load more data\n */\nexport interface LoadMoreEvent {\n /** Current page being requested (0-based) */\n page: number;\n /** Page size */\n pageSize: number;\n}\n\n/**\n * Event emitted when grid state changes (column resize, reorder, etc.)\n */\nexport interface GridStateChangedEvent {\n /** The updated grid state */\n gridState: ViewGridState;\n /** What changed: 'columns', 'sort', 'filter' */\n changeType: 'columns' | 'sort' | 'filter';\n}\n\n/**\n * Configuration options for the EntityViewer component\n */\nexport interface EntityViewerConfig {\n /**\n * Whether to show the filter input box\n * @default true\n */\n showFilter?: boolean;\n\n /**\n * Whether to show the view mode toggle (grid/cards)\n * @default true\n */\n showViewModeToggle?: boolean;\n\n /**\n * Behavior when a record is selected\n * @default 'emit-only'\n */\n selectionBehavior?: RecordSelectionBehavior;\n\n /**\n * Initial view mode\n * @default 'grid'\n */\n defaultViewMode?: EntityViewMode;\n\n /**\n * Whether to enable multi-select\n * @default false\n */\n enableMultiSelect?: boolean;\n\n /**\n * Maximum number of records to load per page\n * @default 100\n */\n pageSize?: number;\n\n /**\n * Whether to show record count in header\n * @default true\n */\n showRecordCount?: boolean;\n\n /**\n * Placeholder text for the filter input\n * @default 'Filter records...'\n */\n filterPlaceholder?: string;\n\n /**\n * Debounce time for filter input in milliseconds\n * @default 250\n */\n filterDebounceMs?: number;\n\n /**\n * Custom grid column definitions (optional - auto-generated if not provided)\n */\n gridColumns?: GridColumnDef[];\n\n /**\n * Custom card template (optional - auto-generated if not provided)\n */\n cardTemplate?: CardTemplate;\n\n /**\n * Height of the component (CSS value)\n * @default '100%'\n */\n height?: string;\n\n /**\n * Whether to use server-side filtering via UserSearchString\n * When true, filter text is sent to the server for SQL-based filtering\n * When false, filtering is done client-side on loaded records\n * @default true\n */\n serverSideFiltering?: boolean;\n\n /**\n * Whether to use server-side sorting via OrderBy\n * When true, sort changes trigger a new server request\n * When false, sorting is done client-side by AG Grid\n * @default true\n */\n serverSideSorting?: boolean;\n\n /**\n * Whether to show pagination controls\n * @default true\n */\n showPagination?: boolean;\n\n /**\n * Default sort field when loading data\n */\n defaultSortField?: string;\n\n /**\n * Default sort direction when loading data\n * @default 'asc'\n */\n defaultSortDirection?: SortDirection;\n}\n\n/**\n * Timeline segment grouping options\n */\nexport type TimelineSegmentGrouping = 'none' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\n/**\n * Timeline orientation options\n */\nexport type TimelineOrientation = 'vertical' | 'horizontal';\n\n/**\n * Timeline-specific configuration state\n * Persisted in UserView.DisplayState JSON\n */\nexport interface TimelineState {\n /** The date field name to use for timeline ordering */\n dateFieldName: string;\n /** Time segment grouping */\n segmentGrouping?: TimelineSegmentGrouping;\n /** Sort order for timeline events */\n sortOrder?: 'asc' | 'desc';\n /** Whether segments are collapsible */\n segmentsCollapsible?: boolean;\n /** Whether segments start expanded */\n segmentsDefaultExpanded?: boolean;\n /** Timeline orientation (vertical or horizontal) */\n orientation?: TimelineOrientation;\n}\n\n/**\n * Card-specific configuration state\n * Persisted in UserView.DisplayState JSON\n */\nexport interface CardState {\n /** Custom card size (small, medium, large) */\n cardSize?: 'small' | 'medium' | 'large';\n}\n\n/**\n * Grid-specific configuration state\n * Persisted in UserView.DisplayState JSON\n * Note: Most grid state is already in GridState column, this is for additional settings\n */\nexport interface GridDisplayState {\n /** Row height preference */\n rowHeight?: 'compact' | 'normal' | 'comfortable';\n /**\n * Enable text wrapping in grid cells\n * When true, long text will wrap to multiple lines and rows will auto-size\n * @default false\n */\n wrapText?: boolean;\n}\n\n/**\n * View display state - persisted in UserView.DisplayState\n * Contains the default view mode and mode-specific configuration\n */\nexport interface ViewDisplayState {\n /** The default view mode to show when loading this view */\n defaultMode: EntityViewMode;\n /** Which view modes are enabled/visible for this view */\n enabledModes?: {\n grid?: boolean;\n cards?: boolean;\n timeline?: boolean;\n };\n /** Timeline-specific configuration */\n timeline?: TimelineState;\n /** Card-specific configuration */\n cards?: CardState;\n /** Grid-specific configuration */\n grid?: GridDisplayState;\n}\n\n/**\n * Default configuration values\n */\n/**\n * Summary of what a view configuration includes, for preview in Quick Save dialog\n */\nexport interface ViewConfigSummary {\n /** Number of visible columns */\n ColumnCount: number;\n /** Number of active filters */\n FilterCount: number;\n /** Number of sort levels */\n SortCount: number;\n /** Whether smart filter is active */\n SmartFilterActive: boolean;\n /** Smart filter prompt text (if active) */\n SmartFilterPrompt: string;\n /** Number of enabled aggregates */\n AggregateCount: number;\n}\n\n/**\n * Event emitted by QuickSaveDialog when user saves\n */\nexport interface QuickSaveEvent {\n /** View name */\n Name: string;\n /** View description (optional) */\n Description: string;\n /** Whether the view is shared */\n IsShared: boolean;\n /** Whether to save as new (true) or update existing (false) */\n SaveAsNew: boolean;\n}\n\n/**\n * Result of a view save operation (for notification display)\n */\nexport interface ViewSaveResult {\n /** Whether the save succeeded */\n Success: boolean;\n /** Error message (on failure) */\n ErrorMessage?: string;\n /** Whether this was a new view or update */\n IsNew: boolean;\n}\n\nexport const DEFAULT_VIEWER_CONFIG: Required<EntityViewerConfig> = {\n showFilter: true,\n showViewModeToggle: true,\n selectionBehavior: 'emit-only',\n defaultViewMode: 'grid',\n enableMultiSelect: false,\n pageSize: 100,\n showRecordCount: true,\n filterPlaceholder: 'Filter records...',\n filterDebounceMs: 250,\n gridColumns: [],\n cardTemplate: {\n titleField: '',\n subtitleField: null,\n descriptionField: null,\n displayFields: [],\n thumbnailFields: [],\n badgeField: null\n },\n height: '100%',\n serverSideFiltering: true,\n serverSideSorting: true,\n showPagination: true,\n defaultSortField: '',\n defaultSortDirection: 'asc'\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.util.js","sourceRoot":"","sources":["../../../src/lib/utils/highlight.util.ts"],"names":[],"mappings":"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"}
|
|
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, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n}\n\n/**\n * Interface for match position ranges\n */\ninterface MatchRange {\n start: number;\n end: number;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
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,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,SAAS,EAAE,EAAE,CAAC,IAAI;QAClB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,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;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsB,EAAE,SAAgC;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,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,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
|
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,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,SAAS,EAAE,EAAE,CAAC,IAAI;QAClB,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;KACzB,CAAC,CAAC,CAAC;IACJ,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAClC,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;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAsB,EAAE,SAAgC;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,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,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC","sourcesContent":["import { EntityInfo, CompositeKey } from '@memberjunction/core';\nimport { ViewGridState } from '@memberjunction/core-entities';\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 const kvps = entityInfo.PrimaryKeys.map(pk => ({\n FieldName: pk.Name,\n Value: record[pk.Name]\n }));\n return new CompositeKey(kvps);\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 * 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(entityInfo: EntityInfo, gridState?: ViewGridState | null): string[] {\n const fields = new Set<string>();\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 return Array.from(fields);\n}\n"]}
|