diff --git a/src/web/HTMLOperation.mjs b/src/web/HTMLOperation.mjs
index ae61b58d..30cfd1d9 100755
--- a/src/web/HTMLOperation.mjs
+++ b/src/web/HTMLOperation.mjs
@@ -85,6 +85,7 @@ class HTMLOperation {
pause
not_interested
+ keyboard_arrow_up
`;
diff --git a/src/web/Manager.mjs b/src/web/Manager.mjs
index b02a7eee..b188b3b9 100755
--- a/src/web/Manager.mjs
+++ b/src/web/Manager.mjs
@@ -139,6 +139,7 @@ class Manager {
document.getElementById("load-delete-button").addEventListener("click", this.controls.loadDeleteClick.bind(this.controls));
document.getElementById("load-name").addEventListener("change", this.controls.loadNameChange.bind(this.controls));
document.getElementById("load-button").addEventListener("click", this.controls.loadButtonClick.bind(this.controls));
+ document.getElementById("hide-icon").addEventListener("click", this.controls.hideRecipeArgsClick.bind(this.recipe));
document.getElementById("support").addEventListener("click", this.controls.supportButtonClick.bind(this.controls));
this.addMultiEventListeners("#save-texts textarea", "keyup paste", this.controls.saveTextChange, this.controls);
@@ -154,6 +155,7 @@ class Manager {
// Recipe
this.addDynamicListener(".arg:not(select)", "input", this.recipe.ingChange, this.recipe);
this.addDynamicListener(".arg[type=checkbox], .arg[type=radio], select.arg", "change", this.recipe.ingChange, this.recipe);
+ this.addDynamicListener(".hide-args-icon", "click", this.recipe.hideArgsClick, this.recipe);
this.addDynamicListener(".disable-icon", "click", this.recipe.disableClick, this.recipe);
this.addDynamicListener(".breakpoint", "click", this.recipe.breakpointClick, this.recipe);
this.addDynamicListener("#rec-list li.operation", "dblclick", this.recipe.operationDblclick, this.recipe);
diff --git a/src/web/html/index.html b/src/web/html/index.html
index 34c71d24..baeec278 100755
--- a/src/web/html/index.html
+++ b/src/web/html/index.html
@@ -181,6 +181,9 @@
Recipe
+
diff --git a/src/web/waiters/ControlsWaiter.mjs b/src/web/waiters/ControlsWaiter.mjs
index 660a7ec5..d1de20e8 100755
--- a/src/web/waiters/ControlsWaiter.mjs
+++ b/src/web/waiters/ControlsWaiter.mjs
@@ -345,6 +345,36 @@ class ControlsWaiter {
}
+ /**
+ * Hides the arguments for all the operations in the current recipe.
+ */
+ hideRecipeArgsClick() {
+ const icon = document.getElementById("hide-icon");
+
+ if (icon.getAttribute("hide-args") === "false") {
+ icon.setAttribute("hide-args", "true");
+ icon.setAttribute("data-original-title", "Show arguments");
+ icon.children[0].innerText = "keyboard_arrow_down";
+ Array.from(document.getElementsByClassName("hide-args-icon")).forEach(function(item) {
+ item.setAttribute("hide-args", "true");
+ item.innerText = "keyboard_arrow_down";
+ item.classList.add("hide-args-selected");
+ item.parentNode.previousElementSibling.style.display = "none";
+ });
+ } else {
+ icon.setAttribute("hide-args", "false");
+ icon.setAttribute("data-original-title", "Hide arguments");
+ icon.children[0].innerText = "keyboard_arrow_up";
+ Array.from(document.getElementsByClassName("hide-args-icon")).forEach(function(item) {
+ item.setAttribute("hide-args", "false");
+ item.innerText = "keyboard_arrow_up";
+ item.classList.remove("hide-args-selected");
+ item.parentNode.previousElementSibling.style.display = "grid";
+ });
+ }
+ }
+
+
/**
* Populates the bug report information box with useful technical info.
*
diff --git a/src/web/waiters/RecipeWaiter.mjs b/src/web/waiters/RecipeWaiter.mjs
index 42e763b0..3f5aa302 100755
--- a/src/web/waiters/RecipeWaiter.mjs
+++ b/src/web/waiters/RecipeWaiter.mjs
@@ -215,6 +215,45 @@ class RecipeWaiter {
window.dispatchEvent(this.manager.statechange);
}
+ /**
+ * Handler for hide-args click events.
+ * Updates the icon status.
+ *
+ * @fires Manager#statechange
+ * @param {event} e
+ */
+ hideArgsClick(e) {
+ const icon = e.target;
+
+ if (icon.getAttribute("hide-args") === "false") {
+ icon.setAttribute("hide-args", "true");
+ icon.innerText = "keyboard_arrow_down";
+ icon.classList.add("hide-args-selected");
+ icon.parentNode.previousElementSibling.style.display = "none";
+ } else {
+ icon.setAttribute("hide-args", "false");
+ icon.innerText = "keyboard_arrow_up";
+ icon.classList.remove("hide-args-selected");
+ icon.parentNode.previousElementSibling.style.display = "grid";
+ }
+
+ const icons = Array.from(document.getElementsByClassName("hide-args-icon"));
+ if (icons.length > 1) {
+ // Check if ALL the icons are hidden/shown
+ const uniqueIcons = icons.map(function(item) {
+ return item.getAttribute("hide-args");
+ }).unique();
+
+ const controlsIconStatus = document.getElementById("hide-icon").getAttribute("hide-args");
+
+ // If all icons are in the same state and the global icon isn't, fix it
+ if (uniqueIcons.length === 1 && icon.getAttribute("hide-args") !== controlsIconStatus) {
+ this.manager.controls.hideRecipeArgsClick();
+ }
+ }
+
+ window.dispatchEvent(this.manager.statechange);
+ }
/**
* Handler for disable click events.