UNPKG

plotly.js

Version:

The open source javascript graphing library that powers plotly

53 lines (45 loc) 2.03 kB
'use strict'; var cleanTicks = require('./clean_ticks'); var isArrayOrTypedArray = require('../../lib').isArrayOrTypedArray; var isTypedArraySpec = require('../../lib/array').isTypedArraySpec; var decodeTypedArraySpec = require('../../lib/array').decodeTypedArraySpec; module.exports = function handleTickValueDefaults(containerIn, containerOut, coerce, axType, opts = {}) { var isMinor = opts.isMinor; var cIn = isMinor ? containerIn.minor || {} : containerIn; var cOut = isMinor ? containerOut.minor : containerOut; var prefix = isMinor ? 'minor.' : ''; function readInput(attr) { var v = cIn[attr]; if (isTypedArraySpec(v)) v = decodeTypedArraySpec(v); return v !== undefined ? v : (cOut._template || {})[attr]; } var _tick0 = readInput('tick0'); var _dtick = readInput('dtick'); var _tickvals = readInput('tickvals'); var _overlaying = readInput('overlaying'); var _categorical = axType === 'category' || axType === 'multicategory'; var tickmodeDefault; if (isArrayOrTypedArray(_tickvals)) { tickmodeDefault = 'array'; } else if (_dtick) { tickmodeDefault = 'linear'; } else if (_overlaying && !_categorical) { tickmodeDefault = 'sync'; } else { tickmodeDefault = 'auto'; } var tickmode = coerce(prefix + 'tickmode', tickmodeDefault); if (tickmode === 'auto' || tickmode === 'sync') { coerce(prefix + 'nticks'); } else if (tickmode === 'linear') { // dtick is usually a positive number, but there are some // special strings available for log or date axes // tick0 also has special logic var dtick = (cOut.dtick = cleanTicks.dtick(_dtick, axType)); cOut.tick0 = cleanTicks.tick0(_tick0, axType, containerOut.calendar, dtick); } else if (axType !== 'multicategory') { var tickvals = coerce(prefix + 'tickvals'); if (tickvals === undefined) cOut.tickmode = 'auto'; else if (!isMinor) coerce('ticktext'); } };