Diskussion:Tourpl

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche

Technologien

  • Server: Python, SQLite
  • Clients:
    • JavaScript: OpenLayers, jQuery
    • Webbrowser: Getestet unter Firefox 3.x+4.x, Chrome, IE 8 (später IE 9 und Safari).
  • Folgende externe Webservices werden genutzt:
    • Geocoding: Yahoo (Alternative: Mapquest)
    • Routing: OSRM [1] (eine Alternative wäre MapQuest)

Aktueller Stand

Letzte Anpassungen:

  • UC1 bis UC5 (vgl. unten) realisiert.

Offene Fragen:

  • Nahe beieinander liegende Marker?
  • Wie kann man mit MS Excel Umlaute eingeben?

Task List

  • Upload:
    • Permalink ohne "=", d.h. neu mit "no padding" ("=") (Standard "Base32, uppercase" ist ok und lässt das zu). Sonst kann der Link nicht in Mails verschickt werden.
  • GUI:
    • Nach Umarrangieren und "Verbessern" soll der aktuelle Ausschnitt der Karte erhalten bleiben.
    • Neue "Session" (=> Button "Neu")? vorher noch Fragen, ob die Seite wirklich verlassen und Daten nicht gespeichert werden sollen . D.h. mit JavaScript verhindern, dass der Benutzer die Seite verlässt! Fragen, ob Daten nicht gespeichert werden sollen (bzw. Window verlassen) => <script> window.onbeforeunload = function(){ return "wirklich verlassen?"; } </script>
  • Statisches Layout:
    • Werbung einbauen
    • FavIcon einbauen
  • Verschiedenes:
    • Job robuster machen für weniger Ausfallzeiten à la EOSMDBOne
  • http://labs.geometa.info/tourpl/ löschen

Feature Requests

Upload:

  • CSV-Parser/Reader:
    • Zellen mit unsichtbaren Spaces nach letztem Eintrag sollen ignoriert werden.
    • "Fahrtenzeilen" ignorieren (Zeilen, bei denen nur in den ersten beiden Kolonnen Werte sind).
  • Falls Fehler beim wiederholten "Upload" soll die Tour erhalten bleiben.
  • Nach Upload "Zoom to full extent" festlegen und mit Daten speichern (oder jeweils berechnen).

Download:

  • Ausgabe mit "Fahrtenzeilen" zwischen den Posten, mit Abfahrtszeit, Reisedauer und nächstes Fahrtziel (z.B. "9:00,00:27,Abfahrt nach Rapperswil").

GUI:

  • Reihenfolge in Karte interaktiv umstellen (vgl. OpenLayers Knacknuss).
  • Nicht erkannte Adressen interaktiv als Marker in Karte setzen.
  • Anzeige Abfahrtszeit in Adressenliste, editierbar.
  • Option "Mittlere Aufenthaltsdauer" (Default für Dauer des Aufenthalt bei jedem Zwischenhalt, z.B. 2h)

Statisches Layout:

  • Werbung rechts einbauen (verwalten).
  • Icons statt Weblinks in den Tabs (Vorlage, Upload, Download, etc.)
  • Kleiner Versatz des Balkens oben rechts beim HSR-Logo um ein Pixel beheben (ist ev. mit Icons obsolet).
  • Disabling von Funktionen, falls nicht sinnvoll (z.B. "Download, Verbessern").

Verschiedenes/Allgemeines:

  • Geocodieren: Falls Adresse nicht erkannt wird => Grau machen und ignorieren.
  • Marker nicht nur mit Nummer sondern neu auch mit Name beschriften
  • Logging von "Neu erstellen Tourenplan" und von Löschen.

Print:

  • Editieren (Druck-)Titel und -Beschreibung
  • Speichern (Druck-)Titel und -Beschreibung
  • Drucken (Druckansicht) = Print View = Drucken mit Liste und Karte

Ideen

  • Kontakte synchronisieren/anbinden (zusätzlich zum CSV-Upload); verlangt kostenloses Konto (MyTourpl):
    • Importieren von Outlook-Kontakten (mit Plugin; funktioniert für Outlook 2007 und 2010; Realisierungsansatz: SmartClient AddIn für Microsoft Outlook).
    • Importieren von MS Exchange-Kontakten
    • Importieren von Google-Kontakten und anderen Social Software (vgl. OpenInviter).
  • Version für Mobiles
  • Hinzufügen von Adressen direkt in die Liste

Premium-Funktionen:

  • Werbefrei
  • Priorisiertes Optimieren
  • Kalender-Anbindung (Google, Outlook, Exchange)
  • Mobil-Unterstützung
  • (Unlimitierte Anzahl Routen)

Realisierung

Zum Tourpl-Tagesrapport.

Use Cases:

1. UC1 "Tour erstellen":

  • User: Tourpl starten
  • User: Adressliste vorbereiten (CSV-Format)
  • User: Upload Adressliste
  • System: Eröffnet neue Tour:
    • tour_id generiert (verkürzte uuid)
    • Längen- und Breitengrade ergänzt durch Yahoo Geocoding
    • dann in sqlite DB persistiert
    • Umleitung uf tourpl.ch/?id=tour_id (besser direkt im Pfad à la Doodle)
    • Darstellung gemäss Reihenfolge Adressliste mit openlayers in Karte (Markers numerisch und mit Name) und mit JQuery in Liste

2. UC2 "Tour manuell verbessern":

3. UC3 "Tour optimieren lassen" (Prio 3)

  • User: Wählt "Optimieren"
  • System: Berechnet Liste neu mit TSP-Heuristik und (vorläufig) direkte Distanzen zwischen den 'Posten'.

4. UC4 "Tour download" (CVS-Datei):

  • User: Wählt "Download"
  • System: Defaults Start um 08:00 Uhr, Aufenthalt 1h

5. UC5 "Neue Tour eröffnen"

  • User: Button "Neu"
  • USer: Neueinstieg über Startseite

6. tbd.

Spezifikation CSV-Input und -Output

Kolonnen/Felder für CSV-Upload/Input:

  • Kolonnen-Namen: Name; Vorname; Anrede; Adresse; PLZ; Ort; Land; Telefon; Email; Koordinaten; Bemerkungen.
  • Mitzugeben sind mind. die Felder Name; sowie entweder 1. Adresse; PLZ; Ort; (ev. Land) oder 2. Koordinaten.
  • Felder/Kolonnen gehen keine verloren, wenn sie wie oben angegeben heissen (Case Insensitive) - ausser die Felder 'Abfahrt' und 'Dauer'.
  • Die Felder 'Abfahrt' und Dauer werden beim Druck/Download überschrieben mit neuen Tourenangaben.
  • Feld-Delimiter ist Strichpunkt, Komma, oder Tab. Strings-Delimiter ist Anführungszeichen.
  • Die Reihenfolge der Kolonnen ist irrelevant.
  • Für den mehrmaligen Upload, sollte der Upload/Import zusätzlich imstande sein, wie folgt mit dem Input umzugehen:
    • Die Kolonnen 'Abfahrt' und Dauer: Inhalt wird gelöscht und überschrieben.
    • Die Kolonnen Vorname; Telefon; Email und Bemerkungen werden eingelesen und im Download wieder mitgegeben (aber noch nicht angezeigt).
    • Zeilen, die aus weniger als drei Werte in den Kolonnen haben, werden ignoriert. Das betrifft konkret auch die Wegbeschreibung (vgl. dort) des Outputs.

Kolonnen/Felder für CSV-Download/Druckansicht:

  • Alle eingelesenen Kolonnen. Reihenfolge der Kolonnen...
  • Kolonnen-Namen: Abfahrt; Dauer; Name; Vorname; Anrede; Adresse; PLZ; Ort; Land; Telefon; Email; Koordinaten; Bemerkungen.
  • Der Feld-Delimiter ist Strichpunkt. Strings-Delimiter ist Anführungszeichen (später als Option?).
  • Das Feld 'Abfahrt' enthält die Tageszeit-Angabe, wann die Tour weitergeht zum nächsten Zwischenhalt.
  • Das Feldformat für Koordinaten ist Lat/Lon.

Beispiel für CSV-Upload/Input:

 Adresse            ;Ort          ;PLZ  ;Land      ;Name
 "Oberseestr. 10"   ;"Rapperswil" ;8640 ;"Schweiz" ;"HSR"
 "Jonastrasse 8"    ;"Wald ZH"    ;8636 ;"Schweiz" ;"Schreinerei"
 "Roosstrasse 53"   ;"Wollerau"   ;8832 ;"Schweiz" ;"Conrad Electronic" 

Beispiel für CSV-Download/Druckansicht mit Wegbeschreibung (man beachte auch neue Reihenfolge der Kolonnen!):

 Abfahrt;Dauer;Name               ;Adresse         ;Ort         ;PLZ ;Land     ;Vorname; Anrede; Telefon; Email; Bemerkungen; Koordinaten
 08:00;01:30;"Schreinerei"        ;"Jonastrasse 8" ;"Wald ZH"   ;8636;"Schweiz"; ; ; ; ; ;"47.27613,8.91014"
 09:30;00:30;"Abfahrt nach Rapperswil";;;;;;;;;
 10:10;00:10;"HSR"                ;"Oberseestr. 10";"Rapperswil";8640:"Schweiz"; ; ; ; ; ;"47.22306,8.81651"
 10:20;01:45;"Abfahrt nach Wollerau"  ;;;;;;;;;
 12:05;00:40;"Conrad Electronic"  ;Roosstrasse 53" ;"Wollerau"  ;8832;"Schweiz"; ; ; ; ; ;"47.18978,8.72249"
 12:45;00:00;"Rückfahrt nach Start"   ;;;;;;;;;

Defaults/Annahmen (können dann im Tabellenkalkulation editiert werden):

  • Mittlere Dauer eines Aufenthalt bei jedem Zwischenhalt ist 01:00h