mirror of
https://github.com/cotes2020/jekyll-theme-chirpy.git
synced 2025-12-18 21:53:26 +00:00
Redesign the post meta layout
- posted date - updated date - read time - license statement of post bottom - also refactor the `timeago.js`
This commit is contained in:
@@ -3,11 +3,8 @@
|
||||
*/
|
||||
|
||||
$(function() {
|
||||
|
||||
const timeagoElem = $(".timeago");
|
||||
|
||||
let toRefresh = timeagoElem.length;
|
||||
|
||||
let tasks = timeagoElem.length;
|
||||
let intervalId = void 0;
|
||||
|
||||
const dPrompt = $("meta[name=day-prompt]").attr("content");
|
||||
@@ -15,20 +12,19 @@ $(function() {
|
||||
const minPrompt = $("meta[name=minute-prompt]").attr("content");
|
||||
const justnowPrompt = $("meta[name=justnow-prompt]").attr("content");
|
||||
|
||||
function timeago(isoDate, dateStr) {
|
||||
function timeago(date, initDate) {
|
||||
let now = new Date();
|
||||
let past = new Date(isoDate);
|
||||
let past = new Date(date);
|
||||
|
||||
if (past.getFullYear() !== now.getFullYear()
|
||||
|| past.getMonth() !== now.getMonth()) {
|
||||
return dateStr;
|
||||
return initDate;
|
||||
}
|
||||
|
||||
let seconds = Math.floor((now - past) / 1000);
|
||||
|
||||
let day = Math.floor(seconds / 86400);
|
||||
if (day >= 1) {
|
||||
toRefresh -= 1;
|
||||
return ` ${day} ${dPrompt}`;
|
||||
}
|
||||
|
||||
@@ -47,22 +43,30 @@ $(function() {
|
||||
|
||||
function updateTimeago() {
|
||||
$(".timeago").each(function() {
|
||||
if ($(this).children("i").length > 0) {
|
||||
let dateStr = $(this).clone().children().remove().end().text();
|
||||
let node = $(this).children("i");
|
||||
let iosDate = node.text(); /* ISO Date: "YYYY-MM-DDTHH:MM:SSZ" */
|
||||
$(this).text(timeago(iosDate, dateStr));
|
||||
$(this).append(node);
|
||||
if ($(this)[0].hasAttribute("date") === false) {
|
||||
tasks -= 1;
|
||||
return;
|
||||
}
|
||||
|
||||
let date = $(this).attr("date");
|
||||
let initDate = $(this).text();
|
||||
let relativeDate = timeago(date, initDate);
|
||||
|
||||
if (relativeDate === initDate) {
|
||||
$(this).removeAttr("date");
|
||||
} else {
|
||||
$(this).text(relativeDate);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (toRefresh === 0 && typeof intervalId !== "undefined") {
|
||||
if (tasks === 0 && typeof intervalId !== "undefined") {
|
||||
clearInterval(intervalId); /* stop interval */
|
||||
}
|
||||
return toRefresh;
|
||||
return tasks;
|
||||
}
|
||||
|
||||
if (toRefresh === 0) {
|
||||
if (tasks === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user