diff --git a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx
index adf0e1e084a64..548a66297a3f9 100644
--- a/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx
+++ b/src/legacy/core_plugins/kibana/public/dashboard/dashboard_app_controller.tsx
@@ -56,9 +56,7 @@ import { capabilities } from 'ui/capabilities';
import { Subscription } from 'rxjs';
import { npStart } from 'ui/new_platform';
import { SavedObjectFinder } from 'ui/saved_objects/components/saved_object_finder';
-import { extractTimeFilter, changeTimeFilter } from '../../../../../plugins/data/public';
import { start as data } from '../../../data/public/legacy';
-import { esFilters } from '../../../../../plugins/data/public';
import {
DashboardContainer,
@@ -417,31 +415,6 @@ export class DashboardAppController {
queryFilter.setFilters(filters);
};
- $scope.onCancelApplyFilters = () => {
- $scope.appState.$newFilters = [];
- };
-
- $scope.onApplyFilters = filters => {
- if (filters.length) {
- // All filters originated from one visualization.
- const indexPatternId = filters[0].meta.index;
- const indexPattern = _.find(
- $scope.indexPatterns,
- (p: IndexPattern) => p.id === indexPatternId
- );
- if (indexPattern && indexPattern.timeFieldName) {
- const { timeRangeFilter, restOfFilters } = extractTimeFilter(
- indexPattern.timeFieldName,
- filters
- );
- queryFilter.addFilters(restOfFilters);
- if (timeRangeFilter) changeTimeFilter(timefilter, timeRangeFilter);
- }
- }
-
- $scope.appState.$newFilters = [];
- };
-
$scope.onQuerySaved = savedQuery => {
$scope.savedQuery = savedQuery;
};
@@ -514,12 +487,6 @@ export class DashboardAppController {
}
);
- $scope.$watch('appState.$newFilters', (filters: esFilters.Filter[] = []) => {
- if (filters.length === 1) {
- $scope.onApplyFilters(filters);
- }
- });
-
$scope.indexPatterns = [];
$scope.$watch('model.query', (newQuery: Query) => {
diff --git a/src/legacy/core_plugins/kibana/public/dashboard/listing/__snapshots__/dashboard_listing.test.js.snap b/src/legacy/core_plugins/kibana/public/dashboard/listing/__snapshots__/dashboard_listing.test.js.snap
index e23102a0785fc..1ed05035f5f4c 100644
--- a/src/legacy/core_plugins/kibana/public/dashboard/listing/__snapshots__/dashboard_listing.test.js.snap
+++ b/src/legacy/core_plugins/kibana/public/dashboard/listing/__snapshots__/dashboard_listing.test.js.snap
@@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`after fetch hideWriteControls 1`] = `
-
`;
exports[`after fetch initialFilter 1`] = `
-
`;
exports[`after fetch renders call to action when no dashboards exist 1`] = `
-
`;
exports[`after fetch renders table rows 1`] = `
-
`;
exports[`after fetch renders warning when listingLimit is exceeded 1`] = `
-
`;
exports[`renders empty page in before initial fetch to avoid flickering 1`] = `
-
`;
diff --git a/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.js b/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.js
index d8216361562e2..c222fcd3c928c 100644
--- a/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.js
+++ b/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.js
@@ -23,8 +23,9 @@ import { FormattedMessage } from '@kbn/i18n/react';
import { i18n } from '@kbn/i18n';
import { EuiLink, EuiButton, EuiEmptyPrompt } from '@elastic/eui';
+import { npStart } from 'ui/new_platform';
-import { TableListView } from './../../table_list_view';
+import { TableListView } from '../../../../../../../src/plugins/kibana_react/public';
export const EMPTY_FILTER = '';
@@ -58,6 +59,8 @@ export class DashboardListing extends React.Component {
tableListTitle={i18n.translate('kbn.dashboard.listing.dashboardsTitle', {
defaultMessage: 'Dashboards',
})}
+ toastNotifications={npStart.core.notifications.toasts}
+ uiSettings={npStart.core.uiSettings}
/>
);
}
diff --git a/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.test.js b/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.test.js
index 57de395525e1b..be542c60bfe7a 100644
--- a/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.test.js
+++ b/src/legacy/core_plugins/kibana/public/dashboard/listing/dashboard_listing.test.js
@@ -42,6 +42,17 @@ jest.mock(
{ virtual: true }
);
+jest.mock('ui/new_platform', () => {
+ return {
+ npStart: {
+ core: {
+ notifications: { toasts: { } },
+ uiSettings: { get: jest.fn(() => 10) },
+ },
+ },
+ };
+});
+
import React from 'react';
import { shallow } from 'enzyme';
diff --git a/src/legacy/core_plugins/kibana/public/table_list_view/index.js b/src/legacy/core_plugins/kibana/public/table_list_view/index.js
deleted file mode 100644
index ae3e5d022c725..0000000000000
--- a/src/legacy/core_plugins/kibana/public/table_list_view/index.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to Elasticsearch B.V. under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch B.V. licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-export { TableListView } from './table_list_view';
-
diff --git a/src/legacy/core_plugins/kibana/public/visualize/editor/editor.js b/src/legacy/core_plugins/kibana/public/visualize/editor/editor.js
index f501161136801..58a0075e94b99 100644
--- a/src/legacy/core_plugins/kibana/public/visualize/editor/editor.js
+++ b/src/legacy/core_plugins/kibana/public/visualize/editor/editor.js
@@ -31,7 +31,7 @@ import editorTemplate from './editor.html';
import { DashboardConstants } from '../../dashboard/dashboard_constants';
import { VisualizeConstants } from '../visualize_constants';
import { getEditBreadcrumbs, getCreateBreadcrumbs } from '../breadcrumbs';
-import { extractTimeFilter, changeTimeFilter } from '../../../../../../plugins/data/public';
+
import { addHelpMenuToAppChrome } from '../help_menu/help_menu_util';
import {
@@ -342,23 +342,6 @@ function VisEditor(
queryFilter.setFilters(filters);
};
- $scope.onCancelApplyFilters = () => {
- $scope.state.$newFilters = [];
- };
-
- $scope.onApplyFilters = filters => {
- const { timeRangeFilter, restOfFilters } = extractTimeFilter($scope.indexPattern.timeFieldName, filters);
- queryFilter.addFilters(restOfFilters);
- if (timeRangeFilter) changeTimeFilter(timefilter, timeRangeFilter);
- $scope.state.$newFilters = [];
- };
-
- $scope.$watch('state.$newFilters', (filters = []) => {
- if (filters.length === 1) {
- $scope.onApplyFilters(filters);
- }
- });
-
$scope.showSaveQuery = capabilities.visualize.saveQuery;
$scope.$watch(() => capabilities.visualize.saveQuery, (newCapability) => {
@@ -457,6 +440,12 @@ function VisEditor(
next: $scope.fetch
}));
+ subscriptions.add(subscribeWithScope($scope, timefilter.getAutoRefreshFetch$(), {
+ next: () => {
+ $scope.vis.forceReload();
+ }
+ }));
+
$scope.$on('$destroy', function () {
if ($scope._handler) {
$scope._handler.destroy();
diff --git a/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable.ts b/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable.ts
index 318686b26f6f2..60cf7c7ec1928 100644
--- a/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable.ts
+++ b/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable.ts
@@ -17,39 +17,53 @@
* under the License.
*/
-import _ from 'lodash';
-import { EmbeddedVisualizeHandler } from 'ui/visualize/loader/embedded_visualize_handler';
+import _, { forEach } from 'lodash';
+import { StaticIndexPattern } from 'ui/index_patterns';
+import { PersistedState } from 'ui/persisted_state';
import { Subscription } from 'rxjs';
import * as Rx from 'rxjs';
+import { buildPipeline } from 'ui/visualize/loader/pipeline_helpers';
+import { SavedObject } from 'ui/saved_objects/saved_object';
+import { Vis } from 'ui/vis';
+import { SearchSource } from 'ui/courier';
+import { queryGeohashBounds } from 'ui/visualize/loader/utils';
+import { getTableAggs } from 'ui/visualize/loader/pipeline_helpers/utilities';
+import { AppState } from 'ui/state_management/app_state';
+import { npStart } from 'ui/new_platform';
+import { IExpressionLoaderParams } from '../../../../expressions/public/np_ready/public/types';
+import { start as expressions } from '../../../../expressions/public/legacy';
+import { VISUALIZE_EMBEDDABLE_TYPE } from './constants';
+import { Query } from '../../../../data/public';
import {
TimeRange,
onlyDisabledFiltersChanged,
esFilters,
} from '../../../../../../plugins/data/public';
-import { Query } from '../../../../data/public';
-import { VISUALIZE_EMBEDDABLE_TYPE } from './constants';
-
import {
- AppState,
- Container,
- Embeddable,
EmbeddableInput,
EmbeddableOutput,
- PersistedState,
- StaticIndexPattern,
- VisSavedObject,
- VisualizeLoader,
- VisualizeLoaderParams,
- VisualizeUpdateParams,
-} from '../kibana_services';
+ Embeddable,
+ Container,
+ APPLY_FILTER_TRIGGER,
+} from '../../../../../../plugins/embeddable/public';
+import { dispatchRenderComplete } from '../../../../../../plugins/kibana_utils/public';
+import { mapAndFlattenFilters } from '../../../../../../plugins/data/public';
const getKeys =
(o: T): Array => Object.keys(o) as Array;
+export interface VisSavedObject extends SavedObject {
+ vis: Vis;
+ description?: string;
+ searchSource: SearchSource;
+ title: string;
+ uiStateJSON?: string;
+ destroy: () => void;
+}
+
export interface VisualizeEmbeddableConfiguration {
savedVisualization: VisSavedObject;
indexPatterns?: StaticIndexPattern[];
editUrl: string;
- loader: VisualizeLoader;
editable: boolean;
appState?: AppState;
uiState?: PersistedState;
@@ -73,24 +87,28 @@ export interface VisualizeOutput extends EmbeddableOutput {
visTypeName: string;
}
+type ExpressionLoader = InstanceType;
+
export class VisualizeEmbeddable extends Embeddable {
+ private handler?: ExpressionLoader;
private savedVisualization: VisSavedObject;
- private loader: VisualizeLoader;
private appState: AppState | undefined;
private uiState: PersistedState;
- private handler?: EmbeddedVisualizeHandler;
private timeRange?: TimeRange;
private query?: Query;
private title?: string;
private filters?: esFilters.Filter[];
private visCustomizations: VisualizeInput['vis'];
- private subscription: Subscription;
+ private subscriptions: Subscription[] = [];
+ private expression: string = '';
+ private actions: any = {};
+ private vis: Vis;
+ private domNode: any;
public readonly type = VISUALIZE_EMBEDDABLE_TYPE;
constructor(
{
savedVisualization,
- loader,
editUrl,
indexPatterns,
editable,
@@ -112,8 +130,12 @@ export class VisualizeEmbeddable extends Embeddable {
- this.handleChanges();
- });
+ this.subscriptions.push(
+ Rx.merge(this.getOutput$(), this.getInput$()).subscribe(() => {
+ this.handleChanges();
+ })
+ );
}
public getVisualizationDescription() {
return this.savedVisualization.description;
}
- public getInspectorAdapters() {
+ public getInspectorAdapters = () => {
if (!this.handler) {
return undefined;
}
- return this.handler.inspectorAdapters;
- }
+ return this.handler.inspect();
+ };
+
+ public openInspector = () => {
+ if (this.handler) {
+ return this.handler.openInspector(this.getTitle() || '');
+ }
+ };
/**
* Transfers all changes in the containerState.customization into
@@ -170,87 +202,148 @@ export class VisualizeEmbeddable extends Embeddable {
+ if (event.disabled || !eventName) {
+ return;
+ } else {
+ this.actions[eventName] = event.defaultAction;
+ }
+ });
+
+ // This is a hack to give maps visualizations access to data in the
+ // globalState, since they can no longer access it via searchSource.
+ // TODO: Remove this as a part of elastic/kibana#30593
+ this.vis.API.getGeohashBounds = () => {
+ return queryGeohashBounds(this.savedVisualization.vis, {
+ filters: this.filters,
+ query: this.query,
+ searchSource: this.savedVisualization.searchSource,
+ });
+ };
+
+ // this is a hack to make editor still work, will be removed once we clean up editor
+ this.vis.hasInspector = () => {
+ const visTypesWithoutInspector = ['markdown', 'input_control_vis', 'metrics', 'vega'];
+ if (visTypesWithoutInspector.includes(this.vis.type.name)) {
+ return false;
+ }
+ return this.getInspectorAdapters();
};
+
+ this.vis.openInspector = this.openInspector;
+
+ const div = document.createElement('div');
+ div.className = `visualize panel-content panel-content--fullWidth`;
+ domNode.appendChild(div);
+ this.domNode = div;
+
+ this.handler = new expressions.ExpressionLoader(this.domNode);
+
+ this.subscriptions.push(
+ this.handler.events$.subscribe(async event => {
+ if (this.actions[event.name]) {
+ event.data.aggConfigs = getTableAggs(this.vis);
+ const filters: esFilters.Filter[] = this.actions[event.name](event.data) || [];
+ const mappedFilters = mapAndFlattenFilters(filters);
+ const timeFieldName = this.vis.indexPattern.timeFieldName;
+
+ npStart.plugins.uiActions.executeTriggerActions(APPLY_FILTER_TRIGGER, {
+ embeddable: this,
+ filters: mappedFilters,
+ timeFieldName,
+ });
+ }
+ })
+ );
+
+ div.setAttribute('data-title', this.output.title || '');
+
if (this.savedVisualization.description) {
- dataAttrs.description = this.savedVisualization.description;
+ div.setAttribute('data-description', this.savedVisualization.description);
}
- const handlerParams: VisualizeLoaderParams = {
- appState: this.appState,
- uiState: this.uiState,
- // Append visualization to container instead of replacing its content
- append: true,
- timeRange: _.cloneDeep(this.input.timeRange),
- query: this.query,
- filters: this.filters,
- cssClass: `panel-content panel-content--fullWidth`,
- dataAttrs,
- };
+ div.setAttribute('data-test-subj', 'visualizationLoader');
+ div.setAttribute('data-shared-item', '');
+ div.setAttribute('data-rendering-count', '0');
+ div.setAttribute('data-render-complete', 'false');
+
+ this.subscriptions.push(
+ this.handler.loading$.subscribe(() => {
+ div.setAttribute('data-render-complete', 'false');
+ div.setAttribute('data-loading', '');
+ })
+ );
- this.handler = this.loader.embedVisualizationWithSavedObject(
- domNode,
- this.savedVisualization,
- handlerParams
+ this.subscriptions.push(
+ this.handler.render$.subscribe(count => {
+ div.removeAttribute('data-loading');
+ div.setAttribute('data-render-complete', 'true');
+ div.setAttribute('data-rendering-count', count.toString());
+ dispatchRenderComplete(div);
+ })
);
+
+ this.updateHandler();
}
public destroy() {
super.destroy();
- if (this.subscription) {
- this.subscription.unsubscribe();
- }
+ this.subscriptions.forEach(s => s.unsubscribe());
this.uiState.off('change', this.uiStateChangeHandler);
+ this.savedVisualization.vis.removeListener('reload', this.reload);
+ this.savedVisualization.vis.removeListener('update', this.handleVisUpdate);
this.savedVisualization.destroy();
if (this.handler) {
this.handler.destroy();
@@ -258,12 +351,44 @@ export class VisualizeEmbeddable extends Embeddable {
+ this.handleVisUpdate();
+ };
+
+ private async updateHandler() {
+ const expressionParams: IExpressionLoaderParams = {
+ searchContext: {
+ type: 'kibana_context',
+ timeRange: this.timeRange,
+ query: this.input.query,
+ filters: this.input.filters,
+ },
+ extraHandlers: {
+ vis: this.vis,
+ uiState: this.uiState,
+ },
+ };
+ this.expression = await buildPipeline(this.vis, {
+ searchSource: this.savedVisualization.searchSource,
+ timeRange: this.timeRange,
+ });
+
+ this.vis.filters = { timeRange: this.timeRange };
+
if (this.handler) {
- this.handler.reload();
+ this.handler.update(this.expression, expressionParams);
}
}
+ private handleVisUpdate = async () => {
+ if (this.appState) {
+ this.appState.vis = this.savedVisualization.vis.getState();
+ this.appState.save();
+ }
+
+ this.updateHandler();
+ };
+
private uiStateChangeHandler = () => {
this.updateInput({
...this.uiState.toJSON(),
diff --git a/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable_factory.tsx b/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable_factory.tsx
index c1ce4f67cfdb3..15ad9a33232ef 100644
--- a/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable_factory.tsx
+++ b/src/legacy/core_plugins/kibana/public/visualize/embeddable/visualize_embeddable_factory.tsx
@@ -36,7 +36,6 @@ import {
EmbeddableFactory,
EmbeddableOutput,
ErrorEmbeddable,
- getVisualizeLoader,
VisSavedObject,
} from '../kibana_services';
@@ -131,7 +130,6 @@ export class VisualizeEmbeddableFactory extends EmbeddableFactory<
const visId = savedObject.id as string;
const editUrl = visId ? addBasePath(`/app/kibana${savedVisualizations.urlFor(visId)}`) : '';
- const loader = await getVisualizeLoader();
const isLabsEnabled = config.get('visualize:enableLabs');
if (!isLabsEnabled && savedObject.vis.type.stage === 'experimental') {
@@ -143,7 +141,6 @@ export class VisualizeEmbeddableFactory extends EmbeddableFactory<
return new VisualizeEmbeddable(
{
savedVisualization: savedObject,
- loader,
indexPatterns,
editUrl,
editable: this.isEditable(),
diff --git a/src/legacy/core_plugins/kibana/public/visualize/kibana_services.ts b/src/legacy/core_plugins/kibana/public/visualize/kibana_services.ts
index 7e8435bbdc65e..5c6d06b5eaeb6 100644
--- a/src/legacy/core_plugins/kibana/public/visualize/kibana_services.ts
+++ b/src/legacy/core_plugins/kibana/public/visualize/kibana_services.ts
@@ -42,7 +42,7 @@ import { timefilter } from 'ui/timefilter';
// Saved objects
import { SavedObjectsClientProvider } from 'ui/saved_objects';
// @ts-ignore
-import { SavedObjectProvider } from 'ui/saved_objects/saved_object';
+import { SavedObject, SavedObjectProvider } from 'ui/saved_objects/saved_object';
import { SavedObjectRegistryProvider } from 'ui/saved_objects/saved_object_registry';
import { createUiStatsReporter, METRIC_TYPE } from '../../../ui_metric/public';
@@ -105,7 +105,6 @@ export { absoluteToParsedUrl } from 'ui/url/absolute_to_parsed_url';
export { KibanaParsedUrl } from 'ui/url/kibana_parsed_url';
export { migrateLegacyQuery } from 'ui/utils/migrate_legacy_query';
export { subscribeWithScope } from 'ui/utils/subscribe_with_scope';
-export { getVisualizeLoader } from 'ui/visualize/loader';
export { SavedObjectSaveModal } from 'ui/saved_objects/components/saved_object_save_modal';
export {
Container,
@@ -121,12 +120,8 @@ export { METRIC_TYPE };
export { StaticIndexPattern } from 'ui/index_patterns';
export { AppState } from 'ui/state_management/app_state';
export { VisType } from 'ui/vis';
-export { VisualizeLoader } from 'ui/visualize/loader';
-export {
- VisSavedObject,
- VisualizeLoaderParams,
- VisualizeUpdateParams,
-} from 'ui/visualize/loader/types';
// export const
export { FeatureCatalogueCategory } from 'ui/registry/feature_catalogue';
+
+export { VisSavedObject } from './embeddable/visualize_embeddable';
diff --git a/src/legacy/core_plugins/kibana/public/visualize/listing/visualize_listing_table.js b/src/legacy/core_plugins/kibana/public/visualize/listing/visualize_listing_table.js
index fbd70a0d8c0f7..efab03303aa80 100644
--- a/src/legacy/core_plugins/kibana/public/visualize/listing/visualize_listing_table.js
+++ b/src/legacy/core_plugins/kibana/public/visualize/listing/visualize_listing_table.js
@@ -21,13 +21,13 @@ import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from '@kbn/i18n/react';
import { i18n } from '@kbn/i18n';
-import { TableListView } from './../../table_list_view';
+import { TableListView } from '../../../../../../../src/plugins/kibana_react/public';
import { EuiIcon, EuiBetaBadge, EuiLink, EuiButton, EuiEmptyPrompt } from '@elastic/eui';
import { getServices } from '../kibana_services';
-const { capabilities } = getServices();
+const { capabilities, toastNotifications, uiSettings } = getServices();
class VisualizeListingTable extends Component {
constructor(props) {
@@ -57,6 +57,8 @@ class VisualizeListingTable extends Component {
tableListTitle={i18n.translate('kbn.visualize.listing.table.listTitle', {
defaultMessage: 'Visualizations',
})}
+ toastNotifications={toastNotifications}
+ uiSettings={uiSettings}
/>
);
}
diff --git a/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js b/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js
index ca798b6bf2470..560a5c93c938c 100644
--- a/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js
+++ b/src/legacy/core_plugins/tile_map/public/tile_map_visualization.js
@@ -79,6 +79,7 @@ export const createTileMapVisualization = ({ serviceSettings, $injector }) => {
return;
}
if (precisionChange) {
+ updateGeohashAgg();
this.vis.updateState();
} else {
//when we filter queries by collar
diff --git a/src/legacy/core_plugins/vis_type_timeseries/public/components/vis_editor_visualization.js b/src/legacy/core_plugins/vis_type_timeseries/public/components/vis_editor_visualization.js
index f873cf9c178f8..ae82dc41fa9bc 100644
--- a/src/legacy/core_plugins/vis_type_timeseries/public/components/vis_editor_visualization.js
+++ b/src/legacy/core_plugins/vis_type_timeseries/public/components/vis_editor_visualization.js
@@ -75,13 +75,13 @@ class VisEditorVisualizationUI extends Component {
this._handler = await embeddables.getEmbeddableFactory('visualization').createFromObject(savedObj, {
vis: {},
timeRange: timeRange,
- filters: appState.filters || [],
+ filters: appState ? appState.filters || [] : [],
});
- this._handler.render(this._visEl.current);
+ await this._handler.render(this._visEl.current);
this._subscription = this._handler.handler.data$.subscribe(data => {
- this.setPanelInterval(data.visData);
- onDataChange(data);
+ this.setPanelInterval(data.value.visData);
+ onDataChange(data.value);
});
}
diff --git a/src/legacy/ui/public/vis/editors/default/default.html b/src/legacy/ui/public/vis/editors/default/default.html
index 3e7a94c77ac42..2a759815f57f2 100644
--- a/src/legacy/ui/public/vis/editors/default/default.html
+++ b/src/legacy/ui/public/vis/editors/default/default.html
@@ -11,11 +11,6 @@
diff --git a/src/legacy/ui/public/visualize/components/visualization_chart.test.js b/src/legacy/ui/public/visualize/components/visualization_chart.test.js
index 280370cdfe995..09d24ab71097a 100644
--- a/src/legacy/ui/public/visualize/components/visualization_chart.test.js
+++ b/src/legacy/ui/public/visualize/components/visualization_chart.test.js
@@ -57,46 +57,10 @@ describe('
', () => {
expect(wrapper.text()).toBe('Test Visualization visualization, not yet accessible');
});
- it('should emit render start and render end', async () => {
- const renderStart = jest.fn();
- const renderComplete = jest.fn();
- const domNode = document.createElement('div');
- domNode.addEventListener('renderStart', renderStart);
- domNode.addEventListener('renderComplete', renderComplete);
-
- mount(
, {
- attachTo: domNode
- });
-
- jest.runAllTimers();
- await renderPromise;
- expect(renderStart).toHaveBeenCalledTimes(1);
- expect(renderComplete).toHaveBeenCalledTimes(1);
-
- });
-
it('should render visualization', async () => {
const wrapper = mount(
);
jest.runAllTimers();
await renderPromise;
expect(wrapper.find('.visChart').text()).toMatch(/markdown/);
});
-
- it('should re-render on param change', async () => {
- const renderComplete = jest.fn();
- const wrapper = mount(
);
- const domNode = wrapper.getDOMNode();
- domNode.addEventListener('renderComplete', renderComplete);
- jest.runAllTimers();
- await renderPromise;
- expect(renderComplete).toHaveBeenCalledTimes(1);
-
- vis.params.markdown = 'new text';
- wrapper.setProps({ vis });
- jest.runAllTimers();
- await renderPromise;
-
- expect(wrapper.find('.visChart').text()).toBe('new text');
- expect(renderComplete).toHaveBeenCalledTimes(2);
- });
});
diff --git a/src/legacy/ui/public/visualize/components/visualization_chart.tsx b/src/legacy/ui/public/visualize/components/visualization_chart.tsx
index 06e44a4fd6e1c..eb7f130ec1a54 100644
--- a/src/legacy/ui/public/visualize/components/visualization_chart.tsx
+++ b/src/legacy/ui/public/visualize/components/visualization_chart.tsx
@@ -19,13 +19,9 @@
import React from 'react';
import * as Rx from 'rxjs';
-import { debounceTime, filter, share, switchMap, tap } from 'rxjs/operators';
+import { debounceTime, filter, share, switchMap } from 'rxjs/operators';
import { PersistedState } from '../../persisted_state';
-import {
- dispatchRenderComplete,
- dispatchRenderStart,
-} from '../../../../../plugins/kibana_utils/public';
import { ResizeChecker } from '../../resize_checker';
import { Vis, VisualizationController } from '../../vis';
import { getUpdateStatus } from '../../vis/update_status';
@@ -59,11 +55,6 @@ class VisualizationChart extends React.Component