diff --git a/js/lib/html-builder-min.js b/js/lib/html-builder-min.js
index 85092fe..0c66381 100644
--- a/js/lib/html-builder-min.js
+++ b/js/lib/html-builder-min.js
@@ -1 +1 @@
-function HTMLBuilder(){}HTMLBuilder.prototype={layout:null,default_params:{},setLayout:function(a){this.layout=a},build:function(a){var b=this.layout,c;for(c in a){var d=new RegExp("@"+c,"g");console.log(d);b=b.replace(d,a[c])}return b}};
+function HTMLBuilder(){}HTMLBuilder.prototype={layout:null,default_params:{},setLayout:function(a){this.layout=a},build:function(a){var b=this.layout,c;for(c in a)b=b.replace(new RegExp("@"+c,"g"),a[c]);return b}};
diff --git a/js/lib/html-builder.js b/js/lib/html-builder.js
index fe48f25..2797ea7 100644
--- a/js/lib/html-builder.js
+++ b/js/lib/html-builder.js
@@ -19,7 +19,6 @@ HTMLBuilder.prototype = {
for( var name in parameters ){
// Contiendra l'expression régulière pour remplacer le paramètre
var regex = new RegExp('@'+name, 'g');
- console.log(regex);
render = render.replace(regex, parameters[name]);
}
diff --git a/js/lib/local-storage-interface-min.js b/js/lib/local-storage-interface-min.js
index cac0941..51a780a 100644
--- a/js/lib/local-storage-interface-min.js
+++ b/js/lib/local-storage-interface-min.js
@@ -1,3 +1,3 @@
function localStorageInterface(){}
-localStorageInterface.prototype={dataset:[],dataset_keys:[],set:function(a,b,d){var c=this.dataset.indexOf(a);if(-1==c)return!1;this.dataset_keys[c].push(b);localStorage.setItem(a,JSON.stringify(this.dataset_keys[c]));localStorage.setItem(a+"_"+b,JSON.stringify(d));return!0},get:function(a,b){return-1==this.dataset.indexOf(a)?!1:JSON.parse(localStorage.getItem(a+"_"+b))},createDataset:function(a){if(null==a||"string"!=typeof a)return!1;if(-1 "+b);-1==this.dataset_keys[c].indexOf(b)&&(this.dataset_keys[c].push(b),localStorage.setItem(a,JSON.stringify(this.dataset_keys[c])));localStorage.setItem(a+"_"+b,JSON.stringify(d));return!0},get:function(a,b){return-1==this.dataset.indexOf(a)?!1:JSON.parse(localStorage.getItem(a+"_"+b))},createDataset:function(a){if(null==a||"string"!=
+typeof a)return!1;if(-1 ");
var ficheBuilder=new HTMLBuilder;ficheBuilder.setLayout("
");
-function updateListener(b,a,c,d){b.removeEventListener(a,c);d.addEventListener(a,c);return d}var ic=new inputChecker,FormDeflaterP={tags:["input"],attr:["data-name"]},importCallLog=$('input#call_log-import[type="file"]'),contactDeflaters=[];function contactForms(){var b=$$("h4.new-contact");contactDeflaters=[];for(var a=0;a");
-// Fonction qui met à jour un élément et son listener
-function updateListener(element, eventType, handler, newElement){
+/* (3) Fonction qui met à jour un élément et son listener */
+function updateListener(element, eventType, handler){
element.removeEventListener(eventType, handler);
- newElement.addEventListener(eventType, handler);
- return newElement;
+ element.addEventListener(eventType, handler);
}
@@ -105,30 +104,96 @@ var addFiche = $('h4.add-fiche');
+
+
+
+
+
/* [3] Gestion des formulaires de contact
=========================================================*/
/* (0) Conteneur de tous les formulaires */
var contactContainer = $('article.contact-panel');
-/* (1) Fonction pour l'ajout d'un contact */
+/* (1) Gestion de l'enregistrement des contacts en local ('localStorage') */
+lsi.createDataset('contacts');
+function storeContacts(e){
+ console.log('storing');
+ // {1} On récupère les informations relatives à l'élément courant //
+ var form = e.target.parentNode;
+ var indexInParent = form.parentNode.children.indexOf(form);
+
+ // {2} On initialise notre deflater pour récupérer les valeurs //
+ var deflater = new FormDeflater(form, ['input'], ['data-name']);
+
+ // {3} On récupère et met en forme les valeurs du deflater //
+ var deflated = deflater.deflate();
+ var obj = {
+ number: deflated.number.value,
+ username: deflated.username.value,
+ firstname: deflated.firstname.value,
+ lastname: deflated.lastname.value
+ };
+
+ // {4} On enregistre les données dans le 'localStorage' //
+ lsi.set('contacts', 'form'+indexInParent, obj);
+}
+
+
+/* (2) Fonction pour l'ajout d'un contact */
function addNewContact(number, username, firstname, lastname){
+ // {1} On ajoute le HTML //
contactContainer.innerHTML += contactBuilder.build({
number: (typeof number != 'string') ? '' : number,
username: (typeof username != 'string') ? '' : username,
firstname: (typeof firstname != 'string') ? '' : firstname,
lastname: (typeof lastname != 'string') ? '' : lastname
});
+
+ // {2} On attache les évènements sur les boutons 'Enregistrer' //
+ var contactSubmits = $$('article.contact-panel .new-contact input[type="submit"]');
+ for( var i = 0 ; i < contactSubmits.length ; i++ )
+ updateListener(contactSubmits[i], 'click', storeContacts);
+
}
-// On ajoute le premier
-addNewContact();
-// Puis on attache l'évènement pour en ajouter d'autres manuellement
+/* (3) Gestion de la récupération des contacts (depuis 'localStorage') */
+function restoreContacts(){
+ // {1} Pour chaque contact du 'localStorage' //
+ var existingContacts = lsi.keys('contacts');
+
+ for( var i = 0 ; i < existingContacts.length ; i++ ){
+ // {2} On récupère les informations du contact //
+ var contactData = lsi.get('contacts', existingContacts[i]);
+
+ // {3} On ajoute un contact à la liste //
+ addNewContact(
+ contactData.number,
+ contactData.username,
+ contactData.firstname,
+ contactData.lastname
+ );
+ }
+
+}restoreContacts();
+
+// Si on a aucun contact, on en ajoute 1
+if( ('article.contact-panel .new-contact input[type="submit"]') == null )
+ addNewContact();
+
+
+
+
+/* (n) On attache tous les évènements */
addContact.addEventListener('click', addNewContact, false);
+
+
+
+
/* [4] Gestion des fiches relation
=========================================================*/
/* (0) Conteneur de tous les formulaires */