Hasp["1"].page[0].tab[0].btn[0].value_str - too complex or run of the mill?

I have decided to stick with this layout format as it seems to work well.

In efforts to further reduce the need for data entry, I have added functionality to read a "props" property in each level of the hierarchy.

This means that something like "btnStyle" can be added at the top level and will be applied to every button on that particular screen, without needing to enter it anywhere else.

But it can also be set at different levels, then it applies to items below that level. If set on page then all buttons on that page use the style, or at tab level then all buttons on that tab.

It can also be added at the button level so each button on a tab can look different if someone needs that :wink:

So in essence if a property is not set at a particular level, then it is inherited from a higher level.
I have also been setting some defaults up, so that if nothing is specified, the layout will still get generated with these default settings.

This method of cascading the property's down can reduce the data entry quite significantly, while allowing greater flexibility in the look of the generated output.

If there are any people using openHasp with NR, who would like to give it a try let me know.

 "1": { // name of hasp device (topic)
        props: {btnStyle: "btnscene" },
        page: [ //***************** start of pages ******************

            {   // ********* page 1 start **********
                props: {  }, // Page Settings
                tab: [
                    {  // *************** First tab start *******************
                        props: { }, // Tab 1 Settings 
                        btn: [
                            { text: "\n", value_str: "Main", extra: { topic: "loungelights/POWER2", type: "tas"  }, props: { btnStyle: "btntoggle" }},
                            { text: "\n", value_str: "Lamp", extra: { topic: "Bulb-20/POWER1", type: "tas", "color": true, name: "lounge_lamp" } },
                            { text: "\n", value_str: "Wall", extra: { topic: "loungelights/POWER1", type: "tas" } },
                            { text: "\n", value_str: "Dining", extra: { topic: "Bulb-10/POWER1", type: "tas", "color": true, name: "dining_lamp" } },
                            { text: "\n", value_str: "Fire", extra: { topic: "lounge_fire", type: "RF433" } },
                            { text: "\n", value_str: "Fish Pump", extra: { topic: "fish_pump", type: "RF433" } }
                        ]
                    }, // *************** First tab end *******************