repo: janusweb
action: commit
revision: 
path_from: 
revision_from: 7e0934715a7e4df18dbde3c61fbf6220faff4bec:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit 7e0934715a7e4df18dbde3c61fbf6220faff4bec
Author: James Baicoianu 
Date:   Thu May 24 07:45:36 2018 -0700

    Fixed comment block nesting error

diff --git a/media/assets/webui/apps/comms/comms.js b/media/assets/webui/apps/comms/comms.js
new file mode 100644
index 0000000000000000000000000000000000000000..dbd3cee641a9041397945ad7d2a71aff80058ded
--- /dev/null
+++ b/media/assets/webui/apps/comms/comms.js
@@ -0,0 +1,195 @@
+elation.elements.define('janus-comms-panel', class extends elation.elements.base {
+  create() {
+    this.player = player;
+    this.elements = elation.elements.fromTemplate('janus.comms.panel', this);
+  }
+});
+elation.elements.define('janus-comms-status', class extends elation.elements.base {
+  init() {
+    super.init();
+    this.defineAttributes({
+      state: { type: 'string', default: 'disconnected' }
+    });
+  }
+  create() {
+    this.player = player;
+    this.room = room;
+    this.server = janus.network.getServerForRoom(room);
+    this.elements = elation.elements.fromTemplate('janus.comms.status', this);
+  }
+});
+elation.elements.define('janus-comms-userlist', class extends elation.elements.ui.list {
+  create() {
+    this.player = player;
+    this.room = room;
+    this.elements = elation.elements.fromTemplate('janus.comms.userlist', this);
+    this.client = this.getClient();
+    this.janusweb = this.client.janusweb;
+    this.userlist_room = this.elements.userlist_room;
+    this.userlist_online = this.elements.userlist_online;
+    this.userlist_friends = this.elements.userlist_friends;
+
+    this.usermarkers = {};
+
+    elation.events.add(this.janusweb, 'room_load_start', (ev) => { this.updateRoom(ev.data); });
+    elation.events.add(this.janusweb.network, 'janusweb_user_joined,janusweb_user_left,janusweb_user_disconnected', (ev) => this.updateUsers());
+    setTimeout(() => {
+      this.updateUsers();
+    }, 100);
+  }
+  getClient() {
+    var node = this;
+    while (node) {
+      if (node.tagName == 'JANUS-UI-MAIN') {
+        return node.client;
+      }
+      node = node.parentNode
+    }
+  }
+  updateRoom(room) {
+    this.room = room;
+    this.innerHTML = '';
+    this.elements = elation.elements.fromTemplate('janus.comms.userlist', this);
+    this.userlist_room = this.userlist_room;
+    this.userlist_online = this.userlist_online;
+    this.userlist_friends = this.userlist_friends;
+    this.updateUsers();
+  }
+  updateUsers() {
+    var remoteplayers = janus.network.remoteplayers;
+    var users = Object.keys(remoteplayers);
+    users.unshift(player.userid);
+
+    this.elements.roomusers.count = users.length;
+    
+    this.userlist_room.setItems(users);
+
+    // TODO - Spawn some 3D object to represent the player's gamertag
+    /*
+    for (var k in remoteplayers) {
+      var p = remoteplayers[k].getProxyObject();
+      if (!this.usermarkers[k]) {
+setTimeout(() => {
+// simple test of a 3d object controlled from the ui
+        this.usermarkers[k] = p.createObject('object', {
+          id: 'cone',
+          col: '#0000ff'
+        });
+}, 100);
+      }
+    }
+    */
+  }
+});
+elation.elements.define('janus-comms-voip', class extends elation.elements.base {
+  init() {
+  }
+  create() {
+    this.elements = elation.elements.fromTemplate('janus.comms.voip', this);
+  }
+});
+elation.elements.define('janus-comms-chat', class extends elation.elements.base {
+  init() {
+    elation.events.add(janus.network, 'janusweb_user_chat', (ev) => this.handleUserChat(ev));
+    elation.events.add(janus.network, 'janusweb_user_joined', (ev) => this.handleUserJoined(ev));
+    elation.events.add(janus.network, 'janusweb_user_left', (ev) => this.handleUserLeft(ev));
+    elation.events.add(janus.network, 'janusweb_user_disconnected', (ev) => this.handleUserDisconnected(ev));
+  }
+  create() {
+    this.elements = elation.elements.fromTemplate('janus.comms.chat', this);
+
+    //this.elements.chatinput.addEventListener('accept', (ev) => this.sendMessage(ev.value));
+    this.elements.chatinput.onaccept = (ev) => {
+      this.sendMessage(this.elements.chatinput.value);
+console.log('dur', this.shouldreturnfocus);
+      if (this.shouldreturnfocus) {
+console.log('go back');
+        player.enable();
+      }
+    }
+    this.elements.chatinput.onfocus = (ev) => {
+      this.elements.chatinput.placeholder = 'Type something!';
+      player.disable();
+    }
+    this.elements.chatinput.onblur = (ev) => this.elements.chatinput.placeholder = 'Press T for text chat';
+
+    window.addEventListener('keydown', (ev) => {
+      // FIXME - this should set up a bindable context in the engine's control system
+      if (ev.keyCode == 84 && document.activeElement !== this.elements.chatinput.inputelement) {
+        this.elements.chatinput.focus();
+        // FIXME - we should only return focus to the player if the player was active when we focused the chat
+        this.shouldreturnfocus = true;
+        player.disable();
+        ev.preventDefault();
+      }
+    });
+    elation.events.add(janus._target, 'clientprint', (ev) => this.handleClientPrint(ev.data));
+  }
+  scrollToBottom() {
+    setTimeout(() => {
+      this.elements.chatlist.scrollTop = this.elements.chatlist.scrollHeight;
+    }, 100);
+  }
+  handleUserJoined(ev) {
+    var data = ev.data;
+    this.elements.chatmessages.add({
+      timestamp: new Date().getTime(),
+      type: 'join',
+      userId: data.id,
+      message: 'has joined the room'
+    });
+    this.scrollToBottom();
+  }
+  handleUserLeft(ev) {
+    var data = ev.data;
+    this.elements.chatmessages.add({
+      timestamp: new Date().getTime(),
+      type: 'part',
+      userId: data.id,
+      message: 'has left the room'
+    });
+    this.scrollToBottom();
+  }
+  handleUserDisconnected(ev) {
+    var data = ev.data;
+    this.elements.chatmessages.add({
+      timestamp: new Date().getTime(),
+      type: 'disconnect',
+      userId: data.id,
+      message: 'has disconnected'
+    });
+    this.scrollToBottom();
+  }
+  handleUserChat(ev) {
+    var data = ev.data;
+    this.elements.chatmessages.add({
+      timestamp: new Date().getTime(),
+      type: 'chat',
+      userId: data.userId,
+      message: data.message.data
+    });
+    this.scrollToBottom();
+  }
+  sendMessage(msg) {
+    if (msg && msg.length > 0) {
+      janus.network.send({'method': 'chat', data: msg});
+      this.elements.chatmessages.add({
+        timestamp: new Date().getTime(),
+        type: 'selfchat',
+        userId: player.userid,
+        message: msg
+      });
+      this.elements.chatinput.value = '';
+      this.scrollToBottom();
+    }
+  }
+  handleClientPrint(msg) {
+    this.elements.chatmessages.add({
+      timestamp: new Date().getTime(),
+      type: 'print',
+      userId: 'room',
+      message: msg[0]
+    });
+    this.scrollToBottom();
+  }
+});

-----END OF PAGE-----