<title>SLS Gateway: Dashboard</title>      
   <link rel="icon" href="https://cdn.slsys.io/assets/2020.05.21d8/favicon.png" type="image/x-icon">
<body>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://kit.fontawesome.com/a076d05399.js"></script>




<style>
   .leftpic2 {
    float: left; /* Выравнивание по правому краю */
    margin: 0 0 5px 5px; /* Отступы вокруг фотографии */
   }
  </style>
  
 


  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>


<style>

.btn-round2 {
  border-radius:50px;
    padding-left: 6px;
    padding-right: 6px;
    width: 34px;
	height: 34px;
	font-size: 12px;
}
.dropdown-menu li a .glyphicon {
  width:25px;
}
.dropdown-menu{
 left: -80px; 
}    
.card-img {
  width:80px;
  margin-right:30;
}
.signal-level {
  font-size: 20px;
}
.signal-level .glyphicon-signal {
  color: #000;
  background: #fff;
  mix-blend-mode: lighten;
  padding-top:2px;
  padding-bottom:9px;
  top: 0px;
}
.panel-content {padding: 5px 10px 0px 10px;}
</style>

<main role="main" class="h-100">
  <form name="wifi" method="get" action="/store"> 
  <div class="container-fluid">
  <div class="row col-md-12 col-lg-12">

  


 <div class="row" id="sw_list" align="center">
 </div>

     
    
    </form>
    </main>
    
    <script>
  scanNetworks();
function showIt()
{
  var x = document.getElementById("wifi_pwd");
  if (x.type === "password") 
  {
    x.type = "text";
  } 
  else 
  {
    x.type = "password";
  }
}
function scanNetworks()
{

  var list=httpGet('/api/zigbee/devices');
  var arr=JSON.parse(list);
  document.getElementById('sw_list').innerHTML="";
  arr.forEach(function(v) {
   
 
if ('ieeeAddr' in v && 'nwkAddr' in v ) {
//if ('ieeeAddr' in v) {
//{
if (v.nwkAddr.length>2) {
var data='<div class="col-sm-5 col-md-4 col-lg-3" onclick="httpReq(\''+v.ieeeAddr+'\');">';
data += '<div class="panel panel-info" >';

//	data += '<div class="card text-white bg-primary mb-2" style="max-width: 25rem;">';
    data += '<div class="panel-heading"> ';
    
//    data += '<div class="card-header">';
    data += '<h5> ';
    data += '<div style="float:left;" >';
    if (v.friendly_name.length>2) {     data += v.friendly_name+'&nbsp; ';} else  {     data += v.ieeeAddr+'&nbsp; ';}
   data += '</div>';

   //if(typeof v.st.state === 'undefined')    {data += '&nbsp;';}     else     {data += '&nbsp;('+v.st.state+')'};
   //if(typeof v.st.battery === 'undefined')    {data += '&nbsp;';}     else       {data += '&nbsp;<i class="fas fa fa-battery-full fa-rotate-270" title="'+v.st.battery+'"></i>'};
   //if(typeof v.st.linkquality != 'undefined')    {data += '&nbsp;';}     else   {data += '&nbsp;<i class="fa fa-signal" title="'+v.st.linkquality+'"></i>'};
   //if(typeof v.st.linkquality === 'undefined')    {data += '&nbsp;';}     else   {data += '&nbsp;';'};
   //if ('linkquality' in v.st)  {data += '&nbsp;<i class="fa fa-signal" title="'+v.st.linkquality+'"></i>'} else {data += '&nbsp;';};
   //if ('st' in v) {    if   ('temperature' in v['st'])  { $tem=v.st.temperature; data += '&nbsp;'+tem.replace(/\D+/g, '')+'°C'}   else {data += '&nbsp;';};   }
   //if ('st' in v) {    if   ('temperature' in v['st'])  {data += '&nbsp;'+v.st.temperature.replace('/D/g', '')+'°C'}   else {data += '';};   }  arseInt(str.replace(/[^\d]/g, ''))
   //if ('st' in v) {    if   ('temperature' in v['st'])  {data += '&nbsp;'+v.st.temperature+'°C'} )  
   
   if ('st' in v) {    if   ('state' in v['st']) {data += '&nbsp;'+v.st.state+''}   else {data += '&nbsp;';};   }
   if ('st' in v) {    if   ('temperature' in v['st'])  {data += '&nbsp;'+v.st.temperature+'°C'}   else {data += '&nbsp;';};   }
   if ('st' in v) {    if   ('humidity' in v['st'])  {data += '&nbsp;'+v.st.humidity+'mm'}   else {data += '';};   }

data += '<div style="float:right;" >';
   if ('st' in v) {    if   ('battery' in v['st']) {
   if  (v.st.battery==100) {data += '&nbsp;<i class="fas fa fa-battery-full fa-rotate-270" title="'+v.st.battery+'"></i>'}
   if  (v.st.battery<100 && v.st.battery>=70) {data += '&nbsp;<i class="fas fa fa-battery-three-quarters fa-rotate-270" title="'+v.st.battery+'"></i>'}
   if  (v.st.battery<70 && v.st.battery>=50) {data += '&nbsp;<i class="fas fa fa-battery-half fa-rotate-270" title="'+v.st.battery+'"></i>'}
   if  (v.st.battery<50 && v.st.battery>=30) {data += '&nbsp;<i class="fas fa fa-battery-quarter fa-rotate-270" title="'+v.st.battery+'"></i>'}
   if  (v.st.battery<30 ) {data += '&nbsp;<i class="fas fa fa-battery-empty fa-rotate-270" title="'+v.st.battery+'"></i>'}
   
   ts= v.last_seen;
   var ts1 = new Date(parseInt(ts, 10) * 1000);
    
   
   }   else {data += '&nbsp;';};   }
   
   if ('st' in v) {    if   ('linkquality' in v['st']) {data += '&nbsp;<i class="fa fa-signal" title="'+v.st.linkquality+'"></i>'}   else {data += '&nbsp;';};   }
    data += '</div>';
	data += '&nbsp;</h5></div>';
    
    //////////////////////////////
    //////////////////////////////
    //////////////////////////////
    //data += '<div class="card-body" align="left"> ';
   //data += '<div class="panel-body">';
   
    data += '<div class="panel-content" align="left">';
    data += '<img class="leftpic img-circle pull-left card-img" src="https://raw.githubusercontent.com/slsys/Gateway/master/devices/png/'+v.ModelId+'.png">'; 
/////////////////////////    
    	data += '<div style="white-space: nowrap;">';
//        data += '<div style="float:left;" >';
	    //data += '<a href="/zigbee/device?dev='+v.nwkAddr+'&activeTab=Info"   style="text-decoration: none" ><small>'+v.ieeeAddr  +'&nbsp;&nbsp;&nbsp;';
        data += '<a href="/zigbee/device?dev='+v.nwkAddr+'&activeTab=Info"   style="text-decoration: none" >'+v.ieeeAddr  +'&nbsp;&nbsp;&nbsp;';
        

	    //if(typeof ts1 === 'undefined') {null;} else { data +=  '&nbsp;&nbsp;'+ts1.toLocaleString();}
    	//data +=  '</small></a></p> ';
        data +=  '</a></p> ';
    	//data += '</div>';
        //data += '</div>';
//        data += '<br>';
/////////////////////////            
        
        //data += '<div style="white-space: nowrap;">';
        //data += '<div style="float:left;" >';   
    	data += '<p>'+v.ManufName+'&nbsp;</p> ';
//        data += '</div>';
//        data += '</div>';
//        data += '<br>';
   
    	//data += '<div style="white-space: nowrap;">';
	    //data += '<div style="float:left;" >';
//        data += '<div align="left;" >';
    	data += '<p>'+v.ModelId+'</p>&nbsp;  ';
//     	data += '</div>';     
     	
        if(typeof ts1 === 'undefined')  { data += '<p>&nbsp</p>';} else   { data += '<p>'+ts1.toLocaleString()+'</p>';}
/////////////////////////    

}}
if (data.length>2) { sw_list.insertAdjacentHTML('afterbegin', data);}

});  
 ///sw_list.insertAdjacentHTML('afterbegin', data);  }); 

}  


function httpGet(url)
{
console.log('starting http get');
var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.send();
if (xhr.status != 200) {
  // обработать ошибку
  //console.log( xhr.status + ': ' + xhr.statusText ); // пример вывода: 404: Not Found
  return false;
} else {
  // вывести результат
  //console.log('nw request ok: ' + xhr.responseText);
  return( xhr.responseText ); // responseText -- текст ответа.
} 
}
function httpReq(dev) {
     var xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", '/api/zigbee?dev='+dev+'&action=setState&name=state&value=TOGGLE', false ); // false for synchronous request
    xmlHttp.send( null );
    return xmlHttp.responseText;
}  
    </script>
<body>