From 2a8abb47961ebedaafdf8603ac0e76e2db55a52e Mon Sep 17 00:00:00 2001 From: Peaceultime Date: Thu, 29 Aug 2024 17:45:43 +0200 Subject: [PATCH] Canvas CSS update --- app.vue | 8 +---- components/ThemeSwitch.client.vue | 4 +-- components/canvas/CanvasEdge.vue | 30 ++++++----------- components/canvas/CanvasNode.vue | 31 ++++-------------- components/canvas/CanvasRenderer.vue | 44 +++++++++++++++++++++---- db.sqlite | Bin 839680 -> 839680 bytes layouts/default.vue | 2 +- layouts/explorer.vue | 2 +- nuxt.config.ts | 1 + server/tasks/sync.ts | 46 ++++++++++++++++++++++++--- types/canvas.d.ts | 9 ++++-- 11 files changed, 108 insertions(+), 69 deletions(-) diff --git a/app.vue b/app.vue index c47dbaa..b7594fa 100644 --- a/app.vue +++ b/app.vue @@ -1,14 +1,9 @@ \ No newline at end of file diff --git a/db.sqlite b/db.sqlite index f6a4ceb2c0cf657e2f9a8c0143b16c9b7d94ded3..3f2019340e86a2b575584857485a3b230d217ddc 100644 GIT binary patch delta 186 zcmZozVBE04c!D%z;zSu|#>9;YOY}Jy1Q;0jWBFHX78LO1pB!nwm}M@1;F(Ph+!J`G zF)%Qg0dXb}Pv0zYA)S$RI*>VS`o&&Wwau$8hU;cimw%_Jw1Y#y2W(HywAZFcuo1e{%iLrRQk`UX&zss2eI0YDsrq>Cvi*J`s;C#v7 Y&SJn0#2i4(3B+7L%)On(falMA04@$Tw*UYD delta 178 zcmZozVBE04c!D%z^h6nF#^{X+OY}Jy`C}RQWBFHX78LO1pB!nwm}REUzt5W-xF_%y zGcYii0dXb}7j2ffkj}_j1Y{OZzu3#Fwt3aXa6N7ymx+HZ1OHn7>p%k*@=ssO+s z!4k^Zew&{Wh?#(x8Hibcn05PYel|BI#_8LYgxDVbWh|avr^GJ4U0Q+tDgQD7c7Zkn V_BI2KHUrK!1Fkj$?qvo%3joSZHDLe% diff --git a/layouts/default.vue b/layouts/default.vue index 91a022d..ce7fe6c 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -17,7 +17,7 @@

Copyright Peaceultime - 2024

-
+
\ No newline at end of file diff --git a/layouts/explorer.vue b/layouts/explorer.vue index 9f8ef56..00558de 100644 --- a/layouts/explorer.vue +++ b/layouts/explorer.vue @@ -19,7 +19,7 @@

Copyright Peaceultime - 2024

-
+
\ No newline at end of file diff --git a/nuxt.config.ts b/nuxt.config.ts index b707e06..77e65d4 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -9,6 +9,7 @@ export default defineNuxtConfig({ } }, tailwindcss: { + viewer: false, config: { theme: { extend: { diff --git a/server/tasks/sync.ts b/server/tasks/sync.ts index 89eddc0..ecec8b0 100644 --- a/server/tasks/sync.ts +++ b/server/tasks/sync.ts @@ -1,8 +1,10 @@ import useDatabase from "~/composables/useDatabase"; import { extname, basename } from 'node:path'; -import type { File } from '~/types/api'; +import type { File, FileType } from '~/types/api'; +import { InputTypeHTMLAttribute } from "vue"; +import { CanvasColor, CanvasContent } from "~/types/canvas"; -const typeMapping: Record = { +const typeMapping: Record = { ".md": "Markdown", ".canvas": "Canvas" } @@ -36,7 +38,7 @@ export default defineTask({ order: order && order[1] ? order[1] : 50, title: order && order[2] ? order[2] : title, type: 'Folder', - content: undefined + content: null } } @@ -44,13 +46,14 @@ export default defineTask({ const title = basename(e.path, extension); const order = /(\d+)\. ?(.+)/gsmi.exec(title); const path = (e.path as string).split('/').map(f => { const check = /(\d+)\. ?(.+)/gsmi.exec(f); return check && check[2] ? check[2] : f }).join('/'); + const content = (await $fetch(`https://git.peaceultime.com/api/v1/repos/peaceultime/system-aspect/raw/${encodeURIComponent(e.path)}`)); return { path: (extension === '.md' ? path.replace(extension, '') : path).toLowerCase().replaceAll(" ", "-").normalize("NFD").replace(/[\u0300-\u036f]/g, ""), order: order && order[1] ? order[1] : 50, title: order && order[2] ? order[2] : title, type: (typeMapping[extension] ?? 'File'), - content: await $fetch(`https://git.peaceultime.com/api/v1/repos/peaceultime/system-aspect/raw/${encodeURIComponent(e.path)}`) + content: reshapeContent(content as string, typeMapping[extension] ?? 'File') } })); @@ -100,4 +103,37 @@ export default defineTask({ return { result: false }; } }, -}) \ No newline at end of file +}) + +function reshapeContent(content: string, type: FileType): string | null +{ + switch(type) + { + case "Markdown": + case "File": + return content; + case "Canvas": + const data = JSON.parse(content) as CanvasContent; + data.edges.forEach(e => e.color = typeof e.color === 'string' ? getColor(e.color) : undefined); + data.nodes.forEach(e => e.color = typeof e.color === 'string' ? getColor(e.color) : undefined); + return JSON.stringify(data); + default: + case 'Folder': + return null; + } +} +function getColor(color: string): CanvasColor +{ + const colors: Record = { + '1': 'fill-light-red dark:fill-dark-red stroke-light-red dark:stroke-dark-red', + '2': 'fill-light-orange dark:fill-dark-orange stroke-light-orange dark:stroke-dark-orange', + '3': 'fill-light-yellow dark:fill-dark-yellow stroke-light-yellow dark:stroke-dark-yellow', + '4': 'fill-light-green dark:fill-dark-green stroke-light-green dark:stroke-dark-green', + '5': 'fill-light-cyan dark:fill-dark-cyan stroke-light-cyan dark:stroke-dark-cyan', + '6': 'fill-light-purple dark:fill-dark-purple stroke-light-purple dark:stroke-dark-purple', + }; + if(colors.hasOwnProperty(color)) + return { class: colors[color] }; + else + return { hex: color }; +} \ No newline at end of file diff --git a/types/canvas.d.ts b/types/canvas.d.ts index 9a448ca..a126928 100644 --- a/types/canvas.d.ts +++ b/types/canvas.d.ts @@ -3,6 +3,11 @@ export interface CanvasContent { edges: CanvasEdge[]; groups: CanvasGroup[]; } +export type CanvasColor = { + class?: string; +} & { + hex?: string; +} export interface CanvasNode { type: 'group' | 'text'; id: string; @@ -10,7 +15,7 @@ export interface CanvasNode { y: number; width: number; height: number; - color?: string; + color?: CanvasColor; label?: string; text?: any; }; @@ -20,7 +25,7 @@ export interface CanvasEdge { fromSide: 'bottom' | 'top' | 'left' | 'right'; toNode: string; toSide: 'bottom' | 'top' | 'left' | 'right'; - color?: string; + color?: CanvasColor; label?: string; }; export interface CanvasGroup {