cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use to use Text Explorer to glean valuable information from text data at April 25 webinar.
Choose Language Hide Translation Bar
View Original Published Thread

Direct passing argument to a script file

CoverChikaka
Level I
Hey,
 
i wish to pass argument str1, a string argument to a separate script named: "script2run.jsl" for example, nad that script uses str1 argument and print a message such as :
print("This is the important string I successfully passed: " || Eval(str1)) ;
 
a different script that create a window that will be saved as journal for later usage will triger that script through buttons that would be something like this:
vars4script = {"nine", "one", "two", "eight", "eleven"}; 

win_click = New Window( "journal window",
	Spacer Box( size( 100, 10 ) ),
	Header = Text Box( " journal window buttons", <<Font Color( " Blue" ) ),
	Panel Box( " buttons1 ", buttons_area1 = H List Box() ),
	Panel Box( " buttons2 ", buttons_area2 = H List Box() ),
	Panel Box( " buttons2 ", buttons_area3 = H List Box() ), 

);

//Method 1
For( i = N Items( vars4script ), i, i--,
	str1 = vars4script[i];
	buttons_area1 << Append( Button Box( Eval( str1 ), Include( "script2run.jsl", Eval( str1 ) ) ) );
);

//Method 2
For( i = N Items( vars4script ), i, i--,
	str1 = vars4script[i];
	buttons_area2 << Append(
		Button Box( Eval( str1 ), <<Set Function( Expr( Include( "script2run.jsl", Eval( str1 ) ) ) ) )
	);
);

//Method 3
For( i = N Items( vars4script ), i, i--,
	str1 = vars4script[i];
	buttons_area3 << Append( Button Box( str1, Eval Expr( "include('script2run.jsl', '$str1')" ) ) );
);
there are 3 methods here but none is working properly when buttons are clicked
4 REPLIES 4
ErraticAttack
Level VI


Re: Direct passing argument to a script file

Is there a reason you need to do it this way?  Unless you're constrained from some sort of extreme circumstances, your method of constructing an interactive GUI is not what you should be doing.

 

Consider using JMP classes -- these allow you to use methods directly as the callbacks on display elements and can greatly simplify GUI construction.

Jordan
jthi
Super User


Re: Direct passing argument to a script file

I consider building your UI in some other way, but if you really want to go the way you have suggested, this might work (I would not use this)

Names Default To Here(1);

vars4script = {"nine", "one", "two", "eight", "eleven"}; 

win_click = New Window("journal window",
	Spacer Box(size(100, 10)),
	Header = Text Box(" journal window buttons", <<Font Color(" Blue")),
	Panel Box(" buttons1 ", buttons_area1 = H List Box()),
	Panel Box(" buttons2 ", buttons_area2 = H List Box()),
	Panel Box(" buttons2 ", buttons_area3 = H List Box()), 
);

For(i = N Items(vars4script), i >= 1, i--,
	Eval(EvalExpr(
		buttons_area1 << Append(Button Box(vars4script[i], 
			str1 = Expr(vars4script[i]);
			Expr(Parse(Load Text File("script2.jsl")));
		));
	));
);
-Jarmo
CoverChikaka
Level I


Re: Direct passing argument to a script file

If you can give examples of better ways I'll be more than happy to see. my only constraints are that one generic script will get different variable depending on the button clicked in the UI.
jthi
Super User


Re: Direct passing argument to a script file

In simple cases, you could most likely use a function and maybe button name as argument. Can you modify your generic script? Could it for example be included at the beginning of your script and then you call a function from that generic script within each of the buttons?

 

script1.jsl

Names Default To Here(1);

Include("script2.jsl");

vars4script = {"nine", "one", "two", "eight", "eleven"}; 

win_click = New Window("journal window",
	Spacer Box(size(100, 10)),
	Header = Text Box(" journal window buttons", <<Font Color(" Blue")),
	Panel Box(" buttons1 ", buttons_area1 = H List Box()),
);

buttons_area1 << Append(
	Button Box("nine", << Set Function(function({this},
		my_func((this << Get Button Name));
	)));
);
buttons_area1 << Append(
	Button Box("one", << Set Function(function({this},
		my_func((this << Get Button Name));
	)));
);

script2.jsl

Names Default To Here(1);

my_func = function({str}, {Default Local},
	Show(str);
);

 

-Jarmo