This commit is contained in:
2020-05-23 19:53:10 +00:00
parent 8b187ac9c4
commit f0f0d2a011
4 changed files with 251 additions and 11 deletions

View File

@@ -108,6 +108,7 @@ export default {
"More",
"Logout",
"Active",
"Copy",
"New",
"Cancel",
"Close",

View File

@@ -190,6 +190,7 @@ export default {
let vm = this;
// vm.formState.loading = true;
let url = "backup/status";
window.$gz.form.deleteAllErrorBoxErrors(vm);
window.$gz.api
.get(url)
.then(res => {

View File

@@ -1,21 +1,257 @@
<template>
<UnderConstruction />
<v-row v-if="this.formState.ready">
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
<v-col cols="12">
<v-btn @click="getDataFromApi" class="m-6">
<v-icon>fa-sync</v-icon>
</v-btn>
<v-simple-table>
<template v-slot:default>
<thead>
<tr>
<th class="text-left"></th>
<th class="text-left"></th>
<th class="text-left"></th>
</tr>
</thead>
<tbody>
<tr v-for="item in obj" :key="item.id">
<td>{{ item.created }}</td>
<td>{{ item.jobId }}</td>
<td>{{ item.status }}</td>
</tr>
</tbody>
</template>
</v-simple-table>
<!-- </v-col> -->
</v-col>
</v-row>
</template>
<script>
import UnderConstruction from "../components/underconstruction.vue";
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Xeslint-disable */
////////////////////////////////////////////////////////////////////////////////////////////////////////////
const FORM_KEY = "ops-jobs";
export default {
components: {
UnderConstruction
created() {
let vm = this;
initForm(vm)
.then(() => {
vm.formState.ready = true;
window.$gz.eventBus.$on("menu-click", clickHandler);
vm.getDataFromApi();
vm.formState.loading = false;
})
.catch(err => {
vm.formState.ready = true;
window.$gz.errorHandler.handleFormError(err, vm);
});
},
beforeCreate() {
window.$gz.eventBus.$emit("menu-change", {
isMain: true,
icon: "fa-robot",
title: this.$ay.t("ServerJobs"),
helpUrl: "form-ops-jobs"
});
data() {
return {
obj: [],
rawObj: [],
formState: {
ready: false,
loading: true,
errorBoxMessage: null,
appError: null,
serverError: {}
},
//cache display format stuff
timeZoneName: window.$gz.locale.getBrowserTimeZoneName(),
languageName: window.$gz.locale.getBrowserLanguages(),
hour12: window.$gz.locale.getHour12()
};
},
beforeDestroy() {
window.$gz.eventBus.$off("menu-click", clickHandler);
},
methods: {
translation() {
return window.$gz.translation;
},
locale() {
return window.$gz.locale;
},
form() {
return window.$gz.form;
},
fieldValueChanged(ref) {
if (!this.formState.loading && !this.formState.readOnly) {
window.$gz.form.fieldValueChanged(this, ref);
}
},
getDataFromApi() {
let vm = this;
vm.formState.loading = true;
let url = "job-operations/logs/all-jobs";
window.$gz.form.deleteAllErrorBoxErrors(vm);
window.$gz.api
.get(url)
.then(res => {
if (res.error) {
if (res.error.code == "2010") {
window.$gz.eventBus.$emit(
"notify-error",
vm.$ay.t("ErrorAPI2010")
);
window.$gz._.delay(function() {
vm.$router.go(-1);
}, 2000);
}
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
} else {
if (res.data) {
vm.rawObj = res.data;
let ret = [];
for (let i = 0; i < res.data.length; i++) {
let o = res.data[i];
ret.push({
id: i,
created: window.$gz.locale.utcDateToShortDateAndTimeLocalized(
o.created,
this.timeZoneName,
this.languageName,
this.hour12
),
status: o.statusText,
jobId:
o.jobId == "00000000-0000-0000-0000-000000000000"
? ""
: o.jobId
});
}
vm.obj = ret;
} else {
vm.rawObj = [];
vm.obj = [];
}
window.$gz.form.setFormState({
vm: vm,
dirty: false,
valid: true,
loading: false
});
generateMenu(vm);
}
})
.catch(function handleGetDataFromAPIError(error) {
window.$gz.form.setFormState({
vm: vm,
loading: false
});
window.$gz.errorHandler.handleFormError(error, vm);
});
},
testJob() {
let vm = this;
vm.formState.loading = true;
let url = "job-operations/test-job";
window.$gz.form.deleteAllErrorBoxErrors(vm);
window.$gz.api
.upsert(url, {})
.then(res => {
vm.formState.loading = false;
if (res.error) {
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
}
})
.catch(function handleSubmitError(error) {
vm.formState.loading = false;
window.$gz.errorHandler.handleFormError(error, vm);
});
}
}
};
//////////////////////
//
//
function generateMenu(vm) {
let menuOptions = {
isMain: true,
icon: "fa-robot",
title: vm.$ay.t("ServerJobs"),
helpUrl: "form-ops-jobs",
menuItems: [
{
title: vm.$ay.t("Copy"),
icon: "fa-copy",
surface: false,
key: FORM_KEY + ":copylog",
vm: vm
},
{
title: vm.$ay.t("OpsTestJob"),
icon: "fa-robot",
surface: false,
key: FORM_KEY + ":TEST_JOB",
vm: vm
}
]
};
window.$gz.eventBus.$emit("menu-change", menuOptions);
}
/////////////////////////////
//
//
function clickHandler(menuItem) {
if (!menuItem) {
return;
}
let m = window.$gz.menu.parseMenuItem(menuItem);
if (m.owner == FORM_KEY && !m.disabled) {
switch (m.key) {
case "copylog":
//put the log info on the clipboard:
window.$gz.util.copyToClipboard(
"SERVER JOBS LOG\n" + JSON.stringify(m.vm.rawObj, null, 1)
);
break;
case "TEST_JOB":
m.vm.testJob();
break;
default:
window.$gz.eventBus.$emit(
"notify-warning",
FORM_KEY + "::context click: [" + m.key + "]"
);
}
}
}
/////////////////////////////////
//
//
function initForm(vm) {
return new Promise(function(resolve, reject) {
(async function() {
try {
await fetchTranslatedText(vm);
} catch (err) {
reject(err);
}
resolve();
})();
});
}
//////////////////////////////////////////////////////////
//
// Ensures UI translated text is available
//
function fetchTranslatedText(vm) {
let tKeysRequired = ["OpsTestJob"];
return window.$gz.translation.fetch(tKeysRequired);
}
</script>