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

https://github.com/Bowerbird/bowerbird-web · JavaScript · 151 lines · 93 code · 34 blank · 24 comment · 4 complexity · 496ac1913851ee7251b21bf0013eb980 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. // SightingExploreView
  8. // -------------------
  9. define(['jquery', 'underscore', 'backbone', 'app', 'views/sightinglistview', 'views/sightingsearchpanelview'],
  10. function ($, _, Backbone, app, SightingListView, SightingSearchPanelView) {
  11. var SightingExploreView = Backbone.Marionette.Layout.extend({
  12. viewType: 'details',
  13. className: 'sightings double',
  14. template: 'SightingExplore',
  15. regions: {
  16. search: '.search',
  17. list: '.list'
  18. },
  19. initialize: function (options) {
  20. _.bindAll(this, 'toggleSearchPanel');
  21. this.sightingCollection = options.sightingCollection;
  22. this.categorySelectList = options.categorySelectList;
  23. this.fieldSelectList = options.fieldSelectList;
  24. },
  25. serializeData: function () {
  26. return {
  27. Model: {
  28. }
  29. };
  30. },
  31. onShow: function () {
  32. var options = {
  33. collection: this.sightingCollection
  34. };
  35. var searchOptions = {
  36. sightingCollection: this.sightingCollection,
  37. categorySelectList: this.categorySelectList,
  38. fieldSelectList: this.fieldSelectList
  39. };
  40. // if (app.isPrerenderingView('sightings')) {
  41. // options['el'] = '.list > div';
  42. // searchOptions['el'] = '.search > div';
  43. // }
  44. this.sightingListView = new SightingListView(options);
  45. this.sightingSearchPanelView = new SightingSearchPanelView(searchOptions);
  46. //if (app.isPrerenderingView('sightings')) {
  47. // this.list.attachView(sightingListView);
  48. // sightingListView.showBootstrappedDetails();
  49. // this.search.attachView(sightingSearchPanelView);
  50. // sightingSearchPanelView.showBootstrappedDetails();
  51. // } else {
  52. this.list.show(this.sightingListView);
  53. this.search.show(this.sightingSearchPanelView);
  54. //}
  55. this._showDetails();
  56. },
  57. showBootstrappedDetails: function () {
  58. this.initializeRegions();
  59. var options = {
  60. collection: this.sightingCollection
  61. };
  62. var searchOptions = {
  63. sightingCollection: this.sightingCollection,
  64. categorySelectList: this.categorySelectList,
  65. fieldSelectList: this.fieldSelectList
  66. };
  67. if (app.isPrerenderingView('sightings')) {
  68. options['el'] = '.list > div';
  69. searchOptions['el'] = '.search > div';
  70. }
  71. this.sightingListView = new SightingListView(options);
  72. this.sightingSearchPanelView = new SightingSearchPanelView(searchOptions);
  73. // if (app.isPrerenderingView('sightings')) {
  74. this.list.attachView(this.sightingListView);
  75. this.sightingListView.showBootstrappedDetails();
  76. this.search.attachView(this.sightingSearchPanelView);
  77. this.sightingSearchPanelView.showBootstrappedDetails();
  78. // } else {
  79. // this.list.show(sightingListView);
  80. // this.search.show(sightingSearchPanelView);
  81. // }
  82. this._showDetails();
  83. },
  84. _showDetails: function () {
  85. var that = this;
  86. this.list.currentView.on('toggle-search', this.toggleSearchPanel);
  87. if (this.sightingCollection.hasSearchCriteria()) {
  88. this.$el.find('.search-bar').slideDown();
  89. }
  90. this.$el.find('.close-call-to-action').on('click', function (e) {
  91. e.preventDefault();
  92. that.$el.find('.call-to-action').slideUp('fast', function () {
  93. that.$el.find('.call-to-action').remove();
  94. });
  95. app.vent.trigger('close-call-to-action', 'user-welcome');
  96. return false;
  97. });
  98. app.vent.on('view:render:complete', function () {
  99. this.sightingListView.refresh();
  100. }, this);
  101. },
  102. toggleSearchPanel: function () {
  103. log('search bar', this.$el.find('.search-bar'));
  104. if (this.$el.find('.search-bar').is(':visible')) {
  105. log('search is visible');
  106. this.$el.find('.search-bar').slideToggle();
  107. } else {
  108. log('search is not visible');
  109. var that = this;
  110. this.$el.find('.search-bar').slideToggle(function () {
  111. that.$el.find('.search-bar #query').focus();
  112. });
  113. }
  114. }
  115. });
  116. return SightingExploreView;
  117. });