re-factor / cleanup

This commit is contained in:
2022-01-11 22:08:38 +00:00
parent e871708b20
commit e0be8a7cfe
251 changed files with 14680 additions and 15693 deletions

View File

@@ -7,12 +7,12 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
ref="name"
v-model="obj.name"
:readonly="formState.readOnly"
:label="$ay.t('ContractName')"
:rules="[form().required(this, 'name')]"
:error-messages="form().serverErrors(this, 'name')"
ref="name"
data-cy="name"
@input="fieldValueChanged('name')"
></v-text-field>
@@ -20,11 +20,11 @@
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-duration-picker
ref="responseTime"
v-model="obj.responseTime"
:readonly="formState.readOnly"
:label="$ay.t('ContractDefaultResponseTime')"
:show-seconds="false"
ref="responseTime"
data-cy="responseTime"
:error-messages="form().serverErrors(this, 'responseTime')"
@input="fieldValueChanged('responseTime')"
@@ -40,10 +40,10 @@
<v-row>
<v-col>
<gz-percent
ref="partsOverridePct"
v-model="obj.partsOverridePct"
:readonly="formState.readOnly"
:label="$ay.t('PartList')"
ref="partsOverridePct"
data-cy="partsOverridePct"
:rules="[
form().decimalValid(this, 'partsOverridePct'),
@@ -58,13 +58,13 @@
<v-col>
<v-select
ref="partsOverrideType"
v-model="obj.partsOverrideType"
:items="selectLists.overrideTypes"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="partsOverrideType"
data-cy="partsOverrideType"
:rules="[form().integerValid(this, 'partsOverrideType')]"
:error-messages="
@@ -77,10 +77,10 @@
<v-row>
<v-col>
<gz-percent
ref="serviceRatesOverridePct"
v-model="obj.serviceRatesOverridePct"
:readonly="formState.readOnly"
:label="$ay.t('ServiceRateList')"
ref="serviceRatesOverridePct"
data-cy="serviceRatesOverridePct"
:rules="[
form().decimalValid(this, 'serviceRatesOverridePct'),
@@ -95,13 +95,13 @@
<v-col>
<v-select
ref="serviceRatesOverrideType"
v-model="obj.serviceRatesOverrideType"
:items="selectLists.overrideTypes"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="serviceRatesOverrideType"
data-cy="serviceRatesOverrideType"
:rules="[
form().integerValid(this, 'serviceRatesOverrideType')
@@ -117,10 +117,10 @@
<v-row>
<v-col>
<gz-percent
ref="travelRatesOverridePct"
v-model="obj.travelRatesOverridePct"
:readonly="formState.readOnly"
:label="$ay.t('TravelRateList')"
ref="travelRatesOverridePct"
data-cy="travelRatesOverridePct"
:rules="[
form().decimalValid(this, 'travelRatesOverridePct'),
@@ -135,13 +135,13 @@
<v-col>
<v-select
ref="travelRatesOverrideType"
v-model="obj.travelRatesOverrideType"
:items="selectLists.overrideTypes"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="travelRatesOverrideType"
data-cy="travelRatesOverrideType"
:rules="[
form().integerValid(this, 'travelRatesOverrideType')
@@ -212,8 +212,8 @@
<v-btn
large
icon
@click="editContractPartOverrideItem(index)"
class="ml-4"
@click="editContractPartOverrideItem(index)"
>
<v-icon small>
$ayiEdit
@@ -279,8 +279,8 @@
<v-btn
large
icon
@click="editContractServiceRateOverrideItem(index)"
class="ml-4"
@click="editContractServiceRateOverrideItem(index)"
>
<v-icon small>
$ayiEdit
@@ -345,8 +345,8 @@
<v-btn
large
icon
@click="editContractTravelRateOverrideItem(index)"
class="ml-4"
@click="editContractTravelRateOverrideItem(index)"
>
<v-icon small>
$ayiEdit
@@ -366,10 +366,10 @@
<!-- ################################ SERVICE RATES ############################### -->
<v-col cols="12" sm="6" lg="4" xl="3" class="mb-10">
<v-checkbox
ref="contractServiceRatesOnly"
v-model="obj.contractServiceRatesOnly"
:readonly="formState.readOnly"
:label="$ay.t('ContractServiceRatesOnly')"
ref="contractServiceRatesOnly"
data-cy="contractServiceRatesOnly"
:error-messages="
form().serverErrors(this, 'contractServiceRatesOnly')
@@ -403,8 +403,8 @@
<v-btn
large
icon
@click="editServiceRateItem(index)"
class="ml-4"
@click="editServiceRateItem(index)"
>
<v-icon small>
$ayiEdit
@@ -420,10 +420,10 @@
<!-- ################################ TRAVEL RATES ############################### -->
<v-col cols="12" sm="6" lg="4" xl="3" class="mb-10">
<v-checkbox
ref="contractTravelRatesOnly"
v-model="obj.contractTravelRatesOnly"
:readonly="formState.readOnly"
:label="$ay.t('ContractTravelRatesOnly')"
ref="contractTravelRatesOnly"
data-cy="contractTravelRatesOnly"
:error-messages="
form().serverErrors(this, 'contractTravelRatesOnly')
@@ -457,8 +457,8 @@
<v-btn
large
icon
@click="editTravelRateItem(index)"
class="ml-4"
@click="editTravelRateItem(index)"
>
<v-icon small>
$ayiEdit
@@ -472,10 +472,10 @@
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
ref="active"
v-model="obj.active"
:readonly="formState.readOnly"
:label="$ay.t('Active')"
ref="active"
data-cy="active"
:error-messages="form().serverErrors(this, 'active')"
@change="fieldValueChanged('active')"
@@ -483,35 +483,35 @@
</v-col>
<v-col v-if="form().showMe(this, 'AlertNotes')" cols="12">
<v-textarea
ref="alertNotes"
v-model="obj.alertNotes"
:readonly="formState.readOnly"
:label="$ay.t('AlertNotes')"
:error-messages="form().serverErrors(this, 'alertNotes')"
ref="alertNotes"
data-cy="alertNotes"
@input="fieldValueChanged('alertNotes')"
auto-grow
@input="fieldValueChanged('alertNotes')"
></v-textarea>
</v-col>
<!-- --------------------------------- -->
<v-col v-if="form().showMe(this, 'Notes')" cols="12">
<v-textarea
ref="notes"
v-model="obj.notes"
:readonly="formState.readOnly"
:label="$ay.t('ContractNotes')"
:error-messages="form().serverErrors(this, 'notes')"
ref="notes"
data-cy="notes"
@input="fieldValueChanged('notes')"
auto-grow
@input="fieldValueChanged('notes')"
></v-textarea>
</v-col>
<v-col v-if="form().showMe(this, 'Tags')" cols="12">
<gz-tag-picker
ref="tags"
v-model="obj.tags"
:readonly="formState.readOnly"
ref="tags"
data-cy="tags"
:error-messages="form().serverErrors(this, 'tags')"
@input="fieldValueChanged('tags')"
@@ -520,11 +520,11 @@
<v-col cols="12">
<gz-custom-fields
ref="customFields"
v-model="obj.customFields"
:form-key="formCustomTemplateKey"
:readonly="formState.readOnly"
:parent-v-m="this"
ref="customFields"
data-cy="customFields"
:error-messages="form().serverErrors(this, 'customFields')"
@input="fieldValueChanged('customFields')"
@@ -533,10 +533,10 @@
<v-col v-if="form().showMe(this, 'Wiki')" cols="12">
<gz-wiki
:aya-type="ayaType"
:aya-id="obj.id"
ref="wiki"
v-model="obj.wiki"
:aya-type="ayaType"
:aya-id="obj.id"
:readonly="formState.readOnly"
@input="fieldValueChanged('wiki')"
></gz-wiki
@@ -572,6 +572,7 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-percent
ref="ContractPartOverrideItems.OverridePct"
v-model="
obj.contractPartOverrideItems[
editContractPartOverrideItemIndex
@@ -579,7 +580,6 @@
"
:readonly="formState.readOnly"
:label="$ay.t('ContractAdjustment')"
ref="ContractPartOverrideItems.OverridePct"
data-cy="ContractPartOverrideItems.OverridePct"
:rules="[
form().decimalValid(
@@ -606,6 +606,7 @@
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
ref="ContractPartOverrideItems.OverrideType"
v-model="
obj.contractPartOverrideItems[
editContractPartOverrideItemIndex
@@ -616,7 +617,6 @@
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="ContractPartOverrideItems.OverrideType"
data-cy="ContractPartOverrideItems.OverrideType"
:rules="[
form().integerValid(
@@ -640,13 +640,13 @@
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-tag-picker
ref="ContractPartOverrideItems.Tags"
v-model="
obj.contractPartOverrideItems[
editContractPartOverrideItemIndex
].tags
"
:readonly="formState.readOnly"
ref="ContractPartOverrideItems.Tags"
data-cy="ContractPartOverrideItems.Tags"
:rules="[
form().required(this, 'ContractPartOverrideItems.Tags')
@@ -679,16 +679,16 @@
<v-btn
color="blue darken-1"
text
@click="addContractPartOverrideItem()"
class="ml-4"
@click="addContractPartOverrideItem()"
>{{ $ay.t("New") }}</v-btn
>
<v-btn
color="blue darken-1"
text
@click="editContractPartOverrideItemDialog = false"
class="ml-4"
@click="editContractPartOverrideItemDialog = false"
>{{ $ay.t("OK") }}</v-btn
>
</template>
@@ -745,6 +745,7 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-percent
ref="ContractServiceRateOverrideItems.OverridePct"
v-model="
obj.contractServiceRateOverrideItems[
editContractServiceRateOverrideItemIndex
@@ -752,7 +753,6 @@
"
:readonly="formState.readOnly"
:label="$ay.t('ContractAdjustment')"
ref="ContractServiceRateOverrideItems.OverridePct"
data-cy="ContractServiceRateOverrideItems.OverridePct"
:rules="[
form().decimalValid(
@@ -779,6 +779,7 @@
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
ref="ContractServiceRateOverrideItems.OverrideType"
v-model="
obj.contractServiceRateOverrideItems[
editContractServiceRateOverrideItemIndex
@@ -789,7 +790,6 @@
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="ContractServiceRateOverrideItems.OverrideType"
data-cy="ContractServiceRateOverrideItems.OverrideType"
:rules="[
form().integerValid(
@@ -813,13 +813,13 @@
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-tag-picker
ref="ContractServiceRateOverrideItems.Tags"
v-model="
obj.contractServiceRateOverrideItems[
editContractServiceRateOverrideItemIndex
].tags
"
:readonly="formState.readOnly"
ref="ContractServiceRateOverrideItems.Tags"
data-cy="ContractServiceRateOverrideItems.Tags"
:rules="[
form().required(
@@ -855,16 +855,16 @@
<v-btn
color="blue darken-1"
text
@click="addContractServiceRateOverrideItem()"
class="ml-4"
@click="addContractServiceRateOverrideItem()"
>{{ $ay.t("New") }}</v-btn
>
<v-btn
color="blue darken-1"
text
@click="editContractServiceRateOverrideItemDialog = false"
class="ml-4"
@click="editContractServiceRateOverrideItemDialog = false"
>{{ $ay.t("OK") }}</v-btn
>
</template>
@@ -921,6 +921,7 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-percent
ref="ContractTravelRateOverrideItems.OverridePct"
v-model="
obj.contractTravelRateOverrideItems[
editContractTravelRateOverrideItemIndex
@@ -928,7 +929,6 @@
"
:readonly="formState.readOnly"
:label="$ay.t('ContractAdjustment')"
ref="ContractTravelRateOverrideItems.OverridePct"
data-cy="ContractTravelRateOverrideItems.OverridePct"
:rules="[
form().decimalValid(
@@ -955,6 +955,7 @@
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
ref="ContractTravelRateOverrideItems.OverrideType"
v-model="
obj.contractTravelRateOverrideItems[
editContractTravelRateOverrideItemIndex
@@ -965,7 +966,6 @@
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('ContractOverrideType')"
ref="ContractTravelRateOverrideItems.OverrideType"
data-cy="ContractTravelRateOverrideItems.OverrideType"
:rules="[
form().integerValid(
@@ -989,13 +989,13 @@
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-tag-picker
ref="ContractTravelRateOverrideItems.Tags"
v-model="
obj.contractTravelRateOverrideItems[
editContractTravelRateOverrideItemIndex
].tags
"
:readonly="formState.readOnly"
ref="ContractTravelRateOverrideItems.Tags"
data-cy="ContractTravelRateOverrideItems.Tags"
:rules="[
form().required(
@@ -1031,16 +1031,16 @@
<v-btn
color="blue darken-1"
text
@click="addContractTravelRateOverrideItem()"
class="ml-4"
@click="addContractTravelRateOverrideItem()"
>{{ $ay.t("New") }}</v-btn
>
<v-btn
color="blue darken-1"
text
@click="editContractTravelRateOverrideItemDialog = false"
class="ml-4"
@click="editContractTravelRateOverrideItemDialog = false"
>{{ $ay.t("OK") }}</v-btn
>
</template>
@@ -1094,18 +1094,18 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-pick-list
ref="userid"
v-model="
obj.serviceRateItems[editServiceRateItemIndex]
.serviceRateId
"
:allow-no-selection="false"
:can-clear="false"
:aya-type="ayaTypes().ServiceRate"
:variant="'contractrates'"
show-edit-icon
v-model="
obj.serviceRateItems[editServiceRateItemIndex]
.serviceRateId
"
:readonly="formState.readOnly"
:label="$ay.t('ServiceRate')"
ref="userid"
data-cy="userid"
:rules="[
form().integerValid(
@@ -1120,15 +1120,15 @@
`ServiceRateItems[${editServiceRateItemIndex}].ServiceRateId`
)
"
:name.sync="
obj.serviceRateItems[editServiceRateItemIndex]
.serviceRateViz
"
@input="
fieldValueChanged(
`ServiceRateItems[${editServiceRateItemIndex}].ServiceRateId`
)
"
:name.sync="
obj.serviceRateItems[editServiceRateItemIndex]
.serviceRateViz
"
></gz-pick-list>
</v-col>
</v-row>
@@ -1146,16 +1146,16 @@
<v-btn
color="blue darken-1"
text
@click="addServiceRateItem()"
class="ml-4"
@click="addServiceRateItem()"
>{{ $ay.t("New") }}</v-btn
>
<v-btn
color="blue darken-1"
text
@click="editServiceRateItemDialog = false"
class="ml-4"
@click="editServiceRateItemDialog = false"
>{{ $ay.t("OK") }}</v-btn
>
</template>
@@ -1209,17 +1209,17 @@
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-pick-list
ref="userid"
v-model="
obj.travelRateItems[editTravelRateItemIndex].travelRateId
"
:allow-no-selection="false"
:can-clear="false"
:aya-type="ayaTypes().TravelRate"
:variant="'contractrates'"
show-edit-icon
v-model="
obj.travelRateItems[editTravelRateItemIndex].travelRateId
"
:readonly="formState.readOnly"
:label="$ay.t('TravelRate')"
ref="userid"
data-cy="userid"
:rules="[
form().integerValid(this, 'TravelRateItems.TravelRateId'),
@@ -1231,14 +1231,14 @@
`TravelRateItems[${editTravelRateItemIndex}].TravelRateId`
)
"
:name.sync="
obj.travelRateItems[editTravelRateItemIndex].travelRateViz
"
@input="
fieldValueChanged(
`TravelRateItems[${editTravelRateItemIndex}].TravelRateId`
)
"
:name.sync="
obj.travelRateItems[editTravelRateItemIndex].travelRateViz
"
></gz-pick-list>
</v-col>
</v-row>
@@ -1256,16 +1256,16 @@
<v-btn
color="blue darken-1"
text
@click="addTravelRateItem()"
class="ml-4"
@click="addTravelRateItem()"
>{{ $ay.t("New") }}</v-btn
>
<v-btn
color="blue darken-1"
text
@click="editTravelRateItemDialog = false"
class="ml-4"
@click="editTravelRateItemDialog = false"
>{{ $ay.t("OK") }}</v-btn
>
</template>
@@ -1311,67 +1311,6 @@ const FORM_KEY = "contract-edit";
const API_BASE_URL = "contract/";
const FORM_CUSTOM_TEMPLATE_KEY = "Contract";
export default {
async created() {
const vm = this;
try {
await initForm(vm);
vm.rights = window.$gz.role.getRights(window.$gz.type.Contract);
vm.formState.readOnly = !vm.rights.change;
window.$gz.eventBus.$on("menu-click", clickHandler);
let setDirty = false;
//id 0 means create or duplicate to new
if (vm.$route.params.recordid != 0) {
//is there already an obj from a prior operation?
if (this.$route.params.obj) {
//yes, no need to fetch it
this.obj = this.$route.params.obj;
} else {
await vm.getDataFromApi(vm.$route.params.recordid);
}
} else {
//Might be a duplicate and contain another record
if (this.$route.params.obj) {
this.obj = this.$route.params.obj;
this.obj.concurrency = undefined;
this.obj.id = 0;
this.obj.name = `${this.obj.name} - ${window.$gz.translation.get(
"Copy"
)}`;
this.obj.serviceRateItems.forEach(z => (z.id = 0));
this.obj.travelRateItems.forEach(z => (z.id = 0));
this.obj.contractPartOverrideItems.forEach(z => (z.id = 0));
this.obj.contractServiceRateOverrideItems.forEach(z => (z.id = 0));
this.obj.contractTravelRateOverrideItems.forEach(z => (z.id = 0));
setDirty = true;
}
}
window.$gz.form.setFormState({
vm: vm,
loading: false,
dirty: setDirty,
valid: true
});
generateMenu(vm);
} catch (error) {
window.$gz.errorHandler.handleFormError(error, vm);
} finally {
vm.formState.ready = true;
}
},
async beforeRouteLeave(to, from, next) {
if (!this.formState.dirty || JUST_DELETED) {
next();
return;
}
if ((await window.$gz.dialog.confirmLeaveUnsaved()) === true) {
next();
} else {
next(false);
}
},
beforeDestroy() {
window.$gz.eventBus.$off("menu-click", clickHandler);
},
data() {
return {
formCustomTemplateKey: FORM_CUSTOM_TEMPLATE_KEY,
@@ -1455,6 +1394,67 @@ export default {
deep: true
}
},
async created() {
const vm = this;
try {
await initForm(vm);
vm.rights = window.$gz.role.getRights(window.$gz.type.Contract);
vm.formState.readOnly = !vm.rights.change;
window.$gz.eventBus.$on("menu-click", clickHandler);
let setDirty = false;
//id 0 means create or duplicate to new
if (vm.$route.params.recordid != 0) {
//is there already an obj from a prior operation?
if (this.$route.params.obj) {
//yes, no need to fetch it
this.obj = this.$route.params.obj;
} else {
await vm.getDataFromApi(vm.$route.params.recordid);
}
} else {
//Might be a duplicate and contain another record
if (this.$route.params.obj) {
this.obj = this.$route.params.obj;
this.obj.concurrency = undefined;
this.obj.id = 0;
this.obj.name = `${this.obj.name} - ${window.$gz.translation.get(
"Copy"
)}`;
this.obj.serviceRateItems.forEach(z => (z.id = 0));
this.obj.travelRateItems.forEach(z => (z.id = 0));
this.obj.contractPartOverrideItems.forEach(z => (z.id = 0));
this.obj.contractServiceRateOverrideItems.forEach(z => (z.id = 0));
this.obj.contractTravelRateOverrideItems.forEach(z => (z.id = 0));
setDirty = true;
}
}
window.$gz.form.setFormState({
vm: vm,
loading: false,
dirty: setDirty,
valid: true
});
generateMenu(vm);
} catch (error) {
window.$gz.errorHandler.handleFormError(error, vm);
} finally {
vm.formState.ready = true;
}
},
async beforeRouteLeave(to, from, next) {
if (!this.formState.dirty || JUST_DELETED) {
next();
return;
}
if ((await window.$gz.dialog.confirmLeaveUnsaved()) === true) {
next();
} else {
next(false);
}
},
beforeDestroy() {
window.$gz.eventBus.$off("menu-click", clickHandler);
},
methods: {
editContractPartOverrideItem: function(index) {
this.editContractPartOverrideItemIndex = index;
@@ -1773,17 +1773,19 @@ async function clickHandler(menuItem) {
m.vm.duplicate();
break;
case "report":
const res = await m.vm.$refs.reportSelector.open(
{
AType: window.$gz.type.Contract,
selectedRowIds: [m.vm.obj.id]
},
m.id
);
if (res == null) {
return;
{
const res = await m.vm.$refs.reportSelector.open(
{
AType: window.$gz.type.Contract,
selectedRowIds: [m.vm.obj.id]
},
m.id
);
if (res == null) {
return;
}
window.$gz.form.setLastReportMenuItem(FORM_KEY, res, m.vm);
}
window.$gz.form.setLastReportMenuItem(FORM_KEY, res, m.vm);
break;
default:
window.$gz.eventBus.$emit(
@@ -1879,7 +1881,7 @@ let JUST_DELETED = false;
//
//
async function initForm(vm) {
await fetchTranslatedText(vm);
await fetchTranslatedText();
await window.$gz.formCustomTemplate.get(FORM_CUSTOM_TEMPLATE_KEY, vm);
await populateSelectionLists(vm);
}
@@ -1888,7 +1890,7 @@ async function initForm(vm) {
//
// Ensures UI translated text is available
//
async function fetchTranslatedText(vm) {
async function fetchTranslatedText() {
await window.$gz.translation.cacheTranslations([
"Contract",
"ContractName",