cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Learn how to build custom Python data connectors and further customize JMP’s Data Connector Framework with the Python Data Connector Demo, available now in the JMP Marketplace!
  • See how to create experiments to support product design and ID useful product features. Register for June 12 webinar, 2pm US Eastern Time.

Discussions

Solve problems, and share tips and tricks with other JMP users.
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. 

Recommended Articles