Clearing The Canvas

We continue in the Speedy Chef project folder throughout this section.

The clearCanvas function

When we have finished the pizza and added it to the oven, we need to clear the canvas ready to make the next one.

As you may have guessed, we create a function to do this at the bottom of the script:

function clearCanvas() {
  // remove disabled attribute from ingredients
  const steps = document.getElementsByClassName('ingredient');
  // convert HTMLCollection to array, so we can use array methods
  Array.from(steps).forEach(function(element) {
    element.removeAttribute('disabled');
  });

  // reset any rotation values (eg ham pineapple)
  ctx.setTransform(1, 0, 0, 1, 0, 0);

  // clear canvas
  ctx.clearRect(0, 0, canvas.width, canvas.height);
}

The clearRect method

The above function uses the clearRect method. This begins in the top-left position of the canvas (0,0), and resets the full width and height of the canvas area to transparent rgba(0,0,0,0).

Calling the clearCanvas function

Then call the clearCanvas function when we add the pizza to the oven:

function addToOven() {
    pizzasCompleteForOrder++;
    const pizzaName = document.querySelector("#current_pizza").innerText;
    if (pizzaName) {
        const pizzaForOven = {
            name: pizzaName,
            timeAdded: Date.now(),
        };
        oven.push(pizzaForOven);
        displayOvenItems();
        // 1. call function
        clearCanvas();
        // 2. also reset the completedSteps array:
        completedSteps = [];
    }
}

Try this out by selecting a pizza, add the toppings, add to oven, and the canvas should automatically clear!