25 Replies Latest reply on Feb 6, 2018 5:54 PM by Wirepower

    How do i change this?

    Wirepower

      /*** Get the ISO week date week number */

      Date.prototype.getWeek = function () {
          // Create a copy of this date object;
          var target  = new Date(this.valueOf());
          //var target  = new Date(this.getField("WeekBegin").value);

          // ISO week date weeks start on Monday;
          // so correct the day number;
          var dayNr   = (this.getDay() + 6) % 7;

          // ISO 8601 states that week 1 is the week;
          // with the first Thursday of that year.;
          // Set the target date to the Thursday in the target week;
          target.setDate(target.getDate() - dayNr + 3);

          // Store the millisecond value of the target date;
          var firstThursday = target.valueOf();

          // Set the target to the first Thursday of the year;
          // First set the target to January first
          target.setMonth(0, 1);
          // Not a Thursday? Correct the date to the next Thursday
          if (target.getDay() != 4) {
              target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
          }

          // The weeknumber is the number of weeks between the
          // first Thursday of the year and the Thursday in the target week
          return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000
      }

      var oDate = new Date(); // create date object;
      var nWeekNumber = oDate.getWeek(); // get the week number for the date object;
      //app.alert("For " + util.printd("ddmmyy", oDate) + " it is week " + nWeekNumber, 3, 0);

      this.getField("WeekNumber").value = nWeekNumber;

       

       

       

      Now I Want to be able to use the "weekbegin" field text box (ddmmyy) to work out the week number, but instead its using the current date.

      What do I change to get it to use the "weekbegin" as the date instead of the current date it uses?

        • 1. Re: How do i change this?
          try67 MVP & Adobe Community Professional

          Change this line:

          var oDate = new Date();

          To:

          var oDate = util.scand("mm/dd/yyyy", this.getField("weekbegin").valueAsString);

          Adjust the date format if necessary.

           

          However, this will return the results for the current date if the field is empty, so you might want to add a condition that checks for that.

          • 2. Re: How do i change this?
            Wirepower Level 1

            Ok I tried that, but doesn't show any results.

             

            var oDate = util.scand("mmddyy", this.getField("WeekBegin").valueastring);

             

            is what I have, However if the "WeekBegin" field is filled or not it doesn't show any value?

            • 3. Re: How do i change this?
              try67 MVP & Adobe Community Professional

              That's not the code I posted.

              • 4. Re: How do i change this?
                gkaiseril MVP & Adobe Community Professional

                You needed to change one line of code and not delete all of the code.

                 

                So the only code for the field would be:

                 

                // var oDate = new Date(); // create date object;

                var oDate = util.scand("mm/dd/yyyy", this.getField("weekbegin").valueAsString); // create date object for the value of "weekbegin" field;

                var nWeekNumber = oDate.getWeek(); // get the week number for the date object;

                //app.alert("For " + util.printd("ddmmyy", oDate) + " it is week " + nWeekNumber, 3, 0);

                this.getField("WeekNumber").value = nWeekNumber;

                 

                All the code above that piece of code should be placed in the Document level JavaScript.

                • 5. Re: How do i change this?
                  Wirepower Level 1

                  ok.

                  so I have this on the field "WeekNumber":

                   

                  //var oDate = new Date(); // create date object;
                  var oDate = util.scand("ddmmyy", this.getField("WeekBegin").valueastring); // create date object using WeekNumber input
                  var nWeekNumber = oDate.getWeek(); // get the week number for the date object;
                  //app.alert("For " + util.printd("ddmmyy", oDate) + " it is week " + nWeekNumber, 3, 0);

                  this.getField("WeekNumber").value = nWeekNumber;

                   

                  And I have this code at document level:

                   

                  /*** Get the ISO week date week number */

                  Date.prototype.getWeek = function () {
                      // Create a copy of this date object;
                      var target  = new Date(this.valueOf());
                      //var target  = new Date(this.getField("WeekBegin").value);

                      // ISO week date weeks start on Monday;
                      // so correct the day number;
                      var dayNr   = (this.getDay() + 6) % 7;

                      // ISO 8601 states that week 1 is the week;
                      // with the first Thursday of that year.;
                      // Set the target date to the Thursday in the target week;
                      target.setDate(target.getDate() - dayNr + 3);

                      // Store the millisecond value of the target date;
                      var firstThursday = target.valueOf();

                      // Set the target to the first Thursday of the year;
                      // First set the target to January first
                      target.setMonth(0, 1);
                      // Not a Thursday? Correct the date to the next Thursday
                      if (target.getDay() != 4) {
                          target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
                      }

                      // The weeknumber is the number of weeks between the
                      // first Thursday of the year and the Thursday in the target week
                      return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000
                  }

                   

                   

                  Is this correct? as I'm still not getting anything?

                  • 6. Re: How do i change this?
                    try67 MVP & Adobe Community Professional

                    Yes. Why do you keep insisting on changing valueAsString to valueastring? The first exists, the second doesn't. JS is case-sensitive, plus you're missing an "s"...

                    • 7. Re: How do i change this?
                      Wirepower Level 1

                      opps, sorry fixed that.

                      so its now:

                      //var oDate = new Date(); // create date object;
                      var oDate = util.scand("ddmmyy", this.getField("WeekBegin").valueAsString); // create date object using WeekNumber input
                      var nWeekNumber = oDate.getWeek(); // get the week number for the date object;
                      //app.alert("For " + util.printd("ddmmyy", oDate) + " it is week " + nWeekNumber, 3, 0);

                      this.getField("WeekNumber").value = nWeekNumber;

                       

                      But still no luck?

                      • 8. Re: How do i change this?
                        try67 MVP & Adobe Community Professional

                        Where did you put the code?

                        What does "still no luck" mean? What exactly happens? Is there an error message in the JS Console? If so, what does it say?

                        Details, please.

                        • 9. Re: How do i change this?
                          Wirepower Level 1

                          nothing happens.

                          in JS Console I get this:

                           

                          TypeError: oDate.getWeek is not a function

                          3:Field:Mouse Up

                          • 10. Re: How do i change this?
                            Wirepower Level 1

                            I put the code in the field. (as a "Refresh" button to be precise that way if I change the dates I can refresh)

                            • 11. Re: How do i change this?
                              try67 MVP & Adobe Community Professional

                              You have to include the getWeek function definition with it...

                              • 12. Re: How do i change this?
                                Wirepower Level 1

                                isn't that the code in the Document JavaScript?

                                This one:

                                 

                                /*** Get the ISO week date week number */

                                Date.prototype.getWeek = function () {
                                    // Create a copy of this date object;
                                    var target  = new Date(this.valueOf());
                                    //var target  = new Date(this.getField("WeekBegin").value);

                                    // ISO week date weeks start on Monday;
                                    // so correct the day number;
                                    var dayNr   = (this.getDay() + 6) % 7;

                                    // ISO 8601 states that week 1 is the week;
                                    // with the first Thursday of that year.;
                                    // Set the target date to the Thursday in the target week;
                                    target.setDate(target.getDate() - dayNr + 3);

                                    // Store the millisecond value of the target date;
                                    var firstThursday = target.valueOf();

                                    // Set the target to the first Thursday of the year;
                                    // First set the target to January first
                                    target.setMonth(0, 1);
                                    // Not a Thursday? Correct the date to the next Thursday
                                    if (target.getDay() != 4) {
                                        target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
                                    }

                                    // The weeknumber is the number of weeks between the
                                    // first Thursday of the year and the Thursday in the target week
                                    return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000
                                }

                                • 13. Re: How do i change this?
                                  try67 MVP & Adobe Community Professional

                                  Yes. Did you put it there?
                                  I just tried it myself and it's working fine... I don't know what you're doing to get it not to work.

                                  See: WeekNumberTest.pdf - Google Drive

                                  • 14. Re: How do i change this?
                                    Wirepower Level 1

                                    ok when I open your pdf, if I change the date it still shows 6 even after pressing button?

                                    • 15. Re: How do i change this?
                                      try67 MVP & Adobe Community Professional

                                      Depends. What did you change it to?

                                      • 16. Re: How do i change this?
                                        Wirepower Level 1

                                        I just put 010118. hoping for 1 for week 1

                                        • 17. Re: How do i change this?
                                          try67 MVP & Adobe Community Professional

                                          Works fine for me:

                                           

                                           

                                          So after you click the button it still shows 6? What application did you open it in?

                                          • 18. Re: How do i change this?
                                            Wirepower Level 1

                                            I'm using Adobe Acrobat DC.

                                            • 19. Re: How do i change this?
                                              Wirepower Level 1

                                              Just tried it on Acrobat Reader and still doesn't work..

                                              • 20. Re: How do i change this?
                                                try67 MVP & Adobe Community Professional

                                                Don't know what to tell you. It's working just fine on my end.

                                                Did you press the button after changing the value of the first field?

                                                • 21. Re: How do i change this?
                                                  Wirepower Level 1

                                                  Tried opening on phone and tried there, and still not working.

                                                  Gonna try on another pc now

                                                  • 22. Re: How do i change this?
                                                    Wirepower Level 1

                                                    ok funny thing is, it works on my other pc using Adobe Acrobat DC?

                                                     

                                                    WTH?

                                                    • 23. Re: How do i change this?
                                                      try67 MVP & Adobe Community Professional

                                                      Maybe you have JS disabled on the other computer, or something like that.

                                                      • 24. Re: How do i change this?
                                                        Wirepower Level 1

                                                        But it works for some other js functions.. really weird

                                                        • 25. Re: How do i change this?
                                                          Wirepower Level 1

                                                          I have another question:

                                                           

                                                          I have this code in field:

                                                          var theSubject = this.getField("NAME").value +"'s week " + this.getField("WeekNumber").value + " Payslip from " + this.getField("WeekBegin").value + " To " + this.getField("WeekEnd").value 
                                                          this.mailDoc({ 
                                                            bUI: false, 
                                                            cTo: this.getField("Email1").value, 
                                                            cCc: this.getField("Email2").value, 
                                                            cSubject: theSubject, 
                                                            cMsg: "This is " + this.getField("NAME").value +"'s week " + this.getField("WeekNumber").value + " Payslip from " + this.getField("WeekBegin").value + " To " + this.getField("WeekEnd").value

                                                          });

                                                           

                                                          Now The WeekBegin and WeekEnd values or in the form of ddmmyy.

                                                           

                                                          Is there a way I can change it to day dd/mm/yy only on this email though (when the field button is pressed).

                                                          Basically I just want to convert it for that instances and not let it effect the rest of the pdf.