Изменение в построенном DOM

Просмотр 15 сообщений - с 1 по 15 (из 48 всего)
  • Автор
    Записи
  • #43958
    manjey73
    Участник

    Собственно на этом скрине Два дефиса справа мы видим то, что построил Джек 🙂 (domCreated)

    Теперь вопроc, что и как писать в domUpdated, чтобы манипулировать данными именно здесь? а не снова обращаться к исходнику faceplate-а ?

    Либо вообще ничего не писать в domUpdated, а что-то писать в dataUpdated…

    В общем цель построить все ОДИН раз в domCreated и нигде больше. в остальных только менять значения.

    • Тема изменена 3 недели назад пользователем Mikhail.
    #43969
    Mikhail
    Модератор

    domUpdated чаще всего пустой,
    dataUpdated — здесь пишется изменение DOM-объекта при изменении данных
    В качестве примера посмотрите схему ExtraCompTest.mim, скрипт компонента с идентификатором 6.

    #43977
    manjey73
    Участник
    dataUpdated(args) {
        const props = args.component.properties;
        const customData = args.component.customData;
        const cnlData = args.dataProvider.getCurData(props.inCnlNum);
        const shining = cnlData.d.stat > 0 && cnlData.d.val > 0;
    
        if (customData.shining !== shining) {
          customData.shining = shining;
          args.component.dom.find("svg path").attr("fill", shining ? "gold" : "silver");
        }
      }

    Пока мало о чем говорит, тот же args.component — судя по работе в domUpdated все данные брались из исходника разметки фейсплейта. Каким образом тут дерево уже отрисованного web ?

    #43978
    manjey73
    Участник

    Все ясно, та же шляпа, Скрипт берет данные из исходника разметки, соответственно изменить только параметр цвета не получится, не перестраивая полностью все.

    масло маслянное блин 🙁

    Еще раз, откройте скрин «Два дефиса» — Как получить доступ ТУДА и менять ТАМ в уже построенном ?
    Не залазя в дебри исходника фейсплейта?

    Все id уже известны, так как все построено.
    Что касается внешнего вида фейсплейта, то выглядит он так в редакторе фейсплейта 🙂

    TestLine FP

    а на скрине 2 дефиса видно что там есть полоски, треугольники. Примерно так, как картинка слева.

    • Ответ изменён 2 недели, 6 дней назад пользователем manjey73.
    #43980
    manjey73
    Участник

    Немного для понимания процесса. В Размете в svg есть пустая группа с id

      <g id="{0}sym1">
      </g>

    и вот в нее я добавляю <line>, <path> при помощи скриптов в domUpdated

    Например добавил путь, который отобразится на мнемосхеме — в исходнике Разметки его нет, отсутствует.

    <path id=»comp4-1p1″ d=»M10,18 L15,18 L28,60 L15,102 L10,102″ fill=»none» stroke=»#999″ stroke-width=»2″></path>

    Как мне в dataUpdated поменять цвет stroke=»#999″ не трогая всего остального и не перестраивая все заново ?

    #43981
    manjey73
    Участник

    Изменение ТУТ?

    вот если поменять цвет ручками тут, то все работает. Нужно получить доступ из скрипта domUpdated, dataUpdated именно сюда, а не в исходник faceplate.

    #43986
    Mikhail
    Модератор

    Изменить атрибут внутри SVG можно. Посмотрите скрипт Damper.fp

    #43987
    manjey73
    Участник

    мне нужно что-то менять в DOMе, который построил Джек 🙂 — Вот то, что показывает консоль СПРАВА на скрине.

    из args мне в скрипте нужен только id и более ничего.

    #43988
    manjey73
    Участник

    Неужели я не могу так задать вопрос, чтобы меня поняли?
    я не хочу снова, снова и снова перестраивать то, что я построил. Это должно делаться ОДИН раз при загрузке страницы, далее мне нужен доступ к странице.

    #43992
    manjey73
    Участник
          args.component.dom
            .find('#${idPrefix}damper').attr("transform", 'rotate(${angle} 110 70)')
            .find("rect").attr("fill", fillColor).attr("stroke", strokeColor);

    и

    this._showRotation(args);

    Это все работает с исходником svg из фейсплейта, не со страницей, на которую этот svg помещен.

    #43993
    manjey73
    Участник

    В общем нихрена это все не работает 🙁
    привет примитивы….

    убрал domUpdated (закомментировал вообще везде).
    Добавил в скрипт dataUpdated вызов той же функции, что и в domCreated.

    Ошибок НЕТ, перестройки изображения НЕТ. Все, что построилось в domCreated просто пропадает.

    #43994
    manjey73
    Участник

    Обновление экрана 1

    В фейсплейт и в компоненте пустые domUpdated {}

    Обновление экрана — видно, что происходит отрисовка, потом стирание. Простите а кому-то разрешали все стирать? учитывая, что domUpdated пуст ?

    о каком изменении в dataUpdated тогда может идти речь, если второй сосед все хреначит?

    В общем надоело мне время тратить на эти глюки. Пошел опять за семками и на забор 🙂

    #43995
    manjey73
    Участник

    Я кажется догадываюсь, где вы собаку закопали 🙂

    код не смотрел, но по поведению, у вас копируется все на страницу по новой из кода Разметки и перед запуском скриптов domCreated и domUpdated.
    Если это так, то domCreated бесполезная фигня…

    пока не придумал, как это протестировать.

    #43996
    manjey73
    Участник

    dataUpdated не выполняется вообще. Внутри просто вывод текста в лог консоли. больше ничего нет. 🙁

    #43997
    manjey73
    Участник

    Из наблюдений.
    domCreated важен для Редактора, и вроде как domUpdated в Редакторе на запускается сразу, как уже на web странице Плагином.
    Плагин запускает domCreated и тут же domUpdated и начинается долбежка скрипта по кругу.

    я еще удивлялся, почему вы и в domCreated и в domUpdated вызываете один и тот же скрипт this.xxxxxx
    Когда у нас в Разметке все статично и нужно только менять цвета, еще куда ни шло. Хотя каждые 1000мс если стоит по умолчанию идет полное перестроение DOM — глупо.
    Например мнемосхема электрической схемы, штук так 30-50 одинаковых фейсплейтов Автоматов (3-5 сигналов на каждый, а если с функцией измерения там много сигналов). При этом в один момент если без измерения, может измениться один-два сигнала.
    Но перестраиваем мы полностью все, вытаскивая из кода разметки снова-снова и снова…

    должно быть domCtreated — Создал.
    а в domUpdated должен быть уже примитивный скрипт на созданное вида
    If поменялось это — сделай это
    Можно использовать вложенные if, elseif и т.д. Но по новой перестраивать страницу то зачем?
    Да и вообще, зачем обновлять то, что нарисовано именно при помощи domUpdated? типа на уровне выше обновлять весь класс mimic нельзя?
    а domUpdated запускать, когда у нас изменились привязанные переменные?

Просмотр 15 сообщений - с 1 по 15 (из 48 всего)
  • Для ответа в этой теме необходимо авторизоваться.