@@ -0,0 +1,135 @@
|
||||
import { RecipeEditor } from "/static/js/modules/recipes/recipe-editor.js";
|
||||
import { SyncPanel } from "/static/js/modules/recipes/sync-panel.js";
|
||||
import { DispenserSelector } from "/static/js/modules/recipes/dispenser-selector.js";
|
||||
import { initRecipeMobileSheetGestures } from "/static/js/modules/recipes/recipe-mobile-sheet-gestures.js";
|
||||
|
||||
let initialized = false;
|
||||
|
||||
export function initRecipesPage(handlers) {
|
||||
if (initialized) return;
|
||||
initialized = true;
|
||||
|
||||
const recipeEditorModule = new RecipeEditor({
|
||||
addIngredient: handlers.addIngredient,
|
||||
toggleUnloadingLink: handlers.toggleUnloadingLink,
|
||||
addUnloadingGroup: handlers.addUnloadingGroup,
|
||||
showRecipeEdit: handlers.showRecipeEdit,
|
||||
printAllRecipesInPeriod: handlers.printAllRecipesInPeriod,
|
||||
printRecipe: handlers.printRecipe,
|
||||
saveRecipe: handlers.saveRecipe,
|
||||
moveGroupUp: handlers.moveGroupUp,
|
||||
moveGroupDown: handlers.moveGroupDown,
|
||||
removeUnloadingGroup: handlers.removeUnloadingGroup,
|
||||
moveIngredientUp: handlers.moveIngredientUp,
|
||||
moveIngredientDown: handlers.moveIngredientDown,
|
||||
removeIngredient: handlers.removeIngredient,
|
||||
openIngredientMobileSheet: handlers.openIngredientMobileSheet,
|
||||
closeIngredientMobileSheet: handlers.closeIngredientMobileSheet,
|
||||
removeIngredientFromSheet: handlers.removeIngredientFromSheet,
|
||||
openUnloadingGroupMobileSheet: handlers.openUnloadingGroupMobileSheet,
|
||||
closeUnloadingGroupMobileSheet: handlers.closeUnloadingGroupMobileSheet,
|
||||
handleGroupTypeChange: handlers.handleGroupTypeChange,
|
||||
validateGroupValue: handlers.validateGroupValue,
|
||||
handleIngredientChange: handlers.handleIngredientChange,
|
||||
handleDryMatterPercentChange: handlers.handleDryMatterPercentChange,
|
||||
recalculateWeights: handlers.recalculateWeights,
|
||||
recalculateFromTotalWeight: handlers.recalculateFromTotalWeight,
|
||||
});
|
||||
|
||||
const syncPanelModule = new SyncPanel({
|
||||
openSettings: handlers.openSettings,
|
||||
closeSettings: handlers.closeSettings,
|
||||
toggleCredentialsForm: handlers.toggleCredentialsForm,
|
||||
toggleSyncForm: handlers.toggleSyncForm,
|
||||
changeCredentials: handlers.changeCredentials,
|
||||
editSyncClientSettings: handlers.editSyncClientSettings,
|
||||
deleteSyncClientSettings: handlers.deleteSyncClientSettings,
|
||||
saveSyncClientDisplayName: handlers.saveSyncClientDisplayName,
|
||||
loadSyncClientsSettings: handlers.loadSyncClientsSettings,
|
||||
});
|
||||
|
||||
const dispenserSelectorModule = new DispenserSelector({
|
||||
selectDispenser: handlers.selectDispenser,
|
||||
selectRecipe: handlers.selectRecipe,
|
||||
selectPeriod: handlers.selectPeriod,
|
||||
copyRecipe: handlers.copyRecipe,
|
||||
deleteRecipe: handlers.deleteRecipe,
|
||||
unskipRecipeToday: handlers.unskipRecipeToday,
|
||||
unskipIngredientPartsToday: handlers.unskipIngredientPartsToday,
|
||||
unskipGroupPartsToday: handlers.unskipGroupPartsToday,
|
||||
pasteRecipe: handlers.pasteRecipe,
|
||||
createNewRecipe: handlers.createNewRecipe,
|
||||
moveRecipeUp: handlers.moveRecipeUp,
|
||||
moveRecipeDown: handlers.moveRecipeDown,
|
||||
});
|
||||
|
||||
initRecipeMobileSheetGestures({
|
||||
closeIngredientMobileSheet: handlers.closeIngredientMobileSheet,
|
||||
closeUnloadingGroupMobileSheet: handlers.closeUnloadingGroupMobileSheet,
|
||||
closeRecipeHelpModal: handlers.closeRecipeHelpModal,
|
||||
});
|
||||
|
||||
const createRecipeBtn = document.getElementById("createRecipeBtn");
|
||||
if (createRecipeBtn) {
|
||||
createRecipeBtn.addEventListener("click", (event) => {
|
||||
event.stopPropagation();
|
||||
const selectedDispenser = handlers.getSelectedDispenser();
|
||||
if (selectedDispenser) {
|
||||
handlers.createNewRecipeForMill(selectedDispenser);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("click", async (event) => {
|
||||
const actionEl = event.target.closest("[data-action]");
|
||||
if (!actionEl) return;
|
||||
|
||||
const action = actionEl.dataset.action;
|
||||
if (await syncPanelModule.handleAction(action, event, actionEl)) return;
|
||||
if (await dispenserSelectorModule.handleAction(action, event, actionEl)) return;
|
||||
if (await recipeEditorModule.handleAction(action, event, actionEl)) return;
|
||||
|
||||
if (action === "open-recipe-help") {
|
||||
event.preventDefault();
|
||||
handlers.openRecipeHelp?.(actionEl.id);
|
||||
return;
|
||||
}
|
||||
|
||||
if (action === "close-recipe-help") {
|
||||
event.preventDefault();
|
||||
handlers.closeRecipeHelpModal?.();
|
||||
return;
|
||||
}
|
||||
|
||||
if (action === "mobile-dashboard-back") {
|
||||
event.preventDefault();
|
||||
handlers.mobileDashboardBack?.();
|
||||
return;
|
||||
}
|
||||
|
||||
if (action === "logout") {
|
||||
event.preventDefault();
|
||||
handlers.logout();
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener("change", (event) => {
|
||||
const actionEl = event.target.closest("[data-action]");
|
||||
if (!actionEl) return;
|
||||
const action = actionEl.dataset.action;
|
||||
recipeEditorModule.handleChange(action, actionEl);
|
||||
});
|
||||
|
||||
document.addEventListener("keydown", (event) => {
|
||||
if (event.key !== "Escape") return;
|
||||
const ingSheet = document.getElementById("ingredientMobileSheet");
|
||||
if (ingSheet && !ingSheet.hidden) {
|
||||
handlers.closeIngredientMobileSheet?.();
|
||||
return;
|
||||
}
|
||||
const grpSheet = document.getElementById("unloadingGroupMobileSheet");
|
||||
if (grpSheet && !grpSheet.hidden) {
|
||||
handlers.closeUnloadingGroupMobileSheet?.();
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user