trigger.ui.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. $(function()
  2. {
  3. $('.linkage-fields.hidden').remove();
  4. $('.custom-fields.hidden').parent().remove();
  5. window.customCount = $('#paramDiv .input-group').length;
  6. window.triggerCount = $('#triggerForm .trigger-box').length;
  7. });
  8. window.addItem = function(event)
  9. {
  10. const obj = $(event.target);
  11. const inputGroup = obj.closest('.input-group').clone();
  12. const newName = window.customCount + 'custom';
  13. window.customCount ++;
  14. $(inputGroup).find('input.custom').attr('id', newName);
  15. $(inputGroup).find('input.paramName').val('');
  16. $(inputGroup).find('input[id="' + newName + '"]').next().attr('for', newName);
  17. obj.closest('.form-group').append($(inputGroup));
  18. }
  19. window.deleteItem = function(event)
  20. {
  21. const $obj = $(event.target);
  22. if($('.delete-param').length > 1) $obj.closest('.input-group').remove();
  23. }
  24. /**
  25. * Show input, hidden select.
  26. *
  27. * @param obj $obj
  28. * @access public
  29. * @return void
  30. */
  31. window.setValueInput = function(event)
  32. {
  33. const obj = event.target;
  34. if($(obj).prop('checked'))
  35. {
  36. $(obj).closest('.input-group').find('select').attr('disabled', true);
  37. $(obj).closest('.input-group').find('select').addClass('hidden');
  38. $(obj).closest('.input-group').find("input[name^='paramValue']").removeClass('hidden');
  39. $(obj).closest('.input-group').find("input[name^='paramValue']").removeAttr('disabled');
  40. }
  41. else
  42. {
  43. $(obj).closest('.input-group').find("input[name^='paramValue']").attr('disabled', true);
  44. $(obj).closest('.input-group').find("input[name^='paramValue']").addClass('hidden');
  45. $(obj).closest('.input-group').find('select').removeClass('hidden');
  46. $(obj).closest('.input-group').find('select').removeAttr('disabled');
  47. }
  48. }
  49. window.changeCustomField = function(event)
  50. {
  51. let paramValue = $(event.target).val();
  52. paramValue = paramValue.substr(1).toUpperCase();
  53. $(event.target).prevAll('input').val(paramValue);
  54. }
  55. window.changeTriggerType = function(event)
  56. {
  57. const $parentDom = $(event.target).closest('.trigger-box');
  58. if($parentDom.find('.linkage-fields').length) $parentDom.find('.linkage-fields').remove();
  59. const triggers = [];
  60. $('input[name^=triggerType]').each(function()
  61. {
  62. if($(this).attr('id') != $(event.target).attr('id')) triggers.push($(this).val());
  63. });
  64. const type = $(event.target).val();
  65. if(triggers.includes(type))
  66. {
  67. zui.Modal.alert(triggerRepeat).then(() =>
  68. {
  69. let triggerList = {};
  70. $.extend(true, triggerList, triggerTypeList);
  71. triggers.forEach((trigger) => {
  72. if(triggerList[trigger]) delete triggerList[trigger];
  73. });
  74. $(event.target).zui('picker').$.setValue(triggerList ? Object.keys(triggerList)[0] : '');
  75. });
  76. return;
  77. }
  78. if(type != 'tag' || repo.SCM == 'Subversion') $parentDom.append(eval(`${type}Field`).replace(/%s/g, window.triggerCount));
  79. if(window[`${type}BlockInit`]) eval(`window.${type}BlockInit()`);
  80. $parentDom.find('.hidden:not(.delete-trigger)').removeClass('hidden');
  81. }
  82. window.toggleAutoRun = function(event)
  83. {
  84. if($(event.target).prop('checked'))
  85. {
  86. $('input[name=autoRun]').val('0');
  87. }
  88. else
  89. {
  90. $('input[name=autoRun]').val('1');
  91. }
  92. }
  93. window.addTrigger = function()
  94. {
  95. if($('#triggerForm .trigger-box').length >= Object.keys(triggerTypeList).length) return;
  96. $('#triggerForm .trigger-box').last().after(triggerField.replace(/%s/g, window.triggerCount));
  97. $('#triggerForm .trigger-box').removeClass('hidden');
  98. $('#triggerPicker' + window.triggerCount).addClass('form-group-wrapper picker-box');
  99. const triggers = [];
  100. $('input[name^=triggerType]').each(function(){triggers.push($(this).val());});
  101. let trigger = '';
  102. const options = Object.keys(triggerTypeList).map((type) => {
  103. if(!trigger && !triggers.includes(type)) trigger = type;
  104. return {value: type, text: triggerTypeList[type]}
  105. });
  106. new zui.Picker('#triggerPicker' + window.triggerCount, {
  107. items: options,
  108. name: `triggerType[${window.triggerCount}]`
  109. });
  110. setTimeout(() =>
  111. {
  112. $('#triggerPicker' + (window.triggerCount - 1)).zui('picker').$.setValue(trigger);
  113. }, 50)
  114. window.triggerCount ++;
  115. if($('#triggerForm .trigger-box').length > 1) $('.delete-trigger').removeClass('hidden');
  116. if($('#triggerForm .trigger-box').length >= Object.keys(triggerTypeList).length) $('.add-trigger-btn').addClass('hidden');
  117. }
  118. window.deleteTrigger = function(event)
  119. {
  120. $(event.target).closest('.trigger-box').remove();
  121. if($('#triggerForm .trigger-box').length <= 1) $('.delete-trigger').addClass('hidden');
  122. if($('#triggerForm .trigger-box').length < Object.keys(triggerTypeList).length)$('.add-trigger-btn').removeClass('hidden');
  123. }
  124. window.tagBlockInit = function()
  125. {
  126. if(repo.SCM != 'Subversion') return;
  127. $('#dirPicker' + window.triggerCount).addClass('form-group-wrapper picker-box');
  128. const options = Object.keys(dirs).map((dir) => {
  129. return {value: dir, text: dirs[dir]};
  130. });
  131. new zui.Picker('#dirPicker' + window.triggerCount, {
  132. items: options,
  133. name: `svnDir[]`,
  134. required: true,
  135. defaultValue: job.svnDir
  136. });
  137. }
  138. window.scheduleBlockInit = function()
  139. {
  140. $('#scheduleTime' + window.triggerCount).addClass('form-group-wrapper picker-box');
  141. new zui.TimePicker('#scheduleTime' + window.triggerCount, {
  142. name: 'atTime',
  143. defaultValue: job.atTime
  144. })
  145. }