// Init Elm var localStuff = localStorage.getItem("pc_data"); if (typeof localStuff !== "string") localStuff = ""; var app = Elm.Main.init({ node: document.getElementById("elm"), flags: localStuff }); // ################################################################### // ################################################################### // Dom Objects let pc = document.getElementsByClassName("pc")[0]; let pc_ram = pc.getElementsByClassName("ram")[0]; let pc_cu = pc.getElementsByClassName("cu")[0]; let pc_alu = pc.getElementsByClassName("alu")[0]; let pc_ram_scroller = pc_ram.getElementsByClassName("scroller")[0]; let pc_cu_scroller = pc_cu.getElementsByClassName("scroller")[0]; let control_autoscroll = document.getElementById("enableScrolling"); // Methods function scrollToCurrent(){ if( control_autoscroll.checked == false ) return; let current_ram = pc_ram.getElementsByClassName("current")[0]; let current_uCode = pc_cu.getElementsByClassName("current")[0]; if( pc.scrollIntoViewIfNeeded == undefined ){ if( typeof current_ram != "undefined"){ current_ram.scrollIntoView({behavior: "smooth", block: "nearest"}); } if( typeof current_uCode != "undefined"){ current_uCode.scrollIntoView({behavior: "smooth", block: "nearest"}); } }else{ if( typeof current_ram != "undefined"){ current_ram.scrollIntoViewIfNeeded({behavior: "smooth", block: "nearest"}); } if( typeof current_uCode != "undefined"){ current_uCode.scrollIntoViewIfNeeded({behavior: "smooth", block: "nearest"}); } } // pc.scrollIntoView(); } // ################################################################### // ################################################################### // EVENT LISTENERS // Recieve Elm updates via ports app.ports.sendUUpdate.subscribe( (message) => { // console.log("Update: ", message); scrollToCurrent(); // Make sure that even when the calculation takes longer it will scroll correctly setTimeout( scrollToCurrent, 100 ); } ); // Recieve LocalSession Updates via Ports app.ports.localStorageSend.subscribe( (message) => { // console.log("localSessionSend: ", message); if( cookieAccepted() ) localStorage.setItem("pc_data", message); } ); // ################################################################### // ################################################################### // Done.