From a95e7bbb13170c789e85a4cebbf45d8170977d60 Mon Sep 17 00:00:00 2001 From: "pakintada@gmail.com" Date: Tue, 16 Jun 2026 15:15:34 +0700 Subject: [PATCH] update deps & hotfix errors Signed-off-by: pakintada@gmail.com --- bun.lockb | Bin 198147 -> 199988 bytes package.json | 2 +- src/lib/components/dashboard-quick-adb.svelte | 24 ++-- src/lib/core/handlers/adbPayloadHandler.ts | 20 +-- .../add/[country]/[catalog]/+page.svelte | 8 +- .../edit/[country]/[catalog]/+page.svelte | 129 ++++++++++++------ src/routes/(authed)/tools/brew/+page.svelte | 12 +- 7 files changed, 124 insertions(+), 71 deletions(-) diff --git a/bun.lockb b/bun.lockb index ce79e9c42e9864bf4221857039a6f68caab2fcf4..73c25fe62467b27a4ea7bd1772a47f42c49b42eb 100755 GIT binary patch delta 13652 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 selectCode(item.code)} - class="flex w-full items-center justify-between rounded-lg border bg-card p-3 text-left transition-colors hover:border-primary/50 hover:bg-primary/5 {item.isNew ? 'border-green-500/50 bg-green-500/5' : ''}" + class="flex w-full items-center justify-between rounded-lg border bg-card p-3 text-left transition-colors hover:border-primary/50 hover:bg-primary/5 {item.isNew + ? 'border-green-500/50 bg-green-500/5' + : ''}" >
{item.code} {#if item.isNew} - NEW + NEW {/if}
{#if item.name} diff --git a/src/routes/(authed)/sheet/edit/[country]/[catalog]/+page.svelte b/src/routes/(authed)/sheet/edit/[country]/[catalog]/+page.svelte index d8faf31..92b7eb0 100644 --- a/src/routes/(authed)/sheet/edit/[country]/[catalog]/+page.svelte +++ b/src/routes/(authed)/sheet/edit/[country]/[catalog]/+page.svelte @@ -158,7 +158,8 @@ const primaryLanguageKey = columnConfig.primaryLanguage; const primaryLanguageColumn = languageColumnMap[primaryLanguageKey] ?? languageColumnMap.en ?? 3; const secondaryLanguageKey = primaryLanguageKey === 'en' ? 'th' : 'en'; - const secondaryLanguageColumn = languageColumnMap[secondaryLanguageKey] ?? languageColumnMap.en ?? 3; + const secondaryLanguageColumn = + languageColumnMap[secondaryLanguageKey] ?? languageColumnMap.en ?? 3; function getCatalogDisplayName(catalogName: string): string { const match = catalogName.match(/page_catalog_group_(\w+)\.skt/); @@ -797,7 +798,11 @@ } // Get all prices for an item (hot, cold, blend) - function getItemPrices(item: any): { hot: string | null; cold: string | null; blend: string | null } { + function getItemPrices(item: any): { + hot: string | null; + cold: string | null; + blend: string | null; + } { return { hot: getItemPrice(item, 'hot'), cold: getItemPrice(item, 'cold'), @@ -807,18 +812,23 @@ // Price edit dialog state let priceEditDialogOpen = $state(false); - let priceEditData = $state<{ code: string; type: string; price: string; row: number; col: number; isNew: boolean }[]>([]); + let priceEditData = $state< + { code: string; type: string; price: string; row: number; col: number; isNew: boolean }[] + >([]); let savingPrice = $state(false); // Get price info for a single product code - function getPriceInfoForCode(productCode: string): { price: string; row: number; col: number } | null { + function getPriceInfoForCode( + productCode: string + ): { price: string; row: number; col: number } | null { const priceCells = sheetPrices[productCode]; if (!priceCells || priceCells.length === 0) return null; const headers = get(sheetPriceHeader)[countryCode]; if (!headers || headers.length === 0) return null; - const headerNames = PRICE_HEADER_NAMES_BY_COUNTRY[countryCode] || PRICE_HEADER_NAMES_BY_COUNTRY.default; + const headerNames = + PRICE_HEADER_NAMES_BY_COUNTRY[countryCode] || PRICE_HEADER_NAMES_BY_COUNTRY.default; const colIdx = findHeaderIndex(headers, headerNames.cash_price); if (colIdx < 0) return null; @@ -848,7 +858,14 @@ function openPriceEditDialog() { if (!editingItem) return; - const data: { code: string; type: string; price: string; row: number; col: number; isNew: boolean }[] = []; + const data: { + code: string; + type: string; + price: string; + row: number; + col: number; + isNew: boolean; + }[] = []; for (const code of editingItem.product_codes || []) { const info = getPriceInfoForCode(code); @@ -869,7 +886,10 @@ // Save price changes from dialog async function handleSavePricesFromDialog() { - const updates: { row_index: number; cells: { value: string; coord: { row: number; col: number } }[] }[] = []; + const updates: { + row_index: number; + cells: { value: string; coord: { row: number; col: number } }[]; + }[] = []; const newPrices: { cells: string[] }[] = []; // Get all rows data for duplicate handling @@ -877,7 +897,8 @@ // Get header for this country to build cells array correctly const priceHeaders = get(sheetPriceHeader)[countryCode] || []; - const headerNames = PRICE_HEADER_NAMES_BY_COUNTRY[countryCode] || PRICE_HEADER_NAMES_BY_COUNTRY.default; + const headerNames = + PRICE_HEADER_NAMES_BY_COUNTRY[countryCode] || PRICE_HEADER_NAMES_BY_COUNTRY.default; const priceColIdx = findHeaderIndex(priceHeaders, headerNames.cash_price); for (const item of priceEditData) { @@ -887,7 +908,7 @@ if (item.price && item.price.trim()) { // Build cells array based on header structure // Find column indices from header - const nameColIdx = priceHeaders.findIndex(h => h.toLowerCase() === 'name') + 1; + const nameColIdx = priceHeaders.findIndex((h) => h.toLowerCase() === 'name') + 1; // Create cells array with correct length const cells: string[] = new Array(priceHeaders.length).fill(''); @@ -936,20 +957,24 @@ for (const rowEntry of rowsForCode) { updates.push({ row_index: rowEntry.row, - cells: [{ - value: item.price, - coord: { row: rowEntry.row, col: item.col } - }] + cells: [ + { + value: item.price, + coord: { row: rowEntry.row, col: item.col } + } + ] }); } } else if (item.row) { // Single row - use the original logic updates.push({ row_index: item.row, - cells: [{ - value: item.price, - coord: { row: item.row, col: item.col } - }] + cells: [ + { + value: item.price, + coord: { row: item.row, col: item.col } + } + ] }); } } @@ -966,12 +991,12 @@ // Send updates for existing prices if (updates.length > 0) { - updateSent = updateSheetPrice(country, updates); + updateSent = await updateSheetPrice(country, updates); } // Send adds for new prices if (newPrices.length > 0) { - addSent = addSheetPrice(country, newPrices); + addSent = await addSheetPrice(country, newPrices); } if (updateSent && addSent) { @@ -1457,8 +1482,8 @@ // Step 2: Request menu data (this triggers streaming) // Small delay to ensure enter request is processed first - setTimeout(() => { - const requested = requestCatalogMenu(country, catalog); + setTimeout(async () => { + const requested = await requestCatalogMenu(country, catalog); if (requested) { console.log('[Edit] Requested menu data via WebSocket'); } else { @@ -1653,7 +1678,11 @@ recipe: recipe01_query })); - console.log('[Edit] Loaded', Object.keys(recipe01_query).length, 'recipes from machine'); + console.log( + '[Edit] Loaded', + Object.keys(recipe01_query).length, + 'recipes from machine' + ); break; } } catch (parseError) { @@ -1965,13 +1994,21 @@
{#if displayPrices.hot} - Hot {displayPrices.hot} + Hot {displayPrices.hot} {/if} {#if displayPrices.cold} - Cold {displayPrices.cold} + Cold + {displayPrices.cold} {/if} {#if displayPrices.blend} - Blend {displayPrices.blend} + Blend + {displayPrices.blend} {/if}
+