Skip to content

Commit

Permalink
Should extract unique dates when scale is [period] but [period] value…
Browse files Browse the repository at this point in the history
… is not specified
  • Loading branch information
vladminsky committed May 18, 2016
1 parent 7166c23 commit 2b0b81f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/scales/period.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ export class PeriodScale extends BaseScale {
new Date(Math.max(max, domain[1]))
];

if (props.fitToFrameByDims) {
var periodGenerator = UnitDomainPeriodGenerator.get(props.period);
if (props.fitToFrameByDims || (periodGenerator === null)) {
this.vars = _(vars).chain()
.uniq((x) => new Date(x).getTime())
.map((x) => new Date(x))
Expand Down
16 changes: 12 additions & 4 deletions src/spec-converter.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ export class SpecConverter {

var walkStructure = (srcUnit) => {
var gplRoot = utils.clone(_.omit(srcUnit, 'unit'));
gplRoot.expression = this.ruleInferExpression(srcUnit);
this.ruleCreateScales(srcUnit, gplRoot);
gplRoot.expression = this.ruleInferExpression(srcUnit);

if (srcUnit.unit) {
gplRoot.units = srcUnit.unit.map(walkStructure);
Expand Down Expand Up @@ -313,6 +313,11 @@ export class SpecConverter {
return k;
}

getScaleConfig(scaleType, dimName) {
var k = `${scaleType}_${dimName}`;
return this.dist.scales[k];
}

ruleInferExpression(srcUnit) {

var expr = {
Expand All @@ -324,6 +329,9 @@ export class SpecConverter {
var gx = g.x || {};
var gy = g.y || {};

var scaleX = this.getScaleConfig('x', srcUnit.x);
var scaleY = this.getScaleConfig('y', srcUnit.y);

if (srcUnit.type.indexOf('ELEMENT.') === 0) {

if (srcUnit.color) {
Expand All @@ -341,14 +349,14 @@ export class SpecConverter {

// jshint ignore:start
// jscs:disable requireDotNotation
if (gx['tickPeriod'] || gy['tickPeriod']) {
if (scaleX.period || scaleY.period) {
expr = {
operator: 'cross_period',
params: [
this.ruleInferDim(srcUnit.x, gx),
this.ruleInferDim(srcUnit.y, gy),
gx['tickPeriod'],
gy['tickPeriod']
scaleX.period,
scaleY.period
]
};
} else {
Expand Down
7 changes: 5 additions & 2 deletions src/unit-domain-period-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,14 @@ var UnitDomainPeriodGenerator = {
return this;
},

get: (periodAlias) => PERIODS_MAP[periodAlias.toLowerCase()],
get: (periodAlias) => {
var alias = periodAlias || '';
return PERIODS_MAP[alias.toLowerCase()] || null;
},

generate: (lTick, rTick, periodAlias) => {
var r = [];
var period = PERIODS_MAP[periodAlias.toLowerCase()];
var period = UnitDomainPeriodGenerator.get(periodAlias);
if (period) {
var last = period.cast(new Date(rTick));
var curr = period.cast(new Date(lTick));
Expand Down

0 comments on commit 2b0b81f

Please sign in to comment.