Skip to content

Commit 3401851

Browse files
lunalzmruanyl
andauthored
[Explore Vis] Add toggle to show full time range on time-based axes (#10562)
--------- Signed-off-by: Luna Liu <[email protected]> Co-authored-by: Yulong Ruan <[email protected]>
1 parent 0172967 commit 3401851

28 files changed

+1434
-570
lines changed

src/plugins/explore/public/components/visualizations/area/area_vis_config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface AreaChartStyleOptions {
4343
titleOptions?: TitleOptions;
4444

4545
thresholdOptions?: ThresholdOptions;
46+
showFullTimeRange?: boolean;
4647
}
4748

4849
export type AreaChartStyle = Required<
@@ -115,6 +116,8 @@ const defaultAreaChartStyles: AreaChartStyle = {
115116
show: false,
116117
titleName: '',
117118
},
119+
120+
showFullTimeRange: false,
118121
};
119122

120123
export const createAreaConfig = (): VisualizationType<'area'> => ({

src/plugins/explore/public/components/visualizations/area/area_vis_options.test.tsx

Lines changed: 81 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -101,61 +101,76 @@ jest.mock('../style_panel/tooltip/tooltip', () => ({
101101
}));
102102

103103
jest.mock('../style_panel/axes/axes', () => ({
104-
AxesOptions: jest.fn(({ categoryAxes, valueAxes, onCategoryAxesChange, onValueAxesChange }) => (
105-
<div data-test-subj="axes-panel">
106-
<button
107-
data-test-subj="update-category-axes"
108-
onClick={() =>
109-
onCategoryAxesChange([
110-
...categoryAxes,
111-
{
112-
id: 'new-category',
113-
type: 'category' as const,
114-
position: 'bottom',
115-
show: true,
116-
labels: {
104+
AxesOptions: jest.fn(
105+
({
106+
categoryAxes,
107+
valueAxes,
108+
onCategoryAxesChange,
109+
onValueAxesChange,
110+
onShowFullTimeRangeChange,
111+
showFullTimeRange,
112+
}) => (
113+
<div data-test-subj="axes-panel">
114+
<button
115+
data-test-subj="update-category-axes"
116+
onClick={() =>
117+
onCategoryAxesChange([
118+
...categoryAxes,
119+
{
120+
id: 'new-category',
121+
type: 'category' as const,
122+
position: 'bottom',
117123
show: true,
118-
filter: true,
119-
rotate: 0,
120-
truncate: 100,
124+
labels: {
125+
show: true,
126+
filter: true,
127+
rotate: 0,
128+
truncate: 100,
129+
},
130+
title: {
131+
text: 'New Category',
132+
},
121133
},
122-
title: {
123-
text: 'New Category',
124-
},
125-
},
126-
])
127-
}
128-
>
129-
Update Category Axes
130-
</button>
131-
<button
132-
data-test-subj="update-value-axes"
133-
onClick={() =>
134-
onValueAxesChange([
135-
...valueAxes,
136-
{
137-
id: 'new-value',
138-
name: 'NewAxis',
139-
type: 'value' as const,
140-
position: 'left',
141-
show: true,
142-
labels: {
134+
])
135+
}
136+
>
137+
Update Category Axes
138+
</button>
139+
<button
140+
data-test-subj="update-value-axes"
141+
onClick={() =>
142+
onValueAxesChange([
143+
...valueAxes,
144+
{
145+
id: 'new-value',
146+
name: 'NewAxis',
147+
type: 'value' as const,
148+
position: 'left',
143149
show: true,
144-
rotate: 0,
145-
filter: false,
146-
truncate: 100,
147-
},
148-
title: {
149-
text: 'New Value',
150+
labels: {
151+
show: true,
152+
rotate: 0,
153+
filter: false,
154+
truncate: 100,
155+
},
156+
title: {
157+
text: 'New Value',
158+
},
150159
},
151-
},
152-
])
153-
}
154-
>
155-
Update Value Axes
156-
</button>
157-
</div>
158-
)),
160+
])
161+
}
162+
>
163+
Update Value Axes
164+
</button>
165+
<button
166+
data-test-subj="toggle-full-time-range"
167+
onClick={() => onShowFullTimeRangeChange(!showFullTimeRange)}
168+
>
169+
Toggle Full Time Range
170+
</button>
171+
</div>
172+
)
173+
),
159174
}));
160175

161176
jest.mock('../style_panel/title/title', () => ({
@@ -235,6 +250,7 @@ describe('AreaVisStyleControls', () => {
235250
show: true,
236251
titleName: '',
237252
},
253+
showFullTimeRange: false,
238254
},
239255
onStyleChange: jest.fn(),
240256
axisColumnMappings: {
@@ -304,6 +320,10 @@ describe('AreaVisStyleControls', () => {
304320
test('shows legend when FACET mapping is present', () => {
305321
const props = {
306322
...defaultProps,
323+
styleOptions: {
324+
...defaultProps.styleOptions,
325+
showFullTimeRange: false,
326+
},
307327
axisColumnMappings: {
308328
...defaultProps.axisColumnMappings,
309329
[AxisRole.FACET]: {
@@ -546,4 +566,14 @@ describe('AreaVisStyleControls', () => {
546566
});
547567
});
548568
});
569+
570+
test('updates showFullTimeRange correctly', async () => {
571+
render(<AreaVisStyleControls {...defaultProps} />);
572+
573+
await userEvent.click(screen.getByTestId('toggle-full-time-range'));
574+
575+
expect(defaultProps.onStyleChange).toHaveBeenCalledWith({
576+
showFullTimeRange: true, // Default is false, so toggling sets it to true
577+
});
578+
});
549579
});

src/plugins/explore/public/components/visualizations/area/area_vis_options.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ export const AreaVisStyleControls: React.FC<AreaVisStyleControlsProps> = ({
7979
categoricalColumns={categoricalColumns}
8080
dateColumns={dateColumns}
8181
axisColumnMappings={axisColumnMappings}
82+
showFullTimeRange={styleOptions.showFullTimeRange}
83+
onShowFullTimeRangeChange={(showFullTimeRange) =>
84+
updateStyleOption('showFullTimeRange', showFullTimeRange)
85+
}
8286
/>
8387
</EuiFlexItem>
8488

0 commit comments

Comments
 (0)