-
-
+
+
@@ -132,7 +132,7 @@
const form = ref({
name: '',
- decription: '',
+ description: '',
sex: null,
type: '',
featured_image: '',
@@ -154,38 +154,23 @@
const config = useRuntimeConfig();
const typeOptions = [{ "value": "manusia", "label": "Manusia" }, { "value": "hewan", "label": "Hewan" } ]
- const params = reactive({
- current_page: 1,
- pagesize: 10,
- sort_column: 'id',
- sort_direction: 'asc',
- });
+ const isLoading = ref(false);
- const { data: characters } = await useAsyncData('characters',
- () => $fetch(`${config.public.apiBase}character/characters/`, {
- params: {
- page: params.current_page,
- page_size: 50
- }
- }), {
- watch: [params]
- }
- );
+ const featuredImageUploader = ref(null);
+ const featuredIconUploader = ref(null);
onMounted(async () => {
const fileupload = await import('file-upload-with-preview');
let FileUploadWithPreview = fileupload.default;
- // single image upload
- new FileUploadWithPreview('featuredImage', {
+ featuredImageUploader.value = new FileUploadWithPreview('featuredImage', {
images: {
baseImage: '/assets/images/file-preview.svg',
backgroundImage: '',
},
});
- // single image upload
- new FileUploadWithPreview('featuredIcon', {
+ featuredIconUploader.value = new FileUploadWithPreview('featuredIcon', {
images: {
baseImage: '/assets/images/file-preview.svg',
backgroundImage: '',
@@ -204,7 +189,7 @@
formData.append('name', form.value.name);
formData.append('sex', form.value.sex);
- formData.append('type', form.value.type.value);
+ formData.append('type', form.value.type?.value ?? '');
formData.append('description', form.value.description);
if (form.value.featured_image) {
@@ -214,17 +199,18 @@
formData.append('featured_icon', form.value.featured_icon);
}
+ isLoading.value = true;
await $fetch(`${config.public.apiBase}character/characters/`, {
method: 'POST',
body: formData
}).then(() => {
- //redirect
router.push({ path: "/character/characters/list" });
})
.catch((error) => {
-
- //assign response error data to state "errors"
console.log(error);
+ })
+ .finally(() => {
+ isLoading.value = false;
});
}
@@ -255,4 +241,23 @@
form.value.featured_icon = file
}
+
+ const resetForm = () => {
+ form.value = {
+ name: '',
+ description: '',
+ sex: null,
+ type: '',
+ featured_image: '',
+ featured_icon: '',
+ };
+
+ isSubmitted.value = false;
+ $validate.value.form.$reset();
+
+ featuredImageUploader?.value?.clearPreviewPanel();
+ featuredIconUploader?.value?.clearPreviewPanel();
+
+ };
+
\ No newline at end of file
diff --git a/pages/character/characters/list.vue b/pages/character/characters/list.vue
index 8dd997c..1801d0e 100644
--- a/pages/character/characters/list.vue
+++ b/pages/character/characters/list.vue
@@ -24,9 +24,9 @@
-
-
+
+