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 |