51 lines
2.1 KiB
JavaScript
51 lines
2.1 KiB
JavaScript
// Shared API source form view-model builder.
|
|
|
|
function buildDefaultApiSource() {
|
|
return {
|
|
id: null,
|
|
name: '',
|
|
apiUrl: '',
|
|
authMethod: 'none',
|
|
authUsername: '',
|
|
authPassword: '',
|
|
authBearerToken: '',
|
|
authHeaderName: 'X-API-Key',
|
|
authHeaderValue: '',
|
|
itemsPath: '',
|
|
updateIntervalValue: 60,
|
|
updateIntervalUnit: 'minutes',
|
|
lastPulledAt: null,
|
|
lastPullError: '',
|
|
lastResponseStatus: null,
|
|
lastResponseContentType: '',
|
|
lastResponseJson: ''
|
|
};
|
|
}
|
|
|
|
function buildApiSourceFormViewModel(apiSource, message, currentUser, options, isEdit) {
|
|
const viewApiSource = Object.assign(buildDefaultApiSource(), apiSource || {});
|
|
const viewOptions = options || {};
|
|
|
|
return {
|
|
title: isEdit ? 'Edit API source' : 'Add API source',
|
|
active: 'api-sources',
|
|
message: message,
|
|
currentUser: currentUser || null,
|
|
apiSource: viewApiSource,
|
|
inUse: Boolean(viewApiSource.inUse),
|
|
lastResponseJson: viewOptions.lastResponseJson || viewApiSource.lastResponseJson || '',
|
|
lastPullError: viewOptions.lastPullError || viewApiSource.lastPullError || '',
|
|
messageVariant: viewOptions.messageVariant || '',
|
|
isEdit: Boolean(isEdit),
|
|
showSaveSecondaryActions: true,
|
|
deleteDisabled: !isEdit || Boolean(viewApiSource.inUse),
|
|
formAction: isEdit && viewApiSource.id ? '/data-sources/api-sources/' + viewApiSource.id : '/data-sources/api-sources',
|
|
formAttrs: isEdit && viewApiSource.id ? 'data-async-save data-async-save-refresh-target="#api-source-response-panel" data-async-save-refresh-state-url="/data-sources/api-sources/' + viewApiSource.id + '/state" data-async-save-close-url="/data-sources/api-sources" data-async-save-new-url="/data-sources/api-sources/new"' : 'data-async-save data-async-save-close-url="/data-sources/api-sources" data-async-save-new-redirect="response-url" data-async-save-new-url="/data-sources/api-sources/new"',
|
|
cancelUrl: '/data-sources/api-sources',
|
|
deleteUrl: isEdit && viewApiSource.id ? '/data-sources/api-sources/' + viewApiSource.id + '/delete' : ''
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
buildApiSourceFormViewModel: buildApiSourceFormViewModel
|
|
}; |