charts/shared/helpers.mjs (65 lines of code) (raw):
import moment from "./moment.js"
var helpers = {
decimals: function(items) {
var nums = items.split(",")
return parseFloat(this[nums[0]]).toFixed(nums[1]);
},
formatDate: function (values="Date,MMM D 'YY", render) {
let value = values.split(",")
let date = new Date(this[render(value[0])])
let format = (value[1]) ? value[1] : "MMM D 'YY"
return moment(date).format(format);
},
monthYear: function (values="Date,MMM D 'YY", render) {
let value = values.split(",")
let date = new Date(this[render(value[0])])
let format = (value[1]) ? value[1] : "MMM 'YY"
return moment(date).format(format);
},
roundZero: function (value, render) {
return Math.round(render(value));
},
numberFormat: function(items) {
var nums = items.split(",")
let num = this[nums[0]]
if ( num > 0 ) {
if ( num >= 1000000000 ) {
if ((num / 1000000000) % 1 == 0) {
return ( num / 1000000000 ) + 'bn'
}
else {
return ( num / 1000000000 ).toFixed(1) + 'bn'
}
}
if ( num >= 1000000 ) {
if (( num / 1000000 ) % 1 == 0) {
return ( num / 1000000 ) + 'm'
}
else {
return ( num / 1000000 ).toFixed(1) + 'm'
}
}
if ( num >= 1000 ) {
if (( num / 1000 ) % 1 == 0) {
return ( num / 1000 ) + 'k'
}
else {
return ( num / 1000 ).toFixed(1) + 'k'
}
}
if (num % 1 != 0) {
return num
}
else { return num }
}
if ( num < 0 ) {
var posNum = num * -1;
if ( posNum >= 1000000000 ) return [ "-" + String(( posNum / 1000000000 ).toFixed(1)) + 'bn'];
if ( posNum >= 1000000 ) return ["-" + String(( posNum / 1000000 ).toFixed(1)) + 'm'];
if ( posNum >= 1000 ) return ["-" + String(( posNum / 1000 ).toFixed(1)) + 'k'];
else { return num }
}
return num;
}
}
export default helpers