This commit is contained in:
@@ -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
|
** THIS ONE FOR SURE IT"S TOP REQUESTED IN SURVEYS OF SERVICE MANAGERS
|
||||||
configurable time frame
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ export default {
|
|||||||
role.SalesRestricted
|
role.SalesRestricted
|
||||||
],
|
],
|
||||||
title: "ReminderList",
|
title: "ReminderList",
|
||||||
type: "GzDashTodayReminders"
|
type: "GzDashTodayReminders",
|
||||||
|
singleOnly: true,
|
||||||
|
settings: {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "dash-today-reviews",
|
id: "dash-today-reviews",
|
||||||
@@ -40,14 +42,18 @@ export default {
|
|||||||
role.SalesRestricted
|
role.SalesRestricted
|
||||||
],
|
],
|
||||||
title: "ReviewList",
|
title: "ReviewList",
|
||||||
type: "GzDashTodayReviews"
|
type: "GzDashTodayReviews",
|
||||||
|
singleOnly: true,
|
||||||
|
settings: {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "dash-today-scheduled-wo",
|
id: "dash-today-scheduled-wo",
|
||||||
roles: [role.Tech, role.TechRestricted],
|
roles: [role.Tech, role.TechRestricted],
|
||||||
title: "DashboardScheduled",
|
title: "DashboardScheduled",
|
||||||
type: "GzDashTodayScheduledWo",
|
type: "GzDashTodayScheduledWo",
|
||||||
scheduleableUserOnly: true
|
scheduleableUserOnly: true,
|
||||||
|
singleOnly: true,
|
||||||
|
settings: {}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -60,7 +66,9 @@ export default {
|
|||||||
],
|
],
|
||||||
title: "TEST Bar chart widget",
|
title: "TEST Bar chart widget",
|
||||||
type: "GzDashTestBarWidgetCountByUserType",
|
type: "GzDashTestBarWidgetCountByUserType",
|
||||||
scheduleableUserOnly: false
|
scheduleableUserOnly: false,
|
||||||
|
singleOnly: false,
|
||||||
|
settings: {}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "TestLineWidgetMonthlyTotalPrice",
|
id: "TestLineWidgetMonthlyTotalPrice",
|
||||||
@@ -72,7 +80,9 @@ export default {
|
|||||||
],
|
],
|
||||||
title: "TEST Line chart widget",
|
title: "TEST Line chart widget",
|
||||||
type: "GzDashTestLineWidgetMonthlyTotalPrice",
|
type: "GzDashTestLineWidgetMonthlyTotalPrice",
|
||||||
scheduleableUserOnly: false
|
scheduleableUserOnly: false,
|
||||||
|
singleOnly: true,
|
||||||
|
settings: {}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
availableItems() {
|
availableItems() {
|
||||||
@@ -88,7 +98,13 @@ export default {
|
|||||||
) {
|
) {
|
||||||
continue;
|
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;
|
return ret;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<v-row v-if="formState.ready">
|
<v-row v-if="formState.ready">
|
||||||
<gz-error :error-box-message="formState.errorBoxMessage"></gz-error>
|
<gz-error :error-box-message="formState.errorBoxMessage"></gz-error>
|
||||||
|
{{ effectiveView }}
|
||||||
<v-col v-if="showSelector" cols="12">
|
<v-col v-if="showSelector" cols="12">
|
||||||
<v-dialog
|
<v-dialog
|
||||||
v-model="showSelector"
|
v-model="showSelector"
|
||||||
@@ -217,7 +217,7 @@ export default {
|
|||||||
availableItems: function() {
|
availableItems: function() {
|
||||||
const allItems = DashRegistry.availableItems();
|
const allItems = DashRegistry.availableItems();
|
||||||
const newItems = allItems.filter(
|
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;
|
return newItems;
|
||||||
},
|
},
|
||||||
@@ -240,6 +240,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
const savedView = JSON.parse(res.data.view);
|
const savedView = JSON.parse(res.data.view);
|
||||||
const availableItems = DashRegistry.availableItems();
|
const availableItems = DashRegistry.availableItems();
|
||||||
|
//filter out any that are deprecated or no longer accessible due to role change
|
||||||
const allowedView = savedView.filter(z =>
|
const allowedView = savedView.filter(z =>
|
||||||
availableItems.find(m => m.id == z.id)
|
availableItems.find(m => m.id == z.id)
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user