Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/src/bundles/admin/origin-save.js
Show All 35 Lines | authorizedOriginTable = $('#swh-authorized-origin-urls').DataTable({ | ||||
serverSide: true, | serverSide: true, | ||||
ajax: Urls.admin_origin_save_authorized_urls_list(), | ajax: Urls.admin_origin_save_authorized_urls_list(), | ||||
columns: [{data: 'url', name: 'url'}], | columns: [{data: 'url', name: 'url'}], | ||||
scrollY: '50vh', | scrollY: '50vh', | ||||
scrollCollapse: true, | scrollCollapse: true, | ||||
info: false | info: false | ||||
}); | }); | ||||
enableRowSelection('#swh-authorized-origin-urls'); | enableRowSelection('#swh-authorized-origin-urls'); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(authorizedOriginTable); | |||||
unauthorizedOriginTable = $('#swh-unauthorized-origin-urls').DataTable({ | unauthorizedOriginTable = $('#swh-unauthorized-origin-urls').DataTable({ | ||||
serverSide: true, | serverSide: true, | ||||
ajax: Urls.admin_origin_save_unauthorized_urls_list(), | ajax: Urls.admin_origin_save_unauthorized_urls_list(), | ||||
columns: [{data: 'url', name: 'url'}], | columns: [{data: 'url', name: 'url'}], | ||||
scrollY: '50vh', | scrollY: '50vh', | ||||
scrollCollapse: true, | scrollCollapse: true, | ||||
info: false | info: false | ||||
}); | }); | ||||
enableRowSelection('#swh-unauthorized-origin-urls'); | enableRowSelection('#swh-unauthorized-origin-urls'); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(unauthorizedOriginTable); | |||||
let columnsData = [ | let columnsData = [ | ||||
{ | { | ||||
data: 'id', | data: 'id', | ||||
name: 'id', | name: 'id', | ||||
visible: false, | visible: false, | ||||
searchable: false | searchable: false | ||||
}, | }, | ||||
Show All 39 Lines | pendingSaveRequestsTable = $('#swh-origin-save-pending-requests').DataTable({ | ||||
order: [[0, 'desc']], | order: [[0, 'desc']], | ||||
responsive: { | responsive: { | ||||
details: { | details: { | ||||
type: 'none' | type: 'none' | ||||
} | } | ||||
} | } | ||||
}); | }); | ||||
enableRowSelection('#swh-origin-save-pending-requests'); | enableRowSelection('#swh-origin-save-pending-requests'); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(pendingSaveRequestsTable); | |||||
rejectedSaveRequestsTable = $('#swh-origin-save-rejected-requests').DataTable({ | rejectedSaveRequestsTable = $('#swh-origin-save-rejected-requests').DataTable({ | ||||
serverSide: true, | serverSide: true, | ||||
processing: true, | processing: true, | ||||
language: { | language: { | ||||
processing: `<img src="${swhSpinnerSrc}"></img>` | processing: `<img src="${swhSpinnerSrc}"></img>` | ||||
}, | }, | ||||
ajax: Urls.origin_save_requests_list('rejected'), | ajax: Urls.origin_save_requests_list('rejected'), | ||||
searchDelay: 1000, | searchDelay: 1000, | ||||
columns: columnsData, | columns: columnsData, | ||||
scrollY: '50vh', | scrollY: '50vh', | ||||
scrollCollapse: true, | scrollCollapse: true, | ||||
order: [[0, 'desc']], | order: [[0, 'desc']], | ||||
responsive: { | responsive: { | ||||
details: { | details: { | ||||
type: 'none' | type: 'none' | ||||
} | } | ||||
} | } | ||||
}); | }); | ||||
enableRowSelection('#swh-origin-save-rejected-requests'); | enableRowSelection('#swh-origin-save-rejected-requests'); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(rejectedSaveRequestsTable); | |||||
columnsData.push({ | columnsData.push({ | ||||
data: 'save_task_status', | data: 'save_task_status', | ||||
name: 'save_task_status', | name: 'save_task_status', | ||||
render: (data, type, row) => { | render: (data, type, row) => { | ||||
if (data === 'succeed') { | if (data === 'succeed') { | ||||
let browseOriginUrl = Urls.browse_origin(row.origin_url); | let browseOriginUrl = Urls.browse_origin(row.origin_url); | ||||
return `<a href="${browseOriginUrl}">${data}</a>`; | return `<a href="${browseOriginUrl}">${data}</a>`; | ||||
} | } | ||||
return data; | return data; | ||||
} | } | ||||
}); | }); | ||||
columnsData.push({ | |||||
name: 'info', | |||||
render: (data, type, row) => { | |||||
if (row.save_task_status === 'succeed' || row.save_task_status === 'failed') { | |||||
return '<i class="fa fa-info-circle swh-save-request-info" aria-hidden="true" style="cursor: pointer"' + | |||||
`onclick="swh.admin.displaySaveRequestInfo(event, ${row.id})"></i>`; | |||||
} else { | |||||
return ''; | |||||
} | |||||
} | |||||
}); | |||||
acceptedSaveRequestsTable = $('#swh-origin-save-accepted-requests').DataTable({ | acceptedSaveRequestsTable = $('#swh-origin-save-accepted-requests').DataTable({ | ||||
serverSide: true, | serverSide: true, | ||||
processing: true, | processing: true, | ||||
language: { | language: { | ||||
processing: `<img src="${swhSpinnerSrc}"></img>` | processing: `<img src="${swhSpinnerSrc}"></img>` | ||||
}, | }, | ||||
ajax: Urls.origin_save_requests_list('accepted'), | ajax: Urls.origin_save_requests_list('accepted'), | ||||
searchDelay: 1000, | searchDelay: 1000, | ||||
columns: columnsData, | columns: columnsData, | ||||
scrollY: '50vh', | scrollY: '50vh', | ||||
scrollCollapse: true, | scrollCollapse: true, | ||||
order: [[0, 'desc']], | order: [[0, 'desc']], | ||||
responsive: { | responsive: { | ||||
details: { | details: { | ||||
type: 'none' | type: 'none' | ||||
} | } | ||||
} | } | ||||
}); | }); | ||||
enableRowSelection('#swh-origin-save-accepted-requests'); | enableRowSelection('#swh-origin-save-accepted-requests'); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(acceptedSaveRequestsTable); | |||||
$('#swh-origin-save-requests-nav-item').on('shown.bs.tab', () => { | $('#swh-origin-save-requests-nav-item').on('shown.bs.tab', () => { | ||||
pendingSaveRequestsTable.draw(); | pendingSaveRequestsTable.draw(); | ||||
}); | }); | ||||
$('#swh-origin-save-url-filters-nav-item').on('shown.bs.tab', () => { | $('#swh-origin-save-url-filters-nav-item').on('shown.bs.tab', () => { | ||||
authorizedOriginTable.draw(); | authorizedOriginTable.draw(); | ||||
}); | }); | ||||
Show All 25 Lines | $(document).ready(() => { | ||||
$('#swh-save-requests-accepted-tab').click(() => { | $('#swh-save-requests-accepted-tab').click(() => { | ||||
acceptedSaveRequestsTable.ajax.reload(null, false); | acceptedSaveRequestsTable.ajax.reload(null, false); | ||||
}); | }); | ||||
$('#swh-save-requests-rejected-tab').click(() => { | $('#swh-save-requests-rejected-tab').click(() => { | ||||
rejectedSaveRequestsTable.ajax.reload(null, false); | rejectedSaveRequestsTable.ajax.reload(null, false); | ||||
}); | }); | ||||
$('body').on('click', e => { | |||||
if ($(e.target).parents('.popover').length > 0) { | |||||
event.stopPropagation(); | |||||
} else if ($(e.target).parents('.swh-save-request-info').length === 0) { | |||||
$('.swh-save-request-info').popover('dispose'); | |||||
} | |||||
}); | |||||
}); | }); | ||||
} | } | ||||
export function addAuthorizedOriginUrl() { | export function addAuthorizedOriginUrl() { | ||||
let originUrl = $('#swh-authorized-url-prefix').val(); | let originUrl = $('#swh-authorized-url-prefix').val(); | ||||
let addOriginUrl = Urls.admin_origin_save_add_authorized_url(originUrl); | let addOriginUrl = Urls.admin_origin_save_add_authorized_url(originUrl); | ||||
csrfPost(addOriginUrl) | csrfPost(addOriginUrl) | ||||
.then(handleFetchError) | .then(handleFetchError) | ||||
▲ Show 20 Lines • Show All 117 Lines • ▼ Show 20 Lines | |||||
export function removeAcceptedOriginSaveRequest() { | export function removeAcceptedOriginSaveRequest() { | ||||
removeOriginSaveRequest(acceptedSaveRequestsTable); | removeOriginSaveRequest(acceptedSaveRequestsTable); | ||||
} | } | ||||
export function removeRejectedOriginSaveRequest() { | export function removeRejectedOriginSaveRequest() { | ||||
removeOriginSaveRequest(rejectedSaveRequestsTable); | removeOriginSaveRequest(rejectedSaveRequestsTable); | ||||
} | } | ||||
export function displaySaveRequestInfo(event, saveRequestId) { | |||||
event.stopPropagation(); | |||||
const saveRequestTaskInfoUrl = Urls.admin_origin_save_task_info(saveRequestId); | |||||
$('.swh-save-request-info').popover('dispose'); | |||||
$(event.target).popover({ | |||||
'title': 'Save request task information', | |||||
'content': `<div class="swh-popover"> | |||||
<div class="text-center"> | |||||
<img src=${swhSpinnerSrc}></img> | |||||
<p>Fetching task information ...</p> | |||||
</div> | |||||
</div>`, | |||||
'html': true, | |||||
'placement': 'left', | |||||
'sanitizeFn': swh.webapp.filterXSS | |||||
}); | |||||
$(event.target).popover('show'); | |||||
fetch(saveRequestTaskInfoUrl) | |||||
.then(response => response.json()) | |||||
.then(saveRequestTaskInfo => { | |||||
let content; | |||||
if ($.isEmptyObject(saveRequestTaskInfo)) { | |||||
content = 'Not available'; | |||||
} else { | |||||
let saveRequestInfo = []; | |||||
saveRequestInfo.push({ | |||||
key: 'Task type', | |||||
value: saveRequestTaskInfo.type | |||||
}); | |||||
if (saveRequestTaskInfo.hasOwnProperty('task_name')) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task name', | |||||
value: saveRequestTaskInfo.name | |||||
}); | |||||
} | |||||
saveRequestInfo.push({ | |||||
key: 'Task arguments', | |||||
value: JSON.stringify(saveRequestTaskInfo.arguments, null, 2) | |||||
}); | |||||
saveRequestInfo.push({ | |||||
key: 'Task id', | |||||
value: saveRequestTaskInfo.id | |||||
}); | |||||
saveRequestInfo.push({ | |||||
key: 'Task backend id', | |||||
value: saveRequestTaskInfo.backend_id | |||||
}); | |||||
saveRequestInfo.push({ | |||||
key: 'Task scheduling date', | |||||
value: new Date(saveRequestTaskInfo.scheduled).toLocaleString() | |||||
}); | |||||
saveRequestInfo.push({ | |||||
key: 'Task termination date', | |||||
value: new Date(saveRequestTaskInfo.ended).toLocaleString() | |||||
}); | |||||
if (saveRequestTaskInfo.hasOwnProperty('duration')) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task duration', | |||||
value: saveRequestTaskInfo.duration + ' s' | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.hasOwnProperty('worker')) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task executor', | |||||
value: saveRequestTaskInfo.worker | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.hasOwnProperty('message')) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task log', | |||||
value: saveRequestTaskInfo.message | |||||
}); | |||||
} | |||||
content = '<table class="table"><tbody>'; | |||||
for (let info of saveRequestInfo) { | |||||
content += | |||||
`<tr> | |||||
<th class="swh-metadata-table-row swh-metadata-table-key">${info.key}</th> | |||||
<td class="swh-metadata-table-row swh-metadata-table-value"> | |||||
<pre>${info.value}</pre> | |||||
</td> | |||||
</tr>`; | |||||
} | |||||
content += '</tbody></table>'; | |||||
} | |||||
$('.swh-popover').html(content); | |||||
$(event.target).popover('update'); | |||||
}); | |||||
} |