diff --git a/caravel/assets/javascripts/explorev2/components/ControlPanelsContainer.jsx b/caravel/assets/javascripts/explorev2/components/ControlPanelsContainer.jsx index 5ec3f2847e9..04f25f9b2ea 100644 --- a/caravel/assets/javascripts/explorev2/components/ControlPanelsContainer.jsx +++ b/caravel/assets/javascripts/explorev2/components/ControlPanelsContainer.jsx @@ -18,12 +18,6 @@ const defaultProps = { vizType: null, }; -function getSectionsToRender(vizSections) { - const { datasourceAndVizType, sqlClause } = commonControlPanelSections; - const sectionsToRender = [datasourceAndVizType].concat(vizSections, sqlClause); - return sectionsToRender; -} - class ControlPanelsContainer extends React.Component { componentWillMount() { const { datasourceId, datasourceType } = this.props; @@ -32,22 +26,36 @@ class ControlPanelsContainer extends React.Component { } } - render() { + sectionsToRender() { const viz = visTypes[this.props.vizType]; - const sectionsToRender = getSectionsToRender(viz.controlPanelSections); + const { datasourceAndVizType, sqlClause } = commonControlPanelSections; + const sectionsToRender = [datasourceAndVizType].concat(viz.controlPanelSections, sqlClause); + return sectionsToRender; + } + + fieldOverrides() { + const viz = visTypes[this.props.vizType]; + return viz.fieldOverrides; + } + + render() { return (
- {sectionsToRender.map((section) => ( + {this.sectionsToRender().map((section) => ( {section.fieldSetRows.map((fieldSets, i) => ( - + ))} ))} diff --git a/caravel/assets/javascripts/explorev2/components/FieldSet.jsx b/caravel/assets/javascripts/explorev2/components/FieldSet.jsx index c0aefeffa65..ef6f5659b32 100644 --- a/caravel/assets/javascripts/explorev2/components/FieldSet.jsx +++ b/caravel/assets/javascripts/explorev2/components/FieldSet.jsx @@ -23,19 +23,19 @@ const defaultProps = { export default class FieldSet extends React.Component { renderCheckBoxField() { - return ; + return ; } renderTextAreaField() { - return ; + return ; } renderSelectField() { - return ; + return ; } renderTextField() { - return ; + return ; } render() { diff --git a/caravel/assets/javascripts/explorev2/components/FieldSetRow.jsx b/caravel/assets/javascripts/explorev2/components/FieldSetRow.jsx index 0da2a6bf3d2..b699b0301b5 100644 --- a/caravel/assets/javascripts/explorev2/components/FieldSetRow.jsx +++ b/caravel/assets/javascripts/explorev2/components/FieldSetRow.jsx @@ -4,14 +4,32 @@ import { fields } from '../stores/store'; const propTypes = { fieldSets: PropTypes.array.isRequired, + fieldOverrides: PropTypes.object, }; -export default function FieldSetRow({ fieldSets }) { +const defaultProps = { + fieldOverrides: {}, +}; + +function getFieldData(fs, fieldOverrides) { + let fieldData = fields[fs]; + if (fieldOverrides.hasOwnProperty(fs)) { + const overrideData = fieldOverrides[fs]; + fieldData = Object.assign({}, fieldData, overrideData); + } + return fieldData; +} + +export default function FieldSetRow({ fieldSets, fieldOverrides }) { return (
    - {fieldSets.map((fs) =>
  • )} + {fieldSets.map((fs) => { + const fieldData = getFieldData(fs, fieldOverrides); + return
  • ; + })}
); } FieldSetRow.propTypes = propTypes; +FieldSetRow.defaultProps = defaultProps; diff --git a/caravel/assets/javascripts/explorev2/stores/store.js b/caravel/assets/javascripts/explorev2/stores/store.js index ebbdb209e82..14b6fbbbe4c 100644 --- a/caravel/assets/javascripts/explorev2/stores/store.js +++ b/caravel/assets/javascripts/explorev2/stores/store.js @@ -179,7 +179,7 @@ export const visTypes = { ], }, ], - fieldSetOverrides: { + fieldOverrides: { groupby: { label: 'Series', },