e93c2445c30d4809ecc44f6fd2ac98d0a40851f9
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) {
Benjamin Renard Add function navbar_collaps...

Benjamin Renard authored 10 years ago

28)   navbar_collapse_hide();
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

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 Add function navbar_collaps...

Benjamin Renard authored 10 years ago

62)   navbar_collapse_hide();
63) }
64) 
65) navbar_collapse_hide=function() {
66)   if ($('#navbar-groupe-collapse').hasClass('in')) {
67)     $('#navbar-groupe-collapse').collapse('hide');
68)   }
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

69) }
70) 
71) /****************
72)  * View group
73)  ****************/
74) view_group=function(group) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

121) /******************************
122)  * Add/Edit/remove contributor
123)  ******************************/
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

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

Benjamin Renard authored 10 years ago

129)   $('#add_contributor_modal').modal('show');
130) }
131) 
132) on_show_add_contributor_modal=function(e) {
133)   $('#add_contributor_modal #add_contributor_name').focus();
134) }
135) 
136) on_valid_add_contributor_modal=function() {
137)   var group=groups[$('#add_contributor_modal #group_name')[0].value];
138)   var name=$('#add_contributor_name')[0].value;
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

140)   if (name=='') {
141)     alert('Vous devez saisir un nom !');
142)     return;
143)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

146)     alert('Un contributor porte déjà ce nom !');
147)     return;
148)   }
149)   var email=$('#add_contributor_email')[0].value;
150)   if (email=='') {
151)     alert('Vous devez saisir un email !');
152)     return;
153)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

156)     alert('Un contributor utilise déjà cet email !');
157)     return;
158)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

159)   if(edit_id=='-1') {
160)     group.addContributor(new Contributor(name,email));
161)   }
162)   else {
163)     group.replaceContributor(edit_id,new Contributor(name,email));
164)   }
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

165)   set_contributors(group);
166)   $('#add_contributor_modal').modal('hide');
167)   $('#add_contributor_name')[0].value='';
168)   $('#add_contributor_email')[0].value='';
169)   groups.save();
170) 
171) }
172) 
173) on_close_add_contributor_modal=function () {
174)   $('#add_contributor_name')[0].value='';
175)   $('#add_contributor_email')[0].value='';
176) }
177) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

191) on_click_del_contributor_btn=function() {
192)   contributor=$('#view-group #contributor')[0].value;
193)   question='Voulez-vous vraiment supprimer '+contributor+' ?';
194)   myconfirm(question,on_confirm_del_contributor,null,contributor);
195) }
196) 
197) on_confirm_del_contributor=function(contributor) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

289)   contribution_id=$($(e.target).parents('div')[0]).data('id');
290)   contribution=group.contributions[contribution_id];
291)   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} );
292) }
293) 
294) on_confirm_contribution_delete=function(data) {
295)   delete data.group.contributions[data.contribution_id];
296)   groups.save();
297)   on_contributor_change();
298) }
299) 
300) on_contribution_edit_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

305)   contribution_id=$($(e.target).parents('div')[0]).data('id');
306)   contribution=group.contributions[contribution_id];
307)   $('#add_contribution_modal #add_contribution_contributor_name')[0].value=contribution.contributor.name;
308)   console.log($('#add_contribution_modal #add_contribution_contributor_name')[0]);
309)   console.log(contribution.contributor.name);
310)   $('#add_contribution_modal #add_contribution_title')[0].value=contribution.getTitle();
311)   $('#add_contribution_modal #add_contribution_cost')[0].value=contribution.cost;
312)   $('#add_contribution_modal #add_contribution_date')[0].value=moment(contribution.date).format('DD/MM/YYYY');
313)   $('#add_contribution_modal #edit_id')[0].value=contribution_id;
314)   $('#add_contribution_modal').modal('show');
315) }
316) 
317) 
318) 
319) /********************
320)  * Clear local data
321)  ********************/
322) clear_local_data=function() {
Benjamin Renard Add function navbar_collaps...

Benjamin Renard authored 10 years ago

323)   navbar_collapse_hide();
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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