Browse Source

Added urls that can be placed within the dashboard

Manuel Gall 2 years ago
parent
commit
c8f65fe530
4 changed files with 3796 additions and 3 deletions
  1. 8 0
      dashboard
  2. 4 0
      dashboard.xml
  3. 3709 0
      defaultContent/js/Sortable.js
  4. 75 3
      defaultContent/js/ui.js

+ 8 - 0
dashboard

@@ -409,6 +409,13 @@ class DeleteNext < Riddl::Implementation
 end 
 
 
+class DeleteAll < Riddl::Implementation
+  def response
+  
+    File.unlink(File.join('data',@r.last,'data.db')) rescue nil
+    nil
+  end
+end 
 
 
 
@@ -490,6 +497,7 @@ server = Riddl::Server.new(File.join(__dir__,'/dashboard.xml'), :host => 'localh
       run Delete if delete 'deleteMsg'
       run DeleteID if delete 'deleteByID'
       run DeletePK if delete 'deletePK'
+      run DeleteAll if delete 'deleteAll'
       run DeleteIDDirect if delete
       
       

+ 4 - 0
dashboard.xml

@@ -48,6 +48,9 @@
       <parameter name="primarykey" type="string"/>
     </optional>
   </message>  
+  <message name="deleteAll">
+    <parameter name="deleteAll" type="string"/>
+  </message>
   <message name="ui">
     <parameter name="ui" mimetype="text/html"/>
   </message>
@@ -111,6 +114,7 @@
       <delete in='deleteMsg' />
       <delete in='deleteByID' />
       <delete in='deletePK' />
+      <delete in='deleteAll' />
       <delete />
       
       <resource relative="\d+">

File diff suppressed because it is too large
+ 3709 - 0
defaultContent/js/Sortable.js


+ 75 - 3
defaultContent/js/ui.js

@@ -5,19 +5,28 @@ function getAllData(){
   
 
 
+
   var url_string = window.location.href
   var url = new URL(url_string);
   if(!url.searchParams.has("display")){
-    var urlarray = ["aktivieren","aktivierenPrio","stornieren","moveTop","moveX","edit"]
+    var urlarray = ["aktivieren","aktivierenPrio","stornieren","moveTop","moveX","move","edit"]
   }else{
 
     var urlparams = url.searchParams.get("display").replace("/","");
     var urlarray = urlparams.split(",");
   }
+  
+  
+  if(url.searchParams.has("menu")){
+    console.log("MENU");
+    menuentries = url.searchParams.get("menu").split(",")
+    $( "#data" ).append("<a class='ontop'href='" + menuentries[1] + "' target='_blank'>" + menuentries[0] +"</a>" );
+  }
 
   $.ajax({
     type: "GET",
     url: 'data.db',
+    async: false,
     success: function(ret) {      
       if(!$(ret.data).length == 0){
         container = document.getElementById("data");
@@ -38,7 +47,7 @@ function getAllData(){
           tablehead += "<th class='editable'>" + Object.keys(JSON.parse(ret.data[0].alldata))[i]
           
           if(url.searchParams.has("showfilter")){
-            tablehead +=  '<br><input type="text" id="searchtable' + ++joinkey +'" onkeyup="searchtable(' + joinkey + ')" placeholder="Search for ' + Object.keys(JSON.parse(ret.data[0].alldata))[i] + '">'
+            tablehead +=  '<br><input styl="width: 100%;" type="text" id="searchtable' + ++joinkey +'" onkeyup="searchtable(' + joinkey + ')" placeholder="Search for ' + Object.keys(JSON.parse(ret.data[0].alldata))[i] + '" name="' +Object.keys(JSON.parse(ret.data[0].alldata))[i] + '">'
           }
          tablehead += '</th>'
         }
@@ -78,7 +87,60 @@ function getAllData(){
     }
     
   });
+  
+  
+  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('<a onclick="collectdata2sendBack()" href="#">Sende Liste</a>');
+
+    
+  }
+  
+  /*
+  new Sortable(document.getElementById('data'),{
+	  handle: '.handle',
+	  animation: 150
+  });
+  */
+  
+}
+
+function collectdata2sendBack(){
+  console.log("sending");
+  var sendback = [];
+  $('[name="pkvalues"]:visible').each(function(){
+    sendback.push($(this).html());
+  });
+  
+  sendDataElementBack(sendback)
+}
+
+//https://www.therogerlab.com/sandbox/pages/how-to-reorder-table-rows-in-javascript?s=0ea4985d74a189e8b7b547976e7192ae.4122809346f6a15e41c9a43f6fcb5fd5
+var row;
+
+function start(){  
+  row = event.target; 
 }
+function dragover(){
+  var e = event;
+  e.preventDefault(); 
+    
+  let children= Array.from(e.target.parentNode.parentNode.children);
+  
+  if(children.indexOf(e.target.parentNode)>children.indexOf(row))
+    e.target.parentNode.after(row);
+  else
+    e.target.parentNode.before(row);
+}
+
 function searchtable(key) {
   console.log("AAA");
   // Declare variables
@@ -204,6 +266,13 @@ function setSingleData(singleData, urlarray, i = -1, url = ""){
   $(entry).attr("class","tableentry");
   
   
+  if(urlarray.includes("move")){
+    $(entry).attr("draggable","true");
+    $(entry).attr("ondragstart","start()");
+    $(entry).attr("ondragover","dragover()");
+  }
+  
+  
   
   
   if(url.searchParams.has("colorize")){
@@ -245,13 +314,16 @@ function setSingleData(singleData, urlarray, i = -1, url = ""){
   if(urlarray.includes("moveX")){
     tableentry += "<td><a onclick='move(" + singleData.__orderID__ +",7)' href='#'>MovetoX</a></td>"
   }
+  if(urlarray.includes("move")){
+    tableentry += '<td class="handle"><a href="#">⇅</a></td>'
+  }
   if(urlarray.includes("edit")){
     tableentry += "<td class='edit'><a onclick='edit(" + singleData.__orderID__ +")' href='#'>Edit</a></td>"
   }
 
 
   if(singleData.hasOwnProperty('pkvalue')){
-    tableentry += "<td>" + singleData.pkvalue + "</td>";
+    tableentry += "<td name='pkvalues'>" + singleData.pkvalue + "</td>";
   }
   tableentry += "<td class='editable'>" +  Object.values(JSON.parse(singleData.alldata)).join("</td><td class='editable'>")  + "</td>"
   $(entry).html(tableentry);