[Dashboard][Controls] Select Appropriate data view for sliders (#128957)

Select appropriate data view id for range slider and time slider
This commit is contained in:
Devon Thomson 2022-03-31 10:24:32 -04:00 committed by GitHub
parent 63ec4beb20
commit 4aeaa8d520
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 4 deletions

View file

@ -35,6 +35,8 @@ export const RangeSliderEditor = ({
initialInput,
setValidState,
setDefaultTitle,
getRelevantDataViewId,
setLastUsedDataViewId,
}: ControlEditorProps<RangeSliderEmbeddableInput>) => {
// Controls Services Context
const { dataViews } = pluginServices.getHooks();
@ -50,7 +52,8 @@ export const RangeSliderEditor = ({
if (state.fieldName) setDefaultTitle(state.fieldName);
(async () => {
const dataViewListItems = await getIdsWithTitle();
const initialId = initialInput?.dataViewId ?? (await getDefaultId());
const initialId =
initialInput?.dataViewId ?? getRelevantDataViewId?.() ?? (await getDefaultId());
let dataView: DataView | undefined;
if (initialId) {
onChange({ dataViewId: initialId });
@ -77,6 +80,7 @@ export const RangeSliderEditor = ({
dataViews={state.dataViewListItems}
selectedDataViewId={dataView?.id}
onChangeDataViewId={(dataViewId) => {
setLastUsedDataViewId?.(dataViewId);
onChange({ dataViewId });
get(dataViewId).then((newDataView) =>
setState((s) => ({ ...s, dataView: newDataView }))

View file

@ -34,6 +34,8 @@ export const TimeSliderEditor = ({
initialInput,
setValidState,
setDefaultTitle,
getRelevantDataViewId,
setLastUsedDataViewId,
}: ControlEditorProps<any>) => {
// Controls Services Context
const { dataViews } = pluginServices.getHooks();
@ -49,7 +51,8 @@ export const TimeSliderEditor = ({
if (state.fieldName) setDefaultTitle(state.fieldName);
(async () => {
const dataViewListItems = await getIdsWithTitle();
const initialId = initialInput?.dataViewId ?? (await getDefaultId());
const initialId =
initialInput?.dataViewId ?? getRelevantDataViewId?.() ?? (await getDefaultId());
let dataView: DataView | undefined;
if (initialId) {
onChange({ dataViewId: initialId });
@ -76,6 +79,7 @@ export const TimeSliderEditor = ({
dataViews={state.dataViewListItems}
selectedDataViewId={dataView?.id}
onChangeDataViewId={(dataViewId) => {
setLastUsedDataViewId?.(dataViewId);
onChange({ dataViewId });
get(dataViewId).then((newDataView) =>
setState((s) => ({ ...s, dataView: newDataView }))

View file

@ -66,7 +66,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
describe('create and edit', async () => {
it('can create a new range slider control from a blank state', async () => {
await dashboardControls.createRangeSliderControl({ fieldName: 'bytes', width: 'small' });
await dashboardControls.createRangeSliderControl({
dataViewTitle: 'logstash-*',
fieldName: 'bytes',
width: 'small',
});
expect(await dashboardControls.getControlsCount()).to.be(1);
});
@ -184,7 +188,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
});
it('disables inputs when no data available', async () => {
await dashboardControls.createRangeSliderControl({ fieldName: 'bytes', width: 'small' });
await dashboardControls.createRangeSliderControl({
dataViewTitle: 'logstash-*',
fieldName: 'bytes',
width: 'small',
});
const secondId = (await dashboardControls.getAllControlIds())[1];
expect(
await dashboardControls.rangeSliderGetLowerBoundAttribute(secondId, 'disabled')