swissbib / libadmin

a ZF3 (and Skeleton-App) based module for the administration of library institutions
BSD 3-Clause "New" or "Revised" License
1 stars 1 forks source link

Sortierung in View nach Bearbeitung einer Institution #4

Closed oschihin closed 8 years ago

oschihin commented 10 years ago

Problem

Die Sortierung einer Instititution in der View richtet sich nach dem Wert im Feld 'position' im entsprechenden json-File:

{
id": 2392,
"bib_code": "A100",
"sys_code": "A100",
"position": "638",
"favorite": true,
...
}

Bearbeitet man eine Institution, wird sie in libadmin in der Ansicht "View -> Institutionen sortieren" bei allen Views an erster Stelle angezeigt. Im json-File erhält sie einen Wert position=0

{
id": 2392,
"bib_code": "A100",
"sys_code": "A100",
"position": "0",
"favorite": true,
...
}

Weswegen nach Bearbeitungen in libadmin in jeder View die Institutionen neu sortiert werden müssen. (siehe letzten Kommentar von @mschwendener hier: swissbib/sbvf2#107)

Lösung

  1. Analyse: Wieso wird der Sortierwert auf 0 gesetzt, wie entsteht er und wie bleibt er erhalten?
  2. Lösung: Der Sortierwert bleibt beim speichern einer Institution erhalten und wird korrekt ausgegeben über die Schnittstelle
maechler commented 10 years ago

Das Problem ist, dass beim Bearbeiten einer Institution die View- und Gruppenzugehörigkeit geändert werden kann. Das kann dazu führen, dass zwei Institutionen den selben Sortierwert erhalten.

Wir haben das so gelöst, dass jetzt nur noch wenn die View- oder Gruppenzugehörigkeit geändert wird, die Sortierung gelöscht wird. Andere Änderungen (Name, Adresse, etc.) haben keinen Einfluss auf die Sortierung.

oschihin commented 10 years ago

@mmchler @guenterh Die Lösung hat offenbar einen gröberen Bug zur Folge:

  1. Bearbeiten einer Institution (z.B. Adresskorrektur)
  2. Speichern
  3. Im Tab "Gruppen und Views" der Institution sieht's dann so aus: a196_nderung

Hier sieht man auch schon die Folge in den Daten:

  1. In den Views > "Institutionen sortieren" erscheint die Institution nur noch bei green, und zwar zuoberst (Sortierwert 0)
  2. Prüfung der Datenausgabe via JSON: Die bearbeitete Institution ist aus allen Views verschwunden, mit Ausnahme von green.json

Aktuell ist der neueste Stand auf libadmintest installiert. Wir können dies unter keinen Umständen produktiv schalten. Korrektur dringend!

maechler commented 10 years ago

@oschihin @guenterh

Das sieht gar nicht gut aus! Ich werde mich so bald wie möglich darum kümmern. Ich habe bei mir noch alte Testdaten mit nur wenigen Views und konnte eben den Fehler nicht reproduzieren. Gibt es irgendwo einen aktuellen DB-Dump, oder könnt ihr vielleicht einen machen ? Ich schaue aber ob ich auch so schon einen Fehler finde.

maechler commented 10 years ago

@oschihin @guenterh

Vielen Dank für die aktuellen Daten! Ich konnte den Fehler leider immer noch nicht reproduzieren. Ich vermute deshalb, dass es evtl mit unterschiedlichen Datenbankkonfigurationen zusammenhängen könnte. Ich habe die Änderung gemacht, bei der ich denke es könnte das Problem lösen.

Bitte teste doch den aktuellen Stand nochmals auf eurem development Host.

oschihin commented 10 years ago

1) Das Problem besteht weiterhin, Einträge zu Views im "Institutionen > Gruppen & Views" werden vervielfacht, mit dem Titel "This label will be changed (by the app)". Aktiviert man eine Gruppe, so bleibt das Häkchen nicht bestehen.

2) Eine Änderung in der Adresse einer Institution führt dazu, dass die Institution aus der View fällt (geprüft mit A154 > ../orange.json)

Nachprüfbar unter admin.swissbib.ch/libadmintest

-------- Original-Nachricht -------- Betreff: Re: [libadmin] Sortierung in View nach Bearbeitung einer Institution (#4) Von: Markus Mächler notifications@github.com An: swissbib/libadmin libadmin@noreply.github.com Kopie (CC): Oliver Schihin oliver.schihin@unibas.ch Datum: 27.03.2014 09:56

@oschihin https://github.com/oschihin @guenterh https://github.com/guenterh

Vielen Dank für die aktuellen Daten! Ich konnte den Fehler leider immer noch nicht reproduzieren. Ich vermute deshalb, dass es evtl mit unterschiedlichen Datenbankkonfigurationen zusammenhängen könnte. Ich habe die Änderung gemacht, bei der ich denke es könnte das Problem lösen.

Bitte teste doch den aktuellen Stand nochmals auf eurem development Host.

— Reply to this email directly or view it on GitHub https://github.com/swissbib/libadmin/issues/4#issuecomment-38780255.

maechler commented 10 years ago

Fazit: Das Problem ist ein ZF2 Bug, der ab Version 2.2.6 auftritt. Ich konnte keine schnelle Lösung finden. Am Besten gehen wir zurück auf ZF 2.2.5 und hoffen, dass der Bug in einer nächsten Version behoben wird.

mschwendener commented 10 years ago

Ok für mich, ist kein grosser Mehraufwand.

@ToVie muss einfach auch daran denken, wenn er an libadmin etwas ändert ;)

guenterh commented 10 years ago

@mmchler Hallo Markus,

kannst Du auf https://github.com/zendframework/zf2/issues einen issue erfassen? Du hast es Dir angesehen und kannst es am besten kurz beschreiben Wenn das niemand weiss, haben wir schlechte Chancen, dass der Bug behoben wird.

Danke und Grüsse!

Günter

maechler commented 10 years ago

@guenterh @oschihin Um Fehler zu vermeiden, könnte ich noch das composer.json auf Version 2.2.5 fixieren, was meint ihr?

@guenterh Es ist etwas schwierig da ich den Fehler nicht auf ein paar Code-Zeilen einschränken kann. Ich werde aber versuchen ein brauchbares Issue zu erfassen!

oschihin commented 10 years ago

composer.json freezen finde ich gut

-------- Original-Nachricht -------- Betreff: Re: [libadmin] Sortierung in View nach Bearbeitung einer Institution (#4) Von: Markus Mächler notifications@github.com An: swissbib/libadmin libadmin@noreply.github.com Kopie (CC): Oliver Schihin oliver.schihin@unibas.ch Datum: 03.04.2014 15:25

@guenterh https://github.com/guenterh @oschihin https://github.com/oschihin Um Fehler zu vermeiden, könnte ich noch das composer.json auf Version 2.2.5 fixieren, was meint ihr?

@guenterh https://github.com/guenterh Es ist etwas schwierig da ich den Fehler nicht auf ein paar Code-Zeilen einschränken kann. Ich werde aber versuchen ein brauchbares Issue zu erfassen!

— Reply to this email directly or view it on GitHub https://github.com/swissbib/libadmin/issues/4#issuecomment-39450101.

guenterh commented 8 years ago

Meine aktuelle Analyse ergibt folgendes: Durch den Wechsel von ZF 2.2.5 zu 2.2.6 hat es unter anderem in der Implementierung der add - Element Methode eines Fieldset Elements eine Änderung gegeben. https://github.com/swissbib/libadmin/blob/feature/nextMaster_mergedWithDevelop_moreCode/module/Libadmin/src/Libadmin/Form/InstitutionFieldset.php#L227

In 2.2.5 gab es noch folgendes Stückchen code zum Vorbereiten eines Fieldset Elements

    if ($elementOrFieldset instanceof FieldsetInterface) {
        if ($elementOrFieldset instanceof FieldsetPrepareAwareInterface) {
            $elementOrFieldset->prepareFieldset();
        }

prepareFieldset ist in 2.2.6 weggefallen.

Vor allem bei eingebundenen Collections führt das dazu, dass die Collectionobjekte nicht mehr gebunden werden. Das kann man möglicherweise selber steuern, indem man die prepare Methode selber aufruft (was ich an dieser Stelle im Controller mache: https://github.com/swissbib/libadmin/blob/feature/nextMaster_mergedWithDevelop_moreCode/module/Libadmin/src/Libadmin/Controller/InstitutionController.php#L95

Der dahinter stehende Mechanismus verlangt die Implemenierung von bestimmten Schnittstellen (Traversable und ArrayAccess) was ich mal testweise für das ModelItem InstitutionRelation gemacht habe. Ein Aufruf ist nun ohne Fehler möglich, die Werte werden aber immer noch nicht gebunden ....

Weitere Hinweise zu Anpassungen durch den ZF Releaseupdate: http://framework.zend.com/changelog/2.2.6/ https://github.com/zendframework/zf2/pull/5502

@maechler: any ideas?

@oschihin z.K.

Der Branch, auf dem die aktuellen Anpassungen implementiert sind: https://github.com/swissbib/libadmin/tree/feature/nextMaster_mergedWithDevelop_moreCode

mschwendener commented 8 years ago

Aktueller Stand testlibadmin:

test

nb

oschihin commented 8 years ago

@maechler @mschwendener @guenterh Im Issue (ganz weit oben ;-) steht als Lösung: "Der Sortierwert bleibt beim speichern einer Institution erhalten und wird korrekt ausgegeben über die Schnittstelle." Das neue Verhalten entspricht dem offenbar. Was heisst das:

Nun könnte man natürlich (theoretisch, die Frage der Machbarkeit überlasse ich @maechler) nach dem Ändern dieses Felds eine Sortieraktion in allen Views auslösen. Ev. ist das etwas dick aufgetragen. Bibliotheksnamen ändern nicht alle Tage, ich könnte auch mit der Anleitung leben: Ändert man den Namen, muss man manuell neu sortieren.

mschwendener commented 8 years ago

Längerfristig gedacht müsste es eine Lösung sein, die auch dann noch funktioniert, falls wir eine Weboberfläche haben, auf der die Bibliotheken ihre eigenen Angaben ändern können. Den Anzeigenamen in swissbib sollen sie aber sowieso nicht ändern können, d.h. Feld "Display Namen" würden wir weiterhin selbst verwalten und können Sortierung von Hand auslösen.

guenterh commented 8 years ago

@maechler @mschwendener @oschihin

Hallo zusammen, Manu: wenn ich Deine Comments richtig interpretiere, entspricht die getestete Funktionalität der der produktiven Instanz. Konkret: Es gehen keine Informationen bei Mutationen mehr verloren (wie in diesem issue zu Anfang beschrieben) und Du kannst Informationen korrekt hinzufügen oder bewusst löschen.

an alle: ich bin dagegen, jetzt die Machbarkeit von wünschbaren Sortierfunktionen zu prüfen. Mein Standpunkt: 1) wir sollten uns darauf konzentrieren, jetzt wieder eine stabile Applikation auf Basis der ursprünglich von snowflake implementierten Funktionalität zu erhalten, die als Basis für weitere Ergänzungen dienen kann 2) wenn 1) erreicht, können wir die Erweiterung von https://github.com/swissbib/libadmin/issues/7 angehen. Danach werde 'ich' vorerst keine Arbeit mehr für Libadmin investieren. Auch Markus sollte das nicht machen (müssen)

Morgen werde ich noch die API von libadmintest testen. Wenn das ok ist, bereite ich ein brauchbares Deployment vor, räume die bestehenden Branches auf (einschliesslich Merge einer Formeta-API für Metafacture) und verteile ein Release als produktive Version

Günter

maechler commented 8 years ago

Hallo Zusammen,

Zur Sortierung: Die Sortierung ist nicht rein alphabetisch. Es hat zwar einen Knopf für die alphabetische Sortierung, man kann die Institutionen aber auch beliebig von Hand sortieren. Somit kann man bei der Änderung des Namens die Institution auch nicht einfach neu alphabetisch einsortieren. Wäre eine rein alphabetische Sortierung gewünscht, könnte man das wohl ohne allzu viel Aufwand aus der View entfernen und die Institutionen einfach vor der Rückgabe an VuFind über die API sortieren.

mschwendener commented 8 years ago

"Wäre eine rein alphabetische Sortierung gewünscht" Ja, wäre sie (also jeweils innerhalb einer Gruppe, s. https://www.swissbib.ch/Libraries) - inkl. korrekter Sortierung von Sonderzeichen.

"Es gehen keine Informationen bei Mutationen mehr verloren" Situation auf dem Screenshot von osc (https://github.com/swissbib/libadmin/issues/4#issuecomment-38274983) ist jedenfalls geflickt.

guenterh commented 8 years ago

API auf testvf gegen admin.swissbib.ch/libadmintest gestetet TestCase

guenterh commented 8 years ago

Mapportal API gegen libadmintest ok getestet auf sb-vf4

guenterh commented 8 years ago