Files
frontend-dev/frontend/views/recipes/recipe_manager.py

69 lines
2.3 KiB
Python

from typing import List
from .recipe import V60, ESPRESSO, Recipe, Step, StepType
class RecipeManager:
def __init__(self):
self.recipes = [
V60,
ESPRESSO
]
self.tmp_recipe = None
self.active_recipe: Recipe = None
self.current_recipe_step_id = 0
def add_recipe(self, recipe):
self.recipes.append(recipe)
def update_recipe(self, recipe_id, new_recipe):
self.recipes[recipe_id] = new_recipe
def remove_recipe(self, recipe):
self.recipes.remove(recipe)
def get_recipe_id(self, recipe):
return self.recipes.index(recipe)
def get_recipe(self, recipe_id) -> Recipe:
if recipe_id is None:
return self.tmp_recipe
return self.recipes[recipe_id]
def activate_recipe(self, recipe_id):
self.active_recipe = self.get_recipe(recipe_id)
def deactivate_recipe(self):
self.active_recipe = None
self.current_recipe_step_id = 0
def get_current_step(self) -> List[Step]:
steps = [None] * 3
if self.active_recipe is None:
return steps
if self.current_recipe_step_id > len(self.active_recipe.steps):
return steps
if self.current_recipe_step_id > 0:
steps[0] = self.active_recipe.steps[self.current_recipe_step_id - 1]
if self.current_recipe_step_id < len(self.active_recipe.steps):
steps[1] = self.active_recipe.steps[self.current_recipe_step_id]
elif self.current_recipe_step_id == len(self.active_recipe.steps):
steps[1] = Step(StepType.SECTION, "Enjoy")
if self.current_recipe_step_id < len(self.active_recipe.steps) - 1:
steps[2] = self.active_recipe.steps[self.current_recipe_step_id + 1]
return steps
def next_step(self) -> List[Step]:
if self.active_recipe is None:
return [None] * 3
self.current_recipe_step_id = min(self.current_recipe_step_id + 1, len(self.active_recipe.steps) + 1)
return self.get_current_step()
def previous_step(self) -> List[Step]:
if self.active_recipe is None:
return [None] * 3
self.current_recipe_step_id = max(0, self.current_recipe_step_id - 1)
return self.get_current_step()