UNPKG

wise-web-client

Version:

Based on Spine MVC framework

104 lines (84 loc) 3.33 kB
define(['jquery', 'backbone', 'handlebars', './BaseView', 'text!../../../tpl/login_user_status.hbr', 'text!../../../tpl/anonymous_user_status.hbr', 'text!../../../tpl/loader_overlay.hbr' ], function($, Backbone, Handlebars, BaseView, loginTemplate, anonymousTemplate, loaderTemplate) { var View = BaseView.extend({ el: '#user-status', className: '', loginTemplate: Handlebars.compile(loginTemplate), anonymousTemplate: Handlebars.compile(anonymousTemplate), loaderTemplate: Handlebars.compile(loaderTemplate), initialize: function(context) { _.extend(this, context); if (this.session) { this.session.bind('change', this.render, this); } // add notification subscription this.pubsub.on('system:notify', function(notice) { new $.pnotify(notice); }); // add global message subscription this.pubsub.on('system:global-message', function(message) { var stack = { 'dir1': 'down', 'dir2': 'right', 'push': 'top', 'spacing1': 0, 'spacing2': 0, 'context': $('#global-message-container') }; message.stack = stack; message.delay = 10000; new $.pnotify(message); }); // add global loader this.pubsub.on('system:startLoadView', function() { $('#overlay-container').html(this.loaderTemplate()); }.bind(this)); this.pubsub.on('system:finishLoadView', function() { $('#overlay-container .overlay-loader').remove(); }); }, events: { 'click #user-signin': 'signin', 'click #user-signup': 'signup', 'click #user-logout': 'logout', }, render: function() { if (this.session && this.session.isLogin()) { var user = this.session.get('userInfo'); this.$el.html(this.loginTemplate(user)); } else { this.$el.html(this.anonymousTemplate()); } $('#navbar [data-toggle="tooltip"]').tooltip(); return this; }, //login user only subscribtion events loadSub: function() { }, signin: function() { Backbone.history.navigate('login', { trigger: true }); }, signup: function() { Backbone.history.navigate('register', { trigger: true }); }, logout: function() { this.session.logout(function() { Backbone.history.navigate('', { trigger: true }); }); } }); // Returns the View class return View; } );