|
73 | 73 | <div class="card"> |
74 | 74 |
|
75 | 75 | <div class="card-body"> |
| 76 | + <h5 id="roomCardTitle" class="card-title" style="display: none;">💬 Room</h5> |
76 | 77 | <ul id="messages" class="list-group"> |
77 | | - </ul> |
| 78 | + </ul><span class="badge badge-light">4</span> |
78 | 79 | </div> |
79 | 80 | </div> |
80 | 81 |
|
|
86 | 87 | instance.value = window.location.host; |
87 | 88 | const ssl = document.getElementById("ssl"); |
88 | 89 | ssl.checked = window.location.protocol.startsWith("https"); |
| 90 | + const room = document.getElementById("roomId"); |
| 91 | + const roomCardTitle = document.getElementById("roomCardTitle"); |
89 | 92 |
|
90 | 93 | function displayMessage(msg) { |
91 | 94 | const messages = document.getElementById('messages'); |
|
131 | 134 | document.getElementById("connectButton").innerText = enabled ? "Disconnect" : "Connect"; |
132 | 135 | } |
133 | 136 |
|
| 137 | + function setRoomText(room, nbUsers) { |
| 138 | + roomCardTitle.innerText = `💬 Room ${room} (${nbUsers})`; |
| 139 | + roomCardTitle.style.display = "inline-block"; |
| 140 | + } |
| 141 | + |
134 | 142 | function onConnectButtonClick(event) { |
135 | 143 | if (connected) { |
136 | 144 | websocket.close(); |
137 | 145 | event.preventDefault(); |
138 | 146 | return; |
139 | 147 | } |
140 | | - const room = document.getElementById("roomId"); |
141 | 148 | if (!room.value) { |
142 | 149 | alert("Room must be set"); |
143 | 150 | return; |
|
150 | 157 | displayMessage(`Connected to websocket in room ${room.value}`); |
151 | 158 | connected = true; |
152 | 159 | setFormEnabled(true); |
| 160 | + setRoomText(room.value, "-"); |
153 | 161 | websocket.send(JSON.stringify({type: "newcomer", newcomer: user})); |
154 | 162 | } |
155 | 163 | websocket.onmessage = (event) => { |
|
167 | 175 | displayMessage(`${data.author} sent an image`); |
168 | 176 | break; |
169 | 177 | case "nb_users": |
170 | | - displayMessage(`${data.nb_users} user(s) present in the room`); |
| 178 | + console.log(`${data.nb_users} user(s) present in the room`); |
| 179 | + setRoomText(room.value, data.nb_users); |
171 | 180 | break; |
172 | 181 | case "newcomer": |
173 | | - displayMessage(`${data.newcomer} has joined the room`); |
| 182 | + console.log(`${data.newcomer} has joined the room`); |
174 | 183 | break; |
175 | 184 | case "exiter": |
176 | | - displayMessage(`${data.exiter} has left the room`); |
| 185 | + console.log(`${data.exiter} has left the room`); |
177 | 186 | break; |
178 | 187 | case "like": |
179 | 188 | displayMessage(`${data.liker_author} liked your message "${data.message}"`); |
|
187 | 196 | case "bbox": |
188 | 197 | displayMessage(`${data.author} shared a bbox using '${data.crs_authid}'`); |
189 | 198 | break; |
| 199 | + case "position": |
| 200 | + displayMessage(`${data.author} shared the ${data.x}-${data.y} position using '${data.crs_authid}'`); |
| 201 | + break; |
190 | 202 | default: |
191 | 203 | displayMessage(`Unknown message received: ${data}`); |
192 | 204 | } |
|
199 | 211 | connected = false; |
200 | 212 | displayMessage("Disconnected from websocket"); |
201 | 213 | setFormEnabled(false); |
| 214 | + roomCardTitle.style.display = "none"; |
202 | 215 | } |
203 | 216 | event.preventDefault(); |
204 | 217 | } |
|
0 commit comments