Benjamin Renard commited on 2014-07-19 21:58:59
Showing 3 changed files, with 85 additions and 42 deletions.
| ... | ... |
@@ -133,12 +133,10 @@ view_home=function() {
|
| 133 | 133 |
on_home_grp_cat_btn_click=function(e) {
|
| 134 | 134 |
grp_id=$(e.target).parents('div.btn-group').data('grp');
|
| 135 | 135 |
grp=groups[grp_id]; |
| 136 |
- console.log(grp.getCategories()); |
|
| 137 | 136 |
ul=$('#grp_cat_modal ul');
|
| 138 | 137 |
html=""; |
| 139 |
- cats=grp.getCategories(); |
|
| 140 |
- for(cid in cats) {
|
|
| 141 |
- html+="<li><span class='cat-color' style='background-color: "+cats[cid]['color']+"'></span> "+cats[cid]['name']+"</li>"; |
|
| 138 |
+ for(cid in grp.categories) {
|
|
| 139 |
+ html+="<li><span class='cat-color' style='background-color: "+grp.categories[cid]['color']+"'></span> "+grp.categories[cid]['name']+"</li>"; |
|
| 142 | 140 |
} |
| 143 | 141 |
ul.html(html); |
| 144 | 142 |
$('#grp_cat_modal').modal('show');
|
| ... | ... |
@@ -191,9 +189,8 @@ show_contributions=function(group,contributor_email) {
|
| 191 | 189 |
sum=0; |
| 192 | 190 |
for (idx in contributions) {
|
| 193 | 191 |
var cat=''; |
| 194 |
- console.log(contributions[idx].categorie); |
|
| 195 |
- if (contributions[idx].categorie && jQuery.type(group.categories[contributions[idx].categorie])) {
|
|
| 196 |
- cat='<br/><span class="categorie"><span class="cat-color" style="background-color: '+group.categories[contributions[idx].categorie]['color']+'"></span> '+group.categories[contributions[idx].categorie]['name']+"</span>"; |
|
| 192 |
+ if (contributions[idx].category && jQuery.type(group.categories[contributions[idx].category])) {
|
|
| 193 |
+ cat='<br/><span class="category"><span class="cat-color" style="background-color: '+group.categories[contributions[idx].category]['color']+'"></span> '+group.categories[contributions[idx].category]['name']+"</span>"; |
|
| 197 | 194 |
} |
| 198 | 195 |
col_actions='<td><div class="btn-group" data-uuid="'+contributions[idx].uuid+'"><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>'; |
| 199 | 196 |
tbody.append('<tr><td>'+contributions[idx].getTitle()+cat+'</td><td>'+contributions[idx].cost.toFixed(2)+' €<br/><span class="date">'+moment(contributions[idx].date).format('DD/MM/YYYY')+'</span></td>'+col_actions+'</tr>');
|
| ... | ... |
@@ -399,7 +396,7 @@ on_show_add_contribution_modal=function(e) {
|
| 399 | 396 |
for (u in group.categories) {
|
| 400 | 397 |
cats+="<option value='"+u+"'>"+group.categories[u]['name']+"</option>"; |
| 401 | 398 |
} |
| 402 |
- $('#add_contribution_modal #add_contribution_categorie').html(cats);
|
|
| 399 |
+ $('#add_contribution_modal #add_contribution_category').html(cats);
|
|
| 403 | 400 |
$('#add_contribution_modal #add_contribution_title').focus();
|
| 404 | 401 |
} |
| 405 | 402 |
|
| ... | ... |
@@ -458,9 +455,9 @@ on_valid_add_contribution_modal=function(e) {
|
| 458 | 455 |
date=new Date(); |
| 459 | 456 |
} |
| 460 | 457 |
|
| 461 |
- var cat=$('#add_contribution_categorie')[0].value;
|
|
| 458 |
+ var cat=$('#add_contribution_category')[0].value;
|
|
| 462 | 459 |
if (cat != '' && !jQuery.type(group.categories[cat])) {
|
| 463 |
- alert('Categorie incorrect');
|
|
| 460 |
+ alert('Category incorrect');
|
|
| 464 | 461 |
return; |
| 465 | 462 |
} |
| 466 | 463 |
|
| ... | ... |
@@ -505,8 +502,8 @@ on_contribution_edit_btn_click=function(e) {
|
| 505 | 502 |
$('#add_contribution_modal #add_contribution_title')[0].value=contribution.getTitle();
|
| 506 | 503 |
$('#add_contribution_modal #add_contribution_cost')[0].value=contribution.cost;
|
| 507 | 504 |
$('#add_contribution_modal #add_contribution_date')[0].value=moment(contribution.date).format('DD/MM/YYYY');
|
| 508 |
- if (contribution.categorie) {
|
|
| 509 |
- $('#add_contribution_modal #add_contribution_categorie')[0].value=contribution.categorie;
|
|
| 505 |
+ if (contribution.category) {
|
|
| 506 |
+ $('#add_contribution_modal #add_contribution_category')[0].value=contribution.category;
|
|
| 510 | 507 |
} |
| 511 | 508 |
$('#add_contribution_modal #edit_uuid')[0].value=contribution_uuid;
|
| 512 | 509 |
$('#add_contribution_modal').modal('show');
|
| ... | ... |
@@ -122,6 +122,7 @@ function Group(uuid,name,data) {
|
| 122 | 122 |
this.contributions={};
|
| 123 | 123 |
this.deletedContributions={};
|
| 124 | 124 |
this.categories={};
|
| 125 |
+ this.deletedCategories={};
|
|
| 125 | 126 |
|
| 126 | 127 |
this.isGroup=function() {
|
| 127 | 128 |
return true; |
| ... | ... |
@@ -136,6 +137,10 @@ function Group(uuid,name,data) {
|
| 136 | 137 |
for (uuid in this.contributions) {
|
| 137 | 138 |
contributions[uuid]=this.contributions[uuid].export(); |
| 138 | 139 |
} |
| 140 |
+ var categories={}
|
|
| 141 |
+ for (uuid in this.categories) {
|
|
| 142 |
+ categories[uuid]=this.categories[uuid].export(); |
|
| 143 |
+ } |
|
| 139 | 144 |
return {
|
| 140 | 145 |
'uuid': this.uuid, |
| 141 | 146 |
'name': encodeURIComponent(this.name), |
| ... | ... |
@@ -143,7 +148,8 @@ function Group(uuid,name,data) {
|
| 143 | 148 |
'deletedContributors': this.deletedContributors, |
| 144 | 149 |
'contributions': contributions, |
| 145 | 150 |
'deletedContributions': this.deletedContributions, |
| 146 |
- 'categories': this.categories |
|
| 151 |
+ 'categories': categories, |
|
| 152 |
+ 'deletedCategories': this.deletedCategories |
|
| 147 | 153 |
}; |
| 148 | 154 |
} |
| 149 | 155 |
|
| ... | ... |
@@ -207,6 +213,13 @@ function Group(uuid,name,data) {
|
| 207 | 213 |
this.contributors[c.email]=c; |
| 208 | 214 |
} |
| 209 | 215 |
|
| 216 |
+ this.importContributor=function(data) {
|
|
| 217 |
+ return new Contributor( |
|
| 218 |
+ decodeURIComponent(data.name), |
|
| 219 |
+ data.email |
|
| 220 |
+ ); |
|
| 221 |
+ } |
|
| 222 |
+ |
|
| 210 | 223 |
/* |
| 211 | 224 |
* Contributions |
| 212 | 225 |
*/ |
| ... | ... |
@@ -240,7 +253,7 @@ function Group(uuid,name,data) {
|
| 240 | 253 |
this.deletedContributions[uuid].cost, |
| 241 | 254 |
decodeURIComponent(this.deletedContributions[uuid].title), |
| 242 | 255 |
this.deletedContributions[uuid].date, |
| 243 |
- this.deletedContributions[uuid].categorie, |
|
| 256 |
+ this.deletedContributions[uuid].category, |
|
| 244 | 257 |
uuid, |
| 245 | 258 |
this.deletedContributions[uuid].lastChange |
| 246 | 259 |
)); |
| ... | ... |
@@ -281,25 +294,51 @@ function Group(uuid,name,data) {
|
| 281 | 294 |
delete this.deletedContributions[uuid]; |
| 282 | 295 |
} |
| 283 | 296 |
|
| 284 |
- this.importContributor=function(data) {
|
|
| 285 |
- return new Contributor( |
|
| 286 |
- decodeURIComponent(data.name), |
|
| 287 |
- data.email |
|
| 288 |
- ); |
|
| 289 |
- } |
|
| 290 |
- |
|
| 291 | 297 |
this.importContribution=function(data) {
|
| 292 | 298 |
return new Contribution( |
| 293 | 299 |
this.contributorByEmail(data.contributor), |
| 294 | 300 |
data.cost, |
| 295 | 301 |
decodeURIComponent(data.title), |
| 296 | 302 |
data.date, |
| 297 |
- data.categorie, |
|
| 303 |
+ data.category, |
|
| 298 | 304 |
data.uuid, |
| 299 | 305 |
data.lastChange |
| 300 | 306 |
); |
| 301 | 307 |
} |
| 302 | 308 |
|
| 309 |
+ /* |
|
| 310 |
+ * Categories |
|
| 311 |
+ */ |
|
| 312 |
+ |
|
| 313 |
+ this.addCategory=function(c) {
|
|
| 314 |
+ this.categories[c.uuid]=c; |
|
| 315 |
+ } |
|
| 316 |
+ |
|
| 317 |
+ this.updateCategory=function(uuid,c) {
|
|
| 318 |
+ c.uuid=uuid; |
|
| 319 |
+ this.categories[uuid]=c; |
|
| 320 |
+ } |
|
| 321 |
+ |
|
| 322 |
+ this.deleteCategory=function(uuid,time) {
|
|
| 323 |
+ this.categories[uuid].lastChange=time || new Date().getTime(); |
|
| 324 |
+ this.deletedCategory[uuid]=this.categories[uuid].export(); |
|
| 325 |
+ delete this.categories[uuid]; |
|
| 326 |
+ } |
|
| 327 |
+ |
|
| 328 |
+ this.restoreCategory=function(uuid) {
|
|
| 329 |
+ this.deletedCategory[uuid].lastChange=new Date().getTime(); |
|
| 330 |
+ this.categories[uuid]=this.importCategory(this.deletedCategory[uuid]); |
|
| 331 |
+ delete this.deletedCategory[uuid]; |
|
| 332 |
+ } |
|
| 333 |
+ |
|
| 334 |
+ this.importCategory=function(data) {
|
|
| 335 |
+ return new Category( |
|
| 336 |
+ decodeURIComponent(data.name), |
|
| 337 |
+ data.color, |
|
| 338 |
+ data.lastChange |
|
| 339 |
+ ); |
|
| 340 |
+ } |
|
| 341 |
+ |
|
| 303 | 342 |
/* |
| 304 | 343 |
* Balance |
| 305 | 344 |
*/ |
| ... | ... |
@@ -339,13 +378,6 @@ function Group(uuid,name,data) {
|
| 339 | 378 |
}; |
| 340 | 379 |
} |
| 341 | 380 |
|
| 342 |
- /* |
|
| 343 |
- * Categories |
|
| 344 |
- */ |
|
| 345 |
- this.getCategories=function() {
|
|
| 346 |
- return this.categories; |
|
| 347 |
- } |
|
| 348 |
- |
|
| 349 | 381 |
/* |
| 350 | 382 |
* Contructor |
| 351 | 383 |
*/ |
| ... | ... |
@@ -373,12 +405,10 @@ function Group(uuid,name,data) {
|
| 373 | 405 |
this.deletedContributions[uuid]=data.deletedContributions[uuid]; |
| 374 | 406 |
} |
| 375 | 407 |
} |
| 408 |
+ console.log(data.categories); |
|
| 376 | 409 |
if (jQuery.type(data.categories) == 'object') {
|
| 377 |
- for (cid in data.categories) {
|
|
| 378 |
- if (jQuery.type(data.categories[cid]['color'])!='string') {
|
|
| 379 |
- data.categories[cid]['color']='#'+(0x1000000+(Math.random())*0xffffff).toString(16).substr(1,6); |
|
| 380 |
- } |
|
| 381 |
- this.categories[cid]=data.categories[cid]; |
|
| 410 |
+ for (uuid in data.categories) {
|
|
| 411 |
+ this.categories[uuid]=this.importCategory(data.categories[uuid]); |
|
| 382 | 412 |
} |
| 383 | 413 |
} |
| 384 | 414 |
else {
|
| ... | ... |
@@ -393,14 +423,17 @@ function Group(uuid,name,data) {
|
| 393 | 423 |
'Cadeau': '#a700fa' |
| 394 | 424 |
}; |
| 395 | 425 |
for (c in categories) {
|
| 396 |
- this.categories[generate_uuid()]={
|
|
| 397 |
- 'name': c, |
|
| 398 |
- 'color': categories[c] |
|
| 399 |
- }; |
|
| 426 |
+ this.categories[generate_uuid()]=new Category(c,categories[c]); |
|
| 427 |
+ } |
|
| 428 |
+ } |
|
| 429 |
+ if (jQuery.type(data.deletedCategories) == 'object') {
|
|
| 430 |
+ for (uuid in data.deletedCategories) {
|
|
| 431 |
+ this.deletedCategories[uuid]=data.deletedCategories[uuid]; |
|
| 400 | 432 |
} |
| 401 | 433 |
} |
| 402 | 434 |
} |
| 403 | 435 |
catch (e) {
|
| 436 |
+ console.log(e); |
|
| 404 | 437 |
alert('Une erreur est survenue en chargeant le groupe '+this.name+' depuis le cache');
|
| 405 | 438 |
} |
| 406 | 439 |
} |
| ... | ... |
@@ -417,6 +450,19 @@ function Contributor(name,email) {
|
| 417 | 450 |
} |
| 418 | 451 |
} |
| 419 | 452 |
|
| 453 |
+function Category(name,color,lastChange) {
|
|
| 454 |
+ this.name=name; |
|
| 455 |
+ this.color=color || '#'+(0x1000000+(Math.random())*0xffffff).toString(16).substr(1,6); |
|
| 456 |
+ this.lastChange=lastChange || new Date().getTime(); |
|
| 457 |
+ this.export=function() {
|
|
| 458 |
+ return {
|
|
| 459 |
+ 'name': encodeURIComponent(this.name), |
|
| 460 |
+ 'color': this.color, |
|
| 461 |
+ 'lastChange': this.lastChange |
|
| 462 |
+ }; |
|
| 463 |
+ } |
|
| 464 |
+} |
|
| 465 |
+ |
|
| 420 | 466 |
function Contribution(contributor,cost,title,date,cat,uuid,lastChange) {
|
| 421 | 467 |
this.contributor=contributor; |
| 422 | 468 |
this.cost=cost; |
| ... | ... |
@@ -426,7 +472,7 @@ function Contribution(contributor,cost,title,date,cat,uuid,lastChange) {
|
| 426 | 472 |
} |
| 427 | 473 |
this.date=date; |
| 428 | 474 |
this.uuid=uuid || generate_uuid(); |
| 429 |
- this.categorie=cat; |
|
| 475 |
+ this.category=cat; |
|
| 430 | 476 |
this.lastChange=lastChange || new Date().getTime(); |
| 431 | 477 |
this.export=function() {
|
| 432 | 478 |
return {
|
| ... | ... |
@@ -435,7 +481,7 @@ function Contribution(contributor,cost,title,date,cat,uuid,lastChange) {
|
| 435 | 481 |
'cost': this.cost, |
| 436 | 482 |
'title': encodeURIComponent(this.title), |
| 437 | 483 |
'date': this.date.getTime(), |
| 438 |
- 'categorie': this.categorie, |
|
| 484 |
+ 'category': this.category, |
|
| 439 | 485 |
'lastChange': this.lastChange, |
| 440 | 486 |
}; |
| 441 | 487 |
} |
| ... | ... |
@@ -55,7 +55,7 @@ body{
|
| 55 | 55 |
text-transform: capitalize; |
| 56 | 56 |
} |
| 57 | 57 |
|
| 58 |
-#view-group span.date, #view-group span.categorie {
|
|
| 58 |
+#view-group span.date, #view-group span.category {
|
|
| 59 | 59 |
color: #999; |
| 60 | 60 |
font-size: 0.8em; |
| 61 | 61 |
font-style: italic; |
| ... | ... |
@@ -408,7 +408,7 @@ span.cat-color {
|
| 408 | 408 |
<div class="form-group"> |
| 409 | 409 |
<div class="input-group"> |
| 410 | 410 |
<span class="input-group-addon">Catégorie </span> |
| 411 |
- <select id='add_contribution_categorie' class="form-control"></select> |
|
| 411 |
+ <select id='add_contribution_category' class="form-control"></select> |
|
| 412 | 412 |
</div> |
| 413 | 413 |
</div> |
| 414 | 414 |
<div class="form-group"> |
| 415 | 415 |