From 3831f21894c9652d65493c4852231f7f9d18f54c Mon Sep 17 00:00:00 2001 From: Dziyana Dzeraviankina Date: Tue, 3 Mar 2020 18:56:30 +0300 Subject: [PATCH] Auto interval on date histogram is getting displayed as timestamp per 0 milliseconds when x-axis bucket is collapsed Closes #57822 --- .../vis_default_editor/public/components/agg.tsx | 9 +++++++++ .../vis_default_editor/public/components/agg_group.tsx | 4 ++++ .../public/components/sidebar/data_tab.tsx | 4 ++++ .../public/components/sidebar/sidebar.tsx | 4 ++++ .../vis_default_editor/public/default_editor.tsx | 1 + 5 files changed, 22 insertions(+) diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/agg.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/agg.tsx index 5450c29450bac..36f5038311eb7 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/agg.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/agg.tsx @@ -34,6 +34,7 @@ import { DefaultEditorAggCommonProps } from './agg_common_props'; import { AGGS_ACTION_KEYS, AggsAction } from './agg_group_state'; import { RowsOrColumnsControl } from './controls/rows_or_columns'; import { RadiusRatioOptionControl } from './controls/radius_ratio_option'; +import { TimeRange } from '../../../../../plugins/data/common'; export interface DefaultEditorAggProps extends DefaultEditorAggCommonProps { agg: IAggConfig; @@ -45,6 +46,7 @@ export interface DefaultEditorAggProps extends DefaultEditorAggCommonProps { isLastBucket: boolean; isRemovable: boolean; setAggsState: React.Dispatch; + timeRange?: TimeRange; } function DefaultEditorAgg({ @@ -67,6 +69,7 @@ function DefaultEditorAgg({ onToggleEnableAgg, removeAgg, setAggsState, + timeRange, }: DefaultEditorAggProps) { const [isEditorOpen, setIsEditorOpen] = useState((agg as any).brandNew); const [validState, setValidState] = useState(true); @@ -114,6 +117,12 @@ function DefaultEditorAgg({ } } + // Passed timeRange value is required to update agg.params.timeRange to the actual data, + // so makeLabel could return the relevant interval description. + useEffect(() => { + agg.params.timeRange = timeRange; + }, [agg.params.timeRange, timeRange]); + useEffect(() => { if (isLastBucketAgg && ['date_histogram', 'histogram'].includes(aggName)) { setAggParamValue( diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/agg_group.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/agg_group.tsx index 768a9669025e4..fd8aae602fee9 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/agg_group.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/agg_group.tsx @@ -41,6 +41,7 @@ import { getEnabledMetricAggsCount, } from './agg_group_helper'; import { aggGroupReducer, initAggsState, AGGS_ACTION_KEYS } from './agg_group_state'; +import { TimeRange } from '../../../../../plugins/data/common'; export interface DefaultEditorAggGroupProps extends DefaultEditorAggCommonProps { schemas: Schema[]; @@ -48,6 +49,7 @@ export interface DefaultEditorAggGroupProps extends DefaultEditorAggCommonProps reorderAggs: ReorderAggs; setValidity(modelName: string, value: boolean): void; setTouched(isTouched: boolean): void; + timeRange?: TimeRange; } function DefaultEditorAggGroup({ @@ -66,6 +68,7 @@ function DefaultEditorAggGroup({ reorderAggs, setTouched, setValidity, + timeRange, }: DefaultEditorAggGroupProps) { const groupNameLabel = (aggGroupNamesMap() as any)[groupName]; // e.g. buckets can have no aggs @@ -179,6 +182,7 @@ function DefaultEditorAggGroup({ onToggleEnableAgg={onToggleEnableAgg} removeAgg={removeAgg} setAggsState={setAggsState} + timeRange={timeRange} /> )} diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/data_tab.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/data_tab.tsx index efd17f02a0e09..bb4444458e375 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/data_tab.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/data_tab.tsx @@ -40,6 +40,7 @@ import { toggleEnabledAgg, } from './state'; import { AddSchema, ReorderAggs, DefaultEditorAggCommonProps } from '../agg_common_props'; +import { TimeRange } from '../../../../../../plugins/data/common'; export interface DefaultEditorDataTabProps { dispatch: React.Dispatch; @@ -51,6 +52,7 @@ export interface DefaultEditorDataTabProps { setTouched(isTouched: boolean): void; setValidity(modelName: string, value: boolean): void; setStateValue: DefaultEditorAggCommonProps['setStateParamValue']; + timeRange: TimeRange; } function DefaultEditorDataTab({ @@ -62,6 +64,7 @@ function DefaultEditorDataTab({ setTouched, setValidity, setStateValue, + timeRange, }: DefaultEditorDataTabProps) { const lastParentPipelineAgg = useMemo( () => @@ -129,6 +132,7 @@ function DefaultEditorDataTab({ groupName={AggGroupNames.Buckets} schemas={schemas.buckets} {...commonProps} + timeRange={timeRange} /> ); diff --git a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx index 425245fe91fed..c44ad8e9523bb 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/components/sidebar/sidebar.tsx @@ -31,6 +31,7 @@ import { DefaultEditorAggCommonProps } from '../agg_common_props'; import { SidebarTitle } from './sidebar_title'; import { SavedSearch } from '../../../../kibana/public/discover/np_ready/types'; import { PersistedState } from '../../../../../../plugins/visualizations/public'; +import { TimeRange } from '../../../../../../plugins/data/common'; interface DefaultEditorSideBarProps { isCollapsed: boolean; @@ -40,6 +41,7 @@ interface DefaultEditorSideBarProps { vis: Vis; isLinkedSearch: boolean; savedSearch?: SavedSearch; + timeRange: TimeRange; } function DefaultEditorSideBar({ @@ -50,6 +52,7 @@ function DefaultEditorSideBar({ vis, isLinkedSearch, savedSearch, + timeRange, }: DefaultEditorSideBarProps) { const [selectedTab, setSelectedTab] = useState(optionTabs[0].name); const [isDirty, setDirty] = useState(false); @@ -193,6 +196,7 @@ function DefaultEditorSideBar({ ); diff --git a/src/legacy/core_plugins/vis_default_editor/public/default_editor.tsx b/src/legacy/core_plugins/vis_default_editor/public/default_editor.tsx index fa3213d244e7e..763855cd1cc00 100644 --- a/src/legacy/core_plugins/vis_default_editor/public/default_editor.tsx +++ b/src/legacy/core_plugins/vis_default_editor/public/default_editor.tsx @@ -120,6 +120,7 @@ function DefaultEditor({ uiState={uiState} isLinkedSearch={linked} savedSearch={savedSearch} + timeRange={timeRange} />