To execute the example, in the HEAD tag of the HTML page specify links to the following CSS and JS files:
PP.js.
PP.Metabase.js.
PP.Express.js.
PP.TS.js.
PP.Express.css.
PP.TS.css.
PP.Metabase.css.
PP.App.css.
PP.css.
This example requires a time series database with the 1334 key.
In the <body> tag as the value of the onLoad attribute specify name of the function executed after page body loading is finished:
<body onselectstart="return false" class="PPNoSelect" onload="Ready()"> <div id='example'></div> </body>
At the end of the document insert a code that sets styles corresponding to client's operating system, to the document.body node:
<script type="text/javascript"> PP.initOS(document.body); </script>
In the SCRIPT tag add the following script:
<script type="text/javascript"> //Resources folder PP.resourceManager.setRootResourcesFolder("../resources/"); //List of used resources PP.resourceManager.setResourceList(['PP', 'Metabase', 'Ts', 'Express', 'TabSheetMaster', 'ChartMaster', 'TreeChartMaster', 'MapMaster', 'GaugeMaster']); // Determine language settings for resources PP.setCurrentCulture(PP.Cultures.ru); // Declare constants var KEY = 1334; //document key var IMG_PATH = "../build/img/"; //path to icons folder // Declare variables var waiter, metabase, hieService, hier, attrId, navBreadcrumb, navBreadcrumbItem; //Function for getting handler functions //It gets additional information output to the console as a parameter on calling a handler. //It can be, for example, a string that contains class and event name function onDummyActionFactory(actionCaption){ return function (sender, args){ console.log(actionCaption); console.log(sender); console.log(args); }; } function Ready(){ //body loading event handler // Create loading indicator waiter = new PP.Ui.Waiter(); // Create a repository connection metabase = new PP.Mb.Metabase({ Id: "PPRepository", UserCreds: { UserName: "user", Password: "password" }, StartRequest: function(){waiter.show();}, EndRequest: function(){waiter.hide();}, Error: function (sender, args){alert(args.ResponseText);} }); // Open repository connection metabase.open(); // Create a service used to work with time series database hierarchy hieService = new PP.TS.HieService({ Metabase: metabase }); // Sends request for opening workbook hierarchy by the KEY key of factor directory hier = hieService.openFromRubKey(KEY, null, onHieOpened); //operation execution end handler function onHieOpened(sender, args) { console.log("Get hierarchy attributes") attrs = hier.getAttributes(); console.log("Get identifier by attribute the 0 index"); attrId = attrs[0].id; console.log(attrId); // Create an instance of class component for displaying and controlling workbook attributes navBreadcrumb = new PP.TS.Ui.NavBreadcrumb({ ImagePath: IMG_PATH, //path to icons folder Source: hier, //source(view property) Width: 302, //height Height: 500, //width ParentNode: "example" //DOM parent node }); // Get hierarchy console.log("Refresh the entire component according to metadata"); navBreadcrumb.refreshAll(); console.log("Refresh selection in dimension trees of all all attributes"); navBreadcrumb.refreshSelections(); console.log("Refresh element text of the NavBreadcrumb component according to attribute"); navBreadcrumb.updateItemContent(attrId); // Link view event handlers navBreadcrumb.AltHierarchyChanged.add(onDummyActionFactory("Event of view of server alternative hierarchy change occurred")); navBreadcrumb.AttributeFilterChanged.add(onDummyActionFactory("Event of view of enable or disable attribute filter occurred")); navBreadcrumb.AttributeSortChanged.add(onDummyActionFactory("Event of view of changing dimension tree sorting occurred")); navBreadcrumb.DimSelectionChanged.add(onDummyActionFactory("Event of view of changing server selection change occurred")); navBreadcrumb.RequestMetadata.add(onDummyActionFactory("Event of view of metadata request occurred")); navBreadcrumb.RequestSelectedItemsChanged.add(onDummyActionFactory("Event of view of moving attributes in the NavBreadcrumb component occurred")); navBreadcrumb.TreeNameAttrChanged.add(onDummyActionFactory("Event of view of changing level name attribute occurred")); console.log("Add a new component for displaying and controlling workbook attributes"); addNewItem(); } } // Function of adding a new component for displaying and controlling workbook attributes function addNewItem() { // Class thet implements panels with attribute dimension tree // in the component for displaying and controlling workbook attributes navBreadcrumbItem = new PP.TS.Ui.NavBreadcrumbItem({ Source: hier.getDim(hier.getAttributes()[0].k), //source (dimension) ViewType: PP.Ui.NavigationItem, Title: "New element", //title Tag: hier.getAttributes()[0].id, OwnerMaster: navBreadcrumb, ImageList: navBreadcrumb._ImageList }); //add panel to wizard navBreadcrumb.addMasterPanel(navBreadcrumbItem); //expand panel navBreadcrumbItem.expand(); console.log("Get position index which contains dimension"); var iPos = navBreadcrumbItem.getIndexPosition(); console.log(iPos); console.log("Get whether attribute is selected"); var isSelected = navBreadcrumbItem.getSelected(); console.log(isSelected); console.log("Get attribute dimension attribute located in the panel (PP.Mb.Ui.DimensionTree)"); var dimTreeView = navBreadcrumbItem.getDimTreeView(); console.log(dimTreeView); } </script>
After executing the example the NavBreadcrumb component is placed in the HTML page. This component looks as follows:
On firing the events listed below:
the browser console will show the following messages:
Get hierarchy attributes
Get ID by attribute index 0
DL
Refresh the component in accordance with metadata
Refresh selection in dimension trees of all attributes
Refresh text in the NavBreadcrumb component in accordance with the attribute
Add a new component to show and manage workbook attributes
Get index of dimension position
undefined
Get if the attribute is selected
false
Get attribute dimension tree shown in a panel (PP.Mb.Ui.DimensionTree)
PP.Mb.Ui.DimensionTree
A new panel named PP.Mb.Ui.DimensionTree is added to the component.