ini20 / berliner-schulen

Finde die passende Schule in Berlin
http://berlinerschulen.ini20.de
BSD 3-Clause "New" or "Revised" License
7 stars 3 forks source link

Änderungen im Filter lassen die Seite einfrieren #42

Closed Janekdererste closed 9 years ago

Janekdererste commented 9 years ago

Wenn ein Filter ausgewäht wird, der zur Folge hat, dass alle, oder sehr viele Schulen ausgewählt werden, friert die Seite ein.

obstschale commented 9 years ago

Ja das liegt vor allem am rendern der Map. Mir ist bis jetzt leider noch keine gute Lösung dafür eingefallen.

Janekdererste commented 9 years ago

Vielleicht kann man die Punkte nach und nach darstellen? Immer in kleinen 10er Päckchen oder so.

obstschale commented 9 years ago

@Janekdererste Ich wollte vorhin schon schreiben, dass ich das Problem nicht lösen kann und dann ist mir doch noch eine Idee eingefallen und ich konnte herausfinden woran es liegt.

1. Die Karte

An der Karte lag es primär nicht. Allerdings habe ich dennoch das marker clustering hinzugefügt, das noch mal einen kleinen Performance boost gibt.

bildschirmfoto 2015-03-29 um 18 40 15 Ja, die Marker sind gerade wieder blau, wird für den PR wieder geändert :wink:

2. Die Liste

Das eigentliche Problem ist die Liste. Hier gab es ein paar Dinge, die mir so auch nicht aufgefallen sind / wären wenn ich nicht nach geforscht habe.

  1. Du hast den ListCtrl noch mal in der table selber deklariert mit ng-controller dadurch wurde der Controller 2 mal initialisiert und der $broadcast wurde auch 2 mal ausgeführt für die liste. Sprich: Die Liste wurde 2 mal gerendert.
  2. Das die Seite einfriert liegt an der langen liste. Die Liste wird ja mit ng-repeat aufgebaut und bei einer sehr langen Liste dauert das lange.

Ich hatte zuerst noch versucht nicht alle Schulen auf einmal in den $scope.schools zu packen, sondern immer in 10er Päckchen, aber dass verschlimmert das Problem nur, da ja der scope immer wieder verändert wird, so wird die Liste immer wieder neu gerendert.

Meines Erachtens hilft hier nur eine Pagination.

Janekdererste commented 9 years ago

Ok, willst du die pagination erstellen? Ich brauche noch eine Weile für die Layoutgeschichte. Ich kann aber auch erstmal eine Pagination implementieren.

----- Ursprüngliche Nachricht ----- Von: "Hans-Helge Buerger" notifications@github.com Gesendet: ‎29.‎03.‎2015 18:52 An: "ini20/berliner-schulen" berliner-schulen@noreply.github.com Cc: "Janekdererste" janek.laudan@mailbox.tu-berlin.de Betreff: Re: [berliner-schulen] Änderungen im Filter lassen die Seite einfrieren (#42)

@Janekdererste Ich wollte vorhin schon schreiben, dass ich das Problem nicht lösen kann und dann ist mir doch noch eine Idee eingefallen und ich konnte herausfinden woran es liegt.

  1. Die Karte An der Karte lag es primär nicht. Allerdings habe ich dennoch das marker clustering hinzugefügt, das noch mal einen kleinen Performance boost gibt.

Ja, die Marker sind gerade wieder blau, wird für den PR wieder geändert

  1. Die Liste Das eigentliche Problem ist die Liste. Hier gab es ein paar Dinge, die mir so auch nicht aufgefallen sind / wären wenn ich nicht nach geforscht habe. Du hast den ListCtrl noch mal in der table selber deklariert mit ng-controller dadurch wurde der Controller 2 mal initialisiert und der $broadcast wurde auch 2 mal ausgeführt für die liste. Sprich: Die Liste wurde 2 mal gerendert. Das die Seite einfriert liegt an der langen liste. Die Liste wird ja mit ng-repeat aufgebaut und bei einer sehr langen Liste dauert das lange. Ich hatte zuerst noch versucht nicht alle Schulen auf einmal in den $scope.schools zu packen, sondern immer in 10er Päckchen, aber dass verschlimmert das Problem nur, da ja der scope immer wieder verändert wird, so wird die Liste immer wieder neu gerendert. Meines Erachtens hilft hier nur eine Pagination. — Reply to this email directly or view it on GitHub.
obstschale commented 9 years ago

Ich bin schon dran. Kommt mit dem Commit dann rein.

Janekdererste commented 9 years ago

👍

----- Ursprüngliche Nachricht ----- Von: "Hans-Helge Buerger" notifications@github.com Gesendet: ‎29.‎03.‎2015 19:23 An: "ini20/berliner-schulen" berliner-schulen@noreply.github.com Cc: "Janekdererste" janek.laudan@mailbox.tu-berlin.de Betreff: Re: [berliner-schulen] Änderungen im Filter lassen die Seite einfrieren (#42)

Ich bin schon dran. Kommt mit dem Commit dann rein. — Reply to this email directly or view it on GitHub.

Janekdererste commented 9 years ago

Wenn ich grunt serve ausführe, werden die Verweise im index.html auf leaflet.markercluster.... rausgeworfen. Ich habe npm install und bower install ausgeführt. Dachte, dann müssten alle Kompnenten richtig integriert sein. Fehlt noch ein Schritt?

obstschale commented 9 years ago

Scheint, dass bower nicht automatisch den hotfix von leaflet.markercluster holt. Ich habe heute morgen Leaflet/Leaflet.markercluster#473 über das Problem mit dem Package Owner geredet.

Mach einfach manuel:

$ bower cache clean
$ bower install leaflet.markercluster#0.4.0-hotfix.1

Das sollte das Problem lösen. Überprüfen kannst du es indem du guckst ob im bower_components/leaflet.markercluster/ dir eine bower.json Datei liegt.

Janekdererste commented 9 years ago

So funktionierts. Danke

Janekdererste commented 9 years ago

Falls mal irgendwann Zeit ist. https://github.com/tombatossals/angular-leaflet-directive/pull/210 https://github.com/tombatossals/angular-leaflet-directive/issues/207 https://github.com/tombatossals/angular-leaflet-directive/issues/371