Fix calendar layout dateTime timezone save issue

Fixes #5651
This commit is contained in:
rijkvanzanten
2021-05-24 14:07:36 -04:00
parent 3d3a508880
commit dee8160f18
2 changed files with 25 additions and 7 deletions

View File

@@ -0,0 +1,6 @@
---
'@directus/app': patch
---
Fixed issue on the calendar layout that would attempt to save drag-and-drop time changes with a timezone to datetime
type fields

View File

@@ -178,6 +178,10 @@ export default defineComponent({
},
});
const startDateFieldInfo = computed<Field>(() => {
return fieldsInCollection.value.find((field: Field) => field.field === startDateField.value);
});
const endDateField = computed({
get() {
return _layoutOptions.value?.endDateField;
@@ -190,6 +194,10 @@ export default defineComponent({
},
});
const endDateFieldInfo = computed<Field>(() => {
return fieldsInCollection.value.find((field: Field) => field.field === endDateField.value);
});
const { items, loading, error, totalPages, itemCount, totalCount, changeManualSort, getItems } = useItems(
collection,
{
@@ -242,11 +250,11 @@ export default defineComponent({
if (!startDateField.value) return;
const itemChanges: Partial<Item> = {
[startDateField.value]: info.event.startStr,
[startDateField.value]: adjustForType(info.event.startStr, startDateFieldInfo.value.type),
};
if (endDateField.value && info.event.endStr) {
itemChanges[endDateField.value] = info.event.endStr;
itemChanges[endDateField.value] = adjustForType(info.event.endStr, endDateFieldInfo.value.type);
}
const endpoint = collection.value.startsWith('directus')
@@ -261,11 +269,7 @@ export default defineComponent({
},
};
const startDateFieldInfo: Field | undefined = fieldsInCollection.value.find(
(field: Field) => field.field === startDateField.value
);
if (startDateFieldInfo?.type === 'dateTime' || startDateFieldInfo?.type === 'timestamp') {
if (startDateFieldInfo.value?.type === 'dateTime' || startDateFieldInfo.value?.type === 'timestamp') {
options.headerToolbar = {
...options.headerToolbar,
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek',
@@ -344,6 +348,14 @@ export default defineComponent({
end: endDateField.value ? item[endDateField.value] : null,
};
}
function adjustForType(dateString: string, type: string) {
if (type === 'dateTime') {
return dateString.substring(0, 19);
}
return dateString;
}
},
});
</script>