search/app/utils/itemUtilities.ts

186 lines
4.9 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
}
export function openItem( item:ItemObject ) {
console.log("Open Item", item.id)
// const { $i18n } = useNuxtApp();
// const locale = $i18n.locale;
// //Pinia datastore
const dataStore = useDataStore()
// //Set document into datastore array
dataStore.openItem( item )
dataStore.isDetail = true
// //Create url for history
// const newUrl = setUrl( item );
// //return navigateTo( newUrl )
}