From 98733d1ad524038c4a0e6a6dfd48946acb176d64 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Fri, 17 May 2024 15:37:31 -0600 Subject: [PATCH] Get basic problem translations. Ping only for now --- Web/network.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ Web/ui.js | 36 ++++++++++++++++++++++++++--- 2 files changed, 95 insertions(+), 3 deletions(-) diff --git a/Web/network.js b/Web/network.js index 0133316..ae25672 100644 --- a/Web/network.js +++ b/Web/network.js @@ -81,6 +81,68 @@ function deviceHasProblem(Device) { return false; } +function problemString(nettest) { + if (nettest == null) return ""; + //The structure of a nettest + //"shost": "pc0", + //"dhost": "laptop0", + //"thetest": "SuccessfullyPings" + + //if (ui_helplevel == 0) setStatus("There is a disturbance in the force. Guessing..."); + //if (ui_helplevel == 1) setStatus("Service check detected a problem."); + //if (ui_helplevel == 2) setStatus("Someone submitted a trouble ticket."); + //if (ui_helplevel == 3) setStatus("Interviewed users for detailed info."); + + + switch (nettest.thetest) { + case "DHCPServerEnabled": + case "DeviceBlowsUpWithPower": + case "DeviceIsFrozen": + case "DeviceNeedsUPS": + case "FailedPing": + case "HelpRequest": + case "LockAll": + case "LockLocation": + case "LockNic": + case "LockVLANNames": + case "LockVLANsOnHost": + case "NeedsDefaultGW": + case "NeedsLinkToDevice": + case "NeedsLocalIPTo": + case "NeedsRouteToNet": + case "NeedsTaggedVLAN": + case "ReadContextHelp": + break; + case "SuccessfullyPings": + //level 0 is handled elsewhere + if (ui_helplevel == 2) return translator.getStr("NT_TstDiscriptPing"); + if (ui_helplevel == 3) return translator.getStr("NT_TstDiscriptPing2") + nettest.dhost; + case "SuccessfullyPingsWithoutLoop": + case "SuccessfullyTraceroutes": + break; + } + return ""; +} + +function returnProblemStrings(Device) { + var hostname = Device.hostname; + var errors = []; + //console.log("Looking for tests on " + hostname + " and have: " + puzzle.nettest.length) + for (var index = 0; index < puzzle.nettest.length; index++) { + //console.log("Found test: " + JSON.stringify(puzzle.nettest)); + if (puzzle.nettest[index].shost == hostname) { + if (puzzle.nettest[index].solved == null) { + //It has not yet been solved. + var error = problemString(puzzle.nettest[index]); + //console.log("We got a problem string:" + JSON.stringify(error)); + if (error != ""); + errors.push(error); + } + } + } + return errors; +} + function networkNamesMatchingText(textToMatch) { var list = []; diff --git a/Web/ui.js b/Web/ui.js index 582381f..4150efb 100644 --- a/Web/ui.js +++ b/Web/ui.js @@ -858,7 +858,33 @@ function device_clickOn(point, actionrec) { if (actionrec.theObject !== null && actionrec.theObject.name !== null) { ui_selectRect = structuredClone(actionrec.shapePoints); //console.log("Setting select rect:" + JSON.stringify(ui_selectRect)); - setStatus(actionrec.theObject.hostname); + var ipaddresses = ipsFromDevice(actionrec.theObject); + var additional = ""; + for (var x = 0; x < ipaddresses.length; x++) { + //Print the IP address if the type is correct. + //console.log(JSON.stringify(ipaddresses[x])); + switch (ipaddresses[x].nictype) { + case "eth": + case "management_interface": + //console.log("Found a " + ipaddresses[x].nictype) + additional += " " + ipaddresses[x].cidrip; + break; + } + } + + if (deviceHasProblem(actionrec.theObject)) { + //If we know nothing, we change nothing + if (ui_helplevel > 0) { + if (ui_helplevel == 1) additional = " " + translator.getStr("NT_TstDscriptProblem"); + else { + //here we get all the problem statements and combine them + errors = returnProblemStrings(actionrec.theObject); + additional = " " + errors.join(' - '); + } + } + } + + setStatus(actionrec.theObject.hostname + additional); //We probably do not want to do printecreen here, but we are doing it here now... PrintScreen(); } @@ -874,14 +900,18 @@ function Language(lang) { }() this.getStr = function (str, defaultStr) { - var retStr = eval('eval(ui_language).' + str); + var toget = ui_language + "." + str + ".value"; + //console.log("Translating: " + toget); + var retStr = eval(toget); if (typeof retStr != 'undefined') { return retStr; } else { if (typeof defaultStr != 'undefined') { return defaultStr; } else { - return eval('ui_language.' + str); + toget = "language.en." + str; + //console.log("First translation failed, falling back to en: " + toget); + return eval(toget); } } }