diff --git a/src/traces/bar/defaults.js b/src/traces/bar/defaults.js index 2ea8c258e2c..419cb45c095 100644 --- a/src/traces/bar/defaults.js +++ b/src/traces/bar/defaults.js @@ -7,7 +7,7 @@ var Registry = require('../../registry'); var handleXYDefaults = require('../scatter/xy_defaults'); var handlePeriodDefaults = require('../scatter/period_defaults'); var handleStyleDefaults = require('./style_defaults'); -var getAxisGroup = require('../../plots/cartesian/constraints').getAxisGroup; +var handleGroupingDefaults = require('./grouping_defaults'); var attributes = require('./attributes'); var coerceFont = Lib.coerceFont; @@ -58,45 +58,6 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) { Lib.coerceSelectionMarkerOpacity(traceOut, coerce); } -function handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce) { - var orientation = traceOut.orientation; - // N.B. grouping is done across all trace types that support it - var posAxId = traceOut[{v: 'x', h: 'y'}[orientation] + 'axis']; - var groupId = getAxisGroup(fullLayout, posAxId) + orientation; - - var alignmentOpts = fullLayout._alignmentOpts || {}; - var alignmentgroup = coerce('alignmentgroup'); - - var alignmentGroups = alignmentOpts[groupId]; - if(!alignmentGroups) alignmentGroups = alignmentOpts[groupId] = {}; - - var alignmentGroupOpts = alignmentGroups[alignmentgroup]; - - if(alignmentGroupOpts) { - alignmentGroupOpts.traces.push(traceOut); - } else { - alignmentGroupOpts = alignmentGroups[alignmentgroup] = { - traces: [traceOut], - alignmentIndex: Object.keys(alignmentGroups).length, - offsetGroups: {} - }; - } - - var offsetgroup = coerce('offsetgroup'); - var offsetGroups = alignmentGroupOpts.offsetGroups; - var offsetGroupOpts = offsetGroups[offsetgroup]; - - if(offsetgroup) { - if(!offsetGroupOpts) { - offsetGroupOpts = offsetGroups[offsetgroup] = { - offsetIndex: Object.keys(offsetGroups).length - }; - } - - traceOut._offsetIndex = offsetGroupOpts.offsetIndex; - } -} - function crossTraceDefaults(fullData, fullLayout) { var traceIn, traceOut; @@ -172,6 +133,5 @@ function handleText(traceIn, traceOut, layout, coerce, textposition, opts) { module.exports = { supplyDefaults: supplyDefaults, crossTraceDefaults: crossTraceDefaults, - handleGroupingDefaults: handleGroupingDefaults, handleText: handleText }; diff --git a/src/traces/bar/grouping_defaults.js b/src/traces/bar/grouping_defaults.js new file mode 100644 index 00000000000..de957569108 --- /dev/null +++ b/src/traces/bar/grouping_defaults.js @@ -0,0 +1,42 @@ +'use strict'; + +var getAxisGroup = require('../../plots/cartesian/constraints').getAxisGroup; + +module.exports = function handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce) { + var orientation = traceOut.orientation; + // N.B. grouping is done across all trace types that support it + var posAxId = traceOut[{v: 'x', h: 'y'}[orientation] + 'axis']; + var groupId = getAxisGroup(fullLayout, posAxId) + orientation; + + var alignmentOpts = fullLayout._alignmentOpts || {}; + var alignmentgroup = coerce('alignmentgroup'); + + var alignmentGroups = alignmentOpts[groupId]; + if(!alignmentGroups) alignmentGroups = alignmentOpts[groupId] = {}; + + var alignmentGroupOpts = alignmentGroups[alignmentgroup]; + + if(alignmentGroupOpts) { + alignmentGroupOpts.traces.push(traceOut); + } else { + alignmentGroupOpts = alignmentGroups[alignmentgroup] = { + traces: [traceOut], + alignmentIndex: Object.keys(alignmentGroups).length, + offsetGroups: {} + }; + } + + var offsetgroup = coerce('offsetgroup'); + var offsetGroups = alignmentGroupOpts.offsetGroups; + var offsetGroupOpts = offsetGroups[offsetgroup]; + + if(offsetgroup) { + if(!offsetGroupOpts) { + offsetGroupOpts = offsetGroups[offsetgroup] = { + offsetIndex: Object.keys(offsetGroups).length + }; + } + + traceOut._offsetIndex = offsetGroupOpts.offsetIndex; + } +}; diff --git a/src/traces/box/defaults.js b/src/traces/box/defaults.js index 1a8980d0a64..5ecb56e0e02 100644 --- a/src/traces/box/defaults.js +++ b/src/traces/box/defaults.js @@ -4,7 +4,7 @@ var Lib = require('../../lib'); var Registry = require('../../registry'); var Color = require('../../components/color'); var handlePeriodDefaults = require('../scatter/period_defaults'); -var handleGroupingDefaults = require('../bar/defaults').handleGroupingDefaults; +var handleGroupingDefaults = require('../bar/grouping_defaults'); var autoType = require('../../plots/cartesian/axis_autotype'); var attributes = require('./attributes'); diff --git a/src/traces/funnel/defaults.js b/src/traces/funnel/defaults.js index 74c2238a72d..eaba2fb103b 100644 --- a/src/traces/funnel/defaults.js +++ b/src/traces/funnel/defaults.js @@ -2,7 +2,7 @@ var Lib = require('../../lib'); -var handleGroupingDefaults = require('../bar/defaults').handleGroupingDefaults; +var handleGroupingDefaults = require('../bar/grouping_defaults'); var handleText = require('../bar/defaults').handleText; var handleXYDefaults = require('../scatter/xy_defaults'); var handlePeriodDefaults = require('../scatter/period_defaults'); diff --git a/src/traces/histogram/cross_trace_defaults.js b/src/traces/histogram/cross_trace_defaults.js index fc40897d43d..15eeb3c8eb7 100644 --- a/src/traces/histogram/cross_trace_defaults.js +++ b/src/traces/histogram/cross_trace_defaults.js @@ -4,7 +4,7 @@ var Lib = require('../../lib'); var axisIds = require('../../plots/cartesian/axis_ids'); var traceIs = require('../../registry').traceIs; -var handleGroupingDefaults = require('../bar/defaults').handleGroupingDefaults; +var handleGroupingDefaults = require('../bar/grouping_defaults'); var nestedProperty = Lib.nestedProperty; var getAxisGroup = require('../../plots/cartesian/constraints').getAxisGroup; diff --git a/src/traces/waterfall/defaults.js b/src/traces/waterfall/defaults.js index 4abbd2ebc29..299c894e39d 100644 --- a/src/traces/waterfall/defaults.js +++ b/src/traces/waterfall/defaults.js @@ -2,7 +2,7 @@ var Lib = require('../../lib'); -var handleGroupingDefaults = require('../bar/defaults').handleGroupingDefaults; +var handleGroupingDefaults = require('../bar/grouping_defaults'); var handleText = require('../bar/defaults').handleText; var handleXYDefaults = require('../scatter/xy_defaults'); var handlePeriodDefaults = require('../scatter/period_defaults');