From 0d684ca4f3b89d7c9089951895859954a19fbf52 Mon Sep 17 00:00:00 2001 From: Vasek Sraier Date: Wed, 30 Sep 2020 17:40:39 +0200 Subject: [PATCH] =?UTF-8?q?task=20detail=20editor:=20pou=C5=BE=C3=ADv?= =?UTF-8?q?=C3=A1me=20CKEditor5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package.json | 2 +- frontend/src/Editor.svelte | 2 +- frontend/src/TaskDetailEditor.svelte | 81 +++++++++++++++++++++++----- frontend/yarn.lock | 10 ++-- 4 files changed, 74 insertions(+), 21 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index f4aec90..eff4779 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -24,9 +24,9 @@ "typescript": "^3.9.3" }, "dependencies": { + "@ckeditor/ckeditor5-build-classic": "^23.0.0", "@types/d3": "^5.7.2", "d3": "^6.2.0", - "sigma": "1.2.1", "sirv-cli": "^1.0.0", "svelte-simple-modal": "^0.6.1" } diff --git a/frontend/src/Editor.svelte b/frontend/src/Editor.svelte index 6ef4d20..aaeb2dd 100644 --- a/frontend/src/Editor.svelte +++ b/frontend/src/Editor.svelte @@ -58,7 +58,7 @@ TaskDetailEditor, { task: e.detail, tasks: tasks }, { closeButton: false }, - { onClose: () => { console.log("callback invoked", tasks); tasks = tasks; }} + { onClose: () => { tasks = tasks; }} ); } diff --git a/frontend/src/TaskDetailEditor.svelte b/frontend/src/TaskDetailEditor.svelte index dd306c7..6d67e48 100644 --- a/frontend/src/TaskDetailEditor.svelte +++ b/frontend/src/TaskDetailEditor.svelte @@ -2,7 +2,9 @@ import { getCategories } from "./task-loader"; import type { TaskDescriptor, TasksFile } from "./task-loader"; import { getContext } from "svelte"; - import { copyFieldsThatExist } from "./helpers"; + import { onMount } from "svelte"; + import ClassicEditor from "@ckeditor/ckeditor5-build-classic"; +import App from "./App.svelte"; const { close } = getContext("simple-modal"); @@ -20,38 +22,89 @@ categories: getCategories(tasks, task.id), }; + // setup editor + let editor; + onMount(() => { + ClassicEditor.create(document.querySelector("#editor")) + .then((e) => { + editor = e; + }) + .catch((error) => { + alert("Editor init error. Open console to see details."); + console.error(error); + }); + }); + function removeCategory(catName: string) { return function () { - editData.categories = editData.categories.filter((t) => t != catName); + editData.categories = editData.categories.filter( + (t) => t != catName + ); }; } function removeDependency(dep: string) { return function () { - editData.task.requires = editData.task.requires.filter((t) => t != dep); + editData.task.requires = editData.task.requires.filter( + (t) => t != dep + ); }; } function saveAndExit() { + if (editData.task.type == "text") + editData.task.htmlContent = editor.getData() Object.assign(task, editData.task); + + // kategorie musíme první odevšad odstranit + for (const t of Object.keys(tasks.clusters)) { + tasks.clusters[t] = tasks.clusters[t].filter( + (id) => id != editData.task.id + ); + } + // a pak všude přidat + for (const t of editData.categories) { + tasks.clusters[t] = [ + ...(tasks.clusters[t] ?? []), + editData.task.id, + ]; + tasks.clusters[t].sort(); // make git happy + } + + // a nakonec zavřít dialog close(); } + +
-
ID: {editData.task.id}, TYPE: {editData.task.type}
+
+ ID: {editData.task.id}, + + TYPE: + +

TITLE:

- COMMENT: - +

Interní komentář

+
+
+
+

HTML obsah

+
- {#if editData.task.type == "text"} -
HTML obsah:
-
- {/if}

Kategorie

@@ -90,14 +143,14 @@

- - + +

Vysvětlivky

Kurzívou je psaný text, který nesouvisí s daty. Některý text psaný - nekurzívou se dá editovat. Změna typu ale třeba není možná, na to je - potřeba upravit přímo soubor tasks.json. + nekurzívou se dá editovat. Jakékoliv velké operace je ale vhodné + dělat přímo se souborem tasks.json
diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 7b387b5..bdb2560 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -23,6 +23,11 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@ckeditor/ckeditor5-build-classic@^23.0.0": + version "23.0.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-23.0.0.tgz#9b4ae5dc470e9ae4be14672b49d05d21887e2d81" + integrity sha512-9Pgb9OAPnx1577WDYizEuOFHmLyXkwU8UxneyP4Zkr9mrJUEL0w0uVgQhiB8DYlAAArHXeFasSogwFvLX6xBtw== + "@emmetio/extract-abbreviation@0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@emmetio/extract-abbreviation/-/extract-abbreviation-0.1.6.tgz#e4a9856c1057f0aff7d443b8536477c243abe28c" @@ -1208,11 +1213,6 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -sigma@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/sigma/-/sigma-1.2.1.tgz#2ebf3df2971715afe49ad0c08945c574bb6c5771" - integrity sha512-9Z0m1pssXv6sndPMvOzXnM1mVO73YCWDE6X5bKxJyG+9J0B9zJkgtgoBM7cnxEaJMzmrbxPceKTVpwF7cS/xqA== - sirv-cli@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/sirv-cli/-/sirv-cli-1.0.6.tgz#a4924254d965b23a518512f70010e710185de2f1"