import type { WidgetConfig } from '../../dashboard-builder/models'; import { type TimeRangeValue } from '../../time-range-picker/time-range-picker.component'; import type { AellaFilterDefinition, FilterCategory, FilterProperty } from '../../filter-bar/filter-bar.models'; import * as i0 from "@angular/core"; export type WidgetConfigViewMode = 'config' | 'drilldown'; export type PreviewState = 'incomplete' | 'loading' | 'ready' | 'no-results' | 'error'; export type LaunchContext = 'dashboard' | 'savedCharts' | 'unknown'; export interface WidgetConfigSavePayload { widget: WidgetConfig; } /** * Super component for widget config/drilldown UI. * Use in a modal (WidgetConfigModalComponent) or standalone (sandbox route). * - config: full UI with Chart Specific Configuration panel and Save/Save as new. * - drilldown: enlarged chart + filters + table only (view-mode drilldown), no config panel. */ export declare class WidgetConfigViewComponent { private readonly cdr; private readonly destroyRef; private loadingTimer?; private readonly titleInputEl?; /** Widget to display/edit */ readonly widget: import("@angular/core").InputSignal; /** Dashboard name shown in the context line (e.g. "Operational Dashboard") */ readonly dashboardName: import("@angular/core").InputSignal; /** config = full UI with right-hand panel; drilldown = chart + filters + table only (view-mode) */ readonly mode: import("@angular/core").InputSignal; /** Where the modal was opened from — drives the secondary context line */ readonly launchContext: import("@angular/core").InputSignal; readonly closeEvent: import("@angular/core").OutputEmitterRef; readonly saveEvent: import("@angular/core").OutputEmitterRef; readonly saveAsNewEvent: import("@angular/core").OutputEmitterRef; readonly timeRange: import("@angular/core").WritableSignal; /** Preview state machine */ readonly previewState: import("@angular/core").WritableSignal; readonly missingRequirements: import("@angular/core").WritableSignal; readonly previewError: import("@angular/core").WritableSignal; readonly previewErrorDetail: import("@angular/core").WritableSignal; readonly appliedChartType: import("@angular/core").WritableSignal; /** Accordion panels to expand by default */ readonly openPanels: import("@angular/core").WritableSignal; /** ID of the first config field that needs user attention */ readonly firstMissingField: import("@angular/core").WritableSignal; /** Results table panel — collapsed by default, expands when preview is ready */ readonly tableExpanded: import("@angular/core").WritableSignal; /** Bidirectional chart ↔ table highlighting */ readonly highlightedRow: import("@angular/core").WritableSignal; private chartInstance; /** Left panel mode — preview (default) or inline query builder */ readonly leftPanelMode: import("@angular/core").WritableSignal<"preview" | "queryBuilder">; /** Query builder form state */ queryBuilderName: string; queryBuilderDescription: string; queryBuilderDateRange: string; readonly queryBuilderConditions: import("@angular/core").WritableSignal<{ field: string; operator: string; values: string[]; }[]>; readonly queryBuilderLogic: import("@angular/core").WritableSignal<"ALL" | "ANY">; readonly queryBuilderFieldOptions: { label: string; value: string; }[]; readonly queryBuilderOperatorOptions: { label: string; value: string; }[]; readonly queryBuilderDateOptions: { label: string; value: string; }[]; /** Production query builder — Aggregation section */ qbTenantPlaceholder: string; qbGroupByField: string; readonly qbGroupByOptions: { label: string; value: string; }[]; qbFunction: string; readonly qbFunctionOptions: { label: string; value: string; }[]; qbAliasName: string; /** Production query builder — Sort section */ qbSortField: string; readonly qbSortFieldOptions: { label: string; value: string; }[]; qbSortDir: string; readonly qbSortDirOptions: { label: string; value: string; }[]; /** Production query builder — Documents table (empty by default) */ readonly qbDocumentRows: Array<{ userName: string; count: number; }>; /** Title editing */ readonly isEditingTitle: import("@angular/core").WritableSignal; private previousChartName; chartName: string; chartType: string; tenant: string; indices: string; query: string; aggregation: string; field: string | null; limit: number; /** Area-specific */ timeInterval: string; areaStacking: string; lineStyle: string; showPoints: boolean; fillOpacity: number; /** Bar-specific */ barOrientation: string; barStacking: string; showBarValues: boolean; /** Donut-specific */ showLabels: boolean; showLegend: boolean; innerRadius: number; /** Heatmap-specific */ xAxisField: string; yAxisField: string; colorScale: string; readonly contextLine: import("@angular/core").Signal; /** Bumps when document theme attributes change so `optionsForWidget` re-reads CSS tokens. */ private readonly displayThemeDigest; readonly chartOptions: import("@angular/core").Signal; readonly configFilterCategories: FilterCategory[]; readonly configFilterCategoryValues: Record; readonly configFilterProperties: FilterProperty[]; private static readonly DEMO_FILTERS; configFilters: AellaFilterDefinition[]; readonly chartTypeOptions: { label: string; value: string; }[]; readonly tenantOptions: { label: string; value: string; }[]; readonly indicesOptions: { label: string; value: string; }[]; queryOptions: { label: string; value: string; }[]; readonly fieldOptions: { label: string; value: string; }[]; /** Chart-type-aware aggregation options */ readonly aggregationOptionsByType: Record>; readonly timeIntervalOptions: { label: string; value: string; }[]; readonly stackingOptions: { label: string; value: string; }[]; readonly lineStyleOptions: { label: string; value: string; }[]; readonly barOrientationOptions: { label: string; value: string; }[]; readonly colorScaleOptions: { label: string; value: string; }[]; readonly heatmapAxisOptions: { label: string; value: string; }[]; readonly tableData: import("@angular/core").Signal<{ col1: string; col2: string; col3: string; }[]>; readonly tableColumns: import("@angular/core").Signal<{ col1: string; col2: string; col3: string; }>; constructor(); protected startEditTitle(): void; protected commitTitle(): void; protected revertTitle(): void; protected onTitleBlur(): void; /** * Compute missing requirements based on current config panel values. * Also sets `firstMissingField` to the ID of the first field needing attention. * Extend this method when adding new aggregation types that need specific fields. */ private computeMissingRequirements; protected onClose(): void; protected onSave(): void; protected onSaveAsNew(): void; protected onReset(): void; protected onApply(): void; protected onTimeRangeChange(value: TimeRangeValue): void; protected onClearFilters(): void; protected onChartReady(chart: any): void; protected onRowHover(name: string): void; protected onRowLeave(): void; /** Query builder preview — generates a pseudo-KQL string from conditions */ readonly generatedQueryPreview: import("@angular/core").Signal; protected onNewQuery(): void; protected onCancelQueryBuilder(): void; protected onSaveQuery(): void; protected toggleQueryLogic(): void; protected addQueryCondition(): void; protected removeQueryCondition(index: number): void; protected onConditionValueChange(index: number, value: string): void; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }