zentaomax.ui.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. $(function()
  2. {
  3. $('.copy-project-btn').attr('data-size', 'md');
  4. $('.all-content .all-data').addClass('checked');
  5. setProgram('program');
  6. if(pageType == 'copy' && multiple == 1) $('#form-project-' + rawMethod + ' [type=submit]').text(nextStepText);
  7. if(copyType == 'previous')
  8. {
  9. if(end == LONG_TIME)
  10. {
  11. $('[data-name=begin] [name=longTime]').trigger('click');
  12. }
  13. else
  14. {
  15. $('[name=end]').zui('datePicker').$.setValue(end);
  16. }
  17. if(future == 'on')
  18. {
  19. $('[data-name=budget] [name=future]').trigger('click');
  20. }
  21. else
  22. {
  23. $('[data-name=budget] [name=budget]').val(budget);
  24. }
  25. if(days > 0 && end && end != LONG_TIME)
  26. {
  27. setTimeout(function()
  28. {
  29. $('[data-name=days] [name=days]').val(days);
  30. }, 100)
  31. }
  32. }
  33. })
  34. window.setProgram = function(type)
  35. {
  36. const programID = $('#copyProjectModal [name=parent]').length > 0 ? $('#copyProjectModal [name=parent]').val() : 0;
  37. const projectID = (type == 'project') ? $('#copyProjectModal [name=selectCopyprojectID]').val() : 0;
  38. const loadProjectLink = $.createLink('project', 'ajaxLoadProject', 'programID=' + programID + '&projectID=' + projectID + '&model=' + model);
  39. loadTarget(loadProjectLink, '#replaceList');
  40. if(type == 'program')
  41. {
  42. const getProjecttLink = $.createLink('project', 'ajaxGetProjects', 'programID=' + programID + '&model=' + model);
  43. $.getJSON(getProjecttLink, function(projects)
  44. {
  45. const $selectCopyprojectID = $('#copyProjectModal [name=selectCopyprojectID]').zui('picker');
  46. $selectCopyprojectID.render({items: projects});
  47. $selectCopyprojectID.$.setValue(projectID);
  48. $('#tabContent1 .footer-btns .btn.next-btn').removeAttr('disabled');
  49. if(projects.length == 0)
  50. {
  51. $('#tabContent2 [name=choseCopyprojectID]').val('');
  52. $('#tabContent1 .footer-btns .btn.next-btn').attr('disabled', 'disabled');
  53. }
  54. });
  55. }
  56. }
  57. $(document).on('click', '#replaceList .project-block', function(e)
  58. {
  59. const $projectBlock = $(e.target).closest('.project-block');
  60. $('#replaceList button.project-block.primary-outline').removeClass('primary-outline');
  61. $projectBlock.addClass('primary-outline');
  62. })
  63. $(document).on('change', '#copyProjectModal [name=parent]', function(){setProgram('program')});
  64. $(document).on('change', '#copyProjectModal [name=selectCopyprojectID]', function(){setProgram('project');});
  65. $(document).on('change', '.copy-container li:nth-child(2) a', function(e){e.stopPropagation();});
  66. $(document).on('click', '#tabContent1 .next-btn', function()
  67. {
  68. const $projectBlock = $('#replaceList .project-block.primary-outline');
  69. $('#tabContent2 .copy-project-title').html('<i class="icon icon-project"></i>' + $projectBlock.data('title'));
  70. $('#tabContent2 .copy-project-title').attr('title', $projectBlock.data('title'));
  71. $('#tabContent2 [name=choseCopyprojectID]').val($projectBlock.data('id'));
  72. /* Remove all data item when copy no multiple project. */
  73. $('#tabContent1').removeClass('active in');
  74. $('#tabContent2').addClass('active in');
  75. $('#tabContent2 .all-content [name=allCheckbox]').trigger('click');
  76. let multiple = $('#tabContent1 .project-block.primary-outline').attr('data-multiple') == 1;
  77. $('#tabContent2 .all-content .normal-data').toggleClass('hidden', !multiple);
  78. $('#tabContent2 .all-content .no-sprint-data').toggleClass('hidden', multiple);
  79. $('.copy-container li:first-child').removeClass('active');
  80. $('.copy-container li:nth-child(2)').addClass('active');
  81. });
  82. $(document).on('click', '#tabContent2 .complete-btn', function()
  83. {
  84. const copyProjectID = $('#tabContent2 [name=choseCopyprojectID]').val();
  85. if($('#tabContent2 [name=basicCheckbox]').prop("checked"))
  86. {
  87. loadPage($.createLink('project', 'create', `model=${model}&programID=${programID}&copyProjectID=${copyProjectID}&extra=copyFrom=project,copyType=part&pageType=base`));
  88. }
  89. else
  90. {
  91. loadPage($.createLink('project', 'create', `model=${model}&programID=${programID}&copyProjectID=${copyProjectID}&extra=copyFrom=project,copyType=all&pageType=copy`));
  92. }
  93. zui.Modal.hide();
  94. })
  95. $(document).on('click', '.copy-project-btn', function()
  96. {
  97. $('#tabContent1').addClass('active in');
  98. $('#tabContent2').removeClass('active in');
  99. $('#tabContent2 .all-content').removeClass('hidden');
  100. $('#tabContent2 [name=allCheckbox], #tabContent2 [name=basicCheckbox]').prop('checked', false);
  101. $('.copy-container li:first-child').addClass('active');
  102. $('.copy-container li:nth-child(2)').removeClass('active');
  103. })
  104. $(document).on('click', '#tabContent2 .all-content [name=allCheckbox]', function()
  105. {
  106. $('#tabContent2 [name=basicCheckbox]').prop('checked', false);
  107. dataToggleClass('remove', '.basic-content .all-data');
  108. dataToggleClass('add', '.all-content .all-data');
  109. })
  110. $(document).on('click', '#tabContent2 .basicData [name=basicCheckbox]', function()
  111. {
  112. $('#tabContent2 [name=allCheckbox]').prop('checked', false);
  113. dataToggleClass('remove', '.all-content .all-data');
  114. dataToggleClass('add', '.basic-content .all-data');
  115. })
  116. function dataToggleClass(action, className)
  117. {
  118. if (action == 'add')
  119. {
  120. $(className).addClass('checked')
  121. }
  122. else
  123. {
  124. $(className).removeClass('checked')
  125. }
  126. }
  127. window.removeAllTips = function()
  128. {
  129. $('.has-warning').removeClass('has-warning');
  130. $('.text-warning').remove();
  131. if(copyType == 'all' || copyType == 'previous')
  132. {
  133. /* Add project sessionStorage. */
  134. sessionStorage.setItem("project", JSON.stringify(convertToArray($('form').serialize())));
  135. }
  136. }
  137. window.convertToArray = function(data)
  138. {
  139. let result = [];
  140. $.each(data.split('&'), function(index, pair)
  141. {
  142. let parts = pair.split('=');
  143. result.push({
  144. name: parts[0].trim(),
  145. value: parts[1] ? decodeURIComponent(parts[1].replace(/\+/g, ' ')).trim() : ''
  146. });
  147. });
  148. return result;
  149. }