Recent Blogs
Enriching Embedded Dashboards with Custom Controls
6 MIN READ This is an introduction to Custom Controls in OneStream Workspaces. In this blog we will walk you through a simple (almost) No-Code example, creating a Custom Control dashboard with an embedded Button component. Custom Control is anew Dashboard Type that enriches what you can do with an Embedded Dashboard in terms of OneStream Dashboard wizardry. It was released in conjunction with Dynamic Dashboards in v8+ (see my previous blog on this concepthere) but uses a different approach to solve for a different type of use case. Custom Controls are much more about taking an existing dashboard template (our Custom Control Dashboard) that contains embedded elements and then repurposing it to behave differently by embedding the embedded version of this Custom Control Dashboard into a new Dashboard and using something called Event Listeners to control that component / or components differently, when each independent instance of that embedded Custom Control Dashboard is invoked inside a new Dashboard. This means that Dashboard Templates can be repurposed in different ways, without always recreating the same Dashboards and components for each slightly different use case. Think of this a bit like the old trick to create a custom Embedded Dashboard and pass a parameter value in to it, to render different Dashboard content based on User Selection e.g. But with a much more sophisticated layer of control over the actions performed by your Dashboard Components that reside in your Custom Control Dashboard template. Now let's look at the setup. Setup: Dashboards This example has been created in its own Workspace calledWsCustomControl. Let's start by looking at the Custom Control Dashboard. Here we have set the Dashboard TypeasCustom Controland selected Layout Type Vertical Stack Panel. Inside this Custom Control Dashboard we have our Button component. When we review the Button itself, we can see that we have to set the Navigation options as below e.g.Selection Changed Navigation Action is Forward Custom Control To Parent Event Listenerand the Selection Changed Navigation Arguments must include theEventListenerNameKey in the KeyValuePair passed in to the arguments. Hint:If you hover over theSelection Changed Navigation Arguments. You receive some guidance on this (see below). The ButtonEventListervalue (it could be called anything) we pass in to EventListenerNameKeyValuePair will be explained in the next steps. Let's run the Custom Control Dashboard to see what it looks like, before we dive into the setup. So a simple button, that performs no actions. Since we haven't configured the Button component to perform an action, only to forward a Custom Control Event. Dashboard Button Action 1: Open Dialog Setup So the first example of using an Embedded Custom Control Dashboard, we want our button to perform the action of opening another Dashboard as a Dialog. So let's review that Dialog first before we review the Button itself (in the Custom Control Dashboard) in more detail. In this Dashboard is a Label and a Supplied Parameter (to handle the parameter handshake from Button to Label via Dialog). Let's look at the Label next. Here you can see that we pass in a parameter called |!prm_Label!| Now, let's review the button again. This time observe the Bound Parametercalledprm_Buttonand theParameter Value for Button Click. Also, please observe that here is where we pass in our Key Value Pair valueButtonEventListenerthat we saw earlier to theEventListenerNamekeye.g.EventListenerName=ButtonEventListener. So when do we get to open the Dialog? I hear you ask.... Well we needed some context before we step into the Embedded Dashboard setup. We start with the Dashboard we are launching using our Embedded Custom Control Dashboard template. Here we have added the Embedded version of the Dashboard that we have created. So far, pretty standard right? A Uniform dashboard with an Embedded Dashboard; albeit we don't normally add the Embedded version of a Dashboard to itself... But, let's now have a look at the Embedded Dashboard itself. Dashboard Button Action 1: Open Dialog Logic There are a couple of things to observe here before we get to the Collection. TheEmbedded Dashboardproperty is set to pick up our Custom Control Dashboard e.g.CustomControl_Button. Each fresh instance of the Custom Control Dashboard template must have a unique instance name e.g.CustomControl_Button1, CustomControl_Button2, etc. Now let's look at the Event ListenersCollection for this embedded Dashboard. Here we can see this is where we name our Event Listener e.g.ButtonEventListener. We also pass the value from our Button parameter (prm_Button) to our Label parameter (prm_Label) in theMap Bound Parametersproperty e.g.prm_Label=prm_Button. Remember these from earlier? Finally we set the Button component action to (a) Open Dialog and (b) to open the Dialog we had created earlier with our Label embedded in it e.g.dlg_CustomControl. This means that we are invoking the Button action in the Embedded Dashboard itself by using the Embedded Custom Control Dashboard and changing the action for this instance of the template. This means that when we open our new Dashboard (that uses this Embedded Dashboard), it creates a fresh instance of our Embedded Custom Control Dashboard, where the Button component now opens a Dialog based on our Event Listener logic e.g. Observe, The Label in the Dialog is now displaying the Parameter Value For Button Clickvaluefrom the Button itself. Next we are going to look at another example of making this Custom Control Dashboard perform a different action. This time it will return a Message to the Dashboard via a Dashboard Extender Business Rule. Dashboard Button Action 2: Return Message to Dashboard Setup So to execute aDashboard Extender(or Component Service), we first need an Assembly (mine is called Code) to be created in our Workspace (or we can use traditional Business Rules) and then some logic. You'll see how simple this example is below. All we are doing is executing a Dashboard Extender Business Rule to return a Message Box with a custom Message using theXFSelectionChangedTaskResultobject e.g."Event Listener Message Example" Dashboard Button Action 2: Return Message to Dashboard Logic Now we understand how to setup the Embedded Custom Control Dashboard, let's review our second example using the same Custom Control Dashboard template as before. Here we have a new Dashboard, again that is embedded to itself (the same setup as before), but this time we create a different instance of the Embedded Custom Control Dashboard. So let's look at the Embedded Dashboard, again we have set the Embedded Dashboard to look at our Custom Control Dashboard e.g. CustomControl_Button. But we have also given the Embedded Custom Control Dashboard a uniqueInstance Namee.g.CustomControl_Button2. Now, if we review the Event ListenersCollection in this example, we can see that we are using the same EventListenerName e.g.ButtonEventListener, but this time we have updated theSelection Changed Server Taskproperty to Execute a Dashboard Extender Business Rule and then set theSelection Changed Server Task Argumentsto execute our Dashboard Extender Business Rule and Function, which will return a Message Box Dialog to the Dashboard. So let's have a look at this in action. This time when we click the Button from our fresh instance of the same Custom Control Dashboard, it performs the action to return a Message Box that contains the Message from our Dashboard Extender Business Rule instead. So we can make a Component perform a completely different action for each instance by using the same Custom Control Dashboard as a template. Conclusion Now that you have a better understanding of some of these concepts, we can see a lot of new possibilities for reusing Dashboards and Components based on a templated approach and for varying use cases. Once you understand how to harness Custom Controls and combine these techniques with Dynamic Dashboards or even traditional Dashboard techniques, you will have the capability to make more strategic design decisions in your Workspace Development, that simply were not possible before Workspaces and hopefully more creativity and fun on your Dashboard development journey.62Views2likes1CommentCommunity Highlights: December 2024
1 MIN READ Hello 2025 and Farewell 2024! We hope everyone enjoyed a lovely New Years! Whether you toasted a loved one at midnight or were fast asleep, we're wishing our entire community a happy and healthy 2025. We've got one last look back to make on 2024 by sharing our highlights from December. We'd love to hear feedback on the new community experience. We know some things have been a bit bumpy, but we believe most things have been rectified by now. If not, please do let us know! We're always trying to make the community experience the best it can be and rely on your feedback for that. Let's look back on December 2024: The Community had28,133 visits in December 2024 and82,916 page views We had100 new discussionsbegin Reportingwas our most active forum, with23 new discussions Top Engaged Threads: Most Replies:Calculation Definitions Filter -Data Quality Event Handler Most Views:OneStream on Mac OS Most Active Members: Most Forum Replies:Henning Most Likes Received:JoakimK Most Authored Solutions:T_Kress21Views1like0CommentsOur All-New Community Platform
2 MIN READ The Community upgrade is now live! Our team has put together this blog to help you more quickly understand changes, enhancements and new features! Please note this post is not meant to be all encompassing and we recommend checking out our Frequently Asked Questions page in addition to this blog. So now, to the changes! WHEN IT COMES TO POSTING: First things first, how do you start a new thread? Navigate to the forum board that you wish to start a new topic inside of. For example, at the top navigation, select 'Forums' and click the drop down to select the forum board you wish to post in. You’ll then see on the right-hand side a button to “Start a Discussion” Inside your post, you’ll see some things have changed. For example, inputting code. To insert code, you’ll select the ellipis icon on the far-right side of the formatting bar Selecting that will display a drop down, where you’ll click this icon {;} A new window will pop up to Insert/Edit Code Sample. You will need to type the name of the language you’re inserting and select it when it drops down. SEARCHING AND FILTERING You can now see Featured Content on the homepage. It’s located on the righthand side about halfway down the page. Additionally, within the 'Recent Activity' feed, you can filter out recent posts by viewing the most recent, most viewed, activity with no replies yet or topics with no solutions yet. NEW TERMINIOLOGY & NEW LOOKS Kudos have been replaced with likes. They are exactly the same. You can nowupvote in IdeaStream! Labels have been replaced with 'Tags'. These are exactly the same as labels, but the terminology has changed. Posts withAccepted Solutions display a new icon to indicate they are solved SEARCHING Our search function has improved! A few points to note: If your search yields usernames that contain your search term, a dedicated user box will display on the righthand side like the below example: What’s more is your results have icons next to the titles that indicate what type of result they are. Here is the breakdown of icons and their meanings: Forum post Blog Post IdeaStream Post Technical Documents We sincerely hope this helps you find your way. If you have questions, please comment below and we’d be glad to help you.159Views5likes7CommentsCommunity Highlights: November 2024
1 MIN READ All New Community, All New Highlights! We hope everyone is enjoying the fresh new aesthetic of the OneStream Community! As we get ready to usher in the New Year, we’d be remiss if we didn't reflect on November. We know our highlights are slightly delayed as compared to usual, and we do apologize, but the platform upgrade changed our team views Community reports. Because of this change, we’ll be changing the format of our Community Highlights. Please note: there’s a good chance this format will continue to evolve. We’re working behind the scenes to analyze new data and different reports to provide our users the most useful and interesting data that we can. All that being said, let’s reflect on this past November! The Community had 33,047 visits in November 2024 and 55,420 page views We had 117 new discussions begin Reporting was our most active forum, with 41 new discussions Top Engaged Threads: Most Replies: librfc32.dll error Most Views: How to install Excel addin? Most Active Members: Most Forum Replies:Henning Most Likes Received: T_Kress Most Authored Solutions: T_Kress14Views0likes0Comments