apflora
Version:
Aktionsplan Flora Kt. Zürich
1,170 lines (1,132 loc) • 492 kB
JavaScript
// benötigte globale Variablen initialisieren
window.apf = window.apf || {};
window.apf.gmap = window.apf.gmap || {};
window.apf.olmap = window.apf.olmap || {};
window.apf.initiiereIndex = require('./modules/initiiereIndex');
// setzt window.apf und localStorage.ap_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowAp = function (id) {
'use strict';
localStorage.ap_id = id;
$.ajax({
type: 'get',
url: 'api/v1/ap=' + localStorage.ap_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// ap bereitstellen
window.apf.ap = data[0];
}
});
};
window.apf.hole_artliste_html = function () {
'use strict';
var liste_geholt = $.Deferred();
// wird benutzt von function window.apf.erstelle_artlisten und window.apf.initiiere_tpopmassn
// baut eine vollständige Artliste auf
if (!window.apf.artliste_html) {
$.ajax({
type: 'get',
url: 'api/v1/artliste',
dataType: 'json'
}).done(function (data) {
var html;
html = "<option></option>";
_.each(data, function (art) {
html += "<option value=\"" + art.TaxonomieId + "\">" + art.Artname + "</option>";
});
window.apf.artliste_html = html;
liste_geholt.resolve();
});
} else {
liste_geholt.resolve();
}
return liste_geholt.promise();
};
// wird benutzt von Formular ap, pop und TPopMassn
// setzt vollständige Artlisten în Select-Felder
window.apf.erstelle_artlisten = function () {
'use strict';
var liste_erstellt = $.Deferred();
$.when(window.apf.hole_artliste_html())
.then(function () {
$("#AaSisfNr").html(window.apf.artliste_html);
$("#TPopMassnAnsiedWirtspfl").html(window.apf.artliste_html);
liste_erstellt.resolve();
});
return liste_erstellt.promise();
};
// setzt window.apf.pop und localStorage.pop_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowPop = function (id) {
'use strict';
localStorage.pop_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblPopulation/feld=PopId/wertNumber=' + localStorage.pop_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// pop bereitstellen
window.apf.pop = data[0];
}
});
};
// setzt window.apf.apziel und localStorage.apziel_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowApziel = function (id) {
'use strict';
localStorage.apziel_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblZiel/feld=ZielId/wertNumber=' + localStorage.apziel_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// apziel bereitstellen
window.apf.apziel = data[0];
}
});
};
// setzt window.apf.zielber und localStorage.zielber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowZielber = function (id) {
'use strict';
localStorage.zielber_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblZielBericht/feld=ZielBerId/wertString=' + localStorage.zielber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// zielber bereitstellen
window.apf.zielber = data[0];
}
});
};
// setzt window.apf.erfkrit und localStorage.erfkrit_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowErfkrit = function (id) {
'use strict';
localStorage.erfkrit_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblErfKrit/feld=ErfkritId/wertString=' + localStorage.erfkrit_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// erfkrit bereitstellen
window.apf.erfkrit = data[0];
}
});
};
// setzt window.apf.jber und localStorage.jber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowJber = function (id) {
'use strict';
localStorage.jber_id = id;
$.ajax({
type: 'get',
url: '/api/v1/apflora/tabelle=tblJBer/feld=JBerId/wertNumber=' + localStorage.jber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// jber bereitstellen
window.apf.jber = data[0];
}
});
};
// setzt window.apf.jber_übersicht und localStorage.jber_uebersicht_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowJberUebersicht = function (id) {
'use strict';
localStorage.jber_uebersicht_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblJBerUebersicht/feld=JbuJahr/wertNumber=' + localStorage.jber_uebersicht_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// jber_uebersicht bereitstellen
window.apf.jber_übersicht = data[0];
}
});
};
// setzt window.apf.ber und localStorage.ber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowBer = function (id) {
'use strict';
localStorage.ber_id = id;
$.ajax({
type: 'get',
url: '/api/v1/apflora/tabelle=tblBer/feld=BerId/wertNumber=' + localStorage.ber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
data = data[0];
// ber bereitstellen
window.apf.ber = data;
}
});
};
// setzt window.apf.idealbiotop und localStorage.idealbiotop_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowIdealbiotop = function (id) {
'use strict';
localStorage.idealbiotop_id = id;
$.ajax({
type: 'get',
url: '/api/v1/apflora/tabelle=tblIdealbiotop/feld=IbApArtId/wertNumber=' + localStorage.idealbiotop_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// idealbiotop bereitstellen
window.apf.idealbiotop = data[0];
}
});
};
// setzt window.apf.assozarten und localStorage.assozarten_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowAssozarten = function (id) {
'use strict';
localStorage.assozarten_id = id;
$.ajax({
type: 'get',
url: '/api/v1/apflora/tabelle=tblAssozArten/feld=AaId/wertNumber=' + localStorage.assozarten_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data) {
// assozarten bereitstellen
window.apf.assozarten = data;
}
});
};
// setzt window.apf.popmassnber und localStorage.popmassnber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowPopmassnber = function (id) {
'use strict';
localStorage.popmassnber_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblPopMassnBericht/feld=PopMassnBerId/wertNumber=' + localStorage.popmassnber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// popmassnber bereitstellen
window.apf.popmassnber = data[0];
}
});
};
// setzt window.apf.tpop und localStorage.tpop_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowTpop = function (id) {
'use strict';
localStorage.tpop_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblTeilpopulation/feld=TPopId/wertNumber=' + localStorage.tpop_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// tpop bereitstellen
window.apf.tpop = data[0];
}
});
};
window.apf.downloadFileFromView = function (view, filename, format) {
// löst einen Download aus
// als Formate steht momentan nur csv (und teilweise kml) zur Verfügung, weil xlsx leider nicht funktioniert hat
var getTimestamp = require('./modules/getTimestamp'),
format = format || 'csv',
url = 'api/v1/exportView/' + format + '/view=' + view + '/filename=' + filename + '_' + getTimestamp();
$.fileDownload(url, {
preparingMessageHtml: "Der Download wird vorbereitet, bitte warten...",
failMessageHtml: "Beim Aufbereiten des Downloads ist ein Problem aufgetreten, bitte nochmals versuchen."
});
};
window.apf.downloadFileFromViewWehreIdIn = function (view, idName, idListe, filename, format) {
// löst einen Download aus
// als Formate steht momentan nur csv zur Verfügung, weil xlsx leider nicht funktioniert hat
var getTimestamp = require('./modules/getTimestamp'),
format = format || 'csv',
url = 'api/v1/exportViewWhereIdIn/' + format + '/view=' + view + '/idName=' + idName + '/idListe=' + idListe + '/filename=' + filename + '_' + getTimestamp();
$.fileDownload(url, {
preparingMessageHtml: "Der Download wird vorbereitet, bitte warten...",
failMessageHtml: "Beim Aufbereiten des Downloads ist ein Problem aufgetreten, bitte nochmals versuchen."
});
};
// setzt window.apf.popber und localStorage.popber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowPopber = function (id) {
'use strict';
localStorage.popber_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblPopBericht/feld=PopBerId/wertNumber=' + localStorage.popber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// popber bereitstellen
window.apf.popber = data[0];
}
});
};
// setzt window.apf.tpopfeldkontr und localStorage.tpopfeldkontr_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowTpopfeldkontr = function (id) {
'use strict';
localStorage.tpopfeldkontr_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblTeilPopFeldkontrolle/feld=TPopKontrId/wertNumber=' + localStorage.tpopfeldkontr_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// tpopfeldkontr bereitstellen
window.apf.tpopfeldkontr = data[0];
}
});
};
// setzt window.apf.tpopmassn und localStorage.tpopmassn_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowTpopmassn = function (id) {
'use strict';
localStorage.tpopmassn_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblTeilPopMassnahme/feld=TPopMassnId/wertNumber=' + localStorage.tpopmassn_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// tpopmassn bereitstellen
window.apf.tpopmassn = data[0];
}
});
};
// setzt window.apf.tpopmassnber und localStorage.tpopmassnber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowTpopmassnber = function (id) {
'use strict';
localStorage.tpopmassnber_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblTeilPopMassnBericht/feld=TPopMassnBerId/wertNumber=' + localStorage.tpopmassnber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// tpopmassnber bereitstellen
window.apf.tpopmassnber = data[0];
}
});
};
// setzt window.apf.tpopber und localStorage.tpopber_id
// wird benötigt, wenn beim App-Start direkt ein deep link geöffnet wird
window.apf.setzeWindowTpopber = function (id) {
'use strict';
localStorage.tpopber_id = id;
$.ajax({
type: 'get',
url: 'api/v1/apflora/tabelle=tblTeilPopBericht/feld=TPopBerId/wertNumber=' + localStorage.tpopber_id,
dataType: 'json'
}).done(function (data) {
// Rückgabewert null wird offenbar auch als success gewertet, gibt weiter unten Fehler, also Ausführung verhindern
if (data && data[0]) {
// tpopber bereitstellen
window.apf.tpopber = data[0];
}
});
};
window.apf.initiiereExporte = function (anchor) {
'use strict';
$("#testart_div").hide();
$("#forms_titelzeile").hide();
window.apf.zeigeFormular("exporte");
history.pushState(null, null, "index.html?exporte=true");
if (anchor) {
location.hash = "#" + anchor;
}
};
// managed die Sichtbarkeit von Formularen
// wird von allen initiiere_-Funktionen verwendet
// wird ein Formularname übergeben, wird dieses Formular gezeigt
// und alle anderen ausgeblendet
// zusätzlich wird die Höhe von textinput-Feldern an den Textinhalt angepasst
window.apf.zeigeFormular = function (Formularname) {
'use strict';
var formular_angezeigt = $.Deferred(),
$forms = $("#forms"),
$form = $('form'),
$testart_div = $("#testart_div"),
$forms_titelzeile = $("#forms_titelzeile"),
$ap_waehlen = $("#ap_waehlen"),
$Formularname;
// zuerst alle Formulare ausblenden
$forms.hide();
$form.each(function () {
$(this).hide();
});
// Karten sind in div statt form
$('.karte').each(function () {
$(this).hide();
});
// damit kann bei Grössenänderung die Formularhöhe von Karten gemanagt werden
window.apf.kartenhöhe_manuell = false;
// höhe von forms auf auto setzen, weil dies von den Kartenansichten verändert wird
$forms.height('auto');
$testart_div.hide();
$forms_titelzeile.hide();
// Titelzeile anzeigen, weil sie für die Kartenanzeige entfernt wird
//$("#forms_titelzeile").css("display", "inline-block");
// Bei Testarten Hinweis anzeigen
if ($ap_waehlen.val()) {
// titelzeile inline, sonst gibt es einen unschönen Abstand nach oben
//$("#forms_titelzeile").css("display", "inline");
$forms_titelzeile.css("display", "none");
if ($ap_waehlen.val() <= 150 && Formularname !== "jber_uebersicht" && Formularname !== "exporte" && Formularname !== "GeoAdminKarte") {
// titelzeile inline-block, sonst werden Tabs nach rechts verschoben
$("#forms_titelzeile").css("display", "inline-block");
$testart_div
.css("color", "#03970F")
.show()
.html("Das ist eine Testart - hier kann man alles ausprobieren!");
} else if ($("#ap_waehlen").val() <= 150 && Formularname === "jber_uebersicht") {
$("#forms_titelzeile").css("display", "inline-block");
$testart_div
.css("color", "#DF0303")
.show()
.html("Vorsicht: Die Übericht ist für alle Arten, daher HIER NICHT TESTEN");
}
}
if (Formularname) {
$forms.show();
$("#ap_loeschen").show();
$("#exportieren_1").hide();
if (Formularname === "google_karte" || Formularname === "GeoAdminKarte") {
// Titelzeile entfernen
$("#forms_titelzeile").css("display", "none");
// höhe einstellen
$Formularname = $("#" + Formularname);
$Formularname.css("height", $(window).height()-17 + "px");
// markieren, dass die Formularhöhe anders gesetzt werden soll
window.apf.kartenhöhe_manuell = true;
window.apf.setzeKartenhöhe();
$Formularname.show();
if (Formularname === "GeoAdminKarte") {
window.apf.initiiereOlmap();
}
} else {
$forms.css("background-color", "#FFE");
$form.each(function () {
$(this).hide();
if ($(this).attr("id") === Formularname) {
$(this).show();
$('textarea').each(function () {
window.apf.fitTextareaToContent(this, document.documentElement.clientHeight);
});
}
});
$(window).scrollTop(0);
}
formular_angezeigt.resolve();
}
return formular_angezeigt.promise();
};
// leert alle Felder und stellt ihre Breite ein
window.apf.leereFelderVonFormular = function (Formular) {
'use strict';
$('#' + Formular + ' input[type="text"]').each(function (){
$(this).val("");
});
$('#' + Formular + ' input[type="radio"]:checked').each(function (){
$(this).prop('checked', false);
});
$('#' + Formular + ' select').each(function (){
$(this).val("");
});
};
// begrenzt die maximale Höhe des Baums auf die Seitenhöhe, wenn nötig
window.apf.setzeTreehöhe = function () {
'use strict';
if ($(window).width() > 1000) {
if (($(".jstree-no-icons").height() + 157) > $(window).height()) {
$("#tree").css("max-height", $(window).height() - 139);
}
} else {
// Spalten sind untereinander. Baum 75px weniger hoch, damit Formulare immer erreicht werden können
if (($(".jstree-no-icons").height() + 157) > $(window).height()-75) {
$("#tree").css("max-height", $(window).height() - 220);
}
}
};
window.apf.setzeKartenhöhe = function () {
'use strict';
var lyt_max_height = window.apf.berechneOlmapLayertreeMaxhöhe,
forms_height,
max_width;
// Formulare sind unbegrenzt hoch aber Karten sollen das nicht sein
if (window.apf.kartenhöhe_manuell) {
forms_height = $(window).height() - 17;
max_width = $("#forms").width();
// resizable neu rechnen lassen, sonst bleibt ga_karten_div in falscher Grösse
// leider funktioniert das nicht wie gewünscht:
// wenn der Benutzer die Grösse verändert hat, passt sich ga_karten_div nicht mehr richtig an Veränderungen des Bildschirms an...
//$('.apf-resizable').resizable('destroy');
//$('.apf-resizable').resizable();
/*$('.apf-resizable').resizable({
maxWidth: max_width,
maxHeight: forms_height
});*/
$("#forms").height(forms_height);
$('#ga_karten_div')
//.css('width', max_width)
.css('max-width', max_width)
//.css('height', forms_height)
.css('max-height', forms_height);
$('.apf-resizable').resizable();
if (window.apf.olmap && window.apf.olmap.map) {
window.apf.olmap.map.updateSize();
// Maximalgrösse des Layertree begrenzen
$('#olmap_layertree_layers').css('max-height', lyt_max_height);
}
if (typeof google !== "undefined" && google.maps && window.apf.gmap && window.apf.gmap.map !== undefined) {
google.maps.event.trigger(window.apf.gmap.map, 'resize');
}
} else {
$("#forms").height('auto');
}
};
window.apf.olmap.blendeOlmapExportieren = function () {
'use strict';
var map_size,
anz_kartenpixel,
tooltip_title;
map_size = window.apf.olmap.map.getSize();
// resolution nicht berücksichtigen - das funktionierte nicht zuverlässig und gab Probleme
anz_kartenpixel = /*window.apf.olmap.map.getView().getResolution() * */map_size[0] * map_size[1];
$('#olmap_exportieren').button();
if (anz_kartenpixel > 500000) {
$('#olmap_exportieren').button("disable");
tooltip_title = 'Karte als png herunterladen<br>Diese Funktion ist inaktiv<br>Um sie zu aktivieren, müssen Sie die Karte verkleinern<br>Packen Sie dazu die untere rechte Ecke und ziehen Sie sie nach oben links';
} else {
$('#olmap_exportieren').button("enable");
tooltip_title = 'Karte als png herunterladen';
}
$("#olmap_exportieren_div").tooltip({
tooltipClass: "tooltip-styling-hinterlegt",
content: tooltip_title
});
};
window.apf.berechneOlmapLayertreeMaxhöhe = function () {
var lyt_max_height;
if ($(window).width() > 1000) {
lyt_max_height = $(window).height() - 115;
} else {
// Spalten sind untereinander
lyt_max_height = 200;
}
return lyt_max_height;
};
(function ($) {
$.fn.hasScrollBar = function () {
return this.get(0).scrollHeight > this.height();
}
})(jQuery);
// setzt die Höhe von textareas so, dass der Text genau rein passt
window.apf.fitTextareaToContent = function (id, maxHeight) {
'use strict';
var text = id && id.style ? id : document.getElementById(id);
if (!text)
return;
/* Accounts for rows being deleted, pixel value may need adjusting */
if (text.clientHeight == text.scrollHeight) {
text.style.height = "30px";
}
var adjustedHeight = text.clientHeight;
if (!maxHeight || maxHeight > adjustedHeight) {
adjustedHeight = Math.max(text.scrollHeight, adjustedHeight);
if (maxHeight)
adjustedHeight = Math.min(maxHeight, adjustedHeight);
if (adjustedHeight > text.clientHeight)
text.style.height = adjustedHeight + "px";
}
};
window.apf.erstelle_ap_liste = function (programm) {
'use strict';
var apliste_erstellt = $.Deferred();
$.ajax({
type: 'get',
url: 'api/v1/apliste/programm=' + programm,
dataType: 'json'
}).done(function (data) {
var html;
html = "<option></option>";
_.each(data, function (ap) {
html += "<option value=\"" + ap.id + "\">" + ap.ap_name + "</option>";
});
$("#ap_waehlen").html(html);
apliste_erstellt.resolve();
});
return apliste_erstellt.promise();
};
window.apf.wähleApListe = function (programm) {
'use strict';
var apliste_gewählt = $.Deferred(),
$ap_waehlen_label = $("#ap_waehlen_label"),
$ap_waehlen = $("#ap_waehlen"),
initiiereAp = require('./modules/initiiereAp');
$ap_waehlen_label.html("Daten werden aufbereitet...");
$ap_waehlen.html("");
$("#ap").hide();
$("#forms").hide();
$('#tree').hide();
$("#suchen").hide();
$("#exportieren_2").hide();
$("#hilfe").hide();
$("#ap_loeschen").hide();
$("#exportieren_1").show();
$ap_waehlen.val("");
initiiereAp();
$.when(window.apf.erstelle_ap_liste(programm))
.then(function () {
var $programm_wahl_checked = $("[name='programm_wahl']:checked");
if ($programm_wahl_checked.attr("id") === "programm_neu") {
$ap_waehlen_label.html("Art für neues Förderprogramm wählen:");
} else if ($programm_wahl_checked.attr("id") === "programm_ap") {
$ap_waehlen_label.html("Aktionsplan wählen:");
} else {
$ap_waehlen_label.html("Artförderprogramm wählen:");
}
$ap_waehlen_label.show();
apliste_gewählt.resolve();
});
return apliste_gewählt.promise();
};
// diese Funktion kann nicht modularisiert werden, weil jstree nicht für node entwickelt wurde!!!!
window.apf.erstelle_tree = function (ApArtId) {
'use strict';
var jstree_erstellt = $.Deferred();
$("#tree").jstree({
"json_data": {
"ajax": {
"url": "api/v1/tree/apId=" + ApArtId,
"progressive_render": true
}
},
"core": {
"open_parents": true, // wird ein node programmatisch geöffnet, öffnen sich alle parents
"strings": { // Deutsche Übersetzungen
"loading": "hole Daten...",
"new_node": "neuer Knoten"
}
},
"ui": {
"select_limit": 1, // nur ein Datensatz kann aufs mal gewählt werden
"selected_parent_open": true, // wenn Code einen node wählt, werden alle parents geöffnet
"select_prev_on_delete": true
},
"search": {
"case_insensitive": true
},
"sort": function (a, b) {
if ($(a).attr("sort") && $(b).attr("sort")) {
return parseInt($(a).attr("sort"), 10) > parseInt($(b).attr("sort"), 10) ? 1 : -1;
}
},
"themes": {
"icons": false
},
"contextmenu": {
"items": window.apf.treeKontextmenu,
"select_node": true
},
"crrm": {
"move": {
"default_position": "first",
"check_move": function (m) {
// hier wird bestimmt, welche drag-drop-Kombinationen zulässig sind
if (m.o.attr("typ") === "pop") {
if (m.r.attr("typ") === "pop") {
return {
after: true,
before: true,
inside: false
};
} else {
return false;
}
} else if (m.o.attr("typ") === "tpop") {
if (m.r.attr("typ") === "tpop") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "pop_ordner_tpop") {
return {
after: false,
before: false,
inside: true
};
} else {
return false;
}
} else if (m.o.attr("typ") === "tpopmassn") {
if (m.r.attr("typ") === "tpopmassn") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_massn") {
return {
after: false,
before: false,
inside: true
};
} else {
return false;
}
} else if (m.o.attr("typ") === "tpopfeldkontr") {
if (m.r.attr("typ") === "tpopfeldkontr") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_feldkontr") {
return {
after: false,
before: false,
inside: true
};
} else {
return false;
}
} else if (m.o.attr("typ") === "tpopfreiwkontr") {
if (m.r.attr("typ") === "tpopfreiwkontr") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_freiwkontr") {
return {
after: false,
before: false,
inside: true
};
} else {
return false;
}
} else if (m.o.attr("typ") === "beob_zugeordnet") {
if (m.r.attr("typ") === "beob_zugeordnet") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_beob_zugeordnet") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_beurteilt") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_beurteilt") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_zuzuordnen") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_zuzuordnen") {
return {
after: true,
before: true,
inside: false
};
} else {
return false;
}
} else if (m.o.attr("typ") === "beob_nicht_beurteilt") {
if (m.r.attr("typ") === "beob_zugeordnet") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_beob_zugeordnet") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_beurteilt") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_beurteilt") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_zuzuordnen") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_zuzuordnen") {
return {
after: true,
before: true,
inside: false
};
} else {
return false;
}
} else if (m.o.attr("typ") === "beob_nicht_zuzuordnen") {
if (m.r.attr("typ") === "beob_zugeordnet") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "tpop_ordner_beob_zugeordnet") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_beurteilt") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_beurteilt") {
return {
after: true,
before: true,
inside: false
};
} else if (m.r.attr("typ") === "ap_ordner_beob_nicht_zuzuordnen") {
return {
after: false,
before: false,
inside: true
};
} else if (m.r.attr("typ") === "beob_nicht_zuzuordnen") {
return {
after: true,
before: true,
inside: false
};
} else {
return false;
}
}
return false;
}
}
},
"types": {
"type_attr": "typ",
"max_children": -2,
"max_depth": -2,
"valid_children": ["ap_ordner_pop", "ap_ordner_apziel", "ap_ordner_erfkrit", "ap_ordner_jber", "ap_ordner_ber", "ap_ordner_beob_nicht_beurteilt", "ap_ordner_beob_nicht_zuzuordnen", "idealbiotop", "ap_ordner_assozarten"],
"types": {
"ap_ordner_pop": {
"valid_children": "pop"
},
"pop": {
"valid_children": ["pop_ordner_tpop", "pop_ordner_popber", "pop_ordner_massnber"],
"new_node": "neue Population"
},
"pop_ordner_tpop": {
"valid_children": "tpop"
},
"tpop": {
"valid_children": ["tpop_ordner_massn", "tpop_ordner_massnber", "tpop_ordner_feldkontr", "tpop_ordner_freiwkontr", "tpop_ordner_tpopber", "tpop_ordner_beob_zugeordnet"],
"new_node": "neue Teilpopulation"
},
"tpop_ordner_massn": {
"valid_children": "tpopmassn"
},
"tpopmassn": {
"valid_children": "none",
"new_node": "neue Massnahme"
},
"tpop_ordner_massnber": {
"valid_children": "tpopmassnber"
},
"tpopmassnber": {
"valid_children": "none",
"new_node": "neuer Massnahmen-Bericht"
},
"tpop_ordner_feldkontr": {
"valid_children": "tpopfeldkontr"
},
"tpopfeldkontr": {
"valid_children": "none",
"new_node": "neue Feldkontrolle"
},
"tpop_ordner_freiwkontr": {
"valid_children": "tpopfreiwkontr"
},
"tpopfreiwkontr": {
"valid_children": "none",
"new_node": "neue Freiwilligen-Kontrolle"
},
"tpop_ordner_tpopber": {
"valid_children": "tpopber"
},
"tpopber": {
"valid_children": "none",
"new_node": "neuer Teilpopulations-Bericht"
},
"tpop_ordner_beob_zugeordnet": {
"valid_children": "beob_zugeordnet"
},
"beob_zugeordnet": {
"valid_children": "none"
},
"pop_ordner_popber": {
"valid_children": "popber"
},
"popber": {
"valid_children": "none",
"new_node": "neuer Populations-Bericht"
},
"pop_ordner_massnber": {
"valid_children": "massnber"
},
"massnber": {
"valid_children": "none",
"new_node": "neuer Massnahmen-Bericht"
},
"ap_ordner_apziel": {
"valid_children": "apzieljahr"
},
"apzieljahr": {
"valid_children": "apziel"
},
"apziel": {
"valid_children": "zielber_ordner",
"new_node": "neues AP-Ziel"
},
"zielber_ordner": {
"valid_children": "zielber"
},
"zielber": {
"valid_children": "none",
"new_node": "neuer Ziel-Bericht"
},
"ap_ordner_erfkrit": {
"valid_children": "erfkrit"
},
"erfkrit": {
"valid_children": "none",
"new_node": "neues Erfolgskriterium"
},
"ap_ordner_jber": {
"valid_children": "jber"
},
"jber": {
"valid_children": "jber_uebersicht",
"new_node": "neuer AP-Bericht"
},
"jber_uebersicht": {
"valid_children": "none",
"new_node": "neue Übersicht zu allen Arten"
},
"ap_ordner_ber": {
"valid_children": "ber"
},
"ber": {
"valid_children": "none",
"new_node": "neuer Bericht"
},
"ap_ordner_beob_nicht_beurteilt": {
"valid_children": "beob_nicht_beurteilt"
},
"beob_nicht_beurteilt": {
"valid_children": "none"
},
"ap_ordner_beob_nicht_zuzuordnen": {
"valid_children": "beob_nicht_zuzuordnen"
},
"beob_nicht_zuzuordnen": {
"valid_children": "none"
},
"idealbiotop": {
"valid_children": "none"
},
"ap_ordner_assozarten": {
"valid_children": "assozarten"
},
"assozarten": {
"valid_children": "none",
"new_node": "neue assoziierte Art"
}
}
},
"plugins" : ["themes", "json_data", "ui", "hotkeys", "search", "contextmenu", "crrm", "types"]
//"plugins" : ["themes", "json_data", "ui", "hotkeys", "search", "contextmenu", "crrm", "dnd", "types"] // dnd ausgeschaltet, weil es Speichern verhindert im letzten Feld vor Klick in Baum
})
.show()
.bind("loaded.jstree", function (event, data) {
var initiiereAp = require('./modules/initiiereAp');
jstree_erstellt.resolve();
window.apf.setzeTreehöhe();
$("#suchen").show();
$("#exportieren_2").show();
$("#exportieren_1").hide();
$("#hilfe").show();
if (window.apf.pop_zeigen) {
$("#tree").jstree("select_node", "[typ='pop']#" + localStorage.pop_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese Pop geöffnet wird
delete window.apf.pop_zeigen;
}
if (window.apf.popber_zeigen) {
$("#tree").jstree("select_node", "[typ='popber']#" + localStorage.popber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese Popber geöffnet wird
delete window.apf.popber_zeigen;
}
if (window.apf.popmassnber_zeigen) {
$("#tree").jstree("select_node", "[typ='popmassnber']#" + localStorage.popmassnber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese popmassnber geöffnet wird
delete window.apf.popmassnber_zeigen;
}
if (window.apf.tpop_zeigen) {
$("#tree").jstree("select_node", "[typ='tpop']#" + localStorage.tpop_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese TPop geöffnet wird
delete window.apf.tpop_zeigen;
}
if (window.apf.tpopfeldkontr_zeigen) {
$("#tree").jstree("select_node", "[typ='tpopfeldkontr']#" + localStorage.tpopfeldkontr_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese tpopfeldkontr geöffnet wird
delete window.apf.tpopfeldkontr_zeigen;
}
if (window.apf.tpopfreiwkontr_zeigen) {
$("#tree").jstree("select_node", "[typ='tpopfreiwkontr']#" + localStorage.tpopfeldkontr_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese tpopfreiwkontr geöffnet wird
delete window.apf.tpopfreiwkontr_zeigen;
}
if (window.apf.tpopmassn_zeigen) {
$("#tree").jstree("select_node", "[typ='tpopmassn']#" + localStorage.tpopmassn_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese tpopmassn geöffnet wird
delete window.apf.tpopmassn_zeigen;
}
if (window.apf.tpopber_zeigen) {
$("#tree").jstree("select_node", "[typ='tpopber']#" + localStorage.tpopber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese tpopber geöffnet wird
delete window.apf.tpopber_zeigen;
}
if (window.apf.beob_zugeordnet_zeigen) {
$("#tree").jstree("select_node", "#beob" + localStorage.beob_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese beob_zugeordnet geöffnet wird
delete window.apf.beob_zugeordnet_zeigen;
}
if (window.apf.tpopmassnber_zeigen) {
$("#tree").jstree("select_node", "[typ='tpopmassnber']#" + localStorage.tpopmassnber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese tpopmassnber geöffnet wird
delete window.apf.tpopmassnber_zeigen;
}
if (window.apf.apziel_zeigen) {
$("#tree").jstree("select_node", "[typ='apziel']#" + localStorage.apziel_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese apziel geöffnet wird
delete window.apf.apziel_zeigen;
}
if (window.apf.zielber_zeigen) {
$("#tree").jstree("select_node", "[typ='zielber']#" + localStorage.zielber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese zielber geöffnet wird
delete window.apf.zielber_zeigen;
}
if (window.apf.erfkrit_zeigen) {
$("#tree").jstree("select_node", "[typ='erfkrit']#" + localStorage.erfkrit_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese erfkrit geöffnet wird
delete window.apf.erfkrit_zeigen;
}
if (window.apf.jber_zeigen) {
$("#tree").jstree("select_node", "[typ='jber']#" + localStorage.jber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese jber geöffnet wird
delete window.apf.jber_zeigen;
}
if (window.apf.jber_übersicht_zeigen) {
$("#tree").jstree("select_node", "[typ='jber_uebersicht']#" + localStorage.jber_uebersicht_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese jber_uebersicht geöffnet wird
delete window.apf.jber_übersicht_zeigen;
}
if (window.apf.ber_zeigen) {
$("#tree").jstree("select_node", "[typ='ber']#" + localStorage.ber_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese ber geöffnet wird
delete window.apf.ber_zeigen;
}
if (window.apf.idealbiotop_zeigen) {
$("#tree").jstree("select_node", "[typ='idealbiotop']#" + localStorage.idealbiotop_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese idealbiotop geöffnet wird
delete window.apf.idealbiotop_zeigen;
}
if (window.apf.assozarten_zeigen) {
$("#tree").jstree("select_node", "[typ='assozarten']#" + localStorage.assozarten_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese assozarten geöffnet wird
delete window.apf.assozarten_zeigen;
}
if (window.apf.beob_nicht_beurteilt_zeigen) {
$("#tree").jstree("select_node", "#beob" + localStorage.beob_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese beob geöffnet wird
delete window.apf.beob_nicht_beurteilt_zeigen;
}
if (window.apf.beob_nicht_zuzuordnen_zeigen) {
$("#tree").jstree("select_node", "#beob" + localStorage.beob_id);
// diese Markierung entfernen, damit das nächste mal nicht mehr diese beob geöffnet wird
delete window.apf.beob_nicht_zuzuordnen_zeigen;
}
if (window.apf.ap_zeigen) {
initiiereAp();
// diese Markierung entfernen, damit das nächste mal nicht mehr dieser AP geöffnet wird
delete window.apf.ap_zeigen;
}
})
// auch auf Mobilgeräten soll das Kontextmenü zugänglich sein!
.hammer().bind("hold doubletap", function (event) {
// auf PC's verhindern: Menu erscheint sonst beim Scrollen
if ($(window).width() < 1000) {
setTimeout(function () {
$("#tree").jstree('get_selected').children('a').trigger('contextmenu');
}, 500);
}
})
.bind("select_node.jstree", function (e, data) {
var node,
initiiere_beob = require('./modules/i