629 lines
30 KiB
HTML
629 lines
30 KiB
HTML
{% extends "layout.html" %}
|
|
|
|
{% block content %}
|
|
<main>
|
|
<script type="text/javascript">
|
|
var intTime=500;
|
|
|
|
refreshInput();
|
|
|
|
var timeout = setInterval(dataRefresh, intTime);
|
|
var timeoutSetting = setInterval(refreshSettings, intTime);
|
|
|
|
function fixFloat(actVal, numCount)
|
|
{
|
|
return parseFloat(actVal).toFixed(numCount)
|
|
}
|
|
|
|
// carico la prima volta i dati
|
|
function refreshInput() {
|
|
$.ajax({url: "/api/v1/channels/current", success: function(result){
|
|
// compilo i dati scaricati
|
|
numCount = parseInt(result.DecimalsCount)
|
|
numDisplay = parseInt(result.DecimalsDisplay)
|
|
$("#CurrIn").html(fixFloat(result.CurrIn,numCount));
|
|
$("#CurrOut").html(fixFloat(result.CurrOut, numCount));
|
|
$("#LogFreq").val(result.LogFreq);
|
|
$("#WriteFreq").val(result.WriteFreq);
|
|
$("#TimeBeforeWrite").val(result.TimeBeforeWrite);
|
|
$("#DecimalsCount").val(result.DecimalsCount);
|
|
$("#DecimalsDisplay").val(result.DecimalsDisplay);
|
|
$("#ServerTime").html(result.timeSrv);
|
|
$("#ddlChannels").val(result.numCh);
|
|
$("#MinOut").val(result.MinOut);
|
|
$("#MaxOut").val(result.MaxOut);
|
|
$("#MinIn").val(result.MinIn);
|
|
$("#MaxIn").val(result.MaxIn);
|
|
$("#K1Const").val(result.CostanteK1);
|
|
$("#K2Const").val(result.CostanteK2);
|
|
$("#Offset").val(result.Offset);
|
|
$("#CurrentFolder").html(result.CurrentWorkFolder);
|
|
$("#UniMisura").val(result.UniMisura);
|
|
$("#ChanThresh").val(result.ChanThresh);
|
|
$("#SmoothFact").val(result.SmoothFact);
|
|
$("#EFact").val(result.EFact);
|
|
$("#CalcUMeasure").val(result.CalcUMeasure);
|
|
$("#MinUptime").val(result.MinUptime);
|
|
$("#RecPeriod").html(result.SmoothFact*result.LogFreq);
|
|
// inizio nascondendo div2 e div3
|
|
$("#Div1").show();
|
|
$("#Div2").hide();
|
|
$("#Div3").hide();
|
|
if(result.ShowDiv02 == "1")
|
|
{
|
|
$("#Div2").show();
|
|
$("#Div1").hide();
|
|
}
|
|
if(result.ShowDiv03 == "1")
|
|
{
|
|
$("#Div3").show();
|
|
$("#Div1").hide();
|
|
}
|
|
}});
|
|
}
|
|
|
|
function refreshSettings() {
|
|
$.ajax({url: "/api/v1/channels/current", success: function(result){
|
|
// compilo i dati scaricati
|
|
numCount = parseInt(result.DecimalsCount)
|
|
numDisplay = parseInt(result.DecimalsDisplay)
|
|
$("#CurrIn").html(fixFloat(result.CurrIn,numCount));
|
|
$("#CurrOut").html(fixFloat(result.CurrOut, numCount));
|
|
$("#LoggerTime").html(result.timeLog);
|
|
$("#ServerTime").html(result.timeSrv);
|
|
$("#MinIn").html(result.MinIn);
|
|
$("#MaxIn").html(result.MaxIn);
|
|
}});
|
|
}
|
|
|
|
function dataRefresh() {
|
|
// scarico i dati aggioranti
|
|
$.ajax({url: "/api/v1/channels/all", success: function(result){
|
|
|
|
numCount = parseInt(result.DecimalsCount)
|
|
numDisplay = parseInt(result.DecimalsDisplay)
|
|
$("#SelChannelA").val(result.ChA);
|
|
$("#ChannelA").html(fixFloat(result.Channels[result.ChA],numCount+1));
|
|
$("#OutputA").html(fixFloat(result.Outs[result.ChA],numCount));
|
|
|
|
$("#SelChannelB").val(result.ChB);
|
|
$("#ChannelB").html(fixFloat(result.Channels[result.ChB],numCount+1));
|
|
$("#OutputB").html(fixFloat(result.Outs[result.ChB],numCount));
|
|
|
|
$("#SelPowerChannel").val(result.SelPowerChannel);
|
|
$("#SelProcessing").val(result.SelProcessing);
|
|
$("#LogFrequency").html(result.LogFreq);
|
|
$("#WriteFrequency").html(result.WriteFreq);
|
|
$("#DecimalsCount").html(result.DecimalsCount);
|
|
$("#DecimalsDisplay").html(result.DecimalsDisplay);
|
|
$("#ServerTime").html(result.timeSrv);
|
|
$("#ChanScaleMin").html(result.ChScaleMin);
|
|
$("#ChanScaleMax").html(result.ChScaleMax);
|
|
$("#ChanRealMin").html(result.ChRealMin);
|
|
$("#ChanRealMax").html(result.ChRealMax);
|
|
$("#LastSessionName").html(result.LastSessionName);
|
|
}});
|
|
};
|
|
|
|
function setupValues(){
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/setupValues"
|
|
,data: ""
|
|
,success: function(){
|
|
alert('Setup Values');
|
|
}
|
|
})
|
|
refreshInput();
|
|
refreshSettings();
|
|
dataRefresh();
|
|
};
|
|
|
|
function workingValues(){
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/workingValues"
|
|
,data: ""
|
|
,success: function(){
|
|
alert('Working Values');
|
|
}
|
|
})
|
|
refreshInput();
|
|
refreshSettings();
|
|
dataRefresh();
|
|
};
|
|
|
|
function saveMin(){
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/saveInMin"
|
|
,data: ""
|
|
,success: function(){
|
|
alert('Min Set');
|
|
}
|
|
})
|
|
refreshInput();
|
|
refreshSettings();
|
|
dataRefresh();
|
|
};
|
|
|
|
function saveMax(){
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/saveInMax"
|
|
,data: ""
|
|
,success: function(){
|
|
alert('Max Set');
|
|
}
|
|
})
|
|
refreshInput();
|
|
refreshSettings();
|
|
dataRefresh();
|
|
};
|
|
|
|
function setChannelA(ddlChannelA) {
|
|
var selectedText = ddlChannelA.options[ddlChannelA.selectedIndex].innerHTML;
|
|
var selectedValue = ddlChannelA.value;
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/selectChannelA/" + ddlChannelA.value
|
|
,data: ""
|
|
});
|
|
};
|
|
|
|
function setChannelB(ddlChannelB) {
|
|
var selectedText = ddlChannelB.options[ddlChannelB.selectedIndex].innerHTML;
|
|
var selectedValue = ddlChannelB.value;
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/selectChannelB/" + ddlChannelB.value
|
|
,data: ""
|
|
});
|
|
};
|
|
|
|
function setChannel(ddlChannels) {
|
|
var selectedText = ddlChannels.options[ddlChannels.selectedIndex].innerHTML;
|
|
var selectedValue = ddlChannels.value;
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/selectChannel/" + ddlChannels.value
|
|
,data: ""
|
|
});
|
|
refreshInput();
|
|
refreshSettings();
|
|
dataRefresh();
|
|
};
|
|
|
|
function setPowerChannel(ddlPowerChannel) {
|
|
var selectedText = ddlPowerChannel.options[ddlPowerChannel.selectedIndex].innerHTML;
|
|
var selectedValue = ddlPowerChannel.value;
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/selectPowerChannel/" + ddlPowerChannel.value
|
|
,data: ""
|
|
});
|
|
};
|
|
|
|
function setProcessing(ddlProcessing) {
|
|
var selectedText = ddlProcessing.options[ddlProcessing.selectedIndex].innerHTML;
|
|
var selectedValue = ddlProcessing.value;
|
|
$.ajax({
|
|
type: 'PUT'
|
|
,url: "/api/v1/setup/selectProcessing/" + ddlProcessing.value
|
|
,data: ""
|
|
});
|
|
};
|
|
|
|
//funzione Settings Reset chiede conferma prima di flushare DB redis
|
|
function settingsReset(){
|
|
var R = confirm("Reset impostazioni?");
|
|
if (R == true){
|
|
$.ajax({
|
|
type: 'POST'
|
|
,url: "/api/v1/setup/resetSettings"
|
|
,data: ""
|
|
})};
|
|
};
|
|
|
|
</script>
|
|
<div id="Div1">
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<strong>Autenticazione utente</strong>
|
|
</div>
|
|
<div class="card-body">
|
|
<form class="col-12" method="POST" action="/api/v1/setup/passwordInput">
|
|
<div class="row input-group my-2">
|
|
<span class="input-group-text col-3">Password: </span>
|
|
<input type="password" placeholder="Password" class=" form-control col-6" id="PasswordForm" name="PasswordForm"></input>
|
|
<input type="submit" value="Login" class="btn btn-success col-3"></input>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="Div2">
|
|
<div class="row">
|
|
<div class="col-6 pr-0">
|
|
<div class="card my-2">
|
|
<div class="card-header">
|
|
<strong>Canale A</strong>
|
|
<div class="form-group">
|
|
<select class="form-control" id="SelChannelA" onchange="setChannelA(this)">
|
|
<option>0</option>
|
|
<option>1</option>
|
|
<option>2</option>
|
|
<option>3</option>
|
|
<option>4</option>
|
|
<option>5</option>
|
|
<option>6</option>
|
|
<option>7</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="card-body text-center">
|
|
Nativo: <span id="ChannelA"></span>
|
|
<br>
|
|
<strong>Scalato: <span id="OutputA"></span>
|
|
</strong>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-6 pl-0">
|
|
<div class="card my-2">
|
|
<div class="card-header">
|
|
<strong>Canale B</strong>
|
|
<div class="form-group">
|
|
<select class="form-control" id="SelChannelB" onchange="setChannelB(this)">
|
|
<option>0</option>
|
|
<option>1</option>
|
|
<option>2</option>
|
|
<option>3</option>
|
|
<option>4</option>
|
|
<option>5</option>
|
|
<option>6</option>
|
|
<option>7</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="card-body text-center">
|
|
Nativo: <span id="ChannelB"></span>
|
|
<br>
|
|
<strong>Scalato: <span id="OutputB"></span>
|
|
</strong>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="Div3">
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<div class="col-5">
|
|
<i class="fas fa-table mr-1"></i>
|
|
<strong>Taratura</strong>
|
|
</div>
|
|
<div class="col-7">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Canale n°</span>
|
|
</div>
|
|
<select class="form-control" id="ddlChannels" onchange="setChannel(this)">
|
|
<option>0</option>
|
|
<option>1</option>
|
|
<option>2</option>
|
|
<option>3</option>
|
|
<option>4</option>
|
|
<option>5</option>
|
|
<option>6</option>
|
|
<option>7</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body p-1 text-center">
|
|
<form method="POST" action="/api/v1/scale">
|
|
<div class="row text-center">
|
|
<div class="col-1">
|
|
</div>
|
|
<div class="col-4">
|
|
<b>Min</b>
|
|
</div>
|
|
<div class="col-3">
|
|
<b>Now</b>
|
|
</div>
|
|
<div class="col-4">
|
|
<b>Max</b>
|
|
</div>
|
|
</div>
|
|
<div class="row text-center">
|
|
<div class="col-1 px-0 mx-0 small">
|
|
Out
|
|
</div>
|
|
<div class="col-4">
|
|
<div class="input-group input-group-sm mb-3">
|
|
<input type="number" step="0.0000001" class="form-control text-center" id="MinOut" name="MinOut"></input>
|
|
</div>
|
|
</div>
|
|
<div class="col-3 px-0">
|
|
<span class="text-center small" id="CurrOut"> </span>
|
|
</div>
|
|
<div class="col-4">
|
|
<div class="input-group input-group-sm mb-3">
|
|
<input type="number" step="0.0000001" class="form-control text-center" id="MaxOut" name="MaxOut">
|
|
</div>
|
|
</div>
|
|
<div class="col-1 px-0 mx-0 small">
|
|
In
|
|
</div>
|
|
<div class="col-4">
|
|
<div class="input-group input-group-sm mb-3">
|
|
<input type="number" step="0.0000001" class="form-control text-center" id="MinIn" name="MinIn"></input>
|
|
<div class="input-group-append">
|
|
<button type="button" class="btn btn-info" onclick="saveMin()">S</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-3 px-0">
|
|
<span class="text-center small" id="CurrIn"> </span>
|
|
</div>
|
|
<div class="col-4">
|
|
<div class="input-group input-group-sm mb-3">
|
|
<input type="number" step="0.0000001" class="form-control text-center" id="MaxIn" name="MaxIn">
|
|
<div class="input-group-append">
|
|
<button type="button" class="btn btn-info" onclick="saveMax()">S</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Unità di misura: </span>
|
|
</div>
|
|
<input type="text" class="form-control" id="UniMisura" name="UniMisura"></input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row text-center">
|
|
<div class="col-12">
|
|
<input type="submit" value="SET TARATURA" class="btn btn-success btn-block mt-2"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<div class="col-7">
|
|
<i class="fas fa-table mr-1"></i>
|
|
<strong>Processing e Timer</strong>
|
|
</div>
|
|
<div class="col-5 text-right">
|
|
<span id="RecPeriod"> </span> ms
|
|
</div>
|
|
</div>
|
|
<div class="card-body p-1">
|
|
<div class="row my-2 text-center">
|
|
<div class="col-6"><button type="button" class="btn btn-block btn-sm btn-primary" onclick="setupValues()">Set Parametri Taratura</button></div>
|
|
<div class="col-6"><button type="button" class="btn btn-block btn-sm btn-primary" onclick="workingValues()">Set Parametri Lettura</button></div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Selezione Processing</span>
|
|
</div>
|
|
<select class="form-control" id="SelProcessing" onchange="setProcessing(this)">
|
|
<option value="0">Nessuno</option>
|
|
<option value="1">Media</option>
|
|
<option value="2">RMS</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<form class="col-12" method="POST" action="/api/v1/smoothFact">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Fattore di Smoothing: </span>
|
|
</div>
|
|
<input type="number" min="1" max="100" class="form-control" id="SmoothFact" name="SmoothFact"></input>
|
|
<div class="input-group-append">
|
|
<input type="submit" value="SET" class="btn btn-success"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<form class="col-12" method="POST" action="/api/v1/eFact">
|
|
<div class="input-group input-group-sm mb-3">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Valore per EWMA: </span>
|
|
</div>
|
|
<input type="number" min="1" max="200" step="1" class="form-control" id="EFact" name="EFact"></input>
|
|
<div class="input-group-append">
|
|
<input type="submit" value="SET" class="btn btn-success"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<form class="col-12" method="POST" action="/api/v1/frequency">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Periodo di campionamento (ms): </span>
|
|
</div>
|
|
<input type="number" class="form-control" id="LogFreq" name="LogFreq"></input>
|
|
</div>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Periodo di scrittura su file (ms): </span>
|
|
</div>
|
|
<input type="number" class="form-control" id="WriteFreq" name="WriteFreq"></input>
|
|
<br>
|
|
</div>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Ritardo prima scrittura su file (s): </span>
|
|
</div>
|
|
<input type="number" min="1" max="5" class="form-control" id="TimeBeforeWrite" name="TimeBeforeWrite"></input>
|
|
<br>
|
|
</div>
|
|
<div class="row text-center">
|
|
<div class="col-12">
|
|
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<i class="fas fa-table mr-1"></i>
|
|
<strong>Numero Decimali</strong>
|
|
</div>
|
|
<div class="card-body p-1">
|
|
<div class="row">
|
|
<form class="col-12" method="POST" action="/api/v1/decimalsCount">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Decimali calcolo: </span>
|
|
</div>
|
|
<input type="number" min="1" max="5" class="form-control" id="DecimalsCount" name="DecimalsCount"></input>
|
|
<div class="input-group-append">
|
|
<input type="submit" value="SET" class="btn btn-success"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<form class="col-12" method="POST" action="/api/v1/decimalsDisplay">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Decimali display: </span>
|
|
</div>
|
|
<input type="number" min="1" max="5" class="form-control" id="DecimalsDisplay" name="DecimalsDisplay"></input>
|
|
<div class="input-group-append">
|
|
<input type="submit" value="SET" class="btn btn-success"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<div class="col-12">
|
|
<strong>Valori per calcolo risultante = k1*x^2 + k2*x + offset</strong>
|
|
</div>
|
|
</div>
|
|
<div class="card-body p-1">
|
|
<div class="row">
|
|
<form class="col-12" method="POST" action="/api/v1/kconst">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Costante k1: </span>
|
|
</div>
|
|
<input type="number" step="0.0000001" class="form-control" id="K1Const" name="K1Const"></input>
|
|
</div>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Costante k2: </span>
|
|
</div>
|
|
<input type="number" step="0.0000001" class="form-control" id="K2Const" name="K2Const"></input>
|
|
</div>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Offset o: </span>
|
|
</div>
|
|
<input type="number" step="0.0000001" class="form-control" id="Offset" name="Offset"></input>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<strong>Unità di misura del risultato di [Valore B / (Valore A - Valore B)]</strong>
|
|
</div>
|
|
<div class="card-body p-1">
|
|
<form method="POST" action="/api/v1/setup/calcMeasureUnit">
|
|
<div class="input-group my-2">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Unità di misura: </span>
|
|
</div>
|
|
<input type="text" class=" form-control" id="CalcUMeasure" name="CalcUMeasure"></input>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<input type="submit" value="SET" class="btn btn-success btn-block"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<strong>Impostazione canale da monitorare per soglia spegnimento</strong>
|
|
</div>
|
|
<div class="card-body p-1">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Selezione canale</span>
|
|
</div>
|
|
<select class="form-control" id="SelPowerChannel" onchange="setPowerChannel(this)">
|
|
<option value="10">Nessuno</option>
|
|
<option>0</option>
|
|
<option>1</option>
|
|
<option>2</option>
|
|
<option>3</option>
|
|
<option>4</option>
|
|
<option>5</option>
|
|
<option>6</option>
|
|
<option>7</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<form class="col-12" method="POST" action="/api/v1/threshold">
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Soglia spegnimento: </span>
|
|
</div>
|
|
<input type="number" step="0.1" min="0" max="3" class="form-control" id="ChanThresh" name="ChanThresh"></input>
|
|
</div>
|
|
<div class="input-group input-group-sm">
|
|
<div class="input-group-prepend">
|
|
<span class="input-group-text">Attesa spegnimento (sec): </span>
|
|
</div>
|
|
<input type="number" min="360" class="form-control" id="MinUptime" name="MinUptime"></input>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<input type="submit" value="SET" class="btn btn-success btn-block mt-2"></input>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card my-2 col-12">
|
|
<div class="row card-header">
|
|
<i class="fas fa-table mr-1"></i>
|
|
<strong>Ripristina impostazioni predefinite</strong>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row text-center">
|
|
<div class="col-12">
|
|
<input type="submit" value="RESET IMPOSTAZIONI" class="btn btn-danger btn-block mt-2" onclick="settingsReset()"></input>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<br>
|
|
</div>
|
|
</main>
|
|
{% endblock %}
|