This is an old revision of the document!
Handing off trackers to the UK is highlighting issues with the handoff and the ability to move trackers to other projects, merge tracks, and otherwise edit historical tracks & machines as well as set trackers to new settings. Some of the ability exists now but is spread across projects and/or is not available without a developer mode turned on.
With Eggman we currently have an additional set of controls available to change values on a tracker going forward to future tracks. These controls currently include:
Of these probably only Project is appropriate for general users to edit. The remainder are debugging controls probably still only appropriate to us. The question is are there any other settings we should expose or if this is the only one should we just move it to the machine page with the other machine characteristics. It should also be noted that the current page does not show the current state but simply shows the options that will be set.
There are a couple of reason to merge tracks
Our Sale Loaners a perfect example of
Premise: Joe's Contracting has 6 scrapers running SimpleTrack on phones. He wants to both be able to determine his cycle counts at will, get statistics right then and then push the information up to the Access web service. His path might look something like this:
(Note: this very well might end up as a module called from SmartDirt like Nav is called from Google Maps. Likely things to push over is the login/project/file/)
The flow might look like this for the module standalone:
Project Track Screen —————– Main Screen
Background files are not a core part of Track Manager but give a frame of reference to the tracks. They can be loaded through the menu (Background File) or passed from SmartPlan/SmartDirt when those are the launching program. The addition of this feature also means that we need to add the View control option to the menu as well.
For the first pass we can use the existing SmartPlan File/Access Layout but because we have a hint to the correct Project I have to wonder if it doesn't make sense to use something more like Tracks layout with Projects on the top and tracks below. I'm interested in expediency right now. As a mitigating feature I'd like to introduce a sort command to the menu in the file view that is usable by all of the products. The Sort Choices are:
Trackmanager can use either KMZ or ADF as background files. The View control can overlay all the other controls (except tracks, background file) since we are challenged for space and it's unlikely that the user will leave the view screen up.
This was stolen and modified from Job Site Manager as are the edit and new vehicle screens. Gone are the checkboxes for multiple picking. Picking a machines switches to the edit screen which looks sufficient for now
Changes from Jobsite Manager are:
Edit vehicle and New vehicle lose the settings options and the job specific and upload information. I edited the layout slightly to allow more room for the volumes per cycle and lined up the bottom of the color with the machine type.
Can't find the Server Wiki so I'm putting it here for now. The current battery readings are useful but I having a record of readings over time would give more insight to power usage and variations in phone longevity.
The Rio Vista Trilogy job points out the limitations of the Trackwork Cycle line model. At Trilogy we had up to 9 machines running on the job and doing wildly different patterns. While this is not common it's probably in that 10% of the time that can cause difficulty.
I don't know that what I'm proposing is a total solution but I think it's a reasonable first attempt for improvement. Here's how I'd like it to work (please point out the flaws as I'm sure there are many).
A cycle line only applies to the visible track. For example if have “All” showing and draw a Cycle line then that cycle line is used for all Tracks and shows at each track individually. However if I enter a cycle line while just showing a single track, it only applies to that one track and overrides any track set previously set with All.
The cycle line assignment can also be pushed up to the server and back down to SimpleTrack to provide a simple numeric load count to the operator.
The Trilogy job data was good test for deciphering machine paths. Unlike many other jobs the mix of machines took wildly different paths throughout the day and it was a challenge to follow their direction when trying to put in a cycle line. In doing the playback in trackwork it seemed like more feedback on direction would be helpful rather than just the current end point. One thought is to change the color/thickness? of the last 20 seconds (settable?) so that a static view of the track would highlight end point and direction. Since it's time based it would also give a visual scale to speed.
Field usage is showing we need to be able to not only reassign trackers but fix mis-assigned tracks to a new machine. By nature reassigning a tracker to a machine breaks the track. The option below allows the user to combine a day's tracks (same tracker) after reassignment. I think it should default on because it also takes care of the small tracks created when trackers are placed the first day.
Set Job hours is used to clip the tracking time for calculation of statistics. This is close to the Trackwork function of setting job hours but adds the ability to not applying clipping elements of the day. Trackwork was designed around processing data after the day is finished and this product analyzes tracks during the day in almost real-time. My guess is that a common configuration for same day processing is to set the start time and lunch. The goal here is to capture statistically the machine schedule. To put it more bluntly you want to see whether they're starting and finishing on time.
By nature the new trackers don't start until there's activity so by setting a start time it's possible to measure whether the working time (movement) versus the cost hours (Job hours).
The user has tracks up and picks Set Job Hours from the menu. The screen below displays using the last values used (persistent). A checked setting (Start, Lunch, End) means that the program applies that time as a track clipping edge with lunch specifying a range. Pressing Set applies the setting and closes the window. Thoughts on editing/removing settings? A clear option, unchecking the values, welcome your thoughts.
Setting the Job Hours takes the hours set (and enabled) and clips track data outside the specified ranges or effectively extends the data back. A good example is the work day starts at 7 am but the machine doesn't move until 7:10. If the machine moved continuously from 7:10 to 8 then the cost hours are 1 and the minutes per hour is 50.
Note: Typically job starts and stops are standardized throughout companies so making these values persistent like a setting is probably recommended.
Note: I used the newer style Google time control but I don't know if this is something only available in later Android versions or not. If it isn't readily available then please advise what is and we can modify the design.
This screen shows both playback and report on at the same time.
Elements include the ability to swipe right to show graphs representing performance (working on them)
Swiping to the “All” machine option shows the stats for the time range.
Note: Ignore the Play dialog stuff for Story 3. I prototyped this before breaking it into stories. The play bar comes in at Story 4
Default Tab to come up is Preferences for this program. GPS is not as important for this app. There's a couple ways to display Speed and Time that comes down to user preferences. Some people prefer to see speed as feet per second (default) and others prefer miles per hour. Time too can be in seconds (default) or in minutes, seconds. These values are persistent like settings.
Playback mode is entered through the action bar icon. It allows automated playback of tracks along with manual controls (slider). I'm not sure if pinch zoom is available on only a portion of the screen but it might be cool. The timeline itself show movement as thicker bar in the color of the track and lack of motion as a thin bar. Moving the time (thin, taller line) causes the stats above to change to reflect the movement.
Note: I don't know of any Android controls that are similar so I'm open to suggestions on implementation while maintaining capability. The small screen size may be an issue.
The track range and speed menu item control how much of the track is visible (range of time) and the x speed of automatic playback.
During playback of tracks there's often so much data on screen that it's desirable to show only the last 15 minutes of tracks (for example) when analyzing track paths
Controls the range of time from the time slider visible in minutes. For example: 30 means that only the track line from 30 minutes back of the current slider time position is visible. It helps control the visual clutter. The speed is how fast the automatic playback runs. 10x is 10 second = 1 second. Note I can't remember the options we have for the numeric controls. I'm looking for ease of editing and keyboards are kind of clunky on mobile. Suggestions?
One Marketing expressed desire is to spawn Trackmanager from SmartPlan automatically picking up the background file currently displaying in SmartPlan. The entry flow into Trackmanager is very similar to the current one. The steps are:
While in SmartPlan, if the key includes TrackManager and Trackmanager is installed. From the main SmartPlan screen (displaying the KMZ/ADF file)
MJA NOTES:
The view functionality is a way of filtering data for graphical display and aggregating statistics without deleting any of the raw data points. The filters required end up being either geographic or time based. As a first implementation I'm suggesting we implement the view functionality using the Site bounds and the Job hours because they are an existing interface. I have not worked out yet how to do the interface for other views on mobile. That will be Story 7.
Track Data: (Sales Demo) Westpark 24 5/17/16, Vehicle TEN333 -623 Background File: West Park 24 Haul Plan2.kmz
The customer was worried about leaving Trackers on the machines due to theft and brought the trackers home. The machine actually ran from 8 to 5:30 but with tracking it all the way home we instead had a day that ended at 6:16 and causes the job site to display as a dot compared to the track. A Site Bounds view would limit the visible tracks and statistics collected to just those within the Site Bounds.
My first thought is what's easiest for the user. We probably have the design perimeter if he loads a background file but I'm thinking it might be more of a sure thing to just take the bounds of the non-track data and take that plus a 10% extra margin around it. If the user doesn't load a background file we could get it from the Project Object mentioned below.
We limit the statistics calculated by Job work hours now but don't trim the display of the track timeline with it. This causes issues where on small screens or even trackwork when the timeline gets stretched out and and forces zooming to get a view of the actual work. Time spent traveling outside of the site bounds like in this case also causes the statistics to skew because it's essentially taking non-productive time and including it. My proposal is this. When a site bounds view filter is used we don't display the timeline or statistics for tracks that occur outside that area. I'll also propose an axiom. Filtered data doesn't display and if not displayed is not included in statistics either. We do need to have some sort of notification/message that tells a user that there is data outside of his filter but the idea is to just show the data that he needs.
Implied Need: A project object that might contain the boundary in case I don't have a background file and whether or not to use the boundary as a default filter. I could also see that same project object as being useful for storing Job work hour defaults. Default 3D ADF files for volumes, etc. This object could be used/viewed/edited from SmartTrack, Web, and Trackwork. We also have to figure out how to interface this in SmartTrack. First thought interface suggestion. Add a Projects tab to Settings. Within that we default to showing the current Projects values. We also allow showing/editing other project values or the company master values (just job hours for now).
Track Data: (Sales Demo) Westpark 24 5/17/16, Vehicle: TEN333 -623 Background File: West Park 24 Haul Plan2.kmz
Our example data is the same as above because it has two conditions that apply. In this case the tracker started up and sent tracks at 5:07 am but actual work didn't happen until 8 am. This causes the timeline to be long and it isn't particularly useful information. Likewise, the user taking it home means that statistics after 5:30 pm are diluted with non-productive work. We currently deal with that using the Set Job hours menu option and I propose we use the same interface but display the result differently and use it as a filter.
The existing Job hours interface is sufficient with addition of a “Show tracks outside of hours” (something like that) checkbox. The default would be off and the result of an off state would be to clip the timeline to just display for those hours. Because off is the default I do believe we need an symbol on the timeline if track movement activity exceeded the job hours by more than 30 (?) minutes.
Limiting the timeline by job hours is desirable but there are situations where data that should be included (machines worked overtime that day) is clipped from the view. In cases where there is more than 6 minutes (chosen because of our normal motion timeout) of movement past the job view limits I'd like to place a small + symbol as shown in the graphic at either/or both ends of the timeline.
I'm adding this here because most features are evolutionary from the newer versions of SmartPlan but are deeper than a suggestion from Jtrac. They are:
The Beazer Fallbrook project also points out problems with calculating statistics on items that do not have cycle lines entered. TNT construction is looking for sub 3 minute hauls ideally and each of the three scrapers had cycle time averages of 190, 200, and 210 seconds respectively. The problem is when you view all it ends ups with a average cycle time of 440 seconds because the no cycle line elements like dozer and compactors.
Many of the statistics calculated with no cycle line are nonsensical including most of the averages. And we certainly don't want those statistics corrupting the good statistics.
(Another thought is to group the All by equipment type but I'm not willing to go that far yet. This will be helped in Story 7 with the added View control)
The first pass at Statistics followed the Trackwork model and continued usage is pointing out issues with some of that. Machines are assumed to always have a single cycle when no cycle line is drawn for them and the subsequent averages (avg haul, etc) is used to calculate the cumulative All statistics and it skews them. My proposal is this:
We have a quantity field defined for machines that we don't currently use. It's also not always set by the users. If it is set to a non-zero value and is for a machine type of Scraper, Excavator, or Truck let's show the volumes in the statistic window. There's space in the right column below Cost Hours
Project settings encompass those elements that constitute the context in which to view the tracks. Most of the settings are provided by the view description, which a few are extracted from the tracker configuration (e.g. cycle lines).
Project settings are described elsewhere as a “View” which provides filtering criteria in which to view tracks. Each view is effective starting on a particular day, until it's superceded by another view. When reading tracks, SmartTrack is choose the applicable view, such that the effective date is the most recent, which is still no later than the day of tracks being read in.
As previously stated, a new preferences tab is to be created allowing the user to set the most common of the project settings:
The Android version of the project settings looks like:
A save button allows the user to save, and push the “ProjectSettings (AKA View)” to the server, with the appropriate values. Cancels allows the user to exit without saving any changes.
IOS versions are expected to be somewhat different.
Currently cycle lines if saved apply to the project for the life of the project and this isn't granular enough for our situation where tracks are measured by the day's performance.
The appropriate saving granularity is probably by day, by machine. For example, I have Scraper 651-5104 on 10/11 for the Beazer Fallbrook Project. If I put in a cycle line for that day and read the next day's tracks in, that cycle line doesn't work for the next day's tracks and I can't easily see two days worth of tracks together.
Ideally a saved cycle line would represent the machine for just that day with no application for tracks in future days or past days. The current cycle lines remain local until saved(uploaded). Users can locally remove cycle lines for a day/ reinput them and saving them will overwrite the server saved tracks. My thought at this time is that we only worry about the last saved lines.
Event tag values (for IOS and Android):
EVENT_READ_ADF = "trackmanager.read.adf"; EVENT_READ_KMZ = "trackmanager.read.kmz"; EVENT_CYCLE_ALL = "trackmanager.set.cycle.all"; EVENT_CYCLE_INDIVIDUAL = "trackmanager.set.cycle.individual"; EVENT_REPORT = "trackmanager.view.report"; EVENT_STATS_CHANGE = "trackmanager.change.quick.stats"; EVENT_PLAY = "trackmanager.view.play"; EVENT_SET_JOB_HOURS = "trackmanager.set.job_hours"; EVENT_SET_BACKGROUND = "trackmanager.set.background"; EVENT_MACHINE_LIST = "trackmanager.view.machine-list"; EVENT_VIEW_LIST = "trackmanager.view.layer-list"; EVENT_RANGE_SPEED = "trackmanager.view.range-speed"; EVENT_SETTINGS = "trackmanager.view.settings"; EVENT_SAVE_CYCLES = "trackmanager.save.cycle-stats"; EVENT_SET_DEFAULTS = "trackmanager.set.project-defaults"; EVENT_ADD_SEGMENT = "trackmanager.add.segment"; EVENT_ADD_NOTE = "trackmanager.add.note";
Add machines to the View control to control usage for visibility and statistics. Machines not visible are not included in statistics. Can we use Swipe to remove them from the session permanently?
Taking cues from SmartPlan I'd like to use the Layer List to control display and whether statistics are calculated for a machine. Machines appear at the top of the Layer list like other user data. (Question: Do we have Machines as a list item and put individual machines underneath it. It would seem so as a pattern but by default I'd like it to display opened instead of requiring the user to tap the +). The machine list not only controls the visibility of individual machines but whether statistics should be calculated. It also enables the user to remove swipe (not delete) a machine from the session without going back and reloading all the other tracks as well. Controlling whether statistics are calculated on a machine is similar to choosing whether a layer is selectable in SmartPlan. Press and hold on the machine and check or uncheck “Calculate Statistics”. (Note: Added graphic showing a track that has been segmented. Through the layer list we can control whether a segment is used for statistics or viewable.
Note: Changed middle image to reflect notes as well as not calculating statistics detailed farther down.
The owner of TNT grading starts up his SmartTrack on Tuesday 10/11/16 (Beazer Fallbrook) and loads all of the active machines. Tapping through the machines he realizes that machine 651-5109 only ran for 10 minutes. To avoid using it he brings up the Layer list and swipes 651-5109 off the list to eliminate it from the session (it does not affect what's stored on the server). The two Dozers and Compactors are interesting to see but he doesn't want any statistics from them. He presses and holds on each Dozer and Compactor and unchecks “Calculate Statistics” so the program doesn't bother with displaying or using the statistics in “All” from those machines.
When the user selects “Save Day” on the menu to save cycle lines, and statistics, the “calculate statistics” boolean is saved (per track) in the day view.
Here's the use case. In a recent project “Beazer Fallbrook” the customer is using 4 scrapers, two push dozers, and a compactor. While the cycles for the push dozers aren't important, their behavior relative to the scraper they're pushing is. The desire is to load all of the machines for a day and see them relative to one another but not capture statistics for the dozers and compactors. My proposal is to allow the Layer List view to control statistics with visibility. Another option is to extend the “selectable” setting we use in SmartPlan to instead be “No Statistics” and use that flag to not capture statistics of the chosen tracks but allow their visibility to exist.
When statistics are supressed, the report window will display no statistics values, but instead displays a string “Statistics disabled”. This behavior will dynamically change as the user cycles through the tracks using the track selector.
Questions to answer:
There are different operations with different costs and those operations often don't fall on whole days. For example Pads 1-36 must be overexcavated and then precompacted prior to filling them. From 7 to 10:18 am the scrapers remove dirt from that block of pads which is one cost code. From 10:30 to 3:30 pm with a break for lunch they move dirt back onto those same pads with a different cost code.
Just one example. Kelly may be able to elaborate on others.
This story extends the view capability to allow for segmentation of daily tracks by time and area.
Above Screen Description
In the screens above the process is:
Now when that first segment line is put down it creates two track segments in the View listing and additional segment lines cause additional view line items.
Note: Based on the conversation going on now we may have codes in sooner rather than later.
This screen is reached by pressing and holding on a Segment in the View Control.
Late addition based upon field discussions. Besides putting notes on segments we also need to be able to put notes at specific times and on specific tracks (or All). The interface is to add a Note button to the zoom controller that only displays when the play bar is up. When the Note button is pressed the note is placed relative to the position of the play bar cursor so instead of putting notes relative to a geographic position it instead puts them relative to a time. Common usage would allow field people to note why gaps are occurring (ie: machine down, broken hose) relative to time although there is also an implied location of the machine's current location at that time.
Locations of these notes need a mark on the play bar and scrolling through them should display the notes as they pass (toast? or something else). These notes also need to be saved to the server so both the web app and Trackwork in the future can download and display them .
Construction has lots of steps and processes to get to the finished result. And those steps have associated expenses to go with them that are often characterized by using a cost code. These codes serve across the organization from accounting (expenses and billing) to
Equipment being tracked often has multiple processes they do during the day. And these processes are usually documented with a cost code. Cost codes vary from company to company and even project to project. It's also not unusual for states to have standardized codes for billing with job specific codes as well. Our goal is to add the ability to segregate track segments and time notes (measure and notes for other apps) by adding a cost code as well as the note.
Description of Segment screen changes
This is based on current segment screen design.
Adding Cost List to Project Defaults Screen
Adding an option to set the default Cost list to the Project defaults is simple from a user interface perspective but more complicated underneath
The Journal is an outgrowth of cost codes and the idea of collating project information from a variety of sources to Access. It may become a feature of all mobile apps that use cost codes.
The idea is to give the user a summary of what's he's submitting. There's potentially a split view that shows his submittals and another that shows all submittals for that day. And since it's a summary I'd like to keep to a single line per entry but with the ability to expand or go-to the detail on a line item.
Elements and things to think about
The Cost Code system is bigger than just tracking equipment and should be designed as a shareable asset from desktop software to any mobile app and the web. The mechanisms put in here should be viewed as something we can leverage in other manifestation like a staking list for example.
Cost code system on access for shared use Ability to use different cost code files (implies a file but doesn't have to be) Setting a default cost code list for a project Ways of adding to/ Editing/ reading cost code list (delimited, excel?)
Code | Description |
---|---|
18130 | Rem of Manhole |
19020 | Excavation to Embank - Dozer |
19022 | Finish Subgrade |
19023 | Finish Slopes/Ditches |
19030 | Finish Subgrade-Side Streets |
19040 | Finish Sidewalks |
19070 | Excavation of Soft Spots |
19080 | Install Construction Entrance |
19081 | Place Topsoil |
19082 | Finish Slopes |
26210 | Install 12“ Apron |
26255 | Culvert (12”) Exc/Lay/BF |
26310 | Culvert (18“) Exc/Lay/BF |
26410 | Storm (8”) Exc/Lay/BF |
26420 | Storm (12“) Exc/Lay/BF |
26460 | Sewer 8” Exc/Lay/BF |
26480 | Install SD MH |
26620 | Install 6'x6' Box |
Unification of cost codes across applications in important, and AGTEK Access is already the focus for project related communication between user machines. Therefor it makes sense to implement cost codes in the server so mobile / desktop / web applications use a unified cost code list.
Cost codes must support the following behaviors:
Interface: The CCLs must be available through the ACCESS api. The following methods are proposed to be added to the ProjectAPI.
class CostCode { int handle; int projectHandle; String code; String description; } List<CostCode> ProjectApi.getCostCodes( int projectHandle ) void ProjectApi.addCostCode( int projectListHandle ) void ProjectApi.deleteCostCode( CostCode cc ) void ProjectApi.updateCostCode( CostCode cc )
Moved from Story 7. TBD
* Implementing Views to break daily tracks into statistics by area
A couple of thoughts on graphing possibilities. We have limited screen real estate and an outside environment that is a little challenging to fine detail. Reports I can think of right now
We have a general idea of how Trucks operate on the job site but this will be our first pass at handling the slightly different needs. Some features/statistics to consider are street map display instead of file backgrounds and stats like ETA and their display. Trucks are also used for different roles from dirt export/import, materials import (like rock) to very JIT things like paving.
Turn on more rapid streaming from SimpleTrack when nearing job proximity for a better eta. Better visual feedback from TruckManager user ala'Lyft,Uber