Dynamic Dashboards – Passing Parameters with Repeat Arguments.
Published 1 year ago
Version 1.0Thanks, this is helpful. When trying to replicate your results, I am having trouble passing the ~!Dim!~ template parameter into my XFBR to retrieve the dimension token, as OneStream is interpreting the template parameter literally. Will args.NameValuePairs.XfGetValue("Key") process template variables, or is an alternate method required to pass the template parameter into an XFBR? Maybe there is something else I am missing (e.g., Template Parameter Values).
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.Common
Imports System.Globalization
Imports System.IO
Imports System.Linq
Imports Microsoft.VisualBasic
Imports OneStream.Finance.Database
Imports OneStream.Finance.Engine
Imports OneStream.Shared.Common
Imports OneStream.Shared.Database
Imports OneStream.Shared.Engine
Imports OneStream.Shared.Wcf
Imports OneStream.Stage.Database
Imports OneStream.Stage.Engine
Imports OneStreamWorkspacesApi
Imports OneStreamWorkspacesApi.V800
Imports OneStreamWorkspacesApi.V820
Namespace Workspace.__WsNamespacePrefix.__WsAssemblyName
Public Class MyXFBRs
Implements IWsasXFBRStringV800
Public Function GetXFBRString(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal workspace As DashboardWorkspace, _
ByVal args As DashboardStringFunctionArgs) As String Implements IWsasXFBRStringV800.GetXFBRString
Try
If (globals IsNot Nothing) AndAlso (workspace IsNot Nothing) AndAlso (args IsNot Nothing) Then
If args.FunctionName.XFEqualsIgnoreCase("GetDimToken") Then
Dim dimension As String = args.NameValuePairs.XFGetValue("Dimension")
'Create dictionary to store all dim type Ids
Dim dimDictionary As New Dictionary(Of String, String)
'Add each dimension to the dictionary
dimDictionary.Add("Entity", "E#")
dimDictionary.Add("Scenario", "S#")
dimDictionary.Add("Time", "T#")
dimDictionary.Add("Consolidation", "C#")
dimDictionary.Add("Parent", "P#")
dimDictionary.Add("Account", "A#")
dimDictionary.Add("Flow", "F#")
dimDictionary.Add("Origin", "O#")
dimDictionary.Add("View", "V#")
dimDictionary.Add("Intercompany", "IC#")
dimDictionary.Add("UD1", "U1#")
dimDictionary.Add("UD2", "U2#")
dimDictionary.Add("UD3", "U3#")
dimDictionary.Add("UD4", "U4#")
dimDictionary.Add("UD5", "U5#")
dimDictionary.Add("UD6", "U6#")
dimDictionary.Add("UD7", "U7#")
dimDictionary.Add("UD8", "U8#")
'Lookup the selected dimension's value in the dictionary
Dim returnDimToken As String = dimDictionary.Item(Dimension)
'Return the selection if a value exists
If Not returnDimToken Is Nothing Then
Return returnDimToken
Else
Return Nothing
End If
Else
Return Nothing
End If
Else
Return Nothing
End If
Catch ex As Exception
Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
End Try
End Function
End Class
End Namespace