diff --git a/.gitignore b/.gitignore index 75cdfeb..f417302 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .ftpconfig sftp-config.json phpunit/coverage/ +#/public_html/tmp/* +#/build/lightdb/storage/*/data diff --git a/autoloader.php b/autoloader.php index 0f5fd0e..5150cf1 100644 --- a/autoloader.php +++ b/autoloader.php @@ -2,11 +2,11 @@ /* [1] On definit les chemins absolus si c'est pas deja fait =========================================================*/ - if( !defined('__ROOT__') ) define('__ROOT__', dirname(__FILE__) ); - if( !defined('__CONFIG__') ) define('__CONFIG__', __ROOT__.'/config' ); - if( !defined('__BUILD__') ) define('__BUILD__', __ROOT__.'/build' ); - if( !defined('__PUBLIC__') ) define('__PUBLIC__', __ROOT__.'/public_html' ); - if( !defined('__TMP__') ) define('__TMP__', __ROOT__.'/public_html/tmp' ); + if( !defined('__ROOT__') ) define('__ROOT__', dirname(__FILE__) ); + if( !defined('__CONFIG__') ) define('__CONFIG__', __ROOT__.'/config' ); + if( !defined('__BUILD__') ) define('__BUILD__', __ROOT__.'/build' ); + if( !defined('__PUBLIC__') ) define('__PUBLIC__', __ROOT__.'/public_html' ); + if( !defined('__TMP__') ) define('__TMP__', __ROOT__.'/public_html/tmp' ); /* ACTIVE LE DEBUGGAGE (WARNING + EXCEPTION) diff --git a/build/api/core/ModuleRequest.php b/build/api/core/ModuleRequest.php index 2d79f0b..0b53661 100644 --- a/build/api/core/ModuleRequest.php +++ b/build/api/core/ModuleRequest.php @@ -193,12 +193,12 @@ =========================================================*/ if( $fromAjax ){ - - $tmpfname = '/tmp/download_'.uniqid().'.php'; - $bodyfname = __BUILD__.'/tmp/content_'.uniqid().'.php'; + $tmpfname = 'download_'.uniqid().'.php'; + $link = '/tmp/'.$tmpfname; + $bodyfname = __TMP__.'/content_'.uniqid().'.php'; /* (1) On crée le fichier temporaire */ - $tmpfnameroot = __BUILD__.$tmpfname; + $tmpfnameroot = __TMP__.'/'.$tmpfname; $tmpfile = fopen($tmpfnameroot, 'w'); fwrite($tmpfile, 'append('link', $tmpfname); + $response->append('link', $link); return $response; diff --git a/build/api/module/download.php b/build/api/module/download.php index 6eac99b..d57ab6e 100644 --- a/build/api/module/download.php +++ b/build/api/module/download.php @@ -130,9 +130,6 @@ /* DOWNLOAD D'UN FICHIER CONTENANT LES DONNEES SELECTIONNEES * * @subjects Liste des identifiants des sujets à prendre en compte - * @phone Si TRUE, prend en compte les données des questionnaires cellulaires - * @facebook Si TRUE, prend en compte les données des questionnaires facebook - * @survey Si TRUE, prend en compte les données des questionnaires ResTIC * @all Si TRUE, prend en compte tous les sujets (annule @subjects) * * @return data Retourne une archive .zip contenant toutes les données sélectionnées @@ -142,15 +139,12 @@ extract($params); /* (0) Gestion du formattage des paramètres */ - $subjects = !is_array($subjects) ? [] : $subjects; - $phone = !is_bool($phone) ? false : $phone; - $facebook = !is_bool($facebook) ? false : $facebook; - $survey = !is_bool($survey) ? false : $survey; - $all = !is_bool($all) ? false : $all; + $subjects = !is_array($subjects) ? [] : $subjects; + $all = !is_bool($all) ? false : $all; /* [0] On récupère le dictionnaire =========================================================*/ - $dict = file_get_contents(__BUILD__.'/src/dynamic/dictionary.json'); + $dict = file_get_contents(__BUILD__.'/lightdb/storage/dictionary.json'); /* (2) Si une erreur pour le fichier de conf */ if( $dict === false ) @@ -164,158 +158,113 @@ return [ 'ModuleError' => ManagerError::ParsingFailed ]; - /* [1] On construit l'arborescence des données + /* [1] Initialisation =========================================================*/ + /* (1) Fichiers de sortie */ $output = [ - 'common_' => [ - 'contacts' => '', - 'relations' => '', - 'dict' => '' - ] + 'contacts.fiche' => '', // contiendra les contacts et leurs données fiches + 'contacts.mini' => '', // contiendra les contacts et leurs données mini + 'relations' => '', // contiendra les relations + 'dict' => '' // contiendra le dictionnaire de valeurs ]; + /* (2) Base de données */ + $subjectdb = new lightdb('subject'); + $contactdb = new lightdb('contact'); - /* [2] On construit les fichiers de chaque sujet DE TELEPHONE + /* [2] On construit la liste des sujets =========================================================*/ - if( $phone ){ // Si @phone vaut TRUE + $subjectindexes = array_keys($subjectdb->index()); + $subjectids = []; - // On ouvre une instance de la base de données - $db = new lightdb('phone_db'); + /* (1) On récupère tous les sujets si c'est spécifié */ + if( $all ) - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); + $subjectids = $subjectindexes; - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ + /* (2) Sinon on retire les ids incorrects */ + else - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); + foreach($subjects as $i=>$id) + if( in_array($id, $subjectindexes) ) + $subjectids[] = intval($id); - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) + + + /* (3) Si aucun sujet restant -> error */ + if( count($subjectids) === 0 ) + return ['ModuleError' => ManagerError::ParamError]; + + + /* [3] Export contacts/relations des sujets selectionnés + =========================================================*/ + foreach($subjectids as $subid){ + + /* (1) On récupère les données du sujet */ + $subject = $subjectdb->fetch($subid); + + // si pas trouvé -> suivant + if( $subject === false ) + continue; + + /* (2) Si aucun contact -> suivant */ + if( !isset($subject['contacts']) || !is_array($subject['contacts']) ) + continue; + + /* (3) Pour chaque contact */ + foreach($subject['contacts'] as $c=>$contactid){ + + // {3.1} On récupère le contact // + $contact = $contactdb->fetch($contactid); + + // si pas trouvé -> suivant + if( $contact === false ) continue; - /* (3) On complète les relations */ - $output['common_']['relations'] .= self::parseCSV($subjectData['relations'], [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement + // {3.2} On ajoute le contact au fichier des FICHES // + if( array_key_exists('studies2', $contact) ) + // On affiche les colonnes pour le premier contact uniquement + $output['contacts.fiche'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['contacts.fiche']) == 0 ); - /* (4) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement + // {3.3} On ajoute le contact au fichier des MINI // + if( array_key_exists('studies1', $contact) ) + // On affiche les colonnes pour le premier contact uniquement + $output['contacts.mini'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['contacts.mini']) == 0 ); } - // On ferme l'instance de la base de données - $db->close(); + /* (4) Si aucune relation -> suivant */ + if( !isset($subject['relations']) || !is_array($subject['relations']) ) + continue; + + /* (5) On ajoute les relations */ + $output['relations'] .= self::parseCSV($subject['relations'], [], strlen($output['relations']) == 0 ); + + } - - - - - - - /* [3] On construit les fichiers de chaque sujet DE FACEBOOK - =========================================================*/ - if( $facebook ){ // Si @facebook vaut TRUE - - // On ouvre une instance de la base de données - $db = new lightdb('facebook_db'); - - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); - - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ - - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); - - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) - continue; - - /* (2) On complète les relations */ - $output['common_']['relations'] .= self::parseCSV($subjectData['relations'], [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (3) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - } - - // On ferme l'instance de la base de données - $db->close(); - - } - - - - - - - - - /* [4] On construit les fichiers de chaque sujet DE FORMULAIRE - =========================================================*/ - if( $survey ){ // Si @survey vaut TRUE - - // On ouvre une instance de la base de données - $db = new lightdb('survey_db'); - - // Si on doit prendre tous les sujets, on les récupère - if( $all ) - $subjects = array_keys( $db->index() ); - - // Pour chaque sujet - foreach($subjects as $s=>$subjectId){ - - /* (1) On récupère les données du sujet en cours */ - $subjectData = $db->fetch($subjectId); - - // Si on ne trouve rien, on passe au suivant - if( $subjectData === false ) - continue; - - /* (2) On complète les relations */ - $output['common_']['relations'] .= self::parseCSV($subjectData['relations'], [], strlen($output['common_']['relations']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - /* (3) On ajoute les contacts à la liste */ - $output['common_']['contacts'] .= self::parseCSV($subjectData['contacts'], $dict['contacts'], strlen($output['common_']['contacts']) == 0 ); // On affiche les colonnes pour la première fois uniquement - - } - - // On ferme l'instance de la base de données - $db->close(); - - } - - - - /* [5] On ajoute le dictionnaire =========================================================*/ - $output['common_']['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n"; + $output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n"; foreach($dict as $ds=>$dataset) foreach($dataset as $f=>$field) foreach($field as $key=>$value) - $output['common_']['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n"; + $output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n"; /* [6] Création de l'archive =========================================================*/ $zip = new \ZipArchive(); - $fname = '/tmp/'.time().'.zip'; + $fname = __TMP__.'/'.time().'.zip'; $zip->open($fname, \ZipArchive::CREATE); - foreach($output as $folder=>$files){ - foreach($files as $file=>$content) - if( strlen($content) > 0 ) - $zip->addFromString($folder.$file.'.csv', $content); - } + foreach($output as $file=>$content) + if( strlen($content) > 0 ) + $zip->addFromString($file.'.csv', $content); $zip->close(); @@ -565,7 +514,7 @@ /* [6] Création de l'archive =========================================================*/ $zip = new \ZipArchive(); - $fname = '/tmp/'.time().'.zip'; + $fname = __TMP__.'/'.time().'.zip'; $zip->open($fname, \ZipArchive::CREATE); foreach($output as $folder=>$files){ diff --git a/build/api/module/input.php b/build/api/module/input.php index a0be1ba..55c6f9d 100644 --- a/build/api/module/input.php +++ b/build/api/module/input.php @@ -11,6 +11,57 @@ class input{ + + /* RETOURNE SI UNE RELATION EST DEJA DANS LA LISTE + * + * @relset Liste des relations existantes + * @idA id du premier sujet concerné + * @idB id du second sujet concerné + * @type type de relation + * + * @return already VRAI si déja dans la liste + * + */ + private static function relAlready(&$relset, $idA, $idB, $type){ + + // relation alter-alter (0 aucun lien ; 1 lien) + $alteralter = in_array($type, [0, 1]); + + /* (1) Pour chaque relation existante */ + foreach($relset as $r=>$rel){ + + + // {2} si même A / B // + $sameAB = $rel['idA'] == $idA && $rel['idB'] == $idB; + + // {3} si même B / A // + $sameBA = $rel['idA'] == $idB && $rel['idB'] == $idA; + + // {4} si même type // + $sameType = $rel['type'] == $type; + + // {4} Cas particulier si on va mettre à jour une relation alter-alter // + if( ($sameAB || $sameBA) && $alteralter && in_array($rel['type'], [0,1]) ){ + // On remplace la valeur + $relset[$r]['type'] = $type; + + // On fait comme si la relation existait déja + return true; + } + + // {5} si relation existante -> TRUE // + if( ($sameAB || $sameBA) && $sameType ){ + echo "already $idA and $idB with $type
"; + return true; + } + } + + /* (2) Si rien trouvé -> */ + return false; + } + + + /* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE TÉLÉPHONIQUE * * @subject Tableau contenant les données du sujet @@ -24,11 +75,14 @@ public static function phone($params){ extract($params); - /* [0] On récupère l'id unique actuel + $START_TIME = microtime(true); + + /* [1] On récupère l'id unique actuel =========================================================*/ $funiq = fopen( __BUILD__.'/lightdb/storage/uniqid', 'r+' ); flock($funiq, LOCK_EX); // On verrouille le fichier - $uniqid = fgets( $funiq ); + $uniqid = trim( fgets( $funiq ) ); + if( !is_numeric($uniqid) ) $uniqid = 0; @@ -37,178 +91,128 @@ $offset = intval($uniqid) + 1; // on enregistre l'id du sujet - $subject_id = $subject['subject_id']; + $subject_id = intval($subject['subject_id']); // Contiendra la valeur de l'id maximum - $maxId = $offset; + $maxId = $offset; - - - // /* [1] On récupère les logs s'ils existent - // =========================================================*/ - // // Contiendra le contenu du fichier + /* [2] On initialise nos variables (lightdb + autres) + =========================================================*/ + /* (1) Fichiers de sortie */ $file = [ "subject" => "", - "contacts" => [], "relations" => [] ]; - // $file = [ 'logs' => [] ]; - // - // - // /* (1) On définit les 2 fichiers utiles */ - // $tmpfile = __BUILD__.'/tmp/phone_'.$subject['tmp_id'].'.json'; - // - // /* (2) Si on a déja crée le fichier avec le journal d'appel dedans, on le récupère */ - // $storage_already = is_string($subject['tmp_id']) && strlen($subject['tmp_id']) == 40 && file_exists($tmpfile); - // - // - // /* (3) Si on a déja crée le fichier, on essaie de récupérer son contenu */ - // if( $storage_already ){ - // $file = json_decode( file_get_contents($tmpfile), true ); - // - // // erreur - // if( $file == null ) - // return [ 'ModuleRequest' => ManagerError::ParsingFailed ]; - // - // // On incrémente tous les ids de l'offset - // foreach($file['logs'] as $i=>$log){ - // $file['logs'][$i]['id'] = $offset + $log['id']; - // - // if( $log['id'] > $maxId ) - // $maxId = (int) $log['id']; - // } - // } + + /* (2) Bases de données */ + $subjectdb = new lightdb('subject'); + $contactdb = new lightdb('contact'); - - - - - /* [2] On enregistre les données du sujet + /* [3] Données du sujet =========================================================*/ - /* (1) On crée le sujet */ - $file['subject'] = [ 'id' => $subject_id ]; + $subject_set = $subjectdb->fetch($subject_id); - /* (2) On récupère ses contacts facebook */ - // {2.1} On récupère les données du sujet // - $lfacebook = new lightdb('facebook_db'); - $lfacebook = $lfacebook->fetch($subject_id); + /* (1) Si le sujet n'existe pas -> ERROR */ + if( $subject_set === false ) + return ['ModuleError'=>ManagerError::UnreachableResource]; - // {2.2} si n'existe pas, on a un tableau vide // - if( $lfacebook === false ) - $lfacebook = [ 'contacts' => [] ]; + /* (2) Initialisation des contacts si vide */ + if( !isset($subject_set['contacts']) ) + $subject_set['contacts'] = []; - if( !isset($lfacebook['contacts']) ) - $lfacebook['contacts'] = []; + /* (3) Initialisation des relations si vide */ + if( !isset($subject_set['relations']) ) + $subject_set['relations'] = []; + /* (4) Ajout de l'enquête */ + if( !in_array('phone', $subject_set['subject']['surveys']) ) + $subject_set['subject']['surveys'][] = 'phone'; - /* (3) On récupère ses contacts lab-surveys */ - // {3.1} On récupère les données du sujet // - $lsurvey = new lightdb('survey_db'); - $lsurvey = $lsurvey->fetch($subject_id); + /* (5) On récupère les noms des contacts */ + $contactsById = []; // idContact -> nomContact, typeEnquete ('mini' ou 'fiche') - // {3.2} si n'existe pas, on a un tableau vide // - if( $lsurvey === false ) - $lsurvey = [ 'contacts' => [] ]; + foreach($subject_set['contacts'] as $contactId){ + $contactId = intval($contactId); + $contactData = $contactdb->fetch( $contactId ); - if( !isset($lsurvey['contacts']) ) - $lsurvey['contacts'] = []; - - - /* (4) On récupère uniquement la liste des contacts avec le type de fiche qu'ils ont */ - // {4.1} Contiendra les contacts exportés // - $exported = [ - 'fiche' => [], - 'mini' => [] + $contactsById[$contactId] = [ + 'name' => $contactData['name'], + 'type' => isset($contactData['studies2']) ? 'fiche' : 'mini' ]; - - // {4.2} Contiendra les username des contacts exportés // - $exportedU = []; - - // {4.3} On récupère les contacts facebook // - foreach($lfacebook['contacts'] as $c=>$data){ - - if( isset($data['studies2']) ){ - - $exported['fiche'][] = $data['id']; - $exportedU[$data['id']] = $data['name']; - - }else - - // S'il n'est pas déja dans les fiches - if( !in_array($data['id'], $exported['fiche']) ){ - - $exported['mini'][] = $data['id']; - $exportedU[$data['id']] = $data['name']; - } - - } - - // {4.4} On récupère les contacts lab-surveys // - foreach($lsurvey['contacts'] as $c=>$data){ - - if( isset($data['studies2']) ) - - // On ajoute le contact s'il n'y est pas déja - if( !in_array($data['id'], $exported['fiche']) ){ - - $exported['fiche'][] = $data['id']; - $exportedU['fiche'][] = $data['username']; - - } - - else - - // On ajoute le contact s'il n'y est pas déja (ni dans mini ni dans fiche) - if( !in_array($data['id'], $exported['mini']) && !in_array($data['id'], $exported['fiche']) ){ - $exported['mini'][] = $data['id']; - $exportedU['mini'][] = $data['username']; - } - } + } - - - - - /* [3] On enregistre les contacts des FICHES + /* [4] On saisit les fiches + les contacts des fiches =========================================================*/ $contactsDone = [ "existing" => [], // Contacts exportés déja enregistrés "username" => [] // Nouveaux contacts déja enregistrés ]; + $finalid = []; // id_contact -> id_final_contact (existant ou nouveau) foreach($fiches as $f=>$ficheData){ + /* (1) On récupère les données du contact associé */ if( !isset($contacts[$ficheData['uid']]) ) - break; + continue; + $contact = $contacts[ $ficheData['uid'] ]; /* (2) Si le contact a été importé d'une autre enquête */ if( isset($contact['existing']) && is_numeric($contact['existing']) ){ + $newId = (int) $contact['existing']; - $uname = $exportedU[intval($contact['existing'])]; - // {2.1} S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte // - if( in_array(intval($contact['existing']), $exported['fiche']) || in_array($contact['existing'], $contactsDone['existing']) ) - break; + $existingData = null; + + // si le contact existe bien déja -> on recup. ses données + if( isset($contactsById[ $newId ]) ) + $existingData = $contactsById[$newId]; + + $uname = $existingData['name']; + + // si aucune référence existante -> on oublie ce contact + if( $existingData === null ){ + $finalid[ intval($contact['uid']) ] = null; + continue; + } + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte + if( $existingData['type'] === 'fiche' || isset($contactsDone['existing'][$newId]) ) + continue; + + // On l'ajoute à la liste des contacts 'existing' fait + $contactsDone['existing'][$newId] = $newId; /* (3) Si nouveau contact */ }else{ - $newId = (int) ($offset+$ficheData['uid']); + + $newId = (int) ($offset+$contact['uid']); $uname = $contact['username']; - // {3.1} S'il a déja été saisi, on quitte // - if( in_array($contact['username'], $contactsDone['username']) ) - break; + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja été saisi, on met l'ancienne référence puis on passe au suivant + if( isset($contactsDone['username'][$uname]) ){ + $finalid[ intval($contact['uid']) ] = $contactsDone['username'][$uname]; + continue; + } + + // On l'ajoute à la liste des contacts 'username' fait + $contactsDone['username'][$uname] = $newId; } + /* (4) Update du @maxId */ if( $newId > $maxId ) $maxId = (int) $newId; - // On remplit les données qui iront dans le fichier pour ce contact - $file['contacts'][] = [ + /* (5) On enregistre les données du contact */ + $contactdb->insert($newId, [ 'id' => $newId, 'name' => $uname, 'sexe' => $ficheData['sexe'], @@ -227,59 +231,88 @@ 'freq' => $ficheData['freq'], 'connect' => $ficheData['connect'], 'connectExtra' => $ficheData['connectSpecial'] - ]; + ] ); + + // On ajoute le contact dans la liste des contacts du sujet (si pas déja) + if( !in_array($newId, $subject_set['contacts']) ) + $subject_set['contacts'][] = $newId; // On enregistre la relation avec EGO - $file['relations'][] = [ - 'idA' => $subject_id, - 'idB' => $newId, - 'type' => ($f<20) ? 4 : 5 // 4->appels 5->sms - ]; + $reltype = ($f<20) ? 4 : 5; // 4->appels 5->sms + if( !self::relAlready($subject_set['relations'], $subject_id, $newId, $reltype) ) + $subject_set['relations'][] = [ + 'idA' => $subject_id, + 'idB' => $newId, + 'type' => $reltype + ]; - /* (x) Si le contact a été importé d'une autre enquête */ - if( isset($contact['existing']) && is_numeric($contact['existing']) ) - $contactsDone['existing'][] = $contact['existing']; - /* (x+1) Si nouveau contact */ - else - $contactsDone['username'][] = $contact['username']; } - - /* [4] On enregistre les contacts des MINI + /* [5] On enregistre les mini + les contacts des mini =========================================================*/ foreach($mini as $miniData){ + /* (1) On récupère les données du contact associé */ if( !isset($contacts[$miniData['uid']]) ) - break; + continue; $contact = $contacts[ $miniData['uid'] ]; /* (2) Si le contact a été importé d'une autre enquête */ if( isset($contact['existing']) && is_numeric($contact['existing']) ){ + $newId = (int) $contact['existing']; - $uname = $exportedU[intval($contact['existing'])]; - // {2.1} S'il a déja une fiche ou qu'on a déja fait une fiche (ou mini), on quitte // - if( in_array(intval($contact['existing']), $exported['fiche']) || in_array($contact['existing'], $contactsDone['existing']) ) - break; + $existingData = null; + + // si le contact existe bien déja -> on recup. ses données + if( isset($contactsById[ $newId ]) ) + $existingData = $contactsById[$newId]; + + $uname = $existingData['name']; + + // si aucune référence existante -> on oublie ce contact + if( $existingData === null ){ + $finalid[ intval($contact['uid']) ] = null; + continue; + } + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte + if( $existingData['type'] === 'fiche' || isset($contactsDone['existing'][$newId]) ) + continue; + + // On l'ajoute à la liste des contacts 'existing' fait + $contactsDone['existing'][$newId] = $newId; /* (3) Si nouveau contact */ }else{ - $newId = (int) ($offset+$miniData['uid']); + + $newId = (int) ($offset+$contact['uid']); $uname = $contact['username']; - // {3.1} S'il a déja été saisi, on quitte // - if( in_array($contact['username'], $contactsDone['username']) ) - break; + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja été saisi, on met l'ancienne référence puis on passe au suivant + if( isset($contactsDone['username'][$uname]) ){ + $finalid[ intval($contact['uid']) ] = $contactsDone['username'][$uname]; + continue; + } + + // On l'ajoute à la liste des contacts 'username' fait + $contactsDone['username'][$uname] = $newId; } + /* (4) Update du @maxId */ if( $newId > $maxId ) $maxId = (int) $newId; // On remplit les données qui iront dans le fichier pour ce contact - $file['contacts'][] = [ + $contactdb->insert($newId, [ 'id' => $newId, 'name' => $uname, 'sexe' => $miniData['sexe'], @@ -287,90 +320,99 @@ 'studies1' => $miniData['studies'], 'reltype' => ($miniData['reltype']==10) ? $miniData['reltypeSpecial'] : $miniData['reltype'], // si 'autre' -> valeur, sinon le code 'dist' => $miniData['loc'] - ]; + ] ); + + // On ajoute le contact dans la liste des contacts du sujet (si pas déja) + if( !in_array($newId, $subject_set['contacts']) ) + $subject_set['contacts'][] = $newId; // On enregistre la relation avec EGO - $file['relations'][] = [ - 'idA' => $subject_id, - 'idB' => $newId, - 'type' => 2 // relation cellulaire mineure - ]; + if( !self::relAlready($subject_set['relations'], $subject_id, $newId, 2) ) + $subject_set['relations'][] = [ + 'idA' => $subject_id, + 'idB' => $newId, + 'type' => 2 // relation cellulaire mineure + ]; - /* (x) Si le contact a été importé d'une autre enquête */ - if( isset($contact['existing']) && is_numeric($contact['existing']) ) - $contactsDone['existing'][] = $contact['existing']; - /* (x+1) Si nouveau contact */ - else - $contactsDone['username'][] = $contact['username']; - } - /* [5] On enregistre les relations de la MATRICE + /* [6] On enregistre les relations de la MATRICE =========================================================*/ - $clen = count($file['contacts']); + $clen = count($finalid); - /* (1) On récupére les ids des contacts */ + /* (1) On récupére les ids (initiaux) des contacts de manière unique */ + $doneNewId = []; $cIdList = []; - foreach($file['contacts'] as $c=>$contact){ - $id = (int) $c; + foreach($finalid as $lastid=>$newid){ - if( !in_array($id, $cIdList) ) - $cIdList[$id] = null; + // si id (ou reference) déja fait -> suivant + if( array_key_exists($newid, $doneNewId) ) + continue; + + $cIdList[$lastid] = null; + $doneNewId[$newid] = false; } ksort($cIdList); /* (2) On remplit les relations */ - foreach($cIdList as $y=>$yNull){ - foreach($cIdList as $x=>$xNull) + foreach($cIdList as $x=>$yNull){ + foreach($cIdList as $y=>$xNull) if( $x < $y ){ // On affiche que sous la diagonale - $idY = $file['contacts'][$y]['id'] - $offset; - $idX = $file['contacts'][$x]['id'] - $offset; - // Si relation alter-alter - $relationXY = isset($matrice[$y]) && in_array($x, $matrice[$y]) - || ( isset($matrice[$x]) && in_array($y, $matrice[$x]) ); + $relation_type = isset($matrice[$y]) && in_array($x, $matrice[$y]) + || ( isset($matrice[$x]) && in_array($y, $matrice[$x]) ); - array_push($file['relations'], [ - 'idA' => $offset + $x, - 'idB' => $offset + $y, - 'type' => $relationXY ? 1 : 0 // 0->aucune relation 1->relation alter alter - ]); + $relation_type = $relation_type ? 1 : 0; // 0->aucune relation 1->relation alter alter + + + /* (3) Si la relation existe déja, on ne fait rien */ + if( self::relAlready($subject_set['relations'], $finalid[$x], $finalid[$y], $relation_type) ) + continue; + + $subject_set['relations'][] = [ + 'idA' => $finalid[$x], + 'idB' => $finalid[$y], + 'type' => $relation_type + ]; } } - /* [6] On enregistre tout dans 'lightdb' + /* [6] On les données du sujet =========================================================*/ - $db = new lightdb('phone_db'); - $db->insert( $subject_id, $file ); - $db->close(); + $subjectdb->delete($subject_id); + $subjectdb->insert($subject_id, $subject_set); + + + /* [7] Ferme les bases de données + =========================================================*/ + $subjectdb->close(); + $contactdb->close(); + /* [7] On met à jour le nouvel ID unique =========================================================*/ - // $maxId += $offset; rewind($funiq); // On revient au début du fichier fwrite($funiq, $maxId); // On écrit la nouvelle valeur (forcément plus grande) flock($funiq, LOCK_UN); // On débloque le verrou fclose($funiq); - // /* [8] On supprime le fichier temporaire si existe - // =========================================================*/ - // if( file_exists($tmpfile) ) - // unlink($tmpfile); - /* [9] Gestion du retour =========================================================*/ return [ 'ModuleError' => ManagerError::Success, - 'subject_id' => $subject_id + 'subject_id' => $subject_id, + 'nb_contacts' => count($subject_set['contacts']), + 'nb_relations' => count($subject_set['relations']), + 'elapsed_time' => microtime(true) - $START_TIME ]; } @@ -379,40 +421,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE FACEBOOK * * @subject Tableau contenant les données du sujet @@ -426,11 +434,14 @@ public static function facebook($params){ extract($params); - /* [0] On récupère l'id unique actuel + $START_TIME = microtime(true); + + /* [1] On récupère l'id unique actuel =========================================================*/ $funiq = fopen( __BUILD__.'/lightdb/storage/uniqid', 'r+' ); flock($funiq, LOCK_EX); // On verrouille le fichier - $uniqid = fgets( $funiq ); + $uniqid = trim( fgets( $funiq ) ); + if( !is_numeric($uniqid) ) $uniqid = 0; @@ -439,179 +450,128 @@ $offset = intval($uniqid) + 1; // on enregistre l'id du sujet - $subject_id = $subject['subject_id']; + $subject_id = intval($subject['subject_id']); // Contiendra la valeur de l'id maximum - $maxId = $offset; + $maxId = $offset; - - - // /* [1] On récupère les logs s'ils existent - // =========================================================*/ - // // Contiendra le contenu du fichier + /* [2] On initialise nos variables (lightdb + autres) + =========================================================*/ + /* (1) Fichiers de sortie */ $file = [ "subject" => "", - "contacts" => [], "relations" => [] ]; - // $file = [ 'logs' => [] ]; - // - // - // /* (1) On définit les 2 fichiers utiles */ - // $tmpfile = __BUILD__.'/tmp/phone_'.$subject['tmp_id'].'.json'; - // - // /* (2) Si on a déja crée le fichier avec le journal d'appel dedans, on le récupère */ - // $storage_already = is_string($subject['tmp_id']) && strlen($subject['tmp_id']) == 40 && file_exists($tmpfile); - // - // - // /* (3) Si on a déja crée le fichier, on essaie de récupérer son contenu */ - // if( $storage_already ){ - // $file = json_decode( file_get_contents($tmpfile), true ); - // - // // erreur - // if( $file == null ) - // return [ 'ModuleRequest' => ManagerError::ParsingFailed ]; - // - // // On incrémente tous les ids de l'offset - // foreach($file['logs'] as $i=>$log){ - // $file['logs'][$i]['id'] = $offset + $log['id']; - // - // if( $log['id'] > $maxId ) - // $maxId = (int) $log['id']; - // } - // } + + /* (2) Bases de données */ + $subjectdb = new lightdb('subject'); + $contactdb = new lightdb('contact'); - - - - - /* [2] On enregistre les données du sujet + /* [3] Données du sujet =========================================================*/ - /* (1) On crée le sujet */ - $file['subject'] = [ 'id' => $subject_id ]; + $subject_set = $subjectdb->fetch($subject_id); - /* (2) On récupère ses contacts phone */ - // {2.1} On récupère les données du sujet // - $lphone = new lightdb('phone_db'); - $lphone = $lphone->fetch($subject_id); + /* (1) Si le sujet n'existe pas -> ERROR */ + if( $subject_set === false ) + return ['ModuleError'=>ManagerError::UnreachableResource]; - // {2.2} si n'existe pas, on a un tableau vide // - if( $lphone === false ) - $lphone = [ 'contacts' => [] ]; + /* (2) Initialisation des contacts si vide */ + if( !isset($subject_set['contacts']) ) + $subject_set['contacts'] = []; - if( !isset($lphone['contacts']) ) - $lphone['contacts'] = []; + /* (3) Initialisation des relations si vide */ + if( !isset($subject_set['relations']) ) + $subject_set['relations'] = []; + /* (4) Ajout de l'enquête */ + if( !in_array('facebook', $subject_set['subject']['surveys']) ) + $subject_set['subject']['surveys'][] = 'facebook'; - /* (3) On récupère ses contacts lab-surveys */ - // {3.1} On récupère les données du sujet // - $lsurvey = new lightdb('survey_db'); - $lsurvey = $lsurvey->fetch($subject_id); + /* (5) On récupère les noms des contacts */ + $contactsById = []; // idContact -> nomContact, typeEnquete ('mini' ou 'fiche') - // {3.2} si n'existe pas, on a un tableau vide // - if( $lsurvey === false ) - $lsurvey = [ 'contacts' => [] ]; + foreach($subject_set['contacts'] as $contactId){ + $contactId = intval($contactId); + $contactData = $contactdb->fetch( $contactId ); - if( !isset($lsurvey['contacts']) ) - $lsurvey['contacts'] = []; - - - /* (4) On récupère uniquement la liste des contacts avec le type de fiche qu'ils ont */ - // {4.1} Contiendra les contacts exportés // - $exported = [ - 'fiche' => [], - 'mini' => [] + $contactsById[$contactId] = [ + 'name' => $contactData['name'], + 'type' => isset($contactData['studies2']) ? 'fiche' : 'mini' ]; - - // {4.2} Contiendra les username des contacts exportés // - $exportedU = []; - - // {4.3} On récupère les contacts facebook // - foreach($lphone['contacts'] as $c=>$data){ - - if( isset($data['studies2']) ){ - - $exported['fiche'][] = $data['id']; - $exportedU[$data['id']] = $data['name']; - - }else - - // S'il n'est pas déja dans les fiches - if( !in_array($data['id'], $exported['fiche']) ){ - - $exported['mini'][] = $data['id']; - $exportedU[$data['id']] = $data['name']; - } - - } - - // {4.4} On récupère les contacts lab-surveys // - foreach($lsurvey['contacts'] as $c=>$data){ - - if( isset($data['studies2']) ) - - // On ajoute le contact s'il n'y est pas déja - if( !in_array($data['id'], $exported['fiche']) ){ - - $exported['fiche'][] = $data['id']; - $exportedU['fiche'][] = $data['username']; - - } - - else - - // On ajoute le contact s'il n'y est pas déja (ni dans mini ni dans fiche) - if( !in_array($data['id'], $exported['mini']) && !in_array($data['id'], $exported['fiche']) ){ - $exported['mini'][] = $data['id']; - $exportedU['mini'][] = $data['username']; - } - } + } - - - - - /* [3] On enregistre les contacts des FICHES + /* [4] On saisit les fiches + les contacts des fiches =========================================================*/ $contactsDone = [ "existing" => [], // Contacts exportés déja enregistrés "username" => [] // Nouveaux contacts déja enregistrés ]; - + $finalid = []; // id_contact -> id_final_contact (existant ou nouveau) foreach($fiches as $f=>$ficheData){ + /* (1) On récupère les données du contact associé */ if( !isset($contacts[$ficheData['uid']]) ) continue; + $contact = $contacts[ $ficheData['uid'] ]; /* (2) Si le contact a été importé d'une autre enquête */ if( isset($contact['existing']) && is_numeric($contact['existing']) ){ + $newId = (int) $contact['existing']; - $uname = $exportedU[intval($contact['existing'])]; - // {2.1} S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte // - if( in_array(intval($contact['existing']), $exported['fiche']) || in_array($contact['existing'], $contactsDone['existing']) ) + $existingData = null; + + // si le contact existe bien déja -> on recup. ses données + if( isset($contactsById[ $newId ]) ) + $existingData = $contactsById[$newId]; + + $uname = $existingData['name']; + + // si aucune référence existante -> on oublie ce contact + if( $existingData === null ){ + $finalid[ intval($contact['uid']) ] = null; continue; + } + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte + if( $existingData['type'] === 'fiche' || isset($contactsDone['existing'][$newId]) ) + continue; + + // On l'ajoute à la liste des contacts 'existing' fait + $contactsDone['existing'][$newId] = $newId; /* (3) Si nouveau contact */ }else{ - $newId = (int) ($offset+$ficheData['uid']); + + $newId = (int) ($offset+$contact['uid']); $uname = $contact['username']; - // {3.1} S'il a déja été saisi, on quitte // - if( in_array($contact['username'], $contactsDone['username']) ) + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja été saisi, on met l'ancienne référence puis on passe au suivant + if( isset($contactsDone['username'][$uname]) ){ + $finalid[ intval($contact['uid']) ] = $contactsDone['username'][$uname]; continue; + } + + // On l'ajoute à la liste des contacts 'username' fait + $contactsDone['username'][$uname] = $newId; } + /* (4) Update du @maxId */ if( $newId > $maxId ) $maxId = (int) $newId; - // On remplit les données qui iront dans le fichier pour ce contact - $file['contacts'][] = [ + /* (5) On enregistre les données du contact */ + $contactdb->insert($newId, [ 'id' => $newId, 'name' => $uname, 'sexe' => $ficheData['sexe'], @@ -630,28 +590,29 @@ 'freq' => $ficheData['freq'], 'connect' => $ficheData['connect'], 'connectExtra' => $ficheData['connectSpecial'] - ]; + ] ); + + // On ajoute le contact dans la liste des contacts du sujet (si pas déja) + if( !in_array($newId, $subject_set['contacts']) ) + $subject_set['contacts'][] = $newId; // On enregistre la relation avec EGO - $file['relations'][] = [ - 'idA' => $subject_id, - 'idB' => $newId, - 'type' => ($f<20) ? 4 : 5 // 4->appels 5->sms - ]; + $reltype = ($f<20) ? 6 : 7; // 4->historique 5->messenger + if( !self::relAlready($subject_set['relations'], $subject_id, $newId, $reltype) ) + $subject_set['relations'][] = [ + 'idA' => $subject_id, + 'idB' => $newId, + 'type' => $reltype + ]; - /* (x) Si le contact a été importé d'une autre enquête */ - if( isset($contact['existing']) && is_numeric($contact['existing']) ) - $contactsDone['existing'][] = $contact['existing']; - /* (x+1) Si nouveau contact */ - else - $contactsDone['username'][] = $contact['username']; } - /* [4] On enregistre les contacts des MINI + /* [5] On enregistre les mini + les contacts des mini =========================================================*/ foreach($mini as $miniData){ + /* (1) On récupère les données du contact associé */ if( !isset($contacts[$miniData['uid']]) ) continue; @@ -660,30 +621,57 @@ /* (2) Si le contact a été importé d'une autre enquête */ if( isset($contact['existing']) && is_numeric($contact['existing']) ){ + $newId = (int) $contact['existing']; - $uname = $exportedU[intval($contact['existing'])]; - // {2.1} S'il a déja une fiche ou qu'on a déja fait une fiche (ou mini), on quitte // - if( in_array(intval($contact['existing']), $exported['fiche']) || in_array($contact['existing'], $contactsDone['existing']) ) + $existingData = null; + + // si le contact existe bien déja -> on recup. ses données + if( isset($contactsById[ $newId ]) ) + $existingData = $contactsById[$newId]; + + $uname = $existingData['name']; + + // si aucune référence existante -> on oublie ce contact + if( $existingData === null ){ + $finalid[ intval($contact['uid']) ] = null; + continue; + } + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja une fiche ou qu'on a déja fait une fiche, on quitte + if( $existingData['type'] === 'fiche' || isset($contactsDone['existing'][$newId]) ) continue; + // On l'ajoute à la liste des contacts 'existing' fait + $contactsDone['existing'][$newId] = $newId; /* (3) Si nouveau contact */ }else{ - $newId = (int) ($offset+$miniData['uid']); - $uname = $contact['username']; - // {3.1} S'il a déja été saisi, on quitte // - if( in_array($contact['username'], $contactsDone['username']) ) - continue; + $newId = (int) ($offset+$contact['uid']); + $uname = $contact['username']; + + $finalid[ intval($contact['uid']) ] = $newId; + + // S'il a déja été saisi, on met l'ancienne référence puis on passe au suivant + if( isset($contactsDone['username'][$uname]) ){ + $finalid[ intval($contact['uid']) ] = $contactsDone['username'][$uname]; + continue; + } + + // On l'ajoute à la liste des contacts 'username' fait + $contactsDone['username'][$uname] = $newId; } + /* (4) Update du @maxId */ if( $newId > $maxId ) $maxId = (int) $newId; // On remplit les données qui iront dans le fichier pour ce contact - $file['contacts'][] = [ + $contactdb->insert($newId, [ 'id' => $newId, 'name' => $uname, 'sexe' => $miniData['sexe'], @@ -691,91 +679,99 @@ 'studies1' => $miniData['studies'], 'reltype' => ($miniData['reltype']==10) ? $miniData['reltypeSpecial'] : $miniData['reltype'], // si 'autre' -> valeur, sinon le code 'dist' => $miniData['loc'] - ]; + ] ); + + // On ajoute le contact dans la liste des contacts du sujet (si pas déja) + if( !in_array($newId, $subject_set['contacts']) ) + $subject_set['contacts'][] = $newId; // On enregistre la relation avec EGO - $file['relations'][] = [ - 'idA' => $subject_id, - 'idB' => $newId, - 'type' => 2 // relation cellulaire mineure - ]; + if( !self::relAlready($subject_set['relations'], $subject_id, $newId, 3) ) + $subject_set['relations'][] = [ + 'idA' => $subject_id, + 'idB' => $newId, + 'type' => 3 // relation facebook mineure + ]; - /* (x) Si le contact a été importé d'une autre enquête */ - if( isset($contact['existing']) && is_numeric($contact['existing']) ) - $contactsDone['existing'][] = $contact['existing']; - /* (x+1) Si nouveau contact */ - else - $contactsDone['username'][] = $contact['username']; - } - /* [5] On enregistre les relations de la MATRICE + /* [6] On enregistre les relations de la MATRICE =========================================================*/ - $clen = count($file['contacts']); - // var_dump($file['contacts']); + $clen = count($finalid); - /* (1) On récupére les ids des contacts */ + /* (1) On récupére les ids (initiaux) des contacts de manière unique */ + $doneNewId = []; $cIdList = []; - foreach($file['contacts'] as $c=>$contact){ - $id = (int) $c; + foreach($finalid as $lastid=>$newid){ - if( !in_array($id, $cIdList) ) - $cIdList[$id] = null; + // si id (ou reference) déja fait -> suivant + if( array_key_exists($newid, $doneNewId) ) + continue; + + $cIdList[$lastid] = null; + $doneNewId[$newid] = false; } ksort($cIdList); /* (2) On remplit les relations */ - foreach($cIdList as $y=>$yNull){ - foreach($cIdList as $x=>$xNull) + foreach($cIdList as $x=>$yNull){ + foreach($cIdList as $y=>$xNull) if( $x < $y ){ // On affiche que sous la diagonale - $idY = $file['contacts'][$y]['id'] - $offset; - $idX = $file['contacts'][$x]['id'] - $offset; - // Si relation alter-alter - $relationXY = isset($matrice[$y]) && in_array($x, $matrice[$y]) - || ( isset($matrice[$x]) && in_array($y, $matrice[$x]) ); + $relation_type = isset($matrice[$y]) && in_array($x, $matrice[$y]) + || ( isset($matrice[$x]) && in_array($y, $matrice[$x]) ); - $file['relations'][] = [ - 'idA' => $offset + $x, - 'idB' => $offset + $y, - 'type' => $relationXY ? 1 : 0 // 0->aucune relation 1->relation alter alter + $relation_type = $relation_type ? 1 : 0; // 0->aucune relation 1->relation alter alter + + + /* (3) Si la relation existe déja, on ne fait rien */ + if( self::relAlready($subject_set['relations'], $finalid[$x], $finalid[$y], $relation_type) ) + continue; + + $subject_set['relations'][] = [ + 'idA' => $finalid[$x], + 'idB' => $finalid[$y], + 'type' => $relation_type ]; } } - /* [6] On enregistre tout dans 'lightdb' + /* [6] On les données du sujet =========================================================*/ - $db = new lightdb('facebook_db'); - $db->insert( $subject_id, $file ); - $db->close(); + $subjectdb->delete($subject_id); + $subjectdb->insert($subject_id, $subject_set); + + + /* [7] Ferme les bases de données + =========================================================*/ + $subjectdb->close(); + $contactdb->close(); + /* [7] On met à jour le nouvel ID unique =========================================================*/ - // $maxId += $offset; rewind($funiq); // On revient au début du fichier fwrite($funiq, $maxId); // On écrit la nouvelle valeur (forcément plus grande) flock($funiq, LOCK_UN); // On débloque le verrou fclose($funiq); - // /* [8] On supprime le fichier temporaire si existe - // =========================================================*/ - // if( file_exists($tmpfile) ) - // unlink($tmpfile); - /* [9] Gestion du retour =========================================================*/ return [ 'ModuleError' => ManagerError::Success, - 'subject_id' => $subject_id + 'subject_id' => $subject_id, + 'nb_contacts' => count($subject_set['contacts']), + 'nb_relations' => count($subject_set['relations']), + 'elapsed_time' => microtime(true) - $START_TIME ]; } diff --git a/build/api/module/subject.php b/build/api/module/subject.php index a1b6b26..1e3866d 100644 --- a/build/api/module/subject.php +++ b/build/api/module/subject.php @@ -38,7 +38,7 @@ /* [1] On récupére la liste des sujets =========================================================*/ /* (1) On initialise et ouvre la bd */ - $db = new lightdb('survey_db'); + $db = new lightdb('subject'); $ids = array_keys( $db->index() ); /* (2) On récupère tous les sujets */ @@ -47,37 +47,18 @@ $sub['creation'] = date('d/m/Y H:i:s', $sub['creation']); $subjects[$id] = $sub; - } - $db->close(); - - /* [2] On récupére la liste des sujets pour PHONE - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('phone_db'); - $ids = array_keys( $db->index() ); - $db->close(); - - /* (2) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ - foreach($subjects as $id=>$data) - if( in_array($id, $ids) ) // Si dans phone + /* (3) Si enquête PHONE passée */ + if( isset($sub['surveys']) && is_array($sub['surveys']) && in_array('phone', $sub['surveys']) ) $subjects[$id]['phone'] = true; - - - - /* [3] On récupére la liste des sujets pour FACEBOOK - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('facebook_db'); - $ids = array_keys( $db->index() ); - $db->close(); - - /* (2) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ - foreach($subjects as $id=>$data) - if( in_array($id, $ids) ) // Si dans facebook + /* (4) Si enquête FACEBOOK passée */ + if( isset($sub['surveys']) && is_array($sub['surveys']) && in_array('facebook', $sub['surveys']) ) $subjects[$id]['facebook'] = true; + } + $db->close(); + /* [4] Gestion du retour =========================================================*/ @@ -102,12 +83,12 @@ // Contiendra les sujets - $subjects = []; + $contacts = []; /* [1] On récupére la liste des sujets =========================================================*/ /* (1) On initialise et ouvre la bd */ - $db = new lightdb('survey_db'); + $db = new lightdb('subject'); $fetch = $db->fetch($subject_id); $db->close(); @@ -116,44 +97,29 @@ return [ 'ModuleError' => ManagerError::ModuleError ]; /* (3) On enregistre ses contacts s'il en a */ - if( isset($fetch['contacts']) ) - foreach($fetch['contacts'] as $contact) - $subjects[$contact['id']] = $contact; + $db = new lightdb('contact'); + if( isset($fetch['contacts']) ){ - /* [2] On récupére la liste des contacts saisis dans PHONE - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('phone_db'); - $fetch = $db->fetch($subject_id); + foreach($fetch['contacts'] as $contactId){ + + $contact = $db->fetch($contactId); + // si le contact n'est pas trouvé -> passe au suivant + if( $contact === false ) + continue; + + $contacts[$contactId] = $contact; + + } + } $db->close(); - /* (2) Si on trouve des contacts, on les ajoute */ - if( $fetch !== false && isset($fetch['contacts']) ) - foreach($fetch['contacts'] as $contact) - $subjects[$contact['id']] = $contact; - - - - - /* [3] On récupére la liste des sujets pour FACEBOOK - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('facebook_db'); - $fetch = $db->fetch($subject_id); - $db->close(); - - /* (2) Si on trouve des contacts, on les ajoute */ - if( $fetch !== false && isset($fetch['contacts']) ) - foreach($fetch['contacts'] as $contact) - $subjects[$contact['id']] = $contact; - /* [4] Gestion du retour =========================================================*/ return [ 'ModuleError' => ManagerError::Success, - 'subjects' => $subjects + 'subjects' => $contacts ]; } @@ -189,13 +155,14 @@ $data = [ 'subject' => [ 'id' => $newId, 'name' => $name, - 'creation' => time() + 'creation' => time(), + 'surveys' => [] ]]; /* [2] On crée le sujet dans SURVEYS =========================================================*/ /* (1) On initialise et ouvre la bd */ - $db = new lightdb('survey_db'); + $db = new lightdb('subject'); $db->insert( $newId, $data ); $db->close(); @@ -256,7 +223,7 @@ /* [1] On récupére la liste des sujets =========================================================*/ /* (1) On initialise et ouvre la bd */ - $db = new lightdb('survey_db'); + $db = new lightdb('subject'); $ids = array_keys( $db->index() ); /* (2) On récupère tous les sujets */ @@ -266,41 +233,18 @@ $sub['creation'] = date('d/m/Y H:i:s', $sub['creation']); $subjects[$id] = $sub; + + /* (3) Si enquête PHONE passée */ + if( isset($sub['surveys']) && is_array($sub['surveys']) && in_array('phone', $sub['surveys']) ) + $subjects[$id]['phone'] = true; + + /* (4) Si enquête FACEBOOK passée */ + if( isset($sub['surveys']) && is_array($sub['surveys']) && in_array('facebook', $sub['surveys']) ) + $subjects[$id]['facebook'] = true; } } $db->close(); - - /* [2] On récupére la liste des sujets pour PHONE - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('phone_db'); - $ids = array_keys( $db->index() ); - $db->close(); - - /* (2) Si un des sujets de 'survey' est dans PHONE, on ajoute la mention */ - foreach($subjects as $id=>$data) - if( in_array($id, $ids) ) // Si dans phone - $subjects[$id]['phone'] = true; - - - - - /* [3] On récupére la liste des sujets pour FACEBOOK - =========================================================*/ - /* (1) On initialise et ouvre la bd */ - $db = new lightdb('facebook_db'); - $ids = array_keys( $db->index() ); - $db->close(); - - /* (2) Si un des sujets de 'survey' est dans FACBEOOK, on ajoute la mention */ - foreach($subjects as $id=>$data) - if( in_array($id, $ids) ) // Si dans facebook - $subjects[$id]['facebook'] = true; - - - - /* [4] Retour des données =========================================================*/ return [ diff --git a/build/api/module/upload.php b/build/api/module/upload.php index b61c03b..709289b 100644 --- a/build/api/module/upload.php +++ b/build/api/module/upload.php @@ -70,8 +70,6 @@ } - - /* EFFECTUE UN UPLOAD D'UN fichier * * @prefix Préfixe (dossier parent) du fichier @@ -125,20 +123,6 @@ } - - - - - - - - - - - - - - /* IMPORT D'UNE SAUVEGARDE DE FORMULAIRE LOCAL * * @file Pointeur vers $_FILES[''] @@ -291,31 +275,6 @@ } - - - - - - - - - - - - - - - - - - - - - - - - - } diff --git a/build/lightdb/core/lightdb.php b/build/lightdb/core/lightdb.php index aa015d5..f3987e9 100644 --- a/build/lightdb/core/lightdb.php +++ b/build/lightdb/core/lightdb.php @@ -6,13 +6,14 @@ class lightdb{ // REPERTOIRE RACINE DE TOUTES LES BDD - public static function default_root(){ return __BUILD__.'/lightdb/storage/'; } + public static function default_root(){ return __BUILD__.'/lightdb/storage'; } // ATTRIBUTS private $root; private $dbname; private $dir; private $index; + private $date; private $driver; private $line; @@ -53,17 +54,18 @@ $index = json_decode( $fIndex->fgets(), true ); // Si erreur de parsage, on retourne une erreur - if( is_null($index) ) return; + if( is_null($index) ) throw new \Exception('[lightdb] index is null'); $this->index = $index; /* [3] Initialisation du gestionnaire d'acces (SplFileObject) =========================================================*/ /* (1) Si le fichier n'existe pas, on le crée */ - if( !file_exists($this->dir.'data') ) - file_put_contents($this->dir.'data', '' ); + $this->data = $this->dir.'data'; + if( !file_exists($this->data) ) + file_put_contents($this->data, '' ); /* (2) On place un 'driver' sur le fichier */ - $this->driver = new \SplFileObject($this->dir.'data', 'r+'); + $this->driver = new \SplFileObject($this->data, 'r+'); // $this->driver->setFlags( \SplFileObject::SKIP_EMPTY ); /* (3) On récupère le nombre de lignes */ @@ -75,19 +77,39 @@ } + + + public function close(){ $this->driver = null; } - /* RETOURNE LA LISTE DES INDEX + /* FLUSH LA BDD (erase all) * - * @i Index pour lequel on veut la ligne et le hash + */ + public function flush(){ + /* (1) On flush les index */ + $fIndex = new \SplFileObject($this->dir.'index', 'w'); + $fIndex->fwrite('[]'); + $fIndex = null; + $this->line = 0; + $this->index = []; + + /* (2) On flush les data */ + file_put_contents($this->dir.'data', '' ); + } + + + + /* RETOURNE UN INDEX + * + * @i [OPT] Index pour lequel on veut la ligne et le hash * * @return Index Tableau associatif contenant le hash et la ligne * */ public function index($i=null){ - return is_numeric($i) ? $this->index : $this->index; + return is_numeric($i) ? $this->index[$i] : $this->index; } @@ -118,8 +140,8 @@ /* (3) On enregistre l'index */ $this->index[$key] = [ - 'line' => $this->line - 1, - 'hash' => sha1($json_data) + 'line' => $this->line - 1//, + //'hash' => sha1($json_data) ]; /* (4) On enregistre le fichier index */ @@ -156,8 +178,8 @@ /* (3) On enregistre les index */ $this->index[$key] = [ - 'line' => $this->line - 1, - 'hash' => sha1($json_data) + 'line' => $this->line - 1//, + //'hash' => sha1($json_data) ]; } @@ -254,12 +276,14 @@ $this->driver->seek(0); // On recopie toutes les lignes sauf celle à supprimer dans un fichier temporaire - while( $this->driver->key() < $this->line ){ + foreach($this->driver as $key=>$content){ + // Only valuable lines (not the last linebreak) + if( $key >= $this->line ) break; - if( $this->driver->key() != $line ) - $tmpfile->fwrite( $this->driver->current() ); + // On n'écrit pas la ligne à supprimer + if( $key != $line ) + $tmpfile->fwrite( $content ); - $this->driver->next(); } // On décrémente le nb de lignes @@ -313,6 +337,9 @@ $keyLines[$key] = $this->index[$key]['line']; } + if( count($keyLines) == 0 ) + return true; + /* [2] On trie les clés en fonction de leur ligne =========================================================*/ $sorted = []; @@ -343,13 +370,14 @@ $this->driver->seek(0); /* (2) On recopie toutes les lignes sauf celles à supprimer dans un fichier temporaire */ - while( $this->driver->key() < $this->line ){ + foreach($this->driver as $key=>$content){ + // Only valuable lines (not the last linebreak) + if( $key >= $this->line ) break; - // Si la ligne en cours n'est pas dans la liste des lignes à supprimer - if( !in_array($this->driver->key(), $sorted) ) - $tmpfile->fwrite( $this->driver->current() ); // On l'écrit dans le nouveau fichier + // On n'écrit pas la ligne à supprimer + if( !in_array($key, $sorted) ) + $tmpfile->fwrite( $content ); - $this->driver->next(); } $tmpfile = null; @@ -388,46 +416,4 @@ return true; } - - /* RENVOIE LES DONNEES ASSOCIEES A UN CHAMP DE RECHERCHE - * - * @nomParam Description du param - * - * @return nomRetour Description du retour - * - */ - public function filter($data){ - /* (1) Si @data est un tableau associatif */ - if( is_array($data) ){ - - $filtered = []; - foreach($this->index as $i=>$indexData){ - $this->driver->seek( $indexData['line'] ); - $dbData = json_decode( $this->driver->fgets(), true ); - - foreach($data as $key=>$value) - if( isset($dbData[$key]) && preg_match("#$value#", $dbData[$key]) ){ - $filtered[$i] = $dbData; - break; - } - } - - return $filtered; - - - /* (2) Sinon on compare @data en tant que valeur simple */ - }else{ - - $this->tmp = sha1( json_encode($data) ); - return array_filter($this->index, [$this, 'simpleFilter']); - - } - - } - - - protected function simpleFilter($e){ return $e['hash'] == $this->tmp; } - - - } diff --git a/build/lightdb/storage/contact/data b/build/lightdb/storage/contact/data new file mode 100644 index 0000000..8a6b2a6 --- /dev/null +++ b/build/lightdb/storage/contact/data @@ -0,0 +1,43 @@ +{"id":2,"name":"contact-x","sexe":"1","age":"6","studies2":"01","reltype":"7","dist":"1","job":"82","famsit":"0","city":"35","cp":"10025","quartier":"25","duration":["25","125"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":3,"name":"contact-1","sexe":"0","age":"6","studies2":"06","reltype":"6","dist":"2","job":"36","famsit":"0","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":4,"name":"contact-2","sexe":"1","age":"7","studies2":"07","reltype":"7","dist":"3","job":"41","famsit":"0","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":5,"name":"contact-3","sexe":"2","age":"8","studies2":"08","reltype":"autre","dist":"0","job":"46","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":6,"name":"contact-4","sexe":"0","age":"9","studies2":"09","reltype":"0","dist":"1","job":"47","famsit":"0","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":7,"name":"contact-5","sexe":"1","age":"10","studies2":"10","reltype":"1","dist":"2","job":"48","famsit":"0","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":8,"name":"contact-6","sexe":"2","age":"11","studies2":"11","reltype":"2","dist":"3","job":"51","famsit":"0","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":9,"name":"contact-7","sexe":"0","age":"12","studies2":"","reltype":"3","dist":"0","job":"54","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":10,"name":"contact-8","sexe":"1","age":"13","studies2":"01","reltype":"4","dist":"1","job":"55","famsit":"0","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":11,"name":"contact-9","sexe":"2","age":"14","studies2":"02","reltype":"5","dist":"2","job":"56","famsit":"0","city":"24","cp":"10014","quartier":"14","duration":["14","114"],"context":"0","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":12,"name":"contact-10","sexe":"0","age":"15","studies2":"03","reltype":"6","dist":"3","job":"61","famsit":"0","city":"25","cp":"10015","quartier":"15","duration":["15","115"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":13,"name":"contact-11","sexe":"1","age":"16","studies2":"04","reltype":"7","dist":"0","job":"66","famsit":"0","city":"26","cp":"10016","quartier":"16","duration":["16","116"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":14,"name":"contact-12","sexe":"2","age":"17","studies2":"05","reltype":"autre","dist":"1","job":"69","famsit":"0","city":"27","cp":"10017","quartier":"17","duration":["17","117"],"context":"3","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":15,"name":"contact-13","sexe":"0","age":"18","studies2":"06","reltype":"0","dist":"2","job":"71","famsit":"0","city":"28","cp":"10018","quartier":"18","duration":["18","118"],"context":"4","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":16,"name":"contact-14","sexe":"1","age":"0","studies2":"07","reltype":"1","dist":"3","job":"72","famsit":"0","city":"29","cp":"10019","quartier":"19","duration":["19","119"],"context":"5","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":17,"name":"contact-15","sexe":"2","age":"1","studies2":"08","reltype":"2","dist":"0","job":"73","famsit":"0","city":"30","cp":"10020","quartier":"20","duration":["20","120"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":18,"name":"contact-16","sexe":"0","age":"2","studies2":"09","reltype":"3","dist":"1","job":"74","famsit":"0","city":"31","cp":"10021","quartier":"21","duration":["21","121"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":19,"name":"contact-17","sexe":"1","age":"3","studies2":"10","reltype":"4","dist":"2","job":"75","famsit":"0","city":"32","cp":"10022","quartier":"22","duration":["22","122"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":20,"name":"contact-18","sexe":"2","age":"4","studies2":"11","reltype":"5","dist":"3","job":"76","famsit":"0","city":"33","cp":"10023","quartier":"23","duration":["23","123"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":21,"name":"contact-19","sexe":"0","age":"5","studies2":"","reltype":"6","dist":"0","job":"81","famsit":"0","city":"34","cp":"10024","quartier":"24","duration":["24","124"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":23,"name":"contact-21","sexe":"2","age":"7","studies2":"02","reltype":"autre","dist":"2","job":"10","famsit":"0","city":"36","cp":"10026","quartier":"26","duration":["26","126"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":24,"name":"contact-22","sexe":"0","age":"8","studies2":"03","reltype":"0","dist":"3","job":"21","famsit":"0","city":"37","cp":"10027","quartier":"27","duration":["27","127"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":25,"name":"contact-23","sexe":"1","age":"9","studies2":"04","reltype":"1","dist":"0","job":"22","famsit":"0","city":"38","cp":"10028","quartier":"28","duration":["28","128"],"context":"0","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":26,"name":"contact-24","sexe":"2","age":"10","studies2":"05","reltype":"2","dist":"1","job":"23","famsit":"0","city":"39","cp":"10029","quartier":"29","duration":["29","129"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":27,"name":"contact-25","sexe":"0","age":"11","studies2":"06","reltype":"3","dist":"2","job":"31","famsit":"0","city":"40","cp":"10030","quartier":"30","duration":["30","130"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":28,"name":"contact-26","sexe":"1","age":"12","studies2":"07","reltype":"4","dist":"3","job":"32","famsit":"0","city":"41","cp":"10031","quartier":"31","duration":["31","131"],"context":"3","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":29,"name":"contact-27","sexe":"2","age":"13","studies2":"08","reltype":"5","dist":"0","job":"36","famsit":"0","city":"42","cp":"10032","quartier":"32","duration":["32","132"],"context":"4","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":30,"name":"contact-28","sexe":"0","age":"14","studies2":"09","reltype":"6","dist":"1","job":"41","famsit":"0","city":"43","cp":"10033","quartier":"33","duration":["33","133"],"context":"5","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":31,"name":"contact-29","sexe":"1","age":"15","studies2":"10","reltype":"7","dist":"2","job":"46","famsit":"0","city":"44","cp":"10034","quartier":"34","duration":["34","134"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":32,"name":"contact-30","sexe":"2","age":"16","studies2":"11","reltype":"autre","dist":"3","job":"47","famsit":"0","city":"45","cp":"10035","quartier":"35","duration":["35","135"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":33,"name":"contact-31","sexe":"0","age":"17","studies2":"","reltype":"0","dist":"0","job":"48","famsit":"0","city":"46","cp":"10036","quartier":"36","duration":["36","136"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":34,"name":"contact-32","sexe":"1","age":"18","studies2":"01","reltype":"1","dist":"1","job":"51","famsit":"0","city":"47","cp":"10037","quartier":"37","duration":["37","137"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":35,"name":"contact-33","sexe":"2","age":"0","studies2":"02","reltype":"2","dist":"2","job":"54","famsit":"0","city":"48","cp":"10038","quartier":"38","duration":["38","138"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":36,"name":"contact-34","sexe":"0","age":"1","studies2":"03","reltype":"3","dist":"3","job":"55","famsit":"0","city":"49","cp":"10039","quartier":"39","duration":["39","139"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":37,"name":"contact-35","sexe":"1","age":"2","studies2":"04","reltype":"4","dist":"0","job":"56","famsit":"0","city":"50","cp":"10040","quartier":"40","duration":["40","140"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":38,"name":"contact-36","sexe":"2","age":"3","studies2":"05","reltype":"5","dist":"1","job":"61","famsit":"0","city":"51","cp":"10041","quartier":"41","duration":["41","141"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":39,"name":"contact-37","sexe":"0","age":"4","studies2":"06","reltype":"6","dist":"2","job":"66","famsit":"0","city":"52","cp":"10042","quartier":"42","duration":["42","142"],"context":"0","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":40,"name":"contact-38","sexe":"1","age":"5","studies2":"07","reltype":"7","dist":"3","job":"69","famsit":"0","city":"53","cp":"10043","quartier":"43","duration":["43","143"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":41,"name":"contact-39","sexe":"2","age":"6","studies2":"08","reltype":"autre","dist":"0","job":"71","famsit":"0","city":"54","cp":"10044","quartier":"44","duration":["44","144"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]} +{"id":43,"name":"contact-41","sexe":"1","age":"","studies1":"2","reltype":"1","dist":"."} +{"id":44,"name":"contact-42","sexe":"0","age":"2","studies1":"3","reltype":"2","dist":"."} +{"id":45,"name":"contact-43","sexe":"1","age":"3","studies1":"4","reltype":"3","dist":"."} +{"id":46,"name":"contact-44","sexe":"0","age":"4","studies1":"5","reltype":"4","dist":"."} diff --git a/build/lightdb/storage/contact/index b/build/lightdb/storage/contact/index new file mode 100644 index 0000000..7e5cecc --- /dev/null +++ b/build/lightdb/storage/contact/index @@ -0,0 +1 @@ +{"2":{"line":0},"3":{"line":1},"4":{"line":2},"5":{"line":3},"6":{"line":4},"7":{"line":5},"8":{"line":6},"9":{"line":7},"10":{"line":8},"11":{"line":9},"12":{"line":10},"13":{"line":11},"14":{"line":12},"15":{"line":13},"16":{"line":14},"17":{"line":15},"18":{"line":16},"19":{"line":17},"20":{"line":18},"21":{"line":19},"23":{"line":20},"24":{"line":21},"25":{"line":22},"26":{"line":23},"27":{"line":24},"28":{"line":25},"29":{"line":26},"30":{"line":27},"31":{"line":28},"32":{"line":29},"33":{"line":30},"34":{"line":31},"35":{"line":32},"36":{"line":33},"37":{"line":34},"38":{"line":35},"39":{"line":36},"40":{"line":37},"41":{"line":38},"43":{"line":39},"44":{"line":40},"45":{"line":41},"46":{"line":42}} \ No newline at end of file diff --git a/build/lightdb/storage/dictionary.json b/build/lightdb/storage/dictionary.json index 513f1a4..12b015d 100644 --- a/build/lightdb/storage/dictionary.json +++ b/build/lightdb/storage/dictionary.json @@ -11,6 +11,7 @@ "contacts": { + "sexe": { "0":"Homme", "1":"Femme", "2":"Indéterminé" }, "age": { ".": "NA", diff --git a/build/lightdb/storage/facebook_db/data b/build/lightdb/storage/facebook_db/data deleted file mode 100644 index 1920a69..0000000 --- a/build/lightdb/storage/facebook_db/data +++ /dev/null @@ -1,2 +0,0 @@ -{"subject":{"id":"1"},"contacts":[{"id":1,"name":"Ismael","sexe":"0","age":"0","studies2":"0","reltype":"0","dist":"0","job":"10","famsit":"0","city":"10","cp":"10000","quartier":"0","duration":["0","10"],"context":"0","contextExtra":["","",""],"freq":["2","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":2,"name":"Rosa","sexe":"1","age":"1","studies2":"01","reltype":"1","dist":"1","job":"21","famsit":"0","city":"11","cp":"10001","quartier":"1","duration":["1","11"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":3,"name":"Judith","sexe":"2","age":"2","studies2":"02","reltype":"2","dist":"2","job":"22","famsit":"0","city":"12","cp":"10002","quartier":"2","duration":["2","12"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":4,"name":"Alex","sexe":"0","age":"3","studies2":"03","reltype":"3","dist":"3","job":"23","famsit":"0","city":"13","cp":"10003","quartier":"3","duration":["3","13"],"context":"3","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":5,"name":"Adri","sexe":"1","age":"4","studies2":"04","reltype":"4","dist":"0","job":"31","famsit":"0","city":"14","cp":"10004","quartier":"4","duration":["4","14"],"context":"4","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":6,"name":"Fred","sexe":"2","age":"5","studies2":"05","reltype":"5","dist":"1","job":"32","famsit":"0","city":"15","cp":"10005","quartier":"5","duration":["5","15"],"context":"5","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":7,"name":"Shanone","sexe":"0","age":"6","studies2":"06","reltype":"6","dist":"2","job":"36","famsit":"0","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":8,"name":"Manon","sexe":"1","age":"7","studies2":"07","reltype":"7","dist":"3","job":"41","famsit":"0","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":9,"name":"Java","sexe":"2","age":"8","studies2":"08","reltype":"autre","dist":"0","job":"46","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":10,"name":"Thalees","sexe":"0","age":"9","studies2":"09","reltype":"0","dist":"1","job":"47","famsit":"0","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":11,"name":"Cr\u00e8me","sexe":"1","age":"10","studies2":"10","reltype":"1","dist":"2","job":"48","famsit":"0","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":12,"name":"Margaux","sexe":"2","age":"11","studies2":"11","reltype":"2","dist":"3","job":"51","famsit":"0","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":13,"name":"Anthony","sexe":"0","age":"12","studies2":"","reltype":"3","dist":"0","job":"54","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":14,"name":"Lino","sexe":"1","age":"13","studies2":"01","reltype":"4","dist":"1","job":"55","famsit":"0","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]}],"relations":[{"idA":"1","idB":1,"type":6},{"idA":"1","idB":2,"type":6},{"idA":"1","idB":3,"type":6},{"idA":"1","idB":4,"type":6},{"idA":"1","idB":5,"type":6},{"idA":"1","idB":6,"type":6},{"idA":"1","idB":7,"type":6},{"idA":"1","idB":8,"type":6},{"idA":"1","idB":9,"type":6},{"idA":"1","idB":10,"type":6},{"idA":"1","idB":11,"type":7},{"idA":"1","idB":12,"type":7},{"idA":"1","idB":13,"type":7},{"idA":"1","idB":14,"type":7},{"idA":2,"idB":1,"type":0},{"idA":3,"idB":1,"type":0},{"idA":3,"idB":2,"type":0},{"idA":4,"idB":1,"type":0},{"idA":4,"idB":2,"type":0},{"idA":4,"idB":3,"type":0},{"idA":5,"idB":1,"type":0},{"idA":5,"idB":2,"type":0},{"idA":5,"idB":3,"type":0},{"idA":5,"idB":4,"type":0},{"idA":6,"idB":1,"type":0},{"idA":6,"idB":2,"type":0},{"idA":6,"idB":3,"type":0},{"idA":6,"idB":4,"type":0},{"idA":6,"idB":5,"type":0},{"idA":7,"idB":1,"type":0},{"idA":7,"idB":2,"type":0},{"idA":7,"idB":3,"type":0},{"idA":7,"idB":4,"type":0},{"idA":7,"idB":5,"type":0},{"idA":7,"idB":6,"type":0},{"idA":8,"idB":1,"type":0},{"idA":8,"idB":2,"type":0},{"idA":8,"idB":3,"type":0},{"idA":8,"idB":4,"type":0},{"idA":8,"idB":5,"type":0},{"idA":8,"idB":6,"type":0},{"idA":8,"idB":7,"type":0},{"idA":9,"idB":1,"type":0},{"idA":9,"idB":2,"type":0},{"idA":9,"idB":3,"type":0},{"idA":9,"idB":4,"type":0},{"idA":9,"idB":5,"type":0},{"idA":9,"idB":6,"type":0},{"idA":9,"idB":7,"type":0},{"idA":9,"idB":8,"type":0},{"idA":10,"idB":1,"type":0},{"idA":10,"idB":2,"type":0},{"idA":10,"idB":3,"type":0},{"idA":10,"idB":4,"type":0},{"idA":10,"idB":5,"type":0},{"idA":10,"idB":6,"type":0},{"idA":10,"idB":7,"type":0},{"idA":10,"idB":8,"type":0},{"idA":10,"idB":9,"type":0},{"idA":11,"idB":1,"type":0},{"idA":11,"idB":2,"type":0},{"idA":11,"idB":3,"type":0},{"idA":11,"idB":4,"type":0},{"idA":11,"idB":5,"type":0},{"idA":11,"idB":6,"type":0},{"idA":11,"idB":7,"type":0},{"idA":11,"idB":8,"type":0},{"idA":11,"idB":9,"type":0},{"idA":11,"idB":10,"type":0},{"idA":12,"idB":1,"type":0},{"idA":12,"idB":2,"type":0},{"idA":12,"idB":3,"type":0},{"idA":12,"idB":4,"type":0},{"idA":12,"idB":5,"type":0},{"idA":12,"idB":6,"type":0},{"idA":12,"idB":7,"type":0},{"idA":12,"idB":8,"type":0},{"idA":12,"idB":9,"type":0},{"idA":12,"idB":10,"type":0},{"idA":12,"idB":11,"type":0},{"idA":13,"idB":1,"type":0},{"idA":13,"idB":2,"type":0},{"idA":13,"idB":3,"type":0},{"idA":13,"idB":4,"type":0},{"idA":13,"idB":5,"type":0},{"idA":13,"idB":6,"type":0},{"idA":13,"idB":7,"type":0},{"idA":13,"idB":8,"type":0},{"idA":13,"idB":9,"type":0},{"idA":13,"idB":10,"type":0},{"idA":13,"idB":11,"type":0},{"idA":13,"idB":12,"type":0},{"idA":14,"idB":1,"type":0},{"idA":14,"idB":2,"type":0},{"idA":14,"idB":3,"type":0},{"idA":14,"idB":4,"type":0},{"idA":14,"idB":5,"type":0},{"idA":14,"idB":6,"type":0},{"idA":14,"idB":7,"type":0},{"idA":14,"idB":8,"type":0},{"idA":14,"idB":9,"type":0},{"idA":14,"idB":10,"type":0},{"idA":14,"idB":11,"type":0},{"idA":14,"idB":12,"type":0},{"idA":14,"idB":13,"type":0}]} -{"subject":{"id":"3"},"contacts":[{"id":1032,"name":"","sexe":"1","age":"6","studies2":"01","reltype":"7","dist":"1","job":"82","famsit":"0","city":"35","cp":"10025","quartier":"25","duration":["25","125"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1033,"name":"contact-1","sexe":"0","age":"6","studies2":"06","reltype":"6","dist":"2","job":"36","famsit":"0","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1034,"name":"contact-2","sexe":"1","age":"7","studies2":"07","reltype":"7","dist":"3","job":"41","famsit":"0","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1035,"name":"contact-3","sexe":"2","age":"8","studies2":"08","reltype":"autre","dist":"0","job":"46","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1036,"name":"contact-4","sexe":"0","age":"9","studies2":"09","reltype":"0","dist":"1","job":"47","famsit":"0","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1037,"name":"contact-5","sexe":"1","age":"10","studies2":"10","reltype":"1","dist":"2","job":"48","famsit":"0","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1038,"name":"contact-6","sexe":"2","age":"11","studies2":"11","reltype":"2","dist":"3","job":"51","famsit":"0","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1039,"name":"contact-7","sexe":"0","age":"12","studies2":"","reltype":"3","dist":"0","job":"54","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1040,"name":"contact-8","sexe":"1","age":"13","studies2":"01","reltype":"4","dist":"1","job":"55","famsit":"0","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1041,"name":"contact-9","sexe":"2","age":"14","studies2":"02","reltype":"5","dist":"2","job":"56","famsit":"0","city":"24","cp":"10014","quartier":"14","duration":["14","114"],"context":"0","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1042,"name":"contact-10","sexe":"0","age":"15","studies2":"03","reltype":"6","dist":"3","job":"61","famsit":"0","city":"25","cp":"10015","quartier":"15","duration":["15","115"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1043,"name":"contact-11","sexe":"1","age":"16","studies2":"04","reltype":"7","dist":"0","job":"66","famsit":"0","city":"26","cp":"10016","quartier":"16","duration":["16","116"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1044,"name":"contact-12","sexe":"2","age":"17","studies2":"05","reltype":"autre","dist":"1","job":"69","famsit":"0","city":"27","cp":"10017","quartier":"17","duration":["17","117"],"context":"3","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1045,"name":"contact-13","sexe":"0","age":"18","studies2":"06","reltype":"0","dist":"2","job":"71","famsit":"0","city":"28","cp":"10018","quartier":"18","duration":["18","118"],"context":"4","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1046,"name":"contact-14","sexe":"1","age":"0","studies2":"07","reltype":"1","dist":"3","job":"72","famsit":"0","city":"29","cp":"10019","quartier":"19","duration":["19","119"],"context":"5","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1047,"name":"contact-15","sexe":"2","age":"1","studies2":"08","reltype":"2","dist":"0","job":"73","famsit":"0","city":"30","cp":"10020","quartier":"20","duration":["20","120"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1048,"name":"contact-16","sexe":"0","age":"2","studies2":"09","reltype":"3","dist":"1","job":"74","famsit":"0","city":"31","cp":"10021","quartier":"21","duration":["21","121"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1049,"name":"contact-17","sexe":"1","age":"3","studies2":"10","reltype":"4","dist":"2","job":"75","famsit":"0","city":"32","cp":"10022","quartier":"22","duration":["22","122"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1050,"name":"contact-18","sexe":"2","age":"4","studies2":"11","reltype":"5","dist":"3","job":"76","famsit":"0","city":"33","cp":"10023","quartier":"23","duration":["23","123"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":1051,"name":"contact-19","sexe":"0","age":"5","studies2":"","reltype":"6","dist":"0","job":"81","famsit":"0","city":"34","cp":"10024","quartier":"24","duration":["24","124"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]}],"relations":[{"idA":"3","idB":1032,"type":4},{"idA":"3","idB":1033,"type":4},{"idA":"3","idB":1034,"type":4},{"idA":"3","idB":1035,"type":4},{"idA":"3","idB":1036,"type":4},{"idA":"3","idB":1037,"type":4},{"idA":"3","idB":1038,"type":4},{"idA":"3","idB":1039,"type":4},{"idA":"3","idB":1040,"type":4},{"idA":"3","idB":1041,"type":4},{"idA":"3","idB":1042,"type":4},{"idA":"3","idB":1043,"type":4},{"idA":"3","idB":1044,"type":4},{"idA":"3","idB":1045,"type":4},{"idA":"3","idB":1046,"type":4},{"idA":"3","idB":1047,"type":4},{"idA":"3","idB":1048,"type":4},{"idA":"3","idB":1049,"type":4},{"idA":"3","idB":1050,"type":4},{"idA":"3","idB":1051,"type":4},{"idA":1032,"idB":1033,"type":1},{"idA":1032,"idB":1034,"type":0},{"idA":1033,"idB":1034,"type":0},{"idA":1032,"idB":1035,"type":0},{"idA":1033,"idB":1035,"type":0},{"idA":1034,"idB":1035,"type":0},{"idA":1032,"idB":1036,"type":1},{"idA":1033,"idB":1036,"type":0},{"idA":1034,"idB":1036,"type":0},{"idA":1035,"idB":1036,"type":0},{"idA":1032,"idB":1037,"type":0},{"idA":1033,"idB":1037,"type":0},{"idA":1034,"idB":1037,"type":0},{"idA":1035,"idB":1037,"type":0},{"idA":1036,"idB":1037,"type":0},{"idA":1032,"idB":1038,"type":0},{"idA":1033,"idB":1038,"type":0},{"idA":1034,"idB":1038,"type":0},{"idA":1035,"idB":1038,"type":0},{"idA":1036,"idB":1038,"type":0},{"idA":1037,"idB":1038,"type":0},{"idA":1032,"idB":1039,"type":1},{"idA":1033,"idB":1039,"type":0},{"idA":1034,"idB":1039,"type":0},{"idA":1035,"idB":1039,"type":0},{"idA":1036,"idB":1039,"type":0},{"idA":1037,"idB":1039,"type":0},{"idA":1038,"idB":1039,"type":0},{"idA":1032,"idB":1040,"type":0},{"idA":1033,"idB":1040,"type":0},{"idA":1034,"idB":1040,"type":0},{"idA":1035,"idB":1040,"type":0},{"idA":1036,"idB":1040,"type":0},{"idA":1037,"idB":1040,"type":0},{"idA":1038,"idB":1040,"type":0},{"idA":1039,"idB":1040,"type":0},{"idA":1032,"idB":1041,"type":0},{"idA":1033,"idB":1041,"type":0},{"idA":1034,"idB":1041,"type":0},{"idA":1035,"idB":1041,"type":0},{"idA":1036,"idB":1041,"type":0},{"idA":1037,"idB":1041,"type":0},{"idA":1038,"idB":1041,"type":0},{"idA":1039,"idB":1041,"type":0},{"idA":1040,"idB":1041,"type":0},{"idA":1032,"idB":1042,"type":0},{"idA":1033,"idB":1042,"type":0},{"idA":1034,"idB":1042,"type":0},{"idA":1035,"idB":1042,"type":0},{"idA":1036,"idB":1042,"type":0},{"idA":1037,"idB":1042,"type":0},{"idA":1038,"idB":1042,"type":0},{"idA":1039,"idB":1042,"type":0},{"idA":1040,"idB":1042,"type":0},{"idA":1041,"idB":1042,"type":0},{"idA":1032,"idB":1043,"type":0},{"idA":1033,"idB":1043,"type":0},{"idA":1034,"idB":1043,"type":0},{"idA":1035,"idB":1043,"type":0},{"idA":1036,"idB":1043,"type":0},{"idA":1037,"idB":1043,"type":0},{"idA":1038,"idB":1043,"type":0},{"idA":1039,"idB":1043,"type":0},{"idA":1040,"idB":1043,"type":0},{"idA":1041,"idB":1043,"type":0},{"idA":1042,"idB":1043,"type":0},{"idA":1032,"idB":1044,"type":0},{"idA":1033,"idB":1044,"type":0},{"idA":1034,"idB":1044,"type":0},{"idA":1035,"idB":1044,"type":0},{"idA":1036,"idB":1044,"type":0},{"idA":1037,"idB":1044,"type":0},{"idA":1038,"idB":1044,"type":0},{"idA":1039,"idB":1044,"type":0},{"idA":1040,"idB":1044,"type":0},{"idA":1041,"idB":1044,"type":0},{"idA":1042,"idB":1044,"type":0},{"idA":1043,"idB":1044,"type":0},{"idA":1032,"idB":1045,"type":0},{"idA":1033,"idB":1045,"type":0},{"idA":1034,"idB":1045,"type":0},{"idA":1035,"idB":1045,"type":0},{"idA":1036,"idB":1045,"type":0},{"idA":1037,"idB":1045,"type":0},{"idA":1038,"idB":1045,"type":0},{"idA":1039,"idB":1045,"type":0},{"idA":1040,"idB":1045,"type":0},{"idA":1041,"idB":1045,"type":0},{"idA":1042,"idB":1045,"type":0},{"idA":1043,"idB":1045,"type":0},{"idA":1044,"idB":1045,"type":0},{"idA":1032,"idB":1046,"type":0},{"idA":1033,"idB":1046,"type":0},{"idA":1034,"idB":1046,"type":0},{"idA":1035,"idB":1046,"type":0},{"idA":1036,"idB":1046,"type":0},{"idA":1037,"idB":1046,"type":0},{"idA":1038,"idB":1046,"type":0},{"idA":1039,"idB":1046,"type":0},{"idA":1040,"idB":1046,"type":0},{"idA":1041,"idB":1046,"type":0},{"idA":1042,"idB":1046,"type":0},{"idA":1043,"idB":1046,"type":0},{"idA":1044,"idB":1046,"type":0},{"idA":1045,"idB":1046,"type":0},{"idA":1032,"idB":1047,"type":0},{"idA":1033,"idB":1047,"type":0},{"idA":1034,"idB":1047,"type":0},{"idA":1035,"idB":1047,"type":0},{"idA":1036,"idB":1047,"type":0},{"idA":1037,"idB":1047,"type":0},{"idA":1038,"idB":1047,"type":0},{"idA":1039,"idB":1047,"type":0},{"idA":1040,"idB":1047,"type":0},{"idA":1041,"idB":1047,"type":0},{"idA":1042,"idB":1047,"type":0},{"idA":1043,"idB":1047,"type":0},{"idA":1044,"idB":1047,"type":0},{"idA":1045,"idB":1047,"type":0},{"idA":1046,"idB":1047,"type":0},{"idA":1032,"idB":1048,"type":1},{"idA":1033,"idB":1048,"type":0},{"idA":1034,"idB":1048,"type":0},{"idA":1035,"idB":1048,"type":0},{"idA":1036,"idB":1048,"type":0},{"idA":1037,"idB":1048,"type":0},{"idA":1038,"idB":1048,"type":0},{"idA":1039,"idB":1048,"type":0},{"idA":1040,"idB":1048,"type":0},{"idA":1041,"idB":1048,"type":0},{"idA":1042,"idB":1048,"type":0},{"idA":1043,"idB":1048,"type":0},{"idA":1044,"idB":1048,"type":0},{"idA":1045,"idB":1048,"type":0},{"idA":1046,"idB":1048,"type":0},{"idA":1047,"idB":1048,"type":0},{"idA":1032,"idB":1049,"type":0},{"idA":1033,"idB":1049,"type":0},{"idA":1034,"idB":1049,"type":0},{"idA":1035,"idB":1049,"type":0},{"idA":1036,"idB":1049,"type":0},{"idA":1037,"idB":1049,"type":0},{"idA":1038,"idB":1049,"type":0},{"idA":1039,"idB":1049,"type":0},{"idA":1040,"idB":1049,"type":0},{"idA":1041,"idB":1049,"type":0},{"idA":1042,"idB":1049,"type":0},{"idA":1043,"idB":1049,"type":0},{"idA":1044,"idB":1049,"type":0},{"idA":1045,"idB":1049,"type":0},{"idA":1046,"idB":1049,"type":0},{"idA":1047,"idB":1049,"type":0},{"idA":1048,"idB":1049,"type":0},{"idA":1032,"idB":1050,"type":1},{"idA":1033,"idB":1050,"type":0},{"idA":1034,"idB":1050,"type":0},{"idA":1035,"idB":1050,"type":0},{"idA":1036,"idB":1050,"type":0},{"idA":1037,"idB":1050,"type":0},{"idA":1038,"idB":1050,"type":0},{"idA":1039,"idB":1050,"type":0},{"idA":1040,"idB":1050,"type":0},{"idA":1041,"idB":1050,"type":0},{"idA":1042,"idB":1050,"type":0},{"idA":1043,"idB":1050,"type":0},{"idA":1044,"idB":1050,"type":0},{"idA":1045,"idB":1050,"type":0},{"idA":1046,"idB":1050,"type":0},{"idA":1047,"idB":1050,"type":0},{"idA":1048,"idB":1050,"type":0},{"idA":1049,"idB":1050,"type":0},{"idA":1032,"idB":1051,"type":0},{"idA":1033,"idB":1051,"type":0},{"idA":1034,"idB":1051,"type":0},{"idA":1035,"idB":1051,"type":0},{"idA":1036,"idB":1051,"type":0},{"idA":1037,"idB":1051,"type":0},{"idA":1038,"idB":1051,"type":0},{"idA":1039,"idB":1051,"type":0},{"idA":1040,"idB":1051,"type":0},{"idA":1041,"idB":1051,"type":0},{"idA":1042,"idB":1051,"type":0},{"idA":1043,"idB":1051,"type":0},{"idA":1044,"idB":1051,"type":0},{"idA":1045,"idB":1051,"type":0},{"idA":1046,"idB":1051,"type":0},{"idA":1047,"idB":1051,"type":0},{"idA":1048,"idB":1051,"type":0},{"idA":1049,"idB":1051,"type":0},{"idA":1050,"idB":1051,"type":0}]} diff --git a/build/lightdb/storage/facebook_db/index b/build/lightdb/storage/facebook_db/index deleted file mode 100644 index 82e0d05..0000000 --- a/build/lightdb/storage/facebook_db/index +++ /dev/null @@ -1 +0,0 @@ -{"1":{"line":0,"hash":"ae55953b70b63b6665ea13aef65aef8da8b8c834"},"3":{"line":1,"hash":"e264f35e79e354f1dcadc0bc6b9c2b07dc214ee2"}} \ No newline at end of file diff --git a/build/lightdb/storage/phone_db/data b/build/lightdb/storage/phone_db/data deleted file mode 100644 index 674ddef..0000000 --- a/build/lightdb/storage/phone_db/data +++ /dev/null @@ -1 +0,0 @@ -{"subject":{"id":"3"},"contacts":[{"id":567,"name":"contact-x","sexe":"1","age":"6","studies2":"01","reltype":"7","dist":"1","job":"82","famsit":"0","city":"35","cp":"10025","quartier":"25","duration":["25","125"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":568,"name":"contact-1","sexe":"0","age":"6","studies2":"06","reltype":"6","dist":"2","job":"36","famsit":"0","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":569,"name":"contact-2","sexe":"1","age":"7","studies2":"07","reltype":"7","dist":"3","job":"41","famsit":"0","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":570,"name":"contact-3","sexe":"2","age":"8","studies2":"08","reltype":"autre","dist":"0","job":"46","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":571,"name":"contact-4","sexe":"0","age":"9","studies2":"09","reltype":"0","dist":"1","job":"47","famsit":"0","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":572,"name":"contact-5","sexe":"1","age":"10","studies2":"10","reltype":"1","dist":"2","job":"48","famsit":"0","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":573,"name":"contact-6","sexe":"2","age":"11","studies2":"11","reltype":"2","dist":"3","job":"51","famsit":"0","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":574,"name":"contact-7","sexe":"0","age":"12","studies2":"","reltype":"3","dist":"0","job":"54","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":575,"name":"contact-8","sexe":"1","age":"13","studies2":"01","reltype":"4","dist":"1","job":"55","famsit":"0","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":576,"name":"contact-9","sexe":"2","age":"14","studies2":"02","reltype":"5","dist":"2","job":"56","famsit":"0","city":"24","cp":"10014","quartier":"14","duration":["14","114"],"context":"0","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":577,"name":"contact-10","sexe":"0","age":"15","studies2":"03","reltype":"6","dist":"3","job":"61","famsit":"0","city":"25","cp":"10015","quartier":"15","duration":["15","115"],"context":"1","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":578,"name":"contact-11","sexe":"1","age":"16","studies2":"04","reltype":"7","dist":"0","job":"66","famsit":"0","city":"26","cp":"10016","quartier":"16","duration":["16","116"],"context":"2","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":579,"name":"contact-12","sexe":"2","age":"17","studies2":"05","reltype":"autre","dist":"1","job":"69","famsit":"0","city":"27","cp":"10017","quartier":"17","duration":["17","117"],"context":"3","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":580,"name":"contact-13","sexe":"0","age":"18","studies2":"06","reltype":"0","dist":"2","job":"71","famsit":"0","city":"28","cp":"10018","quartier":"18","duration":["18","118"],"context":"4","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":581,"name":"contact-14","sexe":"1","age":"0","studies2":"07","reltype":"1","dist":"3","job":"72","famsit":"0","city":"29","cp":"10019","quartier":"19","duration":["19","119"],"context":"5","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":582,"name":"contact-15","sexe":"2","age":"1","studies2":"08","reltype":"2","dist":"0","job":"73","famsit":"0","city":"30","cp":"10020","quartier":"20","duration":["20","120"],"context":"6","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":583,"name":"contact-16","sexe":"0","age":"2","studies2":"09","reltype":"3","dist":"1","job":"74","famsit":"0","city":"31","cp":"10021","quartier":"21","duration":["21","121"],"context":"7","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":584,"name":"contact-17","sexe":"1","age":"3","studies2":"10","reltype":"4","dist":"2","job":"75","famsit":"0","city":"32","cp":"10022","quartier":"22","duration":["22","122"],"context":"8","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":585,"name":"contact-18","sexe":"2","age":"4","studies2":"11","reltype":"5","dist":"3","job":"76","famsit":"0","city":"33","cp":"10023","quartier":"23","duration":["23","123"],"context":"9","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]},{"id":586,"name":"contact-19","sexe":"0","age":"5","studies2":"","reltype":"6","dist":"0","job":"81","famsit":"0","city":"34","cp":"10024","quartier":"24","duration":["24","124"],"context":"10","contextExtra":["","",""],"freq":["4","9","14","19","24"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""]}],"relations":[{"idA":"3","idB":567,"type":4},{"idA":"3","idB":568,"type":4},{"idA":"3","idB":569,"type":4},{"idA":"3","idB":570,"type":4},{"idA":"3","idB":571,"type":4},{"idA":"3","idB":572,"type":4},{"idA":"3","idB":573,"type":4},{"idA":"3","idB":574,"type":4},{"idA":"3","idB":575,"type":4},{"idA":"3","idB":576,"type":4},{"idA":"3","idB":577,"type":4},{"idA":"3","idB":578,"type":4},{"idA":"3","idB":579,"type":4},{"idA":"3","idB":580,"type":4},{"idA":"3","idB":581,"type":4},{"idA":"3","idB":582,"type":4},{"idA":"3","idB":583,"type":4},{"idA":"3","idB":584,"type":4},{"idA":"3","idB":585,"type":4},{"idA":"3","idB":586,"type":4},{"idA":567,"idB":568,"type":1},{"idA":567,"idB":569,"type":0},{"idA":568,"idB":569,"type":0},{"idA":567,"idB":570,"type":0},{"idA":568,"idB":570,"type":0},{"idA":569,"idB":570,"type":0},{"idA":567,"idB":571,"type":1},{"idA":568,"idB":571,"type":0},{"idA":569,"idB":571,"type":0},{"idA":570,"idB":571,"type":0},{"idA":567,"idB":572,"type":0},{"idA":568,"idB":572,"type":0},{"idA":569,"idB":572,"type":0},{"idA":570,"idB":572,"type":0},{"idA":571,"idB":572,"type":0},{"idA":567,"idB":573,"type":0},{"idA":568,"idB":573,"type":0},{"idA":569,"idB":573,"type":0},{"idA":570,"idB":573,"type":0},{"idA":571,"idB":573,"type":0},{"idA":572,"idB":573,"type":0},{"idA":567,"idB":574,"type":1},{"idA":568,"idB":574,"type":0},{"idA":569,"idB":574,"type":0},{"idA":570,"idB":574,"type":0},{"idA":571,"idB":574,"type":0},{"idA":572,"idB":574,"type":0},{"idA":573,"idB":574,"type":0},{"idA":567,"idB":575,"type":0},{"idA":568,"idB":575,"type":0},{"idA":569,"idB":575,"type":0},{"idA":570,"idB":575,"type":0},{"idA":571,"idB":575,"type":0},{"idA":572,"idB":575,"type":0},{"idA":573,"idB":575,"type":0},{"idA":574,"idB":575,"type":0},{"idA":567,"idB":576,"type":0},{"idA":568,"idB":576,"type":0},{"idA":569,"idB":576,"type":0},{"idA":570,"idB":576,"type":0},{"idA":571,"idB":576,"type":0},{"idA":572,"idB":576,"type":0},{"idA":573,"idB":576,"type":0},{"idA":574,"idB":576,"type":0},{"idA":575,"idB":576,"type":0},{"idA":567,"idB":577,"type":0},{"idA":568,"idB":577,"type":0},{"idA":569,"idB":577,"type":0},{"idA":570,"idB":577,"type":0},{"idA":571,"idB":577,"type":0},{"idA":572,"idB":577,"type":0},{"idA":573,"idB":577,"type":0},{"idA":574,"idB":577,"type":0},{"idA":575,"idB":577,"type":0},{"idA":576,"idB":577,"type":0},{"idA":567,"idB":578,"type":0},{"idA":568,"idB":578,"type":0},{"idA":569,"idB":578,"type":0},{"idA":570,"idB":578,"type":0},{"idA":571,"idB":578,"type":0},{"idA":572,"idB":578,"type":0},{"idA":573,"idB":578,"type":0},{"idA":574,"idB":578,"type":0},{"idA":575,"idB":578,"type":0},{"idA":576,"idB":578,"type":0},{"idA":577,"idB":578,"type":0},{"idA":567,"idB":579,"type":0},{"idA":568,"idB":579,"type":0},{"idA":569,"idB":579,"type":0},{"idA":570,"idB":579,"type":0},{"idA":571,"idB":579,"type":0},{"idA":572,"idB":579,"type":0},{"idA":573,"idB":579,"type":0},{"idA":574,"idB":579,"type":0},{"idA":575,"idB":579,"type":0},{"idA":576,"idB":579,"type":0},{"idA":577,"idB":579,"type":0},{"idA":578,"idB":579,"type":0},{"idA":567,"idB":580,"type":0},{"idA":568,"idB":580,"type":0},{"idA":569,"idB":580,"type":0},{"idA":570,"idB":580,"type":0},{"idA":571,"idB":580,"type":0},{"idA":572,"idB":580,"type":0},{"idA":573,"idB":580,"type":0},{"idA":574,"idB":580,"type":0},{"idA":575,"idB":580,"type":0},{"idA":576,"idB":580,"type":0},{"idA":577,"idB":580,"type":0},{"idA":578,"idB":580,"type":0},{"idA":579,"idB":580,"type":0},{"idA":567,"idB":581,"type":0},{"idA":568,"idB":581,"type":0},{"idA":569,"idB":581,"type":0},{"idA":570,"idB":581,"type":0},{"idA":571,"idB":581,"type":0},{"idA":572,"idB":581,"type":0},{"idA":573,"idB":581,"type":0},{"idA":574,"idB":581,"type":0},{"idA":575,"idB":581,"type":0},{"idA":576,"idB":581,"type":0},{"idA":577,"idB":581,"type":0},{"idA":578,"idB":581,"type":0},{"idA":579,"idB":581,"type":0},{"idA":580,"idB":581,"type":0},{"idA":567,"idB":582,"type":0},{"idA":568,"idB":582,"type":0},{"idA":569,"idB":582,"type":0},{"idA":570,"idB":582,"type":0},{"idA":571,"idB":582,"type":0},{"idA":572,"idB":582,"type":0},{"idA":573,"idB":582,"type":0},{"idA":574,"idB":582,"type":0},{"idA":575,"idB":582,"type":0},{"idA":576,"idB":582,"type":0},{"idA":577,"idB":582,"type":0},{"idA":578,"idB":582,"type":0},{"idA":579,"idB":582,"type":0},{"idA":580,"idB":582,"type":0},{"idA":581,"idB":582,"type":0},{"idA":567,"idB":583,"type":1},{"idA":568,"idB":583,"type":0},{"idA":569,"idB":583,"type":0},{"idA":570,"idB":583,"type":0},{"idA":571,"idB":583,"type":0},{"idA":572,"idB":583,"type":0},{"idA":573,"idB":583,"type":0},{"idA":574,"idB":583,"type":0},{"idA":575,"idB":583,"type":0},{"idA":576,"idB":583,"type":0},{"idA":577,"idB":583,"type":0},{"idA":578,"idB":583,"type":0},{"idA":579,"idB":583,"type":0},{"idA":580,"idB":583,"type":0},{"idA":581,"idB":583,"type":0},{"idA":582,"idB":583,"type":0},{"idA":567,"idB":584,"type":0},{"idA":568,"idB":584,"type":0},{"idA":569,"idB":584,"type":0},{"idA":570,"idB":584,"type":0},{"idA":571,"idB":584,"type":0},{"idA":572,"idB":584,"type":0},{"idA":573,"idB":584,"type":0},{"idA":574,"idB":584,"type":0},{"idA":575,"idB":584,"type":0},{"idA":576,"idB":584,"type":0},{"idA":577,"idB":584,"type":0},{"idA":578,"idB":584,"type":0},{"idA":579,"idB":584,"type":0},{"idA":580,"idB":584,"type":0},{"idA":581,"idB":584,"type":0},{"idA":582,"idB":584,"type":0},{"idA":583,"idB":584,"type":0},{"idA":567,"idB":585,"type":1},{"idA":568,"idB":585,"type":0},{"idA":569,"idB":585,"type":0},{"idA":570,"idB":585,"type":0},{"idA":571,"idB":585,"type":0},{"idA":572,"idB":585,"type":0},{"idA":573,"idB":585,"type":0},{"idA":574,"idB":585,"type":0},{"idA":575,"idB":585,"type":0},{"idA":576,"idB":585,"type":0},{"idA":577,"idB":585,"type":0},{"idA":578,"idB":585,"type":0},{"idA":579,"idB":585,"type":0},{"idA":580,"idB":585,"type":0},{"idA":581,"idB":585,"type":0},{"idA":582,"idB":585,"type":0},{"idA":583,"idB":585,"type":0},{"idA":584,"idB":585,"type":0},{"idA":567,"idB":586,"type":0},{"idA":568,"idB":586,"type":0},{"idA":569,"idB":586,"type":0},{"idA":570,"idB":586,"type":0},{"idA":571,"idB":586,"type":0},{"idA":572,"idB":586,"type":0},{"idA":573,"idB":586,"type":0},{"idA":574,"idB":586,"type":0},{"idA":575,"idB":586,"type":0},{"idA":576,"idB":586,"type":0},{"idA":577,"idB":586,"type":0},{"idA":578,"idB":586,"type":0},{"idA":579,"idB":586,"type":0},{"idA":580,"idB":586,"type":0},{"idA":581,"idB":586,"type":0},{"idA":582,"idB":586,"type":0},{"idA":583,"idB":586,"type":0},{"idA":584,"idB":586,"type":0},{"idA":585,"idB":586,"type":0}]} diff --git a/build/lightdb/storage/phone_db/index b/build/lightdb/storage/phone_db/index deleted file mode 100644 index dede885..0000000 --- a/build/lightdb/storage/phone_db/index +++ /dev/null @@ -1 +0,0 @@ -{"3":{"line":0,"hash":"e9aff02e50eb56a848c3580c8a119a5cbe0ec64b"}} \ No newline at end of file diff --git a/build/lightdb/storage/subject/data b/build/lightdb/storage/subject/data new file mode 100644 index 0000000..276dd4d --- /dev/null +++ b/build/lightdb/storage/subject/data @@ -0,0 +1 @@ +{"subject":{"id":3,"name":"Clarisse","surveys":["facebook","phone"],"creation":1479898736},"contacts":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46],"relations":[{"idA":1,"idB":2,"type":6},{"idA":1,"idB":3,"type":6},{"idA":1,"idB":4,"type":6},{"idA":1,"idB":5,"type":6},{"idA":1,"idB":6,"type":6},{"idA":1,"idB":7,"type":6},{"idA":1,"idB":8,"type":6},{"idA":1,"idB":9,"type":6},{"idA":1,"idB":10,"type":6},{"idA":1,"idB":11,"type":6},{"idA":1,"idB":12,"type":6},{"idA":1,"idB":13,"type":6},{"idA":1,"idB":14,"type":6},{"idA":1,"idB":15,"type":6},{"idA":1,"idB":16,"type":6},{"idA":1,"idB":17,"type":6},{"idA":1,"idB":18,"type":6},{"idA":1,"idB":19,"type":6},{"idA":1,"idB":20,"type":6},{"idA":1,"idB":21,"type":6},{"idA":1,"idB":23,"type":7},{"idA":1,"idB":24,"type":7},{"idA":1,"idB":25,"type":7},{"idA":1,"idB":26,"type":7},{"idA":1,"idB":27,"type":7},{"idA":1,"idB":28,"type":7},{"idA":1,"idB":29,"type":7},{"idA":1,"idB":30,"type":7},{"idA":1,"idB":31,"type":7},{"idA":1,"idB":32,"type":7},{"idA":1,"idB":33,"type":7},{"idA":1,"idB":34,"type":7},{"idA":1,"idB":35,"type":7},{"idA":1,"idB":36,"type":7},{"idA":1,"idB":37,"type":7},{"idA":1,"idB":38,"type":7},{"idA":1,"idB":39,"type":7},{"idA":1,"idB":40,"type":7},{"idA":1,"idB":41,"type":7},{"idA":1,"idB":43,"type":3},{"idA":1,"idB":44,"type":3},{"idA":1,"idB":45,"type":3},{"idA":1,"idB":46,"type":3},{"idA":2,"idB":3,"type":1},{"idA":2,"idB":4,"type":1},{"idA":2,"idB":5,"type":0},{"idA":2,"idB":6,"type":0},{"idA":2,"idB":7,"type":0},{"idA":2,"idB":8,"type":0},{"idA":2,"idB":9,"type":0},{"idA":2,"idB":10,"type":0},{"idA":2,"idB":11,"type":0},{"idA":2,"idB":12,"type":0},{"idA":2,"idB":13,"type":1},{"idA":2,"idB":14,"type":0},{"idA":2,"idB":15,"type":0},{"idA":2,"idB":16,"type":0},{"idA":2,"idB":17,"type":0},{"idA":2,"idB":18,"type":0},{"idA":2,"idB":19,"type":0},{"idA":2,"idB":20,"type":0},{"idA":2,"idB":21,"type":0},{"idA":2,"idB":23,"type":0},{"idA":2,"idB":24,"type":0},{"idA":2,"idB":25,"type":0},{"idA":2,"idB":26,"type":0},{"idA":2,"idB":27,"type":1},{"idA":2,"idB":28,"type":0},{"idA":2,"idB":29,"type":0},{"idA":2,"idB":30,"type":1},{"idA":2,"idB":31,"type":0},{"idA":2,"idB":32,"type":0},{"idA":2,"idB":33,"type":0},{"idA":2,"idB":34,"type":0},{"idA":2,"idB":35,"type":0},{"idA":2,"idB":36,"type":0},{"idA":2,"idB":37,"type":0},{"idA":2,"idB":38,"type":0},{"idA":2,"idB":39,"type":0},{"idA":2,"idB":40,"type":0},{"idA":2,"idB":41,"type":0},{"idA":2,"idB":43,"type":0},{"idA":2,"idB":44,"type":0},{"idA":2,"idB":45,"type":0},{"idA":2,"idB":46,"type":0},{"idA":3,"idB":4,"type":0},{"idA":3,"idB":5,"type":0},{"idA":3,"idB":6,"type":0},{"idA":3,"idB":7,"type":0},{"idA":3,"idB":8,"type":0},{"idA":3,"idB":9,"type":0},{"idA":3,"idB":10,"type":0},{"idA":3,"idB":11,"type":0},{"idA":3,"idB":12,"type":0},{"idA":3,"idB":13,"type":0},{"idA":3,"idB":14,"type":0},{"idA":3,"idB":15,"type":0},{"idA":3,"idB":16,"type":0},{"idA":3,"idB":17,"type":0},{"idA":3,"idB":18,"type":0},{"idA":3,"idB":19,"type":0},{"idA":3,"idB":20,"type":0},{"idA":3,"idB":21,"type":0},{"idA":3,"idB":23,"type":0},{"idA":3,"idB":24,"type":0},{"idA":3,"idB":25,"type":0},{"idA":3,"idB":26,"type":0},{"idA":3,"idB":27,"type":0},{"idA":3,"idB":28,"type":0},{"idA":3,"idB":29,"type":0},{"idA":3,"idB":30,"type":0},{"idA":3,"idB":31,"type":0},{"idA":3,"idB":32,"type":0},{"idA":3,"idB":33,"type":0},{"idA":3,"idB":34,"type":0},{"idA":3,"idB":35,"type":0},{"idA":3,"idB":36,"type":0},{"idA":3,"idB":37,"type":0},{"idA":3,"idB":38,"type":0},{"idA":3,"idB":39,"type":0},{"idA":3,"idB":40,"type":0},{"idA":3,"idB":41,"type":0},{"idA":3,"idB":43,"type":0},{"idA":3,"idB":44,"type":0},{"idA":3,"idB":45,"type":0},{"idA":3,"idB":46,"type":0},{"idA":4,"idB":5,"type":0},{"idA":4,"idB":6,"type":0},{"idA":4,"idB":7,"type":0},{"idA":4,"idB":8,"type":0},{"idA":4,"idB":9,"type":0},{"idA":4,"idB":10,"type":0},{"idA":4,"idB":11,"type":0},{"idA":4,"idB":12,"type":0},{"idA":4,"idB":13,"type":0},{"idA":4,"idB":14,"type":0},{"idA":4,"idB":15,"type":0},{"idA":4,"idB":16,"type":0},{"idA":4,"idB":17,"type":0},{"idA":4,"idB":18,"type":0},{"idA":4,"idB":19,"type":0},{"idA":4,"idB":20,"type":0},{"idA":4,"idB":21,"type":0},{"idA":4,"idB":23,"type":0},{"idA":4,"idB":24,"type":0},{"idA":4,"idB":25,"type":0},{"idA":4,"idB":26,"type":0},{"idA":4,"idB":27,"type":0},{"idA":4,"idB":28,"type":0},{"idA":4,"idB":29,"type":0},{"idA":4,"idB":30,"type":0},{"idA":4,"idB":31,"type":0},{"idA":4,"idB":32,"type":0},{"idA":4,"idB":33,"type":0},{"idA":4,"idB":34,"type":0},{"idA":4,"idB":35,"type":0},{"idA":4,"idB":36,"type":0},{"idA":4,"idB":37,"type":0},{"idA":4,"idB":38,"type":0},{"idA":4,"idB":39,"type":0},{"idA":4,"idB":40,"type":0},{"idA":4,"idB":41,"type":0},{"idA":4,"idB":43,"type":0},{"idA":4,"idB":44,"type":0},{"idA":4,"idB":45,"type":0},{"idA":4,"idB":46,"type":0},{"idA":5,"idB":6,"type":0},{"idA":5,"idB":7,"type":0},{"idA":5,"idB":8,"type":0},{"idA":5,"idB":9,"type":0},{"idA":5,"idB":10,"type":0},{"idA":5,"idB":11,"type":0},{"idA":5,"idB":12,"type":0},{"idA":5,"idB":13,"type":0},{"idA":5,"idB":14,"type":0},{"idA":5,"idB":15,"type":0},{"idA":5,"idB":16,"type":0},{"idA":5,"idB":17,"type":0},{"idA":5,"idB":18,"type":0},{"idA":5,"idB":19,"type":0},{"idA":5,"idB":20,"type":0},{"idA":5,"idB":21,"type":0},{"idA":5,"idB":23,"type":0},{"idA":5,"idB":24,"type":0},{"idA":5,"idB":25,"type":0},{"idA":5,"idB":26,"type":0},{"idA":5,"idB":27,"type":0},{"idA":5,"idB":28,"type":0},{"idA":5,"idB":29,"type":0},{"idA":5,"idB":30,"type":0},{"idA":5,"idB":31,"type":0},{"idA":5,"idB":32,"type":0},{"idA":5,"idB":33,"type":0},{"idA":5,"idB":34,"type":0},{"idA":5,"idB":35,"type":0},{"idA":5,"idB":36,"type":0},{"idA":5,"idB":37,"type":0},{"idA":5,"idB":38,"type":0},{"idA":5,"idB":39,"type":0},{"idA":5,"idB":40,"type":0},{"idA":5,"idB":41,"type":0},{"idA":5,"idB":43,"type":0},{"idA":5,"idB":44,"type":0},{"idA":5,"idB":45,"type":0},{"idA":5,"idB":46,"type":0},{"idA":6,"idB":7,"type":0},{"idA":6,"idB":8,"type":0},{"idA":6,"idB":9,"type":0},{"idA":6,"idB":10,"type":0},{"idA":6,"idB":11,"type":0},{"idA":6,"idB":12,"type":0},{"idA":6,"idB":13,"type":0},{"idA":6,"idB":14,"type":0},{"idA":6,"idB":15,"type":0},{"idA":6,"idB":16,"type":0},{"idA":6,"idB":17,"type":0},{"idA":6,"idB":18,"type":1},{"idA":6,"idB":19,"type":0},{"idA":6,"idB":20,"type":0},{"idA":6,"idB":21,"type":0},{"idA":6,"idB":23,"type":0},{"idA":6,"idB":24,"type":0},{"idA":6,"idB":25,"type":0},{"idA":6,"idB":26,"type":0},{"idA":6,"idB":27,"type":0},{"idA":6,"idB":28,"type":1},{"idA":6,"idB":29,"type":0},{"idA":6,"idB":30,"type":0},{"idA":6,"idB":31,"type":0},{"idA":6,"idB":32,"type":0},{"idA":6,"idB":33,"type":0},{"idA":6,"idB":34,"type":0},{"idA":6,"idB":35,"type":0},{"idA":6,"idB":36,"type":0},{"idA":6,"idB":37,"type":0},{"idA":6,"idB":38,"type":0},{"idA":6,"idB":39,"type":0},{"idA":6,"idB":40,"type":0},{"idA":6,"idB":41,"type":0},{"idA":6,"idB":43,"type":0},{"idA":6,"idB":44,"type":0},{"idA":6,"idB":45,"type":0},{"idA":6,"idB":46,"type":0},{"idA":7,"idB":8,"type":0},{"idA":7,"idB":9,"type":0},{"idA":7,"idB":10,"type":0},{"idA":7,"idB":11,"type":0},{"idA":7,"idB":12,"type":0},{"idA":7,"idB":13,"type":1},{"idA":7,"idB":14,"type":0},{"idA":7,"idB":15,"type":0},{"idA":7,"idB":16,"type":0},{"idA":7,"idB":17,"type":0},{"idA":7,"idB":18,"type":0},{"idA":7,"idB":19,"type":0},{"idA":7,"idB":20,"type":0},{"idA":7,"idB":21,"type":0},{"idA":7,"idB":23,"type":0},{"idA":7,"idB":24,"type":0},{"idA":7,"idB":25,"type":1},{"idA":7,"idB":26,"type":0},{"idA":7,"idB":27,"type":0},{"idA":7,"idB":28,"type":0},{"idA":7,"idB":29,"type":1},{"idA":7,"idB":30,"type":0},{"idA":7,"idB":31,"type":0},{"idA":7,"idB":32,"type":0},{"idA":7,"idB":33,"type":0},{"idA":7,"idB":34,"type":0},{"idA":7,"idB":35,"type":0},{"idA":7,"idB":36,"type":0},{"idA":7,"idB":37,"type":0},{"idA":7,"idB":38,"type":0},{"idA":7,"idB":39,"type":0},{"idA":7,"idB":40,"type":0},{"idA":7,"idB":41,"type":0},{"idA":7,"idB":43,"type":0},{"idA":7,"idB":44,"type":0},{"idA":7,"idB":45,"type":0},{"idA":7,"idB":46,"type":0},{"idA":8,"idB":9,"type":0},{"idA":8,"idB":10,"type":0},{"idA":8,"idB":11,"type":0},{"idA":8,"idB":12,"type":0},{"idA":8,"idB":13,"type":0},{"idA":8,"idB":14,"type":0},{"idA":8,"idB":15,"type":0},{"idA":8,"idB":16,"type":0},{"idA":8,"idB":17,"type":0},{"idA":8,"idB":18,"type":0},{"idA":8,"idB":19,"type":0},{"idA":8,"idB":20,"type":0},{"idA":8,"idB":21,"type":0},{"idA":8,"idB":23,"type":0},{"idA":8,"idB":24,"type":0},{"idA":8,"idB":25,"type":0},{"idA":8,"idB":26,"type":0},{"idA":8,"idB":27,"type":0},{"idA":8,"idB":28,"type":0},{"idA":8,"idB":29,"type":0},{"idA":8,"idB":30,"type":0},{"idA":8,"idB":31,"type":0},{"idA":8,"idB":32,"type":0},{"idA":8,"idB":33,"type":0},{"idA":8,"idB":34,"type":0},{"idA":8,"idB":35,"type":0},{"idA":8,"idB":36,"type":0},{"idA":8,"idB":37,"type":0},{"idA":8,"idB":38,"type":0},{"idA":8,"idB":39,"type":0},{"idA":8,"idB":40,"type":0},{"idA":8,"idB":41,"type":0},{"idA":8,"idB":43,"type":0},{"idA":8,"idB":44,"type":0},{"idA":8,"idB":45,"type":0},{"idA":8,"idB":46,"type":0},{"idA":9,"idB":10,"type":0},{"idA":9,"idB":11,"type":0},{"idA":9,"idB":12,"type":0},{"idA":9,"idB":13,"type":0},{"idA":9,"idB":14,"type":0},{"idA":9,"idB":15,"type":0},{"idA":9,"idB":16,"type":0},{"idA":9,"idB":17,"type":0},{"idA":9,"idB":18,"type":0},{"idA":9,"idB":19,"type":0},{"idA":9,"idB":20,"type":0},{"idA":9,"idB":21,"type":0},{"idA":9,"idB":23,"type":0},{"idA":9,"idB":24,"type":0},{"idA":9,"idB":25,"type":0},{"idA":9,"idB":26,"type":0},{"idA":9,"idB":27,"type":0},{"idA":9,"idB":28,"type":0},{"idA":9,"idB":29,"type":0},{"idA":9,"idB":30,"type":0},{"idA":9,"idB":31,"type":0},{"idA":9,"idB":32,"type":0},{"idA":9,"idB":33,"type":0},{"idA":9,"idB":34,"type":0},{"idA":9,"idB":35,"type":0},{"idA":9,"idB":36,"type":0},{"idA":9,"idB":37,"type":0},{"idA":9,"idB":38,"type":0},{"idA":9,"idB":39,"type":0},{"idA":9,"idB":40,"type":0},{"idA":9,"idB":41,"type":0},{"idA":9,"idB":43,"type":0},{"idA":9,"idB":44,"type":0},{"idA":9,"idB":45,"type":0},{"idA":9,"idB":46,"type":0},{"idA":10,"idB":11,"type":0},{"idA":10,"idB":12,"type":0},{"idA":10,"idB":13,"type":0},{"idA":10,"idB":14,"type":0},{"idA":10,"idB":15,"type":0},{"idA":10,"idB":16,"type":0},{"idA":10,"idB":17,"type":0},{"idA":10,"idB":18,"type":0},{"idA":10,"idB":19,"type":0},{"idA":10,"idB":20,"type":0},{"idA":10,"idB":21,"type":0},{"idA":10,"idB":23,"type":0},{"idA":10,"idB":24,"type":0},{"idA":10,"idB":25,"type":0},{"idA":10,"idB":26,"type":0},{"idA":10,"idB":27,"type":0},{"idA":10,"idB":28,"type":0},{"idA":10,"idB":29,"type":0},{"idA":10,"idB":30,"type":0},{"idA":10,"idB":31,"type":0},{"idA":10,"idB":32,"type":0},{"idA":10,"idB":33,"type":0},{"idA":10,"idB":34,"type":0},{"idA":10,"idB":35,"type":0},{"idA":10,"idB":36,"type":0},{"idA":10,"idB":37,"type":0},{"idA":10,"idB":38,"type":0},{"idA":10,"idB":39,"type":0},{"idA":10,"idB":40,"type":0},{"idA":10,"idB":41,"type":0},{"idA":10,"idB":43,"type":0},{"idA":10,"idB":44,"type":0},{"idA":10,"idB":45,"type":0},{"idA":10,"idB":46,"type":0},{"idA":11,"idB":12,"type":0},{"idA":11,"idB":13,"type":0},{"idA":11,"idB":14,"type":0},{"idA":11,"idB":15,"type":0},{"idA":11,"idB":16,"type":0},{"idA":11,"idB":17,"type":0},{"idA":11,"idB":18,"type":0},{"idA":11,"idB":19,"type":0},{"idA":11,"idB":20,"type":0},{"idA":11,"idB":21,"type":0},{"idA":11,"idB":23,"type":0},{"idA":11,"idB":24,"type":0},{"idA":11,"idB":25,"type":0},{"idA":11,"idB":26,"type":0},{"idA":11,"idB":27,"type":0},{"idA":11,"idB":28,"type":0},{"idA":11,"idB":29,"type":0},{"idA":11,"idB":30,"type":0},{"idA":11,"idB":31,"type":0},{"idA":11,"idB":32,"type":0},{"idA":11,"idB":33,"type":0},{"idA":11,"idB":34,"type":0},{"idA":11,"idB":35,"type":0},{"idA":11,"idB":36,"type":0},{"idA":11,"idB":37,"type":0},{"idA":11,"idB":38,"type":0},{"idA":11,"idB":39,"type":0},{"idA":11,"idB":40,"type":0},{"idA":11,"idB":41,"type":0},{"idA":11,"idB":43,"type":0},{"idA":11,"idB":44,"type":0},{"idA":11,"idB":45,"type":0},{"idA":11,"idB":46,"type":0},{"idA":12,"idB":13,"type":0},{"idA":12,"idB":14,"type":0},{"idA":12,"idB":15,"type":0},{"idA":12,"idB":16,"type":0},{"idA":12,"idB":17,"type":0},{"idA":12,"idB":18,"type":0},{"idA":12,"idB":19,"type":0},{"idA":12,"idB":20,"type":0},{"idA":12,"idB":21,"type":0},{"idA":12,"idB":23,"type":0},{"idA":12,"idB":24,"type":0},{"idA":12,"idB":25,"type":0},{"idA":12,"idB":26,"type":0},{"idA":12,"idB":27,"type":0},{"idA":12,"idB":28,"type":0},{"idA":12,"idB":29,"type":0},{"idA":12,"idB":30,"type":0},{"idA":12,"idB":31,"type":0},{"idA":12,"idB":32,"type":0},{"idA":12,"idB":33,"type":0},{"idA":12,"idB":34,"type":0},{"idA":12,"idB":35,"type":0},{"idA":12,"idB":36,"type":0},{"idA":12,"idB":37,"type":0},{"idA":12,"idB":38,"type":0},{"idA":12,"idB":39,"type":0},{"idA":12,"idB":40,"type":0},{"idA":12,"idB":41,"type":0},{"idA":12,"idB":43,"type":0},{"idA":12,"idB":44,"type":0},{"idA":12,"idB":45,"type":0},{"idA":12,"idB":46,"type":0},{"idA":13,"idB":14,"type":0},{"idA":13,"idB":15,"type":0},{"idA":13,"idB":16,"type":0},{"idA":13,"idB":17,"type":0},{"idA":13,"idB":18,"type":0},{"idA":13,"idB":19,"type":0},{"idA":13,"idB":20,"type":0},{"idA":13,"idB":21,"type":0},{"idA":13,"idB":23,"type":0},{"idA":13,"idB":24,"type":0},{"idA":13,"idB":25,"type":0},{"idA":13,"idB":26,"type":0},{"idA":13,"idB":27,"type":0},{"idA":13,"idB":28,"type":0},{"idA":13,"idB":29,"type":0},{"idA":13,"idB":30,"type":0},{"idA":13,"idB":31,"type":0},{"idA":13,"idB":32,"type":0},{"idA":13,"idB":33,"type":0},{"idA":13,"idB":34,"type":0},{"idA":13,"idB":35,"type":0},{"idA":13,"idB":36,"type":0},{"idA":13,"idB":37,"type":0},{"idA":13,"idB":38,"type":0},{"idA":13,"idB":39,"type":0},{"idA":13,"idB":40,"type":0},{"idA":13,"idB":41,"type":0},{"idA":13,"idB":43,"type":0},{"idA":13,"idB":44,"type":0},{"idA":13,"idB":45,"type":0},{"idA":13,"idB":46,"type":0},{"idA":14,"idB":15,"type":0},{"idA":14,"idB":16,"type":0},{"idA":14,"idB":17,"type":0},{"idA":14,"idB":18,"type":0},{"idA":14,"idB":19,"type":0},{"idA":14,"idB":20,"type":0},{"idA":14,"idB":21,"type":0},{"idA":14,"idB":23,"type":0},{"idA":14,"idB":24,"type":0},{"idA":14,"idB":25,"type":0},{"idA":14,"idB":26,"type":0},{"idA":14,"idB":27,"type":0},{"idA":14,"idB":28,"type":0},{"idA":14,"idB":29,"type":0},{"idA":14,"idB":30,"type":0},{"idA":14,"idB":31,"type":0},{"idA":14,"idB":32,"type":0},{"idA":14,"idB":33,"type":0},{"idA":14,"idB":34,"type":0},{"idA":14,"idB":35,"type":0},{"idA":14,"idB":36,"type":0},{"idA":14,"idB":37,"type":0},{"idA":14,"idB":38,"type":0},{"idA":14,"idB":39,"type":0},{"idA":14,"idB":40,"type":0},{"idA":14,"idB":41,"type":0},{"idA":14,"idB":43,"type":0},{"idA":14,"idB":44,"type":0},{"idA":14,"idB":45,"type":0},{"idA":14,"idB":46,"type":0},{"idA":15,"idB":16,"type":0},{"idA":15,"idB":17,"type":0},{"idA":15,"idB":18,"type":0},{"idA":15,"idB":19,"type":0},{"idA":15,"idB":20,"type":0},{"idA":15,"idB":21,"type":0},{"idA":15,"idB":23,"type":0},{"idA":15,"idB":24,"type":0},{"idA":15,"idB":25,"type":0},{"idA":15,"idB":26,"type":0},{"idA":15,"idB":27,"type":0},{"idA":15,"idB":28,"type":0},{"idA":15,"idB":29,"type":0},{"idA":15,"idB":30,"type":0},{"idA":15,"idB":31,"type":0},{"idA":15,"idB":32,"type":0},{"idA":15,"idB":33,"type":0},{"idA":15,"idB":34,"type":0},{"idA":15,"idB":35,"type":0},{"idA":15,"idB":36,"type":0},{"idA":15,"idB":37,"type":0},{"idA":15,"idB":38,"type":0},{"idA":15,"idB":39,"type":0},{"idA":15,"idB":40,"type":0},{"idA":15,"idB":41,"type":0},{"idA":15,"idB":43,"type":0},{"idA":15,"idB":44,"type":0},{"idA":15,"idB":45,"type":0},{"idA":15,"idB":46,"type":0},{"idA":16,"idB":17,"type":0},{"idA":16,"idB":18,"type":0},{"idA":16,"idB":19,"type":0},{"idA":16,"idB":20,"type":0},{"idA":16,"idB":21,"type":0},{"idA":16,"idB":23,"type":0},{"idA":16,"idB":24,"type":0},{"idA":16,"idB":25,"type":0},{"idA":16,"idB":26,"type":0},{"idA":16,"idB":27,"type":0},{"idA":16,"idB":28,"type":0},{"idA":16,"idB":29,"type":0},{"idA":16,"idB":30,"type":0},{"idA":16,"idB":31,"type":0},{"idA":16,"idB":32,"type":0},{"idA":16,"idB":33,"type":0},{"idA":16,"idB":34,"type":0},{"idA":16,"idB":35,"type":0},{"idA":16,"idB":36,"type":0},{"idA":16,"idB":37,"type":0},{"idA":16,"idB":38,"type":0},{"idA":16,"idB":39,"type":0},{"idA":16,"idB":40,"type":0},{"idA":16,"idB":41,"type":0},{"idA":16,"idB":43,"type":0},{"idA":16,"idB":44,"type":0},{"idA":16,"idB":45,"type":0},{"idA":16,"idB":46,"type":0},{"idA":17,"idB":18,"type":0},{"idA":17,"idB":19,"type":0},{"idA":17,"idB":20,"type":0},{"idA":17,"idB":21,"type":0},{"idA":17,"idB":23,"type":0},{"idA":17,"idB":24,"type":0},{"idA":17,"idB":25,"type":0},{"idA":17,"idB":26,"type":0},{"idA":17,"idB":27,"type":0},{"idA":17,"idB":28,"type":0},{"idA":17,"idB":29,"type":0},{"idA":17,"idB":30,"type":0},{"idA":17,"idB":31,"type":0},{"idA":17,"idB":32,"type":0},{"idA":17,"idB":33,"type":0},{"idA":17,"idB":34,"type":0},{"idA":17,"idB":35,"type":0},{"idA":17,"idB":36,"type":0},{"idA":17,"idB":37,"type":0},{"idA":17,"idB":38,"type":0},{"idA":17,"idB":39,"type":0},{"idA":17,"idB":40,"type":0},{"idA":17,"idB":41,"type":0},{"idA":17,"idB":43,"type":0},{"idA":17,"idB":44,"type":0},{"idA":17,"idB":45,"type":0},{"idA":17,"idB":46,"type":0},{"idA":18,"idB":19,"type":0},{"idA":18,"idB":20,"type":0},{"idA":18,"idB":21,"type":0},{"idA":18,"idB":23,"type":0},{"idA":18,"idB":24,"type":0},{"idA":18,"idB":25,"type":0},{"idA":18,"idB":26,"type":0},{"idA":18,"idB":27,"type":0},{"idA":18,"idB":28,"type":0},{"idA":18,"idB":29,"type":0},{"idA":18,"idB":30,"type":0},{"idA":18,"idB":31,"type":0},{"idA":18,"idB":32,"type":0},{"idA":18,"idB":33,"type":0},{"idA":18,"idB":34,"type":0},{"idA":18,"idB":35,"type":0},{"idA":18,"idB":36,"type":0},{"idA":18,"idB":37,"type":0},{"idA":18,"idB":38,"type":0},{"idA":18,"idB":39,"type":0},{"idA":18,"idB":40,"type":0},{"idA":18,"idB":41,"type":0},{"idA":18,"idB":43,"type":0},{"idA":18,"idB":44,"type":0},{"idA":18,"idB":45,"type":0},{"idA":18,"idB":46,"type":0},{"idA":19,"idB":20,"type":0},{"idA":19,"idB":21,"type":0},{"idA":19,"idB":23,"type":0},{"idA":19,"idB":24,"type":0},{"idA":19,"idB":25,"type":0},{"idA":19,"idB":26,"type":0},{"idA":19,"idB":27,"type":0},{"idA":19,"idB":28,"type":0},{"idA":19,"idB":29,"type":0},{"idA":19,"idB":30,"type":0},{"idA":19,"idB":31,"type":0},{"idA":19,"idB":32,"type":0},{"idA":19,"idB":33,"type":0},{"idA":19,"idB":34,"type":0},{"idA":19,"idB":35,"type":0},{"idA":19,"idB":36,"type":0},{"idA":19,"idB":37,"type":0},{"idA":19,"idB":38,"type":0},{"idA":19,"idB":39,"type":0},{"idA":19,"idB":40,"type":0},{"idA":19,"idB":41,"type":0},{"idA":19,"idB":43,"type":0},{"idA":19,"idB":44,"type":0},{"idA":19,"idB":45,"type":0},{"idA":19,"idB":46,"type":0},{"idA":20,"idB":21,"type":0},{"idA":20,"idB":23,"type":0},{"idA":20,"idB":24,"type":0},{"idA":20,"idB":25,"type":0},{"idA":20,"idB":26,"type":0},{"idA":20,"idB":27,"type":0},{"idA":20,"idB":28,"type":0},{"idA":20,"idB":29,"type":0},{"idA":20,"idB":30,"type":0},{"idA":20,"idB":31,"type":0},{"idA":20,"idB":32,"type":0},{"idA":20,"idB":33,"type":0},{"idA":20,"idB":34,"type":0},{"idA":20,"idB":35,"type":0},{"idA":20,"idB":36,"type":0},{"idA":20,"idB":37,"type":0},{"idA":20,"idB":38,"type":0},{"idA":20,"idB":39,"type":0},{"idA":20,"idB":40,"type":0},{"idA":20,"idB":41,"type":0},{"idA":20,"idB":43,"type":0},{"idA":20,"idB":44,"type":0},{"idA":20,"idB":45,"type":0},{"idA":20,"idB":46,"type":0},{"idA":21,"idB":23,"type":0},{"idA":21,"idB":24,"type":0},{"idA":21,"idB":25,"type":0},{"idA":21,"idB":26,"type":0},{"idA":21,"idB":27,"type":0},{"idA":21,"idB":28,"type":0},{"idA":21,"idB":29,"type":0},{"idA":21,"idB":30,"type":0},{"idA":21,"idB":31,"type":0},{"idA":21,"idB":32,"type":0},{"idA":21,"idB":33,"type":0},{"idA":21,"idB":34,"type":0},{"idA":21,"idB":35,"type":0},{"idA":21,"idB":36,"type":0},{"idA":21,"idB":37,"type":0},{"idA":21,"idB":38,"type":0},{"idA":21,"idB":39,"type":0},{"idA":21,"idB":40,"type":0},{"idA":21,"idB":41,"type":0},{"idA":21,"idB":43,"type":0},{"idA":21,"idB":44,"type":0},{"idA":21,"idB":45,"type":0},{"idA":21,"idB":46,"type":0},{"idA":23,"idB":24,"type":0},{"idA":23,"idB":25,"type":0},{"idA":23,"idB":26,"type":0},{"idA":23,"idB":27,"type":0},{"idA":23,"idB":28,"type":0},{"idA":23,"idB":29,"type":0},{"idA":23,"idB":30,"type":0},{"idA":23,"idB":31,"type":0},{"idA":23,"idB":32,"type":0},{"idA":23,"idB":33,"type":0},{"idA":23,"idB":34,"type":0},{"idA":23,"idB":35,"type":0},{"idA":23,"idB":36,"type":0},{"idA":23,"idB":37,"type":0},{"idA":23,"idB":38,"type":0},{"idA":23,"idB":39,"type":0},{"idA":23,"idB":40,"type":0},{"idA":23,"idB":41,"type":0},{"idA":23,"idB":43,"type":0},{"idA":23,"idB":44,"type":0},{"idA":23,"idB":45,"type":0},{"idA":23,"idB":46,"type":0},{"idA":24,"idB":25,"type":0},{"idA":24,"idB":26,"type":0},{"idA":24,"idB":27,"type":0},{"idA":24,"idB":28,"type":0},{"idA":24,"idB":29,"type":0},{"idA":24,"idB":30,"type":0},{"idA":24,"idB":31,"type":0},{"idA":24,"idB":32,"type":0},{"idA":24,"idB":33,"type":0},{"idA":24,"idB":34,"type":0},{"idA":24,"idB":35,"type":0},{"idA":24,"idB":36,"type":0},{"idA":24,"idB":37,"type":0},{"idA":24,"idB":38,"type":0},{"idA":24,"idB":39,"type":0},{"idA":24,"idB":40,"type":0},{"idA":24,"idB":41,"type":0},{"idA":24,"idB":43,"type":0},{"idA":24,"idB":44,"type":0},{"idA":24,"idB":45,"type":0},{"idA":24,"idB":46,"type":0},{"idA":25,"idB":26,"type":0},{"idA":25,"idB":27,"type":0},{"idA":25,"idB":28,"type":0},{"idA":25,"idB":29,"type":0},{"idA":25,"idB":30,"type":0},{"idA":25,"idB":31,"type":0},{"idA":25,"idB":32,"type":0},{"idA":25,"idB":33,"type":0},{"idA":25,"idB":34,"type":0},{"idA":25,"idB":35,"type":0},{"idA":25,"idB":36,"type":0},{"idA":25,"idB":37,"type":0},{"idA":25,"idB":38,"type":0},{"idA":25,"idB":39,"type":0},{"idA":25,"idB":40,"type":0},{"idA":25,"idB":41,"type":0},{"idA":25,"idB":43,"type":0},{"idA":25,"idB":44,"type":0},{"idA":25,"idB":45,"type":0},{"idA":25,"idB":46,"type":0},{"idA":26,"idB":27,"type":0},{"idA":26,"idB":28,"type":0},{"idA":26,"idB":29,"type":0},{"idA":26,"idB":30,"type":0},{"idA":26,"idB":31,"type":0},{"idA":26,"idB":32,"type":0},{"idA":26,"idB":33,"type":0},{"idA":26,"idB":34,"type":0},{"idA":26,"idB":35,"type":0},{"idA":26,"idB":36,"type":0},{"idA":26,"idB":37,"type":0},{"idA":26,"idB":38,"type":0},{"idA":26,"idB":39,"type":0},{"idA":26,"idB":40,"type":0},{"idA":26,"idB":41,"type":0},{"idA":26,"idB":43,"type":0},{"idA":26,"idB":44,"type":0},{"idA":26,"idB":45,"type":0},{"idA":26,"idB":46,"type":0},{"idA":27,"idB":28,"type":0},{"idA":27,"idB":29,"type":0},{"idA":27,"idB":30,"type":0},{"idA":27,"idB":31,"type":0},{"idA":27,"idB":32,"type":0},{"idA":27,"idB":33,"type":0},{"idA":27,"idB":34,"type":0},{"idA":27,"idB":35,"type":0},{"idA":27,"idB":36,"type":0},{"idA":27,"idB":37,"type":0},{"idA":27,"idB":38,"type":0},{"idA":27,"idB":39,"type":0},{"idA":27,"idB":40,"type":0},{"idA":27,"idB":41,"type":0},{"idA":27,"idB":43,"type":0},{"idA":27,"idB":44,"type":0},{"idA":27,"idB":45,"type":0},{"idA":27,"idB":46,"type":0},{"idA":28,"idB":29,"type":0},{"idA":28,"idB":30,"type":0},{"idA":28,"idB":31,"type":0},{"idA":28,"idB":32,"type":0},{"idA":28,"idB":33,"type":0},{"idA":28,"idB":34,"type":0},{"idA":28,"idB":35,"type":0},{"idA":28,"idB":36,"type":0},{"idA":28,"idB":37,"type":0},{"idA":28,"idB":38,"type":0},{"idA":28,"idB":39,"type":0},{"idA":28,"idB":40,"type":0},{"idA":28,"idB":41,"type":0},{"idA":28,"idB":43,"type":0},{"idA":28,"idB":44,"type":0},{"idA":28,"idB":45,"type":0},{"idA":28,"idB":46,"type":0},{"idA":29,"idB":30,"type":0},{"idA":29,"idB":31,"type":0},{"idA":29,"idB":32,"type":0},{"idA":29,"idB":33,"type":0},{"idA":29,"idB":34,"type":0},{"idA":29,"idB":35,"type":0},{"idA":29,"idB":36,"type":0},{"idA":29,"idB":37,"type":0},{"idA":29,"idB":38,"type":0},{"idA":29,"idB":39,"type":0},{"idA":29,"idB":40,"type":0},{"idA":29,"idB":41,"type":0},{"idA":29,"idB":43,"type":0},{"idA":29,"idB":44,"type":0},{"idA":29,"idB":45,"type":0},{"idA":29,"idB":46,"type":0},{"idA":30,"idB":31,"type":0},{"idA":30,"idB":32,"type":0},{"idA":30,"idB":33,"type":0},{"idA":30,"idB":34,"type":0},{"idA":30,"idB":35,"type":0},{"idA":30,"idB":36,"type":0},{"idA":30,"idB":37,"type":0},{"idA":30,"idB":38,"type":0},{"idA":30,"idB":39,"type":0},{"idA":30,"idB":40,"type":0},{"idA":30,"idB":41,"type":0},{"idA":30,"idB":43,"type":0},{"idA":30,"idB":44,"type":0},{"idA":30,"idB":45,"type":0},{"idA":30,"idB":46,"type":0},{"idA":31,"idB":32,"type":0},{"idA":31,"idB":33,"type":0},{"idA":31,"idB":34,"type":0},{"idA":31,"idB":35,"type":0},{"idA":31,"idB":36,"type":0},{"idA":31,"idB":37,"type":0},{"idA":31,"idB":38,"type":0},{"idA":31,"idB":39,"type":0},{"idA":31,"idB":40,"type":0},{"idA":31,"idB":41,"type":0},{"idA":31,"idB":43,"type":0},{"idA":31,"idB":44,"type":0},{"idA":31,"idB":45,"type":0},{"idA":31,"idB":46,"type":0},{"idA":32,"idB":33,"type":0},{"idA":32,"idB":34,"type":0},{"idA":32,"idB":35,"type":0},{"idA":32,"idB":36,"type":0},{"idA":32,"idB":37,"type":0},{"idA":32,"idB":38,"type":0},{"idA":32,"idB":39,"type":0},{"idA":32,"idB":40,"type":0},{"idA":32,"idB":41,"type":0},{"idA":32,"idB":43,"type":0},{"idA":32,"idB":44,"type":0},{"idA":32,"idB":45,"type":0},{"idA":32,"idB":46,"type":0},{"idA":33,"idB":34,"type":0},{"idA":33,"idB":35,"type":0},{"idA":33,"idB":36,"type":0},{"idA":33,"idB":37,"type":0},{"idA":33,"idB":38,"type":1},{"idA":33,"idB":39,"type":1},{"idA":33,"idB":40,"type":0},{"idA":33,"idB":41,"type":0},{"idA":33,"idB":43,"type":0},{"idA":33,"idB":44,"type":0},{"idA":33,"idB":45,"type":0},{"idA":33,"idB":46,"type":0},{"idA":34,"idB":35,"type":0},{"idA":34,"idB":36,"type":1},{"idA":34,"idB":37,"type":0},{"idA":34,"idB":38,"type":0},{"idA":34,"idB":39,"type":0},{"idA":34,"idB":40,"type":0},{"idA":34,"idB":41,"type":0},{"idA":34,"idB":43,"type":0},{"idA":34,"idB":44,"type":0},{"idA":34,"idB":45,"type":0},{"idA":34,"idB":46,"type":0},{"idA":35,"idB":36,"type":1},{"idA":35,"idB":37,"type":0},{"idA":35,"idB":38,"type":0},{"idA":35,"idB":39,"type":0},{"idA":35,"idB":40,"type":1},{"idA":35,"idB":41,"type":0},{"idA":35,"idB":43,"type":0},{"idA":35,"idB":44,"type":0},{"idA":35,"idB":45,"type":0},{"idA":35,"idB":46,"type":0},{"idA":36,"idB":37,"type":0},{"idA":36,"idB":38,"type":0},{"idA":36,"idB":39,"type":0},{"idA":36,"idB":40,"type":0},{"idA":36,"idB":41,"type":0},{"idA":36,"idB":43,"type":0},{"idA":36,"idB":44,"type":0},{"idA":36,"idB":45,"type":0},{"idA":36,"idB":46,"type":0},{"idA":37,"idB":38,"type":0},{"idA":37,"idB":39,"type":1},{"idA":37,"idB":40,"type":0},{"idA":37,"idB":41,"type":0},{"idA":37,"idB":43,"type":0},{"idA":37,"idB":44,"type":0},{"idA":37,"idB":45,"type":0},{"idA":37,"idB":46,"type":0},{"idA":38,"idB":39,"type":0},{"idA":38,"idB":40,"type":0},{"idA":38,"idB":41,"type":0},{"idA":38,"idB":43,"type":0},{"idA":38,"idB":44,"type":0},{"idA":38,"idB":45,"type":0},{"idA":38,"idB":46,"type":0},{"idA":39,"idB":40,"type":0},{"idA":39,"idB":41,"type":0},{"idA":39,"idB":43,"type":0},{"idA":39,"idB":44,"type":0},{"idA":39,"idB":45,"type":0},{"idA":39,"idB":46,"type":0},{"idA":40,"idB":41,"type":0},{"idA":40,"idB":43,"type":0},{"idA":40,"idB":44,"type":0},{"idA":40,"idB":45,"type":0},{"idA":40,"idB":46,"type":0},{"idA":41,"idB":43,"type":0},{"idA":41,"idB":44,"type":0},{"idA":41,"idB":45,"type":0},{"idA":41,"idB":46,"type":0},{"idA":43,"idB":44,"type":0},{"idA":43,"idB":45,"type":0},{"idA":43,"idB":46,"type":0},{"idA":44,"idB":45,"type":0},{"idA":44,"idB":46,"type":0},{"idA":45,"idB":46,"type":0}]} diff --git a/build/lightdb/storage/subject/description b/build/lightdb/storage/subject/description new file mode 100644 index 0000000..71144d4 --- /dev/null +++ b/build/lightdb/storage/subject/description @@ -0,0 +1,7 @@ +Contient les équivalences : + +id_subject => { + "subject": [données du sujet] + "contact": [liste des id des contacts], + "relations": [liste des relations] +} diff --git a/build/lightdb/storage/subject/index b/build/lightdb/storage/subject/index new file mode 100644 index 0000000..3360d54 --- /dev/null +++ b/build/lightdb/storage/subject/index @@ -0,0 +1 @@ +{"1":{"line":0}} \ No newline at end of file diff --git a/build/lightdb/storage/survey_db/data b/build/lightdb/storage/survey_db/data deleted file mode 100644 index a8009da..0000000 --- a/build/lightdb/storage/survey_db/data +++ /dev/null @@ -1,8 +0,0 @@ -{"subject":{"id":1,"name":"Caroline","creation":1464788890}} -{"subject":{"id":2,"name":"Cl\u00e9ment","creation":1464788893}} -{"subject":{"id":3,"name":"Coralie","creation":1464788897}} -{"subject":{"id":4,"name":"Laurent","creation":1464788899}} -{"subject":{"id":5,"name":"Emilie","creation":1464788903}} -{"subject":{"id":6,"name":"C\u00e9line","creation":1464788905}} -{"subject":{"id":7,"name":"Pierre","creation":1464788908}} -{"subject":{"id":8,"name":"Boris","creation":1464788910}} diff --git a/build/lightdb/storage/survey_db/index b/build/lightdb/storage/survey_db/index deleted file mode 100644 index 654c55c..0000000 --- a/build/lightdb/storage/survey_db/index +++ /dev/null @@ -1 +0,0 @@ -{"1":{"line":0,"hash":"9798c2b945e222c48bff804d9819c0d98e88d257"},"2":{"line":1,"hash":"8192621a7f0013e137e63edffdadea6ab7f69565"},"3":{"line":2,"hash":"a7b9d5cf6cfb41c0b100d91d053032bdad3a80da"},"4":{"line":3,"hash":"ef73002b8217c3c3b87a62b8ae4c69b3994c114f"},"5":{"line":4,"hash":"5cf77d4e920f1b418bf78484bc1766fb84baabb9"},"6":{"line":5,"hash":"356e841ad04cb0f553fe47eab88bf550d6853c60"},"7":{"line":6,"hash":"7d070210aed5df40ee7e2ca4b54f29c672d32a89"},"8":{"line":7,"hash":"9e4936de2cf03d46135bbac3589a1e3ce68fb406"}} \ No newline at end of file diff --git a/build/lightdb/storage/uniqid b/build/lightdb/storage/uniqid index b9a6f7f..7003e7f 100644 --- a/build/lightdb/storage/uniqid +++ b/build/lightdb/storage/uniqid @@ -1 +1 @@ -3901 \ No newline at end of file +51 \ No newline at end of file diff --git a/build/manager/ManagerError.php b/build/manager/ManagerError.php index d6a5994..9b04bc6 100644 --- a/build/manager/ManagerError.php +++ b/build/manager/ManagerError.php @@ -75,6 +75,9 @@ /* Erreur au niveau javascript */ //const JavascriptError = 19; // -> géré en js + // Already done error + const Already = 20; + /* EXPLICITE UN CODE D'ERREUR * @@ -109,6 +112,7 @@ case self::PermissionError: return "Vous n'avez pas la permission d'effectuer cette action."; break; case self::UploadError: return "Une erreur d'upload est survenue."; break; case self::FormatError: return "Le fichier n'est pas au bon format."; break; + case self::Already: return "Action déja effectuée."; break; default: return "Description d'erreur inconnue..."; break; } diff --git a/config/modules.json b/config/modules.json index bcbed59..99c3566 100755 --- a/config/modules.json +++ b/config/modules.json @@ -246,9 +246,6 @@ "options": { "download": true }, "parameters": { "subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array", "optional": true }, - "phone": { "description": "Si vaut TRUE, renvoie les sujets cellulaires.", "type": "boolean", "optional": true }, - "facebook": { "description": "Si vaut TRUE, renvoie les sujet facebook.", "type": "boolean", "optional": true }, - "survey": { "description": "Si vaut TRUE, renvoie les sujets ResTIC.", "type": "boolean", "optional": true }, "all": { "description": "Si vaut TRUE, renvoie tous les sujets enregistrés.", "type": "boolean", "optional": true } } }, diff --git a/public_html/css/expanded/layout.css b/public_html/css/expanded/layout.css index 494e069..5040a69 100644 --- a/public_html/css/expanded/layout.css +++ b/public_html/css/expanded/layout.css @@ -103,7 +103,7 @@ body { #LOGIN > #login-icon { width: 35em; height: 10em; - background: url("/src/static/iconv3.svg") center center no-repeat; + background: url("/src/static/iconv4.png") center center no-repeat; background-size: auto 100%; } @@ -220,4 +220,4 @@ body { cursor: pointer; } -/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibGF5b3V0LmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vbGF5b3V0LnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cbmJvZHl7XG5cblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnO1xuXHRmb250LXNpemU6IDE1cHg7XG59XG5cblxuXG4jV1JBUFBFUntcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cblx0YmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWJnO1xuXG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0b3ZlcmZsb3cteTogYXV0bztcblxuXHR6LWluZGV4OiAxO1xuXG5cblx0LyogWzFdIEhlYWRlciBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdCYgPiAjSEVBREVSe1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogY2FsYyggI3skaGVhZGVyLWhlaWdodH0gLSAxcHggKTtcblxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGhlYWRlci1kYXJrLCAxMCk7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWRhcms7XG5cblx0XHR6LWluZGV4OiAxMDA7XG5cblx0fVxuXG5cblx0LyogWzJdIFNpZGUtTWVudSBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdC8vIEdlc3Rpb24gZHUgbWVudVxuXHQmID4gI01FTlUtU0lERXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0XHR0b3A6ICRoZWFkZXItaGVpZ2h0O1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblxuXHRcdGJveC1zaGFkb3c6IDJweCAxcHggM3B4ICNkZGQ7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4zcyApO1xuXG5cdFx0ei1pbmRleDogMTA7XG5cdH1cblxuXG5cdC8qIFszXSBDb250YWluZXIgZGUgbGEgcGFnZVxuXHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXHQmID4gI0NPTlRBSU5FUntcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJGhlYWRlci1oZWlnaHQ7XG5cdFx0XHRsZWZ0OiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0d2lkdGg6IGNhbGMoIDEwMCUgLSAjeyRtZW51LXNpZGUtd2lkdGh9ICk7XG5cdFx0XHRtaW4taGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblx0XHQvLyAgbWFyZ2luOiAxZW07XG5cblx0XHQvLyBGbGV4IHByb3BlcnRpZXNcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRvdmVyZmxvdy14OiBub25lO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cbn1cblxuXG5cblxuLyogWzRdIFBhZ2UgZGUgbG9naW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4jTE9HSU57XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogLTEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXG5cdC8vIFF1YW5kIGxhIHBhZ2UgZGUgbG9naW4gZXN0IHZpc2libGVcblx0Ji5hY3RpdmV7XG5cdFx0bGVmdDogMDtcblx0fVxuXG5cdC8vIGZsZXggcHJvcGVydGllc1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEN0Q5O1xuXG5cdEBpbmNsdWRlIHRyYW5zaXRpb24oIGxlZnQgLjNzIGVhc2UtaW4tb3V0ICk7XG5cblx0ei1pbmRleDogMTAxO1xuXG5cblxuXG5cdC8qICgxKSBMb2dvIGV0IG5vbSBkdSBzaXRlICovXG5cdCYgPiAjbG9naW4taWNvbntcblx0XHR3aWR0aDogMzVlbTtcblx0XHRoZWlnaHQ6IDEwZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2ljb252My5zdmcnKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcblx0fVxuXG5cblx0LyogKDIpIEZvcm11bGFpcmUgZGUgY29ubmV4aW9uICovXG5cdCYgPiAjbG9naW4tZm9ybXtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXG5cdFx0LyogKDIuMSkgQ2hhbXBzIGRlIHRleHRlIChsb2dpbi9wYXNzd29yZCkgKi9cblx0XHQmID4gaW5wdXRbdHlwZT0ndGV4dCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdwYXNzd29yZCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdzdWJtaXQnXXtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdHdpZHRoOiAyMGVtO1xuXG5cdFx0XHRtYXJnaW46IDJlbSAwO1xuXHRcdFx0cGFkZGluZzogMWVtIDJlbTtcblxuXHRcdFx0Ly8gZmxleCBwcm9wZXJ0aWVzXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0XHRcdGFsaWduLWl0ZW1zOiBtaWRkbGU7XG5cblxuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2FhYTtcblxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1kYXJrO1xuXG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuXG5cdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKCBib3JkZXIgLjJzIGVhc2UtaW4tb3V0ICk7XG5cblx0XHRcdC8vIGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3Zlci9AZm9jdXNcblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzXG5cdFx0XHQmOm5vdChbdmFsdWU9XCJcIl0pe1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cblx0XHQvKiAoMi4yKSBCb3V0b24gZGUgY29ubmV4aW9uICovXG5cdFx0JiA+IGlucHV0W3R5cGU9J3N1Ym1pdCdde1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAzcHggKTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDJlbTtcblxuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkIGRhcmtlbigkdGhlbWUtZmctcHJpbWFyeSwgMTUpO1xuXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGhlbWUtZmctcHJpbWFyeTtcblxuXHRcdFx0Y29sb3I6ICRkYXJrLWZnLXByaW1hcnk7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4xcyBlYXNlLWluLW91dCApO1xuXG5cdFx0XHQvLyBBbmltYXRpb24gZGUgQGhvdmVyXG5cdFx0XHQmOmhvdmVyLCAmLmhvdmVye1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHRoZW1lLWZnLXByaW1hcnksIDEwKTtcblx0XHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAycHggKTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgMnB4ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFuaW1hdGlvbiBkZSBjbGljIEBhY3RpdmVcblx0XHRcdFx0JjphY3RpdmV7XG5cdFx0XHRcdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDJlbTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgM3B4ICk7XG5cdFx0XHR9XG5cblx0XHR9XG5cblxuXG5cblxuXHRcdC8qICgzKSBNb3QgZGUgcGFzc2Ugb3VibGllICovXG5cdFx0JiA+ICNsb3N0LXBhc3N3b3Jke1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y29sb3I6ICM3Nzc7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3ZlclxuXHRcdFx0Jjpob3Zlcntcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdC8qICg0KSBHZXN0aW9uIGRlIGxhIGZlcm1ldHVyZSAqL1xuXHQmID4gI2xvZ2luLWNsb3Nle1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMmVtO1xuXHRcdFx0cmlnaHQ6IDJlbTtcblx0XHRcdG1pbi13aWR0aDogMmVtO1xuXHRcdFx0aGVpZ2h0OiAyZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2NvbnRhaW5lci9iYWNrQDU1NTU1NS5zdmcnKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMWVtO1xuXG5cdFx0Y29sb3I6ICM1NTU7XG5cdFx0cGFkZGluZy1yaWdodDogMmVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcblxuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxufVxuIiwKCQkiLyogWzFdIENPVUxFVVJTXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIENPVUxFVVJTIERVIFRIRU1FICRERUZBVUxUICovXG4kdGhlbWUtYmc6ICAgICAgICAgI2U4ZThlODtcbiR0aGVtZS1iZy1wcmltYXJ5OiAjZmZmZmZmO1xuJHRoZW1lLWZnOiAgICAgICAgICM1MTUxNTE7XG4kdGhlbWUtZmctcHJpbWFyeTogIzBlNmRiZjtcblxuLyogKDIpIENPVUxFVVJTIERFIFRIRU1FICREQVJLICovXG4kZGFyay1iZzogICAgICAgICAjMzEzNTQxO1xuJGRhcmstYmctcHJpbWFyeTogIzI5MjgyZTtcbiRkYXJrLWZnOiAgICAgICAgICM5MzkzOTM7XG4kZGFyay1mZy1wcmltYXJ5OiAjZmZmZmZmO1xuXG4kaGVhZGVyLWRhcms6ICAgICAjRjhGOEZBO1xuXG4vKiAoMykgQ291bGV1cnMgZHUgdGhlbWUgcG91ciBsYSB0aW1lbGluZSAqL1xuJHRpbWVsaW5lLWNvbG9yOiAjNzM4Mzk0O1xuJHRpbWVsaW5lLTA6ICMwZTZkYmY7XG4kdGltZWxpbmUtMTogI2U2NGUzZTtcbiR0aW1lbGluZS0yOiAjZDU0YjI4O1xuJHRpbWVsaW5lLTM6ICNiMTRiZTc7XG4kdGltZWxpbmUtNDogIzA1M2I1ZDtcblxuJHRpbWVsaW5lLWZiOiAjM2I1OTk4O1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdz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 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibGF5b3V0LmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vbGF5b3V0LnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cbmJvZHl7XG5cblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnO1xuXHRmb250LXNpemU6IDE1cHg7XG59XG5cblxuXG4jV1JBUFBFUntcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cblx0YmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWJnO1xuXG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0b3ZlcmZsb3cteTogYXV0bztcblxuXHR6LWluZGV4OiAxO1xuXG5cblx0LyogWzFdIEhlYWRlciBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdCYgPiAjSEVBREVSe1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogY2FsYyggI3skaGVhZGVyLWhlaWdodH0gLSAxcHggKTtcblxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGhlYWRlci1kYXJrLCAxMCk7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWRhcms7XG5cblx0XHR6LWluZGV4OiAxMDA7XG5cblx0fVxuXG5cblx0LyogWzJdIFNpZGUtTWVudSBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdC8vIEdlc3Rpb24gZHUgbWVudVxuXHQmID4gI01FTlUtU0lERXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0XHR0b3A6ICRoZWFkZXItaGVpZ2h0O1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblxuXHRcdGJveC1zaGFkb3c6IDJweCAxcHggM3B4ICNkZGQ7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4zcyApO1xuXG5cdFx0ei1pbmRleDogMTA7XG5cdH1cblxuXG5cdC8qIFszXSBDb250YWluZXIgZGUgbGEgcGFnZVxuXHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXHQmID4gI0NPTlRBSU5FUntcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJGhlYWRlci1oZWlnaHQ7XG5cdFx0XHRsZWZ0OiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0d2lkdGg6IGNhbGMoIDEwMCUgLSAjeyRtZW51LXNpZGUtd2lkdGh9ICk7XG5cdFx0XHRtaW4taGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblx0XHQvLyAgbWFyZ2luOiAxZW07XG5cblx0XHQvLyBGbGV4IHByb3BlcnRpZXNcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRvdmVyZmxvdy14OiBub25lO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cbn1cblxuXG5cblxuLyogWzRdIFBhZ2UgZGUgbG9naW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4jTE9HSU57XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogLTEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXG5cdC8vIFF1YW5kIGxhIHBhZ2UgZGUgbG9naW4gZXN0IHZpc2libGVcblx0Ji5hY3RpdmV7XG5cdFx0bGVmdDogMDtcblx0fVxuXG5cdC8vIGZsZXggcHJvcGVydGllc1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEN0Q5O1xuXG5cdEBpbmNsdWRlIHRyYW5zaXRpb24oIGxlZnQgLjNzIGVhc2UtaW4tb3V0ICk7XG5cblx0ei1pbmRleDogMTAxO1xuXG5cblxuXG5cdC8qICgxKSBMb2dvIGV0IG5vbSBkdSBzaXRlICovXG5cdCYgPiAjbG9naW4taWNvbntcblx0XHR3aWR0aDogMzVlbTtcblx0XHRoZWlnaHQ6IDEwZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2ljb252NC5wbmcnKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcblx0fVxuXG5cblx0LyogKDIpIEZvcm11bGFpcmUgZGUgY29ubmV4aW9uICovXG5cdCYgPiAjbG9naW4tZm9ybXtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXG5cdFx0LyogKDIuMSkgQ2hhbXBzIGRlIHRleHRlIChsb2dpbi9wYXNzd29yZCkgKi9cblx0XHQmID4gaW5wdXRbdHlwZT0ndGV4dCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdwYXNzd29yZCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdzdWJtaXQnXXtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdHdpZHRoOiAyMGVtO1xuXG5cdFx0XHRtYXJnaW46IDJlbSAwO1xuXHRcdFx0cGFkZGluZzogMWVtIDJlbTtcblxuXHRcdFx0Ly8gZmxleCBwcm9wZXJ0aWVzXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0XHRcdGFsaWduLWl0ZW1zOiBtaWRkbGU7XG5cblxuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2FhYTtcblxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1kYXJrO1xuXG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuXG5cdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKCBib3JkZXIgLjJzIGVhc2UtaW4tb3V0ICk7XG5cblx0XHRcdC8vIGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3Zlci9AZm9jdXNcblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzXG5cdFx0XHQmOm5vdChbdmFsdWU9XCJcIl0pe1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cblx0XHQvKiAoMi4yKSBCb3V0b24gZGUgY29ubmV4aW9uICovXG5cdFx0JiA+IGlucHV0W3R5cGU9J3N1Ym1pdCdde1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAzcHggKTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDJlbTtcblxuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkIGRhcmtlbigkdGhlbWUtZmctcHJpbWFyeSwgMTUpO1xuXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGhlbWUtZmctcHJpbWFyeTtcblxuXHRcdFx0Y29sb3I6ICRkYXJrLWZnLXByaW1hcnk7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4xcyBlYXNlLWluLW91dCApO1xuXG5cdFx0XHQvLyBBbmltYXRpb24gZGUgQGhvdmVyXG5cdFx0XHQmOmhvdmVyLCAmLmhvdmVye1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHRoZW1lLWZnLXByaW1hcnksIDEwKTtcblx0XHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAycHggKTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgMnB4ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFuaW1hdGlvbiBkZSBjbGljIEBhY3RpdmVcblx0XHRcdFx0JjphY3RpdmV7XG5cdFx0XHRcdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDJlbTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgM3B4ICk7XG5cdFx0XHR9XG5cblx0XHR9XG5cblxuXG5cblxuXHRcdC8qICgzKSBNb3QgZGUgcGFzc2Ugb3VibGllICovXG5cdFx0JiA+ICNsb3N0LXBhc3N3b3Jke1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y29sb3I6ICM3Nzc7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3ZlclxuXHRcdFx0Jjpob3Zlcntcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdC8qICg0KSBHZXN0aW9uIGRlIGxhIGZlcm1ldHVyZSAqL1xuXHQmID4gI2xvZ2luLWNsb3Nle1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMmVtO1xuXHRcdFx0cmlnaHQ6IDJlbTtcblx0XHRcdG1pbi13aWR0aDogMmVtO1xuXHRcdFx0aGVpZ2h0OiAyZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2NvbnRhaW5lci9iYWNrQDU1NTU1NS5zdmcnKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMWVtO1xuXG5cdFx0Y29sb3I6ICM1NTU7XG5cdFx0cGFkZGluZy1yaWdodDogMmVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcblxuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxufVxuIiwKCQkiLyogWzFdIENPVUxFVVJTXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIENPVUxFVVJTIERVIFRIRU1FICRERUZBVUxUICovXG4kdGhlbWUtYmc6ICAgICAgICAgI2U4ZThlODtcbiR0aGVtZS1iZy1wcmltYXJ5OiAjZmZmZmZmO1xuJHRoZW1lLWZnOiAgICAgICAgICM1MTUxNTE7XG4kdGhlbWUtZmctcHJpbWFyeTogIzBlNmRiZjtcblxuLyogKDIpIENPVUxFVVJTIERFIFRIRU1FICREQVJLICovXG4kZGFyay1iZzogICAgICAgICAjMzEzNTQxO1xuJGRhcmstYmctcHJpbWFyeTogIzI5MjgyZTtcbiRkYXJrLWZnOiAgICAgICAgICM5MzkzOTM7XG4kZGFyay1mZy1wcmltYXJ5OiAjZmZmZmZmO1xuXG4kaGVhZGVyLWRhcms6ICAgICAjRjhGOEZBO1xuXG4vKiAoMykgQ291bGV1cnMgZHUgdGhlbWUgcG91ciBsYSB0aW1lbGluZSAqL1xuJHRpbWVsaW5lLWNvbG9yOiAjNzM4Mzk0O1xuJHRpbWVsaW5lLTA6ICMwZTZkYmY7XG4kdGltZWxpbmUtMTogI2U2NGUzZTtcbiR0aW1lbGluZS0yOiAjZDU0YjI4O1xuJHRpbWVsaW5lLTM6ICNiMTRiZTc7XG4kdGltZWxpbmUtNDogIzA1M2I1ZDtcblxuJHRpbWVsaW5lLWZiOiAjM2I1OTk4O1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdz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 */ \ No newline at end of file diff --git a/public_html/css/expanded/layout.css.map b/public_html/css/expanded/layout.css.map index a9c2b23..88722a6 100644 --- a/public_html/css/expanded/layout.css.map +++ b/public_html/css/expanded/layout.css.map @@ -6,7 +6,7 @@ "../constants.scss" ], "sourcesContent": [ - "@import 'constants';\n\nbody{\n\n\tfont-family: 'Open Sans';\n\tfont-size: 15px;\n}\n\n\n\n#WRAPPER{\n\tdisplay: block;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\tbackground-color: $theme-bg;\n\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\n\tz-index: 1;\n\n\n\t/* [1] Header de la page\n\t==========================================*/\n\t& > #HEADER{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: calc( #{$header-height} - 1px );\n\n\t\tborder-bottom: 1px solid darken($header-dark, 10);\n\n\t\tbackground-color: $header-dark;\n\n\t\tz-index: 100;\n\n\t}\n\n\n\t/* [2] Side-Menu de la page\n\t==========================================*/\n\t// Gestion du menu\n\t& > #MENU-SIDE{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: $header-height;\n\t\t\tleft: 0;\n\t\t\twidth: $menu-side-width;\n\t\t\theight: calc( 100% - #{$header-height} );\n\n\t\tbox-shadow: 2px 1px 3px #ddd;\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( all .3s );\n\n\t\tz-index: 10;\n\t}\n\n\n\t/* [3] Container de la page\n\t==========================================*/\n\t& > #CONTAINER{\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tleft: $menu-side-width;\n\t\t\twidth: calc( 100% - #{$menu-side-width} );\n\t\t\tmin-height: calc( 100% - #{$header-height} );\n\t\t// margin: 1em;\n\n\t\t// Flex properties\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tflex-wrap: wrap;\n\n\t\toverflow-x: none;\n\t\toverflow-y: auto;\n\t}\n}\n\n\n\n\n/* [4] Page de login\n=========================================================*/\n#LOGIN{\n\tdisplay: flex;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: -100%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t// Quand la page de login est visible\n\t&.active{\n\t\tleft: 0;\n\t}\n\n\t// flex properties\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-around;\n\talign-items: center;\n\n\n\tbackground-color: #D7D7D9;\n\n\t@include transition( left .3s ease-in-out );\n\n\tz-index: 101;\n\n\n\n\n\t/* (1) Logo et nom du site */\n\t& > #login-icon{\n\t\twidth: 35em;\n\t\theight: 10em;\n\n\t\tbackground: url('/src/static/iconv3.svg') center center no-repeat;\n\t\tbackground-size: auto 100%;\n\t}\n\n\n\t/* (2) Formulaire de connexion */\n\t& > #login-form{\n\t\tdisplay: block;\n\n\n\t\t/* (2.1) Champs de texte (login/password) */\n\t\t& > input[type='text'],\n\t\t& > input[type='password'],\n\t\t& > input[type='submit']{\n\t\t\tdisplay: flex;\n\t\t\t\twidth: 20em;\n\n\t\t\tmargin: 2em 0;\n\t\t\tpadding: 1em 2em;\n\n\t\t\t// flex properties\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-around;\n\t\t\tflex-wrap: nowrap;\n\t\t\talign-items: middle;\n\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid #aaa;\n\n\t\t\tbackground-color: $header-dark;\n\n\t\t\tcolor: #444;\n\t\t\t// font-weight: bold;\n\t\t\tletter-spacing: .02em;\n\n\t\t\t@include transition( border .2s ease-in-out );\n\n\t\t\t// cursor: default;\n\n\t\t\t// Animation de @hover/@focus\n\t\t\t&:hover,\n\t\t\t&:focus\n\t\t\t&:not([value=\"\"]){\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t}\n\n\t\t}\n\n\n\t\t/* (2.2) Bouton de connexion */\n\t\t& > input[type='submit']{\n\t\t\twidth: 100%;\n\t\t\tmargin-top: calc( 2em - 3px );\n\t\t\tmargin-bottom: 2em;\n\n\t\t\tborder: 0;\n\t\t\tborder-top: 3px solid darken($theme-fg-primary, 15);\n\n\t\t\tbackground-color: $theme-fg-primary;\n\n\t\t\tcolor: $dark-fg-primary;\n\t\t\tfont-weight: bold;\n\t\t\ttext-align: left;\n\n\t\t\tcursor: pointer;\n\n\t\t\t@include transition( all .1s ease-in-out );\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover, &.hover{\n\t\t\t\tbackground-color: darken($theme-fg-primary, 10);\n\t\t\t\tborder-top-width: 1px;\n\t\t\t\tmargin-top: calc( 2em - 2px );\n\t\t\t\tmargin-bottom: calc( 2em + 2px );\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t\t&:active{\n\t\t\t\tborder-top-width: 0;\n\t\t\t\tmargin-top: 2em;\n\t\t\t\tmargin-bottom: calc( 2em + 3px );\n\t\t\t}\n\n\t\t}\n\n\n\n\n\n\t\t/* (3) Mot de passe oublie */\n\t\t& > #lost-password{\n\t\t\tposition: absolute;\n\t\t\tcolor: #777;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover{\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/* (4) Gestion de la fermeture */\n\t& > #login-close{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: 2em;\n\t\t\tright: 2em;\n\t\t\tmin-width: 2em;\n\t\t\theight: 2em;\n\n\t\tbackground: url('/src/static/container/back@555555.svg') right center no-repeat;\n\t\tbackground-size: 1em;\n\n\t\tcolor: #555;\n\t\tpadding-right: 2em;\n\t\tline-height: 2em;\n\t\tfont-weight: bold;\n\t\tletter-spacing: 1px;\n\n\t\tcursor: pointer;\n\t}\n}\n", + "@import 'constants';\n\nbody{\n\n\tfont-family: 'Open Sans';\n\tfont-size: 15px;\n}\n\n\n\n#WRAPPER{\n\tdisplay: block;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\tbackground-color: $theme-bg;\n\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\n\tz-index: 1;\n\n\n\t/* [1] Header de la page\n\t==========================================*/\n\t& > #HEADER{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: calc( #{$header-height} - 1px );\n\n\t\tborder-bottom: 1px solid darken($header-dark, 10);\n\n\t\tbackground-color: $header-dark;\n\n\t\tz-index: 100;\n\n\t}\n\n\n\t/* [2] Side-Menu de la page\n\t==========================================*/\n\t// Gestion du menu\n\t& > #MENU-SIDE{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: $header-height;\n\t\t\tleft: 0;\n\t\t\twidth: $menu-side-width;\n\t\t\theight: calc( 100% - #{$header-height} );\n\n\t\tbox-shadow: 2px 1px 3px #ddd;\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( all .3s );\n\n\t\tz-index: 10;\n\t}\n\n\n\t/* [3] Container de la page\n\t==========================================*/\n\t& > #CONTAINER{\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tleft: $menu-side-width;\n\t\t\twidth: calc( 100% - #{$menu-side-width} );\n\t\t\tmin-height: calc( 100% - #{$header-height} );\n\t\t// margin: 1em;\n\n\t\t// Flex properties\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tflex-wrap: wrap;\n\n\t\toverflow-x: none;\n\t\toverflow-y: auto;\n\t}\n}\n\n\n\n\n/* [4] Page de login\n=========================================================*/\n#LOGIN{\n\tdisplay: flex;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: -100%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t// Quand la page de login est visible\n\t&.active{\n\t\tleft: 0;\n\t}\n\n\t// flex properties\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-around;\n\talign-items: center;\n\n\n\tbackground-color: #D7D7D9;\n\n\t@include transition( left .3s ease-in-out );\n\n\tz-index: 101;\n\n\n\n\n\t/* (1) Logo et nom du site */\n\t& > #login-icon{\n\t\twidth: 35em;\n\t\theight: 10em;\n\n\t\tbackground: url('/src/static/iconv4.png') center center no-repeat;\n\t\tbackground-size: auto 100%;\n\t}\n\n\n\t/* (2) Formulaire de connexion */\n\t& > #login-form{\n\t\tdisplay: block;\n\n\n\t\t/* (2.1) Champs de texte (login/password) */\n\t\t& > input[type='text'],\n\t\t& > input[type='password'],\n\t\t& > input[type='submit']{\n\t\t\tdisplay: flex;\n\t\t\t\twidth: 20em;\n\n\t\t\tmargin: 2em 0;\n\t\t\tpadding: 1em 2em;\n\n\t\t\t// flex properties\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-around;\n\t\t\tflex-wrap: nowrap;\n\t\t\talign-items: middle;\n\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid #aaa;\n\n\t\t\tbackground-color: $header-dark;\n\n\t\t\tcolor: #444;\n\t\t\t// font-weight: bold;\n\t\t\tletter-spacing: .02em;\n\n\t\t\t@include transition( border .2s ease-in-out );\n\n\t\t\t// cursor: default;\n\n\t\t\t// Animation de @hover/@focus\n\t\t\t&:hover,\n\t\t\t&:focus\n\t\t\t&:not([value=\"\"]){\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t}\n\n\t\t}\n\n\n\t\t/* (2.2) Bouton de connexion */\n\t\t& > input[type='submit']{\n\t\t\twidth: 100%;\n\t\t\tmargin-top: calc( 2em - 3px );\n\t\t\tmargin-bottom: 2em;\n\n\t\t\tborder: 0;\n\t\t\tborder-top: 3px solid darken($theme-fg-primary, 15);\n\n\t\t\tbackground-color: $theme-fg-primary;\n\n\t\t\tcolor: $dark-fg-primary;\n\t\t\tfont-weight: bold;\n\t\t\ttext-align: left;\n\n\t\t\tcursor: pointer;\n\n\t\t\t@include transition( all .1s ease-in-out );\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover, &.hover{\n\t\t\t\tbackground-color: darken($theme-fg-primary, 10);\n\t\t\t\tborder-top-width: 1px;\n\t\t\t\tmargin-top: calc( 2em - 2px );\n\t\t\t\tmargin-bottom: calc( 2em + 2px );\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t\t&:active{\n\t\t\t\tborder-top-width: 0;\n\t\t\t\tmargin-top: 2em;\n\t\t\t\tmargin-bottom: calc( 2em + 3px );\n\t\t\t}\n\n\t\t}\n\n\n\n\n\n\t\t/* (3) Mot de passe oublie */\n\t\t& > #lost-password{\n\t\t\tposition: absolute;\n\t\t\tcolor: #777;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover{\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/* (4) Gestion de la fermeture */\n\t& > #login-close{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: 2em;\n\t\t\tright: 2em;\n\t\t\tmin-width: 2em;\n\t\t\theight: 2em;\n\n\t\tbackground: url('/src/static/container/back@555555.svg') right center no-repeat;\n\t\tbackground-size: 1em;\n\n\t\tcolor: #555;\n\t\tpadding-right: 2em;\n\t\tline-height: 2em;\n\t\tfont-weight: bold;\n\t\tletter-spacing: 1px;\n\n\t\tcursor: pointer;\n\t}\n}\n", "/* [1] COULEURS\n=========================================================*/\n/* (1) COULEURS DU THEME $DEFAULT */\n$theme-bg: #e8e8e8;\n$theme-bg-primary: #ffffff;\n$theme-fg: #515151;\n$theme-fg-primary: #0e6dbf;\n\n/* (2) COULEURS DE THEME $DARK */\n$dark-bg: #313541;\n$dark-bg-primary: #29282e;\n$dark-fg: #939393;\n$dark-fg-primary: #ffffff;\n\n$header-dark: #F8F8FA;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #738394;\n$timeline-0: #0e6dbf;\n$timeline-1: #e64e3e;\n$timeline-2: #d54b28;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\n\n$timeline-fb: #3b5998;\n\n\n/* [2] DIMENSIONS\n=========================================================*/\n/* (1) Layout de base */\n$menu-side-width: 15em;\n$header-height: 4em;\n\n\n\n/* [3] Mixins\n=========================================================*/\n@mixin transform($value...) {\n\ttransform: $value;\n\t-moz-transform: $value;\n\t-o-transform: $value;\n\t-ms-transform: $value;\n\t-webkit-transform: $value;\n}\n\n\n@mixin transition($value...) {\n\t-webkit-transition: $value;\n\ttransition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n\t@return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n" ], "mappings": "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", diff --git a/public_html/css/layout.scss b/public_html/css/layout.scss index 5d7ae85..7817937 100644 --- a/public_html/css/layout.scss +++ b/public_html/css/layout.scss @@ -124,7 +124,7 @@ body{ width: 35em; height: 10em; - background: url('/src/static/iconv3.svg') center center no-repeat; + background: url('/src/static/iconv4.png') center center no-repeat; background-size: auto 100%; } diff --git a/public_html/css/min/layout.css b/public_html/css/min/layout.css index 9be7a0f..3ca0a21 100644 --- a/public_html/css/min/layout.css +++ b/public_html/css/min/layout.css @@ -1,3 +1,3 @@ -body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px);border-bottom:1px solid #dadae5;background-color:#F8F8FA;z-index:100}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em);box-shadow:2px 1px 3px #ddd;background-color:#fff;-webkit-transition:all 0.3s;transition:all 0.3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em);min-height:calc( 100% - 4em);flex-direction:row;justify-content:space-between;flex-wrap:wrap;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#D7D7D9;-webkit-transition:left 0.3s ease-in-out;transition:left 0.3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/src/static/iconv3.svg") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='submit']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:3px;border:1px solid #aaa;background-color:#F8F8FA;color:#444;letter-spacing:.02em;-webkit-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='submit']:hover,#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]),#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]),#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]){border-color:#0e6dbf}#LOGIN>#login-form>input[type='submit']{width:100%;margin-top:calc( 2em - 3px);margin-bottom:2em;border:0;border-top:3px solid #094478;background-color:#0e6dbf;color:#fff;font-weight:bold;text-align:left;cursor:pointer;-webkit-transition:all 0.1s ease-in-out;transition:all 0.1s ease-in-out}#LOGIN>#login-form>input[type='submit']:hover,#LOGIN>#login-form>input[type='submit'].hover{background-color:#0b528f;border-top-width:1px;margin-top:calc( 2em - 2px);margin-bottom:calc( 2em + 2px)}#LOGIN>#login-form>input[type='submit']:active{border-top-width:0;margin-top:2em;margin-bottom:calc( 2em + 3px)}#LOGIN>#login-form>#lost-password{position:absolute;color:#777;cursor:pointer}#LOGIN>#login-form>#lost-password:hover{color:#0e6dbf;text-decoration:underline}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;min-width:2em;height:2em;background:url("/src/static/container/back@555555.svg") right center no-repeat;background-size:1em;color:#555;padding-right:2em;line-height:2em;font-weight:bold;letter-spacing:1px;cursor:pointer} +body{font-family:'Open Sans';font-size:15px}#WRAPPER{display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:#e8e8e8;overflow-x:hidden;overflow-y:auto;z-index:1}#WRAPPER>#HEADER{display:block;position:fixed;top:0;left:0;width:100%;height:calc( 4em - 1px);border-bottom:1px solid #dadae5;background-color:#F8F8FA;z-index:100}#WRAPPER>#MENU-SIDE{display:block;position:fixed;top:4em;left:0;width:15em;height:calc( 100% - 4em);box-shadow:2px 1px 3px #ddd;background-color:#fff;-webkit-transition:all 0.3s;transition:all 0.3s;z-index:10}#WRAPPER>#CONTAINER{display:flex;position:absolute;top:4em;left:15em;width:calc( 100% - 15em);min-height:calc( 100% - 4em);flex-direction:row;justify-content:space-between;flex-wrap:wrap;overflow-x:none;overflow-y:auto}#LOGIN{display:flex;position:fixed;top:0;left:-100%;width:100%;height:100%;flex-direction:row;flex-wrap:nowrap;justify-content:space-around;align-items:center;background-color:#D7D7D9;-webkit-transition:left 0.3s ease-in-out;transition:left 0.3s ease-in-out;z-index:101}#LOGIN.active{left:0}#LOGIN>#login-icon{width:35em;height:10em;background:url("/src/static/iconv4.png") center center no-repeat;background-size:auto 100%}#LOGIN>#login-form{display:block}#LOGIN>#login-form>input[type='text'],#LOGIN>#login-form>input[type='password'],#LOGIN>#login-form>input[type='submit']{display:flex;width:20em;margin:2em 0;padding:1em 2em;flex-direction:column;justify-content:space-around;flex-wrap:nowrap;align-items:middle;border-radius:3px;border:1px solid #aaa;background-color:#F8F8FA;color:#444;letter-spacing:.02em;-webkit-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}#LOGIN>#login-form>input[type='text']:hover,#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='password']:hover,#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='submit']:hover,#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='text']:not([value=""]),#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='password']:not([value=""]),#LOGIN>#login-form>input[type='text']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]),#LOGIN>#login-form>input[type='password']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]),#LOGIN>#login-form>input[type='submit']:focus #LOGIN>#login-form>input[type='submit']:not([value=""]){border-color:#0e6dbf}#LOGIN>#login-form>input[type='submit']{width:100%;margin-top:calc( 2em - 3px);margin-bottom:2em;border:0;border-top:3px solid #094478;background-color:#0e6dbf;color:#fff;font-weight:bold;text-align:left;cursor:pointer;-webkit-transition:all 0.1s ease-in-out;transition:all 0.1s ease-in-out}#LOGIN>#login-form>input[type='submit']:hover,#LOGIN>#login-form>input[type='submit'].hover{background-color:#0b528f;border-top-width:1px;margin-top:calc( 2em - 2px);margin-bottom:calc( 2em + 2px)}#LOGIN>#login-form>input[type='submit']:active{border-top-width:0;margin-top:2em;margin-bottom:calc( 2em + 3px)}#LOGIN>#login-form>#lost-password{position:absolute;color:#777;cursor:pointer}#LOGIN>#login-form>#lost-password:hover{color:#0e6dbf;text-decoration:underline}#LOGIN>#login-close{display:block;position:absolute;top:2em;right:2em;min-width:2em;height:2em;background:url("/src/static/container/back@555555.svg") right center no-repeat;background-size:1em;color:#555;padding-right:2em;line-height:2em;font-weight:bold;letter-spacing:1px;cursor:pointer} -/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibGF5b3V0LmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vbGF5b3V0LnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cbmJvZHl7XG5cblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnO1xuXHRmb250LXNpemU6IDE1cHg7XG59XG5cblxuXG4jV1JBUFBFUntcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cblx0YmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWJnO1xuXG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0b3ZlcmZsb3cteTogYXV0bztcblxuXHR6LWluZGV4OiAxO1xuXG5cblx0LyogWzFdIEhlYWRlciBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdCYgPiAjSEVBREVSe1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogY2FsYyggI3skaGVhZGVyLWhlaWdodH0gLSAxcHggKTtcblxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGhlYWRlci1kYXJrLCAxMCk7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWRhcms7XG5cblx0XHR6LWluZGV4OiAxMDA7XG5cblx0fVxuXG5cblx0LyogWzJdIFNpZGUtTWVudSBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdC8vIEdlc3Rpb24gZHUgbWVudVxuXHQmID4gI01FTlUtU0lERXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0XHR0b3A6ICRoZWFkZXItaGVpZ2h0O1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblxuXHRcdGJveC1zaGFkb3c6IDJweCAxcHggM3B4ICNkZGQ7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4zcyApO1xuXG5cdFx0ei1pbmRleDogMTA7XG5cdH1cblxuXG5cdC8qIFszXSBDb250YWluZXIgZGUgbGEgcGFnZVxuXHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXHQmID4gI0NPTlRBSU5FUntcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJGhlYWRlci1oZWlnaHQ7XG5cdFx0XHRsZWZ0OiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0d2lkdGg6IGNhbGMoIDEwMCUgLSAjeyRtZW51LXNpZGUtd2lkdGh9ICk7XG5cdFx0XHRtaW4taGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblx0XHQvLyAgbWFyZ2luOiAxZW07XG5cblx0XHQvLyBGbGV4IHByb3BlcnRpZXNcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRvdmVyZmxvdy14OiBub25lO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cbn1cblxuXG5cblxuLyogWzRdIFBhZ2UgZGUgbG9naW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4jTE9HSU57XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogLTEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXG5cdC8vIFF1YW5kIGxhIHBhZ2UgZGUgbG9naW4gZXN0IHZpc2libGVcblx0Ji5hY3RpdmV7XG5cdFx0bGVmdDogMDtcblx0fVxuXG5cdC8vIGZsZXggcHJvcGVydGllc1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEN0Q5O1xuXG5cdEBpbmNsdWRlIHRyYW5zaXRpb24oIGxlZnQgLjNzIGVhc2UtaW4tb3V0ICk7XG5cblx0ei1pbmRleDogMTAxO1xuXG5cblxuXG5cdC8qICgxKSBMb2dvIGV0IG5vbSBkdSBzaXRlICovXG5cdCYgPiAjbG9naW4taWNvbntcblx0XHR3aWR0aDogMzVlbTtcblx0XHRoZWlnaHQ6IDEwZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2ljb252My5zdmcnKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcblx0fVxuXG5cblx0LyogKDIpIEZvcm11bGFpcmUgZGUgY29ubmV4aW9uICovXG5cdCYgPiAjbG9naW4tZm9ybXtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXG5cdFx0LyogKDIuMSkgQ2hhbXBzIGRlIHRleHRlIChsb2dpbi9wYXNzd29yZCkgKi9cblx0XHQmID4gaW5wdXRbdHlwZT0ndGV4dCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdwYXNzd29yZCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdzdWJtaXQnXXtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdHdpZHRoOiAyMGVtO1xuXG5cdFx0XHRtYXJnaW46IDJlbSAwO1xuXHRcdFx0cGFkZGluZzogMWVtIDJlbTtcblxuXHRcdFx0Ly8gZmxleCBwcm9wZXJ0aWVzXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0XHRcdGFsaWduLWl0ZW1zOiBtaWRkbGU7XG5cblxuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2FhYTtcblxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1kYXJrO1xuXG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuXG5cdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKCBib3JkZXIgLjJzIGVhc2UtaW4tb3V0ICk7XG5cblx0XHRcdC8vIGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3Zlci9AZm9jdXNcblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzXG5cdFx0XHQmOm5vdChbdmFsdWU9XCJcIl0pe1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cblx0XHQvKiAoMi4yKSBCb3V0b24gZGUgY29ubmV4aW9uICovXG5cdFx0JiA+IGlucHV0W3R5cGU9J3N1Ym1pdCdde1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAzcHggKTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDJlbTtcblxuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkIGRhcmtlbigkdGhlbWUtZmctcHJpbWFyeSwgMTUpO1xuXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGhlbWUtZmctcHJpbWFyeTtcblxuXHRcdFx0Y29sb3I6ICRkYXJrLWZnLXByaW1hcnk7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4xcyBlYXNlLWluLW91dCApO1xuXG5cdFx0XHQvLyBBbmltYXRpb24gZGUgQGhvdmVyXG5cdFx0XHQmOmhvdmVyLCAmLmhvdmVye1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHRoZW1lLWZnLXByaW1hcnksIDEwKTtcblx0XHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAycHggKTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgMnB4ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFuaW1hdGlvbiBkZSBjbGljIEBhY3RpdmVcblx0XHRcdFx0JjphY3RpdmV7XG5cdFx0XHRcdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDJlbTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgM3B4ICk7XG5cdFx0XHR9XG5cblx0XHR9XG5cblxuXG5cblxuXHRcdC8qICgzKSBNb3QgZGUgcGFzc2Ugb3VibGllICovXG5cdFx0JiA+ICNsb3N0LXBhc3N3b3Jke1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y29sb3I6ICM3Nzc7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3ZlclxuXHRcdFx0Jjpob3Zlcntcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdC8qICg0KSBHZXN0aW9uIGRlIGxhIGZlcm1ldHVyZSAqL1xuXHQmID4gI2xvZ2luLWNsb3Nle1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMmVtO1xuXHRcdFx0cmlnaHQ6IDJlbTtcblx0XHRcdG1pbi13aWR0aDogMmVtO1xuXHRcdFx0aGVpZ2h0OiAyZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2NvbnRhaW5lci9iYWNrQDU1NTU1NS5zdmcnKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMWVtO1xuXG5cdFx0Y29sb3I6ICM1NTU7XG5cdFx0cGFkZGluZy1yaWdodDogMmVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcblxuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxufVxuIiwKCQkiLyogWzFdIENPVUxFVVJTXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIENPVUxFVVJTIERVIFRIRU1FICRERUZBVUxUICovXG4kdGhlbWUtYmc6ICAgICAgICAgI2U4ZThlODtcbiR0aGVtZS1iZy1wcmltYXJ5OiAjZmZmZmZmO1xuJHRoZW1lLWZnOiAgICAgICAgICM1MTUxNTE7XG4kdGhlbWUtZmctcHJpbWFyeTogIzBlNmRiZjtcblxuLyogKDIpIENPVUxFVVJTIERFIFRIRU1FICREQVJLICovXG4kZGFyay1iZzogICAgICAgICAjMzEzNTQxO1xuJGRhcmstYmctcHJpbWFyeTogIzI5MjgyZTtcbiRkYXJrLWZnOiAgICAgICAgICM5MzkzOTM7XG4kZGFyay1mZy1wcmltYXJ5OiAjZmZmZmZmO1xuXG4kaGVhZGVyLWRhcms6ICAgICAjRjhGOEZBO1xuXG4vKiAoMykgQ291bGV1cnMgZHUgdGhlbWUgcG91ciBsYSB0aW1lbGluZSAqL1xuJHRpbWVsaW5lLWNvbG9yOiAjNzM4Mzk0O1xuJHRpbWVsaW5lLTA6ICMwZTZkYmY7XG4kdGltZWxpbmUtMTogI2U2NGUzZTtcbiR0aW1lbGluZS0yOiAjZDU0YjI4O1xuJHRpbWVsaW5lLTM6ICNiMTRiZTc7XG4kdGltZWxpbmUtNDogIzA1M2I1ZDtcblxuJHRpbWVsaW5lLWZiOiAjM2I1OTk4O1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdz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 */ \ No newline at end of file +/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibGF5b3V0LmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vbGF5b3V0LnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cbmJvZHl7XG5cblx0Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnO1xuXHRmb250LXNpemU6IDE1cHg7XG59XG5cblxuXG4jV1JBUFBFUntcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cblx0YmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWJnO1xuXG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0b3ZlcmZsb3cteTogYXV0bztcblxuXHR6LWluZGV4OiAxO1xuXG5cblx0LyogWzFdIEhlYWRlciBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdCYgPiAjSEVBREVSe1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBmaXhlZDtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogY2FsYyggI3skaGVhZGVyLWhlaWdodH0gLSAxcHggKTtcblxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBkYXJrZW4oJGhlYWRlci1kYXJrLCAxMCk7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWRhcms7XG5cblx0XHR6LWluZGV4OiAxMDA7XG5cblx0fVxuXG5cblx0LyogWzJdIFNpZGUtTWVudSBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdC8vIEdlc3Rpb24gZHUgbWVudVxuXHQmID4gI01FTlUtU0lERXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogZml4ZWQ7XG5cdFx0XHR0b3A6ICRoZWFkZXItaGVpZ2h0O1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblxuXHRcdGJveC1zaGFkb3c6IDJweCAxcHggM3B4ICNkZGQ7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXG5cdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4zcyApO1xuXG5cdFx0ei1pbmRleDogMTA7XG5cdH1cblxuXG5cdC8qIFszXSBDb250YWluZXIgZGUgbGEgcGFnZVxuXHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXHQmID4gI0NPTlRBSU5FUntcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogJGhlYWRlci1oZWlnaHQ7XG5cdFx0XHRsZWZ0OiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0d2lkdGg6IGNhbGMoIDEwMCUgLSAjeyRtZW51LXNpZGUtd2lkdGh9ICk7XG5cdFx0XHRtaW4taGVpZ2h0OiBjYWxjKCAxMDAlIC0gI3skaGVhZGVyLWhlaWdodH0gKTtcblx0XHQvLyAgbWFyZ2luOiAxZW07XG5cblx0XHQvLyBGbGV4IHByb3BlcnRpZXNcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cblx0XHRvdmVyZmxvdy14OiBub25lO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdH1cbn1cblxuXG5cblxuLyogWzRdIFBhZ2UgZGUgbG9naW5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4jTE9HSU57XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogLTEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXG5cdC8vIFF1YW5kIGxhIHBhZ2UgZGUgbG9naW4gZXN0IHZpc2libGVcblx0Ji5hY3RpdmV7XG5cdFx0bGVmdDogMDtcblx0fVxuXG5cdC8vIGZsZXggcHJvcGVydGllc1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRDdEN0Q5O1xuXG5cdEBpbmNsdWRlIHRyYW5zaXRpb24oIGxlZnQgLjNzIGVhc2UtaW4tb3V0ICk7XG5cblx0ei1pbmRleDogMTAxO1xuXG5cblxuXG5cdC8qICgxKSBMb2dvIGV0IG5vbSBkdSBzaXRlICovXG5cdCYgPiAjbG9naW4taWNvbntcblx0XHR3aWR0aDogMzVlbTtcblx0XHRoZWlnaHQ6IDEwZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2ljb252NC5wbmcnKSBjZW50ZXIgY2VudGVyIG5vLXJlcGVhdDtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMTAwJTtcblx0fVxuXG5cblx0LyogKDIpIEZvcm11bGFpcmUgZGUgY29ubmV4aW9uICovXG5cdCYgPiAjbG9naW4tZm9ybXtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXG5cdFx0LyogKDIuMSkgQ2hhbXBzIGRlIHRleHRlIChsb2dpbi9wYXNzd29yZCkgKi9cblx0XHQmID4gaW5wdXRbdHlwZT0ndGV4dCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdwYXNzd29yZCddLFxuXHRcdCYgPiBpbnB1dFt0eXBlPSdzdWJtaXQnXXtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRcdHdpZHRoOiAyMGVtO1xuXG5cdFx0XHRtYXJnaW46IDJlbSAwO1xuXHRcdFx0cGFkZGluZzogMWVtIDJlbTtcblxuXHRcdFx0Ly8gZmxleCBwcm9wZXJ0aWVzXG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0XHRcdGFsaWduLWl0ZW1zOiBtaWRkbGU7XG5cblxuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgI2FhYTtcblxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1kYXJrO1xuXG5cdFx0XHRjb2xvcjogIzQ0NDtcblx0XHRcdC8vIGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IC4wMmVtO1xuXG5cdFx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKCBib3JkZXIgLjJzIGVhc2UtaW4tb3V0ICk7XG5cblx0XHRcdC8vIGN1cnNvcjogZGVmYXVsdDtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3Zlci9AZm9jdXNcblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzXG5cdFx0XHQmOm5vdChbdmFsdWU9XCJcIl0pe1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cblx0XHQvKiAoMi4yKSBCb3V0b24gZGUgY29ubmV4aW9uICovXG5cdFx0JiA+IGlucHV0W3R5cGU9J3N1Ym1pdCdde1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAzcHggKTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDJlbTtcblxuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0Ym9yZGVyLXRvcDogM3B4IHNvbGlkIGRhcmtlbigkdGhlbWUtZmctcHJpbWFyeSwgMTUpO1xuXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdGhlbWUtZmctcHJpbWFyeTtcblxuXHRcdFx0Y29sb3I6ICRkYXJrLWZnLXByaW1hcnk7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0QGluY2x1ZGUgdHJhbnNpdGlvbiggYWxsIC4xcyBlYXNlLWluLW91dCApO1xuXG5cdFx0XHQvLyBBbmltYXRpb24gZGUgQGhvdmVyXG5cdFx0XHQmOmhvdmVyLCAmLmhvdmVye1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHRoZW1lLWZnLXByaW1hcnksIDEwKTtcblx0XHRcdFx0Ym9yZGVyLXRvcC13aWR0aDogMXB4O1xuXHRcdFx0XHRtYXJnaW4tdG9wOiBjYWxjKCAyZW0gLSAycHggKTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgMnB4ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFuaW1hdGlvbiBkZSBjbGljIEBhY3RpdmVcblx0XHRcdFx0JjphY3RpdmV7XG5cdFx0XHRcdGJvcmRlci10b3Atd2lkdGg6IDA7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDJlbTtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogY2FsYyggMmVtICsgM3B4ICk7XG5cdFx0XHR9XG5cblx0XHR9XG5cblxuXG5cblxuXHRcdC8qICgzKSBNb3QgZGUgcGFzc2Ugb3VibGllICovXG5cdFx0JiA+ICNsb3N0LXBhc3N3b3Jke1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Y29sb3I6ICM3Nzc7XG5cblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Ly8gQW5pbWF0aW9uIGRlIEBob3ZlclxuXHRcdFx0Jjpob3Zlcntcblx0XHRcdFx0Y29sb3I6ICR0aGVtZS1mZy1wcmltYXJ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0fVxuXG5cdC8qICg0KSBHZXN0aW9uIGRlIGxhIGZlcm1ldHVyZSAqL1xuXHQmID4gI2xvZ2luLWNsb3Nle1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMmVtO1xuXHRcdFx0cmlnaHQ6IDJlbTtcblx0XHRcdG1pbi13aWR0aDogMmVtO1xuXHRcdFx0aGVpZ2h0OiAyZW07XG5cblx0XHRiYWNrZ3JvdW5kOiB1cmwoJy9zcmMvc3RhdGljL2NvbnRhaW5lci9iYWNrQDU1NTU1NS5zdmcnKSByaWdodCBjZW50ZXIgbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogMWVtO1xuXG5cdFx0Y29sb3I6ICM1NTU7XG5cdFx0cGFkZGluZy1yaWdodDogMmVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDFweDtcblxuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxufVxuIiwKCQkiLyogWzFdIENPVUxFVVJTXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIENPVUxFVVJTIERVIFRIRU1FICRERUZBVUxUICovXG4kdGhlbWUtYmc6ICAgICAgICAgI2U4ZThlODtcbiR0aGVtZS1iZy1wcmltYXJ5OiAjZmZmZmZmO1xuJHRoZW1lLWZnOiAgICAgICAgICM1MTUxNTE7XG4kdGhlbWUtZmctcHJpbWFyeTogIzBlNmRiZjtcblxuLyogKDIpIENPVUxFVVJTIERFIFRIRU1FICREQVJLICovXG4kZGFyay1iZzogICAgICAgICAjMzEzNTQxO1xuJGRhcmstYmctcHJpbWFyeTogIzI5MjgyZTtcbiRkYXJrLWZnOiAgICAgICAgICM5MzkzOTM7XG4kZGFyay1mZy1wcmltYXJ5OiAjZmZmZmZmO1xuXG4kaGVhZGVyLWRhcms6ICAgICAjRjhGOEZBO1xuXG4vKiAoMykgQ291bGV1cnMgZHUgdGhlbWUgcG91ciBsYSB0aW1lbGluZSAqL1xuJHRpbWVsaW5lLWNvbG9yOiAjNzM4Mzk0O1xuJHRpbWVsaW5lLTA6ICMwZTZkYmY7XG4kdGltZWxpbmUtMTogI2U2NGUzZTtcbiR0aW1lbGluZS0yOiAjZDU0YjI4O1xuJHRpbWVsaW5lLTM6ICNiMTRiZTc7XG4kdGltZWxpbmUtNDogIzA1M2I1ZDtcblxuJHRpbWVsaW5lLWZiOiAjM2I1OTk4O1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdz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 */ \ No newline at end of file diff --git a/public_html/css/min/layout.css.map b/public_html/css/min/layout.css.map index f823cd8..07ae123 100644 --- a/public_html/css/min/layout.css.map +++ b/public_html/css/min/layout.css.map @@ -6,7 +6,7 @@ "../constants.scss" ], "sourcesContent": [ - "@import 'constants';\n\nbody{\n\n\tfont-family: 'Open Sans';\n\tfont-size: 15px;\n}\n\n\n\n#WRAPPER{\n\tdisplay: block;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\tbackground-color: $theme-bg;\n\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\n\tz-index: 1;\n\n\n\t/* [1] Header de la page\n\t==========================================*/\n\t& > #HEADER{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: calc( #{$header-height} - 1px );\n\n\t\tborder-bottom: 1px solid darken($header-dark, 10);\n\n\t\tbackground-color: $header-dark;\n\n\t\tz-index: 100;\n\n\t}\n\n\n\t/* [2] Side-Menu de la page\n\t==========================================*/\n\t// Gestion du menu\n\t& > #MENU-SIDE{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: $header-height;\n\t\t\tleft: 0;\n\t\t\twidth: $menu-side-width;\n\t\t\theight: calc( 100% - #{$header-height} );\n\n\t\tbox-shadow: 2px 1px 3px #ddd;\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( all .3s );\n\n\t\tz-index: 10;\n\t}\n\n\n\t/* [3] Container de la page\n\t==========================================*/\n\t& > #CONTAINER{\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tleft: $menu-side-width;\n\t\t\twidth: calc( 100% - #{$menu-side-width} );\n\t\t\tmin-height: calc( 100% - #{$header-height} );\n\t\t// margin: 1em;\n\n\t\t// Flex properties\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tflex-wrap: wrap;\n\n\t\toverflow-x: none;\n\t\toverflow-y: auto;\n\t}\n}\n\n\n\n\n/* [4] Page de login\n=========================================================*/\n#LOGIN{\n\tdisplay: flex;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: -100%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t// Quand la page de login est visible\n\t&.active{\n\t\tleft: 0;\n\t}\n\n\t// flex properties\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-around;\n\talign-items: center;\n\n\n\tbackground-color: #D7D7D9;\n\n\t@include transition( left .3s ease-in-out );\n\n\tz-index: 101;\n\n\n\n\n\t/* (1) Logo et nom du site */\n\t& > #login-icon{\n\t\twidth: 35em;\n\t\theight: 10em;\n\n\t\tbackground: url('/src/static/iconv3.svg') center center no-repeat;\n\t\tbackground-size: auto 100%;\n\t}\n\n\n\t/* (2) Formulaire de connexion */\n\t& > #login-form{\n\t\tdisplay: block;\n\n\n\t\t/* (2.1) Champs de texte (login/password) */\n\t\t& > input[type='text'],\n\t\t& > input[type='password'],\n\t\t& > input[type='submit']{\n\t\t\tdisplay: flex;\n\t\t\t\twidth: 20em;\n\n\t\t\tmargin: 2em 0;\n\t\t\tpadding: 1em 2em;\n\n\t\t\t// flex properties\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-around;\n\t\t\tflex-wrap: nowrap;\n\t\t\talign-items: middle;\n\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid #aaa;\n\n\t\t\tbackground-color: $header-dark;\n\n\t\t\tcolor: #444;\n\t\t\t// font-weight: bold;\n\t\t\tletter-spacing: .02em;\n\n\t\t\t@include transition( border .2s ease-in-out );\n\n\t\t\t// cursor: default;\n\n\t\t\t// Animation de @hover/@focus\n\t\t\t&:hover,\n\t\t\t&:focus\n\t\t\t&:not([value=\"\"]){\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t}\n\n\t\t}\n\n\n\t\t/* (2.2) Bouton de connexion */\n\t\t& > input[type='submit']{\n\t\t\twidth: 100%;\n\t\t\tmargin-top: calc( 2em - 3px );\n\t\t\tmargin-bottom: 2em;\n\n\t\t\tborder: 0;\n\t\t\tborder-top: 3px solid darken($theme-fg-primary, 15);\n\n\t\t\tbackground-color: $theme-fg-primary;\n\n\t\t\tcolor: $dark-fg-primary;\n\t\t\tfont-weight: bold;\n\t\t\ttext-align: left;\n\n\t\t\tcursor: pointer;\n\n\t\t\t@include transition( all .1s ease-in-out );\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover, &.hover{\n\t\t\t\tbackground-color: darken($theme-fg-primary, 10);\n\t\t\t\tborder-top-width: 1px;\n\t\t\t\tmargin-top: calc( 2em - 2px );\n\t\t\t\tmargin-bottom: calc( 2em + 2px );\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t\t&:active{\n\t\t\t\tborder-top-width: 0;\n\t\t\t\tmargin-top: 2em;\n\t\t\t\tmargin-bottom: calc( 2em + 3px );\n\t\t\t}\n\n\t\t}\n\n\n\n\n\n\t\t/* (3) Mot de passe oublie */\n\t\t& > #lost-password{\n\t\t\tposition: absolute;\n\t\t\tcolor: #777;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover{\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/* (4) Gestion de la fermeture */\n\t& > #login-close{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: 2em;\n\t\t\tright: 2em;\n\t\t\tmin-width: 2em;\n\t\t\theight: 2em;\n\n\t\tbackground: url('/src/static/container/back@555555.svg') right center no-repeat;\n\t\tbackground-size: 1em;\n\n\t\tcolor: #555;\n\t\tpadding-right: 2em;\n\t\tline-height: 2em;\n\t\tfont-weight: bold;\n\t\tletter-spacing: 1px;\n\n\t\tcursor: pointer;\n\t}\n}\n", + "@import 'constants';\n\nbody{\n\n\tfont-family: 'Open Sans';\n\tfont-size: 15px;\n}\n\n\n\n#WRAPPER{\n\tdisplay: block;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\tbackground-color: $theme-bg;\n\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\n\tz-index: 1;\n\n\n\t/* [1] Header de la page\n\t==========================================*/\n\t& > #HEADER{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\twidth: 100%;\n\t\t\theight: calc( #{$header-height} - 1px );\n\n\t\tborder-bottom: 1px solid darken($header-dark, 10);\n\n\t\tbackground-color: $header-dark;\n\n\t\tz-index: 100;\n\n\t}\n\n\n\t/* [2] Side-Menu de la page\n\t==========================================*/\n\t// Gestion du menu\n\t& > #MENU-SIDE{\n\t\tdisplay: block;\n\t\tposition: fixed;\n\t\t\ttop: $header-height;\n\t\t\tleft: 0;\n\t\t\twidth: $menu-side-width;\n\t\t\theight: calc( 100% - #{$header-height} );\n\n\t\tbox-shadow: 2px 1px 3px #ddd;\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( all .3s );\n\n\t\tz-index: 10;\n\t}\n\n\n\t/* [3] Container de la page\n\t==========================================*/\n\t& > #CONTAINER{\n\t\tdisplay: flex;\n\t\tposition: absolute;\n\t\t\ttop: $header-height;\n\t\t\tleft: $menu-side-width;\n\t\t\twidth: calc( 100% - #{$menu-side-width} );\n\t\t\tmin-height: calc( 100% - #{$header-height} );\n\t\t// margin: 1em;\n\n\t\t// Flex properties\n\t\tflex-direction: row;\n\t\tjustify-content: space-between;\n\t\tflex-wrap: wrap;\n\n\t\toverflow-x: none;\n\t\toverflow-y: auto;\n\t}\n}\n\n\n\n\n/* [4] Page de login\n=========================================================*/\n#LOGIN{\n\tdisplay: flex;\n\tposition: fixed;\n\t\ttop: 0;\n\t\tleft: -100%;\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t// Quand la page de login est visible\n\t&.active{\n\t\tleft: 0;\n\t}\n\n\t// flex properties\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-around;\n\talign-items: center;\n\n\n\tbackground-color: #D7D7D9;\n\n\t@include transition( left .3s ease-in-out );\n\n\tz-index: 101;\n\n\n\n\n\t/* (1) Logo et nom du site */\n\t& > #login-icon{\n\t\twidth: 35em;\n\t\theight: 10em;\n\n\t\tbackground: url('/src/static/iconv4.png') center center no-repeat;\n\t\tbackground-size: auto 100%;\n\t}\n\n\n\t/* (2) Formulaire de connexion */\n\t& > #login-form{\n\t\tdisplay: block;\n\n\n\t\t/* (2.1) Champs de texte (login/password) */\n\t\t& > input[type='text'],\n\t\t& > input[type='password'],\n\t\t& > input[type='submit']{\n\t\t\tdisplay: flex;\n\t\t\t\twidth: 20em;\n\n\t\t\tmargin: 2em 0;\n\t\t\tpadding: 1em 2em;\n\n\t\t\t// flex properties\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: space-around;\n\t\t\tflex-wrap: nowrap;\n\t\t\talign-items: middle;\n\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid #aaa;\n\n\t\t\tbackground-color: $header-dark;\n\n\t\t\tcolor: #444;\n\t\t\t// font-weight: bold;\n\t\t\tletter-spacing: .02em;\n\n\t\t\t@include transition( border .2s ease-in-out );\n\n\t\t\t// cursor: default;\n\n\t\t\t// Animation de @hover/@focus\n\t\t\t&:hover,\n\t\t\t&:focus\n\t\t\t&:not([value=\"\"]){\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t}\n\n\t\t}\n\n\n\t\t/* (2.2) Bouton de connexion */\n\t\t& > input[type='submit']{\n\t\t\twidth: 100%;\n\t\t\tmargin-top: calc( 2em - 3px );\n\t\t\tmargin-bottom: 2em;\n\n\t\t\tborder: 0;\n\t\t\tborder-top: 3px solid darken($theme-fg-primary, 15);\n\n\t\t\tbackground-color: $theme-fg-primary;\n\n\t\t\tcolor: $dark-fg-primary;\n\t\t\tfont-weight: bold;\n\t\t\ttext-align: left;\n\n\t\t\tcursor: pointer;\n\n\t\t\t@include transition( all .1s ease-in-out );\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover, &.hover{\n\t\t\t\tbackground-color: darken($theme-fg-primary, 10);\n\t\t\t\tborder-top-width: 1px;\n\t\t\t\tmargin-top: calc( 2em - 2px );\n\t\t\t\tmargin-bottom: calc( 2em + 2px );\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t\t&:active{\n\t\t\t\tborder-top-width: 0;\n\t\t\t\tmargin-top: 2em;\n\t\t\t\tmargin-bottom: calc( 2em + 3px );\n\t\t\t}\n\n\t\t}\n\n\n\n\n\n\t\t/* (3) Mot de passe oublie */\n\t\t& > #lost-password{\n\t\t\tposition: absolute;\n\t\t\tcolor: #777;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// Animation de @hover\n\t\t\t&:hover{\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/* (4) Gestion de la fermeture */\n\t& > #login-close{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: 2em;\n\t\t\tright: 2em;\n\t\t\tmin-width: 2em;\n\t\t\theight: 2em;\n\n\t\tbackground: url('/src/static/container/back@555555.svg') right center no-repeat;\n\t\tbackground-size: 1em;\n\n\t\tcolor: #555;\n\t\tpadding-right: 2em;\n\t\tline-height: 2em;\n\t\tfont-weight: bold;\n\t\tletter-spacing: 1px;\n\n\t\tcursor: pointer;\n\t}\n}\n", "/* [1] COULEURS\n=========================================================*/\n/* (1) COULEURS DU THEME $DEFAULT */\n$theme-bg: #e8e8e8;\n$theme-bg-primary: #ffffff;\n$theme-fg: #515151;\n$theme-fg-primary: #0e6dbf;\n\n/* (2) COULEURS DE THEME $DARK */\n$dark-bg: #313541;\n$dark-bg-primary: #29282e;\n$dark-fg: #939393;\n$dark-fg-primary: #ffffff;\n\n$header-dark: #F8F8FA;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #738394;\n$timeline-0: #0e6dbf;\n$timeline-1: #e64e3e;\n$timeline-2: #d54b28;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\n\n$timeline-fb: #3b5998;\n\n\n/* [2] DIMENSIONS\n=========================================================*/\n/* (1) Layout de base */\n$menu-side-width: 15em;\n$header-height: 4em;\n\n\n\n/* [3] Mixins\n=========================================================*/\n@mixin transform($value...) {\n\ttransform: $value;\n\t-moz-transform: $value;\n\t-o-transform: $value;\n\t-ms-transform: $value;\n\t-webkit-transform: $value;\n}\n\n\n@mixin transition($value...) {\n\t-webkit-transition: $value;\n\ttransition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n\t@return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n" ], "mappings": "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", diff --git a/public_html/src/static/iconv4.png b/public_html/src/static/iconv4.png new file mode 100644 index 0000000..b461850 Binary files /dev/null and b/public_html/src/static/iconv4.png differ diff --git a/public_html/test.php b/public_html/test.php new file mode 100644 index 0000000..066c47c --- /dev/null +++ b/public_html/test.php @@ -0,0 +1,55 @@ +fetch(1); + + var_dump( count($sub['relations']) ); + + foreach($sub['relations'] as $rel){ + if( $rel['idA'] == 1 ) + $Aname = $sub['subject']['name']; + else + $Aname = $cl->fetch((int)$rel['idA'])['name']; + + echo $Aname.'('.$rel['idA'].') + '.$cl->fetch((int)$rel['idB'])['name'].'('.$rel['idB'].') = '.$rel['type']."
"; + } + + }else{ + + /* [1] Remove contacts + =========================================================*/ + $sub = $sl->fetch(1); + + $cl->deleteAll( $sub['contacts'] ); + + $cl->flush(); // security + + /* [2] Reset subject + =========================================================*/ + + unset( $sub['contacts'] ); + unset( $sub['relations'] ); + $sub['subject']['surveys'] = []; + + $sl->delete(1); + $sl->insert(1, $sub); + + } + + $sl->close(); + $cl->close(); + + +?> diff --git a/public_html/view/data.php b/public_html/view/data.php index a3f42d9..2e9cd89 100644 --- a/public_html/view/data.php +++ b/public_html/view/data.php @@ -21,11 +21,12 @@ $pers = $request->answer();
-

Exporter les données au format .csv

+
Exporter les données au format .csv
+

- Choix des sujets -
-
+ Choix des sujets
+
+


@@ -33,10 +34,10 @@ $pers = $request->answer();
-


Types de données -

-

-

+

diff --git a/public_html/view/js/data.js b/public_html/view/js/data.js index 5113678..29e51de 100644 --- a/public_html/view/js/data.js +++ b/public_html/view/js/data.js @@ -51,16 +51,10 @@ $('#export-form #export_export-all').addEventListener('click', function(e){ /* (4) On construit la requête */ var request = { path: 'download/multiple', - phone: deflated.phone == '1', // VRAI si on veut les données téléphoniques - facebook: deflated.facebook == '1', // VRAI si on veut les données facebook - survey: deflated.survey == '1', // VRAI si on veut les données ResTIC + subjects: subjects, all: deflated.group == 'all' // VRAI si on veut TOUS les sujets }; - // On ajoute les sujets s'il y en a - if( deflated.group != 'all' && subjects.length > 0 ) - request.subjects = subjects; - /* (5) On lance la requête */ api.send(request, function(res){ diff --git a/public_html/view/js/input.js b/public_html/view/js/input.js index 8d619fd..012f0fb 100644 --- a/public_html/view/js/input.js +++ b/public_html/view/js/input.js @@ -36,6 +36,8 @@ var tmpSubjectSearchListener = function(e){ /* (2) On effectue la requête */ api.send(request, function(response){ + console.warn(response); + // Si erreur if( response.ModuleError != 0 ){ Notification.error('Erreur', 'La recherche a échoué.') @@ -659,10 +661,11 @@ var pDynamicUpdate = function(target){ // Supprime les contacts déja dans les FICHES pMiniManager.sync(); - /* (7) On récupère tous les amis du sujet */ + /* (7) On récupère tous les "amis" du sujet */ if( target === true ){ api.send({ path: 'subject/getFriends', subject_id: pSubjectManager.subject_id.value }, function(response){ + console.warn('xx', response); // Si erreur, on quitte if( response.ModuleError != 0 ){ console.groupEnd(); diff --git a/public_html/view/js/min/data.js b/public_html/view/js/min/data.js new file mode 100644 index 0000000..4fcd952 --- /dev/null +++ b/public_html/view/js/min/data.js @@ -0,0 +1,5 @@ +var exportSubjectList=$("#export_subject-list"),exportSubjectAdd=$("#export_add-subject"),exportDeflater=new FormDeflater(document.getElementById("export-form"),["input"],["data-name"]);exportSubjectAdd.addEventListener("click",function(b){b=document.createElement("input");b.type="number";b.dataset.name="subjects";b.placeholder="Sujet";b.style="width: 5em; display: block;";exportSubjectList.appendChild(b)},!1); +$("#export-form #export_export-all").addEventListener("click",function(b){var a=(new FormDeflater(exportSubjectList,["input"],["data-name"])).deflate().subjects;b=[];a instanceof Array||(a=[a]);for(var c=0;c"),c.push("
SUJET
"),c.push("
"),c.push("
"+ +var tmpSubjectSearchListener=function(a){api.send({path:"subject/search",name:sField.value},function(a){console.warn(a);if(0!=a.ModuleError)return Notification.error("Erreur","La recherche a \u00e9chou\u00e9."),!1;console.log(a);var c=[],g;for(g in a.results)c.push("
  • "),c.push("
    SUJET
    "),c.push("
    "),c.push("
    "+ a.results[g].name+"
    "),c.push("
    "+a.results[g].creation+"
    "),c.push("
    "),c.push("
    "),c.push("
    "),c.push("
    "),c.push("
  • ");sList.innerHTML= c.join("")})};sSubmit.addEventListener("click",tmpSubjectSearchListener,!1);sField.addEventListener("keypress",function(a){13===a.keyCode&&tmpSubjectSearchListener(a)},!1);tmpSubjectSearchListener(); var pAlready=0,pLoaded=[0,0,0,0,0],phoneRoutine=function(){!Math.min.apply(Math,pLoaded)|pAlready||(pAlready=1,console.groupEnd(),console.group("[phone] Initialization"),pSubjectManager=new inputPhoneSubject($('[data-sublink="phone"] article.subject-panel [data-name="subject_id"]'),$('[data-sublink="phone"] article.subject-panel [data-name="submit"]')),pSubjectManager.attach(pDynamicUpdate),pContactManager=new inputPhoneContact($('[data-sublink="phone"] article.contact-panel'),$('[data-sublink="phone"] #p_nav-contact')), @@ -21,10 +21,10 @@ pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();if(!pSubjectManag (parseInt(c)+1)+" est incompl\u00e8te et/ou incorrecte"),!1;c={path:"input/facebook",subject:lsi["export"]("f_subject")[0],contacts:lsi["export"]("f_contacts"),mini:lsi["export"]("f_mini-fiches"),fiches:lsi["export"]("f_fiches"),matrice:lsi["export"]("f_matrice")[0]};api.send(c,function(a){console.log(a);if(0!=a.ModuleError)return Notification.error("ERREUR",a.ModuleError),!1;Notification.success("OK","L'identifiant du sujet est "+a.subject_id+" ! Tout s'est bien d\u00e9roul\u00e9.", 1E4);console.log(a)},!1)},!1),console.groupEnd())};include("/js/includes/input-facebook-subject.js",function(){fLoaded[0]=1;facebookRoutine()});include("/js/includes/input-facebook-contact.js",function(){fLoaded[1]=1;facebookRoutine()});include("/js/includes/input-facebook-mini.js",function(){fLoaded[2]=1;facebookRoutine()});include("/js/includes/input-facebook-fiche.js",function(){fLoaded[3]=1;facebookRoutine()});include("/js/includes/input-facebook-matrice.js",function(){fLoaded[4]=1;facebookRoutine()}); var pDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("p_nav-mini"==a.parentNode.id||"p_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"p_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.groupEnd();console.groupEnd();console.group("[phone] Dynamic Update");pMiniManager.fieldsToStorage();pFicheManager.fieldsToStorage();pContactManager.fieldsToStorage();pMatriceManager.fieldsToStorage();pFicheManager.sync(); -pMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:pSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return console.groupEnd(),!1;lsi["import"]("p_friends",a.subjects);pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();pContactManager.storageToFields();pMiniManager.updateNavBar();pFicheManager.updateNavBar()}):(pMiniManager.storageToFields(),pFicheManager.storageToFields(),pMatriceManager.storageToFields(),pMiniManager.updateNavBar(), -pFicheManager.updateNavBar(),(c||b)&&pContactManager.storageToFields());console.groupEnd()},fDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.groupEnd();console.groupEnd();console.group("[facebook] Dynamic Update");fMiniManager.fieldsToStorage();fFicheManager.fieldsToStorage(); -fContactManager.fieldsToStorage();fMatriceManager.fieldsToStorage();fFicheManager.sync();fMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:fSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return console.groupEnd(),!1;lsi["import"]("f_friends",a.subjects);fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields();fContactManager.storageToFields()}):(fMiniManager.storageToFields(),fFicheManager.storageToFields(),fMatriceManager.storageToFields(), -(c||b)&&fContactManager.storageToFields());console.groupEnd()};function testContactsPhone(){for(var a=0;45>a;a++)0==a%20?lsi.set("p_contacts",a,{uid:a,username:"contact-x"}):lsi.set("p_contacts",a,{uid:a,username:"contact-"+a})} +pMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:pSubjectManager.subject_id.value},function(a){console.warn("xx",a);if(0!=a.ModuleError)return console.groupEnd(),!1;lsi["import"]("p_friends",a.subjects);pMiniManager.storageToFields();pFicheManager.storageToFields();pMatriceManager.storageToFields();pContactManager.storageToFields();pMiniManager.updateNavBar();pFicheManager.updateNavBar()}):(pMiniManager.storageToFields(),pFicheManager.storageToFields(),pMatriceManager.storageToFields(), +pMiniManager.updateNavBar(),pFicheManager.updateNavBar(),(c||b)&&pContactManager.storageToFields());console.groupEnd()},fDynamicUpdate=function(a){var b=a instanceof Element,c=b&&"INPUT"==a.tagName&&"submit"==a.type,g=b&&"SPAN"==a.tagName&&("f_nav-mini"==a.parentNode.id||"f_nav-fiche"==a.parentNode.id),b=b&&"SPAN"==a.tagName&&"f_nav-contact"==a.parentNode.id;if(!c&&!g&&!b&&!0!==a)return!1;console.groupEnd();console.groupEnd();console.group("[facebook] Dynamic Update");fMiniManager.fieldsToStorage(); +fFicheManager.fieldsToStorage();fContactManager.fieldsToStorage();fMatriceManager.fieldsToStorage();fFicheManager.sync();fMiniManager.sync();!0===a?api.send({path:"subject/getFriends",subject_id:fSubjectManager.subject_id.value},function(a){if(0!=a.ModuleError)return console.groupEnd(),!1;lsi["import"]("f_friends",a.subjects);fMiniManager.storageToFields();fFicheManager.storageToFields();fMatriceManager.storageToFields();fContactManager.storageToFields()}):(fMiniManager.storageToFields(),fFicheManager.storageToFields(), +fMatriceManager.storageToFields(),(c||b)&&fContactManager.storageToFields());console.groupEnd()};function testContactsPhone(){for(var a=0;45>a;a++)0==a%20?lsi.set("p_contacts",a,{uid:a,username:"contact-x"}):lsi.set("p_contacts",a,{uid:a,username:"contact-"+a})} function testRoutinePhone(a){var b=lsi["export"]("p_contacts"),c=lsi["export"]("p_mini-fiches"),g=lsi["export"]("p_fiches"),d=0;if(null!=a&&a)for(var f in c)isNaN(f)||(a="",null!=b[f]&&(a=b[f].username),c=$('#p_nav-mini [data-n="'+f+'"]'),c.click(),$("#unknown_min_p_"+f).checked=0==a.length,0==a.length?($("#sexeI_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value=d%19,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value= 0,$("#reltype9_mini_p_"+f).checked=!0):(a=["H","F"][Math.floor(d%2)],$("#sexe"+a+"_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="age"]').value=d%19,$('input[data-name="uid"][value="'+f+'"] ~ h5 select[data-name="studies"]').value=1+d%6,a=d%10,9==a?($("#reltype10_mini_p_"+f).checked=!0,$('input[data-name="uid"][value="'+f+'"] ~ h5 input[data-name="reltypeSpecial"]').value="autre"):$("#reltype"+a+"_mini_p_"+f).checked=!0,d++));for(var e in g)isNaN(e)||(c=$('#p_nav-fiche [data-n="'+ e+'"]'),c.click(),a=["H","F","I"][Math.floor(d%3)],$("#sexe"+a+"_p_"+e).checked=!0,$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="age"]').value=d%19,b="10 21 22 23 31 32 36 41 46 47 48 51 54 55 56 61 66 69 71 72 73 74 75 76 81 82".split(" "),b=b[d%b.length],$('article.fiche-relation > input[data-name="uid"][value="'+e+'"] ~ h5 select[data-name="job"]').value=b,b=(d%12).toString(),1==b.length&&(b="0"+b),$('article.fiche-relation > input[data-name="uid"][value="'+