diff --git a/frontend/src/main/scala/view/ButtonBar.scala b/frontend/src/main/scala/view/ButtonBar.scala index 48689d5..239451c 100644 --- a/frontend/src/main/scala/view/ButtonBar.scala +++ b/frontend/src/main/scala/view/ButtonBar.scala @@ -64,6 +64,7 @@ class ButtonBar( case "Reset" => eventBus.writer.onNext(Event.ResetSimulation) canvasManager.reset() + modal.resetPlot() if (timerId.now().isDefined) { dom.window.clearInterval(timerId.now().get) } diff --git a/frontend/src/main/scala/view/Modal.scala b/frontend/src/main/scala/view/Modal.scala index 05c5fbe..7610145 100644 --- a/frontend/src/main/scala/view/Modal.scala +++ b/frontend/src/main/scala/view/Modal.scala @@ -20,12 +20,25 @@ class Modal( private val gamesBankroll: Var[List[Double]] = Var(List.empty) private val customersBankroll: Var[List[Double]] = Var(List.empty) + private val plotCanvas = Var[Option[html.Canvas]](None) + import org.nspl.canvasrenderer.given import org.nspl.given def open(): Unit = isVisible.set(true) def close(): Unit = isVisible.set(false) + def resetPlot(): Unit = + gamesBankroll.set(List.empty) + customersBankroll.set(List.empty) + + try + val newCanvas = createPlot() + plotCanvas.set(Some(newCanvas)) + catch + case e: Exception => + println(s"Error creating plot after reset: ${e.getMessage}") + private def updateBankrolls(): Unit = gamesBankroll.set( gamesBankroll.now() :+ dataManager.now().currentGamesBankroll @@ -121,8 +134,6 @@ class Modal( canvas def init(): HtmlElement = - val plotCanvas = Var[Option[html.Canvas]](None) - dom.window.setInterval( () => dataManager.set(