diff --git a/src/App.svelte b/src/App.svelte index ed3e553..93e79fe 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,13 +1,15 @@ - diff --git a/src/lib/components/Common/Alert.svelte b/src/lib/components/Common/Alert.svelte new file mode 100644 index 0000000..a9b263e --- /dev/null +++ b/src/lib/components/Common/Alert.svelte @@ -0,0 +1,21 @@ + + + + + +
+
+ +
+
+ +
+
+
diff --git a/src/lib/components/Map/Erantmap.svelte b/src/lib/components/Map/Erantmap.svelte index 2b0996d..01d3a4b 100644 --- a/src/lib/components/Map/Erantmap.svelte +++ b/src/lib/components/Map/Erantmap.svelte @@ -3,7 +3,7 @@ import Map from './Map.svelte' import { navigate } from 'svelte-routing' import NavigationBarLayout from '../Layouts/NavigationBarLayout.svelte' - import { createEventDispatcher, onMount } from 'svelte' + import { createEventDispatcher } from 'svelte' import LocationRequest from './LocationRequest.svelte' const dispatch = createEventDispatcher() @@ -12,8 +12,6 @@ export let mapComponent = null export let userLocation = { lat: 0, lng: 0 } - $: console.log(userLocation, center) - let className = '' export { className as class } /*;(() => { diff --git a/src/lib/utils/database/experience.ts b/src/lib/utils/database/experience.ts index beef8bc..72143d6 100644 --- a/src/lib/utils/database/experience.ts +++ b/src/lib/utils/database/experience.ts @@ -94,7 +94,7 @@ const saveAnswerIntoDatabase = async (experienceId: string, checkPointId: string experience: experienceId, attemptCount: 1, }, - [Permission.read(Role.user(user.$id)), Permission.update(Role.user(user.$id))], + [Permission.read(Role.user(user.$id)), Permission.update(Role.user(user.$id)), Permission.delete(Role.user(user.$id))], ) } } else { @@ -148,8 +148,6 @@ export const getUserProgress = async (experienceId: string) => { Query.offset(0), ]) - console.log({ total }) - const allOtherDocuments = ( await Promise.all( new Array(Math.ceil((total - 25) / 25) > 0 ? Math.ceil((total - 25) / 25) : 0) @@ -165,8 +163,6 @@ export const getUserProgress = async (experienceId: string) => { ) ).flatMap((list) => list.documents) - console.log({ allOtherDocuments }) - return [...documents, ...allOtherDocuments] } export const getUserProgressAsStore = (experienceId: string) => { diff --git a/src/routes/game/Components/Layout.svelte b/src/routes/game/Components/Layout.svelte index 53257bb..feeddc1 100644 --- a/src/routes/game/Components/Layout.svelte +++ b/src/routes/game/Components/Layout.svelte @@ -30,7 +30,7 @@
-
+
{#if control === 'not-control' || control === null} {:else if control === 'wrong-secondTime' || control === 'correct'} @@ -46,7 +46,13 @@ {/if}
{#if control === 'not-control' || control === 'correct' || control === 'wrong-secondTime'} - + {:else if control === 'wrong-firstTime' || control === null} +
diff --git a/src/routes/game/Forms/MultiChoiceForm.svelte b/src/routes/game/Forms/MultiChoiceForm.svelte index 1c4e6df..1000232 100644 --- a/src/routes/game/Forms/MultiChoiceForm.svelte +++ b/src/routes/game/Forms/MultiChoiceForm.svelte @@ -7,9 +7,6 @@ export let checkPoint: CheckPoint export let myAnswer - export let clear: false | true = false - $: if (clear) myAnswers = new Array(checkPoint.CPOptions.length).fill(false) - let myAnswers = new Array(checkPoint.CPOptions.length).fill(false) $: myAnswer = checkPoint.CPOptions.filter((item, i) => { if (myAnswers[i] === true) return item diff --git a/src/routes/game/Forms/Renderer.svelte b/src/routes/game/Forms/Renderer.svelte index 997f6b6..adfd0d2 100644 --- a/src/routes/game/Forms/Renderer.svelte +++ b/src/routes/game/Forms/Renderer.svelte @@ -18,6 +18,7 @@ import LayoutImg from '$lib/components/Layouts/LayoutImg.svelte' import { Models } from 'appwrite' import { Writable } from 'svelte/store' + import { Button as FlowbiteButton } from 'flowbite-svelte' const components = { TEXT: TextForm, @@ -32,7 +33,8 @@ export let control: AnswerState = null let view: 'question' | 'map' | 'end' | 'start' | 'start-map' = 'start-map' export let gameData: Experience //data - $: [userProgress, userProgressLoading] = getUserProgressAsStore(gameData.$id) + export let userProgress + //$: [userProgress, userProgressLoading] = getUserProgressAsStore(gameData.$id) let client = { //user data about game @@ -45,15 +47,15 @@ }), } - $: if (client.pos < $userProgress?.length - 1 + 1) { + $: if (client.pos < userProgress?.length - 1 + 1) { // nastaví na continue - client.pos = $userProgress?.length - 1 + 1 - client.points = $userProgress?.map((i) => (i.correct ? 2 : 0))?.reduce((accumulator, currentValue) => accumulator + currentValue) + client.pos = userProgress?.length - 1 + 1 + client.points = userProgress?.map((i) => (i.correct ? 2 : 0))?.reduce((accumulator, currentValue) => accumulator + currentValue) view = 'map' } - $: if (gameData.checkPoints[client.pos].CPType === 'INFO' && !$userProgressLoading) control = 'not-control' + $: if (gameData.checkPoints[client.pos].CPType === 'INFO') control = 'not-control' const nextQuestion = () => { //další otázka @@ -99,14 +101,26 @@ } catch (error) { console.log(error) } + myAnswer = '' answerLoading = false } + + const admins = [ + '641b2cd262519fdd33ec', + '643bfde664ea0c643112', + '643bfdd8c64e75d0b8ea', + '6427218926d6ab7f8e52', + '641d5642c8fa96066cf2', + '641b42847ac86f9a306c', + '63daafd3355edb14483d', + ] - - - {#if view === 'map' || view === 'start-map'} + {#if admins.includes($user.$id)} + (view = view === 'start-map' ? 'start' : 'question')}>disappear map + {/if} + (view = view === 'start-map' ? 'start' : 'question')} {lat} {lng} {userLocation} /> diff --git a/src/routes/game/experience.svelte b/src/routes/game/experience.svelte index 5c9fec1..0986473 100644 --- a/src/routes/game/experience.svelte +++ b/src/routes/game/experience.svelte @@ -6,34 +6,56 @@ import IconStar from '../../lib/svg/Star.svelte' import IconPoint from '../../lib/svg/Point.svelte' import Loading from '../../lib/components/Common/Loading.svelte' - import { data } from '../../lib/stores/stores' - import GeolocateControl from '@beyonk/svelte-mapbox/src/lib/map/controls/GeolocateControl.svelte' import Map from '../../lib/components/Map/Map.svelte' import Renderer from './Forms/Renderer.svelte' import Marker from '../../lib/components/Map/Marker.svelte' - import { onMount } from 'svelte' - import { getExperienceIdByUrl, getExperienceIdByUrlAsStore, getUserProgress, getUserProgressAsStore, load, loadAsStore } from '$lib/utils/database/experience' + import { getExperienceIdByUrlAsStore, getUserProgressAsStore, loadAsStore } from '$lib/utils/database/experience' import { getLocationDataFromLatAndLong } from '$lib/utils/locations' - import { navigate } from '$lib/router' import { Experience } from '$lib/TStypes/experiences' import Progressbar from '$lib/components/erant/Progressbar.svelte' import { writable } from 'svelte/store' + import Alert from '$lib/components/Common/Alert.svelte' + import { Button as FlowbiteButton } from 'flowbite-svelte' + import { databases, user } from '$lib/appwrite' + import { Query } from 'appwrite' export let params: { gameurl: string } let gameData = writable(null) let [id] = getExperienceIdByUrlAsStore(params.gameurl) - $: [userProgress] = $gameData ? getUserProgressAsStore($id) : [] + $: [userProgress, userProgressLoading] = $gameData ? getUserProgressAsStore($id) : [] $: [gameData] = $gameData ? [] : loadAsStore(params.gameurl) - $: if ($gameData) view = 'experience-preview' + $: if ($gameData && !$userProgressLoading) view = 'experience-preview' let view: 'experience-play' | 'experience-loading' | 'experience-preview' = 'experience-loading' - const deleteProgress = () => {} + const deleteProgress = async () => { + const documentsToDelete = $userProgress.map(({ $id }) => databases.deleteDocument('63cef30d6da945dd4250', 'users-answers', $id)) + const res = await Promise.all(documentsToDelete) + deleteProgressAlertVisible = false + $userProgress = [] + } + + let deleteProgressAlertVisible = false +{#if deleteProgressAlertVisible} + + Delete your progress +
+ Are you sure that you want to delete your progress in experience {$gameData?.ExpName} + Experience Id: {$gameData?.$id} + Your current score is: {$userProgress?.length} checkPoints +
+
+ Yes I'm sure + (deleteProgressAlertVisible = false)} outline {color}>No, I missed clicked +
+
+{/if} + {#if view === 'experience-loading'} -

+

Experience is loading...

@@ -88,11 +110,11 @@ {/if} {#if $userProgress.length} - + {/if} {:else if view === 'experience-play'} - + {/if}