Commit f40c2136 authored by Florent Becker's avatar Florent Becker

add the ontas

parent 4b83d8ec
...@@ -50,7 +50,14 @@ ...@@ -50,7 +50,14 @@
<button id="reset-to-seed-button" class="w3-bar-item w3-button">Reset To Seed</button> <button id="reset-to-seed-button" class="w3-bar-item w3-button">Reset To Seed</button>
</div> </div>
</div> </div>
</div> <div class="w3-dropdown-hover">
<button class="w3-button">OnTAM</button>
<div class="w3-dropdown-content w3-bar-block w3-card-4">
<button id="load-as-ontas-button" class="w3-bar-item w3-button">Load TDS file as OnTAS</button>
<button id="ontas-simulate-button" class="w3-bar-item w3-button">Simulate current system in the OnTAS</button>
</div>
</div>
</header> </header>
<div id="create-rectilinear-modal" class="w3-modal"> <div id="create-rectilinear-modal" class="w3-modal">
......
import init, {convert_to_onTAS} from '../lib/ontas_generator.js';
await init();
self.postMessage("ready");
self.onmessage = event => {
let tds = event.data.tds;
let tdp = event.data.tdp;
let newTds = convert_to_onTAS(tdp, tds);
self.postMessage(newTds);
}
// };
// self.onMessage = function(event) {
// for (let i = 0; i < 10; i++) {
// self.postMessage("coucou")
// }
// }
// self.onMessage = event => {
// try {
// let tds = event.data.tds;
// let tdp = event.data.tds;
// self.postMessage("actually starting");
//
// postMessage(newTds);
// } catch (error) {
// self.postMessage({ type: 'error', message: error.message });
// }
// }
...@@ -59,6 +59,10 @@ document.addEventListener('DOMContentLoaded', () => { ...@@ -59,6 +59,10 @@ document.addEventListener('DOMContentLoaded', () => {
document.getElementById('create-rectilinear-modal').style.display='none'; document.getElementById('create-rectilinear-modal').style.display='none';
}); });
/* OnTAM buttons */
document.getElementById("load-as-ontas-button").addEventListener('click', onOnTASLoadButton);
document.getElementById("ontas-simulate-button").addEventListener('click', onOnTASSimButton);
rlTable = new SimpleDataTable(document.getElementById("rl-truth-table")); rlTable = new SimpleDataTable(document.getElementById("rl-truth-table"));
rlTable.setHeaders(['Vert Input', 'Horz Input', 'Vert Output', 'Horz Output', 'Color']); rlTable.setHeaders(['Vert Input', 'Horz Input', 'Vert Output', 'Horz Output', 'Color']);
...@@ -221,6 +225,81 @@ function onSystemLoadButton() { ...@@ -221,6 +225,81 @@ function onSystemLoadButton() {
input.click(); input.click();
} }
function LoadAsOnTAS(tdsFile, tdsContents) {
let tilename_regex = /TILENAME .*/g;
let tilenames = tdsContents.match(tilename_regex);
let randomSeed = tilenames[Math.floor(Math.random()*tilenames.length)].substring(9);
let tdpContents = tdsFile + "\nTemperature=2\n" + randomSeed + " 0 0\n";
simulator.loadSystem({tdp: {name: "arbitrary", src: tdpContents}, tds: {name: tdsFile.name, src: tdsContents}});
}
function onOnTASLoadButton() {
const input = document.createElement('input');
input.type = 'file';
input.multiple = 'false';
input.onchange = () => {
let tdsFile = input.files[0];
const tdsPromise = new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => { resolve(reader.result); };
reader.onerror = reject;
reader.readAsText(tdsFile);
});
tdsPromise.then(tdsContents => LoadAsOnTAS(tdsFile, tdsContents));
};
// input.click();
}
async function onOnTASSimButton() {
let filename = document.getElementById('save-system-name').value;
let blobs = simulator.saveSystem(filename);
let tdpContents, tdsContents;
if (blobs === null) {
alert('No system to convert to the OnTAS. Please open a system before doing that');
return;
} else {
tdpContents = await blobs[0].text();
tdsContents = await blobs[1].text();
}
let myWorker = new Worker(new URL("src/ontasWorker.js", window.location.href).href, { type: "module"});
console.log("let's go");
myWorker.ready = false;
myWorker.onmessageerror = (event) => {
console.log(error)
};
myWorker.onerror = (error) => {
console.log(error);
console.error('Error occurred in worker:', error.message);
};
myWorker.onmessage = (event) => {
console.log(myWorker.ready)
if (myWorker.ready) {
let newTds = new TextDecoder().decode(event.data)
console.log(newTds);
LoadAsOnTAS("onTAS_for_" + filename, newTds);
} else {
console.log("worker ready");
console.log(event.data);
myWorker.ready = true;
let msg = { tds: tdsContents, tdp: tdpContents };
console.log("lancement calcul");
console.log(msg);
myWorker.postMessage(msg);
console.log("calcul lancé")
}
//
};
}
function onSystemSaveButton() { function onSystemSaveButton() {
document.getElementById('save-system-modal').style.display='block'; document.getElementById('save-system-modal').style.display='block';
} }
...@@ -584,4 +663,4 @@ function generateRectilinearTiles() { ...@@ -584,4 +663,4 @@ function generateRectilinearTiles() {
// // Add click event to <a> tag to save file. // // Add click event to <a> tag to save file.
// link.click(); // link.click();
// URL.revokeObjectURL(link.href); // URL.revokeObjectURL(link.href);
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment