diff --git a/frontend/src/views/RecipeManager.vue b/frontend/src/views/RecipeManager.vue index 531c098..bc784bc 100644 --- a/frontend/src/views/RecipeManager.vue +++ b/frontend/src/views/RecipeManager.vue @@ -317,8 +317,8 @@ - -
+ +
{{ recipeSummaryText }}
@@ -749,10 +749,31 @@ function editRecipe(recipe) { const ings = recipe.ingredients || [] formIngredients.value = ings.filter(i => i.oil !== '椰子油').map(i => ({ ...i, _search: i.oil, _open: false })) const coco = ings.find(i => i.oil === '椰子油') - formCocoRow.value = coco ? { ...coco, _search: '椰子油', _open: false } : { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + if (coco) { + formCocoRow.value = { ...coco, _search: '椰子油', _open: false } + // Guess volume from total drops + const eoDrops = ings.filter(i => i.oil && i.oil !== '椰子油').reduce((s, i) => s + (i.drops || 0), 0) + const totalDrops = eoDrops + coco.drops + const ml = totalDrops / DROPS_PER_ML + if (ml <= 2) formVolume.value = 'single' + else if (Math.abs(ml - 5) < 1.5) formVolume.value = '5' + else if (Math.abs(ml - 10) < 2.5) formVolume.value = '10' + else if (Math.abs(ml - 15) < 2.5) formVolume.value = '15' + else if (Math.abs(ml - 20) < 3) formVolume.value = '20' + else if (Math.abs(ml - 30) < 6) formVolume.value = '30' + else { formVolume.value = 'custom'; formCustomVolume.value = Math.round(ml) } + // Guess dilution + if (eoDrops > 0 && coco.drops > 0) { + const ratio = Math.round(coco.drops / eoDrops) + const options = [3,4,5,6,7,8,9,10,12,15,20] + formDilution.value = options.reduce((a, b) => Math.abs(b - ratio) < Math.abs(a - ratio) ? b : a) + } + } else { + formCocoRow.value = null + formVolume.value = '' + } formNote.value = recipe.note || '' formTags.value = [...(recipe.tags || [])] - calcDilutionFromIngs(recipe.ingredients) showAddOverlay.value = true } @@ -765,7 +786,7 @@ function closeOverlay() { function resetForm() { formName.value = '' formIngredients.value = [{ oil: '', drops: 1, _search: '', _open: false }] - formCocoRow.value = { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + formCocoRow.value = null formNote.value = '' formTags.value = [] smartPasteText.value = '' @@ -1218,10 +1239,29 @@ function editDiaryRecipe(diary) { const ings = diary.ingredients || [] formIngredients.value = ings.filter(i => i.oil !== '椰子油').map(i => ({ ...i, _search: i.oil, _open: false })) const coco = ings.find(i => i.oil === '椰子油') - formCocoRow.value = coco ? { ...coco, _search: '椰子油', _open: false } : { oil: '椰子油', drops: 10, _search: '椰子油', _open: false } + if (coco) { + formCocoRow.value = { ...coco, _search: '椰子油', _open: false } + const eoDrops = ings.filter(i => i.oil && i.oil !== '椰子油').reduce((s, i) => s + (i.drops || 0), 0) + const totalDrops = eoDrops + coco.drops + const ml = totalDrops / DROPS_PER_ML + if (ml <= 2) formVolume.value = 'single' + else if (Math.abs(ml - 5) < 1.5) formVolume.value = '5' + else if (Math.abs(ml - 10) < 2.5) formVolume.value = '10' + else if (Math.abs(ml - 15) < 2.5) formVolume.value = '15' + else if (Math.abs(ml - 20) < 3) formVolume.value = '20' + else if (Math.abs(ml - 30) < 6) formVolume.value = '30' + else { formVolume.value = 'custom'; formCustomVolume.value = Math.round(ml) } + if (eoDrops > 0 && coco.drops > 0) { + const ratio = Math.round(coco.drops / eoDrops) + const options = [3,4,5,6,7,8,9,10,12,15,20] + formDilution.value = options.reduce((a, b) => Math.abs(b - ratio) < Math.abs(a - ratio) ? b : a) + } + } else { + formCocoRow.value = null + formVolume.value = '' + } formNote.value = diary.note || '' formTags.value = [...(diary.tags || [])] - calcDilutionFromIngs(diary.ingredients) showAddOverlay.value = true }