Sample Customization
The following sample is a fully customized Data Set Service File in C# of a custom Menu Component.
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Globalization;
using System.IO;
using System.Linq;
using Microsoft.CSharp;
using OneStream.Finance.Database;
using OneStream.Finance.Engine;
using OneStream.Shared.Common;
using OneStream.Shared.Database;
using OneStream.Shared.Engine;
using OneStream.Shared.Wcf;
using OneStream.Stage.Database;
using OneStream.Stage.Engine;
using OneStreamWorkspacesApi;
using OneStreamWorkspacesApi.V800;
namespace Workspace.__WsNamespacePrefix.__WsAssemblyName
{
public class WsasDataSet : IWsasDataSetV800
{
public object GetDataSet(SessionInfo si, BRGlobals brGlobals, DashboardWorkspace workspace, DashboardDataSetArgs args)
{
try
{
if ((brGlobals != null) && (workspace != null) && (args != null))
{
if (args.DataSetName.XFEqualsIgnoreCase("MainMenu"))
{
var menu = new XFMenuItemCollection();
// Top-level Menu Item #1
var topLevelMenuItemOne = new XFMenuItem("1", "Menu Item #1", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, "menuItem1", null, null);
topLevelMenuItemOne.Children = new List<XFMenuItem>();
topLevelMenuItemOne.Children.Add(new XFMenuItem("2", "Child #1", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, "child1", "Tooltip #1", null));
topLevelMenuItemOne.Children.Add(new XFMenuItem("3", "Child #2", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, "child2", "Tooltip #2",
new List<XFMenuItem>()
{
new XFMenuItem("4", "Grandchild #1", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, null, null, null),
new XFMenuItem("5", "Grandchild #2", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, null, null, null)
}
));
// Top-level Menu Item #2
var topLevelMenuItemTwo = new XFMenuItem("6", "Menu Item #1", "White", "SlateGray", false, false, true, false, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, XFImageFileSourceType.Unknown, null, 0, "menuItem2", null, null);
menu.MenuItems.Add(topLevelMenuItemOne);
menu.MenuItems.Add(topLevelMenuItemTwo);
return menu.CreateDataSet(si);
}
}
return null;
}
catch (Exception ex)
{
throw new XFException(si, ex);
}
}
}
}
This is how this sample Menu Component displays in a dashboard:
The following sample is a fully customized Data Set Service File in C# of a custom Menu Component.
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Globalization;
using System.IO;
using System.Linq;
using Microsoft.CSharp;
using OneStream.Finance.Database;
using OneStream.Finance.Engine;
using OneStream.Shared.Common;
using OneStream.Shared.Database;
using OneStream.Shared.Engine;
using OneStream.Shared.Wcf;
using OneStream.Stage.Database;
using OneStream.Stage.Engine;
using OneStreamWorkspacesApi;
using OneStreamWorkspacesApi.V800;
namespace Workspace.__WsNamespacePrefix.__WsAssemblyName
{
public class MenuSvc : IWsasDataSetV800
{
public object GetDataSet(SessionInfo si, BRGlobals brGlobals, DashboardWorkspace workspace, DashboardDataSetArgs args)
{
try {
if ((brGlobals != null) && (workspace != null) && (args != null)) {
// sample menu
if (args.DataSetName.XFEqualsIgnoreCase("MainMenu"))
{
// create the menu object
XFMenuItemCollection menu = new XFMenuItemCollection();
// create top-level items
XFMenuItem parentMenuItemOne = new XFMenuItem("1", "Parent 1",
"White", "SlateGray", false, false, true, false, null);
// create items for the second level
XFMenuItem childMenuItemOne = new XFMenuItem("1.1", "Child 1",
"Black", "White", true, true, true, false, null);
XFMenuItem childMenuItemTwo = new XFMenuItem("1.2", "Child 2",
"Black", "White", true, true, true, false, null);
// create items for the third level
XFMenuItem grandChildMenuItemOne = new XFMenuItem("1.1.1", "Grandchild 1",
"White", "SlateGray", true, true, true, false, null);
// create the hierarchy by adding children to direct parents as a List
childMenuItemOne.Children = new List<XFMenuItem>(){
grandChildMenuItemOne
};
parentMenuItemOne.Children = new List<XFMenuItem>(){
childMenuItemOne
};
// you can also manipulate the list once created
parentMenuItemOne.Children.Add(childMenuItemTwo);
// add top-level items to the menu object
menu.MenuItems.Add(parentMenuItemOne);
// generate the dataset and return it
return menu.CreateDataSet(si);
}
}
return null;
} catch (Exception ex) {
throw new XFException(si, ex);
}
}
}
}
This is how this sample Menu Component displays in a dashboard: