diff options
Diffstat (limited to 'src/renderer/gameserver/server.ts')
-rw-r--r-- | src/renderer/gameserver/server.ts | 203 |
1 files changed, 12 insertions, 191 deletions
diff --git a/src/renderer/gameserver/server.ts b/src/renderer/gameserver/server.ts index 654eaac..9bdfccd 100644 --- a/src/renderer/gameserver/server.ts +++ b/src/renderer/gameserver/server.ts @@ -1,10 +1,15 @@ import GameServerProfile from './profile'; import { shell, ipcRenderer } from 'electron'; import { switchPage } from '../customEvents'; -import { News, NewsType } from './news'; +import { NewsType } from './news'; import { makeOnlineCounterList, OnlineListParser } from './onlineCount'; +import { socialLink } from './socialLink'; +import { PageController } from './serverView/controller'; export default class GameServer { + + public pageController:PageController; + constructor( public profile: GameServerProfile, public menuName: string, @@ -17,7 +22,9 @@ export default class GameServer { public socialLinks: socialLink[], public TOSLink: string, public OnlineList: { parser: OnlineListParser, url: string }, - ) { } + ) { + this.pageController = new PageController(this); + } getMenuEntry(): HTMLElement { const sidebarItem = document.createElement('div'); @@ -43,7 +50,7 @@ export default class GameServer { title.addEventListener('click', () => { - switchPage("SERVER", this.name); + switchPage("SERVER", this.name, 'INFO'); }); if (this.profile.address != 'noServer') { let onlineBoxActive: boolean = false; @@ -93,7 +100,7 @@ export default class GameServer { container.appendChild(info); info.addEventListener('click', () => { - switchPage("SERVER", this.name); + switchPage("SERVER", this.name, "INFO"); }); const news = document.createElement('div'); @@ -152,196 +159,10 @@ export default class GameServer { return sidebarItem; } - getPage(type: string): HTMLElement { - const page = document.createElement('div'); - if (typeof (type) === undefined || type == null) { - page.appendChild(this.getInfoPage()); - } else if (type == "SCREENSHOTS") { - page.appendChild(this.getScreenshotsPage()); - } else if (type == "PREF") { - page.appendChild(this.getPreferencesPage()); - } else { - const content = document.createElement('div'); - content.classList.add("unknownServerPage"); - content.innerText = `Unknown page for${this.name}`; - page.appendChild(content); - } - this.updateLoginTextElement(); - return page; - } - - private getInfoPage(): HTMLElement { - const content = document.createElement('div'); - content.classList.add("infoServerPage"); - - const title = document.createElement('div'); - title.classList.add("title"); - title.innerText = this.name; - content.appendChild(title); - - const socialContainer = document.createElement('div'); - socialContainer.classList.add("socialContainer"); - setTimeout(() => { - this.socialLinks.forEach((link) => { - socialContainer.appendChild(link.getHTML()); - }); - }, 5); - content.appendChild(socialContainer); - - const shrtDsrption = document.createElement('div'); - shrtDsrption.classList.add("shortDescription"); - shrtDsrption.innerText = this.shortDescription; - content.appendChild(shrtDsrption); - if (this.newsLatestPage && this.newsLatestPage != null) { - const latestNews = document.createElement('div'); - latestNews.classList.add("news"); - content.appendChild(latestNews); - News.get(this.newsLatestPage.url, this.newsLatestPage.type).then((result: string) => { - latestNews.innerHTML = result; - const aTags = latestNews.getElementsByTagName("a"); - for (var i = 0; i < aTags.length; i++) { - const href = aTags[i].href.toString(); - aTags[i].addEventListener('click', () => { - shell.openExternal(href); - }); - aTags[i].href = "#"; - } - }); - } - - return content; - } - - private getPreferencesPage(): HTMLElement { - const content = document.createElement('div'); - content.classList.add("preferencesServerPage"); - - const title = document.createElement('h2'); - title.innerText = `Preferences for ${this.name}`; - content.appendChild(title); - - const loginSection = document.createElement('div'); - loginSection.classList.add("loginSection"); - content.appendChild(loginSection); - - const loginUsernameLabel = document.createElement('label'); - loginUsernameLabel.innerText = "Username"; - const loginUsername = document.createElement('input') as HTMLInputElement; - loginUsername.value = localStorage.getItem("2_username_" + this.profile.address); - loginUsernameLabel.appendChild(loginUsername); - - const loginPinLabel = document.createElement('label'); - loginPinLabel.innerText = "Password"; - const loginPin = document.createElement('input') as HTMLInputElement; - loginPin.type = "password"; - loginPin.value = localStorage.getItem("2_pin_" + this.profile.address); - loginPinLabel.appendChild(loginPin); - - const saveBtn = document.createElement('button') as HTMLButtonElement; - saveBtn.innerText = "save"; - - saveBtn.addEventListener('click', () => { - localStorage.setItem("2_username_" + this.profile.address, loginUsername.value); - localStorage.setItem("2_pin_" + this.profile.address, loginPin.value); - this.updateLoginTextElement(); - }); - - - loginSection.appendChild(loginUsernameLabel); - loginSection.appendChild(loginPinLabel); - loginSection.appendChild(saveBtn); - - return content; - } - - private getScreenshotsPage(): HTMLElement { - const screenshotContainer = document.createElement('div'); - screenshotContainer.classList.add("screenshotsContainer"); - screenshotContainer.id = "screenshots"; - - ipcRenderer.send('getScreenshots', this.profile.address); - - return screenshotContainer; - } - - updateLoginTextElement(): void { - const account = localStorage.getItem("2_username_" + this.profile.address); - const pin = localStorage.getItem("2_pin_" + this.profile.address); - const element = document.getElementById('LoginText'); - if (account && pin) { - element.innerHTML = `Logged in as <b>${account}</b>`; - } else { - element.innerHTML = "Automatic login not set up"; - } - } - play() { const args: any = JSON.parse(JSON.stringify(this.profile)); args.username = localStorage.getItem("2_username_" + this.profile.address); args.password = localStorage.getItem("2_pin_" + this.profile.address); ipcRenderer.send('play', args); } -} - -export class socialLink { - constructor( - public icon: string,// has to be one from font awesome -https://fontawesome.com/icons - public tooltip: string, - public url: string - ) { } - - getHTML(): HTMLElement { - //<button onclick="sv.openSocialLink(this)" socialLink="abc"><i class="fa fa-user"></i></button><br> - const element = document.createElement('button'); - element.onclick = () => { this.open() }; - element.innerHTML = `<i class="${this.icon}"></i>`; - element.title = this.tooltip; - return element; - } - - open() { - console.log("A link was clicked!", this.url); - if (this.url) - shell.openExternal(this.url.indexOf("://") !== -1 ? this.url : `https://${this.url}`); - } -} - -ipcRenderer.on('getScreenshots', (event: any, data: { dir: string, screenshots: string[] }) => { - console.log(data) - const screenshots = document.getElementById('screenshots'); - if (screenshots) { - // Display screenshots if that tab is open - if (data.screenshots.length !== 0) { - data.screenshots.forEach((fileName: string) => { - const screenshot = document.createElement("div"); - screenshot.classList.add("screenshot"); - screenshots.appendChild(screenshot); - const img = document.createElement("img"); - img.src = data.dir + fileName; - screenshot.appendChild(img); - - // const text = document.createElement("span"); - // text.innerText = fileName; - // screenshot.appendChild(text); - screenshot.addEventListener('dragstart', (event) => { - event.preventDefault() - ipcRenderer.send('dragFileOut', data.dir + fileName) - }) - - }); - } else { - const nothingHere = document.createElement("p"); - nothingHere.classList.add("nothingHere"); - nothingHere.innerText = "There is nothing here, yet. Make some screenshots in Game and come back here. The default key for snaping screenshots is 'P'." - - screenshots.appendChild(nothingHere); - } - - const openFolderButton = document.createElement('button'); - openFolderButton.innerText = "Open folder to see all"; - openFolderButton.addEventListener('click', () => { - shell.openItem(data.dir); - }); - screenshots.appendChild(openFolderButton); - } -}) +}
\ No newline at end of file |