layout = {
const container = document.createElement('div');
container.classList.add("exo2");
container.style.margin = "0 auto";
container.style.maxWidth = "950px";
const loader = document.createElement('div');
loader.style.width = canvas_width + "px";
loader.style.height = canvas_height + "px";
loader.style.position = "absolute";
loader.style.zIndex = 99;
loader.style.backgroundColor = "white";
loader.style.opacity = 0.9;
loader.style.border = "1px solid gray";
loader.style.display = "flex";
loader.style.justifyContent = "center";
loader.style.alignItems = "center";
const loadTitle = document.createElement("p");
loadTitle.style.flex = "0 0 " + width + "px";
loadTitle.style.textAlign = "center";
loadTitle.appendChild(document.createTextNode("Click to Start Animation"));
loader.appendChild(loadTitle);
if (!loaded) {
container.appendChild(loader)
Object.assign(loader, {onclick: () => mutable loaded = true})
}
const simulation_canvas = document.createElement('canvas');
simulation_canvas.style.position = "relative";
simulation_canvas.style.width = canvas_width + 'px';
simulation_canvas.style.height = canvas_height + 'px';
simulation_canvas.width = canvas_width * 2;
simulation_canvas.height = canvas_height * 2;
simulation_canvas.style.border = "1px solid black";
const simulation_container = document.createElement('div');
simulation_container.style.display = 'inline-block';
simulation_container.style.verticalAlign = "top";
simulation_container.appendChild(simulation_canvas);
container.appendChild(simulation_container);
const controls_container = document.createElement('div');
controls_container.style.display = 'inline-block';
controls_container.style.width = '400px';
if (width > 900) {
controls_container.style.marginLeft = '20px';
}
else {
controls_container.style.marginTop = '20px';
}
controls_container.style.verticalAlign = "top";
controls_container.append(controls);
const graph_canvas = document.createElement('canvas');
graph_canvas.style.position = "relative";
graph_canvas.width = width > 400 ? 800 : width * 2;
graph_canvas.height = graph_canvas.width * 0.3;
graph_canvas.style.width = graph_canvas.width * 0.5 + 'px';
graph_canvas.style.height = graph_canvas.height * 0.5 + 'px';
graph_canvas.style.border = "1px solid black";
controls_container.append(graph_canvas);
controls_container.appendChild(graph_description);
container.appendChild(controls_container);
return {container, simulation_canvas, graph_canvas}
}