Peers ordering fully moved in gu

This commit is contained in:
Mihail Slobodyanuk 2022-12-22 09:52:45 +02:00
parent 08c8fc27d0
commit e253b64d43
3 changed files with 12 additions and 16 deletions

View file

@ -297,16 +297,10 @@ ui.getConnectedPeers = function () {
}); });
}; };
var regexMulticast = /:\/\/\[fe80::/;
ui.updateConnectedPeersHandler = function (peers) { ui.updateConnectedPeersHandler = function (peers) {
$("peers").innerText = ""; $("peers").innerText = "";
var regexStrip = /%[^\]]*/gm; var regexStrip = /%[^\]]*/gm;
var sorted = peers.map(function (peer) { peers.forEach(function (peer) {
return { "url": peer["remote"], "isMulticast": peer["remote"].match(regexMulticast) };
}).sort(function (a, b) {
return a.isMulticast > b.isMulticast;
});
sorted.forEach(function (peer) {
var row = $("peers").appendChild(document.createElement('div')); var row = $("peers").appendChild(document.createElement('div'));
row.className = "overflow-ellipsis"; row.className = "overflow-ellipsis";
var flag = row.appendChild(document.createElement("span")); var flag = row.appendChild(document.createElement("span"));
@ -320,7 +314,7 @@ ui.updateStatus = function (peers) {
if (peers) { if (peers) {
if (peers.length) { if (peers.length) {
var isNonMulticastExists = peers.filter(function (peer) { var isNonMulticastExists = peers.filter(function (peer) {
return !peer["remote"].match(regexMulticast); return !peer.multicast;
}).length; }).length;
status = isNonMulticastExists ? "st-multicast" : "st-connected"; status = isNonMulticastExists ? "st-multicast" : "st-connected";
} else { } else {

View file

@ -284,13 +284,10 @@ ui.getConnectedPeers = () =>
fetch('api/peers') fetch('api/peers')
.then((response) => response.json()) .then((response) => response.json())
const regexMulticast = /:\/\/\[fe80::/;
ui.updateConnectedPeersHandler = (peers) => { ui.updateConnectedPeersHandler = (peers) => {
$("peers").innerText = ""; $("peers").innerText = "";
const regexStrip = /%[^\]]*/gm; const regexStrip = /%[^\]]*/gm;
const sorted = peers.map(peer => ({"url": peer["remote"], "isMulticast": peer["remote"].match(regexMulticast)})) peers.forEach(peer => {
.sort((a, b) => a.isMulticast > b.isMulticast);
sorted.forEach(peer => {
let row = $("peers").appendChild(document.createElement('div')); let row = $("peers").appendChild(document.createElement('div'));
row.className = "overflow-ellipsis" row.className = "overflow-ellipsis"
let flag = row.appendChild(document.createElement("span")); let flag = row.appendChild(document.createElement("span"));
@ -306,7 +303,7 @@ ui.updateStatus = peers => {
let status = "st-error"; let status = "st-error";
if(peers) { if(peers) {
if(peers.length) { if(peers.length) {
const isNonMulticastExists = peers.filter(peer => !peer["remote"].match(regexMulticast)).length; const isNonMulticastExists = peers.filter(peer => !peer.multicast).length;
status = isNonMulticastExists ? "st-multicast" : "st-connected"; status = isNonMulticastExists ? "st-multicast" : "st-connected";
} else { } else {
status = "st-connecting" status = "st-connecting"

View file

@ -10,6 +10,7 @@ import (
"net/url" "net/url"
"sort" "sort"
"strconv" "strconv"
"strings"
"archive/zip" "archive/zip"
"time" "time"
@ -197,11 +198,15 @@ func (a *RestServer) apiPeersHandler(w http.ResponseWriter, r *http.Request) {
"bytes_recvd": p.RXBytes, "bytes_recvd": p.RXBytes,
"bytes_sent": p.TXBytes, "bytes_sent": p.TXBytes,
"uptime": p.Uptime.Seconds(), "uptime": p.Uptime.Seconds(),
"mulicast": strings.Contains(p.Remote, "[fe80::"),
}) })
} }
sort.SliceStable(response, func(i, j int) bool { sort.Slice(response, func(i, j int) bool {
if response[i]["port"].(uint64) == response[j]["port"].(uint64) { if !response[i]["mulicast"].(bool) && response[j]["mulicast"].(bool) {
return response[i]["priority"].(uint64) < response[j]["priority"].(uint64) return true
}
if response[i]["priority"].(uint64) < response[j]["priority"].(uint64) {
return true
} }
return response[i]["port"].(uint64) < response[j]["port"].(uint64) return response[i]["port"].(uint64) < response[j]["port"].(uint64)
}) })