aboutsummaryrefslogtreecommitdiffstats
path: root/www/js/views/fms.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/views/fms.js')
-rw-r--r--www/js/views/fms.js117
1 files changed, 117 insertions, 0 deletions
diff --git a/www/js/views/fms.js b/www/js/views/fms.js
new file mode 100644
index 0000000..1b51a27
--- /dev/null
+++ b/www/js/views/fms.js
@@ -0,0 +1,117 @@
+(function (FMS, Backbone, _, $) {
+ _.extend( FMS, {
+ FMSView: Backbone.View.extend({
+ tag: 'div',
+ bottomMargin: 20,
+ contentSelector: '[data-role="content"]',
+
+ events: {
+ 'pagehide': 'destroy',
+ 'pagebeforeshow': 'beforeDisplay',
+ 'pageshow': 'afterDisplay',
+ 'vclick .ui-btn-left': 'onClickButtonPrev',
+ 'vclick .ui-btn-right': 'onClickButtonNext'
+ },
+
+ back: function(e) {
+ if ( $('#help #dismiss').is(':visible') ) {
+ FMS.helpHide();
+ } else if ( this._back ) {
+ this._back(e);
+ } else if ( this.prev ) {
+ this.onClickButtonPrev(e);
+ }
+ },
+
+ render: function(){
+ if ( !this.template ) {
+ FMS.printDebug('no template to render');
+ return;
+ }
+ template = _.template( tpl.get( this.template ) );
+ var args = null;
+ if ( this.options.msg ) {
+ args = { msg: this.options.msg };
+ }
+ if ( this.model ) {
+ if ( args ) {
+ args.model = this.model.toJSON();
+ } else {
+ args = this.model.toJSON();
+ }
+ }
+ this.$el.html(template(args));
+ this.afterRender();
+ return this;
+ },
+
+ fixPageHeight: function() {
+ var header = this.$("div[data-role='header']:visible"),
+ content = this.$(this.contentSelector),
+ top = content.position().top,
+ viewHeight = $(window).height(),
+ contentHeight = FMS.windowHeight - header.outerHeight() - this.bottomMargin;
+
+ this.setHeight( content, contentHeight - top );
+ },
+
+ setHeight: function(content, height) {
+ content.height(height);
+ },
+
+ afterRender: function() {},
+
+ beforeDisplay: function() {
+ this.fixPageHeight();
+ },
+
+ afterDisplay: function() {},
+
+ navigate: function( route, reverse ) {
+ if ( FMS.isAndroid ) {
+ var softkeyboard = window.plugins.SoftKeyBoard;
+ softkeyboard.hide();
+ }
+ if ( reverse ) {
+ FMS.router.reverseTransition();
+ }
+
+ FMS.router.navigate( route, { trigger: true } );
+ },
+
+ onClickButtonPrev: function(e) {
+ e.preventDefault();
+ this.navigate( this.prev, true );
+ },
+
+ onClickButtonNext: function(e) {
+ e.preventDefault();
+ this.navigate( this.next );
+ },
+
+ displayAlert: function(msg) {
+ navigator.notification.alert(msg, null, CONFIG.APP_NAME);
+ },
+
+ validationError: function( id, error ) {
+ var el_id = '#' + id;
+ var el = $(el_id);
+ var err = '<div for="' + id + '" class="form-error">' + error + '</div>';
+ if ( $('div[for='+id+']').length === 0 ) {
+ el.before(err);
+ el.addClass('form-error');
+ }
+ },
+
+ clearValidationErrors: function() {
+ $('div.form-error').remove();
+ $('.form-error').removeClass('form-error');
+ },
+
+ destroy: function() { FMS.printDebug('destory for ' + this.id); this._destroy(); this.remove(); },
+
+ _destroy: function() {}
+ })
+ });
+ _.extend( FMS.FMSView, Backbone.Events );
+})(FMS, Backbone, _, $);