Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Request: Einführen von Templates #34

Merged
merged 34 commits into from
Jun 6, 2018
Merged

Conversation

h8h
Copy link
Contributor

@h8h h8h commented Jun 5, 2018

Hi,

mittlerweile wird popupcontent.js immer größer. Das ist generell kein Problem, nur leidet meiner Ansicht die Übersichtlichkeit und die Möglichkeit designmäßig Anpassungen zu machen immer mehr darunter.

Deshalb der "Feature request" Code und View (Template) voneinander zu trennen.

Folgendes habe ich jetzt geändert:

  • Verwendung von jsrender Bibliothek
  • Implementierung des popcontent als Template in die index.html, siehe script type="text/x-jsrender"
  • Auslagern der Übersetzung, der Adressdarstellung in die update_data.js, damit ändert sich nun auch das Aussehen der details.json, die sieht jetzt so aus:
   "id" : "node/1329846483",
   "type" : "Feature",
   "name" : "Hofladen Nitzinger Eggstätt Bioladen",
   "geometry" : {
      "type" : "Point",
      "coordinates" : [
         12.3855076,
         47.9198983
      ]
   },
   "property" : "farm",
   "properties" : {
      "Telefon" : "+49 8056 909644",
      "Biologisch" : "nur",
      "shop" : "farm"
   },
   "address" : {
      "postcode" : "83125",
      "city" : "Eggstätt",
      "housenumber" : "25",
      "street" : "Chiemseestraße"
   },
   "opening_hours" : "Mo-Sa 08:30-12:00; Mo-Tu 14:00-18:00; Th-Fr 14:00-18:00"
}

Die Idee dahinter, properties nur noch auf die uns "unbekannten" Variablen begrenzen. properties wird später im Template, wie zuvor auch, in "Weitere Daten gerendert".

  • Implementierung von Öffnungszeiten. Habe erst heute deine Commits zu den Öffnungszeiten gesehen, deshalb habe ich das auch noch kurz hinzugefügt. Da die Auswertung der Öffnungszeiten dynamisch erfolgen muss, wird dem details.json JSON dynamisch noch das Feld open hinzugefügt, das geschieht dann in der js/popupcontent.js.
  • Abschließend habe ich dann nochmal ein Datenabgleich laufen lassen und vermtl. auch den Fehler mit dem "cannot open ..." behoben.

Hoffe du bist nicht allzusehr schockiert :)

Anschauen könntest du es wieder hier acme@direktvermarkter

Grüße
Chris

@stefangrotz
Copy link
Member

stefangrotz commented Jun 6, 2018

Hey tolle Arbeit :) jsrender muss ich mir unbedingt anschauen. Evtl baue ich damit auch die Inhalte im Menü damit man die auch mehrsprachig machen kann.

Aus irgendeinen Grund funktioniert das Try-Catch für die Öffnungszeiten nicht immer, hier z.B. nicht:

https://acme.im/direktvermarkter/#49.00865,8.37582,18z

https://farmshops.eu/#49.00896,8.37555,18z

Bei diesem Popup gibt es einen Fehler weil die Bibliothek PH nicht kennt.

Ich denke man kann die Funktion mit den öffnungszeiten auch einfach mit in die index html hinein packen, dafür braucht man keine eigene popupconten.js

@h8h
Copy link
Contributor Author

h8h commented Jun 6, 2018

Danke :).

Bzlg. Öffnungszeiten, da hab ich grad mal nen Issue aufgemacht.

jsrender, bietet nur einfache Methoden, wie if/else, for, keine try catchs.

Es würde somit aus meiner Sicht mehr Sinn machen, das das Auswerten der Öffnungszeiten weiterhin irgendwo im Code stattfindet und das letztendliche anzeigen dann im Template.

Man könnte aber die js/popupcontent.js durchaus vereinfachen, in dem man die oh.getState() direkt ins feature array reinschreibt.

Ich würde noch gerne das Template auslagern in eine Datei, doch das funktoniert irgendwie nicht so einfach.

Mit mehrsprachigen Menüs klingt super. Dann würde ich evtl. den Text in ein JSON Blob auslagern und dann so etwas in bauen:

 <ul>
    {{props menu}}
                    <li>
                     <a href={{:prop}}>{{:key}} </a>
                    </li>
     {{/props}}
</ul>

menu_de.json

   "menu" : {
      "Startseite" : "index.html",
      "Über" : "about.html",
   }

@stefangrotz
Copy link
Member

Gibt es irgendwelchen besonderen gründe warum Du dich ausgerechnet für jsrender als Template Engine entschieden hast? Ich habe grundsätzlich nichts dagegen, es ist nur eine der kleineren Lösungen deswegen interessiert mich das.

@h8h
Copy link
Contributor Author

h8h commented Jun 6, 2018

Wegen der kleineren Codebasis habe ich die genommen. Für die paar Templates, dachte ich brauchen wir keine Monsterengine.

Ich habe mich etwas informiert und hab einen Ansatz gefunden, sowas recht schlank umzusetzen. Der Beitrag war aber von 2008 oder so. Und aus diesem Ansatz ist dann jsviews entstanden.

Und jsviews ist echt nicht viel Code.

Wenn du aber mehr brauchst oder größere Pläne hast, können wir auch gerne Umswitchen.

Mir ist nur das Prinzip wichtig, das wir Code und Desgin auseinander halten.

@stefangrotz stefangrotz changed the base branch from master to new-data-structure June 6, 2018 15:07
@stefangrotz stefangrotz merged commit 7a57423 into CodeforKarlsruhe:new-data-structure Jun 6, 2018
@stefangrotz
Copy link
Member

stefangrotz commented Jun 6, 2018

Klingt logisch. Ich habe auf lange Sicht ein anderes Design im Hinterkopf aber das müsste auch mit der Bibliothek gehen. Ich gehe da gerne mit und experimentiere in den nächsten Tagen ein wenig damit herum.

@h8h
Copy link
Contributor Author

h8h commented Jun 7, 2018

Perfekt. Danke.
Gibts da schon konkrete Vorstellungen :)

Ich würde ja gerne noch eine Detailansicht haben.

Also eine Ganzseitige, ähnlich wie bei Wheelmap.

Auf einer solchen, könnte man dann perfekt auch Formular bauen, zur Änderung der Daten.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants