Looking for strategy help on an Excel-based XP

Hi folks,

I’m wanting to get some thoughts on a good structural strategy for an information-based XP before I get too far down the development road.

This will be an Excel-backed XP comprised of multiple “modules” (Scenes) that I’ll refer to as A, B and C. Each of these pulls its content from a different tab in the spreadsheet, and each sheet has multiple rows (which I’ll refer to as 1, 2, 3, etc.). What I’m wanting to achieve is a sequence like the following:

A1, B1, C1, A2, B2, C2, A3, B3, …

…and for each of the modules to rotate back to row 1 once all rows with content have been displayed. Under that scenario, if we assume that each module has a varying number of rows then they will quickly become out of “sync” with one another (ex: A2, B4, C1), but that’s actually the intended behavior — each of these should cycle through its content independent of the others as they rotate amongst themselves.

I have experience with Bindings and some of the more basic Converters, but I’m drawing a blank on how to have a given Scene “remember” what row should appear next when it is being entered again. Has anyone created something like this?

Hi Whit,

I might be biased since I don’t know if this question is related to the experience I just had a look at (support ticket about Swap collection).

I can see multiple ways to address your scenario, so here’s the first one:

  • If data isn’t too overwhelming and the device running the XP can handle it, use a single scene with your 3 collections (A , B, C). I’ll assume a Swap collection is used for each feed, displaying only 1 item at a time, ex: A1.
  • When XP starts, Swap A is visible, Swap B & C are hidden
  • Using a timer on the Swap A data template
    • Show Swap B
    • Hide Swap A
    • Next on Swap A
  • Apply similar timers on templates B & C

Doing this in a single scene will enable you to keep the 3 indexes in focus for the 3 collections, and the Swap will naturally loop when reaching the last index.

Let me know what you think of this one before I go with alternatives :wink:

1 Like

Thanks, Seb, this may very well be what I need! And no, this doesn’t relate to the XP we’ve been working on aside from them belonging to the same “family” of XPs (there are three displayed together).

The content in question isn’t especially complex, at most it has the following:

  • One photo
  • Two text blocks
  • One QR code

I’m assuming that under your scenario, there would actually be two layers of Collections: one “parent” collection that holds all of the modules (A, B, C), and each of those is also its own Collection (Swap, in your example), since a Collection is the only method I’m aware of to display sequential Excel row data/content. It hadn’t dawned on me that each of these Excel-based Collections would independently cycle through their respective content, but that totally makes sense.

If that’s a correct understanding of your plan and the above content array feels feasible for a strong, I7-based Windows box, I’ll proceed as you describe.

Hey Seb, I’m making some headway on this but not quite there. I have the collections nested in basically the way that you describe, and while some aspects of it are working, others aren’t — namely, it’s not ticking any of the nested collections forward in their respective sequences. Or, if you have ‘Autoscroll’ checked, it does advance them but produces weird timing issues.

I’m not totally understanding the timer setup that you’re mentioning here. FYI, all of the “slides” in this XP are going to be the same duration, so we don’t need to bind timing to a variable from the Excel sheet. Do timers still factor in somehow? I shared what I have over to you.

Hi Whit,

I shared a version back with you with these main differences

  • I removed the parent collection
  • I added a timer on each collection that
    • shows the next collection, and hides everything else. Since all collections are in the same layers, they will all be hidden but the new one to be shown.
    • calls a Next on the current collection (the one being hidden) so that next time it’s shown, it’ll show the next item.

One “trick” which explains why this works: Timers are only active on visible items, as detailed in this Timers article. So each time you hide a collection, its timer is turned off. Each time you show again a collection, its timer gets activated again.

Ohhhhhhh, I totally misunderstood your strategy! Thanks for clarifying, this is awesome, I’ll put it into action ASAP and report back.

1 Like

Confirmed, that is perfect. :slight_smile: Thanks again, Seb!

1 Like

Okay, so, that setup does work perfectly, but there’s a new snag that the client is requesting and that I haven’t been able to figure out. :slight_smile: They want one of the “modules” to be skipped every other cycle.

To recap, you had suggested a trigger/action setup for each module that launches the next module while advancing itself to the next slide for the next time it is launched:

…and this works perfectly as long as we’re just rotating through the modules with no variation. But I haven’t been able to figure out a method by which we would skip the “Numbers” module every other time. I tried creating a variation of the setup that moved all of the triggers into the parent layer, using longer and longer timers to achieve each of the steps:

…but this doesn’t work because A) there isn’t any way that I can see that will “restart” the cycle of Actions, and B) if you switch to a different Scene in order to come back and restart that cycle, each of the modules (Swaps) will have forgotten its slide position.

The only strategy that I’ve been able to envision is something more programmatic, where a flag of some kind gets placed and removed each time around, and that flag dictates whether Numbers is part of the sequence. Is something like that possible, and/or is there some other way of achieving this?


The “flag” mechanism is indeed what looks like the easiest and best approach.

I would to this:

  • Add a Toggle button in a new layer in your scene. Let’s name it “Show Numbers”.
  • On the last item in your list (“Inspirational quotes” in your snapshot, “News and announcements” in my snapshot below, an older version of your XP), instead of one trigger, use 2 conditional triggers.
    • If the toggle button Checked property equals True => Show Numbers & uncheck the toggle button
    • If the toggle button Checked property equals False => Show “News & Announcements” (in your snapshot) & check the toggle button (for next round)

See snapshot below (order is different from yours)

Perfect, worked like a charm. :slight_smile: Thanks again, Seb.

1 Like