• Как присвоить стиль через JS?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    В вашем коде сразу несколько ошибок.

    Во-первых, вы предполагаете что поведение браузера эквивалентно коду на странице. Т.е. одно и то же действие в браузере и в коде дают одинаковый результат, но это не так. Браузер отрисовывает страницу по частям и нет никаких гарантий что в момент выполнения вашего кода (фрагмент document.querySelector('.crm-kanban-item-repeated')) на странице существует хотя бы один элемент с подобным селектором. Более того скажу сразу - этот элемент не существует, так как он добавляется позже через javascript.
    Вам нужно почитать больше про js и про то как браузер рисует страницу - без этого вы далеко не уйдете.

    Во-вторых, вы полагаете что у вас всего 1 элемент (querySelector - вернет первый(!) элемент подходящий под условия), а у вас их может быть много. Т.е. нужно использовать как минимум querySelectorAll. Вы так же полагаете что наличие ноды автоматически делает элемент "повторным", что совершенно не так. Ноду можно вывести у любого элемента, но повторным он от этого не станет.

    В-третьих, даже если вы окрасите элементы, то после перезагрузки данных (не страницы), например при применении фильтра, ваш код не выполнится еще раз и не будет иметь силы.

    Предположим наша задача - покрасить элементы в красный если они повторные.

    Для начала определимся как мы будем красить: я полагаю что проще всего будет создать какой-нибудь css-класс, который будет отрабатывать, если карточка подходит под указанные условия.
    Я буду использовать кастомный класс flah_repeated и для этого я создам css правило:

    .crm-kanban-item.flah_repeated {
    	background-color: red !important;
    }


    Затем я поищу событие, которое отрабатывает при отрисовке карточки канбана. Используя события я могу сразу гарантировать следующие вещи:
    1. Скрипт будет отрабатывать только там где есть канбан. То есть мы не будем искать элементы на других страницах чтобы не повредить их в случае ошибки.
    2. Скрипт будет отрабатывать только когда канбан уже отрисован. То есть все элементы уже есть на странице и мы можем не боятся их отсутствия
    3. Скрипт будет отрабатывать при повторной отрисовке. Т.е. примнение фильтра так же вызовет событие и мы еще раз сможет сделать то что нужно.

    Затем, когда я найду событие, скорее всего оно может быть использовано и в других сущностях, где выполнять подобное мне не нужно, поэтому мне нужно подумать как ограничить действие только нужными элементами

    BX.addCustomEvent("Kanban.Grid:onRender", function(kanbanGrid){
    
    	if ( kanbanGrid.getData().entityType != 'LEAD' )
    	{
    		return;
    	}
    
    	let kanbanItems = kanbanGrid.getItems();
    
    	for (let key in kanbanItems)
    	{
    		if ( key < 1 ) continue;
    
    		let kanbanItem = kanbanItems[key];
    
    		if ( kanbanItem.getDataKey('return') )
    		{
    			BX.addClass(kanbanItem.container, "flah_repeated");
    		}
    	}
    });


    Ну и когда все будет готово, я сделаю расширение (extension) и подключу его на событии пролога, чтобы добавлять к каждой странице.

    Таким образом я не изменю публичную часть и добьюсь того что требовалось в изначальной задаче.
    Ответ написан
    4 комментария
  • Есть ли разница в коннекторах SATA для HDD 2.5 и 3.5?

    Melkij
    @Melkij
    PostgreSQL DBA
    Коннектор интерфейса - идентичен полностью.
    Коннектор питания - идентичен, но могут разведены не все линии питания.

    Если желаемый переходник даёт только 7-пиновый коннектор для данных - совместимы без проблем. Соответственно, питание при этом подключается каким-то другим способом.
    Если переходник даёт и данные и питание (при этом, только от одного или пары USB) - совместимы механически, но работать не будет. В этом адаптере нет +12В питания, только +5В, обеспечиваемые портом USB. Большинству 2,5" дисков этого достаточно (исключение - серверные), 3,5" - нет.
    Если помимо USB подключается ещё чем-то - то надо отдельно уточнять, чем и подаёт ли на диск +12В
    Ответ написан
    Комментировать
  • 2160p H.265 видео на старом железе?

    nidalee
    @nidalee
    Я бы сказал, что на таком железе оно обязано тормозить. Купите видеокарту с поддержкой аппаратного декодирования 8/10-bit HEVC (H.265) 4:2:0 и все будет работать хорошо. Можно самую дешёвую с рук.
    Поддержку этого самого декодирования картами можете посмотреть здесь (NVDEC Support Matrix)
    Ответ написан
    2 комментария