PageRenderTime 176ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

/cfzwww/static/javascript/app/vehicle_pass/vehiclepass_list_view.js

https://bitbucket.org/uris77/cfz-www
JavaScript | 86 lines | 70 code | 16 blank | 0 comment | 1 complexity | c3de14eec49f0010959450125ee42718 MD5 | raw file
  1. define([
  2. 'jquery',
  3. 'lodash',
  4. 'backbone',
  5. 'app/vehicle_pass/vehiclepass_collections',
  6. 'vehiclePassModule',
  7. 'text!templates/vehiclepass/list.html'
  8. ], function($, _, backbone, VehiclepassCollection, vehiclePassModule, vehiclepassListTemplate){
  9. VehiclePassModule = vehiclePassModule.VehiclePassModule;
  10. VehiclePassModule.searchEvents = _.extend({}, Backbone.Events);
  11. VehiclePassModule.vent = _.extend({}, Backbone.Events);
  12. VehiclePassModule.VehiclepassSearchCollection = Backbone.Collection.extend({
  13. url: function(){
  14. return "/vehicle_pass/search/" + this.searchTerm;
  15. }
  16. },{
  17. search: function(searchTerm){
  18. var results = new VehiclePassModule.VehiclepassSearchCollection();
  19. results.searchTerm = searchTerm;
  20. results.fetch({
  21. success: function(){
  22. var resultsData = {
  23. vehiclepasses: results.models,
  24. _: _
  25. };
  26. VehiclePassModule.searchEvents.trigger("search:results", resultsData);
  27. },
  28. error: function(collection, response){
  29. VehiclePassModule.vent.trigger("search:error", response);
  30. }
  31. });
  32. }
  33. });
  34. VehiclePassModule.VehiclepassSearchFormView = Backbone.View.extend({
  35. events: {
  36. 'keyup .search-query': 'searchVehiclePassesForOwner'
  37. },
  38. searchVehiclePassesForOwner: _.debounce(function(e){
  39. var ownerName = e.target.value.trim();
  40. if(_.isEmpty(ownerName)){
  41. this.render();
  42. }else{
  43. VehiclePassModule.VehiclepassSearchCollection.search(ownerName);
  44. }
  45. }, 500)
  46. });
  47. VehiclePassModule.VehiclepassListView = Backbone.View.extend({
  48. initialize: function(){
  49. this.vehiclepasses = VehiclepassCollection;
  50. VehiclePassModule.searchEvents.bind("search:results", this.renderSearchResults, this);
  51. },
  52. render: function(){
  53. this.vehiclepasses.fetch({success: function(passes){
  54. var data = {
  55. vehiclepasses: passes.models,
  56. _: _
  57. };
  58. var compiledTemplate = _.template(vehiclepassListTemplate, data);
  59. $("#mainpanel").html(compiledTemplate);
  60. }});
  61. },
  62. renderSearchResults: function(vehiclepassList){
  63. console.log(vehiclepassList.vehiclepasses);
  64. var compiledTemplate = _.template(vehiclepassListTemplate, vehiclepassList);
  65. $("#mainpanel").html(compiledTemplate);
  66. }
  67. });
  68. var vehiclePassListView = new VehiclePassModule.VehiclepassListView({el: $("#mainpanel")});
  69. return vehiclePassListView;
  70. });