diff options
-rw-r--r-- | www/index.html | 1 | ||||
-rw-r--r-- | www/js/mobile.js | 63 | ||||
-rw-r--r-- | www/js/report.js | 71 |
3 files changed, 100 insertions, 35 deletions
diff --git a/www/index.html b/www/index.html index 2e39af7..3c85c27 100644 --- a/www/index.html +++ b/www/index.html @@ -10,6 +10,7 @@ <link rel="stylesheet" href="css/mobile.css"> <link rel="stylesheet" href="jquery.mobile-1.2.0/jquery.mobile-1.2.0.min.css"> + <script type="text/javascript" src="js/report.js"></script> <script type="text/javascript" src="js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="js/mobile_config.js"></script> <script type="text/javascript" src="jquery.mobile-1.2.0/jquery.mobile-1.2.0.min.js"></script> 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() { + + } + }; +} |