forked from projects/fipamo
added archive page that contains all site pages
This commit is contained in:
parent
a746ddd0aa
commit
f7e40b713d
3 changed files with 65 additions and 0 deletions
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue