add feature to set user defined expiration on every user close #4

This commit is contained in:
Adrian Zürcher
2025-11-08 12:09:56 +01:00
parent db96732a62
commit 06afdf4349
13 changed files with 110 additions and 30 deletions

View File

@@ -18,7 +18,15 @@
<q-btn class="q-ma-md" color="primary" no-caps @click="addAttendees">{{ localTitle }}</q-btn>
</div>
</DialogFrame>
<EditAllDialog ref="newEventRef" v-on:update="(val) => resolveNewEvent(val)"></EditAllDialog>
<EditAllDialog
ref="newEventRef"
v-on:update="
(val) => {
resolveNewEvent(val);
NotifyResponse($t('memberUpdated'));
}
"
></EditAllDialog>
</template>
<script setup lang="ts">

View File

@@ -2,24 +2,46 @@
<DialogFrame ref="dialog" :header-title="'Edit ' + localTitle">
<div class="row justify-center">
<q-input autofocus :label="localTitle" filled v-model="value" @keyup.enter="save">
<template v-if="['firstVisit', 'lastVisit', 'date'].includes(localField)" v-slot:prepend>
<template
v-if="['firstVisit', 'lastVisit', 'date', 'expiration'].includes(localField)"
v-slot:prepend
>
<q-icon name="event" class="cursor-pointer">
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
<q-date v-model="value" mask="YYYY-MM-DD HH:mm:ss">
<div class="row items-center justify-end">
<q-btn :label="$t('now')" color="primary" no-caps flat @click="setTimeNow" />
<q-btn
v-if="localField"
:label="$t('never')"
color="primary"
no-caps
flat
@click="value = 'never'"
/>
<q-btn no-caps v-close-popup :label="$t('close')" color="primary" flat />
</div>
</q-date>
</q-popup-proxy>
</q-icon>
</template>
<template v-if="['firstVisit', 'lastVisit', 'date'].includes(localField)" v-slot:append>
<template
v-if="['firstVisit', 'lastVisit', 'date', 'expiration'].includes(localField)"
v-slot:append
>
<q-icon name="access_time" class="cursor-pointer">
<q-popup-proxy cover transition-show="scale" transition-hide="scale">
<q-time with-seconds v-model="value" mask="YYYY-MM-DD HH:mm:ss" format24h>
<div class="row items-center justify-end">
<q-btn :label="$t('now')" color="primary" no-caps flat @click="setTimeNow" />
<q-btn
v-if="localField"
:label="$t('never')"
color="primary"
no-caps
flat
@click="value = 'never'"
/>
<q-btn no-caps v-close-popup :label="$t('close')" color="primary" flat />
</div>
</q-time>
@@ -40,7 +62,6 @@ import { ref } from 'vue';
import { appApi } from 'src/boot/axios';
import type { Member } from 'src/vueLib/models/member';
import { useNotify } from 'src/vueLib/general/useNotify';
import { i18n } from 'src/boot/lang';
const dialog = ref();
const localMember = ref();
@@ -51,7 +72,6 @@ const value = ref('');
const props = defineProps({
endpoint: {
type: String,
required: true,
},
});
@@ -74,6 +94,12 @@ function save() {
dialog.value.close();
return;
}
if (!props.endpoint) {
localMember.value[localField.value] = value.value;
emit('update', localMember.value);
return;
}
payload = [
{
id: localMember.value.id,
@@ -85,7 +111,6 @@ function save() {
.post(props.endpoint, payload)
.then(() => {
emit('update');
NotifyResponse(i18n.global.t('memberUpdated'));
dialog.value.close();
})
.catch((err) => {

View File

@@ -91,10 +91,11 @@
v-model="localUser.role"
></q-select>
<q-input
class="col-5"
class="col-5 q-mt-xl"
:label="$t('expires')"
filled
v-model="localUser.expires"
type="datetime-local"
v-model="localUser.expiration"
></q-input>
</div>
</div>
@@ -131,7 +132,6 @@ const localUser = ref<User>({
user: '',
email: '',
role: '',
expires: '',
});
const props = defineProps({
@@ -156,7 +156,6 @@ async function open(user: User | null) {
user: '',
email: '',
role: '',
expires: '',
};
newUser.value = true;
}