Boriss

Ответы в темах

Просмотр 15 сообщений - с 31 по 45 (из 87 всего)
  • Автор
    Сообщения
  • в ответ на: ExtraMarkup уникальный id #42929
    Boriss
    Участник

    Сами ответили на свой вопрос.
    args.component.parent.properties.uroven
    Я сделал именно так

    в ответ на: Mimic — Фейсплейт в фейсплейте #42896
    Boriss
    Участник

    Но если честно, не знаю, возможно ли такое. Так как все экземпляры клонов должны управляться по разному.

    Интересная мысль. Но как их потом разрулить и не запутаться?

    в ответ на: ExtraMarkup уникальный id #42895
    Boriss
    Участник

    Движек форума — ужос!

    в ответ на: ExtraMarkup уникальный id #42894
    Boriss
    Участник

    Так поставьте {0} после id.
    На примере Damper.fp
    А «-» добавляется в этой строчке в скрипте компонента
    const idPrefix = args.component.dom.attr("id") + "-1-";
    Если надо {0} после id, то:

    const idPrefix = "-" + args.component.dom.attr("id") + "-1";
    
    args.component.dom.find(<code>#damper${idPrefix}</code>).attr("transform", <code>rotate(${angle} 110 70)</code>)

    Примерно так, но возможны ошибки, пишу без проверки работоспособности.

    в ответ на: Mimic — Фейсплейт в фейсплейте #42891
    Boriss
    Участник

    Как при установке двух одинаковых компонентов понять кто из них кто?

    Заполнить поле «Наименование». Тогда к адресу ссылки автоматом добавляется имя компонента, например так: Наименование: compName1 ссылка: compName1.text
    Именно так его можно найти в окне выбора свойств, когда делается экспорт свойств.
    Наименования у компонентов должны быть уникальны.
    За 15мин создал фейсплейт с двумя компонентами «текст» с привязкой к разным каналам. Работает. Но и сразу обнаружился косяк с привязкой к выходному каналу. Или так задумано? Номер выходного канала приходится указывать непосредственно в свойствах компонента, а не в разделе «разное», там этого просто нет или я еще не разобрался, как экспортировать выходной канал.

    в ответ на: ExtraMarkup уникальный id #42889
    Boriss
    Участник

    Mikhail, спасибо. Будем ждать.

    Однако вы ещё столкнетесь со ссылками на эти id, а не только с ними.
    Тут главное получить id, дальше портянка скрипа.

    Ссылки на id никак не получить. Потому как всё, что внутри ExtraMarkup это значение ключа. Строковое. innerHTML: ‘<svg width=»100%» height=»100%» xml и т.д.
    Единственный способ добраться до элемента dom, это метод перебора. Что-то вроде args.component.dom.find(‘#g2’).attr(‘transform’, transform); Другие способы я не нашел. Поэтому надо просто сделать id уникальными.
    Но могу и ошибаться, программист из меня так себе…

    в ответ на: Mimic — Фейсплейт в фейсплейте #42883
    Boriss
    Участник

    Не работает уникальный id. Создам новую тему…

    в ответ на: Mimic — Фейсплейт в фейсплейте #42879
    Boriss
    Участник

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

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

    class extends ComponentScript {
            domCreated(args) {}
    	domUpdated(args) {}
    	dataUpdated(args) {}
    }

    В скрипте компонента работают методы domCreated(args) и domUpdated(args). Метод dataUpdated(args) не работает. Вот такие «чудеса».

    Boriss
    Участник

    Не стоит, я не со зла…

    Boriss
    Участник

    Может и проще. А какая разница? phenix769 попросил обходной путь. Путь указан. А как его идти, дело сугубо индивидуальное 😉
    Покажите свой вариант.

    Boriss
    Участник

    Так будет правильнее. Убрал лишнее.

    class extends ComponentScript {
    	
    	dataUpdated(args) {
    		const props = args.component.properties;
    		const cnlData = args.dataProvider.getCurData(props.inCnlNum);		
    		
    		if (cnlData.d.val <= 25) {
    			props.text = "Мир на 25%";
    		} else if (cnlData.d.val > 25 && cnlData.d.val <= 50) {
    			props.text = "Мир на 50%";
    		} else if (cnlData.d.val > 50 && cnlData.d.val <= 75) {
    			props.text = "Мир на 75%";
    		} else if (cnlData.d.val > 75 && cnlData.d.val <= 100) {
    			props.text = "Мир на 100%";
    		} else if (cnlData.d.val == 200) {
    			props.text = "Мир на 200%";
    		} else {
    			props.text = "--";
    		}
            
    		args.propertyChanged = true
    	}
    }
    Boriss
    Участник

    Можно применить js скрипт к компоненту «Текст»

    class extends ComponentScript {
    	domCreated(args) {
    		args.component.customData ??= {};
    		const customData = args.component.customData;
    	}
    	
    	dataUpdated(args) {
    		const customData = args.component.customData;
    		const props = args.component.properties;
    		const cnlData = args.dataProvider.getCurData(props.inCnlNum);		
    		
    		if (cnlData.d.val <= 25) {
    			props.text = "Мир на 25%";
    		} else if (cnlData.d.val > 25 && cnlData.d.val <= 50) {
    			props.text = "Мир на 50%";
    		} else if (cnlData.d.val > 50 && cnlData.d.val <= 75) {
    			props.text = "Мир на 75%";
    		} else if (cnlData.d.val > 75 && cnlData.d.val <= 100) {
    			props.text = "Мир на 100%";
    		} else if (cnlData.d.val == 200) {
    			props.text = "Мир на 200%";
    		} else {
    			props.text = "--";
    		}
            
    		args.propertyChanged = true
    	}
    }

    Условия отредактируйте под свои задачи.

    в ответ на: Mimic js-script Скользящая разница #42317
    Boriss
    Участник

    нет, не сделаю. ерунда всё это. фейсплейт кривой и с костылем. привязки не работают как должны работать. кстати, а как они должны работать? что куда экспортируется не понятно. экспротирую text, не работает. экспортирую blinking, не работает.

    Boriss
    Участник

    Уже писал ранее, что id элемента HTML или SVG доложен быть уникальным в рамках веб-страницы. Если данное правило не соблюдается, то нормально работать не будет.

    И как его сделать уникальным, если это разметка в ExtraMarkup который в фейсплейте? id будет уникален при условии, что на мнемосхеме будет только один фейсплейт.

    Весь день убил на то, что-бы сделать что-то подобное. За основу взял файлы manjey73.
    Результат отрицательный.
    На мнемосхеме два канала и панель. На панели два фейсплейта, привязанные к этим каналам. Вернее один и тот же, но в двух экземплярах. Скрипт фейсплейта меняет заливку и окантовку svg элемента. Т.е. меняет fill и stroke в разметке компонента ExtraMarkup. Если в канале 1, то расцветка одна, если 0, то другая. Расцветка меняется только от одного канала и сразу на двух фейсплейтах. На другой канал не реагирует.
    Мнемосхема и фейсплейт https://disk.yandex.ru/d/JPlgER66dLXVHA

    Беру таймаут на неопределенное время. Терпение кончилось… Задача написать простейший скрипт превратилась в какую-то опупею… Писать скрипты внутри других скиптов, не понимая что и как работает и при отсутствии документации и методом научного тыка, такое себе занятие…

    в ответ на: Mimic js-script Скользящая разница #42285
    Boriss
    Участник

    Вы могли бы в архив с фейсплейтом ещё добавить его изображение и txt-файл с кратким описанием, чтобы можно было сразу понять, что он делает?

    Завтра сделаю

Просмотр 15 сообщений - с 31 по 45 (из 87 всего)