feat: injections data propertions
This commit is contained in:
@@ -3,6 +3,7 @@ import { Dialog } from "primevue";
|
|||||||
import { useErrorStore } from "./stores/error.store";
|
import { useErrorStore } from "./stores/error.store";
|
||||||
import CommentScheme from "./comment/CommentScheme.vue";
|
import CommentScheme from "./comment/CommentScheme.vue";
|
||||||
import PosttypeScheme from "./posttype/PosttypeScheme.vue";
|
import PosttypeScheme from "./posttype/PosttypeScheme.vue";
|
||||||
|
import PostScheme from "./post/PostScheme.vue";
|
||||||
|
|
||||||
const errorStore = useErrorStore();
|
const errorStore = useErrorStore();
|
||||||
</script>
|
</script>
|
||||||
@@ -17,6 +18,6 @@ const errorStore = useErrorStore();
|
|||||||
<h1 class="text-red-500 text-2xl">{{ errorStore.message }}</h1>
|
<h1 class="text-red-500 text-2xl">{{ errorStore.message }}</h1>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
<main class="w-screen h-screen">
|
<main class="w-screen h-screen">
|
||||||
<PosttypeScheme></PosttypeScheme>
|
<PostScheme></PostScheme>
|
||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -43,9 +43,10 @@ const scheme: Scheme<Post> = reactive({
|
|||||||
|
|
||||||
Id: {
|
Id: {
|
||||||
hidden: true,
|
hidden: true,
|
||||||
|
russian: 'Id',
|
||||||
type: {
|
type: {
|
||||||
primitive: "number",
|
primitive: "number",
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
Text: {
|
Text: {
|
||||||
@@ -113,6 +114,9 @@ const scheme: Scheme<Post> = reactive({
|
|||||||
field: ["Text"],
|
field: ["Text"],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
customWindow: {
|
||||||
|
create: true,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -127,6 +131,10 @@ const validate: Validate<Post> = (entity) => {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<main class="w-screen h-screen">
|
<main class="w-screen h-screen">
|
||||||
<Table :scheme :service :get-defaults :load :items :validate></Table>
|
<Table :scheme :service :get-defaults :load :items :validate>
|
||||||
|
<template #CommentsCreate="{ data }">
|
||||||
|
<p>{{ data.Comments }}</p>
|
||||||
|
</template>
|
||||||
|
</Table>
|
||||||
</main>
|
</main>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -71,10 +71,10 @@ async function handleSave() {
|
|||||||
class="flex items-center gap-5">
|
class="flex items-center gap-5">
|
||||||
<h1 class="w-[200px]">{{ props.scheme[key].russian }}</h1>
|
<h1 class="w-[200px]">{{ props.scheme[key].russian }}</h1>
|
||||||
<div v-if="props.scheme[key]?.customWindow?.[props.updateMode ? 'update' : 'create']">
|
<div v-if="props.scheme[key]?.customWindow?.[props.updateMode ? 'update' : 'create']">
|
||||||
<slot :name="<string>key + (props.updateMode ? 'Update' : 'Create')"></slot>
|
<slot :name="<string>key + (props.updateMode ? 'Update' : 'Create')" :data="editableItem"></slot>
|
||||||
</div>
|
</div>
|
||||||
<div v-else-if="props.scheme[key]?.customWindow?.common">
|
<div v-else-if="props.scheme[key]?.customWindow?.common">
|
||||||
<slot :name="<string>key"></slot>
|
<slot :name="<string>key" :data="editableItem"></slot>
|
||||||
</div>
|
</div>
|
||||||
<InputNumber class="w-[300px]" v-model:model-value="<number>editableItem![key]"
|
<InputNumber class="w-[300px]" v-model:model-value="<number>editableItem![key]"
|
||||||
v-else-if="props.scheme[key]?.type?.primitive === 'number'" />
|
v-else-if="props.scheme[key]?.type?.primitive === 'number'" />
|
||||||
|
|||||||
@@ -79,45 +79,24 @@ watch(() => props.items, () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DialogWindow
|
<DialogWindow :name :load :items :validate :scheme :service :get-defaults v-model:item="<T>createItem"
|
||||||
:name
|
v-model:show="showCreate" @on-save="data => emits('onSave', data)"
|
||||||
:load
|
@on-save-create="data => emits('onSaveCreate', data)">
|
||||||
:items
|
<template v-for="key in keys" #[key]="{ data }">
|
||||||
:validate
|
<slot :name="<string>key" :data></slot>
|
||||||
:scheme
|
|
||||||
:service
|
|
||||||
:get-defaults
|
|
||||||
v-model:item="<T>createItem"
|
|
||||||
v-model:show="showCreate"
|
|
||||||
@on-save="data => emits('onSave', data)"
|
|
||||||
@on-save-create="data => emits('onSaveCreate', data)"
|
|
||||||
>
|
|
||||||
<template v-for="key in keys" #[key]>
|
|
||||||
<slot :name="<string>key"></slot>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-for="key in keys" #[createSlotName(key)]>
|
<template v-for="key in keys" #[createSlotName(key)]="{ data }">
|
||||||
<slot :name="createSlotName(key)"></slot>
|
<slot :name="createSlotName(key)" :data></slot>
|
||||||
</template>
|
</template>
|
||||||
</DialogWindow>
|
</DialogWindow>
|
||||||
<DialogWindow
|
<DialogWindow :name :load :items :validate :scheme update-mode :service :get-defaults v-model:item="<T>updateItem"
|
||||||
:name
|
v-model:show="showUpdate" @on-save="data => emits('onSave', data)"
|
||||||
:load
|
@on-save-update="data => emits('onSaveUpdate', data)">
|
||||||
:items
|
<template v-for="key in keys" #[key]="{ data }">
|
||||||
:validate
|
<slot :name="<string>key" :data></slot>
|
||||||
:scheme
|
|
||||||
update-mode
|
|
||||||
:service
|
|
||||||
:get-defaults
|
|
||||||
v-model:item="<T>updateItem"
|
|
||||||
v-model:show="showUpdate"
|
|
||||||
@on-save="data => emits('onSave', data)"
|
|
||||||
@on-save-update="data => emits('onSaveUpdate', data)"
|
|
||||||
>
|
|
||||||
<template v-for="key in keys" #[key]>
|
|
||||||
<slot :name="<string>key"></slot>
|
|
||||||
</template>
|
</template>
|
||||||
<template v-for="key in keys" #[updateSlotName(key)]>
|
<template v-for="key in keys" #[updateSlotName(key)]="{ data }">
|
||||||
<slot :name="updateSlotName(key)"></slot>
|
<slot :name="updateSlotName(key)" :data></slot>
|
||||||
</template>
|
</template>
|
||||||
</DialogWindow>
|
</DialogWindow>
|
||||||
<div>
|
<div>
|
||||||
@@ -126,10 +105,7 @@ watch(() => props.items, () => {
|
|||||||
<p>{{ props.name }}</p>
|
<p>{{ props.name }}</p>
|
||||||
</template>
|
</template>
|
||||||
<template v-for="key in keys">
|
<template v-for="key in keys">
|
||||||
<Column
|
<Column :header="props.scheme[key]?.russian" v-if="!props.scheme[key].hidden">
|
||||||
:header="props.scheme[key]?.russian"
|
|
||||||
v-if="!props.scheme[key].hidden"
|
|
||||||
>
|
|
||||||
<template #body="{ data }">
|
<template #body="{ data }">
|
||||||
<p class="">
|
<p class="">
|
||||||
{{
|
{{
|
||||||
@@ -145,24 +121,16 @@ watch(() => props.items, () => {
|
|||||||
<Column header="Действия">
|
<Column header="Действия">
|
||||||
<template #body="{ data }">
|
<template #body="{ data }">
|
||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
<Button
|
<Button severity="secondary" icon="pi pi-pencil" @click="async () => {
|
||||||
severity="secondary"
|
|
||||||
icon="pi pi-pencil"
|
|
||||||
@click="async () => {
|
|
||||||
await emits('onUpdateOpen')
|
await emits('onUpdateOpen')
|
||||||
await emits('onOpen')
|
await emits('onOpen')
|
||||||
updateItem = data
|
updateItem = data
|
||||||
}"
|
}"></Button>
|
||||||
></Button>
|
<Button severity="danger" icon="pi pi-trash" @click="async () => {
|
||||||
<Button
|
|
||||||
severity="danger"
|
|
||||||
icon="pi pi-trash"
|
|
||||||
@click="async () => {
|
|
||||||
await emits('onDelete', data)
|
await emits('onDelete', data)
|
||||||
await props.service.delete(data.Id)
|
await props.service.delete(data.Id)
|
||||||
await load()
|
await load()
|
||||||
}"
|
}"></Button>
|
||||||
></Button>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
|
|||||||
Reference in New Issue
Block a user