# @memberjunction/ng-query-viewer
Angular components for viewing and executing stored queries with parameter input, interactive AG Grid results, and entity linking. The recommended replacement for the deprecated `@memberjunction/ng-query-grid`.
## Installation
```bash
npm install @memberjunction/ng-query-viewer
```
## Overview
The Query Viewer provides a complete query execution experience: a parameter input form, an AG Grid results display, entity linking for clickable record IDs, and automatic state persistence to User Settings. It replaces the older Kendo-based Query Grid with a more feature-rich implementation.
```mermaid
flowchart TD
subgraph Viewer["QueryViewerComponent"]
A["QueryId Input"] --> B["Load Query Metadata"]
B --> C["QueryParameterFormComponent"]
C -->|Run| D["RunQuery API"]
D --> E["QueryDataGridComponent"]
end
subgraph Features["Key Features"]
F["State Persistence (User Settings)"]
G["Parameter Persistence"]
H["Entity Linking"]
I["Export (Excel/CSV)"]
end
subgraph Grid["QueryDataGridComponent"]
J["AG Grid"]
K["Column Config"]
L["Row Detail Panel"]
M["Query Info Panel"]
end
E --> J
E --> F
C --> G
J --> H
style Viewer fill:#2d6a9f,stroke:#1a4971,color:#fff
style Features fill:#7c5295,stroke:#563a6b,color:#fff
style Grid fill:#2d8659,stroke:#1a5c3a,color:#fff
```
## Usage
### Module Import
```typescript
import { QueryViewerModule } from '@memberjunction/ng-query-viewer';
@NgModule({
imports: [QueryViewerModule]
})
export class YourModule {}
```
### Basic Usage
```html
```
### Full Configuration
```html
```
## Components
| Component | Selector | Purpose |
|-----------|----------|---------|
| `QueryViewerComponent` | `mj-query-viewer` | Top-level composite; orchestrates params, execution, and grid |
| `QueryDataGridComponent` | `mj-query-data-grid` | AG Grid wrapper with entity linking and export |
| `QueryParameterFormComponent` | `mj-query-parameter-form` | Renders input fields for query parameters |
| `QueryRowDetailComponent` | `mj-query-row-detail` | Expandable row detail display |
| `QueryInfoPanelComponent` | `mj-query-info-panel` | Query metadata and execution info panel |
## QueryViewerComponent API
### Inputs
| Property | Type | Default | Description |
|----------|------|---------|-------------|
| `QueryId` | `string \| null` | `null` | ID of the query to execute |
| `AutoRun` | `boolean` | `false` | Auto-run when all required params have saved values |
| `SelectionMode` | `QueryGridSelectionMode` | `'none'` | Row selection mode: `'none'`, `'single'`, `'multiple'` |
| `ShowInfoPanel` | `boolean` | `false` | Show query metadata panel |
| `ShowRowDetail` | `boolean` | `false` | Enable expandable row detail |
| `PersistState` | `boolean` | `true` | Save grid state (sort, columns) to User Settings |
| `PersistParams` | `boolean` | `true` | Save parameter values to User Settings |
### Outputs
| Event | Type | Description |
|-------|------|-------------|
| `EntityLinkClick` | `EventEmitter` | Clickable entity reference in a cell |
| `SelectionChanged` | `EventEmitter` | Row selection changed |
| `RowClick` | `EventEmitter` | Row was clicked |
| `GridStateChanged` | `EventEmitter` | Grid state changed (sort, filter, columns) |
## Exported Types
- `QueryGridSelectionMode` -- `'none' | 'single' | 'multiple'`
- `QueryGridColumnConfig` -- Column definition with entity link info
- `QueryGridSortState` -- Current sort column and direction
- `QueryGridState` -- Full persisted grid state
- `QueryParameterValues` -- Map of parameter names to values
- `QueryGridVisualConfig` -- Visual configuration options
- `QueryExportOptions` -- Export format and configuration
- `QueryRowClickEvent` -- Row click event data
- `QueryEntityLinkClickEvent` -- Entity link click with entity name and record ID
## Utility Functions
- `buildColumnsFromQueryFields(fields)` -- Generates column config from query field metadata
- `buildColumnsFromData(data)` -- Generates column config by inspecting result data
## Dependencies
- [@memberjunction/core](../../../MJCore/readme.md) -- Metadata, RunQuery, QueryInfo
- [@memberjunction/core-entities](../../../MJCoreEntities/readme.md) -- UserInfoEngine for state persistence
- [@memberjunction/ng-notifications](../notifications/README.md) -- User notifications
- [@memberjunction/ng-shared-generic](../shared/README.md) -- Loading component
- [@memberjunction/ng-export-service](../export-service/README.md) -- Export functionality
- `ag-grid-angular` / `ag-grid-community` -- Grid rendering
## Related Packages