2eeb45c6a695fe3d676fe4c80501ae51765cf69c
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)  ****************/
26) on_show_add_group_modal=function(e) {
27)   $('#add_group_modal #add_group_name').focus();
28) }
29) 
30) on_valid_add_group_modal=function () {
31)   var name=$('#add_group_name')[0].value;
32)   if (name=='') {
33)     alert('Vous devez saisir un nom !');
34)     return;
35)   }
36)   if (groups[name]!==undefined) {
37)     alert('Ce groupe exite déjà !');
38)     return;
39)   }
40)   groups[name]=new Group(name);
41)   refresh_group_list();
42)   $('#add_group_modal').modal('hide');
43)   groups.save();
44)   view_group(groups[name]);
45) }
46) 
47) on_close_add_group_modal=function () {
Benjamin Renard Fix error on add_group_moda...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

49) }
50) 
51) /****************
52)  * Nav bars
53)  ****************/
54) on_group_choice_click=function(e) {
55)   view_group(groups[$(e.target).html()]);
56) }
57) 
58) /****************
59)  * View group
60)  ****************/
61) view_group=function(group) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

108) /******************************
109)  * Add/Edit/remove contributor
110)  ******************************/
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

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

Benjamin Renard authored 10 years ago

116)   $('#add_contributor_modal').modal('show');
117) }
118) 
119) on_show_add_contributor_modal=function(e) {
120)   $('#add_contributor_modal #add_contributor_name').focus();
121) }
122) 
123) on_valid_add_contributor_modal=function() {
124)   var group=groups[$('#add_contributor_modal #group_name')[0].value];
125)   var name=$('#add_contributor_name')[0].value;
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

127)   if (name=='') {
128)     alert('Vous devez saisir un nom !');
129)     return;
130)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

133)     alert('Un contributor porte déjà ce nom !');
134)     return;
135)   }
136)   var email=$('#add_contributor_email')[0].value;
137)   if (email=='') {
138)     alert('Vous devez saisir un email !');
139)     return;
140)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

143)     alert('Un contributor utilise déjà cet email !');
144)     return;
145)   }
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

146)   if(edit_id=='-1') {
147)     group.addContributor(new Contributor(name,email));
148)   }
149)   else {
150)     group.replaceContributor(edit_id,new Contributor(name,email));
151)   }
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

152)   set_contributors(group);
153)   $('#add_contributor_modal').modal('hide');
154)   $('#add_contributor_name')[0].value='';
155)   $('#add_contributor_email')[0].value='';
156)   groups.save();
157) 
158) }
159) 
160) on_close_add_contributor_modal=function () {
161)   $('#add_contributor_name')[0].value='';
162)   $('#add_contributor_email')[0].value='';
163) }
164) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

178) on_click_del_contributor_btn=function() {
179)   contributor=$('#view-group #contributor')[0].value;
180)   question='Voulez-vous vraiment supprimer '+contributor+' ?';
181)   myconfirm(question,on_confirm_del_contributor,null,contributor);
182) }
183) 
184) on_confirm_del_contributor=function(contributor) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

276)   contribution_id=$($(e.target).parents('div')[0]).data('id');
277)   contribution=group.contributions[contribution_id];
278)   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} );
279) }
280) 
281) on_confirm_contribution_delete=function(data) {
282)   delete data.group.contributions[data.contribution_id];
283)   groups.save();
284)   on_contributor_change();
285) }
286) 
287) on_contribution_edit_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];
289)   $('#add_contribution_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
Benjamin Renard Customize add_contribution_...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

346)   myconfirm('Etes-vous sûre de vouloir supprimer le group '+group.name+' ?',on_confirm_remove_group,null,group);
347)   
348) }
349) 
350) on_confirm_remove_group=function(group) {
351)   if(groups.removeGroup(group.name)) {
352)     groups.save();
353)     location.reload();
354)   }
355)   else {
356)     alert('Erreur en supprimant le groupe '+group.name+' :(');
357)   }
358) }
359) 
360) 
361) /*********************
362)  * Activate
363)  *********************/
364) $( document ).ready( function() {
365)   if(typeof(Storage)!=="undefined"){
366)     groups=new GroupList();
367)     groups.loadFromLocalStorage();
368)     refresh_group_list();
369)   }
370)   else {
371)     alert('Local storage not supported !');
372)   }
373) 
374)   $('#add_group_submit').bind('click',on_valid_add_group_modal);
375)   $("#add_group_modal").on('shown.bs.modal',on_show_add_group_modal);
376)   $("#add_group_modal").on('hidden.bs.modal',on_close_add_group_modal);
377)   $("#add_group_modal form").on('submit',on_valid_add_group_modal);
378) 
379)   $('#clear_local_data').bind('click',clear_local_data);
380) 
381)   $('#view-group #contributor').bind('change',on_contributor_change);
382) 
383)   $('#add_contributor_btn').bind('click',on_click_add_contributor_btn);
384)   $('#add_contributor_submit').bind('click',on_valid_add_contributor_modal);
385)   $("#add_contributor_modal").on('shown.bs.modal',on_show_add_contributor_modal);
386)   $("#add_contributor_modal").on('hidden.bs.modal',on_close_add_contributor_modal);
387)   $("#add_contributor_modal form").on('submit',on_valid_add_contributor_modal);
388) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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