383e37a792d588c3458c91812b095ac2995e76ba
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

1) refresh_group_list=function() {
2)   grouplist=$('#group-choice')[0];
3)   $('a.group-choice').each(function(idx,a) {
4)     $(a).parent().remove();
5)   });
6) 
7)   if (groups.count()==0) {
8)     $(grouplist).prepend('<li><a class="group-choice">Aucune groupe</a></li>');
9)     
10)   }
11)   else { 
12)     groups.each(function(idx,group) {
13)       $(grouplist).prepend('<li><a class="group-choice">'+group.name+'</a></li>');
14)     });
15) 
16)     $('a.group-choice').each(function(idx,a) {
17)       $(a).bind('click',on_group_choice_click);
18)     });
19)   }
20) }
21) 
22) 
23) /****************
24)  * Add group
25)  ****************/
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

26) 
27) on_click_add_group_btn=function(e) {
28)   $('#navbar-groupe-collapse').collapse('hide');
29)   $('#add_group_modal').modal('show');
30) }
31) 
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

32) on_show_add_group_modal=function(e) {
33)   $('#add_group_modal #add_group_name').focus();
34) }
35) 
36) on_valid_add_group_modal=function () {
37)   var name=$('#add_group_name')[0].value;
38)   if (name=='') {
39)     alert('Vous devez saisir un nom !');
40)     return;
41)   }
42)   if (groups[name]!==undefined) {
43)     alert('Ce groupe exite déjà !');
44)     return;
45)   }
46)   groups[name]=new Group(name);
47)   refresh_group_list();
48)   $('#add_group_modal').modal('hide');
49)   groups.save();
50)   view_group(groups[name]);
51) }
52) 
53) on_close_add_group_modal=function () {
Benjamin Renard Fix error on add_group_moda...

Benjamin Renard authored 10 years ago

54)   $('#add_group_modal form')[0].reset();
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

55) }
56) 
57) /****************
58)  * Nav bars
59)  ****************/
60) on_group_choice_click=function(e) {
61)   view_group(groups[$(e.target).html()]);
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

62)   $('#navbar-groupe-collapse').collapse('hide');
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

63) }
64) 
65) /****************
66)  * View group
67)  ****************/
68) view_group=function(group) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

69)   $('#view-group h1 span:first').html(group.name);
70)   $('#view-group #group_name')[0].value=group.name;
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

71)   set_contributors(group);
72)   on_contributor_change();
73)   $('#view-group').css('display','block');
74) }
75) 
76) set_contributors=function(group) {
77)   $('#view-group #contributor option').remove();
78)   if(group.contributors.length==0) {
79)     $('#view-group #contributor').append('<option>Aucun participant</option>');
80)   }
81)   else {
82)     $(group.contributors).each(function(idx,c) {
83)       $('#view-group #contributor').append('<option value="'+c.name+'">'+c.name+'</option>');
84)     });
85)   }
86) }
87) 
88) on_contributor_change=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

89)   show_contributions(groups[$('#view-group #group_name')[0].value],$('#view-group #contributor')[0].value);
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

90) }
91) 
92) show_contributions=function(group,contributor_name) {
93)   var tbody=$($('#view-group #contributions tbody')[0]);
94)   tbody.html('');
95)   total=$($('#view-group #total-value')[0]);
96)   contributions=group.contributionsByContributorName(contributor_name);
97)   if (contributions.length==0) {
98)     tbody.append('<tr><td colspan=3>Aucune contributions</td></tr>');
99)     total.html('0,00 €');
100)   }
101)   else {
102)     sum=0;
103)     for (idx in contributions) {
104)       col_actions='<td><div class="btn-group" data-id="'+contributions[idx].id+'"><button type="button" class="btn btn-default contribution_edit_btn"><span class="glyphicon glyphicon-edit"></span></button><button type="button" class="btn btn-default contribution_delete_btn"><span class="glyphicon glyphicon-trash"></span></button></div></td>';
105)       tbody.append('<tr><td>'+contributions[idx].getTitle()+'</td><td>'+contributions[idx].cost+' €</td>'+col_actions+'</tr>');
106)       sum+=contributions[idx].cost;
107)     }
108)     total.html(sum+' €');
109)   }
110) 
111)   $('.contribution_delete_btn').bind('click',on_contribution_delete_btn_click);
112)   $('.contribution_edit_btn').bind('click',on_contribution_edit_btn_click);
113) }
114) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

115) /******************************
116)  * Add/Edit/remove contributor
117)  ******************************/
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

118) on_click_add_contributor_btn=function() {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

119)   $('#add_contributor_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

120)   $($('#add_contributor_modal h4')[0]).html('Ajouter un participant');
121)   $($('#add_contributor_modal #add_contributor_submit')[0]).html('Ajouter');
122)   $('#view-group #edit_id')[0].value='-1';
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

123)   $('#add_contributor_modal').modal('show');
124) }
125) 
126) on_show_add_contributor_modal=function(e) {
127)   $('#add_contributor_modal #add_contributor_name').focus();
128) }
129) 
130) on_valid_add_contributor_modal=function() {
131)   var group=groups[$('#add_contributor_modal #group_name')[0].value];
132)   var name=$('#add_contributor_name')[0].value;
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

133)   edit_id=$('#view-group #edit_id')[0].value;
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

134)   if (name=='') {
135)     alert('Vous devez saisir un nom !');
136)     return;
137)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

138)   duplicate=group.contributorByName(name);
139)   if (duplicate!=undefined && duplicate.id!=edit_id) {
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

140)     alert('Un contributor porte déjà ce nom !');
141)     return;
142)   }
143)   var email=$('#add_contributor_email')[0].value;
144)   if (email=='') {
145)     alert('Vous devez saisir un email !');
146)     return;
147)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

148)   duplicate=group.contributorByEmail(email)
149)   if (duplicate!=undefined && duplicate.id!=edit_id) {
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

150)     alert('Un contributor utilise déjà cet email !');
151)     return;
152)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

153)   if(edit_id=='-1') {
154)     group.addContributor(new Contributor(name,email));
155)   }
156)   else {
157)     group.replaceContributor(edit_id,new Contributor(name,email));
158)   }
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

159)   set_contributors(group);
160)   $('#add_contributor_modal').modal('hide');
161)   $('#add_contributor_name')[0].value='';
162)   $('#add_contributor_email')[0].value='';
163)   groups.save();
164) 
165) }
166) 
167) on_close_add_contributor_modal=function () {
168)   $('#add_contributor_name')[0].value='';
169)   $('#add_contributor_email')[0].value='';
170) }
171) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

172) on_edit_contributor_btn_click=function(e) {
173)   var group=groups[$('#view-group #group_name')[0].value];
174)   $('#add_contributor_modal #group_name')[0].value=group.name;
175)   contributor_name=$('#view-group #contributor')[0].value;
176)   contributor=group.contributorByName(contributor_name);
177)   $('#view-group #edit_id')[0].value=contributor.id;
178)   $('#add_contributor_modal #add_contributor_name')[0].value=contributor.name;
179)   $('#add_contributor_modal #add_contributor_email')[0].value=contributor.email;
180)   $($('#add_contributor_modal h4')[0]).html('Editer un participant');
181)   $($('#add_contributor_modal #add_contributor_submit')[0]).html('Valider');
182)   $('#add_contributor_modal').modal('show');
183) }
184) 
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

185) on_click_del_contributor_btn=function() {
186)   contributor=$('#view-group #contributor')[0].value;
187)   question='Voulez-vous vraiment supprimer '+contributor+' ?';
188)   myconfirm(question,on_confirm_del_contributor,null,contributor);
189) }
190) 
191) on_confirm_del_contributor=function(contributor) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

192)   var group=groups[$('#view-group #group_name')[0].value];
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

193)   group.removeContributor(contributor);
194)   set_contributors(group);
195)   groups.save();
196) }
197) 
198) /********************************
199)  * Add/edit/delete contribution
200)  ********************************/
201) on_show_add_contribution_modal=function(e) {
202)   var cs=$($('#add_contribution_modal #add_contribution_contributor_name')[0]);
203)   cs.html('');
204)   $('#view-group #contributor option').each(function(idx,option) {
205)     cs.append($(option).clone());
206)   });
207)   cs[0].value = $('#view-group #contributor')[0].value;
208)   $('#add_contribution_modal #add_contribution_title').focus();
209) }
210) 
211) on_click_add_contribution_btn=function() {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

212)   $('#add_contribution_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

213)   $('#add_contribution_modal #edit_id')[0].value='-1';
Benjamin Renard Customize add_contribution_...

Benjamin Renard authored 10 years ago

214)   $($('#add_contribution_modal h4')[0]).html('Ajouter une contribution');
215)   $($('#add_contribution_modal #add_contribution_submit')[0]).html('Ajouter');
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

216)   $('#add_contribution_modal').modal('show');
217) }
218) 
219) on_valid_add_contribution_modal=function(e) {
220)   e.preventDefault();
221)   var group=groups[$('#add_contribution_modal #group_name')[0].value];
222)   var contributor_name=$('#add_contribution_contributor_name')[0].value;
223)   var contributor=group.contributorByName(contributor_name);
224)   if (contributor==undefined) {
225)     alert('Participant inconu !');
226)     return;
227)   }
228)   var title=$('#add_contribution_title')[0].value;
229)   if (title=='') {
230)     $('#add_contribution_title')[0].focus();
231)     alert('Vous devez saisir un titre !');
232)     return;
233)   }
234)   var cost=$('#add_contribution_cost')[0].value;
235)   if (cost=='') {
236)     $('#add_contribution_cost')[0].focus();
237)     alert('Vous devez saisir un coût !');
238)     return;
239)   }
Benjamin Renard Add support of dot and comm...

Benjamin Renard authored 10 years ago

240)   else if(!RegExp('^[0-9]*((,|\.)[0-9]{1,2})*$').test(cost)) {
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

241)     $('#add_contribution_cost')[0].focus();
242)     alert('Coût incorrect !');
243)     return;
244)   }
245)   cost=parseFloat(cost.replace(',','.'));
246) 
247)   var date=$('#add_contribution_date')[0].value;
248)   if (date!='') {
249)     if(!RegExp('^[0-3][0-9]\/[0-1][0-9]\/[0-2][0-9][0-9][0-9]$').test(date)) {
250)       $('#add_contribution_date')[0].focus();
251)       alert('Date incorrect !');
252)       return;
253)     }
254)     date=moment(date,'DD-MM-YYYY').toDate();
255)     if (jQuery.type(date)!='date') {
256)       alert('Date non-reconnu !');
257)       return;
258)     }
259)   }
260)   else {
261)     date=new Date();
262)   }
263) 
264)   if($('#add_contribution_modal #edit_id')[0].value=='-1') {
265)     group.addContribution(new Contribution(contributor,cost,title,date));
266)   }
267)   else {
268)     contribution_id=$('#add_contribution_modal #edit_id')[0].value;
269)     group.replaceContribution(contribution_id,new Contribution(contributor,cost,title,date));
270)   }
271)   show_contributions(group,contributor_name);
272)   $('#add_contribution_modal').modal('hide');
273)   $('#add_contribution_modal form')[0].reset();
274)   groups.save();
275) }
276) 
277) on_close_add_contribution_modal=function () {
278)   $('#add_contribution_modal form')[0].reset();
279) }
280) 
281) on_contribution_delete_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

282)   var group=groups[$('#view-group #group_name')[0].value];
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

283)   contribution_id=$($(e.target).parents('div')[0]).data('id');
284)   contribution=group.contributions[contribution_id];
285)   myconfirm('Etes-vous sûre de vouloir supprimer la participation '+contribution.getTitle()+' de '+contribution.contributor.name+' ?',on_confirm_contribution_delete,null,{'group':group,'contribution_id':contribution_id, 'contribution': contribution} );
286) }
287) 
288) on_confirm_contribution_delete=function(data) {
289)   delete data.group.contributions[data.contribution_id];
290)   groups.save();
291)   on_contributor_change();
292) }
293) 
294) on_contribution_edit_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

295)   var group=groups[$('#view-group #group_name')[0].value];
296)   $('#add_contribution_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
Benjamin Renard Customize add_contribution_...

Benjamin Renard authored 10 years ago

297)   $($('#add_contribution_modal h4')[0]).html('Editer une contribution');
298)   $($('#add_contribution_modal #add_contribution_submit')[0]).html('Valider');
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

299)   contribution_id=$($(e.target).parents('div')[0]).data('id');
300)   contribution=group.contributions[contribution_id];
301)   $('#add_contribution_modal #add_contribution_contributor_name')[0].value=contribution.contributor.name;
302)   console.log($('#add_contribution_modal #add_contribution_contributor_name')[0]);
303)   console.log(contribution.contributor.name);
304)   $('#add_contribution_modal #add_contribution_title')[0].value=contribution.getTitle();
305)   $('#add_contribution_modal #add_contribution_cost')[0].value=contribution.cost;
306)   $('#add_contribution_modal #add_contribution_date')[0].value=moment(contribution.date).format('DD/MM/YYYY');
307)   $('#add_contribution_modal #edit_id')[0].value=contribution_id;
308)   $('#add_contribution_modal').modal('show');
309) }
310) 
311) 
312) 
313) /********************
314)  * Clear local data
315)  ********************/
316) clear_local_data=function() {
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

317)   $('#navbar-groupe-collapse').collapse('hide');
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

318)   myconfirm('Etes-vous sûre de vouloir supprimer les données locales ?',on_confirm_clear_local_data);
319) }
320) 
321) on_confirm_clear_local_data=function(data) {
322)   localStorage.clear();
323)   location.reload();
324) }
325) 
326) /*********************
327)  * View balance
328)  *********************/
329) 
330) on_display_balance_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

331)   group=groups[$('#view-group #group_name')[0].value];
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

332)   display_balance(group);
333) }
334) 
335) display_balance=function(group) {
336)   bal=group.balance();
337)   tbody=$($('#display_balance_modal tbody')[0]);
338)   tbody.html('');
339)   sum=0;
340)   for (c in bal) {
341)     tbody.append('<tr><td>'+c+'</td><td>'+bal[c]+' €</td></tr>');
342)     sum+=bal[c];
343)   }
344)   $('#display_balance_modal #total-value').html(sum+' €');
345)   $('#display_balance_modal').modal('show');
346) }
347) 
348) /*********************
349)  * Remove group
350)  *********************/
351) 
352) on_remove_group_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

353)   group=groups[$('#view-group #group_name')[0].value];
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

354)   myconfirm('Etes-vous sûre de vouloir supprimer le group '+group.name+' ?',on_confirm_remove_group,null,group);
355)   
356) }
357) 
358) on_confirm_remove_group=function(group) {
359)   if(groups.removeGroup(group.name)) {
360)     groups.save();
361)     location.reload();
362)   }
363)   else {
364)     alert('Erreur en supprimant le groupe '+group.name+' :(');
365)   }
366) }
367) 
368) 
369) /*********************
370)  * Activate
371)  *********************/
372) $( document ).ready( function() {
373)   if(typeof(Storage)!=="undefined"){
374)     groups=new GroupList();
375)     groups.loadFromLocalStorage();
376)     refresh_group_list();
377)   }
378)   else {
379)     alert('Local storage not supported !');
380)   }
381) 
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

382)   $('#add_group_btn').bind('click',on_click_add_group_btn);
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

383)   $('#add_group_submit').bind('click',on_valid_add_group_modal);
384)   $("#add_group_modal").on('shown.bs.modal',on_show_add_group_modal);
385)   $("#add_group_modal").on('hidden.bs.modal',on_close_add_group_modal);
386)   $("#add_group_modal form").on('submit',on_valid_add_group_modal);
387) 
388)   $('#clear_local_data').bind('click',clear_local_data);
389) 
390)   $('#view-group #contributor').bind('change',on_contributor_change);
391) 
392)   $('#add_contributor_btn').bind('click',on_click_add_contributor_btn);
393)   $('#add_contributor_submit').bind('click',on_valid_add_contributor_modal);
394)   $("#add_contributor_modal").on('shown.bs.modal',on_show_add_contributor_modal);
395)   $("#add_contributor_modal").on('hidden.bs.modal',on_close_add_contributor_modal);
396)   $("#add_contributor_modal form").on('submit',on_valid_add_contributor_modal);
397) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

398)   $('#edit_contributor_btn').bind('click',on_edit_contributor_btn_click);