Implemented functionality
This commit is contained in:
@@ -1,12 +1,18 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import XMLButtonFormatterComponent from '@/components/formatter/XMLButtonFormatterComponent.vue';
|
||||||
|
import InsertDefaultComponent from '../xml/InsertDefaultComponent.vue';
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
inputValue: {type: String, required: true}
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex h-full"></div>
|
<div class="flex flex-col w-full h-full">
|
||||||
|
|
||||||
<textarea name="data" id="data" class="text-field"></textarea>
|
<textarea name="data" id="data" :value="$props.inputValue" class="text-field"></textarea>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped></style>
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="flex h-full"></div>
|
||||||
|
|
||||||
|
<textarea name="data" id="data" class="text-field"></textarea>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
xml: {type: String, required: true}
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(["update:result"])
|
||||||
|
|
||||||
|
function process() {
|
||||||
|
var request:Request = prepareRequest();
|
||||||
|
fetchRequest(request).then((data) => {
|
||||||
|
sendProcessedData(data);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepareRequest():Request {
|
||||||
|
var request = new Request(prepareURL(), {
|
||||||
|
body: prepareRequestBody(),
|
||||||
|
method: "POST"
|
||||||
|
});
|
||||||
|
return request
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepareURL(): string {
|
||||||
|
return document.location.protocol + "//" + document.location.hostname + "/libxml/prettify";
|
||||||
|
}
|
||||||
|
|
||||||
|
function prepareRequestBody():string {
|
||||||
|
var requestBody = JSON.stringify({
|
||||||
|
"data": props.xml,
|
||||||
|
"process": "N/A",
|
||||||
|
"processor": "libxml",
|
||||||
|
"version": "1.0"
|
||||||
|
});
|
||||||
|
return requestBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchRequest(request: Request):Promise<JSON> {
|
||||||
|
var responseBody = await fetch(request)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then((body) => body);
|
||||||
|
return responseBody;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendProcessedData(data: JSON) {
|
||||||
|
emit("update:result", data);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<button class="tool-button" @click="process()">Format XML</button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
44
Frontend/src/components/xml/InsertDefaultComponent.vue
Normal file
44
Frontend/src/components/xml/InsertDefaultComponent.vue
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
import sampleXML from "@/assets/sampleXml.xml?raw"
|
||||||
|
import sampleXSLT from "@/assets/sampleXslt.xml?raw"
|
||||||
|
import sampleXSD from "@/assets/sampleXsd.xml?raw"
|
||||||
|
import sampleXQuery from "@/assets/sampleXQuery.xquery?raw"
|
||||||
|
|
||||||
|
|
||||||
|
const props = defineProps(
|
||||||
|
{
|
||||||
|
prettyName: {type: String, required: true}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:defaultData'])
|
||||||
|
|
||||||
|
function setDefault() {
|
||||||
|
const emitName = "update:defaultData";
|
||||||
|
switch (props.prettyName.toLowerCase()) {
|
||||||
|
case "xpath":
|
||||||
|
emit(emitName, "string(/l:library/l:libraryName)")
|
||||||
|
break;
|
||||||
|
case "xsd":
|
||||||
|
emit(emitName, sampleXSD)
|
||||||
|
break;
|
||||||
|
case "xslt":
|
||||||
|
emit(emitName, sampleXSLT)
|
||||||
|
break;
|
||||||
|
case "xquery":
|
||||||
|
emit(emitName, sampleXQuery)
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
emit(emitName, sampleXML)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<button class="tool-button" @click="setDefault()">Insert default {{ prettyName }}</button>
|
||||||
|
</template>
|
||||||
@@ -1,10 +1,6 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import sampleXML from "@/assets/sampleXml.xml?raw"
|
import InsertDefaultComponent from "./InsertDefaultComponent.vue"
|
||||||
import sampleXSLT from "@/assets/sampleXslt.xml?raw"
|
|
||||||
import sampleXSD from "@/assets/sampleXsd.xml?raw"
|
|
||||||
import sampleXQuery from "@/assets/sampleXQuery.xquery?raw"
|
|
||||||
|
|
||||||
|
|
||||||
const props = defineProps(
|
const props = defineProps(
|
||||||
{
|
{
|
||||||
@@ -14,27 +10,9 @@ const props = defineProps(
|
|||||||
|
|
||||||
const emit = defineEmits(['update:defaultData'])
|
const emit = defineEmits(['update:defaultData'])
|
||||||
|
|
||||||
function setDefault() {
|
function setDefault(data: string) {
|
||||||
const emitName = "update:defaultData";
|
const emitName = "update:defaultData";
|
||||||
switch (props.prettyName.toLowerCase()) {
|
emit(emitName, data)
|
||||||
case "xpath":
|
|
||||||
emit(emitName, "string(/l:library/l:libraryName)")
|
|
||||||
break;
|
|
||||||
case "xsd":
|
|
||||||
emit(emitName, sampleXSD)
|
|
||||||
break;
|
|
||||||
case "xslt":
|
|
||||||
emit(emitName, sampleXSLT)
|
|
||||||
break;
|
|
||||||
case "xquery":
|
|
||||||
emit(emitName, sampleXQuery)
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
emit(emitName, sampleXML)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -43,7 +21,7 @@ function setDefault() {
|
|||||||
<div class="flex place-content-between w-full pr-2 items-center m-2">
|
<div class="flex place-content-between w-full pr-2 items-center m-2">
|
||||||
<span class="dark:text-white">{{ prettyName }}</span>
|
<span class="dark:text-white">{{ prettyName }}</span>
|
||||||
<div class="flex space-x-2">
|
<div class="flex space-x-2">
|
||||||
<button class="tool-button" @click="setDefault()">Insert default {{ prettyName }}</button>
|
<InsertDefaultComponent :pretty-name="props.prettyName" @update:default-data="(data) => setDefault(data)"></InsertDefaultComponent>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,16 +1,31 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import InputFormatterComponent from '@/components/formatter/InputFormatterComponent.vue';
|
import InputFormatterComponent from '@/components/formatter/InputFormatterComponent.vue';
|
||||||
import xmlOutputFieldComponent from '@/components/xml/XmlOutputFieldComponent.vue';
|
import XMLButtonFormatterComponent from '@/components/formatter/XMLButtonFormatterComponent.vue';
|
||||||
|
import InsertDefaultComponent from '@components/xml/InsertDefaultComponent.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
|
||||||
const xml = ref('');
|
const xml = ref('');
|
||||||
const query = ref('');
|
|
||||||
|
function setTextFieldValue(data: any) {
|
||||||
|
xml.value = data
|
||||||
|
}
|
||||||
|
|
||||||
|
function format(formattedXml: any) {
|
||||||
|
xml.value = formattedXml.result;
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div id="layout" class="flex flex-col lg:flex-row w-full h-full gap-4">
|
<div id="layout" class="flex flex-col w-full h-full gap-4">
|
||||||
<InputFormatterComponent></InputFormatterComponent>
|
<div id="toolbar" class= "flex flex-col gap-4 items-center md:flex-row place-content-between">
|
||||||
|
<span class="dark:text-slate-100">XML Formatter</span>
|
||||||
|
<div class="space-x-2">
|
||||||
|
<InsertDefaultComponent pretty-name="XML" @update:defaultData="(data: any) => setTextFieldValue(data)"></InsertDefaultComponent>
|
||||||
|
<XMLButtonFormatterComponent :xml="xml" @update:result="(data: any) => format(data)"></XMLButtonFormatterComponent>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<InputFormatterComponent :inputValue="xml"></InputFormatterComponent>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
Reference in New Issue
Block a user