aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--locale/FixMyStreetMobileApp.po10
-rw-r--r--locale/en_GB.UTF-8/LC_MESSAGES/FixMyStreetMobileApp.po10
-rw-r--r--src/js/models/report.js71
-rw-r--r--src/js/strings.js1
-rw-r--r--src/js/views/submit.js4
-rw-r--r--templates/strings.js1
6 files changed, 73 insertions, 24 deletions
diff --git a/locale/FixMyStreetMobileApp.po b/locale/FixMyStreetMobileApp.po
index bceef21..fa8ac36 100644
--- a/locale/FixMyStreetMobileApp.po
+++ b/locale/FixMyStreetMobileApp.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: struan@mysociety.org\n"
-"POT-Creation-Date: 2013-08-09 09:57+0100\n"
+"POT-Creation-Date: 2013-08-09 14:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <team@fixmystreet.com>\n"
@@ -149,7 +149,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: templates/strings.js:46
+#: templates/strings.js:47
msgid "More details"
msgstr ""
@@ -165,7 +165,7 @@ msgstr ""
msgid "Next"
msgstr ""
-#: templates/strings.js:45
+#: templates/strings.js:46
msgid "No network connection available for submitting your report. Please try again later."
msgstr ""
@@ -361,6 +361,10 @@ msgstr ""
msgid "There was a problem taking your photo."
msgstr ""
+#: templates/strings.js:45
+msgid "There was a problem uploading your report."
+msgstr ""
+
#: templates/strings.js:26
msgid "There was a problem with your email/password combination. If you have forgotten your password, or do not have one, you can set one by returning to the email screen and selecting the set password option."
msgstr ""
diff --git a/locale/en_GB.UTF-8/LC_MESSAGES/FixMyStreetMobileApp.po b/locale/en_GB.UTF-8/LC_MESSAGES/FixMyStreetMobileApp.po
index 915c8f5..10a2df7 100644
--- a/locale/en_GB.UTF-8/LC_MESSAGES/FixMyStreetMobileApp.po
+++ b/locale/en_GB.UTF-8/LC_MESSAGES/FixMyStreetMobileApp.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: struan@mysociety.org\n"
-"POT-Creation-Date: 2013-08-09 09:57+0100\n"
+"POT-Creation-Date: 2013-08-09 14:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <team@fixmystreet.com>\n"
@@ -154,7 +154,7 @@ msgstr ""
msgid "Login"
msgstr ""
-#: templates/strings.js:46
+#: templates/strings.js:47
msgid "More details"
msgstr ""
@@ -173,7 +173,7 @@ msgstr ""
msgid "Next"
msgstr ""
-#: templates/strings.js:45
+#: templates/strings.js:46
msgid ""
"No network connection available for submitting your report. Please try again "
"later."
@@ -388,6 +388,10 @@ msgstr ""
msgid "There was a problem taking your photo."
msgstr ""
+#: templates/strings.js:45
+msgid "There was a problem uploading your report."
+msgstr ""
+
#: templates/strings.js:26
msgid ""
"There was a problem with your email/password combination. If you have "
diff --git a/src/js/models/report.js b/src/js/models/report.js
index 6162046..bc724ea 100644
--- a/src/js/models/report.js
+++ b/src/js/models/report.js
@@ -89,6 +89,7 @@
var that = this;
if ( model.get('file') && model.get('file') !== '' ) {
var fileUploadSuccess = function(r) {
+ FMS.uploading = false;
$.mobile.loading('hide');
if ( r.response ) {
var data;
@@ -111,9 +112,15 @@
}
};
- var fileUploadFail = function() {
+ var fileUploadFail = function(err) {
+ FMS.uploading = false;
$.mobile.loading('hide');
- that.trigger('error', that, FMS.strings.report_send_error, options);
+ if ( err.code == FileTransferError.ABORT_ERR ) {
+ options.aborted = true;
+ that.trigger('error', that, FMS.strings.report_send_error, options);
+ } else {
+ that.trigger('error', that, FMS.strings.report_send_error, options);
+ }
};
fileURI = model.get('file');
@@ -126,23 +133,53 @@
fileOptions.chunkedMode = false;
var ft = new FileTransfer();
- ft.onprogress = function(evt) {
- if (evt.lengthComputable) {
- var pcnt = (evt.loaded/evt.total) * 80;
- pcnt = pcnt + '%';
- $('.ui-loader #progress').css('display', 'block');
- $('.ui-loader #progress').css('width', pcnt);
- if ( pcnt == '80%' ) {
- $('.ui-loader #progress').css('background-color', 'green' );
+
+ FMS.uploading = false;
+ var setupChecker = function() {
+ var uploadPcnt = 0;
+ var lastUploadPcnt = 0;
+ var uploadComputable = false;
+ var startTime = Date.now();
+ var checkUpload = function() {
+ if ( !FMS.uploading || ( uploadComputable && uploadPcnt == 80 ) ) {
+ return;
}
- }
+
+ var uploadTime = Date.now() - startTime;
+ if ( ( lastUploadPcnt == 0 && uploadPcnt == 0 ) ||
+ ( lastUploadPcnt > 0 && uploadPcnt == lastUploadPcnt ) ||
+ uploadTime > 120000
+ ) {
+ ft.abort();
+ } else {
+ window.setTimeout( checkUpload, 15000 );
+ }
+ lastUploadPcnt = uploadPcnt;
+ };
+ ft.onprogress = function(evt) {
+ if (evt.lengthComputable) {
+ uploadComputable = true;
+ uploadPcnt = (evt.loaded/evt.total) * 80;
+ pcnt = uploadPcnt + '%';
+ $('.ui-loader #progress').css('display', 'block');
+ $('.ui-loader #progress').css('width', pcnt);
+ if ( pcnt == '80%' ) {
+ $('.ui-loader #progress').css('background-color', 'green' );
+ }
+ } else {
+ uploadPcnt++;
+ }
+ };
+ $.mobile.loading('show', {
+ text: FMS.strings.photo_loading,
+ textVisible: true,
+ html: '<span class="ui-icon ui-icon-loading"></span><h1>' + FMS.strings.photo_loading + '</h1><span id="progress"></span>'
+ });
+ window.setTimeout( checkUpload, 15000 );
+ FMS.uploading = true;
+ ft.upload(fileURI, CONFIG.FMS_URL + "report/new/mobile", fileUploadSuccess, fileUploadFail, fileOptions);
};
- $.mobile.loading('show', {
- text: FMS.strings.photo_loading,
- textVisible: true,
- html: '<span class="ui-icon ui-icon-loading"></span><h1>' + FMS.strings.photo_loading + '</h1><span id="progress"></span>'
- });
- ft.upload(fileURI, CONFIG.FMS_URL + "report/new/mobile", fileUploadSuccess, fileUploadFail, fileOptions);
+ setupChecker();
} else {
$.ajax( {
url: CONFIG.FMS_URL + "report/new/mobile",
diff --git a/src/js/strings.js b/src/js/strings.js
index 1c1131d..1036729 100644
--- a/src/js/strings.js
+++ b/src/js/strings.js
@@ -42,6 +42,7 @@
invalid_report: 'Invalid report',
photo_failed: 'There was a problem taking your photo.',
photo_loading: 'Uploading images may take some time, please be patient',
+ upload_aborted: 'There was a problem uploading your report.',
no_connection: 'No network connection available for submitting your report. Please try again later.',
more_details: 'More details'
}
diff --git a/src/js/views/submit.js b/src/js/views/submit.js
index 1d31098..34aaf83 100644
--- a/src/js/views/submit.js
+++ b/src/js/views/submit.js
@@ -107,13 +107,15 @@
var msg = FMS.strings.unknown_sync_error;
if ( err.errors ) {
msg = msg + ': ' + err.errors;
+ } else if ( options.aborted ) {
+ msg = FMS.strings.upload_aborted;
}
var that = this;
navigator.notification.confirm(
msg,
function(index) { that.handleReportError(index); },
CONFIG.APP_NAME,
- 'Save for Later,Try Again');
+ ['Save for Later','Try Again']);
},
handleReportError: function(index) {
diff --git a/templates/strings.js b/templates/strings.js
index 00154ee..dbcd4c7 100644
--- a/templates/strings.js
+++ b/templates/strings.js
@@ -42,6 +42,7 @@
invalid_report: '[% loc('Invalid report') %]',
photo_failed: '[% loc('There was a problem taking your photo.') %]',
photo_loading: '[% loc('Uploading images may take some time, please be patient') %]',
+ upload_aborted: '[% loc('There was a problem uploading your report.') %]',
no_connection: '[% loc('No network connection available for submitting your report. Please try again later.') %]',
more_details: '[% loc('More details') %]'
}