rowe42 / lhm_animad_admin_html5

0 stars 6 forks source link

Events zwischen den Komponenten #239

Closed rowe42 closed 6 years ago

rowe42 commented 6 years ago

Wir haben zuletzt diverse Fixes eingebaut, die sich mit der Navigation zwischen LoadCompleteData-Tabelle und Create- und Update-Form beschäftigen. Dabei haben wir das an die Änderung der page-Variable geknüpft. Das funktioniert nicht besonders gut (z.B. ist das save der Create-Form erst später fertig als das Reload der Tabelle, so dass das neue Element dort nicht drin ist).

Allerdings müssen wir ja auch mit Situationen zurecht kommen, wo die Komponenten untereinander auf der selben Seite vorkommen, wo sich also die page-Variable nicht ändert und trotzdem die LoadCompleteData-Tabelle es mitbekommen muss, wenn das CreateForm auf der selben Seite abgeschickt wird.

Wir brauchen also z.B. ein Custom Event, das bei einem erfolgreichen Create (oder auch Update) im Promise abgeschickt wird und auf das die "interessierten" Komponenten lauschen.

Was meint ihr? @xdoo @dragonfly28 @ejcsid @Baumfrosch

xdoo commented 6 years ago

Wenn zwei Komponenten miteinender kommunizieren müssen, dann haben wir dafür das Databinding von Polymer. Ich habe noch nicht verstanden, warum das hier nicht funktioniert.

rowe42 commented 6 years ago

Es gibt Konstellationen wo das Data Binding nicht ausreicht. Beispiel: ein neuer Keeper wird angelegt. Das muss im source Objekt einer Keeper relation reflektiert werden. Das ist dann der Fall wenn die Keeper relation bereits angelegt ist, z. B. wenn ein Animal Formular existiert und bereits initialisiert wurde. Es gibt aber kein Data Binding zur Keeper relation hin, die das bewirken würde.

rowe42 commented 6 years ago

Ein anderes, eher konstruiertes Beispiel ist wenn es mehrere Update Formulare von der selben Entität gibt. Wenn in einem ein Update passiert, sollte im anderen das gleiche Objekt neu geladen werden. Da sich aber der link nicht geändert hat bekommt das Data Binding das nicht mit.

rowe42 commented 6 years ago

Das Problem mit dem preload der relation ließe sich freilich auch lösen, indem wir kein preload mehr machen würden...

xdoo commented 6 years ago

Ich verstehe weder das erste noch das zweite Beispiel. Beim zweiten Beispiel ist mir das fachlich nicht klar. Deshalb würde ich es mal ignorieren. Gibt es zum ersten Beispiel eine Stelle im Code?

rowe42 commented 6 years ago

Folgender Ablauf:

Achtung: im aktuellen Master habe ich das gefixt, indem ich das create Formular neu befülle wenn es annavigiert wird. Kannst du also nicht mehr ausprobieren, es sei denn du kommentierst den reload Aufruf in der view-behavior aus.

Trotzdem verständlich?

xdoo commented 6 years ago

Ja, hab's verstanden :)

Das Problem tritt aber nur auf, wenn wir ein Preload machen. Wenn wir die Relationen bei der Eingabe der Buschstaben laden (das wird vermutlich der Normalfall sein), dann haben wir das Verhalten nicht.

Aber es ist ja eh shon gefixt.

rowe42 commented 6 years ago

Ja, nur dass der fix sich auf die Navigation in die unterview stützt und deshalb im Generat nicht funktioniert. Ich schaue mal ob ich es auf die top Level Navigation übertragen kann.

rowe42 commented 6 years ago

In Branch _#239 eine erste Version implementiert. Braucht aber Wildcard-Suche!

rowe42 commented 6 years ago

Nachdem ich die Wildcard-Suche jetzt in Branch #244 eingebaut habe, habe ich nun auch die Non-Preload-Relation nach Branch #244 umgezogen.

rowe42 commented 6 years ago

Für Tabellen/Listen mit load-complete-data wird nun ein CustomEvent geschickt, das solche Tabellen updated, wenn ein neues Element angelegt wurde. Ist in Master. Schließe das Issue.