2016-05-17 3 views
0

Я работаю над диаграммой gantt в d3.js, я хочу показать 18 месяцев на X-Axis, которая включает последние 6 месяцев и будущее 11 месяцев, всего 18 месяцев. Используя следующий код, я получаю месяцы на X-Axis в соответствии с датой начала и endDates задач (Y-Axis).Как получить диапазон динамических месяцев по оси в d3.js?

var timeDomainStart = d3.time.day.offset(new Date(),-0); 
var timeDomainEnd = d3.time.day.offset(new Date(),+0); 

var initTimeDomain = function() { 
    if (timeDomainMode === FIT_TIME_DOMAIN_MODE) { 
     tasks.sort(function(a, b) { 
     return a.endDate - b.endDate; 
     }); 
    timeDomainEnd = tasks[tasks.length - 1].endDate; 

    tasks.sort(function(a, b) { 
    return a.startDate - b.startDate; 
    }); 
    timeDomainStart = tasks[0].startDate; 

} 
}; 

var initAxis = function() { 
     x = d3.time.scale().domain([ timeDomainStart, timeDomainEnd ]) 
     .range([ 0, width ]).clamp(true); 
     y = d3.scale.ordinal().domain(taskTypes) 
      .rangeRoundBands([ 0, height - margin.top - margin.bottom ], .25); 

    xAxis = d3.svg.axis().scale(x).orient("top").tickFormat(d3.time.format(tickFormat)) 
    .tickSize(0).tickPadding(10); 

yAxis = d3.svg.axis().scale(y).orient("left").tickSize(0).tickPadding(5); 
}; 

ответ

0

Как-то под сниппетом работал для меня .. !!

var initTimeDomain = function() { 
    if (timeDomainMode === FIT_TIME_DOMAIN_MODE) { 

    tasks.sort(function(a, b) { 
    return a.startDate - b.startDate; 
    }); 
    timeDomainStart = d3.time.day.offset(new Date(),-180); 
    console.log(timeDomainStart); 


    tasks.sort(function(a, b) { 
    return a.endDate - b.endDate; 
    }); 

    timeDomainEnd = d3.time.day.offset(new Date(),+330); 
    console.log(timeDomainEnd); 

} 
}; 
Смежные вопросы