Browse Source

Add ability to stop current tracker.

Lee Morgan 4 năm trước cách đây
mục cha
commit
54734fa741
3 tập tin đã thay đổi với 60 bổ sung2 xóa
  1. 33 0
      controllers/tracker.js
  2. 1 0
      routes.js
  3. 26 2
      views/timeTracker/tracker.html

+ 33 - 0
controllers/tracker.js

@@ -24,6 +24,39 @@ module.exports = {
                 return res.json(tracker);
             })
             .catch((err)=>{
+                console.error(err);
+                return res.json(err);
+            });
+    },
+
+    /*
+    PUT: update data on a tracker
+    req.body = {
+        id: String
+        name: String
+        project: String
+        description: String
+        end: Date
+    }
+    */
+    update: function(req, res){
+        Tracker.findOne({_id: req.body.id})
+            .then((tracker)=>{
+                if(!tracker) throw "tracker";
+
+                if(req.body.name) tracker.name = req.body.name;
+                if(req.body.project) tracker.project = req.body.project;
+                if(req.body.description) tracker.description = req.body.description;
+                if(req.body.end) tracker.end = new Date(req.body.end);
+
+                return tracker.save();
+            })
+            .then((tracker)=>{
+                return res.json(tracker);
+            })
+            .catch((err)=>{
+                if(err === "tracker") return res.json("Could not find tracker");
+                console.error(err);
                 return res.json(err);
             });
     }

+ 1 - 0
routes.js

@@ -72,4 +72,5 @@ module.exports = function(app){
     //TRACKER
     app.get("/tracker", (req, res)=>res.sendFile(`${views}/timeTracker/tracker.html`));
     app.post("/tracker", tracker.create);
+    app.put("/tracker", tracker.update);
 }

+ 26 - 2
views/timeTracker/tracker.html

@@ -47,11 +47,35 @@
                         .then((response)=>{
                             if(typeof(response) === "string"){
                             }else{
-                                tracker = response;
                                 document.getElementById("startStop").innerText = "Stop";
                                 document.getElementById("pause").style.display = "block";
+                                tracker = response;
                             }
-                        }).catch((err)=>{});
+                        }).catch((err)=>{
+                            console.error(err);
+                        });
+                }else{
+                    let time = new Date();
+
+                    fetch("/tracker", {
+                        method: "put",
+                        headers: {
+                            "Content-Type": "application/json"
+                        },
+                        body: JSON.stringify({
+                            id: tracker._id,
+                            end: time
+                        })
+                    })
+                        .then(r=>r.json())
+                        .then((response)=>{
+                            document.getElementById("startStop").innerText = "Start";
+                            document.getElementById("pause").style.display = "none";
+                            tracker = null;
+                        })
+                        .catch((err)=>{
+                            console.error(err);
+                        });
                 }
             }
         </script>