diff --git a/frontend/app/components/partials/ContentSidebar.vue b/frontend/app/components/partials/ContentSidebar.vue index 243f32c..30ca27c 100644 --- a/frontend/app/components/partials/ContentSidebar.vue +++ b/frontend/app/components/partials/ContentSidebar.vue @@ -4,7 +4,6 @@ import { computed, onMounted, onUnmounted, ref, watch } from 'vue'; import { useCampaignService } from '~/services/Campaign.js'; import { emitter } from '~/services/Emitter'; import Server from '~/services/Server'; -import { CreateWindow } from '~/services/Windows'; const { Campaign } = useCampaignService(); const notes = ref([]); @@ -64,14 +63,31 @@ function toggleSidebar() { sidebarCollapsed.value = !sidebarCollapsed.value; } -function openCreateNoteWindow() { +async function createNote() { if (!Campaign.value) { return; } - CreateWindow('create_note'); + const campaignId = Campaign.value?._id + + try { + const response = await Server().post('/note/create', { + title: 'New note', + content: "", + campaign: campaignId + }); + + if (response.data.status !== 'ok') { + return; + } + + emitter.emit('note-created', response.data.note); + } catch (err) { + console.log(err); + } } + function openNote(note) { emitter.emit('push-note', note); } @@ -136,7 +152,7 @@ watch(Campaign, () => { - diff --git a/frontend/app/components/viewer/widgets/display/RollWidgetDisplay.vue b/frontend/app/components/viewer/widgets/display/RollWidgetDisplay.vue index 2511369..dc3c551 100644 --- a/frontend/app/components/viewer/widgets/display/RollWidgetDisplay.vue +++ b/frontend/app/components/viewer/widgets/display/RollWidgetDisplay.vue @@ -171,7 +171,7 @@ onMounted(() => { .roll-btn { padding: 8px; - margin-right: 4px; + margin-right: 8px; } \ No newline at end of file diff --git a/frontend/app/components/windows/CreateNoteWindow.vue b/frontend/app/components/windows/CreateNoteWindow.vue deleted file mode 100644 index 3df888f..0000000 --- a/frontend/app/components/windows/CreateNoteWindow.vue +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/frontend/app/services/Marker.js b/frontend/app/services/Marker.js index 574393e..90ffe27 100644 --- a/frontend/app/services/Marker.js +++ b/frontend/app/services/Marker.js @@ -27,7 +27,7 @@ const GetWidget = (type, name) => { const marker = new Marked(); const extension = { - name: "something", + name: "widget", level: "block", tokenizer(src) { @@ -37,7 +37,7 @@ const extension = { if (!match) return; return { - type: "something", + type: "widget", raw: match[0], name: match[1], text: match[2], @@ -50,7 +50,7 @@ const extension = { }; const inlineExtension = { - name: "something_inline", + name: "widget_inline", level: "inline", start(src) { return src.indexOf("@"); @@ -62,7 +62,7 @@ const inlineExtension = { if (!match) return; return { - type: "something_inline", + type: "widget_inline", raw: match[0], name: match[1], text: match[2], @@ -74,8 +74,32 @@ const inlineExtension = { }, }; +const linkExtension = { + name: "link_to", + level: "inline", + start(src) { + return src.indexOf("[["); + }, + + tokenizer(src) { + const rule = /^\[\[([^\n]*)\]\]/; + const match = rule.exec(src); + if (!match) return; + + return { + type: "link_to", + raw: match[0], + link: match[1], + }; + }, + + renderer(token) { + return ``; + }, +}; + marker.use({ - extensions: [extension, inlineExtension], + extensions: [extension, inlineExtension, linkExtension], }); function ParseMarkdown(source) { diff --git a/frontend/app/services/WindowDefinitions.js b/frontend/app/services/WindowDefinitions.js index c5c8006..0362232 100644 --- a/frontend/app/services/WindowDefinitions.js +++ b/frontend/app/services/WindowDefinitions.js @@ -34,12 +34,6 @@ const defWindows = { component: () => import('~/components/windows/CreateCampaignWindow.vue'), close: () => ClearWindow({type: 'create_campaign'}), movable: true - }, - create_note: { - title: "Create note", - component: () => import('~/components/windows/CreateNoteWindow.vue'), - close: () => ClearWindow({type: 'create_note'}), - movable: true } }