From 5b1ed81828c47895644575c7a005e44be423f8c9 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Tue, 13 Sep 2016 00:17:02 +0200 Subject: [PATCH] Add Export/Import feature --- inc/myco.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 7 ++++-- 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/inc/myco.js b/inc/myco.js index c177b4d..94fb659 100644 --- a/inc/myco.js +++ b/inc/myco.js @@ -887,6 +887,68 @@ on_click_sync_btn=function(e) { } } +/************************** + * Export/Import all + **************************/ + +on_export_all_btn_click=function(e) { + e.preventDefault(); + navbar_collapse_hide(); + var blob=new Blob([JSON.stringify(groups.export(),null,2)],{type: 'text/plain'}); + var a=$('download'); + a.attr('href',window.URL.createObjectURL(blob)); + a.css('display','none'); + $('body').append(a); + a[0].click(); + a.remove(); +} + +on_import_all_btn_click=function(e) { + e.preventDefault(); + navbar_collapse_hide(); + myconfirm( + "Voulez-vous vraiment inporter des données à partir d'un fichier externe ?
Important : cela écrasera l'ensemble des données actuellement présente dans l'application.'); + input.css('display','none'); + $('body').append(input); + input[0].click(); + input.bind('change',{'input': input},function(e) { + pleaseWaitShow(); + var file=input.prop('files')[0]; + if (file) { + var reader = new FileReader(); + $(reader).bind('load',function(e) { + try { + var data=JSON.parse(e.target.result); + if (jQuery.type(data)!='object') { + alert("Fichier invalide !"); + pleaseWaitHide(); + } + else { + var backup=groups.export(); + try { + groups.import(data); + groups.save(); + view_home(); + } + catch(e) { + groups.import(backup); + alert("Une erreur est survenue durant l'importation des données."); + } + } + } + catch(e) { + alert("Une erreur est survenue durant le parsing du contenu du fichier."); + } + pleaseWaitHide(); + }); + reader.readAsText(file); + } + }); + }); +} + /* * User menu */ @@ -1084,6 +1146,9 @@ $( document ).ready( function() { $('#view-group-categories span.input-group-addon').bind('click',on_categories_group_add_btn_click); $('#view-group-categories form').bind('submit',on_categories_group_add_btn_click); $("#view-group-categories button.go-back-group").bind('click',on_categories_go_back_group_btn_click); + + $('#export_all_btn').bind('click',on_export_all_btn_click); + $('#import_all_btn').bind('click',on_import_all_btn_click); view_home(); pleaseWaitHide(); diff --git a/index.html b/index.html index 2ff8af6..6eaa50a 100644 --- a/index.html +++ b/index.html @@ -172,10 +172,13 @@ span.cat-color {