refactor: code clean up
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -49,6 +49,10 @@ const calendarOptions = computed(() =>
|
||||
}))
|
||||
)
|
||||
|
||||
const selectedCalendar = computed(() =>
|
||||
(props.calendars || []).find(calendar => calendar.identifier === selectedCollectionId.value) ?? null
|
||||
)
|
||||
|
||||
// Permissions
|
||||
const isExternalEvent = computed(() => {
|
||||
return false
|
||||
@@ -77,13 +81,12 @@ const cancelEdit = () => {
|
||||
}
|
||||
|
||||
const saveEntity = async () => {
|
||||
if (!editableEntity.value) {
|
||||
if (!editableEntity.value || !selectedCalendar.value) {
|
||||
return
|
||||
}
|
||||
|
||||
saving.value = true
|
||||
const targetCollection = (props.calendars || []).find(cal => cal.identifier === selectedCollectionId.value)
|
||||
emit('save', editableEntity.value as EntityObject, targetCollection || props.collection)
|
||||
emit('save', editableEntity.value as EntityObject, selectedCalendar.value)
|
||||
saving.value = false
|
||||
}
|
||||
|
||||
@@ -127,7 +130,7 @@ watch(
|
||||
(newEntity) => {
|
||||
const entity = newEntity as EntityObject | null
|
||||
draftEntity.value = entity?.clone ? entity.clone() : null
|
||||
selectedCollectionId.value = entity?.collection || props.collection?.identifier || props.calendars?.[0]?.identifier || ''
|
||||
selectedCollectionId.value = entity?.collection || props.collection?.identifier || ''
|
||||
},
|
||||
{ immediate: true },
|
||||
)
|
||||
@@ -138,7 +141,7 @@ watch(
|
||||
const entity = props.entity as EntityObject | null
|
||||
if (newMode === 'edit' && entity?.clone) {
|
||||
draftEntity.value = entity.clone()
|
||||
selectedCollectionId.value = entity.collection || props.collection?.identifier || props.calendars?.[0]?.identifier || ''
|
||||
selectedCollectionId.value = entity.collection || props.collection?.identifier || ''
|
||||
}
|
||||
},
|
||||
)
|
||||
@@ -194,6 +197,7 @@ watch(
|
||||
v-model="selectedCollectionId"
|
||||
:items="calendarOptions"
|
||||
label="Calendar"
|
||||
:rules="[value => (value !== '' && value != null) || 'Calendar is required']"
|
||||
variant="outlined"
|
||||
density="compact"
|
||||
class="mb-4"
|
||||
@@ -293,6 +297,7 @@ watch(
|
||||
color="primary"
|
||||
variant="elevated"
|
||||
@click="saveEntity"
|
||||
:disabled="!selectedCalendar"
|
||||
:loading="saving">
|
||||
Save
|
||||
</v-btn>
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
v-model="selectedCollectionId"
|
||||
:items="listOptions"
|
||||
label="Task List"
|
||||
:rules="[value => (value !== '' && value != null) || 'Task list is required']"
|
||||
:readonly="!isEditing || !canChangeCollection"
|
||||
:variant="isEditing && canChangeCollection ? 'outlined' : 'plain'"
|
||||
class="mb-4"
|
||||
@@ -243,13 +244,13 @@ watch(() => props.entity, (newEntity) => {
|
||||
startDate.value = '';
|
||||
}
|
||||
|
||||
selectedCollectionId.value = draftEntity.value?.collection || props.collection?.identifier || props.lists[0]?.identifier || '';
|
||||
selectedCollectionId.value = draftEntity.value?.collection || props.collection?.identifier || '';
|
||||
}, { immediate: true });
|
||||
|
||||
watch(() => props.mode, (newMode) => {
|
||||
if (newMode === 'edit' && props.entity) {
|
||||
draftEntity.value = cloneEntity(props.entity);
|
||||
selectedCollectionId.value = draftEntity.value?.collection || props.collection?.identifier || props.lists[0]?.identifier || '';
|
||||
selectedCollectionId.value = draftEntity.value?.collection || props.collection?.identifier || '';
|
||||
}
|
||||
});
|
||||
|
||||
@@ -260,6 +261,10 @@ const listOptions = computed(() =>
|
||||
}))
|
||||
);
|
||||
|
||||
const selectedTaskList = computed(() =>
|
||||
props.lists.find(list => list.identifier === selectedCollectionId.value) ?? null
|
||||
);
|
||||
|
||||
const priorityOptions = [
|
||||
{ title: 'Low', value: 3 },
|
||||
{ title: 'Medium', value: 2 },
|
||||
@@ -288,8 +293,9 @@ async function handleSave() {
|
||||
const { valid } = await formRef.value.validate();
|
||||
if (!valid) return;
|
||||
|
||||
const targetCollection = props.lists.find(list => list.identifier === selectedCollectionId.value);
|
||||
emit('save', editableEntity.value as EntityObject, targetCollection || props.collection);
|
||||
if (!selectedTaskList.value) return;
|
||||
|
||||
emit('save', editableEntity.value as EntityObject, selectedTaskList.value);
|
||||
}
|
||||
|
||||
function handleCancel() {
|
||||
|
||||
Reference in New Issue
Block a user