PageRenderTime 26ms CodeModel.GetById 0ms RepoModel.GetById 1ms app.codeStats 0ms

/pollapli/ui/static/pollapli/models/nodes_models.js

https://bitbucket.org/kaosat_dev/pollapli
JavaScript | 107 lines | 83 code | 6 blank | 18 comment | 8 complexity | aa298abb786721d634fd4290d6f30740 MD5 | raw file
  1. var Node = Backbone.Model.extend(
  2. {
  3. urlRoot : pollapli.mainUrl+'rest/environments/1/nodes',
  4. initialize: function()
  5. {
  6. //this.driver=new Driver({url:this.url+"/driver"});
  7. },
  8. defaults:
  9. {
  10. name: 'Default node',
  11. description: 'just a node',
  12. }
  13. });
  14. var NodeCollection = Backbone.Collection.extend(
  15. {
  16. model : Node,
  17. url: pollapli.mainUrl+'rest/environments/1/nodes',
  18. initialize: function()
  19. {
  20. _.bindAll(this, "justATest");
  21. },
  22. parse: function(response)
  23. {
  24. return response.nodes.items;
  25. },
  26. comparator : function(node)
  27. {
  28. return node.get("id");
  29. },
  30. justATest : function(longPollEvent)
  31. {
  32. if(longPollEvent.eventType=="node_created" || longPollEvent.eventType=="node_updated" || longPollEvent.eventType=="node_deleted")
  33. {
  34. this.fetch();
  35. /*try
  36. {
  37. console.log("Element id: "+longPollEvent.data.id);
  38. var refId=longPollEvent.data.id;
  39. var foundNode=this.detect(function(node){return node.get("id")==refId;})
  40. console.log("Found item"+foundNode);
  41. if(foundNode==undefined)
  42. {
  43. console.log("new item");
  44. this.add(new Node(data));
  45. }
  46. }
  47. catch(error)
  48. {
  49. console.log("error"+error);
  50. }*/
  51. }
  52. },
  53. filterAndOrder : function(filterParams,sortParam)
  54. {
  55. var result=_(this.chain()
  56. .sortBy(function(node)
  57. {
  58. //workaround for inverted compare (includes handling of strings)
  59. if( sortParam.indexOf("-") != -1)
  60. {
  61. tmp=node.get(sortParam.substr(1));
  62. if(is('String', tmp))
  63. {
  64. tmp=tmp.toLowerCase();
  65. return -tmp.charCodeAt(0);
  66. }
  67. else
  68. {
  69. return -tmp
  70. }
  71. }
  72. else
  73. {
  74. tmp=node.get(sortParam)
  75. if(is('String', tmp))
  76. {
  77. tmp=tmp.toLowerCase();
  78. return tmp.charCodeAt(0);
  79. }
  80. else
  81. {
  82. return tmp
  83. }
  84. }
  85. })
  86. .filter(function(node)
  87. {
  88. valid=true;
  89. _.each(filterParams, function(value, key)
  90. {
  91. if(node.get(key)!=value )
  92. {
  93. valid=false;
  94. }
  95. });
  96. return valid;
  97. }));
  98. result=result.value();
  99. return result
  100. }
  101. });