feat: recipe version selector

- fix recipe not show on overview
- fix recipe show late after select country
- disable queue message on no connection ws
- fix infinite topping(s) list if moving between pages

Signed-off-by: pakintada@gmail.com <Pakin>
This commit is contained in:
pakintada@gmail.com 2026-05-04 16:50:15 +07:00
parent e25881d016
commit a29ff0be1a
19 changed files with 314 additions and 108 deletions

View file

@ -249,7 +249,7 @@
<Tabs.Content value="details">
<!-- hide by machine state -->
{#if $machineInfoStore?.status == 'IDLE' || $machineInfoStore?.status == ''}
{#if $machineInfoStore?.status == 'IDLE' || $machineInfoStore?.status == '' || refPage == 'overview'}
<RecipelistTable
data={recipeListMatState}
{columns}

View file

@ -293,11 +293,11 @@
// console.log('sheet open? ', sheetOpenState);
let refFrom = get(referenceFromPage);
categories = get(
refFrom === 'overview' ? toppingGroupFromServerQuery : toppingGroupFromMachineQuery
categories = $state.snapshot(
get(refFrom === 'overview' ? toppingGroupFromServerQuery : toppingGroupFromMachineQuery)
);
topping_lists = get(
refFrom === 'overview' ? toppingListFromServerQuery : toppingListFromMachineQuery
topping_lists = $state.snapshot(
get(refFrom === 'overview' ? toppingListFromServerQuery : toppingListFromMachineQuery)
);
// save ref

View file

@ -208,6 +208,9 @@
let current_selected = selectableToppingInGroup.find(
(x) => x.id === currentToppings[getToppingSlot()]['ListGroupID'][0]
);
console.log('current selected topping list', row_uid, current_selected);
if (currentToppings[getToppingSlot()]['ListGroupID'][0] === 0) {
return 'Empty';
}

View file

@ -130,19 +130,32 @@
});
} else {
// topping part
latestRecipeToppingData.set(new_topping_value_for_save);
console.log('save change', get(latestRecipeToppingData));
currentData['ToppingSet'] = latestRecipeToppingData;
// latestRecipeToppingData.set(new_topping_value_for_save);
// console.log('save change', get(latestRecipeToppingData));
// currentData['ToppingSet'] = latestRecipeToppingData;
console.log('current data', currentData);
// console.log('current data', currentData);
if (get(referenceFromPage) == 'brew') {
// send change to machine
// apply value
let recipeDevSnapshot = get(recipeFromMachineQuery) ?? {};
let recipe01Snap = recipeDevSnapshot['recipe'];
if (recipe01Snap) {
recipe01Snap[ready_to_send_brew[0]['productCode']] = ready_to_send_brew[0];
// save now
recipeDevSnapshot['recipe'] = recipe01Snap;
recipeFromMachineQuery.set(recipeDevSnapshot);
}
sendToAndroid({
type: 'save_recipe_machine',
payload: {
time: new Date().toLocaleTimeString(),
data: currentData
data: ready_to_send_brew[0]
}
});
} else if (get(referenceFromPage) == 'overview') {
@ -294,10 +307,10 @@
<Dialog.Title
>Edit Recipe {productCode}
<Badge class="m-2">
{#if $machineInfoStore?.status == 'IDLE' || $machineInfoStore?.status == ''}
{#if $machineInfoStore?.status == 'IDLE' || $machineInfoStore?.status == '' || refPage == 'overview'}
Ready
{:else}
<Spinner /> Brewing
<Spinner /> Working
{/if}
</Badge>
</Dialog.Title>
@ -317,7 +330,7 @@
on:saveRecipe={async () => {
save_change = true;
console.log('save change, check state', callback_revert_value_if_not_save);
callback_revert_value_if_not_save(save_change);
addNotification('INFO:Save recipe');
}}