{"version":3,"file":"plotly_renderers.js","sources":["plotly_renderers.coffee"],"names":[],"mappings":"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","sourcesContent":["callWithJQuery = (pivotModule) ->\n    if typeof exports is \"object\" and typeof module is \"object\" # CommonJS\n        pivotModule require(\"jquery\"), require(\"plotly.js\")\n    else if typeof define is \"function\" and define.amd # AMD\n        define [\"jquery\", \"plotly.js\"], pivotModule\n    # Plain browser env\n    else\n        pivotModule jQuery, Plotly\n\ncallWithJQuery ($, Plotly) ->\n\n    makePlotlyChart = (traceOptions = {}, layoutOptions = {}, transpose = false) ->\n        (pivotData, opts) ->\n            defaults =\n                localeStrings: {vs: \"vs\", by: \"by\"}\n                plotly: {}\n                plotlyConfig: {}\n\n            opts = $.extend(true, {}, defaults, opts)\n\n            rowKeys = pivotData.getRowKeys()\n            colKeys = pivotData.getColKeys()\n            traceKeys = if transpose then colKeys else rowKeys\n            traceKeys.push([]) if traceKeys.length == 0\n            datumKeys = if transpose then rowKeys else colKeys\n            datumKeys.push([]) if datumKeys.length == 0\n\n            fullAggName = pivotData.aggregatorName\n            if pivotData.valAttrs.length\n                fullAggName += \"(#{pivotData.valAttrs.join(\", \")})\"\n\n            data = traceKeys.map (traceKey) ->\n                values = []\n                labels = []\n                for datumKey in datumKeys\n                    val = parseFloat(pivotData.getAggregator(\n                        if transpose then datumKey else traceKey,\n                        if transpose then traceKey else datumKey\n                    ).value())\n                    values.push(if isFinite(val) then val else null)\n                    labels.push(datumKey.join('-') || ' ')\n\n                trace = {name: traceKey.join('-') || fullAggName}\n                if traceOptions.type == \"pie\"\n                    trace.values = values\n                    trace.labels = if labels.length > 1 then labels else [fullAggName]\n                else\n                    trace.x = if transpose then values else labels\n                    trace.y = if transpose then labels else values\n                return $.extend(trace, traceOptions)\n\n            if transpose\n                hAxisTitle = pivotData.rowAttrs.join(\"-\")\n                groupByTitle = pivotData.colAttrs.join(\"-\")\n            else\n                hAxisTitle = pivotData.colAttrs.join(\"-\")\n                groupByTitle = pivotData.rowAttrs.join(\"-\")\n            titleText = fullAggName\n            titleText += \" #{opts.localeStrings.vs} #{hAxisTitle}\" if hAxisTitle != \"\"\n            titleText += \" #{opts.localeStrings.by} #{groupByTitle}\" if groupByTitle != \"\"\n\n            layout =\n                title: titleText\n                hovermode: 'closest'\n                width: window.innerWidth / 1.4\n                height: window.innerHeight / 1.4 - 50\n\n            if traceOptions.type == 'pie'\n                columns = Math.ceil(Math.sqrt(data.length))\n                rows = Math.ceil(data.length / columns)\n                layout.grid = {columns, rows}\n                for i, d of data\n                    d.domain = {\n                        row: Math.floor(i / columns),\n                        column: i - columns * Math.floor(i / columns),\n                    }\n                    if data.length > 1\n                        d.title = d.name\n                layout.showlegend = false if data[0].labels.length == 1\n            else\n                layout.xaxis =\n                    title: if transpose then fullAggName else null\n                    automargin: true\n                layout.yaxis =\n                    title: if transpose then null else fullAggName\n                    automargin: true\n\n\n            result = $(\"<div>\").appendTo $(\"body\")\n            Plotly.newPlot(result[0], data, $.extend(layout, layoutOptions, opts.plotly), opts.plotlyConfig)\n            return result.detach()\n\n    makePlotlyScatterChart = -> (pivotData, opts) ->\n        defaults =\n            localeStrings: {vs: \"vs\", by: \"by\"}\n            plotly: {}\n            plotlyConfig: {}\n\n        opts = $.extend(true, {}, defaults, opts)\n\n        rowKeys = pivotData.getRowKeys()\n        rowKeys.push [] if rowKeys.length == 0\n        colKeys = pivotData.getColKeys()\n        colKeys.push [] if colKeys.length == 0\n\n        data = {x: [], y: [], text: [], type: 'scatter', mode: 'markers'}\n\n        for rowKey in rowKeys\n            for colKey in colKeys\n                v = pivotData.getAggregator(rowKey, colKey).value()\n                if v?\n                    data.x.push(colKey.join('-'))\n                    data.y.push(rowKey.join('-'))\n                    data.text.push(v)\n\n        layout = {\n            title: pivotData.rowAttrs.join(\"-\") + ' vs ' + pivotData.colAttrs.join(\"-\")\n            hovermode: 'closest',\n            xaxis: {title: pivotData.colAttrs.join('-'), automargin: true},\n            yaxis: {title: pivotData.rowAttrs.join('-'), automargin: true},\n            width: window.innerWidth / 1.5,\n            height: window.innerHeight / 1.4 - 50\n        }\n\n        renderArea = $(\"<div>\", style: \"display:none;\").appendTo $(\"body\")\n        result = $(\"<div>\").appendTo renderArea\n        Plotly.newPlot(result[0], [data], $.extend(layout, opts.plotly), opts.plotlyConfig)\n        result.detach()\n        renderArea.remove()\n        return result\n\n    $.pivotUtilities.plotly_renderers =\n        \"Horizontal Bar Chart\": makePlotlyChart({type: 'bar', orientation: 'h'},\n            {barmode: 'group'}, true)\n        \"Bar Chart (Horizontal)\": makePlotlyChart({type: 'bar', orientation: 'h'},\n            {barmode: 'relative'}, true)\n        \"Bar Chart\": makePlotlyChart({type: 'bar'}, {barmode: 'group'})\n        \"Bar Chart (Vertical)\": makePlotlyChart({type: 'bar'}, {barmode: 'relative'})\n        \"Line Chart\": makePlotlyChart()\n        \"Area Chart\": makePlotlyChart({stackgroup: 1})\n        \"Scatter Chart\": makePlotlyScatterChart()\n        'Pie Chart': makePlotlyChart(\n            {type: 'pie', scalegroup: 1, hoverinfo: 'label+value', textinfo: 'none'},\n            {}, true)\n"]}