added archive page that contains all site pages

This commit is contained in:
Ro 2020-06-14 18:18:31 -07:00
parent a746ddd0aa
commit f7e40b713d
3 changed files with 65 additions and 0 deletions

View file

@ -43,6 +43,7 @@ export default class Book {
setTimeout(() => { setTimeout(() => {
//TODO: Duct tape solution until something better created //TODO: Duct tape solution until something better created
utils.organizeTags(pages); utils.organizeTags(pages);
utils.organizeArchive(pages);
resolve(pages); resolve(pages);
}, 100); }, 100);
} else { } else {

View file

@ -143,6 +143,23 @@ export default class Render {
} }
}); });
} }
publishArchive(archive) {
let file = pug.renderFile('content/themes/' + config.global.theme + '/archive.pug', {
title: 'ARCHIVES',
default_bg: config.global.background,
content_tags: 'COLD STORAGE',
archives: archive
});
fs.writeFile('public/archives.html', file, err => {
// throws an error, you could also catch it here
if (err) {
console.log('ERROR', err);
//response = { type: DataEvent.TAG_PAGES_NOT_RENDERED, message: err };
}
// success case, the file was saved
});
}
//-------------------------- //--------------------------
// event handlers // event handlers

View file

@ -5,6 +5,7 @@ import _ from 'lodash';
const settings = new Settings(); const settings = new Settings();
const render = new Render(); const render = new Render();
const stringUtils = new StringUtils(); const stringUtils = new StringUtils();
const moment = require('moment');
export default class Utils { export default class Utils {
constructor() {} constructor() {}
@ -45,4 +46,50 @@ export default class Utils {
}); });
}); });
} }
organizeArchive(pages) {
let years = [];
let archive = [];
for (let index = 0; index < pages.length; index++) {
let page = pages[index].metadata;
let year = moment(page.created).format('YYYY');
if (!_.find(years, { year: year })) {
years.push({ year: year, count: 1 });
} else {
_.find(years, { year: year }).count++;
}
}
years.sort((a, b) => parseFloat(b.year) - parseFloat(a.year));
for (let index = 0; index < years.length; index++) {
let item = years[index];
let sorted = [];
let filtered = _.filter(pages, page => {
return moment(page.metadata.created).format('YYYY') === item.year;
});
for (let index = 0; index < filtered.length; index++) {
let obj = filtered[index].metadata;
let month = moment(obj.created).format('MM');
if (!_.find(sorted, { month: month })) {
let sortedPages = _.filter(pages, page => {
return (
moment(page.metadata.created).format('YYYY') === item.year &&
moment(page.metadata.created).format('MM') === month
);
});
sorted.push({
month: month,
full_month: moment(obj.created).format('MMMM'),
count: 1,
pages: sortedPages
});
} else {
_.find(sorted, { month: month }).count++;
}
}
archive.push({ year: item.year, year_data: sorted });
}
render.publishArchive(archive);
//console.log('ARCHIVE', archive[0].meta[0]);
}
} }