edit.ui.js 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. window.loadProduct = function()
  2. {
  3. const $product = $('[name=product]').zui('picker');
  4. const productID = $product.$.value;
  5. if(twins && productID != oldProductID)
  6. {
  7. confirmRelievedTwins = confirm(relievedTwinsTip);
  8. if(!confirmRelievedTwins)
  9. {
  10. $product.$.setValue(oldProductID.toString());
  11. return false;
  12. }
  13. }
  14. if(isParent == '1')
  15. {
  16. zui.Modal.confirm(moveChildrenTips).then((result) => {
  17. if(!result)
  18. {
  19. $product.$.setValue(oldProductID.toString(), true);
  20. loadProductBranches(oldProductID);
  21. return false;
  22. }
  23. });
  24. }
  25. loadProductBranches(productID);
  26. loadProductReviewers(productID);
  27. }
  28. window.linkStories = function(e)
  29. {
  30. var storyIdList = [];
  31. $('#linkStoriesBox input').each(function()
  32. {
  33. storyIdList.push($(this).val());
  34. });
  35. storyIdList = storyIdList.join(',');
  36. var link = $.createLink('story', 'linkStories', 'storyID=' + storyID + '&browseType=bySearch&excludeStories=' + storyIdList);
  37. if(storyType != 'story') link = $.createLink('story', 'linkRequirements', 'storyID=' + storyID + '&browseType=bySearch&excludeStories=' + storyIdList);
  38. $('#linkStoriesLink').attr('data-url', link);
  39. }
  40. window.changeNeedNotReview = function(obj)
  41. {
  42. var $this = $(obj);
  43. var isChecked = $this.prop('checked');
  44. var $reviewer = $('[name^="reviewer"]').zui('picker');
  45. if(isChecked)
  46. {
  47. $('#needNotReview').val(1);
  48. $('input[name=needNotReview]').val(1);
  49. $reviewer.render({disabled: true});
  50. }
  51. else
  52. {
  53. $('#needNotReview').val(0);
  54. $('input[name=needNotReview]').val(0);
  55. $reviewer.render({disabled: false});
  56. }
  57. };
  58. window.changeReviewer = function()
  59. {
  60. var $reviewer = $('[name^="reviewer"]');
  61. var reviewerCount = $reviewer.val().filter(Boolean).length;
  62. var $value = $reviewer.val();
  63. const filteredArray = reviewedBy.filter(value => value !== '');
  64. const isContained = filteredArray.every(element => $value.includes(element));
  65. if(!isContained)
  66. {
  67. zui.Modal.alert(notDeleted);
  68. $reviewer.zui('picker').$.setValue($value.concat(reviewedBy));
  69. return;
  70. }
  71. if(storyStatus == 'reviewing')
  72. {
  73. if(!reviewerCount)
  74. {
  75. zui.Modal.alert(reviewerNotEmpty);
  76. if(typeof(lastSeletedReviewer) == 'undefined') lastSeletedReviewer = storyReviewers.join();
  77. $reviewer.zui('picker').$.setValue(lastSeletedReviewer);
  78. }
  79. else
  80. {
  81. lastSeletedReviewer = $reviewer.val();
  82. }
  83. }
  84. else
  85. {
  86. if(!reviewerCount)
  87. {
  88. $('#needNotReview').prop('checked', true);
  89. changeNeedNotReview($('#needNotReview'));
  90. }
  91. }
  92. }
  93. window.waitDom('[name^="reviewer"]', function(){if(!$('[name^="reviewer"]').val().filter(Boolean).length) changeNeedNotReview($('#needNotReview'));})
  94. function loadProductBranches(productID)
  95. {
  96. var param = 'all';
  97. var isTwins = 'no';
  98. var branch = 0;
  99. var $product = $('[name=product]');
  100. var $branchBox = $product.closest('.row').find('.branchIdBox');
  101. $branchBox.addClass('hidden');
  102. $.get($.createLink('branch', 'ajaxGetBranches', "productID=" + productID + "&oldBranch=0&param=" + param + "&projectID=" + executionID + "&withMainBranch=1&isTwins=" + isTwins), function(data)
  103. {
  104. if(data && data != '[]')
  105. {
  106. $branchBox.html("<div class='picker-box' id='branch'></div>").removeClass('hidden');
  107. $branch = new zui.Picker('.branchIdBox #branch', {items: JSON.parse(data), name: 'branch', defaultValue: 0});
  108. branch = $branch.$.value;
  109. }
  110. });
  111. window.loadProductModules(productID, branch);
  112. if($('[name=roadmap]').length)
  113. {
  114. window.loadProductRoadmaps(productID, branch);
  115. }
  116. else
  117. {
  118. window.loadProductPlans(productID, branch);
  119. }
  120. }
  121. window.loadProductModules = function(productID, branch)
  122. {
  123. const link = $.createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=story&branch=' + branch + '&rootModuleID=0&returnType=items&fieldID=&extra=nodeleted');
  124. $.getJSON(link, function(moduleItems)
  125. {
  126. let $modulePicker = $('[name=module]').zui('picker');
  127. $modulePicker.render({items: moduleItems});
  128. $modulePicker.$.setValue(0);
  129. });
  130. }
  131. function loadProductReviewers(productID)
  132. {
  133. var reviewerLink = $.createLink('product', 'ajaxGetReviewers', 'productID=' + productID + '&storyID=' + storyID);
  134. var needNotReview = $('#needNotReview').prop('checked');
  135. $('.reviewerBox').load(reviewerLink, function()
  136. {
  137. if(needNotReview) $('.reviewerBox #reviewer').attr('disabled', 'disabled');
  138. });
  139. }
  140. window.loadGrade = function(e)
  141. {
  142. let parent = e.target.value;
  143. let link = $.createLink('story', 'ajaxGetGrade', 'parent=' + parent + '&type=' + storyType);
  144. $.getJSON(link, function(options){
  145. const checkLink = $.createLink('story', 'ajaxCheckGrade', 'id=' + storyID + '&grade=' + options.default);
  146. $.getJSON(checkLink, function(data){
  147. if(data.result)
  148. {
  149. const $grade = $('[name=grade]').zui('picker');
  150. $grade.render({items: options.items});
  151. $grade.$.setValue(options.default);
  152. }
  153. else
  154. {
  155. zui.Modal.alert(data.message.grade);
  156. const $parent = $('[name=parent]').zui('picker');
  157. $parent.$.setValue(oldParent, true);
  158. let link = $.createLink('story', 'ajaxGetGrade', 'parent=' + oldParent + '&type=' + storyType);
  159. $.getJSON(link, function(options){
  160. const $grade = $('[name=grade]').zui('picker');
  161. $grade.render({items: options.items});
  162. $grade.$.setValue(oldGrade);
  163. });
  164. }
  165. });
  166. })
  167. }
  168. window.checkGrade = function(e)
  169. {
  170. const grade = e.target.value;
  171. const checkLink = $.createLink('story', 'ajaxCheckGrade', 'id=' + storyID + '&grade=' + grade);
  172. $.getJSON(checkLink, function(data){
  173. if(!data.result)
  174. {
  175. zui.Modal.alert(data.message.grade);
  176. const $grade = $('[name=grade]').zui('picker');
  177. $grade.$.setValue(oldGrade, true);
  178. }
  179. });
  180. }