This commit is contained in:
2022-02-24 16:47:48 +00:00
parent 862b00704b
commit d75f1f5592
3 changed files with 35 additions and 10 deletions

View File

@@ -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

View File

@@ -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;

View File

@@ -2,7 +2,7 @@
<div>
<v-row v-if="formState.ready">
<gz-error :error-box-message="formState.errorBoxMessage"></gz-error>
{{ effectiveView }}
<v-col v-if="showSelector" cols="12">
<v-dialog
v-model="showSelector"
@@ -217,7 +217,7 @@ export default {
availableItems: function() {
const allItems = DashRegistry.availableItems();
const newItems = allItems.filter(
z => !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)
);