LogMyTaskTimePercent

By darkyndy Last update Mar 30, 2010 — Installed 74 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name            LogMyTaskTimePercent
// @author          darkyndy
// @description     LogMyTask update summary with percent time
// @include         http://logmytask.com/summary*
// @include         http://www.logmytask.com/summary*
// @include         http://logmytask.com/reports*
// @include         http://www.logmytask.com/reports*
// @version         1.2
// @namespace       darkyndy.com/LogMyTasktimepercent
// ==/UserScript==

/*
Last Version Change Log:
(version 1.2)
- added timePercent for reports
*/

//default script setting
var reloadTimer = 7000;
var loadingElement = document.getElementById('progressIndicator');

function testElementReady(){
  if(loadingElement.style.display === "none"){
    var addedTimePercentTooltip = document.getElementById('addedTimePercentTooltip');
    var tooltipElement = document.evaluate("//td[@id='WzBoDyI']/p[@class='task-time-spent']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    //console.log("tooltip count = "+tooltipElement.snapshotLength);
    if(tooltipElement.snapshotLength !== 0 && !addedTimePercentTooltip){
      for(var i=0;i<tooltipElement.snapshotLength;i++){
        var timeValue = tooltipElement.snapshotItem(i).innerHTML;
        var newTime = returnTime(timeValue);
        tooltipElement.snapshotItem(i).innerHTML = " <span id=\"addedTimePercentTooltip\">"+newTime+"</span> "+timeValue;
      }
    }
    
    var taskContents = document.evaluate("//div[@class and contains(@class, 'taskcontent')]/p", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    //console.log('Found '+taskContents.snapshotLength+' extended nodes');
    var addedTimePercentExtended = document.getElementById('addedTimePercentExtended');
    if(taskContents.snapshotLength !== 0 && !addedTimePercentExtended){
      for(var i=0;i<taskContents.snapshotLength;i++){
        var timeValue = taskContents.snapshotItem(i).innerHTML;
        var newTime = returnTime(timeValue);
        //console.log(taskContents.snapshotItem(i).innerHTML);
        taskContents.snapshotItem(i).innerHTML = " <span id=\"addedTimePercentExtended\">"+newTime+"</span> "+taskContents.snapshotItem(i).innerHTML;
      }
    }
    var tableRows = document.evaluate("//tr[@id and contains(@class, 'div_legend_normal')]/td[3]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    //console.log('Found '+tableRows.snapshotLength+' tr nodes');
    var addedTimePercent = document.getElementById('addedTimePercent');
    if(tableRows.snapshotLength !== 0 && !addedTimePercent){
      for(var i=0;i<tableRows.snapshotLength;i++){
        //var timeValue = tableRows.snapshotItem(i).lastChild.innerHTML;
        var timeValue = tableRows.snapshotItem(i).innerHTML;
        //console.log('initial time is '+timeValue);
        var newTime = returnTime(timeValue);
        tableRows.snapshotItem(i).innerHTML = " <span id=\"addedTimePercent\" style=\"color:#D70000\">"+newTime+"</span> "+tableRows.snapshotItem(i).innerHTML;
      }
    }
    
    var reportRows = document.evaluate("//div[@id='divTable']/table/tbody/tr/td[2]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
    //console.log('Found '+reportRows.snapshotLength+' tr nodes');
    var addedTimePercentReport = document.getElementById('addedTimePercentReport');
    if(reportRows.snapshotLength !== 0 && !addedTimePercentReport){
      for(var i=0;i<reportRows.snapshotLength;i++){
        //var timeValue = reportRows.snapshotItem(i).lastChild.innerHTML;
        var timeValue = reportRows.snapshotItem(i).innerHTML;
        //console.log('initial time is '+timeValue);
        var newTime = returnTime(timeValue);
        reportRows.snapshotItem(i).innerHTML = " <span id=\"addedTimePercentReport\" style=\"color:#D70000\">"+newTime+"</span> "+reportRows.snapshotItem(i).innerHTML;
      }
    }
  }
  else{
    //myTimer = setTimeout(function(){testElementReady();}, reloadTimer);
  }
  myTimer = setTimeout(function(){testElementReady();}, reloadTimer);
}

function returnTime(oldTime){
  //console.log('initial time is '+oldTime);
  var timeRegHour = new RegExp("hr", "gmi");
  var timeReg = new RegExp("([0-9]+)hr ([0-9]+)min", "gmi");
  var timeRez = 2;
  var hourValue = 0;
  var minValue = 0;
  if(!oldTime.match(timeRegHour)){
    var timeReg = new RegExp("([0-9]+)min", "gmi");
    timeRez = 1;
  }
  if(oldTime.match(timeReg)){
    var rezReg = timeReg.exec(oldTime);
    if(timeRez === 2){
      hourValue = rezReg[1];
      minValue = rezReg[2];
    }
    else{
      minValue = rezReg[1];
    }
  }
  minValue = Math.round(minValue*100/60).toString();
  if(minValue.length === 1){
    minValue = "0"+minValue;
  }
  
  var finalTime = hourValue.toString()+"."+minValue;
  return finalTime;
}

var myTimer = setTimeout(function(){testElementReady();}, 2);