Post details
This commit is contained in:
parent
9f952d8c3c
commit
a19896333f
@ -10,19 +10,39 @@ ul {
|
|||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
main details {
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main ul {
|
||||||
|
/* padding-top: 10px; */
|
||||||
|
padding-inline-start: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main li {
|
||||||
|
clear: both;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
main li b {
|
||||||
|
float: left;
|
||||||
|
padding-right: 2ch
|
||||||
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
p a, footer a {
|
summary a, footer a {
|
||||||
float: right
|
float: right
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mark {
|
||||||
|
color: #f66;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
clear: both
|
clear: both
|
||||||
}
|
}
|
||||||
@ -34,5 +54,6 @@ footer a {
|
|||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
body { background: #000; color: #eee }
|
body { background: #000; color: #eee }
|
||||||
a { color: #ccf }
|
a { color: #ccf }
|
||||||
|
mark { color: #fcc }
|
||||||
hr { border-color: #555 }
|
hr { border-color: #555 }
|
||||||
}
|
}
|
33
lib.js
33
lib.js
@ -191,6 +191,7 @@ export const processRssItem = (source, item, reducerCallback) => {
|
|||||||
let dateString = item.querySelector('pubDate').textContent
|
let dateString = item.querySelector('pubDate').textContent
|
||||||
let link = item.querySelector('link').textContent
|
let link = item.querySelector('link').textContent
|
||||||
let guid = item.querySelector('guid')?.textContent
|
let guid = item.querySelector('guid')?.textContent
|
||||||
|
let title = item.querySelector('title')?.textContent
|
||||||
|
|
||||||
let post = {
|
let post = {
|
||||||
source,
|
source,
|
||||||
@ -199,7 +200,8 @@ export const processRssItem = (source, item, reducerCallback) => {
|
|||||||
dateString,
|
dateString,
|
||||||
date: new Date(dateString).valueOf() ?? 0,
|
date: new Date(dateString).valueOf() ?? 0,
|
||||||
link,
|
link,
|
||||||
guid
|
guid,
|
||||||
|
title
|
||||||
}
|
}
|
||||||
|
|
||||||
return reducerCallback(post)
|
return reducerCallback(post)
|
||||||
@ -297,7 +299,11 @@ export const renderPage = (title, posts, header, footer) => `\
|
|||||||
<header>
|
<header>
|
||||||
${header}
|
${header}
|
||||||
</header>
|
</header>
|
||||||
|
<main>
|
||||||
|
|
||||||
${posts.map(renderPost).join('\n')}
|
${posts.map(renderPost).join('\n')}
|
||||||
|
|
||||||
|
</main>
|
||||||
<footer>
|
<footer>
|
||||||
${footer}
|
${footer}
|
||||||
</footer>
|
</footer>
|
||||||
@ -308,11 +314,32 @@ ${footer}
|
|||||||
export const renderPost = post => {
|
export const renderPost = post => {
|
||||||
let date = new Date(post.date)
|
let date = new Date(post.date)
|
||||||
|
|
||||||
|
let details = [
|
||||||
|
[ 'source', `<a href="${post.source.hostname}">${post.source.hostname}</a>` ]
|
||||||
|
]
|
||||||
|
|
||||||
|
if(post.title)
|
||||||
|
details.push([ 'title', `"${post.title}"` ])
|
||||||
|
|
||||||
|
if(post.categories && post.categories.length > 0)
|
||||||
|
details.push([ 'categories', post.categories.map(name => `<mark>${name}</mark>`).join(', ') ])
|
||||||
|
|
||||||
return `\
|
return `\
|
||||||
${post.images.map(renderImage).join('\n')}
|
${post.images.map(renderImage).join('\n')}
|
||||||
<p><b>${post.source.displayName}</b> ${renderDate(date)} <a href="${post.link}">open</a></p><hr>`
|
<details>
|
||||||
|
|
||||||
|
<summary><b>${post.source.displayName}</b> ${renderDate(date)} <a href="${post.link}">open</a></summary>
|
||||||
|
<ul>
|
||||||
|
${details.map(args => renderPostDetail(...args)).join('\n')}
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<hr>`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const renderPostDetail = (name, value) =>
|
||||||
|
`<li><b>${name}</b> ${value}</li>`
|
||||||
|
|
||||||
export const renderImage = href => {
|
export const renderImage = href => {
|
||||||
return `\
|
return `\
|
||||||
<a href="${href}"><img src="${href}" loading="lazy"></img></a>`
|
<a href="${href}"><img src="${href}" loading="lazy"></img></a>`
|
||||||
@ -526,8 +553,6 @@ export const tumblr = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
matchesTags(post, whitelist, blacklist) {
|
matchesTags(post, whitelist, blacklist) {
|
||||||
post = processCategories(post)
|
|
||||||
|
|
||||||
if(whitelist && testWhitelist(post.categories, whitelist)) {
|
if(whitelist && testWhitelist(post.categories, whitelist)) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user