Skip to content

Commit

Permalink
Merged with master
Browse files Browse the repository at this point in the history
  • Loading branch information
jrasky committed Oct 30, 2012
2 parents 97793cf + feb28e6 commit c851cfb
Show file tree
Hide file tree
Showing 15 changed files with 144 additions and 26,269 deletions.
20,709 changes: 0 additions & 20,709 deletions geocamTiePoint/static/external/js/ember-1.0.pre.js

This file was deleted.

18 changes: 0 additions & 18 deletions geocamTiePoint/static/external/js/ember-1.0.pre.min.js

This file was deleted.

4,176 changes: 0 additions & 4,176 deletions geocamTiePoint/static/external/js/ember-data.js

This file was deleted.

23 changes: 23 additions & 0 deletions geocamTiePoint/static/geocamTiePoint/css/backbone.css
Expand Up @@ -118,3 +118,26 @@ input#locationSearch {
.error{ .error{
color: red; color: red;
} }

.navbar .nav li a {
padding-bottom: 0px;
}

p.pull-right.navbar-text {
padding-top: 15px;
}

a.btn-primary {
color: #ffffff;
}

.import-requirements {
padding-left: 15px;
font-size: 0.9em;
color: #888888;
padding-bottom: 10px;
}

#newOverlayFile {
padding-bottom: 10px;
}
10 changes: 7 additions & 3 deletions geocamTiePoint/static/geocamTiePoint/js/backbone/models.js
Expand Up @@ -147,11 +147,15 @@ $(function($) {
var model = this; var model = this;
model.trigger('before_warp'); model.trigger('before_warp');
saveOptions = { saveOptions = {
error: function(){ error: function(model, response){
if ( response.readyState < 4 ) {
model.trigger('warp_server_unreachable');
} else {
model.trigger('warp_server_error');
}
if (options.error) options.error(); if (options.error) options.error();
model.trigger('warp_error');
}, },
success: function() { success: function(model, response) {
if (options.success) options.success(); if (options.success) options.success();
model.trigger('warp_success'); model.trigger('warp_success');
}, },
Expand Down
155 changes: 63 additions & 92 deletions geocamTiePoint/static/geocamTiePoint/js/backbone/views.js
Expand Up @@ -66,8 +66,8 @@ $(function($) {
app.views.HomeView = app.views.View.extend({ app.views.HomeView = app.views.View.extend({
template: '<div style="max-width: 800px">'+ template: '<div style="max-width: 800px">'+
'<p>MapFasten helps you quickly align an image or PDF with a map, '+ '<p>MapFasten helps you quickly align an image or PDF with a map, '+
'creating a shareable map overlay that you can display in the Google Maps'+ 'creating a shareable map layer that you can display in maps ' +
'API or in KML and combine with other layers.</p>'+ 'based on the Google Maps API and combine with other layers.</p>'+
'<p><a class="welcomeEntry" href="#overlays/">Let\'s get started &gt;&gt;</a></p>'+ '<p><a class="welcomeEntry" href="#overlays/">Let\'s get started &gt;&gt;</a></p>'+
'</div>', '</div>',
}); });
Expand Down Expand Up @@ -252,60 +252,6 @@ $(function($) {
}, this)); }, this));
}, },


initZoomHotkey: function() {
var zoomFactor = 4;
var originalZoom = null;
var view = this;
var zoomed = false;
var mousePosition = null;
var mouseDown = null;

function enhance() {
console.log('ENHANCE!');
originalZoom = view.gmap.getZoom();
var targetZoom = Math.max(originalZoom + zoomFactor,
view.model.maxZoom());
//var targetZoom = view.model.maxZoom();
view.gmap.setZoom(targetZoom);
view.gmap.panTo(mousePosition);
}

function unenhance() {
view.gmap.setZoom(originalZoom);
}

google.maps.event.addListener(view.gmap, 'mousemove', function(e) {
mousePosition = e.latLng;
});

google.maps.event.addListener(view.gmap, 'mouseout', function(e) {
mousePosition = null;
});
google.maps.event.addListener(view.gmap, 'mousedown', function(e) {
mouseDown = true;
});
google.maps.event.addListener(view.gmap, 'mouseup', function(e) {
mouseDown = false;
});

$(window).keydown(function(e) {
//console.log(e.which);
if (mousePosition && ! mouseDown &&
e.which === 90 && // z key
! zoomed) {
zoomed = true;
enhance();
}
});

$(window).keyup(function(e) {
//console.log(e.which);
if (zoomed && e.which === 90) { // z key
unenhance();
zoomed = false;
}
});
}
}); // end OverlayGoogleMapsView base class }); // end OverlayGoogleMapsView base class


app.views.ImageQtreeView = app.views.OverlayGoogleMapsView.extend({ app.views.ImageQtreeView = app.views.OverlayGoogleMapsView.extend({
Expand All @@ -323,6 +269,7 @@ $(function($) {
streetViewControl: false, streetViewControl: false,
backgroundColor: 'rgb(192, 192, 192)', backgroundColor: 'rgb(192, 192, 192)',
mapTypeControl: false, mapTypeControl: false,
draggableCursor: 'crosshair'
}); });
var gmap = app.gmap; var gmap = app.gmap;


Expand All @@ -343,7 +290,6 @@ $(function($) {
this.gmap = gmap; this.gmap = gmap;
this.drawMarkers(); this.drawMarkers();
this.trigger('gmap_loaded'); this.trigger('gmap_loaded');
//this.initZoomHotkey();
}, },


drawMarkers: function() { drawMarkers: function() {
Expand Down Expand Up @@ -387,7 +333,8 @@ $(function($) {


var mapOptions = { var mapOptions = {
zoom: 6, zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP mapTypeId: google.maps.MapTypeId.ROADMAP,
draggableCursor: 'crosshair'
}; };


var gmap = new google.maps.Map(this.$('#map_canvas')[0], var gmap = new google.maps.Map(this.$('#map_canvas')[0],
Expand Down Expand Up @@ -418,7 +365,6 @@ $(function($) {
this.drawMarkers(); this.drawMarkers();
} }
this.trigger('gmap_loaded'); this.trigger('gmap_loaded');
//this.initZoomHotkey();


/* Events and init for the qtree overlay */ /* Events and init for the qtree overlay */
this.model.on('change:points', function(){ this.model.on('change:points', function(){
Expand Down Expand Up @@ -493,16 +439,18 @@ $(function($) {
this.$('#locationSearch').focus(); this.$('#locationSearch').focus();
flicker( flicker(
function () { function () {
this.$('#locationSearch').css('background-color', '#ffc'); this.$('#locationSearch').css('background-color', '#aaf');
//this.$('#locationSearch').css('border', 'solid 4px blue').css('padding', '-2');
}, },
function () { function () {
this.$('#locationSearch').css('background-color', '#fff'); this.$('#locationSearch').css('background-color', '#fff');
// this.$('#locationSearch').css('border', 'none');
}, },
1000, 3); 500, 8);
}], }],
['Click matching landmarks on both sides to add tiepoints and align your overlay.', ['Click matching landmarks on both sides to add tiepoints and align your overlay.',
lorem], lorem],
['Use "Export" to see options for viewing your overlay in maps outside this site.', ['Use "Share" to see options for viewing your overlay in maps outside this site.',
lorem, lorem,
function () { function () {
this.$('#export').focus(); this.$('#export').focus();
Expand All @@ -524,6 +472,7 @@ $(function($) {
'<input type="text" id="locationSearch" placeholder="Location"></input>' + '<input type="text" id="locationSearch" placeholder="Location"></input>' +
'</span>' + '</span>' +
'<span class="alert instructions-prompt">'+ '<span class="alert instructions-prompt">'+
'<strong style="float:left; margin-right:1em;">Tips:</strong>'+
'<div class="btn-group floatleft" style="margin-right: 10px;">'+ '<div class="btn-group floatleft" style="margin-right: 10px;">'+
'<a id="promptPrevStep" class="btn btn-mini">&lt;&lt;</a>'+ '<a id="promptPrevStep" class="btn btn-mini">&lt;&lt;</a>'+
'<a id="promptNextStep" class="btn btn-mini">&gt;&gt;</a>'+ '<a id="promptNextStep" class="btn btn-mini">&gt;&gt;</a>'+
Expand All @@ -548,9 +497,9 @@ $(function($) {
'</div>' + '</div>' +
'<button class="btn"><label for="show_preview"><input id="show_preview" type="checkbox" checked="true"/>Show Preview</label></button>' + '<button class="btn"><label for="show_preview"><input id="show_preview" type="checkbox" checked="true"/>Show Preview</label></button>' +
'<div id="save-export" class="btn-group">'+ '<div id="save-export" class="btn-group">'+
'<button class="btn" id="export">Export</button>'+ '<button class="btn" id="export">Share</button>'+
'<button class="btn" id="save">Save</button>'+ '<button class="btn" id="save">Save</button>'+
'<span id="saveStatus" data-saving-text="Saving..." data-saved-text="Saved." data-save-error="SAVE ERROR!"></span>'+ '<span id="saveStatus" data-saving-text="Saving..." data-changed-text="Changed since last save" data-saved-text="Saved." data-server-error="Server Error" data-server-unreachable="Server unreachable"></span>'+
'</div>'+ '</div>'+
'</div>' + '</div>' +
'<div id="split_container">' + '<div id="split_container">' +
Expand Down Expand Up @@ -686,15 +635,35 @@ $(function($) {
view.zoomFit(); view.zoomFit();
}); });
$(document).keyup(function(e) { $(document).keyup(function(e) {
//console.log('key detect: ' + e.which); console.log('key detect: ' + e.which);
if (e.which === 122 || e.which === 90) { // match z or Z switch (e.which) {
zoomed = !zoomed; // match z or Z
if (zoomed) { case 122:
view.zoomMaximum(); case 90:
} else { if ( e.ctrlKey ) { // todo: command-key support for os x
view.zoomFit(); // ctrl-z: undo
} undo();
break;
}
zoomed = !zoomed;
if (zoomed) {
view.zoomMaximum();
} else {
view.zoomFit();
}
break;
case 89: // y
if (e.ctrlKey) redo();
case 46: // delete
// TODO: make this work with backspace without triggering the default (prev page) behavior
//case 8: // backspace
$('button#delete').click();
break;
default:
return true;
} }
e.preventDefault();
return false;
}); });


this.$('button#help').click(function(){ this.$('button#help').click(function(){
Expand Down Expand Up @@ -726,29 +695,23 @@ $(function($) {
$('button#save').click( function() { $('button#save').click( function() {
var button = $(this); var button = $(this);
button.data('original-text', button.text()); button.data('original-text', button.text());
button.disabled = true;
overlay.warp({ overlay.warp({
success: function(model, response) { success: function(model, response) {
button.disabled = false;
button.text("WARPED");
_.delay(function(){button.text(button.data('original-text'));}, 1000);
$('input#show_preview').attr('checked', true).change(); $('input#show_preview').attr('checked', true).change();
}, }
error: function(model, response) {
button.disabled = false;
button.text("FAILED");
_.delay(function(){button.text("save");}, 1000);
},
}); });
}); });


var saveStatus = $('#saveStatus'); var saveStatus = $('#saveStatus');
this.model.on('before_warp', function(){ this.model.on('before_warp', function(){
saveStatus.text(saveStatus.data('saving-text')); //saveStatus.text(saveStatus.data('saving-text'));
saveStatus.html('<img src="/static/geocamTiePoint/images/loading.gif">');
}).on('warp_success', function(){ }).on('warp_success', function(){
saveStatus.text(saveStatus.data('saved-text')); saveStatus.text(saveStatus.data('saved-text'));
}).on('warp_error', function(){ }).on('warp_server_error', function(){
saveStatus.text(saveStatus.data('save-error')); saveStatus.html($('<span class="error">').text(saveStatus.data('server-error')));
}).on('warp_server_unreachable', function(){
saveStatus.html($('<span class="error">').text(saveStatus.data('server-unreachable')));
}); });


$('button#export').click(function() { $('button#export').click(function() {
Expand Down Expand Up @@ -824,22 +787,27 @@ $(function($) {


}); // end SplitOverlayView }); // end SplitOverlayView


// FIX: requirements text hard-coded, should auto-update based on settings
var importRequirementsText = '[Size < 2 MB. Acceptable formats: JPEG, PDF, PNG, and others]';

app.views.NewOverlayView = app.views.View.extend({ app.views.NewOverlayView = app.views.View.extend({


template: template:
'<div id="new_overlay_view">'+ '<div id="new_overlay_view">'+
'<h3>Create a New Overlay</h3>'+ '<h3>Create a New Overlay: Import Overlay Image</h3>'+
'<ul class="nav nav-tabs" id="formTabs">'+ '<ul class="nav nav-tabs" id="formTabs">'+
' <li class="active" data-target="#fileUpload"><a href="#fileUpload">Upload</a></li>'+ ' <li class="active" data-target="#fileUpload"><a href="#fileUpload">Upload</a></li>'+
' <li data-target="#ulrSubmit"><a href="#urlSubmit">URL</a></li>'+ ' <li data-target="#urlSubmit"><a href="#urlSubmit">From a URL</a></li>'+
'</ul>'+ '</ul>'+
' '+ ' '+
'<div class="tab-content">'+ '<div class="tab-content">'+
'<div class="tab-pane active" id="fileUpload">'+ '<div class="tab-pane active" id="fileUpload">'+
'<form encytype="multipart/form-data" id="overlayUploadForm">'+ '<form encytype="multipart/form-data" id="overlayUploadForm">'+
'<div id="uploadControlGroup" class="control-group">'+ '<div id="uploadControlGroup" class="control-group">'+
'<label>Local File</label>'+ '<label>Choose an image to upload' +
'<input type="file" name="file" id="newOverlayFile" />'+ '<span class="import-requirements">' + importRequirementsText + '</span>' +
'</label>'+
'<div><input type="file" name="file" id="newOverlayFile" /></div>'+
'<input class="btn newOverlayFormSubmitButton" type="button" value="Upload" />'+ '<input class="btn newOverlayFormSubmitButton" type="button" value="Upload" />'+
window.csrf_token + window.csrf_token +
'</div>'+ '</div>'+
Expand All @@ -848,7 +816,10 @@ $(function($) {
'<div class="tab-pane" id="urlSubmit">'+ '<div class="tab-pane" id="urlSubmit">'+
'<form encytype="multipart/form-data" id="overlayUrlForm">'+ '<form encytype="multipart/form-data" id="overlayUrlForm">'+
'<div id="uploadControlGroup" class="control-group">'+ '<div id="uploadControlGroup" class="control-group">'+
'<label>Image URL</label> <input type="text" id="imageUrl" style="width: 98%"/>'+ '<label>Image URL' +
'<span class="import-requirements">' + importRequirementsText + '</span>' +
'</label>' +
'<input type="text" id="imageUrl" style="width: 98%"/>'+
'<input class="btn newOverlayFormSubmitButton" type="button" value="Submit" />'+ '<input class="btn newOverlayFormSubmitButton" type="button" value="Submit" />'+
window.csrf_token + window.csrf_token +
'</div>'+ '</div>'+
Expand Down Expand Up @@ -1019,11 +990,11 @@ $(function($) {
_.bindAll(this); _.bindAll(this);
}, },


template: '<h1>Export Overlay {{name}}</h1>'+ template: '<h1>Share Overlay {{name}}</h1>'+
'{{#if alignedTilesUrl}}' + '{{#if alignedTilesUrl}}' +
'<div id="simple_viewer">' + '<div id="simple_viewer">' +
'<a href="/overlay/{{key}}/simpleViewer_{{nospecials name}}.html" target="simpleViewer">' + '<a href="/overlay/{{key}}/simpleViewer_{{nospecials name}}.html" target="simpleViewer">' +
'View example code for displaying your overlay in any Google Maps API map' + 'View a web page displaying your aligned overlay that you can download and serve from your web site' +
'</a></div>' + '</a></div>' +
'{{/if}}' + '{{/if}}' +
'{{#if exportUrl}}'+ '{{#if exportUrl}}'+
Expand Down
20 changes: 10 additions & 10 deletions geocamTiePoint/static/geocamTiePoint/js/maputils.js
Expand Up @@ -80,26 +80,26 @@ $(function($) {
return marker; return marker;
}; };


maputils.locationSearchBar = function (search_bar, mapG) { maputils.locationSearchBar = function (search_bar, map) {
// expecting search_bar to either be a selector string or a jquery object. // expecting search_bar to either be a selector string or a jquery object.
var input = _.isString(search_bar) ? $(search_bar)[0] : search_bar[0]; var input = _.isString(search_bar) ? $(search_bar)[0] : search_bar[0];
var autoComplete = new google.maps.places.Autocomplete(input); var autoComplete = new google.maps.places.SearchBox(input);


autoComplete.bindTo('bounds', mapG); autoComplete.bindTo('bounds', map);


var infoWindow = new google.maps.InfoWindow(); var infoWindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({ var marker = new google.maps.Marker({
map: mapG map: map
}); });


google.maps.event.addListener(autoComplete, 'place_changed', function() { google.maps.event.addListener(autoComplete, 'places_changed', function() {
infoWindow.close(); infoWindow.close();
var place = autoComplete.getPlace(); var place = autoComplete.getPlaces()[0];
if (place.geometry.viewport) { if (place.geometry.viewport) {
mapG.fitBounds(place.geometry.viewport); map.fitBounds(place.geometry.viewport);
} else { } else {
mapG.setCenter(place.geometry.location); map.setCenter(place.geometry.location);
mapG.setZoom(17); map.setZoom(17);
} }


var address = ''; var address = '';
Expand All @@ -115,7 +115,7 @@ $(function($) {


infoWindow.setContent('<div><strong>' + place.name + '</strong><br>' + infoWindow.setContent('<div><strong>' + place.name + '</strong><br>' +
address + '</div>'); address + '</div>');
infoWindow.open(mapG, marker); infoWindow.open(map, marker);
}); });


}; };
Expand Down

0 comments on commit c851cfb

Please sign in to comment.