Time tracker in DFFS

Forums Classic DFFS Time tracker in DFFS

Viewing 7 reply threads
  • Author
    Posts
    • #19532
      Leon Perdue
      Participant

      Hi Alex,

      I am having issues with the time tracker you posted a while ago: time-tracker-in-a-dffs-enabled-list

      I used this with my SP2010 site, which was recently upgraded to 2013. I now get a JS error when a new item is started. When hitting OK the start timer button is not showing.

      I created a new list, and added the code itself, the button shows and starts the timer. I then added each new column one at a time, and figured out the error only occurs when the multiple lines of text column are added. I’ve tried plain text and enhanced rich text.

      Hoping you can help me figure this one out.

      Thank you

      Attachments:
    • #19568
      Alexander Bautz
      Keymaster

      It’s hard to tell, but if you could attach the Custom JS code here I might be able to see what could be wrong.

      Do you see any errors in the console (hit F12 > Console)?

      Alexander

    • #19617
      Leon Perdue
      Participant

      Sorry for the delay:

      using the same code you provided in the topic

      
      
      (function(){
       var a = [], b = [], tt;
       a.push("<tr style='font-size:18px;color:green;'>");
       a.push("<td colspan='2' style='padding:2px;'>");
       a.push("<span id='elapsedTime'></span><span id='totalTime'></span>"); 
       a.push("</td>");
       a.push("</tr>");
       $("table.ms-formtable").prepend(a.join(""));
       b.push("<span title='You can save and close the list item while the timer is running. It will keep tracking time until you edit the item and click \"Stop the timer\".'>");
       b.push("<input style='background-color:#C2CF8A;color:#444;' type='button' id='dffsTimeTrackerStartBtn' value='Start the timer' onclick='startTicker()'>");
       b.push("<input style='background-color:#D57C7C;color:#ffffff;display:none;' type='button' id='dffsTimeTrackerStopBtn' value='Stop the timer' onclick='stopTicker()'>");
       b.push("<span>&nbsp;</span>");
       b.push("</span>");
       $("input[id$='_diidIOSaveItem']:last").before(b.join(""));
       tt = getFieldValue("TotalTimeString");
       if(tt !== ""){
       $("#elapsedTime").html("Total time: "+getFriendlyTime(Number(tt)));
       }
      })();
      
      function startTicker(){
       var a= getFieldValue("StartTimeString");
       if(a === ""){
       setFieldValue("StartTimeString",new Date().valueOf());
       $("#dffsTimeTrackerStartBtn").hide();
       $("#dffsTimeTrackerStopBtn").show();
       $("#totalTime").html("");
       }
      }
      
      function stopTicker(){
       var a = getFieldValue("StartTimeString")
       , b = new Date().valueOf()
       , u = spjs.utility.userInfo(_spPageContextInfo.userId)
       , et = b-Number(a)
       , tt = Number(getFieldValue("TotalTimeString")) + et
       , log = getFieldValue("Log")
       , al = getFieldValue("Activity");
       setFieldValue("TotalTimeString",Number(tt));
       // Reset start time and log
       setFieldValue("StartTimeString","");
       setFieldValue("Activity","");
       if(a !== ""){
       if(log !== ""){
       log += "\n*******************\n";
       }
       if(al !== ""){
       al = "\n\nActivity log:\n"+al;
       }
       setFieldValue("Log",log+u.Title+"\nStart: "+new Date(Number(a)).toLocaleString(_spPageContextInfo.currentUICultureName)+"\nEnd: "+new Date().toLocaleString(_spPageContextInfo.currentUICultureName)+"\nElapsed time="+getFriendlyTime(et)+al);
       }
       $("#elapsedTime").html("");
       $("#totalTime").html("Total time: "+getFriendlyTime(tt));
       $("#dffsTimeTrackerStartBtn").show();
       $("#dffsTimeTrackerStopBtn").hide();
      }
      
      function getFriendlyTime(ms){
       var h, m, s;
       h = Math.floor(ms / 3600000);
       m = Math.floor((ms % 3600000) / 60000);
       s = Math.floor((ms % 60000) / 1000);
       return (h<10?"0"+h:h)+":"+(m<10?"0"+m:m)+":"+(s<10?"0"+s:s);
      }
      
      if(getFieldValue("StartTimeString") !== ""){
       $("#dffsTimeTrackerStartBtn").hide();
       $("#dffsTimeTrackerStopBtn").show();
      }
      
      setInterval(function(){
       var a = getFieldValue("StartTimeString"), b = new Date().valueOf(), tt = Number(getFieldValue("TotalTimeString"));
       if(a !== ""){
       $("#elapsedTime").html("Elapsed time: "+getFriendlyTime(b - Number(a))); 
       if(tt !== ""){
       $("#elapsedTime").append(" / Total time: "+getFriendlyTime(tt + (b - Number(a))));
       }
       } 
      },1000);

      console message:
      jquery.js:4 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/.

      When i delete any multi line text field i get no error.

      Attachments:
    • #19670
      Alexander Bautz
      Keymaster

      From this error it looks like you it fails in this line:

      $("table.ms-formtable").prepend(a.join(""));

      This is a bit strange because this is the default formtable. Could you try hitting F12 > console and type this in the console:

      $("table.ms-formtable").length;

      It should ouptput “1” when you hit enter.

      The console error is “by design” and doesn’t result in any actual error – is related to a synchronous ajax request. I’ll fix this in a future DFFS update to make it asynchronous.

      Alexander

    • #19672
      Leon Perdue
      Participant

      Hi Alexander,

      Here is the console response

      $(“table.ms-formtable”).length;
      VM344:1 Uncaught TypeError: Cannot read property ‘length’ of null
      at <anonymous>:1:24

    • #19678
      Alexander Bautz
      Keymaster

      OK, this is strange. Is this a normal SharePoint form, or has it been modified in SharePoint Designer?

      Alexander

    • #19688
      Leon Perdue
      Participant

      It is a normal SP 2013 custom list. The form is only customized with DFFS.

      I even tried creating a brand new test list and get the same errors.

    • #19732
      Alexander Bautz
      Keymaster

      What kind of list template did you use? Is it possible for me to log in and look at it? – if so, you can email me the login details.

      Alexander

Viewing 7 reply threads
  • You must be logged in to reply to this topic.