Files
AnaLogger/server/templates/logger.html
T
Marco Locatelli 74ce276050 update html
2021-04-14 16:42:16 +02:00

355 lines
14 KiB
HTML

{% extends "layout.html" %}
{% block content %}
<main>
<script type="text/javascript">
var intTime=200;
// fix visualizzazioni
fixFolderTable();
fixFileTable();
dataRefresh();
// avvio timer
var timeout = setTimeout(dataRefresh, intTime);
function dataRefresh() {
// scarico i dati aggioranti
$.ajax({url: "/api/v1/channels/all", success: function(result){
// compilo i dati scaricati
$("#SelChannelA").html(result.ChA);
$("#OutputA").html(result.Outs[result.ChA]);
setGaugeA(result.Outs[result.ChA],result.Outmin[result.ChA],result.Outmax[result.ChA]);
$("#SelChannelB").html(result.ChB);
$("#OutputB").html(result.Outs[result.ChB]);
setGaugeB(result.Outs[result.ChB],result.Outmin[result.ChB],result.Outmax[result.ChB]);
$("#LogFrequency").html(result.LogFreq);
$("#WriteFrequency").html(result.WriteFreq);
$("#LoggerTime").html(result.timeLog);
$("#ServerTime").html(result.timeSrv);
$("#LastSessionName").html(result.LastSessionName);
$("#CurrentFolder").html(result.CurrentWorkFolder);
// Se ho una current folder assegnata, la mostro e mostro contenuto. Altrimenti mostro elenco cartelle.
if(result.CurrentWorkFolder == "")
{
$("#Div7").hide();
$("#Div8").hide();
$("#Div9").show();
$("#Div10").hide();
$("#Div11").hide();
}
else
{
$("#Div7").show();
$("#Div8").show();
$("#Div9").hide();
$("#Div10").show();
$("#Div11").show();
}
// Se LOG:STATUS è 0, mostro solo Start Log. se è 1, mostro solo Stop Log
if(result.Status == "0")
{
$("#btnStart").show();
$("#btnStop").hide();
}
else if(result.Status == "1")
{
$("#btnStart").hide();
$("#btnStop").show();
}
if(result.GateOpen == "1")
{
$("#divWarnCanc").show();
}
else
{
$("#divWarnCanc").hide();
}
//scarico unità di misura dei canali mostrati
$("#UniMisuA").html(result.UniMeasure[result.ChA]);
$("#UniMisuB").html(result.UniMeasure[result.ChB]);
}});
// A ogni giro di data refresh fix di tabella cartelle e tabella file
fixFolderTable();
fixFileTable();
timeout = setTimeout(dataRefresh, intTime);
};
function setGaugeA(chValA,outMinA,outMaxA){
// Create knob elements
const knob0 = pureknob.createKnob(200, 200);
// Set properties knob0
knob0.setProperty('angleStart', -0.8 * Math.PI);
knob0.setProperty('angleEnd', 0.8 * Math.PI);
knob0.setProperty('colorFG', '#07adec');
knob0.setProperty('trackWidth', 0.3);
knob0.setProperty('valMin', parseInt(outMinA));
knob0.setProperty('valMax', parseInt(outMaxA));
knob0.setProperty('readonly', 'true');
// Set initial value0
knob0.setValue(chValA);
// Create element node0
const node0 = knob0.node();
// Add it to the DOM.
$("#divChA").html(node0);
}
function setGaugeB(chValB,outMinB,outMaxB){
// Create knob elements
const knob1 = pureknob.createKnob(200, 200);
// Set properties knob1
knob1.setProperty('angleStart', -0.8 * Math.PI);
knob1.setProperty('angleEnd', 0.8 * Math.PI);
knob1.setProperty('colorFG', '#07adec');
knob1.setProperty('trackWidth', 0.3);
knob1.setProperty('valMin', parseInt(outMinB));
knob1.setProperty('valMax', parseInt(outMaxB));
knob1.setProperty('readonly', 'true');
// Set initial value1
knob1.setValue(chValB);
// Create element node1
const node1 = knob1.node();
// Add it to the DOM.
$("#divChB").html(node1);
}
// Funzione startLog: chiamata /api/v1/log/start per avviare log e dare nome
function startLog(){
$.ajax({
type: 'PUT'
,url: "/api/v1/log/start"
,data: ""
})
// fix table
dataRefresh();
};
// Funzione stopLog: fa chiamata per settare a 0 il LOG:STATUS
function stopLog(){
$.ajax({
type: 'PUT'
,url: "/api/v1/log/stop"
,data: ""
})
// fix table
dataRefresh();
};
function goBack(){
$.ajax({
type: 'PUT'
,url: "/api/v1/data/navigate"
,data: ""
})
// fix table
dataRefresh();
};
//funzione exportData: chiamata per copiare e incollare il contenuto della cartella /data
function exportData(){
$.ajax({
type: 'PUT'
,url: "/api/v1/data/export"
,data: ""
})
// fix table
dataRefresh();
};
//funzione deleteData: chiamata per eliminare il contenuto della cartella /data
function deleteData(){
var R = confirm("Confermi di voler eliminare la cartella attuale e il suo contenuto?");
if (R == true){
$.ajax({
type: 'PUT'
,url: "/api/v1/data/delete"
,data: ""
})
dataRefresh();
}
else{
dataRefresh();
}
};
function fixFolderTable(){
// scarico i dati aggioranti
$.ajax({url: "/api/v1/folders/list", success: function(result){
folderTable = result.folderTable;
// fix file
UpdateFolderTable(folderTable);
}});
}
function UpdateFolderTable(folderTable) {
// EXTRACT VALUE FOR HTML HEADER.
var col = [];
for (var i = 0; i < folderTable.length; i++) {
for (var key in folderTable[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
// CREATE DYNAMIC TABLE.
var tableF = document.createElement("table");
// CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
// TABLE ROW.
var tr = tableF.insertRow(-1);
// TABLE HEADER.
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
th.innerHTML = col[i];
tr.appendChild(th);
}
// ADD JSON DATA TO THE TABLE AS ROWS.
for (var i = 0; i < folderTable.length; i++) {
tr = tableF.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = folderTable[i][col[j]];
}
}
// FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
var divContainer = document.getElementById("showFolders");
divContainer.innerHTML = "";
divContainer.appendChild(tableF);
}
function fixFileTable(){
// scarico i dati aggioranti
$.ajax({url: "/api/v1/files/list", success: function(result){
fileTable = result.fileTable;
// fix file
UpdateFileTable(fileTable);
}});
}
function UpdateFileTable(fileTable) {
// EXTRACT VALUE FOR HTML HEADER.
var col = [];
for (var i = 0; i < fileTable.length; i++) {
for (var key in fileTable[i]) {
if (col.indexOf(key) === -1) {
col.push(key);
}
}
}
// CREATE DYNAMIC TABLE.
var table = document.createElement("table");
// CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.
// TABLE ROW.
var tr = table.insertRow(-1);
// TABLE HEADER.
for (var i = 0; i < col.length; i++) {
var th = document.createElement("th");
th.innerHTML = col[i];
tr.appendChild(th);
}
// ADD JSON DATA TO THE TABLE AS ROWS.
for (var i = 0; i < fileTable.length; i++) {
tr = table.insertRow(-1);
for (var j = 0; j < col.length; j++) {
var tabCell = tr.insertCell(-1);
tabCell.innerHTML = fileTable[i][col[j]];
}
}
// FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
var divContainer = document.getElementById("showData");
divContainer.innerHTML = "";
divContainer.appendChild(table);
}
</script>
<div class="container-fluid">
<div class="row my-2">
<div class="col-12 alert alert-danger text-center" id="divWarnCanc">
<h3>CANCELLO APERTO</h3>
</div>
</div>
<div class="row my-2">
<div class="col-6">
<div class="card text-center">
<div class="card-header">
<strong>Channel A: <span id="SelChannelA"></span></strong>
</div>
<div class="card-body">
<div id="divChA"></div>
<div class="row">
<div class="col-12">
<span class="h5" id="OutputA"></span>
<span class="h5" id="UniMisuA"></span>
</div>
</div>
</div>
</div>
</div>
<div class="col-6">
<div class="card text-center">
<div class="card-header">
<strong>Channel B: <span id="SelChannelB"></span></strong>
</div>
<div class="card-body">
<div id="divChB"></div>
<div class="row">
<div class="col-12">
<span class="h5" id="OutputB"></span>
<span class="h5" id="UniMisuB"></span>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="Div7" class="table-secondary text-center py-2 m-2 row"> <!--Div7 ovvero pulsanti Start e Stop-->
<div class="col-6">
<button id="btnStart" type="button" class="btn btn-success btn-block" onclick="startLog()">Start Log</button>
</div>
<div class="col-6">
<button id="btnStop" type="button" class="btn btn-warning btn-block" onclick="stopLog()">Stop Log</button>
</div>
</div>
<div class="card my-2">
<div class="card-header">
<div class="row" id="Div8"> <!--Div8 ovvero cartella attuale e sessione attuale-->
<div class="col-6"><strong>Cartella attuale: &nbsp;</strong> <h5><span id="CurrentFolder"></span></h5></div>
<div class="col-6"><strong>Sessione attuale: &nbsp;</strong> <h5><span id="LastSessionName"></span></h5></div>
</div>
<div id="Div9"> <!--Div9 ovvero selezione cartella-->
<p id="showFolders"></p>
<form method="POST" action="/api/v1/setup/workingtree">
<div class="input-group my-2">
<span class="input-group-text col-5">Seleziona o Crea Cartella: &nbsp;</span>
<input type="text" class="form-control col-5" id="NewFolder" name="NewFolder"></input>
<input type="submit" value="INVIO" class="btn btn-success col-2"></input>
</div>
</form>
</div>
<div id="Div10"> <!--Div10 ovvero 3 pulsanti logger-->
<div class="row mt-2">
<div class="col-4">
<button type="button" class="btn btn-info btn-block" onclick="goBack()">Torna Indietro</button>
</div>
<div class="col-4">
<button type="button" class="btn btn-primary btn-block" onclick="exportData()">Esporta Cartella</button>
</div>
<div class="col-4">
<button type="button" class="btn btn-danger btn-block" onclick="deleteData()">Cancella Cartella</button>
</div>
</div>
</div>
</div>
<div class="card-body" id="Div11"> <!--Div11 ovvero elenco files-->
<p class="text-center" id="showData"></p>
</div>
</div>
</div>
</main>
{% endblock %}