2016-08-17 13:01:17 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const views = require('../util/views.js');
|
|
|
|
|
|
|
|
const template = views.getTemplate('snapshots-page');
|
|
|
|
|
|
|
|
function _extend(target, source) {
|
|
|
|
target.push.apply(target, source);
|
|
|
|
}
|
|
|
|
|
|
|
|
function _formatBasicChange(diff, text) {
|
|
|
|
const lines = [];
|
|
|
|
if (diff.type === 'list change') {
|
|
|
|
const addedItems = diff.added;
|
|
|
|
const removedItems = diff.removed;
|
|
|
|
if (addedItems && addedItems.length) {
|
|
|
|
lines.push(`Added ${text} (${addedItems.join(', ')})`);
|
|
|
|
}
|
|
|
|
if (removedItems && removedItems.length) {
|
|
|
|
lines.push(`Removed ${text} (${removedItems.join(', ')})`);
|
|
|
|
}
|
|
|
|
} else if (diff.type === 'primitive change') {
|
|
|
|
const oldValue = diff['old-value'];
|
|
|
|
const newValue = diff['new-value'];
|
|
|
|
lines.push(`Changed ${text} (${oldValue} → ${newValue})`);
|
|
|
|
} else {
|
|
|
|
lines.push(`Changed ${text}`);
|
|
|
|
}
|
|
|
|
return lines;
|
|
|
|
}
|
|
|
|
|
|
|
|
function _makeResourceLink(type, id) {
|
|
|
|
if (type === 'post') {
|
|
|
|
return views.makePostLink(id, true);
|
|
|
|
} else if (type === 'tag') {
|
|
|
|
return views.makeTagLink(id, true);
|
|
|
|
} else if (type === 'tag_category') {
|
|
|
|
return 'category "' + id + '"';
|
2020-05-04 09:09:33 +02:00
|
|
|
} else if (type === 'pool') {
|
|
|
|
return views.makePoolLink(id, true);
|
2016-08-17 13:01:17 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function _makeItemCreation(type, data) {
|
|
|
|
const lines = [];
|
|
|
|
for (let key of Object.keys(data)) {
|
|
|
|
if (!data[key]) {
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
let text = key[0].toUpperCase() + key.substr(1).toLowerCase();
|
|
|
|
if (Array.isArray(data[key])) {
|
|
|
|
if (data[key].length) {
|
|
|
|
lines.push(`${text}: ${data[key].join(', ')}`);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
lines.push(`${text}: ${data[key]}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return lines.join('<br/>');
|
|
|
|
}
|
|
|
|
|
|
|
|
function _makeItemModification(type, data) {
|
|
|
|
const lines = [];
|
|
|
|
const diff = data.value;
|
|
|
|
if (type === 'tag_category') {
|
|
|
|
if (diff.name) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.name, 'name'));
|
|
|
|
}
|
|
|
|
if (diff.color) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.color, 'color'));
|
|
|
|
}
|
|
|
|
if (diff.default) {
|
|
|
|
_extend(lines, ['Made into default category']);
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (type === 'tag') {
|
|
|
|
if (diff.names) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.names, 'names'));
|
|
|
|
}
|
|
|
|
if (diff.category) {
|
|
|
|
_extend(
|
|
|
|
lines, _formatBasicChange(diff.category, 'category'));
|
|
|
|
}
|
|
|
|
if (diff.suggestions) {
|
|
|
|
_extend(
|
|
|
|
lines, _formatBasicChange(diff.suggestions, 'suggestions'));
|
|
|
|
}
|
|
|
|
if (diff.implications) {
|
|
|
|
_extend(
|
|
|
|
lines, _formatBasicChange(diff.implications, 'implications'));
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (type === 'post') {
|
|
|
|
if (diff.checksum) {
|
|
|
|
_extend(lines, ['Changed content']);
|
|
|
|
}
|
|
|
|
if (diff.featured) {
|
|
|
|
_extend(lines, ['Featured on front page']);
|
|
|
|
}
|
|
|
|
if (diff.source) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.source, 'source'));
|
|
|
|
}
|
|
|
|
if (diff.safety) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.safety, 'safety'));
|
|
|
|
}
|
|
|
|
if (diff.tags) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.tags, 'tags'));
|
|
|
|
}
|
|
|
|
if (diff.relations) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.relations, 'relations'));
|
|
|
|
}
|
|
|
|
if (diff.notes) {
|
|
|
|
_extend(lines, ['Changed notes']);
|
|
|
|
}
|
|
|
|
if (diff.flags) {
|
|
|
|
_extend(lines, ['Changed flags']);
|
|
|
|
}
|
2020-05-04 09:09:33 +02:00
|
|
|
|
|
|
|
} else if (type === 'pool') {
|
|
|
|
if (diff.names) {
|
|
|
|
_extend(lines, _formatBasicChange(diff.names, 'names'));
|
|
|
|
}
|
|
|
|
if (diff.category) {
|
|
|
|
_extend(
|
|
|
|
lines, _formatBasicChange(diff.category, 'category'));
|
|
|
|
}
|
|
|
|
if (diff.posts) {
|
|
|
|
_extend(
|
|
|
|
lines, _formatBasicChange(diff.posts, 'posts'));
|
|
|
|
}
|
2016-08-17 13:01:17 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return lines.join('<br/>');
|
|
|
|
}
|
|
|
|
|
|
|
|
class SnapshotsPageView {
|
|
|
|
constructor(ctx) {
|
|
|
|
views.replaceContent(ctx.hostNode, template(Object.assign({
|
|
|
|
makeResourceLink: _makeResourceLink,
|
|
|
|
makeItemCreation: _makeItemCreation,
|
|
|
|
makeItemModification: _makeItemModification,
|
|
|
|
}, ctx)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = SnapshotsPageView;
|