var cmn=require("../$common.js"), fs=require("fs"), persist=require("node-persist"), Naampje=require("naampje").name; persist=persist.create({ dir:cmn.persistdir+"/lijst", continuous:false, interval:false }); persist.initSync(); var lijst=persist.getItemSync("lijst"); if(!lijst||Array.isArray(lijst)){ lijst={lijst:[],nextid:0}; persist.setItemSync("lijst",lijst); } var maxlijstcost=1000000; var moddir; function computecost(l){ var cost=0; for(var i=0;i"; s+=""; s+=""; s+="x"; s+=""+(votes>0?repeatstring(votes,"↑"):repeatstring(-votes,"↓"))+""; s+="\n"; } return s; } function render(res){ var html=fs.readFileSync(moddir+"/lijst.html")+""; html=html.replace("",renderFragment()); res.send(html); } module.exports=function(app,io,_moddir){ moddir=_moddir; app.get("/lijst",function(req,res){ render(res); }); app.post("/lijst/add",function(req,res){ if(typeof req.body!="string"){ res.status(400).end("Malformed request data"); return; } var obj={text:req.body.trim(),id:lijst.nextid++,votes:0}; lijst.lijst.push(obj); if(computecost(lijst.lijst)>maxlijstcost){ lijst.lijst.pop(); res.status(451).end("Database too large"); return; } persist.setItemSync("lijst",lijst); res.status(200).end(renderFragment()); }); app.post("/lijst/remove/:id",function(req,res){ var idx=lijst.lijst.findIndex(function(o){return o.id==+req.params.id;}); if(idx!=-1){ lijst.lijst.splice(idx,1); persist.setItemSync("lijst",lijst); res.status(200).end(renderFragment()); } else { res.status(404).end("ID not found"); } }); app.post("/lijst/vote/:id/:num",function(req,res){ var delta=req.params.num>0?1:req.params.num<0?-1:0; var idx=lijst.lijst.findIndex(function(o){return o.id==+req.params.id;}); if(idx!=-1){ lijst.lijst[idx].votes+=delta; persist.setItemSync("lijst",lijst); res.status(200).end(renderFragment()); } else { res.status(404).end("ID not found"); } }); };