UNPKG

tav-ui

Version:
85 lines (82 loc) 3.37 kB
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