NxTIC/public_html/js/includes/input-phone-subject.js

103 lines
2.9 KiB
JavaScript
Raw Permalink Normal View History

/* [0] Constructeur -> définit le conteneur et le bouton d'ajout
=========================================================*/
function inputPhoneSubject(iSubjectId, store_button){
this.subject_id = iSubjectId;
this.store_button = store_button;
}
/* [1] Attributs
=========================================================*/
inputPhoneSubject.prototype = {
store_button: this.store_button, // Bouton d'ajout d'un formulaire
subject_id: this.subject_id,
handler: null
};
/* [2] Vérification d'un formulaire
=========================================================*/
inputPhoneSubject.prototype.check = function(){
2016-09-27 14:13:51 +00:00
/* (1) Le numéro n'est pas vide (et c'est un numéro) */
return this.subject_id.value.length > 0 && !isNaN(this.subject_id.value);
};
/* [3] Gestion de l'enregistrement des formulaires de contact
=========================================================*/
inputPhoneSubject.prototype.fieldsToStorage = function(){
2016-10-10 08:58:44 +00:00
console.group('[phone.subject] fields to storage');
// {1} Si le formulaire n'est pas valide, on ne l'enregistre pas //
if( !this.check() ) return false;
// {2} Si on a déja saisie 1+ contact, on ne l'enregistre pas //
if( lsi.keys('p_contacts').length > 0 ){
Notification.warning('Attention', 'Vous devez effacer le formulaire pour changer de sujet');
return false;
}
// {3} On récupère et met en forme les valeurs du deflater //
var obj = { subject_id: this.subject_id.value };
// {4} On enregistre les données dans le 'localStorage' //
lsi.set('p_subject', 0, obj);
console.groupEnd();
};
/* [4] Gestion de l'affichage depuis le 'localStorage'
=========================================================*/
inputPhoneSubject.prototype.storageToFields = function(){
2016-10-10 08:58:44 +00:00
console.group('[phone.subject] storage to fields');
// {1} On récupère les informations du sujet //
var subjectData = lsi.get('p_subject', 0);
subjectData = subjectData || { subject_id: '' };
// {2} On restore les valeurs //
this.subject_id.value = subjectData.subject_id;
2016-10-10 08:58:44 +00:00
console.groupEnd();
};
/* [5] Point d'amorçage de la gestion des contacts
=========================================================*/
inputPhoneSubject.prototype.attach = function(handler){
2016-10-10 08:58:44 +00:00
console.group('[phone.subject] attaching events');
/* (1) On initialise le jeu de données */
lsi.createDataset('p_subject');
lsi.createDataset('p_friends');
// Pointeur pour les scopes des addEventListener()
this.handler = handler;
// Handler de mise à jour quand les champs sont bons
var fts = function(e){
this.fieldsToStorage();
this.handler(true);
this.storageToFields();
}.bind(this);
/* (2) On attache l'évènement sur le bouton d'enregistrement */
this.store_button.addEventListener('click', fts, false);
/* (3) On attache un évènement de 'blur' sur chaque '<input type="text">' */
2016-09-27 14:13:51 +00:00
// this.subject_id.addEventListener('blur', fts, false);
/* (4) On charge le sujet depuis la mémoire ('localStorage') */
this.storageToFields();
2016-10-10 08:58:44 +00:00
console.groupEnd();
};