Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


Recommended Posts

Posted (edited)

Here is an example of adding "decorators" to functions in QuickApps.

Please login or register to see this attachment.

It's similar to the model, ex,

Please login or register to see this link.

- but of course adopted to the limitations we have in QA/Lua...

The implementation consists of a QA file "Decorator" and a couple of QA files for decorator plugins for different decorations.

When the QA starts up, the decorator parses all QA files and detects function decorations and calls relevant plugin.

Ex.

Please login or register to see this code.

 

results in

Please login or register to see this code.

 

Another decorator is to declare functions to receieve sourceTriggers

Please login or register to see this code.

The names of the function parameters are important as the function will get the event key corresponding to its parameter name.

In this case the 'value' key of the event. 

If we declared function QuickApp:stateChange(id,value) it would have received the id and the value key of the event.

The special parameter '_event' will receive the full event structure.

It's a little bit more limited compared to my previous EventLib but easier to use.

 

A third decorator, Private, is to declare QuickApp functions "private", meaning they can't be invoked remotely with a fibaro.call(....)

Please login or register to see this code.

Here we see also that we can combine decorators...

 

The concept is still under development, the plugins above works, and I've started to use it and it seems useful/easy to use.

Could probably be useful with a type-check decorator...

Edited by jgab
  • Like 3

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...