Skip to content

Commit 9d23d94

Browse files
wip js starting state
1 parent 6adbdde commit 9d23d94

File tree

4 files changed

+39
-4018
lines changed

4 files changed

+39
-4018
lines changed

assets/js/socket.js

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,35 @@
11
import { Socket, Presence } from 'phoenix'
2-
import updateUsers from './users'
3-
42
const socket = new Socket('/socket', {params: {username: window.pointingParty.username}})
53
socket.connect()
64

7-
const channel = socket.channel('room:lobby', {})
8-
const presence = new Presence(channel)
9-
10-
presence.onSync(() => updateUsers(presence))
11-
12-
let driving = false
13-
14-
if (window.pointingParty.username) {
15-
channel.join()
16-
.receive('ok', resp => { console.log('Joined successfully', resp) })
17-
.receive('error', resp => { console.log('Unable to join', resp) })
18-
}
5+
let driving = false;
196

207
const startButton = document.querySelector('.start-button')
218
startButton.addEventListener('click', e => {
229
driving = true;
23-
channel.push('start_pointing', {})
10+
// send 'start_pointing' message to the channel here
2411
})
2512

2613
const nextCardButtons = document.getElementsByClassName('next-card')
2714
for (let i = 0;i < nextCardButtons.length; i++) {
2815
nextCardButtons[i].addEventListener('click', e => {
29-
channel.push('finalized_points', {points: e.target.value})
16+
// send 'finalized_points' message to the channel here
3017
})
3118
}
3219

3320
document
3421
.querySelector('.calculate-points')
3522
.addEventListener('click', event => {
3623
const storyPoints = document.querySelector('.story-points')
37-
channel.push('user_estimated', { points: storyPoints.value })
24+
// send 'user_estimated' to the channel here
3825
})
3926

40-
channel.on('new_card', state => {
27+
// call the relevant function defined below when you receive the following events from the channel:
28+
// 'next_card'
29+
// 'winner'
30+
// 'tie'
31+
32+
function showCard(state) {
4133
document
4234
.querySelector('.start-button')
4335
.style.display = "none"
@@ -59,20 +51,9 @@ channel.on('new_card', state => {
5951
document
6052
.querySelector('.ticket-description')
6153
.innerHTML = state.card.description
62-
})
63-
64-
const renderVotingResults = function(template) {
65-
const pointContainer = document.querySelector('.points-container')
66-
renderTemplate(pointContainer, template)
67-
68-
document
69-
.querySelector('.next-card')
70-
.addEventListener('click', e => {
71-
channel.push('finalized_points', { points: e.target.value })
72-
})
7354
}
7455

75-
channel.on('winner', state => {
56+
function showWinner(state) {
7657
document
7758
.querySelector('.winner')
7859
.style.display = "block"
@@ -88,9 +69,9 @@ channel.on('winner', state => {
8869
document
8970
.querySelector('.next-card')
9071
.disabled = !driving
91-
})
72+
}
9273

93-
channel.on('tie', state => {
74+
function showTie(state) {
9475
document
9576
.querySelector('.tie')
9677
.style.display = "block"
@@ -121,6 +102,6 @@ channel.on('tie', state => {
121102
.querySelector('.tie')
122103
.getElementsByClassName('next-card')[1]
123104
.disabled = !driving
124-
})
105+
}
125106

126107
export default socket

assets/js/users.js

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,49 @@ const updateUsers = presence => {
44
const usersElem = document.querySelector('.users')
55
usersElem.innerHTML = ''
66

7-
const users = presence.list(userData)
7+
const users = presence.list(listBy)
88
forEach(addUser(usersElem))(users)
99

1010
if (allHaveEstimated(users)) {
1111
forEach(showPoints(usersElem))(users)
1212
}
1313
}
1414

15-
const userData = (userId, { metas: [{ points }, ..._rest]}) => ({ userId, points })
15+
const listBy = (username, { metas: [{ points }, ..._rest]}) => ({ username, points })
1616

1717
const showPoints = usersElem => ({userId, points}) => {
1818
const userElem = document.querySelector(`.${userId}.user-estimate`)
1919
userElem.innerHTML = points
2020
}
2121

22-
const addUser = usersElem => ({userId, points}) => {
23-
const userElem = document.createElement('dt')
24-
userElem.appendChild(document.createTextNode(userId))
22+
// const addUser = usersElem => ({userId, points}) => {
23+
// const userElem = document.createElement('dt')
24+
// userElem.appendChild(document.createTextNode(userId))
25+
// userElem.setAttribute('class', 'col-8')
26+
//
27+
// const estimateElem = document.createElement('dd')
28+
// estimateElem.setAttribute('class', `${userId} user-estimate col-4`)
29+
//
30+
// usersElem.appendChild(userElem)
31+
// usersElem.appendChild(estimateElem)
32+
// }
33+
34+
const allHaveEstimated = users => {
35+
const pointsCollection = map(({ points }) => points)(users)
36+
37+
return none(isNil)(pointsCollection)
38+
}
39+
40+
function addUser(user) {
41+
document.createElement('dt')
42+
userElem.appendChild(document.createTextNode(user.username))
2543
userElem.setAttribute('class', 'col-8')
2644

2745
const estimateElem = document.createElement('dd')
28-
estimateElem.setAttribute('class', `${userId} user-estimate col-4`)
46+
estimateElem.setAttribute('class', `${user.username} user-estimate col-4`)
2947

3048
usersElem.appendChild(userElem)
3149
usersElem.appendChild(estimateElem)
3250
}
3351

34-
const allHaveEstimated = users => {
35-
const pointsCollection = map(({ points }) => points)(users)
36-
37-
return none(isNil)(pointsCollection)
38-
}
39-
4052
export default updateUsers

lib/pointing_party_web/channels/room_channel.ex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ defmodule PointingPartyWeb.RoomChannel do
3030

3131
def handle_in("finalized_points", %{"points" => points}, socket) do
3232
updated_socket = save_vote_next_card(points, socket)
33-
# clear_user_points(socket)
3433
broadcast!(updated_socket, "new_card", %{card: current_card(updated_socket)})
3534
{:reply, :ok, updated_socket}
3635
end

priv/static/js/app.js

Lines changed: 1 addition & 3972 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)