This commit is contained in:
2019-05-02 20:54:07 +00:00
parent 006fba9d29
commit 9d40b832d7
6 changed files with 67 additions and 97 deletions

View File

@@ -11,7 +11,7 @@ All platforms and browsers
- DONE: Login, doesn't have any ui if failed login, maybe a red frowny face icon? :)
- DONE: need clear buttons on pw and login
- DONE: Numeric input fields don't give numeric keyboard
- MENU STUFF
- DONE: MENU STUFF
- DONE Global Help link on *every* page
- will change on each page
- DONE Global Logout link on every page
@@ -42,8 +42,7 @@ All platforms and browsers
- 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
### - RIGHTS in form state so can easily enable / disable etc
### - RIGHTS in form state so can easily enable / disable etc
- DONE INFO - SERVER will return on request of an object one of these:
- DONE Not authenticated at all 401
- DONE Redirect to login
@@ -52,15 +51,7 @@ All platforms and browsers
- DONE And client doesn't need to work out self owned etc
- DONE Object without readonly flag present so fully editable!!! WOOT!
- 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.
- ReadFULL record but no change should show record read only
- To test use accounts: ReadFullRecord = AuthorizationRoles.BizAdminLimited | AuthorizationRoles.InventoryLimited
- WidgetList should check if even possible to read any part of record, if not then no link to edit
- 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?)
- DONE user with no rights = SubContractorLimited
- DONE BIG TODO: it would be far nicer if rights to objects were stored in a single JSON fragment that could be easily copied into javascript and c#
- DONE code automatically builds rights collection from json fragment so can use it between both projects and more easily update it in one central spot
- DONE Get that working then come back to the rest of the rights in client side
@@ -72,19 +63,13 @@ All platforms and browsers
- DONE api code is stubbed out for delete, need to write that as well
- DONE Need prompt, are you sure??
- DONE TODO navigating through menu doesn't "back" properly when clicking back on browser controls
- DONE widget form now not localized title at menu top
- Widget list, refresh page causes items per page to reset back to 5 from custom setting, it should cache that shit at least for a session anyway
- Although people probably would want this to be saved to survive sessions
- maybe it should save it per device locally only so that the customizations are local to the device so they can customize differently for different ui's?
- Or, maybe they always want to see 50 widgets no matter where but 10 clients??
- DONE widget form now not localized title at menu top
- DONE Edit form title, does the edit form need a title so users know where they are at?
- currently widget edit doesn't have a particular look or title so if you are at the top of it on a small device you can't see the url fully or really know which page it is
- A small title top left that stands out might be approprpiate, also a icon beside it?
- DONE currently widget edit doesn't have a particular look or title so if you are at the top of it on a small device you can't see the url fully or really know which page it is
- DONE A small title top left that stands out might be approprpiate, also a icon beside it?
- DONE: Application name is all lowercase "ayanova" when installed to device, must be something in the manifest files?
- Check about page localization code, is it firing in the right place because on Edge and iPad firefox it didn't show localized at first until a refresh so it fetched the keys but didn't display properly
- DONE: Check about page localization code, is it firing in the right place because on Edge and iPad firefox it didn't show localized at first until a refresh so it fetched the keys but didn't display properly
- Calendar on iPad in two occasions with ff and opera the calendar date could not be selected until a time was changed then the date worked. Before that it would always stay the same no matter what selection was made and the UI would not show a change on select or press of date either.
- Navigation guard: navigate away with unsaved changes should warn and prevent but have option to continue anyway
@@ -95,6 +80,23 @@ All platforms and browsers
End to end action
TODO: RIGHTS FOR LIST
- 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.
- ReadFULL record but no change should show record read only
- To test use accounts: ReadFullRecord = AuthorizationRoles.BizAdminLimited | AuthorizationRoles.InventoryLimited
- WidgetList should check if even possible to read any part of record, if not then no link to edit
- 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?)
TODO: Persist view on return
- there's another item like this below somewhere.
- Widget list, refresh page causes items per page to reset back to 5 from custom setting, it should cache that shit at least for a session anyway
- Although people probably would want this to be saved to survive sessions
- maybe it should save it per device locally only so that the customizations are local to the device so they can customize differently for different ui's?
- Or, maybe they always want to see 50 widgets no matter where but 10 clients??
TODO: NEW WIDGET
- Code for new record to the server
- Need a path to making a new record
@@ -110,7 +112,7 @@ TODO: INVESTIGATE - DO I need to institute a back button? (in APP MODE?? install
TODO: Delete widget button and rights stuff
TODO: History button, other AyaNova 7 example buttons all need to be there or their equivalent, do we need a top menu type thing?
- Also Save button at bottom seems like an issue too
TODO: Rights stuff for form if insufficient rights / read only etc
TODO: About AyaNova form should show the exact client browser and device info as much as possible as it also serves as the tech support info thing
- Maybe make a support info local class in client that can gather the correct info and then can be used to both display and to send to us for support with a click
- Also add a tech support reporting form / button that will gather up support info and possibly also send it to us??
@@ -126,7 +128,7 @@ TODO: Grid / LIST VIEW = I know customers will want to control what shows in the
- I had a customer today request the Description field from unit show in the workorder service grid, it doesn't do that
- Customers probably want the option of picking what fields show and what don't
- Need to think this over, do I have defined columns or is the list just for display to select the record in which case can it just be one column with user selected values showing??
TODO: Move gzmenu popup and other notifications to their own file
TODO: Outstanding case with vuetify bug in clear button when readonly, check if fixed and if it isn't might need a workaround
DON'T code the user options with the currency symbol etc until after it's all been worked out client side. Use static values instad in locale.

View File

@@ -5,7 +5,7 @@
// utils and handlers
//
export default {
///////////////////////////////////
///////////////////////////////////
// WIRE UP DIALOG EVENTS
//
// called once from app.vue only
@@ -52,6 +52,29 @@ export default {
timeout: 5000
});
});
},
////////////////////////////
//
//
confirmDelete(vm) {
//https://github.com/yariksav/vuetify-dialog#readme
return vm.$dialog.warning({
text: vm.$gzlocale.get("DeletePrompt"),
title: vm.$gzlocale.get("Delete"),
icon: "fa-exclamation-triangle",
actions: [
{
text: vm.$gzlocale.get("Cancel"),
key: false
},
{
text: vm.$gzlocale.get("Delete"),
color: "red",
key: true
}
]
});
}
//new functions above here
};

View File

@@ -502,27 +502,5 @@ export default {
newState.vm.formState.readOnly = newState.readOnly;
}
});
},
////////////////////////////
//
//
confirmDelete(vm) {
//https://github.com/yariksav/vuetify-dialog#readme
return vm.$dialog.warning({
text: vm.$gzlocale.get("DeletePrompt"),
title: vm.$gzlocale.get("Delete"),
icon: "fa-exclamation-triangle",
actions: [
{
text: vm.$gzlocale.get("Cancel"),
key: false
},
{
text: vm.$gzlocale.get("Delete"),
color: "red",
key: true
}
]
});
}
};

View File

@@ -185,48 +185,6 @@ export default {
vm.$gzevent.$on("menu-click", function handleMenuClick(menuitem) {
self.handleAppClick(vm, menuitem);
});
//Notifications: pops up and slowly disappears
///////////
//ERROR
vm.$gzevent.$on("notify-error", function handleNotifyWarn(msg) {
vm.$dialog.notify.info(msg, {
position: "top-right",
icon: "fa-exclamation-triangle",
timeout: 8000
});
});
///////////
//WARNING
vm.$gzevent.$on("notify-warning", function handleNotifyWarn(msg) {
vm.$dialog.notify.warning(msg, {
position: "top-right",
icon: "fa-exclamation",
timeout: 7000
});
});
///////////
//INFO
vm.$gzevent.$on("notify-info", function handleNotifyWarn(msg) {
vm.$dialog.notify.info(msg, {
position: "top-right",
icon: "fa-info-circle",
timeout: 6000
});
});
///////////
//SUCCESS
vm.$gzevent.$on("notify-success", function handleNotifyWarn(msg) {
vm.$dialog.notify.success(msg, {
position: "top-right",
icon: "fa-check-circle ",
timeout: 5000
});
});
}
//new functions above here
};

View File

@@ -1,5 +1,5 @@
<template>
<v-layout row>
<v-layout row v-if="this.formState.ready">
<v-flex>
<v-card>
<!-- <v-toolbar>
@@ -204,6 +204,7 @@ import aboutInfo from "../api/aboutinfo";
export default {
beforeCreate() {
var vm = this;
this.$gzlocale.fetch([
"HelpAboutAyaNova",
"ClientApp",
@@ -221,7 +222,11 @@ export default {
"SupportedUntil",
"LicensedOptions",
"Log"
]);
]).then(() => (vm.formState.ready = true))
.catch(err => {
vm.formState.ready = true;
vm.$gzHandleFormError(err);
});
},
created() {
this.$gzevent.$emit("menu-change", {
@@ -256,7 +261,14 @@ export default {
data() {
return {
serverInfo: { license: { license: {} } },
clientInfo: {}
clientInfo: {},
formState: {
ready: false,
loading: true,
errorBoxMessage: null,
appError: null,
serverError: {}
}
};
}
};

View File

@@ -260,10 +260,7 @@ export default {
];
var vm = this;
this.$gzlocale
.fetch(ltKeysRequired)
// .then(function() {
// generateMenu(vm, );
// })
.fetch(ltKeysRequired)
.then(() => (vm.formState.ready = true))
.catch(err => {
vm.formState.ready = true;
@@ -406,7 +403,7 @@ export default {
remove() {
var vm = this;
//Prompt:
vm.$gzform.confirmDelete(vm).then(dialogResult => {
vm.$gzdialog.confirmDelete(vm).then(dialogResult => {
if (dialogResult == true) {
//do the delete
vm.formState.loading = true;