335 lines
9.3 KiB
Vue
335 lines
9.3 KiB
Vue
<template>
|
|
<v-row v-if="formState.ready">
|
|
<v-col>
|
|
<v-form ref="form">
|
|
<v-row>
|
|
<gz-error :errorBoxMessage="formState.errorBoxMessage"></gz-error>
|
|
<v-col cols="12" offset-md="3">
|
|
<v-col cols="12">
|
|
<div class="text-h4 text-md-h2 mb-2">{{ $ay.t("Welcome") }}</div>
|
|
</v-col>
|
|
<v-col cols="12">
|
|
<v-btn @click="helpEvaluate()" class="my-8 mr-16">{{
|
|
$ay.t("EvaluationGuide")
|
|
}}</v-btn>
|
|
<v-btn :href="supportLink()" target="blank" class="my-8 mr-12">{{
|
|
$ay.t("HelpTechSupport")
|
|
}}</v-btn>
|
|
</v-col>
|
|
<v-col cols="12">
|
|
<div class="text-h5 mt-8 mb-2">
|
|
{{ $ay.t("GenerateSampleData") }}
|
|
</div>
|
|
<v-col cols="12" sm="6" v-if="formState.readOnly">
|
|
<div class="text-h6 mt-8 warning--text">
|
|
{{ $ay.t("ErrorSecurityAdministratorOnlyMessage") }}
|
|
</div>
|
|
</v-col>
|
|
<v-col cols="12" sm="6">
|
|
<v-select
|
|
v-model="obj.seedLevel"
|
|
:items="selectLists.seedLevels"
|
|
:rules="[form().required(this, 'seedLevel')]"
|
|
@input="fieldValueChanged('seedLevel')"
|
|
ref="seedLevel"
|
|
item-text="name"
|
|
item-value="id"
|
|
:readonly="formState.readOnly"
|
|
:disabled="formState.readOnly"
|
|
:label="$ay.t('SeedLevel')"
|
|
></v-select>
|
|
</v-col>
|
|
<v-col cols="12" sm="6">
|
|
<v-text-field
|
|
v-model="obj.timeZoneOffset"
|
|
:readonly="formState.readOnly"
|
|
:disabled="formState.readOnly"
|
|
:rules="[
|
|
form().decimalValid(this, 'timeZoneOffset'),
|
|
form().required(this, 'timeZoneOffset')
|
|
]"
|
|
:label="$ay.t('UserTimeZoneOffset')"
|
|
type="number"
|
|
ref="timeZoneOffset"
|
|
@input="fieldValueChanged('timeZoneOffset')"
|
|
></v-text-field>
|
|
</v-col>
|
|
|
|
<v-col cols="12">
|
|
<v-btn
|
|
:loading="seedingJobActive"
|
|
:disabled="formState.readOnly"
|
|
@click="generate()"
|
|
class="my-8 mr-4"
|
|
>{{ $ay.t("StartJob") }}</v-btn
|
|
>
|
|
</v-col>
|
|
</v-col>
|
|
</v-col>
|
|
</v-row>
|
|
</v-form>
|
|
</v-col>
|
|
</v-row>
|
|
</template>
|
|
|
|
<script>
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
/* Xeslint-disable */
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
const FORM_KEY = "ay-evaluate";
|
|
export default {
|
|
async created() {
|
|
let vm = this;
|
|
try {
|
|
await initForm(vm);
|
|
|
|
vm.obj.timeZoneOffset =
|
|
Math.floor(new Date().getTimezoneOffset() / 60) * -1;
|
|
//get rights to generate sample data and erase db I guess
|
|
vm.rights = window.$gz.role.getRights(window.$gz.type.TrialSeeder);
|
|
//set form readonly if it's so
|
|
vm.formState.readOnly = !vm.rights.change;
|
|
generateMenu(vm);
|
|
vm.formState.ready = true;
|
|
vm.formState.loading = false;
|
|
window.$gz.eventBus.$on("menu-click", clickHandler);
|
|
} catch (err) {
|
|
vm.formState.ready = true;
|
|
window.$gz.errorHandler.handleFormError(err, vm);
|
|
}
|
|
},
|
|
|
|
beforeDestroy() {
|
|
window.$gz.eventBus.$off("menu-click", clickHandler);
|
|
},
|
|
components: {},
|
|
data() {
|
|
return {
|
|
formCustomTemplateKey: null,
|
|
selectLists: {
|
|
seedLevels: []
|
|
},
|
|
seedingJobActive: false,
|
|
obj: {
|
|
seedLevel: "small",
|
|
timeZoneOffset: 0
|
|
},
|
|
formState: {
|
|
ready: false,
|
|
dirty: false,
|
|
valid: true,
|
|
readOnly: false,
|
|
loading: true,
|
|
errorBoxMessage: null,
|
|
appError: null,
|
|
serverError: {}
|
|
},
|
|
rights: window.$gz.role.fullRightsObject()
|
|
};
|
|
},
|
|
|
|
methods: {
|
|
form() {
|
|
return window.$gz.form;
|
|
},
|
|
fieldValueChanged(ref) {
|
|
if (!this.formState.loading && !this.formState.readOnly) {
|
|
window.$gz.form.fieldValueChanged(this, ref);
|
|
}
|
|
},
|
|
helpEvaluate() {
|
|
window.$gz.eventBus.$emit("menu-click", {
|
|
key: "app:help",
|
|
data: "ay-evaluate"
|
|
});
|
|
},
|
|
supportLink() {
|
|
console.log(window.$gz.store.state.globalSettings);
|
|
let dbId = encodeURIComponent(
|
|
window.$gz.store.state.globalSettings.serverDbId
|
|
);
|
|
let company = encodeURIComponent(
|
|
window.$gz.store.state.globalSettings.company
|
|
);
|
|
return `http://localhost:3002/contact?dbid=${dbId}&company=${company}`;
|
|
// "https://contact.ayanova.com/contact?dbid=" +
|
|
// window.$gz.store.state.globalSettings.serverDbId
|
|
},
|
|
async generate() {
|
|
let vm = this;
|
|
|
|
if (vm.formState.readOnly) {
|
|
window.$gz.eventBus.$emit(
|
|
"notify-warning",
|
|
vm.$ay.t("ErrorSecurityAdministratorOnlyMessage")
|
|
);
|
|
return;
|
|
}
|
|
try {
|
|
//Does the database need to be erased?
|
|
let res = await window.$gz.api.get("license/database-empty");
|
|
//We never expect there to be no data here
|
|
if (!res.hasOwnProperty("data")) {
|
|
throw res;
|
|
}
|
|
if (res.data != true) {
|
|
let dialogResult = await window.$gz.dialog.confirmGeneric(
|
|
"AdminEraseDatabaseWarning",
|
|
"warning"
|
|
);
|
|
if (dialogResult == false) {
|
|
return;
|
|
}
|
|
|
|
dialogResult = await window.$gz.dialog.confirmGeneric(
|
|
"AdminEraseDatabaseLastWarning",
|
|
"error"
|
|
);
|
|
if (dialogResult == false) {
|
|
return;
|
|
}
|
|
//call erase
|
|
await window.$gz.api.upsert(
|
|
"license/permanently-erase-all-data",
|
|
"I understand"
|
|
);
|
|
}
|
|
|
|
//call seed route
|
|
let jobId = await window.$gz.api.upsert(
|
|
`trial/seed/${vm.obj.seedLevel}/${vm.obj.timeZoneOffset}`
|
|
);
|
|
if (jobId.error) {
|
|
throw jobId.error;
|
|
}
|
|
jobId = jobId.jobId; //it's in a sub key
|
|
//indicate loading by setting on button
|
|
vm.seedingJobActive = true;
|
|
|
|
/* /// <summary>
|
|
/// Job status for opsjobs
|
|
/// </summary>
|
|
public enum JobStatus : int
|
|
{
|
|
Absent=0,
|
|
Sleeping = 1,
|
|
Running = 2,
|
|
Completed = 3,
|
|
Failed = 4
|
|
} */
|
|
let jobStatus = 1;
|
|
//get status
|
|
|
|
while (vm.seedingJobActive == true) {
|
|
await window.$gz.util.sleepAsync(1000);
|
|
//check if done
|
|
jobStatus = await window.$gz.api.get(
|
|
`job-operations/status/${jobId}`
|
|
);
|
|
if (jobStatus.error) {
|
|
throw jobStatus.error;
|
|
}
|
|
jobStatus = jobStatus.data;
|
|
if (jobStatus == 4 || jobStatus == 0) {
|
|
throw "Seeding job failed";
|
|
}
|
|
if (jobStatus == 3) {
|
|
vm.seedingJobActive = false;
|
|
}
|
|
}
|
|
|
|
//Here if it's completed successfully
|
|
window.$gz.eventBus.$emit("notify-success", vm.$ay.t("JobCompleted"));
|
|
vm.$router.push("/login");
|
|
} catch (error) {
|
|
vm.seedingJobActive = false;
|
|
window.$gz.errorHandler.handleFormError(error, vm);
|
|
window.$gz.eventBus.$emit("notify-error", vm.$ay.t("JobFailed"));
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
/////////////////////////////
|
|
//
|
|
//
|
|
function clickHandler(menuItem) {
|
|
if (!menuItem) {
|
|
return;
|
|
}
|
|
let m = window.$gz.menu.parseMenuItem(menuItem);
|
|
if (m.owner == FORM_KEY && !m.disabled) {
|
|
switch (m.key) {
|
|
default:
|
|
window.$gz.eventBus.$emit(
|
|
"notify-warning",
|
|
FORM_KEY + "::context click: [" + m.key + "]"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////
|
|
//
|
|
//
|
|
function generateMenu(vm) {
|
|
let menuOptions = {
|
|
isMain: true,
|
|
icon: "fa-rocket",
|
|
title: "Evaluate",
|
|
helpUrl: "ay-evaluate",
|
|
menuItems: []
|
|
};
|
|
|
|
window.$gz.eventBus.$emit("menu-change", menuOptions);
|
|
}
|
|
|
|
/////////////////////////////////
|
|
//
|
|
//
|
|
async function initForm(vm) {
|
|
await fetchTranslatedText(vm);
|
|
await populateSelectionLists(vm);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////
|
|
//
|
|
// Ensures UI translated text is available
|
|
//
|
|
async function fetchTranslatedText(vm) {
|
|
await window.$gz.translation.cacheTranslations([
|
|
"Welcome",
|
|
"GenerateSampleData",
|
|
"EvaluationGuide",
|
|
"HelpTechSupport",
|
|
"SeedLevel",
|
|
"SeedLevelSmall",
|
|
"SeedLevelMedium",
|
|
"SeedLevelLarge",
|
|
"SeedLevelHuge",
|
|
"StartJob",
|
|
"AdminEraseDatabaseWarning",
|
|
"AdminEraseDatabaseLastWarning",
|
|
"UserTimeZoneOffset",
|
|
"JobCompleted",
|
|
"JobFailed",
|
|
"ErrorSecurityAdministratorOnlyMessage"
|
|
]);
|
|
}
|
|
|
|
/////////////////////////////////
|
|
//
|
|
//
|
|
function populateSelectionLists(vm) {
|
|
vm.selectLists.seedLevels.push(
|
|
...[
|
|
{ name: vm.$ay.t("SeedLevelSmall"), id: "small" },
|
|
{ name: vm.$ay.t("SeedLevelMedium"), id: "medium" },
|
|
{ name: vm.$ay.t("SeedLevelLarge"), id: "large" },
|
|
{ name: vm.$ay.t("SeedLevelHuge"), id: "huge" }
|
|
]
|
|
);
|
|
}
|
|
</script>
|