/src/js/Rickshaw.Fixtures.Time.js
http://github.com/shutterstock/rickshaw · JavaScript · 115 lines · 94 code · 21 blank · 0 comment · 12 complexity · 71962c7800df7b55427c9194aaa6c7bc MD5 · raw file
- Rickshaw.namespace('Rickshaw.Fixtures.Time');
- Rickshaw.Fixtures.Time = function() {
- var self = this;
- this.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
- this.units = [
- {
- name: 'decade',
- seconds: 86400 * 365.25 * 10,
- formatter: function(d) { return (parseInt(d.getUTCFullYear() / 10, 10) * 10) }
- }, {
- name: 'year',
- seconds: 86400 * 365.25,
- formatter: function(d) { return d.getUTCFullYear() }
- }, {
- name: 'month',
- seconds: 86400 * 30.5,
- formatter: function(d) { return self.months[d.getUTCMonth()] }
- }, {
- name: 'week',
- seconds: 86400 * 7,
- formatter: function(d) { return self.formatDate(d) }
- }, {
- name: 'day',
- seconds: 86400,
- formatter: function(d) { return d.getUTCDate() }
- }, {
- name: '6 hour',
- seconds: 3600 * 6,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: 'hour',
- seconds: 3600,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: '15 minute',
- seconds: 60 * 15,
- formatter: function(d) { return self.formatTime(d) }
- }, {
- name: 'minute',
- seconds: 60,
- formatter: function(d) { return d.getUTCMinutes() + 'm' }
- }, {
- name: '15 second',
- seconds: 15,
- formatter: function(d) { return d.getUTCSeconds() + 's' }
- }, {
- name: 'second',
- seconds: 1,
- formatter: function(d) { return d.getUTCSeconds() + 's' }
- }, {
- name: 'decisecond',
- seconds: 1/10,
- formatter: function(d) { return d.getUTCMilliseconds() + 'ms' }
- }, {
- name: 'centisecond',
- seconds: 1/100,
- formatter: function(d) { return d.getUTCMilliseconds() + 'ms' }
- }
- ];
- this.unit = function(unitName) {
- return this.units.filter( function(unit) { return unitName == unit.name } ).shift();
- };
- this.formatDate = function(d) {
- return d3.time.format('%b %e')(d);
- };
- this.formatTime = function(d) {
- return d.toUTCString().match(/(\d+:\d+):/)[1];
- };
- this.ceil = function(time, unit) {
- var date, floor, year;
- if (unit.name == 'month') {
- date = new Date(time * 1000);
- floor = Date.UTC(date.getUTCFullYear(), date.getUTCMonth()) / 1000;
- if (floor == time) return time;
- year = date.getUTCFullYear();
- var month = date.getUTCMonth();
- if (month == 11) {
- month = 0;
- year = year + 1;
- } else {
- month += 1;
- }
- return Date.UTC(year, month) / 1000;
- }
- if (unit.name == 'year') {
- date = new Date(time * 1000);
- floor = Date.UTC(date.getUTCFullYear(), 0) / 1000;
- if (floor == time) return time;
- year = date.getUTCFullYear() + 1;
- return Date.UTC(year, 0) / 1000;
- }
- return Math.ceil(time / unit.seconds) * unit.seconds;
- };
- };