Untitled
unknown
javascript
a year ago
2.6 kB
2
Indexable
/* Скрипт для Битрикс24 В списке пользовательских полей CRM в таблице добавляется дополнительная колонка справа. В этой колонке записывается id поля, который берется из ссылки в названии поля. */ function waitForElm(selector) { return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (document.querySelector(selector)) { resolve(document.querySelector(selector)); observer.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } async function start() { await waitForElm('#fields_list') var fieldList = document.getElementById('fields_list'); var rowCellCount, newCell, currentRow; var children, fieldId; // перебираем таблицу построчно var i, j; for (i = 0; i < fieldList.rows.length; i++) { currentRow = fieldList.rows[i]; rowCellCount = currentRow.cells.length; // ищем среди ячеек строки ту, где есть ссылка for (j = 0; j < rowCellCount; j++) { children = currentRow.cells[j].children; // проверяем что в ячейке есть ссылка, не кнопка "Действия" if(children.length > 0 && children[0].tagName == 'A' && children[0].title != 'Действия') { fieldId = children[0].href.split('/')[8]; // берем id поля из ссылки } } newCell = currentRow.insertCell(rowCellCount); // добавляем новую ячейку if(currentRow.classList.contains('bx-grid-gutter')) { // игнорируем первую не отображаемую строку } else if(currentRow.classList.contains('bx-grid-head')) { // добавляем текст в строку заголовка newCell.innerText = 'ID поля'; } else if(currentRow.classList.contains('bx-grid-footer')) { // игнорируем футер } else { newCell.innerText = fieldId; // во все прочие строки таблицы добавляем найденный id } } } start()
Editor is loading...