197 lines
6.7 KiB
PHP
197 lines
6.7 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>OctoPrint Dashboard</title>
|
|
<!-- Required meta tags -->
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<!-- Bootstrap CSS -->
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
|
|
integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
|
|
<!-- FontAwesome -->
|
|
<script src="https://kit.fontawesome.com/719158633b.js" crossorigin="anonymous"></script>
|
|
|
|
<style>
|
|
body {
|
|
background-color: #212529;
|
|
color: #fff;
|
|
}
|
|
|
|
.card {
|
|
background-color: #343a40;
|
|
color: #fff;
|
|
}
|
|
|
|
.badge {
|
|
color: #fff;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
|
<div class="container-fluid">
|
|
<a class="navbar-brand" href="#">Octotor</a>
|
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
|
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
|
<span class="navbar-toggler-icon"></span>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
<ul class="navbar-nav">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" aria-current="page" href="#">Dashboard</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="./styleControls.html">Control</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="container my-3">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Printer infos</h5>
|
|
<ul class="list-group list-group-item-dark">
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Printer Name
|
|
<span class="badge bg-primary" id="lblPrinterName">My Printer</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Printer Status
|
|
<span class="badge bg-success" id="lblPrinterState">Operational</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Current Job
|
|
<span class="badge bg-info" id="lblCurrentJob">Printing</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Progress
|
|
<span class="badge bg-secondary" id="lblJobProgress">35%</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Temperature Bed
|
|
<span class="badge bg-primary" id="lblBedTemp">50.0°C / 60.0°C</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Temperature Tool 0
|
|
<span class="badge bg-primary" id="lblToolTemp">200.0°C / 210.0°C</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Time Remaining
|
|
<span class="badge bg-secondary" id="lblPrintTimeRemaining">1:23:45</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Time Elapsed
|
|
<span class="badge bg-secondary" id="lblTimeElapsed">2:01:23</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Time Print
|
|
<span class="badge bg-secondary" id="lblExpectedPrintTime">3:25:08</span>
|
|
</li>
|
|
<li class="list-group-item d-flex justify-content-between align-items-center">
|
|
Filament Printed
|
|
<span class="badge bg-secondary" id="lblPrintedFilament">100m</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- Iframe -->
|
|
<div class="container my-3">
|
|
<div class="card">
|
|
<div class="card-body">
|
|
<h5 class="card-title">Webcam Stream</h5>
|
|
<iframe src="http://192.168.50.239/webcam/?action=stream" width="100%" height="200" frameborder="0"></iframe>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Document</title>
|
|
</head>
|
|
|
|
<body display: inline>
|
|
<button id="btnRefresh">RefreshInfos</button>
|
|
|
|
<h2>Printer temperatures</h2>
|
|
<h3>
|
|
Hot end : <div id="lblHotEndTemp">NaN</div>
|
|
Target : <div id="lblHotEndTempTarget">NaN</div>
|
|
</h3>
|
|
<h3>
|
|
Bed :<div id="lblBedTemp">NaN</div>
|
|
Target : <div id="lblBedTempTarget">NaN<div>
|
|
</h3>
|
|
|
|
<h2>Job</h2>
|
|
<h3>Status : </h3>
|
|
<h3 id="lblJobStatus">NaN</h3>
|
|
<h3>Completion : </h3>
|
|
<h3 id="lblCompletion">NaN</h3>
|
|
<h3>Print time : </h3>
|
|
<h3 id="lblPrintTime">NaN</h3>
|
|
<h3>Time left : </h3>
|
|
<h3 id="lblPrintTimeLeft">NaN</h3>
|
|
|
|
<h2>Print</h2>
|
|
<h3>Estimated print time :</h3>
|
|
<h3 id="lblEstimatedPrintTime">NaN</h3>
|
|
|
|
<h3><b>Filament</b></h3>
|
|
<h3>length :</h3>
|
|
<h3 id="lblFilamentLength">NaN</h3>
|
|
<h3>volume :</h3>
|
|
<h3 id="lblFilamentVolume">NaN</h3>
|
|
|
|
<h3><b>File</b></h3>
|
|
<h3>Filename :</h3>
|
|
<h3 id="lblJobFileName">NaN</h3>
|
|
<h3>Last print time :</h3>
|
|
<h3 id="lblJobFileLastPrintedTime">NaN</h3>
|
|
|
|
|
|
<label for="inptBedTempTarget">Bed temp target :</label><input type="number" min="0" id="tbxBedTempTarget">
|
|
</br>
|
|
<label for="inptHotEndTempTarget">Hot end temp target :</label><input type="number" min="0" id="tbxHotEndTempTarget">
|
|
</br>
|
|
<button id="btnSetNewTemps">confirm</button>
|
|
|
|
<h3>Monitor</h3>
|
|
<iframe src="http://192.168.50.239/webcam/?action=stream" title="webcam stream" frameborder="0" width="640" height="480">></iframe>
|
|
</body>
|
|
|
|
</html>
|
|
<script type="module">
|
|
"use strict";
|
|
|
|
import * as methods from "./JS/methods.js";
|
|
|
|
let btnRefresh = document.getElementById("btnRefresh");
|
|
let btnSetNewTemps = document.getElementById("btnSetNewTemps");
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
methods.load();
|
|
});
|
|
var timer = window.setInterval(function() {
|
|
methods.RecoverPrinterInfos();
|
|
methods.RecoverJobInfos();
|
|
}, 1000)
|
|
btnRefresh.addEventListener('click', event => {
|
|
methods.RecoverPrinterInfos();
|
|
});
|
|
btnSetNewTemps.addEventListener('click', event => {
|
|
let bedTemp = parseInt(tbxBedTemp.value);
|
|
let hotEndTemp = parseInt(tbxHotEndTemp.value);
|
|
methods.setNewBedTemps(bedTemp);
|
|
methods.setNewHotEndTemps(hotEndTemp);
|
|
});
|
|
</script> |