73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
// TODO v3 - make this adapter external (chartjs-adapter-moment)
|
|
|
|
'use strict';
|
|
|
|
var moment = require('moment');
|
|
var adapters = require('../core/core.adapters');
|
|
|
|
var FORMATS = {
|
|
datetime: 'MMM D, YYYY, h:mm:ss a',
|
|
millisecond: 'h:mm:ss.SSS a',
|
|
second: 'h:mm:ss a',
|
|
minute: 'h:mm a',
|
|
hour: 'hA',
|
|
day: 'MMM D',
|
|
week: 'll',
|
|
month: 'MMM YYYY',
|
|
quarter: '[Q]Q - YYYY',
|
|
year: 'YYYY'
|
|
};
|
|
|
|
adapters._date.override(typeof moment === 'function' ? {
|
|
_id: 'moment', // DEBUG ONLY
|
|
|
|
formats: function() {
|
|
return FORMATS;
|
|
},
|
|
|
|
parse: function(value, format) {
|
|
if (typeof value === 'string' && typeof format === 'string') {
|
|
value = moment(value, format);
|
|
} else if (!(value instanceof moment)) {
|
|
value = moment(value);
|
|
}
|
|
return value.isValid() ? value.valueOf() : null;
|
|
},
|
|
|
|
format: function(time, format) {
|
|
return moment(time).format(format);
|
|
},
|
|
|
|
add: function(time, amount, unit) {
|
|
return moment(time).add(amount, unit).valueOf();
|
|
},
|
|
|
|
diff: function(max, min, unit) {
|
|
return moment(max).diff(moment(min), unit);
|
|
},
|
|
|
|
startOf: function(time, unit, weekday) {
|
|
time = moment(time);
|
|
if (unit === 'isoWeek') {
|
|
return time.isoWeekday(weekday).valueOf();
|
|
}
|
|
return time.startOf(unit).valueOf();
|
|
},
|
|
|
|
endOf: function(time, unit) {
|
|
return moment(time).endOf(unit).valueOf();
|
|
},
|
|
|
|
// DEPRECATIONS
|
|
|
|
/**
|
|
* Provided for backward compatibility with scale.getValueForPixel().
|
|
* @deprecated since version 2.8.0
|
|
* @todo remove at version 3
|
|
* @private
|
|
*/
|
|
_create: function(time) {
|
|
return moment(time);
|
|
},
|
|
} : {});
|