Skip to content

Commit 358abf8

Browse files
authored
[rules] Add eventName property to event object (#465)
This exposes the simple class name of the event, e.g. `ItemCommandEvent`, under the new `eventName` property of the event object. --------- Signed-off-by: Florian Hotze <dev@florianhotze.com>
1 parent 944f773 commit 358abf8

4 files changed

Lines changed: 42 additions & 29 deletions

File tree

README.md

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1487,29 +1487,30 @@ The `event` object provides some information about that trigger.
14871487
14881488
This table gives an overview over the `event` object:
14891489
1490-
| Property Name | Trigger Types | Description | Rules DSL Equivalent |
1491-
|-------------------|-----------------------------------------------------|-------------------------------------------------------------------------------|------------------------|
1492-
| `oldState` | `ItemStateChangeTrigger`, `GroupStateChangeTrigger` | Previous state of Item or Group that triggered event | `previousState` |
1493-
| `newState` | `ItemStateChangeTrigger`, `GroupStateChangeTrigger` | New state of Item or Group that triggered event | N/A |
1494-
| `receivedState` | `ItemStateUpdateTrigger`, `GroupStateUpdateTrigger` | State of Item that triggered event | `triggeringItem.state` |
1495-
| `receivedCommand` | `ItemCommandTrigger`, `GroupCommandTrigger` | Command that triggered event | `receivedCommand` |
1496-
| `itemName` | `Item****Trigger`, `Group****Trigger` | Name of Item that triggered event | `triggeringItem.name` |
1497-
| `groupName` | `Group****Trigger` | Name of the group whose member triggered event | N/A |
1498-
| `receivedEvent` | `ChannelEventTrigger` | Channel event that triggered event | N/A |
1499-
| `channelUID` | `ChannelEventTrigger` | UID of channel that triggered event | N/A |
1500-
| `oldStatus` | `ThingStatusChangeTrigger` | Previous state of Thing that triggered event | N/A |
1501-
| `newStatus` | `ThingStatusChangeTrigger` | New state of Thing that triggered event | N/A |
1502-
| `status` | `ThingStatusUpdateTrigger` | State of Thing that triggered event | N/A |
1503-
| `thingUID` | `Thing****Trigger` | UID of Thing that triggered event | N/A |
1504-
| `cronExpression` | `GenericCronTrigger` | Cron expression of the trigger | N/A |
1505-
| `time` | `TimeOfDayTrigger` | Time of day value of the trigger | N/A |
1506-
| `timeOnly` | `DateTimeTrigger` | Whether the trigger only considers the time part of the DateTime Item | N/A |
1507-
| `offset` | `DateTimeTrigger` | Offset in seconds added to the time of the DateTime Item | N/A |
1508-
| `eventType` | all except `PWMTrigger`, `PIDTrigger` | Type of event that triggered event (change, command, triggered, update, time) | N/A |
1509-
| `triggerType` | all except `PWMTrigger`, `PIDTrigger` | Type of trigger that triggered event | N/A |
1510-
| `eventClass` | all | Java class name of the triggering event | N/A |
1511-
| `module` | all | (user-defined or auto-generated) name of trigger | N/A |
1512-
| `raw` | all | Original contents of the event including data passed from a calling rule | N/A |
1490+
| Property Name | Trigger Types | Description | Rules DSL Equivalent |
1491+
|-------------------|-----------------------------------------------------|--------------------------------------------------------------------------------------------------------|------------------------|
1492+
| `oldState` | `ItemStateChangeTrigger`, `GroupStateChangeTrigger` | Previous state of Item or Group that triggered event | `previousState` |
1493+
| `newState` | `ItemStateChangeTrigger`, `GroupStateChangeTrigger` | New state of Item or Group that triggered event | N/A |
1494+
| `receivedState` | `ItemStateUpdateTrigger`, `GroupStateUpdateTrigger` | State of Item that triggered event | `triggeringItem.state` |
1495+
| `receivedCommand` | `ItemCommandTrigger`, `GroupCommandTrigger` | Command that triggered event | `receivedCommand` |
1496+
| `itemName` | `Item****Trigger`, `Group****Trigger` | Name of Item that triggered event | `triggeringItem.name` |
1497+
| `groupName` | `Group****Trigger` | Name of the group whose member triggered event | N/A |
1498+
| `receivedEvent` | `ChannelEventTrigger` | Channel event that triggered event | N/A |
1499+
| `channelUID` | `ChannelEventTrigger` | UID of channel that triggered event | N/A |
1500+
| `oldStatus` | `ThingStatusChangeTrigger` | Previous state of Thing that triggered event | N/A |
1501+
| `newStatus` | `ThingStatusChangeTrigger` | New state of Thing that triggered event | N/A |
1502+
| `status` | `ThingStatusUpdateTrigger` | State of Thing that triggered event | N/A |
1503+
| `thingUID` | `Thing****Trigger` | UID of Thing that triggered event | N/A |
1504+
| `cronExpression` | `GenericCronTrigger` | Cron expression of the trigger | N/A |
1505+
| `time` | `TimeOfDayTrigger` | Time of day value of the trigger | N/A |
1506+
| `timeOnly` | `DateTimeTrigger` | Whether the trigger only considers the time part of the DateTime Item | N/A |
1507+
| `offset` | `DateTimeTrigger` | Offset in seconds added to the time of the DateTime Item | N/A |
1508+
| `eventType` | all except `PWMTrigger`, `PIDTrigger` | Type of event that triggered event (change, command, triggered, update, time) | N/A |
1509+
| `triggerType` | all except `PWMTrigger`, `PIDTrigger` | Type of trigger that triggered event | N/A |
1510+
| `eventName` | all | simple Java class name of the triggering event, e.g. `ExecutionEvent` | N/A |
1511+
| `eventClass` | all | full Java class name of the triggering event, e.g. `org.openhab.core.automation.events.ExecutionEvent` | N/A |
1512+
| `module` | all | (user-defined or auto-generated) name of trigger | N/A |
1513+
| `raw` | all | Original contents of the event including data passed from a calling rule | N/A |
15131514
15141515
All properties are typeof `string` except for properties contained by `raw` which are unmodified from the original types.
15151516

src/rules/rules.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
* @property {number} offset for {@link triggers.DateTimeTrigger}: offset in seconds added to the time of the DateTime Item
3232
* @property {string} eventType for all triggers except {@link triggers.PWMTrigger}, {@link triggers.PIDTrigger}: Type of event that triggered event (change, command, time, triggered, update, time)
3333
* @property {string} triggerType for all triggers except {@link triggers.PWMTrigger}, {@link triggers.PIDTrigger}: Type of trigger that triggered event
34-
* @property {string} eventClass for all triggers: Java class name of the triggering event
34+
* @property {string} eventName for all triggers: simple Java class name of the triggering event
35+
* @property {string} eventClass for all triggers: full Java class name of the triggering event
3536
* @property {string} module (user-defined or auto-generated) name of trigger
3637
* @property {*} raw original contents of the event including data passed from a calling rule
3738
* @property {*} payload if provided by event: payload of event in Java data types
@@ -355,13 +356,19 @@ function _addFromHashMap (hashMap, key, object) {
355356

356357
/**
357358
* Get rule trigger data from raw Java input and generate JavaScript object.
359+
* This method is not intended for direct use in user scripts, but used internally by JS Scripting.
358360
*
359361
* @private
360-
* @param {*} input raw Java input from openHAB core
361-
* @returns {rules.EventObject}
362+
* @param {*} input raw Java input/context, see
363+
* {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/handler/ScriptActionHandler.java ScriptActionHandler}
364+
* and {@link https://github.com/openhab/openhab-core/blob/main/bundles/org.openhab.core.automation.module.script.rulesupport/src/main/java/org/openhab/core/automation/module/script/rulesupport/shared/simple/SimpleRuleActionHandler.java SimpleRuleActionHandler}
365+
* @returns {EventObject}
362366
*/
363367
function _getTriggeredData (input) {
364368
const event = input.get('event');
369+
/**
370+
* @type {EventObject}
371+
*/
365372
const data = {};
366373

367374
// Add input to data to passthrough any properties not captured below
@@ -386,7 +393,8 @@ function _getTriggeredData (input) {
386393
// Properties added if event is available
387394

388395
if (event) {
389-
data.eventClass = Java.typeName(event.getClass());
396+
data.eventClass = event.getClass().getName();
397+
data.eventName = event.getClass().getSimpleName();
390398

391399
try {
392400
if (event.getPayload()) {

types/rules/rules.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,11 @@ export type EventObject = {
7979
*/
8080
triggerType: string;
8181
/**
82-
* for all triggers: Java class name of the triggering event
82+
* for all triggers: simple Java class name of the triggering event
83+
*/
84+
eventName: string;
85+
/**
86+
* for all triggers: full Java class name of the triggering event
8387
*/
8488
eventClass: string;
8589
/**

types/rules/rules.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)