Mimic — Фейсплейт в фейсплейте

Просмотр 15 сообщений - с 1 по 15 (из 42 всего)
  • Автор
    Сообщения
  • #42804
    Imya
    Участник

    День добрый!
    Основной вопрос — фейсплейты в фейсплейтах.
    Не работают независимо от того задаю я параметр вручную в разделе «разное» или через скрипты. Единственный выход я нашел через

    const testFaceplate = args.component.children.find(c => c.name == «testFaceplate»);
    const faceplateText = testFaceplate.children.find(c => c.name == «testText»);
    faceplateText.properties.text = «test»;

    Грубо говоря тупо перебираю весь фейсплейт по компонентам и извне ими оперирую — будто бы звучит странно и должно быть по другому.
    Собственно сам вопрос: как сделать чтобы я передавал в фейсплейт параметр и внутри самого фейсплейта выполнялась логика.
    Второй вопрос — привязка свойств по тегу + номеру канала.
    Реальный пример:
    На мнемосхеме 20 одинаковых фейсплейтов, в каждом фейсплейте 20 привязываемых параметров. Нужно добавить объект — копирую фейсплейт, вставляю, меняю номер устройства.
    Появилась потребность добавить 21 параметр который был бы один для всех фейсплейтов, хочется просто написать номер канала и везде ссылаться на него — но не работает.
    Как выход в каждом устройстве добавлять канал который ссылался бы на другой и дать ему тег, но это не так удобно, хочется узнать возможно ли просто ссылаться на оригинальный канал не ломая логики привязки (чтобы все остальные тоже привязывались по номеру канала).

    • Тема изменена 1 месяц, 2 недели назад пользователем Mikhail.
    #42807
    Mikhail
    Модератор

    Добрый день!

    1. Попробуйте в фейсплейте в экспортируемом свойстве указать путь к экспортируемому свойству дочернего фейсплейта. Если не получится, присылайте скрипншоты.

    2. Привязка компонента работает либо по явным номерам каналов, либо по номеру объекта (устройства) и коду. Совместить не получится. На мой взгляд, самый правильный вариант в этом случае — создать дублирующие каналы.

    #42809
    Imya
    Участник

    Я допускаю что указать путь к конкретному свойству может заработать, но это получится не совсем то что мне нужно. Пример с текстом я описал исключительно для наглядности, мне нужно чтобы работал именно скрипт фейсплейта.
    Реальный пример:
    1. Фейсплейт со статусом:
    передаю в фейсплейт *название состояния* — фейсплейт становится красным, определенного размера, с определенной иконкой, определенной надписью;
    передаю *другое из возможных состояний* — статус по той же логике меняется в соответствии с другим состоянием, ну и т.д.
    2. Помещаю этот «первый» фейсплейт в другой фейсплейт и хочу просто туда передать нужное мне состояние без необходимости как-либо контактировать с тем что происходит внутри фейсплейта.
    3. Помещаю эту строку с состояниями в третий фейсплейт: на этом этапе мне в принципе хватит просто через привязки свойств перенаправить данные с канала ко второму фейсплейту.

    Разновидностей «третьего» фейсплейта десять и не хочется чтобы когда мне надоест иконка, или вдруг захочу поменять логику, мне пришлось редактировать каждый экземпляр.
    Если отойти от примера хочется некую матрешку-конструктор: возможность создавать базовые фейсплейты которые будут использоваться во многих других фейсплейтах и при необходимости редактирования повлияют на всю цепочку

    #42810
    manjey73
    Участник

    Вот, тоже думаю над этим же, чтобы потом не копировать и не перелопачивать все и вся…
    Видать не судьба 🙁

    #42811
    Imya
    Участник

    Сейчас вспомнил что с самого начала не работали скрипты у компонентов фейсплейта, т.е. я могу из главного окна найти дочерний компонент и его отредактировать, но не могу через скрипт этого компонента отредактировать его-же самого. Вероятно по этой причине и не работают фейсплейты в фейсплейтах.
    К примеру на обычной мнемосхеме я могу хоть с одного компонента редактировать другой: найти родителя, потом найти дочерний компонент.

    #42812
    JurasskPark
    Участник

    Я знаю, что вам нужно.
    Вам нужно писать ФейсплейтИмяПлюс. )

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

    Нужно разбирать на конкретном примере со скриншотами и скриптами.

    #42816
    Imya
    Участник

    Скриншот

    На скриншоте мнемосхема с двумя компонентами: фейсплейтом и текстом.
    Слева (синий) — фейсплейт, внутри фейсплейта компонент текст, у компонента скрипт.
    Справа (оранжевый) — просто компонент, тот-же самый скрипт.
    Слева не работает, справа работает.

    Примеры

    #42817
    manjey73
    Участник

    Я ещё добавлю немного наглости 🙂
    Мало того, что скрипт в компоненте должен работать, ещё хотелось этот компонент, со всеми скриптами и настройками, которые он содержит, можно было сохранять как отдельный файлик и загружать. (Экспорт, импорт)
    На диск и обратно. Ну скажи с расширением .comp например.

    Не в проекте, а просто на диск в папочку. 🙂

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

    Сделайте, пожалуйста, графический эскиз, чтобы было понятно, что в итоге должно получиться, как компонент видит конечный пользователь и разработчик. Непонятно, какая задача стоит.

    По поводу сохранения компонента. В редакторе нажмите кнопку Копировать. Затем вставьте содержимое буфера в текстовый файл. Можно внести изменения, скопировать в буфер и вставить на схему. Используйте сервисы для форматирования JSON.

    #42837
    Imya
    Участник

    Если честно, мне трудно в более упрощенной форме донести, в чем именно проблема. На скриншоте — то, что видит конечный пользователь. Грубо говоря, слева и справа должны быть одинаковые надписи, но из-за того, что слева компонент помещен в фейсплейт, скрипт компонента не работает.
    Возможно, это только то, как мне видится работа фейсплейтов, и то, что мы обсуждаем, изначально не должно работать. Не знаю.

    Давайте попробуем по порядку:
    Фейсплейт
    Компонент внутри фейсплейта — текст
    Скрипт компонента
    Мнемосхема на которой расположен фейсплейт
    Та-же мнемосхема, компонент — текст
    Скрипт компонента
    Всё это то, как выглядит в редакторе. По логике, у пользователя должно быть два квадрата с надписями «Пример 1», «Пример 2».
    Как выглядит в итоге

    #42841
    manjey73
    Участник

    По поводу сохранения компонента. В редакторе нажмите кнопку Копировать. Затем вставьте содержимое буфера в текстовый файл. Можно внести изменения, скопировать в буфер и вставить на схему. Используйте сервисы для форматирования JSON.

    Это слишком примитивно 🙂

    речь если можно так сказать о библиотеке компонентов, которые будет видеть Редактор и которые можно будет импортировать непосредственно в проект.
    Соответственно Редактор должен с ними работать так же, если бы они лежали в проекте.

    ладно, это хотелки, тут бы вылечили то, что не работает.
    Я в прошлой теме писал, что даже args.component.id в консоль не отрабатывает, более в скрипте ничего и не было.

    #42844
    Imya
    Участник

    Обнаружил что уже пару дней как есть новое обновление 🙂
    Всё о чем я писал тестировалось на 6.4.5, нашел список изменений, по идее в новой версии должно работать. Буду пробовать

    #42846
    manjey73
    Участник

    Ой ли, тоже надо обновиться, а то только скачать и успел.

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

    Всё о чем я писал тестировалось на 6.4.5, нашел список изменений, по идее в новой версии должно работать. Буду пробовать

    Пишите, что получится, что нет.
    Используйте готовые примеры отсюда.
    Примеры на GitHub будут постепенно дополняться, чтобы опробовать разные аспекты работы со схемами.

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