This commit is contained in:
@@ -41,12 +41,13 @@ All platforms and browsers
|
||||
- DONE Make about contextual and insert a menu item to view log
|
||||
- DONE WIRE up save menu item and add code to disable save on broken rules (and make red, disabled etc)
|
||||
- DONE Move wire up event code from app.vue to gzmenu and call it from app.vue
|
||||
### UPDATE VUETIFY, SB 0.5.0, not 0.4.6
|
||||
### - RIGHTS in form state so can easily enable / disable etc
|
||||
|
||||
- INFO - SERVER will return on request of an object one of these:
|
||||
- DONE Not authenticated at all 401
|
||||
- DONE Redirect to login
|
||||
- Not authorized for this object 403 (could be due to not own or whatever, we don't care, server handles that shit, client just knows not to show it)
|
||||
- DONE Not authorized for this object 403 (could be due to not own or whatever, we don't care, server handles that shit, client just knows not to show it)
|
||||
- Object...BUT with READONLY flag of some kind present (in outer wrapper??), so client knows to show read only and not allow editing
|
||||
- And client doesn't need to work out self owned etc
|
||||
- DONE Object without readonly flag present so fully editable!!! WOOT!
|
||||
@@ -57,13 +58,9 @@ All platforms and browsers
|
||||
- WidgetList should check if Own record possible and check the list object for owner ID (maybe all lists will need to provide owner ID's?)
|
||||
- Delete should be checked
|
||||
- CHANGE should be checked
|
||||
- If no rights then should redirect back to HOME, NOT LOGIN!!!
|
||||
- user with no rights = SubContractorLimited
|
||||
- If user attempts to load widget form but has no rights to widget server returns the NO rights code but that is triggering back to login
|
||||
- Should it do this? Normally would not be an issue because it wouldn't open that form unless they saved or manually typed a link to it
|
||||
- Technically it's incorrect, they don't have to login, they just can't get that record
|
||||
- Have a look at why it's redirecting and decide if this is worth a change
|
||||
- LIST OBJECT RESEARCH / DECISION
|
||||
- DONE If no rights then should redirect back to HOME, NOT LOGIN!!!
|
||||
- DONE user with no rights = SubContractorLimited
|
||||
- TODO LIST OBJECT RESEARCH / DECISION
|
||||
- TODO: ?? DECISION server widget lists and other lists
|
||||
- Either the list should show items with alternate icons to EDIT if they are read only or...
|
||||
- Use a generic OPEN icon and link instead and user doesn't see status until they open it.
|
||||
|
||||
@@ -1,2 +1,5 @@
|
||||
VUE COMMAND LINE INTERFACE
|
||||
run vue cli from anywhere
|
||||
run vue cli from anywhere
|
||||
|
||||
VUE GUI INTERFACE
|
||||
run vue ui from project folder (or maybe anywhere not sure)
|
||||
@@ -497,6 +497,10 @@ export default {
|
||||
if (newState.loading != undefined) {
|
||||
newState.vm.formState.loading = newState.loading;
|
||||
}
|
||||
|
||||
if (newState.readOnly != undefined) {
|
||||
newState.vm.formState.readOnly = newState.readOnly;
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-text-field
|
||||
v-model="obj.name"
|
||||
:readonly="this.formState.readOnly"
|
||||
clearable
|
||||
@click:clear="onChange('name')"
|
||||
:counter="255"
|
||||
@@ -31,6 +32,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-text-field
|
||||
v-model="obj.serial"
|
||||
:readonly="this.formState.readOnly"
|
||||
clearable
|
||||
@click:clear="onChange('serial')"
|
||||
:counter="10"
|
||||
@@ -44,6 +46,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-text-field
|
||||
v-model="obj.count"
|
||||
:readonly="this.formState.readOnly"
|
||||
clearable
|
||||
@click:clear="onChange('count')"
|
||||
:counter="10"
|
||||
@@ -60,6 +63,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-text-field
|
||||
v-model="obj.dollarAmount"
|
||||
:readonly="this.formState.readOnly"
|
||||
:prefix="this.$gzlocale.formats.currencySymbol"
|
||||
:label="this.$gzlocale.get('WidgetDollarAmount')"
|
||||
ref="dollarAmount"
|
||||
@@ -75,6 +79,7 @@
|
||||
<gz-date-time-picker
|
||||
:label="this.$gzlocale.get('WidgetStartDate')"
|
||||
v-model="obj.startDate"
|
||||
:readonly="this.formState.readOnly"
|
||||
ref="startDate"
|
||||
:error-messages="this.$gzform.serverErrors(this,'startDate')"
|
||||
@change="onChange('startDate')"
|
||||
@@ -82,11 +87,12 @@
|
||||
</v-flex>
|
||||
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<gz-date-time-picker
|
||||
<gz-date-time-picker
|
||||
:label="this.$gzlocale.get('WidgetEndDate')"
|
||||
:rules="[this.$gzform.datePrecedence(this,'startDate','endDate')]"
|
||||
:error-messages="this.$gzform.serverErrors(this,'endDate')"
|
||||
v-model="obj.endDate"
|
||||
:readonly="this.formState.readOnly"
|
||||
ref="endDate"
|
||||
@change="onChange('endDate')"
|
||||
></gz-date-time-picker>
|
||||
@@ -94,6 +100,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-checkbox
|
||||
v-model="obj.active"
|
||||
:readonly="this.formState.readOnly"
|
||||
:label="this.$gzlocale.get('Active')"
|
||||
ref="active"
|
||||
:error-messages="this.$gzform.serverErrors(this,'active')"
|
||||
@@ -104,6 +111,7 @@
|
||||
<v-flex xs12 sm6 lg4 xl3 px-2>
|
||||
<v-text-field
|
||||
v-model="obj.roles"
|
||||
:readonly="this.formState.readOnly"
|
||||
:label="this.$gzlocale.get('WidgetRoles')"
|
||||
ref="roles"
|
||||
:rules="[this.$gzform.integerValid(this,'roles'),this.$gzform.required(this,'roles')]"
|
||||
@@ -318,7 +326,7 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
onChange(ref) {
|
||||
if (!this.formState.loading) {
|
||||
if (!this.formState.loading && !this.formState.readOnly) {
|
||||
this.$gzform.onChange(this, ref);
|
||||
}
|
||||
},
|
||||
@@ -340,7 +348,8 @@ export default {
|
||||
vm: vm,
|
||||
dirty: false,
|
||||
valid: true,
|
||||
loading: false
|
||||
loading: false,
|
||||
readOnly: res.readOnly ? true : false
|
||||
});
|
||||
}
|
||||
})
|
||||
@@ -370,18 +379,22 @@ export default {
|
||||
vm.formState.serverError = res.error;
|
||||
vm.$gzform.setErrorBoxErrors(vm);
|
||||
} else {
|
||||
vm.$gzform.setFormState({
|
||||
vm: vm,
|
||||
dirty: false
|
||||
});
|
||||
|
||||
//Logic for detecting if a post or put: if id then it was a post, if no id then it was a put
|
||||
if (res.id) {
|
||||
//Handle "post" of new record
|
||||
vm.obj = res.data;
|
||||
vm.$gzform.setFormState({
|
||||
vm: vm,
|
||||
dirty: false,
|
||||
readOnly: res.readOnly ? true : false
|
||||
});
|
||||
} else {
|
||||
//Handle "put" of an existing record
|
||||
vm.obj.concurrencyToken = res.data.concurrencyToken;
|
||||
vm.$gzform.setFormState({
|
||||
vm: vm,
|
||||
dirty: false
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user