added resetCache functionality and changed button style in cache items

This commit is contained in:
Timo Volkmann 2019-05-26 23:29:40 +02:00
parent c3c605d298
commit 5ebfb75f45
3 changed files with 165 additions and 41 deletions

View File

@ -1,20 +0,0 @@
<html lang="de">
<head>
<meta charset="UTF-8">
<title>BuGa Lageplan</title>
<script src="/config.js"></script>
<!--get local copy of openlayers javascript file-->
<script src="/scripts/ol.js"></script>
<!--get openlayers support javascript file-->
<script src="/scripts/mapScript.js"></script>
<link rel="stylesheet" href="/stylesheets/map.css">
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body class="fullscreen">
<div id="map" class="map fullscreen"></div>
<script type="text/javascript">
const map = createMapFromPoiSet([{"Name":"Wolfszipfel_Station1","Latitude":49.14709,"Longitude":9.208993,"CategoryID":0},{"Name":"Live Demo Cache_Station1","Latitude":49,"Longitude":9,"CategoryID":0},{"Name":"GeoCaching für alle_Station1","Latitude":49,"Longitude":9,"CategoryID":0},{"Name":"Test Cache_Station1","Latitude":49.1,"Longitude":9.207,"CategoryID":0},{"Name":"GeoCaching für alle_Station2","Latitude":49,"Longitude":9,"CategoryID":1},{"Name":"GeoCaching für alle_Station3","Latitude":49,"Longitude":9,"CategoryID":1},{"Name":"GeoCaching für alle_Station4","Latitude":49,"Longitude":9,"CategoryID":1},{"Name":"GeoCaching für alle_Station5","Latitude":49,"Longitude":9,"CategoryID":1}]);
</script>
</body>
</html>

View File

@ -29,6 +29,7 @@
:key="startedCache.id"
>
<q-expansion-item
group="started"
class=""
expand-separator
icon="location_on"
@ -46,9 +47,31 @@
</q-item>
<q-item class="q-pr-sm reverse">
<q-btn @click="continueCache(startedCache.cache.id)" unelevated color="positive" stack
icon="arrow_forward"
label="Fortfahren" size="sm"/>
<!-- <q-btn @click="continueCache(startedCache.cache.id)" unelevated color="positive"-->
<!-- icon="arrow_forward"-->
<!-- label="Fortfahren" size=""/>-->
<q-btn-dropdown
@click="continueCache(startedCache.cache.id)"
label="Fortfahren"
color="amber"
unelevated
icon="arrow_forward"
split
>
<q-list>
<q-item clickable v-close-popup class="text-grey-14" @click="confirmReset(startedCache.cache.id)" >
<q-item-section>
Cache zurücksetzen
</q-item-section>
<q-item-section avatar>
<q-icon name="delete"/>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-item>
</q-expansion-item>
</q-card>
@ -62,6 +85,7 @@
v-for="finishedCache in startedCaches.filter(cache => cache.cacheAccesDefinition.id === 1)"
:key="finishedCache.id">
<q-expansion-item
group="finished"
class=""
expand-separator
icon="location_on"
@ -82,9 +106,30 @@
</q-item-section>
</q-item>
<q-item class="q-pr-sm reverse q-gutter-x-sm">
<q-btn @click="goToReward(finishedCache.cache.id)" unelevated color="primary" stack
<q-btn @click="goToReward(finishedCache.cache.id)" unelevated color="primary"
icon="arrow_forward"
label="Belohnung ansehen" size="sm"/>
label="Belohnung ansehen" size=""/>
<q-btn-dropdown
@click="goToReward(finishedCache.cache.id)"
label="Belohnung"
color="primary"
unelevated
icon="arrow_forward"
split
>
<q-list>
<q-item clickable v-close-popup class="text-grey-14" @click="confirmReset(startedCache.cache.id)" >
<q-item-section>
Cache zurücksetzen
</q-item-section>
<q-item-section avatar>
<q-icon name="delete"/>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
</q-item>
</q-expansion-item>
</q-card>
@ -121,6 +166,51 @@
this.fetchUserCaches();
},
methods: {
confirmReset(cacheID) {
console.log("confirmReset")
console.log("CacheID: "+cacheID)
this.$q.dialog({
title: 'Zurücksetzen...',
message: 'Möchtest du deinen Fortschritt bei diesem Cache wirklich zurücksetzen? ' +
'Bereits erworbene Punkte werden dir wieder abgezogen. ' +
'Du kannst den Cache danach wieder von vorne beginnen.',
persistent: true,
cancel: true,
}).onOk(() => {
console.log('>>>> OK');
this.resetCache(cacheID)
}).onCancel(() => {
console.log('>>>> Cancel')
}).onDismiss(() => {
})
},
resetCache(cacheID) {
console.log('reset cache: ' + cacheID);
const token = JSON.parse(localStorage.getItem('userToken')).token;
this.$axios.delete('/api/deleteCacheForUser', {params: {cacheID: cacheID , token: token}})
.then((response) => {
this.fetchUserCaches();
}).catch((error) => {
let msg;
let title;
if (error.response) {
title = "Fehler!";
msg = error.response.data;
} else if (error.request) {
title = "Verbindungsfehler!";
msg = "Es konnte keine Verbindung zum Server aufgebaut werden. Versuchen Sie es später noch einmal!"
console.log(error.request);
} else {
title = "Error";
msg = error.message;
console.log('Error', error.message);
}
console.log(error.config);
this.$store.commit('dialog/NEW_MESSAGE_DIALOG', {message: msg, title: title,});
})
},
calculateProgress() {
console.log("calcProgress...")
console.log("this.startedCaches: ")

View File

@ -18,7 +18,7 @@
</div>
<div class="col flex column">
<q-tab-panels v-model="tab" animated swipeable class="col">
<q-tab-panels v-model="tab" animated class="col">
<q-tab-panel name="list" class=" fit">
<q-spinner-oval
@ -31,6 +31,7 @@
<q-list v-if="render">
<q-card class="q-mb-md" v-for="cache in caches" :key="cache.id">
<q-expansion-item
group="cachegroup"
class=""
expand-separator
icon="location_on"
@ -50,21 +51,51 @@
</q-item-section>
</q-item>
<q-item class="q-pr-sm reverse q-gutter-x-sm">
<q-btn v-if="(getCacheAccesDefinition(cache) === -1)" @click="startCache(cache.id)" unelevated
:color="getColorClass(cache)" stack icon="arrow_forward"
label="Starten" size="xs"/>
<q-btn v-if="(getCacheAccesDefinition(cache) === 0)" @click="continueCache(cache.id)" unelevated
:color="getColorClass(cache)" stack icon="arrow_forward"
label="Fortsetzen" size="xs"/>
<q-btn v-if="(getCacheAccesDefinition(cache) === 1)" @click="goToReward(cache.id)" unelevated
:color="getColorClass(cache)" stack icon="arrow_forward"
label="Belohnung" size="xs"/>
<q-btn v-if="hasAdminState" @click="confirmDelete(cache.id)" unelevated color="negative" stack
icon="delete" size="xs"/>
<q-btn v-if="hasAdminState" @click="editCache(cache.id)" unelevated color="primary" stack
icon="edit" size="xs"/>
<q-btn v-if="hasAdminState" @click="generateQrCodes(cache.id)" unelevated color="primary" stack
icon="image" label="QRCodes" size="xs"/>
<q-btn-dropdown
v-if="hasAdminState"
@click="openCache(cache)"
:color="getColorClass(cache)"
:label="getOpenCacheLabel(cache)"
unelevated
icon="arrow_forward"
split
>
<q-list>
<q-item clickable v-close-popup class="text-grey-14" @click="generateQrCodes(cache.id)" >
<q-item-section>
QR-Codes
</q-item-section>
<q-item-section avatar>
<q-icon name="image"/>
</q-item-section>
</q-item>
<q-item clickable v-close-popup class="text-grey-14" @click="editCache(cache.id)" >
<q-item-section>
Bearbeiten
</q-item-section>
<q-item-section avatar>
<q-icon name="edit"/>
</q-item-section>
</q-item>
<q-item clickable v-close-popup class="text-grey-14" @click="confirmDelete(cache.id)" >
<q-item-section>
Löschen
</q-item-section>
<q-item-section avatar>
<q-icon name="delete"/>
</q-item-section>
</q-item>
</q-list>
</q-btn-dropdown>
<div v-if="!hasAdminState">
<q-btn @click="startCache(cache.id)" unelevated
:color="getColorClass(cache)" icon="arrow_forward"
label="Starten" size="" />
</div>
</q-item>
</q-expansion-item>
</q-card>
@ -172,6 +203,29 @@ Vue.use(VueLayers);
return "green"
}
},
getOpenCacheLabel(cache) {
switch (this.getCacheAccesDefinition(cache)) {
case -1:
return "Starten"
case 0:
return "Fortsetzen"
case 1:
return "Belohnung"
}
},
openCache(cache) {
switch (this.getCacheAccesDefinition(cache)) {
case -1:
return this.startCache(cache.id);
case 0:
return this.continueCache(cache.id);
case 1:
return this.goToReward(cache.id);
}
},
getCacheAccesDefinition(cache) {
// console.log("getCacheAccessDefinition")
// console.log(cache.hasOwnProperty('cacheAccesDefinition') ? cache.cacheAccesDefinition : -1)