Skip to content

Commit b8f4ea1

Browse files
Tim Roeskibanamachine
andauthored
Improve visualization typings (#79128)
* Improve visualization typings * Fix vis selection dialog * Fix broken getInfoMessage type Co-authored-by: Kibana Machine <[email protected]>
1 parent 2ba729f commit b8f4ea1

File tree

25 files changed

+696
-196
lines changed

25 files changed

+696
-196
lines changed

src/plugins/tile_map/public/components/tile_map_options.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ function TileMapOptions(props: TileMapOptionsProps) {
7676
<BasicOptions {...props} />
7777

7878
<SwitchOption
79-
disabled={!vis.type.visConfig.canDesaturate}
79+
disabled={!vis.type.visConfig?.canDesaturate}
8080
label={i18n.translate('tileMap.visParams.desaturateTilesLabel', {
8181
defaultMessage: 'Desaturate tiles',
8282
})}

src/plugins/tile_map/public/tile_map_type.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ export function createTileMapTypeDefinition(dependencies) {
5555
wms: uiSettings.get('visualization:tileMap:WMSdefaults'),
5656
},
5757
},
58-
requiresPartialRows: true,
5958
visualization: CoordinateMapsVisualization,
6059
responseHandler: convertToGeoJson,
6160
editorConfig: {

src/plugins/vis_default_editor/public/components/sidebar/sidebar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
*/
1919

2020
import React, { useMemo, useState, useCallback, KeyboardEventHandler, useEffect } from 'react';
21-
import { get, isEqual } from 'lodash';
21+
import { isEqual } from 'lodash';
2222
import { i18n } from '@kbn/i18n';
2323
import { keys, EuiButtonIcon, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
2424
import { EventEmitter } from 'events';
@@ -71,7 +71,7 @@ function DefaultEditorSideBar({
7171
]);
7272
const metricSchemas = (vis.type.schemas.metrics || []).map((s: Schema) => s.name);
7373
const metricAggs = useMemo(
74-
() => responseAggs.filter((agg) => metricSchemas.includes(get(agg, 'schema'))),
74+
() => responseAggs.filter((agg) => agg.schema && metricSchemas.includes(agg.schema)),
7575
[responseAggs, metricSchemas]
7676
);
7777
const hasHistogramAgg = useMemo(() => responseAggs.some((agg) => agg.type.name === 'histogram'), [

src/plugins/vis_type_metric/public/to_ast.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const toExpressionAst = (vis: Vis, params: any) => {
3939
const esaggs = buildExpressionFunction<EsaggsExpressionFunctionDefinition>('esaggs', {
4040
index: vis.data.indexPattern!.id!,
4141
metricsAtAllLevels: vis.isHierarchical(),
42-
partialRows: vis.type.requiresPartialRows || vis.params.showPartialRows || false,
42+
partialRows: vis.params.showPartialRows || false,
4343
aggConfigs: JSON.stringify(vis.data.aggs!.aggs),
4444
includeFormatHints: false,
4545
});

src/plugins/vis_type_table/public/table_vis_controller.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,13 @@ describe('Table Vis - Controller', () => {
249249
const vis = getRangeVis({ showPartialRows: true });
250250
initController(vis);
251251

252-
expect(vis.type.hierarchicalData(vis)).toEqual(true);
252+
expect((vis.type.hierarchicalData as Function)(vis)).toEqual(true);
253253
});
254254

255255
test('passes partialRows:false to tabify based on the vis params', () => {
256256
const vis = getRangeVis({ showPartialRows: false });
257257
initController(vis);
258258

259-
expect(vis.type.hierarchicalData(vis)).toEqual(false);
259+
expect((vis.type.hierarchicalData as Function)(vis)).toEqual(false);
260260
});
261261
});

src/plugins/vis_type_table/public/table_vis_type.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { CoreSetup, PluginInitializerContext } from 'kibana/public';
2020
import { i18n } from '@kbn/i18n';
2121
import { AggGroupNames } from '../../data/public';
2222
import { Schemas } from '../../vis_default_editor/public';
23-
import { BaseVisTypeOptions, Vis } from '../../visualizations/public';
23+
import { BaseVisTypeOptions } from '../../visualizations/public';
2424
import { tableVisResponseHandler } from './table_vis_response_handler';
2525
// @ts-ignore
2626
import tableVisTemplate from './table_vis.html';
@@ -99,7 +99,7 @@ export function getTableVisTypeDefinition(
9999
]),
100100
},
101101
responseHandler: tableVisResponseHandler,
102-
hierarchicalData: (vis: Vis) => {
102+
hierarchicalData: (vis) => {
103103
return Boolean(vis.params.showPartialRows || vis.params.showMetricsAtAllLevels);
104104
},
105105
};

src/plugins/vis_type_table/public/vis_controller.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ export function getTableVisualizationControllerClass(
103103
this.$scope = this.$rootScope.$new();
104104
this.$scope.uiState = this.vis.getUiState();
105105
updateScope();
106-
this.el.find('div').append(this.$compile(this.vis.type!.visConfig.template)(this.$scope));
106+
this.el
107+
.find('div')
108+
.append(this.$compile(this.vis.type.visConfig?.template ?? '')(this.$scope));
107109
this.$scope.$apply();
108110
} else {
109111
updateScope();

src/plugins/vis_type_tagcloud/public/to_ast.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export const toExpressionAst = (vis: Vis<TagCloudVisParams>, params: BuildPipeli
3838
const esaggs = buildExpressionFunction<EsaggsExpressionFunctionDefinition>('esaggs', {
3939
index: vis.data.indexPattern!.id!,
4040
metricsAtAllLevels: vis.isHierarchical(),
41-
partialRows: vis.type.requiresPartialRows || false,
41+
partialRows: false,
4242
aggConfigs: JSON.stringify(vis.data.aggs!.aggs),
4343
includeFormatHints: false,
4444
});

src/plugins/vis_type_vega/public/vega_type.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919

2020
import { i18n } from '@kbn/i18n';
21+
import { BaseVisTypeOptions } from 'src/plugins/visualizations/public';
2122
import { DefaultEditorSize } from '../../vis_default_editor/public';
2223
import { VegaVisualizationDependencies } from './plugin';
2324
import { VegaVisEditor } from './components';
@@ -31,7 +32,9 @@ import { VIS_EVENT_TO_TRIGGER } from '../../visualizations/public';
3132

3233
import { getInfoMessage } from './components/experimental_map_vis_info';
3334

34-
export const createVegaTypeDefinition = (dependencies: VegaVisualizationDependencies) => {
35+
export const createVegaTypeDefinition = (
36+
dependencies: VegaVisualizationDependencies
37+
): BaseVisTypeOptions => {
3538
const requestHandler = createVegaRequestHandler(dependencies);
3639
const visualization = createVegaVisualization(dependencies);
3740

src/plugins/visualizations/public/components/visualization_chart.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,12 @@ class VisualizationChart extends React.Component<VisualizationChartProps> {
9090
const { vis } = this.props;
9191
const Visualization = vis.type.visualization;
9292

93+
if (!Visualization) {
94+
throw new Error(
95+
'Tried to use VisualizationChart component with a vis without visualization property.'
96+
);
97+
}
98+
9399
this.visualization = new Visualization(this.chartDiv.current, vis);
94100

95101
// We know that containerDiv.current will never be null, since we will always

0 commit comments

Comments
 (0)