diff options
author | tomsmeding <tom.smeding@gmail.com> | 2017-02-17 20:29:09 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2017-02-17 20:29:09 +0100 |
commit | 54e0f34a0430fb3dd5dfe46f1a01e61a22e822e3 (patch) | |
tree | 62f6acfec7164db214b38c0b3a14931fc6b9cc6a | |
parent | ad7b72a8cf8b335193ed00d1d1e053f155b9d301 (diff) |
todo: Preload todolist on page load
-rw-r--r-- | modules/todo/todo.html | 28 | ||||
-rw-r--r-- | modules/todo/todo.js | 8 |
2 files changed, 29 insertions, 7 deletions
diff --git a/modules/todo/todo.html b/modules/todo/todo.html index e2f13af..19b9370 100644 --- a/modules/todo/todo.html +++ b/modules/todo/todo.html @@ -5,6 +5,10 @@ <title>TODO</title> <script> "use strict"; +var preload_todolist=/*REPLACEME*/null/*TODOLIST*/; +</script> +<script> +"use strict"; function fetch(method,url,data/*?*/,creds/*?*/,cb){ if(!creds){ @@ -155,18 +159,32 @@ function refreshlist(list){ } } +function handleReceivedList(list){ + var i; + for(i=0;i<list.length;i++)list[i].date=new Date(list[i].date); + refreshlist(list); +} + function getlist(){ - fetch("GET","/todo/list",function(status,json){ + if(preload_todolist!=null){ + handleReceivedList(preload_todolist); + preload_todolist=null; + return; + } + + fetch("GET","/todo/list",function(status,body){ + if(status!=200){ + alert("Error: "+body); + return; + } var list; try { - list=JSON.parse(json); + list=JSON.parse(body); } catch(e){ alert("An error occurred!"); return; } - var i; - for(i=0;i<list.length;i++)list[i].date=new Date(list[i].date); - refreshlist(list); + handleReceivedList(list); }); } diff --git a/modules/todo/todo.js b/modules/todo/todo.js index 0b3da3c..66433d9 100644 --- a/modules/todo/todo.js +++ b/modules/todo/todo.js @@ -3,7 +3,8 @@ var cmn=require("../$common.js"), persist=require("node-persist"), bcrypt=require("bcrypt"), - basicAuth=require("basic-auth"); + basicAuth=require("basic-auth"), + fs=require("fs"); var bcryptHashRounds=10; @@ -134,7 +135,10 @@ module.exports=function(app,io,_moddir){ app.all(["/todo","/todo/*"],authMiddleware); //for all the other endpoints app.get("/todo",function(req,res){ - res.sendFile(moddir+"/todo.html"); + var contents=fs.readFileSync(moddir+"/todo.html","utf8"); + var replaced=contents.replace("/*REPLACEME*/null/*TODOLIST*/", + JSON.stringify(tasks[req.authuser])); + res.send(replaced); }); app.get("/todo/list",function(req,res){ res.json(tasks[req.authuser]); |