You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Fipamo/brain/data/Utils.js

134 lines
3.5 KiB
JavaScript

import Settings, { SETTINGS_FILE } from './Settings';
import Render from './Render';
import StringUtils from '../../src/com/utils/StringUtils';
import _ from 'lodash';
const settings = new Settings();
const render = new Render();
const stringUtils = new StringUtils();
const moment = require('moment');
const fs = require('fs-extra');
export default class Utils {
constructor() {}
/**
* Retrieves single page or pages
* @parameter pages: payload of pages
*/
organizeTags(pages) {
let tags = [];
for (let index = 0; index < pages.length; index++) {
const page = pages[index];
let temp = [];
temp = page.metadata.tags.split(',');
for (let i = 0; i < temp.length; i++) {
let label = temp[i].trim();
if (!_.find(tags, { tag_name: label })) {
tags.push({
tag_name: label,
slug: stringUtils.cleanString(label),
count: 1
});
} else {
_.find(tags, { tag_name: label }).count++;
}
}
}
tags = _.orderBy(tags, ['tag_name'], ['asc']);
settings.saveTags(tags).then(() => {
render
.publishTags(pages)
.then(() => {
//console.log(response);
})
.catch(() => {
//console.log(err);
});
});
}
organizeArchive(pages) {
let years = [];
let archive = [];
for (let index = 0; index < pages.length; index++) {
let page = pages[index].metadata;
if (page.layout !== 'index') {
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 })) {
sorted.push({
month: month,
full_month: moment(obj.created).format('MMMM'),
count: 1,
pages: _.filter(pages, page => {
return (
moment(page.metadata.created).format('YYYY') === item.year &&
moment(page.metadata.created).format('MM') === month &&
page.metadata.deleted === false &&
page.metadata.published === true &&
page.metadata.layout !== 'index'
);
})
});
} else {
_.find(sorted, { month: month }).count++;
}
}
archive.push({ year: item.year, year_data: sorted });
}
render.publishArchive(archive);
}
reindexPages(pages) {
//let byDate = _.sortBy(pages, ['created']);
}
moveAssets() {
settings
.load(SETTINGS_FILE)
.then(settings => {
//move css assets to public directory
fs.copy(
'content/themes/' + settings.global.theme + '/assets/css',
'public/assets/css',
function (err) {
if (err) {
//console.log('An error occured while copying the folder.', err);
//return console.error(err);
}
//console.log('Copy completed!');
}
);
//move js assets to public directory
fs.copy(
'content/themes/' + settings.global.theme + '/assets/scripts',
'public/assets/scripts',
function (err) {
if (err) {
//console.log('An error occured while copying the folder.', err);
//return console.error(err);
}
//console.log('Copy completed!');
}
);
})
.catch(() => {
//console.log('ERROR', err);
});
}
}