UI and better date generation finished
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import express from "express";
|
||||
import connection from "../db.js";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get("/gettopten", async (req, res) => {
|
||||
let from = "2020-01-01";
|
||||
let to = "2029-01-01";
|
||||
let filterBy = "user";
|
||||
if (req.query.from) from = req.query.from;
|
||||
if (req.query.to) to = req.query.to;
|
||||
if (req.query.filterBy) filterBy = req.query.filterBy;
|
||||
let results, fields;
|
||||
let filterBySql = filterBy === "user" ? "t.user" : "t.project";
|
||||
try {
|
||||
[results, fields] = await connection.query(
|
||||
"SELECT t.user,t.date,t.project,u.f_name,u.l_name,p.name,SUM(t.time) as total_time \
|
||||
FROM Timelog t \
|
||||
INNER JOIN Project p ON p.id=t.project \
|
||||
INNER JOIN User u ON u.id=t.user \
|
||||
WHERE t.date BETWEEN ? AND ? \
|
||||
GROUP BY ?? \
|
||||
ORDER BY total_time DESC\
|
||||
LIMIT 10;",
|
||||
[from, to, filterBySql],
|
||||
);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
res.status(400).json({ message: "Error" });
|
||||
}
|
||||
// how much time each user has logged during that time period
|
||||
// let items = {};
|
||||
// let itemIdtoName = {};
|
||||
// for (let i = 0; i < results.length; i++) {
|
||||
// if (results[i][filterBy] in items) {
|
||||
// items[results[i][filterBy]] += results[i].time;
|
||||
// } else {
|
||||
// items[results[i][filterBy]] = results[i].time;
|
||||
// if (filterBy === "user")
|
||||
// itemIdtoName[results[i][filterBy]] =
|
||||
// results[i].f_name + " " + results[i].l_name;
|
||||
// else itemIdtoName[results[i][filterBy]] = results[i].name;
|
||||
// }
|
||||
// }
|
||||
// let respData = {};
|
||||
// for (let key in items) {
|
||||
// if (items.hasOwnProperty(key)) {
|
||||
// respData[itemIdtoName[key]] = items[key];
|
||||
// }
|
||||
// }
|
||||
// // transform obj to array
|
||||
// respData = Object.keys(items).map(function (key) {
|
||||
// return [key, items[key]];
|
||||
// });
|
||||
//
|
||||
// // sort the array based on the second element
|
||||
// respData.sort(function (first, second) {
|
||||
// return second[1] - first[1];
|
||||
// });
|
||||
//
|
||||
// // console.log(itemIdtoName);
|
||||
// // console.log(respData);
|
||||
// // Create a new array with only the first 10 items
|
||||
// respData = respData.slice(0, 10);
|
||||
|
||||
res.json(results);
|
||||
});
|
||||
|
||||
export default router;
|
||||
Reference in New Issue
Block a user