171 lines
4.6 KiB
TypeScript
Executable File
171 lines
4.6 KiB
TypeScript
Executable File
import dayjs from "dayjs";
|
|
|
|
export interface ItemObject {
|
|
id: string;
|
|
date: number;
|
|
slug: string;
|
|
type: string;
|
|
place: string;
|
|
city: string;
|
|
state: string;
|
|
country: string;
|
|
thumbnail: string;
|
|
}
|
|
|
|
export interface FilesObject {
|
|
youtube?: string;
|
|
video?: string;
|
|
audio?: string;
|
|
booklet?: string;
|
|
simple?: string;
|
|
}
|
|
|
|
export function formatFiles( files:FilesObject ){
|
|
const { $i18n } = useNuxtApp();
|
|
const t = $i18n.t;
|
|
|
|
let items = []
|
|
if (files) {
|
|
if (files.youtube) {
|
|
items.push({
|
|
to: files.youtube,
|
|
target: '_blank',
|
|
label: 'Youtube',
|
|
icon: 'ph:youtube-logo-thin',
|
|
labelClass: 'text-xs',
|
|
})
|
|
}
|
|
if (files.video) {
|
|
items.push({
|
|
to: files.video,
|
|
target: '_blank',
|
|
label: t('Activities.video'),
|
|
icon: 'ph:file-video-thin',
|
|
labelClass: 'text-xs'
|
|
})
|
|
}
|
|
if (files.audio) {
|
|
items.push({
|
|
to: files.audio,
|
|
target: '_blank',
|
|
label: t('Activities.audio'),
|
|
icon: 'ph:file-audio-thin',
|
|
labelClass: 'text-xs'
|
|
})
|
|
}
|
|
if (files.booklet) {
|
|
items.push({
|
|
to: files.booklet,
|
|
target: '_blank',
|
|
label: t('Activities.book'),
|
|
icon: 'ph:notebook-thin',
|
|
labelClass: 'text-xs'
|
|
})
|
|
}
|
|
if (files.simple) {
|
|
items.push({
|
|
to: files.simple,
|
|
target: '_blank',
|
|
label: t('Activities.simple'),
|
|
icon: 'ph:note-thin',
|
|
labelClass: 'text-xs'
|
|
})
|
|
}
|
|
}
|
|
return items
|
|
}
|
|
|
|
export function formatDate( d:number ){
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
|
|
let date = new Date(d * 1000)
|
|
|
|
let dateString = date.toLocaleString(locale.value, { year: 'numeric', month:'long', day: 'numeric', weekday:'long', timeZone:'UTC' })
|
|
return capitalizeFirstLetter( dateString );
|
|
}
|
|
|
|
export function formatLocation( i: ItemObject){
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
const regionNames = new Intl.DisplayNames(
|
|
[ locale.value], {type: 'region'}
|
|
);
|
|
|
|
var locationParts = [];
|
|
locationParts.push(i?.place);
|
|
locationParts.push(i?.city);
|
|
locationParts.push(i?.state);
|
|
if( i.country ){
|
|
locationParts.push(regionNames.of(i.country));
|
|
}
|
|
|
|
return locationParts.filter(Boolean).join(', ');
|
|
}
|
|
|
|
export function getDay( d:number ){
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
let date = new Date(d * 1000);
|
|
|
|
return date.toLocaleString(locale.value, { weekday: 'long', timeZone: 'utc' });
|
|
}
|
|
|
|
export function getDayDate( d:number ){
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
let date = new Date(d * 1000);
|
|
|
|
return date.toLocaleString(locale.value, { day: 'numeric', timeZone: 'utc' });
|
|
}
|
|
|
|
export function getMonth( d:number ){
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
let date = new Date(d * 1000);
|
|
|
|
return date.toLocaleString(locale.value, { month: 'long', timeZone: 'utc' });
|
|
}
|
|
|
|
export function setUrl( item:ItemObject, isSearch:boolean ) {
|
|
const { $i18n } = useNuxtApp();
|
|
const locale = $i18n.locale;
|
|
const date = dayjs(item.date*1000);
|
|
const month = (date.month()+1).toString()
|
|
const slug = (item.slug || item.slug === 'undefined' ? item.slug : item.id);
|
|
|
|
if( isSearch ){
|
|
return false;
|
|
} else {
|
|
return `/${locale.value}/${item.type}/${date.year()}/${month.padStart(2, '0')}/${slug}`;
|
|
}
|
|
}
|
|
|
|
export function getThumbnail( item:ItemObject ) {
|
|
console.log("ITEM",item);
|
|
let path = item.thumbnail
|
|
if (!path) {
|
|
return "https://images.carpa.com/tr:w-900,f-auto/youtube_thumbnail_46396.png"
|
|
} else {
|
|
return `https://images.carpa.com/${item.type}/${path}?tr=w-900`
|
|
}
|
|
}
|
|
|
|
export function getAuthor( type:string ){
|
|
let author = ''
|
|
switch (type){
|
|
case "activities":
|
|
author = 'Dr. José Benjamín Pérez Matos'
|
|
break
|
|
case "conferences":
|
|
author = 'Dr. William Soto Santiago'
|
|
break
|
|
case "sermons":
|
|
author = 'William Marrion Branham';
|
|
break
|
|
}
|
|
return author
|
|
}
|
|
|
|
// removed: openItem relied on a Pinia store that is not installed in this app.
|
|
// Detail navigation is now handled directly inside the search pages.
|