Skip to content

Commit

Permalink
Merge pull request #6413 from plotly/refactor-grouping-defaults
Browse files Browse the repository at this point in the history
separate file for grouping defaults
  • Loading branch information
archmoj authored Dec 20, 2022
2 parents 9446de6 + 8eea1ad commit 9834144
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 45 deletions.
42 changes: 1 addition & 41 deletions src/traces/bar/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -172,6 +133,5 @@ function handleText(traceIn, traceOut, layout, coerce, textposition, opts) {
module.exports = {
supplyDefaults: supplyDefaults,
crossTraceDefaults: crossTraceDefaults,
handleGroupingDefaults: handleGroupingDefaults,
handleText: handleText
};
42 changes: 42 additions & 0 deletions src/traces/bar/grouping_defaults.js
Original file line number Diff line number Diff line change
@@ -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;
}
};
2 changes: 1 addition & 1 deletion src/traces/box/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand Down
2 changes: 1 addition & 1 deletion src/traces/funnel/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
2 changes: 1 addition & 1 deletion src/traces/histogram/cross_trace_defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/traces/waterfall/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down

0 comments on commit 9834144

Please sign in to comment.