mns-mini-zabor/components/topper.ts

63 lines
2.3 KiB
TypeScript

interface Topper {
id: number; // ID элемента
name: string; // Название
filename: string; // Имя файла
model: string; // Модель
}
export const baseToppers = [
{ name: 'Ровный', filename: 'icon_stolb_verh_3.svg', model: 'top' },
{ name: 'Вершина 1', filename: 'icon_stolb_verh_2.svg', model: 'decor1' },
{ name: 'Вершина 2', filename: 'icon_stolb_verh_1.svg', model: 'decor2' },
].map((el, i) => Object.assign(el, { id: i }))
export const aristoToppers = [
{ name: 'Колпак', filename: 'icon_stolb_verh_1.svg', model: 'aristo1' },
].map((el, i) => Object.assign(el, { id: i }))
export const allToppers = {
'baseToppers': baseToppers,
'aristoToppers': aristoToppers,
} as { [key: string]: Topper[] }
function getToppersByType(type: string | null): any {
if (!type) type = 'NONE'
// Проверяем, существует ли указанный тип в объекте allToppers
if (allToppers[type]) {
return allToppers[type];
}
// Если типа нет, берем первый доступный элемент из allToppers
const keys = Object.keys(allToppers);
if (keys.length > 0) {
const firstKey = keys[0];
return allToppers[firstKey];
}
// Если объект allToppers пустой, возвращаем значение по умолчанию (например, пустой массив)
return [];
}
export const getFilename = (id: toppersIds, type: string | null) => {
let toppers = getToppersByType(type)
const el = toppers.find((el: Topper) => el.id == id)
if (!el || !el.filename) return undefined
return `/topper/${el?.filename}`
}
export const getName = (id: toppersIds, type: string | null) => {
let toppers = getToppersByType(type)
const el = toppers.find((el: Topper) => el.id == id)
if (!el || !el.filename) return undefined
return el.name
}
export const getModel = (id: toppersIds, type: string | null) => {
let toppers = getToppersByType(type)
let el = toppers.find((el: Topper) => el.id == id)
if (!el || !el.filename) return undefined
return `/models_one/pillar/topper/${el?.model}.glb`
}
export type toppersIds = typeof allToppers[string][number]['id']