72 lines
2.3 KiB
JavaScript
72 lines
2.3 KiB
JavaScript
import { computed, ref, reactive } from 'vue';
|
|
import { useI18n } from 'vue-i18n';
|
|
import { defineStore } from 'pinia';
|
|
|
|
export const useWeekdayStore = defineStore('weekdayStore', () => {
|
|
const weekdays = [
|
|
{ code: 'sun', name: 'Sunday' },
|
|
{ code: 'mon', name: 'Monday' },
|
|
{ code: 'tue', name: 'Tuesday' },
|
|
{ code: 'wed', name: 'Wednesday' },
|
|
{ code: 'thu', name: 'Thursday' },
|
|
{ code: 'fri', name: 'Friday' },
|
|
{ code: 'sat', name: 'Saturday' },
|
|
];
|
|
|
|
const localeOrder = {
|
|
es: ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'],
|
|
en: ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
|
|
};
|
|
|
|
const { t, locale } = useI18n();
|
|
const localeWeekdays = ref([]);
|
|
const weekdaysMap = reactive({});
|
|
|
|
const initStore = () => {
|
|
getWeekdaysMap();
|
|
getLocales();
|
|
console.log('weekdaysMap:: ', weekdaysMap);
|
|
};
|
|
|
|
const getWeekdaysMap = () => {
|
|
if (Object.keys(weekdaysMap).length > 0) return weekdaysMap;
|
|
|
|
weekdays.forEach((day, i) => {
|
|
const obj = {
|
|
...day,
|
|
index: i,
|
|
char: day.name.substr(0, 1),
|
|
abr: day.name.substr(0, 3),
|
|
locale: t(`weekdays.${day.code}`),
|
|
localeChar: t(`weekdays.${day.code}`).substr(0, 1),
|
|
localeAbr: t(`weekdays.${day.code}`).substr(0, 3),
|
|
};
|
|
weekdaysMap[day.code] = obj;
|
|
});
|
|
};
|
|
|
|
const getLocales = () => {
|
|
if (localeWeekdays.value.length > 0) return localeWeekdays.value;
|
|
for (let code of localeOrder.es) {
|
|
console.log('code:: ', code);
|
|
localeWeekdays.value.push(weekdaysMap[code]);
|
|
}
|
|
console.log('localeWeekdays:: ', localeWeekdays.value);
|
|
return localeWeekdays.value;
|
|
};
|
|
|
|
// const orderLocales = (weekDaysArray) => {
|
|
// const order = localeOrder[locale.value] || localeOrder.en;
|
|
// const orderedLocales = [];
|
|
// for (let code of order) orderedLocales.push(weekDaysArray[code]);
|
|
// // return order.map((code) => localeWeekdays.value.find((day) => day.code === code));
|
|
// };
|
|
|
|
return {
|
|
initStore,
|
|
getLocales,
|
|
localeWeekdays,
|
|
weekdaysMap,
|
|
};
|
|
});
|