From ad6aaa8d77084f667b7046c150d1e892ef77bec3 Mon Sep 17 00:00:00 2001 From: Adam Bem Date: Thu, 23 Nov 2023 13:20:01 +0100 Subject: [PATCH] Added basic functionality --- Frontend/src/components/xml/TabComponent.vue | 14 ++-- .../components/xml/TabbedInputComponent.vue | 2 +- .../xml/XmlTabbedInputComponent.vue | 61 ++++++++++++-- .../src/components/xml/XmlToolComponent.vue | 83 ------------------- 4 files changed, 64 insertions(+), 96 deletions(-) delete mode 100644 Frontend/src/components/xml/XmlToolComponent.vue diff --git a/Frontend/src/components/xml/TabComponent.vue b/Frontend/src/components/xml/TabComponent.vue index 479bf5e..480d9b6 100644 --- a/Frontend/src/components/xml/TabComponent.vue +++ b/Frontend/src/components/xml/TabComponent.vue @@ -8,25 +8,25 @@ const props = defineProps({ isActive: { type: Boolean, default: false, - required: true + required: false } }) -const emit = defineEmits(["activate", "remove"]) +const emit = defineEmits(["click:activate", "click:remove"]) -function click() { - emit("activate", props.id); +function activate() { + emit("click:activate", props.id); } function remove() { - emit("remove", props.id); + emit("click:remove", props.id); } \ No newline at end of file diff --git a/Frontend/src/components/xml/TabbedInputComponent.vue b/Frontend/src/components/xml/TabbedInputComponent.vue index 1d7072e..b42dc5b 100644 --- a/Frontend/src/components/xml/TabbedInputComponent.vue +++ b/Frontend/src/components/xml/TabbedInputComponent.vue @@ -38,7 +38,7 @@ function addTab() {
- {{ item }} +
diff --git a/Frontend/src/components/xml/XmlTabbedInputComponent.vue b/Frontend/src/components/xml/XmlTabbedInputComponent.vue index d44b3d2..aabb036 100644 --- a/Frontend/src/components/xml/XmlTabbedInputComponent.vue +++ b/Frontend/src/components/xml/XmlTabbedInputComponent.vue @@ -5,6 +5,15 @@ import XMLButtonFormatterComponent from '@components/formatter/XMLButtonFormatte import { ref } from 'vue' import CodeEditor from '../CodeEditorComponent.vue' +const newTabId = ref(0); +const activeTabId = ref(0) +const tabs = ref(new Array); +tabs.value.push({ + id: newTabId.value++, + name: "XML1", + data: "", +}) + const data = ref('') const inputFile = ref() @@ -16,6 +25,12 @@ const props = defineProps( ) const emit = defineEmits(['update']) +interface TabData { + id: number; + name: string; + data: string; +} + function sendValue() { emit('update', data.value) } @@ -53,21 +68,57 @@ function readFile(file : any) { reader.readAsText(file.target.files[0]) } +function changeActiveTab(id : number) { + let index = findIndexWithID(activeTabId.value); + let newIndex = findIndexWithID(id); + + tabs.value.at(index)!.data = data.value; + activeTabId.value = id; + data.value = tabs.value.at(newIndex)!.data; +} + +function addTab() { + tabs.value.push({ + id: newTabId.value++, + name: "XML" + newTabId.value, + data: "" + }) +} + +function removeTab(id : number) { + if (tabs.value.length == 1) + return + + let index = findIndexWithID(activeTabId.value); + tabs.value.splice(index, 1); + if (activeTabId.value == id) { + activeTabId.value = tabs.value.at(0)!.id; + data.value = tabs.value.at(0)!.data; + } + +} + +function findIndexWithID(id : number) : number { + for (let i = 0; tabs.value.length; i++) + if (tabs.value.at(i)!.id == id) + return i; + + return -1; +} +