Benjamin Renard commited on 2014-01-06 02:04:57
Showing 3 changed files, with 45 additions and 8 deletions.
... | ... |
@@ -105,11 +105,14 @@ show_contributions=function(group,contributor_name) { |
105 | 105 |
$('.contribution_edit_btn').bind('click',on_contribution_edit_btn_click); |
106 | 106 |
} |
107 | 107 |
|
108 |
-/********************* |
|
109 |
- * Add contributor |
|
110 |
- *********************/ |
|
108 |
+/****************************** |
|
109 |
+ * Add/Edit/remove contributor |
|
110 |
+ ******************************/ |
|
111 | 111 |
on_click_add_contributor_btn=function() { |
112 | 112 |
$('#add_contributor_modal #group_name')[0].value=$('#view-group #group_name')[0].value; |
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'; |
|
113 | 116 |
$('#add_contributor_modal').modal('show'); |
114 | 117 |
} |
115 | 118 |
|
... | ... |
@@ -120,11 +123,13 @@ on_show_add_contributor_modal=function(e) { |
120 | 123 |
on_valid_add_contributor_modal=function() { |
121 | 124 |
var group=groups[$('#add_contributor_modal #group_name')[0].value]; |
122 | 125 |
var name=$('#add_contributor_name')[0].value; |
126 |
+ edit_id=$('#view-group #edit_id')[0].value; |
|
123 | 127 |
if (name=='') { |
124 | 128 |
alert('Vous devez saisir un nom !'); |
125 | 129 |
return; |
126 | 130 |
} |
127 |
- if (group.contributorByName(name)!=undefined) { |
|
131 |
+ duplicate=group.contributorByName(name); |
|
132 |
+ if (duplicate!=undefined && duplicate.id!=edit_id) { |
|
128 | 133 |
alert('Un contributor porte déjà ce nom !'); |
129 | 134 |
return; |
130 | 135 |
} |
... | ... |
@@ -133,11 +138,17 @@ on_valid_add_contributor_modal=function() { |
133 | 138 |
alert('Vous devez saisir un email !'); |
134 | 139 |
return; |
135 | 140 |
} |
136 |
- if (group.contributorByEmail(email)!=undefined) { |
|
141 |
+ duplicate=group.contributorByEmail(email) |
|
142 |
+ if (duplicate!=undefined && duplicate.id!=edit_id) { |
|
137 | 143 |
alert('Un contributor utilise déjà cet email !'); |
138 | 144 |
return; |
139 | 145 |
} |
140 |
- group.contributors.push(new Contributor(name,email)); |
|
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 |
+ } |
|
141 | 152 |
set_contributors(group); |
142 | 153 |
$('#add_contributor_modal').modal('hide'); |
143 | 154 |
$('#add_contributor_name')[0].value=''; |
... | ... |
@@ -151,6 +162,19 @@ on_close_add_contributor_modal=function () { |
151 | 162 |
$('#add_contributor_email')[0].value=''; |
152 | 163 |
} |
153 | 164 |
|
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 |
+ |
|
154 | 178 |
on_click_del_contributor_btn=function() { |
155 | 179 |
contributor=$('#view-group #contributor')[0].value; |
156 | 180 |
question='Voulez-vous vraiment supprimer '+contributor+' ?'; |
... | ... |
@@ -358,6 +382,7 @@ $( document ).ready( function() { |
358 | 382 |
$("#add_contributor_modal").on('hidden.bs.modal',on_close_add_contributor_modal); |
359 | 383 |
$("#add_contributor_modal form").on('submit',on_valid_add_contributor_modal); |
360 | 384 |
|
385 |
+ $('#edit_contributor_btn').bind('click',on_edit_contributor_btn_click); |
|
361 | 386 |
$('#del_contributor_btn').bind('click',on_click_del_contributor_btn); |
362 | 387 |
|
363 | 388 |
$('#add_contribution_btn').bind('click',on_click_add_contribution_btn); |
... | ... |
@@ -119,6 +119,15 @@ function Group(name,data) { |
119 | 119 |
this.contributions[idx]=c; |
120 | 120 |
} |
121 | 121 |
|
122 |
+ this.addContributor=function(c) { |
|
123 |
+ c.id=this.contributors.length; |
|
124 |
+ this.contributors.push(c); |
|
125 |
+ } |
|
126 |
+ |
|
127 |
+ this.replaceContributor=function(idx,c) { |
|
128 |
+ c.id=idx; |
|
129 |
+ this.contributors[idx]=c; |
|
130 |
+ } |
|
122 | 131 |
|
123 | 132 |
this.balance=function() { |
124 | 133 |
ret={} |
... | ... |
@@ -141,7 +150,8 @@ function Group(name,data) { |
141 | 150 |
for (idx in data.contributors) { |
142 | 151 |
this.contributors.push(new Contributor( |
143 | 152 |
data.contributors[idx].name, |
144 |
- data.contributors[idx].email |
|
153 |
+ data.contributors[idx].email, |
|
154 |
+ idx |
|
145 | 155 |
)); |
146 | 156 |
} |
147 | 157 |
} |
... | ... |
@@ -163,9 +173,10 @@ function Group(name,data) { |
163 | 173 |
} |
164 | 174 |
} |
165 | 175 |
|
166 |
-function Contributor(name,email) { |
|
176 |
+function Contributor(name,email,id) { |
|
167 | 177 |
this.name=name; |
168 | 178 |
this.email=email; |
179 |
+ this.id=id; |
|
169 | 180 |
this.export=function() { |
170 | 181 |
return { |
171 | 182 |
'name': this.name, |
... | ... |
@@ -77,6 +77,7 @@ body{ |
77 | 77 |
<h1><span>Noël</span><small><span id='edit_group_btn' class='glyphicon glyphicon-edit btn btn-sm'></span></small></h1> |
78 | 78 |
<form class="form-horizontal" role="form"> |
79 | 79 |
<input type='hidden' id='group_name' value='Noël'/> |
80 |
+ <input type='hidden' id='edit_id' value='-1' /> |
|
80 | 81 |
<div class="form-group"> |
81 | 82 |
<div class="input-group"> |
82 | 83 |
<span class="input-group-addon">Participant</span> |
83 | 84 |