40 lines
1.7 KiB
JavaScript
40 lines
1.7 KiB
JavaScript
// Shared RSS feed form view-model builder.
|
|
|
|
function buildDefaultRssFeed() {
|
|
return {
|
|
id: null,
|
|
name: '',
|
|
feedUrl: '',
|
|
updateIntervalValue: 60,
|
|
updateIntervalUnit: 'minutes',
|
|
itemLimit: 1
|
|
};
|
|
}
|
|
|
|
function buildRssFeedFormViewModel(rssFeed, message, currentUser, options, isEdit) {
|
|
const viewRssFeed = Object.assign(buildDefaultRssFeed(), rssFeed || {});
|
|
const viewOptions = options || {};
|
|
|
|
return {
|
|
title: isEdit ? 'Edit RSS feed' : 'Add RSS feed',
|
|
active: 'rss-feeds',
|
|
message: message,
|
|
currentUser: currentUser || null,
|
|
rssFeed: viewRssFeed,
|
|
inUse: Boolean(viewRssFeed.inUse),
|
|
pulledItems: viewOptions.pulledItems || viewRssFeed.pulledItems || [],
|
|
pullError: viewOptions.pullError || viewRssFeed.pullError || '',
|
|
messageVariant: viewOptions.messageVariant || '',
|
|
isEdit: Boolean(isEdit),
|
|
showSaveSecondaryActions: true,
|
|
deleteDisabled: !isEdit || Boolean(viewRssFeed.inUse),
|
|
formAction: isEdit && viewRssFeed.id ? '/data-sources/rss-feeds/' + viewRssFeed.id : '/data-sources/rss-feeds',
|
|
formAttrs: isEdit && viewRssFeed.id ? 'data-async-save data-async-save-refresh-target="#rss-feed-items-panel" data-async-save-refresh-state-url="/data-sources/rss-feeds/' + viewRssFeed.id + '/state" data-async-save-close-url="/data-sources/rss-feeds" data-async-save-new-url="/data-sources/rss-feeds/new"' : 'data-async-save data-async-save-close-url="/data-sources/rss-feeds" data-async-save-new-redirect="response-url" data-async-save-new-url="/data-sources/rss-feeds/new"',
|
|
cancelUrl: '/data-sources/rss-feeds',
|
|
deleteUrl: isEdit && viewRssFeed.id ? '/data-sources/rss-feeds/' + viewRssFeed.id + '/delete' : ''
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
buildRssFeedFormViewModel: buildRssFeedFormViewModel
|
|
}; |