diff --git a/src/components/ui/VnNotes.vue b/src/components/ui/VnNotes.vue index f7c176286..7ef21a936 100644 --- a/src/components/ui/VnNotes.vue +++ b/src/components/ui/VnNotes.vue @@ -35,6 +35,7 @@ const $props = defineProps({ selectType: { type: Boolean, default: false }, justInput: { type: Boolean, default: false }, goTo: { type: String, default: '' }, + useUserRelation: { type: Boolean, default: true }, }); const { t } = useI18n(); @@ -54,6 +55,26 @@ const defaultObservationType = computed( let savedNote = false; let originalText; +onBeforeRouteLeave((to, from, next) => { + if ( + (newNote.text && !$props.justInput) || + (newNote.text !== originalText && $props.justInput) + ) + quasar.dialog({ + component: VnConfirm, + componentProps: { + title: t('globals.unsavedPopup.title'), + message: t('globals.unsavedPopup.subtitle'), + promise: () => next(), + }, + }); + else next(); +}); + +onMounted(() => { + nextTick(() => (componentIsRendered.value = true)); +}); + function handleClick(e) { if (e.shiftKey && e.key === 'Enter') return; if ($props.justInput) confirmAndUpdate(); @@ -108,22 +129,6 @@ async function update() { ); } -onBeforeRouteLeave((to, from, next) => { - if ( - (newNote.text && !$props.justInput) || - (newNote.text !== originalText && $props.justInput) - ) - quasar.dialog({ - component: VnConfirm, - componentProps: { - title: t('globals.unsavedPopup.title'), - message: t('globals.unsavedPopup.subtitle'), - promise: () => next(), - }, - }); - else next(); -}); - function fetchData([data]) { newNote.text = data?.notes; originalText = data?.notes; @@ -137,16 +142,38 @@ const handleObservationTypes = (data) => { } }; -onMounted(() => { - nextTick(() => (componentIsRendered.value = true)); -}); - async function saveAndGo() { savedNote = false; await insert(); - await savedNote; router.push({ path: $props.goTo }); } + +function getUserFilter() { + const newUserFilter = $props.userFilter ?? {}; + const userInclude = { + relation: 'user', + scope: { + fields: ['id', 'nickname', 'name'], + }, + }; + if (newUserFilter.include) { + if (Array.isArray(newUserFilter.include)) { + newUserFilter.include.push(userInclude); + } else { + newUserFilter.include = [userInclude, newUserFilter.include]; + } + } else { + newUserFilter.include = userInclude; + } + + if ($props.useUserRelation) { + return { + ...newUserFilter, + ...$props.userFilter, + }; + } + return $props.filter; +}