discovery fix

This commit is contained in:
Vincent BOUQUET
2023-11-26 10:48:12 +01:00
parent 881342c485
commit 1136ad52b4

View File

@@ -57,11 +57,11 @@
<label for="cchb-3">IP address</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-4" disabled="disabled">
<input type="checkbox" class="cchb" id="cchb-4" >
<label for="cchb-4">Head temperature [°C]</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-5" disabled="disabled">
<input type="checkbox" class="cchb" id="cchb-5" >
<label for="cchb-5">Relative humidity [%]</label>
</div>
<div class="dchb">
@@ -69,7 +69,7 @@
<label for="cchb-6">RAINS (max wet)</label>
</div>
<div class="dchb">
<input type="checkbox" class="cchb" id="cchb-7" disabled="disabled">
<input type="checkbox" class="cchb" id="cchb-7" >
<label for="cchb-7">Last pressure test</label>
</div>
<div class="dchb">
@@ -77,9 +77,6 @@
<label for="cchb-8">Device status</label>
</div>
</div>
<div class="clearfix">
<button class="btn btn-primary float-right" id="acs">Apply selection</button>
</div>
<div class="table-responsive">
<table class="table mt-2" id="d-t">
<thead id="dmax">
@@ -128,12 +125,12 @@
</tr>
</thead>
<tbody>
<tr id="myd" class="myd">
<tr>
<td>iForte</td>
<td>350</td>
<td>Mode 1 (54 channels)</td>
<td>52:53:01:2c:00:0e</td>
<td>2.247.136.14</td>
<td><a href="../iforte/index.html">2.247.136.14</a></td>
<td style="display: none;">47</td>
<td style="display: none;">14.0</td>
<td>
@@ -143,7 +140,18 @@
</td>
<td style="display: none;">2.3.2023 16:19:02 - OK</td>
<td>active</td>
<td></td>
</tr>
<tr>
<td>Robin T1 Wash</td>
<td>1</td>
<td>Mode 3</td>
<td>52:53:00:00:00:00</td>
<td><a href="../t1/index.html">2.246.16.203</a></td>
<td style="display: none;">47</td>
<td style="display: none;">-</td>
<td>-</td>
<td style="display: none;">-</td>
<td>active</td>
</tr>
</tbody>
<tbody class="rd" id="scd"></tbody>
@@ -170,94 +178,26 @@
</div>
</div>
<script>
$(document).ready(function() {
$('h1').html('Discovery');
$('#boxes').html('<div class="col-12"><div class="clearfix"><div class="float-left pt02"><input type = "checkbox" id="w-ot"><label for="w-ot" class="pl04">Move devices with warning to top</label></div><button class="btn btn-primary float-right" id="scan" disabled><div class="loader"></div> Discovering</button></div><h2 > Columns selection(max.7 items) </h2><div class="clearfix" id="cols"></div><div class="clearfix"><button class="btn btn-primary float-right" id="acs">Apply selection</button></div><div class="table-responsive"><table class="table mt-2" id="d-t"><thead id="dmax"><tr><th><i></i><i class="ab"></i> Device</th></tr></thead><tbody><tr id="myd" class="myd"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr></tbody><tbody class="rd" id="scd"></tbody></table></div></div>');
var s=0;
var bsy=false;
var i=0;
var ti;
var tb;
var tr;
var c_n=['DMX address','DMX preset','RDM UID','IP address','Head temperature [&deg;C]','Relative humidity [%]','RAINS (max wet)','Last pressure test','Device status'];
var c_js=['dmxa','dmxp','rdm','ip','t','rh','wet','prt','sta'];
var c_s=get_cookie('dc_sel',335);
var i=0;
c_n.forEach(function(v){
$('#dmax>tr').append('<th><i></i><i class="ab"></i> '+v+'</th>');
$('#cols').append('<div class="dchb"><input type="checkbox" class="cchb"'+((c_s & (1 << i)) ? ' checked' : '') + ' id="cchb-' + i + '"><label for="cchb-'+i+'">'+v+'</label></div>');i++});
$('#dmax>tr').append('<th>&nbsp;</th>');
var ccb=$('#cols .cchb');
var tcs=$('#dmax>tr>th');
function upd_cols_in_rows(){
var c_s=get_cookie('dc_sel',335);
var r=$('#d-t>tbody>tr');
r.each(function(){var c=$(this).find('td');
c.each(function(i){if((i > 0)&&(i<=c_js.length)){if(c_s & (1<<(i - 1))) $(this).show();else $(this).hide()}})})}function ccb_en_dis(){var chck=ccb.filter(':checked');if(chck.length>=6){ccb.filter(':not(":checked")').attr('disabled',true)} else ccb.removeAttr('disabled')}ccb_en_dis();$('.cchb').change(function(){ccb_en_dis()});$('#acs').click(function(){var c_s=0;
var i=0;
c_n.forEach(function(v){if(ccb.eq(i).prop('checked')) c_s|=(1 << i);
if (c_s & (1 << i)) tcs.eq(i + 1).show();
else tcs.eq(i + 1).hide();
i++
});
document.cookie = 'dc_sel=' + c_s;
upd_cols_in_rows();
var ups = $('#dmax>tr i.as');
if (ups.parent().is(':hidden')) tcs.eq(0).find('i').eq(0).click()
});
$('#acs').click();
$('#scan').click(function() {
if (bsy) return;
$('#dmax').removeClass('dmax');
$('#scan').html('<div class="loader"></div> Discovering');$('#scd').html('');set_bsy(true);set_bsy(true,true);do_ajax('/start - scan ',{},function (json){if(json){set_bsy(false);s=0;clearInterval(tr)} else set_bsy(false);$('body').click()})});function set_bsy(v,b_o=false){if(!b_o) bsy=v;clearTimeout(tb);tb=setTimeout(function(){if(!v) $('#scan').removeAttr('disabled');else $('#scan').attr('disabled','1')},b_o ? 5:400)}function max_w(w){if(isNaN(w)) return w;else return '<div class="rains sl"><div style = "width:'+w+'%"></div></div>'}function do_scan(){if(bsy) return;switch (s){case 0:set_bsy(true);do_ajax('/get - child ',{},function (json){if(json){if(json['sd']==0){s=1;i=0;if(json['max']==1) $('#dmax').addClass('dmax')}} else s=255;set_bsy(false)});break;case 1:set_bsy(true);do_ajax('/get-child','i = '+i,function (json){if(json){if(json['ip']){$('#scd').append(' < tr data - value = "'+json['ip']+'" class="dn dis"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td><img class="rdmi a dn" src="../files/identify.svg"><button class="btn btn-danger btn-sm drem dn" > & #10005;</button></td></tr>');upd_cols_in_rows();i++} else s= 2}
else s = 255;
set_bsy(false)
});
break;
case 2: clearInterval(tr);
set_bsy(true);
$('#scan').html('<div class="loader"></div> Collecting');
var devs=$('#scd tr');if(devs.length==0){$('#scan').html('Discover (1)');set_bsy(false);s=255} else {i=0;devs.each(function(){var r=$(this);if(r.attr('data-value')){do_ajax('http:/'+' / '+r.attr('data-value')+'/remote',{},function (json){var t=r.find('td');if(json){t.eq(0).html('<a href="http:/'+'/'+r.attr('data-value')+'" target="_blank" > '+json['dn']+'</a>');c_js.forEach(function(v,i){if(json[v]){if(i!=6) t.eq(i+1).html(json[v]);else {t.eq(i+1).html(max_w(json[v]));t.eq(i+1).attr('data-value',json[v])}} else t.eq(i+1).html('-')});r.removeClass('na');r.find('.drem').hide();if(json['stat']==1) r.addClass('err');else r.removeClass('err');r.removeClass('dis');r.show();if(json['rdmi']==1) r.find('.rdmi').show();else r.find('.rdmi').hide()} else {if(r.hasClass('dis')){r.remove()} else {r.addClass('na').removeClass('err');r.find('.drem').show()}t.eq(9).html('disconnected')}i++;if(i>=devs.length){set_bsy(false);s=255;$('#scan').html('Discover ('+($('#scd tr').length+1)+')');tr=setInterval(function(){set_bsy(true,true);s=2},10000);$('#d-t th i.as').click()}})} else { i++}})}break}}ti=setInterval(do_scan,100);function getp(){do_ajax('/pdev_i',{},function (json){var c=$('#myd > td');if(json){c.eq(0).html(json['dn']);c_js.forEach(function(v,i){c.eq(i+1).html(i==6 ? max_w(json[v]):json[v])});upd_cols_in_rows();$('#myd').removeClass('na')} else {c.eq(9).html('disconnected');$('#myd').addClass('na')}})}getp();setInterval(getp,8000);do_ajax('/status_i',{},function (json){if(json){ptit(json['pt'])}});$(document).on('click','.drem',function(){if(confirm('Are you sure to remove offline device from list ?')) $(this).parents().eq(1).remove()});
var sort_i=0;
var sort_d=-1;function ldz3(v){return ('000'+v).substr(-3,3)}function my_sort(a,b){var A;var B;console.log(A);if(sort_i==7){B=$(a).children('td').eq(sort_i).attr('data-value');A=$(b).children('td').eq(sort_i).attr('data-value')} else {A=$(a).children('td').eq(sort_i).text();B=$(b).children('td').eq(sort_i).text()}switch (sort_i){case 1:case 5:case 6:case 7:A=parseInt(A);B=parseInt(B);break;case 4:A=A.split('.');A=ldz3(A[0])+ldz3(A[2])+ldz3(A[3])+ldz3(A[4]);B=B.split('.');B=ldz3(B[0])+ldz3(B[2])+ldz3(B[3])+ldz3(B[4]);break}if(A > B) return 1*sort_d;else if(A < B) return -1 * sort_d;
else return 0
}
$('table th i').click(function() {
$('table th i').removeClass('as');
$(this).addClass('as');
sort_i = $(this).parent().index();
sort_d = $(this).hasClass('ab') ? -1 : 1;
document.cookie = 'srt_s=' + sort_i;
document.cookie = 'srt_d=' + sort_d;
var et = $('#w-ot').prop('checked');
if (et == true) {
var rw_e = $('#d-t tbody.rd tr.err').remove();
var rw_n = $('#d-t tbody.rd tr.na').remove();
rw_e.sort(my_sort);
rw_n.sort(my_sort)
}
var rw = $('#d-t tbody.rd tr').remove();
rw.sort(my_sort);
if (et == true) {
$.each(rw_e, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
});
$.each(rw_n, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
})
}
$.each(rw, function(i, r) {
$('#d-t').children('tbody.rd').append(r)
})
});
sort_d = get_cookie('srt_d', 1);
$('#d-t th i').eq(get_cookie('srt_s', 0) * 2 + (sort_d == 1 ? 0 : 1)).click();
if (get_cookie('wot', 1) == 1) $('#w-ot').prop('checked', true);
$('#w-ot').change(function() {
document.cookie = 'wot=' + ($('#w-ot').prop('checked') == true ? 1 : 0);
$('#d-t th i.as').click()
})
$('.cchb').on('change', function() {
var cbid = $(this).attr('id')
var colid = cbid.charAt(cbid.length - 1)
colid++
// handle visibility of columns
$('#d-t tr').each(function() {
$(this).find('td:eq(' + colid + ')').toggle();
});
</script>
</body>
</html>
$('#d-t th:eq(' + colid + ')').toggle();
// only allows 7 columns at any time
var checkedCount = $('.cchb:checked').length;
if (checkedCount === 7) {
$('.cchb:not(:checked)').prop('disabled', true);
} else {
$('.cchb').prop('disabled', false);
}
})
</script>
</body>
</html>