[RELEASE] Tile Builder - Build Beautiful Dashboards

Now I'm pretty sure that this relates to the use of the transparency in the override. Follow the instructions I sent above to @boredbypolitics for recovering a tile and let me know if that works.

You can now just use the background transparency control built into the UI.

A number of variables were retired isKeywordX and isThresholdX in favor of a different approach (see release notes) However, these old variables are still present and may be present in styles and will generate the above message. This is expected.

These variables will be cleared on a future release as they would no longer be needed as a fallback.

Note: If you go to the parent App \ More \ Rebuild Default Styles all of the above keywords would be removed in favor of the new settings.

You're right, I had the override from the manual for transparency of the title/header? can't remember which.

#tbc#=rgba(0,0,0,0);

That worked for the battery tile thanks. Now to check the overrides I have, make copies of the ones that work on the highlights, and start working through them.

For anyone else, follow Gary's instructions to select and message to send, then click to edit the tile from within the app - it'll crash again, just go back into the tile child app again, and it will load. When you come back into the Tile app to do the next tile, it seems to retain the message, so change that to no selection before selecting the next tile.

I think the only one that is affected is table background color (tbc) which is because I modified the app and added a transparency control for TBC, the format of which is conflicting with the override.

Sorry for the inconvenience everyone.

No worries, gave me the opportunity to have a read through your code - not that I could work the issue out :smiley:

Im glad I introduced that recovery feature in this release, I thought about carrying it over to the next release.

1 Like

One more oddity.

I can't manually add anything to the Setting Overrides box. As soon as I do it appears to be applied to the reference tile, but if I click into another customise category the override is no longer applied, and the reference tile returns to normal.

For example, this:

#Class1#=.wc{opacity:0.5} .wo{text-shadow: 0px 0px 15px #FEF203;}

Even odder, it's actually working fine on my dashboards, and I can see it under Application State in HTML etc.

Found another issue. This is a humidity tile with just one device. Clearing the overrides worked fine, when I was able to load the child app I clicked into Highlights to fix them (as per your post, and as I have been doing for the temp and battery tiles), but this time I hit an error. The same error appears now whenever I try to access the child app:

java.lang.NullPointerException: Cannot invoke method toInteger() on null object on line 1089 (method mainPage)

Looking at that line in the code:

if (myDecimalPlaces.toInteger() == 0) myMap["${deviceName}"] = myFloat.toInteger()

If I look through the Status page, I cannot see a myDecimalPlaces Application State or Setting - or that may be intentional and it's set somewhere else in the code (trying to read source code just using the Hubitat editor is a real pain :smiley: )

21 tiles fixed - just the Humidity one to go :sweat_smile:

Can you verify that you de-selected the tile in the parent so it does not continue to pickup the clearOverrides message?

Yes, I can confirm that both drop downs are as you show them there, but I still see that error.

Here's the logs over the last few hours - the last 4 lines are me ensuring the setting of the message drop downs and then trying again

myDecimalPlaces is this control,
image
and it should be initialized to a value of 1. But that setting should be visible under the gear and settings list. Can you verify it's presence and value for me, it should look like this.

Seems more likely it's the myFloat value but let's verify myDecimalPlaces first.

It doesn't appear to be there

Very odd. It's not the end of the world if I have to recreate this tile. Seems like a rare edge case - 21 other tiles updated without issue.

Agreed, can't imagine how that could occur to be honest. If it's a complex tile and you want to recover it you could do this.
In the child app at line 731 change it to look like this.

case "clearDeviceList":
//app.updateSetting("myDeviceList",[type:"capability",value:[]])
app.updateSetting("myDecimalPlaces", 1)
break

Then run the recover function selecting clearDeviceList and the myDecimalPlaces should be created and you will be able to get back to the editor.

Then of course change it back.

If it's not complex or you have a style defined it would probably be easier just to re-create it.

1 Like

P.S. I can confirm that the "Running supportFunction with code: 0" is normal behavior and it basically indicates "no operation" but I don't think that is very clear and I will update it in future so this message is only generated when it's doing an actual change.

Curiouser and curiouser.

It didn't appear to work (changing the code), so I snagged a log line from elsewhere to put before and after the line

            case "clearDeviceList":
                //app.updateSetting("myDeviceList",[type:"capability",value:[]])
                log.info ("before) myFloat is: $myFloat, $myDecimalPlaces, $myFilterType ")
                app.updateSetting("myDecimalPlaces", 1)
                log.info ("after) myFloat is: $myFloat, $myDecimalPlaces, $myFilterType ")
                break

With these results

app:819 2023-06-06 20:40:30.492 error java.lang.NullPointerException: Cannot invoke method toInteger() on null object on line 1092 (method mainPage)
app:819 2023-06-06 20:40:30.430 info after) myFloat is: null, null, 0
app:819 2023-06-06 20:40:30.426 info before) myFloat is: null, null, 0
app:819 2023-06-06 20:40:30.423 info Running supportFunction with code: clearDeviceList

myDecimalPlaces is global and should have a value as previously discussed. myFloat is local to the function it was pulled from so would show as a null here as it’s in a new function where it’s not declared.

Sure, it was more to demonstrate that nothing was happening with myDecimalPlaces.

1 Like

With that last update complete I've been able to spend some time on the multi-attribute X multi-device version. So far I would have to say that it is going very well, so much so that I'm planning on sharing an ALPHA version with those people that have the Advanced version that are interested in experimenting with it. It'll be available in Alpha next week, just DM me if you are interested in participating.

I do emphasize "experiment" as you should expect that any tiles you develop with the Alpha version should be deleted and rebuilt with the final version to ensure full long term compatibility and stability.

Here are a couple of examples in one screen shot:

The first one uses a single device with multiple attributes. In this case the source is the @thebearmay 's excellent Hub Information Driver which I've started using now it's easier for me.

The second example uses multiple devices with multiple attributes. In this case it has 8 unique devices with 9 unique attributes.

Both of these have some moderate formatting and both are under the 1,024 limit.

Here are the questions that are front of mind at the moment.
In what ways do you think you will use this new module? What problems can it solve?
Is 10 rows sufficient for most people?
Are the data formatting options sufficient. Beside Keywords and Thresholds you now have a number of other options.

  1. Full control over device\attribute name
  2. Prepend to data and Append to data. These can be used for HTML tags, units, braces etc.
  3. Cleanup data (things like capitalize, Upper Case, decimal points etc.)
  4. A new concept, the Format Rule. Because these contain multiple types of data it requires greater flexibility for formatting. So a format rule might look something like this:
    %value%%[br][progress value=%value% max=100][/progress] (dimmer)

or this:
%value%%[br][meter low=50 high=80 max=100 optimum=100 value=%value%][/meter] (battery)

and you can choose to apply it to any particular line as shown in the screenshot.

Just to re-state this is an Alpha version. I know I still have a bunch of stuff to clean-up but 80% of the code is re-used from prior Tile Builder modules so much of it is reasonably well tested. I'm going to write a help doc for this and once that is in place I'll let you at it, sometime next week at the latest.

6 Likes

This is really cool. I just installed it and built a basic tile for device activity.

I skimmed thru the docs but I'm missing something. I set my dashboard tile to 2x tall, but the list of devices is still small and has to scroll.

image

I'm glad you like it. The main thing that can affect the height of the final tile is the height setting on the General tab. Try setting it to Auto or 100%.

Do you have any custom CSS in your dashboard? Stuff like this?