nitro-react/src/views/catalog/utils/CatalogUtilities.ts

68 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-05-10 19:11:16 +02:00
import { CatalogPageOfferData, ICatalogPageData, IFurnitureData } from 'nitro-renderer';
import { GetProductDataForLocalization } from '../../../api/nitro/session/GetProductDataForLocalization';
export interface ICatalogOffers
{
[key: string]: ICatalogPageData[];
}
export interface ICatalogSearchResult
{
page: ICatalogPageData;
furniture: IFurnitureData[];
}
export function GetOfferName(offer: CatalogPageOfferData): string
{
const productData = GetProductDataForLocalization(offer.localizationId);
if(productData) return productData.name;
return offer.localizationId;
}
export function GetOfferNodes(offers: ICatalogOffers, offerId: number): ICatalogPageData[]
{
const pages = offers[offerId.toString()];
const allowedPages: ICatalogPageData[] = [];
if(pages && pages.length)
{
for(const page of pages)
{
if(!page.visible) continue;
allowedPages.push(page);
}
}
return allowedPages;
}
export function SetOffersToNodes(offers: ICatalogOffers, pageData: ICatalogPageData): void
{
if(pageData.offerIds && pageData.offerIds.length)
{
for(const offerId of pageData.offerIds)
{
let existing = offers[offerId.toString()];
if(!existing)
{
existing = [];
offers[offerId.toString()] = existing;
}
if(existing.indexOf(pageData) >= 0) continue;
existing.push(pageData);
}
}
if(pageData.children && pageData.children.length)
{
for(const child of pageData.children) SetOffersToNodes(offers, child);
}
}