copyconfirm.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. $(document).ready(function()
  2. {
  3. var copyProject = JSON.parse(sessionStorage.getItem('project'));
  4. $.each(copyProject, function(key, project)
  5. {
  6. if(project.name.indexOf('products[') != -1)
  7. {
  8. hiddenHtml = "<input type='hidden' name='" + project.name + "' id='" + project.name + "' value='" + project.value + "'>";
  9. }
  10. else if(project.name.indexOf('plans[') != -1)
  11. {
  12. hiddenHtml = "<input type='hidden' name='" + project.name + "' id='" + project.name + "' value='" + project.value + "'>";
  13. }
  14. else if(project.name.indexOf('whitelist[') != -1)
  15. {
  16. hiddenHtml = "<input type='hidden' name='" + project.name + "' id='" + project.name + "' value='" + project.value + "'>";
  17. }
  18. else if(project.name.indexOf('branch[') != -1)
  19. {
  20. hiddenHtml = "<input type='hidden' name='" + project.name + "' id='" + project.name + "' value='" + project.value + "'>";
  21. }
  22. else if(project.name.indexOf('isLinkStory[') != -1)
  23. {
  24. hiddenHtml = "<input type='hidden' name='project[isLinkStory]' id='project[isLinkStory]' value='" + project.value + "'>";
  25. }
  26. else
  27. {
  28. hiddenHtml = "<input type='hidden' name='project[" + project.name + "]' id='project[" + project.name + "]' value='" + project.value + "'>"
  29. }
  30. $("#submit").before(hiddenHtml);
  31. });
  32. $("table tr").on('click', '.has-info', function(e)
  33. {
  34. $(this).removeClass('has-info');
  35. });
  36. });
  37. /**
  38. * Load stages when change product.
  39. *
  40. * @param object $obj
  41. * @access public
  42. * @return void
  43. */
  44. function loadStages(obj)
  45. {
  46. var productID = $(obj).val();
  47. var $panelBody = $(obj).closest('.waterfallstage').find('.waterfallbody');
  48. var loadURL = createLink('project', 'ajaxLoadStages', 'projectID=' + copyProjectID + '&productID=' + productID + '&copyToProduct=' + productID);
  49. $panelBody.load(loadURL, function()
  50. {
  51. $panelBody.find('.form-date').datepicker();
  52. $panelBody.find('[name^=PMs]').chosen();
  53. });
  54. }
  55. /**
  56. * Convert a date string like 2011-11-11 to date object in js.
  57. *
  58. * @param string $date
  59. * @access public
  60. * @return date
  61. */
  62. function convertStringToDate(dateString)
  63. {
  64. dateString = dateString.split('-');
  65. return new Date(dateString[0], dateString[1] - 1, dateString[2]);
  66. }
  67. /**
  68. * Compute delta of two days.
  69. *
  70. * @param string $date1
  71. * @param string $date1
  72. * @access public
  73. * @return int
  74. */
  75. function computeDaysDelta(date1, date2)
  76. {
  77. date1 = convertStringToDate(date1);
  78. date2 = convertStringToDate(date2);
  79. delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1;
  80. weekEnds = 0;
  81. for(i = 0; i < delta; i++)
  82. {
  83. if((weekend == 2 && date1.getDay() == 6) || date1.getDay() == 0) weekEnds ++;
  84. date1 = date1.valueOf();
  85. date1 += 1000 * 60 * 60 * 24;
  86. date1 = new Date(date1);
  87. }
  88. return delta - weekEnds;
  89. }
  90. /**
  91. * Compute work days.
  92. *
  93. * @access public
  94. * @return void
  95. */
  96. function computeWorkDays(currentID)
  97. {
  98. index = currentID.replace(/\w*\[|\]/g, '');
  99. beginDate = $('#begins\\[' + index + '\\]').val();
  100. endDate = $('#ends\\[' + index + '\\]').val();
  101. if(beginDate && endDate)
  102. {
  103. $('#dayses\\[' + index + '\\]').val(computeDaysDelta(beginDate, endDate));
  104. }
  105. }
  106. function changeType(obj)
  107. {
  108. const $this = $(obj);
  109. const $row = $this.closest('tr');
  110. const type = $this.val();
  111. $nextRow = $row.next();
  112. while($nextRow.length > 0)
  113. {
  114. if($row.attr('data-level') >= $nextRow.attr('data-level')) break;
  115. let $childType = $nextRow.find('[name^=attributes]');
  116. $childType.toggleClass('select-disabled', type != 'mix');
  117. if(type != 'mix') $childType.val(type);
  118. $nextRow = $nextRow.next();
  119. }
  120. }