This commit is contained in:
2021-10-05 22:19:13 +00:00
parent c3d3cb3388
commit 5e3fe7ceb1
3 changed files with 135 additions and 201 deletions

View File

@@ -11,41 +11,60 @@
## ROUGH SCHEDULE TO GET TO BETA ## ROUGH SCHEDULE TO GET TO BETA
# Schedule form # Schedule form
SVC-SCHEDULE OUTSTANDING ITEMS SVC-SCHEDULE OUTSTANDING ITEMS
Port fetch events changes to personal schedule Hover show technician??
Filter and sort issues: if all events are timed then why am I sending timed as a field back from the server when I can just add that while building the event array at client?
Not in settings? Separate filter icon at top mimic data table UI?
Saved filters with order and names so users can quickly flip between groups of users? Choose techs feature:
Consider how to add filter by tag for users to schedule so can quickly select by tag(s) Not in settings, separate feature Show filter icon opens tag picker (or persistent tag picker??)
sort order?? Not sure how to handle this one as filter and ad-hoc sort are at odds tag picker surfaced all time in large views or in settings for narrow views
View schedule by user so can click through user to schedule for *that* user alone, (brings up home-schedule maybe or I guess a copy would be easiest) filters users by tags and shows them in alpha order by name
this will solve issue when people say "Why can't I view month but for one user instead?" NO ability to set the order for this release but we could consider adding a field as a sorting field later
probably easiest from both the User edit form for admin and from the svc-schedule form (maybe a link on their names at top?? Opens same view currently selected but for that *one* user) Tag selection is persistent and stored with the users temp settings so persistent by browser not saved to server
tech selection setting control ?
vertical in table in settings
show all techs in table with prior selections in order at the top and non selected at the end in alpha order
each row has up down control and checkbox to show so "Name|^|v|show"
During settings form, fetchEvents should be disabled until after save as changing DOW is triggering fetch which can be slow in a loaded sched During settings form, fetchEvents should be disabled until after save as changing DOW is triggering fetch which can be slow in a loaded sched
See about including no tech items as sched should show them as unassigned or something it's built in for non matches but I could enable that anyway
it was in v7
maybe always far right by default, but then people may not want it to take up space
maybe included with the tag selector as a checkbox to automatically include unassigned
maybe it's a drill into unassigned on it's own?? but then can't drag to a tech as would be useful feature of this
3698 - hide unassigned tech slot (or case 3697 above would take care of that too)
Keep both Day view and Category views but make category the default drill into view when click on a date
User colors? Is this even going to be a thing or needed anymore??
in v7 it was only in calendar so if not in calendar now then no need
Remove day view options and replace by category view I think, but keep code and see how it goes may be switch back in again if demanded or makes sense
instead of new translation key, just use the day name but use it with the category view
need ability to drag to another tech in category view need ability to drag to another tech in category view
3697 - arbitrarily order schedule by user instead of built in by lastname Drill down to schedule by user so can click through user to schedule for *that* user alone, (brings up home-schedule maybe or I guess a copy would be easiest)
schedule settings keyed by form re-use this will solve issue when people say "Why can't I view month but for one user instead?"
3698 - hide unassigned tech slot (or case 3697 above would take care of that too) probably easiest from both the User edit form for admin and from the svc-schedule form (maybe a link on their names at top?? Opens same view currently selected but for that *one* user)
This is an important and must have feature for inital release
3766 - view schedule filtered by customer so can see at a glance all past and future for a single customer (more data table filter similarity) 3766 - view schedule filtered by customer so can see at a glance all past and future for a single customer (more data table filter similarity)
"show all " but on a schedule to view that way instead of a data table "show all " but on a schedule to view that way instead of a data table
also maybe supported for the customer user as well or defer that but make a case for it as a future feature
yes, do this, very important
CUST-SCHEDULE
Customer work order form / view / open??? Customer work order form / view / open???
Customer CSR form has a bunch of todo in the template, WTF? Customer CSR form has a bunch of todo in the template, WTF?
Dashboard / widgets Dashboard / widgets

View File

@@ -78,6 +78,7 @@
@mouseup:day="endDragExtend" @mouseup:day="endDragExtend"
@mouseup:time="endDragExtend" @mouseup:time="endDragExtend"
@mouseleave.native="cancelDrag" @mouseleave.native="cancelDrag"
event-overlap-mode="column"
> >
<template v-slot:event="{ event, timed, eventSummary }"> <template v-slot:event="{ event, timed, eventSummary }">
<div class="v-event-draggable"> <div class="v-event-draggable">

View File

@@ -89,17 +89,17 @@
@mouseup:time="endDragExtend" @mouseup:time="endDragExtend"
@mouseup:time-category="endDragExtend" @mouseup:time-category="endDragExtend"
@mouseleave.native="cancelDrag" @mouseleave.native="cancelDrag"
event-overlap-mode="column"
category-show-all category-show-all
:categories="categories" :categories="categories"
category-text="name" category-text="name"
category-for-invalid="UNKNOWN USER" category-for-invalid="UNKNOWN USER"
> >
<!-- @mousemove:day-category="mouseMoveMonthView" category-hide-dynamic --> <template v-slot:event="{ event, eventSummary }">
<template v-slot:event="{ event, timed, eventSummary }">
<div class="v-event-draggable"> <div class="v-event-draggable">
<v-icon small :color="event.textColor" class="mr-1">{{ <!-- <v-icon small :color="event.textColor" class="mr-1">{{
iconForEvent(event.type) iconForEvent(event.type)
}}</v-icon> }}</v-icon> -->
<span <span
:class="event.textColor + '--text'" :class="event.textColor + '--text'"
@@ -114,7 +114,7 @@
> >
</div> </div>
<div <div
v-if="timed && event.editable" v-if="event.editable"
class="v-event-drag-bottom" class="v-event-drag-bottom"
@mousedown.stop="extendBottom(event)" @mousedown.stop="extendBottom(event)"
></div> ></div>
@@ -163,175 +163,98 @@
<v-toolbar-title>{{ selectedEvent.name }}</v-toolbar-title> <v-toolbar-title>{{ selectedEvent.name }}</v-toolbar-title>
</v-toolbar> </v-toolbar>
<v-card-text> <v-card-text>
<!--reminder --> <div>
<template v-if="selectedEvent.type == $ay.ayt().Reminder"> <span class="text-h6">{{ $ay.t("WorkOrder") }}:</span>
<div> <span class="text-body-1 ml-2"
<span class="text-h6">{{ $ay.t("ReminderName") }}:</span> >{{ evInfo.serial }}&nbsp; {{ evInfo.customerViz }}</span
<span class="text-body-1 ml-2">{{ evInfo.name }}</span> >
</div> </div>
<div> <div>
<span class="text-h6" <span class="text-h6">{{ $ay.t("Tags") }}:</span>
>{{ $ay.t("DashboardScheduled") }}:</span <span class="text-body-1 ml-2">{{
> $ay.util().formatTags(evInfo.wotags)
<span class="text-body-1 ml-2" }}</span>
>{{ $ay.dt(evInfo.startDate) }}&nbsp;&mdash;&nbsp;{{ </div>
$ay.dt(evInfo.stopDate) <div>
}}</span <span class="text-h6"
> >{{ $ay.t("WorkOrderItemScheduledUserUserID") }}:</span
</div> >
<div> <span class="text-body-1 ml-2">{{ evInfo.scheduser }}</span>
<span class="text-h6">{{ $ay.t("ReminderNotes") }}:</span> </div>
<span class="text-body-1 ml-2"> <div>
<v-icon class="mr-3" :color="evInfo.color" <span class="text-h6"
>$ayiSquareFull</v-icon >{{ $ay.t("DashboardScheduled") }}:</span
>{{ evInfo.notes }}</span >
> <span class="text-body-1 ml-2"
</div> >{{ $ay.dt(evInfo.startDate) }}&nbsp;&mdash;&nbsp;{{
</template> $ay.dt(evInfo.stopDate)
<!--review --> }}</span
<template v-if="selectedEvent.type == $ay.ayt().Review"> >
<div class="mb-1" v-if="evInfo.aType"> </div>
<v-icon <div>
large <span class="text-h6"
color="primary" >{{
@click="openObject(evInfo.aType, evInfo.objectId)" $ay.t("WorkOrderItemScheduledUserEstimatedQuantity")
>{{ $ay.util().iconForType(evInfo.aType) }}</v-icon }}:</span
><span >
class="text-h6" <span class="text-body-1 ml-2">{{ evInfo.qty }}</span>
@click="openObject(evInfo.aType, evInfo.objectId)" </div>
> <div>
{{ evInfo.reviewObjectViz }}</span <span class="text-h6"
> >{{
</div> $ay.t("WorkOrderItemScheduledUserServiceRateID")
<div> }}:</span
<span class="text-h6">{{ $ay.t("ReviewName") }}:</span> >
<span class="text-body-1 ml-2">{{ evInfo.name }}</span> <span class="text-body-1 ml-2">{{ evInfo.rate }}</span>
</div> </div>
<div>
<span class="text-h6">{{ $ay.t("ReviewDate") }}:</span>
<span class="text-body-1 ml-2">{{
$ay.dt(evInfo.reviewDate)
}}</span>
</div>
<div>
<span class="text-h6">{{ $ay.t("ReviewNotes") }}:</span>
<span class="text-body-1 ml-2"> {{ evInfo.notes }}</span>
</div>
<template v-if="evInfo.completedDate"> <div v-if="evInfo.haswostatus">
<div> <span class="text-h6">{{ $ay.t("WorkOrderStatus") }}:</span>
<span class="text-h6" <span class="text-body-1 ml-2">{{ evInfo.wostatus }}</span>
>{{ $ay.t("ReviewCompletedDate") }}:</span <v-icon :color="evInfo.wostatuscolor" class="ml-4"
> >$ayiFlag</v-icon
<span class="text-body-1 ml-2">{{ >
$ay.dt(evInfo.completedDate) <v-icon
}}</span> color="primary"
</div> v-if="evInfo.wostatuslocked"
<div> class="ml-4"
<span class="text-h6" >$ayiLock</v-icon
>{{ $ay.t("ReviewCompletionNotes") }}:</span >
> <v-icon
<span class="text-body-1 ml-2"> color="primary"
{{ evInfo.completionNotes }}</span v-if="evInfo.wostatuscompleted"
> class="ml-4"
</div> >$ayiCheckCircle</v-icon
</template> >
</template> </div>
<!--woitemscheduleduser -->
<template
v-if="
selectedEvent.type == $ay.ayt().WorkOrderItemScheduledUser
"
>
<div>
<span class="text-h6">{{ $ay.t("WorkOrder") }}:</span>
<span class="text-body-1 ml-2"
>{{ evInfo.serial }}&nbsp; {{ evInfo.customerViz }}</span
>
</div>
<div>
<span class="text-h6">{{ $ay.t("Tags") }}:</span>
<span class="text-body-1 ml-2">{{
$ay.util().formatTags(evInfo.wotags)
}}</span>
</div>
<div>
<span class="text-h6"
>{{ $ay.t("DashboardScheduled") }}:</span
>
<span class="text-body-1 ml-2"
>{{ $ay.dt(evInfo.startDate) }}&nbsp;&mdash;&nbsp;{{
$ay.dt(evInfo.stopDate)
}}</span
>
</div>
<div>
<span class="text-h6"
>{{
$ay.t("WorkOrderItemScheduledUserEstimatedQuantity")
}}:</span
>
<span class="text-body-1 ml-2">{{ evInfo.qty }}</span>
</div>
<div>
<span class="text-h6"
>{{
$ay.t("WorkOrderItemScheduledUserServiceRateID")
}}:</span
>
<span class="text-body-1 ml-2">{{ evInfo.rate }}</span>
</div>
<div v-if="evInfo.haswostatus"> <div>
<span class="text-h6">{{ $ay.t("WorkOrderStatus") }}:</span> <span class="text-h6"
<span class="text-body-1 ml-2">{{ evInfo.wostatus }}</span> >{{ $ay.t("WorkOrderItemSummary") }}:</span
<v-icon :color="evInfo.wostatuscolor" class="ml-4" >
>$ayiFlag</v-icon <span class="text-body-1 ml-2">
> <v-icon class="mr-3" :color="evInfo.woitemstatuscolor"
<v-icon >$ayiCircle</v-icon
color="primary" >{{ evInfo.woitemstatus }}</span
v-if="evInfo.wostatuslocked" >
class="ml-4" </div>
>$ayiLock</v-icon
>
<v-icon
color="primary"
v-if="evInfo.wostatuscompleted"
class="ml-4"
>$ayiCheckCircle</v-icon
>
</div>
<div> <div>
<span class="text-h6" <span class="text-h6"
>{{ $ay.t("WorkOrderItemSummary") }}:</span >{{ $ay.t("WorkOrderItemPriorityID") }}:</span
> >
<span class="text-body-1 ml-2"> <span class="text-body-1 ml-2">
<v-icon class="mr-3" :color="evInfo.woitemstatuscolor" <v-icon class="mr-3" :color="evInfo.woitemprioritycolor"
>$ayiCircle</v-icon >$ayiFireAlt</v-icon
>{{ evInfo.woitemstatus }}</span >{{ evInfo.woitempriority }}</span
> >
</div> </div>
<div>
<div> <span class="text-h6">{{ $ay.t("WorkOrderItemTags") }}:</span>
<span class="text-h6" <span class="text-body-1 ml-2">{{
>{{ $ay.t("WorkOrderItemPriorityID") }}:</span $ay.util().formatTags(evInfo.woitemtags)
> }}</span>
<span class="text-body-1 ml-2"> </div>
<v-icon class="mr-3" :color="evInfo.woitemprioritycolor"
>$ayiFireAlt</v-icon
>{{ evInfo.woitempriority }}</span
>
</div>
<div>
<span class="text-h6"
>{{ $ay.t("WorkOrderItemTags") }}:</span
>
<span class="text-body-1 ml-2">{{
$ay.util().formatTags(evInfo.woitemtags)
}}</span>
</div>
</template>
</v-card-text> </v-card-text>
<v-card-actions> <v-card-actions>
<v-btn color="primary" text @click="openScheduledItem()">{{ <v-btn color="primary" text @click="openScheduledItem()">{{
@@ -1155,10 +1078,8 @@ async function fetchTranslatedText() {
"ScheduleShowTypes", "ScheduleShowTypes",
"NoColor", "NoColor",
"WorkOrder", "WorkOrder",
"Reminder",
"WorkOrderList", "WorkOrderList",
"ReminderList", "WorkOrderItemScheduledUserUserID",
"ReviewList",
"DashboardScheduled", "DashboardScheduled",
"WorkOrderItemPriorityID", "WorkOrderItemPriorityID",
"WorkOrderItemSummary", "WorkOrderItemSummary",
@@ -1166,14 +1087,7 @@ async function fetchTranslatedText() {
"WorkOrderStatus", "WorkOrderStatus",
"WorkOrderItemScheduledUserEstimatedQuantity", "WorkOrderItemScheduledUserEstimatedQuantity",
"WorkOrderItemScheduledUserServiceRateID", "WorkOrderItemScheduledUserServiceRateID",
"WorkOrderItemTags", "WorkOrderItemTags"
"ReminderName",
"ReviewDate",
"ReminderNotes",
"ReviewName",
"ReviewNotes",
"ReviewCompletedDate",
"ReviewCompletionNotes"
]); ]);
} }
</script> </script>