- Update local webUI to refresh when joining server to clear modal - Updated client webUI page title - Re-added join modal to node page (client & server) - updated join modal to use node.nearbySystems
169 lines
8.1 KiB
Plaintext
169 lines
8.1 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en" data-bs-theme="auto">
|
|
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>'<%=node.name%>' - Configuration</title>
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">
|
|
<link rel="stylesheet" href="/res/css/main.css">
|
|
</head>
|
|
|
|
<body>
|
|
<%- include('partials/navbar.ejs') %>
|
|
<div aria-live="polite" aria-atomic="true" class="position-relative">
|
|
<!-- Position it: -->
|
|
<!-- - `.toast-container` for spacing between toasts -->
|
|
<!-- - `top-0` & `end-0` to position the toasts in the upper right corner -->
|
|
<!-- - `.p-3` to prevent the toasts from sticking to the edge of the container -->
|
|
<div class="toast-container top-0 end-0 p-3 max" id="toastZone">
|
|
</div>
|
|
</div>
|
|
<div class="container">
|
|
<div class="card mb-4">
|
|
<div class="card-header">
|
|
<p>
|
|
<span class="fs-2 fw-semibold">
|
|
Node Details
|
|
</span>
|
|
</p>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="col-md-12 pt-2">
|
|
<label class="small mb-1" for="nodeStatus">Online Status:</label>
|
|
<span class="badge badge-soft-success mb-0 align-middle fs-6" id="nodeStatus">Online</span>
|
|
|
|
<br>
|
|
<div class="py-2"></div>
|
|
<!-- Join Server button-->
|
|
<a type="button" class="btn btn-info text-white" data-bs-toggle="modal" data-bs-target="#joinModal"
|
|
href="#">Join Server</a>
|
|
<!-- Leave Server button -->
|
|
<a type="button" class="btn btn-danger" href="#" onclick="leaveServer()">Leave Server</a>
|
|
<!-- Checkin with client button -->
|
|
<a type="button" class="btn btn-secondary" href="#" onclick="sendNodeHeartbeat('<%=node.id%>')">Check-in
|
|
with Node</a>
|
|
<!-- Update Client button -->
|
|
<a type="button" class="btn btn-warning disabled" href="#"
|
|
onclick="requestNodeUpdate('<%=node.id%>')">Update Node</a>
|
|
</div>
|
|
<hr>
|
|
<form>
|
|
<div class="row gx-3 mb-3">
|
|
<div class="col-md-6">
|
|
<label class="small mb-1" for="nodeId">Node ID (this is the assigned Node ID and cannot be
|
|
changed)</label>
|
|
<input class="form-control" id="nodeId" type="text" value="<%=node.id%>" disabled></input>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row gx-3 mb-3">
|
|
<div class="col-md-12">
|
|
<label class="small mb-1" for="inputNodeName">Node Name:</label>
|
|
<input class="form-control" id="inputNodeName" type="text" value="<%=node.name%>"></input>
|
|
</div>
|
|
</div>
|
|
<div class="row gx-3 mb-3">
|
|
<div class="col-md-4">
|
|
<label class="small mb-1" for="inputNodeIp">Node IP Address (that the server can
|
|
contact):</label>
|
|
<input class="form-control" id="inputNodeIp" type="text" value="<%=node.ip%>"></input>
|
|
</div>
|
|
<div class="col-md-2">
|
|
<label class="small mb-1" for="inputOrgName">Node Port (with the API):</label>
|
|
<input class="form-control" id="inputOrgName" type="number" value="<%=node.port%>"></input>
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="small mb-1" for="inputNodeLocation">Node Location (physical location):</label>
|
|
<input class="form-control" id="inputNodeLocation" type="location" value="<%=node.location%>"></input>
|
|
</div>
|
|
<h4>
|
|
Nearby Systems
|
|
</h4>
|
|
<hr>
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="main-box no-header clearfix">
|
|
<div class="main-box-body clearfix">
|
|
<div class="table-responsive">
|
|
<table class="table user-list <% if(!node.online) { %>disabled<% } %>">
|
|
<thead>
|
|
<tr>
|
|
<th><span>System Name</span></th>
|
|
<th><span>Frequencies</span></th>
|
|
<th><span>Protocol</span></th>
|
|
<th> </th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% for(const system in node.nearbySystems){ %>
|
|
<tr>
|
|
<td>
|
|
<%= system %>
|
|
</td>
|
|
<td>
|
|
<% if(node.nearbySystems[system].frequencies.length> 1) { %>
|
|
<ul>
|
|
<% for(const frequency of node.nearbySystems[system].frequencies) { %>
|
|
<li>
|
|
<%=frequency%> MHz
|
|
</li>
|
|
<% } %>
|
|
</ul>
|
|
<% } else { const frequency=node.nearbySystems[system].frequencies[0] %>
|
|
<%=frequency%> MHz
|
|
<% } %>
|
|
</td>
|
|
<td>
|
|
<span class="label label-default text-uppercase">
|
|
<%= node.nearbySystems[system].mode %>
|
|
</span>
|
|
</td>
|
|
<td>
|
|
<a href="#" class="table-link text-info label" data-bs-toggle="modal"
|
|
data-bs-target="#updateSystemModal_<%=system.replaceAll(" ", " _")%>">
|
|
<i class="bi bi-pencil"></i>
|
|
</a>
|
|
<a class="table-link text-danger label" onclick="removeSystem('<%=system%>')">
|
|
<i class="bi bi-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<% // Update system modal %>
|
|
<%- include("partials/modifySystemModal.ejs", {'system': system, 'frequencies' :
|
|
node.nearbySystems[system].frequencies, 'mode' : node.nearbySystems[system].mode}) %>
|
|
<% } %>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Save changes button-->
|
|
<button class="btn btn-primary" type="button" onclick="saveNodeDetails()">Save changes</button>
|
|
<!-- Button trigger modal -->
|
|
<button type="button" class="btn btn-primary float-right" data-bs-toggle="modal"
|
|
data-bs-target="#updateSystemModal_New_System">Add New System</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<% // new System Modal %>
|
|
<%- include("partials/modifySystemModal.ejs", {'system': "New System" , 'frequencies' : [], 'mode' : '' }) %>
|
|
<% // Join Server Modal %>
|
|
<%- include("partials/joinModal.ejs", {'node': node}) %>
|
|
</body>
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"
|
|
integrity="sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz" crossorigin="anonymous"></script>
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"
|
|
integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw=="
|
|
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
|
|
<script src="/res/js/node.js"></script>
|
|
|
|
</html> |