Initial commit
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
var _ = require('underscore');
|
||||
var d3 = require('d3');
|
||||
var moment = require('moment');
|
||||
|
||||
var AGGREGATION_FORMATS = {
|
||||
second: {
|
||||
display: 'HH:mm:ss',
|
||||
unit: 's'
|
||||
},
|
||||
minute: {
|
||||
display: 'HH:mm - MMM Do, YYYY',
|
||||
unit: 'm'
|
||||
},
|
||||
hour: {
|
||||
display: 'HH:00 - MMM Do, YYYY',
|
||||
unit: 'h'
|
||||
},
|
||||
day: {
|
||||
display: 'MMM Do, YYYY',
|
||||
unit: 'd'
|
||||
},
|
||||
week: {
|
||||
display: 'MMM Do, YYYY',
|
||||
unit: 'w'
|
||||
},
|
||||
month: {
|
||||
display: 'MMM YYYY',
|
||||
unit: 'M'
|
||||
},
|
||||
quarter: {
|
||||
display: '[Q]Q YYYY',
|
||||
unit: 'Q'
|
||||
},
|
||||
year: {
|
||||
display: 'YYYY',
|
||||
unit: 'y'
|
||||
},
|
||||
decade: {
|
||||
display: 'YYYY',
|
||||
unit: 'y'
|
||||
}
|
||||
};
|
||||
|
||||
var format = {};
|
||||
|
||||
format.formatNumber = function (value, unit) {
|
||||
if (!_.isNumber(value) || value === 0) {
|
||||
return value;
|
||||
}
|
||||
|
||||
var format = d3.format('.2s');
|
||||
var p = 0;
|
||||
var absV = Math.abs(value);
|
||||
|
||||
if (value > 1000) {
|
||||
value = format(value) + (unit ? ' ' + unit : '');
|
||||
return value;
|
||||
}
|
||||
|
||||
if (absV > 100) {
|
||||
p = 0;
|
||||
} else if (absV > 10) {
|
||||
p = 1;
|
||||
} else if (absV > 1) {
|
||||
p = 2;
|
||||
} else if (absV > 0) {
|
||||
p = Math.max(Math.ceil(Math.abs(Math.log(absV) / Math.log(10))) + 2, 3);
|
||||
}
|
||||
|
||||
value = value.toFixed(p);
|
||||
var m = value.match(/(\.0+)$/);
|
||||
if (m) {
|
||||
value = value.replace(m[0], '');
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
format.formatDate = function (value) {
|
||||
return d3.time.format('%Y-%m-%d')(value);
|
||||
};
|
||||
|
||||
format.formatTime = function (value) {
|
||||
return d3.time.format('%H:%M:%S %d/%m/%Y')(value);
|
||||
};
|
||||
|
||||
format.timeFactory = function (format) {
|
||||
return d3.time.format(format);
|
||||
};
|
||||
|
||||
format.formatValue = function (value) {
|
||||
if (_.isNumber(value)) {
|
||||
return format.formatNumber(value);
|
||||
}
|
||||
if (_.isDate(value)) {
|
||||
return format.formatDate(value);
|
||||
}
|
||||
return value;
|
||||
};
|
||||
|
||||
format.timestampFactory = function (aggregation, offset) {
|
||||
return function (timestamp) {
|
||||
if (!_.has(AGGREGATION_FORMATS, aggregation)) {
|
||||
return '-';
|
||||
}
|
||||
var format = AGGREGATION_FORMATS[aggregation];
|
||||
var date = moment.unix(timestamp).utc();
|
||||
if (_.isFinite(offset)) {
|
||||
date.utcOffset(offset / 60);
|
||||
}
|
||||
var formatted = date.format(format.display);
|
||||
return formatted;
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = format;
|
||||
Reference in New Issue
Block a user