aboutsummaryrefslogtreecommitdiffstats
path: root/www/js/views/offline.js
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2014-10-03 15:07:08 +0100
committerDave Arter <davea@mysociety.org>2015-08-28 14:27:15 +0100
commita69d425c0e5c004145ac1ab70e2f7f9fc329b54c (patch)
tree8eb7ff0ff7aaa0fce8bc7214ec6e15b694fddbdc /www/js/views/offline.js
parent8fd15b58733c51d7f001f9eac66b7d03830ec0b4 (diff)
update Android to Cordova 3.6
Required due to security issue Remove Android directory as no longer required, move src -> www to match standard layout, update .gitignore to avoid including the standard platform files, update README based on Steve's zurich one
Diffstat (limited to 'www/js/views/offline.js')
-rw-r--r--www/js/views/offline.js160
1 files changed, 160 insertions, 0 deletions
diff --git a/www/js/views/offline.js b/www/js/views/offline.js
new file mode 100644
index 0000000..5f25223
--- /dev/null
+++ b/www/js/views/offline.js
@@ -0,0 +1,160 @@
+(function (FMS, Backbone, _, $) {
+ _.extend( FMS, {
+ OfflineView: FMS.LocatorView.extend({
+ template: 'offline',
+ id: 'offline',
+ prev: 'around',
+ next: 'reports',
+ skipLocationCheck: true,
+
+ events: {
+ 'pagehide': 'destroy',
+ 'pagebeforeshow': 'beforeShow',
+ 'pageshow': 'afterDisplay',
+ 'vclick .ui-btn-left': 'onClickButtonPrev',
+ 'vclick .ui-btn-right': 'onClickButtonNext',
+ 'vclick #id_photo_button': 'takePhoto',
+ 'vclick #id_existing': 'addPhoto',
+ 'vclick #id_del_photo_button': 'deletePhoto',
+ 'vclick #locate': 'onClickLocate',
+ 'vclick #locate_cancel': 'onClickCancel',
+ 'blur input': 'toggleNextButton',
+ 'blur textarea': 'toggleNextButton'
+ },
+
+ _back: function() {
+ navigator.app.exitApp();
+ },
+
+ draftHasContent: function() {
+ var hasContent = false;
+
+ if ( $('#form_title').val() || $('#form_detail').val() ||
+ this.model.get('lat') || this.model.get('file') ) {
+ hasContent = true;
+ }
+
+ return hasContent;
+ },
+
+ afterDisplay: function() {
+ $('body')[0].scrollTop = 0;
+ $('div[data-role="content"]').show();
+ },
+
+ beforeShow: function() {
+ $('div[data-role="content"]').hide();
+ this.toggleNextButton();
+ },
+
+ toggleNextButton: function() {
+ if ( this.draftHasContent() ) {
+ $('#offline-next-btn .ui-btn-text').text('Save');
+ } else {
+ $('#offline-next-btn .ui-btn-text').text('Skip');
+ }
+ },
+
+ failedLocation: function(details) {
+ this.finishedLocating();
+ this.locateCount = 21;
+
+ $('#locate_result').html(FMS.strings.offline_failed_position);
+ },
+
+ gotLocation: function(info) {
+ this.finishedLocating();
+
+ this.model.set('lat', info.coordinates.latitude);
+ this.model.set('lon', info.coordinates.longitude);
+
+ $('#locate_result').html(FMS.strings.offline_got_position);
+ },
+
+ takePhoto: function() {
+ var that = this;
+ navigator.camera.getPicture( function(imgURI) { that.addPhotoSuccess(imgURI); }, function(error) { that.addPhotoFail(error); }, { saveToPhotoAlbum: true, quality: 49, destinationType: Camera.DestinationType.FILE_URI, sourceType: navigator.camera.PictureSourceType.CAMERA, correctOrientation: true });
+ },
+
+ addPhoto: function() {
+ var that = this;
+ navigator.camera.getPicture( function(imgURI) { that.addPhotoSuccess(imgURI); }, function(error) { that.addPhotoFail(error); }, { saveToPhotoAlbum: false, quality: 49, destinationType: Camera.DestinationType.FILE_URI, sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY, correctOrientation: true });
+ },
+
+ addPhotoSuccess: function(imgURI) {
+ var move = FMS.files.moveURI( imgURI );
+
+ var that = this;
+ move.done( function( file ) {
+ $('#photo').attr('src', file.toURL());
+ that.model.set('file', file.toURL());
+ FMS.saveCurrentDraft();
+
+ $('#photo-next-btn .ui-btn-text').text('Next');
+ $('#display_photo').show();
+ $('#add_photo').hide();
+ });
+
+ move.fail( function() { that.addPhotoFail(); } );
+ },
+
+ addPhotoFail: function() {
+ if ( message != 'no image selected' &&
+ message != 'Selection cancelled.' &&
+ message != 'Camera cancelled.' ) {
+ this.displayAlert(FMS.strings.photo_failed);
+ }
+ },
+
+ deletePhoto: function() {
+ var that = this;
+ var del = FMS.files.deleteURI( this.model.get('file') );
+
+ del.done( function() {
+ that.model.set('file', '');
+ FMS.saveCurrentDraft();
+ $('#photo').attr('src', '');
+
+ $('#photo-next-btn .ui-btn-text').text('Skip');
+ $('#display_photo').hide();
+ $('#add_photo').show();
+ });
+ },
+
+ onClickLocate: function(e) {
+ e.preventDefault();
+ this.locate();
+ },
+
+ onClickCancel: function(e) {
+ e.preventDefault();
+ this.finishedLocating();
+ },
+
+ onClickButtonNext: function() {
+ this.updateCurrentReport();
+ if ( !this.draftHasContent() && this.model.id ) {
+ var del = FMS.removeDraft( this.model.id );
+
+ var that = this;
+ del.done( function() { that.draftDeleted(); } );
+ del.fail( function() { that.draftDeleted(); } );
+ } else {
+ FMS.clearCurrentDraft();
+ this.navigate( this.next );
+ }
+ },
+
+ draftDeleted: function() {
+ FMS.clearCurrentDraft();
+ this.navigate( this.next );
+ },
+
+ updateCurrentReport: function() {
+ this.model.set('title', $('#form_title').val());
+ this.model.set('details', $('#form_detail').val());
+ FMS.saveCurrentDraft();
+ }
+ })
+ });
+})(FMS, Backbone, _, $);