Sample of data used to build the Analytic Data Model for this demo
Layout
DataContext Type Variables to store ID and Description of selected member value
String variables to store Column Names for repeated use
String Variables to store dropdown value selections
Definition of initializeData() Function
// create column name variables as they will be reused many times
regionColumnName = "Region";
countryColumnName = "Country";
stateColumnName = "State";
cityColumnName = "City";
// initialize the variables that will hold selected dropdown values at runtime
selectedRegion = "";
selectedCountry = "";
selectedState= "";
selectedCity = "";
// remove all filters that may be applied on the table when application is run for the first time / page load / application initialization
MainTable.getDataSource().removeDimensionFilter(regionColumnName);
MainTable.getDataSource().removeDimensionFilter(countryColumnName);
MainTable.getDataSource().removeDimensionFilter(stateColumnName);
MainTable.getDataSource().removeDimensionFilter(cityColumnName);
//populate FullResultSet variable with full dataset that means ALL data in ALL columns and ALL Rows
var FullResultSet = MainTable.getDataSource().getResultSet();
// define DataContext container / object for each dropdown variable to hold the ID & Description of the selected member
region = ArrayUtils.create(Type.DataContext);
country = ArrayUtils.create(Type.DataContext);
state = ArrayUtils.create(Type.DataContext);
city = ArrayUtils.create(Type.DataContext);
// iterate the FullResultSet to populate the dropdown menu with values of the region, country, state and city columns
for(var i=0;i<FullResultSet.length;i++)
{
region.push(FullResultSet[i][regionColumnName]);
country.push(FullResultSet[i][countryColumnName]);
state.push(FullResultSet[i][stateColumnName]);
city.push(FullResultSet[i][cityColumnName]);
}
// populate each of the dropdowns lists with corresponding values from the columns and append ALL as one of the value
Drop_Down.fillMasterValues(dd_Region,region,"ALL");
Drop_Down.fillMasterValues(dd_Country,country,"ALL");
Drop_Down.fillMasterValues(dd_State,state,"ALL");
Drop_Down.fillMasterValues(dd_City,city,"ALL");
Definition of findApplicableData() function
// this function will always hold the filtered member values that will be used to pass filtered values at run-time to dropdowns and table
var applicableData = ArrayUtils.create(Type.DataContext);
var FullResultSet = MainTable.getDataSource().getResultSet();
for(var i=0;i<FullResultSet.length;i++){
var filter = FullResultSet[i][filterName];
if(applicableFilter===filter.id){
applicableData.push(FullResultSet[i][columnName]);
}
}
return applicableData;
Definition of fillMasterValues() function
// this function will populate the dropdowns with all possible values of region, country, state and city columns, also this function will be called during application initialization
dropdownVar.removeAllItems();
dropdownVar.addItem("ALL","ALL");
while(dataContext.length > 0)
{
var dataContextObj = dataContext.pop();
dropdownVar.addItem(dataContextObj.id,dataContextObj.description);
if(selectedValue==="")
{
dropdownVar.setSelectedKey("ALL");
}
else
{
dropdownVar.setSelectedKey(selectedValue);
}
}
return dropdownVar;
selectedRegion= dd_Region.getSelectedKey();
if(selectedRegion !== "ALL")
{
MainTable.getDataSource().setDimensionFilter(regionColumnName,selectedRegion);
var applicableDataContextArr = User_Script.findApplicableData(selectedRegion,regionColumnName,countryColumnName);
dd_Country.removeAllItems();
Drop_Down.fillMasterValues(dd_Country,applicableDataContextArr,selectedCountry);
applicableDataContextArr = User_Script.findApplicableData(selectedRegion,regionColumnName,stateColumnName);
dd_State.removeAllItems();
Drop_Down.fillMasterValues(dd_State,applicableDataContextArr,selectedState);
applicableDataContextArr = User_Script.findApplicableData(selectedRegion,regionColumnName,cityColumnName);
dd_City.removeAllItems();
Drop_Down.fillMasterValues(dd_City,applicableDataContextArr,selectedCity);
} else {
User_Script.initializeData();
}
selectedCountry= dd_Country.getSelectedKey();
if(selectedCountry !== "ALL")
{
dd_Country.setSelectedKey(selectedCountry);
MainTable.getDataSource().setDimensionFilter(countryColumnName,selectedCountry);
var applicableDataContextArr = User_Script.findApplicableData(selectedCountry,countryColumnName,regionColumnName);
dd_Region.removeAllItems();
Drop_Down.fillMasterValues(dd_Region,applicableDataContextArr,selectedRegion);
applicableDataContextArr = User_Script.findApplicableData(selectedCountry,countryColumnName,stateColumnName);
dd_State.removeAllItems();
Drop_Down.fillMasterValues(dd_State,applicableDataContextArr,selectedState);
applicableDataContextArr = User_Script.findApplicableData(selectedCountry,countryColumnName,cityColumnName);
dd_City.removeAllItems();
Drop_Down.fillMasterValues(dd_City,applicableDataContextArr,selectedCity);
} else {
User_Script.initializeData();
}
selectedState= dd_State.getSelectedKey();
if(selectedState !== "ALL")
{
MainTable.getDataSource().setDimensionFilter(stateColumnName,selectedState);
var applicableDataContextArr = User_Script.findApplicableData(selectedState,stateColumnName,regionColumnName);
dd_Region.removeAllItems();
Drop_Down.fillMasterValues(dd_Region,applicableDataContextArr,selectedRegion);
applicableDataContextArr = User_Script.findApplicableData(selectedState,stateColumnName,countryColumnName);
dd_Country.removeAllItems();
Drop_Down.fillMasterValues(dd_Country,applicableDataContextArr,selectedCountry);
applicableDataContextArr = User_Script.findApplicableData(selectedState,stateColumnName,cityColumnName);
dd_City.removeAllItems();
Drop_Down.fillMasterValues(dd_City,applicableDataContextArr,selectedCity);
} else {
User_Script.initializeData();
}
selectedCity= dd_City.getSelectedKey();
if(selectedCity !== "ALL")
{
MainTable.getDataSource().setDimensionFilter(cityColumnName,selectedCity);
var applicableDataContextArr = User_Script.findApplicableData(selectedCity,cityColumnName,regionColumnName);
dd_Region.removeAllItems();
Drop_Down.fillMasterValues(dd_Region,applicableDataContextArr,selectedRegion);
applicableDataContextArr = User_Script.findApplicableData(selectedCity,cityColumnName,countryColumnName);
dd_Country.removeAllItems();
Drop_Down.fillMasterValues(dd_Country,applicableDataContextArr,selectedCountry);
applicableDataContextArr = User_Script.findApplicableData(selectedCity,cityColumnName,stateColumnName);
dd_State.removeAllItems();
Drop_Down.fillMasterValues(dd_State,applicableDataContextArr,selectedState);
} else {
User_Script.initializeData();
}
Call User_Script.initializeData() in onInitialization event
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Subject | Kudos |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
User | Count |
---|---|
19 | |
14 | |
10 | |
9 | |
8 | |
7 | |
7 | |
6 | |
5 | |
5 |