diff --git a/src/EditorControls.js b/src/EditorControls.js index 6a482e3e9..04b20aae0 100644 --- a/src/EditorControls.js +++ b/src/EditorControls.js @@ -232,10 +232,14 @@ class EditorControls extends Component { isNumeric(payload.transformIndex) && payload.traceIndex < graphDiv.data.length ) { - graphDiv.data[payload.traceIndex].transforms.splice( - payload.transformIndex, - 1 - ); + if (graphDiv.data[payload.traceIndex].transforms.length === 1) { + delete graphDiv.data[payload.traceIndex].transforms; + } else { + graphDiv.data[payload.traceIndex].transforms.splice( + payload.transformIndex, + 1 + ); + } if (this.props.onUpdate) { this.props.onUpdate( graphDiv.data.slice(), diff --git a/src/components/containers/TransformAccordion.js b/src/components/containers/TransformAccordion.js index 2057ee915..a692020d2 100644 --- a/src/components/containers/TransformAccordion.js +++ b/src/components/containers/TransformAccordion.js @@ -26,7 +26,15 @@ class TransformAccordion extends Component { {label: _('Aggregate'), type: 'aggregate'}, ]; - const transformableCharts = ['scatter', 'bar', 'scattergl']; + const transformableCharts = [ + 'scatter', + 'bar', + 'scattergl', + 'histogram', + 'histogram2d', + 'box', + 'violin', + ]; if (!transformableCharts.includes(fullContainer.type)) { return ( @@ -68,7 +76,7 @@ class TransformAccordion extends Component { transformIndex={i} name={`${ transformTypes.filter(({type}) => type === tr.type)[0].label - }${transformBy[i]}`} + }${transformBy && transformBy[i]}`} canDelete={true} > {children} diff --git a/src/default_panels/GraphTransformsPanel.js b/src/default_panels/GraphTransformsPanel.js index 16072c92c..20c8fd370 100644 --- a/src/default_panels/GraphTransformsPanel.js +++ b/src/default_panels/GraphTransformsPanel.js @@ -25,7 +25,10 @@ export class Aggregations extends Component { } return aggregations - .filter(aggr => aggr.target.match(/transforms\[\d*\]\./gi) === null) + .filter( + aggr => + aggr.target && aggr.target.match(/transforms\[\d*\]\./gi) === null + ) .map(({target}, i) => (