Executing a Hyperlink command within RPG

Use this board to ask questions or have discussions with other Rich Displays users.
Post Reply
slmcpherson
New User
Posts: 14
Joined: Tue Nov 26, 2013 11:12 am
First Name: sheri
Last Name: mcpherson
Company Name: winwholesale, inc.
Contact:

Executing a Hyperlink command within RPG

Post by slmcpherson »

Is it possible to execute a Hyperlink command, such as I have in ProfoundUI to execute it pui.click("RichDataHL")? This displays a URL that the RPG program has created in another browser window. Thanks!
Scott Klement
Experienced User
Posts: 2711
Joined: Wed Aug 01, 2012 8:58 am
First Name: Scott
Last Name: Klement
Company Name: Profound Logic
City: Milwaukee
State / Province: Wisconsin

Re: Executing a Hyperlink command within RPG

Post by Scott Klement »

Assuming "RichDataHL" is the id of a hyperlink widget, and that widget has either a 'response', 'shortcut key', or 'onclick' defined, then it should work.

Is that what you're doing?
slmcpherson
New User
Posts: 14
Joined: Tue Nov 26, 2013 11:12 am
First Name: sheri
Last Name: mcpherson
Company Name: winwholesale, inc.
Contact:

Re: Executing a Hyperlink command within RPG

Post by slmcpherson »

The RichDataHL is the id of a field we have called WebAppUrl on ProfoundUI. That field has a onclick property defined to do the following: window.open(this.pui.properties["hyperlink reference"]);

How can I execute the onclick action from RPG code? It works beautifully when clicked on within PUI, my challenge is how to execute the command from RPG. I hope this makes sense. :)
Scott Klement
Experienced User
Posts: 2711
Joined: Wed Aug 01, 2012 8:58 am
First Name: Scott
Last Name: Klement
Company Name: Profound Logic
City: Milwaukee
State / Province: Wisconsin

Re: Executing a Hyperlink command within RPG

Post by Scott Klement »

Perhaps you can run pui.click() from your screen's 'onload' event? This way, when RPG does EXFMT, it triggers the hyperlink..
slmcpherson
New User
Posts: 14
Joined: Tue Nov 26, 2013 11:12 am
First Name: sheri
Last Name: mcpherson
Company Name: winwholesale, inc.
Contact:

Re: Executing a Hyperlink command within RPG

Post by slmcpherson »

The problem with that is its only executed from a Menu widget we have built in ProfoundUI and we have it conditional to show different text at different times. :(
Scott Klement
Experienced User
Posts: 2711
Joined: Wed Aug 01, 2012 8:58 am
First Name: Scott
Last Name: Klement
Company Name: Profound Logic
City: Milwaukee
State / Province: Wisconsin

Re: Executing a Hyperlink command within RPG

Post by Scott Klement »

I'm not sure that I understand... you said you wanted to execute a hyperlink widget's onclick function from an RPG program. How does this relate to a menu widget? Is it that you want to execute the hyperlink widget from the menu widget?
slmcpherson
New User
Posts: 14
Joined: Tue Nov 26, 2013 11:12 am
First Name: sheri
Last Name: mcpherson
Company Name: winwholesale, inc.
Contact:

Re: Executing a Hyperlink command within RPG

Post by slmcpherson »

I am not sure now. :)

Let me show you a little bit of the code that I am stumped on maybe that will help.

When a Menu option is clicked the value of the menu option will equal 'Rich'. Then the RPG program will execute and a select statement below will be executed and as you can see I have nothing to execute at this level because I do not know how to execute the hyperlink from there.


Select;
// Copy clicked
When outDtlAct = 'Copy';
iCpyLnItm = *on;
InsertOrUpdateDetailLines();

// Rich Data clicked
When outDtlAct = 'Rich';
//pui.click("RichDataHL");
Scott Klement
Experienced User
Posts: 2711
Joined: Wed Aug 01, 2012 8:58 am
First Name: Scott
Last Name: Klement
Company Name: Profound Logic
City: Milwaukee
State / Province: Wisconsin

Re: Executing a Hyperlink command within RPG

Post by Scott Klement »

You can't call pui.click() from an RPG program... The RPG program is running on IBM i, whereas pui.click() needs to run in the end-user's PC inside their web browser. So it's a different environment. What you need to do instead is display a PUI screen (which runs in the browser) and have code in that screen execute the URL.

With that in mind, you'd want your RPG code to look something like this:

Code: Select all

Select;
// Copy clicked
When outDtlAct = 'Copy';
   iCpyLnItm = *on;
   InsertOrUpdateDetailLines();

// Rich Data clicked
When outDtlAct = 'Rich';
   //pui.click("RichDataHL");
   AutoClick = 'Y';
   exfmt THESCREEN;
   AutoClick = 'N';
The idea here is that when you execute your screen, it can run some JavaScript code automatically using the 'onload' event. This code executes as soon as the screen is loaded, and can potentially re-submit your screen to the RPG program (if you don't want to wait for user input.) If your screen is used for other things besides just running this URL, then you will want some sort of a flag to indicate when you're doing the automatic click (or not), so I thought maybe a good way would be to have a hidden output field bound to an RPG variable named 'AutoClick' would be a good way, set this to Y if you want it to automatically open the hyperlink, or N if not.

So on your display:
  1. Drag in an output-field. Bind it to 'AutoClick' field, which is Character, length 1. Also set the 'id' of the field to: AutoClick
  2. In the screen-level properties, find the 'onload' event.
  3. Set the onload event to something like this:

Code: Select all

   if (get("AutoClick") == "Y") {
      // Open window to hyperlink reference
      window.open(getObj("RichDataHL").pui.properties["hyperlink reference"]);
      // resubmit screen back to RPG program without waiting for user.
      pui.click();
   }
Does that make more sense?
LesleyGill
New User
Posts: 3
Joined: Thu Dec 12, 2013 12:36 pm
First Name: Lesley
Last Name: Gill
Company Name: WinWholesale
Phone: 9377185843
Address 1: 3110 Kettering Blvd
City: Dayton
State / Province: Outside Canada/USA
Zip / Postal Code: 45439
Country: United States
Contact:

Re: Executing a Hyperlink command within RPG

Post by LesleyGill »

That works very nicely. Thank you Scott.
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests