Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Ort und Beob: speichern ohne openDoc

  • Loading branch information...
commit 7b20b482b8b9951ec44dd70566beeeb09a416ac7 1 parent cfe5b85
@barbalex authored
View
69 _attachments/BeobEdit.html
@@ -205,23 +205,18 @@
//Für jedes Feld bei Änderung speichern
$("#BeobEditForm").on("change", ".speichern", function () {
- var Feldname, Feldjson, Feldwert;
- Feldname = this.name;
- //nötig, damit Arrays richtig kommen
- Feldjson = $("[name='" + Feldname + "']").serializeObject();
- Feldwert = Feldjson[Feldname];
- if (['oXKoord', 'oYKoord'].indexOf(Feldname) > -1 && $("[name='oXKoord']").val() && $("[name='oYKoord']").val()) {
+ if (['oXKoord', 'oYKoord'].indexOf(this.name) > -1 && $("[name='oXKoord']").val() && $("[name='oYKoord']").val()) {
//Wenn Koordinaten und beide erfasst
localStorage.oXKoord = $("[name='oXKoord']").val();
localStorage.oYKoord = $("[name='oYKoord']").val();
//Längen- und Breitengrade berechnen
localStorage.oLongitudeDecDeg = CHtoWGSlng(localStorage.oYKoord, localStorage.oXKoord);
localStorage.oLatitudeDecDeg = CHtoWGSlat(localStorage.oYKoord, localStorage.oXKoord);
- localStorage.oLagegenauigkeit = "";
+ localStorage.oLagegenauigkeit = null;
//und Koordinaten speichern
- speichereKoordinaten(localStorage.BeobId);
+ speichereKoordinaten(localStorage.BeobId, "Beob");
} else {
- speichern(Feldname, Feldwert);
+ speichern(this);
}
});
@@ -229,12 +224,7 @@
//change wird für jeden geswipten Wert ausgelöst!
//ungelöstes Problem: swipe reagiert!
$("#BeobEditForm").on("mouseup", ".ui-slider", function (event) {
- var Feldname, Feldjson, Feldwert;
- Feldname = this.name;
- //nötig, damit Arrays richtig kommen
- Feldjson = $("[name='" + Feldname + "']").serializeObject();
- Feldwert = Feldjson[Feldname];
- speichern(Feldname, Feldwert);
+ speichern(this);
});
//Änderungen im Formular für Anhänge speichern
@@ -255,7 +245,7 @@
$("#BeobEditPageFooterNavbar").on('click', "#verorteBeobBeobEdit", function (event) {
event.preventDefault();
- GetGeolocation(localStorage.BeobId);
+ GetGeolocation(localStorage.BeobId, "Beob");
});
//Code für den Beobachtung-Löschen-Dialog
@@ -512,22 +502,45 @@
}
//Speichert alle Daten
- function speichern(Feldname, Feldwert) {
- $db = $.couch.db("evab");
- $db.openDoc(localStorage.BeobId, {
- success: function (Beob) {
+ function speichern(that) {
+ //prüfen, ob Beob als Objekt vorliegt
+ if (window.Beob) {
+ //Objekt verwenden
+ speichern_2(Feldname, Feldwert);
+ } else {
+ //Beob aus DB holen
+ $db = $.couch.db("evab");
+ $db.openDoc(localStorage.BeobId, {
+ success: function (data) {
+ window.Beob = data;
+ speichern_2(Feldname, Feldwert);
+ }
+ }
+
+ function speichern_2(that) {
+ var Feldname, Feldjson, Feldwert;
+ Feldname = this.name;
+ InputTyp = $(that).attr("type");
+ //nötig, damit Arrays richtig kommen
+ Feldjson = $("[name='" + Feldname + "']").serializeObject();
+ Feldwert = Feldjson[Feldname];
//Werte aus dem Formular aktualisieren
if (Feldwert) {
- Beob[Feldname] = Feldwert;
- } else if (Beob[Feldname]) {
- delete Beob[Feldname]
+ if (InputTyp === "number") {
+ window.Beob[Feldname] = parseInt(Feldwert);
+ } else {
+ window.Beob[Feldname] = Feldwert;
+ }
+ } else if (window.Beob[Feldname]) {
+ delete window.Beob[Feldname]
}
- Beob.aArtGruppe = localStorage.aArtGruppe;
- Beob.aArtName = localStorage.aArtName;
- Beob.aArtId = localStorage.aArtId;
+ window.Beob.aArtGruppe = localStorage.aArtGruppe;
+ window.Beob.aArtName = localStorage.aArtName;
+ window.Beob.aArtId = localStorage.aArtId;
//alles speichern
- $db.saveDoc(Beob, {
- error: function () {
+ $db.saveDoc(window.Beob, {
+ error: function (data) {
+ window.Beob._rev = data.rev;
melde("Fehler: Änderung in " + Feldname + " nicht gespeichert");
}
});
View
5 _attachments/Karte.html
@@ -76,6 +76,7 @@
erstelleKarteH();
break;
case "hOrtEdit":
+ OrtOderBeob = "Ort";
erstelleKartehOrtEdit();
break;
case "BeobListe":
@@ -493,7 +494,7 @@
google.maps.event.addListener(marker, 'click', function () {
infowindow.open(map,marker);
});
- speichereKoordinaten(localStorage.OrtId);
+ speichereKoordinaten(localStorage.OrtId, "Ort");
}
//wird benutzt in BeobEdit.html
@@ -524,7 +525,7 @@
google.maps.event.addListener(marker, 'click', function () {
infowindow.open(map,marker);
});
- speichereKoordinaten(localStorage.BeobId);
+ speichereKoordinaten(localStorage.BeobId, "Beob");
}
//GoogleMap: alle Marker löschen
View
82 _attachments/hOrtEdit.html
@@ -164,8 +164,8 @@
//Längen- und Breitengrade berechnen
localStorage.oLongitudeDecDeg = CHtoWGSlng(localStorage.oYKoord, localStorage.oXKoord);
localStorage.oLatitudeDecDeg = CHtoWGSlat(localStorage.oYKoord, localStorage.oXKoord);
- localStorage.oLagegenauigkeit = "";
- speichereKoordinaten(localStorage.OrtId);
+ localStorage.oLagegenauigkeit = null;
+ speichereKoordinaten(localStorage.OrtId, "Ort");
} else {
speichern(this);
}
@@ -256,7 +256,7 @@
$('#OrtEditFooter').on('click', '#VerortungOrtEdit', function (event) {
event.preventDefault();
- GetGeolocation(localStorage.OrtId);
+ GetGeolocation(localStorage.OrtId, "Ort");
});
$("#OrtEditPage").on("swipeleft", "#OrtEditContent", function () {
@@ -361,6 +361,26 @@
}
function speichern(that) {
+ //prüfen, ob Ort existiert
+ if (window.Ort) {
+ //bestehedes Objekt verwenden
+ speichern_2(that);
+ } else {
+ //kein Ort > aus DB holen
+ $db = $.couch.db("evab");
+ $db.openDoc(localStorage.OrtId, {
+ success: function (data) {
+ window.Ort = data;
+ speichern_2(that);
+ },
+ error: function () {
+ melde("Fehler: Änderung in " + Feldname + " nicht gespeichert");
+ }
+ });
+ }
+ }
+
+ function speichern_2(that) {
var Feldname, Feldjson, Feldwert;
Feldname = that.name;
InputTyp = $(that).attr("type");
@@ -372,38 +392,30 @@
//Variablen für OrtListe zurücksetzen, damit die Liste beim nächsten Aufruf neu aufgebaut wird
leereStorageOrtListe("mitLatLngListe");
}
- $db = $.couch.db("evab");
- //Bestehendes Dokument öffnen
- $db.openDoc(localStorage.OrtId, {
- success: function (hOrt) {
- //Werte aus dem Formular aktualisieren
- if (Feldwert) {
- if (InputTyp === "number") {
- hOrt[Feldname] = parseInt(Feldwert);
- } else {
- hOrt[Feldname] = Feldwert;
- }
- } else if (hOrt[Feldname]) {
- delete hOrt[Feldname]
- }
- //alles speichern
- $db.saveDoc(hOrt, {
- success: function () {
- speichereOrtfeldInArten(Feldname, Feldwert, InputTyp);
- speichereOrtfeldInZeiten(Feldname, Feldwert, InputTyp);
- //window.ZuletztGespeicherteOrtId wird benutzt, damit auch nach einem
- //Datensatzwechsel die Listen nicht (immer) aus der DB geholt werden müssen
- //Zuletzt gespeicherte OrtId NACH dem speichern setzen
- //sicherstellen, dass bis dahin nicht schon eine nächste vewendet wird
- //darum zwischenspeichern
- window.OrtIdZwischenspeicher = localStorage.OrtId;
- setTimeout("window.ZuletztGespeicherteOrtId = window.OrtIdZwischenspeicher", 1000);
- setTimeout("delete window.OrtIdZwischenspeicher", 1500);
- },
- error: function () {
- melde("Fehler: Änderung in " + Feldname + " nicht gespeichert");
- }
- });
+ //Werte aus dem Formular aktualisieren
+ if (Feldwert) {
+ if (InputTyp === "number") {
+ window.Ort[Feldname] = parseInt(Feldwert);
+ } else {
+ window.Ort[Feldname] = Feldwert;
+ }
+ } else if (window.Ort[Feldname]) {
+ delete window.Ort[Feldname]
+ }
+ //alles speichern
+ $db.saveDoc(window.Ort, {
+ success: function (data) {
+ window.Ort._rev = data.rev;
+ speichereOrtfeldInArten(Feldname, Feldwert, InputTyp);
+ speichereOrtfeldInZeiten(Feldname, Feldwert, InputTyp);
+ //window.ZuletztGespeicherteOrtId wird benutzt, damit auch nach einem
+ //Datensatzwechsel die Listen nicht (immer) aus der DB geholt werden müssen
+ //Zuletzt gespeicherte OrtId NACH dem speichern setzen
+ //sicherstellen, dass bis dahin nicht schon eine nächste vewendet wird
+ //darum zwischenspeichern
+ window.OrtIdZwischenspeicher = localStorage.OrtId;
+ setTimeout("window.ZuletztGespeicherteOrtId = window.OrtIdZwischenspeicher", 1000);
+ setTimeout("delete window.OrtIdZwischenspeicher", 1500);
},
error: function () {
melde("Fehler: Änderung in " + Feldname + " nicht gespeichert");
View
114 vendor/couchapp/_attachments/evab.js
@@ -224,53 +224,66 @@ function geheZurueckFE() {
}
//wird benutzt von hOrtEdit.html, BeobEdit.html und Karte.html
-function speichereKoordinaten(id) {
- $db = $.couch.db("evab");
- $db.openDoc(id, {
- success: function (doc) {
- //Längen- und Breitengrad sind in keinem Feld dargestellt
- //sie müssen aus ihren Variabeln gespeichert werden
- doc.oLongitudeDecDeg = parseFloat(localStorage.oLongitudeDecDeg);
- doc.oLatitudeDecDeg = parseFloat(localStorage.oLatitudeDecDeg);
- doc.oXKoord = parseInt(localStorage.oXKoord);
- doc.oYKoord = parseInt(localStorage.oYKoord);
- //parseInt verhindert das Speichern von Text, darum prüfen
- if (localStorage.oLagegenauigkeit === "Auf Luftbild markiert") {
- doc.oLagegenauigkeit = localStorage.oLagegenauigkeit;
- } else {
- doc.oLagegenauigkeit = parseInt(localStorage.oLagegenauigkeit);
+function speichereKoordinaten(id, OrtOderBeob) {
+ //kontrollieren, ob Ort oder Beob als Objekt vorliegt
+ if (window[OrtOderBeob]) {
+ //ja: Objekt verwenden
+ speichereKoordinaten_2(OrtOderBeob);
+ } else {
+ //nein: Objekt aus DB holen
+ $db = $.couch.db("evab");
+ $db.openDoc(id, {
+ success: function (data) {
+ window[OrtOderBeob] = data;
+ speichereKoordinaten_2(OrtOderBeob);
+ },
+ error: function () {
+ melde("Fehler: Koordinaten nicht gespeichert");
+ }
+ });
+ }
+}
+
+function speichereKoordinaten_2(OrtOderBeob) {
+ //Längen- und Breitengrad sind in keinem Feld dargestellt
+ //sie müssen aus ihren Variabeln gespeichert werden
+ window[OrtOderBeob].oLongitudeDecDeg = parseFloat(localStorage.oLongitudeDecDeg);
+ window[OrtOderBeob].oLatitudeDecDeg = parseFloat(localStorage.oLatitudeDecDeg);
+ window[OrtOderBeob].oXKoord = parseInt(localStorage.oXKoord);
+ window[OrtOderBeob].oYKoord = parseInt(localStorage.oYKoord);
+ //parseInt verhindert das Speichern von Text, darum prüfen
+ if (localStorage.oLagegenauigkeit === "Auf Luftbild markiert") {
+ window[OrtOderBeob].oLagegenauigkeit = localStorage.oLagegenauigkeit;
+ } else {
+ window[OrtOderBeob].oLagegenauigkeit = parseInt(localStorage.oLagegenauigkeit);
+ }
+ //Höhe nur speichern, wenn vorhanden
+ //wenn nicht vorhanden: Allflligen alten Wert löschen
+ if (localStorage.oHoehe) {
+ window[OrtOderBeob].oHöhe = parseInt(localStorage.oHoehe);
+ window[OrtOderBeob].oHöheGenauigkeit = parseFloat(localStorage.oHoeheGenauigkeit);
+ } else {
+ delete window[OrtOderBeob].oHöhe;
+ delete window[OrtOderBeob].oHöheGenauigkeit;
+ }
+ //alles speichern
+ $db.saveDoc(window[OrtOderBeob], {
+ success: function (data) {
+ window[OrtOderBeob]._rev = data.rev;
+ //melde("Koordinaten gespeichert");
+ $("[name='oXKoord']").val(localStorage.oXKoord);
+ $("[name='oYKoord']").val(localStorage.oYKoord);
+ $("[name='oLatitudeDecDeg']").val(localStorage.oLatitudeDecDeg);
+ $("[name='oLongitudeDecDeg']").val(localStorage.oLongitudeDecDeg);
+ if (localStorage.oLagegenauigkeit) {
+ $("[name='oLagegenauigkeit']").val(parseInt(localStorage.oLagegenauigkeit));
}
- //Höhe nur speichern, wenn vorhanden
- //wenn nicht vorhanden: Allflligen alten Wert löschen
if (localStorage.oHoehe) {
- doc.oHöhe = parseInt(localStorage.oHoehe);
- doc.oHöheGenauigkeit = parseFloat(localStorage.oHoeheGenauigkeit);
- } else {
- delete doc.oHöhe;
- delete doc.oHöheGenauigkeit;
+ $("[name='oHöhe']").val(parseInt(localStorage.oHoehe));
+ }
+ if (localStorage.oHoeheGenauigkeit) {
+ $("[name='oHöheGenauigkeit']").val(parseInt(localStorage.oHoeheGenauigkeit));
}
- //alles speichern
- $db.saveDoc(doc, {
- success: function () {
- //melde("Koordinaten gespeichert");
- $("[name='oXKoord']").val(localStorage.oXKoord);
- $("[name='oYKoord']").val(localStorage.oYKoord);
- $("[name='oLatitudeDecDeg']").val(localStorage.oLatitudeDecDeg);
- $("[name='oLongitudeDecDeg']").val(localStorage.oLongitudeDecDeg);
- if (localStorage.oLagegenauigkeit) {
- $("[name='oLagegenauigkeit']").val(parseInt(localStorage.oLagegenauigkeit));
- }
- if (localStorage.oHoehe) {
- $("[name='oHöhe']").val(parseInt(localStorage.oHoehe));
- }
- if (localStorage.oHoeheGenauigkeit) {
- $("[name='oHöheGenauigkeit']").val(parseInt(localStorage.oHoeheGenauigkeit));
- }
- },
- error: function () {
- melde("Fehler: Koordinaten nicht gespeichert");
- }
- });
},
error: function () {
melde("Fehler: Koordinaten nicht gespeichert");
@@ -975,7 +988,7 @@ function generiereHtmlFuerBeobEditForm (Beob) {
$db = $.couch.db("evab");
$db.saveDoc(Beob, {
success: function (data) {
- GetGeolocation(data.id);
+ GetGeolocation(data.id, "Beob");
}
});
delete localStorage.Status;
@@ -1790,7 +1803,7 @@ function generiereHtmlFuerOrtEditForm (Ort) {
$db = $.couch.db("evab");
$db.saveDoc(Ort, {
success: function (data) {
- GetGeolocation(data.id);
+ GetGeolocation(data.id, "Ort");
}
});
//Status zurücksetzen - es soll nur ein mal verortet werden
@@ -2509,11 +2522,13 @@ function warte(ms) {
//verorted mit Hilfe aller Methoden
//wird benutzt von BeobEdit.html und hOrtEdit.html
//erwartet die docId, um am Ende der Verortung die neuen Koordinaten zu speichern
-function GetGeolocation(docId) {
+function GetGeolocation(docId, OrtOderBeob) {
//benötigte Variabeln setzen
localStorage.docId = docId;
//Zweck: Genau solange animieren, wie verortet wird
localStorage.NavbarVerortungAnimieren = "true";
+ //übergebene Herkunft (Ort oder Beob) für die listeners bereitstellen
+ localStorage.OrtOderBeob = OrtOderBeob;
//dem Benutzer zeigen, dass verortet wird
NavbarVerortungAnimieren();
//Koordinaten zurücksetzen
@@ -2562,7 +2577,7 @@ function GeolocationAuslesen(position) {
localStorage.oHoehe = position.coords.altitude;
localStorage.oHoeheGenauigkeit = position.coords.altitudeAccuracy;
}
- speichereKoordinaten(localStorage.docId);
+ speichereKoordinaten(localStorage.docId, localStorage.OrtOderBeob);
}
//Position ermitteln war erfolgreich
@@ -2613,11 +2628,12 @@ function stopGeolocation() {
$("[name='oHöhe']").val("");
$("[name='oHöheGenauigkeit']").val("");
//Diesen neuen Stand speichern (allfällige alte Koordinaten werden verworfen)
- speichereKoordinaten(localStorage.docId);
+ speichereKoordinaten(localStorage.docId, localStorage.OrtOderBeob);
melde("Keine genaue Position erhalten");
}
//Variablen aufräumen
delete localStorage.docId;
+ delete localStorage.OrtOderBeob;
}
//damit kann bei erneuter Anmeldung oeffneZuletztBenutzteSeite() die letzte Ansicht wiederherstellen
Please sign in to comment.
Something went wrong with that request. Please try again.