Skip to content

Commit 7be410c

Browse files
committed
2 parents e02eae1 + aa1f0b4 commit 7be410c

File tree

3 files changed

+40
-221
lines changed

3 files changed

+40
-221
lines changed

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/css/crm-output.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,6 @@
224224

225225
.crm__output-table-body-cell_contacts-item-i {
226226
color: var(--light-purple);
227-
opacity: 0.7;
228227
}
229228

230229
.crm__output-table-body-row .crm__output-table-body-cell_actions-btns {
@@ -353,7 +352,6 @@
353352

354353
.crm__output-table-body-cell_contacts-item-i:hover:not(:active) {
355354
color: var(--dark-purple);
356-
opacity: 0.7;
357355
}
358356

359357

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/index.js

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -570,13 +570,46 @@
570570
return contactsList; // возврат списка контактов/ячейки
571571
}
572572

573-
// ** удаление элементов/строк таблицы данных о клиентах (через "Удалить" кнопку)
573+
// ** редактирование данных клиента, элементов/строк таблицы (через "Изменить" кнопку)
574574
const getOutputTable = document.querySelector('.crm__output-table');
575575

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+
// ** удаление элементов/строк таблицы данных о клиентах (через "Удалить" кнопку)
576608
function deleteBodyRowsByBtn(event) {
577609
const row = event.target.closest('tr'); // фиксация всей строки
610+
578611
if (!row || !event.target.classList.contains('table-row-btn-delete'))
579-
return;
612+
return; // не нашли, возврат
580613

581614
const clientServerId = row.getAttribute('data-server-id'); // фиксация серверного id (из атрибута)
582615

@@ -588,7 +621,7 @@
588621
);
589622
}
590623

591-
// добавление обработчика события на таблицу (делегирование)
624+
// добавление обработчика события на таблицу (удаление строки)
592625
getOutputTable.addEventListener('click', deleteBodyRowsByBtn);
593626

594627
// ** удаление элементов/строк таблицы данных о клиентах (ОБЩАЯ ЛОГИКА)
@@ -1323,7 +1356,7 @@
13231356

13241357
crmAddContainer.append(modalWrap); // добавление в DOM
13251358

1326-
// инициализация через Bootstrap API
1359+
// инициализация модального окна, через Bootstrap API
13271360
const bootstrapModal = new bootstrap.Modal(modalWrap);
13281361
bootstrapModal.show(); // отображение
13291362

@@ -1545,7 +1578,9 @@
15451578
modalFooterCancelBtn.setAttribute('data-bs-dismiss', 'modal');
15461579

15471580
modalHeaderTitle.textContent = modalTitle; // определяется в переменной
1548-
modalHeaderClientId.textContent = `ID: ${clientData.id || ''}`; // "вытягивается" из входящего объекта
1581+
modalHeaderClientId.textContent = `ID: ${
1582+
clientData.id ? String(clientData.id).slice(-6) : ''
1583+
}`; // "вытягивается" из входящего объекта
15491584
modalBodySurnameInputLabel.textContent = 'Фамилия';
15501585
modalBodySurnameLabelSpan.textContent = '*';
15511586
modalBodySurnameFeedback.textContent = 'Заполните поле "Фамилия"!';

core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js/temp.js

Lines changed: 0 additions & 214 deletions
This file was deleted.

0 commit comments

Comments
 (0)