puzzle / decidim-zuerich

Mitwirkungsportal für die Stadt Zürich, basierend auf Decidim
https://mitwirken.stadt-zuerich.ch
GNU Affero General Public License v3.0
8 stars 2 forks source link

Prozesssortierung auf /processes flicken #408

Closed larsUE closed 8 months ago

larsUE commented 1 year ago

Auf /processes funktioniert seit unserem Umbau mit der Sortierung nach Prozessgruppen die Sortierung nach eingestellter Reihenfolge nicht mehr. Die Ordnung der Prozesse lässt sich durch gar nichts beieinflussen und mir ist nicht ganz klar, was die Default-Sortierung derzeit ist.

Gewünscht wird, dass die eingestellte Reihenfolge in den Prozesssettings übernommen wird und die Prozesse innerhalb der Prozessgruppe nach dieser Reihenfolge geordnet wird.

wernerliechtenhan commented 1 year ago

In einem ersten Schritt wäre es hilfreich zu wissen, was die Reihenfolge beeinflusst. Was passiert, wenn eine neue Kachel eröffnet wird? Nach welchem Kriterium wird diese in die bestehenden Kacheln einsortiert?

Ursprünglich wird nach Startdatum der Prozesse sortiert, was Sinn macht (z.B. https://participer.lausanne.ch/processes?filter%5Barea_id%5D=&filter%5Bdate%5D=all&filter%5Bscope_id%5D=)

carlobeltrame commented 1 year ago

Standardmässig gibt es von Decidim her keine Sortierung, die Prozesse kommen in der Reihenfolge wie die Datenbank gerade Lust hat, und kann auch bei mehreren Seitenaufrufen unterschiedlich sein [1]. Auch bei Lausanne ist die Sortierung anders, wenn man keine Filter mitgibt: https://participer.lausanne.ch/processes.

Sobald allerdings der date Filter benutzt wird (welcher im Link von @wernerliechtenhan auf den Wert all gesetzt ist), wird nach Datum sortiert. Je nach Filter-Wert wird nach Startdatum, Enddatum oder der Distanz in Tagen des Prozessstarts von Heute aus gesehen (anders gesagt: die Anzahl Tage bis zum oder seit dem Prozessstart) sortiert.

Die Sortierung variiert also, je nach dem ob "Alle", "Laufende" oder "Vergangene" ausgewählt ist. Ist irgendeine dieser Sortierungen so wie gewünscht? Dann könnten wir die Sortierung forcieren solange kein Filter ausgewählt ist. Dazu mache ich noch eine Aufwandschätzung.

[1] https://www.postgresql.org/docs/current/queries-order.html "A particular output ordering can only be guaranteed if the sort step is explicitly chosen."

wernerliechtenhan commented 1 year ago

Vielen Dank für die Analyse! Wenn ich es bei Lausanne richtig interpretiere, werden "laufende" und "alle" nach Startdatum sortiert, "vergangene" nach dem Enddatum. Dito hier: https://www.decidim.barcelona/processes. Wenn wir diese Grundeinstellung wieder übernehmen könnten bei uns, wäre das hilfreich.

larsUE commented 1 year ago

Eigentlich gäbe es dazu noch das Feld "Weight" in den Einstellungen. Dieses wird aber auf /processes scheinbar nicht berücksichtigt: https://github.com/decidim/decidim/issues/11562

Ich sehe es wie Werner: Ein ordnen nach Startdatum bei "Laufenden" und "Allen" Filtern, eines nach Enddatum bei "Vergangenen Prozessen" macht Sinn. Bei uns ist aber das ausschlaggebende, dass aufgrund der Anpassung des Portals jeweils innerhalb der Prozessgruppe sortiert werden müsste.

Kann man den überhaupt keinen Filter auswählen? Standardmässig sind doch "Laufende" Prozesse als Filter gesetzt, wenn man /processes aufruft, oder?

@carlobeltrame mit wie viel Aufwand würdest du rechnen?

carlobeltrame commented 1 year ago

Für die interne Logik gilt eben die URL als single source of truth, nicht welche Pille im UI mit CSS markiert ist. Wie es aussieht sortiert Decidim bisher nur dann, wenn auch explizit ein Filter in der URL drin ist. Dann geht es in diesem Ticket darum, diese Decidim-Logik anzupassen, sodass "kein Filter" von der Sortierung her gleich behandelt wird wie "nach Laufende gefiltert".

@nicolefreypuzzle meldet sich bei euch mit der Aufwandschätzung.

carlobeltrame commented 1 year ago

Oder seid ihr sicher dass die Sortierung aktiv kaputt ist? Wir haben eben an der Sortierung von Decidim gar nichts geändert, und es wird eigentlich zuerst die gesamte Prozessliste sortiert und erst danach "auseinandergenommen" in die Feeds innerhalb der Prozessgruppen und den Feed aller Prozesse ohne Prozessgruppe.

Einen Unterschied der Sortierung zwischen "kein Filter in der URL" und "Laufende" gibt es, das konnte ich verifizieren.

Damit ihr einen Unterschied der Sortierung bei "Vergangene" sehen könnt, müssten mehrere Projekte ein explizites Enddatum haben.

Damit ihr einen Unterschied der Sortierung bei "Alle" sehen könnt, müssten einige Projekte in der Zukunft und einige in der Vergangenheit liegen. Wie ich oben schon zu erklären versuchte, ist diese Sortierung nicht gleich wie bei "Laufende".

larsUE commented 1 year ago

Ich bin nicht ganz sicher, ob ich dich richtig verstehe, sorry. Der Case in Lausanne bietet sich gut für einen Vergleich an. Damit wir es einfach ansehen können, habe ich auf INT das Feld mit den Daten sichtbar gemacht.

Case 1: Aufruf /processes

Lausanne: https://participer.lausanne.ch/processes –> Die Prozesse sind chronologisch (neueste zuerst) nach Startdatum sortiert Zürich: https://mitwirken.integ.stadt-zuerich.ch/processes –> Die Prozesse sind irgendwie sortiert

Case 2: Aufruf laufende Prozesse, durch spezifische Anwahl des Filters

Lausanne: https://participer.lausanne.ch/processes?filter%5Barea_id%5D=&filter%5Bdate%5D=active&filter%5Bscope_id%5D= –> Die Prozesse sind chronologisch (neueste zuerst) nach Startdatum sortiert, gleich wie Case 1. Zürich: https://mitwirken.integ.stadt-zuerich.ch/processes?filter%5Bwith_area%5D=&filter%5Bwith_date%5D=active&filter%5Bwith_scope%5D=&filter%5Bwith_type%5D= –> Die Prozesse sind irgendwie sortiert, aber gleich wie in Case 1.

Case 3: Aufruf vergangende Prozesse, durch spezifische Anwahl des Filters

Lausanne: https://participer.lausanne.ch/processes?filter%5Barea_id%5D=&filter%5Bdate%5D=past&filter%5Bscope_id%5D= –> Die Prozesse sind chronologisch (neueste zuerst) nach Enddatum sortiert. Zürich: https://mitwirken.integ.stadt-zuerich.ch/processes?filter%5Bwith_area%5D=&filter%5Bwith_date%5D=past&filter%5Bwith_scope%5D=&filter%5Bwith_type%5D= –> Die Prozesse sind irgendwie sortiert.

Ich habe bereits ausführlich getestet, und die Cases zeigen ja klar ein unterschiedliches Verhalten zwischen Lausanne und ZH. Ich kann mit Anpassungen am Datum der Prozesse keinerlei Einfluss auf die Reihenfolge ausüben. Ich kann nur beeinflussen, aber der Prozess unter "Laufende" oder "Vergangene" erscheint, das funktioniert also noch. Bei uns haben alle Prozesse sowohl auf INT als auf PROD jeweils Start und Enddatum gesetzt. Zusätzlich scheint es in der Darstellung der Reihenfolge keinen Unterschied zu machen, ob /processes aufgerufen wird oder der Filter für laufende Projekte (auch wenn es technisch unterschiedlich gehandhabt wird).

Wir haben nichts aktiv geändert an der Reihenfolge beim Umbau des Portals, aber es gingen ja zwischenzeitlich auch die Scopes und Areas und die Zeitlichen Filter kaputt, vielleicht hängt es damit zusammen?

nicolefreypuzzle commented 11 months ago

@larsUE Aufwandschätzung:

larsUE commented 8 months ago

In Absprache mit der Stadt Zürich werden wir dies aufgrund des hohen Aufwands und zwecks Beibehaltung einer Nähe zum Decidim-Core nicht umsetzen.

Stattdessen möchten wir die Änderungen rückwirkend machen und zur normalen Process-Übersicht zurückkehren, festgehalten in folgendem Ticket #418