plugins/report/public/echarts2/src/util/date.js in admin-sys-1.0.2 vs plugins/report/public/echarts2/src/util/date.js in admin-sys-1.1.0

- old
+ new

@@ -1,162 +1,162 @@ -/** - * echarts日期运算格式化相关 - * - * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。 - * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) - * - */ -define(function() { - var _timeGap = [ - {formatter: 'hh : mm : ss', value: 1000}, // 1s - {formatter: 'hh : mm : ss', value: 1000 * 5}, // 5s - {formatter: 'hh : mm : ss', value: 1000 * 10}, // 10s - {formatter: 'hh : mm : ss', value: 1000 * 15}, // 15s - {formatter: 'hh : mm : ss', value: 1000 * 30}, // 30s - {formatter: 'hh : mm\nMM - dd', value: 60000}, // 1m - {formatter: 'hh : mm\nMM - dd', value: 60000 * 5}, // 5m - {formatter: 'hh : mm\nMM - dd', value: 60000 * 10}, // 10m - {formatter: 'hh : mm\nMM - dd', value: 60000 * 15}, // 15m - {formatter: 'hh : mm\nMM - dd', value: 60000 * 30}, // 30m - {formatter: 'hh : mm\nMM - dd', value: 3600000}, // 1h - {formatter: 'hh : mm\nMM - dd', value: 3600000 * 2}, // 2h - {formatter: 'hh : mm\nMM - dd', value: 3600000 * 6}, // 6h - {formatter: 'hh : mm\nMM - dd', value: 3600000 * 12}, // 12h - {formatter: 'MM - dd\nyyyy', value: 3600000 * 24}, // 1d - {formatter: 'week', value: 3600000 * 24 * 7}, // 7d - {formatter: 'month', value: 3600000 * 24 * 31}, // 1M - {formatter: 'quarter', value: 3600000 * 24 * 380 / 4}, // 3M - {formatter: 'half-year', value: 3600000 * 24 * 380 / 2},// 6M - {formatter: 'year', value: 3600000 * 24 * 380} // 1Y - ]; - - /** - * 获取最佳formatter - * @params {number} min 最小值 - * @params {number} max 最大值 - * @params {=number} splitNumber 分隔段数 - */ - function getAutoFormatter(min, max, splitNumber) { - splitNumber = splitNumber > 1 ? splitNumber : 2; - // 最优解 - var curValue; - var totalGap; - // 目标 - var formatter; - var gapValue; - for (var i = 0, l = _timeGap.length; i < l; i++) { - curValue = _timeGap[i].value; - totalGap = Math.ceil(max / curValue) * curValue - - Math.floor(min / curValue) * curValue; - if (Math.round(totalGap / curValue) <= splitNumber * 1.2) { - formatter = _timeGap[i].formatter; - gapValue = _timeGap[i].value; - // console.log(formatter, gapValue,i); - break; - } - } - - if (formatter == null) { - formatter = 'year'; - curValue = 3600000 * 24 * 367; - totalGap = Math.ceil(max / curValue) * curValue - - Math.floor(min / curValue) * curValue; - gapValue = Math.round(totalGap / (splitNumber - 1) / curValue) * curValue; - } - - return { - formatter: formatter, - gapValue: gapValue - }; - } - - /** - * 一位数字补0 - */ - function s2d (v) { - return v < 10 ? ('0' + v) : v; - } - - /** - * 百分比计算 - */ - function format(formatter, value) { - if (formatter == 'week' - || formatter == 'month' - || formatter == 'quarter' - || formatter == 'half-year' - || formatter == 'year' - ) { - formatter = 'MM - dd\nyyyy'; - } - - var date = getNewDate(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(); - - formatter = formatter.replace('MM', s2d(M)); - formatter = formatter.toLowerCase(); - formatter = formatter.replace('yyyy', y); - formatter = formatter.replace('yy', y % 100); - formatter = formatter.replace('dd', s2d(d)); - formatter = formatter.replace('d', d); - formatter = formatter.replace('hh', s2d(h)); - formatter = formatter.replace('h', h); - formatter = formatter.replace('mm', s2d(m)); - formatter = formatter.replace('m', m); - formatter = formatter.replace('ss', s2d(s)); - formatter = formatter.replace('s', s); - - return formatter; - } - - function nextMonday(value) { - value = getNewDate(value); - value.setDate(value.getDate() + 8 - value.getDay()); - return value; - } - - function nextNthPerNmonth(value, nth, nmon) { - value = getNewDate(value); - value.setMonth(Math.ceil((value.getMonth() + 1) / nmon) * nmon); - value.setDate(nth); - return value; - } - - function nextNthOnMonth(value, nth) { - return nextNthPerNmonth(value, nth, 1); - } - - function nextNthOnQuarterYear(value, nth) { - return nextNthPerNmonth(value, nth, 3); - } - - function nextNthOnHalfYear(value, nth) { - return nextNthPerNmonth(value, nth, 6); - } - - function nextNthOnYear(value, nth) { - return nextNthPerNmonth(value, nth, 12); - } - - function getNewDate(value) { - return value instanceof Date - ? value - : new Date(typeof value == 'string' ? value.replace(/-/g, '/') : value); - } - - return { - getAutoFormatter: getAutoFormatter, - getNewDate: getNewDate, - format: format, - nextMonday: nextMonday, - nextNthPerNmonth: nextNthPerNmonth, - nextNthOnMonth: nextNthOnMonth, - nextNthOnQuarterYear: nextNthOnQuarterYear, - nextNthOnHalfYear: nextNthOnHalfYear, - nextNthOnYear : nextNthOnYear - }; +/** + * echarts日期运算格式化相关 + * + * @desc echarts基于Canvas,纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据统计图表。 + * @author Kener (@Kener-林峰, kener.linfeng@gmail.com) + * + */ +define(function() { + var _timeGap = [ + {formatter: 'hh : mm : ss', value: 1000}, // 1s + {formatter: 'hh : mm : ss', value: 1000 * 5}, // 5s + {formatter: 'hh : mm : ss', value: 1000 * 10}, // 10s + {formatter: 'hh : mm : ss', value: 1000 * 15}, // 15s + {formatter: 'hh : mm : ss', value: 1000 * 30}, // 30s + {formatter: 'hh : mm\nMM - dd', value: 60000}, // 1m + {formatter: 'hh : mm\nMM - dd', value: 60000 * 5}, // 5m + {formatter: 'hh : mm\nMM - dd', value: 60000 * 10}, // 10m + {formatter: 'hh : mm\nMM - dd', value: 60000 * 15}, // 15m + {formatter: 'hh : mm\nMM - dd', value: 60000 * 30}, // 30m + {formatter: 'hh : mm\nMM - dd', value: 3600000}, // 1h + {formatter: 'hh : mm\nMM - dd', value: 3600000 * 2}, // 2h + {formatter: 'hh : mm\nMM - dd', value: 3600000 * 6}, // 6h + {formatter: 'hh : mm\nMM - dd', value: 3600000 * 12}, // 12h + {formatter: 'MM - dd\nyyyy', value: 3600000 * 24}, // 1d + {formatter: 'week', value: 3600000 * 24 * 7}, // 7d + {formatter: 'month', value: 3600000 * 24 * 31}, // 1M + {formatter: 'quarter', value: 3600000 * 24 * 380 / 4}, // 3M + {formatter: 'half-year', value: 3600000 * 24 * 380 / 2},// 6M + {formatter: 'year', value: 3600000 * 24 * 380} // 1Y + ]; + + /** + * 获取最佳formatter + * @params {number} min 最小值 + * @params {number} max 最大值 + * @params {=number} splitNumber 分隔段数 + */ + function getAutoFormatter(min, max, splitNumber) { + splitNumber = splitNumber > 1 ? splitNumber : 2; + // 最优解 + var curValue; + var totalGap; + // 目标 + var formatter; + var gapValue; + for (var i = 0, l = _timeGap.length; i < l; i++) { + curValue = _timeGap[i].value; + totalGap = Math.ceil(max / curValue) * curValue + - Math.floor(min / curValue) * curValue; + if (Math.round(totalGap / curValue) <= splitNumber * 1.2) { + formatter = _timeGap[i].formatter; + gapValue = _timeGap[i].value; + // console.log(formatter, gapValue,i); + break; + } + } + + if (formatter == null) { + formatter = 'year'; + curValue = 3600000 * 24 * 367; + totalGap = Math.ceil(max / curValue) * curValue + - Math.floor(min / curValue) * curValue; + gapValue = Math.round(totalGap / (splitNumber - 1) / curValue) * curValue; + } + + return { + formatter: formatter, + gapValue: gapValue + }; + } + + /** + * 一位数字补0 + */ + function s2d (v) { + return v < 10 ? ('0' + v) : v; + } + + /** + * 百分比计算 + */ + function format(formatter, value) { + if (formatter == 'week' + || formatter == 'month' + || formatter == 'quarter' + || formatter == 'half-year' + || formatter == 'year' + ) { + formatter = 'MM - dd\nyyyy'; + } + + var date = getNewDate(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(); + + formatter = formatter.replace('MM', s2d(M)); + formatter = formatter.toLowerCase(); + formatter = formatter.replace('yyyy', y); + formatter = formatter.replace('yy', y % 100); + formatter = formatter.replace('dd', s2d(d)); + formatter = formatter.replace('d', d); + formatter = formatter.replace('hh', s2d(h)); + formatter = formatter.replace('h', h); + formatter = formatter.replace('mm', s2d(m)); + formatter = formatter.replace('m', m); + formatter = formatter.replace('ss', s2d(s)); + formatter = formatter.replace('s', s); + + return formatter; + } + + function nextMonday(value) { + value = getNewDate(value); + value.setDate(value.getDate() + 8 - value.getDay()); + return value; + } + + function nextNthPerNmonth(value, nth, nmon) { + value = getNewDate(value); + value.setMonth(Math.ceil((value.getMonth() + 1) / nmon) * nmon); + value.setDate(nth); + return value; + } + + function nextNthOnMonth(value, nth) { + return nextNthPerNmonth(value, nth, 1); + } + + function nextNthOnQuarterYear(value, nth) { + return nextNthPerNmonth(value, nth, 3); + } + + function nextNthOnHalfYear(value, nth) { + return nextNthPerNmonth(value, nth, 6); + } + + function nextNthOnYear(value, nth) { + return nextNthPerNmonth(value, nth, 12); + } + + function getNewDate(value) { + return value instanceof Date + ? value + : new Date(typeof value == 'string' ? value.replace(/-/g, '/') : value); + } + + return { + getAutoFormatter: getAutoFormatter, + getNewDate: getNewDate, + format: format, + nextMonday: nextMonday, + nextNthPerNmonth: nextNthPerNmonth, + nextNthOnMonth: nextNthOnMonth, + nextNthOnQuarterYear: nextNthOnQuarterYear, + nextNthOnHalfYear: nextNthOnHalfYear, + nextNthOnYear : nextNthOnYear + }; }); \ No newline at end of file