import { EventEmitter, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core'; import { RunQueryResult } from '@memberjunction/core'; import { BaseAngularComponent } from '@memberjunction/ng-base-types'; import { MJQueryEntityExtended } from '@memberjunction/core-entities'; import { PageChangeEvent } from '@memberjunction/ng-pagination'; import { CompositionTokenClickEvent } from '@memberjunction/ng-code-editor'; import { QueryDataGridComponent } from '../query-data-grid/query-data-grid.component'; import { QueryGridSelectionMode, QueryGridState, QueryGridVisualConfig, QueryParameterValues, QueryEntityLinkClickEvent, QueryGridStateChangedEvent, QuerySelectionChangedEvent, QueryRowClickEvent } from '../query-data-grid/models/query-grid-types'; import * as i0 from "@angular/core"; /** * A composite component that provides a complete query viewing experience. * Features: * - Automatic parameter form display when query has parameters * - Grid state persistence to User Settings * - Parameter persistence to User Settings * - Entity linking for clickable record IDs * - Auto-run capability when all required params have saved values * * @example * ```html * * * ``` */ export declare class QueryViewerComponent extends BaseAngularComponent implements OnInit, OnDestroy { private cdr; private _queryId; /** * The ID of the query to display */ set QueryId(value: string | null); get QueryId(): string | null; /** * Whether to auto-run the query when all required params have saved values */ AutoRun: boolean; /** * Selection mode for the grid */ SelectionMode: QueryGridSelectionMode; /** * Whether to show the toolbar */ ShowToolbar: boolean; /** * Visual configuration for the grid */ VisualConfig: QueryGridVisualConfig; /** * Whether to persist grid state */ PersistState: boolean; /** * Whether to persist parameter values */ PersistParameters: boolean; /** * Number of rows per page for server-side paging. * Set to 0 to disable paging and load all rows at once. */ PageSize: number; /** * Fired when an entity link is clicked in the grid */ EntityLinkClick: EventEmitter; /** * Fired when a row is double-clicked */ RowDoubleClick: EventEmitter; /** * Fired when selection changes */ SelectionChange: EventEmitter; /** * Fired when query execution starts */ QueryStart: EventEmitter; /** * Fired when query execution completes */ QueryComplete: EventEmitter; /** * Fired when query execution fails */ QueryError: EventEmitter; /** * Fired when user wants to open the full query record */ OpenQueryRecord: EventEmitter<{ queryId: string; queryName: string; }>; /** * Fired when a composition token ({{query:"..."}}) is clicked in the SQL info panel */ CompositionTokenClick: EventEmitter; DataGrid: QueryDataGridComponent; QueryInfo: MJQueryEntityExtended | null; QueryData: Record[]; IsLoading: boolean; ShowParamsPanel: boolean; ShowInfoPanel: boolean; HasRun: boolean; LastError: string | null; ExecutionTimeMs: number | null; SavedGridState: QueryGridState | null; SavedParams: QueryParameterValues; /** Paging state */ QueryTotalRowCount: number; CurrentPageNumber: number; private destroy$; private userInfoEngine; constructor(cdr: ChangeDetectorRef); ngOnInit(): void; ngOnDestroy(): void; private onQueryIdChanged; private canAutoRunWithSavedParams; private loadSavedState; private saveGridState; private saveParameters; private getUserSetting; private setUserSetting; RunQuery(params: QueryParameterValues, pageNumber?: number): Promise; OnParametersSubmit(params: QueryParameterValues): void; OnParamsPanelClose(): void; OnGridStateChange(event: QueryGridStateChangedEvent): void; OnEntityLinkClick(event: QueryEntityLinkClickEvent): void; OnRowDoubleClick(event: QueryRowClickEvent): void; OnSelectionChange(event: QuerySelectionChangedEvent): void; OnPageChange(event: PageChangeEvent): void; OnRefreshRequest(): void; OpenParametersPanel(): void; OpenInfoPanel(): void; CloseInfoPanel(): void; OnOpenQueryRecord(event: { queryId: string; queryName: string; }): void; OnCompositionTokenClick(event: CompositionTokenClickEvent): void; Refresh(): void; get HasParameters(): boolean; /** * Normalizes array-typed parameters. Handles the case where saved state * contains JSON fragment arrays (e.g. `['["A"', '"B"]']`) from the old * comma-split bug. Joins the fragments back into a string, detects JSON * array syntax, and parses cleanly. */ private normalizeArrayParams; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } //# sourceMappingURL=query-viewer.component.d.ts.map