class DocumentsModule {
documentRow() {
return `
|
|
|
|
|
|
`;
}
addDocument(documentKey, modelClass, modelId) {
const
tbody = document.querySelector('.docs-table tbody'),
tr = document.createElement('tr')
tr.innerHTML = this.documentRow()
this.generateRows();
this.postRequest('/file/document-add/', {documentKey, modelClass, modelId}, r => {
console.log(r)
if (r.document_id)
tr.setAttribute('data-document-id', r.document_id)
})
if (tbody.querySelector('tr.empty')) {
tbody.innerHTML = ''
tbody.appendChild(tr)
} else {
const first = tbody.querySelector('tr:first-child');
tbody.insertBefore(tr, first)
}
}
postRequest(url, data, done) {
const xhr = new XMLHttpRequest();
xhr.responseType = 'json'
xhr.open('post', url)
xhr.onload = () => {
done(xhr.response)
}
xhr.send(JSON.stringify(data));
}
getRequest(url, data, done) {
data = data || {}
let query = [];
Object.keys(data).forEach(d => {
query.push(d + '=' + data[d])
})
if (query.length > 0) url = `${url}?${query.join('&')}`
const xhr = new XMLHttpRequest();
xhr.responseType = 'json'
xhr.open('get', url)
xhr.onload = () => {
done(xhr.response)
}
xhr.send();
}
uploadFile(url, data, done) {
data = data || {}
const formData = new FormData();
Object.keys(data).forEach(d => {
formData.append(d, data[d]);
})
const xhr = new XMLHttpRequest();
xhr.responseType = 'json'
xhr.open('post', url)
xhr.onload = () => {
done(xhr.response)
}
xhr.send(formData);
}
generateRows() {
document.querySelectorAll('[data-input]').forEach(e => {
this.updateInput(e)
})
}
updateInput(e) {
if (e.tagName === 'SELECT') {
e.addEventListener('change', () => {
let id = e.parentNode.parentNode.dataset.documentId;
this.postRequest('/file/document-update/', {id: id, key: e.dataset.input, value: e.value}, done => {
})
})
}
if (e.tagName === 'INPUT') {
e.addEventListener('keypress', () => {
let id = e.parentNode.parentNode.dataset.documentId;
this.postRequest('/file/document-update/', {id: id, key: e.dataset.input, value: e.value}, done => {
})
})
}
}
}
const documentObject = new DocumentsModule();
function addDocument(e) {
documentObject.addDocument(e.dataset.documentKey, e.dataset.modelClass, e.dataset.modelId)
}
function updateInput(e) {
documentObject.updateInput(e)
}
function attachAndUploadFile(e) {
const fileInput = document.createElement('input')
fileInput.setAttribute('type', 'file')
fileInput.addEventListener('change', () => {
let id = e.parentNode.parentNode.dataset.documentId;
let update = e.dataset.uploadField;
let file = fileInput.files[0];
let tdContainer = e.parentNode;
documentObject.uploadFile('/file/document-file-upload/', {
id,
update,
file
}, data => {
console.log(data);
if(data.id && data.file_path) {
if (update === 'file_name') {
tdContainer.innerHTML = ` ${data.extension} сваляне
изтриване`;
} else if (update === 'file_name_en') {
tdContainer.innerHTML = ` ${data.extension} сваляне
изтриване`;
}
flash.success('Файлът е качен');
} else {
flash.error('Грешка при качване на файла');
}
})
})
fileInput.click()
}
function deleteUploadedFile(e) {
let td = e.parentNode;
let id = e.dataset.documentId;
let deleteField = e.dataset.deleteField;
modal.confirm('Сигурни ли сте, че искате да изтриете този файл?', function () {
documentObject.postRequest('/file/document-file-delete/', {id, deleteField}, done => {
td.innerHTML = ``
flash.success('Файлът е изтрит');
})
})
}
function deleteDocument(e) {
let id = e.parentNode.parentNode.dataset.documentId;
console.log(id);
if(id) {
modal.confirm('Сигурни ли сте, че искате да изтриете този документ?', function () {
let tr = e.parentNode.parentNode;
documentObject.postRequest('/file/document-delete/', {id}, done => {
tr.remove();
flash.success('Документът е изтрит');
let rows = document.querySelectorAll('.docs-table tbody tr');
if(rows.length === 0) {
let tbody = document.querySelector('.docs-table tbody');
tbody.innerHTML =
`
|
Няма добавени документи
|
`;
}
})
})
}
}
document.addEventListener('DOMContentLoaded', () => {
documentObject.generateRows()
})