Zionetrix::Git
Repositories
Help
Report an Issue
MyCo
Code
Commits
Branches
Tags
Search
Tree:
ecbc75d
Branches
Tags
master
MyCo
inc
myco.js
Sort contributions search result
Benjamin Renard
commited
ecbc75d
at 2014-12-01 22:19:07
myco.js
Blame
History
Raw
refresh_group_list=function() { grouplist=$('#group-choice')[0]; $('a.group-choice').each(function(idx,a) { $(a).parent().remove(); }); if (groups.count()==0) { $(grouplist).prepend('<li><a class="group-choice">Aucune groupe</a></li>'); } else { groups.each(function(idx,group) { $(grouplist).prepend('<li><a class="group-choice" data-uuid="'+group.uuid+'">'+group.name+'</a></li>'); }); $('a.group-choice').each(function(idx,a) { $(a).bind('click',on_group_choice_click); }); } } /**************** * Add group ****************/ on_click_add_group_btn=function(e) { navbar_collapse_hide(); $('#add_group_modal').modal('show'); } on_show_add_group_modal=function(e) { $('#add_group_modal #add_group_name').focus(); } on_valid_add_group_modal=function (e) { e.preventDefault(); var name=$('#add_group_name')[0].value; if (name=='') { alert('Vous devez saisir un nom !'); return; } if (groups[name]!==undefined) { alert('Ce groupe exite déjà !'); return; } var uuid=groups.newGroup(name); refresh_group_list(); $('#add_group_modal').modal('hide'); groups.save(); view_group(groups[uuid]); } on_close_add_group_modal=function () { $('#add_group_modal form')[0].reset(); } /**************** * Nav bars ****************/ on_group_choice_click=function(e) { view_group(groups[$(e.target).data('uuid')]); navbar_collapse_hide(); } navbar_collapse_hide=function() { if ($('#navbar-groupe-collapse').hasClass('in')) { $('#navbar-groupe-collapse').collapse('hide'); } } bottom_navbar_collapse_hide=function() { if ($('#bottom-navbar-collapse-1').hasClass('in')) { $('#bottom-navbar-collapse-1').collapse('hide'); } } /**************** * Parts ****************/ view_part=function(part) { $('.part').each(function(idx,div) { $(div).css('display','none'); }); $(part).css('display','block'); } view_home=function() { navbar_collapse_hide(); if (user) { $('#view-home #title').html('Bonjour '+user.name); } else { $('#view-home #title').html('Bonjour'); } if (groups.count()>0) { tbody=$('#view-home #mybalances tbody'); tbody.html(''); balances=groups.balances(); var sum=0; for (g in balances) { if (jQuery.type(balances[g]['balance'][user.email])!='undefined') { if (balances[g]['balance'][user.email]['diff']<0) { sum+=balances[g]['balance'][user.email]['diff']; diff='<td class="negative">'+balances[g]['balance'][user.email]['diff'].toFixed(2)+'</td>'; } else { value=balances[g]['balance'][user.email]['total']-balances[g]['min']; sum+=value; diff='<td class="positive">+'+value.toFixed(2)+' €</td>'; } tbody.html(tbody.html()+'<tr><td><a class="group-link" data-uuid="'+g+'">'+balances[g].name+'</a></td>'+diff+'</tr>'); } } $('#view-home #mybalances a.group-link').bind('click',function(e) { g=$(e.target).data('uuid'); if (jQuery.type(groups[g])!='undefined') { view_group(groups[g]); } }); $('a.home_grp_cat_btn').each(function(idx,a) { $(a).bind('click',on_home_grp_cat_btn_click); }); if (sum<0) { $('#view-home #mybalances #total-value').html('<span class="negative">'+sum.toFixed(2)+' €</span>'); } else { $('#view-home #mybalances #total-value').html('<span class="positive">'+(sum==0?'':'+')+sum.toFixed(2)+' €</span>'); } $('#view-home #mybalances').css('display','table'); } else { $('#view-home #mybalances').css('display','none'); } view_part('#view-home'); } /**************** * View group ****************/ view_group=function(group,contributor_email) { $('#view-group').data('uuid',group.uuid); $('#view-group .group-title:first').html(group.name); set_contributors(group,contributor_email); on_contributor_change(); view_part('#view-group'); } set_contributors=function(group,contributor_email) { $('#view-group #contributor option').remove(); if(group.contributors.length==0) { $('#view-group #contributor').append('<option>Aucun participant</option>'); } else { for (email in group.contributors) { if (email == contributor_email) { sel=' selected'; } else { sel=''; } $('#view-group #contributor').append('<option value="'+email+'"'+sel+'>'+group.contributors[email].name+'</option>'); } } } on_contributor_change=function(e) { if ($('#group-navbar-collapse-1').hasClass('in')) { $('#group-navbar-collapse-1').collapse('hide'); } $('#view-group #group-username').html($('#view-group #contributor option:selected').text()); show_contributions(groups[$('#view-group').data('uuid')],$('#view-group #contributor')[0].value); $('#nav-search-form input')[0].value=''; } _current_displayed_contributions=[]; _current_displayed_contributions_group=null; show_contributions=function(group,contributor_email,contributions) { var tbody=$($('#view-group #contributions tbody')[0]); tbody.html(''); if (!contributions) { contributions=group.contributionsByContributorEmail(contributor_email); } _current_displayed_contributions=contributions; _current_displayed_contributions_group=group; show_more_contributions(); $('.contribution_delete_btn').bind('click',on_contribution_delete_btn_click); $('.contribution_edit_btn').bind('click',on_contribution_edit_btn_click); } show_more_contributions=function(count) { if (!_current_displayed_contributions_group) return; var tbody=$($('#view-group #contributions tbody')[0]); if (_current_displayed_contributions.length==0) { tbody.html(''); tbody.append('<tr><td colspan=3>Aucune contributions</td></tr>'); } else { var previous=0; if (tbody.children('tr').length>0) { previous=tbody.children('tr').length-1; } if (!count) count=20; for (var i=0; i<count; i++) { var idx=previous+i; if (!_current_displayed_contributions[idx]) break; var cat=''; if (_current_displayed_contributions[idx].category && jQuery.type(_current_displayed_contributions_group.categories[_current_displayed_contributions[idx].category])) { cat='<br/><span class="category"><span class="cat-color" style="background-color: '+_current_displayed_contributions_group.categories[_current_displayed_contributions[idx].category]['color']+'"></span> '+_current_displayed_contributions_group.categories[_current_displayed_contributions[idx].category]['name']+"</span>"; } col_actions='<td><div class="btn-group" data-uuid="'+_current_displayed_contributions[idx].uuid+'"><button type="button" class="btn btn-default btn-sm contribution_edit_btn"><span class="glyphicon glyphicon-edit"></span></button><button type="button" class="btn btn-default btn-sm contribution_delete_btn"><span class="glyphicon glyphicon-trash"></span></button></div></td>'; tbody.append('<tr><td>'+_current_displayed_contributions[idx].getTitle()+cat+'</td><td>'+_current_displayed_contributions[idx].cost.toFixed(2)+' €<br/><span class="date">'+moment(_current_displayed_contributions[idx].date).format('DD/MM/YYYY')+'</span></td>'+col_actions+'</tr>'); } } } _view_group_scroll_lock=false; on_view_group_scroll=function(event) { if (_view_group_scroll_lock) return; _view_group_scroll_lock=true; if ($('#view-group').css('display')=='block' && is_on_bottom()) { show_more_contributions(20); } _view_group_scroll_lock=false; } on_categories_group_btn_click=function(e) { group=groups[$('#view-group').data('uuid')]; $('#view-group-categories').data('group-uuid',$('#view-group').data('uuid')); refresh_group_categories(group); bottom_navbar_collapse_hide(); view_part('#view-group-categories'); } refresh_group_categories=function(group) { ul=$('#view-group-categories ul'); html=""; for(cid in group.getSortedCategories()) { html+="<li data-uuid='"+cid+"'><span class='cat-color' style='background-color: "+group.categories[cid]['color']+"'></span> "+group.categories[cid]['name']+"</li>"; } ul.html(html); $('#view-group-categories ul li').bind('click',on_categories_group_cat_click); $('#cats-chart').css('width',$(window).width()*0.9+'px'); $.plot($('#cats-chart'),group.getCategoriesStats(),{ 'grid': { 'hoverable': true }, 'legend': { 'show': false, }, 'series': { 'pie': { 'show': true, 'innerRadius': 0.5, 'radius': .8, 'tilt': .5, 'label': { 'show': true, 'formatter': function (label, series) { return '<div class="cats-chart-label">' + label + '<br/><span>' + Math.round(series.percent) + '% - '+series.data[0][1].toFixed(2)+'€</span></div>'; } } } } }); } on_categories_group_cat_click=function(e) { li=$(e.target); if (li.prop("tagName")!='LI') { return true; } cid=li.data('uuid'); group=groups[$('#view-group-categories').data('group-uuid')]; cat=group.categories[cid]; li.html("<span class='cat-color' style='background-color: "+cat['color']+"'></span> "+ "<input type='text' value=\""+cat.name+"\"/> "+ "<button class='btn btn-default btn-xs cat_edit'><span class='glyphicon glyphicon-ok'></span></button>"+ "<button class='btn btn-default btn-xs cat_delete'><span class='glyphicon glyphicon-trash'></span></button>"); li.children('button.cat_edit').bind('click',{'li': li,'group': group,'cid': cid},on_categories_group_cat_edit_valid_btn_click); li.children('button.cat_delete').bind('click',{'li': li,'group': group,'cid': cid},on_categories_group_cat_delete_btn_click); } on_categories_group_cat_edit_valid_btn_click=function(e) { name=e.data.li.children('input:first').val(); cat=e.data.group.categories[e.data.cid]; e.data.group.updateCategory(e.data.cid,new Category(name,cat.color)); groups.save(); refresh_group_categories(e.data.group); } on_categories_group_cat_delete_btn_click=function(e) { e.data.group.deleteCategory(e.data.cid); groups.save(); refresh_group_categories(e.data.group); } on_categories_go_back_group_btn_click=function(e) { view_group(groups[$('#view-group-categories').data('group-uuid')]); } on_categories_group_add_btn_click=function(e) { name=$('#add_category input')[0].value; if (jQuery.type(name)!='string' || name=='') { return; } group_uuid=$('#view-group-categories').data('group-uuid'); group=groups[group_uuid]; if (group.getCategoryByName(name,true)) { alert('Cette catégorie existe déjà'); } else { group.addCategory(new Category(name)); $('#add_category input')[0].value=''; refresh_group_categories(group); } } on_export_group_btn_click=function(e) { if (user) { group=$('#view-group').data('uuid'); document.location=user.server+'/export2csv?email='+user.email+'&password='+user.password+'&group='+group; } else { alert('Vous devez être connecté à un serveur pour cela !'); } } on_nav_search_form_submit=function(e) { e.preventDefault(); } on_nav_search_form_input=function(e) { var ipt=$(e.target); var pattern=ipt.val(); group=groups[$('#view-group').data('uuid')]; var found=group.searchContributions(pattern); show_contributions(group,null,found); } /***************************** * Trash *****************************/ on_trash_group_btn_click=function(e) { group=groups[$('#view-group').data('uuid')]; contributor_email=$('#view-group #contributor')[0].value; bottom_navbar_collapse_hide(); view_group_trash(group,contributor_email); } on_go_back_group_btn_click=function(e) { group=groups[$('#view-group-trash').data('uuid')]; contributor_email=$('#view-group-trash').data('contributor-email'); view_group(group,contributor_email); } view_group_trash=function(group,contributor_email) { $('#view-group-trash').data('uuid',group.uuid); $('#view-group-trash').data('contributor-email',contributor_email); var tbody=$('#view-group-trash #trash tbody'); tbody.html(''); contributions=group.deletedContributionsByContributorEmail(contributor_email); contributions.reverse(); if (contributions.length==0) { tbody.append('<tr><td colspan=3>Aucune contributions</td></tr>'); } else { for (idx in contributions) { tbody.append('<tr data-uuid="'+contributions[idx].uuid+'"><td>'+contributions[idx].getTitle()+'</td><td>'+contributions[idx].cost.toFixed(2)+' €<br/><span class="date">'+moment(contributions[idx].date).format('DD/MM/YYYY')+'</span></td><td><button type="button" class="btn btn-default contribution_restore_btn"><span class="glyphicon glyphicon-share"></span></button></td></tr>'); } } $('#view-group-trash .contribution_restore_btn').bind('click',on_contribution_restore_btn_click); view_part('#view-group-trash'); } on_contribution_restore_btn_click=function(e) { var group=groups[$('#view-group-trash').data('uuid')]; contribution_uuid=$($(e.target).parents('tr')[0]).data('uuid'); contribution=group.importContribution(group.deletedContributions[contribution_uuid]); myconfirm('Etes-vous sûre de vouloir restaurer la participation '+contribution.getTitle()+' de '+contribution.contributor.name+' ?',on_confirm_contribution_restore,null,{'group':group,'contribution_uuid':contribution_uuid, 'contribution': contribution} ); } on_confirm_contribution_restore=function(data) { data.group.restoreContribution(data.contribution_uuid); groups.save(); view_group(data.group,data.contribution.contributor.email); } on_trash_group_contributors_btn_click=function(e) { group=groups[$('#view-group').data('uuid')]; view_group_trash_contributors(group); } on_go_back_group_trash_contributors_btn_click=function(e) { group=groups[$('#view-group-trash-contributors').data('uuid')]; view_group(group); } view_group_trash_contributors=function(group) { $('#view-group-trash-contributors').data('uuid',group.uuid); var tbody=$('#view-group-trash-contributors #trash tbody'); tbody.html(''); contributors=group.getDeletedContributors(); if (contributors.length==0) { tbody.append('<tr><td colspan=3>Aucun participant</td></tr>'); } else { for (idx in contributors) { tbody.append('<tr data-email="'+contributors[idx].email+'"><td>'+contributors[idx].name+'</td><td><button type="button" class="btn btn-default contributor_restore_btn"><span class="glyphicon glyphicon-share"></span></button></td></tr>'); } } $('#view-group-trash-contributors .contributor_restore_btn').bind('click',on_contributor_restore_btn_click); view_part('#view-group-trash-contributors'); } on_contributor_restore_btn_click=function(e) { var group=groups[$('#view-group-trash-contributors').data('uuid')]; contributor_email=$($(e.target).parents('tr')[0]).data('email'); contributor=group.importContributor(group.deletedContributors[contributor_email]); myconfirm('Etes-vous sûre de vouloir restaurer '+contributor.name+' ?',on_confirm_contributor_restore,null,{'group':group,'contributor_email':contributor_email, 'contributor': contributor} ); } on_confirm_contributor_restore=function(data) { data.group.restoreContributor(data.contributor_email); groups.save(); view_group(data.group,data.contributor_email); } /****************************** * Add/Edit/remove contributor ******************************/ on_click_add_contributor_btn=function() { $('#add_contributor_modal').data('group-uuid',$('#view-group').data('uuid')) $($('#add_contributor_modal h4')[0]).html('Ajouter un participant'); $($('#add_contributor_modal #add_contributor_submit')[0]).html('Ajouter'); $('#view-group #edit_id')[0].value='-1'; $('#add_contributor_modal #add_contributor_email').attr('disabled',false); $('#add_contributor_modal').modal('show'); } on_show_add_contributor_modal=function(e) { $('#add_contributor_modal #add_contributor_name').focus(); } validateEmail=function(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } on_valid_add_contributor_modal=function(e) { e.preventDefault(); var group=groups[$('#add_contributor_modal').data('group-uuid')]; var name=$('#add_contributor_name')[0].value; edit_id=$('#view-group #edit_id')[0].value; if (name=='') { alert('Vous devez saisir un nom !'); return; } var email=$('#add_contributor_email')[0].value; if (email=='') { alert('Vous devez saisir un email !'); return; } duplicate=group.contributorByEmail(email) if (duplicate!=undefined && edit=='-1') { alert('Un contributor utilise déjà cet email !'); return; } if (!validateEmail(email)) { alert('Email invalide !'); return; } if(edit_id=='-1') { group.addContributor(new Contributor(name,email)); } else { group.replaceContributor(email,new Contributor(name,email)); } set_contributors(group); $('#add_contributor_modal').modal('hide'); groups.save(); view_group(group,email); } on_close_add_contributor_modal=function () { $('#add_contributor_name')[0].value=''; $('#add_contributor_email')[0].value=''; } on_edit_contributor_btn_click=function(e) { var group=groups[$('#view-group').data('uuid')]; $('#add_contributor_modal').data('group-uuid',group.uuid); contributor_email=$('#view-group #contributor')[0].value; contributor=group.contributorByEmail(contributor_email); $('#view-group #edit_id')[0].value=contributor_email; $('#add_contributor_modal #add_contributor_name')[0].value=contributor.name; $('#add_contributor_modal #add_contributor_email')[0].value=contributor.email; $('#add_contributor_modal #add_contributor_email').attr('disabled',true); $($('#add_contributor_modal h4')[0]).html('Editer un participant'); $($('#add_contributor_modal #add_contributor_submit')[0]).html('Valider'); $('#add_contributor_modal').modal('show'); } on_click_del_contributor_btn=function() { var group=groups[$('#view-group').data('uuid')]; contributor=group.contributorByEmail($('#view-group #contributor')[0].value); question='Voulez-vous vraiment supprimer '+contributor.name+' ?'; myconfirm(question,on_confirm_del_contributor,null,contributor); } on_confirm_del_contributor=function(contributor) { var group=groups[$('#view-group').data('uuid')]; group.removeContributor(contributor); view_group(group); groups.save(); } /******************************** * Add/edit/delete contribution ********************************/ on_show_add_contribution_modal=function(e) { $('#add_contribution_modal #add_contribution_contributor_email').html($('#view-group #contributor').html()); $('#add_contribution_modal #add_contribution_contributor_email')[0].value=$('#view-group #contributor')[0].value; gid=$('#add_contribution_modal').data('group-uuid'); group=groups[gid]; current_cat=$('#add_contribution_modal #add_contribution_category')[0].value; cats="<option value=''>Non définie</option>"; for (u in group.getSortedCategories()) { cats+="<option value='"+u+"'>"+group.categories[u]['name']+"</option>"; } $('#add_contribution_modal #add_contribution_category').html(cats); $('#add_contribution_modal #add_contribution_category')[0].value=current_cat; $('#add_contribution_modal #add_contribution_title').typeahead('destroy'); $('#add_contribution_modal #add_contribution_title').typeahead({ hint: true, highlight: true, minLength: 1 }, { name: 'titles', displayKey: 'value', source: group.findContributionByTitleMatches() }); $('#add_contribution_modal #add_contribution_title').focus(); } on_select_contribution_suggestion=function(event,choice,name) { if (jQuery.type(choice['category'])=='string') { $('#add_contribution_modal #add_contribution_category').val(choice['category']); } } on_click_add_contribution_btn=function() { $('#add_contribution_modal').data('group-uuid',$('#view-group').data('uuid')); $('#add_contribution_modal #edit_uuid')[0].value='-1'; $('#add_contribution_date')[0].value=moment().format('DD/MM/YYYY'); $($('#add_contribution_modal h4')[0]).html('Ajouter une contribution'); $($('#add_contribution_modal #add_contribution_submit')[0]).html('Ajouter'); $('#add_contribution_modal').modal('show'); } on_valid_add_contribution_modal=function(e) { e.preventDefault(); var group=groups[$('#add_contribution_modal').data('group-uuid')]; var contributor_email=$('#add_contribution_contributor_email')[0].value; var contributor=group.contributorByEmail(contributor_email); if (contributor==undefined) { alert('Participant inconu !'); return; } var title=$('#add_contribution_title')[0].value; if (title=='') { $('#add_contribution_title')[0].focus(); alert('Vous devez saisir un titre !'); return; } var cost=$('#add_contribution_cost')[0].value; if (cost=='') { $('#add_contribution_cost')[0].focus(); alert('Vous devez saisir un coût !'); return; } else if(!RegExp('^[0-9]*((,|\.)[0-9]{1,2})*$').test(cost)) { $('#add_contribution_cost')[0].focus(); alert('Coût incorrect !'); return; } cost=parseFloat(cost.replace(',','.')); var date=$('#add_contribution_date')[0].value; date.replace(/ /g,''); if (date!='') { if(!RegExp('^[0-3][0-9]\/[0-1][0-9]\/[0-2][0-9][0-9][0-9]$').test(date)) { $('#add_contribution_date')[0].focus(); alert('Date incorrect !'); return; } date=moment(date,'DD-MM-YYYY').toDate(); if (jQuery.type(date)!='date') { alert('Date non-reconnu !'); return; } } else { date=new Date(); } var cat=$('#add_contribution_category')[0].value; if (cat != '' && !jQuery.type(group.categories[cat])) { alert('Category incorrect'); return; } if($('#add_contribution_modal #edit_uuid')[0].value=='-1') { group.addContribution(new Contribution(contributor,cost,title,date,cat)); } else { contribution_uuid=$('#add_contribution_modal #edit_uuid')[0].value; group.updateContribution(contribution_uuid,new Contribution(contributor,cost,title,date,cat)); } show_contributions(group,$('#view-group #contributor')[0].value); $('#add_contribution_modal').modal('hide'); $('#add_contribution_modal form')[0].reset(); groups.save(); } on_close_add_contribution_modal=function () { $('#add_contribution_modal form')[0].reset(); } on_contribution_delete_btn_click=function(e) { var group=groups[$('#view-group').data('uuid')]; contribution_uuid=$($(e.target).parents('div')[0]).data('uuid'); contribution=group.contributions[contribution_uuid]; 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} ); } on_confirm_contribution_delete=function(data) { data.group.deleteContribution(data.contribution_uuid); groups.save(); on_contributor_change(); } on_contribution_edit_btn_click=function(e) { var group=groups[$('#view-group').data('uuid')]; $('#add_contribution_modal').data('group-uuid',$('#view-group').data('uuid')); $($('#add_contribution_modal h4')[0]).html('Editer une contribution'); $($('#add_contribution_modal #add_contribution_submit')[0]).html('Valider'); contribution_uuid=$($(e.target).parents('div')[0]).data('uuid'); contribution=group.contributions[contribution_uuid]; $('#add_contribution_modal #add_contribution_contributor_email')[0].value=contribution.contributor.email; $('#add_contribution_modal #add_contribution_title')[0].value=contribution.getTitle(); $('#add_contribution_modal #add_contribution_cost')[0].value=contribution.cost; $('#add_contribution_modal #add_contribution_date')[0].value=moment(contribution.date).format('DD/MM/YYYY'); if (contribution.category) { $('#add_contribution_modal #add_contribution_category')[0].value=contribution.category; } $('#add_contribution_modal #edit_uuid')[0].value=contribution_uuid; $('#add_contribution_modal').modal('show'); } /******************** * Clear local data ********************/ clear_local_data=function() { navbar_collapse_hide(); myconfirm('Etes-vous sûre de vouloir supprimer les données locales ?',on_confirm_clear_local_data); } on_confirm_clear_local_data=function(data) { delete localStorage.groups; location.reload(); } /********************* * View balance *********************/ on_display_balance_btn_click=function(e) { group=groups[$('#view-group').data('uuid')]; display_balance(group); } display_balance=function(group) { bal=group.balance(); tbody=$($('#display_balance_modal tbody')[0]); tbody.html(''); for (c in bal['balance']) { if(bal['balance'][c]['diff']<0) { diff='<td class="negative">'+bal['balance'][c]['diff'].toFixed(2)+' €</td>'; } else { diff='<td><span class="glyphicon glyphicon-thumbs-up"></span></td>'; } tbody.append('<tr><td>'+bal['balance'][c]['name']+'</td><td>'+bal['balance'][c]['total'].toFixed(2)+' €</td>'+diff+'</tr>'); } $('#display_balance_modal #total-value').html(bal.sum.toFixed(2)+' €'); $('#display_balance_modal').modal('show'); } /********************* * Remove group *********************/ on_remove_group_btn_click=function(e) { group=groups[$('#view-group').data('uuid')]; bottom_navbar_collapse_hide(); myconfirm('Etes-vous sûre de vouloir supprimer le group '+group.name+' ?',on_confirm_remove_group,null,group); } on_confirm_remove_group=function(group) { if(groups.removeGroup(group.uuid)) { groups.save(); location.reload(); } else { alert('Erreur en supprimant le groupe '+group.name+' :('); } } /******************** * Login ********************/ on_close_login_modal=function(e) { $('#login_modal form')[0].reset(); } sync_server=false; on_valid_login_modal=function(e) { e.preventDefault(); email=$('#login_modal #login_email')[0].value; pass=$('#login_modal #login_pass')[0].value; server=$('#login_modal #login_server')[0].value; $('#login_modal').modal('hide'); pleaseWaitShow(); sync_server.login(server,email,pass, function(data) { localStorage.user=JSON.stringify({ 'name': data.name, 'email': email, 'password': pass, 'server': server, 'lastsync': null }); pleaseWaitHide(); logged_menu(); }, function(data) { pleaseWaitHide(); if (jQuery.type(data) != 'object' && data.loginerror) { alert(data.loginerror); } else { console.log(data); alert('Erreur durant la connexion au serveur'); } } ); } on_click_go_to_subscribe_btn=function() { $('#login_modal').modal('hide'); $('#subscribe_modal').modal('show'); } /******************** * Subscribe ********************/ on_close_subscribe_modal=function(e) { $('#subscribe_modal form')[0].reset(); } sync_server=false; on_valid_subscribe_modal=function(e) { e.preventDefault(); email=$('#subscribe_modal #subscribe_email')[0].value; name=$('#subscribe_modal #subscribe_name')[0].value; pass=$('#subscribe_modal #subscribe_pass')[0].value; server=$('#subscribe_modal #subscribe_server')[0].value; $('#subscribe_modal').modal('hide'); pleaseWaitShow(); sync_server.subscribe(server,email,name,pass, function(data) { localStorage.user=JSON.stringify({ 'name': data.name, 'email': data.email, 'password': data.password, 'server': server, }); pleaseWaitHide(); logged_menu(); alert('Bienvenu '+data.name+' !'); }, function(data) { pleaseWaitHide(); if (jQuery.type(data) == 'object' && jQuery.type(data.subscribeerror)!='undefined') { alert(data.subscribeerror); } else { console.log(data); alert('Erreur durant la connexion au serveur'); } } ); } /******************** * Sync ********************/ on_click_sync_btn=function(e) { navbar_collapse_hide(); if (user) { pleaseWaitShow(); onsuccess=function(data) { console.log(data); if (data.groups) { groups.import(data.groups); groups.save(); user.lastsync=new Date().getTime(); localStorage.user=JSON.stringify(user); refresh_group_list(); pleaseWaitHide(); view_home(); alert('Groupes synchronisés'); } else { onerror(data); } } onerror=function(data) { pleaseWaitHide(); console.log(data); if (jQuery.type(data['loginerror'])!='undefined') { alert(data['loginerror']); } else if (jQuery.type(data['syncerror'])!='undefined') { alert(data['syncerror']); } else { alert('Erreur durant la synchronisation :('); } } sync_server.sync(user.server, user.email, user.password, groups.export(),onsuccess,onerror); } else { alert("Vous devez vous connecter pour commencer"); $('#login_modal').modal('show'); } } /* * User menu */ user=false; logged_menu=function() { user=JSON.parse(localStorage.user); $('#user-name').html(user.name); $('#user-menu li').remove(); menu=$('#user-menu'); menu.html("<li><a id='myaccount_btn'>Mon compte</a></li>"+ "<li><a id='sync_btn'>Synchroniser</a></li>" + "<li class='divider'></li>" + "<li><a id='logoff_btn'>Déconnexion</a></li>"); $('#myaccount_btn').bind('click',on_click_myaccount_btn); $('#sync_btn').bind('click',on_click_sync_btn); $('#logoff_btn').bind('click',on_click_logoff_btn); } logged_out_menu=function() { user=false; $('#user-name').html('Connexion'); $('#user-menu li').remove(); menu=$('#user-menu'); menu.html("<li><a id='login_btn'>Connexion</a></li>"+ "<li><a id='subscribe_btn'>Inscription</a></li>"); $('#login_btn').bind('click',on_click_login_btn); $('#subscribe_btn').bind('click',on_click_subscribe_btn); } on_click_myaccount_btn=function() { $('#myaccount_modal #myaccount_email').html(user.email); $('#myaccount_modal #myaccount_name')[0].value=user.name; $('#myaccount_modal #myaccount_server').html(user.server); if (user.lastsync) { $('#myaccount_modal #myaccount_lastsync').html(moment(user.lastsync).format('DD/MM/YYYY HH:mm:ss')); } else { $('#myaccount_modal #myaccount_lastsync').html('Jamais synchronisé'); } $('#myaccount_modal').modal('show'); } on_click_login_btn=function() { $('#login_modal').modal('show'); } on_click_subscribe_btn=function() { $('#subscribe_modal').modal('show'); } on_click_logoff_btn=function() { delete localStorage.user; logged_out_menu(); } is_on_bottom=function(){ var totalHeight, currentScroll, visibleHeight; if (document.documentElement.scrollTop) { currentScroll = document.documentElement.scrollTop; } else { currentScroll = document.body.scrollTop; } totalHeight = document.body.offsetHeight; visibleHeight = document.documentElement.clientHeight; return (totalHeight <= currentScroll + visibleHeight ); } /******************* * pleaseWaitDialog *******************/ pleaseWaitShow=function() { $('#please_wait_modal').modal('show'); } pleaseWaitHide=function() { $('#please_wait_modal').modal('hide'); } /************************** * Cache / Update *************************/ _checkForUpgrade=false; onUpdateReady=function() { if (_checkForUpgrade) { pleaseWaitHide(); } myconfirm( "Une nouvelle version de l'application est disponible. Voulez-vous lancer la mise à jour ?", onConfirmUpdate,null,{} ); } onConfirmUpdate=function() { window.applicationCache.swapCache(); location.reload(); } updateApp = function() { navbar_collapse_hide(); pleaseWaitShow(); _checkForUpgrade=true; window.applicationCache.update(); } onNoUpdate = function() { if (_checkForUpgrade) { pleaseWaitHide(); _checkForUpgrade=false; alert('Aucune mise à jour disponible'); } } /********************* * Activate *********************/ $( document ).ready( function() { pleaseWaitShow(); if(typeof(Storage)!=="undefined"){ groups=new GroupList(); groups.loadFromLocalStorage(); refresh_group_list(); if (jQuery.type(localStorage.user)!='undefined') { logged_menu(); } else { logged_out_menu(); } } else { alert('Local storage not supported !'); pleaseWaitHide(); return; } sync_server=new SyncServer(); $('#app-name').bind('click',view_home); $('#add_group_btn').bind('click',on_click_add_group_btn); $('#add_group_submit').bind('click',on_valid_add_group_modal); $("#add_group_modal").on('shown.bs.modal',on_show_add_group_modal); $("#add_group_modal").on('hidden.bs.modal',on_close_add_group_modal); $("#add_group_modal form").bind('submit',on_valid_add_group_modal); $('#clear_local_data').bind('click',clear_local_data); $('#login_modal').on('hidden.bs.modal',on_close_login_modal); $('#login_modal #login_submit').bind('click',on_valid_login_modal); $('#login_modal #go_to_subscribe_btn').bind('click',on_click_go_to_subscribe_btn); $('#login_modal form').bind('submit',on_valid_login_modal); $('#subscribe_modal').on('hidden.bs.modal',on_close_subscribe_modal); $('#subscribe_modal #subscribe_submit').bind('click',on_valid_subscribe_modal); $('#subscribe_modal form').bind('submit',on_valid_subscribe_modal); $('#view-group #contributor').bind('change',on_contributor_change); $(window).bind('scroll',on_view_group_scroll); $('#add_contributor_btn').bind('click',on_click_add_contributor_btn); $('#add_contributor_submit').bind('click',on_valid_add_contributor_modal); $("#add_contributor_modal").on('shown.bs.modal',on_show_add_contributor_modal); $("#add_contributor_modal").on('hidden.bs.modal',on_close_add_contributor_modal); $("#add_contributor_modal form").bind('submit',on_valid_add_contributor_modal); $("#add_contribution_date").pickadate({'format': 'dd/mm/yyyy','firstDay': 1}); $('#edit_contributor_btn').bind('click',on_edit_contributor_btn_click); $('#trash_contributor_btn').bind('click',on_trash_group_contributors_btn_click); $('#del_contributor_btn').bind('click',on_click_del_contributor_btn); $('#add_contribution_btn').bind('click',on_click_add_contribution_btn); $('#add_contribution_submit').bind('click',on_valid_add_contribution_modal); $("#add_contribution_modal").on('shown.bs.modal',on_show_add_contribution_modal); $("#add_contribution_modal").on('hidden.bs.modal',on_close_add_contribution_modal); $("#add_contribution_modal form").on('submit',on_valid_add_contribution_modal); $('#add_contribution_modal #add_contribution_title').on('typeahead:selected', on_select_contribution_suggestion); $("#display_balance_btn").bind('click',on_display_balance_btn_click); $("#view-group-trash #go-back-group").bind('click',on_go_back_group_btn_click); $("#view-group-trash-contributors #go-back-group").bind('click',on_go_back_group_trash_contributors_btn_click); $('#categories_group_btn').bind('click',on_categories_group_btn_click); $('#export_group_btn').bind('click',on_export_group_btn_click); $('#trash_group_btn').bind('click',on_trash_group_btn_click); $('#remove_group_btn').bind('click',on_remove_group_btn_click); $('#nav-search-form').bind('submit',on_nav_search_form_submit); $('#nav-search-form input').bind('input',on_nav_search_form_input); $('#view-group-categories span.input-group-addon').bind('click',on_categories_group_add_btn_click); $("#view-group-categories button.go-back-group").bind('click',on_categories_go_back_group_btn_click); view_home(); pleaseWaitHide(); $('#update_app').bind('click',updateApp); window.applicationCache.addEventListener('updateready', onUpdateReady); window.applicationCache.addEventListener('noupdate', onNoUpdate); if(window.applicationCache.status === window.applicationCache.UPDATEREADY) { onUpdateReady(); } } );