@memberjunction/ng-query-viewer 5.37.0 → 5.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/README.md +2 -3
  2. package/dist/lib/query-data-grid/models/query-grid-types.d.ts +3 -2
  3. package/dist/lib/query-data-grid/models/query-grid-types.d.ts.map +1 -1
  4. package/dist/lib/query-data-grid/models/query-grid-types.js +1 -1
  5. package/dist/lib/query-data-grid/models/query-grid-types.js.map +1 -1
  6. package/dist/lib/query-data-grid/query-data-grid.component.d.ts +3 -3
  7. package/dist/lib/query-data-grid/query-data-grid.component.d.ts.map +1 -1
  8. package/dist/lib/query-data-grid/query-data-grid.component.js +2 -2
  9. package/dist/lib/query-data-grid/query-data-grid.component.js.map +1 -1
  10. package/dist/lib/query-info-panel/query-info-panel.component.d.ts +7 -7
  11. package/dist/lib/query-info-panel/query-info-panel.component.d.ts.map +1 -1
  12. package/dist/lib/query-info-panel/query-info-panel.component.js +15 -13
  13. package/dist/lib/query-info-panel/query-info-panel.component.js.map +1 -1
  14. package/dist/lib/query-parameter-form/query-parameter-form.component.d.ts +6 -6
  15. package/dist/lib/query-parameter-form/query-parameter-form.component.d.ts.map +1 -1
  16. package/dist/lib/query-parameter-form/query-parameter-form.component.js +2 -2
  17. package/dist/lib/query-parameter-form/query-parameter-form.component.js.map +1 -1
  18. package/dist/lib/query-row-detail/query-row-detail.component.d.ts +2 -2
  19. package/dist/lib/query-row-detail/query-row-detail.component.d.ts.map +1 -1
  20. package/dist/lib/query-row-detail/query-row-detail.component.js.map +1 -1
  21. package/dist/lib/query-viewer/query-viewer.component.d.ts +3 -2
  22. package/dist/lib/query-viewer/query-viewer.component.d.ts.map +1 -1
  23. package/dist/lib/query-viewer/query-viewer.component.js +10 -9
  24. package/dist/lib/query-viewer/query-viewer.component.js.map +1 -1
  25. package/package.json +12 -12
package/README.md CHANGED
@@ -136,8 +136,8 @@ export class YourModule {}
136
136
 
137
137
  ## Dependencies
138
138
 
139
- - [@memberjunction/core](../../MJCore/README.md) -- Metadata, RunQuery, QueryInfo
140
- - [@memberjunction/core-entities](../../MJCoreEntities/README.md) -- UserInfoEngine for state persistence
139
+ - [@memberjunction/core](../../../MJCore/readme.md) -- Metadata, RunQuery, QueryInfo
140
+ - [@memberjunction/core-entities](../../../MJCoreEntities/readme.md) -- UserInfoEngine for state persistence
141
141
  - [@memberjunction/ng-notifications](../notifications/README.md) -- User notifications
142
142
  - [@memberjunction/ng-shared-generic](../shared/README.md) -- Loading component
143
143
  - [@memberjunction/ng-export-service](../export-service/README.md) -- Export functionality
@@ -145,4 +145,3 @@ export class YourModule {}
145
145
 
146
146
  ## Related Packages
147
147
 
148
- - [@memberjunction/ng-query-grid](../query-grid/README.md) -- Deprecated predecessor
@@ -6,7 +6,8 @@
6
6
  * - No smart filter (parameters only)
7
7
  * - Support for entity linking via SourceEntityID
8
8
  */
9
- import { QueryFieldInfo, IMetadataProvider } from '@memberjunction/core';
9
+ import { IMetadataProvider } from '@memberjunction/core';
10
+ import { MJQueryFieldEntity } from '@memberjunction/core-entities';
10
11
  /**
11
12
  * Selection mode for the query grid
12
13
  * - 'none': No selection allowed
@@ -252,7 +253,7 @@ export declare function resolveTargetEntity(sourceEntityName: string | undefined
252
253
  /**
253
254
  * Builds column configs from QueryFieldInfo metadata
254
255
  */
255
- export declare function buildColumnsFromQueryFields(fields: QueryFieldInfo[], provider?: IMetadataProvider): QueryGridColumnConfig[];
256
+ export declare function buildColumnsFromQueryFields(fields: MJQueryFieldEntity[], provider?: IMetadataProvider): QueryGridColumnConfig[];
256
257
  /**
257
258
  * Gets the User Settings key for query grid state
258
259
  */
@@ -1 +1 @@
1
- {"version":3,"file":"query-grid-types.d.ts","sourceRoot":"","sources":["../../../../src/lib/query-data-grid/models/query-grid-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-grid-types.d.ts","sourceRoot":"","sources":["../../../../src/lib/query-data-grid/models/query-grid-types.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ export function buildColumnsFromQueryFields(fields, provider) {
86
86
  .sort((a, b) => (a.Sequence || 0) - (b.Sequence || 0))
87
87
  .map((field, index) => {
88
88
  // Resolve the target entity using metadata
89
- const targetInfo = resolveTargetEntity(field.SourceEntity, field.SourceFieldName, md);
89
+ const targetInfo = resolveTargetEntity(field.SourceEntity ?? undefined, field.SourceFieldName ?? undefined, md);
90
90
  // Determine if this is an entity link
91
91
  // It's linkable if we have a valid target entity (either PK or FK)
92
92
  const isEntityLink = !!(targetInfo.targetEntityName && (targetInfo.isPrimaryKey || targetInfo.isForeignKey));
@@ -1 +1 @@
1
- {"version":3,"file":"query-grid-types.js","sourceRoot":"","sources":["../../../../src/lib/query-data-grid/models/query-grid-types.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Types and interfaces for the Query Data Grid component.\n * These are tailored for query results which differ from entity data:\n * - Read-only (no CRUD operations)\n * - Client-side sorting only (query SQL defines ORDER BY)\n * - No smart filter (parameters only)\n * - Support for entity linking via SourceEntityID\n */\n\nimport { QueryInfo, QueryFieldInfo, QueryParameterInfo, IMetadataProvider, Metadata, EntityInfo, EntityFieldInfo } from '@memberjunction/core';\n\n// ========================================\n// Selection Mode\n// ========================================\n\n/**\n * Selection mode for the query grid\n * - 'none': No selection allowed\n * - 'single': Only one row can be selected at a time\n * - 'multiple': Multiple rows can be selected (click to toggle)\n * - 'checkbox': Checkbox column for selection\n */\nexport type QueryGridSelectionMode = 'none' | 'single' | 'multiple' | 'checkbox';\n\n// ========================================\n// Column Configuration\n// ========================================\n\n/**\n * Configuration for a query grid column\n * Derived from QueryFieldInfo metadata\n */\nexport interface QueryGridColumnConfig {\n /** Field name from query results */\n field: string;\n\n /** Display title (defaults to field name) */\n title: string;\n\n /** Description/tooltip for the column header */\n description?: string;\n\n /** Column width in pixels */\n width?: number;\n\n /** Minimum width for resizing */\n minWidth?: number;\n\n /** Maximum width for resizing */\n maxWidth?: number;\n\n /** Column is visible */\n visible: boolean;\n\n /** Column is sortable (client-side) */\n sortable: boolean;\n\n /** Column is resizable */\n resizable: boolean;\n\n /** Column is reorderable */\n reorderable: boolean;\n\n /** SQL base type for formatting */\n sqlBaseType: string;\n\n /** SQL full type for display */\n sqlFullType: string;\n\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n\n /** Order/sequence of this column */\n order: number;\n\n /** Source entity ID if this column references an entity */\n sourceEntityId?: string;\n\n /** Source entity name if this column references an entity */\n sourceEntityName?: string;\n\n /** Source field name in the entity (e.g., 'ID' for primary key) */\n sourceFieldName?: string;\n\n /** Whether this column contains linkable entity IDs */\n isEntityLink: boolean;\n\n /**\n * The entity name to navigate to when clicking the link.\n * - For primary keys: this is the source entity itself\n * - For foreign keys: this is the related entity the FK points to\n */\n targetEntityName?: string;\n\n /**\n * The entity ID to navigate to when clicking the link.\n */\n targetEntityId?: string;\n\n /**\n * Whether this field is a primary key of the source entity\n */\n isPrimaryKey?: boolean;\n\n /**\n * Whether this field is a foreign key to another entity\n */\n isForeignKey?: boolean;\n\n /**\n * Icon class for the target entity (from EntityInfo.Icon)\n * Used to display the entity's icon in the column header\n */\n targetEntityIcon?: string;\n\n /** Column pinning position */\n pinned?: 'left' | 'right' | null;\n\n /** Flex grow factor for auto-sizing */\n flex?: number;\n}\n\n// ========================================\n// Sort State\n// ========================================\n\n/**\n * Sort state for a column (client-side sorting)\n */\nexport interface QueryGridSortState {\n /** Field name being sorted */\n field: string;\n /** Sort direction */\n direction: 'asc' | 'desc';\n /** Index for multi-sort ordering */\n index: number;\n}\n\n// ========================================\n// Grid State (for persistence)\n// ========================================\n\n/**\n * Complete grid state for persistence to User Settings\n */\nexport interface QueryGridState {\n /** Column states */\n columns: Array<{\n field: string;\n width?: number;\n visible: boolean;\n order: number;\n pinned?: 'left' | 'right' | null;\n }>;\n /** Sort state (client-side) */\n sort: QueryGridSortState[];\n}\n\n// ========================================\n// Parameter State (for persistence)\n// ========================================\n\n/**\n * Parameter values for a query execution\n */\nexport interface QueryParameterValues {\n [parameterName: string]: string | number | boolean | Date | string[] | null;\n}\n\n// ========================================\n// Visual Configuration\n// ========================================\n\n/**\n * Header style preset options\n */\nexport type QueryGridHeaderStyle = 'flat' | 'elevated' | 'gradient' | 'bold';\n\n/**\n * Configuration for query grid visual appearance\n */\nexport interface QueryGridVisualConfig {\n /** Header style preset */\n headerStyle?: QueryGridHeaderStyle;\n /** Custom header background color */\n headerBackground?: string;\n /** Custom header text color */\n headerTextColor?: string;\n /** Show bottom shadow/border on header */\n headerShadow?: boolean;\n /** Enable alternating row colors (zebra striping) */\n alternateRows?: boolean;\n /** Contrast level for alternating rows */\n alternateRowContrast?: 'subtle' | 'medium' | 'strong';\n /** Enable smooth hover transitions */\n hoverTransitions?: boolean;\n /** Right-align numeric columns automatically */\n rightAlignNumbers?: boolean;\n /** Format dates with a friendly format */\n friendlyDates?: boolean;\n /** Render email cells as clickable mailto links */\n clickableEmails?: boolean;\n /** Render boolean cells as checkmark/x icons */\n booleanIcons?: boolean;\n /** Render URL cells as clickable links */\n clickableUrls?: boolean;\n /** Selection indicator color */\n selectionIndicatorColor?: string;\n /** Selection indicator width */\n selectionIndicatorWidth?: number;\n /** Selection background color */\n selectionBackground?: string;\n /** Checkbox style */\n checkboxStyle?: 'default' | 'rounded' | 'filled';\n /** Checkbox accent color */\n checkboxColor?: string;\n /** Show skeleton loading rows */\n skeletonLoading?: boolean;\n /** Number of skeleton rows */\n skeletonRowCount?: number;\n /** Border radius for container */\n borderRadius?: number;\n /** Cell padding preset */\n cellPadding?: 'compact' | 'normal' | 'comfortable';\n /** Primary accent color */\n accentColor?: string;\n}\n\n/**\n * Default visual configuration for query grid\n */\nexport const DEFAULT_QUERY_VISUAL_CONFIG: Required<QueryGridVisualConfig> = {\n headerStyle: 'elevated',\n headerBackground: '',\n headerTextColor: '',\n headerShadow: true,\n alternateRows: true,\n alternateRowContrast: 'medium',\n hoverTransitions: true,\n rightAlignNumbers: true,\n friendlyDates: true,\n clickableEmails: true,\n booleanIcons: true,\n clickableUrls: true,\n selectionIndicatorColor: '#f9a825',\n selectionIndicatorWidth: 3,\n selectionBackground: '#fff9e6',\n checkboxStyle: 'rounded',\n checkboxColor: '#2196F3',\n skeletonLoading: true,\n skeletonRowCount: 8,\n borderRadius: 0,\n cellPadding: 'normal',\n accentColor: '#2196F3'\n};\n\n// ========================================\n// Export Options\n// ========================================\n\n/**\n * Export options for query results\n */\nexport interface QueryExportOptions {\n /** Export only visible columns */\n visibleColumnsOnly?: boolean;\n /** Export only selected rows */\n selectedRowsOnly?: boolean;\n /** Include headers */\n includeHeaders?: boolean;\n /** Custom column mapping */\n columnMapping?: Record<string, string>;\n}\n\n// ========================================\n// Events\n// ========================================\n\n/**\n * Event fired when a row is clicked\n */\nexport interface QueryRowClickEvent {\n /** The row data */\n rowData: Record<string, unknown>;\n /** Row index */\n rowIndex: number;\n /** Column that was clicked */\n column?: QueryGridColumnConfig;\n /** Cell value */\n cellValue?: unknown;\n /** Original mouse event */\n mouseEvent: MouseEvent;\n}\n\n/**\n * Event fired when an entity link is clicked\n */\nexport interface QueryEntityLinkClickEvent {\n /** Entity name */\n entityName: string;\n /** Record ID (primary key value) */\n recordId: string;\n /** The column config (null if clicked from row detail panel) */\n column: QueryGridColumnConfig | null;\n /** The row data */\n rowData: Record<string, unknown>;\n}\n\n/**\n * Event fired when grid state changes\n */\nexport interface QueryGridStateChangedEvent {\n /** The new grid state */\n state: QueryGridState;\n /** What changed */\n changeType: 'column-resize' | 'column-move' | 'column-visibility' | 'sort';\n}\n\n/**\n * Event fired when selection changes\n */\nexport interface QuerySelectionChangedEvent {\n /** Selected row indices */\n selectedIndices: number[];\n /** Selected row data */\n selectedRows: Record<string, unknown>[];\n}\n\n// ========================================\n// Utility Functions\n// ========================================\n\n/**\n * Result of resolving the target entity for navigation\n */\nexport interface TargetEntityInfo {\n targetEntityName?: string;\n targetEntityId?: string;\n targetEntityIcon?: string;\n isPrimaryKey: boolean;\n isForeignKey: boolean;\n}\n\n/**\n * Determines the target entity for navigation based on source entity field metadata.\n * - If the source field is a primary key, target is the source entity itself\n * - If the source field is a foreign key, target is the related entity\n * Also retrieves the target entity's icon for display in column headers.\n */\nexport function resolveTargetEntity(\n sourceEntityName: string | undefined,\n sourceFieldName: string | undefined,\n md: IMetadataProvider\n): TargetEntityInfo {\n if (!sourceEntityName || !sourceFieldName) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Look up the source entity\n const sourceEntity = md.EntityByName(sourceEntityName);\n if (!sourceEntity) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Find the field in the source entity\n const entityField = sourceEntity.Fields.find(f => f.Name === sourceFieldName);\n if (!entityField) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Check if it's a primary key\n if (entityField.IsPrimaryKey) {\n return {\n targetEntityName: sourceEntityName,\n targetEntityId: sourceEntity.ID,\n targetEntityIcon: sourceEntity.Icon || undefined,\n isPrimaryKey: true,\n isForeignKey: false\n };\n }\n\n // Check if it's a foreign key (has RelatedEntity)\n if (entityField.RelatedEntity && entityField.RelatedEntity.trim().length > 0) {\n const relatedEntity = md.EntityByName(entityField.RelatedEntity);\n return {\n targetEntityName: entityField.RelatedEntity,\n targetEntityId: relatedEntity?.ID,\n targetEntityIcon: relatedEntity?.Icon || undefined,\n isPrimaryKey: false,\n isForeignKey: true\n };\n }\n\n return { isPrimaryKey: false, isForeignKey: false };\n}\n\n/**\n * Builds column configs from QueryFieldInfo metadata\n */\nexport function buildColumnsFromQueryFields(fields: QueryFieldInfo[], provider?: IMetadataProvider): QueryGridColumnConfig[] {\n const md = provider ?? (new Metadata() as unknown as IMetadataProvider);\n\n return fields\n .sort((a, b) => (a.Sequence || 0) - (b.Sequence || 0))\n .map((field, index) => {\n // Resolve the target entity using metadata\n const targetInfo = resolveTargetEntity(field.SourceEntity, field.SourceFieldName, md);\n\n // Determine if this is an entity link\n // It's linkable if we have a valid target entity (either PK or FK)\n const isEntityLink = !!(targetInfo.targetEntityName && (targetInfo.isPrimaryKey || targetInfo.isForeignKey));\n\n // Determine alignment based on type\n let align: 'left' | 'center' | 'right' = 'left';\n const baseType = (field.SQLBaseType || '').toLowerCase();\n if (['int', 'bigint', 'decimal', 'numeric', 'float', 'money', 'smallmoney', 'real'].includes(baseType)) {\n align = 'right';\n } else if (['bit'].includes(baseType)) {\n align = 'center';\n }\n\n return {\n field: field.Name,\n title: field.Name, // Could be enhanced to parse CamelCase\n description: field.Description || undefined,\n width: undefined,\n minWidth: 80,\n maxWidth: undefined, // No max width limit - let users resize freely\n visible: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n sqlBaseType: field.SQLBaseType || 'nvarchar',\n sqlFullType: field.SQLFullType || 'nvarchar(max)',\n align,\n order: index,\n sourceEntityId: field.SourceEntityID || undefined,\n sourceEntityName: field.SourceEntity || undefined,\n sourceFieldName: field.SourceFieldName || undefined,\n isEntityLink,\n targetEntityName: targetInfo.targetEntityName,\n targetEntityId: targetInfo.targetEntityId,\n isPrimaryKey: targetInfo.isPrimaryKey,\n isForeignKey: targetInfo.isForeignKey,\n targetEntityIcon: targetInfo.targetEntityIcon,\n pinned: null,\n flex: undefined\n };\n });\n}\n\n/**\n * Gets the User Settings key for query grid state\n */\nexport function getQueryGridStateKey(queryId: string): string {\n return `QueryViewer_${queryId}_GridState`;\n}\n\n/**\n * Gets the User Settings key for query parameters\n */\nexport function getQueryParamsKey(queryId: string): string {\n return `QueryViewer_${queryId}_LastParams`;\n}\n\n/**\n * Infers column configuration from actual data when query has no field metadata.\n * Examines the first row to determine column names and types.\n */\nexport function buildColumnsFromData(data: Record<string, unknown>[]): QueryGridColumnConfig[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n // Get column names from first row\n const firstRow = data[0];\n const columnNames = Object.keys(firstRow);\n\n return columnNames.map((name, index) => {\n // Infer type from value\n const value = firstRow[name];\n let sqlBaseType = 'nvarchar';\n let align: 'left' | 'center' | 'right' = 'left';\n\n if (typeof value === 'number') {\n sqlBaseType = Number.isInteger(value) ? 'int' : 'decimal';\n align = 'right';\n } else if (typeof value === 'boolean') {\n sqlBaseType = 'bit';\n align = 'center';\n } else if (value instanceof Date) {\n sqlBaseType = 'datetime';\n } else if (typeof value === 'string') {\n // Check if it looks like a date\n const datePattern = /^\\d{4}-\\d{2}-\\d{2}/;\n if (datePattern.test(value)) {\n sqlBaseType = 'datetime';\n }\n }\n\n return {\n field: name,\n title: name,\n description: undefined,\n width: undefined,\n minWidth: 80,\n maxWidth: undefined,\n visible: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n sqlBaseType,\n sqlFullType: sqlBaseType,\n align,\n order: index,\n sourceEntityId: undefined,\n sourceEntityName: undefined,\n sourceFieldName: undefined,\n isEntityLink: false,\n targetEntityName: undefined,\n targetEntityId: undefined,\n isPrimaryKey: false,\n isForeignKey: false,\n targetEntityIcon: undefined,\n pinned: null,\n flex: undefined\n };\n });\n}\n"]}
1
+ {"version":3,"file":"query-grid-types.js","sourceRoot":"","sources":["../../../../src/lib/query-data-grid/models/query-grid-types.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Types and interfaces for the Query Data Grid component.\n * These are tailored for query results which differ from entity data:\n * - Read-only (no CRUD operations)\n * - Client-side sorting only (query SQL defines ORDER BY)\n * - No smart filter (parameters only)\n * - Support for entity linking via SourceEntityID\n */\n\nimport { IMetadataProvider, Metadata } from '@memberjunction/core';\nimport { MJQueryFieldEntity } from '@memberjunction/core-entities';\n\n// ========================================\n// Selection Mode\n// ========================================\n\n/**\n * Selection mode for the query grid\n * - 'none': No selection allowed\n * - 'single': Only one row can be selected at a time\n * - 'multiple': Multiple rows can be selected (click to toggle)\n * - 'checkbox': Checkbox column for selection\n */\nexport type QueryGridSelectionMode = 'none' | 'single' | 'multiple' | 'checkbox';\n\n// ========================================\n// Column Configuration\n// ========================================\n\n/**\n * Configuration for a query grid column\n * Derived from QueryFieldInfo metadata\n */\nexport interface QueryGridColumnConfig {\n /** Field name from query results */\n field: string;\n\n /** Display title (defaults to field name) */\n title: string;\n\n /** Description/tooltip for the column header */\n description?: string;\n\n /** Column width in pixels */\n width?: number;\n\n /** Minimum width for resizing */\n minWidth?: number;\n\n /** Maximum width for resizing */\n maxWidth?: number;\n\n /** Column is visible */\n visible: boolean;\n\n /** Column is sortable (client-side) */\n sortable: boolean;\n\n /** Column is resizable */\n resizable: boolean;\n\n /** Column is reorderable */\n reorderable: boolean;\n\n /** SQL base type for formatting */\n sqlBaseType: string;\n\n /** SQL full type for display */\n sqlFullType: string;\n\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n\n /** Order/sequence of this column */\n order: number;\n\n /** Source entity ID if this column references an entity */\n sourceEntityId?: string;\n\n /** Source entity name if this column references an entity */\n sourceEntityName?: string;\n\n /** Source field name in the entity (e.g., 'ID' for primary key) */\n sourceFieldName?: string;\n\n /** Whether this column contains linkable entity IDs */\n isEntityLink: boolean;\n\n /**\n * The entity name to navigate to when clicking the link.\n * - For primary keys: this is the source entity itself\n * - For foreign keys: this is the related entity the FK points to\n */\n targetEntityName?: string;\n\n /**\n * The entity ID to navigate to when clicking the link.\n */\n targetEntityId?: string;\n\n /**\n * Whether this field is a primary key of the source entity\n */\n isPrimaryKey?: boolean;\n\n /**\n * Whether this field is a foreign key to another entity\n */\n isForeignKey?: boolean;\n\n /**\n * Icon class for the target entity (from EntityInfo.Icon)\n * Used to display the entity's icon in the column header\n */\n targetEntityIcon?: string;\n\n /** Column pinning position */\n pinned?: 'left' | 'right' | null;\n\n /** Flex grow factor for auto-sizing */\n flex?: number;\n}\n\n// ========================================\n// Sort State\n// ========================================\n\n/**\n * Sort state for a column (client-side sorting)\n */\nexport interface QueryGridSortState {\n /** Field name being sorted */\n field: string;\n /** Sort direction */\n direction: 'asc' | 'desc';\n /** Index for multi-sort ordering */\n index: number;\n}\n\n// ========================================\n// Grid State (for persistence)\n// ========================================\n\n/**\n * Complete grid state for persistence to User Settings\n */\nexport interface QueryGridState {\n /** Column states */\n columns: Array<{\n field: string;\n width?: number;\n visible: boolean;\n order: number;\n pinned?: 'left' | 'right' | null;\n }>;\n /** Sort state (client-side) */\n sort: QueryGridSortState[];\n}\n\n// ========================================\n// Parameter State (for persistence)\n// ========================================\n\n/**\n * Parameter values for a query execution\n */\nexport interface QueryParameterValues {\n [parameterName: string]: string | number | boolean | Date | string[] | null;\n}\n\n// ========================================\n// Visual Configuration\n// ========================================\n\n/**\n * Header style preset options\n */\nexport type QueryGridHeaderStyle = 'flat' | 'elevated' | 'gradient' | 'bold';\n\n/**\n * Configuration for query grid visual appearance\n */\nexport interface QueryGridVisualConfig {\n /** Header style preset */\n headerStyle?: QueryGridHeaderStyle;\n /** Custom header background color */\n headerBackground?: string;\n /** Custom header text color */\n headerTextColor?: string;\n /** Show bottom shadow/border on header */\n headerShadow?: boolean;\n /** Enable alternating row colors (zebra striping) */\n alternateRows?: boolean;\n /** Contrast level for alternating rows */\n alternateRowContrast?: 'subtle' | 'medium' | 'strong';\n /** Enable smooth hover transitions */\n hoverTransitions?: boolean;\n /** Right-align numeric columns automatically */\n rightAlignNumbers?: boolean;\n /** Format dates with a friendly format */\n friendlyDates?: boolean;\n /** Render email cells as clickable mailto links */\n clickableEmails?: boolean;\n /** Render boolean cells as checkmark/x icons */\n booleanIcons?: boolean;\n /** Render URL cells as clickable links */\n clickableUrls?: boolean;\n /** Selection indicator color */\n selectionIndicatorColor?: string;\n /** Selection indicator width */\n selectionIndicatorWidth?: number;\n /** Selection background color */\n selectionBackground?: string;\n /** Checkbox style */\n checkboxStyle?: 'default' | 'rounded' | 'filled';\n /** Checkbox accent color */\n checkboxColor?: string;\n /** Show skeleton loading rows */\n skeletonLoading?: boolean;\n /** Number of skeleton rows */\n skeletonRowCount?: number;\n /** Border radius for container */\n borderRadius?: number;\n /** Cell padding preset */\n cellPadding?: 'compact' | 'normal' | 'comfortable';\n /** Primary accent color */\n accentColor?: string;\n}\n\n/**\n * Default visual configuration for query grid\n */\nexport const DEFAULT_QUERY_VISUAL_CONFIG: Required<QueryGridVisualConfig> = {\n headerStyle: 'elevated',\n headerBackground: '',\n headerTextColor: '',\n headerShadow: true,\n alternateRows: true,\n alternateRowContrast: 'medium',\n hoverTransitions: true,\n rightAlignNumbers: true,\n friendlyDates: true,\n clickableEmails: true,\n booleanIcons: true,\n clickableUrls: true,\n selectionIndicatorColor: '#f9a825',\n selectionIndicatorWidth: 3,\n selectionBackground: '#fff9e6',\n checkboxStyle: 'rounded',\n checkboxColor: '#2196F3',\n skeletonLoading: true,\n skeletonRowCount: 8,\n borderRadius: 0,\n cellPadding: 'normal',\n accentColor: '#2196F3'\n};\n\n// ========================================\n// Export Options\n// ========================================\n\n/**\n * Export options for query results\n */\nexport interface QueryExportOptions {\n /** Export only visible columns */\n visibleColumnsOnly?: boolean;\n /** Export only selected rows */\n selectedRowsOnly?: boolean;\n /** Include headers */\n includeHeaders?: boolean;\n /** Custom column mapping */\n columnMapping?: Record<string, string>;\n}\n\n// ========================================\n// Events\n// ========================================\n\n/**\n * Event fired when a row is clicked\n */\nexport interface QueryRowClickEvent {\n /** The row data */\n rowData: Record<string, unknown>;\n /** Row index */\n rowIndex: number;\n /** Column that was clicked */\n column?: QueryGridColumnConfig;\n /** Cell value */\n cellValue?: unknown;\n /** Original mouse event */\n mouseEvent: MouseEvent;\n}\n\n/**\n * Event fired when an entity link is clicked\n */\nexport interface QueryEntityLinkClickEvent {\n /** Entity name */\n entityName: string;\n /** Record ID (primary key value) */\n recordId: string;\n /** The column config (null if clicked from row detail panel) */\n column: QueryGridColumnConfig | null;\n /** The row data */\n rowData: Record<string, unknown>;\n}\n\n/**\n * Event fired when grid state changes\n */\nexport interface QueryGridStateChangedEvent {\n /** The new grid state */\n state: QueryGridState;\n /** What changed */\n changeType: 'column-resize' | 'column-move' | 'column-visibility' | 'sort';\n}\n\n/**\n * Event fired when selection changes\n */\nexport interface QuerySelectionChangedEvent {\n /** Selected row indices */\n selectedIndices: number[];\n /** Selected row data */\n selectedRows: Record<string, unknown>[];\n}\n\n// ========================================\n// Utility Functions\n// ========================================\n\n/**\n * Result of resolving the target entity for navigation\n */\nexport interface TargetEntityInfo {\n targetEntityName?: string;\n targetEntityId?: string;\n targetEntityIcon?: string;\n isPrimaryKey: boolean;\n isForeignKey: boolean;\n}\n\n/**\n * Determines the target entity for navigation based on source entity field metadata.\n * - If the source field is a primary key, target is the source entity itself\n * - If the source field is a foreign key, target is the related entity\n * Also retrieves the target entity's icon for display in column headers.\n */\nexport function resolveTargetEntity(\n sourceEntityName: string | undefined,\n sourceFieldName: string | undefined,\n md: IMetadataProvider\n): TargetEntityInfo {\n if (!sourceEntityName || !sourceFieldName) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Look up the source entity\n const sourceEntity = md.EntityByName(sourceEntityName);\n if (!sourceEntity) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Find the field in the source entity\n const entityField = sourceEntity.Fields.find(f => f.Name === sourceFieldName);\n if (!entityField) {\n return { isPrimaryKey: false, isForeignKey: false };\n }\n\n // Check if it's a primary key\n if (entityField.IsPrimaryKey) {\n return {\n targetEntityName: sourceEntityName,\n targetEntityId: sourceEntity.ID,\n targetEntityIcon: sourceEntity.Icon || undefined,\n isPrimaryKey: true,\n isForeignKey: false\n };\n }\n\n // Check if it's a foreign key (has RelatedEntity)\n if (entityField.RelatedEntity && entityField.RelatedEntity.trim().length > 0) {\n const relatedEntity = md.EntityByName(entityField.RelatedEntity);\n return {\n targetEntityName: entityField.RelatedEntity,\n targetEntityId: relatedEntity?.ID,\n targetEntityIcon: relatedEntity?.Icon || undefined,\n isPrimaryKey: false,\n isForeignKey: true\n };\n }\n\n return { isPrimaryKey: false, isForeignKey: false };\n}\n\n/**\n * Builds column configs from QueryFieldInfo metadata\n */\nexport function buildColumnsFromQueryFields(fields: MJQueryFieldEntity[], provider?: IMetadataProvider): QueryGridColumnConfig[] {\n const md = provider ?? (new Metadata() as unknown as IMetadataProvider);\n\n return fields\n .sort((a, b) => (a.Sequence || 0) - (b.Sequence || 0))\n .map((field, index) => {\n // Resolve the target entity using metadata\n const targetInfo = resolveTargetEntity(field.SourceEntity ?? undefined, field.SourceFieldName ?? undefined, md);\n\n // Determine if this is an entity link\n // It's linkable if we have a valid target entity (either PK or FK)\n const isEntityLink = !!(targetInfo.targetEntityName && (targetInfo.isPrimaryKey || targetInfo.isForeignKey));\n\n // Determine alignment based on type\n let align: 'left' | 'center' | 'right' = 'left';\n const baseType = (field.SQLBaseType || '').toLowerCase();\n if (['int', 'bigint', 'decimal', 'numeric', 'float', 'money', 'smallmoney', 'real'].includes(baseType)) {\n align = 'right';\n } else if (['bit'].includes(baseType)) {\n align = 'center';\n }\n\n return {\n field: field.Name,\n title: field.Name, // Could be enhanced to parse CamelCase\n description: field.Description || undefined,\n width: undefined,\n minWidth: 80,\n maxWidth: undefined, // No max width limit - let users resize freely\n visible: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n sqlBaseType: field.SQLBaseType || 'nvarchar',\n sqlFullType: field.SQLFullType || 'nvarchar(max)',\n align,\n order: index,\n sourceEntityId: field.SourceEntityID || undefined,\n sourceEntityName: field.SourceEntity || undefined,\n sourceFieldName: field.SourceFieldName || undefined,\n isEntityLink,\n targetEntityName: targetInfo.targetEntityName,\n targetEntityId: targetInfo.targetEntityId,\n isPrimaryKey: targetInfo.isPrimaryKey,\n isForeignKey: targetInfo.isForeignKey,\n targetEntityIcon: targetInfo.targetEntityIcon,\n pinned: null,\n flex: undefined\n };\n });\n}\n\n/**\n * Gets the User Settings key for query grid state\n */\nexport function getQueryGridStateKey(queryId: string): string {\n return `QueryViewer_${queryId}_GridState`;\n}\n\n/**\n * Gets the User Settings key for query parameters\n */\nexport function getQueryParamsKey(queryId: string): string {\n return `QueryViewer_${queryId}_LastParams`;\n}\n\n/**\n * Infers column configuration from actual data when query has no field metadata.\n * Examines the first row to determine column names and types.\n */\nexport function buildColumnsFromData(data: Record<string, unknown>[]): QueryGridColumnConfig[] {\n if (!data || data.length === 0) {\n return [];\n }\n\n // Get column names from first row\n const firstRow = data[0];\n const columnNames = Object.keys(firstRow);\n\n return columnNames.map((name, index) => {\n // Infer type from value\n const value = firstRow[name];\n let sqlBaseType = 'nvarchar';\n let align: 'left' | 'center' | 'right' = 'left';\n\n if (typeof value === 'number') {\n sqlBaseType = Number.isInteger(value) ? 'int' : 'decimal';\n align = 'right';\n } else if (typeof value === 'boolean') {\n sqlBaseType = 'bit';\n align = 'center';\n } else if (value instanceof Date) {\n sqlBaseType = 'datetime';\n } else if (typeof value === 'string') {\n // Check if it looks like a date\n const datePattern = /^\\d{4}-\\d{2}-\\d{2}/;\n if (datePattern.test(value)) {\n sqlBaseType = 'datetime';\n }\n }\n\n return {\n field: name,\n title: name,\n description: undefined,\n width: undefined,\n minWidth: 80,\n maxWidth: undefined,\n visible: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n sqlBaseType,\n sqlFullType: sqlBaseType,\n align,\n order: index,\n sourceEntityId: undefined,\n sourceEntityName: undefined,\n sourceFieldName: undefined,\n isEntityLink: false,\n targetEntityName: undefined,\n targetEntityId: undefined,\n isPrimaryKey: false,\n isForeignKey: false,\n targetEntityIcon: undefined,\n pinned: null,\n flex: undefined\n };\n });\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef, ElementRef } from '@angular/core';
2
- import { QueryInfo } from '@memberjunction/core';
2
+ import { MJQueryEntityExtended } from '@memberjunction/core-entities';
3
3
  import { PageChangeEvent } from '@memberjunction/ng-pagination';
4
4
  import { ColDef, GridReadyEvent, RowClickedEvent, GridApi, RowDoubleClickedEvent, RowSelectionOptions, GetRowIdParams, SortChangedEvent as AgSortChangedEvent, type Theme, ColumnResizedEvent, ColumnMovedEvent, SelectionChangedEvent, GridOptions } from 'ag-grid-community';
5
5
  import { ExportService, ExportDialogConfig, ExportDialogResult } from '@memberjunction/ng-export-service';
@@ -36,8 +36,8 @@ export declare class QueryDataGridComponent implements OnInit, OnDestroy {
36
36
  * The QueryInfo metadata for the query being displayed.
37
37
  * Used to derive column configurations and entity linking.
38
38
  */
39
- set QueryInfo(value: QueryInfo | null);
40
- get QueryInfo(): QueryInfo | null;
39
+ set QueryInfo(value: MJQueryEntityExtended | null);
40
+ get QueryInfo(): MJQueryEntityExtended | null;
41
41
  private _columnConfigs;
42
42
  /**
43
43
  * Optional pre-built column configurations for ad-hoc queries without saved metadata.
@@ -1 +1 @@
1
- {"version":3,"file":"query-data-grid.component.d.ts","sourceRoot":"","sources":["../../../src/lib/query-data-grid/query-data-grid.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-data-grid.component.d.ts","sourceRoot":"","sources":["../../../src/lib/query-data-grid/query-data-grid.component.ts"],"names":[],"mappings":"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"}
@@ -397,7 +397,7 @@ export class QueryDataGridComponent {
397
397
  return;
398
398
  }
399
399
  // Build columns from query fields
400
- this.Columns = buildColumnsFromQueryFields(this._queryInfo.Fields);
400
+ this.Columns = buildColumnsFromQueryFields(this._queryInfo.QueryFields);
401
401
  // Apply initial state if provided via prop (takes precedence)
402
402
  if (this.InitialGridState) {
403
403
  this.applyColumnStateFromGridState(this.InitialGridState);
@@ -1191,5 +1191,5 @@ export class QueryDataGridComponent {
1191
1191
  }], PageChange: [{
1192
1192
  type: Output
1193
1193
  }] }); })();
1194
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDataGridComponent, { className: "QueryDataGridComponent", filePath: "src/lib/query-data-grid/query-data-grid.component.ts", lineNumber: 109 }); })();
1194
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryDataGridComponent, { className: "QueryDataGridComponent", filePath: "src/lib/query-data-grid/query-data-grid.component.ts", lineNumber: 108 }); })();
1195
1195
  //# sourceMappingURL=query-data-grid.component.js.map