During our sprint planning we estimate hours by person and compare the "To Do" hours to "Capacity" hours. Having the remaining capacity would be handy so we can faster and easier see how much time each person has left available.

Comments

  • During planning we are constantly saying "who has the most time left?" and have to go through and mentally subtract. Having a separate column (that we can sort on!) would save so much time.

    There is already logic there that shows "Detail Estimate Hours" in red if it is greater than capacity hours.

  • I created a bookmarklet to hack something like this onto the page, but it doesn't have the most important feature (sorting):

    $('.grid-table-wrapper > table').each(function() {
    var $table = $(this);
    var idxCapacity = -1;
    var idxEstimate = -1;
    $table.find('thead > tr > td').each(function(i) {
    var colname = $(this).text().trim();
    if(colname === 'Capacity Hrs.')
    idxCapacity = i;
    if(colname === 'Detail Estimate Hrs.')
    idxEstimate = i;
    });

    if(idxCapacity >= 0 && idxEstimate >= 0) {
    $table.find('tbody > tr.nest-0').each(function() {
    var $tr = $(this);
    var capacity = Number($tr.children('td').eq(idxCapacity).text().trim());
    var estimate = Number($tr.children('td').eq(idxEstimate).text().trim());
    if(isNaN(capacity) || isNaN(estimate))
    return;
    var remain = capacity - estimate;
    var style = (remain < 0 ? 'color:red' : '');
    $tr.children('td').eq(idxCapacity).html(capacity.toFixed(2) + ' <span style="' + style + '">('+ Math.abs(remain).toFixed(2) + (remain < 0 ? ' OVER' : ' left') + ")</span>");
    });
    }
    });


    Bookmarklet URL: javascript:$(".grid-table-wrapper > table").each(function(){var a=$(this),b=-1,c=-1;a.find("thead > tr > td").each(function(a){var d=$(this).text().trim();"Capacity Hrs."===d&&(b=a),"Detail Estimate Hrs."===d&&(c=a)}),b>=0&&c>=0&&a.find("tbody > tr.nest-0").each(function(){var a=$(this),d=Number(a.children("td").eq(b).text().trim()),e=Number(a.children("td").eq(c).text().trim());if(!isNaN(d)&&!isNaN(e)){var f=d-e,g=f<0?"color:red":"";a.children("td").eq(b).html(d.toFixed(2)+' <span style="'+g+'">('+Math.abs(f).toFixed(2)+(f<0?" OVER":" left")+")</span>")}})});