Engine and version selection now works better

This commit is contained in:
2023-06-19 09:39:38 +02:00
parent 8cc494f03b
commit 51d5bf3d73

View File

@@ -12,40 +12,58 @@ const props = defineProps(
const result = ref('');
var engines = ["saxon", "xalan", "libxml"];
var versions = ["1.0", "2.0", "3.0", "3.1"];
var enginesForCurrentTool = ref(["saxon", "xalan", "libxml"]);
const allVersions = ["1.0", "2.0", "3.0", "3.1"];
var versionsForCurrentEngine = ref([""]);
const engine = ref('');
const version = ref('');
onMounted(() => {
selectAvailableEngines();
selectAvailableVersions();
selectDefaults();
changeAvailableEngines();
changeAvailableVersions();
})
function selectAvailableEngines() {
function changeAvailableEngines() {
if (props.tool == "xsd") {
engines = ["xalan", "libxml"]
enginesForCurrentTool.value = ["xalan", "libxml"]
}
else if (props.tool == "xquery") {
engines = ["saxon"]
enginesForCurrentTool.value = ["saxon"]
}
selectDefaultEngine();
}
function selectAvailableVersions() {
function changeAvailableVersions() {
if (props.tool == "xquery")
versions = ["3.1"];
versionsForCurrentEngine.value = ["3.1"];
else if (props.tool == "xslt")
versions = ["3.0"];
versionsForCurrentEngine.value = ["3.0"];
else if (props.tool == "xsd")
versions = ["N/A"];
versionsForCurrentEngine.value = ["N/A"];
else if (props.tool == "xpath")
changeAvailableVersionsOfXPath();
selectDefaultVersion();
}
function selectDefaults() {
version.value = versions[versions.length - 1];
engine.value = engines[0];
function changeAvailableVersionsOfXPath() {
if(engine.value == "xalan" || engine.value == "libxml")
versionsForCurrentEngine.value = ["1.0"];
else if (engine.value == "saxon")
versionsForCurrentEngine.value = allVersions;
}
function selectDefaultEngine() {
engine.value = enginesForCurrentTool.value[0];
}
function selectDefaultVersion() {
const lastVersion = versionsForCurrentEngine.value.length - 1
version.value = versionsForCurrentEngine.value[lastVersion];
}
function process() {
@@ -96,11 +114,11 @@ function updateOutputField(data: any) {
<div class="flex place-content-between w-full items-center m-2">
<span class="dark:text-white">Result:</span>
<div class="flex space-x-2">
<select v-model="engine" name="engine" class="px-3 rounded-full border border-slate-400 bg-white dark:text-slate-100 dark:bg-gray-600">
<option v-for="engine in engines" :value="engine">{{ engine }}</option>
<select v-model="engine" name="engine" @change="changeAvailableVersions()" class="px-3 rounded-full border border-slate-400 bg-white dark:text-slate-100 dark:bg-gray-600">
<option v-for="engine in enginesForCurrentTool" :value="engine">{{ engine }}</option>
</select>
<select v-model="version" name="version" class="px-3 rounded-full border border-slate-400 bg-white dark:text-slate-100 dark:bg-gray-600">
<option v-for="version in versions" :value="version">{{ version }}</option>
<option v-for="version in versionsForCurrentEngine" :value="version">{{ version }}</option>
</select>
<button class="tool-button">Clear</button>
<button class="tool-button" @click="process">Process</button>