settings.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /* HEALTHCHECKS.IO JS FILE */
  2. // FUNCTIONS
  3. // EVENTS and LISTENERS
  4. // CHANGE CUSTOMIZE Options
  5. //
  6. $(document).on('click', '#HEALTHCHECKS-settings-button', function() {
  7. ajaxloader(".content-wrap","in");
  8. organizrAPI2('GET','api/v2/plugins/healthchecks/settings').success(function(data) {
  9. var response = data.response;
  10. $('#HEALTHCHECKS-settings-items').html(buildFormGroup(response.data));
  11. var elAddButtonStart = $('#HEALTHCHECKS-settings-page [id*="Services"] .row.start');
  12. var items = $('#HEALTHCHECKS-settings-page [id*="Services"] .row.m-b-40 span');
  13. $(elAddButtonStart).after('<div class="row"><button type="button" class="btn btn-info pull-right m-r-20 addNewHCService" ><i class="fa fa-plus"></i> <span lang="en">Add New Service</span></button><button type="button" class="btn btn-primary pull-right m-r-20 importNewHCService" ><i class="fa fa-database"></i> <span lang="en">Import Services</span></button></div>');
  14. $.each(items, function(key,val) {
  15. var el = $(val);
  16. var text = el.text();
  17. if(text === 'Service Name'){
  18. $(this).after('&nbsp;<div class="pull-right text-danger removeHCService mouse"><i class="fa fa-close text-danger"></i></div>');
  19. }
  20. })
  21. }).fail(function(xhr) {
  22. console.error("Organizr Function: API Connection Failed");
  23. });
  24. ajaxloader();
  25. });
  26. $(document).on('click', '.importNewHCService', function() {
  27. messageSingle('',' Grabbing checks...',activeInfo.settings.notifications.position,'#FFF','info','10000');
  28. var apiUrl = 'api/v2/homepage/healthchecks';
  29. organizrAPI2('GET',apiUrl).success(function(data) {
  30. try {
  31. let response = data.response;
  32. if(response.data !== null){
  33. if(response.data === false){ return ''; }
  34. let checks = (typeof response.data.content.checks !== 'undefined') ? response.data.content.checks : false;
  35. if(checks){
  36. let checksAlreadySetup = $('#HEALTHCHECKS-settings-page').serializeToJSON();
  37. if(typeof checksAlreadySetup['HEALTHCHECKS-all-items'] !== 'undefined'){
  38. checksAlreadySetup = checksAlreadySetup['HEALTHCHECKS-all-items'];
  39. }else{
  40. checksAlreadySetup = null;
  41. }
  42. $.each(checks, function(i,v) {
  43. let alreadySetup = false;
  44. if(typeof v.unique_key !== 'undefined'){
  45. data = 'Please use a Full Access Token';
  46. throw new Error('Read-Only Token Used');
  47. }else{
  48. var uuid = v.ping_url;
  49. uuid = uuid.match(/([0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12})/g);
  50. uuid = uuid[0];
  51. }
  52. if(uuid){
  53. if(checksAlreadySetup){
  54. $.each(checksAlreadySetup, function(index,val) {
  55. if(val.uuid == uuid){
  56. alreadySetup = true;
  57. }
  58. });
  59. }
  60. if(alreadySetup == false){
  61. $('.addNewHCService').click();
  62. let nameElement = $('#HEALTHCHECKS-settings-page [name*="HEALTHCHECKS-all-items"]').eq(-6).attr('name');
  63. let uuidElement = $('#HEALTHCHECKS-settings-page [name*="HEALTHCHECKS-all-items"]').eq(-5).attr('name');
  64. $('#HEALTHCHECKS-settings-page [name*="'+nameElement+'"]').val(v.name);
  65. $('#HEALTHCHECKS-settings-page [name*="'+uuidElement+'"]').val(uuid);
  66. $('#HEALTHCHECKS-settings-page [name*="HEALTHCHECKS-all-items"]').eq(-6).parent().parent().parent().parent().attr('style', 'background: #707cd2; color:white');
  67. }else{
  68. console.log(v.name + ' is ALREADY SETUP');
  69. }
  70. }
  71. });
  72. messageSingle('Import',' Import has completed...',activeInfo.settings.notifications.position,'#FFF','info','10000');
  73. }else{
  74. messageSingle('',' No HealthChecks were setup',activeInfo.settings.notifications.position,'#FFF','error','10000');
  75. }
  76. }
  77. }catch(e) {
  78. organizrCatchError(e,data);
  79. }
  80. }).fail(function(xhr) {
  81. OrganizrApiError(xhr);
  82. });
  83. });
  84. $(document).on('click', '.addNewHCService', function() {
  85. var lastEl = $('#HEALTHCHECKS-settings-page [name*="HEALTHCHECKS-all-items"]').last().attr('name');
  86. var newNum = 0;
  87. if(typeof lastEl !== 'undefined'){
  88. lastEl = Number($('#HEALTHCHECKS-settings-page [name*="HEALTHCHECKS-all-items"]').last().attr('name').replace(/\D/g, ''));
  89. newNum = lastEl + 1;
  90. }
  91. var copyEl = '' +
  92. '<div class="row m-b-40">\n' +
  93. '\t<!-- INPUT BOX Yes Multiple -->\n' +
  94. '\t<div class="col-md-6 p-b-10">\n' +
  95. '\t\t<div class="form-group">\n' +
  96. '\t\t\t<label class="control-label col-md-12"><span lang="en">Service Name</span>&nbsp;<div class="pull-right text-danger removeHCService mouse"><i class="fa fa-close text-danger"></i></div></label>\n' +
  97. '\t\t\t<div class="col-md-12"> <input data-changed="false" lang="en" type="text" class="form-control" value="" name="HEALTHCHECKS-all-items[999999].name" data-type="input" data-label="Service Name" autocomplete="new-password"> </div> <!-- end div -->\n' +
  98. '\t\t</div>\n' +
  99. '\t</div>\n' +
  100. '\t<!--/ INPUT BOX -->\n' +
  101. '\n' +
  102. '\t<!-- INPUT BOX Yes Multiple -->\n' +
  103. '\t<div class="col-md-6 p-b-10">\n' +
  104. '\t\t<div class="form-group">\n' +
  105. '\t\t\t<label class="control-label col-md-12"><span lang="en">UUID</span></label>\n' +
  106. '\t\t\t<div class="col-md-12"> <input data-changed="false" lang="en" type="text" class="form-control" value="" name="HEALTHCHECKS-all-items[999999].uuid" data-type="input" data-label="UUID" autocomplete="new-password"> </div> <!-- end div -->\n' +
  107. '\t\t</div>\n' +
  108. '\t</div>\n' +
  109. '\t<!--/ INPUT BOX -->\n' +
  110. '\n' +
  111. '\t<!-- INPUT BOX Yes Multiple -->\n' +
  112. '\t<div class="col-md-6 p-b-10">\n' +
  113. '\t\t<div class="form-group">\n' +
  114. '\t\t\t<label class="control-label col-md-12"><span lang="en">External URL</span></label>\n' +
  115. '\t\t\t<div class="col-md-12"> <input data-changed="false" lang="en" type="text" class="form-control" value="" name="HEALTHCHECKS-all-items[999999].external" data-type="input" data-label="External URL" autocomplete="new-password"> </div> <!-- end div -->\n' +
  116. '\t\t</div>\n' +
  117. '\t</div>\n' +
  118. '\t<!--/ INPUT BOX -->\n' +
  119. '\n' +
  120. '\t<!-- INPUT BOX Yes Multiple -->\n' +
  121. '\t<div class="col-md-6 p-b-10">\n' +
  122. '\t\t<div class="form-group">\n' +
  123. '\t\t\t<label class="control-label col-md-12"><span lang="en">Internal URL</span></label>\n' +
  124. '\t\t\t<div class="col-md-12"> <input data-changed="false" lang="en" type="text" class="form-control" value="" name="HEALTHCHECKS-all-items[999999].internal" data-type="input" data-label="Internal URL" autocomplete="new-password"> </div> <!-- end div -->\n' +
  125. '\t\t</div>\n' +
  126. '\t</div>\n' +
  127. '\t<!--/ INPUT BOX -->\n' +
  128. '\n' +
  129. '\t<!-- INPUT BOX Yes Multiple -->\n' +
  130. '\t<div class="col-md-6 p-b-10">\n' +
  131. '\t\t<div class="form-group">\n' +
  132. '\t\t\t<label class="control-label col-md-12"><span lang="en">Enabled</span></label>\n' +
  133. '\t\t\t<div class="col-md-12"> <input data-changed="false" type="checkbox" class="js-switch" data-size="small" data-color="#99d683" data-secondary-color="#f96262" name="HEALTHCHECKS-all-items[999999].enabled" value="" checked="" data-type="switch" data-label="Enabled"><input data-changed="false" type="hidden" name="HEALTHCHECKS-all-items[999999].enabled" value=""> </div> <!-- end div -->\n' +
  134. '\t\t</div>\n' +
  135. '\t</div>\n' +
  136. '\t<!--/ INPUT BOX -->\n' +
  137. '</div>'
  138. //smallLabel+'<input data-changed="false" type="checkbox" class="js-switch'+extraClass+'" data-size="small" data-color="#99d683" data-secondary-color="#f96262"'+name+value+tof(item.value,'c')+id+disabled+type+label+attr+' /><input data-changed="false" type="hidden"'+name+'value="false">';
  139. var elAddButtonStart = $('#HEALTHCHECKS-settings-page [id*="Services"] .row.start');
  140. var copiedEl = $(copyEl).clone();
  141. copiedEl.find("input").each(function() {
  142. var currentName = $(this).attr("name");
  143. var newName = currentName.replace('999999', newNum);
  144. $(this).attr("name", newName);
  145. $(this).attr("value", "");
  146. });
  147. $(copiedEl).appendTo(elAddButtonStart);
  148. $(function () {
  149. // Switchery
  150. var elems = Array.prototype.slice.call(document.querySelectorAll('.js-switch'));
  151. $('.js-switch').each(function() {
  152. if ($(this).attr('data-switchery') !== 'true'){
  153. new Switchery($(this)[0], $(this).data());
  154. }
  155. });
  156. });
  157. });
  158. $(document).on('click', '.removeHCService', function() {
  159. $(this).closest('.row').remove();
  160. $('#HEALTHCHECKS-settings-page-save').removeClass('hidden');
  161. });