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
}