diff --git a/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx b/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx index 7d736a34ddfdc4414d07fa767d9d31542ace0caa..dc5fffbe361e03876949ebf23be71b9138f7d7f2 100644 --- a/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx +++ b/frontend/src/metabase/admin/datamodel/components/FieldRemapping.jsx @@ -280,7 +280,7 @@ export default class FieldRemapping extends React.Component { dimensions: [], fks: this.getForeignKeys(), }} - tableMetadata={table} + table={table} onFieldChange={this.onForeignKeyFieldChange} hideSectionHeader /> diff --git a/frontend/src/metabase/modes/components/actions/PivotByAction.jsx b/frontend/src/metabase/modes/components/actions/PivotByAction.jsx index 3916a206742668eedf6cc009b06b5266ba691456..2f01016402006c9070fba27f87d102d960cdbc5c 100644 --- a/frontend/src/metabase/modes/components/actions/PivotByAction.jsx +++ b/frontend/src/metabase/modes/components/actions/PivotByAction.jsx @@ -62,7 +62,6 @@ export default (name: string, icon: string, fieldFilter: FieldFilter) => ({ breakoutOptions={breakoutOptions} onCommitBreakout={breakout => { const nextCard = question.pivot([breakout], dimensions).card(); - if (nextCard) { onChangeCardAndRun({ nextCard }); } diff --git a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx index a834d1e479a24d6ad8d2e843d84811ac4eeb8129..f1953b94c762b7ee45fcfa3a0fffa2bd12e332c2 100644 --- a/frontend/src/metabase/query_builder/components/AggregationPopover.jsx +++ b/frontend/src/metabase/query_builder/components/AggregationPopover.jsx @@ -348,7 +348,7 @@ export default class AggregationPopover extends Component { <FieldList className={"text-green"} maxHeight={this.props.maxHeight - (this.state.headerHeight || 0)} - tableMetadata={tableMetadata} + table={tableMetadata} field={fieldId} fieldOptions={query.aggregationFieldOptions(agg)} customFieldOptions={customFields} diff --git a/frontend/src/metabase/query_builder/components/BreakoutPopover.jsx b/frontend/src/metabase/query_builder/components/BreakoutPopover.jsx index 341ad3133856cf68151f166bb6955e8311089096..11ebc48250a1f279e499e56a19c32b19a323f860 100644 --- a/frontend/src/metabase/query_builder/components/BreakoutPopover.jsx +++ b/frontend/src/metabase/query_builder/components/BreakoutPopover.jsx @@ -26,22 +26,29 @@ const BreakoutPopover = ({ onClose, maxHeight, alwaysExpanded, -}: Props) => ( - <FieldList - className="text-green" - maxHeight={maxHeight} - field={breakout} - fieldOptions={breakoutOptions || query.breakoutOptions()} - onFieldChange={field => { - onCommitBreakout(field); - if (onClose) { - onClose(); - } - }} - tableMetadata={query.tableMetadata()} - enableSubDimensions - alwaysExpanded={alwaysExpanded} - /> -); +}: Props) => { + const table = query.table(); + // FieldList requires table + if (!table) { + return null; + } + return ( + <FieldList + className="text-green" + maxHeight={maxHeight} + field={breakout} + fieldOptions={breakoutOptions || query.breakoutOptions()} + onFieldChange={field => { + onCommitBreakout(field); + if (onClose) { + onClose(); + } + }} + table={table} + enableSubDimensions + alwaysExpanded={alwaysExpanded} + /> + ); +}; export default BreakoutPopover; diff --git a/frontend/src/metabase/query_builder/components/BreakoutWidget.jsx b/frontend/src/metabase/query_builder/components/BreakoutWidget.jsx index 647ccabf2f6f9ce96d0624092620e5e0cab93f66..5055b3aa4a41d49a35f942bebc82d4099b9506ca 100644 --- a/frontend/src/metabase/query_builder/components/BreakoutWidget.jsx +++ b/frontend/src/metabase/query_builder/components/BreakoutWidget.jsx @@ -58,7 +58,7 @@ export default class BreakoutWidget extends Component { > <FieldList className={"text-green"} - tableMetadata={this.props.tableMetadata} + table={this.props.tableMetadata} field={this.props.field} fieldOptions={this.props.fieldOptions} customFieldOptions={this.props.customFieldOptions} diff --git a/frontend/src/metabase/query_builder/components/FieldList.jsx b/frontend/src/metabase/query_builder/components/FieldList.jsx index 325c4bf5e05271debb44f51f73f5c5621d6b4658..4fccc60588a56d4cec9882cecb8f5eaec5fa9660 100644 --- a/frontend/src/metabase/query_builder/components/FieldList.jsx +++ b/frontend/src/metabase/query_builder/components/FieldList.jsx @@ -35,7 +35,7 @@ type Props = { // HACK: for segments onFilterChange?: (filter: any) => void, - tableMetadata: Table, + table: Table, alwaysExpanded?: boolean, enableSubDimensions?: boolean, @@ -61,13 +61,8 @@ export default class FieldList extends Component { } componentWillReceiveProps(newProps) { - let { - tableMetadata, - fieldOptions, - segmentOptions, - hideSectionHeader, - } = newProps; - let tableName = tableMetadata.display_name; + let { table, fieldOptions, segmentOptions, hideSectionHeader } = newProps; + let tableName = table.display_name; let specialOptions = []; if (segmentOptions) { @@ -110,11 +105,7 @@ export default class FieldList extends Component { }; renderItemExtra = item => { - const { - field, - enableSubDimensions, - tableMetadata: { metadata }, - } = this.props; + const { field, enableSubDimensions, table: { metadata } } = this.props; return ( <div className="Field-extra flex align-center"> @@ -167,7 +158,7 @@ export default class FieldList extends Component { }; renderSubDimensionTrigger(dimension) { - const { field, tableMetadata: { metadata } } = this.props; + const { field, table: { metadata } } = this.props; const subDimension = dimension.isSameBaseDimension(field) ? Dimension.parseMBQL(field, metadata) : dimension.defaultDimension(); @@ -181,16 +172,11 @@ export default class FieldList extends Component { } renderSegmentTooltip(segment) { - let { tableMetadata } = this.props; + let { table } = this.props; return ( <div className="p1"> <Tooltip - tooltip={ - <QueryDefinitionTooltip - object={segment} - tableMetadata={tableMetadata} - /> - } + tooltip={<QueryDefinitionTooltip object={segment} table={table} />} > <span className="QuestionTooltipTarget" /> </Tooltip> diff --git a/frontend/src/metabase/query_builder/components/FieldWidget.jsx b/frontend/src/metabase/query_builder/components/FieldWidget.jsx index f724c3795ce1474f80a13aeb775e2965b7be0580..8392c9e0fdb9d5686f7ef2467a34dd89ee63dc93 100644 --- a/frontend/src/metabase/query_builder/components/FieldWidget.jsx +++ b/frontend/src/metabase/query_builder/components/FieldWidget.jsx @@ -56,7 +56,7 @@ export default class FieldWidget extends Component { <Popover ref="popover" className="FieldPopover" onClose={this.toggle}> <FieldList className={"text-" + this.props.color} - tableMetadata={this.props.tableMetadata} + table={this.props.tableMetadata} field={this.props.field} fieldOptions={this.props.fieldOptions} customFieldOptions={this.props.customFieldOptions} diff --git a/frontend/src/metabase/query_builder/components/filters/FilterPopover.jsx b/frontend/src/metabase/query_builder/components/filters/FilterPopover.jsx index 8b0fa84cc486a8a18e653ecd421a52d8ab59eb37..43f3466e563d3fa1fe2d6a0924d2bc33b62003f2 100644 --- a/frontend/src/metabase/query_builder/components/filters/FilterPopover.jsx +++ b/frontend/src/metabase/query_builder/components/filters/FilterPopover.jsx @@ -319,7 +319,7 @@ export default class FilterPopover extends Component { field={fieldRef} fieldOptions={query.filterFieldOptions(filter)} segmentOptions={query.filterSegmentOptions(filter)} - tableMetadata={query.table()} + table={query.table()} onFieldChange={this.setField} onFilterChange={this.commitFilter} /> diff --git a/frontend/test/metabase/modes/components/actions/PivotByAction.unit.spec.js b/frontend/test/metabase/modes/components/actions/PivotByAction.unit.spec.js index 6617ceed2e18e18eb794bcb3bac0e2414b274f45..598c042db6bbecaac9d05f6b0f8abffb316a939f 100644 --- a/frontend/test/metabase/modes/components/actions/PivotByAction.unit.spec.js +++ b/frontend/test/metabase/modes/components/actions/PivotByAction.unit.spec.js @@ -2,12 +2,7 @@ import React from "react"; -import { - question, - questionNoFields, - ORDERS_TABLE_ID, - ORDERS_CREATED_DATE_FIELD_ID, -} from "__support__/sample_dataset_fixture"; +import { question } from "__support__/sample_dataset_fixture"; import { mount } from "enzyme"; import { click } from "__support__/enzyme_utils"; diff --git a/frontend/test/metabase/query_builder/components/FieldList.e2e.spec.js b/frontend/test/metabase/query_builder/components/FieldList.e2e.spec.js index d36cf498f30b06a4512efae5374278301410f080..70aa5db39ec5fbdb93949700bbfbaeaa71744ee8 100644 --- a/frontend/test/metabase/query_builder/components/FieldList.e2e.spec.js +++ b/frontend/test/metabase/query_builder/components/FieldList.e2e.spec.js @@ -32,7 +32,7 @@ import Filter from "metabase/query_builder/components/Filter"; const getFieldList = (query, fieldOptions, segmentOptions) => ( <FieldList - tableMetadata={query.tableMetadata()} + table={query.table()} fieldOptions={fieldOptions} segmentOptions={segmentOptions} customFieldOptions={query.expressions()}