From 1869b5c5f9565b5e9e20697c4401a2f9ba9f2c3a Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Thu, 15 Feb 2024 18:39:01 +0000 Subject: Add quest rename and delete functionality --- src/components/Editor/EditorPane.vue | 54 +++++++++++++++-- .../Editor/Quest/Modal/DuplicateQuestModal.vue | 69 ++++++++++++++++++++++ .../Editor/Quest/Modal/RenameQuestModal.vue | 12 +++- src/components/Editor/Quest/QuestOptionsPanel.vue | 7 --- 4 files changed, 130 insertions(+), 12 deletions(-) create mode 100644 src/components/Editor/Quest/Modal/DuplicateQuestModal.vue (limited to 'src/components/Editor') diff --git a/src/components/Editor/EditorPane.vue b/src/components/Editor/EditorPane.vue index 22458cb..21d1f80 100644 --- a/src/components/Editor/EditorPane.vue +++ b/src/components/Editor/EditorPane.vue @@ -9,15 +9,17 @@ import CategoryChildrenOptionsPanel from '@/components/Editor/Category/CategoryC import Button from '@/components/Control/Button.vue'; import DeleteQuestModal from '@/components/Editor/Quest/Modal/DeleteQuestModal.vue'; import RenameQuestModal from '@/components/Editor/Quest/Modal/RenameQuestModal.vue'; +import DuplicateQuestModal from '@/components/Editor/Quest/Modal/DuplicateQuestModal.vue'; const sessionStore = useSessionStore(); const selectedType = computed(() => sessionStore.editor.selected.type); const selectedId = computed(() => sessionStore.editor.selected.id); + const selectedName = computed(() => { - if (selectedType.value === 'Quest') { + if (selectedType.value === 'Quest' && selectedId.value) { return sessionStore.getQuestById(selectedId.value)?.display.name; - } else if (selectedType.value === 'Category') { + } else if (selectedType.value === 'Category' && selectedId.value) { return sessionStore.getCategoryById(selectedId.value)?.display.name; } else { return ''; @@ -25,6 +27,8 @@ const selectedName = computed(() => { }); const categoryFromSelectedQuest = computed(() => { + if (!selectedId.value || selectedType.value !== 'Quest') return null; + const quest = sessionStore.getQuestById(selectedId.value); if (quest) { return sessionStore.getCategoryById(quest.options.category) || null; @@ -35,6 +39,25 @@ const categoryFromSelectedQuest = computed(() => { const showDeleteModal = ref(false); const showRenameModal = ref(false); +const showDuplicateModal = ref(false); + +const renameQuest = (oldId: string, newId: string) => { + sessionStore.changeQuestId(oldId, newId); + sessionStore.editor.selected.id = newId; + showRenameModal.value = false; +}; + +const deleteQuest = (questId: string) => { + sessionStore.deleteQuest(questId); + sessionStore.setEditorSelected(null, null); + showDeleteModal.value = false; +}; + +const duplicateQuest = (oldId: string, newId: string) => { + sessionStore.duplicateQuest(oldId, newId); + sessionStore.editor.selected.id = newId; + showDuplicateModal.value = false; +}; \ No newline at end of file diff --git a/src/components/Editor/Quest/Modal/RenameQuestModal.vue b/src/components/Editor/Quest/Modal/RenameQuestModal.vue index 5b1e0ed..2ad1481 100644 --- a/src/components/Editor/Quest/Modal/RenameQuestModal.vue +++ b/src/components/Editor/Quest/Modal/RenameQuestModal.vue @@ -1,7 +1,8 @@