Benjamin Renard commited on 2014-01-16 19:16:29
Showing 3 changed files, with 51 additions and 31 deletions.
| ... | ... |
@@ -9,7 +9,7 @@ refresh_group_list=function() {
|
| 9 | 9 |
} |
| 10 | 10 |
else {
|
| 11 | 11 |
groups.each(function(idx,group) {
|
| 12 |
- $(grouplist).prepend('<li><a class="group-choice">'+group.name+'</a></li>');
|
|
| 12 |
+ $(grouplist).prepend('<li><a class="group-choice" data-uuid="'+group.uuid+'">'+group.name+'</a></li>');
|
|
| 13 | 13 |
}); |
| 14 | 14 |
|
| 15 | 15 |
$('a.group-choice').each(function(idx,a) {
|
| ... | ... |
@@ -43,11 +43,11 @@ on_valid_add_group_modal=function (e) {
|
| 43 | 43 |
alert('Ce groupe exite déjà !');
|
| 44 | 44 |
return; |
| 45 | 45 |
} |
| 46 |
- groups[name]=new Group(name); |
|
| 46 |
+ var uuid=groups.newGroup(name); |
|
| 47 | 47 |
refresh_group_list(); |
| 48 | 48 |
$('#add_group_modal').modal('hide');
|
| 49 | 49 |
groups.save(); |
| 50 |
- view_group(groups[name]); |
|
| 50 |
+ view_group(groups[uuid]); |
|
| 51 | 51 |
} |
| 52 | 52 |
|
| 53 | 53 |
on_close_add_group_modal=function () {
|
| ... | ... |
@@ -58,7 +58,7 @@ on_close_add_group_modal=function () {
|
| 58 | 58 |
* Nav bars |
| 59 | 59 |
****************/ |
| 60 | 60 |
on_group_choice_click=function(e) {
|
| 61 |
- view_group(groups[$(e.target).html()]); |
|
| 61 |
+ view_group(groups[$(e.target).data('uuid')]);
|
|
| 62 | 62 |
navbar_collapse_hide(); |
| 63 | 63 |
} |
| 64 | 64 |
|
| ... | ... |
@@ -102,7 +102,7 @@ view_home=function() {
|
| 102 | 102 |
sum+=value; |
| 103 | 103 |
diff='<td class="positive">+'+value.toFixed(2)+' €</td>'; |
| 104 | 104 |
} |
| 105 |
- tbody.html(tbody.html()+'<tr><td><a class="group-link">'+g+'</a></td>'+diff+'</tr>'); |
|
| 105 |
+ tbody.html(tbody.html()+'<tr><td><a class="group-link">'+balances[g].name+'</a></td>'+diff+'</tr>'); |
|
| 106 | 106 |
} |
| 107 | 107 |
} |
| 108 | 108 |
$('#view-home #mybalances a.group-link').bind('click',function(e) {
|
| ... | ... |
@@ -129,8 +129,8 @@ view_home=function() {
|
| 129 | 129 |
* View group |
| 130 | 130 |
****************/ |
| 131 | 131 |
view_group=function(group) {
|
| 132 |
+ $('#view-group').data('uuid',group.uuid);
|
|
| 132 | 133 |
$('#view-group h1 span:first').html(group.name);
|
| 133 |
- $('#view-group #group_name')[0].value=group.name;
|
|
| 134 | 134 |
set_contributors(group); |
| 135 | 135 |
on_contributor_change(); |
| 136 | 136 |
view_part('#view-group');
|
| ... | ... |
@@ -149,7 +149,7 @@ set_contributors=function(group) {
|
| 149 | 149 |
} |
| 150 | 150 |
|
| 151 | 151 |
on_contributor_change=function(e) {
|
| 152 |
- show_contributions(groups[$('#view-group #group_name')[0].value],$('#view-group #contributor')[0].value);
|
|
| 152 |
+ show_contributions(groups[$('#view-group').data('uuid')],$('#view-group #contributor')[0].value);
|
|
| 153 | 153 |
} |
| 154 | 154 |
|
| 155 | 155 |
show_contributions=function(group,contributor_name) {
|
| ... | ... |
@@ -179,7 +179,7 @@ show_contributions=function(group,contributor_name) {
|
| 179 | 179 |
* Add/Edit/remove contributor |
| 180 | 180 |
******************************/ |
| 181 | 181 |
on_click_add_contributor_btn=function() {
|
| 182 |
- $('#add_contributor_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
|
|
| 182 |
+ $('#add_contributor_modal').data('group-uuid',('#view-group').data('uuid'))
|
|
| 183 | 183 |
$($('#add_contributor_modal h4')[0]).html('Ajouter un participant');
|
| 184 | 184 |
$($('#add_contributor_modal #add_contributor_submit')[0]).html('Ajouter');
|
| 185 | 185 |
$('#view-group #edit_id')[0].value='-1';
|
| ... | ... |
@@ -192,7 +192,7 @@ on_show_add_contributor_modal=function(e) {
|
| 192 | 192 |
|
| 193 | 193 |
on_valid_add_contributor_modal=function(e) {
|
| 194 | 194 |
e.preventDefault(); |
| 195 |
- var group=groups[$('#add_contributor_modal #group_name')[0].value];
|
|
| 195 |
+ var group=groups[$('#add_contributor_modal').data('group-uuid')];
|
|
| 196 | 196 |
var name=$('#add_contributor_name')[0].value;
|
| 197 | 197 |
edit_id=$('#view-group #edit_id')[0].value;
|
| 198 | 198 |
if (name=='') {
|
| ... | ... |
@@ -233,8 +233,8 @@ on_close_add_contributor_modal=function () {
|
| 233 | 233 |
} |
| 234 | 234 |
|
| 235 | 235 |
on_edit_contributor_btn_click=function(e) {
|
| 236 |
- var group=groups[$('#view-group #group_name')[0].value];
|
|
| 237 |
- $('#add_contributor_modal #group_name')[0].value=group.name;
|
|
| 236 |
+ var group=groups[$('#view-group').data('uuid')];
|
|
| 237 |
+ $('#add_contributor_modal').data('group-uuid',group.uuid);
|
|
| 238 | 238 |
contributor_name=$('#view-group #contributor')[0].value;
|
| 239 | 239 |
contributor=group.contributorByName(contributor_name); |
| 240 | 240 |
$('#view-group #edit_id')[0].value=contributor.id;
|
| ... | ... |
@@ -252,7 +252,7 @@ on_click_del_contributor_btn=function() {
|
| 252 | 252 |
} |
| 253 | 253 |
|
| 254 | 254 |
on_confirm_del_contributor=function(contributor) {
|
| 255 |
- var group=groups[$('#view-group #group_name')[0].value];
|
|
| 255 |
+ var group=groups[$('#view-group').data('uuid')];
|
|
| 256 | 256 |
group.removeContributor(contributor); |
| 257 | 257 |
set_contributors(group); |
| 258 | 258 |
groups.save(); |
| ... | ... |
@@ -272,7 +272,7 @@ on_show_add_contribution_modal=function(e) {
|
| 272 | 272 |
} |
| 273 | 273 |
|
| 274 | 274 |
on_click_add_contribution_btn=function() {
|
| 275 |
- $('#add_contribution_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
|
|
| 275 |
+ $('#add_contribution_modal').data('group-uuid',$('#view-group').data('uuid'));
|
|
| 276 | 276 |
$('#add_contribution_modal #edit_uuid')[0].value='-1';
|
| 277 | 277 |
$($('#add_contribution_modal h4')[0]).html('Ajouter une contribution');
|
| 278 | 278 |
$($('#add_contribution_modal #add_contribution_submit')[0]).html('Ajouter');
|
| ... | ... |
@@ -281,7 +281,7 @@ on_click_add_contribution_btn=function() {
|
| 281 | 281 |
|
| 282 | 282 |
on_valid_add_contribution_modal=function(e) {
|
| 283 | 283 |
e.preventDefault(); |
| 284 |
- var group=groups[$('#add_contribution_modal #group_name')[0].value];
|
|
| 284 |
+ var group=groups[$('#add_contribution_modal').data('group-uuid')];
|
|
| 285 | 285 |
var contributor_name=$('#add_contribution_contributor_name')[0].value;
|
| 286 | 286 |
var contributor=group.contributorByName(contributor_name); |
| 287 | 287 |
if (contributor==undefined) {
|
| ... | ... |
@@ -342,7 +342,7 @@ on_close_add_contribution_modal=function () {
|
| 342 | 342 |
} |
| 343 | 343 |
|
| 344 | 344 |
on_contribution_delete_btn_click=function(e) {
|
| 345 |
- var group=groups[$('#view-group #group_name')[0].value];
|
|
| 345 |
+ var group=groups[$('#view-group').data('uuid')];
|
|
| 346 | 346 |
contribution_uuid=$($(e.target).parents('div')[0]).data('uuid');
|
| 347 | 347 |
contribution=group.contributions[contribution_uuid]; |
| 348 | 348 |
myconfirm('Etes-vous sûre de vouloir supprimer la participation '+contribution.getTitle()+' de '+contribution.contributor.name+' ?',on_confirm_contribution_delete,null,{'group':group,'contribution_uuid':contribution_uuid, 'contribution': contribution} );
|
| ... | ... |
@@ -355,8 +355,8 @@ on_confirm_contribution_delete=function(data) {
|
| 355 | 355 |
} |
| 356 | 356 |
|
| 357 | 357 |
on_contribution_edit_btn_click=function(e) {
|
| 358 |
- var group=groups[$('#view-group #group_name')[0].value];
|
|
| 359 |
- $('#add_contribution_modal #group_name')[0].value=$('#view-group #group_name')[0].value;
|
|
| 358 |
+ var group=groups[$('#view-group').data('uuid')];
|
|
| 359 |
+ $('#add_contribution_modal').data('group-uuid',$('#view-group').data('uuid'));
|
|
| 360 | 360 |
$($('#add_contribution_modal h4')[0]).html('Editer une contribution');
|
| 361 | 361 |
$($('#add_contribution_modal #add_contribution_submit')[0]).html('Valider');
|
| 362 | 362 |
contribution_uuid=$($(e.target).parents('div')[0]).data('uuid');
|
| ... | ... |
@@ -389,7 +389,7 @@ on_confirm_clear_local_data=function(data) {
|
| 389 | 389 |
*********************/ |
| 390 | 390 |
|
| 391 | 391 |
on_display_balance_btn_click=function(e) {
|
| 392 |
- group=groups[$('#view-group #group_name')[0].value];
|
|
| 392 |
+ group=groups[$('#view-group').data('uuid')];
|
|
| 393 | 393 |
display_balance(group); |
| 394 | 394 |
} |
| 395 | 395 |
|
| ... | ... |
@@ -415,12 +415,12 @@ display_balance=function(group) {
|
| 415 | 415 |
*********************/ |
| 416 | 416 |
|
| 417 | 417 |
on_remove_group_btn_click=function(e) {
|
| 418 |
- group=groups[$('#view-group #group_name')[0].value];
|
|
| 418 |
+ group=groups[$('#view-group').data('uuid')];
|
|
| 419 | 419 |
myconfirm('Etes-vous sûre de vouloir supprimer le group '+group.name+' ?',on_confirm_remove_group,null,group);
|
| 420 | 420 |
} |
| 421 | 421 |
|
| 422 | 422 |
on_confirm_remove_group=function(group) {
|
| 423 |
- if(groups.removeGroup(group.name)) {
|
|
| 423 |
+ if(groups.removeGroup(group.uuid)) {
|
|
| 424 | 424 |
groups.save(); |
| 425 | 425 |
location.reload(); |
| 426 | 426 |
} |
| ... | ... |
@@ -8,7 +8,7 @@ function GroupList() {
|
| 8 | 8 |
var data=JSON.parse(localStorage.groups); |
| 9 | 9 |
this.lastChange=data.lastChange; |
| 10 | 10 |
for (el in data.groups) {
|
| 11 |
- this[el]=new Group(el,data.groups[el]); |
|
| 11 |
+ this[el]=new Group(el,false,data.groups[el]); |
|
| 12 | 12 |
} |
| 13 | 13 |
} |
| 14 | 14 |
catch(e) {
|
| ... | ... |
@@ -41,7 +41,7 @@ function GroupList() {
|
| 41 | 41 |
} |
| 42 | 42 |
} |
| 43 | 43 |
for (el in groups) {
|
| 44 |
- this[el]=new Group(el,groups[el]); |
|
| 44 |
+ this[el]=new Group(el,false,groups[el]); |
|
| 45 | 45 |
} |
| 46 | 46 |
return true; |
| 47 | 47 |
} |
| ... | ... |
@@ -77,9 +77,21 @@ function GroupList() {
|
| 77 | 77 |
return (jQuery.type(el)=='object' && jQuery.type(el.isGroup)=='function' && el.isGroup()); |
| 78 | 78 |
} |
| 79 | 79 |
|
| 80 |
- this.removeGroup=function(name) {
|
|
| 81 |
- if (this.isGroup(this[name])) {
|
|
| 82 |
- delete this[name]; |
|
| 80 |
+ this.byName=function(name) {
|
|
| 81 |
+ for (el in this) {
|
|
| 82 |
+ if(this.isGroup(this[el])) {
|
|
| 83 |
+ if (this[el].name==name) {
|
|
| 84 |
+ return this[el]; |
|
| 85 |
+ } |
|
| 86 |
+ } |
|
| 87 |
+ } |
|
| 88 |
+ return false; |
|
| 89 |
+ } |
|
| 90 |
+ |
|
| 91 |
+ |
|
| 92 |
+ this.removeGroup=function(uuid) {
|
|
| 93 |
+ if (this.isGroup(this[uuid])) {
|
|
| 94 |
+ delete this[uuid]; |
|
| 83 | 95 |
return true; |
| 84 | 96 |
} |
| 85 | 97 |
return false; |
| ... | ... |
@@ -87,14 +99,23 @@ function GroupList() {
|
| 87 | 99 |
|
| 88 | 100 |
this.balances=function(fct) {
|
| 89 | 101 |
return this.each(function(idx,group) {
|
| 90 |
- return group.balance(); |
|
| 102 |
+ bal=group.balance(); |
|
| 103 |
+ bal.name=group.name; |
|
| 104 |
+ return bal; |
|
| 91 | 105 |
}); |
| 92 | 106 |
} |
| 93 | 107 |
|
| 108 |
+ this.newGroup=function(name,uuid) {
|
|
| 109 |
+ var uuid=uuid||generate_uuid(); |
|
| 110 |
+ this[uuid]=new Group(uuid,name); |
|
| 111 |
+ return uuid; |
|
| 94 | 112 |
} |
| 95 | 113 |
|
| 96 |
-function Group(name,data) {
|
|
| 97 |
- this.name=name; |
|
| 114 |
+} |
|
| 115 |
+ |
|
| 116 |
+function Group(uuid,name,data) {
|
|
| 117 |
+ this.uuid=uuid || generate_uuid(); |
|
| 118 |
+ this.name=name || false; |
|
| 98 | 119 |
this.contributors=[]; |
| 99 | 120 |
this.contributions={};
|
| 100 | 121 |
this.deletedContributions={};
|
| ... | ... |
@@ -114,6 +135,7 @@ function Group(name,data) {
|
| 114 | 135 |
contributions[uuid]=this.contributions[uuid].export(); |
| 115 | 136 |
} |
| 116 | 137 |
return {
|
| 138 |
+ 'uuid': this.uuid, |
|
| 117 | 139 |
'name': encodeURIComponent(this.name), |
| 118 | 140 |
'contributors': contributors, |
| 119 | 141 |
'contributions': contributions, |
| ... | ... |
@@ -227,6 +249,7 @@ function Group(name,data) {
|
| 227 | 249 |
*/ |
| 228 | 250 |
if (jQuery.type(data)=='object') {
|
| 229 | 251 |
try {
|
| 252 |
+ this.uuid=data.uuid; |
|
| 230 | 253 |
this.name=data.name; |
| 231 | 254 |
if (jQuery.type(data.contributors) == 'array') {
|
| 232 | 255 |
for (idx in data.contributors) {
|
| ... | ... |
@@ -110,7 +110,6 @@ body{
|
| 110 | 110 |
<div id='view-group' class='part'> |
| 111 | 111 |
<h1><span>Noël</span><small><span id='edit_group_btn' class='glyphicon glyphicon-edit btn btn-sm'></span></small></h1> |
| 112 | 112 |
<form class="form-horizontal" role="form"> |
| 113 |
- <input type='hidden' id='group_name' value='Noël'/> |
|
| 114 | 113 |
<input type='hidden' id='edit_id' value='-1' /> |
| 115 | 114 |
<div class="form-group"> |
| 116 | 115 |
<div class="input-group"> |
| ... | ... |
@@ -200,7 +199,6 @@ body{
|
| 200 | 199 |
</div> |
| 201 | 200 |
<div class="modal-body"> |
| 202 | 201 |
<form class="form-horizontal" role="form"> |
| 203 |
- <input type='hidden' id='group_name' /> |
|
| 204 | 202 |
<div class="form-group"> |
| 205 | 203 |
<div class="input-group"> |
| 206 | 204 |
<span class="input-group-addon">Nom *</span> |
| ... | ... |
@@ -269,7 +267,6 @@ body{
|
| 269 | 267 |
</div> |
| 270 | 268 |
<div class="modal-body"> |
| 271 | 269 |
<form class="form-horizontal" role="form"> |
| 272 |
- <input type='hidden' id='group_name' /> |
|
| 273 | 270 |
<input type='hidden' id='edit_uuid' value='-1' /> |
| 274 | 271 |
<div class="form-group"> |
| 275 | 272 |
<div class="input-group"> |
| 276 | 273 |