You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@superset.apache.org by GitBox <gi...@apache.org> on 2018/02/16 01:47:23 UTC
[GitHub] mistercrunch closed pull request #4416: [dashboard] more granular grid layout
mistercrunch closed pull request #4416: [dashboard] more granular grid layout
URL: https://github.com/apache/incubator-superset/pull/4416
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/superset/assets/javascripts/dashboard/components/GridLayout.jsx b/superset/assets/javascripts/dashboard/components/GridLayout.jsx
index 68de7686ce..b204b41594 100644
--- a/superset/assets/javascripts/dashboard/components/GridLayout.jsx
+++ b/superset/assets/javascripts/dashboard/components/GridLayout.jsx
@@ -176,8 +176,8 @@ class GridLayout extends React.Component {
layouts={{ lg: this.props.dashboard.layout }}
onResizeStop={this.onResizeStop}
onDragStop={this.onDragStop}
- cols={{ lg: 12, md: 12, sm: 10, xs: 8, xxs: 6 }}
- rowHeight={100}
+ cols={{ lg: 48, md: 48, sm: 40, xs: 32, xxs: 24 }}
+ rowHeight={10}
autoSize
margin={[20, 20]}
useCSSTransforms
diff --git a/superset/data/__init__.py b/superset/data/__init__.py
index e1d0b67558..c0a957ee1b 100644
--- a/superset/data/__init__.py
+++ b/superset/data/__init__.py
@@ -362,76 +362,86 @@ def load_world_bank_health_n_pop():
dash = Dash()
js = textwrap.dedent("""\
[
- {
- "col": 1,
- "row": 0,
- "size_x": 2,
- "size_y": 2,
- "slice_id": "1231"
- },
- {
- "col": 1,
- "row": 2,
- "size_x": 2,
- "size_y": 2,
- "slice_id": "1232"
- },
- {
- "col": 10,
- "row": 0,
- "size_x": 3,
- "size_y": 7,
- "slice_id": "1233"
- },
- {
- "col": 1,
- "row": 4,
- "size_x": 6,
- "size_y": 3,
- "slice_id": "1234"
- },
- {
- "col": 3,
- "row": 0,
- "size_x": 7,
- "size_y": 4,
- "slice_id": "1235"
- },
- {
- "col": 5,
- "row": 7,
- "size_x": 8,
- "size_y": 4,
- "slice_id": "1236"
- },
- {
- "col": 7,
- "row": 4,
- "size_x": 3,
- "size_y": 3,
- "slice_id": "1237"
- },
- {
- "col": 1,
- "row": 7,
- "size_x": 4,
- "size_y": 4,
- "slice_id": "1238"
- },
- {
- "col": 9,
- "row": 11,
- "size_x": 4,
- "size_y": 4,
- "slice_id": "1239"
- },
- {
- "col": 1,
- "row": 11,
- "size_x": 8,
- "size_y": 4,
- "slice_id": "1240"
- }
+ {
+ "slice_id": "567",
+ "size_x": 8,
+ "size_y": 8,
+ "v": 1,
+ "col": 1,
+ "row": 0
+ },
+ {
+ "slice_id": "568",
+ "size_x": 8,
+ "size_y": 8,
+ "v": 1,
+ "col": 1,
+ "row": 8
+ },
+ {
+ "slice_id": "569",
+ "size_x": 12,
+ "size_y": 28,
+ "v": 1,
+ "col": 37,
+ "row": 0
+ },
+ {
+ "slice_id": "570",
+ "size_x": 24,
+ "size_y": 12,
+ "v": 1,
+ "col": 1,
+ "row": 16
+ },
+ {
+ "slice_id": "571",
+ "size_x": 28,
+ "size_y": 16,
+ "v": 1,
+ "col": 9,
+ "row": 0
+ },
+ {
+ "slice_id": "572",
+ "size_x": 32,
+ "size_y": 16,
+ "v": 1,
+ "col": 17,
+ "row": 28
+ },
+ {
+ "slice_id": "573",
+ "size_x": 12,
+ "size_y": 12,
+ "v": 1,
+ "col": 25,
+ "row": 16
+ },
+ {
+ "slice_id": "574",
+ "size_x": 16,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 28
+ },
+ {
+ "slice_id": "575",
+ "size_x": 16,
+ "size_y": 16,
+ "v": 1,
+ "col": 33,
+ "row": 44
+ },
+ {
+ "slice_id": "576",
+ "size_x": 32,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 44
+ }
]
""")
l = json.loads(js)
@@ -738,70 +748,88 @@ def load_birth_names():
dash = Dash()
js = textwrap.dedent("""\
[
- {
- "col": 9,
- "row": 6,
- "size_x": 2,
- "size_y": 4,
- "slice_id": "1267"
- },
- {
- "col": 11,
- "row": 6,
- "size_x": 2,
- "size_y": 4,
- "slice_id": "1268"
- },
- {
- "col": 1,
- "row": 0,
- "size_x": 2,
- "size_y": 2,
- "slice_id": "1269"
- },
- {
- "col": 3,
- "row": 0,
- "size_x": 2,
- "size_y": 2,
- "slice_id": "1270"
- },
- {
- "col": 5,
- "row": 3,
- "size_x": 8,
- "size_y": 3,
- "slice_id": "1271"
- },
- {
- "col": 1,
- "row": 6,
- "size_x": 8,
- "size_y": 4,
- "slice_id": "1272"
- },
- {
- "col": 10,
- "row": 0,
- "size_x": 3,
- "size_y": 3,
- "slice_id": "1273"
- },
- {
- "col": 5,
- "row": 0,
- "size_x": 5,
- "size_y": 3,
- "slice_id": "1274"
- },
- {
- "col": 1,
- "row": 2,
- "size_x": 4,
- "size_y": 4,
- "slice_id": "1275"
- }
+ {
+ "slice_id": "578",
+ "size_x": 8,
+ "size_y": 16,
+ "v": 1,
+ "col": 33,
+ "row": 24
+ },
+ {
+ "slice_id": "579",
+ "size_x": 8,
+ "size_y": 16,
+ "v": 1,
+ "col": 41,
+ "row": 24
+ },
+ {
+ "slice_id": "580",
+ "size_x": 8,
+ "size_y": 8,
+ "v": 1,
+ "col": 1,
+ "row": 0
+ },
+ {
+ "slice_id": "581",
+ "size_x": 8,
+ "size_y": 8,
+ "v": 1,
+ "col": 9,
+ "row": 0
+ },
+ {
+ "slice_id": "582",
+ "size_x": 32,
+ "size_y": 12,
+ "v": 1,
+ "col": 17,
+ "row": 12
+ },
+ {
+ "slice_id": "583",
+ "size_x": 32,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 24
+ },
+ {
+ "slice_id": "584",
+ "size_x": 12,
+ "size_y": 12,
+ "v": 1,
+ "col": 37,
+ "row": 0
+ },
+ {
+ "slice_id": "585",
+ "size_x": 20,
+ "size_y": 12,
+ "v": 1,
+ "col": 17,
+ "row": 0
+ },
+ {
+ "slice_id": "586",
+ "size_x": 16,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 8
+ },
+ {
+ "slice_id": "587",
+ "size_x": 16,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 48
+ }
]
+
""")
l = json.loads(js)
for i, pos in enumerate(l):
@@ -884,8 +912,8 @@ def load_unicode_test_data():
if not dash:
dash = Dash()
pos = {
- "size_y": 4,
- "size_x": 4,
+ "size_y": 16,
+ "size_x": 16,
"col": 1,
"row": 1,
"slice_id": slc.id,
@@ -1178,48 +1206,54 @@ def load_misc_dashboard():
dash = Dash()
js = textwrap.dedent("""\
[
- {
- "col": 1,
- "row": 7,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "442"
- },
- {
- "col": 1,
- "row": 2,
- "size_x": 6,
- "size_y": 5,
- "slice_id": "443"
- },
- {
- "col": 7,
- "row": 2,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "444"
- },
- {
- "col": 9,
- "row": 0,
- "size_x": 4,
- "size_y": 2,
- "slice_id": "455"
- },
- {
- "col": 7,
- "row": 6,
- "size_x": 6,
- "size_y": 5,
- "slice_id": "467"
- },
- {
- "col": 1,
- "row": 0,
- "size_x": 8,
- "size_y": 2,
- "slice_id": "475"
- }
+ {
+ "slice_id": "564",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 28
+ },
+ {
+ "slice_id": "565",
+ "size_x": 24,
+ "size_y": 20,
+ "v": 1,
+ "col": 1,
+ "row": 8
+ },
+ {
+ "slice_id": "566",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 25,
+ "row": 8
+ },
+ {
+ "slice_id": "577",
+ "size_x": 16,
+ "size_y": 8,
+ "v": 1,
+ "col": 33,
+ "row": 0
+ },
+ {
+ "slice_id": "590",
+ "size_x": 24,
+ "size_y": 20,
+ "v": 1,
+ "col": 25,
+ "row": 24
+ },
+ {
+ "slice_id": "591",
+ "size_x": 32,
+ "size_y": 8,
+ "v": 1,
+ "col": 1,
+ "row": 0
+ }
]
""")
l = json.loads(js)
@@ -1634,55 +1668,62 @@ def load_deck_dash():
dash = Dash()
js = textwrap.dedent("""\
[
- {
- "col": 1,
- "row": 0,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "37"
- },
- {
- "col": 7,
- "row": 0,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "38"
- },
- {
- "col": 7,
- "row": 4,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "39"
- },
- {
- "col": 1,
- "row": 4,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "40"
- },
- {
- "col": 1,
- "row": 4,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "41"
- },
- {
- "col": 7,
- "row": 4,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "42"
- },
- {
- "col": 1,
- "row": 5,
- "size_x": 6,
- "size_y": 4,
- "slice_id": "43"
- }
+ {
+ "slice_id": "600",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 0
+ },
+ {
+ "slice_id": "601",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 25,
+ "row": 0
+ },
+ {
+ "slice_id": "602",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 25,
+ "row": 16
+ },
+ {
+ "slice_id": "603",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 16
+ },
+ {
+ "slice_id": "604",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 16
+ },
+ {
+ "slice_id": "605",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 25,
+ "row": 16
+ },
+ {
+ "slice_id": "606",
+ "size_x": 24,
+ "size_y": 16,
+ "v": 1,
+ "col": 1,
+ "row": 20
+ }
]
""")
l = json.loads(js)
diff --git a/superset/migrations/versions/e866bd2d4976_smaller_grid.py b/superset/migrations/versions/e866bd2d4976_smaller_grid.py
new file mode 100644
index 0000000000..e99c703479
--- /dev/null
+++ b/superset/migrations/versions/e866bd2d4976_smaller_grid.py
@@ -0,0 +1,73 @@
+"""smaller_grid
+Revision ID: e866bd2d4976
+Revises: 21e88bc06c02
+Create Date: 2018-02-13 08:07:40.766277
+"""
+import json
+
+from alembic import op
+import sqlalchemy as sa
+from sqlalchemy.ext.declarative import declarative_base
+from flask_appbuilder.models.mixins import AuditMixin
+
+from superset import db
+
+revision = 'e866bd2d4976'
+down_revision = '21e88bc06c02'
+
+Base = declarative_base()
+RATIO = 4
+
+class Dashboard(Base):
+ """Declarative class to do query in upgrade"""
+ __tablename__ = 'dashboards'
+ id = sa.Column(sa.Integer, primary_key=True)
+ position_json = sa.Column(sa.Text)
+ dashboard_title = sa.Column(sa.String(500))
+
+
+def upgrade():
+ bind = op.get_bind()
+ session = db.Session(bind=bind)
+
+ dashboards = session.query(Dashboard).all()
+ for i, dashboard in enumerate(dashboards):
+ positions = json.loads(dashboard.position_json or '{}')
+ for pos in positions:
+ if pos.get('v', 0) == 0:
+ pos['size_x'] = pos['size_x'] * RATIO
+ pos['size_y'] = pos['size_y'] * RATIO
+ pos['col'] = ((pos['col'] - 1) * RATIO) + 1
+ pos['row'] = pos['row'] * RATIO
+ pos['v'] = 1
+
+ dashboard.position_json = json.dumps(positions, indent=2)
+ session.merge(dashboard)
+ session.commit()
+ print('Upgraded ({}/{}): {}'.format(
+ i, len(dashboards), dashboard.dashboard_title))
+
+ session.close()
+
+
+def downgrade():
+ bind = op.get_bind()
+ session = db.Session(bind=bind)
+
+ dashboards = session.query(Dashboard).all()
+ for i, dashboard in enumerate(dashboards):
+ positions = json.loads(dashboard.position_json or '{}')
+ for pos in positions:
+ if pos.get('v', 0) == 1:
+ pos['size_x'] = pos['size_x'] / 4
+ pos['size_y'] = pos['size_y'] / 4
+ pos['col'] = ((pos['col'] - 1) / 4) + 1
+ pos['row'] = pos['row'] / 4
+ pos['v'] = 0
+
+ dashboard.position_json = json.dumps(positions, indent=2)
+ session.merge(dashboard)
+ session.commit()
+ print('Downgraded ({}/{}): {}'.format(
+ i, len(dashboards), dashboard.dashboard_title))
+ pass
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services