cineclub-site/front/pages/admin/[id]/edition.vue

44 lines
1,012 B
Vue
Raw Normal View History

<template>
2022-12-04 00:34:34 +01:00
<main class="section">
2022-08-27 20:03:01 +02:00
<h1 class="title">
Modifier la séance du
<time :datetime="film.projectionDate">{{
new Date(film.projectionDate).toLocaleString()
}}</time>
2022-08-27 20:03:01 +02:00
</h1>
2022-08-27 16:53:52 +02:00
<AdminForm v-model="film" @save="saveDraft" @publish="publish" />
</main>
</template>
<script setup lang="ts">
import { Film } from "~/composables/types"
2022-12-30 22:27:11 +01:00
definePageMeta({ layout: "admin" })
const route = useRoute()
const id = route.params.id
const film = reactive<Film>({})
Object.assign(film, (await apiGet(`admin/films/${id}/`)).data.value)
// TODO manage errors
2022-12-30 22:27:11 +01:00
useHead({ title: `Édition de ${film.title}` })
async function save(publish: boolean) {
const { data } = await apiPatch(`admin/films/${id}/`, {
...film,
isConfirmed: publish,
})
Object.assign(film, data.value)
// TODO redirect to list ? to edit ?
}
async function saveDraft() {
return save(false)
}
async function publish() {
// TODO validate ? let API do the job ?
return save(true)
}
</script>