|
570 | 570 | return contactsList; // возврат списка контактов/ячейки |
571 | 571 | } |
572 | 572 |
|
573 | | - // ** удаление элементов/строк таблицы данных о клиентах (через "Удалить" кнопку) |
| 573 | + // ** редактирование данных клиента, элементов/строк таблицы (через "Изменить" кнопку) |
574 | 574 | const getOutputTable = document.querySelector('.crm__output-table'); |
575 | 575 |
|
| 576 | + function editClientByBtn(event) { |
| 577 | + const row = event.target.closest('tr'); // фиксация всей строки |
| 578 | + |
| 579 | + if (!row || !event.target.classList.contains('table-row-btn-edit')) return; // не нашли, возврат |
| 580 | + |
| 581 | + const clientServerId = row.getAttribute('data-server-id'); // фиксация серверного id (из атрибута) |
| 582 | + |
| 583 | + // определение клиента в "общем" массиве |
| 584 | + const clientData = updateClientsDataArr.find( |
| 585 | + (client) => client.id === clientServerId |
| 586 | + ); |
| 587 | + if (!clientData) { |
| 588 | + console.error(`Ошибка: клиент с ID ${clientServerId} не найден!`); |
| 589 | + return; |
| 590 | + } |
| 591 | + |
| 592 | + // открытие модального окна |
| 593 | + const modalWrap = createModalWindowByType('edit', clientData); |
| 594 | + crmAddContainer.append(modalWrap); |
| 595 | + |
| 596 | + // инициализация модального окна, через Bootstrap API |
| 597 | + const bootstrapModal = new bootstrap.Modal(modalWrap); |
| 598 | + bootstrapModal.show(); |
| 599 | + |
| 600 | + // принудительное удаление атрибута aria-hidden="true" с модального окна (исключение ошибки с ARIA) |
| 601 | + deleteAriaHiddenTrue(modalWrap); |
| 602 | + } |
| 603 | + |
| 604 | + // добавление обработчика события на таблицу (редактирование данных) |
| 605 | + getOutputTable.addEventListener('click', editClientByBtn); |
| 606 | + |
| 607 | + // ** удаление элементов/строк таблицы данных о клиентах (через "Удалить" кнопку) |
576 | 608 | function deleteBodyRowsByBtn(event) { |
577 | 609 | const row = event.target.closest('tr'); // фиксация всей строки |
| 610 | + |
578 | 611 | if (!row || !event.target.classList.contains('table-row-btn-delete')) |
579 | | - return; |
| 612 | + return; // не нашли, возврат |
580 | 613 |
|
581 | 614 | const clientServerId = row.getAttribute('data-server-id'); // фиксация серверного id (из атрибута) |
582 | 615 |
|
|
588 | 621 | ); |
589 | 622 | } |
590 | 623 |
|
591 | | - // добавление обработчика события на таблицу (делегирование) |
| 624 | + // добавление обработчика события на таблицу (удаление строки) |
592 | 625 | getOutputTable.addEventListener('click', deleteBodyRowsByBtn); |
593 | 626 |
|
594 | 627 | // ** удаление элементов/строк таблицы данных о клиентах (ОБЩАЯ ЛОГИКА) |
|
1323 | 1356 |
|
1324 | 1357 | crmAddContainer.append(modalWrap); // добавление в DOM |
1325 | 1358 |
|
1326 | | - // инициализация через Bootstrap API |
| 1359 | + // инициализация модального окна, через Bootstrap API |
1327 | 1360 | const bootstrapModal = new bootstrap.Modal(modalWrap); |
1328 | 1361 | bootstrapModal.show(); // отображение |
1329 | 1362 |
|
|
1545 | 1578 | modalFooterCancelBtn.setAttribute('data-bs-dismiss', 'modal'); |
1546 | 1579 |
|
1547 | 1580 | modalHeaderTitle.textContent = modalTitle; // определяется в переменной |
1548 | | - modalHeaderClientId.textContent = `ID: ${clientData.id || ''}`; // "вытягивается" из входящего объекта |
| 1581 | + modalHeaderClientId.textContent = `ID: ${ |
| 1582 | + clientData.id ? String(clientData.id).slice(-6) : '' |
| 1583 | + }`; // "вытягивается" из входящего объекта |
1549 | 1584 | modalBodySurnameInputLabel.textContent = 'Фамилия'; |
1550 | 1585 | modalBodySurnameLabelSpan.textContent = '*'; |
1551 | 1586 | modalBodySurnameFeedback.textContent = 'Заполните поле "Фамилия"!'; |
|
0 commit comments