You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
294 lines
9.9 KiB
294 lines
9.9 KiB
|
|
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one |
|
* or more contributor license agreements. See the NOTICE file |
|
* distributed with this work for additional information |
|
* regarding copyright ownership. The ASF licenses this file |
|
* to you under the Apache License, Version 2.0 (the |
|
* "License"); you may not use this file except in compliance |
|
* with the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, |
|
* software distributed under the License is distributed on an |
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|
* KIND, either express or implied. See the License for the |
|
* specific language governing permissions and limitations |
|
* under the License. |
|
*/ |
|
|
|
|
|
/** |
|
* AUTO-GENERATED FILE. DO NOT MODIFY. |
|
*/ |
|
|
|
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one |
|
* or more contributor license agreements. See the NOTICE file |
|
* distributed with this work for additional information |
|
* regarding copyright ownership. The ASF licenses this file |
|
* to you under the Apache License, Version 2.0 (the |
|
* "License"); you may not use this file except in compliance |
|
* with the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, |
|
* software distributed under the License is distributed on an |
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|
* KIND, either express or implied. See the License for the |
|
* specific language governing permissions and limitations |
|
* under the License. |
|
*/ |
|
import * as zrUtil from 'zrender/lib/core/util.js'; |
|
import * as numberUtil from './number.js'; |
|
import { getDefaultLocaleModel, getLocaleModel, SYSTEM_LANG } from '../core/locale.js'; |
|
import Model from '../model/Model.js'; |
|
export var ONE_SECOND = 1000; |
|
export var ONE_MINUTE = ONE_SECOND * 60; |
|
export var ONE_HOUR = ONE_MINUTE * 60; |
|
export var ONE_DAY = ONE_HOUR * 24; |
|
export var ONE_YEAR = ONE_DAY * 365; |
|
export var defaultLeveledFormatter = { |
|
year: '{yyyy}', |
|
month: '{MMM}', |
|
day: '{d}', |
|
hour: '{HH}:{mm}', |
|
minute: '{HH}:{mm}', |
|
second: '{HH}:{mm}:{ss}', |
|
millisecond: '{HH}:{mm}:{ss} {SSS}', |
|
none: '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}' |
|
}; |
|
var fullDayFormatter = '{yyyy}-{MM}-{dd}'; |
|
export var fullLeveledFormatter = { |
|
year: '{yyyy}', |
|
month: '{yyyy}-{MM}', |
|
day: fullDayFormatter, |
|
hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour, |
|
minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute, |
|
second: fullDayFormatter + ' ' + defaultLeveledFormatter.second, |
|
millisecond: defaultLeveledFormatter.none |
|
}; |
|
export var primaryTimeUnits = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond']; |
|
export var timeUnits = ['year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day', 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond']; |
|
export function pad(str, len) { |
|
str += ''; |
|
return '0000'.substr(0, len - str.length) + str; |
|
} |
|
export function getPrimaryTimeUnit(timeUnit) { |
|
switch (timeUnit) { |
|
case 'half-year': |
|
case 'quarter': |
|
return 'month'; |
|
|
|
case 'week': |
|
case 'half-week': |
|
return 'day'; |
|
|
|
case 'half-day': |
|
case 'quarter-day': |
|
return 'hour'; |
|
|
|
default: |
|
// year, minutes, second, milliseconds |
|
return timeUnit; |
|
} |
|
} |
|
export function isPrimaryTimeUnit(timeUnit) { |
|
return timeUnit === getPrimaryTimeUnit(timeUnit); |
|
} |
|
export function getDefaultFormatPrecisionOfInterval(timeUnit) { |
|
switch (timeUnit) { |
|
case 'year': |
|
case 'month': |
|
return 'day'; |
|
|
|
case 'millisecond': |
|
return 'millisecond'; |
|
|
|
default: |
|
// Also for day, hour, minute, second |
|
return 'second'; |
|
} |
|
} |
|
export function format( // Note: The result based on `isUTC` are totally different, which can not be just simply |
|
// substituted by the result without `isUTC`. So we make the param `isUTC` mandatory. |
|
time, template, isUTC, lang) { |
|
var date = numberUtil.parseDate(time); |
|
var y = date[fullYearGetterName(isUTC)](); |
|
var M = date[monthGetterName(isUTC)]() + 1; |
|
var q = Math.floor((M - 1) / 3) + 1; |
|
var d = date[dateGetterName(isUTC)](); |
|
var e = date['get' + (isUTC ? 'UTC' : '') + 'Day'](); |
|
var H = date[hoursGetterName(isUTC)](); |
|
var h = (H - 1) % 12 + 1; |
|
var m = date[minutesGetterName(isUTC)](); |
|
var s = date[secondsGetterName(isUTC)](); |
|
var S = date[millisecondsGetterName(isUTC)](); |
|
var localeModel = lang instanceof Model ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel(); |
|
var timeModel = localeModel.getModel('time'); |
|
var month = timeModel.get('month'); |
|
var monthAbbr = timeModel.get('monthAbbr'); |
|
var dayOfWeek = timeModel.get('dayOfWeek'); |
|
var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr'); |
|
return (template || '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, pad(y % 100 + '', 2)).replace(/{Q}/g, q + '').replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, dayOfWeek[e]).replace(/{ee}/g, dayOfWeekAbbr[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + ''); |
|
} |
|
export function leveledFormat(tick, idx, formatter, lang, isUTC) { |
|
var template = null; |
|
|
|
if (zrUtil.isString(formatter)) { |
|
// Single formatter for all units at all levels |
|
template = formatter; |
|
} else if (zrUtil.isFunction(formatter)) { |
|
// Callback formatter |
|
template = formatter(tick.value, idx, { |
|
level: tick.level |
|
}); |
|
} else { |
|
var defaults = zrUtil.extend({}, defaultLeveledFormatter); |
|
|
|
if (tick.level > 0) { |
|
for (var i = 0; i < primaryTimeUnits.length; ++i) { |
|
defaults[primaryTimeUnits[i]] = "{primary|" + defaults[primaryTimeUnits[i]] + "}"; |
|
} |
|
} |
|
|
|
var mergedFormatter = formatter ? formatter.inherit === false ? formatter // Use formatter with bigger units |
|
: zrUtil.defaults(formatter, defaults) : defaults; |
|
var unit = getUnitFromValue(tick.value, isUTC); |
|
|
|
if (mergedFormatter[unit]) { |
|
template = mergedFormatter[unit]; |
|
} else if (mergedFormatter.inherit) { |
|
// Unit formatter is not defined and should inherit from bigger units |
|
var targetId = timeUnits.indexOf(unit); |
|
|
|
for (var i = targetId - 1; i >= 0; --i) { |
|
if (mergedFormatter[unit]) { |
|
template = mergedFormatter[unit]; |
|
break; |
|
} |
|
} |
|
|
|
template = template || defaults.none; |
|
} |
|
|
|
if (zrUtil.isArray(template)) { |
|
var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level; |
|
levelId = Math.min(levelId, template.length - 1); |
|
template = template[levelId]; |
|
} |
|
} |
|
|
|
return format(new Date(tick.value), template, isUTC, lang); |
|
} |
|
export function getUnitFromValue(value, isUTC) { |
|
var date = numberUtil.parseDate(value); |
|
var M = date[monthGetterName(isUTC)]() + 1; |
|
var d = date[dateGetterName(isUTC)](); |
|
var h = date[hoursGetterName(isUTC)](); |
|
var m = date[minutesGetterName(isUTC)](); |
|
var s = date[secondsGetterName(isUTC)](); |
|
var S = date[millisecondsGetterName(isUTC)](); |
|
var isSecond = S === 0; |
|
var isMinute = isSecond && s === 0; |
|
var isHour = isMinute && m === 0; |
|
var isDay = isHour && h === 0; |
|
var isMonth = isDay && d === 1; |
|
var isYear = isMonth && M === 1; |
|
|
|
if (isYear) { |
|
return 'year'; |
|
} else if (isMonth) { |
|
return 'month'; |
|
} else if (isDay) { |
|
return 'day'; |
|
} else if (isHour) { |
|
return 'hour'; |
|
} else if (isMinute) { |
|
return 'minute'; |
|
} else if (isSecond) { |
|
return 'second'; |
|
} else { |
|
return 'millisecond'; |
|
} |
|
} |
|
export function getUnitValue(value, unit, isUTC) { |
|
var date = zrUtil.isNumber(value) ? numberUtil.parseDate(value) : value; |
|
unit = unit || getUnitFromValue(value, isUTC); |
|
|
|
switch (unit) { |
|
case 'year': |
|
return date[fullYearGetterName(isUTC)](); |
|
|
|
case 'half-year': |
|
return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0; |
|
|
|
case 'quarter': |
|
return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4); |
|
|
|
case 'month': |
|
return date[monthGetterName(isUTC)](); |
|
|
|
case 'day': |
|
return date[dateGetterName(isUTC)](); |
|
|
|
case 'half-day': |
|
return date[hoursGetterName(isUTC)]() / 24; |
|
|
|
case 'hour': |
|
return date[hoursGetterName(isUTC)](); |
|
|
|
case 'minute': |
|
return date[minutesGetterName(isUTC)](); |
|
|
|
case 'second': |
|
return date[secondsGetterName(isUTC)](); |
|
|
|
case 'millisecond': |
|
return date[millisecondsGetterName(isUTC)](); |
|
} |
|
} |
|
export function fullYearGetterName(isUTC) { |
|
return isUTC ? 'getUTCFullYear' : 'getFullYear'; |
|
} |
|
export function monthGetterName(isUTC) { |
|
return isUTC ? 'getUTCMonth' : 'getMonth'; |
|
} |
|
export function dateGetterName(isUTC) { |
|
return isUTC ? 'getUTCDate' : 'getDate'; |
|
} |
|
export function hoursGetterName(isUTC) { |
|
return isUTC ? 'getUTCHours' : 'getHours'; |
|
} |
|
export function minutesGetterName(isUTC) { |
|
return isUTC ? 'getUTCMinutes' : 'getMinutes'; |
|
} |
|
export function secondsGetterName(isUTC) { |
|
return isUTC ? 'getUTCSeconds' : 'getSeconds'; |
|
} |
|
export function millisecondsGetterName(isUTC) { |
|
return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds'; |
|
} |
|
export function fullYearSetterName(isUTC) { |
|
return isUTC ? 'setUTCFullYear' : 'setFullYear'; |
|
} |
|
export function monthSetterName(isUTC) { |
|
return isUTC ? 'setUTCMonth' : 'setMonth'; |
|
} |
|
export function dateSetterName(isUTC) { |
|
return isUTC ? 'setUTCDate' : 'setDate'; |
|
} |
|
export function hoursSetterName(isUTC) { |
|
return isUTC ? 'setUTCHours' : 'setHours'; |
|
} |
|
export function minutesSetterName(isUTC) { |
|
return isUTC ? 'setUTCMinutes' : 'setMinutes'; |
|
} |
|
export function secondsSetterName(isUTC) { |
|
return isUTC ? 'setUTCSeconds' : 'setSeconds'; |
|
} |
|
export function millisecondsSetterName(isUTC) { |
|
return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds'; |
|
} |