This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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: {}
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user