diff --git a/module/task/js/activate.js b/module/task/js/activate.js index 6f3b085f86..32649933f9 100644 --- a/module/task/js/activate.js +++ b/module/task/js/activate.js @@ -1,56 +1,142 @@ -$('#confirmButton').click(function() +$(function() { - var memberCount = ''; - var totalEstimate = 0; - var totalConsumed = oldConsumed; - var totalLeft = 0; - var error = false; - $('select[name^=team]').each(function() + $('#confirmButton').click(function() { - if($(this).val() == '') return; - - memberCount++; - - var $tr = $(this).closest('tr'); - var account = $(this).find('option:selected').text(); - - var estimate = parseFloat($tr.find('[name^=teamEstimate]').val()); - if(!isNaN(estimate)) totalEstimate += estimate; - if($tr.hasClass('member-wait') && (isNaN(estimate) || estimate <= 0)) + var memberCount = ''; + var totalEstimate = 0; + var totalConsumed = oldConsumed; + var totalLeft = 0; + var error = false; + $('select[name^=team]').each(function() { - bootbox.alert(account + ' ' + estimateNotEmpty); - error = true; + if($(this).val() == '') return; + + memberCount++; + + var $tr = $(this).closest('tr'); + var account = $(this).find('option:selected').text(); + + var estimate = parseFloat($tr.find('[name^=teamEstimate]').val()); + if(!isNaN(estimate)) totalEstimate += estimate; + if($tr.hasClass('member-wait') && (isNaN(estimate) || estimate <= 0)) + { + bootbox.alert(account + ' ' + estimateNotEmpty); + error = true; + return false; + } + + var consumed = parseFloat($tr.find('[name^=teamConsumed]').val()); + if(!isNaN(consumed)) totalConsumed += consumed; + + var $left = $tr.find('[name^=teamLeft]'); + var left = parseFloat($left.val()); + if(!isNaN(left)) totalLeft += left; + if(!$left.prop('readonly') && $tr.hasClass('member-wait') && (isNaN(left) || left <= 0)) + { + bootbox.alert(account + ' ' + leftNotEmpty); + error = true; + return false; + } + }) + + if(error) return false; + + if(memberCount < 2) + { + bootbox.alert(teamMemberError); return false; } - var consumed = parseFloat($tr.find('[name^=teamConsumed]').val()); - if(!isNaN(consumed)) totalConsumed += consumed; + $('#left').val(totalLeft); + updateAssignedTo(); - var $left = $tr.find('[name^=teamLeft]'); - var left = parseFloat($left.val()); - if(!isNaN(left)) totalLeft += left; - if(!$left.prop('readonly') && $tr.hasClass('member-wait') && (isNaN(left) || left <= 0)) - { - bootbox.alert(account + ' ' + leftNotEmpty); - error = true; - return false; - } - }) + $('.close').click(); + }); - if(error) return false; - - if(memberCount < 2) + $('#multiple').on('click', function() { - bootbox.alert(teamMemberError); - return false; - } + var showTeam = $(this).is(":checked"); + $('#assignedTo').val(''); + $('#left').val(''); + $('#dataPlanGroup').removeClass('required'); + $('.multi-append').empty(); + $('.teamTemplate select, .teamTemplate input').val(''); + $('.teamTemplate input[name^=teamConsumed]').val('0'); + $('.teamTemplate select').trigger('chosen:updated'); + var trCount = $('#taskTeamEditor tr').length; + var tmpCount = $('#taskTeamEditor select:disabled').length; - $('#left').val(totalLeft); - updateAssignedTo(); + var removeNum = tmpCount > 6 ? 1 : (5 - tmpCount); + $('#taskTeamEditor tr.teamTemplate').filter(':gt(' + removeNum + ')').remove(); - $('.close').click(); + if(showTeam) + { + $('#assignedTo').attr('disabled', true); + $('#left').attr('readonly', true); + $('.team-group').removeClass('hidden'); + } + else + { + $('.team-group').addClass('hidden'); + $('#assignedTo').removeAttr('disabled'); + $('#left').removeAttr('readonly'); + $('#dataPlanGroup').addClass('required'); + } + $('#assignedTo').trigger('chosen:updated'); + }); + + $('#assignedTo').on('change', setTeamUser); + $('#left').on('input', setTeamUser); + + $('#submit').on('click', function() + { + if(isMultiple) + { + var multiple = $('#multiple').is(":checked"); + if(!multiple) + { + var assignedTo = $('#assignedTo').val(); + if(!assignedTo) + { + bootbox.alert(teamNotEmpty); + return false; + } + } + + var estimate = parseInt($('#left').val()); + if(isNaN(estimate) || estimate <= 0) + { + bootbox.alert(multiple ? teamLeftEmpty : leftNotEmpty); + return false; + } + + $('#assignedTo').val(''); + } + }); }); +/** + * Set team user form. + * + * @access public + * @return void + */ +function setTeamUser() +{ + $('.multi-append').empty(); + + var assignedTo = $('#assignedTo').val(); + var estimate = parseInt($('#left').val()); + if(!assignedTo || !estimate) return; + + var teamLine = ''; + teamLine += ''; + teamLine += ''; + teamLine += ''; + teamLine += ''; + $('.multi-append').html(teamLine); +} + /** * Update assignedTo. * diff --git a/module/task/lang/de.php b/module/task/lang/de.php index 584e16ea3b..162f1a7b7b 100644 --- a/module/task/lang/de.php +++ b/module/task/lang/de.php @@ -60,6 +60,7 @@ $lang->task->replace = 'Replace'; $lang->task->myEffort = 'My Effort'; $lang->task->allEffort = 'Team Effort'; $lang->task->teamOrder = 'Order'; +$lang->task->manageTeam = 'Manage Team'; $lang->task->common = 'Aufgabe'; $lang->task->id = 'ID'; @@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.'; $lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0'; $lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0'; $lang->task->error->notempty = '%s must be > 0.'; +$lang->task->error->teamLeftEmpty = 'Please maintain team hours.'; /* Report. */ $lang->task->report = new stdclass(); diff --git a/module/task/lang/en.php b/module/task/lang/en.php index dff129d70c..062d714912 100755 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -60,6 +60,7 @@ $lang->task->replace = 'Replace'; $lang->task->myEffort = 'My Effort'; $lang->task->allEffort = 'Team Effort'; $lang->task->teamOrder = 'Order'; +$lang->task->manageTeam = 'Manage Team'; $lang->task->common = 'Task'; $lang->task->id = 'ID'; @@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.'; $lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0'; $lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0'; $lang->task->error->notempty = '%s must be > 0.'; +$lang->task->error->teamLeftEmpty = 'Please maintain team hours.'; /* Report. */ $lang->task->report = new stdclass(); diff --git a/module/task/lang/fr.php b/module/task/lang/fr.php index ed2b0c8d9a..8926fbc2cd 100644 --- a/module/task/lang/fr.php +++ b/module/task/lang/fr.php @@ -60,6 +60,7 @@ $lang->task->replace = 'Replace'; $lang->task->myEffort = 'My Effort'; $lang->task->allEffort = 'Team Effort'; $lang->task->teamOrder = 'Order'; +$lang->task->manageTeam = 'Manage Team'; $lang->task->common = 'Tâche'; $lang->task->id = 'ID'; @@ -278,6 +279,7 @@ $lang->task->error->date = 'The date should be <= today.'; $lang->task->error->leftEmptyAB = 'When the task status is %s, "Hours Left" cannot be 0'; $lang->task->error->leftEmpty = 'Task#%sWhen the task status is %s, "Left" cannot be 0'; $lang->task->error->notempty = '%s must be > 0.'; +$lang->task->error->teamLeftEmpty = 'Please maintain team hours.'; /* Report. */ $lang->task->report = new stdclass(); diff --git a/module/task/lang/zh-cn.php b/module/task/lang/zh-cn.php index 41c8f326cc..098d6fb610 100755 --- a/module/task/lang/zh-cn.php +++ b/module/task/lang/zh-cn.php @@ -60,6 +60,7 @@ $lang->task->replace = '替换'; $lang->task->myEffort = '我的日志'; $lang->task->allEffort = '团队日志'; $lang->task->teamOrder = '工序'; +$lang->task->manageTeam = '维护团队'; $lang->task->common = '任务'; $lang->task->id = '编号'; @@ -278,6 +279,7 @@ $lang->task->error->date = '日期不能大于今天'; $lang->task->error->leftEmptyAB = '任务状态为%s时,预计剩余不能为0'; $lang->task->error->leftEmpty = 'Task#%s任务状态为%s时,剩余不能为0'; $lang->task->error->notempty = '%s必须大于0。'; +$lang->task->error->teamLeftEmpty = '请维护团队工时。'; /* Report. */ $lang->task->report = new stdclass(); diff --git a/module/task/view/activate.html.php b/module/task/view/activate.html.php index 1e76423712..35cdba2f51 100644 --- a/module/task/view/activate.html.php +++ b/module/task/view/activate.html.php @@ -17,9 +17,14 @@ user->account);?> task->error->teamMember);?> +task->error->teamLeftEmpty);?> lang->task->error->leftEmptyAB, $this->lang->task->statusList[$task->status]));?> task->error->notempty, $lang->task->estimate))?> task->error->notempty, $lang->task->left))?> +error->notempty, $lang->task->assignedTo))?> +team);?> + +mode);?>