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