cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Choose Language Hide Translation Bar
Steffen_Bugge
Level IV

How to build a Multitabbed and Filterable Dashboard?

The Discovery Summit presentation One Multi-tabbed, Filterable Dashboard presents a universal script to generate a multitabbed dashboard. I am using a copy of this script (shown below) to combine a series of dashboards into one multitabbed dashboard. However, the script takes all the dashboards apart and combines them again in a 1 by 1 or 2 by 2 fashion. So, an original dashboard with two graphs, one over the other, is converted to a dashboard with the two graphs side by side. 

My dashboards are based on several different data tables, and hence, it is difficult to have local data filters from each of the tables if I only use separate tabs within the same dashboard.

What I would need is a script that takes all open dashboards and combines them without altering the setup of the dashboards. Any suggestions on how to change the below script or start from scratch? 

 

/////////////////////////////////  Create Tabbed Dashboard //////////////////////////////////////////////////
wait( 2 );
dashes = Find All(Reports);
 
tb = Expr(Tab Box());
 
For(i = 1, i<= N Items(dashes), i ++,
 
tabPage = Expr(Tab Page Box());
dfcb = Expr(Data Filter Context Box());
lub = Expr(Line Up Box(N Col(2)));
hlb = Expr(H List Box());
 
//Get Data table name to use with the data filter
wintitle = dashes[i] << Get Window Title;
wordone = Word(1, wintitle, "-");
wordtwo = Word(2, wintitle, "-");
dtname = Substr(wordone, 1, Length(wordone)-1 );
dt = Eval Expr(Data Table(Expr(dtName)));
 
//Get dashboard name 
dashName = Substr(wordtwo, 2);
 
failed = 0;
j = 1;
//Loop through the tab page boxes in the dashboard, and extract the scripts
While(failed ==0,
Try(tpb = dashes[i] << Find(TabPageBox(j)),
failed = 1; Continue();
);
//Try to get the script from the display box if it exisits
Try(obj = tpb << Get Scriptable Object;
script = obj << Get Script,
j ++; Continue();
);
//If the script is for the local data filter add the script to the H List Box
If(Char(Head(Name Expr(script))) == "Data Filter",
FilterExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
FilterExpr = Parse(FilterExprStr);
Insert Into(hlb,NameExpr(FilterExpr));
,
//Else add it to the lineup box
If( Char(Name Expr(script)) != "Scriptable[]",
reportExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
reportExpr = Parse(reportExprStr);
scrollbox = Expr(Scroll Box());
Insert Into(scrollbox, Name Expr(reportExpr));
Insert Into(lub,Name Expr(scrollbox));
);
 
);
 
 
j ++;
);
 
//Build up the display boxes
Insert Into(hlb, Name Expr(lub));
Insert Into(dfcb, Name Expr(hlb));
 
Insert Into(tabPage, Eval Expr(Title(Expr(dashName))), 1);
Insert Into(tabPage, Name Expr(dfcb), 2);
 
Insert Into(tb, Name Expr(tabPage));
);
 
//Create combined dashboard window
New Window("Combined Dashboard", tb);
 
//Close all the individual dash reports
For( w = 1, w <= N Items(dashes), w ++,
dashes[w] << Close Window;
);

 

1 REPLY 1
Steffen_Bugge
Level IV

Re: How to build a Multitabbed and Filterable Dashboard?

.