ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "Paul Mazaitis" <pm39@andrew.cmu.edu>
To: "mailing list for ConTeXt users" <ntg-context@ntg.nl>
Subject: Re: Widgets: Any good examples for developing JS-enabled PDFs that calculate?
Date: Sun, 17 Nov 2019 15:13:10 -0500	[thread overview]
Message-ID: <ADE29B0D-B95B-4C22-8BE4-8B303C83F451@andrew.cmu.edu> (raw)
In-Reply-To: <090ed387-4e51-d3b6-8d02-8b9352c27763@gmx.es>


Hi everyone,

First: apologies for the long email; this got a little complicated.

Summary: there may be a bug in setting up calculate field for widgets?

Parts:

  - calculator.tex
  - A M(N)WE
  - The MWE Only Sort of Works

# calculator.tex

On 13 Nov 2019, at 10:26, Pablo Rodriguez wrote:

> Hi Paul,

> I wonder whether
> tex/texmf-context/doc/context/examples/calculator/calculator.tex from
> the ConTeXt Suite might be what you look for.
>
> Just in case it helps,

It does (and is quite something!); it's not quite what I need, though. 
I'd like to take advantage of the internal _calculate_ event when a 
field updates - the calculator.tex PDF appears to be entirely 
programmatically event driven?

(Which could certainly work for my application, but I want to try to 
keep this as simple for the user as possible.)

> Pablo

# A M(N)WE

Here's a Minimal Working Example, with some caveats:

--- begin MWE ---

\usemodule[fields]

\starttext

\setupinteraction [state=start]
	
\startJScode{tallyUp}
   var a_fld = this.getField("A");
   var b_fld = this.getField("B");
   event.value = a_fld.value + b_fld.value;
\stopJScode

\setupfield[numField][reset,horizontal]
         [height=2pc,rulethickness=1pt,framecolor=lightgrey]

\setupfield[totalField][reset,horizontal]
         [
         height=2pc,
         rulethickness=1pt,
         framecolor=lightgrey,
         option=readonly,
         calculate=JS(tallyUp),
         ]

\definefield[A][line][numField][]
\definefield[B][line][numField][]

\definefield[Total][line][totalField][]

A: \field[A]

B: \field[B]

\blank[big]

Total: \field[Total]

\stoptext

---  end MWE  ---

The idea here is that the resulting PDF will have three fields: A, B, 
and Total. Whenever a value is placed in A and/or B, on blur the value 
in Total will get updated automatically.

# The MWE Only Sort of Works

Things that are working:

  - I can put values in A and B
  - I can't directly manipulate Total (read-only seems to be working 
fine)

Thing that doesn't work:

  - Total does not get automatically updated (for _any_ of the 
JS-enabled/tolerant PDF viewers I have.)


Upon closer inspection of the resulting PDF with PDF Studio 2019 (I 
don't have Acrobat Pro at the moment), I can confirm some things:

  - The appropriate JavaScript is placed in the form, as a custom 
calculation script for the Total field.

	(This leads me to believe that the calculate= key in \setupfield is 
working.)

  - If I try to check the calculation order of the PDF, PDF Studio 2019 
gives me the warning: "There are no fields with calculations."

	(So maybe there's a magic bit that needs to get flipped somewhere?)

  - If I use PDF Studio 2019 to change the calculate attribute on the 
field Total to something else, save, and then revert the calculate 
attribute _back_ to the custom script as supplied from the .tex file and 
save, the Total field starts working as expected, and I can see the 
field in the calculation ordering.

If I can get the PDF to work in PDF Studio 2019, I can confirm that it 
also works in all of the other JS-enabled/tolerant PDF viewers I have.

# Summary

It looks like the appropriate JavaScript script is getting attached to 
the field for a calculate event, but is not being run? Or something?


Anyway, that's as far as I've gotten. Any insight or assistance is 
appreciated; I'll see if I can make more progress.

Thanks!

     -Paul

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2019-11-17 20:13 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-07 19:28 [Widgets] " Paul Mazaitis
2019-11-13 15:26 ` Pablo Rodriguez
2019-11-17 20:13   ` Paul Mazaitis [this message]
2019-11-18  8:48     ` Widgets: " Hans Hagen
2019-11-19 22:47       ` Paul Mazaitis
2019-11-18 15:15     ` Henning Hraban Ramm
2019-11-18 18:56       ` Hans Hagen
2019-11-19 13:59         ` Paul Mazaitis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ADE29B0D-B95B-4C22-8BE4-8B303C83F451@andrew.cmu.edu \
    --to=pm39@andrew.cmu.edu \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).