mirror of
https://github.com/billsonnn/nitro-react.git
synced 2024-10-24 03:33:09 +02:00
68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
|
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);
|
||
|
}
|
||
|
}
|