pgupgrade.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. function doAsyncRequest (mod, func, handler) {
  2. 'use strict';
  3. var oReq = new XMLHttpRequest();
  4. oReq.addEventListener("load", handler);
  5. oReq.open("GET", `api.cgi?module=${mod}&function=${func}`);
  6. oReq.send();
  7. return false;
  8. }
  9. function versionHandler () {
  10. 'use strict';
  11. let obj = JSON.parse(this.responseText);
  12. if(obj.result === 1) {
  13. // Construct version warning/display
  14. let pgVersion = obj.data.installed_version.major + '.' + obj.data.installed_version.minor;
  15. let elem = document.getElementById('psqlVersion');
  16. let html = `<strong>${pgVersion}</strong>`;
  17. if( parseFloat(pgVersion) < parseFloat(obj.data.minimum_supported_version) ) {
  18. elem.classList.add('callout', 'callout-danger');
  19. html += " -- You are using a version of PostgreSQL Server that is no longer supported! Immediate upgrade reccomended.";
  20. }
  21. elem.innerHTML = html;
  22. // Now let's build the table
  23. let rows = '';
  24. for ( var version of Object.keys(obj.data.available_versions).sort(function(a,b) { return parseFloat(b) - parseFloat(a) }) ) {
  25. rows +=
  26. `<tr id="pgVersionRow-${version}">
  27. <td>
  28. <input type="radio" name="selectedVersion" value="${version}" onclick="document.getElementById('submit').disabled = false;"></input>
  29. ${version}
  30. </td>
  31. <td><ul>`;
  32. obj.data.available_versions[version].features.forEach(function(feature) {
  33. rows += `<li>${feature}</li>`;
  34. });
  35. rows += `</ul></td>
  36. <td>
  37. ${new Date(obj.data.available_versions[version].release * 1000).toLocaleString(undefined, { year: 'numeric', month: 'long', day: 'numeric' })}
  38. </td>
  39. <td>
  40. ${new Date(obj.data.available_versions[version].EOL * 1000).toLocaleString(undefined, { year: 'numeric', month: 'long', day: 'numeric' })}
  41. </td>
  42. </tr>`;
  43. }
  44. document.getElementById('loadingCell').remove();
  45. document.querySelector('#upgradeForm > table > tbody').innerHTML = rows;
  46. } else {
  47. console.log(obj.error);
  48. }
  49. }
  50. window.doUpgrade = function (form) {
  51. 'use strict';
  52. console.log(form.get('selectedVersion'));
  53. // TODO Replace table with upgrade biewer after doing xhr
  54. return false;
  55. }
  56. // Now kickoff the page load post bits
  57. document.getElementById('submit').disabled = true;
  58. doAsyncRequest ('Postgres', 'get_postgresql_versions', versionHandler);