swisstopo / swissgeol-assets-suite

1 stars 0 forks source link

Bug: Alternativ-ID's werden nicht gespeichert resp. gehen verloren #33

Closed gysimichael closed 6 months ago

gysimichael commented 9 months ago

Bei der Erfassung von mehreren Alternativ-ID's über "Neue Alternativ-ID hinzufügen" (Edit-Mode, Tab "Allgemein") kann es vorkommen, dass die neu eingegebenen Angaben beim Speichern verloren gehen / nicht gespeichert werden (Speichern über Tab "Administration").

Image

Dies insbesondere, wenn mehrere Alternativ-ID's ohne jeweilige Zwischenspeicherung zugefügt oder bestehende bearbeitet werden (über die 3 senkrecht angeordneten Punkte, Speichern direkt bei der Bearbeitung im Tab "Allgemein").

  1. Bearbeitung starten (über 3 senkrechte Punkte-Menue):

Image

  1. Eintrag bearbeiten/ändern und auf "Speichern" klicken:

Image

  1. Nach dem Speichern verschwindet der Eintrag vollständig:

Image

Die Verwaltung der Alternativ-ID's scheint allgemein noch etwas fehleranfällig und instabil zu sein.

Acceptance criteria

  1. Editing Alternative ID's works properly
  2. After editing, adding and removing Alternative ID's still works properly
daniel-va commented 7 months ago

@gysimichael Der Bugfix ist auf dem dev zum Testen bereit. Ich konnte den Bug immer reproduzieren indem ich zuerst eine neue Id erfasse & dann eine bestehende bearbeite & speichere. Dies hat immer dazu geführt, dass die bestehende Id gelöscht wird. Dies sollte nun nicht mehr passieren.

vej-ananas commented 6 months ago

From PR: Resolves https://github.com/swisstopo/swissgeol-assets-suite/issues/33.

The bug can reproduced simply by adding a new alternative id, and then editing + saving an existing one. This will cause the id that is being edited to be removed from the form.

Cause: The fields used to create/edit an alternative id are in a standalone form (i.e. it's not part of the big form that controls the entire asset view). Instead, it's a small form that is "manually" synced back to the big form via observables. This is quite an opaque task with a lot of corner cases. In this case, a subscriber that syncs the two forms was triggered after saving the existing id, but before resetting the small form back to a non-edit state. This caused the subscriber to perceive the id as being "new", and the form as "cancelled", which is why it removes the "cancelled" id.

Solution: Reorder the state updates so that the subscriber is executed only after the form has been fully reset.

mPfifi commented 6 months ago

Auf dev getestet: neu erstellte oder bearbeitete Alternativ-ID's lassen sich direkt über "Speichern" bei ID's speichern und werden nicht mehr gelöscht. Vor Verlassen des Edit-Mode muss zum definitiven Speichern der Änderungen noch im Reiter "Administration" gespeichert werden, was dem normalen Vorgehen entspricht. Sonst erscheint die Warnmeldung vor dem Verlassen des Edit-Mode.

Das Problem scheint somit gelöst zu sein und ich verschiebe den Issue auf Done!