'use strict'; var isNumeric = require('fast-isnumeric'); var BADNUM = require('../../constants/numerical').BADNUM; var Axes = require('../../plots/cartesian/axes'); var calcColorscale = require('../scatter/colorscale_calc'); var arraysToCalcdata = require('../scatter/arrays_to_calcdata'); var calcSelection = require('../scatter/calc_selection'); var calcMarkerSize = require('../scatter/calc').calcMarkerSize; module.exports = function calc(gd, trace) { var fullLayout = gd._fullLayout; var subplotId = trace.subplot; var radialAxis = fullLayout[subplotId].radialaxis; var angularAxis = fullLayout[subplotId].angularaxis; var rArray = radialAxis.makeCalcdata(trace, 'r'); var thetaArray = angularAxis.makeCalcdata(trace, 'theta'); var len = trace._length; var cd = new Array(len); for(var i = 0; i < len; i++) { var r = rArray[i]; var theta = thetaArray[i]; var cdi = cd[i] = {}; if(isNumeric(r) && isNumeric(theta)) { cdi.r = r; cdi.theta = theta; } else { cdi.r = BADNUM; } } var ppad = calcMarkerSize(trace, len); trace._extremes.x = Axes.findExtremes(radialAxis, rArray, {ppad: ppad}); calcColorscale(gd, trace); arraysToCalcdata(cd, trace); calcSelection(cd, trace); return cd; };