PxPlus User Forum

Twitter Twitter Twitter

Author Topic: Retrieving calculated string from program to web page  (Read 87 times)

pwhirley

  • Silver Member
  • ***
  • Posts: 26
    • View Profile
Retrieving calculated string from program to web page
« on: May 15, 2024, 11:32:31 AM »
I'm not sure how best to explain my question. I feel sure it is an easy solution but I'm tired of trying to figure it out.
I have a file maintenance page generated through the NOMADS tools.  It works just fine and I've been able to do some tweaks.  I have copied _fm_webmaint to my progs folder and modified it and all the mods work except one.  One of the fields available to edit is the selected Printer.  I have made this a drop box and intend to offer a list of the available printers ON THE SERVER.  I inserted this line within the <form>:
[execute perform "Tools;Printer_List"]
The line executes and creates a variable, printerList$ that has a delimited list of available printers.  I cannot figure out how to make that variable available on the page so that it shows up in the line below:

[row "*\[show usefile field=printer$\]:"][list printer$ usefile event=Printer_Validate]
      [data rowsep=/]printerList$[/data][/list]
   [/row]<br />[/font][/font][/size][/size]

I have tried using %webster'Update(printerList$,mynewlist$) in my program, but I cannot get any data in the variable printerList$ on the web page.

Any help would be appreciated.  It is something simple, I am certain.

Thanks - Phil
Philip Whirley
Freelance software developer
phil@whirley.org

Susan Cryderman

  • Staff
  • Gold Member
  • *****
  • Posts: 66
    • View Profile
    • PVX Plus Technologies Ltd.
Re: Retrieving calculated string from program to web page
« Reply #1 on: May 15, 2024, 02:40:16 PM »
Hi Phil,

If I'm understanding this correctly - printer$ is the element in the data file being maintained and printerList$ is the delimited list of available printers (that is not an element in the data file).

I have not tried this - but it sounds like you might need to add a Hidden Variable to the form.  You can do this by adding a line using the [hide] short code to the generated html page that looks something like:

[hide printerList$ value=""]

 - or -

If you are running PxPlus 2022 or later, you should be able to also do this from within the File Maintenance Generator.  Press the Hidden Variables button on Step 6 and add an Additional Variable of printerList$.
 

Susan Cryderman

  • Staff
  • Gold Member
  • *****
  • Posts: 66
    • View Profile
    • PVX Plus Technologies Ltd.
Re: Retrieving calculated string from program to web page
« Reply #2 on: May 15, 2024, 02:52:51 PM »
Phil,

Just for clarification - you may NOT want to use the File Maintenance Generator method for adding the hidden variable as this would over-write the previous edits you made to the html file.

pwhirley

  • Silver Member
  • ***
  • Posts: 26
    • View Profile
Re: Retrieving calculated string from program to web page
« Reply #3 on: May 15, 2024, 03:34:55 PM »
Thanks Susan,

Your understanding is correct.  I have tried adding a line down where all the other hidden variables are.  it looks like this:
[hide printerList$ value=""]

That didn't work, so I also tried adding printerList$ to the _fm_panel_iol$ value, also at the bottom of the page. 

Your suggestion suggests that I'm not totally ignorant, thankfully.  I think I understand this but I'm doing something wrong.

Phil
Philip Whirley
Freelance software developer
phil@whirley.org

Susan Cryderman

  • Staff
  • Gold Member
  • *****
  • Posts: 66
    • View Profile
    • PVX Plus Technologies Ltd.
Re: Retrieving calculated string from program to web page
« Reply #4 on: Today at 11:03:45 AM »
Phil,

The difficulty here is that (I'm assuming) the list or printers needed is variable.  Because of this, the data needed for the drop box needs to be written to a memory file.

I tried the following and it seems to work (although I have not coded a Printer_Validate method).

1) Edited the _fm_panel_iol$ hidden variable in the html file to include printer$
2) Included the following code for the printer drop box:

 [row "*\[show usefile field=printer$\]:"][list printer$ size=20 event=Printer_Validate program=c:\webster\prog\tools][/list][/row]<br>

3) Coded the c:\webster\prog/tools program to load a memory file as follows:

 ! tools - load printer list
 !
  ENTER fileno
 !
  OPEN (HFN)"*memory*"
  fileno=LFO
 !
  printer_list$="Printer A/Printer B/Printer C/"
  FOR val$ FROM printer_list$
  WRITE (fileno,KEY=val$)
  NEXT
 !
  EXIT 

You would need to edit your Printer_List method accordingly.

Hope this helps!

Mike King

  • Diamond Member
  • *****
  • Posts: 3825
  • Mike King
    • View Profile
    • BBSysco Consulting
Re: Retrieving calculated string from program to web page
« Reply #5 on: Today at 03:33:59 PM »
Phil

There are any number of ways to add a printer list to a Webster+ panel.

If you have the list in a variable you can simply do something like:

[list printer$][data text=(printerlist$)][/list][/b]

You can see this in the *webster/pages/reports.html file where the system loads variable fieldNames$ which was added to the form using a [hide] short code.  This variable was loaded in the [form program=*report] which runs the INIT event in *webster/report.

Personally though I wouldn't put the printer list in the form.  No need to have the system load it on every request.  On windows you can have a fairly significant delay to get the list of printers if some of them are offline or misconfigured.

Instead I would create a drop down query for a printer$ input field and set the field as 'required'.  Whenever printer$ input is changed I would have an event that updates the user data with the last requested printer using the %webster'SetUserData() method so that all subsequent requests will have %usr.Printer$ with the last selected printer.  You can then use an [exec printer$=%usr.printer$] in your logic to initialize the value.

There are other methods such as using cookies, but personally I would suggest using the user data as that would provides consistency for the user regardless as to the browser.

Mike King
President - BBSysco Consulting
eMail: mike.king@bbsysco.com