tav-ui
Version:
85 lines (82 loc) • 3.37 kB
JavaScript
import { defineComponent, ref, watch, openBlock, createElementBlock, toDisplayString } from 'vue';
import { useIntervalFn } from '@vueuse/core';
import { formatToDateTime, formatToDate, dateUtil } from '../../../utils/dateUtil2.mjs';
import { isNumber, isString, isObject } from '../../../utils/is2.mjs';
import '../../../locales/index2.mjs';
import { timeProps } from './types2.mjs';
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
import { tavI18n } from '../../../locales/transfer2.mjs';
const ONE_SECONDS = 1e3 * 1;
const ONE_MINUTES = ONE_SECONDS * 60;
const ONE_HOUR = ONE_MINUTES * 60;
const ONE_DAY = ONE_HOUR * 24;
const _sfc_main = defineComponent({
name: "TaTime",
props: timeProps,
setup(props) {
const date = ref("");
useIntervalFn(setTime, props.step * ONE_SECONDS);
watch(() => props.value, () => {
setTime();
}, { immediate: true });
function getTime() {
const { value } = props;
let time = 0;
if (isNumber(value)) {
const timestamp = value.toString().length > 10 ? value : value * 1e3;
time = new Date(timestamp).getTime();
} else if (isString(value)) {
time = new Date(value).getTime();
} else if (isObject(value)) {
time = value.getTime();
}
return time;
}
function setTime() {
const { mode, value } = props;
const time = getTime();
if (mode === "relative") {
date.value = getRelativeTime(time);
} else {
if (mode === "datetime")
date.value = formatToDateTime(value);
else if (mode === "date")
date.value = formatToDate(value);
}
}
function getRelativeTime(timeStamp) {
const currentTime = new Date().getTime();
const isBefore = dateUtil(timeStamp).isBefore(currentTime);
let diff = currentTime - timeStamp;
if (!isBefore)
diff = -diff;
let resStr = "";
const dirStr = isBefore ? tavI18n("Tav.time.1") : tavI18n("Tav.time.2");
if (diff < ONE_SECONDS) {
resStr = tavI18n("Tav.time.3");
} else if (diff < ONE_MINUTES) {
const result = (diff / ONE_SECONDS).toString();
resStr = `${parseInt(result)}${tavI18n("Tav.time.4")}${dirStr}`;
} else if (diff >= ONE_MINUTES && diff < ONE_HOUR) {
resStr = `${Math.floor(diff / ONE_MINUTES)}${tavI18n("Tav.time.5")}${dirStr}`;
} else if (diff >= ONE_HOUR && diff < ONE_DAY) {
resStr = `${Math.floor(diff / ONE_HOUR)}${tavI18n("Tav.time.6")}${dirStr}`;
} else if (diff >= ONE_DAY && diff < 262386e4) {
resStr = `${Math.floor(diff / ONE_DAY)}${tavI18n("Tav.time.7")}${dirStr}`;
} else if (diff >= 262386e4 && diff <= 3156786e4 && isBefore) {
resStr = dateUtil(timeStamp).format("MM-DD-HH-mm");
} else {
resStr = dateUtil(timeStamp).format("YYYY");
}
return resStr;
}
return { date };
}
});
const _hoisted_1 = { class: "ta-time" };
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(_ctx.date), 1);
}
var Time = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/time/src/time.vue"]]);
export { Time as default };
//# sourceMappingURL=time2.mjs.map