More automated
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ export default {
|
|||||||
this.secondsLeft = this.drawTime;
|
this.secondsLeft = this.drawTime;
|
||||||
},
|
},
|
||||||
drawWinner: async function() {
|
drawWinner: async function() {
|
||||||
|
if (window.confirm("Er du sikker på at du vil trekke vinnere?")) {
|
||||||
this.drawingWinner = true;
|
this.drawingWinner = true;
|
||||||
let response = await getVirtualWinner();
|
let response = await getVirtualWinner();
|
||||||
if (response) {
|
if (response) {
|
||||||
@@ -215,6 +216,7 @@ export default {
|
|||||||
this.drawingWinner = false;
|
this.drawingWinner = false;
|
||||||
alert("Noe gikk galt under trekningen..!");
|
alert("Noe gikk galt under trekningen..!");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
countdown: function() {
|
countdown: function() {
|
||||||
this.secondsLeft -= 1;
|
this.secondsLeft -= 1;
|
||||||
@@ -236,20 +238,24 @@ export default {
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
},
|
},
|
||||||
deleteAllWinners: async function() {
|
deleteAllWinners: async function() {
|
||||||
|
if (window.confirm("Er du sikker på at du vil slette vinnere?")) {
|
||||||
let response = await deleteWinners();
|
let response = await deleteWinners();
|
||||||
if (response) {
|
if (response) {
|
||||||
this.getWinners();
|
this.getWinners();
|
||||||
} else {
|
} else {
|
||||||
alert("Klarte ikke hente ut vinnere");
|
alert("Klarte ikke hente ut vinnere");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
deleteAllAttendees: async function() {
|
deleteAllAttendees: async function() {
|
||||||
|
if (window.confirm("Er du sikker på at du vil slette alle deltakere?")) {
|
||||||
let response = await deleteAttendees();
|
let response = await deleteAttendees();
|
||||||
if (response) {
|
if (response) {
|
||||||
this.getAttendees();
|
this.getAttendees();
|
||||||
} else {
|
} else {
|
||||||
alert("Klarte ikke hente ut vinnere");
|
alert("Klarte ikke hente ut vinnere");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getWinners: async function() {
|
getWinners: async function() {
|
||||||
let response = await winnersSecure();
|
let response = await winnersSecure();
|
||||||
|
|||||||
Reference in New Issue
Block a user