/Backup/Src/Bowerbird.Website/js/bowerbird/views/userExploreView.js

https://github.com/Bowerbird/bowerbird-web · JavaScript · 144 lines · 103 code · 33 blank · 8 comment · 9 complexity · 5467014ab71d15cf1e1e81872cbad4ee MD5 · raw file

  1. /// <reference path="../../libs/log.js" />
  2. /// <reference path="../../libs/require/require.js" />
  3. /// <reference path="../../libs/jquery/jquery-1.7.2.js" />
  4. /// <reference path="../../libs/underscore/underscore.js" />
  5. /// <reference path="../../libs/backbone/backbone.js" />
  6. /// <reference path="../../libs/backbone.marionette/backbone.marionette.js" />
  7. // UserExploreView
  8. // ---------------
  9. define(['jquery', 'underscore', 'backbone', 'app', 'views/userlistview', 'views/usersearchpanelview'],
  10. function ($, _, Backbone, app, UserListView, UserSearchPanelView) {
  11. var UserExploreView = Backbone.Marionette.Layout.extend({
  12. viewType: 'details',
  13. className: 'users double',
  14. template: 'UserExplore',
  15. regions: {
  16. search: '.search',
  17. list: '.list'
  18. },
  19. initialize: function (options) {
  20. _.bindAll(this, 'toggleSearchPanel');
  21. this.userCollection = options.userCollection;
  22. this.fieldSelectList = options.fieldSelectList;
  23. },
  24. serializeData: function () {
  25. return {
  26. Model: {
  27. }
  28. };
  29. },
  30. onShow: function () {
  31. var options = {
  32. collection: this.userCollection
  33. };
  34. var searchOptions = {
  35. userCollection: this.userCollection,
  36. fieldSelectList: this.fieldSelectList
  37. };
  38. if (app.isPrerenderingView('users')) {
  39. options['el'] = '.list > div';
  40. searchOptions['el'] = '.search > div';
  41. }
  42. var userListView = new UserListView(options);
  43. var userSearchPanelView = new UserSearchPanelView(searchOptions);
  44. if (app.isPrerenderingView('users')) {
  45. this.list.attachView(userListView);
  46. userListView.showBootstrappedDetails();
  47. this.search.attachView(userSearchPanelView);
  48. userSearchPanelView.showBootstrappedDetails();
  49. } else {
  50. this.list.show(userListView);
  51. this.search.show(userSearchPanelView);
  52. }
  53. this._showDetails();
  54. },
  55. showBootstrappedDetails: function () {
  56. this.initializeRegions();
  57. var options = {
  58. collection: this.userCollection
  59. };
  60. var searchOptions = {
  61. userCollection: this.userCollection,
  62. fieldSelectList: this.fieldSelectList
  63. };
  64. if (app.isPrerenderingView('users')) {
  65. options['el'] = '.list > div';
  66. searchOptions['el'] = '.search > div';
  67. }
  68. var userListView = new UserListView(options);
  69. var userSearchPanelView = new UserSearchPanelView(searchOptions);
  70. if (app.isPrerenderingView('users')) {
  71. this.list.attachView(userListView);
  72. userListView.showBootstrappedDetails();
  73. this.search.attachView(userSearchPanelView);
  74. userSearchPanelView.showBootstrappedDetails();
  75. } else {
  76. this.list.show(userListView);
  77. this.search.show(userSearchPanelView);
  78. }
  79. this._showDetails();
  80. },
  81. _showDetails: function () {
  82. var that = this;
  83. this.list.currentView.on('toggle-search', this.toggleSearchPanel);
  84. if (this.userCollection.hasSearchCriteria()) {
  85. this.$el.find('.search-bar').slideDown();
  86. }
  87. this.$el.find('.close-call-to-action').on('click', function (e) {
  88. e.preventDefault();
  89. that.$el.find('.call-to-action').slideUp('fast', function () {
  90. that.$el.find('.call-to-action').remove();
  91. });
  92. app.vent.trigger('close-call-to-action', 'user-welcome');
  93. return false;
  94. });
  95. },
  96. toggleSearchPanel: function () {
  97. log('search bar', this.$el.find('.search-bar'));
  98. if (this.$el.find('.search-bar').is(':visible')) {
  99. log('search is visible');
  100. this.$el.find('.search-bar').slideToggle();
  101. } else {
  102. log('search is not visible');
  103. var that = this;
  104. this.$el.find('.search-bar').slideToggle(function () {
  105. that.$el.find('.search-bar #query').focus();
  106. });
  107. }
  108. }
  109. });
  110. return UserExploreView;
  111. });