"
$(entry).append(tableedit);
$("#tablecontent").append(entry);
$.each(ret.data, function(i, item) {
setSingleData(item, urlarray, i, url);
});
}
}
});
if(url.searchParams.has("searchkey")){
var searchkey = url.searchParams.get("searchkey").replace("/","");
$('[name="' + searchkey +'"]').val(url.searchParams.get("searchterm").replace("/",""));
$('[name="' + searchkey +'"]').keyup();
}
if(url.searchParams.has("sendListBack")){
$('body').append('Sende Liste');
}
/*
//Single move
if(urlarray.includes("move")){
$( "#data" ).prepend('Store Table');
$( "#tablecontent" ).sortable({
handle: '.handle',
change: function (event, ui) {
$( "#storesortedtablebutton" ).show();
}
});
}*/
if(urlarray.includes("move") || urlarray.includes("move")){
$( "#data" ).prepend('Store Table');
}
//move single or multiple items (buttonpress)
if(urlarray.includes("move")){
new Sortable(tablecontent, {
handle: '.handle',
multiDrag: true, // Enable multi-drag
selectedClass: 'sortable-selected', // The class applied to the selected items
fallbackTolerance: 3, // So that we can select items on mobile
animation: 150,
avoidImplicitDeselect: false,
onSelect: function(/**Event*/evt) {
$( 'tr[ grouping="' + $(evt.item).attr("grouping") + '"]' ).each(function( index ) {
console.log( index + ":select " + $( this ).text() );
Sortable.utils.select($(this)[0]);
});
},
onDeselect: function(/**Event*/evt) {
$( 'tr[ grouping="' + $(evt.item).attr("grouping") + '"]' ).each(function( index ) {
console.log( index + ":deselect " + $( this ).text() );
Sortable.utils.deselect($(this)[0]);
});
},
onEnd: function (/**Event*/evt) { //deselect all on end
$( 'tr' ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
Sortable.utils.deselect($(this)[0]);
});
},
onSort: function (/**Event*/evt) { //on any change show store table button
$( "#storesortedtablebutton" ).show();
}
});
}
if(urlarray.includes("move2")){
new Sortable(tablecontent, {
handle: '.handle2',
multiDrag: true, // Enable multi-drag
selectedClass: 'sortable-selected', // The class applied to the selected items
fallbackTolerance: 3, // So that we can select items on mobile
animation: 150,
avoidImplicitDeselect: false,
onSelect: function(/**Event*/evt) {
$( 'tr[ grouping2="' + $(evt.item).attr("grouping2") + '"]' ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
Sortable.utils.select($(this)[0]);
});
},
onDeselect: function(/**Event*/evt) {
$( 'tr[ grouping2="' + $(evt.item).attr("grouping2") + '"]' ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
Sortable.utils.deselect($(this)[0]);
});
},
onEnd: function (/**Event*/evt) { //deselect all on end
$( 'tr' ).each(function( index ) {
console.log( index + ": " + $( this ).text() );
Sortable.utils.deselect($(this)[0]);
});
},
onSort: function (/**Event*/evt) { //on any change show store table button
$( "#storesortedtablebutton" ).show();
}
});
}
/*
$( "#tablecontent" ).sortable({
multiDrag: true, // Enable the plugin
selectedClass: "sortable-selected", // Class name for selected item
multiDragKey: null, // Key that must be down for items to be selected
avoidImplicitDeselect: true, // true - if you don't want to deselect items on outside click
// Called when an item is selected
onSelect: function(/**Event*/ /*evt) {
evt.item // The selected item
console.log(evt.item);
},
// Called when an item is deselected
onDeselect: function(/**Event*/ /*evt) {
evt.item // The deselected item
}
});
}
*/
//$( "#tablecontent" ).on( "sortstart", function( event, ui ) {console.log("start" + ui.item.html())} );
}
function collectdata2sendBack(){
console.log("sending");
var sendback = [];
$('[name="pkvalues"]:visible').each(function(){
sendback.push($(this).html());
});
sendDataElementBack(sendback)
}
function searchtable(key) {
// Declare variables
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("searchtable" +key);
filter = input.value.toUpperCase();
table = document.getElementById("tablecontent");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[key];
if (td) {
txtValue = td.textContent || td.innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("tablecontent");
switching = true;
// Set the sorting direction to ascending:
dir = "asc";
/* Make a loop that will continue until
no switching has been done: */
while (switching) {
// Start by saying: no switching is done:
switching = false;
rows = table.rows;
/* Loop through all table rows (except the
first, which contains table headers): */
for (i = 1; i < (rows.length - 1); i++) {
// Start by saying there should be no switching:
shouldSwitch = false;
/* Get the two elements you want to compare,
one from current row and one from the next: */
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
/* Check if the two rows should switch place,
based on the direction, asc or desc: */
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
// If so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
// If so, mark as a switch and break the loop:
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
/* If a switch has been marked, make the switch
and mark that a switch has been done: */
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
// Each time a switch is done, increase this count by 1:
switchcount ++;
} else {
/* If no switching has been done AND the direction is "asc",
set the direction to "desc" and run the while loop again. */
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
function deleteDataElement(dataelement){
console.log("Löschen")
console.log(dataelement)
$.ajax({
type: "DELETE",
url: location.protocol + '//' + location.host + location.pathname,
contentType: "application/json",
headers: {"content-id": "deleteByID"},
data: JSON.stringify(dataelement),
success: function(ret) {
getAllData();
}
});
}
//if used in frames send row to frames
function sendDataElementBack(dataelement, type){
parent.sendJson(window.name,{ type: type, dataelement: dataelement })
//deleteDataElement(dataelement.__orderID__)
}
//retrieves ID´s in current order and sends back 2 server
//security, in case an id got removed it is not retrieved, in case an id got added it will still be added
//server does the following: looks for ID and sets the order to the current order we sent,
//in case the id is not found nothing happens (entry was removed during sorting by someone else)
//in case another ID is in the db that was added while we sort, the id will remain (maybe at different position)
function storesortedtable(){
var alldata = [];
alldata.entry = entry;
$( ".tableentry" ).each(function( index ) {
alldata.push($( this ).attr("id"));
});
$.LoadingOverlay("show");
$.ajax({
type: "PUT",
url: location.protocol + '//' + location.host + location.pathname,
headers: {"content-id": "storesortedtable"},
contentType: "application/json",
data: JSON.stringify(alldata),
success: function(ret) {
$.LoadingOverlay("hide");
getAllData();
}
});
}
function move(from, to){
$.ajax({
type: "PUT",
url: location.protocol + '//' + location.host + location.pathname,
headers: {"content-id": "move"},
contentType: "application/json",
data: JSON.stringify({"From": from, "To": to}),
success: function(ret) {
getAllData();
}
});
}
function setSingleData(singleData, urlarray, i = -1, url = ""){
container = document.getElementById("tablecontent");
entry = document.createElement("tr");
$(entry).attr("id",singleData.__orderID__);
$(entry).attr("class","tableentry");
if(urlarray.includes("move")){
if(url.searchParams.has("group1column")){
$(entry).attr("grouping","Grp1" + JSON.parse(singleData.alldata)[url.searchParams.get("group1column").replace("/","")]);
}
}
if(urlarray.includes("move2")){
if(url.searchParams.has("group2column1") & url.searchParams.has("group2column2")){
$(entry).attr("grouping2","Grp2" + JSON.parse(singleData.alldata)[url.searchParams.get("group2column1").replace("/","")]+ "_" + JSON.parse(singleData.alldata)[url.searchParams.get("group2column2").replace("/","")]);
}
}
/*
if(urlarray.includes("move")){
$(entry).attr("draggable","true");
$(entry).attr("ondragstart","start()");
$(entry).attr("ondragover","dragover()");
}
*/
if(url.searchParams.has("colorize")){
if(i == 0){
var tableheader = url.searchParams.has("colorize") ? url.searchParams.get("colorize").replace("/","") : "";
var colorizestart = url.searchParams.has("colorize2") ? url.searchParams.get("colorizestart").replace("/","") : "";
var colorizecol = url.searchParams.has("colorize2") ? url.searchParams.get("colorizecol").replace("/","") : "";
var table2header = url.searchParams.has("colorize2") ? url.searchParams.get("colorize2").replace("/","") : "";
var colorize2start = url.searchParams.has("colorize2start") ? url.searchParams.get("colorize2start").replace("/","") : "";
var colorize2col = url.searchParams.has("colorize2col") ? url.searchParams.get("colorize2col").replace("/","") : "";
if(JSON.parse(singleData.alldata).hasOwnProperty(tableheader)){
if(JSON.parse(singleData.alldata)[tableheader].startsWith(colorizestart)){
$(entry).attr("style","background-color: #" + colorizecol);
}
}
if(JSON.parse(singleData.alldata).hasOwnProperty(table2header)){
if(JSON.parse(singleData.alldata)[table2header].startsWith(colorize2start)){
$(entry).attr("style","background-color: #" + colorize2col);
}
}
}
}
tableentry = "";
if(urlarray.includes("aktivieren")){
tableentry += "
"
}
if(urlarray.includes("move")){
var name = "⇅";
if(url.searchParams.has("group1name")){
name = url.searchParams.get("group1name").replace("/","")
}
tableentry += '
'
}
if(urlarray.includes("move2")){
var name = "⇅";
if(url.searchParams.has("group2name")){
name = url.searchParams.get("group2name").replace("/","")
}
tableentry += '