Added Pace support

Added Swimpace support
This commit is contained in:
sebastianerb
2018-10-16 17:18:31 +02:00
parent 947b26faeb
commit b3ab401b7f
6 changed files with 240 additions and 6 deletions
+39 -6
View File
@@ -74,6 +74,37 @@ class WPStrava_ActivityShortcode {
$map_height = str_replace( 'px', '', $map_height );
if ( $activity_details ) {
$strava_activitytype = WPStrava_ActivityType::getType( $activity_details->type );
$avg_speed = '';
$max_speed = '';
$speed_label = '';
$avg_title = '<th>' . __( 'Average Speed', 'wp-strava' ) . '</th>';
$max_title = '<th>' . __( 'Max Speed', 'wp-strava' ) . '</th>';
switch ($strava_activitytype) {
case WPStrava_ActivityType::IS_PACE_TYPE:
$avg_speed = '<td>' . $strava_som->pace( $activity_details->average_speed ) . '</td>';
$max_speed = '<td>' . $strava_som->pace( $activity_details->max_speed ) . '</td>';
$speed_label = '<td>' . $strava_som->get_pace_label() . '</td>';
break;
case WPStrava_ActivityType::IS_SPEED_TYPE:
$avg_speed = '<td>' . $strava_som->speed( $activity_details->average_speed ) . '</td>';
$max_speed = '<td>' . $strava_som->speed( $activity_details->max_speed ) . '</td>';
$speed_label = '<td>' . $strava_som->get_speed_label() . '</td>';
break;
case WPStrava_ActivityType::IS_PACE_TYPE:
$avg_speed = '<td>' . $strava_som->swimpace( $activity_details->average_speed ) . '</td>';
$max_speed = '<td>' . $strava_som->swimpace( $activity_details->max_speed ) . '</td>';
$speed_label = '<td>' . $strava_som->get_swimpace_label() . '</td>';
break;
default:
$avg_title = '';
$max_title = '';
break;
}
return '
<div id="activity-header-' . $atts['id'] . '" class="wp-strava-activity-container">
<table id="activity-details-table">
@@ -82,8 +113,8 @@ class WPStrava_ActivityShortcode {
<th>' . __( 'Elapsed Time', 'wp-strava' ) . '</th>
<th>' . __( 'Moving Time', 'wp-strava' ) . '</th>
<th>' . __( 'Distance', 'wp-strava' ) . '</th>
<th>' . __( 'Average Speed', 'wp-strava' ) . '</th>
<th>' . __( 'Max Speed', 'wp-strava' ) . '</th>
' . $avg_title . '
' . $max_title . '
<th>' . __( 'Elevation Gain', 'wp-strava' ) . '</th>
</tr>
</thead>
@@ -92,23 +123,25 @@ class WPStrava_ActivityShortcode {
<td>' . $strava_som->time( $activity_details->elapsed_time ) . '</td>
<td>' . $strava_som->time( $activity_details->moving_time ) . '</td>
<td>' . $strava_som->distance( $activity_details->distance ) . '</td>
<td>' . $strava_som->speed( $activity_details->average_speed ) . '</td>
<td>' . $strava_som->speed( $activity_details->max_speed ) . '</td>
' . $avg_speed . '
' . $max_speed . '
<td>' . $strava_som->elevation( $activity_details->total_elevation_gain ) . '</td>
</tr>
<tr class="activity-details-table-units">
<td>' . $strava_som->get_time_label() . '</td>
<td>' . $strava_som->get_time_label() . '</td>
<td>' . $strava_som->get_distance_label() . '</td>
<td>' . $strava_som->get_speed_label() . '</td>
<td>' . $strava_som->get_speed_label() . '</td>
' . $speed_label . '
' . $speed_label . '
<td>' . $strava_som->get_elevation_label() . '</td>
</tr>
</tbody>
</table>
<a title="' . $activity_details->name . '" href="' . WPStrava_Activity::ACTIVITIES_URL . $activity_details->id . '">' .
WPStrava_StaticMap::get_image_tag( $activity_details, $map_height, $map_width, $atts['markers'] ) .
'</a>
</div>';
} // End if( $activity_details ).
}
+90
View File
@@ -0,0 +1,90 @@
<?php
/**
* ActivityType [activitytype].
* @package WPStrava
*/
/**
* ActivityType class.
*
* @author Sebastian Erb <mail@sebastianerb.com>
* @since 1.6.1
*/
class WPStrava_ActivityType
{
const TYPE_ALPINESKI = 'AlpineSki';
const TYPE_BACKCOUNTRYSKI = 'BackcountrySki';
const TYPE_CANOEING = 'Canoeing';
const TYPE_CROSSFIT = 'Crossfit';
const TYPE_EBIKERIDE = 'EBikeRide';
const TYPE_ELLIPTICAL = 'Elliptical';
const TYPE_HANDCYCLE = 'Hike';
const TYPE_HIKE = 'IceSkate';
const TYPE_ICESKATE = 'InlineSkate';
const TYPE_INLINESKATE = 'AlpineSki';
const TYPE_KAYAKING = 'Kayaking';
const TYPE_KITESURF = 'Kitesurf';
const TYPE_NORDICSKI = 'NordicSki';
const TYPE_RIDE = 'Ride';
const TYPE_ROCKCLIMBING = 'RockClimbing';
const TYPE_ROLLERSKI = 'RollerSki';
const TYPE_ROWING = 'Rowing';
const TYPE_RUN = 'Run';
const TYPE_SNOWBOARD = 'Snowboard';
const TYPE_SNOWSHOE = 'Snowshoe';
const TYPE_STAIRSTEPPER = 'StairStepper';
const TYPE_STANDUPPADDLING = 'StandUpPaddling';
const TYPE_SURFING = 'Surfing';
const TYPE_SWIM = 'Swim';
const TYPE_VIRTUALRIDE = 'VirtualRide';
const TYPE_VIRTUALRUN = 'VirtualRun';
const TYPE_WALK = 'Walk';
const TYPE_WEIGHTTRAINING = 'WeightTraining';
const TYPE_WHEELCHAIR = 'Wheelchair';
const TYPE_WINDSURF = 'Windsurf';
const TYPE_WORKOUT = 'Workout';
const TYPE_YOGA = 'Yoga';
const TYPE_DEFAULT = TYPE_RIDE;
private static $waterTypes = array(WPStrava_ActivityType::TYPE_SWIM);
private static $paceTypes = array(WPStrava_ActivityType::TYPE_CANOEING, WPStrava_ActivityType::TYPE_HIKE, WPStrava_ActivityType::TYPE_RUN, WPStrava_ActivityType::TYPE_SNOWSHOE, WPStrava_ActivityType::TYPE_VIRTUALRUN, WPStrava_ActivityType::TYPE_WALK);
private static $speedTypes = array(WPStrava_ActivityType::TYPE_ALPINESKI, WPStrava_ActivityType::TYPE_BACKCOUNTRYSKI, WPStrava_ActivityType::TYPE_EBIKERIDE, WPStrava_ActivityType::TYPE_ELLIPTICAL, WPStrava_ActivityType::TYPE_HANDCYCLE, WPStrava_ActivityType::TYPE_ICESKATE, WPStrava_ActivityType::TYPE_INLINESKATE, WPStrava_ActivityType::TYPE_KAYAKING, WPStrava_ActivityType::TYPE_KITESURF, WPStrava_ActivityType::TYPE_NORDICSKI, WPStrava_ActivityType::TYPE_RIDE, WPStrava_ActivityType::TYPE_ROCKCLIMBING, WPStrava_ActivityType::TYPE_ROLLERSKI, WPStrava_ActivityType::TYPE_ROWING, WPStrava_ActivityType::TYPE_SNOWBOARD, WPStrava_ActivityType::TYPE_STAIRSTEPPER, WPStrava_ActivityType::TYPE_STANDUPPADDLING, WPStrava_ActivityType::TYPE_SURFING, WPStrava_ActivityType::TYPE_VIRTUALRIDE, WPStrava_ActivityType::TYPE_WHEELCHAIR, WPStrava_ActivityType::TYPE_WINDSURF);
const ALL_TYPES = array(WPStrava_ActivityType::TYPE_SWIM, WPStrava_ActivityType::TYPE_CANOEING, WPStrava_ActivityType::TYPE_HIKE, WPStrava_ActivityType::TYPE_RUN, WPStrava_ActivityType::TYPE_SNOWSHOE, WPStrava_ActivityType::TYPE_VIRTUALRUN, WPStrava_ActivityType::TYPE_WALK, WPStrava_ActivityType::TYPE_ALPINESKI, WPStrava_ActivityType::TYPE_BACKCOUNTRYSKI, WPStrava_ActivityType::TYPE_EBIKERIDE, WPStrava_ActivityType::TYPE_ELLIPTICAL, WPStrava_ActivityType::TYPE_HANDCYCLE, WPStrava_ActivityType::TYPE_ICESKATE, WPStrava_ActivityType::TYPE_INLINESKATE, WPStrava_ActivityType::TYPE_KAYAKING, WPStrava_ActivityType::TYPE_KITESURF, WPStrava_ActivityType::TYPE_NORDICSKI, WPStrava_ActivityType::TYPE_RIDE, WPStrava_ActivityType::TYPE_ROCKCLIMBING, WPStrava_ActivityType::TYPE_ROLLERSKI, WPStrava_ActivityType::TYPE_ROWING, WPStrava_ActivityType::TYPE_SNOWBOARD, WPStrava_ActivityType::TYPE_STAIRSTEPPER, WPStrava_ActivityType::TYPE_STANDUPPADDLING, WPStrava_ActivityType::TYPE_SURFING, WPStrava_ActivityType::TYPE_VIRTUALRIDE, WPStrava_ActivityType::TYPE_WHEELCHAIR, WPStrava_ActivityType::TYPE_WINDSURF, WPStrava_ActivityType::TYPE_CROSSFIT, WPStrava_ActivityType::TYPE_WEIGHTTRAINING, WPStrava_ActivityType::TYPE_WORKOUT, WPStrava_ActivityType::TYPE_YOGA);
const IS_WATER_TYPE = "water_type";
const IS_PACE_TYPE = "pace_type";
const IS_SPEED_TYPE = "speed_type";
const IS_OTHER_TYPE = "other_type";
public static function verifyType( $type ) {
if($type==null || !in_array($type, WPStrava_ActivityType::ALL_TYPES))
return WPStrava_ActivityType::TYPE_DEFAULT;
else
return $type;
}
public static function getType( $type ){
if(in_array($type, WPStrava_ActivityType::$paceTypes)){
return WPStrava_ActivityType::IS_PACE_TYPE;
}
if(in_array($type, WPStrava_ActivityType::$speedTypes)){
return WPStrava_ActivityType::IS_SPEED_TYPE;
}
if(in_array($type, WPStrava_ActivityType::$waterTypes)){
return WPStrava_ActivityType::IS_WATER_TYPE;
}
return WPStrava_ActivityType::IS_OTHER_TYPE;
}
}
+4
View File
@@ -26,6 +26,10 @@ abstract class WPStrava_SOM {
abstract public function get_speed_label();
abstract public function elevation( $m );
abstract public function get_elevation_label();
abstract public function pace( $mps );
abstract public function get_pace_label();
abstract public function swimpace( $mps );
abstract public function get_swimpace_label();
public function time( $seconds ) {
return date( 'H:i:s', mktime( 0, 0, $seconds ) );
+51
View File
@@ -55,6 +55,57 @@ class WPStrava_SOMEnglish extends WPStrava_SOM {
return __( 'mph', 'wp-strava' );
}
/**
* Change meters per second to Minutes Per Mile.
*
* @param float $mps Meters per second.
* @return float Minutes Per Mile.
*/
public function pace( $mps ) {
$mph = $mps * 2.2369;
$s = 3600 / $mph;
$ss = $s/60;
$ms = floor($ss)*60;
$sec = round($s-$ms);
$min = floor(60/$ss);
return "$min:$sec";
}
/**
* Abbreviated label for this system of measure's pace - Minutes Per Mile: min/mile
*
* @return string 'min/mile'
*/
public function get_pace_label() {
return __( 'min/mile', 'wp-strava' );
}
/**
* Change meters per second to Minutes Per 100 Meters.
*
* @param float $mps Meters per second.
* @return float Minutes Per 100 Meters.
*/
public function swimpace( $mps ) {
$kmh = $mps * 3.6;
$min100m = 60/$kmh/10;
return number_format( $min100m, 2 );
}
/**
* Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
*
* @return string 'min/100m'
*/
public function get_swimpace_label() {
return __( 'min/100m', 'wp-strava' );
}
/**
* Change meters to feet.
*
+51
View File
@@ -55,6 +55,57 @@ class WPStrava_SOMMetric extends WPStrava_SOM {
return __( 'km/h', 'wp-strava' );
}
/**
* Change meters per second to kilometers per hour.
*
* @param float $mps Meters per second.
* @return float Kilometers per hour.
*/
public function pace( $mps ) {
// 4 m/s => 14,4 km/h => 4:10 min/km
$kmh = $mps * 3.6;
$s = 3600 / $kmh;
$ss = $s/60;
$ms = floor($ss)*60;
$sec = round($s-$ms);
$min = floor(60/$ss);
return "$min:$sec";
}
/**
* Abbreviated label for this system of measure's speed - Minutes Per Kilometers: min/km
*
* @return string 'min/km'
*/
public function get_pace_label() {
return __( 'min/km', 'wp-strava' );
}
/**
* Change meters per second to Minutes Per 100 Meters.
*
* @param float $mps Meters per second.
* @return float Minutes Per 100 Meters.
*/
public function swimpace( $mps ) {
$kmh = $mps * 3.6;
$min100m = 60/$kmh/10;
return number_format( $min100m, 2 );
}
/**
* Abbreviated label for this system of measure's pace - Minutes Per 100 Meters: min/100m
*
* @return string 'min/100m'
*/
public function get_swimpace_label() {
return __( 'min/100m', 'wp-strava' );
}
/**
* Change meters to meters };^)
*
Executable → Regular
+5
View File
@@ -78,6 +78,11 @@ WP-Strava caches activity for one hour so your site doesn't hit the Strava API o
== Changelog ==
= 1.6.1 =
Added Pace support (min/km) for Activity Shortcode
Added Swimpace support (min/100m) for Activity Shortcode
= 1.6.0 =
Added class autoloader (removed composer autoloader).