From 6e7243982b4561fdb96a957d4d769263eeae4f0d Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Tue, 19 Nov 2024 23:30:43 +0100 Subject: [PATCH] Small progress on new (file/folder) and remove in project settings --- db.sqlite | Bin 569344 -> 569344 bytes db.sqlite-shm | Bin 32768 -> 32768 bytes db.sqlite-wal | Bin 16512 -> 0 bytes pages/explore/edit/index.vue | 66 +++++++++++++++++++++++------------ schemas/file.ts | 4 ++- schemas/navigation.ts | 3 +- schemas/project.ts | 3 +- 7 files changed, 51 insertions(+), 25 deletions(-) diff --git a/db.sqlite b/db.sqlite index fd589b8ab2c318615fb374d8f170a40a2e7c6acc..1c3330800307cfef5d11c6180e8ec53a15b9ac19 100644 GIT binary patch delta 47 zcmZp8pw#d{X~Uv;rX$-XFNu$2w&l6ml+c#I*p|T5mcZPWz|xk$+Lpl9mcYI&fg=C_ D;rbEm delta 47 zcmZp8pw#d{X~Uv;roEddFNu$2wmvttDWNTau`PkAErGc$fu${hwJm|IErESm0!IJ< D?%5Jv diff --git a/db.sqlite-shm b/db.sqlite-shm index 2ba36f6ccda170fc6770c4ec75e9480e874e2901..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 100644 GIT binary patch delta 80 zcmZo@U}|V!;+1%$%K!t66BkO0TChv7nNGgVi7p`mlYpuI4+Il)WHxSa3Ea5BL=OO- CNfZSD delta 167 zcmZo@U}|V!s+V}A%K!o_K+MR%AONDff!OSrvLa(6Z}H<<&u5&PUB_LxG33fd#S_O# pRSz@@3_#}oM*>jciS?YkY(O>~Z)}VYWM^bxVqj)q+1SXc2LKBgE>-{l diff --git a/db.sqlite-wal b/db.sqlite-wal index 8df99452bb7eb742b7a1560a6c7d9611cf33d7b6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 16512 zcmeI$y-UMD7zXgvmV%U$x(R|Pt~t0Scb7ZtEOiiE9Nf(1E}evm&_Tqn)m1?hH&+)y zcR?H+IygzkI`|(bIC&Kugl0^q=O9BK-jL+?ZcltzJ@LqJ*7F+P=)7NkT)bQz)VBNA zpG`hvT~u|~>0dtgc02gG+nTStul#Cc*mW5%QNGg=+&|x+riXmT5Fann`okG?51^=5iQ(vqDfP3v^Jcx&T?x#D2=8g773xG zB!Y8Gm@x@SQXxsIq_yr_+>2yqxqt3{=U*?7?d_~AoNd<73*;;sF$5q00SG_<0uX=z z1Rwwb2tZ(rK!Lr$>Lh!CwWG#&Hy!Mw7Z|f-L=b=g1Rwwb2tWV=5P$##AOL|Jf#Q0B xr~66v0*gz}Vz+)=LNAcBXv7eJ00bZa0SG_<0uX=z1Rwx`F#-kl0uM#@0zXcU_!d[any] - Configuration du projet
- - + + +
+ +
@@ -50,6 +54,7 @@ import { Icon } from '@iconify/vue/dist/iconify.js'; import type { Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/dist/types/tree-item'; import { parsePath } from '#shared/general.utils'; import type { ProjectItem } from '~/schemas/project'; +import type { FileType } from '~/schemas/file'; definePageMeta({ rights: ['admin', 'editor'], @@ -63,7 +68,7 @@ const toaster = useToast(); const saveStatus = ref<'idle' | 'pending' | 'success' | 'error'>('idle'); const { data: project } = await useFetch(`/api/project`); -const navigation = computed({ +const navigation = computed({ get: () => project.value?.items, set: (value) => { const proj = project.value; @@ -78,6 +83,7 @@ const selected = ref(); useShortcuts({ meta_s: { usingInput: true, handler: () => save(false) }, + meta_n: { usingInput: true, handler: () => add('markdown') }, meta_shift_z: { usingInput: true, handler: () => router.push({ name: 'explore-path', params: { path: path.value }}) } }) @@ -184,6 +190,22 @@ const tree = { }, } +function add(type: FileType): void +{ + if(!navigation.value) + { + return; + } + + if(!selected.value) + { + navigation.value = [...navigation.value, { }] + } + if(selected.value?.children) + { + tree.insertChild(selected.value) + } +} function updateTree(instruction: Instruction, itemId: string, targetId: string) : ProjectItem[] | undefined { if(!navigation.value) return; diff --git a/schemas/file.ts b/schemas/file.ts index a58fcc1..71b95f6 100644 --- a/schemas/file.ts +++ b/schemas/file.ts @@ -1,14 +1,16 @@ import { z } from "zod"; +export const fileType = z.enum(['folder', 'file', 'markdown', 'canvas']); export const schema = z.object({ path: z.string(), owner: z.number().finite(), title: z.string(), - type: z.enum(['folder', 'file', 'markdown', 'canvas']), + type: fileType, content: z.string(), navigable: z.boolean(), private: z.boolean(), order: z.number().finite(), }); +export type FileType = z.infer; export type File = z.infer; \ No newline at end of file diff --git a/schemas/navigation.ts b/schemas/navigation.ts index 13d6ee2..c1d9bc6 100644 --- a/schemas/navigation.ts +++ b/schemas/navigation.ts @@ -1,10 +1,11 @@ import { z } from "zod"; +import { fileType } from "./file"; export const single = z.object({ path: z.string(), owner: z.number().finite(), title: z.string(), - type: z.enum(['folder', 'file', 'markdown', 'canvas']), + type: fileType, navigable: z.boolean(), private: z.boolean(), order: z.number().finite(), diff --git a/schemas/project.ts b/schemas/project.ts index 37cbf1f..26360ad 100644 --- a/schemas/project.ts +++ b/schemas/project.ts @@ -1,11 +1,12 @@ import { z } from "zod"; +import { fileType } from "./file"; const baseItem = z.object({ path: z.string(), parent: z.string(), name: z.string().optional(), title: z.string(), - type: z.enum(['folder', 'file', 'markdown', 'canvas']), + type: fileType, navigable: z.boolean(), private: z.boolean(), order: z.number().finite(),