diff options
Diffstat (limited to 'src/js/app.js')
-rw-r--r-- | src/js/app.js | 336 |
1 files changed, 0 insertions, 336 deletions
diff --git a/src/js/app.js b/src/js/app.js deleted file mode 100644 index e6f620f..0000000 --- a/src/js/app.js +++ /dev/null @@ -1,336 +0,0 @@ -var tpl = { - - // Hash of preloaded templates for the app - templates:{}, - - // Recursively pre-load all the templates for the app. - // This implementation should be changed in a production environment. All the template files should be - // concatenated in a single file. - loadTemplates:function (names, callback) { - - var that = this; - - var loadTemplate = function (index) { - var name = names[index]; - FMS.printDebug('Loading template: ' + name + ', index: ' + index); - $.get('templates/' + CONFIG.LANGUAGE + '/' + name + '.html', function (data) { - that.templates[name] = data; - index++; - if (index < names.length) { - loadTemplate(index); - } else { - callback(); - } - }); - }; - - loadTemplate(0); - }, - - // Get template by name from hash of preloaded templates - get:function (name) { - return this.templates[name]; - } - -}; - - -(function (FMS, Backbone, _, $) { - _.extend(FMS, { - templates: [ - 'home', 'help', 'initial_help', 'around', 'offline', 'save_offline', 'reports', 'login', 'address_search', 'existing', 'photo', 'details', 'details_extra', 'submit', 'submit_email', 'submit_name', 'submit_set_password', 'submit_password', 'submit_confirm', 'sent' - ], - - usedBefore: 0, - isLoggedIn: 0, - isOffline: 0, - initialized: 0, - users: new FMS.Users(), - currentUser: null, - currentPosition: null, - isAndroid: false, - iPhoneModel: 0, - uploadTimeout: CONFIG.UPLOAD_TIMEOUT || 120000, - testing: 0, - - currentDraft: new FMS.Draft(), - allDrafts: new FMS.Drafts(), - - reportToView: null, - - online: function() { - FMS.isOffline = 0; - }, - - offline: function() { - FMS.isOffline = 1; - }, - - printDebug: function(msg) { - if ( CONFIG.DEBUG ) { - console.log(msg); - } - }, - - checkOnlineStatus: function() { - if ( navigator && navigator.connection && ( navigator.connection.type == Connection.NONE || - navigator.connection.type == Connection.UNKNOWN ) ) { - FMS.offline(); - } else { - FMS.online(); - } - }, - - checkLoggedInStatus: function() { - if ( FMS.isOffline ) { - } else { - $.ajax( { - url: CONFIG.FMS_URL + '/auth/ajax/check_auth', - type: 'GET', - dataType: 'json', - timeout: 30000, - success: function( data, status ) { - FMS.isLoggedIn = 1; - }, - error: function() { - FMS.isLoggedIn = 0; - } - } ); - } - }, - - saveCurrentDraft: function(force) { - FMS.router.pause(); - if ( force || FMS.currentDraft.isPartial() ) { - FMS.allDrafts.add( FMS.currentDraft ); - FMS.currentDraft.save(); - localStorage.currentDraftID = FMS.currentDraft.id; - } - }, - - loadCurrentDraft: function() { - if ( localStorage.currentDraftID && localStorage.currentDraftID != 'null' ) { - var r = FMS.allDrafts.get( localStorage.currentDraftID ); - if ( r ) { - FMS.currentDraft = r; - } - } - localStorage.currentDraftID = null; - }, - - removeDraft: function(draftID, removePhoto) { - var draft = FMS.allDrafts.get(draftID); - var uri = draft.get('file'); - FMS.allDrafts.remove(draft); - draft.destroy(); - - if ( removePhoto && uri ) { - return FMS.files.deleteURI( uri ); - } - var p = $.Deferred(); - p.resolve(); - return p; - }, - - setCurrentDraft: function(draft) { - FMS.currentDraft = draft; - localStorage.currentDraftID = draft.id; - }, - - clearCurrentDraft: function() { - FMS.currentDraft = new FMS.Draft(); - localStorage.currentDraftID = null; - }, - - openExternal: function(e) { - e.preventDefault(); - var el = $(e.srcElement); - window.open(el.attr('href'), '_system'); - return false; - }, - - setHelpHeight: function() { - var helpContent = $('#helpContent'), - viewHeight = $(window).height(); - - helpContent.height(viewHeight - 60); - }, - - setupHelp: function() { - var help = $('#help'), - helpContent = $('#helpContent'), - viewWidth = $(window).width(); - - var template; - if ( !FMS.usedBefore ) { - template = _.template( tpl.get('initial_help') ); - } else { - template = _.template( tpl.get('help') ); - } - helpContent.html(template()); - - if ( !help.hasClass('android2') ) { - if ( FMS.usedBefore ) { - FMS.setHelpHeight(); - } - help.show(); - } - help.css('left', viewWidth); - }, - - helpShow: function(e) { - if (e) { - e.preventDefault(); - } - var help = $('#help'); - $('#display-help').hide(); - var onShow = function() { - $('#help').show(); - $('#dismiss').show(); - }; - help.animate({left: 0}, onShow ); - }, - - helpHide: function(e) { - if (e) { - e.preventDefault(); - } - var help = $('#help'), - viewWidth = $(window).width(); - - $('#dismiss').hide(); - if ( help.hasClass('android2') ) { - $('body').scrollTop(0); - } - var onHide = function() { - $('#display-help').show(); - $('#helpContent').scrollTop(0); - if ( $('#help').hasClass('android2') ) { - $('#help').hide(); - } - if ( !FMS.usedBefore ) { - var template = _.template( tpl.get('help') ); - $('#helpContent').html(template()); - FMS.usedBefore = 1; - localStorage.usedBefore = 1; - if ( !$('#help').hasClass('android2') ) { - FMS.setHelpHeight(); - } - } - }; - help.animate({left: viewWidth}, 400, 'swing', onHide ); - }, - - initialize: function () { - if ( this.initialized == 1 ) { - return this; - } - $('#load-screen').height( $(window).height() ); - FMS.initialized = 1; - if ( navigator && navigator.splashscreen ) { - navigator.splashscreen.hide(); - } - tpl.loadTemplates( FMS.templates, function() { - - if ( typeof device !== 'undefined' && device.platform === 'Android' ) { - $.mobile.defaultPageTransition = 'none'; - FMS.isAndroid = true; - if ( parseInt(device.version) < 3 ) { - $('#help').addClass('android2'); - } - } - - if ( typeof device !== 'undefined' && device.platform === 'iOS' ) { - var model = parseInt(device.model.replace('iPhone',''), 10); - FMS.iPhoneModel = model; - - // fix overlap of status bar in ios7 - if (parseFloat(window.device.version) >= 7.0) { - $('body').addClass('ios7'); - } - } - - _.extend(FMS, { - router: new FMS.appRouter(), - locator: new FMS.Locate() - }); - _.extend( FMS.locator, Backbone.Events ); - - // we only ever have the details of one user - FMS.users.fetch(); - if ( FMS.users.length > 0 ) { - FMS.currentUser = FMS.users.get(1); - } - if ( FMS.currentUser === null ) { - FMS.currentUser = new FMS.User({id: 1}); - } - - FMS.windowHeight = $(window).height(); - if ( $('body').hasClass('ios7') ) { - FMS.windowHeight -= 20; - } - - if ( localStorage.usedBefore ) { - FMS.usedBefore = 1; - } - - if ( CONFIG.TESTING ) { - FMS.testing = 1; - } - - document.addEventListener('pause', function() { FMS.locator.stopTracking(); FMS.saveCurrentDraft(); }, false); - document.addEventListener('resume', onResume, false); - document.addEventListener('backbutton', function(e) { FMS.router.back(e); }, true); - document.addEventListener('offline', function() { FMS.offline(); }, true); - document.addEventListener('online', function() { FMS.online(); }, true); - - $(document).on('ajaxStart', function() { $.mobile.loading('show'); } ); - $(document).on('ajaxStop', function() { $.mobile.loading('hide'); } ); - - $('#display-help').on('vclick', function(e) { FMS.helpShow(e); } ); - $('#dismiss').on('vclick', function(e) { FMS.helpHide(e); } ); - - FMS.allDrafts.comparator = function(a,b) { var a_date = a.get('created'), b_date = b.get('created'); return a_date === b_date ? 0 : a_date < b_date ? 1 : -1; }; - FMS.allDrafts.fetch(); - FMS.checkOnlineStatus(); - FMS.loadCurrentDraft(); - FMS.checkLoggedInStatus(); - FMS.setupHelp(); - - Backbone.history.start(); - navigator.splashscreen.hide(); - $('#display-help').show(); - }); - } - }); - - function onResume() { - FMS.checkOnlineStatus(); - FMS.loadCurrentDraft(); - if ( ( FMS.router.currentView.id == 'front-page' || FMS.router.currentView.id == 'around-page' ) && FMS.currentPosition !== null ) { - FMS.locator.trackPosition(); - } - } -})(FMS, Backbone, _, $); - -var androidStartUp = function() { - // deviceready does not fire on some android versions very reliably so - // we do this instead - - if (FMS.initialized === 1) { - return; - } - - if ( typeof device != 'undefined' ) { - if ( device.platform == 'Android' ) { - FMS.initialize(); - } - } else { - window.setTimeout( androidStartUp, 1000 ); - } -}; - -function onload() { - document.addEventListener('deviceready', FMS.initialize, false); - window.setTimeout( androidStartUp, 2000 ); -} |