Rule Examples: различия между версиями
Matveevrj (обсуждение | вклад) |
(→Общая информация: добавил пример с виртуальным устройством и enum) |
||
Строка 8: | Строка 8: | ||
Алгоритмы в примерах предельно просты и не учитывают многих факторов которые могут возникнуть в реальности. Поэтому используйте эту библиотеку только как учебный материал, а не источник готовых скриптов для реальных проектов. | Алгоритмы в примерах предельно просты и не учитывают многих факторов которые могут возникнуть в реальности. Поэтому используйте эту библиотеку только как учебный материал, а не источник готовых скриптов для реальных проектов. | ||
== Виртуальное устройство == | |||
Виртуальное устройство можно использовать для объединения каналов, задания особой логики для устройства или просто так для красоты. | |||
Пример ниже создаст виртуальное устройство с именем '''deviceName''' и двумя контролами '''value''' и '''state'''. А благодаря правилу с '''whenChanged''', значение контрола '''state''' будет менять в зависимости от значение контрола '''value'''. | |||
<syntaxhighlight lang="ecmascript"> | |||
deviceName = 'my-virtual-device'; | |||
defineVirtualDevice(deviceName, { | |||
title: {'en': 'My Virtual Device', 'ru': 'Мое виртуальное устройство'} , | |||
cells: { | |||
value: { | |||
title: {'en': 'Value', 'ru': 'Значение'}, | |||
type: "range", | |||
value: 1, | |||
max: 3, | |||
min: 1 | |||
}, | |||
state: { | |||
title: {'en': 'State', 'ru': 'Состояние'}, | |||
type: "value", | |||
value: 1, | |||
enum:{ | |||
1: {'en': 'Normal', 'ru': 'В норме'}, | |||
2: {'en': 'Warning', 'ru': 'Внимание'}, | |||
3: {'en': 'Crash', 'ru': 'Авария'}} | |||
}, | |||
} | |||
}); | |||
defineRule({ | |||
whenChanged: deviceName+"/value", | |||
then: function (newValue, devName, cellName) { | |||
dev[deviceName+"/state"] = newValue; | |||
} | |||
}); | |||
</syntaxhighlight> | |||
== Слежение за контролом == <!--T:20--> | == Слежение за контролом == <!--T:20--> |