retejs / rete

JavaScript framework for visual programming
https://retejs.org
MIT License
9.86k stars 647 forks source link

Как добавить новый Output из Vue-компонента? #280

Closed shift-reality closed 5 years ago

shift-reality commented 5 years ago

Можно ли это реализовать? Нужно сделать такой блок для ветвления, чтобы на него добавлять варианты, а выходы добавлялись по мере добавления новых вариантов.. Вот мой код: https://pastebin.com/ywCtpj1b Но я застрял дальше на этапе связи с rete... не получается достучатся к node... Помогите, плиз

Ni55aN commented 5 years ago

нудно внутри builder подписаться на событие, которое будет эмитить контрол, и по нему уже менять что-то в ноде

shift-reality commented 5 years ago

а метод builder не исполняется если использовать render=vue

shift-reality commented 5 years ago

а в конструкторе еще нет контекста вуа

shift-reality commented 5 years ago

а стоп, туплю Подписку нужно внутри ноды делать а не контрола...

shift-reality commented 5 years ago

ну в любом случае: var cases = new MenuItemsMngControl(this.editor, "cases"); node.addInput(inp1).addOutput(outm) .addControl(cases); cases.vueContext.$on('taskAdded', () => { console.log('works!!'); }) не сработало (нет контекста)

Ni55aN commented 5 years ago

скиньте живой пример

shift-reality commented 5 years ago

а у вас нет шаблона для пустой сценки с vue?

Ni55aN commented 5 years ago

на codepen есть демки

shift-reality commented 5 years ago

https://codepen.io/shift-reality/pen/wOmyMV там где HERE но код не мой, просто для примера нашел Вот вопрос, как из VUE-rete-контрола выбросить событие аж в Rete-компонент ?

shift-reality commented 5 years ago

ну или вопрос : как из КОМПОНЕНТА получить контекст КОНТРОЛА ?

shift-reality commented 5 years ago

не создавать же третий вуе исключительно для событий...

Hatead1 commented 5 years ago

https://codepen.io/hatead1/pen/KEpmYz - я тут меняю тип входов/выходов на лету, может подойдет

Ni55aN commented 5 years ago

ну или вопрос : как из КОМПОНЕНТА получить контекст КОНТРОЛА ?

нежелательно так делать, это приведет к сильной связности. Тем более, сразу после addControl контекст не будет создан, так как это проходит асинхронно.

В примере выше как раз правильно сделано.

В контрол нужно передать коллбэк (если достаточно подписываться только один раз)

var VueNumControl = {
  props: [ ...., 'onChange'],

class NumControl extends Rete.Control {
  constructor(emitter, key, readonly, onChange) {
  .....
  this.props = { ...., onChange };

var nc = new NumControl(this.editor, 'num', false, () => console.log('Its alive!!!!'))
shift-reality commented 5 years ago

Действительно, я что-то не подумал о таком варианте Спасибо всем!

shift-reality commented 5 years ago

А можете еще подсказать, как выключить зум по dblclick на редакторе ? Раздражает, когда просто дважды кликнул, а оно приближает Есть же колесико, его достаточно

Ni55aN commented 5 years ago

не ленитесь искать в issues

https://github.com/retejs/rete/issues/204#issuecomment-434440051

shift-reality commented 5 years ago

Спасибо!!

shift-reality commented 5 years ago

:)

shift-reality commented 5 years ago

Наверное поспешил закрывать А как сделать, чтобы Выходы справа были на уровне пунктов меню ? Untitled Зеленым отметил выходы, красным контрол (каждый пункт это элемент Li+input внутри общего контрола), контрол имеет ключ "items"..


Ni55aN commented 5 years ago

Это уже общий вопрос по поводу верстки.

Сейчас сделано все блоками. Список output, control и input. Можно обернуть .output в блоки и назначить его родителю display: flex, таким образом сделать такие блоки в ряд

shift-reality commented 5 years ago

нет, вопрос ### архитектуры, а потом верстки в конце

Ni55aN commented 5 years ago

А как сделать, чтобы Выходы справа были на уровне пунктов меню ?

это не об архитектуре

shift-reality commented 5 years ago

1) вопрос в том делать ли 1 контрол для каждого пункта меню или сделать 1 общий для всех, а в его состоянии хранить пункты ? 2) Предложенный вариант с колбеком при горячей замене почему-то перестает работать...

Ni55aN commented 5 years ago
  1. как вам удобнее
  2. только живой пример поможет разобраться