cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Check out the JMP® Marketplace featured Capability Explorer add-in
Choose Language Hide Translation Bar
Steffen_Bugge
Level IV

Multi-tab dashboard from multiple data tables

Hi, I am creating a multi-tabbed dashboard based on the script given in the following discovery talk: https://community.jmp.com/t5/Discovery-Summit-Americas-2021/One-Multi-tabbed-Filterable-Dashboard-20...

 

The script used to combine several dashboards is the following: 

 

 
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("Ac-225 trending tool, v0.1", tb);

//Close all the individual dash reports
For( w = 1, w <= N Items(dashes), w ++,
	dashes[w] << Close Window;
);
 

 

However, in contrast to the discovery talk, my dashboards are based on different data tables, and not a single data table.
I have all data tables and dashboards open, and run the above script to combine all dashboards into one multi-tabbed dashboard. This gives the following error message:

Steffen_Bugge_0-1686906136256.png

It looks like it is not able to extract the local data filters from my dashboards. Any suggestion as to how I can change the generic script to be able to combine all open dashboards?

1 ACCEPTED SOLUTION

Accepted Solutions
Steffen_Bugge
Level IV

Re: Multi-tab dashboard from multiple data tables

UPDATE:

 

The error message above has nothing to do with the data source being multiple tables. On the other hand, if the name of one of the data tables contains a hyphen (-), the CombineDashboards.jsl will not work. Removing the hyphen from the name solves the problem. 

View solution in original post

2 REPLIES 2
Steffen_Bugge
Level IV

Re: Multi-tab dashboard from multiple data tables

Or perhaps other solutions to combine several open dashboards into on multi-tabbed dashboard?

Steffen_Bugge
Level IV

Re: Multi-tab dashboard from multiple data tables

UPDATE:

 

The error message above has nothing to do with the data source being multiple tables. On the other hand, if the name of one of the data tables contains a hyphen (-), the CombineDashboards.jsl will not work. Removing the hyphen from the name solves the problem.