Loader při zakládání Pizza day, mock data

This commit is contained in:
2023-09-24 09:21:43 +02:00
parent 3f16485368
commit f5ecedb3b9
5 changed files with 778 additions and 7 deletions

View File

@@ -1,5 +1,6 @@
import axios from 'axios';
import { load } from 'cheerio';
import { getPizzaListMock } from './mock';
// TODO přesunout do types
type PizzaSize = {
@@ -35,8 +36,14 @@ const boxPrices: { [key: string]: number } = {
/**
* Stáhne a scrapne aktuální pizzy ze stránek Pizza Chefie.
*
* @param mock zda vrátit pouze mock data
*/
export async function downloadPizzy(): Promise<Pizza[]> {
export async function downloadPizzy(mock: boolean): Promise<Pizza[]> {
if (mock) {
// Záměrné zpoždění pro testování
return new Promise((resolve) => setTimeout(() => resolve(getPizzaListMock()), 3000));
}
// Získáme seznam pizz
const html = await axios.get(pizzyUrl).then(res => res.data);
const $ = load(html);

View File

@@ -370,6 +370,756 @@ const MOCK_DATA = {
]
}
// Mockovací data pro Pizza day
const MOCK_PIZZA_LIST = [
{
name: "Margherita",
ingredients: [
"tomato",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 1,
size: "30cm",
pizzaPrice: 138,
boxPrice: 13,
price: 151
},
{
varId: 2,
size: "35cm",
pizzaPrice: 166,
boxPrice: 15,
price: 181
},
{
varId: 3,
size: "40cm",
pizzaPrice: 223,
boxPrice: 18,
price: 241
},
{
varId: 4,
size: "50cm",
pizzaPrice: 306,
boxPrice: 25,
price: 331
}
]
},
{
name: "Salami",
ingredients: [
"tomato",
"pikantní salám",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 6,
size: "30cm",
pizzaPrice: 142,
boxPrice: 13,
price: 155
},
{
varId: 7,
size: "35cm",
pizzaPrice: 172,
boxPrice: 15,
price: 187
},
{
varId: 8,
size: "40cm",
pizzaPrice: 233,
boxPrice: 18,
price: 251
},
{
varId: 9,
size: "50cm",
pizzaPrice: 316,
boxPrice: 25,
price: 341
}
]
},
{
name: "Sausage",
ingredients: [
"tomato",
"klobása",
"pálivé papričky",
"česnek",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 10,
size: "30cm",
pizzaPrice: 142,
boxPrice: 13,
price: 155
},
{
varId: 11,
size: "35cm",
pizzaPrice: 172,
boxPrice: 15,
price: 187
},
{
varId: 12,
size: "40cm",
pizzaPrice: 233,
boxPrice: 18,
price: 251
},
{
varId: 13,
size: "50cm",
pizzaPrice: 316,
boxPrice: 25,
price: 341
}
]
},
{
name: "Classic Ham",
ingredients: [
"tomato",
"šunka výběrová",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 14,
size: "30cm",
pizzaPrice: 142,
boxPrice: 13,
price: 155
},
{
varId: 15,
size: "35cm",
pizzaPrice: 172,
boxPrice: 15,
price: 187
},
{
varId: 16,
size: "40cm",
pizzaPrice: 233,
boxPrice: 18,
price: 251
},
{
varId: 17,
size: "50cm",
pizzaPrice: 294,
boxPrice: 25,
price: 319
}
]
},
{
name: "Quattro Formaggi",
ingredients: [
"tomato",
"niva",
"mozzarella",
"uzený sýr",
"eidam 40%",
"goldi"
],
sizes: [
{
varId: 22,
size: "30cm",
pizzaPrice: 162,
boxPrice: 13,
price: 175
},
{
varId: 23,
size: "35cm",
pizzaPrice: 186,
boxPrice: 15,
price: 201
},
{
varId: 24,
size: "40cm",
pizzaPrice: 263,
boxPrice: 18,
price: 281
},
{
varId: 25,
size: "50cm",
pizzaPrice: 346,
boxPrice: 25,
price: 371
}
]
},
{
name: "Hawai",
ingredients: [
"tomato",
"šunka výběrová",
"ananas",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 26,
size: "30cm",
pizzaPrice: 162,
boxPrice: 13,
price: 175
},
{
varId: 27,
size: "35cm",
pizzaPrice: 186,
boxPrice: 15,
price: 201
},
{
varId: 28,
size: "40cm",
pizzaPrice: 263,
boxPrice: 18,
price: 281
},
{
varId: 29,
size: "50cm",
pizzaPrice: 346,
boxPrice: 25,
price: 371
}
]
},
{
name: "Mushroom",
ingredients: [
"tomato",
"žampiony",
"zakysaná smetana",
"pórek",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 30,
size: "30cm",
pizzaPrice: 162,
boxPrice: 13,
price: 175
},
{
varId: 31,
size: "35cm",
pizzaPrice: 186,
boxPrice: 15,
price: 201
},
{
varId: 32,
size: "40cm",
pizzaPrice: 263,
boxPrice: 18,
price: 281
},
{
varId: 33,
size: "50cm",
pizzaPrice: 346,
boxPrice: 25,
price: 371
}
]
},
{
name: "Mexico",
ingredients: [
"tomato",
"pikantní salám",
"slanina",
"pálivé papričky",
"červená cibule",
"zelené olivy",
"kukuřice",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 34,
size: "30cm",
pizzaPrice: 162,
boxPrice: 13,
price: 175
},
{
varId: 35,
size: "35cm",
pizzaPrice: 186,
boxPrice: 15,
price: 201
},
{
varId: 36,
size: "40cm",
pizzaPrice: 263,
boxPrice: 18,
price: 281
},
{
varId: 37,
size: "50cm",
pizzaPrice: 346,
boxPrice: 25,
price: 371
}
]
},
{
name: "Bismark",
ingredients: [
"tomato",
"slanina",
"vejce",
"pórek",
"mozzarella, eidam 40%",
"sýr"
],
sizes: [
{
varId: 38,
size: "30cm",
pizzaPrice: 162,
boxPrice: 13,
price: 175
},
{
varId: 39,
size: "35cm",
pizzaPrice: 186,
boxPrice: 15,
price: 201
},
{
varId: 40,
size: "40cm",
pizzaPrice: 263,
boxPrice: 18,
price: 281
},
{
varId: 41,
size: "50cm",
pizzaPrice: 346,
boxPrice: 25,
price: 371
}
]
},
{
name: "Tuna",
ingredients: [
"tomato",
"tuňák",
"červená cibule",
"černé olivy",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 42,
size: "30cm",
pizzaPrice: 172,
boxPrice: 13,
price: 185
},
{
varId: 43,
size: "35cm",
pizzaPrice: 212,
boxPrice: 15,
price: 227
},
{
varId: 44,
size: "40cm",
pizzaPrice: 293,
boxPrice: 18,
price: 311
},
{
varId: 45,
size: "50cm",
pizzaPrice: 376,
boxPrice: 25,
price: 401
}
]
},
{
name: "Spinach",
ingredients: [
"listový špenát",
"kuřecí maso",
"smetana",
"mozzarella, eidam 40%",
"česnek",
"goldi"
],
sizes: [
{
varId: 46,
size: "30cm",
pizzaPrice: 182,
boxPrice: 13,
price: 195
},
{
varId: 47,
size: "35cm",
pizzaPrice: 222,
boxPrice: 15,
price: 237
},
{
varId: 48,
size: "40cm",
pizzaPrice: 303,
boxPrice: 18,
price: 321
},
{
varId: 49,
size: "50cm",
pizzaPrice: 386,
boxPrice: 25,
price: 411
}
]
},
{
name: "Persia",
ingredients: [
"smetana",
"česnek",
"slanina",
"červené cibule",
"paprika mix",
"černé olivy",
"kuřecí maso",
"2 druhy omáček",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 50,
size: "30cm",
pizzaPrice: 182,
boxPrice: 13,
price: 195
},
{
varId: 51,
size: "35cm",
pizzaPrice: 222,
boxPrice: 15,
price: 237
},
{
varId: 52,
size: "40cm",
pizzaPrice: 303,
boxPrice: 18,
price: 321
},
{
varId: 53,
size: "50cm",
pizzaPrice: 396,
boxPrice: 25,
price: 421
}
]
},
{
name: "BBQ Dream",
ingredients: [
"tomato",
"slanina",
"paprika mix",
"kuřecí maso",
"červená cibule",
"BBQ omáčka",
"mozzarella, eidam 40%"
],
sizes: [
{
varId: 54,
size: "30cm",
pizzaPrice: 182,
boxPrice: 13,
price: 195
},
{
varId: 55,
size: "35cm",
pizzaPrice: 222,
boxPrice: 15,
price: 237
},
{
varId: 56,
size: "40cm",
pizzaPrice: 303,
boxPrice: 18,
price: 321
},
{
varId: 57,
size: "50cm",
pizzaPrice: 396,
boxPrice: 25,
price: 421
}
]
},
{
name: "Cranberries",
ingredients: [
"niva",
"uzený sýr",
"kuřecí maso",
"brusinky",
"goldi",
"mozzarella, eidam 40%",
"smetana",
"česnek"
],
sizes: [
{
varId: 58,
size: "30cm",
pizzaPrice: 182,
boxPrice: 13,
price: 195
},
{
varId: 59,
size: "35cm",
pizzaPrice: 222,
boxPrice: 15,
price: 237
},
{
varId: 60,
size: "40cm",
pizzaPrice: 303,
boxPrice: 18,
price: 321
},
{
varId: 61,
size: "50cm",
pizzaPrice: 396,
boxPrice: 25,
price: 421
}
]
},
{
name: "Vegetarian",
ingredients: [
"tomato",
"listový špenát",
"rajčata",
"černé olivy",
"kukuřice",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 62,
size: "30cm",
pizzaPrice: 188,
boxPrice: 13,
price: 201
},
{
varId: 63,
size: "35cm",
pizzaPrice: 226,
boxPrice: 15,
price: 241
},
{
varId: 64,
size: "40cm",
pizzaPrice: 313,
boxPrice: 18,
price: 331
},
{
varId: 65,
size: "50cm",
pizzaPrice: 426,
boxPrice: 25,
price: 451
}
]
},
{
name: "Spicy Devil",
ingredients: [
"tomato",
"červené cibule",
"kuřecí maso",
"pálivé papričky",
"parmská šunka",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 66,
size: "30cm",
pizzaPrice: 188,
boxPrice: 13,
price: 201
},
{
varId: 67,
size: "35cm",
pizzaPrice: 226,
boxPrice: 15,
price: 241
},
{
varId: 68,
size: "40cm",
pizzaPrice: 313,
boxPrice: 18,
price: 331
},
{
varId: 69,
size: "50cm",
pizzaPrice: 426,
boxPrice: 25,
price: 451
}
]
},
{
name: "Dimi's pizza",
ingredients: [
"brokolice",
"slanina",
"kuřecí maso",
"kukuřice",
"kari",
"mozzarella, eidam 40%",
"smetana",
"červená cibule",
"goldi"
],
sizes: [
{
varId: 309,
size: "30cm",
pizzaPrice: 182,
boxPrice: 13,
price: 195
},
{
varId: 310,
size: "35cm",
pizzaPrice: 222,
boxPrice: 15,
price: 237
},
{
varId: 311,
size: "40cm",
pizzaPrice: 303,
boxPrice: 18,
price: 321
},
{
varId: 312,
size: "50cm",
pizzaPrice: 396,
boxPrice: 25,
price: 421
}
]
},
{
name: "Texas Pulled Pork",
ingredients: [
"tomato",
"trhané vepřové maso",
"kukuřice",
"jalapeňos",
"BBQ omáčka",
"mozzarella, eidam 40%",
"goldi"
],
sizes: [
{
varId: 394,
size: "30cm",
pizzaPrice: 188,
boxPrice: 13,
price: 201
},
{
varId: 395,
size: "35cm",
pizzaPrice: 226,
boxPrice: 15,
price: 241
},
{
varId: 396,
size: "40cm",
pizzaPrice: 313,
boxPrice: 18,
price: 331
},
{
varId: 397,
size: "50cm",
pizzaPrice: 426,
boxPrice: 25,
price: 451
}
]
}
]
export const getTodayMock = () => {
return '2023-05-31'; // středa
}
@@ -384,4 +1134,8 @@ export const getMenuUMotlikuMock = (date: Date) => {
export const getMenuTechTowerMock = (date: Date) => {
return MOCK_DATA['techTower'][getDayOfWeekIndex(date)];
}
export const getPizzaListMock = () => {
return MOCK_PIZZA_LIST;
}

View File

@@ -17,7 +17,8 @@ export async function getPizzaList(): Promise<Pizza[] | undefined> {
const today = formatDate(getToday());
let clientData: ClientData = await storage.getData(today);
if (!clientData.pizzaList) {
clientData = await savePizzaList(await downloadPizzy());
const mock = process.env.MOCK_DATA === 'true';
clientData = await savePizzaList(await downloadPizzy(mock));
}
return Promise.resolve(clientData.pizzaList);
}