1 line
15 KiB
Plaintext
1 line
15 KiB
Plaintext
{"version":3,"sources":["../src/PlotlyRenderers.jsx"],"names":["createPlotlyRenderers","makeRenderer","PlotlyComponent","traceOptions","layoutOptions","transpose","Renderer","pivotData","PivotData","props","rowKeys","getRowKeys","colKeys","getColKeys","traceKeys","length","push","datumKeys","fullAggName","aggregatorName","numInputs","aggregators","vals","slice","join","data","map","values","labels","datumKey","val","parseFloat","getAggregator","traceKey","value","isFinite","trace","name","type","x","y","Object","assign","titleText","hAxisTitle","rows","cols","groupByTitle","layout","title","hovermode","width","window","innerWidth","height","innerHeight","columns","Math","ceil","sqrt","grid","forEach","d","i","domain","row","floor","column","showlegend","xaxis","automargin","yaxis","plotlyOptions","plotlyConfig","onRendererUpdate","React","PureComponent","defaultProps","propTypes","PropTypes","object","func","makeScatterRenderer","text","mode","v","rowKey","colKey","barmode","orientation","stackgroup","scalegroup","hoverinfo","textinfo"],"mappings":"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","file":"PlotlyRenderers.js","sourcesContent":["import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {PivotData} from './Utilities';\r\n\r\n/* eslint-disable react/prop-types */\r\n// eslint can't see inherited propTypes!\r\n\r\nfunction makeRenderer(\r\n PlotlyComponent,\r\n traceOptions = {},\r\n layoutOptions = {},\r\n transpose = false\r\n) {\r\n class Renderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n const traceKeys = transpose ? colKeys : rowKeys;\r\n if (traceKeys.length === 0) {\r\n traceKeys.push([]);\r\n }\r\n const datumKeys = transpose ? rowKeys : colKeys;\r\n if (datumKeys.length === 0) {\r\n datumKeys.push([]);\r\n }\r\n\r\n let fullAggName = this.props.aggregatorName;\r\n const numInputs =\r\n this.props.aggregators[fullAggName]([])().numInputs || 0;\r\n if (numInputs !== 0) {\r\n fullAggName += ` of ${this.props.vals.slice(0, numInputs).join(', ')}`;\r\n }\r\n\r\n const data = traceKeys.map(traceKey => {\r\n const values = [];\r\n const labels = [];\r\n for (const datumKey of datumKeys) {\r\n const val = parseFloat(\r\n pivotData\r\n .getAggregator(\r\n transpose ? datumKey : traceKey,\r\n transpose ? traceKey : datumKey\r\n )\r\n .value()\r\n );\r\n values.push(isFinite(val) ? val : null);\r\n labels.push(datumKey.join('-') || ' ');\r\n }\r\n const trace = {name: traceKey.join('-') || fullAggName};\r\n if (traceOptions.type === 'pie') {\r\n trace.values = values;\r\n trace.labels = labels.length > 1 ? labels : [fullAggName];\r\n } else {\r\n trace.x = transpose ? values : labels;\r\n trace.y = transpose ? labels : values;\r\n }\r\n return Object.assign(trace, traceOptions);\r\n });\r\n\r\n let titleText = fullAggName;\r\n const hAxisTitle = transpose\r\n ? this.props.rows.join('-')\r\n : this.props.cols.join('-');\r\n const groupByTitle = transpose\r\n ? this.props.cols.join('-')\r\n : this.props.rows.join('-');\r\n if (hAxisTitle !== '') {\r\n titleText += ` vs ${hAxisTitle}`;\r\n }\r\n if (groupByTitle !== '') {\r\n titleText += ` by ${groupByTitle}`;\r\n }\r\n\r\n const layout = {\r\n title: titleText,\r\n hovermode: 'closest',\r\n /* eslint-disable no-magic-numbers */\r\n width: window.innerWidth / 1.5,\r\n height: window.innerHeight / 1.4 - 50,\r\n /* eslint-enable no-magic-numbers */\r\n };\r\n\r\n if (traceOptions.type === 'pie') {\r\n const columns = Math.ceil(Math.sqrt(data.length));\r\n const rows = Math.ceil(data.length / columns);\r\n layout.grid = {columns, rows};\r\n data.forEach((d, i) => {\r\n d.domain = {\r\n row: Math.floor(i / columns),\r\n column: i - columns * Math.floor(i / columns),\r\n };\r\n if (data.length > 1) {\r\n d.title = d.name;\r\n }\r\n });\r\n if (data[0].labels.length === 1) {\r\n layout.showlegend = false;\r\n }\r\n } else {\r\n layout.xaxis = {\r\n title: transpose ? fullAggName : null,\r\n automargin: true,\r\n };\r\n layout.yaxis = {\r\n title: transpose ? null : fullAggName,\r\n automargin: true,\r\n };\r\n }\r\n\r\n return (\r\n <PlotlyComponent\r\n data={data}\r\n layout={Object.assign(\r\n layout,\r\n layoutOptions,\r\n this.props.plotlyOptions\r\n )}\r\n config={this.props.plotlyConfig}\r\n onUpdate={this.props.onRendererUpdate}\r\n />\r\n );\r\n }\r\n }\r\n\r\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\r\n plotlyOptions: {},\r\n plotlyConfig: {},\r\n });\r\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\r\n plotlyOptions: PropTypes.object,\r\n plotlyConfig: PropTypes.object,\r\n onRendererUpdate: PropTypes.func,\r\n });\r\n\r\n return Renderer;\r\n}\r\n\r\nfunction makeScatterRenderer(PlotlyComponent) {\r\n class Renderer extends React.PureComponent {\r\n render() {\r\n const pivotData = new PivotData(this.props);\r\n const rowKeys = pivotData.getRowKeys();\r\n const colKeys = pivotData.getColKeys();\r\n if (rowKeys.length === 0) {\r\n rowKeys.push([]);\r\n }\r\n if (colKeys.length === 0) {\r\n colKeys.push([]);\r\n }\r\n\r\n const data = {x: [], y: [], text: [], type: 'scatter', mode: 'markers'};\r\n\r\n rowKeys.map(rowKey => {\r\n colKeys.map(colKey => {\r\n const v = pivotData.getAggregator(rowKey, colKey).value();\r\n if (v !== null) {\r\n data.x.push(colKey.join('-'));\r\n data.y.push(rowKey.join('-'));\r\n data.text.push(v);\r\n }\r\n });\r\n });\r\n\r\n const layout = {\r\n title: this.props.rows.join('-') + ' vs ' + this.props.cols.join('-'),\r\n hovermode: 'closest',\r\n /* eslint-disable no-magic-numbers */\r\n xaxis: {title: this.props.cols.join('-'), automargin: true},\r\n yaxis: {title: this.props.rows.join('-'), automargin: true},\r\n width: window.innerWidth / 1.5,\r\n height: window.innerHeight / 1.4 - 50,\r\n /* eslint-enable no-magic-numbers */\r\n };\r\n\r\n return (\r\n <PlotlyComponent\r\n data={[data]}\r\n layout={Object.assign(layout, this.props.plotlyOptions)}\r\n config={this.props.plotlyConfig}\r\n onUpdate={this.props.onRendererUpdate}\r\n />\r\n );\r\n }\r\n }\r\n\r\n Renderer.defaultProps = Object.assign({}, PivotData.defaultProps, {\r\n plotlyOptions: {},\r\n plotlyConfig: {},\r\n });\r\n Renderer.propTypes = Object.assign({}, PivotData.propTypes, {\r\n plotlyOptions: PropTypes.object,\r\n plotlyConfig: PropTypes.object,\r\n onRendererUpdate: PropTypes.func,\r\n });\r\n\r\n return Renderer;\r\n}\r\n\r\nexport default function createPlotlyRenderers(PlotlyComponent) {\r\n return {\r\n 'Grouped Column Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar'},\r\n {barmode: 'group'}\r\n ),\r\n 'Stacked Column Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar'},\r\n {barmode: 'relative'}\r\n ),\r\n 'Grouped Bar Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar', orientation: 'h'},\r\n {barmode: 'group'},\r\n true\r\n ),\r\n 'Stacked Bar Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'bar', orientation: 'h'},\r\n {barmode: 'relative'},\r\n true\r\n ),\r\n 'Line Chart': makeRenderer(PlotlyComponent),\r\n 'Dot Chart': makeRenderer(PlotlyComponent, {mode: 'markers'}, {}, true),\r\n 'Area Chart': makeRenderer(PlotlyComponent, {stackgroup: 1}),\r\n 'Scatter Chart': makeScatterRenderer(PlotlyComponent),\r\n 'Multiple Pie Chart': makeRenderer(\r\n PlotlyComponent,\r\n {type: 'pie', scalegroup: 1, hoverinfo: 'label+value', textinfo: 'none'},\r\n {},\r\n true\r\n ),\r\n };\r\n}\r\n"]} |