Review_2016_11_01 - Geopras/IdeaWatcher GitHub Wiki

Ablauf

  1. Stefan (~20 min)
  • Localization
  • Testdaten
  1. Flo (~20 min)
  • Login Beispiel
  1. Georg (~15 min)
  • Backend Aufbau RequestService zusammen Workflows

danach Fragen klären

  • für Roland: Architektur DataManager grundlegend klären (Termin: -> Dependency Injection: über Mapper-Interfaces Workflow-Instanzen vom DataManager an RequestService übergeben
  • Namensschema für Views, IDs, Klassen usw.
  • IDs für Zugriff auf JavaScript
  • Bsp: Label in Profile-View: profileEdit_emailBlaBla_label (nameDerView_identifier_controlName)
  • CSS-Klassen für Zugriff auf CSS
  • wie bei ID nur mit einem Punkt davor - Bsp: .profileEdit_emailBla_label (nameDerView_identifier_controlName)
  • Container-Namen für div-Tags: profileEdit_view_div
  • sonst: camelCase (erster Buchstabe klein)
  • Copyright für Fußzeile ist zu klären (wichtig für Pflichtenheft)
  • Sicherheitsproblem Anzeige Login (Flo)

##Protokoll Stefan

Localization:

  • hat ein Modul "localizer" angelegt, dort sind die Sprachprofile als Objekte drin.
  • jede View soll ein eigenes Spachprofil haben, könnte ja sein, dass man ein Wort in einer bestimmten View anders übersetzen will
  • i18n ist das generelle Sprachobjekt, dort wird das aktuell benötigte Sprachobjekt eingeladen
  • Sprache wird momentan im Foot gesetzt.
  • es gibt Methoden um die Sprache zu holen und zu setzen
  • jede View hat eine eigene Methode zum Übersetzen
  • es gibt eine Hauptmethode, die aufgerufen wird, wenn Nutzer während dem Betrieb die Sprache ändert
  • darin werden die einzelnen Methoden der Views aufgerufen

Testdaten:

  • Testdaten liegen im Model vor
  • da wir Daten redundant speichern können, speichern wir auch Daten manchmal doppelt, damit wir sie schnell anzeigen können
  • Daten, die auf Logik beruhen (z.B. Anzahl der Likes einer Idee, Ranks) sollen im Backend berechnet werden, damit sie schneller angezeigt werden können. Wenn die Berechnungen immer beim Schreiben aktualisiert werden, dann muss vor dem Abrufen nichts mehr berechnet werden.
  • Passworthash kommt zu den UserDaten, muss nicht separat gespeichert werden
  • lists.json enthält Stammdaten --> diese sollen auch im Backend gespeichert werden

Flo

Navigation:

  • es gibt einen Login-Button über den man zur Login-View kommt

  • dabei wird tatsächlich navigiert

  • Daten können eingetragen werden, aber Verbindung zum Application Server kann noch nicht aufgebaut werden.

  • Oberfläche

  • html: mit divs und form, einem submitButton und einem normalen Button

  • innerhalb einer Form ist jeder "button" automatisch ein "submitButton" --> man muss type="button" spezifizieren

  • css: unbedingt immer display:none, damit die views nicht eingeblendet werden.

  • fester Breitenwert ist ok (400px)

  • Buttontag wurde noch zu css hinzugefügt

  • javascript:

  • Initialisierungsevent

  • subscribe zum MessageBroker

  • Anmelden am Controller zum Anzeigen der View

  • Controller bietet die Methode showView an, uiConnectoren werden vom Controller informiert, sobald dieser Bescheid bekommt, dass jemand eine bestimmte View sehen will

Georg

  • Backend Aufbau RequestService
  • z.B. ausm Frontend kommen Login-Daten, die wir validieren möchten
  • diese erreichen das Backend über einen Endpoint.
  • Endpoint muss Methoden anbieten und dann werden je nach Art des Requests unterschiedliche Workflows gestartet
  • jeder, der einen Workflow schreiben soll kennt die Schnittstellen
  • Workflows sind mit DataManager verbunden
  • alle Nachrichten sollten einheitlich sein (z.B. destination (Workflow, der gestartet werden soll und data (alle Daten, die der Workflow braucht)

Erklärung von Flo zum Thema "Token":

  • nachdem Nutzer erfolgreich validiert wurde, bekommt er einen Token für die Sitzung
  • diesen muss er immer mit an das Backend bekommen, welches zuerst den Token überprüft, bevor es den Request an die einzelnen Workflows weiterleitet

Roland

Spring:

  • eigentlich einfach, aber es passieren viele Dinge, die wir nicht sofort überblicken können
  • Spring würde unser Projekt unnötig kompliziert machen, zumal sich Georg schon so viel Arbeit gemacht hat.
  • Roland erstellt im nächsten Sprint Methoden, die die Workflows dann aufrufen können.

###Festlegungen

  • Hierachie der Übersetzungsobjekte abklären
    • Objekte für jedes View separat --> redundant
  • "Wörterbücher" werden im Frontend gespeichert, da dies die performanteste Lösung ist
  • Idee: Auswahlfeld Sprache => dafür beim User Sprache anstatt Country?
    • Wir legen das Feld "Sprache" bei der Idee mit an und hinterlegen "Deutsch" und "Englisch"
  • Wir führen eigene User-IDs, z.B. Integerwerte, der Benutzername muss dennoch eindeutig sein
  • css: unbedingt immer display:none, damit die views nicht eingeblendet werden.
  • Request-Eigenschaften:

  • "destination": "SLogin/validate-request"

  • "data": { "username": "user1", "password": "password" }

  • "token": "1"

  • Response-Eigenschaften:

  • "destination": "SLogin/validate-response"

  • "result": "valid" oder "notvalid"

  • "data": ""

  • "token": "1"

  • "error": ""