vinmonopolet-ts
Version:
Extracts information on products, categories and stores from Vinmonopolet
102 lines (101 loc) • 3.56 kB
JavaScript
import facetsMap from "../datamaps/facetsMap";
import FacetValue from "./FacetValue";
import * as FacetCategories from "./FacetCategories";
const displayNames = {
mainCategory: "Kategori",
mainSubCategory: "Underkategori",
mainSubSubCategory: "Varetype",
mainCountry: "Land",
volumeRanges: "Volum",
isGoodfor: "Passer til",
Soedme: "Sødme",
"Tannin(Sulfates)": "Garvestoffer",
Raastoff: "Råstoff",
Biodynamic: "Biodynamisk",
Eco: "Økologisk",
Gluten: "Glutenfri",
inStockFlag: "På lager",
};
export const FacetCategoryMapping = () => {
const map = {};
map[FacetCategories.ALCOHOL_FREE] = new FacetValue({
name: "Alkoholfritt",
query: { query: { value: "mainCategory:alkoholfritt" } },
});
map[FacetCategories.RED_WINE] = new FacetValue({
name: "Rødvin",
query: { query: { value: "mainCategory:rødvin" } },
});
map[FacetCategories.ROSE_WINE] = new FacetValue({
name: "Rosévin",
query: { query: { value: "mainCategory:rosévin" } },
});
map[FacetCategories.WHITE_WINE] = new FacetValue({
name: "Hvitvin",
query: { query: { value: "mainCategory:hvitvin" } },
});
map[FacetCategories.RIPPLING_WINE] = new FacetValue({
name: "Perlende vin",
query: { query: { value: "mainCategory:perlende_vin" } },
});
map[FacetCategories.FLAVORED_WINE] = new FacetValue({
name: "Aromatisert vin",
query: { query: { value: "mainCategory:aromatisert_vin" } },
});
map[FacetCategories.SPARKLING_WINE] = new FacetValue({
name: "Musserende vin",
query: { query: { value: "mainCategory:musserende_vin" } },
});
map[FacetCategories.FORTIFIED_WINE] = new FacetValue({
name: "Sterkvin",
query: { query: { value: "mainCategory:sterkvin" } },
});
map[FacetCategories.FRUIT_WINE] = new FacetValue({
name: "Fruktvin",
query: { query: { value: "mainCategory:fruktvin" } },
});
map[FacetCategories.LIQUOR] = new FacetValue({
name: "Brennevin",
query: { query: { value: "mainCategory:brennevin" } },
});
map[FacetCategories.CIDER] = new FacetValue({
name: "Sider",
query: { query: { value: "mainCategory:sider" } },
});
map[FacetCategories.BEER] = new FacetValue({
name: "Øl",
query: { query: { value: "mainCategory:øl" } },
});
map[FacetCategories.SAKE] = new FacetValue({
name: "Sake",
query: { query: { value: "mainCategory:Sake" } },
});
map[FacetCategories.MEAD] = new FacetValue({
name: "Mjød",
query: { query: { value: "mainCategory:mjød" } },
});
return map;
};
class Facet {
title;
name;
displayName;
category;
multiSelect;
values;
constructor(facet) {
const [title, valueFilter] = facetsMap[facet.code] || [];
this.title = title || facet.code;
this.name = facet.name;
this.displayName = displayNames[facet.name] || facet.name;
this.category = facet.category;
this.multiSelect = facet.multiSelect;
this.values = facet.values.map((val) => new FacetValue(val, valueFilter));
}
static Category = FacetCategoryMapping();
static UpcomingProduct = new FacetValue({
name: "Upcoming product",
query: { query: { value: "upcomingProduct:true" } },
});
}
export default Facet;