PageRenderTime 46ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/MVC/js/main_Naty.js

https://github.com/GuggerJoel/mmready-test
JavaScript | 263 lines | 201 code | 44 blank | 18 comment | 1 complexity | 04b8ec09bb193f2b2eb9441e4b883c8f MD5 | raw file
  1. <<<<<<< HEAD
  2. =======
  3. //*** extending Backbone classes
  4. var MyModel = Backbone.Model.extend();
  5. var MyCollection = Backbone.Collection.extend();
  6. var MyModelNestedCollection = Backbone.Model.extend({
  7. nested: 'collection',
  8. initialize: function(attrs, options) {
  9. this.get(this.nested).on('all', function(eventName) {
  10. this.trigger(eventName, this);
  11. }, this);
  12. },
  13. toJSON: function() {
  14. var colObj = {};
  15. colObj[this.nested] = this.get(this.nested).toJSON();
  16. return _.extend(
  17. Backbone.Model.prototype.toJSON.apply(this, arguments),
  18. colObj
  19. );
  20. }
  21. });
  22. var MyView = Backbone.View.extend();
  23. /////////////////////// INSTRUMENT //////////////
  24. var Instrument = MyModel.extend();
  25. var Instruments = MyCollection.extend({
  26. model: Instrument
  27. });
  28. //////////////////////// MSUICIAN ////////////////////
  29. var Musician = MyModelNestedCollection.extend({
  30. nested: 'instruments',
  31. defaults: function() {
  32. return {
  33. instruments: new Instruments()
  34. }
  35. }
  36. });
  37. var Musicians = MyCollection.extend({
  38. model: Musician
  39. });
  40. ////////////////ARTIST ////////////////////////
  41. var Artist = MyModelNestedCollection.extend({
  42. nested: 'musicians',
  43. defaults: function() {
  44. return {
  45. musicians: new Musicians()
  46. }
  47. }
  48. });
  49. var Artists = MyCollection.extend({
  50. model: Artist
  51. });
  52. var ViewArtists = MyView.extend({
  53. template: templates.artistsList,
  54. events: {
  55. 'click a.ico-delete': 'delete',
  56. 'click a.ico-edit': 'edit',
  57. 'click a.ico-detail': 'detail'
  58. },
  59. initialize: function(attrs, options) {
  60. this.listenTo(this.collection, 'all', this.render);
  61. this.render();
  62. },
  63. render: function() {
  64. this.$el.html(Mustache.render(this.template, {artists: this.collection.toJSON()}));
  65. return this;
  66. },
  67. 'delete': function(event) {
  68. console.log('delete');
  69. },
  70. edit: function(event) {
  71. console.log('edit');
  72. },
  73. detail: function(event) {
  74. console.log('detail');
  75. },
  76. });
  77. ////////////////////// EVENT //////////////////////////
  78. var Event = MyModelNestedCollection.extend({
  79. nested: 'artists',
  80. defaults: function() {
  81. return {
  82. artists: new Artists()
  83. }
  84. },
  85. parse: function(response) {
  86. var data = response.data;
  87. var date = new Date(data.date);
  88. data.month = date.getMonth();
  89. data.hour = date.getHours();
  90. return data;
  91. }
  92. });
  93. var Events = MyCollection.extend({
  94. model: Event
  95. });
  96. >>>>>>> FETCH_HEAD
  97. var ViewEvents = MyView.extend({
  98. template: templates.eventsList,
  99. events: {
  100. 'click a.ico-delete': 'delete',
  101. 'click a.ico-edit': 'edit',
  102. 'click a.ico-detail': 'detail',
  103. },
  104. initialize: function(attrs, options) {
  105. this.listenTo(this.collection, 'all', this.render);
  106. this.render();
  107. },
  108. render: function() {
  109. this.$el.html(Mustache.render(this.template, {events: this.collection.toJSON()}));
  110. return this;
  111. },
  112. 'delete': function(event) {
  113. console.log('delete');
  114. },
  115. edit: function(event) {
  116. console.log('edit');
  117. },
  118. detail: function(event) {
  119. $('#eventsList').hide();
  120. $('#showDetailEvent').show();
  121. }
  122. <<<<<<< HEAD
  123. });
  124. =======
  125. });
  126. var ViewShowEvent = MyView.extend({
  127. template: templates.showEvent,
  128. events: {
  129. 'click #btn-back': 'backListEvents',
  130. },
  131. initialize: function(attrs, options) {
  132. this.listenTo(this.model, 'all', this.render);
  133. this.render();
  134. },
  135. render: function() {
  136. this.$el.html(Mustache.render(this.template, {event: this.model.toJSON()}));
  137. return this;
  138. },
  139. backListEvents: function() {
  140. $('#showDetailEvent').hide();
  141. $('#eventsList').show();
  142. }
  143. });
  144. var guitar = new Instrument({"name": "Guitar"});
  145. var bass = new Instrument({"name": "Bass"});
  146. var vocal = new Instrument({"name": "Vocal"});
  147. //
  148. var musician1 = new Musician({'name': 'Romain'});
  149. musician1.get('instruments').add(bass);
  150. var musician2 = new Musician({'name': 'Cl??lia'});
  151. musician2.get('instruments').add(vocal);
  152. var mmready = new Artist({'name': 'mmready()'});
  153. mmready.get('musicians').add([musician1, musician2]);
  154. var zed = new Artist({'name': 'ZED'});
  155. //Event collection dans un model
  156. var event1 = new Event({title: 'La grosse fiesta 2014', name_de: 'rock', start_date_hour: '25.06.2014',
  157. ending_date_hour: '26.06.2014', opening_doors: '16:00'});
  158. event1.get('artists').add([mmready, zed]);
  159. var event2 = new Event({title: 'La grosse fiesta 2015', name_de: 'salsa'});
  160. event2.get('artists').add([mmready, zed]);
  161. var listOfEvents1 = new Events([event1, event2]);
  162. var eventListView = new ViewEvents({collection: listOfEvents1});
  163. var showEvent = new ViewShowEvent({model: event1});
  164. var listOfArtists = new Artists([mmready, zed]);
  165. var artistsListView = new ViewArtists({collection: listOfArtists});
  166. console.log('***************************************');
  167. console.log('***************************************');
  168. console.log('ListOfEvents1');
  169. console.log(listOfArtists.toJSON());
  170. console.log(JSON.stringify(listOfArtists));
  171. console.log('***************************************');
  172. console.log('***************************************');
  173. $(function() {
  174. $('#eventsList').append(eventListView.el);
  175. $('#artistsList').hide();
  176. $('#artistsList').append(artistsListView.el);
  177. $('#showDetailEvent').hide();
  178. $('#showDetailEvent').append(showEvent.el);
  179. /////////// bare de navigation ////////////////////
  180. $('ul#mainNav a').on('click', function(e) {
  181. menuElementClickHandler($(this));
  182. e.preventDefault();
  183. return false;
  184. });
  185. $('a').on('click', function(e) {
  186. menuElementClickHandler($(this));
  187. e.preventDefault();
  188. return false;
  189. });
  190. function menuElementClickHandler(menuElement) {
  191. // Recup?re la section corespondante (attribut href du lien)
  192. var sectionName = menuElement.attr('href');
  193. // Si la section est d?j? active ne rien faire
  194. var actualSectionName = location.pathname.split("/").pop();
  195. if (sectionName === actualSectionName) {
  196. return;
  197. }
  198. // Simule le changement d'url ver cette section
  199. history.pushState(null, null, sectionName);
  200. // Affiche la section en question
  201. menuGoToSection(sectionName);
  202. }
  203. function menuGoToSection(sectionName) {
  204. var nodeIdToShow = '#' + sectionName;
  205. // Enl?ve la classe "activ" de tous les liens
  206. $('ul#mainNav a').removeClass('activ');
  207. // Rajoute la classe "activ" pour le lien actuellement click?
  208. $("ul#mainNav a[href='" + sectionName + "']").addClass('activ');
  209. // Enl?ve la classe "activ" de tous les liens
  210. $('span#linkEventsList a').removeClass('activ');
  211. // Rajoute la classe "activ" pour le lien actuellement click?
  212. $("span#linkEventsList a[href='" + sectionName + "']").addClass('activ')
  213. // Cache toutes les <section>
  214. $('section').hide();
  215. // Affichage de la bonne <section>
  216. $(nodeIdToShow).show();
  217. }
  218. });
  219. >>>>>>> FETCH_HEAD