1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
(function (FMS, Backbone, _, $) {
_.extend( FMS, {
SearchView: FMS.FMSView.extend({
template: 'address_search',
id: 'search-page',
events: {
'vclick a.address': 'goAddress',
'vclick #submit': 'search',
'vclick #locate': 'goLocate',
'pagehide': 'destroy',
'pagebeforeshow': 'beforeDisplay',
'pageshow': 'afterDisplay',
'submit #postcodeForm': 'search'
},
afterDisplay: function() {
if ( FMS.isOffline ) {
this.navigate('offline');
}
},
search: function(e) {
// this is to stop form submission
e.preventDefault();
this.clearValidationErrors();
var pc = this.$('#pc').val();
this.listenTo(FMS.locator, 'search_located', this.searchSuccess );
this.listenTo(FMS.locator, 'search_failed', this.searchFail);
FMS.locator.lookup(pc);
},
searchSuccess: function( info ) {
this.stopListening(FMS.locator);
var coords = info.coordinates;
FMS.currentPosition = coords;
this.navigate('around');
},
goAddress: function(e) {
var t = $(e.target);
var lat = t.attr('data-lat');
var long = t.attr('data-long');
FMS.currentPosition = { latitude: lat, longitude: long };
this.navigate('around');
},
searchFail: function( details ) {
// this makes sure any onscreen keyboard is dismissed
$('#submit').focus();
this.stopListening(FMS.locator);
if ( details.msg ) {
this.validationError( 'pc', details.msg );
} else if ( details.locations ) {
var multiple = '';
for ( var i = 0; i < details.locations.length; i++ ) {
var loc = details.locations[i];
var li = '<li><a class="address" id="location_' + i + '" data-lat="' + loc.lat + '" data-long="' + loc.long + '">' + loc.address + '</a></li>';
multiple = multiple + li;
}
$('#front-howto').html('<p>Multiple matches found</p><ul data-role="listview" data-inset="true">' + multiple + '</ul>');
$('.ui-page').trigger('create');
} else {
this.validationError( 'pc', FMS.strings.location_problem );
}
},
goLocate: function(e) {
e.preventDefault();
this.navigate( 'around' );
},
_destroy: function() {
delete FMS.searchMessage;
this.stopListening(FMS.locator);
}
})
});
})(FMS, Backbone, _, $);
|