Admin done
This commit is contained in:
2
app.js
2
app.js
@@ -9,6 +9,7 @@ var logger = require("morgan");
|
||||
var path = require("path");
|
||||
var read = require("read-file");
|
||||
var uuidv4 = require("uuid/v4");
|
||||
var adminRouter = require("./routes/admin");
|
||||
var exportRouter = require("./routes/export");
|
||||
var indexRouter = require("./routes/index");
|
||||
var recommendsRouter = require("./routes/recommends");
|
||||
@@ -70,6 +71,7 @@ app.use(function (req, res, next) {
|
||||
});
|
||||
app.use(express.static(path.join(__dirname, "public")));
|
||||
app.use("/", indexRouter);
|
||||
app.use("/admin", adminRouter);
|
||||
app.use("/export", exportRouter);
|
||||
app.use("/update", updateRouter);
|
||||
app.use("/recommends", recommendsRouter);
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"app.js","sourceRoot":"","sources":["app.ts"],"names":[],"mappings":"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"}
|
||||
4
app.ts
4
app.ts
@@ -8,13 +8,14 @@ import * as path from "path";
|
||||
import * as read from "read-file";
|
||||
import * as uuidv4 from "uuid/v4";
|
||||
|
||||
import * as adminRouter from "./routes/admin";
|
||||
import * as exportRouter from "./routes/export";
|
||||
import * as indexRouter from "./routes/index";
|
||||
import * as recommendsRouter from "./routes/recommends";
|
||||
import * as updateRouter from "./routes/update";
|
||||
|
||||
const app = express();
|
||||
const adapter = new FileSync("db.json")
|
||||
const adapter = new FileSync("db.json");
|
||||
const db = low(adapter);
|
||||
(app as any).db = db;
|
||||
db.defaults({users: []})
|
||||
@@ -80,6 +81,7 @@ app.use((req, res, next) => {
|
||||
app.use(express.static(path.join(__dirname, "public")));
|
||||
|
||||
app.use("/", indexRouter);
|
||||
app.use("/admin", adminRouter);
|
||||
app.use("/export", exportRouter);
|
||||
app.use("/update", updateRouter);
|
||||
app.use("/recommends", recommendsRouter);
|
||||
|
||||
2
db.json
2
db.json
@@ -98,7 +98,7 @@
|
||||
"cocktail": "Simone"
|
||||
}
|
||||
],
|
||||
"lastused": 1547290476929
|
||||
"lastused": 1547298286665
|
||||
}
|
||||
]
|
||||
}
|
||||
71
routes/admin.ts
Normal file
71
routes/admin.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import * as auth from "basic-auth";
|
||||
import * as express from "express";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use((req, res, next) => {
|
||||
const user = auth(req);
|
||||
if (user && user.name === "isi" && user.pass === "123zauberbar") { // Here you need some logic to validate authentication
|
||||
next();
|
||||
} else {
|
||||
res.set({
|
||||
"WWW-Authenticate": 'Basic realm="kuerbiskern-admin"',
|
||||
}).send(401);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function compare(a, b) {
|
||||
if (a.levels != null && b.levels != null) {
|
||||
return a.levels.avg < b.levels.avg ? 1 : (a.levels.avg === b.levels.avg ? 0 : -1);
|
||||
} else if (a.levels != null) {
|
||||
//console.log("level a");
|
||||
return -1;
|
||||
} else if (b.levels != null) {
|
||||
//console.log("level b");
|
||||
return 1;
|
||||
}
|
||||
//console.log("name");
|
||||
const aid = parseInt(a.entry[2], 10);
|
||||
const bid = parseInt(b.entry[2], 10);
|
||||
return aid > bid ? 1 : (aid === bid ? 0 : -1);
|
||||
}
|
||||
|
||||
|
||||
router.get("/", (req, res, next) => {
|
||||
const users = (req.app as any).db.get("users").value();
|
||||
//console.log(users);
|
||||
const cList = (req.app as any).cocktailList;
|
||||
const cEntries = (req.app as any).cocktails;
|
||||
const list = cEntries.slice(0, cEntries.length);
|
||||
for (const user of users) {
|
||||
for (const ctail of (user.cocktails as Array<{level: number, cocktail: string}>)) {
|
||||
const idx = cList.indexOf(ctail.cocktail);
|
||||
if (Array.isArray(list[idx])) {
|
||||
list[idx] = ({entry: list[idx], levels: [ctail.level]} as any);
|
||||
} else {
|
||||
(list[idx] as {entry: any[], levels: number[]}).levels.push(ctail.level);
|
||||
}
|
||||
}
|
||||
}
|
||||
list.forEach((value, idx, arr) => {
|
||||
if (!Array.isArray(value)) {
|
||||
value.levels = {
|
||||
cnt: (value as any).levels.length,
|
||||
max: Math.max(...(value as any).levels),
|
||||
min: Math.min(...(value as any).levels),
|
||||
avg: (value as any).levels.reduce((a, b) => a + b, 0) / (value as any).levels.length,
|
||||
};
|
||||
} else {
|
||||
arr[idx] = {entry: value, levels: null};
|
||||
}
|
||||
});
|
||||
list.sort((a, b) => {
|
||||
const comp = compare(a, b);
|
||||
return comp;
|
||||
});
|
||||
console.log(list);
|
||||
res.render("admin", {title: "Admin", list});
|
||||
});
|
||||
|
||||
export = router;
|
||||
21
views/admin.pug
Normal file
21
views/admin.pug
Normal file
@@ -0,0 +1,21 @@
|
||||
extends layout
|
||||
|
||||
block content
|
||||
block content
|
||||
.mdl-grid
|
||||
.mdl-cell--3-offset-desktop
|
||||
.mdl-cell.mdl-cell--6-col.mdl-cell--12-col-tablet
|
||||
.demo-card-square.mdl-card.mdl-shadow--2dp
|
||||
.mdl-card__title.mdl-card--expand
|
||||
h2.mdl-card__title-text Top-Cocktails
|
||||
.mdl-card__supporting-text
|
||||
each entry in list
|
||||
li.mdl-list__item.mdl-list__item--two-line
|
||||
span.mdl-list__item-primary-content
|
||||
i.material-icons.mdl-list__item-avatar local_bar
|
||||
span= entry.entry[2] + " - " + entry.entry[3]
|
||||
span.mdl-list__item-sub-title= entry.entry[7].replace(/;/g, ', ')
|
||||
if entry.levels
|
||||
span.mdl-list__item-secondary-content= Math.round(entry.levels.avg * 10) / 10
|
||||
else
|
||||
span.mdl-list__item-secondary-content N/A
|
||||
Reference in New Issue
Block a user