Files
tacticalrmm-web/src/components/scripts/TestScriptModal.vue
2022-07-31 22:02:50 +00:00

74 lines
1.7 KiB
Vue

<template>
<q-dialog ref="dialogRef" @hide="onDialogHide">
<q-card class="q-dialog-plugin" style="min-width: 65vw">
<q-bar>
Script Test
<q-space />
<q-btn dense flat icon="close" v-close-popup>
<q-tooltip class="bg-white text-primary">Close</q-tooltip>
</q-btn>
</q-bar>
<q-card-section class="scroll" style="max-height: 70vh; height: 70vh">
<pre v-if="ret">{{ ret }}</pre>
<q-inner-loading :showing="loading" />
</q-card-section>
</q-card>
</q-dialog>
</template>
<script>
// composition imports
import { ref, onMounted } from "vue";
import { testScript } from "@/api/scripts";
import { useDialogPluginComponent } from "quasar";
export default {
name: "TestScriptModal",
emits: [...useDialogPluginComponent.emits],
props: {
script: !Object,
agent: !String,
},
setup(props) {
// setup quasar dialog plugin
const { dialogRef, onDialogHide } = useDialogPluginComponent();
// main run script functionality
const ret = ref(null);
const loading = ref(false);
async function runTestScript() {
loading.value = true;
const data = {
code: props.script.script_body,
timeout: props.script.default_timeout,
args: props.script.args,
shell: props.script.shell,
run_as_user: props.script.run_as_user,
};
try {
ret.value = await testScript(props.agent, data);
} catch (e) {
console.error(e);
}
loading.value = false;
}
onMounted(runTestScript);
return {
// reactive data
ret,
loading,
// methods
runTestScript,
// quasar dialog plugin
dialogRef,
onDialogHide,
};
},
};
</script>