This commit is contained in:
@@ -22,7 +22,14 @@ FIRST CLIENT SOURCE CODE COMMIT JAN 3rd 2019
|
|||||||
|
|
||||||
# OUTSTANDING MAJOR AREAS TO BETA
|
# OUTSTANDING MAJOR AREAS TO BETA
|
||||||
|
|
||||||
seeder seems to be putting schedules in the early hours 1am onwards not in the day as expected
|
seeder wo created date not set properly, should match the way it's generated
|
||||||
|
seeder wo need new fields and generate data to show off and test kpi widgets and features
|
||||||
|
Add completed date to workorder, should be set when a closed status is set
|
||||||
|
used for numerous kpi stuff
|
||||||
|
adjust seeder to work with it so the closed state created date matches wo completed date
|
||||||
|
|
||||||
|
Also, can we calc "time to respond" based on anything extant or should there be some kind of additional field / system for that
|
||||||
|
i.e. maybe a workorder status is also a response status like some are closed??, then a mirror first response field like completeddate
|
||||||
|
|
||||||
dashboard widgets
|
dashboard widgets
|
||||||
|
|
||||||
@@ -30,31 +37,28 @@ They should be small and highly focused on a particular issue so that the user j
|
|||||||
So a hypothetical workorder count per time period widget would have a this month, last month, ytd, last year to date etc or however.
|
So a hypothetical workorder count per time period widget would have a this month, last month, ytd, last year to date etc or however.
|
||||||
Main idea being they are not needed to config, just pick the one you want
|
Main idea being they are not needed to config, just pick the one you want
|
||||||
|
|
||||||
should support multiple copies of an item that is configurable
|
should support multiple copies if an item is configurable
|
||||||
|
|
||||||
|
- Widgets to make for beta
|
||||||
|
overdue workorders (booked on, in the past, not a closed status) for current scheduleable user
|
||||||
|
overdue workorders for all users available to service manager roles
|
||||||
|
Billed hours per month YTD for sched user (line chart)
|
||||||
|
Billed hours per month YTD for all users available to service manager roles (line chart)
|
||||||
|
Billed hours per day last 30 days for sched user (line chart)
|
||||||
|
Billed hours per day last 30 days for all users available to service manager roles (line chart)
|
||||||
|
Unassigned work orders for service manager
|
||||||
|
CSR's not accepted yet in reverse chronological order for service manager
|
||||||
|
Billable hours leader board case 3696: https://www.openfaas.com/blog/serverless-single-page-app/?utm_source=DigitalOcean_Newsletter
|
||||||
|
DASHBOARD:CR - open wo list by selectable status case 1974
|
||||||
|
|
||||||
|
Number of work orders created per day over time (from case 1882)
|
||||||
|
** THIS ONE FOR SURE IT"S TOP REQUESTED IN SURVEYS OF SERVICE MANAGERS
|
||||||
|
configurable time frame
|
||||||
|
|
||||||
v7 dashboard help doc:
|
% wo closed within close by date
|
||||||
|
|
||||||
What shows within the Dashboard depends on whether the account you are logged in as is a schedulable resource or not (set in your User entry screen),
|
idea, not cased: closed state by status (i.e. different reasons for being closed)
|
||||||
and what your security group rights are to Service Workorders, Schedule Markers, Memos, and Customer Service Requests.
|
|
||||||
|
|
||||||
If logged in as a user that is a schedulable resource, the Dashboard is where you can quickly see at a glance, as well as access:
|
|
||||||
•Overdue provides links to service workorders that were scheduled prior to today's present time and date as a reminder so that you do not forget to enter your
|
|
||||||
labor, parts, etc as well as checkmark Service Completed.
|
|
||||||
•Scheduled provides links to service workorders that are scheduled after today's date and time
|
|
||||||
•Service Rate Quantity shows at a glance totals for today, yesterday, current week, current month and current year of your Labor hours
|
|
||||||
(or whatever the unit charge is that you use). The label text Service Rate Quantity is taken from your Labor subsection of your service workorder entry screen.
|
|
||||||
•Reminders provide links to the next three future dated Schedule Markers or Follow Ups assigned to you as a schedulable resource.
|
|
||||||
|
|
||||||
Otherwise quick access for company information (name displayed is from your registered license) or Region specific name is displayed if the user logged in is assigned to a specific Region:
|
|
||||||
•Not assigned provides links to service workorders that have not yet been assigned to any schedulable resources.
|
|
||||||
•Overdue provides links to service workorders that were scheduled to schedulable resources of this company/specific region prior to today's present time and date.
|
|
||||||
Very useful as a reminder for both the dispatch manager and schedulable resources
|
|
||||||
•Next provides links to service workorders that are scheduled after today's date and time for schedulable resources of this company/specific region
|
|
||||||
•Service Rate Quantity shows at a glance totals for today, yesterday, current week, current month and current year of schedulable resources of this company/specific region
|
|
||||||
Labor hours (or whatever the unit charge is that you use). The label text Service Rate Quantity is taken from the Labor subsection of your service workorder entry screen.
|
|
||||||
•Customer Service Requests provides links to the next three not yet accepted customer service requests.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -73,18 +73,6 @@ export default {
|
|||||||
title: "TEST Line chart widget",
|
title: "TEST Line chart widget",
|
||||||
type: "GzDashTestLineWidgetMonthlyTotalPrice",
|
type: "GzDashTestLineWidgetMonthlyTotalPrice",
|
||||||
scheduleableUserOnly: false
|
scheduleableUserOnly: false
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "TestDayCalendarWidget",
|
|
||||||
roles: [
|
|
||||||
role.BizAdmin,
|
|
||||||
role.BizAdminRestricted,
|
|
||||||
role.Sales,
|
|
||||||
role.SalesRestricted
|
|
||||||
],
|
|
||||||
title: "TEST calendar widget",
|
|
||||||
type: "GzDashTestDayCalendarWidget",
|
|
||||||
scheduleableUserOnly: false
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
availableItems() {
|
availableItems() {
|
||||||
|
|||||||
@@ -1,120 +0,0 @@
|
|||||||
<template>
|
|
||||||
<gz-dash
|
|
||||||
icon="$ayiTools"
|
|
||||||
:add-url="'svc-workorders/0'"
|
|
||||||
:update-frequency="0"
|
|
||||||
v-bind="$attrs"
|
|
||||||
@dash-refresh="loadData"
|
|
||||||
v-on="$listeners"
|
|
||||||
>
|
|
||||||
<template slot="main">
|
|
||||||
<v-calendar
|
|
||||||
color="primary"
|
|
||||||
type="day"
|
|
||||||
hide-header
|
|
||||||
interval-count="11"
|
|
||||||
first-interval="7"
|
|
||||||
interval-height="24"
|
|
||||||
interval-width="45"
|
|
||||||
:events="events"
|
|
||||||
:event-color="getEventColor"
|
|
||||||
:locale="languageName"
|
|
||||||
@click:event="showEvent"
|
|
||||||
></v-calendar>
|
|
||||||
</template>
|
|
||||||
</gz-dash>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
import GzDash from "../components/dash-base.vue";
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
GzDash
|
|
||||||
},
|
|
||||||
props: {},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
events: [],
|
|
||||||
languageName: window.$gz.locale.getResolvedLanguage()
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {},
|
|
||||||
created() {
|
|
||||||
// this.loadData();
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadData: function() {
|
|
||||||
const events = [];
|
|
||||||
const now = new Date();
|
|
||||||
const yy = now.getFullYear();
|
|
||||||
const mm = now.getMonth() + 1;
|
|
||||||
const dd = now.getDate();
|
|
||||||
events.push({
|
|
||||||
id: 45,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 45",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 8, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 8, 45),
|
|
||||||
color: "orange"
|
|
||||||
});
|
|
||||||
|
|
||||||
events.push({
|
|
||||||
id: 22,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 22",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 9, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 10, 30),
|
|
||||||
color: "blue"
|
|
||||||
});
|
|
||||||
|
|
||||||
events.push({
|
|
||||||
id: 33,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 33",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 11, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 11, 30),
|
|
||||||
color: "green"
|
|
||||||
});
|
|
||||||
|
|
||||||
events.push({
|
|
||||||
id: 44,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 44",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 11, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 11, 30),
|
|
||||||
color: "indigo"
|
|
||||||
});
|
|
||||||
|
|
||||||
events.push({
|
|
||||||
id: 55,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 55",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 11, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 11, 45),
|
|
||||||
color: "purple"
|
|
||||||
});
|
|
||||||
|
|
||||||
events.push({
|
|
||||||
id: 34,
|
|
||||||
type: 34,
|
|
||||||
name: "WO 66",
|
|
||||||
start: getEventTimeStamp(yy, mm, dd, 13, "00"),
|
|
||||||
end: getEventTimeStamp(yy, mm, dd, 16, 45),
|
|
||||||
color: "teal"
|
|
||||||
});
|
|
||||||
|
|
||||||
this.events = events;
|
|
||||||
},
|
|
||||||
getEventColor(event) {
|
|
||||||
return event.color;
|
|
||||||
},
|
|
||||||
showEvent({ nativeEvent, event }) {
|
|
||||||
nativeEvent.stopPropagation();
|
|
||||||
alert(`STUB: OPEN ITEM (data: ${JSON.stringify(event)})`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function getEventTimeStamp(yy, mm, dd, hh, minutes) {
|
|
||||||
return `${yy}-${mm}-${dd} ${hh}:${minutes}`;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -84,7 +84,6 @@ import DashRegistry from "../api/dash-registry";
|
|||||||
//import GzDashTestListWidgetsPriciest from "../components/dash-test-list-widgets-priciest.vue";
|
//import GzDashTestListWidgetsPriciest from "../components/dash-test-list-widgets-priciest.vue";
|
||||||
import GzDashTestBarWidgetCountByUserType from "../components/dash-test-bar-widget-count-by-usertype.vue";
|
import GzDashTestBarWidgetCountByUserType from "../components/dash-test-bar-widget-count-by-usertype.vue";
|
||||||
import GzDashTestLineWidgetMonthlyTotalPrice from "../components/dash-test-line-widget-monthly-total-price.vue";
|
import GzDashTestLineWidgetMonthlyTotalPrice from "../components/dash-test-line-widget-monthly-total-price.vue";
|
||||||
import GzDashTestDayCalendarWidget from "../components/dash-test-day-calendar-widget.vue";
|
|
||||||
import GzDashTodayScheduledWo from "../components/dash-today-scheduled-wo.vue";
|
import GzDashTodayScheduledWo from "../components/dash-today-scheduled-wo.vue";
|
||||||
import GzDashTodayReminders from "../components/dash-today-reminders.vue";
|
import GzDashTodayReminders from "../components/dash-today-reminders.vue";
|
||||||
import GzDashTodayReviews from "../components/dash-today-reviews.vue";
|
import GzDashTodayReviews from "../components/dash-today-reviews.vue";
|
||||||
@@ -94,7 +93,6 @@ export default {
|
|||||||
//GzDashTestListWidgetsPriciest,
|
//GzDashTestListWidgetsPriciest,
|
||||||
GzDashTestBarWidgetCountByUserType,
|
GzDashTestBarWidgetCountByUserType,
|
||||||
GzDashTestLineWidgetMonthlyTotalPrice,
|
GzDashTestLineWidgetMonthlyTotalPrice,
|
||||||
GzDashTestDayCalendarWidget,
|
|
||||||
GzDashTodayScheduledWo,
|
GzDashTodayScheduledWo,
|
||||||
GzDashTodayReminders,
|
GzDashTodayReminders,
|
||||||
GzDashTodayReviews
|
GzDashTodayReviews
|
||||||
|
|||||||
Reference in New Issue
Block a user