cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
221 lines (220 loc) • 8.34 kB
JavaScript
import { isString, isFunction, extend, defaults, isArray, isNumber } from "../../../zrender/lib/core/util.mjs";
import { parseDate } from "./number.mjs";
import { getLocaleModel, getDefaultLocaleModel, SYSTEM_LANG } from "../core/locale.mjs";
import Model from "../model/Model.mjs";
var ONE_SECOND = 1e3;
var ONE_MINUTE = ONE_SECOND * 60;
var ONE_HOUR = ONE_MINUTE * 60;
var ONE_DAY = ONE_HOUR * 24;
var ONE_YEAR = ONE_DAY * 365;
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}";
var fullLeveledFormatter = {
year: "{yyyy}",
month: "{yyyy}-{MM}",
day: fullDayFormatter,
hour: fullDayFormatter + " " + defaultLeveledFormatter.hour,
minute: fullDayFormatter + " " + defaultLeveledFormatter.minute,
second: fullDayFormatter + " " + defaultLeveledFormatter.second,
millisecond: defaultLeveledFormatter.none
};
var primaryTimeUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"];
var timeUnits = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"];
function pad(str, len) {
str += "";
return "0000".substr(0, len - str.length) + str;
}
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:
return timeUnit;
}
}
function isPrimaryTimeUnit(timeUnit) {
return timeUnit === getPrimaryTimeUnit(timeUnit);
}
function getDefaultFormatPrecisionOfInterval(timeUnit) {
switch (timeUnit) {
case "year":
case "month":
return "day";
case "millisecond":
return "millisecond";
default:
return "second";
}
}
function format(time, template, isUTC, lang) {
var date = 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, y % 100 + "").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 + "");
}
function leveledFormat(tick, idx, formatter, lang, isUTC) {
var template = null;
if (isString(formatter)) {
template = formatter;
} else if (isFunction(formatter)) {
template = formatter(tick.value, idx, {
level: tick.level
});
} else {
var defaults$1 = extend({}, defaultLeveledFormatter);
if (tick.level > 0) {
for (var i = 0; i < primaryTimeUnits.length; ++i) {
defaults$1[primaryTimeUnits[i]] = "{primary|" + defaults$1[primaryTimeUnits[i]] + "}";
}
}
var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults(formatter, defaults$1) : defaults$1;
var unit = getUnitFromValue(tick.value, isUTC);
if (mergedFormatter[unit]) {
template = mergedFormatter[unit];
} else if (mergedFormatter.inherit) {
var targetId = timeUnits.indexOf(unit);
for (var i = targetId - 1; i >= 0; --i) {
if (mergedFormatter[unit]) {
template = mergedFormatter[unit];
break;
}
}
template = template || defaults$1.none;
}
if (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);
}
function getUnitFromValue(value, isUTC) {
var date = 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";
}
}
function getUnitValue(value, unit, isUTC) {
var date = isNumber(value) ? 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)]();
}
}
function fullYearGetterName(isUTC) {
return isUTC ? "getUTCFullYear" : "getFullYear";
}
function monthGetterName(isUTC) {
return isUTC ? "getUTCMonth" : "getMonth";
}
function dateGetterName(isUTC) {
return isUTC ? "getUTCDate" : "getDate";
}
function hoursGetterName(isUTC) {
return isUTC ? "getUTCHours" : "getHours";
}
function minutesGetterName(isUTC) {
return isUTC ? "getUTCMinutes" : "getMinutes";
}
function secondsGetterName(isUTC) {
return isUTC ? "getUTCSeconds" : "getSeconds";
}
function millisecondsGetterName(isUTC) {
return isUTC ? "getUTCMilliseconds" : "getMilliseconds";
}
function fullYearSetterName(isUTC) {
return isUTC ? "setUTCFullYear" : "setFullYear";
}
function monthSetterName(isUTC) {
return isUTC ? "setUTCMonth" : "setMonth";
}
function dateSetterName(isUTC) {
return isUTC ? "setUTCDate" : "setDate";
}
function hoursSetterName(isUTC) {
return isUTC ? "setUTCHours" : "setHours";
}
function minutesSetterName(isUTC) {
return isUTC ? "setUTCMinutes" : "setMinutes";
}
function secondsSetterName(isUTC) {
return isUTC ? "setUTCSeconds" : "setSeconds";
}
function millisecondsSetterName(isUTC) {
return isUTC ? "setUTCMilliseconds" : "setMilliseconds";
}
export { ONE_DAY, ONE_HOUR, ONE_MINUTE, ONE_SECOND, ONE_YEAR, dateGetterName, dateSetterName, defaultLeveledFormatter, format, fullLeveledFormatter, fullYearGetterName, fullYearSetterName, getDefaultFormatPrecisionOfInterval, getPrimaryTimeUnit, getUnitFromValue, getUnitValue, hoursGetterName, hoursSetterName, isPrimaryTimeUnit, leveledFormat, millisecondsGetterName, millisecondsSetterName, minutesGetterName, minutesSetterName, monthGetterName, monthSetterName, pad, primaryTimeUnits, secondsGetterName, secondsSetterName, timeUnits };