mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-04 21:58:54 -05:00
basic model editor workflow done
This commit is contained in:
@@ -1,13 +1,51 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-dialog max-width="600" activator="parent">
|
<v-dialog max-width="600" activator="parent" v-model="dialog">
|
||||||
<template v-slot:default="{ isActive }">
|
<access-token-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" v-if="model == SupportedModels.AccessToken"></access-token-editor>
|
||||||
<slot name="default"></slot>
|
|
||||||
</template>
|
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
|
||||||
|
import {PropType, ref} from "vue";
|
||||||
|
import AccessTokenEditor from "@/components/model_editors/AccessTokenEditor.vue";
|
||||||
|
import {AccessToken, Food} from "@/openapi";
|
||||||
|
|
||||||
|
enum SupportedModels {
|
||||||
|
AccessToken = 'AccessToken'
|
||||||
|
}
|
||||||
|
|
||||||
|
const emit = defineEmits(['create', 'save', 'delete'])
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
model: {
|
||||||
|
type: '',
|
||||||
|
required: true,
|
||||||
|
validator: (val) => ['AccessToken'].includes(val)
|
||||||
|
},
|
||||||
|
item: {default: null},
|
||||||
|
closeAfterCreate: {default: true},
|
||||||
|
closeAfterSave: {default: true},
|
||||||
|
closeAfterDelete: {default: true},
|
||||||
|
})
|
||||||
|
|
||||||
|
const dialog = ref(false)
|
||||||
|
|
||||||
|
function createEvent(arg) {
|
||||||
|
emit('create', arg)
|
||||||
|
dialog.value = dialog.value && !props.closeAfterCreate
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveEvent(arg) {
|
||||||
|
emit('save', arg)
|
||||||
|
dialog.value = dialog.value && !props.closeAfterSave
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteEvent(arg) {
|
||||||
|
emit('delete', arg)
|
||||||
|
dialog.value = dialog.value && !props.closeAfterDelete
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import {AccessToken, ApiApi} from "@/openapi";
|
|||||||
import DeleteConfirmDialog from "@/components/dialogs/DeleteConfirmDialog.vue";
|
import DeleteConfirmDialog from "@/components/dialogs/DeleteConfirmDialog.vue";
|
||||||
import {useI18n} from "vue-i18n";
|
import {useI18n} from "vue-i18n";
|
||||||
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
|
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
|
||||||
|
import {DateTime} from "luxon";
|
||||||
|
|
||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
|
|
||||||
@@ -59,6 +60,10 @@ const objectName = computed(() => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (props.item != null) {
|
if (props.item != null) {
|
||||||
editingObj.value = props.item
|
editingObj.value = props.item
|
||||||
|
} else {
|
||||||
|
// functions to populate defaults
|
||||||
|
editingObj.value.expires = DateTime.now().plus({year: 1}).toJSDate()
|
||||||
|
editingObj.value.scope = 'read write'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -92,7 +97,7 @@ async function saveObject() {
|
|||||||
async function deleteObject() {
|
async function deleteObject() {
|
||||||
let api = new ApiApi()
|
let api = new ApiApi()
|
||||||
api.apiAccessTokenDestroy({id: editingObj.value.id}).then(r => {
|
api.apiAccessTokenDestroy({id: editingObj.value.id}).then(r => {
|
||||||
editingObj.value = {} as AccessToken // TODO make more generic with class as constant ?
|
editingObj.value = {} as AccessToken
|
||||||
emit('delete')
|
emit('delete')
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
useMessageStore().addError(ErrorMessageType.DELETE_ERROR, err)
|
useMessageStore().addError(ErrorMessageType.DELETE_ERROR, err)
|
||||||
|
|||||||
@@ -26,9 +26,7 @@
|
|||||||
<v-alert color="warning" variant="tonal">Make sure to save your token after creation as they cannot be viewed afterwards.</v-alert>
|
<v-alert color="warning" variant="tonal">Make sure to save your token after creation as they cannot be viewed afterwards.</v-alert>
|
||||||
|
|
||||||
<v-btn prepend-icon="$create" color="create">{{$t('New')}}
|
<v-btn prepend-icon="$create" color="create">{{$t('New')}}
|
||||||
<model-editor-dialog>
|
<model-editor-dialog model="AccessToken" @create="loadAccessTokens()" :close-after-create="false"></model-editor-dialog>
|
||||||
<access-token-editor @create="loadAccessTokens()"></access-token-editor>
|
|
||||||
</model-editor-dialog>
|
|
||||||
</v-btn>
|
</v-btn>
|
||||||
|
|
||||||
<v-list>
|
<v-list>
|
||||||
@@ -43,11 +41,8 @@
|
|||||||
<template #append>
|
<template #append>
|
||||||
<v-btn color="edit">
|
<v-btn color="edit">
|
||||||
<v-icon icon="$edit"></v-icon>
|
<v-icon icon="$edit"></v-icon>
|
||||||
<model-editor-dialog>
|
<model-editor-dialog model="AccessToken" :item="at" class="mt-2" @delete="loadAccessTokens()"></model-editor-dialog>
|
||||||
<access-token-editor :item="at" class="mt-2" @delete="loadAccessTokens()"></access-token-editor>
|
|
||||||
</model-editor-dialog>
|
|
||||||
</v-btn>
|
</v-btn>
|
||||||
<!-- <v-btn icon="$delete" color="delete"></v-btn>-->
|
|
||||||
</template>
|
</template>
|
||||||
</v-list-item>
|
</v-list-item>
|
||||||
</v-list>
|
</v-list>
|
||||||
@@ -61,7 +56,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import {onMounted, ref} from "vue";
|
import {onMounted, ref} from "vue";
|
||||||
import {AccessToken, ApiApi} from "@/openapi";
|
import {ApiApi} from "@/openapi";
|
||||||
import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore";
|
import {ErrorMessageType, useMessageStore} from "@/stores/MessageStore";
|
||||||
import {DateTime} from "luxon";
|
import {DateTime} from "luxon";
|
||||||
import AccessTokenEditor from "@/components/model_editors/AccessTokenEditor.vue";
|
import AccessTokenEditor from "@/components/model_editors/AccessTokenEditor.vue";
|
||||||
|
|||||||
Reference in New Issue
Block a user