summaryrefslogtreecommitdiff
path: root/WebInterface/NodeJSServer/src/modules
diff options
context:
space:
mode:
authorTrueKuehli <rctcoaster2000@hotmail.de>2018-09-29 21:51:02 +0200
committerTrueKuehli <rctcoaster2000@hotmail.de>2018-09-29 21:51:02 +0200
commitabd51697be6ca4580c15929ccb2569a1e984ef88 (patch)
tree690628078e50115b33c88a54c7f2d32ba43ac9ed /WebInterface/NodeJSServer/src/modules
parent68f153b254de6cc385a9c6ffebcde82e98a6adcc (diff)
Did some code splitting and added Server Listing
Split code into different modules Added method to fetch server list from remote server, and to populate this into the server list of the UI
Diffstat (limited to 'WebInterface/NodeJSServer/src/modules')
-rw-r--r--WebInterface/NodeJSServer/src/modules/server-client.js67
-rw-r--r--WebInterface/NodeJSServer/src/modules/ui/server-listing.js42
2 files changed, 109 insertions, 0 deletions
diff --git a/WebInterface/NodeJSServer/src/modules/server-client.js b/WebInterface/NodeJSServer/src/modules/server-client.js
new file mode 100644
index 0000000..8cf28f6
--- /dev/null
+++ b/WebInterface/NodeJSServer/src/modules/server-client.js
@@ -0,0 +1,67 @@
+import * as signalR from '@aspnet/signalr';
+import ServerListing from './ui/server-listing.js';
+
+export default class ServerClient {
+ constructor(url, serverListingId, debug = false) {
+ const connectionBuilder = new signalR.HubConnectionBuilder()
+ .withUrl(url)
+
+ if (debug) {
+ connectionBuilder.configureLogging(signalR.LogLevel.Debug);
+ } else {
+ connectionBuilder.configureLogging(signalR.LogLevel.Error);
+ }
+
+ this.connection = connectionBuilder.build();
+ this.connection.start()
+ .then(() => this.loadServers())
+ .catch(() => err => console.error(err.toString()));
+
+ this.refreshing = false;
+
+ this.serverListing = new ServerListing(serverListingId);
+ }
+
+ loadServers() {
+ if (this.refreshing) return;
+ this.connection.on('ListGroups', (groups) => {
+ console.log(groups)
+ this.serverListing.flushElements();
+ this.serverListing.addElements(groups);
+ this.connection.off('ListGroups');
+
+ this.refreshing = false;
+ });
+
+ this.connection.invoke('GetGroups')
+ .catch(err => {
+ this.refreshing = false;
+ console.error(err.toString())
+ });
+ this.refreshing = true;
+ }
+
+ createServer(){
+
+ }
+
+ messageHandling(){
+ this.connection.on('ReceiveMessage', (user, message) => {
+ let msg = message.replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;");
+ let encodedMsg = user + " sagt: " + msg;
+ });
+ }
+}
+
+
+
+// connection.on('ReceiveMessage', (user, message) => {
+// let msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+// let encodedMsg = user + " says " + msg;
+// let li = document.createElement("div");
+// li.classList.add('server');
+// li.textContent = encodedMsg;
+// document.getElementById('server-list').appendChild(li);
+// });
diff --git a/WebInterface/NodeJSServer/src/modules/ui/server-listing.js b/WebInterface/NodeJSServer/src/modules/ui/server-listing.js
new file mode 100644
index 0000000..be66573
--- /dev/null
+++ b/WebInterface/NodeJSServer/src/modules/ui/server-listing.js
@@ -0,0 +1,42 @@
+export default class ServerListing {
+ constructor(serverListId) {
+ this.serverListing = document.getElementById(serverListId);
+ }
+
+ flushElements() {
+ this.serverListing.innerHTML = '';
+ }
+
+ addElements(array) {
+ for (let server of array) {
+ const name = server['name'];
+ const playerList = server['users'];
+ const playerAmount = playerList.length;
+
+ let serverDiv = document.createElement('div');
+ let nameSpan = document.createElement('span');
+ let onlineDot = document.createElement('div');
+ let playerCountSpan = document.createElement('span');
+ let playerCountStaticSpan = document.createElement('span');
+ let joinButton = document.createElement('button');
+ serverDiv.className = 'server';
+ nameSpan.className = 'server-name';
+ onlineDot.className = 'player-count-dot';
+ playerCountSpan.className = 'player-count';
+ playerCountStaticSpan.className = 'player-count-static';
+ joinButton.className = 'btn join-btn';
+ joinButton.id = 'join';
+ nameSpan.textContent = name;
+ playerCountSpan.textContent = playerAmount;
+ playerCountStaticSpan.textContent = 'Spieler online';
+ joinButton.textContent = 'Beitreten';
+
+ serverDiv.appendChild(nameSpan);
+ serverDiv.appendChild(onlineDot);
+ serverDiv.appendChild(playerCountSpan);
+ serverDiv.appendChild(playerCountStaticSpan);
+ serverDiv.appendChild(joinButton);
+ this.serverListing.appendChild(serverDiv);
+ }
+ }
+}