PageRenderTime 57ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/server/users.js

https://bitbucket.org/mpuckett/iostudio-whiteboard
JavaScript | 59 lines | 50 code | 8 blank | 1 comment | 1 complexity | 0a178b5a20864467635d6b68f0656af8 MD5 | raw file
Possible License(s): Apache-2.0, BSD-3-Clause, MIT
  1. // Users
  2. exports.init = function(d) {
  3. var _ = d._
  4. , Backbone = d.Backbone;
  5. var UserModel = Backbone.Model.extend({
  6. defaults: {
  7. 'name': 'New User',
  8. 'image': {
  9. 'data': '/images/default-user-image.gif'
  10. },
  11. 'lastMessage': -1
  12. },
  13. initialize: function () {
  14. if (this.get('name') === this.defaults.name) {
  15. this.set('name', 'anon_' + this.id);
  16. }
  17. }
  18. });
  19. var UsersCollection = Backbone.Collection.extend({
  20. model: UserModel
  21. });
  22. return UsersController = Backbone.Controller.extend({
  23. initialize: function () {
  24. var t = this;
  25. var usersCollection = this.usersCollection = new UsersCollection();
  26. usersCollection.on('add', function (user) {
  27. t.trigger('_userAdded', user.toJSON() );
  28. });
  29. usersCollection.on('remove', function (user) {
  30. t.trigger('_userRemoved', user.toJSON() );
  31. });
  32. usersCollection.on('change', function (user) {
  33. t.trigger('_userUpdated', user.toJSON() );
  34. });
  35. },
  36. render: function () {
  37. return this.usersCollection.toJSON();
  38. },
  39. update: function (user) {
  40. var userModel = this.usersCollection.where({id:user.id})[0];
  41. userModel.update(user);
  42. },
  43. add: function (user) {
  44. this.usersCollection.add(user);
  45. },
  46. remove: function (user) {
  47. var userModel = this.usersCollection.where({id:user.id})[0];
  48. this.usersCollection.remove(userModel);
  49. }
  50. });
  51. };