efe943361b7456e9179c48a3724f6248e6a1bb7e
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)   else { 
11)     groups.each(function(idx,group) {
12)       $(grouplist).prepend('<li><a class="group-choice">'+group.name+'</a></li>');
13)     });
14) 
15)     $('a.group-choice').each(function(idx,a) {
16)       $(a).bind('click',on_group_choice_click);
17)     });
18)   }
19) }
20) 
21) 
22) /****************
23)  * Add group
24)  ****************/
Benjamin Renard Hide navbar-groupe-collapse...

Benjamin Renard authored 10 years ago

25) 
26) on_click_add_group_btn=function(e) {
Benjamin Renard Add function navbar_collaps...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

28)   $('#add_group_modal').modal('show');
29) }
30) 
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

54) }
55) 
56) /****************
57)  * Nav bars
58)  ****************/
59) on_group_choice_click=function(e) {
60)   view_group(groups[$(e.target).html()]);
Benjamin Renard Add function navbar_collaps...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

95) }
96) 
97) show_contributions=function(group,contributor_name) {
98)   var tbody=$($('#view-group #contributions tbody')[0]);
99)   tbody.html('');
100)   total=$($('#view-group #total-value')[0]);
101)   contributions=group.contributionsByContributorName(contributor_name);
102)   if (contributions.length==0) {
103)     tbody.append('<tr><td colspan=3>Aucune contributions</td></tr>');
104)     total.html('0,00 €');
105)   }
106)   else {
107)     sum=0;
108)     for (idx in contributions) {
109)       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>';
110)       tbody.append('<tr><td>'+contributions[idx].getTitle()+'</td><td>'+contributions[idx].cost+' €</td>'+col_actions+'</tr>');
111)       sum+=contributions[idx].cost;
112)     }
113)     total.html(sum+' €');
114)   }
Benjamin Renard Clean code

Benjamin Renard authored 10 years ago

115)   
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

116)   $('.contribution_delete_btn').bind('click',on_contribution_delete_btn_click);
117)   $('.contribution_edit_btn').bind('click',on_contribution_edit_btn_click);
118) }
119) 
Benjamin Renard Add edit contributor feature

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

245)     $('#add_contribution_cost')[0].focus();
246)     alert('Coût incorrect !');
247)     return;
248)   }
249)   cost=parseFloat(cost.replace(',','.'));
Benjamin Renard Clean code

Benjamin Renard authored 10 years ago

250)   
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

251)   var date=$('#add_contribution_date')[0].value;
252)   if (date!='') {
253)     if(!RegExp('^[0-3][0-9]\/[0-1][0-9]\/[0-2][0-9][0-9][0-9]$').test(date)) {
254)       $('#add_contribution_date')[0].focus();
255)       alert('Date incorrect !');
256)       return;
257)     }
258)     date=moment(date,'DD-MM-YYYY').toDate();
259)     if (jQuery.type(date)!='date') {
260)       alert('Date non-reconnu !');
261)       return;
262)     }
263)   }
264)   else {
265)     date=new Date();
266)   }
Benjamin Renard Clean code

Benjamin Renard authored 10 years ago

267)   
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

268)   if($('#add_contribution_modal #edit_id')[0].value=='-1') {
269)     group.addContribution(new Contribution(contributor,cost,title,date));
270)   }
271)   else {
272)     contribution_id=$('#add_contribution_modal #edit_id')[0].value;
273)     group.replaceContribution(contribution_id,new Contribution(contributor,cost,title,date));
274)   }
275)   show_contributions(group,contributor_name);
276)   $('#add_contribution_modal').modal('hide');
277)   $('#add_contribution_modal form')[0].reset();
278)   groups.save();
279) }
280) 
281) on_close_add_contribution_modal=function () {
282)   $('#add_contribution_modal form')[0].reset();
283) }
284) 
285) on_contribution_delete_btn_click=function(e) {
Benjamin Renard Replace usage of view-group...

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

319)   navbar_collapse_hide();
Benjamin Renard Initial commit

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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