| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # pylint: disable=too-many-lines |
| |
| import textwrap |
| |
| from sqlalchemy import inspect |
| |
| from superset import db |
| from superset.connectors.sqla.models import SqlaTable |
| from superset.models.dashboard import Dashboard |
| from superset.models.slice import Slice |
| from superset.sql_parse import Table |
| from superset.utils import json |
| from superset.utils.core import DatasourceType |
| |
| from ..utils.database import get_example_database |
| from .helpers import ( |
| get_slice_json, |
| get_table_connector_registry, |
| merge_slice, |
| update_slice_ids, |
| ) |
| |
| DASH_SLUG = "supported_charts_dash" |
| |
| |
| def create_slices(tbl: SqlaTable) -> list[Slice]: |
| slice_kwargs = { |
| "datasource_id": tbl.id, |
| "datasource_type": DatasourceType.TABLE, |
| "owners": [], |
| } |
| |
| defaults = { |
| "limit": "25", |
| "time_range": "100 years ago : now", |
| "granularity_sqla": "ds", |
| "row_limit": "50000", |
| "viz_type": "echarts_timeseries_bar", |
| } |
| |
| slices = [ |
| # --------------------- |
| # TIER 1 |
| # --------------------- |
| Slice( |
| **slice_kwargs, |
| slice_name="Big Number", |
| viz_type="big_number_total", |
| params=get_slice_json( |
| defaults, |
| viz_type="big_number_total", |
| metric="sum__num", |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Big Number with Trendline", |
| viz_type="big_number", |
| params=get_slice_json( |
| defaults, |
| viz_type="big_number", |
| metric="sum__num", |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Table", |
| viz_type="table", |
| params=get_slice_json( |
| defaults, |
| viz_type="table", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Pivot Table", |
| viz_type="pivot_table_v2", |
| params=get_slice_json( |
| defaults, |
| viz_type="pivot_table_v2", |
| metrics=["sum__num"], |
| groupbyColumns=["gender"], |
| groupbyRows=["state"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Line Chart", |
| viz_type="echarts_timeseries_line", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_line", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Area Chart", |
| viz_type="echarts_area", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_area", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Bar Chart V2", |
| viz_type="echarts_timeseries_bar", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_bar", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Scatter Chart", |
| viz_type="echarts_timeseries_scatter", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_scatter", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Pie Chart", |
| viz_type="pie", |
| params=get_slice_json( |
| defaults, |
| viz_type="pie", |
| metric="sum__num", |
| groupby=["gender"], |
| adhoc_filters=[], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Bar Chart", |
| viz_type="dist_bar", |
| params=get_slice_json( |
| defaults, |
| viz_type="dist_bar", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| # --------------------- |
| # TIER 2 |
| # --------------------- |
| Slice( |
| **slice_kwargs, |
| slice_name="Box Plot Chart", |
| viz_type="box_plot", |
| params=get_slice_json( |
| defaults, |
| viz_type="box_plot", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| columns=["name"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Bubble Chart", |
| viz_type="bubble", |
| params=get_slice_json( |
| defaults, |
| viz_type="bubble", |
| size="count", |
| series="state", |
| entity="gender", |
| x={ |
| "expressionType": "SIMPLE", |
| "column": { |
| "column_name": "num_boys", |
| }, |
| "aggregate": "SUM", |
| "label": "SUM(num_boys)", |
| "optionName": "metric_353e7rjj84m_cirsi2o2s1", |
| }, |
| y={ |
| "expressionType": "SIMPLE", |
| "column": { |
| "column_name": "num_girls", |
| }, |
| "aggregate": "SUM", |
| "label": "SUM(num_girls)", |
| "optionName": "metric_n8rvsr2ysmr_cb3eybtoe5f", |
| }, |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Calendar Heatmap", |
| viz_type="cal_heatmap", |
| params=get_slice_json( |
| defaults, |
| viz_type="cal_heatmap", |
| metrics=["sum__num"], |
| time_range="2008-01-01 : 2008-02-01", |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Chord Chart", |
| viz_type="chord", |
| params=get_slice_json( |
| defaults, |
| viz_type="chord", |
| metric="sum__num", |
| groupby="gender", |
| columns="state", |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Percent Change Chart", |
| viz_type="compare", |
| params=get_slice_json( |
| defaults, |
| viz_type="compare", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Generic Chart", |
| viz_type="echarts_timeseries", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Smooth Line Chart", |
| viz_type="echarts_timeseries_smooth", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_smooth", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Step Line Chart", |
| viz_type="echarts_timeseries_step", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_step", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Funnel Chart", |
| viz_type="funnel", |
| params=get_slice_json( |
| defaults, |
| viz_type="funnel", |
| metric="sum__num", |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Gauge Chart", |
| viz_type="gauge_chart", |
| params=get_slice_json( |
| defaults, |
| viz_type="gauge_chart", |
| metric="sum__num", |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Heatmap Chart", |
| viz_type="heatmap", |
| params=get_slice_json( |
| defaults, |
| viz_type="funnel", |
| metric="sum__num", |
| all_columns_x="gender", |
| all_columns_y="state", |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Line Chart", |
| viz_type="echarts_timeseries_line", |
| params=get_slice_json( |
| defaults, |
| viz_type="echarts_timeseries_line", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Mixed Chart", |
| viz_type="mixed_timeseries", |
| params=get_slice_json( |
| defaults, |
| viz_type="mixed_timeseries", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| metrics_b=["sum__num"], |
| groupby_b=["state"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Partition Chart", |
| viz_type="partition", |
| params=get_slice_json( |
| defaults, |
| viz_type="partition", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Radar Chart", |
| viz_type="radar", |
| params=get_slice_json( |
| defaults, |
| viz_type="radar", |
| metrics=[ |
| "sum__num", |
| "count", |
| { |
| "expressionType": "SIMPLE", |
| "column": { |
| "column_name": "num_boys", |
| }, |
| "aggregate": "SUM", |
| "label": "SUM(num_boys)", |
| "optionName": "metric_353e7rjj84m_cirsi2o2s1", |
| }, |
| ], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Nightingale Chart", |
| viz_type="rose", |
| params=get_slice_json( |
| defaults, |
| viz_type="rose", |
| metrics=["sum__num"], |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Sankey Chart", |
| viz_type="sankey", |
| params=get_slice_json( |
| defaults, |
| viz_type="sankey", |
| metric="sum__num", |
| groupby=["gender", "state"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Sunburst Chart", |
| viz_type="sunburst_v2", |
| params=get_slice_json( |
| defaults, |
| viz_type="sunburst_v2", |
| metric="sum__num", |
| columns=["gender", "state"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Treemap V2 Chart", |
| viz_type="treemap_v2", |
| params=get_slice_json( |
| defaults, |
| viz_type="treemap_v2", |
| metric="sum__num", |
| groupby=["gender"], |
| ), |
| ), |
| Slice( |
| **slice_kwargs, |
| slice_name="Word Cloud Chart", |
| viz_type="word_cloud", |
| params=get_slice_json( |
| defaults, |
| viz_type="word_cloud", |
| metric="sum__num", |
| series="state", |
| ), |
| ), |
| ] |
| |
| for slc in slices: |
| merge_slice(slc) |
| |
| return slices |
| |
| |
| def load_supported_charts_dashboard() -> None: |
| """Loading a dashboard featuring supported charts""" |
| |
| database = get_example_database() |
| with database.get_sqla_engine() as engine: |
| schema = inspect(engine).default_schema_name |
| |
| tbl_name = "birth_names" |
| table_exists = database.has_table(Table(tbl_name, schema)) |
| |
| if table_exists: |
| table = get_table_connector_registry() |
| obj = ( |
| db.session.query(table) |
| .filter_by(table_name=tbl_name, schema=schema) |
| .first() |
| ) |
| create_slices(obj) |
| |
| print("Creating the dashboard") |
| |
| db.session.expunge_all() |
| dash = db.session.query(Dashboard).filter_by(slug=DASH_SLUG).first() |
| |
| if not dash: |
| dash = Dashboard() |
| |
| js = textwrap.dedent( |
| """ |
| { |
| "CHART-1": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-1" |
| ], |
| "id": "CHART-1", |
| "meta": { |
| "chartId": 1, |
| "height": 50, |
| "sliceName": "Big Number", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-2": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-1" |
| ], |
| "id": "CHART-2", |
| "meta": { |
| "chartId": 2, |
| "height": 50, |
| "sliceName": "Big Number with Trendline", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-3": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-1" |
| ], |
| "id": "CHART-3", |
| "meta":{ |
| "chartId": 3, |
| "height": 50, |
| "sliceName": "Table", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-4": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-2" |
| ], |
| "id": "CHART-4", |
| "meta": { |
| "chartId": 4, |
| "height": 50, |
| "sliceName": "Pivot Table", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-5": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-2" |
| ], |
| "id": "CHART-5", |
| "meta": { |
| "chartId": 5, |
| "height": 50, |
| "sliceName": "Line Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-6": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-2" |
| ], |
| "id": "CHART-6", |
| "meta": { |
| "chartId": 6, |
| "height": 50, |
| "sliceName": "Bar Chart V2", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-7": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-3" |
| ], |
| "id": "CHART-7", |
| "meta": { |
| "chartId": 7, |
| "height": 50, |
| "sliceName": "Area Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-8": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-3" |
| ], |
| "id": "CHART-8", |
| "meta": { |
| "chartId": 8, |
| "height": 50, |
| "sliceName": "Scatter Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-9": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-3" |
| ], |
| "id": "CHART-9", |
| "meta": { |
| "chartId": 9, |
| "height": 50, |
| "sliceName": "Pie Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-10": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-4" |
| ], |
| "id": "CHART-10", |
| "meta": { |
| "chartId": 10, |
| "height": 50, |
| "sliceName": "Bar Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-11": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1", |
| "ROW-4" |
| ], |
| "id": "CHART-11", |
| "meta": { |
| "chartId": 11, |
| "height": 50, |
| "sliceName": "% Rural", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-12": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-5" |
| ], |
| "id": "CHART-12", |
| "meta": { |
| "chartId": 12, |
| "height": 50, |
| "sliceName": "Box Plot Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-13": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-5" |
| ], |
| "id": "CHART-13", |
| "meta": { |
| "chartId": 13, |
| "height": 50, |
| "sliceName": "Bubble Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-14": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-5" |
| ], |
| "id": "CHART-14", |
| "meta": { |
| "chartId": 14, |
| "height": 50, |
| "sliceName": "Calendar Heatmap", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-15": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-6" |
| ], |
| "id": "CHART-15", |
| "meta": { |
| "chartId": 15, |
| "height": 50, |
| "sliceName": "Chord Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-16": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-6" |
| ], |
| "id": "CHART-16", |
| "meta": { |
| "chartId": 16, |
| "height": 50, |
| "sliceName": "Percent Change Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-17": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-6" |
| ], |
| "id": "CHART-17", |
| "meta": { |
| "chartId": 17, |
| "height": 50, |
| "sliceName": "Generic Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-18": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-7" |
| ], |
| "id": "CHART-18", |
| "meta": { |
| "chartId": 18, |
| "height": 50, |
| "sliceName": "Smooth Line Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-19": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-7" |
| ], |
| "id": "CHART-19", |
| "meta": { |
| "chartId": 19, |
| "height": 50, |
| "sliceName": "Step Line Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-20": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-7" |
| ], |
| "id": "CHART-20", |
| "meta": { |
| "chartId": 20, |
| "height": 50, |
| "sliceName": "Funnel Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-21": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-8" |
| ], |
| "id": "CHART-21", |
| "meta": { |
| "chartId": 21, |
| "height": 50, |
| "sliceName": "Gauge Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-22": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-8" |
| ], |
| "id": "CHART-22", |
| "meta": { |
| "chartId": 22, |
| "height": 50, |
| "sliceName": "Heatmap Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-23": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-8" |
| ], |
| "id": "CHART-23", |
| "meta": { |
| "chartId": 23, |
| "height": 50, |
| "sliceName": "Line Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-24": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-9" |
| ], |
| "id": "CHART-24", |
| "meta": { |
| "chartId": 24, |
| "height": 50, |
| "sliceName": "Mixed Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-25": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-9" |
| ], |
| "id": "CHART-25", |
| "meta": { |
| "chartId": 25, |
| "height": 50, |
| "sliceName": "Partition Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-26": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-9" |
| ], |
| "id": "CHART-26", |
| "meta": { |
| "chartId": 26, |
| "height": 50, |
| "sliceName": "Radar Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-27": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-10" |
| ], |
| "id": "CHART-27", |
| "meta": { |
| "chartId": 27, |
| "height": 50, |
| "sliceName": "Nightingale Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-28": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-10" |
| ], |
| "id": "CHART-28", |
| "meta": { |
| "chartId": 28, |
| "height": 50, |
| "sliceName": "Sankey Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-29": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-10" |
| ], |
| "id": "CHART-29", |
| "meta": { |
| "chartId": 29, |
| "height": 50, |
| "sliceName": "Sunburst Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-30": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-11" |
| ], |
| "id": "CHART-30", |
| "meta": { |
| "chartId": 30, |
| "height": 50, |
| "sliceName": "Treemap Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-31": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-11" |
| ], |
| "id": "CHART-31", |
| "meta": { |
| "chartId": 31, |
| "height": 50, |
| "sliceName": "Treemap V2 Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "CHART-32": { |
| "children": [], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2", |
| "ROW-11" |
| ], |
| "id": "CHART-32", |
| "meta": { |
| "chartId": 32, |
| "height": 50, |
| "sliceName": "Word Cloud Chart", |
| "width": 4 |
| }, |
| "type": "CHART" |
| }, |
| "GRID_ID": { |
| "children": [], |
| "id": "GRID_ID", |
| "type": "GRID" |
| }, |
| "HEADER_ID": { |
| "id": "HEADER_ID", |
| "meta": { |
| "text": "Supported Charts" |
| }, |
| "type": "HEADER" |
| }, |
| "TABS-TOP": { |
| "children": [ |
| "TAB-TOP-1", |
| "TAB-TOP-2" |
| ], |
| "id": "TABS-TOP", |
| "type": "TABS" |
| }, |
| "TAB-TOP-1": { |
| "id": "TAB_TOP-1", |
| "type": "TAB", |
| "meta": { |
| "text": "Tier 1", |
| "defaultText": "Tab title", |
| "placeholder": "Tab title" |
| }, |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP" |
| ], |
| "children": [ |
| "ROW-1", |
| "ROW-2", |
| "ROW-3", |
| "ROW-4" |
| ] |
| }, |
| "TAB-TOP-2": { |
| "id": "TAB_TOP-2", |
| "type": "TAB", |
| "meta": { |
| "text": "Tier 2", |
| "defaultText": "Tab title", |
| "placeholder": "Tab title" |
| }, |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP" |
| ], |
| "children": [ |
| "ROW-5", |
| "ROW-6", |
| "ROW-7", |
| "ROW-8", |
| "ROW-9", |
| "ROW-10", |
| "ROW-11" |
| ] |
| }, |
| "ROOT_ID": { |
| "children": [ |
| "TABS-TOP" |
| ], |
| "id": "ROOT_ID", |
| "type": "ROOT" |
| }, |
| "ROW-1": { |
| "children": [ |
| "CHART-1", |
| "CHART-2", |
| "CHART-3" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1" |
| ], |
| "id": "ROW-1", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-2": { |
| "children": [ |
| "CHART-4", |
| "CHART-5", |
| "CHART-6" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1" |
| ], |
| "id": "ROW-2", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-3": { |
| "children": [ |
| "CHART-7", |
| "CHART-8", |
| "CHART-9" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1" |
| ], |
| "id": "ROW-3", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-4": { |
| "children": [ |
| "CHART-10", |
| "CHART-11" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-1" |
| ], |
| "id": "ROW-4", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-5": { |
| "children": [ |
| "CHART-12", |
| "CHART-13", |
| "CHART-14" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-5", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-6": { |
| "children": [ |
| "CHART-15", |
| "CHART-16", |
| "CHART-17" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-6", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-7": { |
| "children": [ |
| "CHART-18", |
| "CHART-19", |
| "CHART-20" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-7", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-8": { |
| "children": [ |
| "CHART-21", |
| "CHART-22", |
| "CHART-23" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-8", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-9": { |
| "children": [ |
| "CHART-24", |
| "CHART-25", |
| "CHART-26" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-9", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-10": { |
| "children": [ |
| "CHART-27", |
| "CHART-28", |
| "CHART-29" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-10", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "ROW-11": { |
| "children": [ |
| "CHART-30", |
| "CHART-31", |
| "CHART-32" |
| ], |
| "parents": [ |
| "ROOT_ID", |
| "TABS-TOP", |
| "TAB-TOP-2" |
| ], |
| "id": "ROW-11", |
| "meta": { |
| "background": "BACKGROUND_TRANSPARENT" |
| }, |
| "type": "ROW" |
| }, |
| "DASHBOARD_VERSION_KEY": "v2" |
| } |
| """ |
| ) |
| |
| pos = json.loads(js) |
| dash.slices = update_slice_ids(pos) |
| dash.dashboard_title = "Supported Charts Dashboard" |
| dash.position_json = json.dumps(pos, indent=2) |
| dash.slug = DASH_SLUG |
| db.session.commit() |