Files
BLE-mesh-sim/index.html
T

124 lines
7.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BLE-mesh SIM</title>
<script type="text/javascript" src="js/vis-network.min.js"></script>
<script type="text/javascript" src="js/simhelper.js"></script>
<script type="text/javascript" src="js/CompleteMoveOnEdge.js"></script>
<script type="text/javascript" src="js/GridIndex.js"></script>
<link rel="stylesheet" id="styleSheet" href="style.css">
</head>
<body>
<div id="rowFlex" style="display: flex; flex-direction: row; align-items: start; justify-content: center; width: 100%; height: 100%;">
<div id="propertyViewer">
<div id="propertyViewerHeader">Simulation Properties</div>
<hr style="width: 100%;"/>
<details id="simpleSettings">
<summary>Simple Settings</summary>
<div id="simpleSettingsContent">
<label for="ttl">TTL</label>
<input type="number" id="ttl" value="5" autocomplete="off">
<label for="dropPenalty">Drop Penalty</label>
<input type="number" id="dropPenalty" value="1.2" autocomplete="off">
<label for="connectionDistance">Connection Distance</label>
<input type="number" id="connectionDistance" value="250" autocomplete="off">
</div>
</details>
<details id="hardwareConstraints">
<summary>Hardware Constraints</summary>
<div id="hardwareConstraintsContent">
<label for="maxConnections">Max Connections</label>
<input type="number" id="maxConnections" value="6" autocomplete="off">
</div>
</details>
<details id="engineSettings">
<summary>Engine Settings</summary>
<div id="engineSettingsContent">
<label for="updateInterval">Update Interval</label>
<input type="number" id="updateInterval" value="10" autocomplete="off">
<label for="simSpeed">Simulation Speed (x)</label>
<input type="number" id="simSpeed" value="1" min="0.1" step="0.1" autocomplete="off">
</div>
</details>
<details id="visualizationSettings">
<summary>Visualization Settings</summary>
<div id="visualizationSettingsContent">
<div id="visualizationSettingsToggles">
<input type="checkbox" id="showRanges" autocomplete="off">
<label for="showRanges">Show Ranges</label>
</div>
<div id="visualizationSettingsToggles">
<input type="checkbox" id="showGrid" autocomplete="off">
<label for="showGrid">Show Grid</label>
</div>
<div id="visualizationSettingsToggles">
<input type="checkbox" id="showNodeUpdates" autocomplete="off">
<label for="showNodeUpdates">Show Node Updates</label>
</div>
<div id="visualizationSettingsToggles">
<input type="checkbox" id="showTTL" autocomplete="off" checked>
<label for="showTTL">Show TTL Colors</label>
</div>
<div id="visualizationSettingsToggles">
<input type="checkbox" id="darkMode" autocomplete="off" checked>
<label for="darkMode">Dark Mode</label>
</div>
</div>
</details>
<div style="display: flex; flex-grow: 1; height: auto;"></div>
<hr style="width: 100%;"/>
<div id="darkModeContainer">
<input type="checkbox" id="quickPlace" class="simToggle">
<label for="quickPlace">Quick Place</label>
</div>
<button id="cancelMarkNeighbor">Cancel</button>
</div>
<div id="centerColumn" style="display: flex; flex-direction: column; align-items: center; justify-content: center; width: 70%; height: 100%; margin: 0 auto;">
<div id="simContainer"></div>
<div id="routingProgressContainer" style="display: none;">
<progress id="routingProgress" value="0" max="100"></progress>
</div>
<div id="controlContainer">
<div id="controlButtons">
<button id="addNode" class="controlButton">Add Node</button>
<button id="sendPacket" class="controlButton">Send Flood Packet</button>
<button id="quickPacket" class="controlButton">Quick Flood Packet</button>
<button id="resetTTLColors" class="controlButton">Reset TTL Colors</button>
<button id="createRoutingTables" class="controlButton">Create Routing Tables</button>
<button id="createRandomGraph" class="controlButton">Create Network</button>
</div>
</div>
</div>
<div id="connectionViewer">
<details id="connections"><summary>Connections</summary></details>
</div>
<div id="randomGraphModal">
<div id="randomGraphModalContent">
<label for="randomGraphNodes">Number of Nodes</label>
<input type="number" id="randomGraphNodes" value="10" autocomplete="off">
<div id="randomGraphModalButtons" style="display: flex; flex-direction: row; gap: 10px; justify-content: end; align-items: center;">
<button id="createRandomGraphCancel" class="controlButton" onclick="document.getElementById('randomGraphModal').style.display = 'none';">Cancel</button>
<button id="createRandomGraphConfirm" class="controlButton">Create</button>
</div>
</div>
</div>
<div id="warningModal">
<div id="warningModalContent">
<p id="warningModalMessage"></p>
<div id="warningModalCustomContent"></div>
<button id="warningModalConfirm" class="controlButton" onclick="document.getElementById('warningModal').style.display = 'none';">OK</button>
</div>
</div>
<div id="successModal">
<div id="successModalContent">
<p id="successModalMessage"></p>
<button id="successModalConfirm" class="controlButton" onclick="document.getElementById('successModal').style.display = 'none';">OK</button>
</div>
</div>
</div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>