From 5ec436661cd053c9c71a995d89c6a1306bd3a36a Mon Sep 17 00:00:00 2001 From: wangyuting Date: Fri, 24 May 2024 10:20:23 +0800 Subject: [PATCH] * Optimize task team css. --- module/task/css/activate.ui.css | 1 + module/task/js/activate.ui.js | 28 +++ module/task/js/create.ui.js | 6 + module/task/js/edit.ui.js | 9 +- module/task/ui/activate.html.php | 303 +++++++++---------------------- module/task/ui/create.html.php | 2 +- module/task/ui/edit.html.php | 3 +- 7 files changed, 126 insertions(+), 226 deletions(-) diff --git a/module/task/css/activate.ui.css b/module/task/css/activate.ui.css index 692dc9aa13..f8c1dea291 100644 --- a/module/task/css/activate.ui.css +++ b/module/task/css/activate.ui.css @@ -3,4 +3,5 @@ #teamForm tr td:first-child {width: 40px; position: relative;} #teamForm tr td:first-child .icon{position:absolute; top: 40px; right: 19px;display: block; font-size: 8px; color: #9ea3bd;} #teamForm tr:nth-last-child(1) td:first-child .icon {display: none;} +#teamTable .form-label {left: auto; padding-left: 0; padding-right: 0;} div.input-control-suffix {height: 2rem;} diff --git a/module/task/js/activate.ui.js b/module/task/js/activate.ui.js index 50eaba08a3..51ebc8ec99 100644 --- a/module/task/js/activate.ui.js +++ b/module/task/js/activate.ui.js @@ -211,3 +211,31 @@ window.clickSubmit = function() $('#assignedTo').val(''); } } + +window.renderRowData = function($row, index, row) +{ + $row.addClass('member member-' + (row ? row.status : 'wait')); + $row.data('estimate', row ? row.teamEstimate : 0); + $row.data('consumed', row ? row.teamConsumed : 0); + $row.data('left', row ? row.teamLeft : 0); + + if(row && row.memberDisabled) + { + $row.find('[data-name=team]').find('.picker-box').on('inited', function(e, info) + { + const $team = info[0]; + $team.render({disabled: true}); + }) + } + if(row && row.hourDisabled) + { + $row.find('[name^=teamEstimate]').attr('readonly', 'readonly'); + $row.find('[name^=teamLeft]').attr('readonly', 'readonly'); + } + if(row) + { + $row.find('[name^=teamConsumed]').attr('readonly', 'readonly'); + } + + if(taskMode == 'linear') $row.find('[data-name=id]').addClass('center').html("" + $row.find('[data-name=id]').text() + ""); +} diff --git a/module/task/js/create.ui.js b/module/task/js/create.ui.js index 8d972d24a3..e575d8e04d 100644 --- a/module/task/js/create.ui.js +++ b/module/task/js/create.ui.js @@ -607,3 +607,9 @@ window.changeTeamMember = function(e) { $(e.target).closest('td').next().toggleClass('required', $(e.target).val() != ''); } + +window.renderRowData = function($row, index, row) +{ + const mode = $('[name=mode]').val(); + if(mode == 'linear') $row.find('[data-name=id]').addClass('center').html("" + $row.find('[data-name=id]').text() + ""); +} diff --git a/module/task/js/edit.ui.js b/module/task/js/edit.ui.js index 176a6eee75..163c591a15 100644 --- a/module/task/js/edit.ui.js +++ b/module/task/js/edit.ui.js @@ -110,7 +110,7 @@ window.loadAllModule = function() */ window.changeMode = function() { - let mode = $('[name=mode]').val(); + const mode = $('[name=mode]').val(); if(mode != 'single') { if(mode != 'multi') @@ -285,4 +285,11 @@ window.renderRowData = function($row, index, row) $row.find('[name^=teamEstimate]').attr('readonly', 'readonly'); $row.find('[name^=teamLeft]').attr('readonly', 'readonly'); } + if(row) + { + $row.find('[name^=teamConsumed]').attr('readonly', 'readonly'); + } + + const mode = $('[name=mode]').val(); + if(mode == 'linear') $row.find('[data-name=id]').addClass('center').html("" + $row.find('[data-name=id]').text() + ""); } diff --git a/module/task/ui/activate.html.php b/module/task/ui/activate.html.php index 7c6e3a8122..b705a95c5a 100644 --- a/module/task/ui/activate.html.php +++ b/module/task/ui/activate.html.php @@ -49,6 +49,18 @@ $memberItems = array(); foreach($members as $key => $value) $memberItems[] = array('text' => $value, 'value' => $key); jsVar('memberItems', $memberItems); +if(!empty($task->team)) +{ + foreach($task->team as $member) + { + $member->memberDisabled = false; + if($member->status == 'done') $member->memberDisabled = true; + + $member->hourDisabled = $memberDisabled; + if($task->mode == 'multi') $member->hourDisabled = false; + } +} + /* zin: Set variables to define control for form. */ modalHeader(); $taskModeBox = ''; @@ -115,214 +127,6 @@ if($isMultiple) ); } -$rowCount = 0; -if(!empty($task->team)) $rowCount = count($task->team) < 6 ? 6 : 1 + count($task->team); -$teamForm = array(); -$i = 1; -if(!empty($task->team)) -{ - foreach($task->team as $member) - { - $memberDisabled = false; - if($member->status == 'done') $memberDisabled = true; - - $hourDisabled = $memberDisabled; - if($task->mode == 'multi') $hourDisabled = false; - - $teamForm[] = h::tr - ( - setClass("member member-{$member->status}"), - set - ( - array - ( - 'estimate' => (float)$member->estimate, - 'consumed' => (float)$member->consumed, - 'left' => (float)$member->left - ) - ), - h::td - ( - setClass('team-index'), - set::width('32px'), - span - ( - setClass('team-number'), - $i - ), - $task->mode == 'linear' ? icon("angle-down") : null - ), - h::td - ( - set::width('240px'), - picker - ( - set::name('team[]'), - set::value($member->account), - set::items($members), - set::placeholder($lang->task->assignedTo), - set::disabled($memberDisabled) - ), - input - ( - set::type('hidden'), - set::name('teamSource[]'), - set::value($member->account) - ), - $memberDisabled ? input( - set::type('hidden'), - set::name('team[]'), - set::value($member->account) - ) : null - ), - h::td - ( - inputControl - ( - input - ( - set::name('teamEstimate[]'), - set::value((float)$member->estimate), - set::placeholder($lang->task->estimateAB), - set::readonly($hourDisabled), - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - inputControl - ( - input - ( - set::name('teamConsumed[]'), - set::value((float)$member->consumed), - set::placeholder($lang->task->consumed), - set::readonly($hourDisabled) - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - setClass('required'), - inputControl - ( - input - ( - set::name('teamLeft[]'), - set::value((float)$member->left), - set::placeholder($lang->task->left), - set::readonly($hourDisabled) - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - set::width('100px'), - setClass('center'), - btnGroup - ( - set::items(array( - array('icon' => 'plus', 'class' => 'btn ghost btn-add text-gray', 'disabled' => $memberDisabled ? 'disabled' : ''), - array('icon' => 'trash', 'class' => 'btn ghost btn-delete text-gray', 'disabled' => $memberDisabled ? 'disabled' : '') - )) - ) - ) - ); - $i ++; - } -} - -for($i; $i <= $rowCount; $i ++) -{ - $teamForm[] = h::tr - ( - setClass('member-wait'), - h::td - ( - setClass('team-index'), - span - ( - setClass("team-number"), - $i - ), - $task->mode == 'linear' ? icon("angle-down") : null - ), - h::td - ( - set::width('240px'), - picker - ( - set::name('team[]'), - set::items($members), - set::placeholder($lang->task->assignedTo) - ), - input - ( - set::type('hidden'), - set::name('teamSource[]'), - set::value('') - ) - ), - h::td - ( - inputControl - ( - input - ( - set::name('teamEstimate[]'), - set::placeholder($lang->task->estimateAB) - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - inputControl - ( - input - ( - set::name('teamConsumed[]'), - set::placeholder($lang->task->consumed) - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - inputControl - ( - input - ( - set::name('teamLeft[]'), - set::placeholder($lang->task->left) - ), - to::suffix($lang->task->suffixHour), - set::suffixWidth(20) - ) - ), - h::td - ( - set::width('100px'), - setClass('center'), - btnGroup - ( - set::items(array( - array('icon' => 'plus', 'class' => 'btn ghost btn-add text-gray'), - array('icon' => 'trash', 'class' => 'btn ghost btn-delete text-gray') - )) - ) - ) - ); -} - /* ====== Define the page structure with zin widgets ====== */ formPanel ( @@ -366,22 +170,77 @@ formPanel setID('modalTeam'), setData(array('backdrop' => false)), set::title($lang->task->team), - set::footerClass('flex-center'), - to::footer - ( - div(setClass('multi-append')), - btn - ( - setID('confirmButton'), - setClass('primary btn-wide'), - set::text($lang->confirm) - ) - ), - h::table + formBatch ( + set::tagName('div'), setID('teamTable'), - setClass('table table-form'), - $teamForm + set::mode('add'), + !empty($task->team) ? set::data(array_values($task->team)) : null, + set::sortable(true), + set::size('sm'), + set::minRows(3), + set::onRenderRow(jsRaw('renderRowData')), + formBatchItem + ( + set::name('id'), + set::width('32px'), + set::control('index') + ), + formBatchItem + ( + set::name('team'), + set::label($lang->task->teamMember), + set::width('160px'), + set::control('picker'), + set::items($members) + ), + formBatchItem + ( + set::name('estimateBox'), + set::label($lang->task->estimateAB), + set::width('135px'), + set::control('inputGroup'), + inputControl + ( + input(set::name("teamEstimate")), + to::suffix($lang->task->suffixHour), + set::suffixWidth(20) + ) + ), + !empty($task->team) ? formBatchItem + ( + set::name('consumedBox'), + set::label($lang->task->consumedAB), + set::width('135px'), + set::control('inputGroup'), + inputControl + ( + input(set::name("teamConsumed")), + to::suffix($lang->task->suffixHour), + set::suffixWidth(20) + ) + ) : null, + !empty($task->team) ? formBatchItem + ( + set::name('leftBox'), + set::label($lang->task->left), + set::width('135px'), + set::control('inputGroup'), + set::required(true), + inputControl + ( + input(set::name("teamLeft")), + to::suffix($lang->task->suffixHour), + set::suffixWidth(20) + ) + ) : null, + formBatchItem + ( + set::name('teamSource'), + set::control('input'), + set::hidden(true) + ), + set::actions(array(array('text' => $lang->save, 'class' => 'primary team-saveBtn', 'id' => 'confirmButton'))) ) ) ) diff --git a/module/task/ui/create.html.php b/module/task/ui/create.html.php index 30402dffc9..f72bb20109 100644 --- a/module/task/ui/create.html.php +++ b/module/task/ui/create.html.php @@ -87,10 +87,10 @@ formGridPanel set::sortable(true), set::size('sm'), set::minRows(3), + set::onRenderRow(jsRaw('renderRowData')), formBatchItem ( set::name('id'), - set::label($lang->idAB), set::width('32px'), set::control('index') ), diff --git a/module/task/ui/edit.html.php b/module/task/ui/edit.html.php index e1152fa6fc..0f6c23ba73 100644 --- a/module/task/ui/edit.html.php +++ b/module/task/ui/edit.html.php @@ -363,7 +363,6 @@ detailBody formBatchItem ( set::name('id'), - set::label($lang->idAB), set::width('32px'), set::control('index') ), @@ -396,7 +395,7 @@ detailBody set::control('inputGroup'), inputControl ( - input(set::name("teamConsumed"), set::readonly(true)), + input(set::name("teamConsumed")), to::suffix($lang->task->suffixHour), set::suffixWidth(20) )