common.ui.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. window.loadRepoList = function(engine = '')
  2. {
  3. const link = $.createLink('job', 'ajaxGetRepoList', 'engine=' + engine);
  4. $.get(link, function(data)
  5. {
  6. if(data)
  7. {
  8. $('#repo').replaceWith(data)
  9. $('#repo_chosen').remove();
  10. $('#repo').chosen();
  11. }
  12. });
  13. }
  14. /*
  15. * Check sonarqube linked.
  16. */
  17. window.checkSonarquebLink = function()
  18. {
  19. const repoID = $('[name=repo]').val();
  20. const frame = $('[name=frame]').val();
  21. const jobID = typeof(job) == 'undefined' ? 0 : job.id;
  22. if(frame != 'sonarqube' || repoID == 0) return false;
  23. $.getJSON($.createLink('job', 'ajaxCheckSonarqubeLink', 'repoID=' + repoID + '&jobID=' + jobID), function(result)
  24. {
  25. if(result.result != 'success') zui.Modal.alert(result.message);
  26. })
  27. }
  28. window.changeJenkinsServer = function(event)
  29. {
  30. const jenkinsID = $(event.target).val();
  31. const pipelineDropmenu = zui.Dropmenu.query('#pipelineDropmenu');
  32. if(!jenkinsID)
  33. {
  34. pipelineDropmenu.render({fetcher: ''});
  35. }
  36. else
  37. {
  38. pipelineDropmenu.render({fetcher: $.createLink('jenkins', 'ajaxGetJenkinsTasks', 'jenkinsID=' + jenkinsID)})
  39. }
  40. }
  41. window.changeSonarqubeServer = function()
  42. {
  43. const sonarqubeID = $('[name=sonarqubeServer]').val();
  44. $.getJSON($.createLink('sonarqube', 'ajaxGetProjectList', 'sonarqubeID=' + sonarqubeID), function(data)
  45. {
  46. $('#projectKey').zui('picker').render({items: data});
  47. const project = data.length ? data[0].value : '';
  48. $('#projectKey').zui('picker').$.setValue(project)
  49. })
  50. /* There has been a problem with handling the prompt label. */
  51. $('#projectKeyLabel').remove();
  52. }
  53. window.changeFrame = function(event)
  54. {
  55. const frame = $(event.target).val();
  56. if(frame == 'sonarqube')
  57. {
  58. /* Check exists sonarqube data. */
  59. checkSonarquebLink();
  60. $('div.sonarqube').removeClass('hidden');
  61. }
  62. else
  63. {
  64. $('div.sonarqube').addClass('hidden');
  65. }
  66. }
  67. window.changeEngine = function(event)
  68. {
  69. const engine = $(event.target).val();
  70. const repos = [];
  71. let checkedRepo = '';
  72. for(const repoID in repoList)
  73. {
  74. const repo = repoList[repoID];
  75. if(engine == 'jenkins')
  76. {
  77. if(repoID == pageRepoID || !checkedRepo) checkedRepo = repoID;
  78. repos.push({text: `[${repo.SCM}] ${repo.name}`, value: repoID});
  79. }
  80. else if(repo.SCM.toLowerCase() == engine)
  81. {
  82. if(repoID == pageRepoID || !checkedRepo) checkedRepo = repoID;
  83. repos.push({text: `[${repo.SCM}] ${repo.name}`, value: repoID});
  84. }
  85. }
  86. const picker = $('[name=repo]').zui('picker');
  87. picker.render({items: repos});
  88. picker.$.setValue(checkedRepo);
  89. if(engine == 'jenkins')
  90. {
  91. $('#jenkinsServerTR').removeClass('hidden');
  92. }
  93. else
  94. {
  95. $('#jenkinsServerTR').addClass('hidden');
  96. }
  97. const items = [];
  98. for(frame in frameList)
  99. {
  100. if(engine == 'jenkins' || frame != 'sonarqube') items.push({'text': frameList[frame], 'value': frame});
  101. }
  102. zui.Picker.query('[name=frame]').render({items: items});
  103. $('[name=frame]').zui('picker').$.setValue('');
  104. }
  105. window.changeRepo = function()
  106. {
  107. const repoID = $('input[name="repo"]').val();
  108. if(!repoID) return;
  109. let link = $.createLink('repo', 'ajaxLoadProducts', 'repoID=' + repoID);
  110. $.get(link, function(data)
  111. {
  112. if(data)
  113. {
  114. $productPicker = $('input[name="product"]').zui('picker');
  115. data = JSON.parse(data);
  116. $productPicker.render({items: data});
  117. $productPicker.$.clear();
  118. if(data[1]) $productPicker.$.setValue(data[1].value);
  119. }
  120. });
  121. /* Add new way get repo type. */
  122. link = $.createLink('job', 'ajaxGetRepoType', 'repoID=' + repoID);
  123. const $trigger = $('[name=triggerType]').zui('picker');
  124. $.getJSON(link, function(data)
  125. {
  126. if(data.result == 'success')
  127. {
  128. const triggerOptions = [];
  129. for(code in triggerList)
  130. {
  131. if(code == 'tag' && !data.triggerByTag) continue;
  132. triggerOptions.push({text: triggerList[code], value: code})
  133. }
  134. $trigger.render({items: triggerOptions});
  135. if($('[name=triggerType]').val() == 'tag') $trigger.$.setValue(triggerOptions[0].value);
  136. if(data.type.indexOf('git') != -1)
  137. {
  138. $('.reference').addClass('gitRepo');
  139. $('#reference option').remove();
  140. $.getJSON($.createLink('job', 'ajaxGetRefList', "repoID=" + repoID), function(response)
  141. {
  142. if(response.result == 'success')
  143. {
  144. const $reference = $('#reference').zui('picker');
  145. $reference.render({items: response.refList});
  146. $reference.$.setValue(response.refList.length > 0 ? response.refList[0].value : '');
  147. }
  148. });
  149. }
  150. else
  151. {
  152. $('.reference').removeClass('gitRepo');
  153. }
  154. for(i in triggerOptions)
  155. {
  156. if(triggerOptions[i].value == 'tag') triggerOptions[i].text = data.type != 'subversion' ? buildTag : dirChange;
  157. }
  158. $trigger.render({items: triggerOptions});
  159. }
  160. });
  161. /* Check exists sonarqube data. */
  162. window.checkSonarquebLink();
  163. }