[Controls] Undefine selected field when data view changes (#129611)

* Undefine field when dataview changes

* Adjust functional tests

* Only set state if new data view selected

* Clean up async code based on nit
This commit is contained in:
Hannah Mudge 2022-04-06 16:53:34 -06:00 committed by GitHub
parent 9295f13dd9
commit d89343d922
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 9 deletions

View file

@ -85,10 +85,13 @@ export const OptionsListEditor = ({
selectedDataViewId={dataView?.id}
onChangeDataViewId={(dataViewId) => {
setLastUsedDataViewId?.(dataViewId);
if (dataViewId === dataView?.id) return;
onChange({ dataViewId });
get(dataViewId).then((newDataView) =>
setState((s) => ({ ...s, dataView: newDataView }))
);
setState((s) => ({ ...s, fieldName: undefined }));
get(dataViewId).then((newDataView) => {
setState((s) => ({ ...s, dataView: newDataView }));
});
}}
trigger={{
label: state.dataView?.title ?? OptionsListStrings.editor.getNoDataViewTitle(),

View file

@ -81,10 +81,13 @@ export const RangeSliderEditor = ({
selectedDataViewId={dataView?.id}
onChangeDataViewId={(dataViewId) => {
setLastUsedDataViewId?.(dataViewId);
if (dataViewId === dataView?.id) return;
onChange({ dataViewId });
get(dataViewId).then((newDataView) =>
setState((s) => ({ ...s, dataView: newDataView }))
);
setState((s) => ({ ...s, fieldName: undefined }));
get(dataViewId).then((newDataView) => {
setState((s) => ({ ...s, dataView: newDataView }));
});
}}
trigger={{
label: state.dataView?.title ?? RangeSliderStrings.editor.getNoDataViewTitle(),

View file

@ -80,10 +80,13 @@ export const TimeSliderEditor = ({
selectedDataViewId={dataView?.id}
onChangeDataViewId={(dataViewId) => {
setLastUsedDataViewId?.(dataViewId);
if (dataViewId === dataView?.id) return;
onChange({ dataViewId });
get(dataViewId).then((newDataView) =>
setState((s) => ({ ...s, dataView: newDataView }))
);
setState((s) => ({ ...s, fieldName: undefined }));
get(dataViewId).then((newDataView) => {
setState((s) => ({ ...s, dataView: newDataView }));
});
}}
trigger={{
label: state.dataView?.title ?? TimeSliderStrings.editor.getNoDataViewTitle(),

View file

@ -100,7 +100,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
const firstId = (await dashboardControls.getAllControlIds())[0];
await dashboardControls.editExistingControl(firstId);
const saveButton = await testSubjects.find('control-editor-save');
expect(await saveButton.isEnabled()).to.be(true);
await dashboardControls.controlsEditorSetDataView('animals-*');
expect(await saveButton.isEnabled()).to.be(false);
await dashboardControls.controlsEditorSetfield('animal.keyword');
await dashboardControls.controlEditorSave();

View file

@ -104,7 +104,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
it('can edit range slider control', async () => {
const firstId = (await dashboardControls.getAllControlIds())[0];
await dashboardControls.editExistingControl(firstId);
const saveButton = await testSubjects.find('control-editor-save');
expect(await saveButton.isEnabled()).to.be(true);
await dashboardControls.controlsEditorSetDataView('kibana_sample_data_flights');
expect(await saveButton.isEnabled()).to.be(false);
await dashboardControls.controlsEditorSetfield('dayOfWeek');
await dashboardControls.controlEditorSave();
await dashboardControls.rangeSliderWaitForLoading();