33 lines
1.1 KiB
JavaScript
33 lines
1.1 KiB
JavaScript
const { renderView } = require('../../../view');
|
|
|
|
function formatIntervalLabel(interval, unit) {
|
|
const value = Math.max(1, Number(interval) || 0);
|
|
const normalizedUnit = String(unit || 'minutes').trim().toLowerCase() === 'seconds' ? 'seconds' : 'minutes';
|
|
if (normalizedUnit === 'seconds') {
|
|
return value === 1 ? 'Every second' : `Every ${value} seconds`;
|
|
}
|
|
return value === 1 ? 'Every minute' : `Every ${value} minutes`;
|
|
}
|
|
|
|
function formatItemLabel(count) {
|
|
const value = Math.max(1, Number(count) || 0);
|
|
return value === 1 ? 'Latest item' : `Latest ${value} items`;
|
|
}
|
|
|
|
module.exports = function renderRssFeedsPage(data, message, currentUser) {
|
|
const rssFeeds = (data.rssFeeds || []).map(function (rssFeed) {
|
|
return Object.assign({}, rssFeed, {
|
|
intervalLabel: formatIntervalLabel(rssFeed.update_interval_value, rssFeed.update_interval_unit),
|
|
itemLabel: formatItemLabel(rssFeed.item_limit)
|
|
});
|
|
});
|
|
|
|
return renderView('data-sources/rss-feeds/list', {
|
|
title: 'RSS feeds',
|
|
active: 'rss-feeds',
|
|
message: message,
|
|
currentUser: currentUser || null,
|
|
rssFeeds: rssFeeds,
|
|
pagination: data.pagination || null
|
|
});
|
|
}; |