Skip to content

Commit

Permalink
Refactor to more clear and declarative way
Browse files Browse the repository at this point in the history
  • Loading branch information
vladminsky committed Apr 6, 2016
1 parent f358a1c commit 53226be
Showing 1 changed file with 47 additions and 47 deletions.
94 changes: 47 additions & 47 deletions src/spec-transform-auto-layout.js
Expand Up @@ -439,18 +439,7 @@ var SpecEngineTypeMap = {
return unit;
}

if (!unit.guide.hasOwnProperty('showGridLines')) {
unit.guide.showGridLines = selectorPredicates.isLeafParent ? 'xy' : '';
}

var isFacetUnit = (!selectorPredicates.isLeaf && !selectorPredicates.isLeafParent);
if (isFacetUnit) {
// unit is a facet!
unit.guide.x.cssClass += ' facet-axis';
unit.guide.x.avoidCollisions = true;
unit.guide.y.cssClass += ' facet-axis';
unit.guide.y.avoidCollisions = false;
}

var dimX = meta.dimension(unit.x);
var dimY = meta.dimension(unit.y);
Expand Down Expand Up @@ -494,18 +483,12 @@ var SpecEngineTypeMap = {

var isXVertical = !isFacetUnit && (Boolean(dimX.dimType) && dimX.dimType !== 'measure');

unit.guide.x.padding = xIsEmptyAxis ? 0 : xAxisPadding;
unit.guide.y.padding = yIsEmptyAxis ? 0 : yAxisPadding;

unit.guide.x.rotate = isXVertical ? 90 : 0;
unit.guide.x.textAnchor = isXVertical ? 'start' : unit.guide.x.textAnchor;

var xTickWidth = xIsEmptyAxis ? 0 : settings.xTickWidth;
var yTickWidth = yIsEmptyAxis ? 0 : settings.yTickWidth;

unit.guide.x.tickFormatWordWrapLimit = settings.xAxisTickLabelLimit;
unit.guide.y.tickFormatWordWrapLimit = settings.yAxisTickLabelLimit;

var maxXTickH = isXVertical ? maxXTickSize.width : maxXTickSize.height;

if (!isXContinues && (maxXTickH > settings.xAxisTickLabelLimit)) {
Expand All @@ -528,54 +511,71 @@ var SpecEngineTypeMap = {
var xAxisPad = xTickWidth + maxXTickH;
var yAxisPad = yTickWidth + (Math.cos((unit.guide.y.rotate / 180) * Math.PI) * maxYTickW);

var xFontLabelHeight = settings.xFontLabelHeight;
var yFontLabelHeight = settings.yFontLabelHeight;

var distToXAxisLabel = settings.distToXAxisLabel;
var distToYAxisLabel = settings.distToYAxisLabel;

var xTickLabelW = Math.min(
settings.xAxisTickLabelLimit,
(isXVertical ? maxXTickSize.height : maxXTickSize.width)
);
unit.guide.x.density = xTickLabelW + xDensityPadding * 2;

var guessLinesCount = Math.ceil(maxYTickSize.width / settings.yAxisTickLabelLimit);
var koeffLinesCount = Math.min(guessLinesCount, settings.yTickWordWrapLinesLimit);
var yTickLabelH = Math.min(settings.yAxisTickLabelLimit, koeffLinesCount * maxYTickSize.height);
unit.guide.y.density = yTickLabelH + yDensityPadding * 2;

unit.guide.x.label.padding = (unit.guide.x.label.text) ? (xAxisPad + distToXAxisLabel) : 0;
unit.guide.y.label.padding = (unit.guide.y.label.text) ? (yAxisPad + distToYAxisLabel) : 0;
unit.guide.x.label.padding = (unit.guide.x.label.text) ? (xAxisPad + settings.distToXAxisLabel) : 0;
unit.guide.y.label.padding = (unit.guide.y.label.text) ? (yAxisPad + settings.distToYAxisLabel) : 0;

var xLabelPadding = (unit.guide.x.label.text) ?
(unit.guide.x.label.padding + xFontLabelHeight) :
(unit.guide.x.label.padding + settings.xFontLabelHeight) :
(xAxisPad);
var yLabelPadding = (unit.guide.y.label.text) ?
(unit.guide.y.label.padding + yFontLabelHeight) :
(unit.guide.y.label.padding + settings.yFontLabelHeight) :
(yAxisPad);

unit.guide.padding.b = ((unit.guide.x.hide) ?
(0) :
(xAxisPadding + xLabelPadding));
unit.guide.padding.l = ((unit.guide.y.hide) ?
(0) :
(yAxisPadding + yLabelPadding));

unit.guide.x.tickFontHeight = maxXTickSize.height;
unit.guide.y.tickFontHeight = maxYTickSize.height;

unit.guide.x.$minimalDomain = xValues.length;
unit.guide.y.$minimalDomain = yValues.length;

unit.guide.x.$maxTickTextW = maxXTickSize.width;
unit.guide.x.$maxTickTextH = maxXTickSize.height;

unit.guide.y.$maxTickTextW = maxYTickSize.width;
unit.guide.y.$maxTickTextH = maxYTickSize.height;
unit.guide = _.extend(
(unit.guide),
{
showGridLines: ((unit.guide.hasOwnProperty('showGridLines')) ?
(unit.guide.showGridLines) :
(selectorPredicates.isLeafParent ? 'xy' : ''))
});

unit.guide.padding = _.extend(
(unit.guide.padding),
{
b: ((unit.guide.x.hide) ? (0) : (xAxisPadding + xLabelPadding)),
l: ((unit.guide.y.hide) ? (0) : (yAxisPadding + yLabelPadding))
});

unit.guide.x = _.extend(
(unit.guide.x),
{
cssClass: (isFacetUnit) ? (unit.guide.x.cssClass + ' facet-axis') : (unit.guide.x.cssClass),
avoidCollisions: (isFacetUnit) ? true : (unit.guide.x.avoidCollisions),
tickFormatWordWrapLimit: settings.xAxisTickLabelLimit,
density: (xTickLabelW + xDensityPadding * 2),
padding: (xIsEmptyAxis ? 0 : xAxisPadding),
tickFontHeight: maxXTickSize.height,
$minimalDomain: xValues.length,
$maxTickTextW: maxXTickSize.width,
$maxTickTextH: maxXTickSize.height
});

unit.guide.y = _.extend(
(unit.guide.y),
{
cssClass: (isFacetUnit) ? (unit.guide.y.cssClass + ' facet-axis') : (unit.guide.y.cssClass),
avoidCollisions: (isFacetUnit) ? false : (unit.guide.y.avoidCollisions),
tickFormatWordWrapLimit: settings.yAxisTickLabelLimit,
density: (yTickLabelH + yDensityPadding * 2),
padding: (yIsEmptyAxis ? 0 : yAxisPadding),
tickFontHeight: maxYTickSize.height,
$minimalDomain: yValues.length,
$maxTickTextW: maxYTickSize.width,
$maxTickTextH: maxYTickSize.height
});

return unit;
});

return spec;
},

Expand Down

0 comments on commit 53226be

Please sign in to comment.