- Removed AngularJS 1.4.8 completely — no more framework dependency - Extracted core RCON logic into pure vanilla JS (js/rcon.js) - Added lightweight hash-based SPA router (js/router.js) - Rewrote all 6 pages as vanilla JS modules in js/pages/ - Migrated Bootstrap 3 → Bootstrap 5 (cards instead of panels, bootstrap-icons instead of glyphicons) - Removed jQuery dependency (Bootstrap 5 is vanilla JS) - Purged all Angular templates from html/ - Removed npm artifacts (package.json, node_modules) - Added nginx.example.conf for static hosting - Updated rcon.css dark theme for BS5 variables - Static file only — no Node.js backend required Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
69 lines
3.0 KiB
HTML
69 lines
3.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Websocket Rcon</title>
|
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.2/nv.d3.min.css" rel="stylesheet">
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
|
|
<link href="rcon.css" rel="stylesheet">
|
|
</head>
|
|
<body class="bg-dark text-light">
|
|
|
|
<!-- Server info header (hidden until connected) -->
|
|
<nav class="navbar navbar-dark bg-primary" id="server-header" style="display:none">
|
|
<div class="container">
|
|
<a class="navbar-brand" href="#" id="header-hostname"></a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-collapse-header">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbar-collapse-header">
|
|
<span class="navbar-text me-3" title="Uptime" id="header-uptime"></span>
|
|
<span class="navbar-text me-3" title="Map Name" id="header-map"></span>
|
|
<span class="navbar-text me-3" title="Players" id="header-players"></span>
|
|
<span class="navbar-text me-3" title="Framerate" id="header-fps"></span>
|
|
<span class="navbar-text me-3" title="Entity Count" id="header-entities"></span>
|
|
<button class="btn btn-danger ms-auto" type="button" id="btn-disconnect">Disconnect</button>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Main layout: hidden until connected -->
|
|
<div id="app-connected" style="display:none">
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-md-2">
|
|
<ul class="nav flex-column nav-sidebar" id="sidebar-nav"></ul>
|
|
</div>
|
|
<div class="col-md-10">
|
|
<h1 id="page-title"></h1>
|
|
<div id="app-view"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Connect page: shown when not connected -->
|
|
<div id="app-connect" class="container"></div>
|
|
|
|
<!-- Bootstrap 5 JS (vanilla, no jQuery needed) -->
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
<!-- Charts -->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.16/d3.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.1/nv.d3.min.js"></script>
|
|
|
|
<!-- App scripts -->
|
|
<script src="js/utils.js"></script>
|
|
<script src="js/rcon.js"></script>
|
|
<script src="js/router.js"></script>
|
|
<script src="js/pages/connect.js"></script>
|
|
<script src="js/pages/serverInfo.js"></script>
|
|
<script src="js/pages/console.js"></script>
|
|
<script src="js/pages/chat.js"></script>
|
|
<script src="js/pages/playerlist.js"></script>
|
|
<script src="js/pages/playerInfo.js"></script>
|
|
<script src="js/app.js"></script>
|
|
</body>
|
|
</html>
|