feat: Adds Line chart migration logic (#23973)
This commit is contained in:
parent
33d8078a83
commit
83b7fa92af
|
|
@ -24,11 +24,12 @@ from superset import db
|
|||
|
||||
|
||||
class VizType(str, Enum):
|
||||
TREEMAP = "treemap"
|
||||
DUAL_LINE = "dual_line"
|
||||
AREA = "area"
|
||||
DUAL_LINE = "dual_line"
|
||||
LINE = "line"
|
||||
PIVOT_TABLE = "pivot_table"
|
||||
SUNBURST = "sunburst"
|
||||
TREEMAP = "treemap"
|
||||
|
||||
|
||||
@click.group()
|
||||
|
|
@ -76,17 +77,19 @@ def migrate(viz_type: VizType, is_downgrade: bool = False) -> None:
|
|||
from superset.migrations.shared.migrate_viz.processors import (
|
||||
MigrateAreaChart,
|
||||
MigrateDualLine,
|
||||
MigrateLineChart,
|
||||
MigratePivotTable,
|
||||
MigrateSunburst,
|
||||
MigrateTreeMap,
|
||||
)
|
||||
|
||||
migrations = {
|
||||
VizType.TREEMAP: MigrateTreeMap,
|
||||
VizType.DUAL_LINE: MigrateDualLine,
|
||||
VizType.AREA: MigrateAreaChart,
|
||||
VizType.DUAL_LINE: MigrateDualLine,
|
||||
VizType.LINE: MigrateLineChart,
|
||||
VizType.PIVOT_TABLE: MigratePivotTable,
|
||||
VizType.SUNBURST: MigrateSunburst,
|
||||
VizType.TREEMAP: MigrateTreeMap,
|
||||
}
|
||||
if is_downgrade:
|
||||
migrations[viz_type].downgrade(db.session)
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@
|
|||
# under the License.
|
||||
from typing import Any
|
||||
|
||||
from superset.utils.core import as_list
|
||||
|
||||
from .base import MigrateViz
|
||||
|
||||
|
||||
|
|
@ -131,3 +133,59 @@ class MigrateSunburst(MigrateViz):
|
|||
source_viz_type = "sunburst"
|
||||
target_viz_type = "sunburst_v2"
|
||||
rename_keys = {"groupby": "columns"}
|
||||
|
||||
|
||||
class TimeseriesChart(MigrateViz):
|
||||
has_x_axis_control = True
|
||||
|
||||
def _pre_action(self) -> None:
|
||||
self.data["contributionMode"] = "row" if self.data.get("contribution") else None
|
||||
self.data["zoomable"] = self.data.get("show_brush") != "no"
|
||||
self.data["markerEnabled"] = self.data.get("show_markers") or False
|
||||
self.data["y_axis_showminmax"] = True
|
||||
|
||||
bottom_margin = self.data.get("bottom_margin")
|
||||
if self.data.get("x_axis_label") and (
|
||||
not bottom_margin or bottom_margin == "auto"
|
||||
):
|
||||
self.data["bottom_margin"] = 30
|
||||
|
||||
if (rolling_type := self.data.get("rolling_type")) and rolling_type != "None":
|
||||
self.data["rolling_type"] = rolling_type
|
||||
|
||||
if time_compare := self.data.get("time_compare"):
|
||||
self.data["time_compare"] = [
|
||||
value + " ago" for value in as_list(time_compare) if value
|
||||
]
|
||||
|
||||
comparison_type = self.data.get("comparison_type") or "values"
|
||||
self.data["comparison_type"] = (
|
||||
"difference" if comparison_type == "absolute" else comparison_type
|
||||
)
|
||||
|
||||
|
||||
class MigrateLineChart(TimeseriesChart):
|
||||
source_viz_type = "line"
|
||||
target_viz_type = "echarts_timeseries_line"
|
||||
rename_keys = {
|
||||
"x_axis_label": "x_axis_title",
|
||||
"bottom_margin": "x_axis_title_margin",
|
||||
"x_axis_format": "x_axis_time_format",
|
||||
"y_axis_label": "y_axis_title",
|
||||
"left_margin": "y_axis_title_margin",
|
||||
"y_axis_showminmax": "truncateYAxis",
|
||||
"y_log_scale": "logAxis",
|
||||
}
|
||||
|
||||
def _pre_action(self) -> None:
|
||||
super()._pre_action()
|
||||
|
||||
line_interpolation = self.data.get("line_interpolation")
|
||||
if line_interpolation == "cardinal":
|
||||
self.target_viz_type = "echarts_timeseries_smooth"
|
||||
elif line_interpolation == "step-before":
|
||||
self.target_viz_type = "echarts_timeseries_step"
|
||||
self.data["seriesType"] = "start"
|
||||
elif line_interpolation == "step-after":
|
||||
self.target_viz_type = "echarts_timeseries_step"
|
||||
self.data["seriesType"] = "end"
|
||||
|
|
|
|||
Loading…
Reference in New Issue