+ with file_writer.file_writer(RECIPE_PATH) as f:
+ f.write(
+ """
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Current Recipe</title>
+ <style>
+ #recipe {
+ height: 100%;
+ }
+ html,
+ body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ }
+ </style>
+ <script>
+ const sleep = (milliseconds) => {
+ return new Promise(resolve => setTimeout(resolve, milliseconds))
+ }
+
+ function iframeRef( frameRef ) {
+ return frameRef.contentWindow
+ ? frameRef.contentWindow.document
+ : frameRef.contentDocument
+ }
+
+ function countdown() {
+ setTimeout(
+ function() {
+ var now = new Date();
+ var deltaMs = now.getTime() - loadedDate.getTime();
+ var totalMs = 120000;
+ var remainingMs = (totalMs - deltaMs);
+
+ if (remainingMs <= 0) {
+ // Reload unconditionally every two minutes.
+ window.location.reload(true);
+ }
+
+ // Get rid of the recipe title bar, it's too big.
+ var recipe = iframeRef(document.getElementById('embedded'))
+ recipe.getElementById('id_main_nav').style.visibility = 'hidden';
+
+ // Brief sleep before doing it all over again.
+ sleep(1000).then(() => {
+ countdown();
+ });
+ }, 1000)
+ }
+ </script>
+ </head>
+ """
+ )
+ f.write(
+ f"""
+ <body onload='javascript:loadedDate = new Date(); countdown();'>
+ <span>
+ <div id="recipe">
+ <IFRAME ID='embedded' WIDTH=100% HEIGHT=100% SRC="{url}"></IFRAME>
+ </div>
+ </span>
+ </body>
+</html>
+ """
+ )