diff --git a/module/story/js/batchtotask.ui.js b/module/story/js/batchtotask.ui.js index 03e13c2d53..1bc9ede5ba 100644 --- a/module/story/js/batchtotask.ui.js +++ b/module/story/js/batchtotask.ui.js @@ -1,39 +1,44 @@ window.renderRowData = function($row, index, row) { - index += 1; - $story = $row.find('td.form-batch-control .form-batch-input[data-name=story]'); - $inputControl = $story.closest('.input-control'); - $inputControl.length == 0 ? $story.wrap("
") : $inputControl.wrap("
"); + index += 1; + $row.find('[data-name="story"]').find('.picker-box').on('inited', function(e, info) + { + let $story = $(info[0].element); + $story.closest('.form-batch-ditto-wrapper').length == 0 ? $story.css('width', 'calc(100% - 60px)').wrap("
") : $story.closest('.form-batch-ditto-wrapper').css('width', 'calc(100% - 60px)').wrap("
"); - viewLink = typeof row != 'undefined' ? "href='" + $.createLink('story', 'view', "storyID=" + row.story) + "' data-toggle='modal' data-size='lg'" : "href='###' disabled=disabled"; - $inputGroup = $inputControl.length == 0 ? $story.closest('.input-group') : $inputControl.closest('.input-group'); - $row.find('td.form-batch-control .form-batch-input[data-name=module]').attr('onchange', 'setStories(this.value, ' + executionID + ', ' + index + ')'); - $story.attr('onchange', 'setStoryRelated(' + index + ')'); - $inputGroup.append(""); - $inputGroup.find('.input-group-addon').append(""); + let $inputControl = $story.closest('.input-group'); + let viewLink = typeof row != 'undefined' && row.story != 0 ? "href='" + $.createLink('story', 'view', "storyID=" + row.story) + "' data-toggle='modal' data-size='lg'" : "href='###' disabled=disabled"; + let $inputGroup = $(""); + $inputGroup.append(""); + $inputGroup.append(""); + $inputControl.append($inputGroup[0]); + }); }; -window.setStories = function(moduleID, executionID, index) +function setStories(event) { - var link = $.createLink('story', 'ajaxGetExecutionStories', 'executionID=' + executionID + '&productID=0&branch=all&moduleID=' + moduleID + '&storyID=0&num=' + index + '&type=short'); - $.get(link, function(stories) + const $target = $(event.target); + const moduleID = $target.val(); + const $row = $target.closest('tr'); + const link = $.createLink('story', 'ajaxGetExecutionStories', 'executionID=' + executionID + '&productID=0&branch=all&moduleID=' + moduleID + '&storyID=0&pageType=&type=short'); + $.getJSON(link, function(stories) { - let $story = $('[name=story\\[' + index + '\\]]'); - let $inputGroup = $story.closest('.input-group'); + let $story = $row.find('[name^=story]'); let storyID = $story.val(); - if(!stories) stories = ''; - $('[name=story\\[' + index + '\\]]').replaceWith(stories); - $inputGroup.find('[name^=story]').attr('class', 'form-control form-batch-input').attr('data-name', 'story').attr('name', 'story[' + index + ']').attr('id', 'story_' + (index - 1)).attr('onchange', 'setStoryRelated(' + index + ')').val(storyID); + let $storyPicker = $story.zui('picker'); + $storyPicker.render({items: stories}); + $storyPicker.$.setValue(storyID); }); }; -window.setStoryRelated = function(index) +function setStoryRelated(event) { - var storyID = $('[name=story\\[' + index + '\\]]').val(); + const $target = $(event.target); + const storyID = $target.val(); + const index = parseInt($target.closest('tr').attr('data-index')) + 1; if(storyID != 0) { - storyLink = $.createLink('story', 'view', "storyID=" + storyID); + var storyLink = $.createLink('story', 'view', "storyID=" + storyID); $('#preview_' + index).removeAttr('disabled'); $('#preview_' + index).attr('data-toggle', 'modal'); $('#preview_' + index).attr('data-size', 'lg'); @@ -42,7 +47,7 @@ window.setStoryRelated = function(index) } else { - storyLink = '###'; + var storyLink = '###'; $('#preview_' + index).attr('disabled', 'disabled'); $('#preview_' + index).css('pointer-events', 'none'); $('#preview_' + index).removeAttr('data-toggle'); @@ -51,15 +56,14 @@ window.setStoryRelated = function(index) } }; -window.copyStoryTitle = function(index) +function copyStoryTitle(event) { - var $story = $('[name=story\\[' + index + '\\]]'); - var storyValue = $story.val(); - var storyTitle = $story.find('option[value="' + storyValue + '"]').text(); - + var $target = $(event.target); + var $story = $target.closest('.form-batch-control'); + var storyTitle = $story.find('.picker span.picker-single-selection').text(); var startPosition = storyTitle.indexOf(':') + 1; var endPosition = storyTitle.lastIndexOf('['); if(endPosition > 0 && startPosition > 0) storyTitle = storyTitle.substr(startPosition, endPosition - startPosition); - $('[name=name\\[' + index + '\\]]').val(storyTitle); + $($story.closest('tr').find('[name^=name]')).val(storyTitle); } diff --git a/module/story/ui/batchtotask.html.php b/module/story/ui/batchtotask.html.php index bc3313c9bd..603b29edff 100644 --- a/module/story/ui/batchtotask.html.php +++ b/module/story/ui/batchtotask.html.php @@ -14,15 +14,15 @@ namespace zin; jsVar('executionID', $executionID); jsVar('langPreview', $lang->preview); -jsVar('copyStoryTitle', $lang->task->copyStoryTitle); +jsVar('copyStoryTitleTip', $lang->task->copyStoryTitle); $fields = array(); $fields['id'] = array('name' => 'id', 'label' => $lang->idAB, 'control' => 'index', 'width' => '32px'); -$fields['module'] = array_merge(array('name' => 'module', 'label' => $lang->task->module, 'width' => '200px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $modules, 'control' => 'select'), $config->task->form->batchcreate['module']); -$fields['story'] = array_merge(array('name' => 'story', 'label' => $lang->task->story, 'width' => '250px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $storyPairs, 'control' => 'select'), $config->task->form->batchcreate['story']); -$fields['name'] = array_merge(array('name' => 'name', 'label' => $lang->task->name, 'ditto' => false, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'text'), $config->task->form->batchcreate['name']); -$fields['type'] = array_merge(array('name' => 'type', 'label' => $lang->typeAB, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $lang->task->typeList, 'control' => 'select'), $config->task->form->batchcreate['type']); -$fields['assignedTo'] = array_merge(array('name' => 'assignedTo', 'label' => $lang->task->assignedTo, 'width' => '120px', 'ditto' => false, 'defaultDitto' => 'off', 'items' => $members, 'control' => 'select'), $config->task->form->batchcreate['assignedTo']); +$fields['module'] = array_merge(array('name' => 'module', 'label' => $lang->task->module, 'width' => '200px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $modules, 'control' => 'picker'), $config->task->form->batchcreate['module']); +$fields['story'] = array_merge(array('name' => 'story', 'label' => $lang->task->story, 'width' => '250px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $storyPairs, 'control' => 'picker'), $config->task->form->batchcreate['story']); +$fields['name'] = array_merge(array('name' => 'name', 'label' => $lang->task->name, 'width' => '250px', 'ditto' => false, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'text'), $config->task->form->batchcreate['name']); +$fields['type'] = array_merge(array('name' => 'type', 'label' => $lang->typeAB, 'width' => '140px', 'ditto' => true, 'defaultDitto' => 'off', 'items' => $lang->task->typeList, 'control' => 'picker'), $config->task->form->batchcreate['type']); +$fields['assignedTo'] = array_merge(array('name' => 'assignedTo', 'label' => $lang->task->assignedTo, 'width' => '120px', 'ditto' => false, 'defaultDitto' => 'off', 'items' => $members, 'control' => 'picker'), $config->task->form->batchcreate['assignedTo']); $fields['estimate'] = array_merge(array('name' => 'estimate', 'label' => $lang->task->estimateAB, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'text'), $config->task->form->batchcreate['estimate']); $fields['estStarted'] = array_merge(array('name' => 'estStarted', 'label' => $lang->task->estStarted, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'date'), $config->task->form->batchcreate['estStarted']); $fields['deadline'] = array_merge(array('name' => 'deadline', 'label' => $lang->task->deadline, 'width' => '120px', 'ditto' => true, 'defaultDitto' => 'off', 'filter' => 'trim', 'control' => 'date'), $config->task->form->batchcreate['deadline']); @@ -59,6 +59,9 @@ formBatchPanel set::maxRows(count($data)), set::data($data), set::onRenderRow(jsRaw('renderRowData')), + on::change('[data-name="module"]', 'setStories'), + on::change('[data-name="story"]', 'setStoryRelated'), + on::click('.copy-title-btn', 'copyStoryTitle'), formHidden('syncFields', implode(',', $syncFields)), );