mirror of
https://github.com/apache/superset.git
synced 2026-04-07 18:35:15 +00:00
1275 lines
27 KiB
Python
1275 lines
27 KiB
Python
# 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
|