UNPKG

apflora

Version:

Aktionsplan Flora Kt. Zürich

1,170 lines (1,132 loc) 492 kB
// 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