diff --git a/superset/assets/javascripts/explorev2/components/CheckboxField.jsx b/superset/assets/javascripts/explorev2/components/CheckboxField.jsx
index fb9ce69db97..98a3013bb0d 100644
--- a/superset/assets/javascripts/explorev2/components/CheckboxField.jsx
+++ b/superset/assets/javascripts/explorev2/components/CheckboxField.jsx
@@ -1,6 +1,5 @@
import React, { PropTypes } from 'react';
import { Checkbox } from 'react-bootstrap';
-import ControlLabelWithTooltip from './ControlLabelWithTooltip';
const propTypes = {
name: PropTypes.string.isRequired,
@@ -24,12 +23,9 @@ export default class CheckboxField extends React.Component {
render() {
return (
-
-
+ />
);
}
}
diff --git a/superset/assets/javascripts/explorev2/components/FieldSet.jsx b/superset/assets/javascripts/explorev2/components/FieldSet.jsx
index b155b6e8bd0..b2a11823aa2 100644
--- a/superset/assets/javascripts/explorev2/components/FieldSet.jsx
+++ b/superset/assets/javascripts/explorev2/components/FieldSet.jsx
@@ -3,7 +3,16 @@ import TextField from './TextField';
import CheckboxField from './CheckboxField';
import TextAreaField from './TextAreaField';
import SelectField from './SelectField';
-import { fieldTypes } from '../stores/fields';
+
+import ControlLabelWithTooltip from './ControlLabelWithTooltip';
+
+const fieldMap = {
+ TextField,
+ CheckboxField,
+ TextAreaField,
+ SelectField,
+};
+const fieldTypes = Object.keys(fieldMap);
const propTypes = {
name: PropTypes.string.isRequired,
@@ -18,68 +27,22 @@ const propTypes = {
PropTypes.string,
PropTypes.number,
PropTypes.bool,
- PropTypes.array]).isRequired,
+ PropTypes.array]),
};
const defaultProps = {
- choices: null,
- description: null,
- places: null,
- validators: null,
onChange: () => {},
};
-export default class FieldSet extends React.Component {
- renderCheckBoxField() {
- return (
- );
- }
-
- renderTextAreaField() {
- return (
- );
- }
-
- renderSelectField(selectProps) {
- return (
- );
- }
-
- renderTextField() {
- return (
- );
- }
-
+export default class FieldSet extends React.PureComponent {
render() {
- const type = this.props.type;
- const selectProps = {
- SelectCustomMultiField: { multi: true, freeForm: true },
- SelectMultipleSortableField: { multi: true, freeForm: false },
- SelectField: { multi: false, freeForm: false },
- FreeFormSelectField: { multi: false, freeForm: true },
- };
- let field;
-
- if (type === 'CheckboxField') {
- field = this.renderCheckBoxField();
- } else if (Object.keys(selectProps).includes(type)) {
- field = this.renderSelectField(selectProps[type]);
- } else if (['TextField', 'IntegerField'].includes(type)) {
- field = this.renderTextField();
- } else if (type === 'TextAreaField') {
- field = this.renderTextAreaField();
- }
-
- return field;
+ const FieldType = fieldMap[this.props.type];
+ return (
+
+
+
+
+ );
}
}
diff --git a/superset/assets/javascripts/explorev2/components/SelectField.jsx b/superset/assets/javascripts/explorev2/components/SelectField.jsx
index b3514449ee5..f9686e06bd6 100644
--- a/superset/assets/javascripts/explorev2/components/SelectField.jsx
+++ b/superset/assets/javascripts/explorev2/components/SelectField.jsx
@@ -1,6 +1,4 @@
import React, { PropTypes } from 'react';
-import ControlLabelWithTooltip from './ControlLabelWithTooltip';
-import { slugify } from '../../modules/utils';
import Select, { Creatable } from 'react-select';
@@ -87,17 +85,7 @@ export default class SelectField extends React.Component {
// Tab, comma or Enter will trigger a new option created for FreeFormSelect
const selectWrap = this.props.freeForm ?
() : ();
- if (this.props.label) {
- return (
-
-
- {selectWrap}
-
- );
- }
+
return (
{selectWrap}
diff --git a/superset/assets/javascripts/explorev2/components/TextAreaField.jsx b/superset/assets/javascripts/explorev2/components/TextAreaField.jsx
index c0fc5b2b959..bd80b13ea49 100644
--- a/superset/assets/javascripts/explorev2/components/TextAreaField.jsx
+++ b/superset/assets/javascripts/explorev2/components/TextAreaField.jsx
@@ -1,6 +1,5 @@
import React, { PropTypes } from 'react';
import { FormGroup, FormControl } from 'react-bootstrap';
-import ControlLabelWithTooltip from './ControlLabelWithTooltip';
const propTypes = {
name: PropTypes.string.isRequired,
@@ -24,7 +23,6 @@ export default class TextAreaField extends React.Component {
render() {
return (
-
-