Skip to content

Commit b1ccf27

Browse files
committed
[feature] Add an accept button to proposals
1 parent 377001d commit b1ccf27

File tree

2 files changed

+35
-12
lines changed

2 files changed

+35
-12
lines changed

src/components/events/EventProposals.vue

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@
33
<h2>Proposed Game Events</h2>
44
<div class="content">
55
<span v-if="!eventProposalsPresent">None</span>
6-
<div v-if="eventProposalsPresent" v-for="(proposal, index) in eventProposals"
6+
<div class="proposal-item"
7+
v-if="eventProposalsPresent"
8+
v-for="(proposal, index) in eventProposals"
79
:key="index">
8-
<span :class="{'team-blue': byTeam(proposal) === 2, 'team-yellow': byTeam(proposal) === 1}">
9-
{{proposal.gameEvent.type}}
10-
</span>
10+
<span :class="{'team-blue': byTeam(proposal) === 2, 'team-yellow': byTeam(proposal) === 1}">
11+
{{proposal.gameEvent.type}}
12+
</span>
1113
<span>by {{proposal.proposerId}}</span>
1214
(<span v-format-ns-duration="proposalTimeout(proposal.validUntil)"></span>):
1315
<p>
1416
<span v-for="detail in detailsList(proposal)"
1517
:key="detail.key">{{detail.key}}: {{detail.value}}<br/></span>
1618
</p>
19+
<a class="btn-accept"
20+
v-b-tooltip.hover
21+
title="Accept this game event"
22+
@click="accept(proposal.gameEvent)">
23+
<font-awesome-icon icon="check-circle" class="fa-lg"></font-awesome-icon>
24+
</a>
1725
</div>
1826
</div>
1927
</div>
@@ -38,17 +46,14 @@
3846
let key = Object.keys(proposal.gameEvent.details)[0];
3947
return proposal.gameEvent.details[key];
4048
},
41-
detailsStr(proposal) {
42-
let p = this.details(proposal);
43-
delete p.by_team;
44-
return p;
45-
},
4649
detailsList(proposal) {
4750
let list = [];
4851
let details = this.details(proposal);
49-
delete details.by_team;
50-
Object.keys(details).forEach(function (key, i) {
51-
list[i] = {key: key, value: details[key]}
52+
let i = 0;
53+
Object.keys(details).forEach(function (key) {
54+
if (key !== 'by_team') {
55+
list[i++] = {key: key, value: details[key]};
56+
}
5257
});
5358
return list;
5459
},
@@ -68,6 +73,11 @@
6873
}
6974
return remaining * 1e6;
7075
},
76+
accept(gameEvent) {
77+
this.$socket.sendObj({
78+
gameEvent: gameEvent
79+
});
80+
},
7181
}
7282
}
7383
</script>
@@ -78,4 +88,15 @@
7888
overflow-y: auto;
7989
max-height: 15em;
8090
}
91+
92+
.proposal-item {
93+
position: relative;
94+
}
95+
96+
.btn-accept {
97+
position: absolute;
98+
right: 0;
99+
bottom: 0;
100+
margin: 0.3em;
101+
}
81102
</style>

src/main.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {library} from '@fortawesome/fontawesome-svg-core'
1414
import {
1515
faCaretSquareDown,
1616
faCaretSquareUp,
17+
faCheckCircle,
1718
faEdit,
1819
faSignal,
1920
faToggleOff,
@@ -35,6 +36,7 @@ library.add(faCaretSquareUp);
3536
library.add(faToggleOn);
3637
library.add(faToggleOff);
3738
library.add(faSignal);
39+
library.add(faCheckCircle);
3840
Vue.component('font-awesome-icon', FontAwesomeIcon);
3941

4042
let wsAddress;

0 commit comments

Comments
 (0)