mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-12-27 20:04:17 +00:00
77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
class SpacyNLPModelList {
|
|
constructor () {
|
|
|
|
this.elements = {
|
|
spacyNLPModelList: document.querySelector('#spacy-nlp-model-list'),
|
|
deleteButtons: document.querySelectorAll('.delete-spacy-model-button'),
|
|
editButtons: document.querySelectorAll('.edit-spacy-model-button'),
|
|
|
|
}
|
|
}
|
|
|
|
init () {
|
|
let userId = this.elements.spacyNLPModelList.dataset.userId;
|
|
|
|
for (let deleteButton of this.elements.deleteButtons) {
|
|
deleteButton.addEventListener('click', () => {this.deleteModel(deleteButton, userId);});
|
|
}
|
|
|
|
for (let editButton of this.elements.editButtons) {
|
|
editButton.addEventListener('click', () => {this.editModel(editButton);});
|
|
}
|
|
}
|
|
|
|
deleteModel(deleteButton, userId) {
|
|
return new Promise((resolve, reject) => {
|
|
let modelId = deleteButton.dataset.modelId;
|
|
let model = app.data.users[userId].spacy_nlp_pipeline_models[modelId];
|
|
let modalElement = Utils.elementFromString(
|
|
`
|
|
<div class="modal">
|
|
<div class="modal-content">
|
|
<h4>Confirm job deletion</h4>
|
|
<p>Do you really want to delete <b>${model.title}</b>? All files will be permanently deleted!</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<a class="action-button btn modal-close waves-effect waves-light" data-action="cancel">Cancel</a>
|
|
<a class="action-button btn modal-close red waves-effect waves-light" data-action="confirm">Delete</a>
|
|
</div>
|
|
</div>
|
|
`
|
|
);
|
|
document.querySelector('#modals').appendChild(modalElement);
|
|
let modal = M.Modal.init(
|
|
modalElement,
|
|
{
|
|
dismissible: false,
|
|
onCloseEnd: () => {
|
|
modal.destroy();
|
|
modalElement.remove();
|
|
}
|
|
}
|
|
);
|
|
let confirmElement = modalElement.querySelector('.action-button[data-action="confirm"]');
|
|
confirmElement.addEventListener('click', (event) => {
|
|
let modelTitle = model.title;
|
|
fetch(`/contributions/edit-spacy-model/${modelId}`, {method: 'DELETE'})
|
|
.then(
|
|
(response) => {
|
|
app.flash(`Model "${modelTitle}" marked for deletion`, 'corpus');
|
|
resolve(response);
|
|
},
|
|
(response) => {
|
|
if (response.status === 403) {app.flash('Forbidden', 'error');}
|
|
if (response.status === 404) {app.flash('Not Found', 'error');}
|
|
reject(response);
|
|
}
|
|
);
|
|
});
|
|
modal.open();
|
|
});
|
|
}
|
|
|
|
editModel(editButton) {
|
|
window.location.href = `/contributions/edit-spacy-model/${editButton.dataset.modelId}`;
|
|
}
|
|
}
|