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,
|
||||
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 }))
|
||||
|
|
|
@ -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 }))
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue