• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Override time interval calculation with manual input?

New Here ,
Jan 14, 2020 Jan 14, 2020

Copy link to clipboard

Copied

Disclaimer: I know nothing in the way of JavaScript and have had to have help figuring out the scripts mentioned below.

 

I'm designing a form that records a rate of movement by having start and end times entered (in text fields formatted as hh:MM t) and having beginning and ending distances entered (as numbers with two decimal places).

 

For the sake of the example, let:

 

J=Start distance (feet)

K=End distance (feet)

M=Start time (clock time)

P=End time (clock time)

R=Time Interval (in minutes, calculated using Javascript from P & M)

L=Rate of distance over time (inches per minute), calculated with simplified field notation 12*(K-J)/R.

 

My problem is that there are times when the person taking the measurements doesn't keep track of the start and end times, uses a stopwatch and therefore only has the time interval R. So I need them to be able to override the calculation in R with manual input. 

 

In plain text, I was trying to do this: 

L = 12(K-J) / (P-M)

unless P&M are blank, then

L = 12(K-J) / R

 

Unless there's a way to edit the code in R to allow me to manually override the calculation in that field. This is the code in R:

 

 

 

var cStart = this.getField("startTime").value;
var cStop = this.getField("finishTime").value;

if (cStart != "" && cStop != "") {
    var tStart = parseTime(cStart);
    var tStop = parseTime(cStop);
	var total = (tStop - tStart)/(1000*60);
	
    event.value = (total < 0 ? total += 24 : total);
}
else {
    event.value = "";
}

 

 

 

That code was borrowed and modified from elsewhere, so other than editing the field names to match the input fields in my form, I don't really know what I'm doing with it.  

TOPICS
Acrobat SDK and JavaScript

Views

369

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 16, 2020 Jan 16, 2020

Copy link to clipboard

Copied

Hi,


If you’ve already assigned the name values to all of your text field objects (as V, K, M, P, R, and L), you can try something like this:

 

//I HAVE NOT TESTED THIS BUT YOU CAN TRY IT OUT AND CORRECT IT

var v = this.getField("V").value;
var k = this.getField("K").value;
var l = this.getField("L").value
var m = this.getField("M").value;
var p = this.getField("P").value;
var r = this.getField("R").value;
var j = this.getField("J").value;
var blank = this.getField("R").valueAsString=+textObject.value;}
if (k !="" && j!="") event.value = ((k-j)*12)/r;
event.value = ((k-j)*12)/blank;



//OR



//custom calc script for field L = 12*(K-J)/R or L = 12(K-J) / (P-M)
//first declare your variables Start distance (feet)
var = this.getField("V").value;
//End distance (feet)
var k = this.getField("K").value;
var l = (this.getField(“L”).value
//Start time (clock time)
var m = this.getField("M").value;
//End time (clock time)
var p = this.getField("P").value;
//Time Interval from Field R
var r = this.getField("R").value;
// the resulting calculation of your script for field L
event.value = ((k – j)*12)/r;




//And This is the custom calculation script for Field R
var cStart = this.getField("M").value;
var cStop = this.getField("P").value;
var l = this.getField("L").value;
//this last variable is necessary to provide the users with a direct manual entry
var r = this.getField("R").valueAsString;



if (cStart != "" && cStop != "") {
var tStart = parseTime(m);
var tStop = parseTime(p);
var total = (tStop - tStart)/(1000*60);
event.value = (total < 0 ? total += 24 : total);
}

else if (cStart =="") && (cStop =="") {

this.getField("R").value=textObject.value;

}



//FOR THE LAST PART IN THIS SCRIPT CHECK IF THIS OTHER LINE BELOW WORK FOR YOU
// I HAVE NOT TESTED IT ON MY END

if(!event.willCommit) {this.getField("R").value=event.value;}




Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 17, 2020 Jan 17, 2020

Copy link to clipboard

Copied

LATEST

This seems to be a duplicate post from here: https://community.adobe.com/t5/acrobat/how-to-override-a-calculation-with-manual-entry-in-results-fi...

 

++Adding to Try67’s observation, This rate of distance over time formula is expressed incorrectly and therefore the variables are also declared incorrectly.

 

In order to come up with a script that will calculate correctly when  any of the values in the other fields are changed,  this question needs to be rephrased as “How do you find feet per minute with distance and time?

 

In your case you want to apply this formula like this: What is the rate of movement per every minute measured in feet at a constant speed of feet per minute.

 

Since 1 Hour = 60 minutes, and 1 minute = 60 seconds, and 1 foot = 12 inchesWe will need to consider how to convert seconds to minutes and minutes to hour,  and also if the feet per distance involved a few feet per minute with a few inches when the time stopped.

 

If this is not important to consider and you’re ok with rounding a result then disregard

 

But,  what is confusing to me in your equation is that you’re multiplying by 12 instead which gives you a total in inches, not feet. To get the exact measurement in feet,  shouldn’t it be divided by 12 and then convert to feet?  would that make more sense?

 

So, the formula rate of movement is   rate = distance / time     OR, in your case rate = feet/minutes. And here is the other confusing part. Where do you get a start distance from ?   How can you input a starting distance if you haven’t started time yet to measure how an object traveled from point A to point B.

 

The way your equation is expressed as of yet,  would only make more sense if you were using some sort of map  grid, and then calculate your travel with a starting coordinate to represent point A and another coordinate to represent Point B.

 

 

Unless you are all of the following  formulas together (1)  rate equals distance divided by time: r = d/t   and be able to  resolve  for (2) distance  (which is rate of movement multiplied by time (d = rt) ) and /  or get the missing starting time  from the end time using (3) distance divided by rate of movement (t = d/r) nothing at this point is helping me understand.

 

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines