/** * Script for overlay.ejs */ /* Overlay Wrapper Functions */ /** * Toggle the visibility of the overlay. * * @param {boolean} toggleState True to display, false to hide. * @param {boolean} dismissable Optional. True to show the dismiss option, otherwise false. * @param {string} content Optional. The content div to be shown. */ function toggleOverlay(toggleState, dismissable = false, content = 'overlayContent'){ if(toggleState == null){ toggleState = !document.getElementById('main').hasAttribute('overlay') } if(typeof dismissable === 'string'){ content = dismissable } if(toggleState){ document.getElementById('main').setAttribute('overlay', true) // Make things untabbable. $("#main *").attr('tabindex', '-1') $('#' + content).parent().children().hide() $('#' + content).show() if(dismissable){ $('#overlayDismiss').show() } else { $('#overlayDismiss').hide() } $('#overlayContainer').fadeIn(250) } else { document.getElementById('main').removeAttribute('overlay') // Make things tabbable. $("#main *").removeAttr('tabindex') $('#overlayContainer').fadeOut(250, () => { $('#' + content).parent().children().hide() $('#' + content).show() if(dismissable){ $('#overlayDismiss').show() } else { $('#overlayDismiss').hide() } }) } } function toggleServerSelection(toggleState){ prepareServerSelectionList() toggleOverlay(toggleState, 'serverSelectContent') } /** * Set the content of the overlay. * * @param {string} title Overlay title text. * @param {string} description Overlay description text. * @param {string} acknowledge Acknowledge button text. * @param {string} dismiss Dismiss button text. */ function setOverlayContent(title, description, acknowledge, dismiss = 'Dismiss'){ document.getElementById('overlayTitle').innerHTML = title document.getElementById('overlayDesc').innerHTML = description document.getElementById('overlayAcknowledge').innerHTML = acknowledge document.getElementById('overlayDismiss').innerHTML = dismiss } /** * Set the onclick handler of the overlay acknowledge button. * If the handler is null, a default handler will be added. * * @param {function} handler */ function setOverlayHandler(handler){ if(handler == null){ document.getElementById('overlayAcknowledge').onclick = () => { toggleOverlay(false) } } else { document.getElementById('overlayAcknowledge').onclick = handler } } /** * Set the onclick handler of the overlay dismiss button. * If the handler is null, a default handler will be added. * * @param {function} handler */ function setDismissHandler(handler){ if(handler == null){ document.getElementById('overlayDismiss').onclick = () => { toggleOverlay(false) } } else { document.getElementById('overlayDismiss').onclick = handler } } /* Server Select View */ document.addEventListener('keydown', (e) => { if(document.getElementById('serverSelectContent').style.display !== 'none'){ console.debug('ServSelLi Keydown Called:', document.getElementById('serverSelectContent').style.display) if(e.key === 'Escape'){ document.getElementById('serverSelectCancel').click() } else if(e.key === 'Enter'){ document.getElementById('serverSelectConfirm').click() } } }) document.getElementById('serverSelectActions').onsubmit = () => { return false } document.getElementById('serverSelectConfirm').addEventListener('click', () => { const listings = document.getElementsByClassName('serverListing') for(let i=0; i 0){ ConfigManager.setSelectedServer(listings[0].getAttribute('servid')) updateSelectedServer() toggleOverlay(false) } }) // Bind server select cancel button. document.getElementById('serverSelectCancel').addEventListener('click', () => { toggleOverlay(false) }) function setServerListingHandlers(){ const listings = Array.from(document.getElementsByClassName('serverListing')) listings.map((val) => { val.onclick = e => { if(val.hasAttribute('selected')){ return } const cListings = document.getElementsByClassName('serverListing') for(let i=0; i
${servers[i].name} ${servers[i].description}
${servers[i].mc_version}
${servers[i].revision}
${servers[i].default_selected ? `
Main Server
` : ``}
` } document.getElementById('serverSelectListScrollable').innerHTML = htmlString } function prepareServerSelectionList(){ populateServerListings() setServerListingHandlers() }