create.ui.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /**
  2. * Urlencode param.
  3. *
  4. * @param param $param
  5. * @access public
  6. * @return string
  7. */
  8. function urlencode(param)
  9. {
  10. if(hostType != 'gitlab') return Base64.encode(encodeURIComponent(param));
  11. return param;
  12. }
  13. /**
  14. * Get branch priv.
  15. *
  16. * @param int|string $project
  17. * @access public
  18. * @return void
  19. */
  20. function getBranchPriv(project)
  21. {
  22. var sourceProject = projectNamespace ? urlencode(projectNamespace) : project;
  23. var branchUrl = $.createLink('mr', 'ajaxGetBranchPrivs', "hostID=" + hostID + "&project=" + sourceProject);
  24. $.get(branchUrl, function(response)
  25. {
  26. branchPrivs = eval('(' + response + ')');
  27. });
  28. }
  29. window.onProjectChange = function()
  30. {
  31. var sourceProject = projectNamespace ? urlencode(projectNamespace) : projectID;
  32. var branchUrl = $.createLink(hostType, 'ajaxGetProjectBranches', "id=" + hostID + "&projectID=" + sourceProject);
  33. $.ajaxSubmit(
  34. {
  35. url: branchUrl,
  36. method: 'get',
  37. onComplete: function(result)
  38. {
  39. zui.Picker.query("[name='sourceBranch']").render({items: result});
  40. const picker = zui.Picker.query("[name='targetBranch']");
  41. picker.render({items: result});
  42. picker.$.setValue('');
  43. },
  44. });
  45. getBranchPriv(projectID);
  46. }
  47. function onSourceProjectChange()
  48. {
  49. var sourceProject = urlencode($('#sourceProject').val());
  50. if(!sourceProject) return false;
  51. if(sourceProject) getBranchPriv(sourceProject);
  52. }
  53. function onBranchChange()
  54. {
  55. $('#removeSourceBranch').removeAttr('disabled');
  56. var sourceProject = $('#sourceProject').val();
  57. var sourceBranch = $('#sourceBranch').val();
  58. var targetProject = $('#targetProject').val();
  59. var targetBranch = $('#targetBranch').val();
  60. if(branchPrivs[sourceBranch])
  61. {
  62. $('#removeSourceBranch').attr('disabled', 'true');
  63. $('#removeSourceBranch').attr("checked",false);
  64. }
  65. if(!sourceProject || !sourceBranch || !targetProject || !targetBranch) return false;
  66. var $this = $(this);
  67. var repoUrl = $.createLink('mr', 'ajaxCheckSameOpened', "hostID=" + hostID);
  68. $.post(repoUrl, {"sourceProject": sourceProject, "sourceBranch": sourceBranch, "targetProject": targetProject, "targetBranch": targetBranch}, function(response)
  69. {
  70. response = $.parseJSON(response);
  71. if(response.result == 'fail')
  72. {
  73. alert(response.message);
  74. if($this.attr('id') == 'sourceBranch') $('#removeSourceBranch').removeAttr('disabled');
  75. return false;
  76. }
  77. });
  78. }
  79. function onNeedCiChange(event)
  80. {
  81. const $needCi = $(event.target) ;
  82. const picker = zui.Picker.query("[name='jobID']");
  83. if($needCi.prop('checked') == false)
  84. {
  85. picker.render({"disabled": true, "items": []});
  86. $("#jobID").addClass('hidden');
  87. }
  88. else
  89. {
  90. const items = [];
  91. for(const jobID in jobPairs) items.push({"value": jobID, "text": jobPairs[jobID]});
  92. picker.render({"disabled": false, "items": items});
  93. $("#jobID").removeClass('hidden');
  94. }
  95. }
  96. function changeRepo()
  97. {
  98. const repoID = $('input[name=repoID]').val();
  99. loadPage($.createLink('mr', 'create', `repoID=${repoID}&objectID=${objectID}`));
  100. }
  101. $(function()
  102. {
  103. if(repo.gitService)
  104. {
  105. onProjectChange();
  106. }
  107. });