story: Added listing stories by month or author.

This commit is contained in:
2018-09-30 16:42:01 +02:00
parent a098051733
commit 640244faf4
5 changed files with 67 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
const express = require("express")
const router = express.Router()
const common = require("./common")
const {storyApi} = require("../../rpdata/api/Story")
const listTemplate = require("../../marko/page/story/list.marko")
router.get("/:author", common, async(req, res) => {
res.locals.menuAuthor = req.params.author
try {
res.markoAsync(listTemplate, {
stories: storyApi.list({author: req.params.author}),
menuAuthor: req.params.author,
selected: {special: "author"},
})
} catch(err) {
console.error(err)
}
})
module.exports = router
+31
View File
@@ -0,0 +1,31 @@
const express = require("express")
const router = express.Router()
const common = require("./common")
const {storyApi} = require("../../rpdata/api/Story")
const listTemplate = require("../../marko/page/story/list.marko")
router.get("/:yearmonth(\-{0,1}[0-9]{4}\-[0-9]{1,2})", common, async(req, res) => {
try {
const [year, month] = req.params.yearmonth.split("-").map(t => parseInt(t, 10))
if (month > 12) {
return res.status(400).end(`${month} is not a valid month number`)
}
// Month is zero-based, while input is one-based.
const fromDate = new Date(Date.UTC(year, month - 1, 1))
const toDate = new Date(Date.UTC(year, month, 1))
const monthStr = `${fromDate}-${month > 9 ? month : '0' + month}`
res.markoAsync(listTemplate, {
stories: storyApi.list({earliestFictionalDate: fromDate, latestFictionalDate: toDate}),
menuMonth: monthStr,
selected: {special: "month"},
})
} catch(err) {
console.error(err)
}
})
module.exports = router