@gravitee/gamma-lib-observability 1.39.2 → 1.40.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/dashboards/DashboardView.d.ts +12 -2
- package/dist/dashboards/DashboardView.d.ts.map +1 -1
- package/dist/dashboards/adapters/time-series-adapter.d.ts.map +1 -1
- package/dist/dashboards/editor/CartesianDisplayFields.d.ts +7 -0
- package/dist/dashboards/editor/CartesianDisplayFields.d.ts.map +1 -0
- package/dist/dashboards/editor/DashboardEditorPage.d.ts +15 -0
- package/dist/dashboards/editor/DashboardEditorPage.d.ts.map +1 -0
- package/dist/dashboards/editor/DashboardJsonTab.d.ts +16 -0
- package/dist/dashboards/editor/DashboardJsonTab.d.ts.map +1 -0
- package/dist/dashboards/editor/DimensionSelect.d.ts +12 -0
- package/dist/dashboards/editor/DimensionSelect.d.ts.map +1 -0
- package/dist/dashboards/editor/DoughnutCentreFields.d.ts +12 -0
- package/dist/dashboards/editor/DoughnutCentreFields.d.ts.map +1 -0
- package/dist/dashboards/editor/EmptyDashboardState.d.ts +6 -0
- package/dist/dashboards/editor/EmptyDashboardState.d.ts.map +1 -0
- package/dist/dashboards/editor/FacetDisplayFields.d.ts +12 -0
- package/dist/dashboards/editor/FacetDisplayFields.d.ts.map +1 -0
- package/dist/dashboards/editor/FacetQueryFields.d.ts +7 -0
- package/dist/dashboards/editor/FacetQueryFields.d.ts.map +1 -0
- package/dist/dashboards/editor/InlineEditableText.d.ts +15 -0
- package/dist/dashboards/editor/InlineEditableText.d.ts.map +1 -0
- package/dist/dashboards/editor/LabelledRow.d.ts +16 -0
- package/dist/dashboards/editor/LabelledRow.d.ts.map +1 -0
- package/dist/dashboards/editor/MeasureSelect.d.ts +14 -0
- package/dist/dashboards/editor/MeasureSelect.d.ts.map +1 -0
- package/dist/dashboards/editor/MetricGroupItemsEditor.d.ts +17 -0
- package/dist/dashboards/editor/MetricGroupItemsEditor.d.ts.map +1 -0
- package/dist/dashboards/editor/MetricQueryFields.d.ts +7 -0
- package/dist/dashboards/editor/MetricQueryFields.d.ts.map +1 -0
- package/dist/dashboards/editor/MetricSelect.d.ts +12 -0
- package/dist/dashboards/editor/MetricSelect.d.ts.map +1 -0
- package/dist/dashboards/editor/SentimentSelect.d.ts +14 -0
- package/dist/dashboards/editor/SentimentSelect.d.ts.map +1 -0
- package/dist/dashboards/editor/SeriesListEditor.d.ts +13 -0
- package/dist/dashboards/editor/SeriesListEditor.d.ts.map +1 -0
- package/dist/dashboards/editor/VisualizationTypePicker.d.ts +7 -0
- package/dist/dashboards/editor/VisualizationTypePicker.d.ts.map +1 -0
- package/dist/dashboards/editor/WidgetConfigForm.d.ts +17 -0
- package/dist/dashboards/editor/WidgetConfigForm.d.ts.map +1 -0
- package/dist/dashboards/editor/WidgetEditorPanel.d.ts +25 -0
- package/dist/dashboards/editor/WidgetEditorPanel.d.ts.map +1 -0
- package/dist/dashboards/editor/WidgetIdentityFields.d.ts +12 -0
- package/dist/dashboards/editor/WidgetIdentityFields.d.ts.map +1 -0
- package/dist/dashboards/editor/WidgetPreview.d.ts +14 -0
- package/dist/dashboards/editor/WidgetPreview.d.ts.map +1 -0
- package/dist/dashboards/editor/convert-widget-type.d.ts +7 -0
- package/dist/dashboards/editor/convert-widget-type.d.ts.map +1 -0
- package/dist/dashboards/editor/dashboard-editor-state.d.ts +86 -0
- package/dist/dashboards/editor/dashboard-editor-state.d.ts.map +1 -0
- package/dist/dashboards/editor/dashboard-json.d.ts +22 -0
- package/dist/dashboards/editor/dashboard-json.d.ts.map +1 -0
- package/dist/dashboards/editor/facet-display-cols.d.ts +7 -0
- package/dist/dashboards/editor/facet-display-cols.d.ts.map +1 -0
- package/dist/dashboards/editor/is-json-equal.d.ts +14 -0
- package/dist/dashboards/editor/is-json-equal.d.ts.map +1 -0
- package/dist/dashboards/editor/normalize-widget-for-editor.d.ts +17 -0
- package/dist/dashboards/editor/normalize-widget-for-editor.d.ts.map +1 -0
- package/dist/dashboards/editor/suggest-widget-title.d.ts +7 -0
- package/dist/dashboards/editor/suggest-widget-title.d.ts.map +1 -0
- package/dist/dashboards/editor/use-debounced-value.d.ts +6 -0
- package/dist/dashboards/editor/use-debounced-value.d.ts.map +1 -0
- package/dist/dashboards/editor/widget-auto-scope.d.ts +14 -0
- package/dist/dashboards/editor/widget-auto-scope.d.ts.map +1 -0
- package/dist/dashboards/index.d.ts +1 -1
- package/dist/dashboards/index.d.ts.map +1 -1
- package/dist/dashboards/metric-catalog.d.ts +78 -0
- package/dist/dashboards/metric-catalog.d.ts.map +1 -0
- package/dist/dashboards/renderers/BreakdownPresentation.d.ts +1 -1
- package/dist/dashboards/renderers/BreakdownPresentation.d.ts.map +1 -1
- package/dist/dashboards/renderers/BreakdownWidgetRenderer.d.ts.map +1 -1
- package/dist/dashboards/renderers/CartesianWidgetRenderer.d.ts.map +1 -1
- package/dist/dashboards/renderers/MetricGroupWidgetRenderer.d.ts.map +1 -1
- package/dist/dashboards/templates/dashboard-template.d.ts.map +1 -1
- package/dist/dashboards/widget-data.d.ts +9 -1
- package/dist/dashboards/widget-data.d.ts.map +1 -1
- package/dist/data-sources/dashboard-persistence.d.ts +17 -1
- package/dist/data-sources/dashboard-persistence.d.ts.map +1 -1
- package/dist/data-sources/filter-serialization.d.ts +16 -1
- package/dist/data-sources/filter-serialization.d.ts.map +1 -1
- package/dist/filter-providers-context.js +32 -29
- package/dist/hooks/query-keys.d.ts +2 -0
- package/dist/hooks/query-keys.d.ts.map +1 -1
- package/dist/hooks/use-custom-dashboards.d.ts +18 -0
- package/dist/hooks/use-custom-dashboards.d.ts.map +1 -0
- package/dist/hooks/use-stable-time-range.d.ts +9 -6
- package/dist/hooks/use-stable-time-range.d.ts.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4907 -1943
- package/dist/persistence/local-storage-dashboard-persistence.d.ts +20 -0
- package/dist/persistence/local-storage-dashboard-persistence.d.ts.map +1 -0
- package/dist/providers/dashboard-persistence-provider.d.ts +5 -0
- package/dist/providers/dashboard-persistence-provider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/routing/DashboardListPage.d.ts.map +1 -1
- package/dist/routing/ObservabilityDashboardPage.d.ts.map +1 -1
- package/dist/routing/ObservabilityRoutes.d.ts.map +1 -1
- package/dist/routing/use-observability-url-state.d.ts +9 -1
- package/dist/routing/use-observability-url-state.d.ts.map +1 -1
- package/dist/styles/observability.css +1 -1
- package/dist/testing/graphene-charts-dashboard-grid-mock.d.ts +1 -1
- package/dist/testing/graphene-charts-dashboard-grid-mock.d.ts.map +1 -1
- package/dist/testing/graphene-core-code-editor-mock.d.ts +10 -0
- package/dist/testing/graphene-core-code-editor-mock.d.ts.map +1 -0
- package/dist/testing/graphene-core-icons-mock.d.ts +10 -1
- package/dist/testing/graphene-core-icons-mock.d.ts.map +1 -1
- package/dist/testing/graphene-core-mock.d.ts +62 -2
- package/dist/testing/graphene-core-mock.d.ts.map +1 -1
- package/dist/testing/mock-metrics-data-source.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/types/domain.d.ts +25 -0
- package/dist/types/domain.d.ts.map +1 -1
- package/dist/url-state/codec.d.ts +11 -2
- package/dist/url-state/codec.d.ts.map +1 -1
- package/package.json +11 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BreakpointCols } from '@gravitee/graphene-charts/dashboard-grid';
|
|
2
|
-
import { Dashboard, FilterCondition, TimeRange, WidgetLayout } from '../types/domain';
|
|
2
|
+
import { Dashboard, FilterCondition, TimeRange, Widget, WidgetLayout } from '../types/domain';
|
|
3
3
|
export interface DashboardViewProps {
|
|
4
4
|
readonly dashboard: Dashboard;
|
|
5
5
|
readonly timeRange: TimeRange;
|
|
@@ -17,6 +17,16 @@ export interface DashboardViewProps {
|
|
|
17
17
|
readonly breakpointCols?: BreakpointCols;
|
|
18
18
|
/** Fired after a layout change when `editable` is true. */
|
|
19
19
|
readonly onLayoutChange?: (layouts: ReadonlyMap<string, WidgetLayout>) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Renders per-widget header actions (e.g. an edit menu). The returned node
|
|
22
|
+
* is wrapped so pointer events do not start a grid drag in editable mode.
|
|
23
|
+
*/
|
|
24
|
+
readonly widgetActions?: (widget: Widget) => React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Widget currently open in an editor panel; it is visually dimmed so the
|
|
27
|
+
* user knows the grid copy will be replaced on save.
|
|
28
|
+
*/
|
|
29
|
+
readonly highlightedWidgetId?: string;
|
|
20
30
|
}
|
|
21
|
-
export declare function DashboardView({ dashboard, timeRange, filters, editable, rowHeight, breakpointCols, onLayoutChange, }: DashboardViewProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function DashboardView({ dashboard, timeRange, filters, editable, rowHeight, breakpointCols, onLayoutChange, widgetActions, highlightedWidgetId, }: DashboardViewProps): import("react/jsx-runtime").JSX.Element;
|
|
22
32
|
//# sourceMappingURL=DashboardView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardView.d.ts","sourceRoot":"","sources":["../../src/dashboards/DashboardView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"DashboardView.d.ts","sourceRoot":"","sources":["../../src/dashboards/DashboardView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,0CAA0C,CAAC;AAIrG,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiBnG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,iIAAiI;IACjI,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;IAC/E;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC7D;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,SAAS,EACT,OAAuB,EACvB,QAAgB,EAChB,SAAS,EACT,cAAwC,EACxC,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,EAAE,kBAAkB,2CAsEpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-series-adapter.d.ts","sourceRoot":"","sources":["../../../src/dashboards/adapters/time-series-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"time-series-adapter.d.ts","sourceRoot":"","sources":["../../../src/dashboards/adapters/time-series-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AA6BD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EACnC,aAAa,EAAE,SAAS,CAAC,SAAS,eAAe,EAAE,GAAG,SAAS,CAAC,EAAE,GACjE;IAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC,CAAA;CAAE,CAwCtF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC,GAC5D,kBAAkB,EAAE,CAmDtB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CartesianWidget, Widget } from '../../types/domain';
|
|
2
|
+
export interface CartesianDisplayFieldsProps {
|
|
3
|
+
readonly widget: CartesianWidget;
|
|
4
|
+
readonly onChange: (widget: Widget) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function CartesianDisplayFields({ widget, onChange }: CartesianDisplayFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=CartesianDisplayFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CartesianDisplayFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/CartesianDisplayFields.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAElE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,2BAA2B,2CAyCvF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create/edit screen for custom dashboards. `dashboards/new` mounts it without
|
|
3
|
+
* a `dashboardId` (a fresh draft); `dashboards/:dashboardId/edit` loads the
|
|
4
|
+
* saved dashboard first. Nothing is persisted until "Save".
|
|
5
|
+
*
|
|
6
|
+
* The whole screen runs with live refresh paused, stated rather than left to
|
|
7
|
+
* the default: composing wants a still image. An advancing window would
|
|
8
|
+
* re-animate the preview under an author who is reading it, re-query every
|
|
9
|
+
* widget on the grid behind the panel, and leave two configurations compared a
|
|
10
|
+
* minute apart looking at different data. The saved dashboard is where live
|
|
11
|
+
* belongs. The range still refreshes on demand, by re-picking it in the time
|
|
12
|
+
* range control.
|
|
13
|
+
*/
|
|
14
|
+
export declare function DashboardEditorPage(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=DashboardEditorPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardEditorPage.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DashboardEditorPage.tsx"],"names":[],"mappings":"AA+DA;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,4CAQlC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EditableDashboardFields } from './dashboard-editor-state';
|
|
2
|
+
export interface DashboardJsonTabProps {
|
|
3
|
+
readonly text: string;
|
|
4
|
+
readonly onTextChange: (text: string) => void;
|
|
5
|
+
/** Whether the text differs from the current builder state. */
|
|
6
|
+
readonly dirty: boolean;
|
|
7
|
+
readonly onApply: (fields: EditableDashboardFields) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* JSON source view of the dashboard definition. Copy the document to move
|
|
11
|
+
* widgets between dashboards, or edit and apply it to reach options the
|
|
12
|
+
* visual builder does not expose. Identity fields are not part of the
|
|
13
|
+
* document and cannot be corrupted from here.
|
|
14
|
+
*/
|
|
15
|
+
export declare function DashboardJsonTab({ text, onTextChange, dirty, onApply }: DashboardJsonTabProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=DashboardJsonTab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardJsonTab.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DashboardJsonTab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAoBxE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;CAC7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,qBAAqB,2CA0D7F"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface DimensionSelectProps {
|
|
2
|
+
readonly value: string | undefined;
|
|
3
|
+
readonly onChange: (field: string | undefined) => void;
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
/** Adds a "None" entry that clears the dimension (used for series group-by). */
|
|
6
|
+
readonly allowNone?: boolean;
|
|
7
|
+
readonly disabled?: boolean;
|
|
8
|
+
/** Distinguishes several dimension pickers rendered in the same form. */
|
|
9
|
+
readonly ariaLabel?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function DimensionSelect({ value, onChange, id, allowNone, disabled, ariaLabel, }: DimensionSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=DimensionSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DimensionSelect.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DimensionSelect.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,EAAE,EACF,SAAiB,EACjB,QAAQ,EACR,SAAuB,GACxB,EAAE,oBAAoB,2CAoCtB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DoughnutWidget, Widget } from '../../types/domain';
|
|
2
|
+
/**
|
|
3
|
+
* What the doughnut hole carries. The renderer sums the slices for `total`, and
|
|
4
|
+
* a `custom` value wins over that sum. It is the escape hatch for a top-N doughnut,
|
|
5
|
+
* whose visible slices deliberately do not add up to the real total.
|
|
6
|
+
*/
|
|
7
|
+
export interface DoughnutCentreFieldsProps {
|
|
8
|
+
readonly widget: DoughnutWidget;
|
|
9
|
+
readonly onChange: (widget: Widget) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function DoughnutCentreFields({ widget, onChange }: DoughnutCentreFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=DoughnutCentreFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DoughnutCentreFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/DoughnutCentreFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAajE;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CAoDnF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface EmptyDashboardStateProps {
|
|
2
|
+
readonly onAddWidget: () => void;
|
|
3
|
+
}
|
|
4
|
+
/** Shown in the editor while the dashboard has no widget yet. */
|
|
5
|
+
export declare function EmptyDashboardState({ onAddWidget }: EmptyDashboardStateProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=EmptyDashboardState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyDashboardState.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/EmptyDashboardState.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;CAClC;AAED,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,EAAE,wBAAwB,2CAyB5E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BarWidget, BreakdownWidget, DoughnutWidget, Widget } from '../../types/domain';
|
|
2
|
+
/**
|
|
3
|
+
* Presentation options specific to one facet visualization: orientation for
|
|
4
|
+
* bars, the centre stat for a doughnut, and for a top list the list/stacked
|
|
5
|
+
* variant, ranking, trend and the secondary dimension revealed on hover.
|
|
6
|
+
*/
|
|
7
|
+
export interface FacetDisplayFieldsProps {
|
|
8
|
+
readonly widget: BarWidget | DoughnutWidget | BreakdownWidget;
|
|
9
|
+
readonly onChange: (widget: Widget) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function FacetDisplayFields({ widget, onChange }: FacetDisplayFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=FacetDisplayFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FacetDisplayFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/FacetDisplayFields.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAO7F;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,eAAe,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CA8H/E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BarWidget, BreakdownWidget, DoughnutWidget, Widget } from '../../types/domain';
|
|
2
|
+
export interface FacetQueryFieldsProps {
|
|
3
|
+
readonly widget: BarWidget | DoughnutWidget | BreakdownWidget;
|
|
4
|
+
readonly onChange: (widget: Widget) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function FacetQueryFields({ widget, onChange }: FacetQueryFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=FacetQueryFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FacetQueryFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/FacetQueryFields.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAa,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAcxG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,eAAe,CAAC;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAoE3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface InlineEditableTextProps {
|
|
2
|
+
readonly value: string;
|
|
3
|
+
readonly onChange: (value: string) => void;
|
|
4
|
+
readonly placeholder?: string;
|
|
5
|
+
readonly ariaLabel: string;
|
|
6
|
+
/** Classes applied to the read-mode text. */
|
|
7
|
+
readonly textClassName?: string;
|
|
8
|
+
readonly inputClassName?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Click-to-edit text used for the dashboard title and description in the
|
|
12
|
+
* editor. Enter or blur commits; Escape restores the previous value.
|
|
13
|
+
*/
|
|
14
|
+
export declare function InlineEditableText({ value, onChange, placeholder, ariaLabel, textClassName, inputClassName, }: InlineEditableTextProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=InlineEditableText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineEditableText.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/InlineEditableText.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,cAAc,GACf,EAAE,uBAAuB,2CA4DzB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface LabelledRowProps {
|
|
3
|
+
/** Grid template shared by the captions and the controls, so they line up. */
|
|
4
|
+
readonly cols: string;
|
|
5
|
+
readonly labels: readonly string[];
|
|
6
|
+
readonly className?: string;
|
|
7
|
+
readonly children: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A row of controls under its own captions, both on the same column template so
|
|
11
|
+
* each caption sits over its control. Every input keeps a visible name once it
|
|
12
|
+
* is filled, which a placeholder cannot do: an author reopening a widget would
|
|
13
|
+
* otherwise read "Collapse after 4" with nothing saying what the 4 counts.
|
|
14
|
+
*/
|
|
15
|
+
export declare function LabelledRow({ cols, labels, className, children }: LabelledRowProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=LabelledRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelledRow.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/LabelledRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAWlF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface MeasureSelectProps {
|
|
2
|
+
readonly value: string | undefined;
|
|
3
|
+
readonly onChange: (measure: string) => void;
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Metric the measure applies to. Restricts the options to what the
|
|
7
|
+
* analytics engine accepts for it; with a single supported measure and
|
|
8
|
+
* nothing else configured, the select is disabled, because there is nothing to
|
|
9
|
+
* choose.
|
|
10
|
+
*/
|
|
11
|
+
readonly metric?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function MeasureSelect({ value, onChange, id, metric }: MeasureSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=MeasureSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MeasureSelect.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/MeasureSelect.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAQD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CAkChF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { MetricGroupItemDefinition } from '../../types/domain';
|
|
2
|
+
export interface MetricGroupItemsEditorProps {
|
|
3
|
+
readonly items: readonly MetricGroupItemDefinition[];
|
|
4
|
+
readonly onChange: (items: MetricGroupItemDefinition[]) => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Editor for the KPI tiles of a metric-group widget: what each tile measures,
|
|
8
|
+
* how it is labelled, and whether it shows a trend, with the value judgement
|
|
9
|
+
* that decides if a rise is green or red.
|
|
10
|
+
*
|
|
11
|
+
* Consecutive tiles that share a Group name are rendered side by side under
|
|
12
|
+
* that heading. Keeping the grouping as a column rather than a nested editor
|
|
13
|
+
* means a tile joins or leaves a group by editing one field, and the table
|
|
14
|
+
* stays readable row by row. Per-item filters stay JSON-tab territory.
|
|
15
|
+
*/
|
|
16
|
+
export declare function MetricGroupItemsEditor({ items, onChange }: MetricGroupItemsEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=MetricGroupItemsEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricGroupItemsEditor.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/MetricGroupItemsEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAWpE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,yBAAyB,EAAE,KAAK,IAAI,CAAC;CACjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,2BAA2B,2CAyFtF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MetricWidget, Widget } from '../../types/domain';
|
|
2
|
+
export interface MetricQueryFieldsProps {
|
|
3
|
+
readonly widget: MetricWidget;
|
|
4
|
+
readonly onChange: (widget: Widget) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function MetricQueryFields({ widget, onChange }: MetricQueryFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=MetricQueryFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricQueryFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/MetricQueryFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAW/D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA4C7E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface MetricSelectProps {
|
|
2
|
+
readonly value: string;
|
|
3
|
+
readonly onChange: (metric: string) => void;
|
|
4
|
+
readonly id?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Metric picker backed by the curated catalog. A metric that is not in the
|
|
8
|
+
* catalog (e.g. hand-written in the JSON tab) is kept selectable so the form
|
|
9
|
+
* never destroys an advanced configuration.
|
|
10
|
+
*/
|
|
11
|
+
export declare function MetricSelect({ value, onChange, id }: MetricSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=MetricSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricSelect.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/MetricSelect.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,iBAAiB,2CAmCtE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MetricTrendSentiment } from '../../types/domain';
|
|
2
|
+
export interface SentimentSelectProps {
|
|
3
|
+
readonly value: MetricTrendSentiment | undefined;
|
|
4
|
+
readonly onChange: (sentiment: MetricTrendSentiment) => void;
|
|
5
|
+
readonly id?: string;
|
|
6
|
+
readonly disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Whether a rising value is good news. Drives the colour of the trend arrow, so
|
|
10
|
+
* it only matters where a trend is displayed. `neutral` keeps the arrow
|
|
11
|
+
* uncoloured, which is the safe choice for a generic metric.
|
|
12
|
+
*/
|
|
13
|
+
export declare function SentimentSelect({ value, onChange, id, disabled }: SentimentSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=SentimentSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SentimentSelect.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/SentimentSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ/D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAUD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAmBtF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SeriesDefinition } from '../../types/domain';
|
|
2
|
+
export interface SeriesListEditorProps {
|
|
3
|
+
readonly series: readonly SeriesDefinition[];
|
|
4
|
+
readonly onChange: (series: SeriesDefinition[]) => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Editor for the series of a timeseries widget. Covers the common surface
|
|
8
|
+
* (metric, measure, representation, group-by) plus the Y-axis a series maps to,
|
|
9
|
+
* so two metrics with very different scales (e.g. requests vs latency) can each
|
|
10
|
+
* use their own axis instead of one crushing the other.
|
|
11
|
+
*/
|
|
12
|
+
export declare function SeriesListEditor({ series, onChange }: SeriesListEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=SeriesListEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeriesListEditor.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/SeriesListEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,oBAAoB,CAAC;AAwBjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;CACzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAwI3E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WidgetType } from '../../types/domain';
|
|
2
|
+
export interface VisualizationTypePickerProps {
|
|
3
|
+
readonly value: WidgetType;
|
|
4
|
+
readonly onChange: (type: WidgetType) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function VisualizationTypePicker({ value, onChange }: VisualizationTypePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=VisualizationTypePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisualizationTypePicker.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/VisualizationTypePicker.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBrD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,uBAAuB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,4BAA4B,2CA8BxF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Widget } from '../../types/domain';
|
|
2
|
+
export interface WidgetConfigFormProps {
|
|
3
|
+
readonly widget: Widget;
|
|
4
|
+
readonly onChange: (widget: Widget) => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Controlled configuration form for a single widget. Every change is emitted
|
|
8
|
+
* immediately so the live preview tracks the configuration in real time.
|
|
9
|
+
*
|
|
10
|
+
* This is the shell only: it owns the tabs and routes to the fields of the
|
|
11
|
+
* chosen visualization, which live in their own modules.
|
|
12
|
+
*
|
|
13
|
+
* The visualization picker stays above the tabs: it decides which tabs exist,
|
|
14
|
+
* so it cannot live inside one of them.
|
|
15
|
+
*/
|
|
16
|
+
export declare function WidgetConfigForm({ widget, onChange }: WidgetConfigFormProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=WidgetConfigForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetConfigForm.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/WidgetConfigForm.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAuD,MAAM,EAAc,MAAM,oBAAoB,CAAC;AAelH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAYD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAqE3E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FilterCondition, TimeRange, Widget } from '../../types/domain';
|
|
2
|
+
export interface WidgetEditorPanelProps {
|
|
3
|
+
readonly open: boolean;
|
|
4
|
+
/** Widget being edited; the panel works on its own copy until save. */
|
|
5
|
+
readonly widget: Widget | null;
|
|
6
|
+
readonly isNew: boolean;
|
|
7
|
+
readonly timeRange: TimeRange;
|
|
8
|
+
readonly dashboardFilters: readonly FilterCondition[];
|
|
9
|
+
readonly onSave: (widget: Widget) => void;
|
|
10
|
+
readonly onCancel: () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Reports whether the working copy diverges from the widget it was seeded
|
|
13
|
+
* from. The page uses it to guard actions that would swap the panel's target
|
|
14
|
+
* out from under unsaved changes.
|
|
15
|
+
*/
|
|
16
|
+
readonly onDirtyChange?: (dirty: boolean) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Right-side widget editor. Non-modal so the dashboard grid stays visible and
|
|
20
|
+
* interactive behind it; expandable to full width like the log/trace drawers.
|
|
21
|
+
* The live preview reflects every change; nothing lands in the dashboard
|
|
22
|
+
* until "Save widget".
|
|
23
|
+
*/
|
|
24
|
+
export declare function WidgetEditorPanel({ open, widget, isNew, timeRange, dashboardFilters, onSave, onCancel, onDirtyChange, }: WidgetEditorPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=WidgetEditorPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetEditorPanel.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/WidgetEditorPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ7E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;IACtD,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,aAAa,GACd,EAAE,sBAAsB,2CA4HxB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Widget } from '../../types/domain';
|
|
2
|
+
export interface WidgetIdentityFieldsProps {
|
|
3
|
+
readonly widget: Widget;
|
|
4
|
+
readonly onChange: (widget: Widget) => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Title/description of the widget, shown above the live preview so the form
|
|
8
|
+
* reads top-down like the rendered tile: identity first, then the chart, then
|
|
9
|
+
* the data selection driving it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function WidgetIdentityFields({ widget, onChange }: WidgetIdentityFieldsProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=WidgetIdentityFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetIdentityFields.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/WidgetIdentityFields.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CA4BnF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FilterCondition, TimeRange, Widget } from '../../types/domain';
|
|
2
|
+
export interface WidgetPreviewProps {
|
|
3
|
+
readonly widget: Widget;
|
|
4
|
+
readonly timeRange: TimeRange;
|
|
5
|
+
/** Dashboard-level (pinned) filters the preview must honour. */
|
|
6
|
+
readonly dashboardFilters: readonly FilterCondition[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Live preview of the widget under edition. The configuration is debounced so
|
|
10
|
+
* typing does not fire an analytics query per keystroke; widget-level filters
|
|
11
|
+
* are merged by the renderer itself (widget wins over dashboard filters).
|
|
12
|
+
*/
|
|
13
|
+
export declare function WidgetPreview({ widget, timeRange, dashboardFilters }: WidgetPreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=WidgetPreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WidgetPreview.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/WidgetPreview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AA4B7E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;CACvD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,kBAAkB,2CAmBxF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Widget, WidgetType } from '../../types/domain';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a widget to another visualization type, preserving identity,
|
|
4
|
+
* layout, title, description, filters and, when expressible, the query.
|
|
5
|
+
*/
|
|
6
|
+
export declare function convertWidgetType(widget: Widget, type: WidgetType): Widget;
|
|
7
|
+
//# sourceMappingURL=convert-widget-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-widget-type.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/convert-widget-type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AA4B7D;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAkE1E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Dashboard, FilterCondition, TimeRange, Widget, WidgetLayout, WidgetType } from '../../types/domain';
|
|
2
|
+
/**
|
|
3
|
+
* Fields of a {@link Dashboard} the editor (and the JSON tab) may change.
|
|
4
|
+
* Identity fields (`id`, `createdAt`, `updatedAt`) are managed by the editor
|
|
5
|
+
* page and the persistence layer, never by user input.
|
|
6
|
+
*/
|
|
7
|
+
export interface EditableDashboardFields {
|
|
8
|
+
readonly title: string;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly widgets: Widget[];
|
|
11
|
+
readonly filters: FilterCondition[];
|
|
12
|
+
readonly timeRange: TimeRange;
|
|
13
|
+
}
|
|
14
|
+
export interface DashboardDraftState {
|
|
15
|
+
readonly draft: Dashboard;
|
|
16
|
+
/** Snapshot used for dirty detection; refreshed on init/save. */
|
|
17
|
+
readonly baseline: Dashboard;
|
|
18
|
+
}
|
|
19
|
+
export type DashboardDraftAction = {
|
|
20
|
+
type: 'init';
|
|
21
|
+
dashboard: Dashboard;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'markSaved';
|
|
24
|
+
dashboard: Dashboard;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'setTitle';
|
|
27
|
+
title: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'setDescription';
|
|
30
|
+
description: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'setTimeRange';
|
|
33
|
+
timeRange: TimeRange;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'upsertWidget';
|
|
36
|
+
widget: Widget;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'removeWidget';
|
|
39
|
+
widgetId: string;
|
|
40
|
+
} | {
|
|
41
|
+
type: 'duplicateWidget';
|
|
42
|
+
widgetId: string;
|
|
43
|
+
newWidgetId: string;
|
|
44
|
+
} | {
|
|
45
|
+
type: 'applyLayouts';
|
|
46
|
+
layouts: ReadonlyMap<string, WidgetLayout>;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'replaceEditable';
|
|
49
|
+
fields: EditableDashboardFields;
|
|
50
|
+
};
|
|
51
|
+
export declare function createDraftState(dashboard: Dashboard): DashboardDraftState;
|
|
52
|
+
export declare function isDraftDirty(state: DashboardDraftState): boolean;
|
|
53
|
+
export declare function dashboardDraftReducer(state: DashboardDraftState, action: DashboardDraftAction): DashboardDraftState;
|
|
54
|
+
export declare function generateWidgetId(): string;
|
|
55
|
+
export declare function generateDashboardId(): string;
|
|
56
|
+
/**
|
|
57
|
+
* A copy of a dashboard ready to be created: new identity, marked title,
|
|
58
|
+
* everything else carried over. Shared by the list and the detail page so the
|
|
59
|
+
* two entry points cannot drift apart. Timestamps are deliberately left alone:
|
|
60
|
+
* the persistence layer owns them.
|
|
61
|
+
*/
|
|
62
|
+
export declare function duplicateDashboard(source: Dashboard): Dashboard;
|
|
63
|
+
/** Shared with `convert-widget-type`, so both routes into a widget agree. */
|
|
64
|
+
export declare const DEFAULT_TOP_LIST_VARIANT = "stacked";
|
|
65
|
+
/** Buckets a fresh facet widget asks for, whatever the visualization. */
|
|
66
|
+
export declare const DEFAULT_FACET_BUCKETS = 5;
|
|
67
|
+
/**
|
|
68
|
+
* Readable ceiling for the number of buckets. The backend documents no upper
|
|
69
|
+
* bound, so this is purely a guard against a configuration that renders as
|
|
70
|
+
* noise, and it is deliberately the same for every visualization rather than
|
|
71
|
+
* one rule per chart to learn.
|
|
72
|
+
*/
|
|
73
|
+
export declare const MAX_FACET_BUCKETS = 10;
|
|
74
|
+
export declare function nextWidgetPosition(widgets: readonly Widget[]): number;
|
|
75
|
+
/**
|
|
76
|
+
* Builds a blank widget of the requested type, positioned below the current
|
|
77
|
+
* content with a sensible default size for that visualization.
|
|
78
|
+
*/
|
|
79
|
+
export declare function createDefaultWidget(type: WidgetType, id: string, widgets: readonly Widget[]): Widget;
|
|
80
|
+
/**
|
|
81
|
+
* Default title for a freshly created dashboard, stamped with the creation
|
|
82
|
+
* moment so several drafts stay distinguishable without user input.
|
|
83
|
+
*/
|
|
84
|
+
export declare function defaultDashboardTitle(now: Date): string;
|
|
85
|
+
export declare function createEmptyDashboard(now?: Date): Dashboard;
|
|
86
|
+
//# sourceMappingURL=dashboard-editor-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-editor-state.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/dashboard-editor-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGlH;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAEjE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,mBAAmB,CAE1E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEhE;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,oBAAoB,GAAG,mBAAmB,CA8DnH;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE/D;AAED,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAepC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAErE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAmDpG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAIvD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,IAAiB,GAAG,SAAS,CAUtE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Dashboard } from '../../types/domain';
|
|
2
|
+
import { EditableDashboardFields } from './dashboard-editor-state';
|
|
3
|
+
export type DashboardJsonParseResult = {
|
|
4
|
+
readonly ok: true;
|
|
5
|
+
readonly fields: EditableDashboardFields;
|
|
6
|
+
} | {
|
|
7
|
+
readonly ok: false;
|
|
8
|
+
readonly errors: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Serializes only the user-editable fields of a dashboard. Identity fields
|
|
12
|
+
* (`id`, `createdAt`, `updatedAt`) are deliberately excluded: they are managed
|
|
13
|
+
* by the editor, and hand-editing them would corrupt routes or history.
|
|
14
|
+
*/
|
|
15
|
+
export declare function serializeDashboard(dashboard: Dashboard): string;
|
|
16
|
+
/**
|
|
17
|
+
* Tolerant parser for the JSON tab. Validates structure, reports every
|
|
18
|
+
* problem found (not just the first), fills missing widget ids, and rejects
|
|
19
|
+
* duplicate widget ids (they are React keys and grid identities).
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseDashboardJson(input: string): DashboardJsonParseResult;
|
|
22
|
+
//# sourceMappingURL=dashboard-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-json.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/dashboard-json.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAoB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAa1F,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,GAC/D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAO/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAoC1E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Two equal columns, the template every facet presentation row uses. Shared so
|
|
3
|
+
* the doughnut centre and the top list line up with each other, and kept as a
|
|
4
|
+
* full literal class string so Tailwind's static scan emits it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PAIR_COLS = "grid grid-cols-2";
|
|
7
|
+
//# sourceMappingURL=facet-display-cols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facet-display-cols.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/facet-display-cols.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,SAAS,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural comparison with JSON's own semantics: key order carries no
|
|
3
|
+
* meaning, and a key set to `undefined` is the same as an absent key, because
|
|
4
|
+
* that is what survives a round trip through persistence.
|
|
5
|
+
*
|
|
6
|
+
* `JSON.stringify` gets the second rule right and the first wrong. The editor
|
|
7
|
+
* rebuilds widgets with spreads, so an edit that puts a key back in a different
|
|
8
|
+
* position (`{ ...widget, measure, sorts }` after `{ ...widget, sorts, measure }`)
|
|
9
|
+
* produces a different string for identical data. Comparing those strings made
|
|
10
|
+
* the editor claim unsaved work that did not exist, and greet the author with a
|
|
11
|
+
* "discard changes?" dialog on the way out of a draft they never changed.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isJsonEqual(a: unknown, b: unknown): boolean;
|
|
14
|
+
//# sourceMappingURL=is-json-equal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-json-equal.d.ts","sourceRoot":"","sources":["../../../src/dashboards/editor/is-json-equal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAiB3D"}
|