Skip to content

Commit 98073f1

Browse files
anhe-odoorrahir
authored andcommitted
[REF] side_panel: add generic chart side panel props type and object
Task Description As there are a lot of similar props definition in all the charts config and design side panels, this commit introduce a generic props and a general props object. closes #6773 Task: 0 Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
1 parent 17a8b14 commit 98073f1

File tree

26 files changed

+159
-371
lines changed

26 files changed

+159
-371
lines changed

src/components/side_panel/chart/building_blocks/general_design/general_design_editor.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,21 @@
11
import { CHART_TITLE_FONT_SIZE } from "@odoo/o-spreadsheet-engine/constants";
22
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
33
import { Component, useState } from "@odoo/owl";
4-
import { ChartDefinition, Color, DispatchResult, TitleDesign, UID } from "../../../../../types";
4+
import { ChartDefinition, Color, TitleDesign } from "../../../../../types";
55
import { SidePanelCollapsible } from "../../../components/collapsible/side_panel_collapsible";
66
import { RadioSelection } from "../../../components/radio_selection/radio_selection";
77
import { RoundColorPicker } from "../../../components/round_color_picker/round_color_picker";
88
import { Section } from "../../../components/section/section";
9+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
910
import { ChartTitle } from "../chart_title/chart_title";
1011

1112
interface GeneralDesignEditorState {
1213
activeTool: string;
1314
}
1415

15-
interface Props {
16-
chartId: UID;
17-
definition: ChartDefinition;
18-
updateChart: (chartId: UID, definition: Partial<ChartDefinition>) => DispatchResult;
19-
canUpdateChart: (chartId: UID, definition: Partial<ChartDefinition>) => DispatchResult;
16+
interface Props extends ChartSidePanelProps<ChartDefinition> {
2017
defaultChartTitleFontSize?: number;
18+
slots?: object;
2119
}
2220

2321
export class GeneralDesignEditor extends Component<Props, SpreadsheetChildEnv> {
@@ -30,10 +28,7 @@ export class GeneralDesignEditor extends Component<Props, SpreadsheetChildEnv> {
3028
RadioSelection,
3129
};
3230
static props = {
33-
chartId: String,
34-
definition: Object,
35-
updateChart: Function,
36-
canUpdateChart: Function,
31+
...ChartSidePanelPropsObject,
3732
defaultChartTitleFontSize: { type: Number, optional: true },
3833
slots: { type: Object, optional: true },
3934
};

src/components/side_panel/chart/building_blocks/generic_side_panel/config_panel.ts

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,23 @@ import {
2222
CommandResult,
2323
CustomizedDataSet,
2424
DispatchResult,
25-
UID,
2625
Zone,
2726
} from "../../../../../types";
2827
import { Checkbox } from "../../../components/checkbox/checkbox";
2928
import { Section } from "../../../components/section/section";
29+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
3030
import { ChartDataSeries } from "../data_series/data_series";
3131
import { ChartErrorSection } from "../error_section/error_section";
3232
import { ChartLabelRange } from "../label_range/label_range";
3333

34-
interface Props {
35-
chartId: UID;
36-
definition: ChartWithDataSetDefinition;
37-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
38-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
39-
}
40-
4134
interface ChartPanelState {
4235
datasetDispatchResult?: DispatchResult;
4336
labelsDispatchResult?: DispatchResult;
4437
}
4538

46-
export class GenericChartConfigPanel<P extends Props = Props> extends Component<
47-
P,
48-
SpreadsheetChildEnv
49-
> {
39+
export class GenericChartConfigPanel<
40+
P extends ChartSidePanelProps<ChartWithDataSetDefinition> = ChartSidePanelProps<ChartWithDataSetDefinition>
41+
> extends Component<P, SpreadsheetChildEnv> {
5042
static template = "o-spreadsheet-GenericChartConfigPanel";
5143
static components = {
5244
ChartDataSeries,
@@ -55,12 +47,7 @@ export class GenericChartConfigPanel<P extends Props = Props> extends Component<
5547
Checkbox,
5648
ChartErrorSection,
5749
};
58-
static props = {
59-
chartId: String,
60-
definition: Object,
61-
updateChart: Function,
62-
canUpdateChart: Function,
63-
};
50+
static props = ChartSidePanelPropsObject;
6451

6552
protected state: ChartPanelState = useState({
6653
datasetDispatchResult: undefined,

src/components/side_panel/chart/building_blocks/humanize_numbers/humanize_numbers.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,19 @@ import { _t } from "@odoo/o-spreadsheet-engine";
22
import { formatLargeNumber, formatValue } from "@odoo/o-spreadsheet-engine/helpers/format/format";
33
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
44
import { Component } from "@odoo/owl";
5-
import { ChartWithDataSetDefinition, DispatchResult, UID } from "../../../../../types";
5+
import { ChartWithDataSetDefinition } from "../../../../../types";
66
import { Checkbox } from "../../../components/checkbox/checkbox";
7+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
78

8-
interface Props {
9-
chartId: UID;
10-
definition: ChartWithDataSetDefinition;
11-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
12-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
13-
}
14-
15-
export class ChartHumanizeNumbers extends Component<Props, SpreadsheetChildEnv> {
9+
export class ChartHumanizeNumbers extends Component<
10+
ChartSidePanelProps<ChartWithDataSetDefinition>,
11+
SpreadsheetChildEnv
12+
> {
1613
static template = "o-spreadsheet-ChartHumanizeNumbers";
1714
static components = {
1815
Checkbox,
1916
};
20-
static props = {
21-
chartId: String,
22-
definition: Object,
23-
updateChart: Function,
24-
canUpdateChart: Function,
25-
};
17+
static props = ChartSidePanelPropsObject;
2618

2719
get title() {
2820
const locale = this.env.model.getters.getLocale();

src/components/side_panel/chart/building_blocks/legend/legend.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,18 @@
11
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
22
import { Component } from "@odoo/owl";
3-
import { ChartWithDataSetDefinition, DispatchResult, UID } from "../../../../../types";
3+
import { ChartWithDataSetDefinition } from "../../../../../types";
44
import { Section } from "../../../components/section/section";
5+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
56

6-
interface Props {
7-
chartId: UID;
8-
definition: ChartWithDataSetDefinition;
9-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
10-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
11-
}
12-
13-
export class ChartLegend extends Component<Props, SpreadsheetChildEnv> {
7+
export class ChartLegend extends Component<
8+
ChartSidePanelProps<ChartWithDataSetDefinition>,
9+
SpreadsheetChildEnv
10+
> {
1411
static template = "o-spreadsheet-ChartLegend";
1512
static components = {
1613
Section,
1714
};
18-
static props = {
19-
chartId: String,
20-
definition: Object,
21-
updateChart: Function,
22-
canUpdateChart: Function,
23-
};
15+
static props = ChartSidePanelPropsObject;
2416

2517
updateLegendPosition(ev) {
2618
this.props.updateChart(this.props.chartId, {

src/components/side_panel/chart/building_blocks/series_design/series_design_editor.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@ import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadshee
22
import { Component, useState } from "@odoo/owl";
33
import { getColorsPalette, getNthColor, toHex } from "../../../../../helpers";
44
import { isTrendLineAxis } from "../../../../../helpers/figures/charts";
5-
import { ChartWithDataSetDefinition, DispatchResult, UID } from "../../../../../types";
5+
import { ChartWithDataSetDefinition } from "../../../../../types";
66
import { SidePanelCollapsible } from "../../../components/collapsible/side_panel_collapsible";
77
import { RoundColorPicker } from "../../../components/round_color_picker/round_color_picker";
88
import { Section } from "../../../components/section/section";
9+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
910

10-
interface Props {
11-
chartId: UID;
12-
definition: ChartWithDataSetDefinition;
13-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
14-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
11+
interface Props extends ChartSidePanelProps<ChartWithDataSetDefinition> {
12+
slots?: object;
1513
}
1614

1715
export class SeriesDesignEditor extends Component<Props, SpreadsheetChildEnv> {
@@ -22,10 +20,7 @@ export class SeriesDesignEditor extends Component<Props, SpreadsheetChildEnv> {
2220
RoundColorPicker,
2321
};
2422
static props = {
25-
chartId: String,
26-
definition: Object,
27-
updateChart: Function,
28-
canUpdateChart: Function,
23+
...ChartSidePanelPropsObject,
2924
slots: { type: Object, optional: true },
3025
};
3126

src/components/side_panel/chart/building_blocks/series_design/series_with_axis_design_editor.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,18 @@ import {
77
ChartJSRuntime,
88
ChartWithDataSetDefinition,
99
Color,
10-
DispatchResult,
1110
TrendConfiguration,
12-
UID,
1311
} from "../../../../../types";
1412
import { NumberInput } from "../../../../number_input/number_input";
1513
import { Checkbox } from "../../../components/checkbox/checkbox";
1614
import { RadioSelection } from "../../../components/radio_selection/radio_selection";
1715
import { RoundColorPicker } from "../../../components/round_color_picker/round_color_picker";
1816
import { Section } from "../../../components/section/section";
17+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
1918
import { SeriesDesignEditor } from "./series_design_editor";
2019

21-
interface Props {
22-
chartId: UID;
23-
definition: ChartWithDataSetDefinition;
24-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
25-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
20+
interface Props extends ChartSidePanelProps<ChartWithDataSetDefinition> {
21+
slots?: object;
2622
}
2723

2824
export class SeriesWithAxisDesignEditor extends Component<Props, SpreadsheetChildEnv> {
@@ -36,10 +32,7 @@ export class SeriesWithAxisDesignEditor extends Component<Props, SpreadsheetChil
3632
NumberInput,
3733
};
3834
static props = {
39-
chartId: String,
40-
definition: Object,
41-
canUpdateChart: Function,
42-
updateChart: Function,
35+
...ChartSidePanelPropsObject,
4336
slots: { type: Object, optional: true },
4437
};
4538

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,16 @@
11
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
22
import { Component } from "@odoo/owl";
3-
import { ChartWithDataSetDefinition, DispatchResult, UID } from "../../../../../types";
3+
import { ChartWithDataSetDefinition } from "../../../../../types";
44
import { Checkbox } from "../../../components/checkbox/checkbox";
5+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
56

6-
interface Props {
7-
chartId: UID;
8-
definition: ChartWithDataSetDefinition;
9-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
10-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
11-
}
12-
13-
export class ChartShowDataMarkers extends Component<Props, SpreadsheetChildEnv> {
7+
export class ChartShowDataMarkers extends Component<
8+
ChartSidePanelProps<ChartWithDataSetDefinition>,
9+
SpreadsheetChildEnv
10+
> {
1411
static template = "o-spreadsheet-ChartShowDataMarkers";
1512
static components = {
1613
Checkbox,
1714
};
18-
static props = {
19-
chartId: String,
20-
definition: Object,
21-
updateChart: Function,
22-
canUpdateChart: Function,
23-
};
15+
static props = ChartSidePanelPropsObject;
2416
}
Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
22
import { Component } from "@odoo/owl";
3-
import { ChartWithDataSetDefinition, DispatchResult, UID } from "../../../../../types";
3+
import { ChartWithDataSetDefinition } from "../../../../../types";
44
import { Checkbox } from "../../../components/checkbox/checkbox";
5+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../../common";
56

6-
interface Props {
7-
chartId: UID;
8-
definition: ChartWithDataSetDefinition;
9-
updateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
10-
canUpdateChart: (chartId: UID, definition: Partial<ChartWithDataSetDefinition>) => DispatchResult;
7+
interface Props extends ChartSidePanelProps<ChartWithDataSetDefinition> {
118
defaultValue?: boolean;
129
}
1310

@@ -17,10 +14,7 @@ export class ChartShowValues extends Component<Props, SpreadsheetChildEnv> {
1714
Checkbox,
1815
};
1916
static props = {
20-
chartId: String,
21-
definition: Object,
22-
updateChart: Function,
23-
canUpdateChart: Function,
17+
...ChartSidePanelPropsObject,
2418
defaultValue: { type: Boolean, optional: true },
2519
};
2620
}

src/components/side_panel/chart/calendar_chart/calendar_chart_config_panel.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,13 @@ import {
88
import { createValidRange, isDateTime } from "../../../../helpers";
99
import { createDataSets } from "../../../../helpers/figures/charts";
1010
import { getBarChartData } from "../../../../helpers/figures/charts/runtime";
11-
import { DEFAULT_LOCALE, DispatchResult, UID } from "../../../../types";
11+
import { DEFAULT_LOCALE } from "../../../../types";
1212
import { GenericChartConfigPanel } from "../building_blocks/generic_side_panel/config_panel";
13+
import { ChartSidePanelProps } from "../common";
1314

14-
interface Props {
15-
chartId: UID;
16-
definition: CalendarChartDefinition;
17-
canUpdateChart: (chartId: UID, definition: Partial<CalendarChartDefinition>) => DispatchResult;
18-
updateChart: (chartId: UID, definition: Partial<CalendarChartDefinition>) => DispatchResult;
19-
}
20-
21-
export class CalendarChartConfigPanel extends GenericChartConfigPanel<Props> {
15+
export class CalendarChartConfigPanel extends GenericChartConfigPanel<
16+
ChartSidePanelProps<CalendarChartDefinition>
17+
> {
2218
static template = "o-spreadsheet-CalendarChartConfigPanel";
2319

2420
groupByChoices = CALENDAR_CHART_GRANULARITIES.map((value) => ({

src/components/side_panel/chart/calendar_chart/calendar_chart_design_panel.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { LegendPosition } from "@odoo/o-spreadsheet-engine/types/chart";
33
import { CalendarChartDefinition } from "@odoo/o-spreadsheet-engine/types/chart/calendar_chart";
44
import { SpreadsheetChildEnv } from "@odoo/o-spreadsheet-engine/types/spreadsheet_env";
55
import { Component } from "@odoo/owl";
6-
import { Color, DispatchResult, UID } from "../../../../types/index";
6+
import { Color } from "../../../../types/index";
77
import { SidePanelCollapsible } from "../../components/collapsible/side_panel_collapsible";
88
import { RoundColorPicker } from "../../components/round_color_picker/round_color_picker";
99
import { Section } from "../../components/section/section";
@@ -14,15 +14,12 @@ import {
1414
import { ColorScalePicker } from "../building_blocks/color_scale/color_scale_picker";
1515
import { GeneralDesignEditor } from "../building_blocks/general_design/general_design_editor";
1616
import { ChartShowValues } from "../building_blocks/show_values/show_values";
17+
import { ChartSidePanelProps, ChartSidePanelPropsObject } from "../common";
1718

18-
interface Props {
19-
chartId: UID;
20-
definition: CalendarChartDefinition;
21-
canUpdateChart: (chartId: UID, definition: Partial<CalendarChartDefinition>) => DispatchResult;
22-
updateChart: (chartId: UID, definition: Partial<CalendarChartDefinition>) => DispatchResult;
23-
}
24-
25-
export class CalendarChartDesignPanel extends Component<Props, SpreadsheetChildEnv> {
19+
export class CalendarChartDesignPanel extends Component<
20+
ChartSidePanelProps<CalendarChartDefinition>,
21+
SpreadsheetChildEnv
22+
> {
2623
static template = "o-spreadsheet-CalendarChartDesignPanel";
2724
static components = {
2825
GeneralDesignEditor,
@@ -33,12 +30,7 @@ export class CalendarChartDesignPanel extends Component<Props, SpreadsheetChildE
3330
ColorScalePicker,
3431
RoundColorPicker,
3532
};
36-
static props = {
37-
chartId: String,
38-
definition: Object,
39-
canUpdateChart: Function,
40-
updateChart: Function,
41-
};
33+
static props = ChartSidePanelPropsObject;
4234

4335
get axesList(): AxisDefinition[] {
4436
return [

0 commit comments

Comments
 (0)