Skip to content

Commit b8ddf3a

Browse files
committed
[PRAC/cont] Add highlighting for "FIO" matches
Organiz highlighting of matches in tbl/cells (accord search-input data). Worth noting: - thus improving the UX. core: B-3 / JS-BL
1 parent e41356b commit b8ddf3a

File tree

1 file changed

+20
-7
lines changed
  • core-courses/3-js-basic-level/practicum-js-basic-level/sb-crm-client/js

1 file changed

+20
-7
lines changed

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,6 @@
278278
let updateClientsDataArr = [];
279279

280280
function addClientsToTable(clientsServerData = []) {
281-
// ??
282-
// const selectedBodyRows = getSelectedBodyRows(); // сохранение выделенных body-строк (если такие есть)
283-
284281
outTableBody.innerHTML = ''; // предварительная очистка таблицы
285282
updateClientsDataArr = correctInitArr(clientsServerData);
286283

@@ -293,10 +290,6 @@
293290
outTableBody.append(clientTableTrRow);
294291
}
295292
}
296-
297-
// ??
298-
// addClickListenersToBodyRows(); // добавление прослушки для всех строк (кроме заглавной), при компоновке, после пере-компоновки (новой отрисовки), для возможности выделения по клику
299-
// restoreSelectedBodyRows(selectedBodyRows); // восстановление выделенных body-строк (если такие были)
300293
}
301294

302295
// ** корректировка исходного/серверного массива клиентов (обработка ID, добавление свойства fullName и временных свойств)
@@ -3121,6 +3114,7 @@
31213114
}
31223115

31233116
addClientsToTable(updateClientsDataArr); // пере-рисовка (пере-компоновка) таблицы клиентов согласно фильтрации
3117+
highlightSearchMatches(searchValue); // выделение/подсветка совпадений в строке ФИО (согласно вводимых данных в search-инпут)
31243118
}
31253119

31263120
// отработка "дебаунс" задержки (если много данных, что бы снизить нагрузку)
@@ -3130,4 +3124,23 @@
31303124
clearTimeout(debounceTimer); // очистка предыдущей задержки
31313125
debounceTimer = setTimeout(filterClientsBySearchForm, 600); // применение фильтрации не сразу
31323126
});
3127+
3128+
// ** организация выделения/подсветки совпадений в ФИО ячейках/таблице (согласно вводимых данных в search-инпут)
3129+
function highlightSearchMatches(searchValue) {
3130+
const allFioCells = document.querySelectorAll(
3131+
'.crm__output-table-body-cell_fio'
3132+
); // фиксация ФИО строк
3133+
3134+
allFioCells.forEach((cell) => {
3135+
cell.innerHTML = cell.textContent; // очистка предыдущих выделений (если были)
3136+
3137+
if (searchValue) {
3138+
const regex = new RegExp(`(${searchValue})`, 'gi'); // логика выделения/подсветки.. добавления background(a)
3139+
cell.innerHTML = cell.textContent.replace(
3140+
regex,
3141+
`<span style="background: #9873FF; color: #fff; padding: 1px 2px;">$1</span>`
3142+
);
3143+
}
3144+
});
3145+
}
31333146
})();

0 commit comments

Comments
 (0)