You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/11/09 18:16:14 UTC
(superset) branch master updated: feat: Adds Line chart migration logic (#23973)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 83b7fa92af feat: Adds Line chart migration logic (#23973)
83b7fa92af is described below
commit 83b7fa92af3994d2ac0cb296c04e5253f50a96d6
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Thu Nov 9 15:16:07 2023 -0300
feat: Adds Line chart migration logic (#23973)
---
superset/cli/viz_migrations.py | 11 ++--
.../migrations/shared/migrate_viz/processors.py | 58 ++++++++++++++++++++++
2 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/superset/cli/viz_migrations.py b/superset/cli/viz_migrations.py
index 9e69135aea..4451580d0b 100644
--- a/superset/cli/viz_migrations.py
+++ b/superset/cli/viz_migrations.py
@@ -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)
diff --git a/superset/migrations/shared/migrate_viz/processors.py b/superset/migrations/shared/migrate_viz/processors.py
index 4ff6b2a934..8627e201f6 100644
--- a/superset/migrations/shared/migrate_viz/processors.py
+++ b/superset/migrations/shared/migrate_viz/processors.py
@@ -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"