mirror of https://github.com/ColorlibHQ/gentelella
162 lines
4.0 KiB
JavaScript
162 lines
4.0 KiB
JavaScript
define(function (require) {
|
|
|
|
var zrUtil = require('zrender/core/util');
|
|
var numberUtil = require('./number');
|
|
|
|
/**
|
|
* 每三位默认加,格式化
|
|
* @type {string|number} x
|
|
*/
|
|
function addCommas(x) {
|
|
if (isNaN(x)) {
|
|
return '-';
|
|
}
|
|
x = (x + '').split('.');
|
|
return x[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,'$1,')
|
|
+ (x.length > 1 ? ('.' + x[1]) : '');
|
|
}
|
|
|
|
/**
|
|
* @param {string} str
|
|
* @return {string} str
|
|
*/
|
|
function toCamelCase(str) {
|
|
return str.toLowerCase().replace(/-(.)/g, function(match, group1) {
|
|
return group1.toUpperCase();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Normalize css liked array configuration
|
|
* e.g.
|
|
* 3 => [3, 3, 3, 3]
|
|
* [4, 2] => [4, 2, 4, 2]
|
|
* [4, 3, 2] => [4, 3, 2, 3]
|
|
* @param {number|Array.<number>} val
|
|
*/
|
|
function normalizeCssArray(val) {
|
|
var len = val.length;
|
|
if (typeof (val) === 'number') {
|
|
return [val, val, val, val];
|
|
}
|
|
else if (len === 2) {
|
|
// vertical | horizontal
|
|
return [val[0], val[1], val[0], val[1]];
|
|
}
|
|
else if (len === 3) {
|
|
// top | horizontal | bottom
|
|
return [val[0], val[1], val[2], val[1]];
|
|
}
|
|
return val;
|
|
}
|
|
|
|
function encodeHTML(source) {
|
|
return String(source)
|
|
.replace(/&/g, '&')
|
|
.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/"/g, '"')
|
|
.replace(/'/g, ''');
|
|
}
|
|
|
|
var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
|
|
|
|
function wrapVar(varName, seriesIdx) {
|
|
return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';
|
|
}
|
|
/**
|
|
* Template formatter
|
|
* @param {string} tpl
|
|
* @param {Array.<Object>|Object} paramsList
|
|
* @return {string}
|
|
*/
|
|
function formatTpl(tpl, paramsList) {
|
|
if (!zrUtil.isArray(paramsList)) {
|
|
paramsList = [paramsList];
|
|
}
|
|
var seriesLen = paramsList.length;
|
|
if (!seriesLen) {
|
|
return '';
|
|
}
|
|
|
|
var $vars = paramsList[0].$vars;
|
|
for (var i = 0; i < $vars.length; i++) {
|
|
var alias = TPL_VAR_ALIAS[i];
|
|
tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));
|
|
}
|
|
for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {
|
|
for (var k = 0; k < $vars.length; k++) {
|
|
tpl = tpl.replace(
|
|
wrapVar(TPL_VAR_ALIAS[k], seriesIdx),
|
|
paramsList[seriesIdx][$vars[k]]
|
|
);
|
|
}
|
|
}
|
|
|
|
return tpl;
|
|
}
|
|
|
|
/**
|
|
* ISO Date format
|
|
* @param {string} tpl
|
|
* @param {number} value
|
|
* @inner
|
|
*/
|
|
function formatTime(tpl, value) {
|
|
if (tpl === 'week'
|
|
|| tpl === 'month'
|
|
|| tpl === 'quarter'
|
|
|| tpl === 'half-year'
|
|
|| tpl === 'year'
|
|
) {
|
|
tpl = 'MM-dd\nyyyy';
|
|
}
|
|
|
|
var date = numberUtil.parseDate(value);
|
|
var y = date.getFullYear();
|
|
var M = date.getMonth() + 1;
|
|
var d = date.getDate();
|
|
var h = date.getHours();
|
|
var m = date.getMinutes();
|
|
var s = date.getSeconds();
|
|
|
|
tpl = tpl.replace('MM', s2d(M))
|
|
.toLowerCase()
|
|
.replace('yyyy', y)
|
|
.replace('yy', y % 100)
|
|
.replace('dd', s2d(d))
|
|
.replace('d', d)
|
|
.replace('hh', s2d(h))
|
|
.replace('h', h)
|
|
.replace('mm', s2d(m))
|
|
.replace('m', m)
|
|
.replace('ss', s2d(s))
|
|
.replace('s', s);
|
|
|
|
return tpl;
|
|
}
|
|
|
|
/**
|
|
* @param {string} str
|
|
* @return {string}
|
|
* @inner
|
|
*/
|
|
function s2d(str) {
|
|
return str < 10 ? ('0' + str) : str;
|
|
}
|
|
|
|
return {
|
|
|
|
normalizeCssArray: normalizeCssArray,
|
|
|
|
addCommas: addCommas,
|
|
|
|
toCamelCase: toCamelCase,
|
|
|
|
encodeHTML: encodeHTML,
|
|
|
|
formatTpl: formatTpl,
|
|
|
|
formatTime: formatTime
|
|
};
|
|
}); |