/*=========================================================*/
/*=========== Gestion de la recherche de sujet ============*/
/*=========================================================*/
var sField = $('#search-field');
var sSubmit = $('#search-subject');
var sList = $('section[data-sublink="survey"] ul[data-list]');
sSubmit.addEventListener('click', function(e){
/* (1) On construit la requête */
var request = {
path: 'subject/search',
name: sField.value
};
/* (2) On effectue la requête */
api.send(request, function(response){
// Si erreur
if( response.ModuleError != 0 ){
Notification.error('Erreur', 'La recherche a échoué.')
return false;
}
console.log(response);
/* (3) On remplit la liste des résultats */
var htmlContent = '';
for( var id in response.results ){
htmlContent += "
";
htmlContent += "SUJET
";
htmlContent += "
";
htmlContent += " "+response.results[id].name+"
";
htmlContent += " "+response.results[id].creation+"
";
htmlContent += " ResTIC ";
htmlContent += "
";
htmlContent += " Facebook ";
htmlContent += "
";
htmlContent += " Cellulaire ";
htmlContent += "
";
htmlContent += " ";
}
sList.innerHTML = htmlContent;
});
}, false);
/*=========================================================*/
/*========== Gestion du formulaire téléphonique ===========*/
/*=========================================================*/
/* [1] Initialisation des utilitaires et variables
=========================================================*
/* (1) Initialisation des managers */
var pSubjectManager;
var pContactManager;
var pMiniManager;
var pFicheManager;
var pMatriceManager;
/* (2) Fonctions utiles */
function pDynamicUpdate(target){
/* (0) Vérification de la cohérence de la @target
---------------------------------------------------------*/
var isElement = target instanceof Element;
var isSaveButton = isElement && target.tagName == 'INPUT' && target.type == 'submit';
var isNavButton = isElement && target.tagName == 'SPAN' && (target.parentNode.id == 'p_nav-mini' || target.parentNode.id == 'p_nav-fiche');
var isNavContact = isElement && target.tagName == 'SPAN' && target.parentNode.id == 'p_nav-contact';
// Si erreur, on retourne une erreur
if( !isSaveButton && !isNavButton && !isNavContact && target !== true )
return false;
console.log('> dynamic update');
/* (1) On enregistre les MINI fiches relation */
pMiniManager.fieldsToStorage();
/* (2) On enregister les FICHES relation */
pFicheManager.fieldsToStorage();
/* (3) On enregistre les CONTACTS */
pContactManager.fieldsToStorage();
/* (4) On enregistre la MATRICE */
pMatriceManager.fieldsToStorage();
/* (5) On synchronise les FICHE avec les CONTACTS */
// 1. On synchronise les `mini` et `fiches` associées en fonction de la dernière date de modification
// 2. On synchronise les `fiches` dupliquées en fonction de la dernière date de modification
pFicheManager.sync();
/* (6) On synchronise les MINI avec les CONTACTS */
// Supprime les contacts déja dans les FICHES
pMiniManager.sync();
/* (7) On affiche le tout */
pMiniManager.storageToFields();
pFicheManager.storageToFields();
pMatriceManager.storageToFields();
/* (8) On met à jour les contacts si on les a modifié on si on navigue dans les contacts */
if( isSaveButton || isNavContact )
pContactManager.storageToFields();
}
/* [2] Inclusion des scripts externes et lancement
=========================================================*/
include('/js/includes/input-phone-subject-min.js', function(){
include('/js/includes/input-phone-contact-min.js', function(){
include('/js/includes/input-phone-mini-min.js', function(){
include('/js/includes/input-phone-fiche-min.js', function(){
include('/js/includes/input-phone-matrice-min.js', function(){
/* (1) Gestion du formulaire du sujet
---------------------------------------------------------*/
/* (1) On crée une instance du manager du sujet */
pSubjectManager = new inputPhoneSubject(
$('[data-sublink="phone"] article.subject-panel [data-name="tmp_id"]'),
$('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'),
$('[data-sublink="phone"] article.subject-panel [data-name="number"]'),
$('[data-sublink="phone"] article.subject-panel [data-name="submit"]')
);
/* (2) On le démarre */
pSubjectManager.attach();
/* (2) Gestion des formulaires de contact
---------------------------------------------------------*/
/* (1) On crée une instance du gestionnaire des CONTACTS */
pContactManager = new inputPhoneContact(
$('[data-sublink="phone"] article.contact-panel'),
$('[data-sublink="phone"] #p_nav-contact')
);
/* (2) On le démarre */
pContactManager.attach(pDynamicUpdate);
/* (3) Gestion des mini fiches relation
---------------------------------------------------------*/
/* (1) On crée une instance du gestionnaire des mini fiches relation */
pMiniManager = new inputPhoneMini(
$('[data-sublink="phone"] article.mini-relation-panel'),
$('[data-sublink="phone"] #p_nav-mini')
);
/* (2) On le démarre */
pMiniManager.attach(pDynamicUpdate);
/* (4) Gestion des fiches relation
---------------------------------------------------------*/
/* (1) On crée une instance du gestionnaire des fiches relation */
pFicheManager = new inputPhoneFiche(
$('[data-sublink="phone"] article.relation-panel'),
$('[data-sublink="phone"] #p_nav-fiche')
);
/* (2) On le démarre */
pFicheManager.attach(pDynamicUpdate);
/* (5) Gestion de la matrice de relations
---------------------------------------------------------*/
/* (1) On crée une instance du gestionnaire de la matrice */
pMatriceManager = new inputPhoneMatrice(
$('[data-sublink="phone"] article.matrice-panel')
);
/* (2) On le démarre */
pMatriceManager.attach(pDynamicUpdate);
// Listener pour snake
var smgr = new ShortcutManager();
smgr.append('s+n+a+k+e', function(){ pMatriceManager.snake(); });
smgr.listen();
/* (6) Gestion de l'import du fichier
---------------------------------------------------------*/
// On vide l'input de type 'file' quand on clique
$('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener('click', function(e){
e.target.value = null;
}, false);
// Gestion de l'upload
$('[data-sublink="phone"] input#p_call_log-import[type="file"]').addEventListener('change', function(e){
/* (1) On rédige la requête */
var request = {
path: 'upload/call_log',
phone_number: $('[data-sublink="phone"] #p_subject_phone_number').value,
file: e.target.files[0]
};
/* (2) On effectue l'upload (import) */
api.send(request, function(response){
console.log(response);
var loadingNotif = null;
// Si erreur, on quitte
if( response.ModuleError != 0 ){
if( response.ModuleError == 9 )
Notification.error('Erreur', 'Il est nécessaire de saisir les informations du