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

View file

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

View file

@ -66,7 +66,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
describe('create and edit', async () => { describe('create and edit', async () => {
it('can create a new range slider control from a blank state', 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); 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 () => { 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]; const secondId = (await dashboardControls.getAllControlIds())[1];
expect( expect(
await dashboardControls.rangeSliderGetLowerBoundAttribute(secondId, 'disabled') await dashboardControls.rangeSliderGetLowerBoundAttribute(secondId, 'disabled')