aboutsummaryrefslogtreecommitdiffstats
path: root/www/js/views/details.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/details.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/details.js')
-rw-r--r--www/js/views/details.js151
1 files changed, 151 insertions, 0 deletions
diff --git a/www/js/views/details.js b/www/js/views/details.js
new file mode 100644
index 0000000..9f03d58
--- /dev/null
+++ b/www/js/views/details.js
@@ -0,0 +1,151 @@
+(function (FMS, Backbone, _, $) {
+ _.extend( FMS, {
+ DetailsView: FMS.FMSView.extend({
+ template: 'details',
+ id: 'details-page',
+ prev: 'photo',
+ next: 'submit-start',
+ bottomMargin: -20,
+
+ events: {
+ 'pagehide': 'destroy',
+ 'pagebeforeshow': 'beforeDisplay',
+ 'pageshow': 'afterDisplay',
+ 'vclick .ui-btn-left': 'onClickButtonPrev',
+ 'vclick .ui-btn-right': 'onClickButtonNext',
+ 'blur textarea': 'updateCurrentReport',
+ 'change select': 'updateSelect',
+ 'blur input': 'updateCurrentReport'
+ },
+
+ afterRender: function() {
+ this.$('#form_category').attr('data-role', 'none');
+
+ if ( this.model.get('category') ) {
+ this.$('#form_category').val( this.model.get('category') );
+ }
+ this.setSelectClass();
+
+ },
+
+ beforeDisplay: function() {
+ this.fixPageHeight();
+ var header = this.$("div[data-role='header']:visible"),
+ detail = this.$('#form_detail'),
+ top = detail.position().top,
+ viewHeight = $(window).height(),
+ contentHeight = viewHeight - header.outerHeight() + 15;
+
+ detail.height( contentHeight - top );
+ },
+
+ onClickButtonPrev: function(e) {
+ e.preventDefault();
+ this.updateCurrentReport();
+ this.navigate( this.prev, true );
+ },
+
+ onClickButtonNext: function(e) {
+ e.preventDefault();
+ // dismiss on screen keyboard
+ $('.ui-btn-right').focus();
+ this.clearValidationErrors();
+ var valid = 1;
+
+ if ( !$('#form_title').val() ) {
+ valid = 0;
+ this.validationError( 'form_title', FMS.validationStrings.title );
+ }
+
+ if ( !$('#form_detail').val() ) {
+ valid = 0;
+ this.validationError( 'form_detail', FMS.validationStrings.detail );
+ }
+
+ var cat = $('#form_category').val();
+ if ( cat == '-- Pick a category --' ) {
+ valid = 0;
+ this.validationError( 'form_category', FMS.validationStrings.category );
+ }
+
+ if ( valid ) {
+ this.clearValidationErrors();
+ this.updateCurrentReport();
+ if ( FMS.isOffline ) {
+ this.navigate( 'save_offline' );
+ } else {
+ var that = this;
+ $.ajax( {
+ url: CONFIG.FMS_URL + '/report/new/category_extras',
+ type: 'POST',
+ data: {
+ category: this.model.get('category'),
+ latitude: this.model.get('lat'),
+ longitude: this.model.get('lon')
+ },
+ dataType: 'json',
+ timeout: 30000,
+ success: function( data, status ) {
+ if ( data && data.category_extra && data.category_extra.length > 0 ) {
+ that.model.set('category_extras', data.category_extra);
+ that.navigate('details_extra');
+ } else {
+ that.navigate( that.next );
+ }
+ },
+ error: function() {
+ that.displayAlert(FMS.strings.category_extra_check_error);
+ }
+ } );
+ }
+ }
+ },
+
+ validationError: function(id, error) {
+ var el_id = '#' + id;
+ var el = $(el_id);
+
+ el.addClass('error');
+ if ( el.val() === '' ) {
+ el.attr('orig-placeholder', el.attr('placeholder'));
+ el.attr('placeholder', error);
+ }
+ },
+
+ clearValidationErrors: function() {
+ $('.error').removeClass('error');
+ $('.error').each(function(el) { if ( el.attr('orig-placeholder') ) { el.attr('placeholder', el.attr('orig-placeholder') ); } } );
+ },
+
+ setSelectClass: function() {
+ var cat = this.$('#form_category');
+ if ( cat.val() !== "" && cat.val() !== '-- Pick a category --' ) {
+ cat.removeClass('noselection');
+ } else {
+ cat.addClass('noselection');
+ }
+ },
+
+ updateSelect: function() {
+ this.updateCurrentReport();
+ this.setSelectClass();
+ },
+
+ updateCurrentReport: function() {
+ var category = $('#form_category').val();
+ if ( category === '-- Pick a category --' ) {
+ category = '';
+ }
+ if ( category && $('#form_title').val() && $('#form_detail').val() ) {
+ $('#next').addClass('page_complete_btn');
+ } else {
+ $('#next').removeClass('page_complete_btn');
+ }
+ this.model.set('category', category);
+ this.model.set('title', $('#form_title').val());
+ this.model.set('details', $('#form_detail').val());
+ FMS.saveCurrentDraft();
+ }
+ })
+ });
+})(FMS, Backbone, _, $);