aboutsummaryrefslogtreecommitdiffstats
path: root/www/js
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2012-11-13 17:04:02 +0000
committerStruan Donald <struan@exo.org.uk>2012-11-13 19:55:48 +0000
commita6ccb5ef3ad31d775d44bb8448e16595c2b434b5 (patch)
treef8d7957b530820a149aed1766b5fc281bb4e0624 /www/js
parente69eda1c4a8358d0f0f3e9c9365c92153c00090c (diff)
tidy saved report code into an object
Diffstat (limited to 'www/js')
-rw-r--r--www/js/mobile.js63
-rw-r--r--www/js/report.js71
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() {
+
+ }
+ };
+}