From 5edb287f65b2a8cab98b2ab4d5f6c6a99b78852b Mon Sep 17 00:00:00 2001 From: Sanj Date: Wed, 22 Feb 2012 14:39:21 +0530 Subject: [PATCH 01/10] adding / moving points works --- chaloBEST/mumbai/models.py | 3 +- chaloBEST/static/js/editstops.js | 62 +++++++++++++++++++++++++++++--- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/chaloBEST/mumbai/models.py b/chaloBEST/mumbai/models.py index 3e8cc10..b6fb7ec 100644 --- a/chaloBEST/mumbai/models.py +++ b/chaloBEST/mumbai/models.py @@ -147,8 +147,9 @@ class Stop(models.Model): a.delete() for a in data['alternative_names'].split(","): alt_name = AlternativeName() - alt_name.name = a['name'] + alt_name.name = a alt_name.typ = 'common' + alt_name.content_object = self alt_name.save() self.alt_names.add(alt_name) diff --git a/chaloBEST/static/js/editstops.js b/chaloBEST/static/js/editstops.js index 72ac626..96d0336 100644 --- a/chaloBEST/static/js/editstops.js +++ b/chaloBEST/static/js/editstops.js @@ -120,6 +120,7 @@ var API_BASE = "/1.0/", } $('#formCol').find("#stopForm").remove(); + $('#formCol').empty(); $('#formCol').append($form); }); @@ -141,13 +142,15 @@ var API_BASE = "/1.0/", function getStopForm(stop, geom) { // console.log(stop); - console.log(geom); + // console.log(geom); var lon = !$.isEmptyObject(geom) ? geom.coordinates[0] : ''; var lat = !$.isEmptyObject(geom) ? geom.coordinates[1] : ''; var $div = $('
'); var $displayName = $('
').text(stop.display_name).appendTo($div); + var $slug = $('
').addClass("stopSlug").text(stop.slug).appendTo($div); var $routes = $('
').text("Routes: " + stop.routes).appendTo($div); var $form = $('
').attr("id", "stopForm").appendTo($div); + var $display_name_input = $('') .val(stop.display_name) .attr("id", "displayName") @@ -189,8 +192,11 @@ var API_BASE = "/1.0/", //console.log(geojsonString); var url = API_BASE + "stop/" + stop.slug + "?srid=3857"; $.post(url, {'geojson': geojsonString}, function(response) { - console.log(response); - }); + if (response.errors) { + alert("error saving"); + } + //console.log(response); + }, "json"); }); return $div; } @@ -213,8 +219,43 @@ var API_BASE = "/1.0/", // map.addLayer(vector_layer); map.addLayers(layers); map.setCenter(center, 12); - - mapControl = new OpenLayers.Control.SelectFeature(layers[1]); + var navigationControl = new OpenLayers.Control.Navigation({ + defaultDblClick: function(event) { + //var xy = event.xy; + var lonlat = map.getLonLatFromPixel(event.xy); + var $stopForm = $('#stopForm'); + if ($stopForm.length === 0) { + return; + } + var slug = $('#formCol').find('.stopSlug').text(); + //console.log("slug", slug); + var stop = $('.selectedStop').data("properties"); + $('.selectedStop').data("geometry", { + 'coordinates': [lonlat.x, lonlat.y] + }); + var hasPoint = $('.selectedStop').hasClass('has_point'); + $('#lon').val(lonlat.lon); + $('#lat').val(lonlat.lat); + $stopForm.submit(); + if (hasPoint) { + var feature = getStopFromSlug(slug); + feature.move(lonlat); + } else { + var pt = new OpenLayers.Geometry.Point(lonlat.lon, lonlat.lat); + var feature = new OpenLayers.Feature.Vector(pt, stop); + //console.log("trying to add", feature); + jsonLayer.addFeatures([feature]); + mapControl.select(feature); + } +// console.log(lonlat); + return; + } + }); + map.addControl(navigationControl); + mapControl = new OpenLayers.Control.SelectFeature(layers[1], { + clickout: false, + toggle: true + }); zoomControl = new OpenLayers.Control.ZoomToMaxExtent(); map.addControl(mapControl); // map.addControl(zoomControl); @@ -229,9 +270,18 @@ var API_BASE = "/1.0/", function onFeatureSelect(e) { //alert(arguments); //console.log(feature); + // console.log(e.feature); var slug = e.feature.attributes.slug; //alert("selected " + slug); highlightStop(slug); + var stop = e.feature.attributes; + var geom = { + 'coordinates': [e.feature.geometry.x, e.feature.geometry.y] + }; + var $form = getStopForm(stop, geom); + $('#stopForm').remove(); + $('#formCol').empty(); + $('#formCol').append($form); // var matchedStops = $('.' + slug); // matchedStops.click(); // matchedStops.addClass('highlightedStop'); @@ -242,6 +292,8 @@ var API_BASE = "/1.0/", var slug = e.feature.attributes.slug; //alert("unselected " + slug); unhighlightStop(slug); + $('#stopForm').remove(); + $('#formCol').empty(); // var matchedStops = $('.' + slug); // matchedStops.removeClass('selectedStop'); } From ae87b507d36b87fcfd16248f996eedc934441ff9 Mon Sep 17 00:00:00 2001 From: Sanj Date: Wed, 22 Feb 2012 15:43:29 +0530 Subject: [PATCH 02/10] css --- chaloBEST/static/css/editstops.css | 36 +++++++++++++++++++++++++++--- chaloBEST/static/js/editstops.js | 24 ++++++++++++++++---- chaloBEST/templates/editstops.html | 4 ++++ 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/chaloBEST/static/css/editstops.css b/chaloBEST/static/css/editstops.css index c388a21..7d65385 100644 --- a/chaloBEST/static/css/editstops.css +++ b/chaloBEST/static/css/editstops.css @@ -1,6 +1,7 @@ html, body { width: 100%; height: 100%; + font-family: Arial, Helvetica, Verdana, sans-serif; } #wrapper { @@ -38,6 +39,7 @@ html, body { .listItem { cursor: pointer; + font-size: 13px; } .tabButton { @@ -49,12 +51,20 @@ html, body { padding: 4px; } + +.listItemText { + display: block; +} + .selectedListItem .listItemText { - color: blue; + background: #666; + color: #fff; } .selectedStop { - color: blue !important; + background: #ffff00; + color: #666 !important; + font-weight: bold; } .clear { @@ -71,10 +81,30 @@ html, body { ul { list-style-type: none; - padding-left: 4px; + padding: 4px; + font-size: 12px; } .highlightedStop { background-color: #FFFF00; } +#formCol { + font-size: 13px; +} + +#formCol div { + margin-bottom: 4px; +} + +.stopSlug { + font-style: italic; +} + +#stopForm label { + display: block; +} + +#stopForm input { + width: 90%; +} diff --git a/chaloBEST/static/js/editstops.js b/chaloBEST/static/js/editstops.js index 96d0336..c567b5d 100644 --- a/chaloBEST/static/js/editstops.js +++ b/chaloBEST/static/js/editstops.js @@ -43,10 +43,19 @@ var API_BASE = "/1.0/", if ($target.data("loading")) { return; } - $('.selectedListItem').find(".stopsList").hide(); + if ($target.hasClass("selectedListItem")) { + $target.find(".stopsList").hide().remove(); + $target.removeClass("selectedListItem"); + return; + } + $('.selectedListItem').find(".stopsList").hide().remove(); $('.selectedListItem').removeClass("selectedListItem"); $target.addClass("selectedListItem"); if ($target.data("hasList")) { + var $stopsList = $target.find(".stopsList"); + $stopsList.slideDown(); + return; + /* var $stopsList = $target.find(".stopsList"); if (!$stopsList.is(":visible")) { $stopsList.slideDown(); @@ -54,7 +63,8 @@ var API_BASE = "/1.0/", $stopsList.slideUp(); $target.removeClass("selectedListItem"); } - return; + return; + */ } var url = API_BASE + name + "/" + $target.find(".listItemText").text(); $target.data("loading", true); @@ -77,7 +87,7 @@ var API_BASE = "/1.0/", var maxExtent = jsonLayer.getDataExtent(); map.zoomToExtent(maxExtent); $target.append($stopsList); - $target.data("hasList", true); + // $target.data("hasList", true); $target.data("loading", false); }); }); @@ -149,8 +159,9 @@ var API_BASE = "/1.0/", var $displayName = $('
').text(stop.display_name).appendTo($div); var $slug = $('
').addClass("stopSlug").text(stop.slug).appendTo($div); var $routes = $('
').text("Routes: " + stop.routes).appendTo($div); +// var $formLabel = $("
").text("Edit:").appendTo($div); var $form = $('').attr("id", "stopForm").appendTo($div); - + var $display_name_label = $('