viewport.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. viewport.js
  3. */
  4. let massStorageSwitchURL = "/api/v1/mass_storage/switch"; //side accept kvm or remote
  5. // CSRF-protected AJAX function
  6. $.cjax = function(payload){
  7. let requireTokenMethod = ["POST", "PUT", "DELETE"];
  8. if (requireTokenMethod.includes(payload.method) || requireTokenMethod.includes(payload.type)){
  9. //csrf token is required
  10. let csrfToken = document.getElementsByTagName("meta")["dezukvm.csrf.token"].getAttribute("content");
  11. payload.headers = {
  12. "dezukvm_csrf_token": csrfToken,
  13. }
  14. }
  15. $.ajax(payload);
  16. }
  17. $(document).ready(function() {
  18. // Check if the user has opted out of seeing the audio tips
  19. if (localStorage.getItem('dontShowAudioTipsAgain') === 'true') {
  20. $('#audioTips').remove();
  21. }
  22. });
  23. /* Mass Storage Switch */
  24. function switchMassStorageToRemote(){
  25. $.cjax({
  26. url: massStorageSwitchURL,
  27. type: 'POST',
  28. data: {
  29. side: 'remote',
  30. uuid: kvmDeviceUUID
  31. },
  32. success: function(response) {
  33. if (response.error) {
  34. alert('Error switching Mass Storage to Remote: ' + response.error);
  35. }
  36. },
  37. error: function(xhr, status, error) {
  38. alert('Error switching Mass Storage to Remote: ' + error);
  39. }
  40. });
  41. }
  42. function switchMassStorageToKvm(){
  43. $.cjax({
  44. url: massStorageSwitchURL,
  45. type: 'POST',
  46. data: {
  47. side: 'kvm',
  48. uuid: kvmDeviceUUID
  49. },
  50. success: function(response) {
  51. if (response.error) {
  52. alert('Error switching Mass Storage to KVM: ' + response.error);
  53. }
  54. },
  55. error: function(xhr, status, error) {
  56. alert('Error switching Mass Storage to KVM: ' + error);
  57. }
  58. });
  59. }
  60. /*
  61. UI elements and events
  62. */
  63. function handleDontShowAudioTipsAgain(){
  64. localStorage.setItem('dontShowAudioTipsAgain', 'true');
  65. $('#audioTips').remove();
  66. }
  67. function toggleFullScreen(){
  68. let elem = document.documentElement;
  69. if (!document.fullscreenElement) {
  70. if (elem.requestFullscreen) {
  71. elem.requestFullscreen();
  72. } else if (elem.mozRequestFullScreen) { // Firefox
  73. elem.mozRequestFullScreen();
  74. } else if (elem.webkitRequestFullscreen) { // Chrome, Safari, Opera
  75. elem.webkitRequestFullscreen();
  76. } else if (elem.msRequestFullscreen) { // IE/Edge
  77. elem.msRequestFullscreen();
  78. }
  79. } else {
  80. if (document.exitFullscreen) {
  81. document.exitFullscreen();
  82. } else if (document.mozCancelFullScreen) {
  83. document.mozCancelFullScreen();
  84. } else if (document.webkitExitFullscreen) {
  85. document.webkitExitFullscreen();
  86. } else if (document.msExitFullscreen) {
  87. document.msExitFullscreen();
  88. }
  89. }
  90. }