From 79f820827eb385768f34911845fd550f72901da8 Mon Sep 17 00:00:00 2001 From: bastianonm Date: Mon, 4 Feb 2013 08:58:18 +0000 Subject: [PATCH] * Improved italian translation * Added grade chart (beta) --- WP-GPX-Maps.js | 44 ++ languages/wp-gpx-maps-it_IT.mo | Bin 1386 -> 1383 bytes languages/wp-gpx-maps-it_IT.po | 4 +- readme.txt | 9 +- wp-gpx-maps.php | 709 +++++++++++++++++++++++++++++++++ wp-gpx-maps_admin.php | 2 + wp-gpx-maps_admin_settings.php | 23 +- wp-gpx-maps_utils.php | 28 +- 8 files changed, 807 insertions(+), 12 deletions(-) diff --git a/WP-GPX-Maps.js b/WP-GPX-Maps.js index 462b04d..8e76e40 100644 --- a/WP-GPX-Maps.js +++ b/WP-GPX-Maps.js @@ -138,6 +138,7 @@ function _wpgpxmaps(params) var graphSpeed = params.graphSpeed; var graphHr = params.graphHr; var graphCad = params.graphCad; + var graphGrade = params.graphGrade; var waypoints = params.waypoints; var unit = params.unit; var unitspeed = params.unitspeed; @@ -146,6 +147,7 @@ function _wpgpxmaps(params) var color3 = params.color3; var color4 = params.color4; var color5 = params.color5; + var color6 = params.color6; var chartFrom1 = params.chartFrom1; var chartTo1 = params.chartTo1; var chartFrom2 = params.chartFrom2; @@ -908,7 +910,49 @@ function _wpgpxmaps(params) l_y_arr.push(l_cad); } + + if (graphGrade != '') + { + + var l_grade = { suf : "%", dec : 1 }; + + var cadData = []; + for (i=0; iBkhTKSd_dX*Nb>{f@Xe8o_ZWGNbq$Pk4NMdaEUk=; UHoGvtWMmCV%`M2EY|3g10Hys6o&W#< delta 74 zcmaFP^@?kQ4WleS0|SFDD+2>BkhTTVd_dY8NQ1Settings'; + // add the link to the list + array_unshift($links, $settings_link); + } + + return $links; +} + +function enqueue_WP_GPX_Maps_scripts() +{ + + wp_enqueue_script( 'jquery' ); + + wp_deregister_script( 'googlemaps' ); + wp_register_script( 'googlemaps', 'https://maps.googleapis.com/maps/api/js?sensor=false&v=3.9', null, null); + wp_enqueue_script( 'googlemaps' ); + + wp_deregister_script( 'highcharts' ); + wp_register_script( 'highcharts', "http://code.highcharts.com/highcharts.js", array('jquery'), "2.3.3", true); + wp_enqueue_script( 'highcharts' ); + + wp_deregister_script( 'WP-GPX-Maps' ); + wp_register_script( 'WP-GPX-Maps', plugins_url('/WP-GPX-Maps.js', __FILE__), array('jquery','googlemaps','highcharts'), "1.1.40"); + wp_enqueue_script( 'WP-GPX-Maps' ); + +} + +function print_WP_GPX_Maps_scripts() +{ +?> + +dt; + $points_x_lat = $points->lat; + $points_x_lon = $points->lon; + + $max_ele = $points->maxEle; + $min_ele = $points->minEle; + $max_time = $points->maxTime; + $min_time = $points->minTime; + $total_ele_up = $points->totalEleUp; + $total_ele_down = $points->totalEleDown; + $avg_speed = $points->avgSpeed; + $tot_len = $points->totalLength; + + if (is_array ($points_x_lat)) + foreach(array_keys($points_x_lat) as $i) + { + + $_lat = (float)$points_x_lat[$i]; + $_lon = (float)$points_x_lon[$i]; + + if ( $_lat == 0 && $_lon == 0 ) + { + $points_maps .= 'null,'; + $points_graph_dist .= 'null,'; + $points_graph_ele .= 'null,'; + + if ($showSpeed == true) + $points_graph_speed .= 'null,'; + + if ($showHr == true) + $points_graph_hr .= 'null,'; + + if ($showCad == true) + $points_graph_cad .= 'null,'; + + if ($showGrade == true) + $points_graph_grade .= 'null,'; + + } + else + { + $points_maps .= '['.number_format((float)$points_x_lat[$i], 7 , '.' , '' ).','.number_format((float)$points_x_lon[$i], 7 , '.' , '' ).'],'; + + $_ele = (float)$points->ele[$i]; + $_dist = (float)$points->dist[$i]; + + if ($uom == '1') + { + // Miles and feet + $_dist *= 0.000621371192; + $_ele *= 3.2808399; + } else if ($uom == '2') + { + // meters / kilometers + $_dist = (float)($_dist / 1000); + } + + $points_graph_dist .= number_format ( $_dist , 2 , '.' , '' ).','; + $points_graph_ele .= number_format ( $_ele , 2 , '.' , '' ).','; + + if ($showSpeed == true) { + + $_speed = (float)$points->speed[$i]; + + $points_graph_speed .= convertSpeed($_speed,$uomspeed).','; + } + + if ($showHr == true) + { + $points_graph_hr .= number_format ( $points->hr[$i] , 2 , '.' , '' ).','; + } + + if ($showCad == true) + { + $points_graph_cad .= number_format ( $points->cad[$i] , 2 , '.' , '' ).','; + } + + if ($showGrade == true) + { + $points_graph_grade .= number_format ( $points->grade[$i] , 2 , '.' , '' ).','; + } + + } + } + + if ($uom == '1') + { + // Miles and feet + $tot_len = round($tot_len * 0.000621371192, 2)." mi"; + $max_ele = round($max_ele * 3.2808399, 0)." ft"; + $min_ele = round($min_ele * 3.2808399, 0)." ft"; + $total_ele_up = round($total_ele_up * 3.2808399, 0)." ft"; + $total_ele_down = round($total_ele_down * 3.2808399, 0)." ft"; + } else if ($uom == '2') + { + // meters / kilometers + $tot_len = round($tot_len / 1000, 2)." km"; + $max_ele = round($max_ele, 0) ." m"; + $min_ele = round($min_ele, 0) ." m"; + $total_ele_up = round($total_ele_up, 0) ." m"; + $total_ele_down = round($total_ele_down, 0) ." m"; + } + else + { + // meters / meters + $tot_len = round($tot_len, 0) ." m"; + $max_ele = round($max_ele, 0) ." m"; + $min_ele = round($min_ele, 0) ." m"; + $total_ele_up = round($total_ele_up, 0) ." m"; + $total_ele_down = round($total_ele_down, 0) ." m"; + } + + $avg_speed = convertSpeed($avg_speed,$uomspeed,true); + + if ($showW == true) + { + $wpoints = getWayPoints($gpx); + foreach ($wpoints as $p) { + $waypoints .= '['.number_format ( (float)$p[0] , 7 , '.' , '' ).','.number_format ( (float)$p[1] , 7 , '.' , '' ).',\''.unescape($p[4]).'\',\''.unescape($p[5]).'\',\''.unescape($p[7]).'\'],'; + } + } + + $p="/(,|,null,)$/"; + + $points_maps = preg_replace($p, "", $points_maps); + + $points_graph_dist = preg_replace($p, "", $points_graph_dist); + $points_graph_ele = preg_replace($p, "", $points_graph_ele); + $points_graph_speed = preg_replace($p, "", $points_graph_speed); + $points_graph_hr = preg_replace($p, "", $points_graph_hr); + $points_graph_cad = preg_replace($p, "", $points_graph_cad); + $points_graph_grade = preg_replace($p, "", $points_graph_grade); + + $waypoints = preg_replace($p, "", $waypoints); + + if (preg_match("/^(0,?)+$/", $points_graph_dist)) + $points_graph_dist = ""; + + if (preg_match("/^(0,?)+$/", $points_graph_ele)) + $points_graph_ele = ""; + + if (preg_match("/^(0,?)+$/", $points_graph_speed)) + $points_graph_speed = ""; + + if (preg_match("/^(0,?)+$/", $points_graph_hr)) + $points_graph_hr = ""; + + if (preg_match("/^(0,?)+$/", $points_graph_cad)) + $points_graph_cad = ""; + + if (preg_match("/^(0,?)+$/", $points_graph_grade)) + $points_graph_grade = ""; + + + } + + $ngimgs_data = ''; + if ( $ngGalleries != '' || $ngImages != '' ) + { + + //print_r($points); + + $ngimgs = getNGGalleryImages($ngGalleries, $ngImages, $points_x_time, $points_x_lat, $points_x_lon, $dtoffset, $error); + $ngimgs_data =''; + foreach ($ngimgs as $img) { + $data = $img['data']; + $data = str_replace("\n","",$data); + $ngimgs_data .= ''.$data.''; + } + } + + if (!($skipcache == true)) + { + @file_put_contents($gpxcache, + serialize(array( "points_maps" => $points_maps, + "points_x_time" => $points_x_time, + "points_x_lat" => $points_x_lat, + "points_x_lon" => $points_x_lon, + "points_graph_dist" => $points_graph_dist, + "points_graph_ele" => $points_graph_ele, + "points_graph_speed" => $points_graph_speed, + "points_graph_hr" => $points_graph_hr, + "points_graph_cad" => $points_graph_cad, + "points_graph_grade" => $points_graph_grade, + "waypoints" => $waypoints, + "max_ele" => $max_ele, + "min_ele" => $min_ele, + "total_ele_up" => $total_ele_up, + "total_ele_down" => $total_ele_down, + "avg_speed" => $avg_speed, + "tot_len" => $tot_len, + "max_time" => $max_time, + "min_time" => $min_time + ) + ), + LOCK_EX); + @chmod($gpxcache,0755); + } + + $hideGraph = ($gh == "0" || $gh == "0px"); + + global $post; + $r = $post->ID."_".rand(1,5000000); + + $output = ' +
+
+
+ +
+ '. $error .' + '; + + // print summary + if ($summary=='true' && ( $points_graph_speed != '' || $points_graph_ele != '' || $points_graph_dist != '') ) + { + + $output .= "
"; + if ($points_graph_dist != '' && $p_tot_len == 'true') + { + $output .= "".__("Total distance", "wp-gpx-maps").": $tot_len
"; + } + if ($points_graph_ele != '') + { + if ($p_max_ele == 'true') + $output .= "".__("Max elevation", "wp-gpx-maps").": $max_ele
"; + if ($p_min_ele == 'true') + $output .= "".__("Min elevation", "wp-gpx-maps").": $min_ele
"; + if ($p_total_ele_up == 'true') + $output .= "".__("Total climbing", "wp-gpx-maps").": $total_ele_up
"; + if ($p_total_ele_down == 'true') + $output .= "".__("Total descent", "wp-gpx-maps").": $total_ele_down
"; + } + if ($points_graph_speed != '' && $p_avg_speed == 'true') + { + $output .= "".__("Average speed", "wp-gpx-maps").": $avg_speed
"; + } + if ($p_total_time == 'true' && $max_time > 0) + { + $time_diff = date("H:i:s", ($max_time - $min_time)); + $output .= "".__("Total Time", "wp-gpx-maps").": $time_diff
"; + } + $output .= "
"; + } + + // print download link + if ($download=='true' && $gpxurl != '') + { + if ($isGpxUrl == true) + { + + } + else + { + $gpxurl = get_bloginfo('url').$gpxurl; + } + $output.="".__("Download", "wp-gpx-maps").""; + } + + return $output; +} + +function convertSeconds($s) +{ + if ($s ==0) + return 0; + $s = 1.0 / $s; + $_sSecT = $s * 60; //sec/km + $_sMin = floor ( $_sSecT / 60 ); + $_sSec = $_sSecT - $_sMin * 60; + return $_sMin + $_sSec / 100; +} + +function convertSpeed($speed,$uomspeed, $addUom = false) +{ + + $uom = ''; + + if ($uomspeed == '5') // knos + { + $speed *= 1.94384449; + $uom = " knos"; + } + else if ($uomspeed == '4') // min/mi + { + $speed = convertSeconds($speed * 0.037282272); + $uom = " min/mi"; + } + else if ($uomspeed == '3') // min/km + { + $speed = convertSeconds($speed * 0.06); + $uom = " min/km"; + } + else if ($uomspeed == '2') // miles/h + { + $speed *= 2.2369362920544025; + $uom = " mi/h"; + } + else if ($uomspeed == '1') // km/h + { + $speed *= 3.6; + $uom = " km/h"; + } + else // dafault m/s + { + $uom = " m/s"; + } + + if ($addUom == true) + { + return number_format ( $speed , 2 , '.' , '' ) . $uom; + } + else + { + return number_format ( $speed , 2 , '.' , '' ); + } + +} + +function downloadRemoteFile($remoteFile) +{ + try + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, str_replace(' ', '%20', $remoteFile)); + curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); + curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5); + curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); + $resp = curl_exec($ch); + curl_close($ch); + $tmpfname = tempnam ( '/tmp', 'gpx' ); + + $fp = fopen($tmpfname, "w"); + fwrite($fp, $resp); + fclose($fp); + + return $tmpfname; + } catch (Exception $e) { + return ''; + } +} + +function unescape($value) +{ + $value = str_replace("'", "\'", $value); + $value = str_replace(array("\n","\r"), "", $value); + return $value; +} + +function WP_GPX_Maps_install() { + add_option("wpgpxmaps_width", '100%', '', 'yes'); + add_option("wpgpxmaps_graph_height", '200px', '', 'yes'); + add_option("wpgpxmaps_height", '450px', '', 'yes'); + add_option('wpgpxmaps_map_type','HYBRID','','yes'); + add_option('wpgpxmaps_show_waypoint','','','yes'); + add_option('wpgpxmaps_show_speed','','','yes'); + add_option('wpgpxmaps_pointsoffset','10','','yes'); + add_option('wpgpxmaps_donotreducegpx','true','','yes'); + add_option("wpgpxmaps_unit_of_measure", '0', '', 'yes'); + add_option("wpgpxmaps_unit_of_measure_speed", '0', '', 'yes'); + add_option("wpgpxmaps_graph_line_color", '#3366cc', '', 'yes'); + add_option("wpgpxmaps_graph_line_color_speed", '#ff0000', '', 'yes'); + add_option("wpgpxmaps_map_line_color", '#3366cc', '', 'yes'); + add_option("wpgpxmaps_graph_line_color_cad", '#beecff', '', 'yes'); + add_option("wpgpxmaps_graph_offset_from1", '', '', 'yes'); + add_option("wpgpxmaps_graph_offset_to1", '', '', 'yes'); + add_option("wpgpxmaps_graph_offset_from2", '', '', 'yes'); + add_option("wpgpxmaps_graph_offset_to2", '', '', 'yes'); + add_option("wpgpxmaps_map_start_icon", '', '', 'yes'); + add_option("wpgpxmaps_map_end_icon", '', '', 'yes'); + add_option("wpgpxmaps_map_current_icon", '', '', 'yes'); + add_option("wpgpxmaps_map_waypoint_icon", '', '', 'yes'); + add_option("wpgpxmaps_map_nggallery", '', '', 'yes'); + add_option("wpgpxmaps_show_hr", '', '', 'yes'); + add_option("wpgpxmaps_graph_line_color_hr", '#ff77bd', '', 'yes'); + add_option('wpgpxmaps_show_cadence','','','yes'); + add_option('wpgpxmaps_zoomonscrollwheel','','','yes'); + add_option('wpgpxmaps_download','','','yes'); + add_option('wpgpxmaps_summary','','','yes'); + add_option('wpgpxmaps_skipcache','','','yes'); +} + +function WP_GPX_Maps_remove() { + delete_option('wpgpxmaps_width'); + delete_option('wpgpxmaps_graph_height'); + delete_option('wpgpxmaps_height'); + delete_option('wpgpxmaps_map_type'); + delete_option('wpgpxmaps_show_waypoint'); + delete_option('wpgpxmaps_show_speed'); + delete_option('wpgpxmaps_pointsoffset'); + delete_option('wpgpxmaps_donotreducegpx'); + delete_option('wpgpxmaps_unit_of_measure'); + delete_option('wpgpxmaps_unit_of_measure_speed'); + delete_option('wpgpxmaps_graph_line_color'); + delete_option('wpgpxmaps_map_line_color'); + delete_option('wpgpxmaps_graph_line_color_speed'); + delete_option('wpgpxmaps_graph_offset_from1'); + delete_option('wpgpxmaps_graph_offset_to1'); + delete_option('wpgpxmaps_graph_offset_from2'); + delete_option('wpgpxmaps_graph_offset_to2'); + delete_option('wpgpxmaps_map_start_icon'); + delete_option('wpgpxmaps_map_end_icon'); + delete_option('wpgpxmaps_map_current_icon'); + delete_option('wpgpxmaps_map_waypoint_icon'); + delete_option('wpgpxmaps_map_nggallery'); + delete_option('wpgpxmaps_show_hr'); + delete_option('wpgpxmaps_graph_line_color_hr'); + delete_option('wpgpxmaps_show_cadence'); + delete_option('wpgpxmaps_graph_line_color_cad'); + delete_option('wpgpxmaps_zoomonscrollwheel'); + delete_option('wpgpxmaps_download'); + delete_option('wpgpxmaps_summary'); + delete_option('wpgpxmaps_skipcache'); +} + +?> diff --git a/wp-gpx-maps_admin.php b/wp-gpx-maps_admin.php index 3db8f57..dc95500 100644 --- a/wp-gpx-maps_admin.php +++ b/wp-gpx-maps_admin.php @@ -114,9 +114,11 @@ function WP_GPX_Maps_html_page() {
  • glinecolorspeed: speed line color (default is #ff0000)
  • glinecolorhr: heart rate line color (default is #ff77bd)
  • glinecolorcad: cadence line color (default is #beecff)
  • +
  • glinecolorgrade: grade line color (default is #beecff)
  • showspeed: show speed inside the chart (default is FALSE)
  • showhr: show heart rate inside the chart (default is FALSE)
  • showcad: show cadence inside the chart (default is FALSE)
  • +
  • showgrade: show grade inside the chart (default is FALSE)
  • uomspeed: the unit of measure of speed are: 0, 1, 2 (0 = m/s, 1 = km/h, 2 = miles/h, 3 = min/km, 4 = min/miles)
  • chartFrom1: minimun value for altitude chart
  • chartTo1: maxumin value for altitude chart
  • diff --git a/wp-gpx-maps_admin_settings.php b/wp-gpx-maps_admin_settings.php index f59396a..74ab077 100644 --- a/wp-gpx-maps_admin_settings.php +++ b/wp-gpx-maps_admin_settings.php @@ -18,10 +18,11 @@ $showSpeed = get_option('wpgpxmaps_show_speed'); $showHr = get_option('wpgpxmaps_show_hr'); $showCad = get_option('wpgpxmaps_show_cadence'); + $showGrade = get_option('wpgpxmaps_show_grade'); $zoomonscrollwheel = get_option("wpgpxmaps_zoomonscrollwheel"); $download = get_option("wpgpxmaps_download"); $skipcache = get_option("wpgpxmaps_skipcache"); - + $summary = get_option("wpgpxmaps_summary"); $tot_len = get_option("wpgpxmaps_summary_tot_len"); $min_ele = get_option("wpgpxmaps_summary_min_ele"); @@ -311,8 +312,6 @@ - - Show Cadence (where aviable): @@ -325,12 +324,28 @@ + + + + Show Grade: + + onchange="this.value = (this.checked)" /> Show Grade - BETA +
    + (Grade values depends on your gps accuracy. If you have a poor gps accuracy they might be totally wrong!) + + + + Grade line color: + + + +

    - + " />

    diff --git a/wp-gpx-maps_utils.php b/wp-gpx-maps_utils.php index 4452e74..7f810b1 100644 --- a/wp-gpx-maps_utils.php +++ b/wp-gpx-maps_utils.php @@ -118,6 +118,7 @@ unset($points->speed[$i]); unset($points->hr[$i]); unset($points->cad[$i]); + unset($points->grade[$i]); } } } @@ -137,6 +138,8 @@ $points->speed = array(); $points->hr = array(); $points->cad = array(); + $points->grade = array(); + $points->maxTime = 0; $points->minTime = 0; $points->maxEle = 0; @@ -191,6 +194,7 @@ $speed = (float)$trkpt->speed; $hr = 0; $cad = 0; + $grade = 0; if (isset($trkpt->extensions)) { @@ -226,11 +230,12 @@ array_push($points->speed, 0); array_push($points->hr, $hr); array_push($points->cad, $cad); + array_push($points->grade, $grade); $lastLat=$lat; $lastLon=$lon; $lastEle=$ele; - $lastTime=$time; + $lastTime=$time; } else { @@ -251,14 +256,20 @@ if ($ele != 0 && $lastEle != 0) { + + $deltaEle = (float)($ele - $lastEle); + if ((float)$ele > (float)$lastEle) { - $points->totalEleUp += (float)($ele - $lastEle); + $points->totalEleUp += $deltaEle; } else { - $points->totalEleDown += (float)($lastEle - $ele); + $points->totalEleDown += $deltaEle; } + + $grade = $deltaEle / $offset * 100; + } array_push($speedBuffer, $speed); @@ -286,6 +297,7 @@ array_push($points->speed, (float)round($avgSpeed, 1) ); array_push($points->hr, $hr); array_push($points->cad, $cad); + array_push($points->grade, (float)round($grade, 2) ); } else @@ -308,7 +320,8 @@ array_push($points->dist, null); array_push($points->speed, null); array_push($points->hr, null); - array_push($points->cad, null); + array_push($points->cad, null); + array_push($points->grade, null); unset($trkpts); @@ -325,7 +338,8 @@ array_pop($points->dist, null); array_pop($points->speed, null); array_pop($points->hr, null); - array_pop($points->cad, null); + array_pop($points->cad, null); + array_pop($points->grade, null); $_time = array_filter($points->dt); $_ele = array_filter($points->ele); @@ -374,6 +388,7 @@ array_push($points->speed, 0 ); array_push($points->hr, 0 ); array_push($points->cad, 0 ); + array_push($points->grade, 0 ); $lastLat=$lat; $lastLon=$lon; } @@ -393,6 +408,7 @@ array_push($points->speed, 0 ); array_push($points->hr, 0 ); array_push($points->cad, 0 ); + array_push($points->grade, 0 ); } else { @@ -437,6 +453,7 @@ array_push($points->speed, 0 ); array_push($points->hr, 0 ); array_push($points->cad, 0 ); + array_push($points->grade, 0 ); $lastLat=$lat; $lastLon=$lon; } @@ -456,6 +473,7 @@ array_push($points->speed, 0 ); array_push($points->hr, 0 ); array_push($points->cad, 0 ); + array_push($points->grade, 0 ); } else {