This commit is contained in:
2020-04-20 20:24:43 +00:00
parent a50a465db0
commit f96f2e0326
6 changed files with 45 additions and 31 deletions

View File

@@ -65,15 +65,13 @@ CURRENT TODOs
@@@@@@@@@@@ ROADMAP STAGE 2:
todo: Test widget form as bizamdinlimited read only mode because I think several things are not right in read only mode
- remove clear button and option if read only
- make sure can't use any of the controls the make changes
todo: bug regression, customize form shows dirty immediately after good save?
- this is similar to other shit I saw, maybe there was a change that somehow broke the isdirty code
- check all saveable forms for this issue
todo: readonly on all forms make sure it's ok, because on customize form I see no save but can edit
- (logged in as bizadminlimited)
todo: BUG Something fucked with history? When I click on a widget's history button in admin user history view it shows two created record with differing timestamps
- note, it doesn't seem to do it on the most recent widgets, but only on the first few created for some reason?!

View File

@@ -47,7 +47,7 @@
<v-card-text>
<v-checkbox
v-model="item.include"
:readOnly="formState.readOnly"
:readonly="formState.readOnly"
:label="$ay.t('Include')"
:ref="item.key"
:disabled="item.required"

View File

@@ -16,7 +16,7 @@
<v-card-text>
<v-checkbox
v-model="item.visible"
:readOnly="formState.readOnly"
:readonly="formState.readOnly"
:label="$ay.t('FormFieldVisible')"
:ref="item.key"
:disabled="item.stockRequired"
@@ -25,7 +25,7 @@
></v-checkbox>
<v-checkbox
v-model="item.required"
:readOnly="formState.readOnly"
:readonly="formState.readOnly"
:label="$ay.t('FormFieldEntryRequired')"
:disabled="item.stockRequired"
@change="requiredChanged(item)"
@@ -33,7 +33,7 @@
<v-select
v-if="item.custom"
v-model="item.type"
:readOnly="formState.readOnly"
:readonly="formState.readOnly"
:items="selectLists.uiFieldDataTypes"
item-text="name"
item-value="id"
@@ -84,8 +84,7 @@ export default {
initForm(vm)
.then(() => {
vm.formState.ready = true;
vm.readOnly = !vm.rights.change;
vm.formState.readOnly = !vm.rights.change;
window.$gz.eventBus.$on("menu-click", clickHandler);
//NOTE: this would normally be in getDataFromAPI but this form doesn't really need that function so doing it here
//modify the menu as necessary
@@ -94,8 +93,11 @@ export default {
window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save");
})
.catch(err => {
vm.formState.ready = true;
window.$gz.errorHandler.handleFormError(err, vm);
})
.finally(function() {
vm.formState.ready = true;
vm.formState.loading = false;
});
},
data() {
@@ -120,7 +122,25 @@ export default {
rights: window.$gz.role.getRights(window.$gz.type.FormCustom)
};
},
//WATCHERS
watch: {
formState: {
handler: function(val) {
//,oldval is available here too if necessary
if (this.formState.loading) {
return;
}
//enable / disable save button
if (val.dirty && val.valid && !val.readOnly) {
window.$gz.eventBus.$emit("menu-enable-item", FORM_KEY + ":save");
} else {
window.$gz.eventBus.$emit("menu-disable-item", FORM_KEY + ":save");
}
},
deep: true
}
},
methods: {
visibleChanged: function(item) {
//Note: stock items can't be changed so no need to take that into account
@@ -128,7 +148,6 @@ export default {
item.required = false;
}
this.formState.dirty = true;
enableSaveButton();
},
requiredChanged: function(item) {
//Note: stock items can't be changed so no need to take that into account
@@ -136,15 +155,15 @@ export default {
item.visible = true;
}
this.formState.dirty = true;
enableSaveButton();
},
dataTypeChanged: function(item) {
//nothing to scan here just set form dirty
this.formState.dirty = true;
enableSaveButton();
},
submit() {
let vm = this;
vm.formState.loading = true;
let url = API_BASE_URL + vm.formCustomTemplateKey;
//clear any errors vm might be around from previous submit
@@ -195,7 +214,6 @@ export default {
window.$gz.api
.upsert(url, newObj)
.then(res => {
vm.formState.loading = false;
if (res.error) {
vm.formState.serverError = res.error;
window.$gz.form.setErrorBoxErrors(vm);
@@ -220,17 +238,15 @@ export default {
}
})
.catch(function handleSubmitError(error) {
vm.formState.loading = false;
window.$gz.errorHandler.handleFormError(error, vm);
})
.finally(function() {
vm.formState.loading = false;
});
}
}
};
function enableSaveButton() {
window.$gz.eventBus.$emit("menu-enable-item", FORM_KEY + ":save");
}
/////////////////////////////
//
//

View File

@@ -10,7 +10,7 @@
<v-text-field
v-model="obj.name"
:readonly="this.formState.readOnly"
clearable
:clearable="!formState.readOnly"
@click:clear="fieldValueChanged('name')"
:counter="255"
:label="$ay.t('Name')"
@@ -163,7 +163,7 @@
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
:clearable="!formState.readOnly"
></v-text-field>
<v-btn
large
@@ -191,7 +191,7 @@
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
:clearable="!formState.readOnly"
type="number"
></v-text-field>
<v-btn
@@ -257,7 +257,7 @@
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
:clearable="!formState.readOnly"
></gz-decimal>
<v-btn
large
@@ -284,7 +284,7 @@
item.tempFilterOperator != '*HASVALUE*'
"
v-model="item.tempFilterValue"
clearable
:clearable="!formState.readOnly"
></gz-currency>
<v-btn
large

View File

@@ -22,7 +22,7 @@
<v-text-field
v-model="obj.emailAddress"
:readonly="formState.readOnly"
clearable
:clearable="!formState.readOnly"
@click:clear="fieldValueChanged('emailAddress')"
:label="$ay.t('UserEmailAddress')"
:error-messages="form().serverErrors(this, 'emailAddress')"
@@ -36,7 +36,7 @@
v-model="obj.currencyName"
hint="e.g. USD, EUR, GBP, AUD, CAD etc"
:readonly="formState.readOnly"
clearable
:clearable="!formState.readOnly"
@click:clear="fieldValueChanged('currencyName')"
:label="$ay.t('CurrencyCode')"
:rules="[form().required(this, 'currencyName')]"
@@ -76,7 +76,7 @@
v-model="obj.languageOverride"
:placeholder="locale().getBrowserFirstLanguage()"
:readonly="formState.readOnly"
clearable
:clearable="!formState.readOnly"
@click:clear="fieldValueChanged('languageOverride')"
:label="$ay.t('LanguageCode')"
:error-messages="form().serverErrors(this, 'languageOverride')"
@@ -90,7 +90,7 @@
v-model="obj.timeZoneOverride"
:placeholder="locale().getBrowserTimeZoneName()"
:readonly="formState.readOnly"
clearable
:clearable="!formState.readOnly"
@click:clear="fieldValueChanged('timeZoneOverride')"
:label="$ay.t('TimeZone')"
:error-messages="form().serverErrors(this, 'timeZoneOverride')"

View File

@@ -27,7 +27,7 @@
:data-cy="!!$ay.dev ? 'reason' : false"
@input="fieldValueChanged('reason')"
auto-grow
clearable
:clearable="!formState.readOnly"
></v-textarea>
</v-col>
</v-row>