From f3725cb98ca761172b09785505ce65135e5f6aa5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Atte=20Kein=C3=A4nen?= <atte.keinanen@gmail.com>
Date: Wed, 17 May 2017 11:58:22 -0700
Subject: [PATCH] Show CardBuilder for dirty saved cards too

---
 .../query_builder/containers/CardBuilder.jsx  |  4 +++-
 .../query_builder/containers/QueryBuilder.jsx | 20 ++++++++++++++-----
 2 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/frontend/src/metabase/query_builder/containers/CardBuilder.jsx b/frontend/src/metabase/query_builder/containers/CardBuilder.jsx
index a0f35642cad..75667557b31 100644
--- a/frontend/src/metabase/query_builder/containers/CardBuilder.jsx
+++ b/frontend/src/metabase/query_builder/containers/CardBuilder.jsx
@@ -142,7 +142,9 @@ export default class CardBuilder extends Component {
     }
 
     componentWillMount() {
-        this.props.initializeQB(this.props.location, this.props.params);
+        if (!this.props.qbIsAlreadyInitialized) {
+            this.props.initializeQB(this.props.location, this.props.params);
+        }
     }
 
     componentDidMount() {
diff --git a/frontend/src/metabase/query_builder/containers/QueryBuilder.jsx b/frontend/src/metabase/query_builder/containers/QueryBuilder.jsx
index 8abe63ffc3a..08821235259 100644
--- a/frontend/src/metabase/query_builder/containers/QueryBuilder.jsx
+++ b/frontend/src/metabase/query_builder/containers/QueryBuilder.jsx
@@ -4,6 +4,7 @@ import { connect } from "react-redux";
 
 import cx from "classnames";
 import _ from "underscore";
+import { getIn } from "icepick";
 
 import { loadTableAndForeignKeys } from "metabase/lib/table";
 import { isPK, isFK } from "metabase/lib/types";
@@ -52,6 +53,7 @@ import * as actions from "../actions";
 import { push } from "react-router-redux";
 
 import { MetabaseApi } from "metabase/services";
+import CardBuilder from "metabase/query_builder/containers/CardBuilder";
 
 function cellIsClickable(queryResult, rowIndex, columnIndex) {
     if (!queryResult) return false;
@@ -193,11 +195,19 @@ export default class QueryBuilder extends Component {
     }
 
     render() {
-        return (
-            <div className="flex-full flex relative">
-                <LegacyQueryBuilder {...this.props} />
-            </div>
-        )
+        const isSavedCard = !!getIn(this.props.card, ["id"]);
+        const isDirtySavedCard = !!(getIn(this.props.card, ["original_card_id"]) && this.props.isDirty);
+        const redirectToCardBuilder = isSavedCard || isDirtySavedCard;
+
+        if (redirectToCardBuilder) {
+            return <CardBuilder {...this.props} qbIsAlreadyInitialized />
+        } else {
+            return (
+                <div className="flex-full flex relative">
+                    <LegacyQueryBuilder {...this.props} />
+                </div>
+            )
+        }
     }
 }
 
-- 
GitLab