This repository has been archived on 2025-03-16. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
boilerplate/frontend/src/post/PostScheme.vue
2025-03-13 13:23:13 +07:00

144 lines
3.1 KiB
Vue

<script setup lang="ts">
import Table from "../table/Table.vue";
import { onMounted, reactive } from "vue";
import { getDefaultValues } from "../utils/structs/defaults.util";
import Service from "./post.service.ts";
import type { Scheme } from "../types/scheme.type";
import { Author, Post } from "../../bindings/app/internal/services";
import { ref } from "vue";
import type { Validate } from "../types/validate.type";
import AuthorService from "../author/author.service.ts";
const authorService = new AuthorService();
import PosttypeService from "../posttype/posttype.service.ts";
const posttypeService = new PosttypeService();
import CommentService from "../comment/comment.service.ts";
import { SortedByOrder } from "../../bindings/app/internal/services/postservice.ts";
const commentService = new CommentService();
const service = new Service();
const items = ref<Post[]>([]);
const load = async () => {
(scheme as any).Author.type!.nested!.values = await authorService.readAll();
(scheme as any).PostType.type!.nested!.values =
await posttypeService.readAll();
(scheme as any).Comments.type!.nested!.values =
await commentService.readAll();
items.value = await service.readAll();
return items.value;
};
onMounted(async () => {
await load();
console.log(await SortedByOrder({ "Author": "DESC", "Text": "ASC" }));
});
const scheme: Scheme<Post> = reactive({
entityId: "PostId",
Id: {
hidden: true,
russian: 'Id',
type: {
primitive: "number",
}
},
Text: {
russian: "Текст",
type: {
primitive: "string",
},
},
Deadline: {
russian: "Дедлайн",
date: true,
type: {
primitive: "date",
},
},
CreatedAt: {
russian: "Дата создания",
type: {
primitive: "date",
},
},
AuthorId: {
hidden: true,
type: {
primitive: "number",
},
},
Author: {
russian: "Автор",
type: {
nested: {
values: [],
field: ["Name"],
},
},
},
PostTypeId: {
hidden: true,
type: {
primitive: "number",
},
},
PostType: {
russian: "Тип",
type: {
nested: {
values: [],
field: ["Name"],
},
},
},
Comments: {
russian: "Комментарии",
many: true,
type: {
nested: {
values: [],
field: ["Text"],
},
},
customWindow: {
create: true,
}
},
});
const getDefaults = () => {
return ({ ...getDefaultValues(scheme), AuthorId: 1, PostTypeId: 1 });
};
const validate: Validate<Post> = (entity) => {
return {
status: "success",
};
};
</script>
<template>
<Table :scheme :service :get-defaults :load :items :validate>
<template #CommentsCreate="{ data }">
<p>{{ data.Comments }}</p>
</template>
</Table>
</template>