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
DopeAgonist
Level III

Application Local Data Filter on Bivariate Analysis with Where clause

I'm using the application builder to create multiple bivariate graphs that only includes a subset of the data (with a where clause), and then apply a local data filter where the user can filter that data further. For example, using the Big Class I create a bivariate graph of height v weight and select on the males. Then I want to use a distribution of age as a filter on this bivariate graph. Unfortunately, the filter does not do anything to the graph. When I do the same thing with a bivariate graph without the where (so it includes all data), it works fine. I realize I could simply make two filters for age and sex, but in the context of the data I want to use this with I want to create multiple bivariate graphs that each is defaulted to show only a subset of data already and then can be filtered further.

 

JMP App(
	Set Name( "Dashboard" ),
	Set Description( "Selection in one report filters the second" ),
	Auto Launch( 1 ),
	Snap To Grid( 1 ),
	Show Grid( 1 ),
	Show Properties( 1 ),
	Show Sources( 1 ),
	Group By Category( 0 ),
	Dashboard Mode( 1 ),
	Parameters,
	Tables(
		DataTable1 = GuiTable(
			Set Path( "$SAMPLE_DATA/Big Class.jmp" ),
			Set Label( "Big Class" ),
			Set Location( "Current Data Table" ),
			Set Invisible( 0 )
		)
	),
	Thumbnail(
		New Image(
			Char To Blob(
				"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",
				"base64compressed"
			),
			"png"
		)
	),
	Script(JSL Quote(// This script is executed when the application is run.
// Named objects have been created for the application modules
// (for example, "Module1") and the pre-defined object
// "thisApplication" refers to the application object itself.
// Variables and functions declared here are scoped to the
// Application namespace.

)	),
	Allocate(
		Module1 = Plan(
			PreAllocate,
			Script(JSL Quote(				thisModuleInstance << Create Objects;				MainTabPage << Set Scriptable Object(thisApplication);			
)			),
			Allocate(
				DataFilterContext1 = Data Filter Context Box();
				MainTabPage = Tab Page Box();
				Splitter1 = H Splitter Box();
				DataFilterSource1 = Data Filter Source Box();
				TabPage2 = Tab Page Box();
				Report2 = Platform(
					DataTable1,
					Distribution(
						Automatic Recalc( 1 ),
						Nominal Distribution( Column( :age ) )
					)
				);
				TabPage1 = Tab Page Box();
				Report1 = Platform(
					DataTable1,
					Bivariate( Y( :weight ), X( :height ), Where( :sex == "F" ) )
				);
			),
			Organize(
				Reparent( TabPage1( Report1 ) );
				Reparent( Splitter1( TabPage1 ) );
				Reparent( TabPage2( Report2 ) );
				Reparent( DataFilterSource1( TabPage2 ) );
				Reparent( Splitter1( DataFilterSource1 ) );
				Reparent( MainTabPage( Splitter1 ) );
				Reparent( DataFilterContext1( MainTabPage ) );
				Relocate( DataFilterContext1( 0, 0 ) );
			),
			Initialize(
				DataFilterContext1 << Background Color( 2147483647 );
				DataFilterContext1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Enabled( 1 );
				DataFilterContext1 << Horizontal Alignment( "Default" );
				DataFilterContext1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Text Color( 2147483647 );
				DataFilterContext1 << Vertical Alignment( "Default" );
				DataFilterContext1 << Visibility( "Visible" );
				MainTabPage << Background Color( 2147483647 );
				MainTabPage << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Enabled( 1 );
				MainTabPage << Horizontal Alignment( "Default" );
				MainTabPage << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Text Color( 2147483647 );
				MainTabPage << Vertical Alignment( "Default" );
				MainTabPage << Visibility( "Visible" );
				MainTabPage << Title( "Dashboard" );
				MainTabPage << Tip( "" );
				MainTabPage << Icon( "" );
				MainTabPage << Closeable( 0 );
				MainTabPage << Moveable( 0 );
				Splitter1 << Background Color( 2147483647 );
				Splitter1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Enabled( 1 );
				Splitter1 << Horizontal Alignment( "Default" );
				Splitter1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Text Color( 2147483647 );
				Splitter1 << Vertical Alignment( "Default" );
				Splitter1 << Visibility( "Visible" );
				Splitter1 << Dockable( 1 );
				Splitter1 << Set Width( 593 );
				Splitter1 << Set Height( 525 );
				Splitter1 << Set Sizes( {0.315254237288136, 0.684745762711864} );
				Splitter1 << set horizontal( 1 );
				Splitter1 << Set Min Size( 361, 211 );
				Splitter1 << Set Max Size( 60063, 30040 );
				Splitter1 << Set Auto Stretching( 1, 1 );
				DataFilterSource1 << Background Color( 2147483647 );
				DataFilterSource1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Enabled( 1 );
				DataFilterSource1 << Horizontal Alignment( "Default" );
				DataFilterSource1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Text Color( 2147483647 );
				DataFilterSource1 << Vertical Alignment( "Default" );
				DataFilterSource1 << Visibility( "Visible" );
				TabPage2 << Background Color( 2147483647 );
				TabPage2 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Enabled( 1 );
				TabPage2 << Horizontal Alignment( "Default" );
				TabPage2 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage2 << Text Color( 2147483647 );
				TabPage2 << Vertical Alignment( "Default" );
				TabPage2 << Visibility( "Visible" );
				TabPage2 << Title( "Distributions" );
				TabPage2 << Tip( "" );
				TabPage2 << Icon( "Distrib" );
				TabPage2 << Closeable( 1 );
				TabPage2 << Moveable( 1 );
				TabPage1 << Background Color( 2147483647 );
				TabPage1 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Enabled( 1 );
				TabPage1 << Horizontal Alignment( "Default" );
				TabPage1 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage1 << Text Color( 2147483647 );
				TabPage1 << Vertical Alignment( "Default" );
				TabPage1 << Visibility( "Visible" );
				TabPage1 << Title( "TabPage1" );
				TabPage1 << Tip( "" );
				TabPage1 << Icon( "Bivariate" );
				TabPage1 << Closeable( 1 );
				TabPage1 << Moveable( 1 );
			)
		)
	),
	Initialize(
		Module1 << Auto Launch( 1 );
		Module1 << Set Module Type( "Report" );
		Module1 << Set Window Title( "^TABLENAME - ^APPNAME" );
		Module1 << Set Min Size( 0, 0 );
		Module1 << Set Max Size( 30000, 30000 );
		Module1 << Set Auto Stretching( ., . );
	)
) << Edit
1 ACCEPTED SOLUTION

Accepted Solutions
DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Great, I'm looking forward to the update!

I'm not sure why mine wasn't working, but I've fixed it (for now) by putting the commands into the script section of the application that gets executed after creating the application.
i.e.
DataFilter1 << Visibility("Hidden");

View solution in original post

8 REPLIES 8
DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

I found a solution using a Local Data Filter within the bivariate table and setting it to invisible.

 

I accomplished this by replacing the "Report1" section with this:

Report1 = Platform(
					DataTable1,
					Bivariate(
						Y( :weight ),
						X( :height ),
						Automatic Recalc( 1 ),
						Local Data Filter(
							Mode( Include( 0 ) ),
							Add Filter( columns( :sex ), Where( :sex == "M" ) ),
							Invisible
						)
					)
				);

 

So the overall result is:

JMP App(
	Set Name( "Dashboard" ),
	Set Description( "Selection in one report filters the second" ),
	Auto Launch( 1 ),
	Snap To Grid( 1 ),
	Show Grid( 1 ),
	Show Properties( 0 ),
	Show Sources( 1 ),
	Group By Category( 0 ),
	Dashboard Mode( 1 ),
	Parameters,
	Tables(
		DataTable1 = GuiTable(
			Set Path( "$SAMPLE_DATA/Big Class.jmp" ),
			Set Label( "Big Class" ),
			Set Location( "Current Data Table" ),
			Set Invisible( 0 )
		)
	),
	Thumbnail(
		New Image(
			Char To Blob(
				"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",
				"base64compressed"
			),
			"png"
		)
	),
	Script(JSL Quote(// This script is executed when the application is run.
// Named objects have been created for the application modules
// (for example, "Module1") and the pre-defined object
// "thisApplication" refers to the application object itself.
// Variables and functions declared here are scoped to the
// Application namespace.

)	),
	Allocate(
		Module1 = Plan(
			PreAllocate,
			Script(JSL Quote(				thisModuleInstance << Create Objects;				MainTabPage << Set Scriptable Object(thisApplication);			
)			),
			Allocate(
				DataFilterContext1 = Data Filter Context Box();
				MainTabPage = Tab Page Box();
				Splitter1 = H Splitter Box();
				DataFilterSource1 = Data Filter Source Box();
				TabPage2 = Tab Page Box();
				Report2 = Platform(
					DataTable1,
					Distribution(
						Automatic Recalc( 1 ),
						Nominal Distribution( Column( :age ) )
					)
				);
				TabPage1 = Tab Page Box();
				Report1 = Platform(
					DataTable1,
					Bivariate(
						Y( :weight ),
						X( :height ),
						Automatic Recalc( 1 ),
						Local Data Filter(
							Mode( Include( 0 ) ),
							Add Filter( columns( :sex ), Where( :sex == "M" ) ),
							Invisible
						)
					)
				);
			),
			Organize(
				Reparent( TabPage1( Report1 ) );
				Reparent( Splitter1( TabPage1 ) );
				Reparent( TabPage2( Report2 ) );
				Reparent( DataFilterSource1( TabPage2 ) );
				Reparent( Splitter1( DataFilterSource1 ) );
				Reparent( MainTabPage( Splitter1 ) );
				Reparent( DataFilterContext1( MainTabPage ) );
				Relocate( DataFilterContext1( 0, 0 ) );
			),
			Initialize(
				DataFilterContext1 << Background Color( 2147483647 );
				DataFilterContext1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Enabled( 1 );
				DataFilterContext1 << Horizontal Alignment( "Default" );
				DataFilterContext1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Text Color( 2147483647 );
				DataFilterContext1 << Vertical Alignment( "Default" );
				DataFilterContext1 << Visibility( "Visible" );
				MainTabPage << Background Color( 2147483647 );
				MainTabPage << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Enabled( 1 );
				MainTabPage << Horizontal Alignment( "Default" );
				MainTabPage << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Text Color( 2147483647 );
				MainTabPage << Vertical Alignment( "Default" );
				MainTabPage << Visibility( "Visible" );
				MainTabPage << Title( "Dashboard" );
				MainTabPage << Tip( "" );
				MainTabPage << Icon( "" );
				MainTabPage << Closeable( 0 );
				MainTabPage << Moveable( 0 );
				Splitter1 << Background Color( 2147483647 );
				Splitter1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Enabled( 1 );
				Splitter1 << Horizontal Alignment( "Default" );
				Splitter1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Text Color( 2147483647 );
				Splitter1 << Vertical Alignment( "Default" );
				Splitter1 << Visibility( "Visible" );
				Splitter1 << Dockable( 1 );
				Splitter1 << Set Width( 773 );
				Splitter1 << Set Height( 525 );
				Splitter1 << Set Sizes( {0.241558441558441, 0.758441558441559} );
				Splitter1 << set horizontal( 1 );
				Splitter1 << Set Min Size( 361, 211 );
				Splitter1 << Set Max Size( 60063, 30040 );
				Splitter1 << Set Auto Stretching( 1, 1 );
				DataFilterSource1 << Background Color( 2147483647 );
				DataFilterSource1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Enabled( 1 );
				DataFilterSource1 << Horizontal Alignment( "Default" );
				DataFilterSource1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Text Color( 2147483647 );
				DataFilterSource1 << Vertical Alignment( "Default" );
				DataFilterSource1 << Visibility( "Visible" );
				TabPage2 << Background Color( 2147483647 );
				TabPage2 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Enabled( 1 );
				TabPage2 << Horizontal Alignment( "Default" );
				TabPage2 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage2 << Text Color( 2147483647 );
				TabPage2 << Vertical Alignment( "Default" );
				TabPage2 << Visibility( "Visible" );
				TabPage2 << Title( "Distributions" );
				TabPage2 << Tip( "" );
				TabPage2 << Icon( "Distrib" );
				TabPage2 << Closeable( 1 );
				TabPage2 << Moveable( 1 );
				TabPage1 << Background Color( 2147483647 );
				TabPage1 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Enabled( 1 );
				TabPage1 << Horizontal Alignment( "Default" );
				TabPage1 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage1 << Text Color( 2147483647 );
				TabPage1 << Vertical Alignment( "Default" );
				TabPage1 << Visibility( "Visible" );
				TabPage1 << Title( "Bivariate Fit of weight By height" );
				TabPage1 << Tip( "" );
				TabPage1 << Icon( "Bivariate" );
				TabPage1 << Closeable( 1 );
				TabPage1 << Moveable( 1 );
			)
		)
	),
	Initialize(
		Module1 << Auto Launch( 1 );
		Module1 << Set Module Type( "Report" );
		Module1 << Set Window Title( "^TABLENAME - ^APPNAME" );
		Module1 << Set Min Size( 0, 0 );
		Module1 << Set Max Size( 30000, 30000 );
		Module1 << Set Auto Stretching( ., . );
	)
) << Run
DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

This solutions worked briefly, but is not consistent. Now when I run the script below and create the application the local data filter that should be invisible is visible. Any ideas of other methods to accomplish this or why the local data filter might be showing up when it shouldn't are welcome.

txnelson
Super User

Re: Application Local Data Filter on Bivariate Analysis with Where clause

I think you might be able to solve the issue with the "Invisible" setting by instead of using "Invisible", use

current data table()<<show window(0);
Jim
DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Hello Jim, Thanks for your reply and suggestion. Can you clarify where in the script I would insert that command? When I put it in the platform allocation, it doesn't seem to do anything. When I put it in the initialize function, it hides the entire application window.

 

I can't figure out how to refer to the platform object itself in the scripting area of the application. Get scriptable object doesn't work and gives me an error that it can't be used on listbox, but I can't find the container which has the platform. Would I want to send the message to that object?

 

Thanks again for your help.

txnelson
Super User

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Since it is not referencing your application directly, but rather pointing to the opened data table, you can actually place it anywhere after the table is opened.  Below, I have just placed it after your "Run" message.

JMP App(
	Set Name( "Dashboard" ),
	Set Description( "Selection in one report filters the second" ),
	Auto Launch( 1 ),
	Snap To Grid( 1 ),
	Show Grid( 1 ),
	Show Properties( 0 ),
	Show Sources( 1 ),
	Group By Category( 0 ),
	Dashboard Mode( 1 ),
	Parameters,
	Tables(
		DataTable1 = GuiTable(
			Set Path( "$SAMPLE_DATA/Big Class.jmp" ),
			Set Label( "Big Class" ),
			Set Location( "Current Data Table" ),
			Set Invisible( 0 )
		)
	),
	Thumbnail(
		New Image(
			Char To Blob(
				"52404eJytVvs70w0b/262OSxzbBPDSActUz1Cc445hOUwlWIjGV6HmcqUYRQeEaHSwXmVnponM7IcN3PlWGhKcg5J8ZKHGo0ez/sXvNd7vT987s/1ue/7un+67891Z3gQnRQVNBUAAFB0cXbw2mLWP5CDbUWRdWD3FkFC7NztAICbA5cGQre0fLSz73kAQAj/AYifG76wlYO5ONiR4sgLRQvepEHt9jWldeML6/VFjQfFJy/1h91HRRY9ukvUys8SX/Da9SilH7KLb/l5GYPpVaUT1JUdCCjkex+dc3bJcvdYQkxDVRW829pmqQa3b7z4fLxipf28103/f68lUJunxs7rxv4oVJotPr8InTpa5lHcPjVXNRShzePx1JMPmZkNqoTUDcsK4tZXDAmllvHfs8wsPvLlnz59+gasp5MHjMgddXMGhL4nWTMzwVUxVXZggpD+wu8rXABLewODw+Hq0BA6nZ4AipsyNjLqdL2at+YJ4utdXdYDQfacBTWSjfcj4ZwTWAKIOxQRbY7OhQu0kphMtFgsvnPvnqqp9Ce2DCFhLMVZblUqJy3o4ZLL/fqvsgpxEqY134oMkVqbf5rnSFMj0cQ4ZlQPd5BZNDyb3D0nCaSutiyLDjYWJ+kGFUWSCXEWr3t7aW5AFILSbvMglF5vVZVow5q/ecX5SAyE8vbz5JLsw2Mr8X6cfr9Tp/xSRi1TPn1AxB3V65Gd7Uv0TJ90it1vJAksqf3tCJhjCchaPBr+WkC20HZTj722Wl3ibGzxaNwa1PR8Rz4iZ//QUyVae8ABZ7CDZkFvTrqj9rFrh+/cM9VzLUrONIsShYaKFmSpPe4JSqMXjaIYdeyVANCXlcgqfiU/zzPNm+LDHjIHkgQ5wtfIAUpY2qs5oTPF4vRK0Z1C7pRQO5bTrJe1bbXs+0iY+vTt1vmzMTcArkrBYHp6U+RjDqe9dV9fSN9H6RrssWrsFE32TekfHfZML0Ra+uXSD+c1nkyF7W0YSHPdE0MnJajuCDM0Z5Qhj/hCzW8VZNR/tTpgWiTUTapTC9HE7WRQDpm8Pex8vPuop1D+wQNUUJeaAejsLtw7/5xqndJGKTiCl/94r4uIm0/owBk6xLQ6hS40w93pyGOvT0xGUHf2TI2X76tQqHi7dmDk0tXN8BD6RDd779uxVAYHdelu+w1yIuLFXIb57aKMLg51m+KXXC+SUrsEk10xK5zeDTq7m1iHErMZ0dK/IGjiMUf/du1tF/wcY6oVKoi3Sn3GswZ27iOFrx4YGG9lcwM1cIwJxwQjrzyEfh1f83Y6u+O468sy0dznhYbM5caIBzpEgr14e83ABaFpCOFis2Z6tgF7ZX57D79EyYSSsGkMiiskVpikqOM4xEKc2X38i8kAHshGS23J7v7wTEpBUyw3uVA0l5aj+MmSbPZ0T8HKs4JXmpZRKK1pLqg4R2nlPT5MV5cZZeYXEd3ZXbI4FcyDbVontpy83HvRphsrR3Mae6kCF1Sw2Gz2gbtu6tC2CFNXBnMnEoNGuJ6UMeySaylWkYPoo1gMrUbUxDuP50kSc1YJzNQEdsrXN7dA7qEyF5B+Ek6158zsOmp4A0jhGYIkhsm0dl2jcgedzZrtz7pnez855bvLC2gqfy2jjA95kIs7O11GGi/lv1rdeGM7P9YU79n9CDIhY392akmntLbW5172H6R9oSaapBMnHHfdR2KQ9dwFWEsqZ/DrwzGMjQ0Fdx1hYKsehwOezTY2Ws4xVsuh8spQdWPBxETphWw1q8Zc342u2uq0cujE4B01VdW+gQEDZld3tyeJZDDYo3kNyVpsGCtAqlh3YI2MbhW886gBpI88a5yec8FJWc0cjhv59BWIMkTVNnrLQbb8IB2ijP7fRcZhUGFz8AOf6/oNr6+63S50VetSxlQpv+zgKw3SfPtj42F49vbBD0Z9saeim4JUa+udNDToApRcZ3yEIne34E5nakmTT7b24kA1aaqgQXH4DMtDYvhhnUo/bZGch6VO+6NFGXClXM+DKdPleszbozlNTg1cbD/LZjFc+CdE+7XJtqDEg/t1J1dVw8GWQYtBJc9bTQOTRfjUL08pNBpo/3fovBs/eWPtR/RynvzMdbXH/Jcxb6+2fvFEY3/BOtcY33ypNtab1bJJkmlYYjMPlvAjclmFbMy1hvXtaK/7ZYhpqlFqkXjvTFzNiZWaNqvJEhF2w+GEYN6Okk8jIkre+lIsUylRm9amtUgmNB7LqVwviQnyByIH339HYfhLGhm+o++/nTRK5NWpxQ/I8EeChTsq5XV1tAXDP7M4jbIWY+KgQaGp+civjSbyHgMBkluDfpl4OH9iw5TJlIYP1B0vfxIMTurlZ44vtlw3swlt/1lSJ5oZrX85ewM40xETCv1F+jExaj/KjxOnaIoMvlMRk5U5eO5X+DtJcWUkk8iB9/XTvLIB9JgaGh/oYDcqY6IZ+b7yi0iWonGqzsaYxq1tewJsiBB+IeJzb+fsguUF32TtnfFDMu5i8zGLc4KVLAqZt7rVY2SWrvJDrN/WFEYqBgrxowyJCU8r1edKjMuF32e8bU8Omkk6tXy61Cccn+2IP1TvcXH1zAsDfNu6RmnDT4tghb7L4eiSxzQ7cTQFl4Hg4gCnXLCJpuO315u7bxbq3nAtl5FX3qVjGYOpK0dt/GD/rMty+T+s538pVLyAhlEiuGMJj8Xhbv/nZjIzM53d3BwCA8uWXNzdUx3ZueFURQJcMEmJplIdJUuXmcvTGX7Y8L1k4OPMljP8VQ70c+xVMQrSCuBftZd/fge8vb3fpFP8/R9GYIQByvgihHXJ8S+gah4vNz9f7VbEMYBM5Z46YGXlPmTbQ+WRGFgs1ssqTTT5ONgbHP3ut8Ll5TbV+0jW+7Gt6fZgOWIbeAl7mhu7qW96vA2s3HUVolyouz0gLMyFrH+zpx5cdWhOiEgMLygfWdJdvgidwK4tuG1GyxJe0PFFX+G2v8vIY8zzAJMWFApnG4JRZo0vVsghE8/gcWjE+GQFy2Ovg8peafVmV5fCJtSgNuEOtIxfu/UmAS4EosOfRwNS/gbTRDjy",
				"base64compressed"
			),
			"png"
		)
	),
	Script(JSL Quote(// This script is executed when the application is run.
// Named objects have been created for the application modules
// (for example, "Module1") and the pre-defined object
// "thisApplication" refers to the application object itself.
// Variables and functions declared here are scoped to the
// Application namespace.

)	),
	Allocate(
		Module1 = Plan(
			PreAllocate,
			Script(JSL Quote(				thisModuleInstance << Create Objects;				MainTabPage << Set Scriptable Object(thisApplication);			
)			),
			Allocate(
				DataFilterContext1 = Data Filter Context Box();
				MainTabPage = Tab Page Box();
				Splitter1 = H Splitter Box();
				DataFilterSource1 = Data Filter Source Box();
				TabPage2 = Tab Page Box();
				Report2 = Platform(
					DataTable1,
					Distribution(
						Automatic Recalc( 1 ),
						Nominal Distribution( Column( :age ) )
					)
				);
				TabPage1 = Tab Page Box();
				Report1 = Platform(
					DataTable1,
					Bivariate(
						Y( :weight ),
						X( :height ),
						Automatic Recalc( 1 ),
						Local Data Filter(
							Mode( Include( 0 ) ),
							Add Filter( columns( :sex ), Where( :sex == "M" ) ),
							Invisible
						)
					)
				);
			),
			Organize(
				Reparent( TabPage1( Report1 ) );
				Reparent( Splitter1( TabPage1 ) );
				Reparent( TabPage2( Report2 ) );
				Reparent( DataFilterSource1( TabPage2 ) );
				Reparent( Splitter1( DataFilterSource1 ) );
				Reparent( MainTabPage( Splitter1 ) );
				Reparent( DataFilterContext1( MainTabPage ) );
				Relocate( DataFilterContext1( 0, 0 ) );
			),
			Initialize(
				DataFilterContext1 << Background Color( 2147483647 );
				DataFilterContext1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Enabled( 1 );
				DataFilterContext1 << Horizontal Alignment( "Default" );
				DataFilterContext1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterContext1 << Text Color( 2147483647 );
				DataFilterContext1 << Vertical Alignment( "Default" );
				DataFilterContext1 << Visibility( "Visible" );
				MainTabPage << Background Color( 2147483647 );
				MainTabPage << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Enabled( 1 );
				MainTabPage << Horizontal Alignment( "Default" );
				MainTabPage << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				MainTabPage << Text Color( 2147483647 );
				MainTabPage << Vertical Alignment( "Default" );
				MainTabPage << Visibility( "Visible" );
				MainTabPage << Title( "Dashboard" );
				MainTabPage << Tip( "" );
				MainTabPage << Icon( "" );
				MainTabPage << Closeable( 0 );
				MainTabPage << Moveable( 0 );
				Splitter1 << Background Color( 2147483647 );
				Splitter1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Enabled( 1 );
				Splitter1 << Horizontal Alignment( "Default" );
				Splitter1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				Splitter1 << Text Color( 2147483647 );
				Splitter1 << Vertical Alignment( "Default" );
				Splitter1 << Visibility( "Visible" );
				Splitter1 << Dockable( 1 );
				Splitter1 << Set Width( 773 );
				Splitter1 << Set Height( 525 );
				Splitter1 << Set Sizes( {0.241558441558441, 0.758441558441559} );
				Splitter1 << set horizontal( 1 );
				Splitter1 << Set Min Size( 361, 211 );
				Splitter1 << Set Max Size( 60063, 30040 );
				Splitter1 << Set Auto Stretching( 1, 1 );
				DataFilterSource1 << Background Color( 2147483647 );
				DataFilterSource1 << Border(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Enabled( 1 );
				DataFilterSource1 << Horizontal Alignment( "Default" );
				DataFilterSource1 << Margin(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				DataFilterSource1 << Text Color( 2147483647 );
				DataFilterSource1 << Vertical Alignment( "Default" );
				DataFilterSource1 << Visibility( "Visible" );
				TabPage2 << Background Color( 2147483647 );
				TabPage2 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Enabled( 1 );
				TabPage2 << Horizontal Alignment( "Default" );
				TabPage2 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage2 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage2 << Text Color( 2147483647 );
				TabPage2 << Vertical Alignment( "Default" );
				TabPage2 << Visibility( "Visible" );
				TabPage2 << Title( "Distributions" );
				TabPage2 << Tip( "" );
				TabPage2 << Icon( "Distrib" );
				TabPage2 << Closeable( 1 );
				TabPage2 << Moveable( 1 );
				TabPage1 << Background Color( 2147483647 );
				TabPage1 << Border( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Enabled( 1 );
				TabPage1 << Horizontal Alignment( "Default" );
				TabPage1 << Margin( {Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )} );
				TabPage1 << Padding(
					{Left( 0 ), Top( 0 ), Right( 0 ), Bottom( 0 )}
				);
				TabPage1 << Text Color( 2147483647 );
				TabPage1 << Vertical Alignment( "Default" );
				TabPage1 << Visibility( "Visible" );
				TabPage1 << Title( "Bivariate Fit of weight By height" );
				TabPage1 << Tip( "" );
				TabPage1 << Icon( "Bivariate" );
				TabPage1 << Closeable( 1 );
				TabPage1 << Moveable( 1 );
			)
		)
	),
	Initialize(
		Module1 << Auto Launch( 1 );
		Module1 << Set Module Type( "Report" );
		Module1 << Set Window Title( "^TABLENAME - ^APPNAME" );
		Module1 << Set Min Size( 0, 0 );
		Module1 << Set Max Size( 30000, 30000 );
		Module1 << Set Auto Stretching( ., . );
	)
) << Run;
current data table() << show window(0);
Jim
DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Thanks for clarifying, Jim! I had tried something similar to that and wasn't quite getting the results I wanted. Your example comes close to what I need, but hides all of the associated data tables and graphs. I'm sure if I were more specific with which window to hide it would fix it. I've since found another solution that is working for now. Thanks for your help!!

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Both Local Data Filter and the Selection Filter have been updated in JMP 14 (available March 2018) for better support of subset tables, including reports with By or Where clauses as in your case.  I tested your original script and it appears to work correctly.

 

Your workaround to use a filter instead of the Where is a good approach - I tested with JMP 13.2 and did not see a problem with the filter becoming visible.

 

DopeAgonist
Level III

Re: Application Local Data Filter on Bivariate Analysis with Where clause

Great, I'm looking forward to the update!

I'm not sure why mine wasn't working, but I've fixed it (for now) by putting the commands into the script section of the application that gets executed after creating the application.
i.e.
DataFilter1 << Visibility("Hidden");