115 lines
3.4 KiB
JavaScript
115 lines
3.4 KiB
JavaScript
import { i18n } from 'src/boot/i18n';
|
|
import { date as qdate, format } from 'quasar';
|
|
const { pad } = format;
|
|
|
|
export function currency(val) {
|
|
return typeof val === 'number' ? val.toFixed(2) + '€' : val;
|
|
}
|
|
|
|
export function date(val, format) {
|
|
if (val == null) return val;
|
|
if (!(val instanceof Date)) {
|
|
val = new Date(val);
|
|
}
|
|
return qdate.formatDate(val, format, i18n.global.tm('date'));
|
|
}
|
|
|
|
export const formatDate = (timeStamp, format = 'YYYY-MM-DD') => {
|
|
if (!timeStamp) return '';
|
|
const { messages, locale } = i18n.global;
|
|
|
|
return qdate.formatDate(timeStamp, format, {
|
|
days: messages.value[locale.value].date.days,
|
|
months: messages.value[locale.value].date.months,
|
|
daysShort: messages.value[locale.value].date.daysShort,
|
|
monthsShort: messages.value[locale.value].date.monthsShort
|
|
});
|
|
};
|
|
|
|
/**
|
|
* @param {Date} timeStamp - La marca de tiempo que se va a formatear. Si no se proporciona, la función devolverá una cadena vacía.
|
|
* @param {Object} options - Un objeto que contiene las opciones de formato.
|
|
* @param {boolean} options.showTime - Indica si se debe mostrar la hora en el formato de la fecha.
|
|
* @param {boolean} options.showSeconds - Indica si se deben mostrar los segundos en el formato de la hora. Solo se aplica si showTime es true.
|
|
* @param {boolean} options.shortDay - Indica si se debe usar una versión corta del día (por ejemplo, "Mon" en lugar de "Monday").
|
|
* @returns {string} La fecha formateada como un título.
|
|
*/
|
|
export const formatDateTitle = (
|
|
timeStamp,
|
|
options = { showTime: false, showSeconds: false, shortDay: false }
|
|
) => {
|
|
if (!timeStamp) return '';
|
|
const { t } = i18n.global;
|
|
|
|
const timeFormat = options.showTime
|
|
? options.showSeconds
|
|
? ` [${t('at')}] hh:mm:ss`
|
|
: ` [${t('at')}] hh:mm`
|
|
: '';
|
|
const day = options.shortDay ? 'dd' : 'dddd';
|
|
|
|
const formatString = `${day}, D [${t('of')}] MMMM [${t('of')}] YYYY${timeFormat}`;
|
|
|
|
const formattedString = formatDate(timeStamp, formatString);
|
|
return formattedString;
|
|
};
|
|
|
|
export function relDate(val) {
|
|
if (val == null) return val;
|
|
if (!(val instanceof Date)) {
|
|
val = new Date(val);
|
|
}
|
|
|
|
const dif = qdate.getDateDiff(new Date(), val, 'days');
|
|
let day;
|
|
|
|
switch (dif) {
|
|
case 0:
|
|
day = 'today';
|
|
break;
|
|
case 1:
|
|
day = 'yesterday';
|
|
break;
|
|
case -1:
|
|
day = 'tomorrow';
|
|
break;
|
|
}
|
|
|
|
if (day) {
|
|
day = i18n.global.t(day);
|
|
} else {
|
|
if (dif > 0 && dif <= 7) {
|
|
day = qdate.formatDate(val, 'ddd', i18n.global.tm('date'));
|
|
} else {
|
|
day = qdate.formatDate(val, 'ddd, MMMM Do', i18n.global.tm('date'));
|
|
}
|
|
}
|
|
|
|
return day;
|
|
}
|
|
|
|
export function relTime(val) {
|
|
if (val == null) return val;
|
|
if (!(val instanceof Date)) {
|
|
val = new Date(val);
|
|
}
|
|
return relDate(val) + ' ' + qdate.formatDate(val, 'H:mm:ss');
|
|
}
|
|
|
|
export function elapsedTime(val) {
|
|
if (val == null) return val;
|
|
if (!(val instanceof Date)) {
|
|
val = new Date(val);
|
|
}
|
|
const now = new Date().getTime();
|
|
val = Math.floor((now - val.getTime()) / 1000);
|
|
|
|
const hours = Math.floor(val / 3600);
|
|
val -= hours * 3600;
|
|
const minutes = Math.floor(val / 60);
|
|
val -= minutes * 60;
|
|
const seconds = val;
|
|
|
|
return `${pad(hours, 2)}:${pad(minutes, 2)}:${pad(seconds, 2)}`;
|
|
}
|