diff options
Diffstat (limited to 'www/js/views/reports.js')
-rw-r--r-- | www/js/views/reports.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/www/js/views/reports.js b/www/js/views/reports.js new file mode 100644 index 0000000..ff65700 --- /dev/null +++ b/www/js/views/reports.js @@ -0,0 +1,104 @@ +(function (FMS, Backbone, _, $) { + _.extend( FMS, { + ReportsView: FMS.FMSView.extend({ + template: 'reports', + id: 'reports', + next: 'around', + prev: 'around', + contentSelector: '#drafts', + + events: { + 'pagehide': 'destroy', + 'pagebeforeshow': 'beforeDisplay', + 'pageshow': 'afterDisplay', + 'vclick .del_report': 'deleteReport', + 'vclick .use_report': 'useReport', + 'vclick .ui-btn-left': 'onClickButtonPrev', + 'vclick .ui-btn-right': 'onClickButtonNext' + }, + + onClickButtonPrev: function(e) { + $('#drafts').hide(); + $('body')[0].scrollTop = 0; + e.preventDefault(); + this.navigate( this.prev, true ); + }, + + onClickButtonNext: function(e) { + $('#drafts').hide(); + $('body')[0].scrollTop = 0; + e.preventDefault(); + this.navigate( this.next ); + }, + + deleteReport: function(e) { + e.preventDefault(); + var el = $(e.target); + var id = el.parents('li').attr('id'); + var del = FMS.removeDraft( id, true ); + var that = this; + del.done( function() { that.onRemoveDraft(el); } ); + del.fail( function() { that.onRemoveDraft(el); } ); + }, + + setHeight: function(content, height) { + content.css( 'min-height', content + 'px'); + }, + + beforeDisplay: function() { + if ( FMS.allDrafts.length === 0 ) { + $('#noreports').show(); + } else { + $('#report-list').show(); + } + }, + + useReport: function(e) { + e.preventDefault(); + var el = $(e.target); + var id = el.parents('li').attr('id'); + FMS.currentDraft = FMS.allDrafts.get(id); + $('#drafts').hide(); + if ( FMS.currentDraft && FMS.currentDraft.get('lat') ) { + var coords = { latitude: FMS.currentDraft.get('lat'), longitude: FMS.currentDraft.get('lon') }; + fixmystreet.latitude = coords.latitude; + fixmystreet.longitude = coords.longitude; + + if ( fixmystreet.map ) { + var centre = new OpenLayers.LonLat( coords.longitude, coords.latitude ); + centre.transform( + new OpenLayers.Projection("EPSG:4326"), + fixmystreet.map.getProjectionObject() + ); + + fixmystreet.map.panTo(centre); + } + } + this.navigate('around'); + }, + + onRemoveDraft: function(el) { + el.parents('li').remove(); + if ( FMS.allDrafts.length === 0 ) { + $('#report-list').hide(); + $('#noreports').show(); + } + }, + + render: function(){ + if ( !this.template ) { + FMS.printDebug('no template to render'); + return; + } + template = _.template( tpl.get( this.template ) ); + if ( this.model ) { + this.$el.html(template({ model: this.model.toJSON(), drafts: FMS.allDrafts })); + } else { + this.$el.html(template()); + } + this.afterRender(); + return this; + } + }) + }); +})(FMS, Backbone, _, $); |