39 lines
1.6 KiB
JavaScript
39 lines
1.6 KiB
JavaScript
/* global axios, bootstrap */
|
|
|
|
const extractionListEl = document.getElementById('extraction-list')
|
|
|
|
extractionListEl.addEventListener('click', onListClick)
|
|
|
|
async function onListClick({ target }) {
|
|
if (target.closest('.btn-delete')) {
|
|
const extractionEl = target.closest('.task')
|
|
const extractionId = extractionEl.dataset.id
|
|
const alertModal = new bootstrap.Modal(
|
|
document.getElementById('alert-modal')
|
|
)
|
|
alertModal.toggle()
|
|
const modalUseBtn = document.getElementById('modal-use-btn')
|
|
modalUseBtn.addEventListener('click', async () => {
|
|
await axios.delete(`/api/v1/extraction/${extractionId}`)
|
|
extractionEl.remove()
|
|
// TODO This (page refresh) is an unneeded workaround for an otherwise simple user friendlier solution.
|
|
location.reload()
|
|
})
|
|
} else if (target.closest('.btn-begin')) {
|
|
const extractionEl = target.closest('.task')
|
|
const extractionId = extractionEl.dataset.id
|
|
await axios.put(`/api/v1/extraction/${extractionId}/begin`)
|
|
const beginExtractionModalEl = document.getElementById('begin-response')
|
|
const responseModal = new bootstrap.Modal(beginExtractionModalEl)
|
|
responseModal.toggle()
|
|
// TODO This (page refresh) is a temporary hack. Replace with proper UI updating logic.
|
|
beginExtractionModalEl.addEventListener('hide.bs.modal', () =>
|
|
location.reload()
|
|
)
|
|
} else if (target.classList.contains('btn-duplicate')) {
|
|
const extractionEl = target.closest('.task')
|
|
const extractionId = extractionEl.dataset.id
|
|
await axios.post(`/api/v1/extraction/${extractionId}/duplicate`)
|
|
}
|
|
}
|