diff --git a/server/routes/api.js b/server/routes/api.js index 1378f57..7978d4d 100644 --- a/server/routes/api.js +++ b/server/routes/api.js @@ -110,7 +110,7 @@ module.exports = function(server, db) { server.get('/api/buyers/:bill_id', checkAuthenticated, async (req, res) => { try { - const buyers = await db.collection('buyers').find({bill_id: req.params.bill_id}).toArray(); + const buyers = await db.collection('buyers').findOne({bill_id: req.params.bill_id}); res.json(buyers); } catch { res.status(500).render('main/404'); diff --git a/src/admin/index.js b/src/admin/index.js index 186c89f..e28cd26 100644 --- a/src/admin/index.js +++ b/src/admin/index.js @@ -28,7 +28,7 @@ const administrator = new AdministratorComponent('administrator'); const itemEdit = new ItemEditModal('editItemModal', 'edit', 'editItemClose', {loader}); const itemDelete = new ItemDeleteModal('deleteItemModal', 'edit', 'deleteItemClose'); const categoryEdit = new CategoryEditModal('editCategoryModal', 'editCategory_select', 'editCategoryClose'); -const billData = new BillDataModal('billDataModal', 'dashboard', 'billDataClose'); +const billData = new BillDataModal('billDataModal', 'dashboard', 'billDataClose', {loader}); const materialize = new MaterializeConfig(); console.log('Control-Panel v1.0.0'); \ No newline at end of file diff --git a/src/admin/modals/bill-data.modal.js b/src/admin/modals/bill-data.modal.js index b1b7ec2..9c72cc4 100644 --- a/src/admin/modals/bill-data.modal.js +++ b/src/admin/modals/bill-data.modal.js @@ -1,8 +1,10 @@ import { Modal } from "../core/modal"; +import { apiService } from "../services/api.service"; export class BillDataModal extends Modal { - constructor(id, open, close) { + constructor(id, open, close, {loader}) { super(id, open, close); + this.loader = loader } show(e) { @@ -22,16 +24,23 @@ export class BillDataModal extends Modal { this.$data = this.$el.querySelector('#data'); } - openHandler(e) { - const data = JSON.parse(e.target.parentNode.parentNode.dataset.info); - this.$bill_id.value = data.bill_id; - this.$email.value = data.email; - this.$method.value = data.method; - this.$date.value = data.date; - this.$amount.value = data.amount; - this.$data.textContent = data.data.split(',').join('\n'); + async openHandler(e) { + try { + this.loader.show(); + const buyer = await apiService.getBuyerById(e.target.parentNode.parentNode.dataset.id) - M.textareaAutoResize(this.$data); - M.updateTextFields(); + this.$bill_id.value = buyer.bill_id; + this.$email.value = buyer.email; + this.$method.value = buyer.method[0].toUpperCase() + buyer.method.slice(1); + this.$date.value = buyer.date; + this.$amount.value = buyer.amount; + this.$data.textContent = buyer.data.join('\n'); + + M.textareaAutoResize(this.$data); + M.updateTextFields(); + this.loader.hide(); + } catch (error) { + alert('Произошла ошибка, обновите страницу') + } } } \ No newline at end of file diff --git a/src/admin/services/api.service.js b/src/admin/services/api.service.js index 5347a9c..406a709 100644 --- a/src/admin/services/api.service.js +++ b/src/admin/services/api.service.js @@ -106,6 +106,15 @@ class ApiService { } } + async getBuyerById(id) { + try { + const request = `${this.url}/api/buyers/${id}`; + return useRequest(request); + } catch (error) { + console.log(error) + } + } + async getBuyersOffset(page) { try { const request = `${this.url}/api/buyers/page/${page}`; diff --git a/src/admin/templates/buyers.template.js b/src/admin/templates/buyers.template.js index e280257..f16e41e 100644 --- a/src/admin/templates/buyers.template.js +++ b/src/admin/templates/buyers.template.js @@ -1,6 +1,6 @@ export function renderBuyers(buyers) { if (!buyers.error) { - return buyers.map(buyer => `