00af957bccb1ef11d82e072c4d72904360af2da6
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()]);
62) }
63) 
64) /****************
65)  * View group
66)  ****************/
67) view_group=function(group) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

118)   $('#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

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

282)   contribution_id=$($(e.target).parents('div')[0]).data('id');
283)   contribution=group.contributions[contribution_id];
284)   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} );
285) }
286) 
287) on_confirm_contribution_delete=function(data) {
288)   delete data.group.contributions[data.contribution_id];
289)   groups.save();
290)   on_contributor_change();
291) }
292) 
293) on_contribution_edit_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

298)   contribution_id=$($(e.target).parents('div')[0]).data('id');
299)   contribution=group.contributions[contribution_id];
300)   $('#add_contribution_modal #add_contribution_contributor_name')[0].value=contribution.contributor.name;
301)   console.log($('#add_contribution_modal #add_contribution_contributor_name')[0]);
302)   console.log(contribution.contributor.name);
303)   $('#add_contribution_modal #add_contribution_title')[0].value=contribution.getTitle();
304)   $('#add_contribution_modal #add_contribution_cost')[0].value=contribution.cost;
305)   $('#add_contribution_modal #add_contribution_date')[0].value=moment(contribution.date).format('DD/MM/YYYY');
306)   $('#add_contribution_modal #edit_id')[0].value=contribution_id;
307)   $('#add_contribution_modal').modal('show');
308) }
309) 
310) 
311) 
312) /********************
313)  * Clear local data
314)  ********************/
315) clear_local_data=function() {
316)   myconfirm('Etes-vous sûre de vouloir supprimer les données locales ?',on_confirm_clear_local_data);
317) }
318) 
319) on_confirm_clear_local_data=function(data) {
320)   localStorage.clear();
321)   location.reload();
322) }
323) 
324) /*********************
325)  * View balance
326)  *********************/
327) 
328) on_display_balance_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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