mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[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:
parent
63ec4beb20
commit
4aeaa8d520
3 changed files with 20 additions and 4 deletions
|
@ -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 }))
|
||||||
|
|
|
@ -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 }))
|
||||||
|
|
|
@ -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')
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue