@@ -26,16 +26,27 @@ ipc.on("setServers", function(event, data){
2626 }
2727 break ;
2828 }
29+ // loop over rows
2930 for ( let key in data ) {
3031 // only print servers that has been online some time the last 60 seconds (in ms)
31- if ( Date . now ( ) - data [ key ] . time < 60000 ) {
32+ if ( Date . now ( ) - data [ key ] . time < 120000 ) {
3233 //console.log(key, data[key]);
3334 html += "<tr><td>" + key + "</td>" ;
35+
36+ // loop over columns
3437 for ( let key2 in data [ key ] ) {
3538 // run some special rules depending on the name of the field
3639 if ( key2 == "time" ) {
3740 // print time in seconds instead of unix time
38- html += "<td>seen " + Math . floor ( ( Date . now ( ) - data [ key ] [ key2 ] ) / 100 ) / 10 + "s ago</td>" ;
41+ let time = Math . floor ( ( Date . now ( ) - data [ key ] [ key2 ] ) / 1000 )
42+
43+ // if slave pinged last 15 seconds, display it as online
44+ // otherwise alert us to the fact that it is missing.
45+ if ( time < 15 ) {
46+ html += "<td style='min-width:110px;'>Online</td>" ;
47+ } else {
48+ html += "<td style='min-width:110px;'>seen " + time + "s ago</td>" ;
49+ }
3950 } else if ( key2 == "mods" ) {
4051 // Make modlist look nice
4152 html += "<td>"
@@ -53,8 +64,17 @@ ipc.on("setServers", function(event, data){
5364 html += '<td id="temp" onclick="launchFactorio(this)">Join server</td>'
5465 }
5566 }
56- // console.log(html)
57- document . querySelector ( "#slaves" ) . innerHTML = html
67+
68+ // turn our HTML text into dom elements for comparison
69+ var div = document . createElement ( 'div' ) ;
70+ div . innerHTML = html ;
71+ var div2 = document . createElement ( 'div' ) ;
72+ div2 . innerHTML = document . querySelector ( "#slaves" ) . innerHTML ;
73+
74+ // use special browser function for comparing dom elements
75+ if ( ! div . isEqualNode ( div2 ) ) {
76+ document . querySelector ( "#slaves" ) . innerHTML = html
77+ }
5878} ) ;
5979
6080// tell node to launch factorio
0 commit comments