diff --git a/ayanova/devdocs/todo.txt b/ayanova/devdocs/todo.txt index 31dd7a5d..b2f53947 100644 --- a/ayanova/devdocs/todo.txt +++ b/ayanova/devdocs/todo.txt @@ -55,10 +55,18 @@ should support multiple copies if an item is configurable ** THIS ONE FOR SURE IT"S TOP REQUESTED IN SURVEYS OF SERVICE MANAGERS configurable time frame - % wo closed within close by date + % wo closed within close by date by time period / tags + avg time or time breakdown by % of overdueness of workorders + i.e. 10% of overdue were x days overdue etc + avg time in each status by time period / tags + this could cover response time as they can just designate a status as unresponded or new + % wo within each status by time range / tags + this will show the state of things overall + count of wo within each status by time period / tags - idea, not cased: closed state by status (i.e. different reasons for being closed) +Need control panel for widget to make filter selections +need ability to have multiple widgets of same type display with their own settings diff --git a/ayanova/src/api/dash-registry.js b/ayanova/src/api/dash-registry.js index 4b087144..b5b0a3d3 100644 --- a/ayanova/src/api/dash-registry.js +++ b/ayanova/src/api/dash-registry.js @@ -20,7 +20,9 @@ export default { role.SalesRestricted ], title: "ReminderList", - type: "GzDashTodayReminders" + type: "GzDashTodayReminders", + singleOnly: true, + settings: {} }, { id: "dash-today-reviews", @@ -40,14 +42,18 @@ export default { role.SalesRestricted ], title: "ReviewList", - type: "GzDashTodayReviews" + type: "GzDashTodayReviews", + singleOnly: true, + settings: {} }, { id: "dash-today-scheduled-wo", roles: [role.Tech, role.TechRestricted], title: "DashboardScheduled", type: "GzDashTodayScheduledWo", - scheduleableUserOnly: true + scheduleableUserOnly: true, + singleOnly: true, + settings: {} }, { @@ -60,7 +66,9 @@ export default { ], title: "TEST Bar chart widget", type: "GzDashTestBarWidgetCountByUserType", - scheduleableUserOnly: false + scheduleableUserOnly: false, + singleOnly: false, + settings: {} }, { id: "TestLineWidgetMonthlyTotalPrice", @@ -72,7 +80,9 @@ export default { ], title: "TEST Line chart widget", type: "GzDashTestLineWidgetMonthlyTotalPrice", - scheduleableUserOnly: false + scheduleableUserOnly: false, + singleOnly: true, + settings: {} } ], availableItems() { @@ -88,7 +98,13 @@ export default { ) { continue; } - ret.push({ id: item.id, title: item.title, type: item.type }); + ret.push({ + id: item.id, + title: item.title, + type: item.type, + singleOnly: item.singleOnly, + settings: item.settings + }); } } return ret; diff --git a/ayanova/src/views/home-dashboard.vue b/ayanova/src/views/home-dashboard.vue index b97a9cd7..b8428df7 100644 --- a/ayanova/src/views/home-dashboard.vue +++ b/ayanova/src/views/home-dashboard.vue @@ -2,7 +2,7 @@
- + {{ effectiveView }} !this.effectiveView.find(m => m.id == z.id) + z => !this.effectiveView.find(m => m.id == z.id && z.singleOnly) ); return newItems; }, @@ -240,6 +240,7 @@ export default { } else { const savedView = JSON.parse(res.data.view); const availableItems = DashRegistry.availableItems(); + //filter out any that are deprecated or no longer accessible due to role change const allowedView = savedView.filter(z => availableItems.find(m => m.id == z.id) );