79 lines
2.6 KiB
JavaScript
79 lines
2.6 KiB
JavaScript
export class DispenserSelector {
|
|
constructor(handlers) {
|
|
this.handlers = handlers;
|
|
}
|
|
|
|
async handleAction(action, event, actionEl) {
|
|
const recipeId = actionEl.dataset.recipeId;
|
|
const periodId = actionEl.dataset.periodId;
|
|
const dispenserId = actionEl.dataset.dispenserId;
|
|
const index = Number(actionEl.dataset.index);
|
|
|
|
switch (action) {
|
|
case "select-dispenser":
|
|
if (dispenserId) await this.handlers.selectDispenser(dispenserId);
|
|
return true;
|
|
case "select-recipe":
|
|
if (recipeId) await this.handlers.selectRecipe(recipeId);
|
|
return true;
|
|
case "select-period":
|
|
if (periodId) await this.handlers.selectPeriod(periodId);
|
|
return true;
|
|
case "copy-recipe":
|
|
event.stopPropagation();
|
|
if (recipeId) await this.handlers.copyRecipe(recipeId);
|
|
return true;
|
|
case "delete-recipe":
|
|
event.stopPropagation();
|
|
if (recipeId) await this.handlers.deleteRecipe(recipeId);
|
|
return true;
|
|
case "paste-recipe":
|
|
event.stopPropagation();
|
|
if (periodId) await this.handlers.pasteRecipe(periodId);
|
|
return true;
|
|
case "create-recipe":
|
|
event.stopPropagation();
|
|
if (periodId) await this.handlers.createNewRecipe(periodId);
|
|
return true;
|
|
case "move-recipe-up":
|
|
event.stopPropagation();
|
|
if (recipeId && !Number.isNaN(index)) {
|
|
await this.handlers.moveRecipeUp(recipeId, index);
|
|
}
|
|
return true;
|
|
case "move-recipe-down":
|
|
event.stopPropagation();
|
|
if (recipeId && !Number.isNaN(index)) {
|
|
await this.handlers.moveRecipeDown(recipeId, index);
|
|
}
|
|
return true;
|
|
case "unskip-recipe-today":
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
if (recipeId && typeof this.handlers.unskipRecipeToday === "function") {
|
|
await this.handlers.unskipRecipeToday(recipeId);
|
|
}
|
|
return true;
|
|
case "unskip-ingredient-parts-today":
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
if (recipeId && typeof this.handlers.unskipIngredientPartsToday === "function") {
|
|
await this.handlers.unskipIngredientPartsToday(recipeId);
|
|
}
|
|
return true;
|
|
case "unskip-group-parts-today":
|
|
event.stopPropagation();
|
|
event.preventDefault();
|
|
if (recipeId && typeof this.handlers.unskipGroupPartsToday === "function") {
|
|
await this.handlers.unskipGroupPartsToday(recipeId);
|
|
}
|
|
return true;
|
|
case "recipe-drag-handle":
|
|
event.stopPropagation();
|
|
return true;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
}
|