PageRenderTime 55ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/assets/js/views/user_list.js

https://github.com/predominant/subway
JavaScript | 55 lines | 46 code | 8 blank | 1 comment | 3 complexity | a0b57cfc0117e32b08eafad1f8a15e55 MD5 | raw file
  1. var UserView = Backbone.View.extend({
  2. initialize: function(user) {
  3. this.user = user;
  4. },
  5. className: 'userlist_user',
  6. render: function() {
  7. $(this.el).html(ich.userlist_user(this.user.model.attributes));
  8. return this;
  9. },
  10. addToIdle: function() {
  11. var idleTime = this.user.model.get('idle') + 1;
  12. if (idleTime > 60) {
  13. this.user.model.set({activity: '', user_status: 'idle'});
  14. clearInterval(this.intervalTimer);
  15. } else {
  16. this.user.model.set({
  17. activity: '(' + idleTime + 'm)',
  18. idle: idleTime,
  19. user_status: 'active'
  20. });
  21. if(this.intervalTimer === undefined) {
  22. this.setStatus();
  23. }
  24. }
  25. this.render();
  26. },
  27. setStatus: function() {
  28. // One-minute delays
  29. var self = this;
  30. var interval = 60 * 1000;
  31. this.intervalTimer = setInterval(function() { self.addToIdle() }, interval);
  32. }
  33. });
  34. var UserListView = Backbone.View.extend({
  35. initialize: function() {
  36. this.setElement(this.collection.channel.view.$('#user-list'));
  37. this.collection.bind('add', this.add, this);
  38. },
  39. render: function() {
  40. return this;
  41. },
  42. add: function(User) {
  43. var userView = new UserView({model: User});
  44. User.view = userView;
  45. $(this.el).append(userView.render().el);
  46. }
  47. });