Many issues trying to use remote data set

I’m trying to build a dashboard for a safety department to display the status and locaiton of their vehicles… Originally I was trying to target a web page where the dashboard already exists as HTML, but since the page and all its assets are secured by login I switched to using an API I could expose and call it using Data Sets. I’m having trouble every step of the way with this.

  1. I would start by saying the ability to use Bearer authentication for remote APIs would be nice, but the Basic Auth isn’t even working. When my API recieved a Basic Auth request, the username and password set in the dataset options through cms was not being sent (all it sent was “:”). I got it working by using the https://user:pass@host/api pattern and switching it to no authentication.

  2. When the table renders, it appears to be ignoring any column with an empty string, zero, or false boolean value. The boolean columns are set to String in their dataset definition, but they’re still being read as integers. Ultimately, this means row-to-row the number of columns is different and nothing lines up. I was able to work around this by setting up formula columns that do simple value checking and output a space if the field is null or blank.

  3. I found working with the CSS on this to be a pain. The board is basically just a full screen table, but I had a lot of trouble getting it to be that way. I realized that when paging, the table is switched from “display:none” to “display:block”, which then ignores the width:100% I had set. I was able to override this by setting “table {display:table !important}” in the CSS.

  4. I have 3 boards, each with a different data source that calls the same API with a distinct query parameter. The first data set I configured appears to be working correctly. The other two are not pulling data, even though the correct data appears when I hit the Test Data Source button. They are all set to update “Constantly” but they all only seem to update at :31 of the hour, and as I said two of them never seem to pick up the data. The 2nd and 3rd data sets were created as copies of the original with only the query string parameter adjusted. Do I need to re-create them both entirely from scratch? If so, there’s clearly something wrong with the copy data set function. If not, why are these two not working when the first one is set up exactly the same? Is there no way to force a data set to synchronize on demand? Why is “constantly” only hourly?

I’m throwing my hands up at this for today. Maybe I’m taking the wrong approach, but it seems like the built-in data set tools are extremely lacking. Is there something I’m missing?

To follow up on this, I was able to get everything working by creating a new API that brought back all the data for each board and used the filter option on the data set widget to display the correct information for each one. Not everyone using a remote dataset will have the ability to tune the APIs they’re using to Xibo’s quirks, though.

Sorry you’ve had a frustrating experience with Remote DataSets - this is a new feature only available in the latest releases and we’ve clearly got a few issues with it. It is our first major piece of community contributed work for a long time, and integrating it wasn’t as slick as we’d have hoped - on our side, not the contributors side (who did an excellent job).

We can add that simply enough I think.

I can see why - I’ve recorded a bug for that here: Remote DataSets: Authentication not working · Issue #1525 · xibosignage/xibo · GitHub

your other points will be addressed by one of the team.

Regarding 2 and 3 I assume you’re using dataSet view widget?
The formatting in this widget certainly could use some improvements, currently depending on the data it may require extensive css knowledge.

Is there anything in particular that you would like to suggest? If so, please create a new topic in the features
category describing it or let us know in this topic.

I’m not sure if I follow this I’m afraid, if column is set to string the no matter what kind of data you have there it will be read as string ie no matter if it’s 0 or null or true all of those will be strings, I do not know what can those be rendered as integers.

I do see that completely empty column will be skipped by this widget, so if you have something like:

And widget set to show all columns, then it will render 0 and 0 for Col5 and nothing in col 6, which obviously isn’t right and is the part of the problem you described - I’ve created an issue about it here DataSet View - ignores empty rows · Issue #1526 · xibosignage/xibo · GitHub

Regarding 4, the Constantly means that it will be updated every time the task fetch remote dataSet data will run - which by default is every 30min I believe - can be adjusted on the Tasks page in CMS.
You can also action Run Now on the task, to force it to run.

Basically I was seeing any field that javascript would evaluate to false would not render as a column regardless of what data type it was set. I was trying to set numeric & boolean fields to text in an attempt to get around this, but was getting the same behaviour. It’s like there was a { if (value) etc(); } where there should be a {if (value!==undefined) etc(); }