UNPKG

@alicloud/cloud-charts

Version:

![](https://img.shields.io/npm/v/@alicloud/cloud-charts?color=%23ff8200)

85 lines (79 loc) 3.82 kB
'use strict'; import _extends from "@babel/runtime/helpers/extends"; import { timePretty, timeCat } from './autoTimeTicksMethod'; import { getText } from '../ChartProvider'; import { getAutoMask } from '../common/common'; // 移入国际化文件中 /* | 间隔 \ 跨度 | 大于半年 | 大于一个月 | 大于一天 | 大于一小时 | 大于一分钟 | 小于分钟 | 小于秒 | | 大于半年 | YYYY | - | - | - | - | - | - | | 大于一个月 | YYYY-MM | YYYY-MM | - | - | - | - | - | | 大于一天 | YYYY-MM-DD | MM-DD | MM-DD | - | - | - | - | | 大于一小时 | YYYY-MM-DD HH:mm | MM-DD HH:mm | MM-DD HH:mm | HH:mm | - | - | - | | 大于一分钟 | YYYY-MM-DD HH:mm | MM-DD HH:mm | MM-DD HH:mm | HH:mm | HH:mm | - | - | | 小于分钟 | YYYY-MM-DD HH:mm:ss | MM-DD HH:mm:ss | MM-DD HH:mm:ss | HH:mm:ss | mm:ss | mm:ss | - | | 小于秒 | YYYY-MM-DD HH:mm:ss | MM-DD HH:mm:ss | MM-DD HH:mm:ss | HH:mm:ss | mm:ss | mm:ss.SSS | mm:ss.SSS | */ function findIndexOfSubStringIn2DArray(needle, haystack) { for (var i = 0; i < haystack.length; i++) { for (var j = 0; j < haystack[i].length; j++) { if (haystack[i][j] === needle) { return [i, j]; } } } // 如果未找到,则返回null或其他合适的默认值 return null; } /** * 自动计算时间格式。 * @param defs {object} 数据列定义 * @param data {array} G2图表实例 * */ export default function (defs, data, language) { var def = defs.x; // 所有的时间刻度计算都走图表库自己内置的(迁移G2的算法) if ((def.type === 'time' || def.type === 'timeCat') && Array.isArray(data) && data[0] && Array.isArray(data[0].data)) { // 格式化另算 if (def.mask === 'auto') { def.mask = getAutoMask(def, data[0].data, language); } else { // 业务自定义国际化处理 // 初始化的mask var sourceMaskMap = getText('timeMask', 'zh-cn', null, true); // 当前语言下的mask var currentMaskMap = getText('timeMask', language, null); // 用户自定义mask var customMask = def.mask; // 获取自定义mask在初始化mask Map下的索引地址 var customMaskIndex = findIndexOfSubStringIn2DArray(customMask, sourceMaskMap); // 得到当前语言下的mask var currentMask = customMaskIndex ? currentMaskMap[customMaskIndex[0]][customMaskIndex[1]] || customMask : customMask; def.mask = currentMask; } // 覆盖G2内置算法 // 默认的tickCount为7,导致时间永远无法获取全量数据 // 这里通过修改tickCount的值为当前X轴的数量,使保底能得到全量数据 if (!def.tickMethod && def.type === 'time') { def.tickMethod = function (cfg) { var values = cfg.values; return timePretty(_extends({}, cfg, def, { // 补充优化逻辑,针对当前画布尺寸适配标签个数 tickCount: def.tickCount || (values === null || values === void 0 ? void 0 : values.length) || 7 })); }; } else if (!def.tickMethod && def.type === 'timeCat') { def.tickMethod = function (cfg) { var values = cfg.values; return timeCat(_extends({}, cfg, def, { tickCount: def.tickCount || (values === null || values === void 0 ? void 0 : values.length) || 7 })); }; } } else { // 分类型默认显示最后一个 if (def.type === 'cat' || def.type === 'timeCat') { def.showLast = true; } } }