diff options
author | tomsmeding <tom.smeding@gmail.com> | 2019-09-18 17:08:15 +0200 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2019-09-18 17:08:15 +0200 |
commit | 2e2f642cf6144cbc84bff0094d34ab40de6a4b11 (patch) | |
tree | 3d1eaa233a8a86657c7c7f21c6662328e67862c3 /modules/lijst | |
parent | 3b5d11ed921f8f6cc4ecbdb0f5988f4ca588cb60 (diff) |
lijst: Proper delete button
Diffstat (limited to 'modules/lijst')
-rw-r--r-- | modules/lijst/lijst.html | 22 | ||||
-rw-r--r-- | modules/lijst/lijst.js | 26 |
2 files changed, 29 insertions, 19 deletions
diff --git a/modules/lijst/lijst.html b/modules/lijst/lijst.html index 0c1a3dd..b849720 100644 --- a/modules/lijst/lijst.html +++ b/modules/lijst/lijst.html @@ -11,20 +11,28 @@ function addItem() { xhr.open("POST", location.href + "/add"); xhr.responseType = "text"; xhr.onreadystatechange = function() { - if (xhr.readyState == 4 && xhr.status == 200) { - location.href = location.href; + if (xhr.readyState == 4) { + if (xhr.status == 200) { + location.href = location.href; + } else { + alert(xhr.responseText); + } } }; xhr.send(text); } -function removeItem() { +function removeItem(id) { var xhr = new XMLHttpRequest(); - xhr.open("POST", location.href + "/remove"); + xhr.open("POST", location.href + "/remove/" + id); xhr.responseType = "text"; xhr.onreadystatechange = function() { - if (xhr.readyState == 4 && xhr.status == 200) { - location.href = location.href; + if (xhr.readyState == 4) { + if (xhr.status == 200) { + location.href = location.href; + } else { + alert(xhr.responseText); + } } }; xhr.send(); @@ -40,7 +48,5 @@ function removeItem() { </ol> <input type="text" id="text" placeholder="New item text"> <input type="button" onclick="addItem()" value="Add item"><br> -<br> -<input type="button" onclick="removeItem()" value="Remove top item"> </body> </html> diff --git a/modules/lijst/lijst.js b/modules/lijst/lijst.js index eccbba7..028e6ce 100644 --- a/modules/lijst/lijst.js +++ b/modules/lijst/lijst.js @@ -11,8 +11,8 @@ persist=persist.create({ persist.initSync(); var lijst=persist.getItemSync("lijst"); -if(!lijst){ - lijst=[]; +if(!lijst||Array.isArray(lijst)){ + lijst={lijst:[],nextid:0}; persist.setItemSync("lijst",lijst); } @@ -21,8 +21,9 @@ var moddir; function render(res){ var html=fs.readFileSync(moddir+"/lijst.html")+""; var s=""; - for(var i=0;i<lijst.length;i++){ - s+="<li>"+lijst[i].replace(/</g,"<")+"</li>\n"; + for(var i=0;i<lijst.lijst.length;i++){ + var text=lijst.lijst[i].text.replace(/</g,"<"); + s+="<li>"+text+" <a href=\"javascript:removeItem("+lijst.lijst[i].id+")\">x</a></li>\n"; } html=html.replace("<!--[[LIJST_ITEMS]]-->",s); res.send(html); @@ -34,16 +35,19 @@ module.exports=function(app,io,_moddir){ render(res); }); app.post("/lijst/add",function(req,res){ - lijst.push(req.body.trim()); + lijst.lijst.push({text:req.body.trim(),id:lijst.nextid++}); persist.setItemSync("lijst",lijst); res.status(200).end(); }); - app.post("/lijst/remove",function(req,res){ - if(lijst.length>0){ - console.log("Removed item: "+lijst[0]); - lijst.shift(); + app.post("/lijst/remove/:id",function(req,res){ + var idx=lijst.lijst.findIndex(function(o){return o.id==+req.params.id;}); + if(idx!=-1){ + console.log("Removed item: "+lijst.lijst[idx].text); + lijst.lijst.splice(idx,1); + persist.setItemSync("lijst",lijst); + res.status(200).end(); + } else { + res.status(404).end("ID not found"); } - persist.setItemSync("lijst",lijst); - res.status(200).end(); }); }; |