This commit is contained in:
@@ -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?!
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
//
|
||||
//
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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')"
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user