Count number of BayAreaBikeShare trips

On the Bay Area Bike Share trips page, count the number of trips taken.

  1. // ==UserScript==
  2. // @name Count number of BayAreaBikeShare trips
  3. // @author Mark Cervarich
  4. // @namespace http://markcerv.com
  5. // @description On the Bay Area Bike Share trips page, count the number of trips taken.
  6. // @include https://*bayareabikeshare.com/account/trips
  7. // @match https://*bayareabikeshare.com/account/trips
  8. // @version 2014-06-10-v01
  9. // @copyright 2014+, Mark Cervarich
  10. // @run-at document-end
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14.  
  15.  
  16. // User editable variables
  17. //
  18. var COUNT_DOWN_SHOW = true; // can be true or false
  19. var COUNT_DOWN_SIDE = "left"; // can be "left" or "right"
  20.  
  21. var COUNT_UP_SHOW = true; // can be true or false
  22. var COUNT_UP_SIDE = "right"; // can be "left" or "right"
  23.  
  24.  
  25.  
  26. // -- Please do not modify anything below here --
  27. //
  28.  
  29. var numTripsTaken = 0;
  30.  
  31. function createNumTripsLi() {
  32.  
  33. $('nav#member ul li:last').after("<li id='NumTrips'><span>...</span></li>");
  34. $('#NumTrips').css({"padding": "8px", "background-color": "#82C9BD", "color": "white"});
  35. }
  36.  
  37.  
  38. function calculateNumTripsTaken() {
  39. var numTrips = 0;
  40. numTrips = $('section#content table >tbody >tr').length;
  41. return(numTrips)
  42. }
  43.  
  44. function displayNumTripsTaken(numTrips) {
  45. $('#NumTrips span').replaceWith("<span># Trips Taken: <strong>" + numTrips + "</strong></span>");
  46. }
  47.  
  48.  
  49. function displaySideCounts(countUpOrDown, numTrips) {
  50.  
  51. var selectTrFirst = 'section#content table tr:first'
  52. var selectTrNotFirst = 'section#content table tr:not(:first)'
  53. var sideToUse = "";
  54.  
  55. if (countUpOrDown == "up") {
  56. sideToUse = COUNT_UP_SIDE
  57. var tripCounter = 0;
  58. var arrowHead = "&#x25B2;"
  59. } else {
  60. sideToUse = COUNT_DOWN_SIDE
  61. var tripCounter = numTrips;
  62. var arrowHead = "&#x25BC;"
  63. }
  64.  
  65.  
  66. if (sideToUse == 'left') {
  67. $(selectTrFirst).prepend("<th>#" + arrowHead + "</th>");
  68.  
  69. $(selectTrNotFirst).each(function(){
  70. if (countUpOrDown == "up") tripCounter++
  71. $(this).prepend("<td>" + tripCounter + "</td>");
  72. if (countUpOrDown == "down") tripCounter--
  73. });
  74.  
  75. } else {
  76. $(selectTrFirst).append("<th>#" + arrowHead + "</th>");
  77.  
  78. $(selectTrNotFirst).each(function(){
  79. if (countUpOrDown == "up") tripCounter++
  80. $(this).append("<td>" + tripCounter + "</td>");
  81. if (countUpOrDown == "down") tripCounter--
  82. });
  83. }
  84.  
  85. }
  86.  
  87.  
  88.  
  89.  
  90. // at load time
  91. numTripsTaken = calculateNumTripsTaken();
  92. createNumTripsLi();
  93. displayNumTripsTaken(numTripsTaken);
  94.  
  95. if (COUNT_DOWN_SHOW) displaySideCounts("down", numTripsTaken)
  96. if (COUNT_UP_SHOW) displaySideCounts("up", numTripsTaken)