diff --git a/config.example.json b/config.example.json index 277319dc..eb7291e0 100644 --- a/config.example.json +++ b/config.example.json @@ -19,7 +19,7 @@ [49.9282, 9.3164] ], "domainNames": [ - { "domain": "ffffm_60431", "name": "60431 Frankfurt am Main" }, + { "domain": "ffffm_60431", "name": "60431 Frankfurt am Main", "filterClients": "false" }, { "domain": "ffffm_default", "name": "Default" } ], "nodeInfos": [ diff --git a/config.json b/config.json index 479e8f19..b0c26c79 100644 --- a/config.json +++ b/config.json @@ -359,11 +359,13 @@ }, { "domain": "ffmuc_unifi_respondd_fallback", - "name": "UniFi" + "name": "UniFi", + "filterClients": true }, { "domain": "omada_respondd_fallback", - "name": "Omada" + "name": "Omada", + "filterClients": true } ], "linkList": [ diff --git a/lib/config_default.ts b/lib/config_default.ts index f954b59e..2b835d9a 100644 --- a/lib/config_default.ts +++ b/lib/config_default.ts @@ -40,6 +40,7 @@ interface Icon { export interface Domain { name: string; domain: string; + filterClients: boolean; } export interface LinkInfo { diff --git a/lib/legend.ts b/lib/legend.ts index cd3169ba..71433c0e 100644 --- a/lib/legend.ts +++ b/lib/legend.ts @@ -14,8 +14,39 @@ export const Legend = function (language: ReturnType) { self.setData = function setData(data: ObjectsLinksAndNodes) { let totalNodes = Object.keys(data.nodeDict).length; let totalOnlineNodes = data.nodes.online.length; + + let config = window.config; + var filtertNodes = []; + if (config.domainNames) { + let filtertdomains = config.domainNames.filter(function (domain) { + if(typeof domain.filterClients !== 'undefined'){ + return domain.filterClients; + }else{ + return false + } + }); + filtertdomains.forEach((domain) => { + filtertNodes.push(domain.name) + filtertNodes.push(domain.domain) + }) + } + + let totalNodesFiltert = data.nodes.online.filter(function (node) { + var isFiltert = true + // filter nodes based on the domain + if(filtertNodes.includes(node.domain)){ + isFiltert = false + } + // also filter nodes based on the firmware base (Domainname) for custom respondd + if(filtertNodes.includes(node.firmware.base))[ + isFiltert = false + ] + return isFiltert + }) + + let totalClients = helper.sum( - data.nodes.online.map(function (node) { + totalNodesFiltert.map(function (node) { return node.clients; }), );