Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
blocks:tasks [2019-04-19 13:31] admin typos |
blocks:tasks [2025-02-24 19:48] (current) admin [Tasks and Expressions] |
||
---|---|---|---|
Line 33: | Line 33: | ||
While the //Trigger// is the mere occurrence of the specified event (such as the time being 8:00 in the morning), the //Trigger Condition// can apply arbitrarily complex conditions on top of this event in order to decide whether to actually start the task. For instance, in the case of a time-of-day trigger, you can specify that it should only start the task if it's Saturday and a certain Block is playing on a particular Spot. | While the //Trigger// is the mere occurrence of the specified event (such as the time being 8:00 in the morning), the //Trigger Condition// can apply arbitrarily complex conditions on top of this event in order to decide whether to actually start the task. For instance, in the case of a time-of-day trigger, you can specify that it should only start the task if it's Saturday and a certain Block is playing on a particular Spot. | ||
- | A //Trigger Condition// often uses the predefined variable named // | + | A //Trigger Condition// often uses the predefined variable named // |
===== JavaScript Expressions ===== | ===== JavaScript Expressions ===== | ||
Line 39: | Line 39: | ||
Expressions in Blocks use JavaScript syntax. There are numerous excellent sources of information on this subject, such as this one: | Expressions in Blocks use JavaScript syntax. There are numerous excellent sources of information on this subject, such as this one: | ||
- | https:// | + | [[https:// |
Here we'll only provide a brief overview of the syntax, enough to get you started with programming of Tasks in Blocks. | Here we'll only provide a brief overview of the syntax, enough to get you started with programming of Tasks in Blocks. | ||
Line 118: | Line 118: | ||
=== Relational Operators === | === Relational Operators === | ||
- | Another type of operators allow you to compare things, such as numbers. As hey evaluate the // | + | Another type of operators allow you to compare things, such as numbers. As they evaluate the // |
* < for "left is less than right" | * < for "left is less than right" | ||
Line 224: | Line 224: | ||
==== Predefined Variables ==== | ==== Predefined Variables ==== | ||
- | In addition to all system properties of you Blocks system, you also have access to the following predefined variables in tasks and their trigger condition field: | + | In addition to all system properties of your Blocks system, you also have access to the following predefined variables in tasks and their trigger condition field: |
* **trigger** contains the value of whatever triggered the task. | * **trigger** contains the value of whatever triggered the task. | ||
Line 232: | Line 232: | ||
* If the triggering mode is “Time of Day”; it's a JavaScript Date object. | * If the triggering mode is “Time of Day”; it's a JavaScript Date object. | ||
- | * If the triggering mode is “Property Change” it's a number, boolean | + | * For “Property Change” it's a number, boolean, string |
+ | * For " | ||
If no trigger is assigned to the task, the value of //trigger// is undefined, and should not be used. Note that //trigger// will contain the current value of the tasks trigger even if the task was started by other means, such as manually clicking the //play// arrow next to the task's name, or by setting the task's //running// property to true. | If no trigger is assigned to the task, the value of //trigger// is undefined, and should not be used. Note that //trigger// will contain the current value of the tasks trigger even if the task was started by other means, such as manually clicking the //play// arrow next to the task's name, or by setting the task's //running// property to true. | ||
Line 238: | Line 239: | ||
==== Realm Variables ==== | ==== Realm Variables ==== | ||
- | You can add externally visible variables to a Realm. When doing o, you specify the data type used by that variable (number, boolean or string). Such a variable can be set frmo the outside, for example using a button on a panel, or by another task (using a //set realm variable// statement). | + | You can add externally visible variables to a Realm. When doing so, you specify the data type used by that variable (number, boolean or string). Such a variable can be set frmo the outside, for example using a button on a panel, or by another task (using a //set realm variable// statement). |
The value of such a realm variable can be used as a trigger, just like any other system property. You can also directly reference the value of a realm variable in any task within the same realm using the name of the variable followed by a period and the work //value//. Assuming you have a realm variable named // | The value of such a realm variable can be used as a trigger, just like any other system property. You can also directly reference the value of a realm variable in any task within the same realm using the name of the variable followed by a period and the work //value//. Assuming you have a realm variable named // | ||
Line 259: | Line 260: | ||
==== Property References ==== | ==== Property References ==== | ||
- | As seen in some of the example | + | As seen in some of the examples |
Some properties are //read only//. An example of such a read only property is the // | Some properties are //read only//. An example of such a read only property is the // |