createapplication.ui.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. function onChangeType(event)
  2. {
  3. const type = $(event.target).val();
  4. if(type == 'external')
  5. {
  6. $('.externalPanel').removeClass('hidden');
  7. $('.storePanel').addClass('hidden');
  8. $('#type_external').prop('checked', true);
  9. }
  10. else
  11. {
  12. $('.storePanel').removeClass('hidden');
  13. $('.externalPanel').addClass('hidden');
  14. $('#type_store').prop('checked', true);
  15. }
  16. }
  17. window.onChangeAppType = function(event)
  18. {
  19. const appType = $(event.target).val();
  20. if(appType == 'jenkins' || appType == 'sonarqube' || appType == 'nexus')
  21. {
  22. $('div.jenkins').removeClass('hidden');
  23. if(appType == 'jenkins')
  24. {
  25. $('div.token').removeClass('hidden');
  26. $('div.password .form-label').removeClass('required');
  27. }
  28. else
  29. {
  30. $('div.token').addClass('hidden');
  31. $('div.password .form-label').addClass('required');
  32. }
  33. }
  34. else
  35. {
  36. $('div.jenkins').addClass('hidden');
  37. $('div.token').removeClass('hidden');
  38. }
  39. $('#url').attr('placeholder', '');
  40. $('#token').attr('placeholder', '');
  41. $('#account').attr('placeholder', '');
  42. $('#password').attr('placeholder', '');
  43. switch(appType)
  44. {
  45. case 'gitlab':
  46. $('#createAppForm').attr('action', $.createLink('gitlab', 'create'));
  47. $('#url').attr('placeholder', gitlabUrlTips);
  48. $('#token').attr('placeholder', gitlabTokenTips);
  49. break;
  50. case 'gitea':
  51. $('#createAppForm').attr('action', $.createLink('gitea', 'create'));
  52. break;
  53. case 'gogs':
  54. $('#createAppForm').attr('action', $.createLink('gogs', 'create'));
  55. break;
  56. case 'jenkins':
  57. $('#createAppForm').attr('action', $.createLink('jenkins', 'create'));
  58. $('#token').attr('placeholder', jenkinsTokenTips);
  59. $('#password').attr('placeholder', jenkinsPasswordTips);
  60. break;
  61. case 'sonarqube':
  62. $('#createAppForm').attr('action', $.createLink('sonarqube', 'create'));
  63. $('#url').attr('placeholder', sonarqubeUrlTips);
  64. $('#account').attr('placeholder', sonarqubeAccountTips);
  65. break;
  66. case 'nexus':
  67. $('#createAppForm').attr('action', $.createLink('instance', 'createExternalApp', 'type=nexus'));
  68. break;
  69. }
  70. }
  71. window.onChangeStoreAppType = function(event)
  72. {
  73. let storeApp = appID;
  74. if(!storeApp)
  75. {
  76. if(typeof(event) == 'undefined')
  77. {
  78. storeApp = defaultApp;
  79. }
  80. else
  81. {
  82. storeApp = $('[name=storeAppType]').val();
  83. }
  84. }
  85. $('#createStoreAppForm').data('appid', storeApp);
  86. $('#createStoreAppForm').attr('action', $.createLink('instance', 'install', 'appID=' + storeApp));
  87. if(externalApps.indexOf(apps[storeApp]) !== -1)
  88. {
  89. $('#createStoreAppForm input[name=type][value=external]').prop('disabled', false);
  90. }
  91. else
  92. {
  93. $('#createStoreAppForm input[name=type][value=external]').prop('disabled', true);
  94. }
  95. toggleLoading('#app_version', true);
  96. toggleLoading('#dbService', true);
  97. if(storeApp)
  98. {
  99. $.getJSON($.createLink('space', 'getStoreAppInfo', 'appID=' + storeApp), function(app)
  100. {
  101. $('#app_version').val(app.app_version);
  102. if(showVersion === true)
  103. {
  104. $('#version').picker({items: app.versionList, name: 'version', required: true});
  105. setTimeout(() =>
  106. {
  107. $('#version').picker('setValue', app.versionList[0].value);
  108. }, 300);
  109. }
  110. else
  111. {
  112. $('#version').val(app.version);
  113. }
  114. if((app.dependencies.mysql && mysqlList) || (app.dependencies.postgresql && pgList && pgList.length > 0))
  115. {
  116. $('div.dbType').removeClass('hidden');
  117. $('[name=dbService]').prop('disabled', false);
  118. const dbServiceItems = [];
  119. const dbService = (app.dependencies.mysql && mysqlList) ? mysqlList : pgList;
  120. for(i in dbService)
  121. {
  122. dbServiceItems.push({'text': dbService[i].alias, 'value': dbService[i].name});
  123. }
  124. $('#dbService').zui('picker').render({items: dbServiceItems});
  125. }
  126. else
  127. {
  128. $('div.dbType').addClass('hidden');
  129. $('[name=dbService]').prop('disabled', true);
  130. }
  131. toggleLoading('#app_version', false);
  132. toggleLoading('#dbService', false);
  133. });
  134. }
  135. }
  136. function onChangeDbType(event)
  137. {
  138. const dbType = $(event.target).val();
  139. if(dbType == 'sharedDB')
  140. {
  141. $('div.dbService').removeClass('hidden');
  142. $('[name=dbService]').prop('disabled', false);
  143. }
  144. else
  145. {
  146. $('div.dbService').addClass('hidden');
  147. $('[name=dbService]').prop('disabled', true);
  148. }
  149. }
  150. window.alertResource = function()
  151. {
  152. zui.Modal.confirm({'message': resourceAlert}).then((res) =>
  153. {
  154. if(res)
  155. {
  156. var appID = $('#createStoreAppForm').data('appid');
  157. $('#createStoreAppForm').attr('action', $.createLink('instance', 'install', 'appID=' + appID + '&checkResource=false'));
  158. $('#createStoreAppForm .form-row .toolbar button[type=submit]').trigger('click');
  159. }
  160. });
  161. }
  162. $(function()
  163. {
  164. onChangeStoreAppType();
  165. $('div.dbService .form-label').removeClass('required');
  166. });