123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- var zrUtil = require("zrender/lib/core/util");
- var textContain = require("zrender/lib/contain/text");
- var numberUtil = require("./number");
- 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] : '');
- }
- function toCamelCase(str, upperCaseFirst) {
- str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {
- return group1.toUpperCase();
- });
- if (upperCaseFirst && str) {
- str = str.charAt(0).toUpperCase() + str.slice(1);
- }
- return str;
- }
- var normalizeCssArray = zrUtil.normalizeCssArray;
- var replaceReg = /([&<>"'])/g;
- var replaceMap = {
- '&': '&',
- '<': '<',
- '>': '>',
- '"': '"',
- '\'': '''
- };
- function encodeHTML(source) {
- return source == null ? '' : (source + '').replace(replaceReg, function (str, c) {
- return replaceMap[c];
- });
- }
- var TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
- var wrapVar = function (varName, seriesIdx) {
- return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';
- };
- function formatTpl(tpl, paramsList, encode) {
- 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++) {
- var val = paramsList[seriesIdx][$vars[k]];
- tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);
- }
- }
- return tpl;
- }
- function formatTplSimple(tpl, param, encode) {
- zrUtil.each(param, function (value, key) {
- tpl = tpl.replace('{' + key + '}', encode ? encodeHTML(value) : value);
- });
- return tpl;
- }
- function getTooltipMarker(opt, extraCssText) {
- opt = zrUtil.isString(opt) ? {
- color: opt,
- extraCssText: extraCssText
- } : opt || {};
- var color = opt.color;
- var type = opt.type;
- var extraCssText = opt.extraCssText;
- var renderMode = opt.renderMode || 'html';
- var markerId = opt.markerId || 'X';
- if (!color) {
- return '';
- }
- if (renderMode === 'html') {
- return type === 'subItem' ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;' + 'border-radius:4px;width:4px;height:4px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '"></span>' : '<span style="display:inline-block;margin-right:5px;' + 'border-radius:10px;width:10px;height:10px;background-color:' + encodeHTML(color) + ';' + (extraCssText || '') + '"></span>';
- } else {
-
- return {
- renderMode: renderMode,
- content: '{marker' + markerId + '|} ',
- style: {
- color: color
- }
- };
- }
- }
- function pad(str, len) {
- str += '';
- return '0000'.substr(0, len - str.length) + str;
- }
- function formatTime(tpl, value, isUTC) {
- if (tpl === 'week' || tpl === 'month' || tpl === 'quarter' || tpl === 'half-year' || tpl === 'year') {
- tpl = 'MM-dd\nyyyy';
- }
- var date = numberUtil.parseDate(value);
- var utc = isUTC ? 'UTC' : '';
- var y = date['get' + utc + 'FullYear']();
- var M = date['get' + utc + 'Month']() + 1;
- var d = date['get' + utc + 'Date']();
- var h = date['get' + utc + 'Hours']();
- var m = date['get' + utc + 'Minutes']();
- var s = date['get' + utc + 'Seconds']();
- var S = date['get' + utc + 'Milliseconds']();
- tpl = tpl.replace('MM', pad(M, 2)).replace('M', M).replace('yyyy', y).replace('yy', y % 100).replace('dd', pad(d, 2)).replace('d', d).replace('hh', pad(h, 2)).replace('h', h).replace('mm', pad(m, 2)).replace('m', m).replace('ss', pad(s, 2)).replace('s', s).replace('SSS', pad(S, 3));
- return tpl;
- }
- function capitalFirst(str) {
- return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;
- }
- var truncateText = textContain.truncateText;
- function getTextBoundingRect(opt) {
- return textContain.getBoundingRect(opt.text, opt.font, opt.textAlign, opt.textVerticalAlign, opt.textPadding, opt.textLineHeight, opt.rich, opt.truncate);
- }
- function getTextRect(text, font, textAlign, textVerticalAlign, textPadding, rich, truncate, textLineHeight) {
- return textContain.getBoundingRect(text, font, textAlign, textVerticalAlign, textPadding, textLineHeight, rich, truncate);
- }
- function windowOpen(link, target) {
- if (target === '_blank' || target === 'blank') {
- var blank = window.open();
- blank.opener = null;
- blank.location = link;
- } else {
- window.open(link, target);
- }
- }
- exports.addCommas = addCommas;
- exports.toCamelCase = toCamelCase;
- exports.normalizeCssArray = normalizeCssArray;
- exports.encodeHTML = encodeHTML;
- exports.formatTpl = formatTpl;
- exports.formatTplSimple = formatTplSimple;
- exports.getTooltipMarker = getTooltipMarker;
- exports.formatTime = formatTime;
- exports.capitalFirst = capitalFirst;
- exports.truncateText = truncateText;
- exports.getTextBoundingRect = getTextBoundingRect;
- exports.getTextRect = getTextRect;
- exports.windowOpen = windowOpen;
|