This application finds and maps "Best Effort" Power intervals for the workout data provided by Peaksware. "Best Effort" is defined as the highest continuous average power output for a given period of time.
Power-Interval durations can be: 1, 5, 10, 15, or 20-minute segments.
Step 1: Select a
duration or time-window for the Power Interval to
get started.
Step 2:
Press the "COMPUTE" button to find the Power-Interval on the
GPS Route.
Power-Interval Stats:
Power-Interval Duration ==>
Best Effort Power Average ==>
Starting Point ==>
The full GPS route (or limited segments) of the workout geography are drawn in LIME GREEN while the power intervals are shown in RED on the map. It appears the cyclist was doing sprints on Lookout Road just east of North 75th Street in Gunbarrel, Colorado, starting about 18-20 minutes into their workout.
You can search over the entire workout data-set, about 85 minutes worth, or you can limit your search window to any desired length less than the total workout time using the "seconds" time-slider control located above the line-chart.
If you've filtered the Power Output data using the time-slider, you'll need to redraw the route to see a new GPS line on the map and then rerun the algorithm to find the new Power Interval on that filtered/modified workout route.
To run the JavaScript for the Peaksware (MakeMusic) app, you can do the following:
NOTE: These tests are incomplete and many more could be written for this project. I still, however, have a high degree of confidence that my solution is correct, but I can't say with 100% certainty.
Here are some of the Google resources I used to code the map and line-chart.
I'm using some of the CSS from my personal www.flupe.com website, hence the dark-themed background. I hope that's okay. I can't get enough of sites that have dark backgrounds. (Easier on the eyes.)
I chose to solve this problem using plain old "vanilla" JavaScript, HTML and CSS as I didn't want to deal with any complexities that might arise from using an SPA framework such as Angular or React. In short, I just felt more comfortable using "the basics" to implement my solution and felt I could be more productive with this approach, especially given the scope of the project and the short amount of time allotted to complete it. All and all, one should get a good idea about my coding abilities, style, and approach, etc. from this project.
Learning React and Angular is something I've been tackling in my spare time and it's only a matter of time before I get proficient in these two technologies. I'm also interested in Vue.js.