Fix autocalculation of timespent in monthy mode

This commit is contained in:
Laurent Destailleur 2020-03-23 22:04:40 +01:00
parent 063cf15bcb
commit f56de9f177
3 changed files with 38 additions and 18 deletions

View File

@ -120,6 +120,10 @@ function updateTotal(days,mode)
total.setHours(0); total.setHours(0);
total.setMinutes(0); total.setMinutes(0);
var nbline = document.getElementById('numberOfLines').value; var nbline = document.getElementById('numberOfLines').value;
var startline = 0;
if (document.getElementById('numberOfFirstLine')) {
startline = parseInt(document.getElementById('numberOfFirstLine').value);
}
for (var i=-1; i < nbline; i++) for (var i=-1; i < nbline; i++)
{ {
var id='timespent['+i+']['+days+']'; var id='timespent['+i+']['+days+']';
@ -214,16 +218,26 @@ function updateTotal(days,mode)
} }
}); });
if (total.getHours() || total.getMinutes()) jQuery('.totalDay'+days).addClass("bold"); var stringdays = days;
else jQuery('.totalDay'+days).removeClass("bold"); if (startline >= 1 && startline <= 9 && stringdays < 10) {
jQuery('.totalDay'+days).text(pad(total.getHours())+':'+pad(total.getMinutes())); stringdays = '0'+stringdays;
}
if (total.getHours() || total.getMinutes()) jQuery('.totalDay'+stringdays).addClass("bold");
else jQuery('.totalDay'+stringdays).removeClass("bold");
jQuery('.totalDay'+stringdays).text(pad(total.getHours())+':'+pad(total.getMinutes()));
var totalhour = 0; var totalhour = 0;
var totalmin = 0; var totalmin = 0;
for (var i=0; i<7; i++) for (var i=0; i<7; i++)
{ {
stringdays = (i + startline);
if (startline >= 1 && startline <= 9 && stringdays < 10) {
stringdays = '0'+stringdays;
}
var taskTime= new Date(0); var taskTime= new Date(0);
result=parseTime(jQuery('.totalDay'+i).text(),taskTime); result=parseTime(jQuery('.totalDay'+stringdays).text(),taskTime);
if (result >= 0) if (result >= 0)
{ {
totalhour = totalhour + taskTime.getHours(); totalhour = totalhour + taskTime.getHours();
@ -273,8 +287,14 @@ function updateTotal(days,mode)
} }
} }
if (total) jQuery('.totalDay'+days).addClass("bold"); var stringdays = days;
else jQuery('.totalDay'+days).removeClass("bold"); if (startline >= 1 && startline <= 9 && stringdays < 10) {
jQuery('.totalDay'+days).text(total); stringdays = '0'+stringdays;
console.log(stringdays);
}
if (total) jQuery('.totalDay'+stringdays).addClass("bold");
else jQuery('.totalDay'+stringdays).removeClass("bold");
jQuery('.totalDay'+stringdays).text(total);
} }
} }

View File

@ -1910,12 +1910,12 @@ function projectLinesPerMonth(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &
$placeholder = ''; $placeholder = '';
if ($alreadyspent) if ($alreadyspent)
{ {
$tableCell .= '<span class="timesheetalreadyrecorded" title="texttoreplace"><input type="text" class="center smallpadd" size="2" disabled id="timespent['.$inc.']['.$weekNb.']" name="task['.$lines[$i]->id.']['.$weekNb.']" value="'.$alreadyspent.'"></span>'; $tableCell .= '<span class="timesheetalreadyrecorded" title="texttoreplace"><input type="text" class="center smallpadd" size="2" disabled id="timespent['.$inc.']['.((int) $weekNb).']" name="task['.$lines[$i]->id.']['.$weekNb.']" value="'.$alreadyspent.'"></span>';
//$placeholder=' placeholder="00:00"'; //$placeholder=' placeholder="00:00"';
//$tableCell.='+'; //$tableCell.='+';
} }
$tableCell .= '<input type="text" alt="'.($disabledtask ? '' : $alttitle).'" title="'.($disabledtask ? '' : $alttitle).'" '.($disabledtask ? 'disabled' : $placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.$TFirstDay[$weekNb].']" name="task['.$lines[$i]->id.']['.$TFirstDay[$weekNb].']" value="" cols="2" maxlength="5"'; $tableCell .= '<input type="text" alt="'.($disabledtask ? '' : $alttitle).'" title="'.($disabledtask ? '' : $alttitle).'" '.($disabledtask ? 'disabled' : $placeholder).' class="center smallpadd" size="2" id="timeadded['.$inc.']['.((int) $weekNb).']" name="task['.$lines[$i]->id.']['.$TFirstDay[$weekNb].']" value="" cols="2" maxlength="5"';
$tableCell .= ' onkeypress="return regexEvent(this,event,\'timeChar\')"'; $tableCell .= ' onkeypress="return regexEvent(this,event,\'timeChar\')"';
$tableCell .= ' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"'; $tableCell .= ' onkeyup="updateTotal('.$weekNb.',\''.$modeinput.'\')"';
$tableCell .= ' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />'; $tableCell .= ' onblur="regexEvent(this,event,\''.$modeinput.'\'); updateTotal('.$weekNb.',\''.$modeinput.'\')" />';

View File

@ -21,7 +21,7 @@
/** /**
* \file htdocs/projet/activity/permonth.php * \file htdocs/projet/activity/permonth.php
* \ingroup projet * \ingroup projet
* \brief List activities of tasks (per week entry) * \brief List activities of tasks (per month entry)
*/ */
require "../../main.inc.php"; require "../../main.inc.php";
@ -480,8 +480,7 @@ print '<td class="liste_titre"></td>';
print '<td class="liste_titre right"><input type="text" size="4" name="search_declared_progress" value="'.dol_escape_htmltag($search_declared_progress).'"></td>'; print '<td class="liste_titre right"><input type="text" size="4" name="search_declared_progress" value="'.dol_escape_htmltag($search_declared_progress).'"></td>';
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
$countWeek = count($TWeek); foreach ($TWeek as $week_number)
for ($idw=0;$idw<$countWeek;$idw++)
{ {
print '<td class="liste_titre"></td>'; print '<td class="liste_titre"></td>';
} }
@ -516,6 +515,8 @@ $colspan=5;
// By default, we can edit only tasks we are assigned to // By default, we can edit only tasks we are assigned to
$restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0); $restrictviewformytask=(empty($conf->global->PROJECT_TIME_SHOW_TASK_NOT_ASSIGNED)?1:0);
$isavailable = array();
if (count($tasksarray) > 0) if (count($tasksarray) > 0)
{ {
//var_dump($tasksarray); // contains only selected tasks //var_dump($tasksarray); // contains only selected tasks
@ -616,6 +617,7 @@ print "</table>";
print '</div>'; print '</div>';
print '<input type="hidden" id="numberOfLines" name="numberOfLines" value="'.count($tasksarray).'"/>'."\n"; print '<input type="hidden" id="numberOfLines" name="numberOfLines" value="'.count($tasksarray).'"/>'."\n";
print '<input type="hidden" id="numberOfFirstLine" name="numberOfFirstLine" value="'.(reset($TWeek)).'"/>'."\n";
print '<div class="center">'; print '<div class="center">';
print '<input type="submit" class="button" name="save" value="'.dol_escape_htmltag($langs->trans("Save")).'">'; print '<input type="submit" class="button" name="save" value="'.dol_escape_htmltag($langs->trans("Save")).'">';
@ -639,11 +641,9 @@ if ($conf->use_javascript_ajax)
} }
});'."\n"; });'."\n";
$idw=0; foreach ($TWeek as $week_number)
while ($idw < 7)
{ {
print ' updateTotal('.$idw.',\''.$modeinput.'\');'; print ' updateTotal('.$week_number.',\''.$modeinput.'\');';
$idw++;
} }
print "\n});\n"; print "\n});\n";
print '</script>'; print '</script>';