Skip to content
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

Systemvariable "protokolliert" wird nicht gespeichert, wenn Variable nicht "sichtbar" ist #948

Closed
Michael-K-at-GitHub opened this issue Oct 17, 2020 · 8 comments
Labels
🐛 bug-report Something isn't working 🏷️ ReGaHss This refs the ReGaHss component 🙏 help wanted Extra attention is needed 🌱 minor This is a issue/ticket which can be easily fixed

Comments

@Michael-K-at-GitHub
Copy link

Describe the bug
Setzt man eine Variable auf protokolliert, in dem man unter Einstellungen-Systemvariable das Kästchen "protokolliert" ankreuzt, so wird dies nur gespeichert, wenn zuvor "sichtbar" angekreuzt ist.

Beispiel
[x] sichtbar, dann ankreuzen von [x] protokolliert --> Seite neu aufrufen --> [x] sichtbar [x] protokolliert --> Korrekt
[ ] sichtbar, dann ankreuzen von [x] protokolliert --> Seite neu aufrufen --> [ ] sichtbar [ ] protokolliert --> Falsch, [x] bei protokolliert fehlt

Korrekt funktioniert aber
[x] sichtbar, dann ankreuzen von [x] protokolliert, dann [ ] sichtbar (also Haken entfernen) --> Seite neu laden --> [ ] sichtbar [x] protokolliert -->

Korrekt funktioniert auch
Jedes Entfernen von [ ] protokolliert

Es scheint also
Haken bei protokolliert setzen --> Setzt protokolliert auf den Wert von sichtbar <-- Bug
Haken bei protokolliert entfernen --> Setzt protokolliert auf aus.

To Reproduce

  1. Einstellungen-Systemvariable aufrufen
  2. Bei einer beliebigen Variable, bei der [ ] sichtbar nicht angehakt ist: [x] protokolliert anhaken
  3. Einstellungen-Systemvariable neu aufrufen
    --> [x] bei protokolliert fehlt

Expected behavior
[x] bei protokolliert bleibt erhalten

System information (please complete the following information):

  • RaspberryMatic 3.51.6.20200420
  • Nightly RaspberryMatic-3.53.30.20201016

Additional context
Von Baxxy aus dem Forum verifiziert - tritt dort auch auf

@jens-maus
Copy link
Owner

jens-maus commented Oct 17, 2020

Danke für dieses sehr gut ausgefüllte Issue Template (@alexhass - so würde ich mir das auch bei deine tickets wünschen! ;) ).

Ist das problem auch von anderen so reproduzierbar? Gibt es bereits Lösungsansätze (@jp112sdl ?)?

@jens-maus jens-maus added 🐛 bug-report Something isn't working 🏷️ WebUI This refs the WebUI component 🙏 help wanted Extra attention is needed ❓ undecided No decision to accept or reject ticket yet labels Oct 17, 2020
@Michael-K-at-GitHub
Copy link
Author

Michael-K-at-GitHub commented Oct 17, 2020

Ich hab mal ein wenig debugged. Der HTML Code scheint korrekt erzeugt zu werden, insbesondere wird ein (wie mir scheint korrekter) onclick="iseSystem.saveDpProto(23977, this)" erzeugt, die Id der Variable ist auch korrekt. Der Ajax Event sieht auch unauffällig auf, und die saveDpProto() dahinter ebenso. Die ruft dann ein obj.DPArchive(b); auf. Da b an dieser Stelle nicht von "sichtbar" abhängt, geh ich mal davon aus, dass bis hierher alles richtig läuft.

Ins obj.DPArchive seh ich jetzt nicht rein (wo finde ich da den Code?). Kann es sein, dass jemand dort sagt: "Wenn die Variable nicht sichtbar ist, dann wird auch nicht protokolliert"? Würde das Verhalten erklären (das Nicht-Setzen von "Protokolliert" wird ja nicht retour an den Client geliefert, es gäbe auch kein Callback das darauf reagieren kann). Ergo würden wir das erst beim refreshen der Seite mitbekommen, was ja genau unser Phänomen ist. Aber wie gesagt: Nur eine Vermutung. Wenn Du mir sagen kannst, wo ich hab den Code von obj.DPArchive finde, schau ich gerne weiter. Wenn das ClosedSource ist ---> Upstream Issue?

@jp112sdl
Copy link
Contributor

jp112sdl commented Oct 17, 2020

Gibt es bereits Lösungsansätze (@jp112sdl ?)?

Ich kann erstmal auch nix in den WebUI Dateien finden, was das Problem verursachen könnte.
In der system.fn ist alles ok.
https://github.com/eq-3/occu/blob/master/WebUI/www/rega/esp/system.fn#L869-L900

In der systemvars.htm ist auch alles schick
https://github.com/eq-3/occu/blob/master/WebUI/www/rega/pages/tabs/admin/systemvars.htm#L225-L243

Die get.tcl und getall.tcl haben auch alles korrekt inne
https://github.com/eq-3/occu/blob/master/WebUI/www/api/methods/sysvar/get.tcl#L50-L51
https://github.com/eq-3/occu/blob/master/WebUI/www/api/methods/sysvar/getall.tcl#L56-L57

Und die webui.js#L24659-24673 ist auch ok.

Bleibt ja fast nur noch, dass in der ReGa bei DPArchive was kaputt ist und dort beim Ändern irgendwas in Visible mit geändert wird.

Ich weiß nicht, ob mein Skript einen Denkfehler hat, aber das geht halt auch nicht:

var test = dom.GetObject(ID_SYSTEM_VARIABLES).Get("A");

var isArch = test.DPArchive();
var isVis  = test.Visible();

WriteLine("Sichtbar     : "#isVis);
WriteLine("Protokolliert: "#isArch);

test.Visible(false);
test.DPArchive(true);

isArch = test.DPArchive();
isVis  = test.Visible();

WriteLine("Sichtbar     : "#isVis);
WriteLine("Protokolliert: "#isArch);

ergibt:

Sichtbar     : false
Protokolliert: false
Sichtbar     : false
Protokolliert: false

DPArchive(true); hat nix bewirkt, Visible vorher false war.

Wenn ich jedoch

test.Visible(true);
test.DPArchive(true);

mache, sind auch beide anschließend true

Sichtbar     : true
Protokolliert: true

Mehr Kombinationen hab ich nicht getestet... Da könnt ihr ja jetzt weitermachen ^^

@jens-maus
Copy link
Owner

Danke für diese Analysen. Sehr hilfreich und schaue ich mir demnächst mal direkt an. Wenn das soweit alles passt stellt sich nur die Frage ob es wirklich gewollt ist das DPArchive() aka "protokolliert" wirklich vollkommen autark von Visible() aka "sichtbar" funktionieren sollte und/oder ob dieser vermeintliche Bug vielleicht doch eher ein Feature und somit gewollt ist...

@jp112sdl
Copy link
Contributor

vielleicht doch eher ein Feature und somit gewollt ist...

Das WebUI-Handbuch sieht zumindest keine Abhängigkeit der beiden Optionen vor.

Bildschirmfoto 2020-10-17 um 20 20 03

@jp112sdl
Copy link
Contributor

Eine Abhängigkeit von sichtbar und protokolliert halte ich auch nicht für sinnvoll.
Man kann ja eine SV ausblenden und trotzdem loggen wollen, was mit ihr passiert.

@Michael-K-at-GitHub
Copy link
Author

Michael-K-at-GitHub commented Oct 18, 2020

Man kann ja eine SV ausblenden und trotzdem loggen wollen, was mit ihr passiert.

Kann man auch, aber eben nur in der Reihenfolge: Sichtbar ein --> Protokolliert ein --> Sichtbar aus.
Ergo: Defect

@jens-maus jens-maus added 🏷️ ReGaHss This refs the ReGaHss component 🌱 minor This is a issue/ticket which can be easily fixed and removed ❓ undecided No decision to accept or reject ticket yet 🏷️ WebUI This refs the WebUI component labels Oct 18, 2020
@jens-maus jens-maus added this to the next release milestone Oct 18, 2020
@jens-maus
Copy link
Owner

Danke für die Inputs. Nun konnte ich das Problem nachstellen und in der Tat auf einen Fehler in ReGaHss zurückführen. Beginnend mit der R1.00.0388.0225 Version sollte das Problem entsprechend behoben sein.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug-report Something isn't working 🏷️ ReGaHss This refs the ReGaHss component 🙏 help wanted Extra attention is needed 🌱 minor This is a issue/ticket which can be easily fixed
Projects
Development

No branches or pull requests

3 participants