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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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

Benjamin Renard authored 10 years ago

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