Initial commit
This commit is contained in:
502
script.js
Normal file
502
script.js
Normal file
@@ -0,0 +1,502 @@
|
||||
function distinctlyInput(input) {
|
||||
// Wenn das aktuell gewählte Feld gefüllt wird
|
||||
if ($('#distinctlyInput' + input).val().length >= 1) {
|
||||
input++; // Fahre fort mit dem nächsten Feld
|
||||
if ($('#distinctlyInput' + input).length) {
|
||||
$('#distinctlyInput' + input).focus().select(); // Fokus auf das nächste Feld setzen
|
||||
}
|
||||
}
|
||||
// Wenn das aktuell gewählte Feld geleert wird
|
||||
else if ($('#distinctlyInput' + input).val().length === 0 && input > 1) {
|
||||
input--; // Gehe zum vorherigen Feld
|
||||
$('#distinctlyInput' + input).focus().select(); // Fokus auf das vorherige Feld setzen
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function pageload(view, meta) { // Funktion zum Laden des Inhalts
|
||||
|
||||
secondaryNavigation("close"); // Schließe das Stecker-Menü
|
||||
page = window.location.hash.substr(1); // Hole die aufzurufende Seite über den URL-Hash (#xy)
|
||||
|
||||
if(page.length === 0) {
|
||||
|
||||
page = "index";
|
||||
|
||||
}
|
||||
|
||||
var loadingTimer = setTimeout(function() {
|
||||
$("#content").addClass("loading");
|
||||
message("Die Seite befindet sich im Aufbau...");
|
||||
}, 2000); // 2 Sekunden warten
|
||||
|
||||
|
||||
$.ajax({
|
||||
url: "/pagecontent/" + page + ".php?view=" + view + "&meta=" + meta, // Pfad der zu ladenden Seite aufbauen
|
||||
error: function(jqXHR, textStatus, errorThrown) { // Wenn ein Fehler bei der Anfrage auftritt (z.B. Netzwerkprobleme)
|
||||
|
||||
message("Es ist ein unerwarteter Fehler aufgetreten. Der Seiteninhalt konnte nicht geladen werden!");
|
||||
|
||||
|
||||
},
|
||||
success: function(result){ // Abfrage erfolgreich
|
||||
clearTimeout(loadingTimer);
|
||||
$("#content").removeClass("loading");
|
||||
$("#content").html(result);
|
||||
$("div.navigation>div").removeClass("active"); // Alle Buttons inaktiv
|
||||
$("#" + page).addClass("active"); // Button mit Klasse "page" wird aktiv geschaltet (im Menü)
|
||||
}});
|
||||
}
|
||||
|
||||
function checkForReload(page) {
|
||||
|
||||
page_hash = window.location.hash.substr(1);
|
||||
|
||||
if(page_hash == page) {
|
||||
pageload();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function checkConnection(last) { // Verbindunsstatus überwachen // Last ist der letzte gemessene Netzwerkzustand
|
||||
$.ajax({
|
||||
url: "/actions/connection-test.php?a=" + Date.now(), // verändere idr URL leicht, damit der Server nicht cached
|
||||
timeout: 5000, // maximale Wartezeit sind 5 Sekunden; alles darüber wird als zu unzuverlässig angesehen
|
||||
error: function(jqXHR, textStatus, errorThrown) { // Wenn ein Fehler bei der Anfrage auftritt (z.B. Netzwerkprobleme)
|
||||
|
||||
$(".navigation-footer").html('<div class="connection-indicator false"></div>Keine Verbindung<img class="infrago-logo" src="/vendor/DB_InfraGo_logo_red_black_100px_rgb.svg" width="100%" />');
|
||||
console.error("Fehler bei der Anfrage:", textStatus, errorThrown);
|
||||
|
||||
if (last != 1) { // letzter Zustand war "online" // Vermeiden von ständigen Nachrichten
|
||||
message("Keine Verbindung"); // Werfe eine Nachricht
|
||||
}
|
||||
|
||||
setTimeout(function() { // nächste Prüfung in 5 Sekunden
|
||||
checkConnection(1); // der Status offline wird mit übertragen
|
||||
}, 5000);
|
||||
},
|
||||
success: function(data) { // Verbindung iO
|
||||
setTimeout(function() { // nächste Prüfung in 5 Sekunden
|
||||
checkConnection();
|
||||
}, 5000);
|
||||
|
||||
if (data == 'true') { // der Rückgabewert ist true, alles IO
|
||||
$(".navigation-footer").html('<div class="connection-indicator true"></div>Verbunden<img class="infrago-logo" src="/vendor/DB_InfraGo_logo_red_black_100px_rgb.svg" width="100%" />');
|
||||
if (last == 1) { // war der letzte Status noch "offline", wird der Nutzer benachrichtigt
|
||||
message("Verbindung wiederhergestellt!");
|
||||
}
|
||||
} else { // außergewöhnlicher Fehler, aber möglich
|
||||
message("Keine Verbindung"); // Verbindung dennoch unbrauchbar, wenn keine Daten geladen werden
|
||||
$(".navigation-footer").html('<div class="connection-indicator false"></div>Keine Verbindung<img class="infrago-logo" src="/vendor/DB_InfraGo_logo_red_black_100px_rgb.svg" width="100%" />');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var pinRowNumber = 0;
|
||||
|
||||
|
||||
function connectPins(startPoint, endPoint, origin) {
|
||||
|
||||
|
||||
const encoded = $('#bridge-editor-img').attr("meta");
|
||||
const decoded = decodeURIComponent(encoded);
|
||||
let myArray = JSON.parse(decoded);
|
||||
|
||||
|
||||
console.log(myArray);
|
||||
|
||||
length = myArray.length;
|
||||
lengthNext = length + 1;
|
||||
lengthPrev = length -1 ;
|
||||
|
||||
|
||||
myArray[length] = [];
|
||||
myArray[length][0] = startPoint;
|
||||
myArray[length][1] = endPoint;
|
||||
$(".pin-table").append('<div class="row" id="pinRow_' + length + '"><span>' + startPoint + '</span><img src="/vendor/icons/data-transfer-both.svg" height="30px"/><span>' + endPoint + '</span><img style="transform: rotate(0deg); padding-top: 17.5px;" src="/vendor/icons/trash.svg" onclick="removePin(' + length + ')" height="30px"/></div>');
|
||||
|
||||
|
||||
|
||||
var myJsonStringURL = encodeURI(JSON.stringify(myArray));
|
||||
|
||||
|
||||
$('#bridge-editor-img').attr("meta", myJsonStringURL);
|
||||
|
||||
|
||||
$('#bridge-editor-img').attr("style", "background-image: url('../stecker.php?data=" + myJsonStringURL + "')");
|
||||
|
||||
|
||||
$('#bridge-editor-edit').attr("value", pinRowNumber);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
function removePin(row) {
|
||||
const encoded = $('#bridge-editor-img').attr("meta");
|
||||
const decoded = decodeURIComponent(encoded);
|
||||
let myArray = JSON.parse(decoded);
|
||||
|
||||
myArray[row] = [];
|
||||
myArray[row][0] = "";
|
||||
myArray[row][1] = "";
|
||||
|
||||
$("#pinRow_" + row).hide();
|
||||
|
||||
var myJsonStringURL = encodeURI(JSON.stringify(myArray));
|
||||
|
||||
|
||||
$('#bridge-editor-img').attr("meta", myJsonStringURL);
|
||||
|
||||
|
||||
$('#bridge-editor-img').attr("style", "background-image: url('../stecker.php?data=" + myJsonStringURL + "')");
|
||||
|
||||
|
||||
$('#bridge-editor-edit').attr("value", pinRowNumber);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function programBridge(number) { // Checkboxen für die Auswahl der Brücken im Programm-Editor
|
||||
|
||||
let myArray = []; // initialisiere Array
|
||||
|
||||
index = 0;
|
||||
|
||||
for (i = 0; i <= number; i++) { // iteriere durch alle Checkboxen
|
||||
if ($('#programSelect_' + i).is(":checked")) { // wenn gesetzt
|
||||
myArray[index] = $('#programSelect_' + i).val(); // Hänge die Brücken-ID dem Programm an
|
||||
index++;
|
||||
}
|
||||
}
|
||||
var myJsonString = JSON.stringify(myArray); // kreiere URL
|
||||
|
||||
$('#program-editor-img').attr("src", "stecker.php?translate=true&data=" + myJsonString); // aktualisiere das Bild
|
||||
console.log("OK");
|
||||
|
||||
}
|
||||
|
||||
function excludeBridge(number) { // Checkboxen für die Auswahl der Brücken im Programm-Editor
|
||||
|
||||
let myArray = []; // initialisiere Array
|
||||
let myArraySubtrahend = []; // initialisiere Array
|
||||
|
||||
index = 0;
|
||||
indexSubtrahend = 0;
|
||||
|
||||
for (i = 0; i < number; i++) { // iteriere durch alle Checkboxen
|
||||
if ($('#programSelect_' + i).is(":checked")) { // wenn gesetzt
|
||||
myArray[index] = JSON.parse($('#programSelect_' + i).val());
|
||||
index++;
|
||||
}
|
||||
else {
|
||||
myArraySubtrahend[indexSubtrahend] = JSON.parse($('#programSelect_' + i).val());
|
||||
indexSubtrahend++;
|
||||
}
|
||||
}
|
||||
var myJsonString = JSON.stringify(myArray); // kreiere URL
|
||||
var myJsonStringSubtrahend = JSON.stringify(myArraySubtrahend); // kreiere URL
|
||||
|
||||
|
||||
$('#result-editor-result').attr("src", "stecker.php?data=" + myJsonString); // aktualisiere das Bild
|
||||
|
||||
|
||||
$('#database-bridges-hidden').attr("value", encodeURI(myJsonStringSubtrahend));
|
||||
|
||||
|
||||
console.log("OK");
|
||||
|
||||
}
|
||||
|
||||
|
||||
function search(page,special) { // Datenbanksuche
|
||||
|
||||
value = $('#database-search-term').val(); // Suchbegriff, wenn die Datenbank durchsucht wird
|
||||
|
||||
if(page == 'results') {
|
||||
if (special == "x") { // die Vorschläge werden ignoriert
|
||||
value = ""; // Lösche Eingabe virtuell
|
||||
}
|
||||
}
|
||||
|
||||
$.get("/pagecontent/database-search.php", {
|
||||
meta: value, // Suchbegriff
|
||||
view: page // je nachdem, von wo aus die Suche ausgelöst wurde
|
||||
},
|
||||
function(data, status) {
|
||||
if (status == "success") {
|
||||
if(page == 'results') { // je nachdem, von wo aus die Suche ausgelöst wurde, anderen Container verändern
|
||||
$("div.search-container div.results").html(data);
|
||||
}
|
||||
if(page == 'program') {
|
||||
$("div.inventory-table").html(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function save(page, action, meta) { // prinzipiell gleiche Funktion wie getcontent, jedoch mit Abfragen von JS-Werten
|
||||
|
||||
suppress_page_reload = 0;
|
||||
|
||||
if (page == "bridge-editor") {
|
||||
|
||||
if (action == "edit" || action == "add") {
|
||||
|
||||
number_entry = $('#bridge-editor-edit').val(); // von PHP fixierter Wert (Anzahl der zu Beginn vorhandenen Felder)
|
||||
|
||||
let myArray = {}; // Initialisiere myArray als Objekt
|
||||
|
||||
|
||||
const encoded = $('#bridge-editor-img').attr("meta");
|
||||
const decoded = decodeURIComponent(encoded);
|
||||
myArray["pins"] = JSON.parse(decoded);
|
||||
|
||||
if (action == "add") { // wird die Brücke neu angelegt, muss ein Name gewählt werden
|
||||
myArray["name"] = prompt("Bitte noch einen Namen festlegen (nur Zahlen):");
|
||||
}
|
||||
|
||||
|
||||
var myJsonString = JSON.stringify(myArray); // verpacke alle Pin-Brücken als JSON
|
||||
|
||||
|
||||
meta = myJsonString;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (page == "program-editor") {
|
||||
|
||||
if (action == "edit" || action == "add") {
|
||||
|
||||
|
||||
|
||||
let myArray = {}; // Initialisiere als leeres, multidimensionales, indexiertes Array
|
||||
myArray["bridges"] = []; // Initialisiere als leeres Array
|
||||
|
||||
index = 0;
|
||||
|
||||
for (i = 0; i <= meta; i++) {
|
||||
if ($('#programSelect_' + i).is(":checked")) {
|
||||
myArray["bridges"][index] = $('#programSelect_' + i).val();
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (action == "add") {
|
||||
myArray["programID"] = [];
|
||||
for (i = 0; i <= 4; i++) {
|
||||
j = i + 1;
|
||||
myArray["programID"][i] = $('#distinctlyInput' + j).val().toUpperCase();
|
||||
}
|
||||
}
|
||||
|
||||
myArray["programDescription"] = $('#program-description').val();
|
||||
|
||||
|
||||
|
||||
console.log(myArray);
|
||||
|
||||
var myJsonString = JSON.stringify(myArray);
|
||||
console.log(myJsonString); // Zeigt die JSON-Ausgabe in der Konsole an
|
||||
|
||||
meta = myJsonString;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (page == "inventory" && action == "add") {
|
||||
|
||||
|
||||
let myArray = {};
|
||||
myArray["name"] = $('#database-search-term').val();
|
||||
|
||||
myArray["bridges-hidden"] = $('#database-bridges-hidden').val();
|
||||
myArray["special"] = $('#database-special').val();
|
||||
|
||||
|
||||
myArray["programCache"] = [];
|
||||
for (i = 0; i <= 4; i++) {
|
||||
j = i + 1;
|
||||
myArray["programCache"][i] = $('#distinctlyInput' + j).val().toUpperCase();
|
||||
}
|
||||
|
||||
console.log(myArray);
|
||||
|
||||
var myJsonString = JSON.stringify(myArray);
|
||||
console.log(myJsonString); // Zeigt die JSON-Ausgabe in der Konsole an
|
||||
|
||||
meta = myJsonString;
|
||||
|
||||
suppress_page_reload = 1;
|
||||
|
||||
|
||||
}
|
||||
|
||||
console.log("/actions/" + page + ".php?action=" + action + "&meta=" + meta);
|
||||
|
||||
$.get("/actions/" + page + ".php", {
|
||||
action: action,
|
||||
meta: meta
|
||||
|
||||
},
|
||||
function(data, status) {
|
||||
if (status == "success") {
|
||||
data = JSON.parse(data);
|
||||
if (data[0] == true) {
|
||||
if (suppress_page_reload != 1) {
|
||||
window.location.href = "#" + page;
|
||||
pageload();
|
||||
}
|
||||
|
||||
message(data[1]);
|
||||
} else {
|
||||
message(data[1]);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function secondaryNavigation(animation, content) {
|
||||
|
||||
|
||||
|
||||
|
||||
if (animation == "open") {
|
||||
|
||||
|
||||
$.get("/pagecontent/plug-select.php", {
|
||||
|
||||
|
||||
},
|
||||
function(data, status) {
|
||||
if (status == "success") {
|
||||
if (data != 'false') {
|
||||
$("#navigation-secondary").css("left", "250px");
|
||||
$(".navigation-header").attr("onclick", "secondaryNavigation('close','plug-select')");
|
||||
setTimeout(function() {
|
||||
$("#navigation-secondary").html(data);
|
||||
console.log(data);
|
||||
}, 200);
|
||||
} else {
|
||||
window.location.href = "#";
|
||||
|
||||
alert("Die Inhalte konnten nicht abgerufen werden. Vergewissern Sie sich, dass Sie mit dem WLAN-Netzwerk verbunden sind und laden Sie bei Bedarf die Seite neu.");
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
$("#navigation-secondary").css("left", "-250px");
|
||||
$(".navigation-header").attr("onclick", "secondaryNavigation('open','plug-select')");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function changeSettings(type, value, meta) {
|
||||
|
||||
$.get("/actions/save-settings.php", {
|
||||
type: type,
|
||||
value: value,
|
||||
meta: meta
|
||||
},
|
||||
function(data, status) {
|
||||
if (status == "success") {
|
||||
if (data == 'true') {
|
||||
applySettings(type);
|
||||
pageload();
|
||||
} else {
|
||||
window.location.href = '#index';
|
||||
pageload();
|
||||
|
||||
alert("Die Inhalte konnten nicht abgerufen werden. Vergewissern Sie sich, dass Sie mit dem WLAN-Netzwerk verbunden sind und laden Sie bei Bedarf die Seite neu.");
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function applySettings(type) {
|
||||
|
||||
secondaryNavigation('close');
|
||||
|
||||
$.get("/actions/apply-settings.php", {
|
||||
type: type
|
||||
},
|
||||
function(data, status) {
|
||||
if (status == "success") {
|
||||
if (data != 'false') {
|
||||
|
||||
if (type == "plug") {
|
||||
|
||||
$(".navigation-header>div").html(data);
|
||||
}
|
||||
} else {
|
||||
window.location.href = "#";
|
||||
|
||||
alert("Die Inhalte konnten nicht abgerufen werden. Vergewissern Sie sich, dass Sie mit dem WLAN-Netzwerk verbunden sind und laden Sie bei Bedarf die Seite neu.");
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
function message(content) {
|
||||
$("#message-box").html(content);
|
||||
$("#message-box").css("display", "block");
|
||||
setTimeout(function() {
|
||||
$("#message-box").css("transform", "translateY(0)");
|
||||
}, 50);
|
||||
setTimeout(function() {
|
||||
setTimeout(function() {
|
||||
$("#message-box").css("display", "none");
|
||||
}, 500);
|
||||
$("#message-box").css("transform", "translateY(calc(100% + 5px))");
|
||||
}, 3000);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$(window).bind('beforeunload', function() {
|
||||
$("#warning").css("display", "block");
|
||||
return 'Are you sure you want to leave?';
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user