-
-
Notifications
You must be signed in to change notification settings - Fork 192
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WEBUI: prototype.js: SyntaxError: Invalid regular expression: nothing to repeat #2521
Comments
Das scheint eine Browser Inkompatibilität zu sein. |
Bis jetzt hat das außer dir noch niemand berichtet? Das für sich alleine genommen ist schon sehr sonderbar und deutet daraufhin das es ein reines Problem deines Systems bzw. deiner Nutzungsumgebung ist. Daher bitte andere Leidensgenossen finden wäre der erste Ansatz... |
Fehler gefunden: |
Ok, aber das bedeutet wir müssten hier ggf. in den Filtern nachbessern. Deshalb bleibt das Ticket erst einmal offen. Vielleicht kann @jp112sdl hiee ja mal schauen was die Regexp in den Filtern da durcheinander bringen wenn da ein + im Namen ist. Er hatte meiner Erinnerung nach ja die Filter um wildcards usw erweitert.. |
Kann das daher kommen? RaspberryMatic/buildroot-external/patches/occu/0170-WebUI-RegexSearchInDeviceLists.patch Lines 1 to 13 in 262d377
Edit: Hab das mal in JS online nachgebaut.. Da scheint alles zu funktionieren... let text = '+Hello$world+';
text = text.toLowerCase();
const r = new RegExp('Hello.*'.toLowerCase());
if(r.test(text) === true){
console.log("True");
} |
Kann gut sein das es daher kommt. Kam selbst noch nicht das in der webui nachzustellen und zu debuggen... wurde ja auch gesagt das es ggf. auch browserabhängig ist. Muss man also mal debuggen dort.. |
Kann das nicht nachvollziehen.. Bei mir (ebenfalls Safari) und einem Gerät mit einem Auch die Suche (beides: als Regex oder nicht) funktioniert, sowohl Suche nach dem jeweiligen Gerät, als auch die Suche nach einem beliebigen Anderen. |
Ah ja, mit dem "+" im Filter bekomme ich das jetzt auch reproduziert. |
Ahh.. damit kann ich es reproduzieren. Ich glaube es liegt hier nicht an RM oder sonstiger Logik.. Der Regex is hier einfach fehlerhaft. Das passt auch zum Fehler: "...nothing to repeat". Behen lässt sich das ganze indem man das |
Dann müsste man prüfen ob es ggf. irgendeine Funktion gibt um erst prüfen zu lassen ob der eingegebene Suchstring auch ein valider mit/ohne Regexp ist um dann Event das new Regexp aufzurufen oder eben nicht... So wäre zumindest mein Ansatz. |
Straight forward wäre das dann sowas hier: let text = '+Hello$world+';
text = text.toLowerCase();
let regexString = '+Hello.*'.toLowerCase();
function isValidRegex(possibleInvalidRegex) {
try
{
const r = new RegExp(possibleInvalidRegex);
}
catch (err){
return false;
}
return true;
}
if(isValidRegex(regexString)){
const r = new RegExp(regexString);
if(r.test(text) === true){
console.log("True");
}
} else {
// check with orig method?
} |
Sowas in der Art, ja. Wundert mich aber das es da nicht schon was fertiges/vorhandenes bei Tante Google gibt... |
Naja.. das war von Onkel StackOverflow :D |
Na dann her mit dem PR sodass dieses Problem dann hoffentlich nicht mehr auftritt in Zukunft... |
Alles klar :) Da das ja erst meine zweite contrib ist.. ich hoffe ich habe alles korrekt ausgeführt :) (vorallem die größe des patches mach mir Kopfzerbrechen 🤔 ) |
Ja, das passt leider nicht! Die Webui.js muss erst ein einzelne Zeilen mit \n umgewandelt werden bevor man Änderungen in dem Bereich vornehmen kann. Also bitte nochmal nacharbeiten und/oder einfach mal das diff deiner Änderung da mit einpflegen/zeigen. |
Ok. Habs mir fast gedacht :) Gibts dafür irgendein script? |
Ein Script nicht direkt leider. Aber das folgende Kommando sollte aus der webui.js mit gewrappten Zeilen eine machen die dann auf mehrere Zeilen umgewandelt ist damit man die dann entsprechend bearbeiten kann:
Und dann legt man die dort im Patchverzeichnis ab und nutzt immer die, denn der Build Skript baut die dann automatisch wieder zusammen mit der Gegenteiligen Operation. Da ist leider die webui.js ein special case wegen diesen gewrappten \n Zeilen wie eQ3 die in OCCU ausliefert... Achja und die Gegenoperation ist dann diese hier:
Dash verwandelt die mehrzeilige Datei dann wieder in eine wo am Schluss die ersten zehn Zeilen aus langen Einzeilern besteht. Das ist auch hier im Makefile zu finden:
Hoffe damit ist das Prozedere klarer wie man an der WebUI.js in den ersten 10 Zeilen Änderungen vornehmen kann.. |
Ok, dh. zum committen des Patches
Ich kann das leider nicht testen, da ich keine Testumgebung habe; das Docker-Image kann ich schon bauen, aber ohne Funkmodul wird das Starten nichts |
Ok, jetzt hab ichs denke ich :) |
Ok, hab den PR nach keinen Änderungen und einem Fix meinerseits nun mal gemerged. Bitte mit dem nächsten nightly snapshot schauen ob nun alles passt. |
Describe the issue you are experiencing
Bei Navigation nach Einstellungen - Geräte "hängt" WebUI im Zustand Loading. DIe Liste der Geräte wird nicht angezeigt.
In der Developer Tools Console des Web Browsers gibt es die folgende Fehlermeldung:
SyntaxError: Invalid regular expression: nothing to repeat
bei Ausführung von Prototype.js
Describe the behavior you expected
Bei Navigation Einstellungen -> Geräte sollte die Geräteliszte angezeigt werden
Steps to reproduce the issue
...
What is the version this bug report is based on?
3.71.12.2023.10.12
Which base platform are you running?
ova (Open Virtual Infrastructure)
Which HomeMatic/homematicIP radio module are you using?
n/a
Anything in the logs that might be useful for us?
Additional information
Als Radio Module wird HB-RF-ETH verwendet
The text was updated successfully, but these errors were encountered: