Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 47 additions & 2 deletions src/rules/rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -362,9 +362,10 @@ function _addFromHashMap (hashMap, key, object) {
* @param {*} input raw Java input/context, see
* {@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}
* 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}
* @param {boolean} [javaEventBackwardCompat=false] enables backwards compatibility with pure Java event object in UI-based rules
* @returns {EventObject}
*/
function _getTriggeredData (input) {
function _getTriggeredData (input, javaEventBackwardCompat = false) {
const event = input.get('event');
/**
* @type {EventObject}
Expand Down Expand Up @@ -468,6 +469,49 @@ function _getTriggeredData (input) {

_addFromHashMap(input, 'module', data);

// backward compatibility with the pure Java event object
if (javaEventBackwardCompat) {
const itemState = data.receivedState ?? data.newState;
if (itemState) {
Reflect.defineProperty(data, 'itemState', {
get () {
console.warn('event.itemState is deprecated, use event.receivedState for update triggers or event.newState for change triggers instead.');
return itemState;
}
});
}
if (data.oldState) {
Reflect.defineProperty(data, 'oldItemState', {
get () {
console.warn('event.oldItemState is deprecated, use event.oldState instead. If you use Blockly, simply resave the script.');
return data.oldState;
}
});
}
if (data.receivedCommand) {
Reflect.defineProperty(data, 'itemCommand', {
get () {
console.warn('event.itemCommand is deprecated, use event.receivedCommand instead. If you use Blockly, simply resave the script.');
return data.receivedCommand;
}
});
}
Reflect.defineProperty(data, 'type', {
get () {
console.warn('event.type is deprecated, use event.eventName instead. If you use Blockly, simply resave the script.');
return data.eventName;
}
});
if (event.receivedEvent) {
Reflect.defineProperty(data, 'event', {
get () {
console.warn('event.event is deprecated, use event.receivedEvent instead. If you use Blockly, simply resave the script.');
return data.receivedEvent;
}
});
}
}

return data;
}

Expand All @@ -477,5 +521,6 @@ module.exports = {
isEnabled,
setEnabled,
JSRule,
SwitchableJSRule
SwitchableJSRule,
_getTriggeredData // exposed for converting the event in UI-based rules inside the add-on
};
1 change: 1 addition & 0 deletions types/rules/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ declare const _exports: {
setEnabled: typeof import("./rules").setEnabled;
JSRule: typeof import("./rules").JSRule;
SwitchableJSRule: typeof import("./rules").SwitchableJSRule;
_getTriggeredData: typeof import("./rules")._getTriggeredData;
};
export = _exports;
//# sourceMappingURL=index.d.ts.map
12 changes: 12 additions & 0 deletions types/rules/rules.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,4 +213,16 @@ export function JSRule(ruleConfig: RuleConfig): HostRule;
* @throws {Error} an error is a rule with the given UID already exists.
*/
export function SwitchableJSRule(ruleConfig: RuleConfig): HostRule;
/**
* Get rule trigger data from raw Java input and generate JavaScript object.
* This method is not intended for direct use in user scripts, but used internally by JS Scripting.
*
* @private
* @param {*} input raw Java input/context, see
* {@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}
* 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}
* @param {boolean} [javaEventBackwardCompat=false] enables backwards compatibility with pure Java event object in UI-based rules
* @returns {EventObject}
*/
export function _getTriggeredData(input: any, javaEventBackwardCompat?: boolean): EventObject;
//# sourceMappingURL=rules.d.ts.map
2 changes: 1 addition & 1 deletion types/rules/rules.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.