overlay.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /**
  2. * Script for overlay.ejs
  3. */
  4. /* Overlay Wrapper Functions */
  5. /**
  6. * Toggle the visibility of the overlay.
  7. *
  8. * @param {boolean} toggleState True to display, false to hide.
  9. * @param {boolean} dismissable Optional. True to show the dismiss option, otherwise false.
  10. * @param {string} content Optional. The content div to be shown.
  11. */
  12. function toggleOverlay(toggleState, dismissable = false, content = 'overlayContent'){
  13. if(toggleState == null){
  14. toggleState = !document.getElementById('main').hasAttribute('overlay')
  15. }
  16. if(typeof dismissable === 'string'){
  17. content = dismissable
  18. }
  19. if(toggleState){
  20. document.getElementById('main').setAttribute('overlay', true)
  21. $('#' + content).parent().children().hide()
  22. $('#' + content).show()
  23. if(dismissable){
  24. $('#overlayDismiss').show()
  25. } else {
  26. $('#overlayDismiss').hide()
  27. }
  28. $('#overlayContainer').fadeIn(250)
  29. } else {
  30. document.getElementById('main').removeAttribute('overlay')
  31. $('#overlayContainer').fadeOut(250, () => {
  32. $('#' + content).parent().children().hide()
  33. $('#' + content).show()
  34. if(dismissable){
  35. $('#overlayDismiss').show()
  36. } else {
  37. $('#overlayDismiss').hide()
  38. }
  39. })
  40. }
  41. }
  42. /**
  43. * Set the content of the overlay.
  44. *
  45. * @param {string} title Overlay title text.
  46. * @param {string} description Overlay description text.
  47. * @param {string} acknowledge Acknowledge button text.
  48. * @param {string} dismiss Dismiss button text.
  49. */
  50. function setOverlayContent(title, description, acknowledge, dismiss = 'Dismiss'){
  51. document.getElementById('overlayTitle').innerHTML = title
  52. document.getElementById('overlayDesc').innerHTML = description
  53. document.getElementById('overlayAcknowledge').innerHTML = acknowledge
  54. document.getElementById('overlayDismiss').innerHTML = dismiss
  55. }
  56. /**
  57. * Set the onclick handler of the overlay acknowledge button.
  58. * If the handler is null, a default handler will be added.
  59. *
  60. * @param {function} handler
  61. */
  62. function setOverlayHandler(handler){
  63. if(handler == null){
  64. document.getElementById('overlayAcknowledge').onclick = () => {
  65. toggleOverlay(false)
  66. }
  67. } else {
  68. document.getElementById('overlayAcknowledge').onclick = handler
  69. }
  70. }
  71. /**
  72. * Set the onclick handler of the overlay dismiss button.
  73. * If the handler is null, a default handler will be added.
  74. *
  75. * @param {function} handler
  76. */
  77. function setDismissHandler(handler){
  78. if(handler == null){
  79. document.getElementById('overlayDismiss').onclick = () => {
  80. toggleOverlay(false)
  81. }
  82. } else {
  83. document.getElementById('overlayDismiss').onclick = handler
  84. }
  85. }
  86. /* Server Select View */
  87. document.getElementById('serverSelectConfirm').addEventListener('click', () => {
  88. const listings = document.getElementsByClassName('serverListing')
  89. for(let i=0; i<listings.length; i++){
  90. if(listings[i].hasAttribute('selected')){
  91. const serv = AssetGuard.getServerById(ConfigManager.getGameDirectory(), listings[i].getAttribute('servid'))
  92. ConfigManager.setSelectedServer(serv != null ? serv.id : null)
  93. updateSelectedServer(serv != null ? serv.name : null)
  94. setLaunchEnabled(serv != null)
  95. refreshServerStatus(true)
  96. toggleOverlay(false)
  97. return
  98. }
  99. }
  100. // None are selected? Not possible right? Meh, handle it.
  101. if(listings.length > 0){
  102. ConfigManager.setSelectedServer(listings[0].getAttribute('servid'))
  103. updateSelectedServer()
  104. toggleOverlay(false)
  105. }
  106. })
  107. // Bind server select cancel button.
  108. document.getElementById('serverSelectCancel').addEventListener('click', () => {
  109. toggleOverlay(false)
  110. })
  111. function setServerListingHandlers(){
  112. const listings = Array.from(document.getElementsByClassName('serverListing'))
  113. listings.map((val) => {
  114. val.onclick = e => {
  115. if(val.hasAttribute('selected')){
  116. return
  117. }
  118. const cListings = document.getElementsByClassName('serverListing')
  119. for(let i=0; i<cListings.length; i++){
  120. if(cListings[i].hasAttribute('selected')){
  121. cListings[i].removeAttribute('selected')
  122. }
  123. }
  124. val.setAttribute('selected', '')
  125. document.activeElement.blur()
  126. }
  127. })
  128. }
  129. setServerListingHandlers()