diff --git a/client/bicyclesim-meteor.html b/client/bicyclesim-meteor.html
index 73ecedf..c1521fb 100644
--- a/client/bicyclesim-meteor.html
+++ b/client/bicyclesim-meteor.html
@@ -192,6 +192,8 @@
{{#if can_edit}}{{/if}}
{{/each}}
- {{#if can_edit}}
{{/if}}
+ {{#if can_edit}}
+
+ {{/if}}
diff --git a/client/bicyclesim-meteor.styl b/client/bicyclesim-meteor.styl
index 6874fe9..66d5c71 100644
--- a/client/bicyclesim-meteor.styl
+++ b/client/bicyclesim-meteor.styl
@@ -157,16 +157,16 @@ a.thumbnail
ol.points
margin 0
li
- font-size 0.9em
+ font-size 0.85em
border-top 1px solid #ccc
padding 2px 0px
list-style-position inside
- &:first-child, &.new-point
+ &:first-child, &.actions
border-top 0
- &.new-point
+ &.actions
list-style none
span.location
- font-size 0.8em
+ font-size 0.85em
a.remove
float right
diff --git a/client/edit.js b/client/edit.js
index b6f4095..13e3a9b 100644
--- a/client/edit.js
+++ b/client/edit.js
@@ -12,6 +12,7 @@ function new_point(latlng) {
add_point(latlng, num, true);
++num;
$('.sidebar').animate({scrollTop: $('.sidebar-inner').height()}, 'fast');
+ Session.set('saved', false);
});
}
@@ -92,6 +93,10 @@ Template.points.can_edit = function () {
return (route && Meteor.user() && route.owner === Meteor.user()._id);
};
+Template.points.saved = function () {
+ return Session.get('saved');
+};
+
Template.points.helpers(helpers);
Template.points.events({
@@ -101,11 +106,17 @@ Template.points.events({
'click a.remove': function () {
Meteor.call('remove_point', this._id, function () {
full_clear_required = true;
+ Session.set('saved', false);
});
},
- 'click .new-point button': function () {
+ 'click .new-point': function () {
new_point(maps.getLatLng());
},
+ 'click .save': function () {
+ Meteor.call('update_route', Session.get('route'), function () {
+ Session.set('saved', true);
+ });
+ },
'change #points-autoadd': function (event) {
Session.set('points-autoadd', event.currentTarget.checked);
}
@@ -124,6 +135,7 @@ Meteor.autorun(function () {
if (Session.equals('page', 'edit') && Session.get('route')) {
debug('sivu tai route vaihtui, route: ' + Session.get('route'));
full_clear_required = true;
+ Session.set('saved', true);
Meteor.deps.isolate(function () {
var route = Routes.findOne({_id: Session.get('route')});
diff --git a/server/main.js b/server/main.js
index 15fccab..854a162 100644
--- a/server/main.js
+++ b/server/main.js
@@ -41,7 +41,7 @@ Meteor.methods({
var route = Routes.findOne({_id: route_id});
if (!route) return;
- var point_id = Points.insert({latlng: latlng, route: route_id, distance: 0, next: null});
+ var point_id = Points.insert({latlng: latlng, heading: 0, route: route_id, distance: 0, next: null});
// Add new point after last point.
Points.update({route: route_id, next: null, _id: {$ne: point_id}}, {$set: {next: point_id}});
@@ -49,7 +49,15 @@ Meteor.methods({
// If route didn't have any point, update first point,
Routes.update({_id: route_id, first: null}, {$set: {first: point_id}});
- update_route(route_id);
+ // Update distance and heading of previous point
+ var prev = Points.findOne({next: point_id});
+ if (prev) {
+ heading = computeFinalBearing(prev.latlng, latlng);
+ distance = computeDistance(prev.latlng, latlng);
+ Points.update({next: point_id}, {$set: {heading: heading, distance: distance}});
+ }
+
+ // update_route(route_id);
},
remove_point: function (point_id) {
var point = Points.findOne({_id: point_id});
@@ -61,6 +69,9 @@ Meteor.methods({
Points.remove({_id: point_id});
- update_route(point.route);
+ // update_route(point.route);
+ },
+ update_route: function (route_id) {
+ update_route(route_id);
}
});