Compare commits
No commits in common. "main" and "dev" have entirely different histories.
@ -1,35 +0,0 @@
|
||||
name: Build and Deploy
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Nodejs
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
- run: npm install
|
||||
working-directory: ./frontend
|
||||
- run: npm run build
|
||||
working-directory: ./frontend
|
||||
|
||||
- uses: docker/setup-qemu-action@v2
|
||||
- uses: docker/setup-buildx-action@v2
|
||||
|
||||
- uses: docker/login-action@v2
|
||||
with:
|
||||
registry: gitea.xeovalyte.dev
|
||||
username: ${{ secrets.USERNAME }}
|
||||
password: ${{ secrets.PASSWORD }}
|
||||
|
||||
- run: docker buildx build -t gitea.xeovalyte.dev/xeovalyte/wrbapp:latest-arm --load --platform=linux/arm64 .
|
||||
- run: docker push gitea.xeovalyte.dev/xeovalyte/wrbapp:latest-arm
|
||||
|
||||
- run: docker buildx build -t gitea.xeovalyte.dev/xeovalyte/wrbapp:latest --load --platform=linux/amd64 .
|
||||
- run: docker push gitea.xeovalyte.dev/xeovalyte/wrbapp:latest
|
15
.woodpecker.yml
Normal file
15
.woodpecker.yml
Normal file
@ -0,0 +1,15 @@
|
||||
pipeline:
|
||||
publish-dev:
|
||||
image: plugins/docker
|
||||
secrets:
|
||||
- docker_password
|
||||
settings:
|
||||
username: xeovalyte
|
||||
password:
|
||||
from_secret: docker_password
|
||||
repo: gitea.xeovalyte.dev/xeovalyte/wrbapp
|
||||
tags:
|
||||
- latest
|
||||
registry: gitea.xeovalyte.dev
|
||||
when:
|
||||
branch: dev
|
@ -2,8 +2,11 @@ FROM node:18
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
COPY ./frontend/.output .
|
||||
COPY ./frontend .
|
||||
|
||||
RUN npm install
|
||||
RUN npm run build
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
CMD [ "node", "server/index.mjs" ]
|
||||
CMD [ "node", ".output/server/index.mjs" ]
|
||||
|
@ -1,19 +1,11 @@
|
||||
<template>
|
||||
<div v-if="showInstallGuide !== null && showInstallGuide && host != 'localhost'" class="bg-neutral-1100 dark:bg-neutral-900 h-screen flex flex-col px-5 text-center text-black dark:text-gray-200">
|
||||
<h1 class="font-bold text-3xl text-center mb-10 mt-20 text-primary">Reddingsbrigade Waddinxveen</h1>
|
||||
<p class="mb-10">Om gebruik te maken van de WRB App moet je deze installeren</p>
|
||||
<h2 class="font-bold">Op een iPhone:</h2>
|
||||
<p class="mb-10">
|
||||
Ga naar <a href="https://apps.apple.com/us/app/waddinxveense-reddingsbrigade/id6443636255" class="underline">deze link</a> en download de app via de App Store
|
||||
</p>
|
||||
<h2 class="font-bold">Op een Android:</h2>
|
||||
<ol class="list-decimal list-inside mb-3">
|
||||
<li>Druk op het opties icoon:<Icon size="1.7em" name="ion:md-more" /></li>
|
||||
<li>En kies voor "Toevoegen aan startscherm" of "App installeren"</li>
|
||||
</ol>
|
||||
<i>Als deze optie er niet is, gebruik dan de chrome browser</i>
|
||||
<div v-if="!userStore.userLoaded" class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex justify-center items-center">
|
||||
<div>
|
||||
<Icon size="4em" name="ion:load-c" class="animate-spin" />
|
||||
<h2 class="mt-2 font-bold">Loading...</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="userStore.userLoaded">
|
||||
<div v-else class="">
|
||||
<div v-if="userStore.isAuthenticated" class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex flex-col">
|
||||
<LayoutTopbar />
|
||||
<div class="overflow-y-auto pt-3">
|
||||
@ -25,48 +17,38 @@
|
||||
<Login />
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="bg-neutral-100 dark:bg-neutral-900 text-primary h-screen flex justify-center items-center">
|
||||
<div>
|
||||
<Icon size="4em" name="ion:load-c" class="animate-spin" />
|
||||
<h2 class="mt-2 font-bold">Loading...</h2>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { Device } from '@capacitor/device';
|
||||
|
||||
const userStore = useUserStore()
|
||||
const showInstallGuide = ref(null)
|
||||
|
||||
const host = ref(null)
|
||||
|
||||
onMounted(async () => {
|
||||
host.value = window.location.hostname
|
||||
userStore.init()
|
||||
|
||||
Device.getInfo().then(info => {
|
||||
if (info.platform === 'ios') {
|
||||
showInstallGuide.value = false;
|
||||
document.getElementsByClassName('top-right')[0].classList.add('toastios')
|
||||
} else if (info.platform === 'web' && process.client && 'serviceWorker' in navigator && window.isSecureContext) {
|
||||
if (window.matchMedia('(display-mode: standalone)').matches) showInstallGuide.value = false
|
||||
else showInstallGuide.value = true
|
||||
|
||||
registerServiceWorker()
|
||||
} else {
|
||||
showInstallGuide.value = true
|
||||
}
|
||||
if (info.platform === 'ios') document.getElementsByClassName('top-right')[0].classList.add('toastios')
|
||||
});
|
||||
|
||||
if (process.client) {
|
||||
if ('serviceWorker' in navigator && window.isSecureContext) {
|
||||
Device.getInfo().then(info => {
|
||||
if (info.platform === 'web') registerServiceWorker()
|
||||
else document.getElementsByClassName('top-right')[0].classList.add('toastios')
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.body {
|
||||
padding-top: 10px;
|
||||
margin-bottom: env(safe-area-inset-bottom);
|
||||
}
|
||||
|
||||
.toastios {
|
||||
padding-top: env(safe-area-inset-top);
|
||||
padding-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"appId": "com.reddingsbrigadewaddinxveen.wrbapp",
|
||||
"appName": "WRB App",
|
||||
"appName": "wrbapp",
|
||||
"webDir": ".output/public",
|
||||
"bundledWebRuntime": false,
|
||||
"server": {
|
||||
"url": "https://app.reddingsbrigadewaddinxveen.nl/",
|
||||
"url": "https://wrbapp.xeovalyte.com/",
|
||||
"cleartext": true
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="flex flex-col justify-center h-screen items-center px-2 pb-20">
|
||||
<h1 class="font-bold text-3xl text-center mb-20">Reddingsbrigade Waddinxveen</h1>
|
||||
<div class="flex flex-col justify-center items-center px-2">
|
||||
<h1 class="font-bold text-3xl text-center m-10">Reddingsbrigade Waddinxveen</h1>
|
||||
<div class="max-w-sm w-full">
|
||||
<form v-if="!creatingAccount" @submit.prevent="submitLoginForm" class="flex flex-col">
|
||||
<label class="font-bold">Email</label>
|
||||
@ -17,8 +17,6 @@
|
||||
<input :disabled="disableButtons" type="submit" value="Login" class="btn w-full sm:w-24 mb-1">
|
||||
<button @click="forgotPassword" class="hover:underline font-bold w-full sm:w-max sm:ml-auto">Wachtwoord vergeten?</button>
|
||||
</div>
|
||||
|
||||
<i class="mt-10 text-black dark:text-gray-200">Is dit jouw eerste keer inloggen? Gebruik dan als email het email dat gebruikt is bij de inschrijving en het wachtwoord is uw Lidnummmer / Sportlinknummer</i>
|
||||
</form>
|
||||
<form v-else @submit.prevent="submitCreateForm" class="flex flex-col">
|
||||
<h3 class="text-center text-default text-lg mb-5">Account aanmaken voor <br><b>{{ form.email }}</b></h3>
|
||||
@ -123,7 +121,6 @@ const submitCreateForm = () => {
|
||||
email: form.value.email,
|
||||
relatiecodes: [form.value.password.toUpperCase()],
|
||||
allRelatiecodes: data.value.relatiecodes,
|
||||
id: userCredential.user.uid,
|
||||
});
|
||||
|
||||
data.value.persons.forEach(person => {
|
||||
|
@ -14,7 +14,7 @@ const router = useRouter()
|
||||
|
||||
<style>
|
||||
.topbar {
|
||||
padding-top: calc(env(safe-area-inset-top) + 20px);
|
||||
padding-top: calc(env(safe-area-inset-bottom) + 20px);
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
|
@ -101,6 +101,8 @@ export const setupWebNotifications = () => {
|
||||
export const setupNotifications = async () => {
|
||||
const info = await Device.getInfo();
|
||||
|
||||
console.log(info);
|
||||
|
||||
if (info.platform !== 'web') setupIosNotifications()
|
||||
else setupWebNotifications()
|
||||
}
|
||||
|
@ -9,8 +9,13 @@ export default defineNuxtConfig({
|
||||
'nuxt-icon',
|
||||
'@vueuse/nuxt',
|
||||
'@nuxtjs/robots',
|
||||
'@nuxtjs/plausible',
|
||||
[ '@pinia/nuxt', { autoImports: [ 'defineStore' ]} ],
|
||||
],
|
||||
plausible: {
|
||||
domain: 'wrbapp.xeovalyte.com',
|
||||
apiHost: 'https://plausible.xeovalyte.dev',
|
||||
},
|
||||
build: {
|
||||
transpile: ['vue-toastification'],
|
||||
},
|
||||
@ -26,11 +31,7 @@ export default defineNuxtConfig({
|
||||
link: [
|
||||
{ rel: 'manifest', href: '/manifest.json' },
|
||||
{ rel: 'icon', href: '/favicon.ico', type: 'image/x-icon' }
|
||||
],
|
||||
script: [
|
||||
{ src: 'https://umami.xeovalyte.dev/script.js', async: true, 'data-website-id': '59577dd0-b790-488c-af69-7f8d2cce0537' },
|
||||
],
|
||||
|
||||
]
|
||||
}
|
||||
},
|
||||
runtimeConfig: {
|
||||
|
10848
frontend/package-lock.json
generated
10848
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,6 +12,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@capacitor/cli": "^4.7.1",
|
||||
"@nuxtjs/plausible": "^0.2.0",
|
||||
"@nuxtjs/tailwindcss": "^6.6.0",
|
||||
"@tailwindcss/forms": "^0.5.3",
|
||||
"@vueuse/core": "^9.13.0",
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="flex flex-col justify-center items-center px-2 overflow-hidden">
|
||||
<h1 class="font-bold text-3xl text-center mt-6 mb-3">Reddingsbrigade Waddinxveen</h1>
|
||||
<h2 class="text-xl text-center mb-12">{{ userStore.userPersons.map(a => a.fullName).join(', ')}} {{ userStore.userPerons }}</h2>
|
||||
<h2 class="text-xl text-center mb-12">{{ userStore.userPersons.map(a => a.fullName).join(', ')}}</h2>
|
||||
<div class="container w-full max-w-md">
|
||||
<NuxtLink to="/news" class="rounded-t item-hover py-2 flex items-center">
|
||||
<span>Nieuws</span>
|
||||
@ -18,6 +18,7 @@
|
||||
<Icon class="ml-auto" size="2em" name="ion:arrow-forward"/>
|
||||
</NuxtLink>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div class="item container flex flex-col relative">
|
||||
<h3 class="text-sm">{{ longEventDate(item.date.toDate()) }}</h3>
|
||||
<h2 class="text-2xl font-bold">{{ item.title }}</h2>
|
||||
<p class="description" v-html="convertLinks(item.description)"></p>
|
||||
<p>{{ item.description }}</p>
|
||||
<Icon v-if="userStore.userData.sendNews" @click="newsStore.deleteNews(item, index)" size="1.5em" name="ion:trash-sharp" class="absolute top-3 right-3 hover:cursor-pointer text-red-500" />
|
||||
</div>
|
||||
</div>
|
||||
@ -35,41 +35,6 @@ onMounted(() => {
|
||||
newsStore.getNews()
|
||||
})
|
||||
|
||||
const convertLinks = ( input ) => {
|
||||
|
||||
let text = input;
|
||||
const linksFound = text.match( /(?:www|https?)[^\s]+/g );
|
||||
const aLink = [];
|
||||
|
||||
if ( linksFound != null ) {
|
||||
|
||||
for ( let i=0; i<linksFound.length; i++ ) {
|
||||
let replace = linksFound[i];
|
||||
if ( !( linksFound[i].match( /(http(s?)):\/\// ) ) ) { replace = 'http://' + linksFound[i] }
|
||||
let linkText = replace.split( '/' )[2];
|
||||
if ( linkText.substring( 0, 3 ) == 'www' ) { linkText = linkText.replace( 'www.', '' ) }
|
||||
if ( linkText.match( /youtu/ ) ) {
|
||||
|
||||
let youtubeID = replace.split( '/' ).slice(-1)[0];
|
||||
aLink.push( '<div class="video-wrapper"><iframe src="https://www.youtube.com/embed/' + youtubeID + '" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>' )
|
||||
}
|
||||
else if ( linkText.match( /vimeo/ ) ) {
|
||||
let vimeoID = replace.split( '/' ).slice(-1)[0];
|
||||
aLink.push( '<div class="video-wrapper"><iframe src="https://player.vimeo.com/video/' + vimeoID + '" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>' )
|
||||
}
|
||||
else {
|
||||
aLink.push( '<a class="text-primary hover:underline underline-offset-2" href="' + replace + '" target="_blank">' + linkText + '</a>' );
|
||||
}
|
||||
text = text.split( linksFound[i] ).map(item => { return aLink[i].includes('iframe') ? item.trim() : item } ).join( aLink[i] );
|
||||
}
|
||||
return text;
|
||||
|
||||
}
|
||||
else {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
const longEventDate = (eventDate) => {
|
||||
const date = new Date(eventDate)
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
<div class="w-full flex flex-wrap justify-between">
|
||||
<input :disabled="disableButtons" type="submit" value="Stuur Bericht" class="btn w-full sm:w-40 mb-1">
|
||||
<button @click="router.back()" type="button" class="hover:underline font-bold w-full sm:w-max sm:ml-auto">Annuleer</button>
|
||||
<button @click="router.back()" class="hover:underline font-bold w-full sm:w-max sm:ml-auto">Annuleer</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -1,265 +1,256 @@
|
||||
<template>
|
||||
<div @click.self="showModel = false" v-if="showModel" class="fixed flex justify-center items-center h-screen w-full bg-black top-0 left-0 z-50 bg-opacity-50" >
|
||||
<form @submit.prevent="submitModelForm" class="dark:bg-neutral-800 bg-neutral-200 p-10 rounded-xl flex flex-col w-full max-w-sm">
|
||||
<h1 class="font-bold text-center text-lg mb-5">Beheer Persoon</h1>
|
||||
|
||||
<div class="text-default mb-2">
|
||||
Relatiecode: <b>{{ modelData.relatiecode }}</b>
|
||||
</div>
|
||||
<div class="text-default mb-2">
|
||||
Naam: <b>{{ modelData.fullName }}</b>
|
||||
</div>
|
||||
<div class="text-default mb-5">
|
||||
Groepen: <b>{{ modelData.groups.join(', ') }}</b>
|
||||
</div>
|
||||
|
||||
<label class="relative inline-flex items-center cursor-pointer mb-5">
|
||||
<input type="checkbox" value="" v-model="modelData.wedstrijdteam" class="sr-only peer">
|
||||
<div class="w-11 h-6 bg-neutral-300 peer-focus:outline-none peer-focus:ring-none rounded-full peer dark:bg-neutral-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-primary"></div>
|
||||
<span class="ml-3 font-medium text-gray-900 dark:text-gray-300">Wedstrijd Team</span>
|
||||
</label>
|
||||
|
||||
<input :disabled="disableButtons" type="submit" class="btn" :value="'Bewerken'" />
|
||||
</form>
|
||||
</div>
|
||||
<div class="flex flex-col gap-5 mx-auto p-2 w-full max-w-md">
|
||||
<div class="mb-5">
|
||||
<form @submit.prevent="submitLedenlijst" class="flex flex-col">
|
||||
<input required="true" @change="handleFileChanged" accept=".csv" class="my-2" type="file">
|
||||
<span class="text-sm"><i>Met de volgende kolommen: Relatiecode, Volledige naam(1), Roepnaam, E-mail, 2e E-mail, Verenigingssporten, Diploma</i></span>
|
||||
<button :disabled="disableButtons" class="btn mx-auto mt-2">Publish Ledenlijst</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="flex flex-col gap-3">
|
||||
<input v-model="searchTerm" class="input mb-2 font-bold" type="search" placeholder="Search">
|
||||
<div v-for="lid in filteredLedenlijst" :key="lid.relatiecode">
|
||||
<div @click="handleModel(lid)" class="item container flex flex-wrap hover:cursor-pointer">
|
||||
<b class="w-24">{{ lid.relatiecode }}</b> {{ lid.fullName }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { doc, getDocs, collection, writeBatch, updateDoc, setDoc, getFirestore } from "firebase/firestore";
|
||||
import { useToast } from 'vue-toastification'
|
||||
|
||||
definePageMeta({
|
||||
title: 'Ledenlijst',
|
||||
key: 'back'
|
||||
})
|
||||
|
||||
const toast = useToast()
|
||||
|
||||
const usersStore = useUsersStore()
|
||||
const modelData = ref(null)
|
||||
const db = getFirestore()
|
||||
|
||||
const file = ref(null)
|
||||
const disableButtons = ref(false)
|
||||
const searchTerm = ref('')
|
||||
const newLedenlijst = ref([])
|
||||
const showModel = ref(false)
|
||||
|
||||
onMounted(async () => {
|
||||
usersStore.getLedenlijst()
|
||||
})
|
||||
|
||||
const handleModel = (lid) => {
|
||||
modelData.value = lid
|
||||
if (!modelData.value.hasOwnProperty('wedstrijdteam')) modelData.value.wedstrijdteam = false
|
||||
|
||||
modelData.value.oldWedstrijdteam = modelData.value.wedstrijdteam
|
||||
|
||||
showModel.value = true
|
||||
}
|
||||
|
||||
const submitModelForm = async () => {
|
||||
disableButtons.value = true
|
||||
usersStore.ledenlijst.filter(a => a.relatiecode === modelData.value.relatiecode)[0].wedstrijdteam = modelData.value.wedstrijdteam
|
||||
|
||||
if (modelData.value.wedstrijdteam === modelData.value.oldWedstrijdteam) {
|
||||
disableButtons.value = false
|
||||
showModel.value = false
|
||||
return;
|
||||
}
|
||||
|
||||
let docRef = doc(db, "ledenlijst", modelData.value.relatiecode)
|
||||
|
||||
await updateDoc(docRef, {
|
||||
wedstrijdteam: modelData.value.wedstrijdteam
|
||||
})
|
||||
|
||||
docRef = doc(db, "competitors", modelData.value.relatiecode)
|
||||
|
||||
if (modelData.value.wedstrijdteam) {
|
||||
await setDoc(docRef, {
|
||||
relatiecode: modelData.value.relatiecode,
|
||||
name: modelData.value.fullName,
|
||||
active: true,
|
||||
})
|
||||
} else {
|
||||
await updateDoc(docRef, {
|
||||
active: false,
|
||||
})
|
||||
}
|
||||
|
||||
toast.success('Persoon is bewerkt')
|
||||
|
||||
disableButtons.value = false
|
||||
showModel.value = false
|
||||
}
|
||||
|
||||
const filteredLedenlijst = computed(() => {
|
||||
return usersStore.ledenlijst.filter(lid => lid.fullName.toLowerCase().includes(searchTerm.value.toLowerCase()))
|
||||
})
|
||||
|
||||
const handleFileChanged = (event) => {
|
||||
const target = event.target;
|
||||
|
||||
if (target && target.files) {
|
||||
file.value = target.files[0];
|
||||
}
|
||||
}
|
||||
|
||||
const submitLedenlijst = () => {
|
||||
disableButtons.value = true
|
||||
|
||||
let reader = new FileReader()
|
||||
|
||||
reader.onload = function() {
|
||||
csvToJson(reader.result);
|
||||
};
|
||||
|
||||
reader.onerror = function() {
|
||||
console.log(reader.error);
|
||||
};
|
||||
|
||||
reader.readAsText(file.value)
|
||||
}
|
||||
|
||||
const csvToJson = (csv) => {
|
||||
let arr = csv.split('\n');
|
||||
|
||||
var result = [];
|
||||
var headers = arr[0].split(';');
|
||||
for(var i = 1; i < arr.length; i++) {
|
||||
var data = arr[i].split(';');
|
||||
var obj = {};
|
||||
for(var j = 0; j < data.length; j++) {
|
||||
obj[headers[j].trim()] = data[j].trim();
|
||||
}
|
||||
result.push(obj);
|
||||
}
|
||||
|
||||
if (!Object.hasOwn(result[0], 'Relatiecode') || !Object.hasOwn(result[0], 'Volledige naam (1)') || !Object.hasOwn(result[0], 'E-mail') || !Object.hasOwn(result[0], '2e E-mail') || !Object.hasOwn(result[0], 'Verenigingssporten') || !Object.hasOwn(result[0], 'Diploma dropdown 1')) return toast.error('Missing properties')
|
||||
|
||||
newLedenlijst.value = []
|
||||
|
||||
for (let i in result) {
|
||||
let groups = []
|
||||
let correctGroups = null
|
||||
if (!result[i].Relatiecode) break;
|
||||
|
||||
if (result[i].Verenigingssporten.includes(',')) correctGroups = result[i].Verenigingssporten.split(',')
|
||||
else correctGroups = [result[i].Verenigingssporten]
|
||||
|
||||
correctGroups.forEach(group => {
|
||||
const x = group.split(' - ')
|
||||
|
||||
if (x[2] === 'Week') groups.push('Vrijdag')
|
||||
else if (x[2] === 'Zaterdag' && x[1] !== 'Wedstrijd') groups.push('Zaterdag')
|
||||
|
||||
groups.push(x[1])
|
||||
})
|
||||
|
||||
if (groups[2] === 'Week') groups[2] = 'Vrijdag'
|
||||
|
||||
let inwedstrijdteam
|
||||
if (usersStore.ledenlijst.filter(x => x.relatiecode === result[i].Relatiecode)[0]) {
|
||||
inwedstrijdteam = usersStore.ledenlijst.filter(x => x.relatiecode === result[i].Relatiecode)[0].wedstrijdteam;
|
||||
} else {
|
||||
inwedstrijdteam = false;
|
||||
}
|
||||
|
||||
const wedstrijdteam = inwedstrijdteam ? true : false
|
||||
|
||||
newLedenlijst.value.push({ relatiecode: result[i].Relatiecode, wedstrijdteam, fullName: result[i]['Volledige naam (1)'], email: [result[i]['E-mail'], result[i]['2e E-mail']], groups: [...new Set(groups)], diploma: result[i]['Diploma dropdown 1'] })
|
||||
}
|
||||
uploadLedenlijst()
|
||||
}
|
||||
|
||||
const uploadLedenlijst = async () => {
|
||||
try {
|
||||
const batch = writeBatch(db)
|
||||
|
||||
newLedenlijst.value.forEach(lid => {
|
||||
const docRef = doc(db, "ledenlijst", lid.relatiecode)
|
||||
|
||||
const exists = usersStore.ledenlijst.filter(a => a.relatiecode === lid.relatiecode).length > 1
|
||||
|
||||
if (!exists) {
|
||||
return batch.set(docRef, lid);
|
||||
}
|
||||
|
||||
batch.update(docRef, { fullName: lid.relatiecode, email: lid.email, groups: lid.groups, diploma: lid.diploma})
|
||||
})
|
||||
|
||||
const deleteLeden = usersStore.ledenlijst.filter(a => newLedenlijst.value.map(x => x.relatiecode).indexOf(a.relatiecode) === -1)
|
||||
|
||||
deleteLeden.forEach(lid => {
|
||||
const docRef = doc(db, "ledenlijst", lid.relatiecode)
|
||||
|
||||
batch.delete(docRef)
|
||||
})
|
||||
|
||||
await batch.commit();
|
||||
|
||||
toast.success('Published ledenlijst')
|
||||
} catch (e) {
|
||||
toast.error("Error updating ledenlijst");
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
usersStore.ledenlijst = newLedenlijst.value
|
||||
|
||||
updateUsers()
|
||||
}
|
||||
|
||||
|
||||
const updateUsers = async () => {
|
||||
try {
|
||||
const querySnapshot = await getDocs(collection(db, "users"));
|
||||
querySnapshot.forEach((doc) => {
|
||||
const data = doc.data()
|
||||
data.id = doc.id
|
||||
usersStore.users.push(data)
|
||||
|
||||
});
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
||||
toast.error('Error getting users')
|
||||
}
|
||||
|
||||
const batch = writeBatch(db);
|
||||
|
||||
usersStore.users.forEach(user => {
|
||||
const lid = usersStore.ledenlijst.filter(a => a.email.includes(user.email))
|
||||
const newRelatiecodes = lid.map(a => a.relatiecode)
|
||||
|
||||
user.allRelatiecodes = newRelatiecodes
|
||||
user.relatiecodes.forEach((relatiecode, index) => {
|
||||
if (!newRelatiecodes.includes(relatiecode)) { user.relatiecodes.splice(index, 1); console.log('removed item', relatiecode)}
|
||||
})
|
||||
|
||||
const userRef = doc(db, "users", user.id)
|
||||
batch.update(userRef, user)
|
||||
})
|
||||
|
||||
await batch.commit();
|
||||
|
||||
disableButtons.value = false
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div @click.self="showModel = false" v-if="showModel" class="fixed flex justify-center items-center h-screen w-full bg-black top-0 left-0 z-50 bg-opacity-50" >
|
||||
<form @submit.prevent="submitModelForm" class="dark:bg-neutral-800 bg-neutral-200 p-10 rounded-xl flex flex-col w-full max-w-sm">
|
||||
<h1 class="font-bold text-center text-lg mb-5">Beheer Persoon</h1>
|
||||
|
||||
<div class="text-default mb-2">
|
||||
Relatiecode: <b>{{ modelData.relatiecode }}</b>
|
||||
</div>
|
||||
<div class="text-default mb-2">
|
||||
Naam: <b>{{ modelData.fullName }}</b>
|
||||
</div>
|
||||
<div class="text-default mb-5">
|
||||
Groepen: <b>{{ modelData.groups.join(', ') }}</b>
|
||||
</div>
|
||||
|
||||
<label class="relative inline-flex items-center cursor-pointer mb-5">
|
||||
<input type="checkbox" value="" v-model="modelData.wedstrijdteam" class="sr-only peer">
|
||||
<div class="w-11 h-6 bg-neutral-300 peer-focus:outline-none peer-focus:ring-none rounded-full peer dark:bg-neutral-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-primary"></div>
|
||||
<span class="ml-3 font-medium text-gray-900 dark:text-gray-300">Wedstrijd Team</span>
|
||||
</label>
|
||||
|
||||
<input :disabled="disableButtons" type="submit" class="btn" :value="'Bewerken'" />
|
||||
</form>
|
||||
</div>
|
||||
<div class="flex flex-col gap-5 mx-auto p-2 w-full max-w-md">
|
||||
<div class="mb-5">
|
||||
<form @submit.prevent="submitLedenlijst" class="flex flex-col">
|
||||
<input required="true" @change="handleFileChanged" accept=".csv" class="my-2" type="file">
|
||||
<span class="text-sm"><i>Met de volgende kolommen: Relatiecode, Volledige naam(1), Roepnaam, E-mail, 2e E-mail, Verenigingssporten, Diploma</i></span>
|
||||
<button :disabled="disableButtons" class="btn mx-auto mt-2">Publish Ledenlijst</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="flex flex-col gap-3">
|
||||
<input v-model="searchTerm" class="input mb-2 font-bold" type="search" placeholder="Search">
|
||||
<div v-for="lid in filteredLedenlijst" :key="lid.relatiecode">
|
||||
<div @click="handleModel(lid)" class="item container flex flex-wrap hover:cursor-pointer">
|
||||
<b class="w-24">{{ lid.relatiecode }}</b> {{ lid.fullName }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { doc, getDocs, collection, writeBatch, updateDoc, setDoc, getFirestore } from "firebase/firestore";
|
||||
import { useToast } from 'vue-toastification'
|
||||
|
||||
definePageMeta({
|
||||
title: 'Ledenlijst',
|
||||
key: 'back'
|
||||
})
|
||||
|
||||
const toast = useToast()
|
||||
|
||||
const usersStore = useUsersStore()
|
||||
const modelData = ref(null)
|
||||
const db = getFirestore()
|
||||
|
||||
const file = ref(null)
|
||||
const disableButtons = ref(false)
|
||||
const searchTerm = ref('')
|
||||
const newLedenlijst = ref([])
|
||||
const showModel = ref(false)
|
||||
|
||||
onMounted(async () => {
|
||||
usersStore.getLedenlijst()
|
||||
})
|
||||
|
||||
const handleModel = (lid) => {
|
||||
modelData.value = lid
|
||||
if (!modelData.value.hasOwnProperty('wedstrijdteam')) modelData.value.wedstrijdteam = false
|
||||
|
||||
modelData.value.oldWedstrijdteam = modelData.value.wedstrijdteam
|
||||
|
||||
showModel.value = true
|
||||
}
|
||||
|
||||
const submitModelForm = async () => {
|
||||
disableButtons.value = true
|
||||
usersStore.ledenlijst.filter(a => a.relatiecode === modelData.value.relatiecode)[0].wedstrijdteam = modelData.value.wedstrijdteam
|
||||
|
||||
if (modelData.value.wedstrijdteam === modelData.value.oldWedstrijdteam) {
|
||||
disableButtons.value = false
|
||||
showModel.value = false
|
||||
return;
|
||||
}
|
||||
|
||||
let docRef = doc(db, "ledenlijst", modelData.value.relatiecode)
|
||||
|
||||
await updateDoc(docRef, {
|
||||
wedstrijdteam: modelData.value.wedstrijdteam
|
||||
})
|
||||
|
||||
docRef = doc(db, "competitors", modelData.value.relatiecode)
|
||||
|
||||
if (modelData.value.wedstrijdteam) {
|
||||
await setDoc(docRef, {
|
||||
relatiecode: modelData.value.relatiecode,
|
||||
name: modelData.value.fullName,
|
||||
active: true,
|
||||
})
|
||||
} else {
|
||||
await updateDoc(docRef, {
|
||||
active: false,
|
||||
})
|
||||
}
|
||||
|
||||
toast.success('Persoon is bewerkt')
|
||||
|
||||
disableButtons.value = false
|
||||
showModel.value = false
|
||||
}
|
||||
|
||||
const filteredLedenlijst = computed(() => {
|
||||
return usersStore.ledenlijst.filter(lid => lid.fullName.toLowerCase().includes(searchTerm.value.toLowerCase()))
|
||||
})
|
||||
|
||||
const handleFileChanged = (event) => {
|
||||
const target = event.target;
|
||||
|
||||
if (target && target.files) {
|
||||
file.value = target.files[0];
|
||||
}
|
||||
}
|
||||
|
||||
const submitLedenlijst = () => {
|
||||
disableButtons.value = true
|
||||
|
||||
let reader = new FileReader()
|
||||
|
||||
reader.onload = function() {
|
||||
csvToJson(reader.result);
|
||||
};
|
||||
|
||||
reader.onerror = function() {
|
||||
console.log(reader.error);
|
||||
};
|
||||
|
||||
reader.readAsText(file.value)
|
||||
}
|
||||
|
||||
const csvToJson = (csv) => {
|
||||
let arr = csv.split('\n');
|
||||
|
||||
var result = [];
|
||||
var headers = arr[0].split(';');
|
||||
for(var i = 1; i < arr.length; i++) {
|
||||
var data = arr[i].split(';');
|
||||
var obj = {};
|
||||
for(var j = 0; j < data.length; j++) {
|
||||
obj[headers[j].trim()] = data[j].trim();
|
||||
}
|
||||
result.push(obj);
|
||||
}
|
||||
|
||||
if (!Object.hasOwn(result[0], 'Relatiecode') || !Object.hasOwn(result[0], 'Volledige naam (1)') || !Object.hasOwn(result[0], 'E-mail') || !Object.hasOwn(result[0], '2e E-mail') || !Object.hasOwn(result[0], 'Verenigingssporten') || !Object.hasOwn(result[0], 'Diploma dropdown 1')) return toast.error('Missing properties')
|
||||
|
||||
newLedenlijst.value = []
|
||||
|
||||
for (let i in result) {
|
||||
let groups = []
|
||||
let correctGroups = null
|
||||
if (!result[i].Relatiecode) break;
|
||||
|
||||
if (result[i].Verenigingssporten.includes(',')) correctGroups = result[i].Verenigingssporten.split(',')
|
||||
else correctGroups = [result[i].Verenigingssporten]
|
||||
|
||||
correctGroups.forEach(group => {
|
||||
const x = group.split(' - ')
|
||||
|
||||
if (x[2] === 'Week') groups.push('Vrijdag')
|
||||
else if (x[2] === 'Zaterdag' && x[1] !== 'Wedstrijd') groups.push('Zaterdag')
|
||||
|
||||
groups.push(x[1])
|
||||
})
|
||||
|
||||
if (groups[2] === 'Week') groups[2] = 'Vrijdag'
|
||||
|
||||
newLedenlijst.value.push({ relatiecode: result[i].Relatiecode, fullName: result[i]['Volledige naam (1)'], email: [result[i]['E-mail'], result[i]['2e E-mail']], groups: [...new Set(groups)], diploma: result[i]['Diploma dropdown 1'] })
|
||||
}
|
||||
uploadLedenlijst()
|
||||
}
|
||||
|
||||
const uploadLedenlijst = async () => {
|
||||
try {
|
||||
const batch = writeBatch(db)
|
||||
|
||||
newLedenlijst.value.forEach(lid => {
|
||||
const docRef = doc(db, "ledenlijst", lid.relatiecode)
|
||||
|
||||
const exists = ledenlijst.value.filter(a => a.relatiecode === lid.relatiecode).length > 1
|
||||
|
||||
if (!exists) {
|
||||
return batch.set(docRef, lid);
|
||||
}
|
||||
|
||||
batch.update(docRef, { fullName: lid.relatiecode, email: lid.email, groups: lid.groups, diploma: lid.diploma})
|
||||
})
|
||||
|
||||
const deleteLeden = ledenlijst.value.filter(a => newLedenlijst.value.map(x => x.relatiecode).indexOf(a.relatiecode) === -1)
|
||||
|
||||
deleteLeden.forEach(lid => {
|
||||
const docRef = doc(db, "ledenlijst", lid.relatiecode)
|
||||
|
||||
batch.delete(docRef)
|
||||
})
|
||||
|
||||
await batch.commit();
|
||||
|
||||
toast.success('Published ledenlijst')
|
||||
} catch (e) {
|
||||
toast.error("Error updating ledenlijst");
|
||||
console.log(e)
|
||||
}
|
||||
|
||||
usersStore.ledenlijst = newLedenlijst.value
|
||||
|
||||
updateUsers()
|
||||
}
|
||||
|
||||
|
||||
const updateUsers = async () => {
|
||||
try {
|
||||
const querySnapshot = await getDocs(collection(db, "users"));
|
||||
querySnapshot.forEach((doc) => {
|
||||
const data = doc.data()
|
||||
data.id = doc.id
|
||||
users.value.push(data)
|
||||
|
||||
});
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
|
||||
toast.error('Error getting users')
|
||||
}
|
||||
|
||||
const batch = writeBatch(db);
|
||||
|
||||
users.value.forEach(user => {
|
||||
const lid = ledenlijst.value.filter(a => a.email.includes(user.email))
|
||||
const newRelatiecodes = lid.map(a => a.relatiecode)
|
||||
|
||||
user.allRelatiecodes = newRelatiecodes
|
||||
user.relatiecodes.forEach((relatiecode, index) => {
|
||||
if (!newRelatiecodes.includes(relatiecode)) { user.relatiecodes.splice(index, 1); console.log('removed item', relatiecode)}
|
||||
})
|
||||
|
||||
const userRef = doc(db, "users", user.id)
|
||||
batch.update(userRef, user)
|
||||
})
|
||||
|
||||
await batch.commit();
|
||||
|
||||
disableButtons.value = false
|
||||
}
|
||||
</script>
|
||||
|
@ -196,7 +196,6 @@ const submitContestForm = async () => {
|
||||
event.competitors.forEach(competitor => {
|
||||
const combinedTime = competitor.time.minutes.toString().padStart(2, '0') + competitor.time.seconds.toString().padStart(2, '0') + competitor.time.milliseconds.toString().padStart(2, '0')
|
||||
|
||||
|
||||
const docRef = doc(collection(db, 'timings'))
|
||||
batch.set(docRef, {
|
||||
relatiecode: competitor.relatiecode,
|
||||
|
@ -39,7 +39,7 @@
|
||||
<div class="flex gap-x-5">
|
||||
<div class="relative">
|
||||
<button @click.stop="showDeelnemersDropdown = !showDeelnemersDropdown" class="btn">Deelnemers <Icon size="1.2em" name="ion:arrow-down-b" /></button>
|
||||
<div v-if="showDeelnemersDropdown" v-on-click-outside.bubble="handleDeelnemersDropdown" class="w-48 mt-2 container absolute rounded-lg shadow p-3 overflow-y-auto">
|
||||
<div v-if="showDeelnemersDropdown" v-on-click-outside.bubble="handleDeelnemersDropdown" class="w-48 mt-2 container absolute rounded-lg shadow p-3">
|
||||
<ul class="space-y-2 text-default">
|
||||
<li v-for="competitor in contestStore.competitors" @click="competitor.checked = !competitor.checked" class="flex gap-x-1 items-center hover:cursor-pointer">
|
||||
<input v-model="competitor.checked" type="checkbox" class="checkbox">
|
||||
@ -64,15 +64,14 @@
|
||||
<div @click="event.open = !event.open" class="flex hover:cursor-pointer">
|
||||
<h2 class="font-bold mr-auto">{{ event.name }}</h2>
|
||||
<span v-if="contestStore.filteredTimings.filter(a => a.event === event.id).length > 0" class="">
|
||||
<span>
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.minutes }}:{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.seconds }}:{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.milliseconds }} |
|
||||
</span>
|
||||
<span class="hidden md:inline-block mr-1">
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].contest.type }} |
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].contest.date.toLocaleDateString('nl-NL') }} |
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].contest.location }} |
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].contest.type }} |
|
||||
</span>
|
||||
<span>
|
||||
{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.minutes }}:{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.seconds }}:{{ contestStore.filteredTimings.filter(a => a.event === event.id)[0].time.milliseconds }}</span>
|
||||
</span>
|
||||
</span>
|
||||
<span v-else class="">Geen tijd</span>
|
||||
<Icon size="1.2em" name="ion:arrow-down-b" class="my-auto ml-2 transition-all" :class="{'rotate-180' : event.open }" />
|
||||
</div>
|
||||
|
@ -22,7 +22,7 @@ export const useUsersStore = defineStore('users', () => {
|
||||
}
|
||||
|
||||
const getUsers = async () => {
|
||||
if (users.value[0]) return
|
||||
if (users[0]) return
|
||||
|
||||
try {
|
||||
const querySnapshot = await getDocs(collection(db, "users"));
|
||||
|
264
ledenlijst.csv
Normal file
264
ledenlijst.csv
Normal file
@ -0,0 +1,264 @@
|
||||
Relatiecode,Volledige naam (1),Roepnaam,Tussenvoegsel(s),Achternaam,E-mail,2e E-mail,Verenigingssporten,Diploma dropdown 1
|
||||
D457WDU,"Achtatou, Amïne",Amïne,,Achtatou,nadiaachbari@live.nl,,Groep - B4 - Week,JR2
|
||||
D458DQP,"Agterberg of Achterberg, Sophie",Sophie,,Agterberg of Achterberg,marloesijzelendoorn@hotmail.com,,Groep - Z2 - Zaterdag,JR1
|
||||
D454GG4,"Anakhrough, Liyana",Liyana,,Anakhrough,halima_anakhrouch@hotmail.com,,Groep - A6 - Week,JR1
|
||||
D320NFM,"Arnold, Caroline",Caroline,,Arnold,,,Groep - E3 - Week,
|
||||
D422JNN,"Bac, Alexander",Alexander,,Bac,ehbac@hetnet.nl,,Groep - C1 - Week,ZR1
|
||||
D458RSZ,"Bade, Deniz",Deniz,,Bade,kimberley_bade@hotmail.com,,Groep - A3 - Week,JR2
|
||||
D452TQ9,"Bade, Laila",Laila,,Bade,kimberley_bade@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D320NLS,"Baggerman, Sander",Sander,,Baggerman,sander_3baggerman@hotmail.com,,Groep - E2 - Week,
|
||||
D384MCS,"Bakhuyzen, Boaz",Boaz,,Bakhuyzen,jjcbakhuyzen@hotmail.com,bbboaz.bb@gmail.com,"Groep - D1 - Week, Groep - Wedstrijd - Zaterdag",LS2
|
||||
D399XKX,"Bakhuyzen-Rijkaart, Jolanda",Jolanda,,Bakhuyzen-Rijkaart,jjcbakhuyzen@gmail.com,,"Groep - D3 - Week, Groep - Wedstrijd - Zaterdag",LG
|
||||
D434GX7,"Balajan, Gagik",Gagik,,Balajan,es_em@live.nl,,Groep - B6 - Week,JR3
|
||||
D383NBP,"Bank, Jochem",Jochem,,Bank,fambank@kpnmail.nl,jochembank@kpnmail.nl,Groep - D2 - Week,LS2
|
||||
D453WFC,"Bas, Maaike de",Maaike,de,Bas,sarissamatze@hotmail.com,,Groep - Z2 - Zaterdag,JR1
|
||||
D372BXX,"Baser, Annemieke el",Annemieke,el,Baser,a.mourits@yahoo.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D384MM4,"Beek, Arco van de",Arco,van de,Beek,arcovandebeek@planet.nl,,Groep - D1 - Week,LS2
|
||||
D423NGX,"Beek, Elize van de",Elize,van de,Beek,famvdbeek@planet.nl,,Groep - C1 - Week,ZR1
|
||||
D423NHY,"Beek, Marina van de",Marina,van de,Beek,famvdbeek@planet.nl,,Groep - C2 - Week,ZR2
|
||||
D455FJ9,"Bellechab, Maysa",Maysa,,Bellechab,,,Groep - B4 - Week,JR1
|
||||
D441JZA,"Berg, Abel van den",Abel,van den,Berg,anneriekevdberg@live.nl,,Groep - B3 - Week,JR3
|
||||
D440BWS,"Berg, Anne van den",Anne,van den,Berg,m11vdb@hotmail.com,,Groep - A4 - Week,JR2
|
||||
D457WK3,"Berg, Job van den",Job,van den,Berg,anneriekevdberg@live.nl,,Groep - A3 - Week,JR1
|
||||
D431NWC,"Berg, Stijn van den",Stijn,van den,Berg,m11vdb@hotmail.com,,Groep - C1 - Week,ZR1
|
||||
D453BQS,"Berger, Fae",Fae,,Berger,mberger2@kpnplanet.nl,,Groep - A5 - Week,JR2
|
||||
D428CW7,"Berger, Senne",Senne,,Berger,jannekedeligny@kpnplanet.nl,,Groep - C2 - Week,ZR2
|
||||
D457VZF,"Berghout, Lieke",Lieke,,Berghout,berghouthenk@hotmail.com,,Groep - A3 - Week,JR2
|
||||
D463VYZ,"Bijman, Gideon",Gideon,,Bijman,basenilsebijman@gmail.com,,Groep - A2 - Week,JR1
|
||||
D384XBQ,"Blanken, Tygo",Tygo,,Blanken,leontienbontekoe@gmail.com,,Groep - D2 - Week,LS2
|
||||
D457VR7,"Bogaard, Joas",Joas,,Bogaard,mail@marcelyael.nl,,Groep - A3 - Week,JR2
|
||||
D457WHY,"Bogaard, Manasse",Manasse,,Bogaard,mail@marcelyael.nl,,Groep - A2 - Week,JR1
|
||||
D461WQK,"Bongers, Jade",Jade,,Bongers,guido.bongers@gmail.com,bibianvanleeuwen@gmail.com,Groep - A4 - Week,JR1
|
||||
D321HT7,"Bontenbal, Erik",Erik,,Bontenbal,e_bontenbal@casema.nl,,Groep - E3 - Week,
|
||||
D320ZV6,"Bontenbal, Robert",Robert,,Bontenbal,r_bontenbal@casema.nl,,Groep - E2 - Week,
|
||||
D392JBF,"Boomers, Angela",Angela,,Boomers,angela.boomers@ziggo.nl,,Groep - E2 - Week,
|
||||
D392JCG,"Boomers, Christa",Christa,,Boomers,christa.boomers@ziggo.nl,,Groep - Z5 - Zaterdag,ZR4
|
||||
D271RLJ,"Boomers, Robert",Robert,,Boomers,robert.boomers@ziggo.nl,,Groep - E2 - Week,
|
||||
D384MR9,"Boomers, Timo",Timo,,Boomers,robert.boomers@ziggo.nl,timo.boomers@ziggo.nl,"Groep - Wedstrijd - Zaterdag, Groep - Z5 - Zaterdag",LS1
|
||||
D391VPQ,"Bosch, Joost van den",Joost,van den,Bosch,boschfamily@casema.nl,,Groep - C4 - Week,LS1
|
||||
D406BK4,"Bosman, Joshua",Joshua,,Bosman,carolabosman@hotmail.com,rv-bosman@hotmail.com,Groep - C4 - Week,LS1
|
||||
D384TMP,"Bosman, Nathan",Nathan,,Bosman,gbosman@casema.nl,,Groep - D1 - Week,LS2
|
||||
D457WL4,"Bosman, Sofie",Sofie,,Bosman,pabbosman@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D458RRY,"Boulahdaraj, Imraan",Imraan,,Boulahdaraj,boulahdaraj@hotmail.com,,Groep - B4 - Week,JR1
|
||||
D443CRP,"Boulahdarej, Bilal",Bilal,,Boulahdarej,ina.vankl@gmail.com,,Groep - C1 - Week,JR4
|
||||
D458DSR,"Boulahdarej, Oumaya",Oumaya,,Boulahdarej,naoualboulahdarej@hotmail.com,,Groep - B4 - Week,JR1
|
||||
D384MTB,"Bouthoorn, Sven",Sven,,Bouthoorn,snowy029@xs4all.nl,,"Groep - C4 - Week, Groep - Wedstrijd - Zaterdag",ZR4
|
||||
D427DCJ,"Bouthoorn-Meekel, Nancy",Nancy,,Bouthoorn-Meekel,snowy029@xs4all.nl,,Groep - Wedstrijd - Zaterdag,
|
||||
D464JJN,"Bremmer, Joas",Joas,,Bremmer,ibremmer@hotmail.com,,Groep - B1 - Week,JR1
|
||||
D461WMG,"Breur, Tippe",Tippe,,Breur,info@patternontour.com,,Groep - Z2 - Zaterdag,Piraat
|
||||
D321JP9,"Broeders, Bas",Bas,,Broeders,bas_broeders@ziggo.nl,,Groep - E1 - Week,
|
||||
D440XC6,"Broek, Jens van den",Jens,van den,Broek,laurabatenburg@hotmail.com,,Groep - B5 - Week,JR3
|
||||
D430FLM,"Bruin, Fenne de",Fenne,de,Bruin,bianca1976@ziggo.nl,,Groep - Z4 - Zaterdag,JR4
|
||||
D408RRZ,"Bruin, Noah de",Noah,de,Bruin,bianca1976@ziggo.nl,,"Groep - Wedstrijd - Zaterdag, Groep - Z5 - Zaterdag",ZR2
|
||||
D321JTD,"Bruin, Pieter-Jan de",Pieter-Jan,de,Bruin,pj.debruin@kpnmail.nl,,Groep - E3 - Week,
|
||||
D423NK3,"Bruin, Wouter de",Wouter,de,Bruin,wjdebruin@ziggo.nl,,Groep - D2 - Week,LS3
|
||||
D457VP5,"Buitenhuis, Ralf",Ralf,,Buitenhuis,h.buitenhuis@ehsboskoop.nl,,Groep - Z2 - Zaterdag,JR1
|
||||
D457VXD,"Burgers, Micha",Micha,,Burgers,taraburgers@gmail.com,,Groep - A3 - Week,JR2
|
||||
D461WSM,"Burgers, Sofie",Sofie,,Burgers,taraburgers@gmail.com,,Groep - A2 - Week,Piraat
|
||||
D278TNS,"Buuts, Erwin",Erwin,,Buuts,erwin@buuts.eu,,Groep - E2 - Week,
|
||||
D413XLR,"Buuts, Marjolein",Marjolein,,Buuts,marion@buuts.eu,,Groep - C2 - Week,ZR2
|
||||
D445MNR,"Buuts, Pieter Jan",Pieter Jan,,Buuts,marion@buuts.eu,,Groep - A6 - Week,JR2
|
||||
D393TDI,"Cate, Nienke ten",Nienke,ten,Cate,arianne@solcon.nl,,Groep - C3 - Week,ZR3
|
||||
D321KH4,"Cornelisse, Tarin",Tarin,,Cornelisse,tarincornelisse@hotmail.com,,Groep - E1 - Week,
|
||||
D435FZB,"Couvreur, Hanna",Hanna,,Couvreur,hanna.couvreur@hotmail.com,,Groep - D2 - Week,LS2
|
||||
D321KK7,"Daalen, Erik van",Erik,van,Daalen,erik.van.daalen@ziggo.nl,,"Groep - E2 - Week, Groep - E3 - Week",
|
||||
D320WVV,"Dijken, Sylvana van",Sylvana,van,Dijken,sylvana1984@gmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D320WXX,"Dijkgraaf, Bryan",Bryan,,Dijkgraaf,bryan@familie-dijkgraaf.nl,,Groep - D3 - Week,LG
|
||||
D320WWW,"Dijkgraaf, Dylan",Dylan,,Dijkgraaf,dylan@familie-dijkgraaf.nl,,Groep - D3 - Week,LG
|
||||
D397CX7,"Dijkgraaf, Patrick",Patrick,,Dijkgraaf,Patrick@familie-dijkgraaf.nl,,Groep - D5 - Week,
|
||||
D435GCP,"Dool, Eva van den",Eva,van den,Dool,peter.roosvandendool@kliksafe.nl,,Groep - Z3 - Zaterdag,JR2
|
||||
D435LPJ,"Dool, Susanna van den",Susanna,van den,Dool,peter.roosvandendool@kliksafe.nl,,Groep - Z4 - Zaterdag,JR4
|
||||
D436DY9,"Doorn, Cheveyo van",Cheveyo,van,Doorn,naatje71182@hotmail.nl,,Groep - A5 - Week,JR2
|
||||
D425WRD,"Duijn, Jeroen van",Jeroen,van,Duijn,angelavanduijn@gmail.com,,Groep - C2 - Week,ZR1
|
||||
D455FC2,"Dusschoten, Benjamin van",Benjamin,van,Dusschoten,l.hageman@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D452TWF,"Eeden Petersman, Levi van",Levi,van,Eeden Petersman,al-bj@solcon.nl,,Groep - Z3 - Zaterdag,JR2
|
||||
D406BDV,"Eijk, Anna van",Anna,van,Eijk,mancha@ziggo.nl,,Groep - C3 - Week,ZR3
|
||||
D457VYE,"Eijk, Antonie van",Antonie,van,Eijk,mancha@ziggo.nl,,Groep - B4 - Week,JR1
|
||||
D406BHZ,"Ende, Deborah van der",Deborah,van der,Ende,janvdende@hotmail.com,,Groep - C3 - Week,ZR3
|
||||
D320XKN,"Engelsma-Nauta, Tiny",Tiny,,Engelsma-Nauta,,,Groep - E3 - Week,
|
||||
D320XMP,"Ettinger, Mascha van",Mascha,van,Ettinger,mascha.van.ettinger@gmail.com,,Groep - E1 - Week,
|
||||
D320XNQ,"Ettinger, Vincent van",Vincent,van,Ettinger,vincent.94@hotmail.com,,"Groep - E1 - Week, Groep - E5 - Week",
|
||||
D400VZV,"Fiere, Mariska",Mariska,,Fiere,mjfiere@ziggo.nl,,Groep - Wedstrijd - Zaterdag,
|
||||
D341FVH,"Floor, Mick",Mick,,Floor,floorberg.nl@gmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D452GKW,"Graafland, Naut",Naut,,Graafland,eagraafland@casema.nl,,Groep - B4 - Week,JR2
|
||||
D384PLC,"Griffioen, Daan",Daan,,Griffioen,marjogriffioen88@gmail.com,,Groep - Z6 - Zaterdag,LS2
|
||||
D463WGK,"Groen, William de",William,de,Groen,ecw.koopman@gmail.com,,Groep - A2 - Week,JR1
|
||||
D452GMY,"Groenendijk, Jackie",Jackie,,Groenendijk,famgroenendijk@hotmail.com,,Groep - B4 - Week,JR2
|
||||
D320YDJ,"Groenendijk, Jasper",Jasper,,Groenendijk,jasgro78@gmail.com,,Groep - E2 - Week,
|
||||
D365XLR,"Hak, Christian",Christian,,Hak,christian.hak@ziggo.nl,,Groep - D3 - Week,LG
|
||||
D384PG7,"Ham, Carola van",Carola,van,Ham,carola@blacquiere.net,,Groep - Wedstrijd - Zaterdag,
|
||||
D431YHU,"Hamdoun, Naja",Naja,,Hamdoun,n.hamdoun@online.nl,,Groep - D5 - Week,
|
||||
D388JB4,"Harkes, Dave",Dave,,Harkes,a.harkes@planet.nl,,Groep - C4 - Week,LS1
|
||||
D384NJ4,"Harkes, Nick",Nick,,Harkes,a.harkes@planet.nl,nickharkes2005@gmail.com,"Groep - D1 - Week, Groep - Wedstrijd - Zaterdag",LS2
|
||||
D461WGA,"Hau, Valentijn",Valentijn,,Hau,familiehau@outlook.com,,Groep - B2 - Week,JR1
|
||||
D461WF9,"Hau, Valerie",Valerie,,Hau,familiehau@outlook.com,,Groep - B2 - Week,JR1
|
||||
D439CH4,"Heer, Valerie de",Valerie,de,Heer,mbodenstaff@yahoo.com,,Groep - Z3 - Zaterdag,JR3
|
||||
D432DNC,"Heijer, Lucas den",Lucas,den,Heijer,fabian@dreamworx.nl,,Groep - B5 - Week,JR3
|
||||
D453BPR,"Helbers, Ravi",Ravi,,Helbers,jeroenhelbers@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D452FY9,"Helbers, Sven",Sven,,Helbers,jeroenhelbers@hotmail.com,,Groep - A4 - Week,JR2
|
||||
D320YNT,"Hermans-v.d. Vooren, Jopie",Jopie,,Hermans-v.d. Vooren,,,Groep - D5 - Week,
|
||||
D365WQT,"Hillo, Nicolette van",Nicolette,van,Hillo,nicolettevanhillo@gmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D321SJU,"Hoff, Björn van",Björn,van,Hoff,bjornvanhoff@gmail.com,bjornvanhoff@gmail.com,"Groep - D2 - Week, Groep - Wedstrijd - Zaterdag",LS3
|
||||
D354BD9,"Hoff, Joey van",Joey,van,Hoff,rickenesthervh@gmail.com,joeyvanhoff@gmail.com,"Groep - Wedstrijd - Zaterdag, Groep - Z6 - Zaterdag",LS2
|
||||
D440XD7,"Hokke, Jaël",Jaël,,Hokke,ichokke@kpnmail.nl,joannahokke@kpnmail.nl,Groep - A6 - Week,JR1
|
||||
D459GT8,"Hokke, Tabitha",Tabitha,,Hokke,ichokke@kpnmail.nl,,Groep - A3 - Week,JR2
|
||||
D461WKE,"Hollander, Ezra den",Ezra,den,Hollander,liannehokke@gmail.com,,Groep - A2 - Week,Piraat
|
||||
D431YBO,"Hornes, Thijmen",Thijmen,,Hornes,anglasbergen@hotmail.com,,Groep - B4 - Week,JR1
|
||||
D321SMX,"Houweling, Bert",Bert,,Houweling,b.houweling@hotmail.com,,Groep - D3 - Week,LG
|
||||
D321SNY,"Houweling, Dirk",Dirk,,Houweling,dirkhouweling@gmail.com,,Groep - D3 - Week,LG
|
||||
D321SR4,"Immerzeel, Abigail",Abigail,,Immerzeel,a.g.immerzeel@online.nl,,Groep - D2 - Week,LS2
|
||||
D454GF3,"Ingen, Wesley van",Wesley,van,Ingen,lizettevaningen@gmail.com,,Groep - B4 - Week,JR2
|
||||
D454GK8,"Jahouhi, Adam",Adam,,Jahouhi,numidiya@hotmail.com,,Groep - Z2 - Zaterdag,JR1
|
||||
D445MGK,"Jahouhi, Mossaab",Mossaab,,Jahouhi,abbesjahouhi@live.nl,,Groep - C1 - Week,JR2
|
||||
D445MHL,"Jahouhi, Mouaad",Mouaad,,Jahouhi,abbesjahouhi@live.nl,,Groep - A6 - Week,JR1
|
||||
D454GMA,"Jahouhi, Numidia",Numidia,,Jahouhi,numidiya@hotmail.com,,Groep - Z4 - Zaterdag,JR4
|
||||
D454GNB,"Jahouhi, Tamimount",Tamimount,,Jahouhi,numidiya@hotmail.com,,Groep - Z4 - Zaterdag,JR4
|
||||
D463WCG,"Jong, Ezra de",Ezra,de,Jong,carinborg11@hotmail.com,,Groep - B1 - Week,JR1
|
||||
D393TNS,"Jongen, Michael",Michael,,Jongen,erik.jongen@istech.nl,,Groep - C4 - Week,ZR4
|
||||
D393TMR,"Jongen, Ryan",Ryan,,Jongen,erik.jongen@istech.nl,,Groep - D1 - Week,LS2
|
||||
D461WLF,"Kaashoek, Daniël",Daniël,,Kaashoek,tkaashoek@live.nl,,Groep - B2 - Week,JR1
|
||||
D437BLT,"Kaashoek, Hannah",Hannah,,Kaashoek,tkaashoek@live.nl,,Groep - C2 - Week,ZR2
|
||||
D461WHB,"Kaashoek, Rebekka",Rebekka,,Kaashoek,tkaashoek@live.nl,,Groep - B2 - Week,JR1
|
||||
D432DMB,"Karels, Eniek",Eniek,,Karels,pjkarels@solcon.nl,,Groep - Z4 - Zaterdag,JR2
|
||||
D463WFJ,"Karels, Imen",Imen,,Karels,pjkarels@solcon.nl,,Groep - Z3 - Zaterdag,JR1
|
||||
D463VXY,"Karskens, Justin",Justin,,Karskens,ferdikarskens@hotmail.com,,Groep - A6 - Week,JR1
|
||||
D452TRA,"Kasteel, Tamar van",Tamar,van,Kasteel,maartjevanm@gmail.com,,Groep - A4 - Week,JR1
|
||||
D464JKO,"Keulen, Maeve van",Maeve,van,Keulen,dennisenamy@ziggo.nl,,Groep - Z4 - Zaterdag,JR1
|
||||
D420TNP,"Klomp, Anastasia",Anastasia,,Klomp,woodieshoe@gmail.com,,Groep - C5 - Week,
|
||||
D415HFH,"Knoop, Bas de",Bas,de,Knoop,deknoop@ziggo.nl,,Groep - Z5 - Zaterdag,LS1
|
||||
D461WRL,"Knops, Anouk",Anouk,,Knops,mail@jurgenknops.nl,,Groep - B2 - Week,JR1
|
||||
D438HHE,"Koning, Sofie",Sofie,,Koning,eefie65@hotmail.com,,Groep - B3 - Week,JR3
|
||||
D454NGP,"Kool, Elize",Elize,,Kool,koolelize@gmail.com,,Groep - C2 - Week,ZR2
|
||||
D434GBJ,"Koster, Joanna",Joanna,,Koster,jeffreykoster@outlook.com,,Groep - A6 - Week,JR1
|
||||
D451TBN,"Kuijf, Femke",Femke,,Kuijf,rpm_kuijf@hotmail.com,,Groep - A5 - Week,JR1
|
||||
D437BKS,"Kuijf, Thomas",Thomas,,Kuijf,m_dazler@hotmail.com,,Groep - B5 - Week,JR3
|
||||
D384NCV,"Laan, Daniël van der",Daniël,van der,Laan,d_vanderlaan@ziggo.nl,danieljvdlaan@gmail.com,"Groep - D1 - Week, Groep - Wedstrijd - Zaterdag",LS2
|
||||
D321TWC,"Laarse, Peter van der",Peter,van der,Laarse,,,Groep - E3 - Week,
|
||||
D321TXD,"Lagen, Joost van",Joost,van,Lagen,joost.v.lagen@gmail.com,,Groep - D3 - Week,LG
|
||||
D444VF7,"Lassing, Mika",Mika,,Lassing,fam.lassing@gmail.com,,Groep - Z4 - Zaterdag,JR3
|
||||
D278YJ5,"Lavoir, Sebastiaan de",Sebastiaan,de,Lavoir,lavoir@hotmail.com,,Groep - E1 - Week,
|
||||
D321VCW,"Leeuwen, Ruud van",Ruud,van,Leeuwen,ruudvanleeuwen2@gmail.com,,Groep - D3 - Week,LG
|
||||
D452GLX,"Leidelmeijer , Evi",Evi,,Leidelmeijer,familie-leidelmeijer@hotmail.com,,Groep - A4 - Week,JR2
|
||||
D406BFX,"Lopez, Eliaane",Eliaane,,Lopez,peterenherma@postduif.net,,Groep - C2 - Week,ZR2
|
||||
D453BNP,"Luxemburg, Daphne van",Daphne,van,Luxemburg,ilsehazebroek@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D436MXZ,"Luxemburg, Kay van",Kay,van,Luxemburg,kransje@hotmail.com,,Groep - B6 - Week,JR4
|
||||
D442MSH,"Luxemburg, Nikki van",Nikki,van,Luxemburg,ilsehazebroek@hotmail.com,,Groep - B3 - Week,JR3
|
||||
D322DDI,"Maas, Natascha",Natascha,,Maas,n_maas@live.nl,,Groep - D3 - Week,LG
|
||||
D452MWS,"Maas, Sem",Sem,,Maas,babetteklm@hotmail.com,,Groep - Z3 - Zaterdag,JR3
|
||||
D424RPP,"Martins Soares, Izak",Izak,,Martins Soares,petra_938@hotmail.com,,Groep - C2 - Week,ZR1
|
||||
D427DDK,"Martins Soares, Ruth",Ruth,,Martins Soares,petra_938@hotmail.com,,Groep - B4 - Week,JR1
|
||||
D441KHT,"Mastenbroek, Lieke",Lieke,,Mastenbroek,nicolinemastenbroek@outlook.com,,Groep - B3 - Week,JR2
|
||||
D463VVW,"Meijeren, Jesse van",Jesse,van,Meijeren,lenavanmeijeren@gmail.com,,Groep - A2 - Week,JR1
|
||||
D452TP8,"Meijeren, Linda van",Linda,van,Meijeren,lenavanmeijeren@gmail.com,,Groep - A5 - Week,JR1
|
||||
D463WJN,"Mertens, Senn",Senn,,Mertens,rubenenlinda@hotmail.com,,Groep - A1 - Week,JR1
|
||||
D454GJ7,"Metaal, Chris",Chris,,Metaal,debbie.metaal@gmail.com,,Groep - A4 - Week,JR2
|
||||
D322DJO,"Metten, Ralph",Ralph,,Metten,ralphmetten@casema.nl,,Groep - E1 - Week,
|
||||
D459GS7,"Mhamdami, Chadi",Chadi,,Mhamdami,moussa12@live.nl,,Groep - B4 - Week,JR1
|
||||
D435LJD,"Molenaar, Naomi",Naomi,,Molenaar,sabrinahenk@live.nl,,Groep - B3 - Week,JR3
|
||||
D413XW4,"Molenaar, Sophie",Sophie,,Molenaar,sabrinahenk@live.nl,,Groep - C3 - Week,ZR3
|
||||
D443CVT,"Mourik, Lesley van",Lesley,van,Mourik,moniek_hoefnagel@hotmail.com,,Groep - B5 - Week,JR3
|
||||
D453BRT,"Mud, Matthew",Matthew,,Mud,richard@mudcorp.nl,,Groep - A5 - Week,JR2
|
||||
D271ZG4,"Mulder, Marion",Marion,,Mulder,marion@buuts.eu,,Groep - E2 - Week,
|
||||
D464JHL,"Nieuwenhuis, Ardjan",Ardjan,,Nieuwenhuis,mnieuwenhuis@solcon.nl,,Groep - Z4 - Zaterdag,JR1
|
||||
D457VWC,"Oostenbrugge, Joël van",Joël,van,Oostenbrugge,avanoostenbrugge@solcon.nl,,Groep - B2 - Week,JR1
|
||||
D455DZJ,"Opstal, Nikki-Lisa van",Nikki-Lisa,van,Opstal,lijflander13@hotmail.com,,Groep - A4 - Week,JR2
|
||||
D405KW4,"Oudijk, Luna",Luna,,Oudijk,doret_van_boxtel@hotmail.com,,Groep - C1 - Week,ZR1
|
||||
D433DQK,"Oudijk, Mex",Mex,,Oudijk,doret_van_boxtel@hotmail.com,,Groep - B6 - Week,JR4
|
||||
D451TFR,"Oudijk, Rune",Rune,,Oudijk,doret_van_boxtel@hotmail.com,,Groep - A4 - Week,JR2
|
||||
D433DNH,"Overvoorde, Melissa",Melissa,,Overvoorde,kwekerijacovervoorde@ziggo.nl,,Groep - Z4 - Zaterdag,JR3
|
||||
D442MNC,"Pardon, Milan",Milan,,Pardon,milanennathan@gmail.com,,Groep - Z3 - Zaterdag,JR3
|
||||
D391VRS,"Pas, Stijn te",Stijn,te,Pas,erictepas@casema.nl,,"Groep - D1 - Week, Groep - Wedstrijd - Zaterdag",LS1
|
||||
D322FJU,"Pelt, Tjardo van",Tjardo,van,Pelt,tjardo.van.pelt95@gmail.com,,Groep - E1 - Week,
|
||||
D456WLX,"Peschke, Saartje",Saartje,,Peschke,kirstenhazebroek@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D463WLP,"Pijl, Senn",Senn,,Pijl,hemmagoedbloed@hotmail.com,,Groep - Z1 - Zaterdag,JR1
|
||||
D322FR4,"Poel, Frank van der",Frank,van der,Poel,frank_van_der_poel@hotmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D447BTA,"Pol, Dave van der",Dave,van der,Pol,wendyrip@hotmail.com,,Groep - B2 - Week,JR1
|
||||
D443XF8,"Poot, Dirk",Dirk,,Poot,penningmeester@reddingsbrigadewaddinxveen.nl,drkpoot832@hotmail.com,Groep - E3 - Week,
|
||||
D440XB5,"Poot, Jesse",Jesse,,Poot,tjcdenotter@hotmail.com,,Groep - Z3 - Zaterdag,JR3
|
||||
D322FT6,"Poot, Marianne",Marianne,,Poot,mariannepoot@gmail.com,,Groep - E1 - Week,
|
||||
D440WZQ,"Poot, Mirjam",Mirjam,,Poot,tjcdenotter@hotmail.com,,Groep - B3 - Week,JR2
|
||||
D434FZ6,"Popijus, Joyce",Joyce,,Popijus,angjuhnerings@hotmail.nl,,Groep - C1 - Week,JR4
|
||||
D322FZC,"Puttiger, Joelle",Joelle,,Puttiger,joelleputtiger@gmail.com,,Groep - D3 - Week,LG
|
||||
D322GHV,"Reijken, Aad van der",Aad,van der,Reijken,aad.vanderreijken@gmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D457VT9,"Romijn, Nathan",Nathan,,Romijn,irmaromijn@hotmail.com,,Groep - A3 - Week,JR2
|
||||
D399XLY,"Rooij, Hugo de",Hugo,de,Rooij,team.kniek.563@ipsedebruggen.nl,,Groep - C5 - Week,
|
||||
D316FPF,"Rooij, Marco de",Marco,de,Rooij,mcderooij@solconmail.nl,,Groep - E2 - Week,
|
||||
D316FMC,"Rooij, Robin de",Robin,de,Rooij,brderooij@gmail.com,,Groep - E2 - Week,
|
||||
D434ZZW,"Rooijen, Nadine van",Nadine,van,Rooijen,ampeek@hetnet.nl,,Groep - B6 - Week,JR4
|
||||
D384PC3,"Rosbergen, Floor",Floor,,Rosbergen,feya.rosbergen@gmail.com,,Groep - C4 - Week,LS1
|
||||
D455DYI,"Royers, Sil",Sil,,Royers,rroyers@online.nl,,Groep - Z2 - Zaterdag,JR1
|
||||
D415GWV,"Scheurwater, Damian",Damian,,Scheurwater,lindavh1976@gmail.com,,Groep - C3 - Week,ZR3
|
||||
D405ZZI,"Schotanus, Menno",Menno,,Schotanus,lindaschotanus@kpnplanet.nl,,Groep - C3 - Week,ZR2
|
||||
D441KDP,"Schouten, Merijn",Merijn,,Schouten,eugene.schouten@ziggo.nl,,Groep - B6 - Week,JR4
|
||||
D413XTZ,"Schouten, Quinny",Quinny,,Schouten,ajsmontage@planet.nl,,Groep - C2 - Week,ZR1
|
||||
D422HNH,"Schuur, Matthea ter",Matthea,ter,Schuur,aterschuur@tiscali.nl,,Groep - Z4 - Zaterdag,JR4
|
||||
D463WKO,"Seppenwoolde, Maria",Maria,,Seppenwoolde,gerardenmarjet@gmail.com,,Groep - B3 - Week,JR1
|
||||
D451SX8,"Slurink, Ezra",Ezra,,Slurink,stijniedekoning@hotmail.com,,Groep - A4 - Week,JR1
|
||||
D463VWX,"Snel, Fay",Fay,,Snel,mirjamvanwijk92@gmail.com,,Groep - A1 - Week,JR1
|
||||
D453BKM,"Snel, Jack",Jack,,Snel,snel_marcel@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D432DPE,"Sonneveld, Laura",Laura,,Sonneveld,jasonneveld@kliksafe.nl,,Groep - B6 - Week,JR3
|
||||
D365XQW,"Spek, Jorrit",Jorrit,,Spek,aaspek@ziggo.nl,,Groep - Z5 - Zaterdag,LS1
|
||||
D430FMN,"Springvloet, Justin",Justin,,Springvloet,jasmijnspringvloet@gmail.com,,Groep - B5 - Week,JR2
|
||||
D415HLN,"Springvloet, Tygo",Tygo,,Springvloet,jasmijnspringvloet@gmail.com,,"Groep - C2 - Week, Groep - Wedstrijd - Zaterdag",ZR1
|
||||
D386KH3,"Springvloet-Kleinhout, Jasmijn",Jasmijn,,Springvloet-Kleinhout,jasmijnspringvloet@gmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D463WHL,"Starre, Evi van der",Evi,van der,Starre,marjonvanderstarre@gmail.com,,Groep - B1 - Week,JR1
|
||||
D461WPJ,"Steensel, Rowan van",Rowan,van,Steensel,rob.van.steensel@oasen.nl,,Groep - Z1 - Zaterdag,Piraat
|
||||
D438SKG,"Steenvoorden, Arina",Arina,,Steenvoorden,familiesteenvoorden@icloud.com,,Groep - A6 - Week,JR1
|
||||
D438SZV,"Steenvoorden, Charlien",Charlien,,Steenvoorden,familiesteenvoorden@icloud.com,,Groep - A6 - Week,JR1
|
||||
D438SLH,"Steenvoorden, Dominik",Dominik,,Steenvoorden,familiesteenvoorden@icloud.com,,Groep - B5 - Week,JR2
|
||||
D457VVB,"Stormbroek, Devney",Devney,,Stormbroek,moniquepeters_78@hotmail.com,,Groep - B2 - Week,JR1
|
||||
D448KXC,"Stormbroek, Jaimey",Jaimey,,Stormbroek,moniquepeters_78@hotmail.com,,Groep - B3 - Week,JR2
|
||||
D419JMG,"Straten, Daan van",Daan,van,Straten,alinestraten@gmail.com,,Groep - A5 - Week,JR2
|
||||
D400KQN,"Strien, Eva van",Eva,van,Strien,leonoorvanstrien@gmail.com,,Groep - C3 - Week,ZR3
|
||||
D419JLF,"Strien, Nathan van",Nathan,van,Strien,leonoorvanstrien@gmail.com,,Groep - C1 - Week,ZR1
|
||||
D397DKV,"Tas, Mariska",Mariska,,Tas,info@tasboomkwekerij.nl,,"Groep - D3 - Week, Groep - Wedstrijd - Zaterdag",LG
|
||||
D432DJ8,"Tas-van Driesten, Carjoliene van der",Carjoliene,van der,Tas-van Driesten,carjolienevdr@hotmail.com,,Groep - Wedstrijd - Zaterdag,
|
||||
D434GCK,"Teijlingen, Aimee van",Aimee,van,Teijlingen,amarantevt@hotmail.com,,Groep - B3 - Week,JR3
|
||||
D453BLN,"Teijlingen, Louan van",Louan,van,Teijlingen,wardvt@hotmail.com,,Groep - A5 - Week,JR2
|
||||
D455DXH,"Toorn, Lukas van der",Lukas,van der,Toorn,fionamaaskant@hotmail.com,,Groep - Z2 - Zaterdag,JR1
|
||||
D464XS6,"Tschroots, Fleur",Fleur,,Tschroots,wtschroots@live.nl,,Groep - B5 - Week,JR1
|
||||
D461WNH,"Tschroots, Thomas",Thomas,,Tschroots,wtschroots@live.nl,,Groep - A4 - Week,JR1
|
||||
D433DLF,"Ursum, Rogier",Rogier,,Ursum,redding@ursum.com,,Groep - B5 - Week,JR3
|
||||
D433DKE,"Ursum, Sabine",Sabine,,Ursum,redding@ursum.com,,Groep - B6 - Week,JR3
|
||||
D279DVR,"Utrecht-de Lavoir, Elise van",Elise,van,Utrecht-de Lavoir,elisevanutrecht@hotmail.com,,Groep - E1 - Week,
|
||||
D458DRQ,"Veeningen, Renée",Renée,,Veeningen,veeningen.agnes@gmail.com,,Groep - B3 - Week,JR2
|
||||
D406BN7,"Veer, Mark van der",Mark,van der,Veer,team.kniek.565@ipsedebruggen.nl,,Groep - C5 - Week,
|
||||
D413XCI,"Velde, Dominique van der",Dominique,van der,Velde,diddys@ziggo.nl,,Groep - C2 - Week,ZR2
|
||||
D413XKQ,"Velde, Manou van de",Manou,van de,Velde,arwin.eline@casema.nl,,Groep - Z4 - Zaterdag,JR3
|
||||
D316QD2,"Velzen-Gareman, Petra van",Petra,van,Velzen-Gareman,velzenvan.peter1@ziggo.nl,,Groep - D5 - Week,
|
||||
D316QG5,"Vente, John",John,,Vente,a.j.vente@planet.nl,,Groep - Wedstrijd - Zaterdag,
|
||||
D450DPY,"Verboom, Dennis",Dennis,,Verboom,info@dverboom.nl,,Groep - E3 - Week,
|
||||
D457VS8,"Verboom, Resa",Resa,,Verboom,laura_kooiman@hotmail.com,,Groep - A3 - Week,JR2
|
||||
D454GL9,"Verduijn, Carlynn",Carlynn,,Verduijn,marianne_dtoom@hotmail.com,,Groep - A6 - Week,JR2
|
||||
D462PXB,"Verlaan, Joost",Joost,,Verlaan,team.kniek.561@ipsedebruggen.nl,,Groep - C5 - Week,
|
||||
D425CD7,"Vermeij, Thijmen",Thijmen,,Vermeij,lydia_online@xs4all.nl,,Groep - B6 - Week,JR4
|
||||
D451TGS,"Verschoor, Sofie",Sofie,,Verschoor,soaling@hotmail.com,,Groep - Z3 - Zaterdag,JR3
|
||||
D457VQ6,"Verweij, Jasper",Jasper,,Verweij,djv@casema.nl,,Groep - B4 - Week,JR2
|
||||
D316QQF,"Vieveen, Yvette",Yvette,,Vieveen,vieveen.yvette@gmail.com,,Groep - D2 - Week,LS2
|
||||
D461WJD,"Vink, Hannah",Hannah,,Vink,johannekevermeulen@hotmail.com,,Groep - Z1 - Zaterdag,Piraat
|
||||
D316QTI,"Vis, Jaap",Jaap,,Vis,visjac27@hetnet.nl,,Groep - E3 - Week,
|
||||
D316RD5,"Vliet, Edwin van",Edwin,van,Vliet,irenevanhelden@hetnet.nl,,Groep - E2 - Week,
|
||||
D316RB3,"Vliet, Richard van",Richard,van,Vliet,richardvanvliet@gmail.com,,Groep - E2 - Week,
|
||||
D449DZW,"Vogelzang, Nienke",Nienke,,Vogelzang,purdyweernink@msn.com,,Groep - B5 - Week,JR3
|
||||
D447BVC,"Vos, Fenna de",Fenna,de,Vos,patrickenelvira@gmail.com,,Groep - A4 - Week,JR2
|
||||
D452GBN,"Vos-van Vliet, Elvira de",Elvira,de,Vos-van Vliet,elvira.van.vliet@gmail.com,,Groep - D2 - Week,LS1
|
||||
D415GYX,"Vreugdenhil, Leendert",Leendert,,Vreugdenhil,l.vreugdenhil@gmail.com,,Groep - E1 - Week,
|
||||
D457VN3,"Vuuren, Julian van",Julian,van,Vuuren,inge.v.vuuren@hotmail.com,,Groep - A3 - Week,JR2
|
||||
D432DLA,"Vuuren, Mats van",Mats,van,Vuuren,j.van.vuuren@casema.nl,,Groep - C1 - Week,JR4
|
||||
D454GH5,"Weststrate, Luuk",Luuk,,Weststrate,familieweststrate@outlook.com,,Groep - B4 - Week,JR2
|
||||
D433PPL,"Wineke, Henrik",Henrik,,Wineke,mwineke@nhswaddinxveen.nl,,Groep - C1 - Week,JR4
|
||||
D455VY4,"Wineke, Sebastiaan",Sebastiaan,,Wineke,mwineke@nhswaddinxveen.nl,,Groep - A3 - Week,JR2
|
||||
D316ZZH,"Wit, Ramona de",Ramona,de,Wit,ramonadewit@live.nl,,Groep - D3 - Week,LG
|
||||
D440GLW,"Wit, Thijs de",Thijs,de,Wit,gert.mariska.dewit@gmail.com,,Groep - B1 - Week,JR2
|
||||
D317JKR,"Witte, Hendrik de",Hendrik,de,Witte,hendrikdewitte@hotmail.com,,Groep - E1 - Week,
|
||||
D432DQF,"Wittenberg, Jette",Jette,,Wittenberg,artjo.wittenberg@gmail.com,,Groep - B5 - Week,JR2
|
||||
D420TQS,"Wittenberg, Ronan",Ronan,,Wittenberg,artjo.wittenberg@gmail.com,,Groep - C1 - Week,ZR1
|
||||
D420TSU,"Wittenberg, Venna",Venna,,Wittenberg,artjo.wittenberg@gmail.com,,Groep - B6 - Week,JR4
|
||||
D451SY9,"Woudenberg, Diederik van",Diederik,van,Woudenberg,henriettevw@hetnet.nl,,Groep - A4 - Week,JR1
|
||||
D419JKE,"Woudenberg, Jesse van",Jesse,van,Woudenberg,j.haagen@hotmail.com,,Groep - C4 - Week,ZR4
|
||||
D397DCN,"Wubben, Tineke",Tineke,,Wubben,tineke.wubben@gmail.com,,Groep - D5 - Week,
|
||||
D330JMO,"Yildirim, Cemre",Cemre,,Yildirim,cemreyild@gmail.com,cemreyild@gmail.com,"Groep - D2 - Week, Groep - Wedstrijd - Zaterdag",LS3
|
||||
D384NTE,"Yildirim, Zerin",Zerin,,Yildirim,mjfiere@ziggo.nl,,Groep - Z5 - Zaterdag,ZR4
|
||||
D452GFR,"Zanten, Roos van",Roos,van,Zanten,s.m.schenk@gmail.com,,Groep - A4 - Week,JR2
|
||||
D443KDZ,"Zeelst, Simon van",Simon,van,Zeelst,marriette.van.zeelst@xs4all.nl,,Groep - C1 - Week,JR4
|
||||
D454GDZ,"Zwart, Sem de",Sem,de,Zwart,famdezwart@solcon.nl,,Groep - B4 - Week,JR2
|
|
6
package-lock.json
generated
6
package-lock.json
generated
@ -1,6 +0,0 @@
|
||||
{
|
||||
"name": "wrbapp",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
10
shell.nix
10
shell.nix
@ -1,10 +0,0 @@
|
||||
let
|
||||
pkgs = import <nixpkgs> { };
|
||||
in
|
||||
pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
nodejs_18
|
||||
nodePackages.pnpm
|
||||
nodePackages.typescript-language-server
|
||||
];
|
||||
}
|
BIN
testcase.xlsx
Normal file
BIN
testcase.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user