Compare commits

..

No commits in common. "f2ace3a2e525c5668c6f1abbca13202c16a2535d" and "79a4594878a9a3937a58be6cceec01ce1d86f69c" have entirely different histories.

204 changed files with 433 additions and 440 deletions
src
components
FormBottomBar.vuePagination.vue
admin
club
settings
user
queryBuilder
router
stores/admin

View file

@ -1,9 +1,9 @@
<template> <template>
<div class="flex flex-col text-gray-400 text-sm mt-4 items-center"> <div class="flex flex-col text-gray-400 text-sm mt-4 items-center">
<div class="flex flex-row gap-2 justify-center"> <div class="flex flex-row gap-2 justify-center">
<a href="https://jk-effects.com/privacy" target="_blank">Datenschutz</a> <a ref="https://jk-effects.com/privacy" target="_blank">Datenschutz</a>
<a href="https://jk-effects.com/imprint" target="_blank">Impressum</a> <a ref="https://jk-effects.com/imprint" target="_blank">Impressum</a>
</div> </div>
<a href="https://jk-effects.com" target="_blank"> &copy; Admin-Portal by JK Effects </a> <a href="https://jk-effects.com" target="_blank"> &copy; Admin-Portal by JK Effects </a>
</div> </div>
</template> </template>

View file

@ -1,10 +1,9 @@
<template> <template>
<div class="grow flex flex-col gap-2 overflow-hidden"> <div class="grow flex flex-col gap-2 overflow-hidden">
<div v-if="useSearch" class="relative self-end flex flex-row items-center gap-2"> <div v-if="useSearch" class="relative self-end">
<Spinner v-if="deferingSearch" />
<input <input
type="text" type="text"
class="!max-w-64 !w-64 rounded-md shadow-sm relative block px-3 py-2 pr-5 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" class="w-64 rounded-md shadow-sm relative block px-3 py-2 pr-5 border border-gray-300 placeholder-gray-500 text-gray-900 rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm"
placeholder="Suche" placeholder="Suche"
v-model="searchString" v-model="searchString"
/> />
@ -88,22 +87,15 @@ const slots = defineSlots<{
const timer = ref(undefined) as undefined | any; const timer = ref(undefined) as undefined | any;
const currentPage = ref(0); const currentPage = ref(0);
const searchString = ref(""); const searchString = ref("");
const deferingSearch = ref(false)
watch(searchString, async () => { watch(searchString, async () => {
deferingSearch.value = true
clearTimeout(timer.value); clearTimeout(timer.value);
timer.value = setTimeout(() => { timer.value = setTimeout(() => {
currentPage.value = 0; currentPage.value = 0;
deferingSearch.value = false
emit("search", searchString.value); emit("search", searchString.value);
}, 600); }, 600);
}); });
watch(() => props.totalCount, async () => {
currentPage.value = 0;
});
const emit = defineEmits({ const emit = defineEmits({
submit(id: number) { submit(id: number) {
return typeof id == "number"; return typeof id == "number";
@ -112,7 +104,7 @@ const emit = defineEmits({
return typeof offset == "number" && typeof offset == "number" && typeof searchString == "number"; return typeof offset == "number" && typeof offset == "number" && typeof searchString == "number";
}, },
search(search: string) { search(search: string) {
return typeof search == "string"; return typeof search == "number";
}, },
clickRow(elem: T) { clickRow(elem: T) {
return true; return true;
@ -159,8 +151,7 @@ const loadPage = (newPage: number | ".") => {
if (pageEnd > entryCount.value) pageEnd = entryCount.value; if (pageEnd > entryCount.value) pageEnd = entryCount.value;
let loadedElementCount = filterData(props.items, searchString.value, pageStart, pageEnd).length; let loadedElementCount = filterData(props.items, searchString.value, pageStart, pageEnd).length;
console.log(loadedElementCount, props.maxEntriesPerPage, pageStart, pageEnd) if (loadedElementCount < props.maxEntriesPerPage)
if (loadedElementCount < props.maxEntriesPerPage && (pageEnd != props.totalCount || loadedElementCount == 0))
emit("loadData", pageStart, props.maxEntriesPerPage, searchString.value); emit("loadData", pageStart, props.maxEntriesPerPage, searchString.value);
currentPage.value = newPage; currentPage.value = newPage;

View file

@ -105,8 +105,8 @@ import { defineComponent } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { RouterLink } from "vue-router"; import { RouterLink } from "vue-router";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType"; import { useCalendarTypeStore } from "@/stores/admin/calendarType";
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models"; import type { CalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import TextCopy from "@/components/TextCopy.vue"; import TextCopy from "@/components/TextCopy.vue";

View file

@ -143,12 +143,12 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCalendarStore } from "@/stores/admin/club/calendar"; import { useCalendarStore } from "@/stores/admin/calendar";
import type { CreateCalendarViewModel } from "@/viewmodels/admin/club/calendar.models"; import type { CreateCalendarViewModel } from "@/viewmodels/admin/calendar.models";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType"; import { useCalendarTypeStore } from "@/stores/admin/calendarType";
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models"; import type { CalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -51,7 +51,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCalendarStore } from "@/stores/admin/club/calendar"; import { useCalendarStore } from "@/stores/admin/calendar";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -185,16 +185,16 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCalendarStore } from "@/stores/admin/club/calendar"; import { useCalendarStore } from "@/stores/admin/calendar";
import type { import type {
CalendarViewModel, CalendarViewModel,
CreateCalendarViewModel, CreateCalendarViewModel,
UpdateCalendarViewModel, UpdateCalendarViewModel,
} from "@/viewmodels/admin/club/calendar.models"; } from "@/viewmodels/admin/calendar.models";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon, TrashIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon, TrashIcon } from "@heroicons/vue/20/solid";
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType"; import { useCalendarTypeStore } from "@/stores/admin/calendarType";
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models"; import type { CalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -66,10 +66,6 @@
<label for="birthdate">Geburtsdatum</label> <label for="birthdate">Geburtsdatum</label>
<input type="date" id="birthdate" required /> <input type="date" id="birthdate" required />
</div> </div>
<div>
<label for="internalId">Interne ID (optional)</label>
<input type="text" id="internalId" />
</div>
<div class="flex flex-row gap-2"> <div class="flex flex-row gap-2">
<button primary type="submit" :disabled="status == 'loading' || status?.status == 'success'">erstellen</button> <button primary type="submit" :disabled="status == 'loading' || status?.status == 'success'">erstellen</button>
<Spinner v-if="status == 'loading'" class="my-auto" /> <Spinner v-if="status == 'loading'" class="my-auto" />
@ -98,8 +94,8 @@ import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { Salutation } from "@/enums/salutation"; import { Salutation } from "@/enums/salutation";
import { useMemberStore } from "@/stores/admin/club/member/member"; import { useMemberStore } from "@/stores/admin/member";
import type { CreateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel } from "@/viewmodels/admin/member.models";
</script> </script>
<script lang="ts"> <script lang="ts">
@ -131,7 +127,6 @@ export default defineComponent({
lastname: formData.lastname.value, lastname: formData.lastname.value,
nameaffix: formData.nameaffix.value, nameaffix: formData.nameaffix.value,
birthdate: formData.birthdate.value, birthdate: formData.birthdate.value,
internalId: formData.internalId.value,
}; };
this.createMember(createMember) this.createMember(createMember)
.then(() => { .then(() => {

View file

@ -44,8 +44,8 @@ import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { Salutation } from "@/enums/salutation"; import { Salutation } from "@/enums/salutation";
import { useMemberStore } from "@/stores/admin/club/member/member"; import { useMemberStore } from "@/stores/admin/member";
import type { CreateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel } from "@/viewmodels/admin/member.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -97,14 +97,14 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { MembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models"; import type { CreateMembershipViewModel } from "@/viewmodels/admin/membership.models";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
import { useAwardStore } from "@/stores/admin/settings/award"; import { useAwardStore } from "@/stores/admin/award";
import type { AwardViewModel } from "@/viewmodels/admin/settings/award.models"; import type { AwardViewModel } from "@/viewmodels/admin/award.models";
import type { CreateMemberAwardViewModel } from "@/viewmodels/admin/club/member/memberAward.models"; import type { CreateMemberAwardViewModel } from "@/viewmodels/admin/memberAward.models";
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward"; import { useMemberAwardStore } from "@/stores/admin/memberAward";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -38,7 +38,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward"; import { useMemberAwardStore } from "@/stores/admin/memberAward";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -98,13 +98,13 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useAwardStore } from "@/stores/admin/settings/award"; import { useAwardStore } from "@/stores/admin/award";
import type { import type {
CreateMemberAwardViewModel, CreateMemberAwardViewModel,
MemberAwardViewModel, MemberAwardViewModel,
UpdateMemberAwardViewModel, UpdateMemberAwardViewModel,
} from "@/viewmodels/admin/club/member/memberAward.models"; } from "@/viewmodels/admin/memberAward.models";
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward"; import { useMemberAwardStore } from "@/stores/admin/memberAward";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
</script> </script>

View file

@ -16,7 +16,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { MemberAwardViewModel } from "@/viewmodels/admin/club/member/memberAward.models"; import type { MemberAwardViewModel } from "@/viewmodels/admin/memberAward.models";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -125,10 +125,10 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useCommunicationStore } from "@/stores/admin/club/member/communication"; import { useCommunicationStore } from "@/stores/admin/communication";
import type { CreateCommunicationViewModel } from "@/viewmodels/admin/club/member/communication.models"; import type { CreateCommunicationViewModel } from "@/viewmodels/admin/communication.models";
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType"; import { useCommunicationTypeStore } from "@/stores/admin/communicationType";
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models"; import type { CommunicationTypeViewModel } from "@/viewmodels/admin/communicationType.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -41,7 +41,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCommunicationStore } from "@/stores/admin/club/member/communication"; import { useCommunicationStore } from "@/stores/admin/communication";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -71,12 +71,12 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCommunicationStore } from "@/stores/admin/club/member/communication"; import { useCommunicationStore } from "@/stores/admin/communication";
import type { import type {
CreateCommunicationViewModel, CreateCommunicationViewModel,
CommunicationViewModel, CommunicationViewModel,
UpdateCommunicationViewModel, UpdateCommunicationViewModel,
} from "@/viewmodels/admin/club/member/communication.models"; } from "@/viewmodels/admin/communication.models";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
</script> </script>

View file

@ -16,7 +16,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { CommunicationViewModel } from "@/viewmodels/admin/club/member/communication.models"; import type { CommunicationViewModel } from "@/viewmodels/admin/communication.models";
import { EnvelopeIcon, PencilIcon, TrashIcon, FireIcon } from "@heroicons/vue/24/outline"; import { EnvelopeIcon, PencilIcon, TrashIcon, FireIcon } from "@heroicons/vue/24/outline";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -99,14 +99,14 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { MembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models"; import type { CreateMembershipViewModel } from "@/viewmodels/admin/membership.models";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition"; import { useExecutivePositionStore } from "@/stores/admin/executivePosition";
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models"; import type { ExecutivePositionViewModel } from "@/viewmodels/admin/executivePosition.models";
import type { CreateMemberExecutivePositionViewModel } from "@/viewmodels/admin/club/member/memberExecutivePosition.models"; import type { CreateMemberExecutivePositionViewModel } from "@/viewmodels/admin/memberExecutivePosition.models";
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition"; import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -38,7 +38,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition"; import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -104,13 +104,13 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition"; import { useExecutivePositionStore } from "@/stores/admin/executivePosition";
import type { import type {
CreateMemberExecutivePositionViewModel, CreateMemberExecutivePositionViewModel,
MemberExecutivePositionViewModel, MemberExecutivePositionViewModel,
UpdateMemberExecutivePositionViewModel, UpdateMemberExecutivePositionViewModel,
} from "@/viewmodels/admin/club/member/memberExecutivePosition.models"; } from "@/viewmodels/admin/memberExecutivePosition.models";
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition"; import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
</script> </script>

View file

@ -14,7 +14,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { MemberExecutivePositionViewModel } from "@/viewmodels/admin/club/member/memberExecutivePosition.models"; import type { MemberExecutivePositionViewModel } from "@/viewmodels/admin/memberExecutivePosition.models";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -1,26 +1,42 @@
<template> <template>
<RouterLink <div class="flex flex-col h-fit w-full border border-primary rounded-md">
:to="{ name: 'admin-club-member-overview', params: { memberId: member.id } }" <RouterLink
class="flex flex-col h-fit w-full border border-primary rounded-md" :to="{ name: 'admin-club-member-overview', params: { memberId: member.id } }"
>
<div
class="bg-primary p-2 text-white flex flex-row justify-between items-center" class="bg-primary p-2 text-white flex flex-row justify-between items-center"
> >
<p>{{ member.lastname }}, {{ member.firstname }} {{ member.nameaffix ? `- ${member.nameaffix}` : "" }}</p> <p>{{ member.lastname }}, {{ member.firstname }} {{ member.nameaffix ? `- ${member.nameaffix}` : "" }}</p>
</div> <div v-if="false" class="flex flex-row">
<RouterLink
v-if="can('read', 'club', 'member')"
:to="{ name: 'admin-club-member-overview', params: { memberId: member.id } }"
>
<CircleStackIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
</RouterLink>
<RouterLink
v-if="can('update', 'club', 'member')"
:to="{ name: 'admin-club-member-edit', params: { id: member.id } }"
>
<PencilIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
</RouterLink>
<div v-if="can('delete', 'club', 'member')" @click="openDeleteModal">
<TrashIcon class="w-5 h-5 p-1 box-content cursor-pointer" />
</div>
</div>
</RouterLink>
<div class="p-2"> <div class="p-2">
<p v-if="member.internalId">Interne ID: {{ member.internalId }}</p>
<p>beigetreten: {{ member.firstMembershipEntry?.start }}</p> <p>beigetreten: {{ member.firstMembershipEntry?.start }}</p>
<p v-if="member.lastMembershipEntry?.end">ausgetreten: {{ member.lastMembershipEntry?.end }}, da {{member.lastMembershipEntry?.terminationReason ?? '- kein Grund angegeben'}}</p> <p v-if="member.lastMembershipEntry?.end">ausgetreten: {{ member.lastMembershipEntry?.end }}</p>
</div> </div>
</RouterLink> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, type PropType } from "vue"; import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon, CircleStackIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import { useModalStore } from "@/stores/modal";
import type { MemberViewModel } from "@/viewmodels/admin/member.models";
</script> </script>
<script lang="ts"> <script lang="ts">
@ -31,5 +47,14 @@ export default defineComponent({
computed: { computed: {
...mapState(useAbilityStore, ["can"]), ...mapState(useAbilityStore, ["can"]),
}, },
methods: {
...mapActions(useModalStore, ["openModal"]),
openDeleteModal() {
// this.openModal(
// markRaw(defineAsyncComponent(() => import("@/components/admin/.vue"))),
// this.member.id
// );
},
},
}); });
</script> </script>

View file

@ -106,14 +106,14 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { MembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models"; import type { CreateMembershipViewModel } from "@/viewmodels/admin/membership.models";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
import { useQualificationStore } from "@/stores/admin/settings/qualification"; import { useQualificationStore } from "@/stores/admin/qualification";
import type { QualificationViewModel } from "@/viewmodels/admin/settings/qualification.models"; import type { QualificationViewModel } from "@/viewmodels/admin/qualification.models";
import type { CreateMemberQualificationViewModel } from "@/viewmodels/admin/club/member/memberQualification.models"; import type { CreateMemberQualificationViewModel } from "@/viewmodels/admin/memberQualification.models";
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification"; import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -41,8 +41,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQualificationStore } from "@/stores/admin/settings/qualification"; import { useQualificationStore } from "@/stores/admin/qualification";
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification"; import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -105,13 +105,13 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useQualificationStore } from "@/stores/admin/settings/qualification"; import { useQualificationStore } from "@/stores/admin/qualification";
import type { import type {
CreateMemberQualificationViewModel, CreateMemberQualificationViewModel,
MemberQualificationViewModel, MemberQualificationViewModel,
UpdateMemberQualificationViewModel, UpdateMemberQualificationViewModel,
} from "@/viewmodels/admin/club/member/memberQualification.models"; } from "@/viewmodels/admin/memberQualification.models";
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification"; import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
</script> </script>

View file

@ -17,7 +17,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { MemberQualificationViewModel } from "@/viewmodels/admin/club/member/memberQualification.models"; import type { MemberQualificationViewModel } from "@/viewmodels/admin/memberQualification.models";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -63,6 +63,10 @@
</div> </div>
</Listbox> </Listbox>
</div> </div>
<div>
<label for="internalId">Interne ID (optional)</label>
<input type="text" id="internalId" />
</div>
<div> <div>
<label for="start">Startdatum</label> <label for="start">Startdatum</label>
<input type="date" id="start" required /> <input type="date" id="start" required />
@ -94,10 +98,10 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { MembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
import type { CreateMembershipViewModel } from "@/viewmodels/admin/club/member/membership.models"; import type { CreateMembershipViewModel } from "@/viewmodels/admin/membership.models";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
</script> </script>
<script lang="ts"> <script lang="ts">
@ -128,6 +132,7 @@ export default defineComponent({
if (this.selectedStatus == undefined) return; if (this.selectedStatus == undefined) return;
let formData = e.target.elements; let formData = e.target.elements;
let createMember: CreateMembershipViewModel = { let createMember: CreateMembershipViewModel = {
internalId: formData.internalId.value,
start: formData.start.value, start: formData.start.value,
statusId: this.selectedStatus.id, statusId: this.selectedStatus.id,
}; };

View file

@ -40,7 +40,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -63,6 +63,10 @@
</div> </div>
</Listbox> </Listbox>
</div> </div>
<div>
<label for="internalId">Interne ID (optional)</label>
<input type="text" id="internalId" v-model="membership.internalId" />
</div>
<div> <div>
<label for="start">Startdatum</label> <label for="start">Startdatum</label>
<input type="date" id="start" required v-model="membership.start" /> <input type="date" id="start" required v-model="membership.start" />
@ -101,13 +105,13 @@ import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { import type {
CreateMembershipViewModel, CreateMembershipViewModel,
MembershipViewModel, MembershipViewModel,
UpdateMembershipViewModel, UpdateMembershipViewModel,
} from "@/viewmodels/admin/club/member/membership.models"; } from "@/viewmodels/admin/membership.models";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
import isEqual from "lodash.isequal"; import isEqual from "lodash.isequal";
import cloneDeep from "lodash.clonedeep"; import cloneDeep from "lodash.clonedeep";
</script> </script>
@ -165,6 +169,7 @@ export default defineComponent({
let formData = e.target.elements; let formData = e.target.elements;
let updateMembership: UpdateMembershipViewModel = { let updateMembership: UpdateMembershipViewModel = {
id: this.membership.id, id: this.membership.id,
internalId: formData.internalId.value,
start: formData.start.value, start: formData.start.value,
end: formData.end.value, end: formData.end.value,
terminationReason: formData.terminationReason.value, terminationReason: formData.terminationReason.value,

View file

@ -8,8 +8,9 @@
<PencilIcon v-if="can('update', 'club', 'member')" class="w-5 h-5 cursor-pointer" @click="openEditModal" /> <PencilIcon v-if="can('update', 'club', 'member')" class="w-5 h-5 cursor-pointer" @click="openEditModal" />
<TrashIcon v-if="can('delete', 'club', 'member')" class="w-5 h-5 cursor-pointer" @click="openDeleteModal" /> <TrashIcon v-if="can('delete', 'club', 'member')" class="w-5 h-5 cursor-pointer" @click="openDeleteModal" />
</div> </div>
<div v-if="membership.terminationReason" class="p-2"> <div v-if="membership.terminationReason || membership.internalId" class="p-2">
<p v-if="membership.terminationReason">Grund: {{ membership.terminationReason }}</p> <p v-if="membership.internalId">Interne ID: {{ membership.internalId }}</p>
<p v-if="membership.terminationReason">beendet, weil: {{ membership.terminationReason }}</p>
</div> </div>
</div> </div>
</template> </template>
@ -17,7 +18,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { MembershipViewModel } from "@/viewmodels/admin/club/member/membership.models"; import type { MembershipViewModel } from "@/viewmodels/admin/membership.models";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";

View file

@ -34,10 +34,10 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import type { CreateProtocolViewModel } from "@/viewmodels/admin/club/protocol/protocol.models"; import type { CreateProtocolViewModel } from "@/viewmodels/admin/protocol.models";
import { useNewsletterStore } from "../../../../stores/admin/club/newsletter/newsletter"; import { useNewsletterStore } from "../../../../stores/admin/newsletter";
import type { CreateNewsletterViewModel } from "../../../../viewmodels/admin/club/newsletter/newsletter.models"; import type { CreateNewsletterViewModel } from "../../../../viewmodels/admin/newsletter.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -17,8 +17,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import type { CreateProtocolViewModel } from "@/viewmodels/admin/club/protocol/protocol.models"; import type { CreateProtocolViewModel } from "@/viewmodels/admin/protocol.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -16,7 +16,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { NewsletterViewModel } from "@/viewmodels/admin/club/newsletter/newsletter.models"; import type { NewsletterViewModel } from "@/viewmodels/admin/newsletter.models";
import { PaperAirplaneIcon } from "@heroicons/vue/24/outline"; import { PaperAirplaneIcon } from "@heroicons/vue/24/outline";
</script> </script>

View file

@ -15,7 +15,7 @@ import { mapState, mapActions } from "pinia";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import { useNewsletterPrintoutStore } from "@/stores/admin/club/newsletter/newsletterPrintout"; import { useNewsletterPrintoutStore } from "@/stores/admin/newsletterPrintout";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -16,10 +16,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { useNewsletterStore } from "@/stores/admin/club/newsletter/newsletter"; import { useNewsletterStore } from "@/stores/admin/newsletter";
import { ArrowPathIcon, CloudArrowUpIcon, CloudIcon, ExclamationTriangleIcon } from "@heroicons/vue/24/outline"; import { ArrowPathIcon, CloudArrowUpIcon, CloudIcon, ExclamationTriangleIcon } from "@heroicons/vue/24/outline";
import { useNewsletterDatesStore } from "@/stores/admin/club/newsletter/newsletterDates"; import { useNewsletterDatesStore } from "@/stores/admin/newsletterDates";
import { useNewsletterRecipientsStore } from "@/stores/admin/club/newsletter/newsletterRecipients"; import { useNewsletterRecipientsStore } from "@/stores/admin/newsletterRecipients";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -38,8 +38,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import type { CreateProtocolViewModel } from "@/viewmodels/admin/club/protocol/protocol.models"; import type { CreateProtocolViewModel } from "@/viewmodels/admin/protocol.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -17,8 +17,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import type { CreateProtocolViewModel } from "@/viewmodels/admin/club/protocol/protocol.models"; import type { CreateProtocolViewModel } from "@/viewmodels/admin/protocol.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -15,7 +15,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { ProtocolViewModel } from "@/viewmodels/admin/club/protocol/protocol.models"; import type { ProtocolViewModel } from "@/viewmodels/admin/protocol.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -13,7 +13,7 @@ import { defineComponent } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import { useProtocolPrintoutStore } from "@/stores/admin/club/protocol/protocolPrintout"; import { useProtocolPrintoutStore } from "@/stores/admin/protocolPrintout";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -16,12 +16,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import { ArrowPathIcon, CloudArrowUpIcon, CloudIcon, ExclamationTriangleIcon } from "@heroicons/vue/24/outline"; import { ArrowPathIcon, CloudArrowUpIcon, CloudIcon, ExclamationTriangleIcon } from "@heroicons/vue/24/outline";
import { useProtocolAgendaStore } from "@/stores/admin/club/protocol/protocolAgenda"; import { useProtocolAgendaStore } from "@/stores/admin/protocolAgenda";
import { useProtocolPresenceStore } from "@/stores/admin/club/protocol/protocolPresence"; import { useProtocolPresenceStore } from "@/stores/admin/protocolPresence";
import { useProtocolDecisionStore } from "@/stores/admin/club/protocol/protocolDecision"; import { useProtocolDecisionStore } from "@/stores/admin/protocolDecision";
import { useProtocolVotingStore } from "@/stores/admin/club/protocol/protocolVoting"; import { useProtocolVotingStore } from "@/stores/admin/protocolVoting";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { AwardViewModel } from "@/viewmodels/admin/settings/award.models"; import type { AwardViewModel } from "@/viewmodels/admin/award.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -32,8 +32,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useAwardStore } from "@/stores/admin/settings/award"; import { useAwardStore } from "@/stores/admin/award";
import type { CreateAwardViewModel } from "@/viewmodels/admin/settings/award.models"; import type { CreateAwardViewModel } from "@/viewmodels/admin/award.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,8 +29,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
import { useAwardStore } from "@/stores/admin/settings/award"; import { useAwardStore } from "@/stores/admin/award";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -30,7 +30,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon, EyeIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon, EyeIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { CalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models"; import type { CalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -51,8 +51,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType"; import { useCalendarTypeStore } from "@/stores/admin/calendarType";
import type { CreateCalendarTypeViewModel } from "@/viewmodels/admin/settings/calendarType.models"; import type { CreateCalendarTypeViewModel } from "@/viewmodels/admin/calendarType.models";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
</script> </script>

View file

@ -29,7 +29,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCalendarTypeStore } from "@/stores/admin/settings/calendarType"; import { useCalendarTypeStore } from "@/stores/admin/calendarType";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -33,7 +33,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models"; import type { CommunicationTypeViewModel } from "@/viewmodels/admin/communicationType.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -78,8 +78,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType"; import { useCommunicationTypeStore } from "@/stores/admin/communicationType";
import type { CreateCommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models"; import type { CreateCommunicationTypeViewModel } from "@/viewmodels/admin/communicationType.models";
import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue"; import { Listbox, ListboxButton, ListboxOptions, ListboxOption, ListboxLabel } from "@headlessui/vue";
import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid";
import type { CommunicationFieldType } from "@/types/fieldTypes"; import type { CommunicationFieldType } from "@/types/fieldTypes";

View file

@ -29,7 +29,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useCommunicationTypeStore } from "@/stores/admin/settings/communicationType"; import { useCommunicationTypeStore } from "@/stores/admin/communicationType";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -32,8 +32,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition"; import { useExecutivePositionStore } from "@/stores/admin/executivePosition";
import type { CreateExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models"; import type { CreateExecutivePositionViewModel } from "@/viewmodels/admin/executivePosition.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,8 +29,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
import { useExecutivePositionStore } from "@/stores/admin/settings/executivePosition"; import { useExecutivePositionStore } from "@/stores/admin/executivePosition";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { ExecutivePositionViewModel } from "@/viewmodels/admin/settings/executivePosition.models"; import type { ExecutivePositionViewModel } from "@/viewmodels/admin/executivePosition.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -32,8 +32,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
import type { CreateMembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { CreateMembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,8 +29,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
import { useMembershipStatusStore } from "@/stores/admin/settings/membershipStatus"; import { useMembershipStatusStore } from "@/stores/admin/membershipStatus";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -23,7 +23,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { MembershipStatusViewModel } from "@/viewmodels/admin/settings/membershipStatus.models"; import type { MembershipStatusViewModel } from "@/viewmodels/admin/membershipStatus.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,14 +29,14 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/vue/24/outline"; import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/vue/24/outline";
import { useNewsletterConfigStore } from "@/stores/admin/settings/newsletterConfig"; import { useNewsletterConfigStore } from "@/stores/admin/newsletterConfig";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import { NewsletterConfigType } from "@/enums/newsletterConfigType"; import { NewsletterConfigType } from "@/enums/newsletterConfigType";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { CommunicationTypeViewModel } from "@/viewmodels/admin/settings/communicationType.models"; import type { CommunicationTypeViewModel } from "@/viewmodels/admin/communicationType.models";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
</script> </script>

View file

@ -36,8 +36,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQualificationStore } from "@/stores/admin/settings/qualification"; import { useQualificationStore } from "@/stores/admin/qualification";
import type { CreateQualificationViewModel } from "@/viewmodels/admin/settings/qualification.models"; import type { CreateQualificationViewModel } from "@/viewmodels/admin/qualification.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,8 +29,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
import { useQualificationStore } from "@/stores/admin/settings/qualification"; import { useQualificationStore } from "@/stores/admin/qualification";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,7 +29,7 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { QualificationViewModel } from "@/viewmodels/admin/settings/qualification.models"; import type { QualificationViewModel } from "@/viewmodels/admin/qualification.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -32,9 +32,9 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore"; import { useQueryStoreStore } from "@/stores/admin/queryStore";
import type { CreateQueryViewModel } from "@/viewmodels/admin/settings/query.models"; import type { CreateQueryViewModel } from "@/viewmodels/admin/query.models";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,7 +29,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore"; import { useQueryStoreStore } from "@/stores/admin/queryStore";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -23,8 +23,8 @@ import { mapState, mapActions, mapWritableState } from "pinia";
import { EyeIcon, PencilIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { EyeIcon, PencilIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { QueryViewModel } from "@/viewmodels/admin/settings/query.models"; import type { QueryViewModel } from "@/viewmodels/admin/query.models";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -34,9 +34,9 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore"; import { useQueryStoreStore } from "@/stores/admin/queryStore";
import type { CreateQueryViewModel, UpdateQueryViewModel } from "@/viewmodels/admin/settings/query.models"; import type { CreateQueryViewModel, UpdateQueryViewModel } from "@/viewmodels/admin/query.models";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -36,8 +36,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useTemplateStore } from "@/stores/admin/settings/template"; import { useTemplateStore } from "@/stores/admin/template";
import type { CreateTemplateViewModel } from "@/viewmodels/admin/settings/template.models"; import type { CreateTemplateViewModel } from "@/viewmodels/admin/template.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,8 +29,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore"; import { useQueryStoreStore } from "@/stores/admin/queryStore";
import { useTemplateStore } from "@/stores/admin/settings/template"; import { useTemplateStore } from "@/stores/admin/template";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -35,8 +35,8 @@ import { mapState, mapActions } from "pinia";
import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, TrashIcon, DocumentDuplicateIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import type { TemplateViewModel } from "@/viewmodels/admin/settings/template.models"; import type { TemplateViewModel } from "@/viewmodels/admin/template.models";
import { useTemplateStore } from "@/stores/admin/settings/template"; import { useTemplateStore } from "@/stores/admin/template";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";

View file

@ -14,7 +14,7 @@ import { defineComponent } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import { useTemplateUsageStore } from "@/stores/admin/settings/templateUsage"; import { useTemplateUsageStore } from "@/stores/admin/templateUsage";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -18,18 +18,12 @@
</div> </div>
</div> </div>
<div class="flex flex-col p-2 gap-2"> <div class="flex flex-col p-2 gap-2">
<div class="flex flex-col md:flex-row gap-2 md:items-center"> <div class="flex flex-row gap-2 items-center">
<div class="flex flex-row w-full gap-2 items-center"> <p class="min-w-16">Kopfzeile:</p>
<p class="min-w-16">Kopfzeile:</p> <select ref="header" id="header" :value="templateUsage.header?.id ?? 'def'">
<select ref="header" id="header" :value="templateUsage.header?.id ?? 'def'"> <option value="def">Standard-Vorlage verwenden</option>
<option value="def">Standard-Vorlage verwenden</option> <option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option>
<option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option> </select>
</select>
</div>
<div class="flex flex-row gap-2 items-center">
<p class="whitespace-nowrap">Höhe [mm]:</p>
<input id="headerHeight" type="number" :min="15" v-model="templateUsage.headerHeight" class="!w-24" placeholder="15">
</div>
</div> </div>
<div class="flex flex-row gap-2 items-center"> <div class="flex flex-row gap-2 items-center">
<p class="min-w-16">Hauptteil:</p> <p class="min-w-16">Hauptteil:</p>
@ -38,18 +32,12 @@
<option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option> <option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option>
</select> </select>
</div> </div>
<div class="flex flex-col md:flex-row gap-2 md:items-center"> <div class="flex flex-row gap-2 items-center">
<div class="flex flex-row w-full gap-2 items-center"> <p class="min-w-16">Fußzeile:</p>
<p class="min-w-16">Fußzeile:</p> <select ref="footer" id="footer" :value="templateUsage.footer?.id ?? 'def'">
<select ref="footer" id="footer" :value="templateUsage.footer?.id ?? 'def'"> <option value="def">Standard-Vorlage verwenden</option>
<option value="def">Standard-Vorlage verwenden</option> <option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option>
<option v-for="template in templates" :key="template.id" :value="template.id">{{ template.template }}</option> </select>
</select>
</div>
<div class="flex flex-row gap-2 items-center">
<p class="whitespace-nowrap">Höhe [mm]:</p>
<input id="footerHeight" type="number" :min="15" v-model="templateUsage.footerHeight" class="!w-24" placeholder="15">
</div>
</div> </div>
</div> </div>
</form> </form>
@ -59,9 +47,9 @@
import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue"; import { defineAsyncComponent, defineComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon, EyeIcon } from "@heroicons/vue/24/outline"; import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon, EyeIcon } from "@heroicons/vue/24/outline";
import type { TemplateUsageViewModel } from "@/viewmodels/admin/settings/templateUsage.models"; import type { TemplateUsageViewModel } from "@/viewmodels/admin/templateUsage.models";
import { useTemplateStore } from "@/stores/admin/settings/template"; import { useTemplateStore } from "@/stores/admin/template";
import { useTemplateUsageStore } from "@/stores/admin/settings/templateUsage"; import { useTemplateUsageStore } from "@/stores/admin/templateUsage";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
@ -103,8 +91,6 @@ export default defineComponent({
const headerId = fromData.header.value === "def" ? null : fromData.header.value; const headerId = fromData.header.value === "def" ? null : fromData.header.value;
const bodyId = fromData.body.value === "def" ? null : fromData.body.value; const bodyId = fromData.body.value === "def" ? null : fromData.body.value;
const footerId = fromData.footer.value === "def" ? null : fromData.footer.value; const footerId = fromData.footer.value === "def" ? null : fromData.footer.value;
const headerHeight = fromData.footer.value === "" ? null : parseInt(fromData.headerHeight.value);
const footerHeight = fromData.footer.value === "" ? null : parseInt(fromData.footerHeight.value);
this.status = "loading" this.status = "loading"
this.updateTemplateUsage({ this.updateTemplateUsage({
@ -112,8 +98,6 @@ export default defineComponent({
headerId: headerId, headerId: headerId,
bodyId: bodyId, bodyId: bodyId,
footerId: footerId, footerId: footerId,
headerHeight:headerHeight,
footerHeight: footerHeight
}) })
.then(() => { .then(() => {
this.status = { status: "success" }; this.status = { status: "success" };

View file

@ -32,7 +32,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -29,7 +29,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useRoleStore } from "@/stores/admin/user/role"; import { useRoleStore } from "@/stores/admin/role";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -27,7 +27,7 @@
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue"; import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import { PencilIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
import type { RoleViewModel } from "@/viewmodels/admin/user/role.models"; import type { RoleViewModel } from "@/viewmodels/admin/role.models";
import { RouterLink } from "vue-router"; import { RouterLink } from "vue-router";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";

View file

@ -29,7 +29,7 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useUserStore } from "@/stores/admin/user/user"; import { useUserStore } from "@/stores/admin/user";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -24,10 +24,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { InviteViewModel } from "@/viewmodels/admin/user/invite.models"; import type { InviteViewModel } from "@/viewmodels/admin/invite.models";
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useInviteStore } from "@/stores/admin/user/invite"; import { useInviteStore } from "@/stores/admin/invite";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -45,8 +45,8 @@ import { useModalStore } from "@/stores/modal";
import Spinner from "@/components/Spinner.vue"; import Spinner from "@/components/Spinner.vue";
import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue";
import FailureXMark from "@/components/FailureXMark.vue"; import FailureXMark from "@/components/FailureXMark.vue";
import { useInviteStore } from "@/stores/admin/user/invite"; import { useInviteStore } from "@/stores/admin/invite";
import type { CreateInviteViewModel } from "@/viewmodels/admin/user/invite.models"; import type { CreateInviteViewModel } from "@/viewmodels/admin/invite.models";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -53,7 +53,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue"; import { defineComponent, defineAsyncComponent, markRaw, type PropType } from "vue";
import { mapState, mapActions } from "pinia"; import { mapState, mapActions } from "pinia";
import type { UserViewModel } from "@/viewmodels/admin/user/user.models"; import type { UserViewModel } from "@/viewmodels/admin/user.models";
import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline"; import { PencilIcon, UserGroupIcon, WrenchScrewdriverIcon, TrashIcon } from "@heroicons/vue/24/outline";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";

View file

@ -97,11 +97,11 @@ import {
TrashIcon, TrashIcon,
SparklesIcon, SparklesIcon,
} from "@heroicons/vue/24/outline"; } from "@heroicons/vue/24/outline";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import { useModalStore } from "@/stores/modal"; import { useModalStore } from "@/stores/modal";
import Table from "./Table.vue"; import Table from "./Table.vue";
import { useAbilityStore } from "@/stores/ability"; import { useAbilityStore } from "@/stores/ability";
import { useQueryStoreStore } from "@/stores/admin/settings/queryStore"; import { useQueryStoreStore } from "@/stores/admin/queryStore";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -25,7 +25,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -61,7 +61,7 @@ import {
type WhereOperation, type WhereOperation,
type WhereType, type WhereType,
} from "@/types/dynamicQueries"; } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import { TrashIcon } from "@heroicons/vue/24/outline"; import { TrashIcon } from "@heroicons/vue/24/outline";
</script> </script>

View file

@ -22,7 +22,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { DynamicQueryStructure } from "@/types/dynamicQueries"; import type { DynamicQueryStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import { PlusIcon } from "@heroicons/vue/24/outline"; import { PlusIcon } from "@heroicons/vue/24/outline";
import JoinTable from "./JoinTable.vue"; import JoinTable from "./JoinTable.vue";
</script> </script>

View file

@ -21,7 +21,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { DynamicQueryStructure } from "@/types/dynamicQueries"; import type { DynamicQueryStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import Table from "./Table.vue"; import Table from "./Table.vue";
import { TrashIcon } from "@heroicons/vue/24/outline"; import { TrashIcon } from "@heroicons/vue/24/outline";
import { joinTableName } from "@/helpers/queryFormatter"; import { joinTableName } from "@/helpers/queryFormatter";

View file

@ -20,7 +20,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { ConditionStructure, WhereType } from "@/types/dynamicQueries"; import type { ConditionStructure, WhereType } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import { TrashIcon } from "@heroicons/vue/24/outline"; import { TrashIcon } from "@heroicons/vue/24/outline";
import NestedWhere from "./NestedWhere.vue"; import NestedWhere from "./NestedWhere.vue";
</script> </script>

View file

@ -33,7 +33,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { ConditionStructure } from "@/types/dynamicQueries"; import type { ConditionStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import NestedCondition from "./NestedCondition.vue"; import NestedCondition from "./NestedCondition.vue";
import Condition from "./Condition.vue"; import Condition from "./Condition.vue";
import { PlusIcon, RectangleStackIcon } from "@heroicons/vue/24/outline"; import { PlusIcon, RectangleStackIcon } from "@heroicons/vue/24/outline";

View file

@ -23,7 +23,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { OrderByStructure } from "@/types/dynamicQueries"; import type { OrderByStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import OrderStructure from "./OrderStructure.vue"; import OrderStructure from "./OrderStructure.vue";
import { PlusIcon } from "@heroicons/vue/24/outline"; import { PlusIcon } from "@heroicons/vue/24/outline";
</script> </script>

View file

@ -22,7 +22,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { OrderByStructure, OrderByType } from "@/types/dynamicQueries"; import type { OrderByStructure, OrderByType } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import { TrashIcon } from "@heroicons/vue/24/outline"; import { TrashIcon } from "@heroicons/vue/24/outline";
</script> </script>

View file

@ -12,7 +12,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { ConditionStructure, DynamicQueryStructure, OrderByStructure } from "@/types/dynamicQueries"; import type { ConditionStructure, DynamicQueryStructure, OrderByStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import ColumnSelect from "./ColumnSelect.vue"; import ColumnSelect from "./ColumnSelect.vue";
import Where from "./Where.vue"; import Where from "./Where.vue";
import Order from "./Order.vue"; import Order from "./Order.vue";

View file

@ -13,7 +13,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import { mapState } from "pinia"; import { mapState } from "pinia";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
</script> </script>
<script lang="ts"> <script lang="ts">

View file

@ -34,7 +34,7 @@
import { defineComponent, type PropType } from "vue"; import { defineComponent, type PropType } from "vue";
import { mapActions, mapState } from "pinia"; import { mapActions, mapState } from "pinia";
import type { ConditionStructure } from "@/types/dynamicQueries"; import type { ConditionStructure } from "@/types/dynamicQueries";
import { useQueryBuilderStore } from "@/stores/admin/club/queryBuilder"; import { useQueryBuilderStore } from "@/stores/admin/queryBuilder";
import NestedCondition from "./NestedCondition.vue"; import NestedCondition from "./NestedCondition.vue";
import Condition from "./Condition.vue"; import Condition from "./Condition.vue";
import { PlusIcon, RectangleStackIcon } from "@heroicons/vue/24/outline"; import { PlusIcon, RectangleStackIcon } from "@heroicons/vue/24/outline";

View file

@ -320,12 +320,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-qualification", name: "admin-settings-qualification",
component: () => import("@/views/admin/settings/qualification/Qualification.vue"), component: () => import("@/views/admin/settings/Qualification.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-qualification-edit", name: "admin-settings-qualification-edit",
component: () => import("@/views/admin/settings/qualification/QualificationEdit.vue"), component: () => import("@/views/admin/settings/QualificationEdit.vue"),
meta: { type: "update", section: "settings", module: "qualification" }, meta: { type: "update", section: "settings", module: "qualification" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -342,12 +342,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-award", name: "admin-settings-award",
component: () => import("@/views/admin/settings/award/Award.vue"), component: () => import("@/views/admin/settings/Award.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-award-edit", name: "admin-settings-award-edit",
component: () => import("@/views/admin/settings/award/AwardEdit.vue"), component: () => import("@/views/admin/settings/AwardEdit.vue"),
meta: { type: "update", section: "settings", module: "award" }, meta: { type: "update", section: "settings", module: "award" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -364,14 +364,14 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-executive_position", name: "admin-settings-executive_position",
component: () => import("@/views/admin/settings/executivePosition/ExecutivePosition.vue"), component: () => import("@/views/admin/settings/ExecutivePosition.vue"),
meta: { type: "read", section: "settings", module: "executive_position" }, meta: { type: "read", section: "settings", module: "executive_position" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-executive_position-edit", name: "admin-settings-executive_position-edit",
component: () => import("@/views/admin/settings/executivePosition/ExecutivePositionEdit.vue"), component: () => import("@/views/admin/settings/ExecutivePositionEdit.vue"),
meta: { type: "update", section: "settings", module: "executive_position" }, meta: { type: "update", section: "settings", module: "executive_position" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -388,12 +388,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-communication_type", name: "admin-settings-communication_type",
component: () => import("@/views/admin/settings/communicationType/CommunicationType.vue"), component: () => import("@/views/admin/settings/CommunicationType.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-communication_type-edit", name: "admin-settings-communication_type-edit",
component: () => import("@/views/admin/settings/communicationType/CommunicationTypeEdit.vue"), component: () => import("@/views/admin/settings/CommunicationTypeEdit.vue"),
meta: { type: "update", section: "settings", module: "communication_type" }, meta: { type: "update", section: "settings", module: "communication_type" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -410,12 +410,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-membership_status", name: "admin-settings-membership_status",
component: () => import("@/views/admin/settings/membershipStatus/MembershipStatus.vue"), component: () => import("@/views/admin/settings/MembershipStatus.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-membership_status-edit", name: "admin-settings-membership_status-edit",
component: () => import("@/views/admin/settings/membershipStatus/MembershipStatusEdit.vue"), component: () => import("@/views/admin/settings/MembershipStatusEdit.vue"),
meta: { type: "update", section: "settings", module: "membership_status" }, meta: { type: "update", section: "settings", module: "membership_status" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -432,12 +432,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-settings-calendar_type", name: "admin-settings-calendar_type",
component: () => import("@/views/admin/settings/calendarType/CalendarType.vue"), component: () => import("@/views/admin/settings/CalendarType.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-settings-calendar_type-edit", name: "admin-settings-calendar_type-edit",
component: () => import("@/views/admin/settings/calendarType/CalendarTypeEdit.vue"), component: () => import("@/views/admin/settings/CalendarTypeEdit.vue"),
meta: { type: "update", section: "settings", module: "calendar_type" }, meta: { type: "update", section: "settings", module: "calendar_type" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -447,7 +447,7 @@ const router = createRouter({
{ {
path: "query-store", path: "query-store",
name: "admin-settings-query_store", name: "admin-settings-query_store",
component: () => import("@/views/admin/settings/queryStore/QueryStore.vue"), component: () => import("@/views/admin/settings/QueryStore.vue"),
meta: { type: "read", section: "settings", module: "query_store" }, meta: { type: "read", section: "settings", module: "query_store" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
}, },
@ -519,17 +519,17 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-user-user", name: "admin-user-user",
component: () => import("@/views/admin/user/user/User.vue"), component: () => import("@/views/admin/user/User.vue"),
}, },
{ {
path: "invites", path: "invites",
name: "admin-user-user-invites", name: "admin-user-user-invites",
component: () => import("@/views/admin/user/user/Invite.vue"), component: () => import("@/views/admin/user/Invite.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-user-user-edit", name: "admin-user-user-edit",
component: () => import("@/views/admin/user/user/UserEdit.vue"), component: () => import("@/views/admin/user/UserEdit.vue"),
meta: { type: "update", section: "user", module: "user" }, meta: { type: "update", section: "user", module: "user" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -537,7 +537,7 @@ const router = createRouter({
{ {
path: ":id/permission", path: ":id/permission",
name: "admin-user-user-permission", name: "admin-user-user-permission",
component: () => import("@/views/admin/user/user/UserEditPermission.vue"), component: () => import("@/views/admin/user/UserEditPermission.vue"),
meta: { type: "update", section: "user", module: "user" }, meta: { type: "update", section: "user", module: "user" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -545,7 +545,7 @@ const router = createRouter({
{ {
path: ":id/roles", path: ":id/roles",
name: "admin-user-user-roles", name: "admin-user-user-roles",
component: () => import("@/views/admin/user/user/UserEditRoles.vue"), component: () => import("@/views/admin/user/UserEditRoles.vue"),
meta: { type: "update", section: "user", module: "user" }, meta: { type: "update", section: "user", module: "user" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -562,12 +562,12 @@ const router = createRouter({
{ {
path: "", path: "",
name: "admin-user-role", name: "admin-user-role",
component: () => import("@/views/admin/user/role/Role.vue"), component: () => import("@/views/admin/user/Role.vue"),
}, },
{ {
path: ":id/edit", path: ":id/edit",
name: "admin-user-role-edit", name: "admin-user-role-edit",
component: () => import("@/views/admin/user/role/RoleEdit.vue"), component: () => import("@/views/admin/user/RoleEdit.vue"),
meta: { type: "update", section: "user", module: "role" }, meta: { type: "update", section: "user", module: "role" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,
@ -575,7 +575,7 @@ const router = createRouter({
{ {
path: ":id/permission", path: ":id/permission",
name: "admin-user-role-permission", name: "admin-user-role-permission",
component: () => import("@/views/admin/user/role/RoleEditPermission.vue"), component: () => import("@/views/admin/user/RoleEditPermission.vue"),
meta: { type: "update", section: "user", module: "role" }, meta: { type: "update", section: "user", module: "role" },
beforeEnter: [abilityAndNavUpdate], beforeEnter: [abilityAndNavUpdate],
props: true, props: true,

View file

@ -1,9 +1,9 @@
import { useCommunicationStore } from "@/stores/admin/club/member/communication"; import { useCommunicationStore } from "@/stores/admin/communication";
import { useMemberStore } from "@/stores/admin/club/member/member"; import { useMemberStore } from "@/stores/admin/member";
import { useMemberAwardStore } from "@/stores/admin/club/member/memberAward"; import { useMemberAwardStore } from "@/stores/admin/memberAward";
import { useMemberExecutivePositionStore } from "@/stores/admin/club/member/memberExecutivePosition"; import { useMemberExecutivePositionStore } from "@/stores/admin/memberExecutivePosition";
import { useMemberQualificationStore } from "@/stores/admin/club/member/memberQualification"; import { useMemberQualificationStore } from "@/stores/admin/memberQualification";
import { useMembershipStore } from "@/stores/admin/club/member/membership"; import { useMembershipStore } from "@/stores/admin/membership";
export async function setMemberId(to: any, from: any, next: any) { export async function setMemberId(to: any, from: any, next: any) {
const member = useMemberStore(); const member = useMemberStore();

View file

@ -1,7 +1,7 @@
import { useNewsletterStore } from "@/stores/admin/club/newsletter/newsletter"; import { useNewsletterStore } from "@/stores/admin/newsletter";
import { useNewsletterDatesStore } from "@/stores/admin/club/newsletter/newsletterDates"; import { useNewsletterDatesStore } from "@/stores/admin/newsletterDates";
import { useNewsletterRecipientsStore } from "@/stores/admin/club/newsletter/newsletterRecipients"; import { useNewsletterRecipientsStore } from "@/stores/admin/newsletterRecipients";
import { useNewsletterPrintoutStore } from "../stores/admin/club/newsletter/newsletterPrintout"; import { useNewsletterPrintoutStore } from "../stores/admin/newsletterPrintout";
export async function setNewsletterId(to: any, from: any, next: any) { export async function setNewsletterId(to: any, from: any, next: any) {
const newsletter = useNewsletterStore(); const newsletter = useNewsletterStore();

View file

@ -1,9 +1,9 @@
import { useProtocolStore } from "@/stores/admin/club/protocol/protocol"; import { useProtocolStore } from "@/stores/admin/protocol";
import { useProtocolAgendaStore } from "@/stores/admin/club/protocol/protocolAgenda"; import { useProtocolAgendaStore } from "@/stores/admin/protocolAgenda";
import { useProtocolDecisionStore } from "@/stores/admin/club/protocol/protocolDecision"; import { useProtocolDecisionStore } from "@/stores/admin/protocolDecision";
import { useProtocolPresenceStore } from "@/stores/admin/club/protocol/protocolPresence"; import { useProtocolPresenceStore } from "@/stores/admin/protocolPresence";
import { useProtocolVotingStore } from "@/stores/admin/club/protocol/protocolVoting"; import { useProtocolVotingStore } from "@/stores/admin/protocolVoting";
import { useProtocolPrintoutStore } from "../stores/admin/club/protocol/protocolPrintout"; import { useProtocolPrintoutStore } from "../stores/admin/protocolPrintout";
export async function setProtocolId(to: any, from: any, next: any) { export async function setProtocolId(to: any, from: any, next: any) {
const protocol = useProtocolStore(); const protocol = useProtocolStore();

View file

@ -1,5 +1,5 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "@/viewmodels/admin/settings/award.models"; import type { CreateAwardViewModel, UpdateAwardViewModel, AwardViewModel } from "@/viewmodels/admin/award.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";

View file

@ -3,7 +3,7 @@ import type {
CreateCalendarViewModel, CreateCalendarViewModel,
UpdateCalendarViewModel, UpdateCalendarViewModel,
CalendarViewModel, CalendarViewModel,
} from "@/viewmodels/admin/club/calendar.models"; } from "@/viewmodels/admin/calendar.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";

View file

@ -3,7 +3,7 @@ import type {
CreateCalendarTypeViewModel, CreateCalendarTypeViewModel,
UpdateCalendarTypeViewModel, UpdateCalendarTypeViewModel,
CalendarTypeViewModel, CalendarTypeViewModel,
} from "@/viewmodels/admin/settings/calendarType.models"; } from "@/viewmodels/admin/calendarType.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";

View file

@ -1,14 +1,14 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member"; import { useMemberStore } from "./member";
import type { import type {
CreateCommunicationViewModel, CreateCommunicationViewModel,
CommunicationViewModel, CommunicationViewModel,
UpdateCommunicationViewModel, UpdateCommunicationViewModel,
} from "@/viewmodels/admin/club/member/communication.models"; } from "@/viewmodels/admin/communication.models";
export const useCommunicationStore = defineStore("communication", { export const useCommunicationStore = defineStore("communication", {
state: () => { state: () => {

View file

@ -3,7 +3,7 @@ import type {
CreateCommunicationTypeViewModel, CreateCommunicationTypeViewModel,
UpdateCommunicationTypeViewModel, UpdateCommunicationTypeViewModel,
CommunicationTypeViewModel, CommunicationTypeViewModel,
} from "@/viewmodels/admin/settings/communicationType.models"; } from "@/viewmodels/admin/communicationType.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { CommunicationFieldType } from "@/types/fieldTypes"; import type { CommunicationFieldType } from "@/types/fieldTypes";

View file

@ -3,7 +3,7 @@ import type {
CreateExecutivePositionViewModel, CreateExecutivePositionViewModel,
UpdateExecutivePositionViewModel, UpdateExecutivePositionViewModel,
ExecutivePositionViewModel, ExecutivePositionViewModel,
} from "@/viewmodels/admin/settings/executivePosition.models"; } from "@/viewmodels/admin/executivePosition.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";

View file

@ -1,5 +1,5 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateInviteViewModel, InviteViewModel } from "@/viewmodels/admin/user/invite.models"; import type { CreateInviteViewModel, InviteViewModel } from "@/viewmodels/admin/invite.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { PermissionObject } from "@/types/permissionTypes"; import type { PermissionObject } from "@/types/permissionTypes";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";

View file

@ -1,8 +1,8 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { MemberViewModel } from "@/viewmodels/admin/member.models";
export const useMemberStore = defineStore("member", { export const useMemberStore = defineStore("member", {
state: () => { state: () => {
@ -16,11 +16,11 @@ export const useMemberStore = defineStore("member", {
}; };
}, },
actions: { actions: {
fetchMembers(offset = 0, count = 25, search = "", clear = false) { fetchMembers(offset = 0, count = 25, clear = false) {
if (clear) this.members = []; if (clear) this.members = [];
this.loading = "loading"; this.loading = "loading";
http http
.get(`/admin/member?offset=${offset}&count=${count}${search != "" ? "&search=" + search : ""}`) .get(`/admin/member?offset=${offset}&count=${count}`)
.then((result) => { .then((result) => {
this.totalCount = result.data.total; this.totalCount = result.data.total;
result.data.members result.data.members
@ -62,7 +62,6 @@ export const useMemberStore = defineStore("member", {
lastname: member.lastname, lastname: member.lastname,
nameaffix: member.nameaffix, nameaffix: member.nameaffix,
birthdate: member.birthdate, birthdate: member.birthdate,
internalId: member.internalId,
}); });
this.fetchMembers(); this.fetchMembers();
return result; return result;
@ -74,7 +73,6 @@ export const useMemberStore = defineStore("member", {
lastname: member.lastname, lastname: member.lastname,
nameaffix: member.nameaffix, nameaffix: member.nameaffix,
birthdate: member.birthdate, birthdate: member.birthdate,
internalId: member.internalId,
}); });
this.fetchMembers(); this.fetchMembers();
return result; return result;

View file

@ -1,14 +1,14 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member"; import { useMemberStore } from "./member";
import type { import type {
CreateMemberAwardViewModel, CreateMemberAwardViewModel,
MemberAwardViewModel, MemberAwardViewModel,
UpdateMemberAwardViewModel, UpdateMemberAwardViewModel,
} from "@/viewmodels/admin/club/member/memberAward.models"; } from "@/viewmodels/admin/memberAward.models";
export const useMemberAwardStore = defineStore("memberAward", { export const useMemberAwardStore = defineStore("memberAward", {
state: () => { state: () => {

View file

@ -1,14 +1,14 @@
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { CreateMemberViewModel, UpdateMemberViewModel } from "@/viewmodels/admin/member.models";
import { http } from "@/serverCom"; import { http } from "@/serverCom";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import type { MemberViewModel } from "@/viewmodels/admin/member.models";
import { useMemberStore } from "./member"; import { useMemberStore } from "./member";
import type { import type {
CreateMemberExecutivePositionViewModel, CreateMemberExecutivePositionViewModel,
MemberExecutivePositionViewModel, MemberExecutivePositionViewModel,
UpdateMemberExecutivePositionViewModel, UpdateMemberExecutivePositionViewModel,
} from "@/viewmodels/admin/club/member/memberExecutivePosition.models"; } from "@/viewmodels/admin/memberExecutivePosition.models";
export const useMemberExecutivePositionStore = defineStore("memberExecutivePosition", { export const useMemberExecutivePositionStore = defineStore("memberExecutivePosition", {
state: () => { state: () => {

Some files were not shown because too many files have changed in this diff Show more