diff options
author | Struan Donald <struan@exo.org.uk> | 2012-11-13 17:04:02 +0000 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2012-11-13 19:55:48 +0000 |
commit | a6ccb5ef3ad31d775d44bb8448e16595c2b434b5 (patch) | |
tree | f8d7957b530820a149aed1766b5fc281bb4e0624 /www/js | |
parent | e69eda1c4a8358d0f0f3e9c9365c92153c00090c (diff) |
tidy saved report code into an object
Diffstat (limited to 'www/js')
-rw-r--r-- | www/js/mobile.js | 63 | ||||
-rw-r--r-- | www/js/report.js | 71 |
2 files changed, 99 insertions, 35 deletions
diff --git a/www/js/mobile.js b/www/js/mobile.js index 5333526..7e0f654 100644 --- a/www/js/mobile.js +++ b/www/js/mobile.js @@ -256,9 +256,8 @@ function check_name( name, msg ) { function remove_saved_report() { if ( localStorage.currentReport ) { - var reports = localStorage.getObject('reports'); - delete reports[localStorage.currentReport]; - localStorage.setObject('reports', reports); + var r = new Report(); + r.remove(localStorage.currentReport); delete localStorage.currentReport; } } @@ -540,14 +539,9 @@ function get_report_params () { function save_report() { var params = get_report_params(); - var r; - if ( localStorage.getObject( 'reports' ) ) { - r = localStorage.getObject( 'reports' ); - } else { - r = []; - } - r.push( params ); - localStorage.setObject('reports', r); + var r = new Report(params); + r.save(); + $.mobile.changePage('my_reports.html'); } @@ -586,11 +580,12 @@ function open_saved_report_page(e) { } function display_saved_report() { - var reports = localStorage.getObject('reports'); - var r = reports[localStorage.currentReport]; - fixmystreet.latitude = r.lat; - fixmystreet.longitude = r.lon; - fixmystreet.pins = [ [ r.lat, r.lon, 'yellow', '', "", 'big' ] ]; + var r = new Report(); + r.load(localStorage.currentReport); + + fixmystreet.latitude = r.lat(); + fixmystreet.longitude = r.lon(); + fixmystreet.pins = [ [ r.lat(), r.lon(), 'yellow', '', "", 'big' ] ]; $('#title').text(r.title); $('#details').text(r.detail); @@ -604,41 +599,39 @@ function display_saved_report() { } function complete_report() { - var reports = localStorage.getObject('reports'); - var r = reports[localStorage.currentReport]; + var r = new Report(); + r.load(localStorage.currentReport); - if ( r.lat && r.lon ) { - show_around( r.lat, r.lon ); + if ( r.lat() && r.lon() ) { + show_around( r.lat(), r.lon() ); } else { getPosition(); } } function delete_report() { - var reports = localStorage.getObject('reports'); - delete reports[localStorage.currentReport]; - localStorage.setObject('reports', reports); + var r = new Report(); + r.load(localStorage.currentReport); + r.remove(); $.mobile.changePage('my_reports.html'); } function submit_problem_show() { - var reports, r; - if ( localStorage.currentReport ) { - reports = localStorage.getObject('reports'); - r = reports[localStorage.currentReport]; + var r = new Report(); + r.load(localStorage.currentReport); - $('#form_title').val(r.title); - $('#form_detail').val(r.detail); - if ( r.may_show_name === 0 ) { + $('#form_title').val(r.title()); + $('#form_detail').val(r.detail()); + if ( r.may_show_name() === 0 ) { $('#form_may_show_name').attr('checked', 'off'); } //category: $('#form_category').val(); - $('#form_phone').val(r.phone); - $('#pc').val(r.pc); - if ( r.file ) { - $('#form_photo').val(r.file); - $('#photo').attr('src', r.file ); + $('#form_phone').val(r.phone()); + $('#pc').val(r.pc()); + if ( r.file() ) { + $('#form_photo').val(r.file()); + $('#photo').attr('src', r.file() ); $('#add_photo').hide(); $('#display_photo').show(); } diff --git a/www/js/report.js b/www/js/report.js new file mode 100644 index 0000000..e1a2de7 --- /dev/null +++ b/www/js/report.js @@ -0,0 +1,71 @@ +function Report(spec) { + var id = -1; + var props = spec || { + lat: 0, + lon: 0, + title: '', + details: '', + may_show_name: '', + category: '', + phone: '', + pc: '' + }; + + return { + id: function() { return id; }, + lat: function(lat) { if ( lat ) { props.lat = lat; } return props.lat; }, + lon: function(lon) { if ( lon ) { props.lon = lon; } return props.lon; }, + title: function(title) { if ( title ) { props.title = title; } return props.title; }, + detail: function(detail) { if ( detail ) { props.detail = detail; } return props.detail; }, + phone: function(phone) { if ( phone ) { props.phone = phone; } return props.phone; }, + pc: function(pc) { if ( pc ) { props.pc = pc; } return props.pc; }, + may_show_name: function(may_show_name) { if ( may_show_name ) { props.may_show_name = may_show_name; } return props.may_show_name; }, + file: function(file) { if ( file ) { props.file = file; } return props.file; }, + getLastUpdate: function(time) { + if ( time ) { + props.time = time; + } + + if ( !props.time ) { + return ''; + } + + var t; + if ( typeof props.time === 'String' ) { + t = new Date( props.time ); + } else { + t = props.time; + } + }, + load: function(id) { + var reports = localStorage.getObject('reports'); + props = reports[id]; + id = id; + }, + save: function() { + var reports = localStorage.getObject('reports'); + if ( ! reports ) { + reports = []; + } + props.time = new Date(); + if ( id != -1 ) { + reports[id] = props; + } else { + reports.push( props ); + id = reports.length - 1; + } + localStorage.setObject('reports', reports); + }, + remove: function(del_id) { + if ( del_id ) { + this.load(del_id); + } + var reports = localStorage.getObject('reports'); + delete report[id]; + localStorage.setObject('reports', reports); + }, + reset: function() { + + } + }; +} |