From 1bc25dff5a078265eda4518ace762b4c15c4f6bb Mon Sep 17 00:00:00 2001 From: daitingting Date: Wed, 31 Jan 2024 06:20:28 +0000 Subject: [PATCH] * Use dateRangePicker for date range. --- module/program/ui/common.field.php | 13 ++++++++++--- module/program/ui/create.field.php | 7 ------- module/program/ui/edit.field.php | 20 ++++++++++++++------ module/program/ui/edit.html.php | 12 ++++++++++-- 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/module/program/ui/common.field.php b/module/program/ui/common.field.php index cf680475e9..1ef2b2ae24 100644 --- a/module/program/ui/common.field.php +++ b/module/program/ui/common.field.php @@ -17,12 +17,19 @@ $fields->field('name') $fields->field('PM') ->items(data('pmUsers')); -$fields->field('begin') - ->control('inputGroup') +$fields->field('dateRange') ->required() ->label($lang->project->dateRange) ->checkbox(array('text' => $lang->project->longTime, 'name' => 'longTime')) - ->menu(array('items' => jsRaw('window.getDateMenu'))) + ->controlBegin('dateRangePicker') + ->beginName('begin') + ->beginPlaceholder($lang->project->begin) + ->beginValue(date('Y-m-d')) + ->endName('end') + ->endPlaceholder($lang->project->end) + ->endValue('') + ->endList($lang->execution->endList) + ->controlEnd() ->tip(' ') ->tipProps(array('id' => 'dateTip')) ->tipClass('text-warning hidden'); diff --git a/module/program/ui/create.field.php b/module/program/ui/create.field.php index 5cad8b148d..69e4df980b 100644 --- a/module/program/ui/create.field.php +++ b/module/program/ui/create.field.php @@ -4,13 +4,6 @@ global $lang, $config; $fields = defineFieldList('program.create', 'program'); -$fields->field('begin') - ->itemBegin('begin')->require()->type('datePicker')->value(date('Y-m-d'))->placeholder($lang->project->begin)->itemEnd() - ->itemBegin()->type('addon')->label($lang->project->to)->text($lang->colon)->itemEnd() - ->itemBegin('end')->require()->type('datePicker')->placeholder($lang->project->end) - ->menu(array('items' => jsRaw('window.getDateMenu'))) - ->itemEnd(); - $fields->field('acl') ->items(data('parentProgram') ? $lang->program->subAclList : $lang->program->aclList) ->value('open'); diff --git a/module/program/ui/edit.field.php b/module/program/ui/edit.field.php index fb1f9dfd53..3b00d54814 100644 --- a/module/program/ui/edit.field.php +++ b/module/program/ui/edit.field.php @@ -5,13 +5,21 @@ global $lang; $fields = defineFieldList('program.edit', 'program'); $isLongTime = data('program.end') && data('program.end') == LONG_TIME; -$fields->field('begin') +$fields->field('dateRange') ->checkbox(array('text' => $lang->project->longTime, 'name' => 'longTime', 'checked' => $isLongTime)) - ->itemBegin('begin')->require()->type('datePicker')->value(data('program.begin'))->placeholder($lang->project->begin)->itemEnd() - ->itemBegin()->type('addon')->label($lang->project->to)->text($lang->colon)->itemEnd() - ->itemBegin('end')->require()->type('datePicker')->value(data('program.end'))->placeholder($lang->project->end)->disabled($isLongTime) - ->menu(array('items' => jsRaw('window.getDateMenu'))) - ->itemEnd(); + ->controlBegin('dateRangePicker') + ->beginName('begin') + ->beginPlaceholder($lang->project->begin) + ->beginValue(data('program.begin')) + ->endName('end') + ->endPlaceholder($lang->project->end) + ->endValue(data('program.end')) + ->endDisabled($isLongTime) + ->endList($lang->execution->endList) + ->controlEnd() + ->tip(' ') + ->tipProps(array('id' => 'dateTip')) + ->tipClass('text-warning hidden'); $fields->field('acl') ->items(data('program.parent') ? $lang->program->subAclList : $lang->program->aclList) diff --git a/module/program/ui/edit.html.php b/module/program/ui/edit.html.php index 035f49d9cc..b91a402791 100644 --- a/module/program/ui/edit.html.php +++ b/module/program/ui/edit.html.php @@ -24,6 +24,13 @@ $fields = useFields('program.edit'); $autoLoad = array(); $autoLoad['parent'] = 'parent,future,budget,budgetUnit,acl,whitelist'; +$handleLongTimeChange = jsCallback()->do(<<<'JS' + const endPicker = $element.find('[name=end]').zui('datePicker'); + const longTime = $element.find('[name=longTime]').prop('checked'); + endPicker.render({disabled: longTime}); + if(longTime) endPicker.$.setValue(''); +JS); + formGridPanel ( set::modeSwitcher(false), @@ -34,8 +41,9 @@ formGridPanel on::change('[name=budget]', 'budgetOverrunTips'), on::change('[name=future]', 'onFutureChange'), on::change('[name=acl]', 'onAclChange'), - on::change('[name=longTime]')->do('$("[name=end]").zui("datePicker").render({disabled: $(target).prop("checked")});'), - on::change('[name=begin], [name=end]', 'onDateChange') + on::change('[name=longTime]', $handleLongTimeChange), + on::change('[name=begin], [name=end]', 'onDateChange'), + on::inited()->triggerEvent('$element.find("[name=longTime]")', 'change') ); render();