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
# Schedule form
SVC-SCHEDULE OUTSTANDING ITEMS
Hover show technician??
Port fetch events changes to personal schedule
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?
Filter and sort issues:
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?
Consider how to add filter by tag for users to schedule so can quickly select by tag(s)
sort order?? Not sure how to handle this one as filter and ad-hoc sort are at odds
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)
this will solve issue when people say "Why can't I view month but for one user instead?"
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)
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"
Choose techs feature:
Not in settings, separate feature Show filter icon opens tag picker (or persistent tag picker??)
tag picker surfaced all time in large views or in settings for narrow views
filters users by tags and shows them in alpha order by name
NO ability to set the order for this release but we could consider adding a field as a sorting field later
Tag selection is persistent and stored with the users temp settings so persistent by browser not saved to server
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)
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
Keep both Day view and Category views but make category the default drill into view when click on a date
need ability to drag to another tech in category view
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
3697 - arbitrarily order schedule by user instead of built in by lastname
schedule settings keyed by form re-use
3698 - hide unassigned tech slot (or case 3697 above would take care of that too)
need ability to drag to another tech in category view
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)
this will solve issue when people say "Why can't I view month but for one user instead?"
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)
"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 CSR form has a bunch of todo in the template, WTF?
Dashboard / widgets

View File

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

View File

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