More automated

This commit is contained in:
Kasper Rynning-Tønnesen
2020-03-27 10:34:12 +01:00
parent 0dff0c91e1
commit 0c08672dcd
2 changed files with 119 additions and 24 deletions

View File

@@ -79,6 +79,7 @@
</div> </div>
<h3>Vinnere</h3> <h3>Vinnere</h3>
<a class="wine-link" @click="fetchColorsAndWinners()">Refresh data fra virtuelt lotteri</a>
<div class="winner-container" v-if="winners.length > 0"> <div class="winner-container" v-if="winners.length > 0">
<wine v-for="winner in winners" :key="winner" :wine="winner.wine" :inlineSlot="true"> <wine v-for="winner in winners" :key="winner" :wine="winner.wine" :inlineSlot="true">
<div class="winner-element"> <div class="winner-element">
@@ -107,12 +108,26 @@
@click="winner.color = 'yellow'" @click="winner.color = 'yellow'"
></button> ></button>
</div> </div>
<div class="label-div"> <div class="label-div">
<label for="winner-name">Navn vinner</label> <label for="winner-name">Navn vinner</label>
<input id="winner-name" type="text" placeholder="Navn" v-model="winner.name" /> <input id="winner-name" type="text" placeholder="Navn" v-model="winner.name" />
</div> </div>
</div> </div>
<div class="label-div">
<label for="potential-winner-name">Virtuelle vinnere</label>
<select
id="potential-winner-name"
type="text"
placeholder="Navn"
v-model="winner.potentialWinner"
@change="potentialChange($event, winner)"
>
<option
v-for="fetchedWinner in fetchedWinners"
:value="stringify(fetchedWinner)"
>{{fetchedWinner.name}}</option>
</select>
</div>
</wine> </wine>
<div class="button-container"> <div class="button-container">
@@ -126,7 +141,14 @@
</template> </template>
<script> <script>
import { prelottery, log, logWines, wineSchema } from "@/api"; import {
prelottery,
log,
logWines,
wineSchema,
winnersSecure,
attendees
} from "@/api";
import TextToast from "@/ui/TextToast"; import TextToast from "@/ui/TextToast";
import Wine from "@/ui/Wine"; import Wine from "@/ui/Wine";
import ScanToVinmonopolet from "@/ui/ScanToVinmonopolet"; import ScanToVinmonopolet from "@/ui/ScanToVinmonopolet";
@@ -137,6 +159,7 @@ export default {
return { return {
payed: undefined, payed: undefined,
winners: [], winners: [],
fetchedWinners: [],
wines: [], wines: [],
pushMessage: "", pushMessage: "",
pushLink: "/", pushLink: "/",
@@ -161,7 +184,59 @@ export default {
beforeDestroy() { beforeDestroy() {
this.setWinnerdataToStorage(); this.setWinnerdataToStorage();
}, },
mounted() {
this.fetchColorsAndWinners();
},
methods: { methods: {
stringify(json) {
return JSON.stringify(json);
},
potentialChange(event, winner) {
let data = JSON.parse(event.target.value);
winner.name = data.name;
winner.color = data.color;
},
async fetchColorsAndWinners() {
let winners = await winnersSecure();
let _attendees = await attendees();
let colors = {
red: 0,
blue: 0,
green: 0,
yellow: 0
};
this.payed = 0;
for (let i = 0; i < _attendees.length; i++) {
let attendee = _attendees[i];
colors.red += attendee.red;
colors.blue += attendee.blue;
colors.green += attendee.green;
colors.yellow += attendee.yellow;
this.payed +=
(attendee.red + attendee.blue + attendee.green + attendee.yellow) *
10;
}
for (let i = 0; i < this.lotteryColors.length; i++) {
let currentColor = this.lotteryColors[i];
switch (currentColor.css) {
case "red":
currentColor.value = colors.red;
break;
case "blue":
currentColor.value = colors.blue;
break;
a;
case "green":
currentColor.value = colors.green;
break;
case "yellow":
currentColor.value = colors.yellow;
break;
}
}
this.fetchedWinners = winners;
},
amIBeingEdited(wine) { amIBeingEdited(wine) {
return this.editWine.id == wine.id && this.editWine.name == wine.name; return this.editWine.id == wine.id && this.editWine.name == wine.name;
}, },
@@ -173,6 +248,7 @@ export default {
this.winners.push({ this.winners.push({
name: "", name: "",
color: "", color: "",
potentialWinner: "",
wine: { wine: {
name: wine.name, name: wine.name,
vivinoLink: wine.vivinoLink, vivinoLink: wine.vivinoLink,
@@ -341,7 +417,6 @@ export default {
} }
}, },
setWinnerdataToStorage() { setWinnerdataToStorage() {
console.log("saving localstorage");
localStorage.setItem("winners", JSON.stringify(this.winners)); localStorage.setItem("winners", JSON.stringify(this.winners));
localStorage.setItem( localStorage.setItem(
"colorValues", "colorValues",
@@ -362,7 +437,13 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "../styles/global.scss"; @import "../styles/global.scss";
@import "../styles/media-queries.scss"; @import "../styles/media-queries.scss";
select {
margin: 0 0 auto;
height: 2rem;
min-width: 0;
width: 98%;
padding: 1%;
}
h1 { h1 {
width: 100%; width: 100%;
text-align: center; text-align: center;
@@ -376,6 +457,14 @@ h2 {
font-family: knowit, Arial; font-family: knowit, Arial;
} }
.wine-link {
color: #333333;
text-decoration: none;
font-weight: bold;
cursor: pointer;
border-bottom: 1px solid #ff5fff;
}
hr { hr {
width: 90%; width: 90%;
margin: 2rem auto; margin: 2rem auto;

View File

@@ -201,19 +201,21 @@ export default {
this.secondsLeft = this.drawTime; this.secondsLeft = this.drawTime;
}, },
drawWinner: async function() { drawWinner: async function() {
this.drawingWinner = true; if (window.confirm("Er du sikker på at du vil trekke vinnere?")) {
let response = await getVirtualWinner(); this.drawingWinner = true;
if (response) { let response = await getVirtualWinner();
if (this.currentWinners < this.numberOfWinners) { if (response) {
this.countdown(); if (this.currentWinners < this.numberOfWinners) {
this.countdown();
} else {
this.drawingWinner = false;
}
this.getWinners();
this.getAttendees();
} else { } else {
this.drawingWinner = false; this.drawingWinner = false;
alert("Noe gikk galt under trekningen..!");
} }
this.getWinners();
this.getAttendees();
} else {
this.drawingWinner = false;
alert("Noe gikk galt under trekningen..!");
} }
}, },
countdown: function() { countdown: function() {
@@ -236,19 +238,23 @@ export default {
}, 1000); }, 1000);
}, },
deleteAllWinners: async function() { deleteAllWinners: async function() {
let response = await deleteWinners(); if (window.confirm("Er du sikker på at du vil slette vinnere?")) {
if (response) { let response = await deleteWinners();
this.getWinners(); if (response) {
} else { this.getWinners();
alert("Klarte ikke hente ut vinnere"); } else {
alert("Klarte ikke hente ut vinnere");
}
} }
}, },
deleteAllAttendees: async function() { deleteAllAttendees: async function() {
let response = await deleteAttendees(); if (window.confirm("Er du sikker på at du vil slette alle deltakere?")) {
if (response) { let response = await deleteAttendees();
this.getAttendees(); if (response) {
} else { this.getAttendees();
alert("Klarte ikke hente ut vinnere"); } else {
alert("Klarte ikke hente ut vinnere");
}
} }
}, },
getWinners: async function() { getWinners: async function() {