diff options
-rw-r--r-- | save-html.c | 18 | ||||
-rw-r--r-- | theme/list_lib.js | 31 |
2 files changed, 44 insertions, 5 deletions
diff --git a/save-html.c b/save-html.c index 1efc6b96a..0288d447c 100644 --- a/save-html.c +++ b/save-html.c @@ -122,6 +122,21 @@ void put_HTML_samples(struct membuffer *b, struct dive *dive) put_string(b, "],"); } +void put_HTML_coordinates(struct membuffer *b, struct dive *dive) +{ + degrees_t latitude = dive->latitude; + degrees_t longitude = dive->longitude; + + //don't put coordinates if in (0,0) + if (!latitude.udeg && !longitude.udeg) + return; + + put_string(b, "\"coordinates\":{"); + put_degrees(b, latitude, "\"lat\":\"", "\","); + put_degrees(b, longitude, "\"lon\":\"", "\","); + put_string(b, "},"); +} + void put_HTML_date(struct membuffer *b, struct dive *dive, const char *pre, const char *post) { struct tm tm; @@ -207,6 +222,7 @@ void write_one_dive(struct membuffer *b, struct dive *dive, const char *photos_d put_HTML_date(b, dive, "\"date\":\"", "\","); put_HTML_time(b, dive, "\"time\":\"", "\","); write_attribute(b, "location", dive->location); + put_HTML_coordinates(b, dive); put_format(b, "\"rating\":%d,", dive->rating); put_format(b, "\"visibility\":%d,", dive->visibility); put_format(b, "\"dive_duration\":\"%u:%02u min\",", @@ -390,7 +406,7 @@ void export_translation(const char *file_name) write_attribute(b, "Events", translate("gettextFromC", "Events")); write_attribute(b, "Name", translate("gettextFromC", "Name")); write_attribute(b, "Value", translate("gettextFromC", "Value")); - + write_attribute(b, "Coordinates", translate("gettextFromC", "Coordinates")); write_attribute(b, "Dive_Status", translate("gettextFromC", "Dive Status")); put_format(b, "}"); diff --git a/theme/list_lib.js b/theme/list_lib.js index abd790178..c5171ce11 100644 --- a/theme/list_lib.js +++ b/theme/list_lib.js @@ -208,7 +208,7 @@ function getExpanded(dive) { var res = '<table><tr><td class="words">' + translate.Date + ': </td><td>' + dive.date + '</td><td class="words"> ' + translate.Time + ': </td><td>' + dive.time + - '</td><td class="words"> ' + translate.Location + ': </td><td>' + '<a onclick=\"Search_list_Modules(\'' + dive.location + '\', {location:true, divemaster:false, buddy:false, notes:false, tags:false,})\">' + dive.location + '</a>' + + '</td><td class="words"> ' + translate.Locaiton + ': </td><td>' + '<a onclick=\"Search_list_Modules(\'' + dive.location + '\', {location:true, divemaster:false, buddy:false, notes:false, tags:false,})\">' + dive.location + '</a>' + getDiveCoor(dive) + '</td></tr></table><table><tr><td class="words">' + translate.Rating + ':</td><td>' + putRating(dive.rating) + '</td><td class="words"> ' + translate.Visibility + ':</td><td>' + putRating(dive.visibility) + '</td></tr></table>' + @@ -499,7 +499,7 @@ Set.prototype.intersect = function(another_set) } var result = new Array(); for (var i = 0; i < another_set.keys.length; i++) { - if(this.contains(another_set.keys[i])) { + if (this.contains(another_set.keys[i])) { result.push(another_set.keys[i]); } }; @@ -896,6 +896,21 @@ function get_bookmarks_HTML(dive) return result; } +function getDiveCoorString(coordinates){ + res = ""; + lat = coordinates.lat; + lon = coordinates.lon; + res += float_to_deg(lat) + ' , ' + float_to_deg(lon); + return res; +} + +function getDiveCoor(dive) +{ + if (!dive.coordinates) + return ""; + return '<td class="words"> ' + translate.Coordinates + ': </td><td>' + '<a href="http://www.google.com/maps/@' + dive.coordinates.lat + ',' + dive.coordinates.lon + ',13z" target="_blank">' + getDiveCoorString(dive.coordinates) + '</a></td>'; +} + /** *Return HTML main data of a dive */ @@ -903,8 +918,8 @@ function get_dive_HTML(dive) { var res = '<h2 class="det_hed">' + translate.Dive_information + '</h2><table><tr><td class="words">' + translate.Date + ': </td><td>' + dive.date + '</td><td class="words"> ' + translate.Time + ': </td><td>' + dive.time + - '</td><td class="words"> ' + translate.Location + ': </td><td>' + '<a onclick=\"Search_list_Modules(\'' + dive.location + '\', {location:true, divemaster:false, buddy:false, notes:false, tags:false,})\">' + dive.location + '</a>' + - '</td></tr></table><table><tr><td class="words">' + translate.Rating + ':</td><td>' + putRating(dive.rating) + + '</td><td class="words"> ' + translate.Locaiton + ': </td><td>' + '<a onclick=\"Search_list_Modules(\'' + dive.location + '\', {location:true, divemaster:false, buddy:false, notes:false, tags:false,})\">' + dive.location + '</a></td>' + getDiveCoor(dive) + + '</tr></table><table><tr><td class="words">' + translate.Rating + ':</td><td>' + putRating(dive.rating) + '</td><td class="words"> ' + translate.Visibility + ':</td><td>' + putRating(dive.visibility) + '</td></tr></table>' + '<table><tr><td class="words">' + translate.Air_Temp + ': </td><td>' + dive.temperature.air + @@ -1000,6 +1015,14 @@ function int_to_time(n) return Math.floor((n) / 60) + ":" + format_two_digit((n) % (60)) + " min"; } +function float_to_deg(flt){ + var deg = 0 | flt; + flt = (flt < 0 ? flt =- flt : flt); + var min = 0 | flt % 1 * 60; + var sec = (0 | flt * 60 % 1 * 6000) / 100; + return deg + "° " + min + "' " + sec + "\""; +} + /** *Main canvas draw function *this calls the axis and grid initialization functions. |