Kann ich "bestätigen", das es wohl an den Fahrzeugen liegt. Mit weniger Wachen / Fahrzeugen rennt das Skript einwandfrei (Testkonto). Mit weniger Fahrzeugen läuft das Skript sogar in meinem Standartbrowser OperaGaming
[Script] Passende Fahrzeuge auf der jeweiligen Wache in der Lehrgangsauswahl anzeigen
-
-
Am besten die API-Daten komprimiert speichern, ist ja nur Text mit vielen Wiederholungen, da sollte man einiges rausholen können:
$.getJSON('/api/vehicles').done(data => sessionStorage.setItem('aVehicles', JSON.stringify({ lastUpdate: new Date().getTime(), value: data, userId: user_id })));
Müsste man dann wohl ein zusätzliches Script einbinden, bspw.:
https://pieroxy.net/blog/pages/lz-string/index.html
Ich hab mal die Ausgabe für meine /api/vehicles auf der Demo-Seite eingefügt:
https://pieroxy.net/blog/pages/lz-string/demo.html
Sind 680 kb bei mir, in Javascript dann etwa doppelt soviel wegen UTF-16, 1.393.886 bytes
LZ-string macht daraus 65.972 bytes
LZMA 23.121 bytes.
Also 5% bzw 2% der ursprünglichen Größe
$.getJSON('/api/vehicles').done(data => sessionStorage.setItem('aVehicles', LZString.compressToUTF16(JSON.stringify({ lastUpdate: new Date().getTime(), value: data, userId: user_id }))));
Und entsprechend beim Lesen LZString.decompressFromUTF16(...)
-
Am besten die API-Daten komprimiert speichern, ist ja nur Text mit vielen Wiederholungen, da sollte man einiges rausholen können:
$.getJSON('/api/vehicles').done(data => sessionStorage.setItem('aVehicles', JSON.stringify({ lastUpdate: new Date().getTime(), value: data, userId: user_id })));
Müsste man dann wohl ein zusätzliches Script einbinden, bspw.:
https://pieroxy.net/blog/pages/lz-string/index.html
Ich hab mal die Ausgabe für meine /api/vehicles auf der Demo-Seite eingefügt:
https://pieroxy.net/blog/pages/lz-string/demo.html
Sind 680 kb bei mir, in Javascript dann etwa doppelt soviel wegen UTF-16, 1.393.886 bytes
LZ-string macht daraus 65.972 bytes
LZMA 23.121 bytes.
Also 5% bzw 2% der ursprünglichen Größe
$.getJSON('/api/vehicles').done(data => sessionStorage.setItem('aVehicles', LZString.compressToUTF16(JSON.stringify({ lastUpdate: new Date().getTime(), value: data, userId: user_id }))));
Und entsprechend beim Lesen LZString.decompressFromUTF16(...)
Das ist ja sehr interessant. Daran hab ich noch garnicht gedacht, dass man da noch Vorarbeit fürs Speichern machen kann
-
Ich frag jetzt einfach mal frech: Darf ich mit einem Patch rechen?
Dein Skript erleichtert echt die ganze Sache mit den Ausbildungen. Mit dem Skript waren die Ausbildungen der rund 40 neuen Wachen binnen Minuten erledigt. Wäre echt nice.
Solange greif ich auf die altbewährte Methode zurück => Stift und Papier
-
Sorry, bin aktuell ziemlich eingespannt und das was ich getestet hatte wollte nicht so wie ich. Wenn sich irgendwer dazu berufen fühlt das ganze zu implementieren: Ich merge gerne forks.
-
So in etwa sollte das funktionieren, getestet in Firefox + Tampermonkey:
Codeif ((document.getElementById("schooling") != null || document.getElementById("accordion") != null) && !disableOptions) {document.querySelectorAll(".alert", ".alert-info")[0].insertAdjacentHTML("afterend", "<div class='alert alert-info' id='ccShowCourseOptionDiv'><input type='checkbox' id='ccShowCourseOptionCheckbox'> Nur Anzeigen, ob Fahrzeug(e) existieren.</div>");if (window.location.pathname.split("/")[1] == "buildings" && document.getElementById("schooling") != null) {else if (window.location.pathname.split("/")[1] == "schoolings" && document.getElementById("accordion") != null) {if (!localStorage.aVehicles || JSON.parse(localStorage.aVehicles).lastUpdate < (new Date().getTime() - 5 * 1000 * 60) || JSON.parse(localStorage.aVehicles).userId != user_id) {await $.getJSON('/api/vehicles').done(data => localStorage.setItem('aVehicles', JSON.stringify({ lastUpdate: new Date().getTime(), compressed: true, value: LZString.compressToUTF16(JSON.stringify(data)), userId: user_id })));var aVehicles = (aVehiclesContainer.compressed) ? JSON.parse(LZString.decompressFromUTF16(aVehiclesContainer.value)) : aVehiclesContainer.value;Ggf. muss man das Userscript einmal deinstallieren, neu installieren, damit das @require Script geladen wird.
Hab das von sessionStorage nach localStorage, weil ich die Schulen gerne in mehreren neuen tabs öffne, dann lädt das nur 1x
-
erwillnicht Ich hab die Version von Eschermc implementiert. Sollte jetzt marginal langsamer sein, aber dafür keinen Overflow mehr produzieren. Bitte einmal auf 1.1 aktualisieren und testen
-
-
Also 1.1 die Version gibt es nicht. Es ist die Versionsnummer 1.0.8b.
-
Doch, das ist Version in meinem GH-Repo. Ich hab dort den Namen des Localstorage geändert, damit das Skript nicht Probleme bei anderen macht, falls die auch auf den Eintrag zugreifen.
-
In Version 1.0.9 sind die Ausbildungen für THW Wasserschaden/Pumpen drin.
-
Inspiriert von einem anderen Thema, wäre es möglich die Wachen ohne passendes Fahrzeug auszublenden?
Bei über 1400 Feuerwachen durchaus sinnvoll
Oder eine suche - Ich sortiere immer nach Landkreisen
-
ich würde das Thema aus der senke holen.
Meine Wachanzahl wächst und wächst - Wie bei jedem
Wäre meine Idee von damals umsetzbar: Ist es möglich die Wachen ohne passendes Fahrzeug auszublenden?
Wäre echt hilfreich
-
Ich hab bemerkt das das Skript nicht so ganz auf der Polizeischule geht. Es werden mir einfach keine Wachen angezeigt wo entsprechendes Fahrzeug steht. Kannst du da mal bei Gelegenheit nachschauen? Version hab ich 1.0.9 - Auch getestet ohne weitere Skripte
Bei den anderen Schulen klappt es.
Aufgefallen ist es mir da ich grad ein Kauf und Ausbildungsmarathon mache
-
Lag an den fehlenden Inhalten der Kripo und DGL. Sind jetzt drin. Bin aktuell am verhandeln das man die internen Namen in https://api.lss-manager.de/de_DE/schoolings aufnimmt, dann brauche ich nicht jedes mal das Skript updaten, sondern nur die API abfragen
Zu deinem Wunsch von 2022: Ja, bestimmt möglich, aber aktuell fehlt mir die Motivation dazu. Und wenn ich das richtig sehe müsste ich die Reihenfolge der Loops umbauen.
-
passt vielen - Hat keine eile mit dem Wunsch. Vorerst langt mir das so wie es jetzt ist inzwischen.
Danke dir für's schnelle Updaten