Forum Discussion

Sergey's avatar
Sergey
Contributor III
4 years ago

Use Case - Using an XBFR Business Rule to change value of a given parameter

Dear Community,

 

I have a use case where the user would like to change a value by clicking a button. when I click on the "+" icon, it will add 1 into my parameter shown in the label, and when I click on "-", this would remove 1.

Very simple, it can be done just with an input but I would like to do it with icons just for fun 🙂

 

Basically, this looks like this :

I was thinking of using an XBRL but not sure on how it would fit ?

 

Regards,

 

1 Reply

  • Sergey's avatar
    Sergey
    Contributor III

    That was actually an easy one.

    I am using a "Dashboard Extender Rule" with a parameter called P_PASSENGERS and its a "litteral value" type parameter :

     

    Imports System
    Imports System.Data
    Imports System.Data.Common
    Imports System.IO
    Imports System.Collections.Generic
    Imports System.Globalization
    Imports System.Linq
    Imports System.Net.Mail
    Imports System.Windows.Forms
    Imports Microsoft.VisualBasic
    Imports OneStream.Shared.Common
    Imports OneStream.Shared.Wcf
    Imports OneStream.Shared.Engine
    Imports OneStream.Shared.Database
    Imports OneStream.Stage.Engine
    Imports OneStream.Stage.Database
    Imports OneStream.Finance.Engine
    Imports OneStream.Finance.Database
    Imports System.Xml

    Namespace OneStream.BusinessRule.DashboardExtender.ESG_SolutionHelper
    Public Class MainClass
    Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As DashboardExtenderArgs) As Object
    Try
    Select Case args.FunctionType

    Case Is = DashboardExtenderFunctionType.ComponentSelectionChanged


    ' ****************** Add one passenger ****************
    If (args.FunctionName.XFEqualsIgnoreCase("AddPassenger")) Then

    Dim selectionChangedTaskResult As New XFSelectionChangedTaskResult()

    Dim parameterName As String = "P_PASSENGERS"
    Dim parameterValue As String = ""

    parameterValue = BRApi.Dashboards.Parameters.GetLiteralParameterValue(si, False, parameterName)

    Dim intParameter As Integer

    intParameter = parameterValue.XFConvertToInt(0)

    intParameter = intParameter + 1

    BRApi.Dashboards.Parameters.SetLiteralParameterValue(si, False, ParameterName, intParameter)

    selectionChangedTaskResult.ShowMessageBox = True
    selectionChangedTaskResult.Message = String.Format("Passenger Added")
    Return selectionChangedTaskResult

    End If

    ' ****************** Remove one Passenger ****************
    If (args.FunctionName.XFEqualsIgnoreCase("RemovePassenger")) Then

    Dim selectionChangedTaskResult As New XFSelectionChangedTaskResult()

    Dim parameterName As String = "P_PASSENGERS"
    Dim parameterValue As String = ""

    parameterValue = BRApi.Dashboards.Parameters.GetLiteralParameterValue(si, False, parameterName)

    Dim intParameter As Integer

    intParameter = parameterValue.XFConvertToInt(0)

    intParameter = intParameter - 1

    If intParameter <=1 Then intParameter = 1

    BRApi.Dashboards.Parameters.SetLiteralParameterValue(si, False, ParameterName, intParameter)

    selectionChangedTaskResult.ShowMessageBox = True

    If intParameter = 1 Then
    selectionChangedTaskResult.Message = String.Format("Passenger Removed (minimum:1)")
    Else
    selectionChangedTaskResult.Message = String.Format("Passenger Removed")
    End If
    Return selectionChangedTaskResult

    End If


    End Select

    Return Nothing

    Catch ex As Exception
    Throw ErrorHandler.LogWrite(si, New XFException(si, ex))

    End Try
    End Function