Changeset View
Changeset View
Standalone View
Standalone View
swh/web/assets/src/bundles/save/index.js
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | saveRequestsTable = $('#swh-origin-save-requests') | ||||
}, | }, | ||||
{ | { | ||||
data: 'save_request_status', | data: 'save_request_status', | ||||
name: 'status' | name: 'status' | ||||
}, | }, | ||||
{ | { | ||||
data: 'save_task_status', | data: 'save_task_status', | ||||
name: 'loading_task_status' | name: 'loading_task_status' | ||||
}, | |||||
{ | |||||
name: 'info', | |||||
render: (data, type, row) => { | |||||
if (row.save_task_status === 'succeed' || row.save_task_status === 'failed') { | |||||
return `<i class="mdi mdi-information-outline swh-save-request-info" ` + | |||||
'aria-hidden="true" style="cursor: pointer"' + | |||||
`onclick="swh.save.displaySaveRequestInfo(event, ${row.id})"></i>`; | |||||
} else { | |||||
return ''; | |||||
} | |||||
} | |||||
} | } | ||||
], | ], | ||||
scrollY: '50vh', | scrollY: '50vh', | ||||
scrollCollapse: true, | scrollCollapse: true, | ||||
order: [[0, 'desc']], | order: [[0, 'desc']], | ||||
responsive: { | responsive: { | ||||
details: { | details: { | ||||
type: 'none' | type: 'none' | ||||
} | } | ||||
} | } | ||||
}); | }); | ||||
swh.webapp.addJumpToPagePopoverToDataTable(saveRequestsTable); | swh.webapp.addJumpToPagePopoverToDataTable(saveRequestsTable); | ||||
$('#swh-origin-save-requests-list-tab').on('shown.bs.tab', () => { | $('#swh-origin-save-requests-list-tab').on('shown.bs.tab', () => { | ||||
saveRequestsTable.draw(); | saveRequestsTable.draw(); | ||||
window.location.hash = '#requests'; | window.location.hash = '#requests'; | ||||
}); | }); | ||||
$('#swh-origin-save-request-create-tab').on('shown.bs.tab', () => { | $('#swh-origin-save-request-help-tab').on('shown.bs.tab', () => { | ||||
removeUrlFragment(); | removeUrlFragment(); | ||||
$('.swh-save-request-info').popover('dispose'); | |||||
}); | }); | ||||
let saveRequestAcceptedAlert = htmlAlert( | let saveRequestAcceptedAlert = htmlAlert( | ||||
'success', | 'success', | ||||
'The "save code now" request has been accepted and will be processed as soon as possible.', | 'The "save code now" request has been accepted and will be processed as soon as possible.', | ||||
true | true | ||||
); | ); | ||||
▲ Show 20 Lines • Show All 153 Lines • ▼ Show 20 Lines | $('#swh-take-new-snapshot-form').submit(event => { | ||||
$('#swh-take-new-snapshot-request-status').html(newSnapshotRequestRateLimitAlert); | $('#swh-take-new-snapshot-request-status').html(newSnapshotRequestRateLimitAlert); | ||||
} else { | } else { | ||||
$('#swh-take-new-snapshot-request-status').html(newSnapshotRequestUnknownErrorAlert); | $('#swh-take-new-snapshot-request-status').html(newSnapshotRequestUnknownErrorAlert); | ||||
} | } | ||||
}); | }); | ||||
}); | }); | ||||
}); | }); | ||||
} | } | ||||
export function displaySaveRequestInfo(event, saveRequestId) { | |||||
event.stopPropagation(); | |||||
const saveRequestTaskInfoUrl = Urls.origin_save_task_info(saveRequestId); | |||||
// close popover when clicking again on the info icon | |||||
if ($(event.target).data('bs.popover')) { | |||||
$(event.target).popover('dispose'); | |||||
return; | |||||
} | |||||
$('.swh-save-request-info').popover('dispose'); | |||||
$(event.target).popover({ | |||||
animation: false, | |||||
boundary: 'viewport', | |||||
container: 'body', | |||||
title: 'Save request task information ' + | |||||
'<i style="cursor: pointer; position: absolute; right: 1rem;" ' + | |||||
`class="mdi mdi-close swh-save-request-info-close"></i>`, | |||||
content: `<div class="swh-popover swh-save-request-info-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).on('shown.bs.popover', function() { | |||||
const popoverId = $(this).attr('aria-describedby'); | |||||
$(`#${popoverId} .mdi-close`).click(() => { | |||||
$(this).popover('dispose'); | |||||
}); | |||||
}); | |||||
$(event.target).popover('show'); | |||||
fetch(saveRequestTaskInfoUrl) | |||||
.then(response => response.json()) | |||||
.then(saveRequestTaskInfo => { | |||||
let content; | |||||
if ($.isEmptyObject(saveRequestTaskInfo)) { | |||||
content = 'Not available'; | |||||
} else { | |||||
let saveRequestInfo = []; | |||||
if (saveRequestTaskInfo.type) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task type', | |||||
value: saveRequestTaskInfo.type | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.arguments) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task arguments', | |||||
value: JSON.stringify(saveRequestTaskInfo.arguments, null, 2) | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.id) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task id', | |||||
value: saveRequestTaskInfo.id | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.backend_id) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task backend id', | |||||
value: saveRequestTaskInfo.backend_id | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.scheduled) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task scheduling date', | |||||
value: new Date(saveRequestTaskInfo.scheduled).toLocaleString() | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.started) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task start date', | |||||
value: new Date(saveRequestTaskInfo.started).toLocaleString() | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.ended) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task termination date', | |||||
value: new Date(saveRequestTaskInfo.ended).toLocaleString() | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.duration) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task duration', | |||||
value: saveRequestTaskInfo.duration + ' seconds' | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.worker) { | |||||
saveRequestInfo.push({ | |||||
key: 'Task executor', | |||||
value: saveRequestTaskInfo.worker | |||||
}); | |||||
} | |||||
if (saveRequestTaskInfo.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'); | |||||
}); | |||||
} |