Compare commits

..

No commits in common. "master" and "feature/charts-structure" have entirely different histories.

633 changed files with 98147 additions and 19560 deletions

8
.gitignore vendored Executable file → Normal file
View File

@ -1,11 +1,3 @@
.ftpconfig
sftp-config.json
phpunit/coverage/
/public_html/tmp/*
<<<<<<< HEAD
/build/lightdb/storage/*
/config/server.json
=======
/build/lightdb/storage/*/data
**.swp
>>>>>>> 255af4d6b03408ab9f840db1fea74a35b7bc28c4

View File

@ -1,3 +1,8 @@
RewriteEngine on
# Gestion des pages d'erreur personnalisées
ErrorDocument 403 /index.php
RewriteRule ^(.*)$ public_html/$1 [QSA,L]
# Redirection vers index.php (Router)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

227
api/client.php Normal file
View File

@ -0,0 +1,227 @@
<?php
namespace api;
use \manager\ResourceDispatcher;
use \manager\ManagerError;
/* CLASSE PERMETANT L'UTILISATION DU manifest.json POUR UTILISER DES APIS DIVERSES
*
* @return nomRetour<typeRetour> Description du retour
*
*/
class client{
// Fichier de configuration par defaut
private $config_path = 'f/json/manifest/api';
public $error;
// liste des methodes
public static $METHODS = array(
'POST' => array( CURLOPT_POST, true ),
'GET' => array( CURLOPT_HTTPGET, true ),
'PUT' => array( CURLOPT_CUSTOMREQUEST, 'PUT' ),
'DELETE' => array( CURLOPT_CUSTOMREQUEST, 'DELETE' )
);
/*************/
/* ATTRIBUTS */
/*************/
private $manifest = null; // Contiendra le tableau correspondant au JSON
private $requests = array(); // Contiendra la liste des requetes de l'api et leurs parametres
private $name;
private $description;
private $version;
/* CONSTRUCTEUR DU CLIENT DE L'API
*
* @config<String> Chemin du fichier de configuration de l'api
*
*/
public function __construct($config=null){
/* [0] Gestion du fichier de config si donne en param
=========================================================*/
if( $config !== null ) $this->config_path = $config;
/* [1] On recupere le contenu du fichier de config
=========================================================*/
$manifest = json_decode( ResourceDispatcher::getResource($this->config_path), true );
// Si erreur de parsage ou de fichier, on retourne une erreur
if( $manifest === null ){
$this->error = ManagerError::ParsingFailed;
return;
}
/* [2] On repartie et classe les donnees
=========================================================*/
/* (1) Informations generales */
$name = $manifest['name'];
$description = $manifest['description'];
$version = $manifest['version'];
/* (2) Liste des requetes */
$this->requests = $manifest['requests'];
}
/* ENVOI ET CONSTRUCTION D'UNE REQUETE
*
* @request_name<String> Nom de la requete en question
* @parameters<Array> Liste des parametres de la requete
*
* @return response<Array> Reponse HTTP au format norme ou FAUX si une erreur occure
*
*/
public function send($request_name, $parameters=array()){
/* [1] On construit la requete avec les parametres
=========================================================*/
$build = $this->build($request_name, $parameters);
// Si la construction a echoue, on retourne une erreur
if( $build === false ) return false;
/* [2] Header et pre-data de la requete
=========================================================*/
/* (1) On definit l'URL */
$curl = curl_init($build['url']);
// permet de recupere le resultat au lieu de l'afficher
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
/* (2) On definit la methode */
$method_arguments = self::$METHODS[ $build['method'] ];
curl_setopt($curl, $method_arguments[0], $method_arguments[1]);
/* (3) On definit les headers */
$headers = array();
// On construit le header au bon format : 'name: value'
foreach($build['headers'] as $name=>$value)
array_push($headers, $name.': '.$value);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
/* (4) On definit les donnees POST si on est pas en get */
if( $build['method'] != 'GET' ){
$postdata = '';
// On formatte les donnees au format 'key=value&key=value'
foreach($build['postdata'] as $key=>$value)
$postdata .= $key.'='.$value.'&';
rtrim($postdata); // on supprime le '&' a la fin s'il y a
// On envoie les donnees
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
}
/* [4] Execution de la requete et recup de la response
=========================================================*/
$response = curl_exec($curl);
curl_close($curl);
/* [5] On retourne la reponse
=========================================================*/
return $response;
}
/* CONSTRUCTION D'UNE REQUETE
*
* @request_name<String> Nom de la requete
* @parameters<Array> Liste des parametres de la requete
*
* @return filledRequest<Array> Renvoie la requete avec les bons parametres
*
*/
private function build($request_name, $parameters=array()){
/* [0] Gestion des INPUTS
=========================================================*/
// On retourne une erreur si la requete n'existe pas
if( !isset($this->requests[$request_name]) ) return false;
// On enregistre une copie de la requete
$request = $this->requests[$request_name];
/* [1] Gestion de la methode
=========================================================*/
// Si la methode n'est pas prise en compte, on retourne une erreur
if( !isset( self::$METHODS[$request['method']] ) ) return false;
/* [2] Remplacement des parametres (valeurs globales)
=========================================================*/
/* (1) Remplacement dans l'URL */
$request['url'] = $this->fillParameters($request['url'], $parameters);
/* (2) Remplacement dans les headers */
foreach($request['headers'] as $name=>$value)
$request['headers'][$name] = $this->fillParameters($value, $parameters);
/* (2) Remplacement dans les postdata */
foreach($request['postdata'] as $name=>$value)
$request['postdata'][$name] = $this->fillParameters($value, $parameters);
/* [3] Retour de la requete construite
=========================================================*/
return $request;
}
/* REMPLACE LES PARAMETRES DANS UNE CHAINE
*
* @before<String> Chaine a etudier et dans laquelle remplacer les parametres
* @parameters<Array> Liste des parametres a remplacer (prefixes d'un '@')
*
* @return after<String> Chaine contenant les parametres de la liste @parameters
*
*/
private function fillParameters($before, $parameters){
// On initialise la valeur de retour
$after = $before;
/* [1] On remplace les parametres prefixes par '@'
=========================================================*/
foreach($parameters as $name=>$value){
$position = strpos($after, $name);
// Si on a trouve, on remplace le nom de variable par la valeur
if( $position !== false )
$after = substr($after, 0, $position) . $value . substr($after, $position+strlen($name) );
}
/* [2] On retourne la nouvelle chaine
=========================================================*/
return $after;
}
}
?>

39
api/manifest.default.json Normal file
View File

@ -0,0 +1,39 @@
{
"name": "@api_name",
"version": "@api_version_number",
"description": "@api_description",
"requests": {
"@request_name":{
"url": "@request_request_url",
"headers": {
"@header_name_1": "@header_value_1",
"@header_name_2": "@header_value_2",
},
"method": "@request_http_method",
"description": "@request_description",
"input": {
"@input_variable1_name" : "@input_default1_value",
"@input_variable2_name" : "@input_default2_value",
"@input_variable..._name": "@input_default..._value",
"@input_variableA_name" : "<@input_variableA_type>",
"@input_variableB_name" : "<@input_variableB_type>",
"@input_variable..._name": "<@input_variable..._type>",
},
"output": {
"@output_variable1_name" : "<@output_variable1_type>",
"@output_variable2_name" : "<@output_variable2_type>",
"@output_variable..._name": "<@output_variable..._type>",
}
}
}
}

36
api/manifest.json Normal file
View File

@ -0,0 +1,36 @@
{
"name": "socioview_api",
"version": "0.1",
"description": "API de la plateforme d'acquisition et de visualisation de donnees dans le cadre d'etudes relationnelles en sociologie",
"requests": {
"parse-call-log": {
"url": "socioview/api/",
"method": "POST",
"headers": { "Authorization": "Digest @token" },
"postdata": {
"path": "call_log/unserialize",
"data": "[@xmlstring]"
},
"description": "Renvoie a partir du contenu d'un fichier de journal d'appel XML un objet classant les relations SMS/MMS par nombre de messages recus et emis, et de meme pour les appels classes par nombre d'appels."
},
"generate-network-chart-data": {
"url": "socioview/api/",
"method": "POST",
"headers": { "Authorization": "Digest @token" },
"postdata": {
"path": "charts/network_data"
},
"description": "Renvoie un jeu de donnees pour un graphique de type network"
}
}
}

View File

@ -1,24 +1,19 @@
<?php define('__BUILD__', dirname(__FILE__) );
require_once __ROOT__.'/autoloader.php';
<?php define('__ROOT__', dirname(__FILE__) );
require_once __ROOT__.'/manager/autoloader.php';
use \api\core\ModuleRequest;
use \manager\ModuleRequest;
use \manager\ResourceDispatcher;
use \manager\sessionManager;
use \manager\ManagerError;
use \database\core\Repo;
use \database\core\DatabaseDriver;
use \lightdb\core\lightdb;
use \manager\Repo;
use \manager\Database;
use \manager\lightdb;
use \api\client;
debug();
/* PARSAGE DE JOURNAUX D'APPEL
*
*
@ -26,9 +21,9 @@
function parseCallLog(){
/* [2] On cree la requete
=========================================================*/
$request = new ModuleRequest('call_log/unserialize', [
$request = new ModuleRequest('call_log/unserialize', array(
'phone_number' => '01 02 03 04 05'
]);
));
$answer = $request->dispatch(); // on l'execute
/* [3] Si erreur
@ -56,20 +51,20 @@
/* [1] Test du client de l'API generique
=========================================================*/
// $api = new client();
//
// $response = $api->send('generate-network-chart-data', [
// $response = $api->send('generate-network-chart-data', array(
// '@token'=> '52945efbed43b50c12413f2f0e9519bfd9e98ce8'
// ]);
//
// ));
// var_dump($response);
/* [2] Gestion du getter dynamique des Repos
=========================================================*/
// var_dump( \database\repo\user::getById(1) );
// var_dump( \database\repo\user::getByLogin('xdrm') );
// var_dump( \database\repo\subject::getById(69) );
// var_dump( \database\repo\relation::getById(638, 640, 30) );
// var_dump( \manager\repo\user::getById(1) );
// var_dump( \manager\repo\user::getByLogin('xdrm') );
// var_dump( \manager\repo\subject::getById(69) );
// var_dump( \manager\repo\relation::getById(638, 640, 30) );
@ -85,42 +80,41 @@
//
// if( isset($_FILES) ){
//
// $request = new ModuleRequest('upload/local_data',[] );
// $request = new ModuleRequest('upload/call_log', array('phone_number'=>'01 02 03 04 05') );
// $response = $request->dispatch();
// var_dump( ManagerError::explicit($response->error) );
//
// }
// $rq = new ModuleRequest('download/chart', ['subjects'=>[1], 'phone'=>true]);
// $rs = $rq->dispatch();
// var_dump($rs);
/* [4] Test download via AJAX
=========================================================*/
// $req = new ModuleRequest('subject/search', [ 'name' => 'a' ]);
//
// $res = $req->dispatch();
//
// if( $res->error != ManagerError::Success )
// var_dump( ManagerError::explicit($res->error) );
//
// var_dump($res);
$db = new lightdb('phone_db', __ROOT__.'/src/dynamic/');
var_dump( array_keys($db->index()));
$db->close();
// $db = new lightdb('phone_db');
// $db->delete(284);
// $db->close();
$db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/');
var_dump( array_keys($db->index()));
$db->close();
$req = new ModuleRequest('chart/timeofday', array( 'subject' => 273 ));
$res = $req->dispatch();
if( $res->error != ManagerError::Success )
var_dump( ManagerError::explicit($res->error) );
var_dump($res);
// $start = microtime(true);
// $f = new SplFileObject('compress.zlib://'.__BUILD__.'/tmp/test1.gz', 'w');
// $f = new SplFileObject('compress.zlib://'.__ROOT__.'/tmp/test1.gz', 'w');
// $f->fwrite('SOME TEXT');
// $f=null;
// var_dump('writing time : '.(microtime(true)-$start));
//
//
// $start = microtime(true);
// $f2 = new SplFileObject('compress.zlib://'.__BUILD__.'/tmp/test1.gz', 'r');
// $f2 = new SplFileObject('compress.zlib://'.__ROOT__.'/tmp/test1.gz', 'r');
// $read = $f2->fgets();
// $f2=null;
// var_dump('reading time : '.(microtime(true)-$start));
@ -132,20 +126,20 @@
/* [4] Analyse des performances de `lightdb`
=========================================================*/
// $start = microtime(true);
// $db = new lightdb('test1', __BUILD__.'/tmp/');
// $db = new lightdb('test1', __ROOT__.'/tmp/');
//
// /* (0) Création des objets à insérer */
// $object_10 = [];
// $object_10 = array();
// for( $i = 0 ; $i < 10 ; $i++ )
// $object_10["key-$i-"] = "value-$i-";
// $o10len = strlen( json_encode($object_10) );
//
// $object_100 = [];
// $object_100 = array();
// for( $i = 0 ; $i < 100 ; $i++ )
// $object_100["key-$i-"] = "value-$i-";
// $o100len = strlen( json_encode($object_100) );
//
// $object_1000 = [];
// $object_1000 = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// $object_1000["key-$i-"] = "value-$i-";
// $o1000len = strlen( json_encode($object_1000) );
@ -157,7 +151,7 @@
// var_dump("Inserting 1000* object_10($o10len)");
// $start = microtime(true);
//
// $data = [];
// $data = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// // $db->insert("object-10-$i", $object_10);
// $data["object-10-$i"] = $object_10;
@ -172,7 +166,7 @@
// $start = microtime(true);
//
//
// $data = [];
// $data = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// // $db->insert("object-100-$i", $object_100);
// $data["object-100-$i"] = $object_100;
@ -186,7 +180,7 @@
// var_dump("Inserting 1000* object_1000($o1000len)");
// $start = microtime(true);
//
// $data = [];
// $data = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// // $db->insert("object-1000-$i", $object_1000);
// $data["object-1000-$i"] = $object_1000;
@ -232,7 +226,7 @@
// {1} Suppression d'objects de taille 10 //
// var_dump("Deleting 10* object_10($o10len)");
//
// $keys = [];
// $keys = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// array_push($keys, "object-10-$i");
//
@ -245,7 +239,7 @@
// // {2} Suppression d'objects de taille 100 //
// var_dump("Deleting 1000* object_100($o100len)");
//
// $keys = [];
// $keys = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// array_push($keys, "object-100-$i");
//
@ -258,7 +252,7 @@
// // {3} Suppression d'objects de taille 1000 //
// var_dump("Deleting 1000* object_1000($o1000len)");
// $keys = [];
// $keys = array();
// for( $i = 0 ; $i < 1000 ; $i++ )
// array_push($keys, "object-1000-$i");
//
@ -269,7 +263,4 @@
//
// $db->close();
?>

View File

@ -1,17 +0,0 @@
<?php
/**************************
* Builder *
* 05-11-16 *
***************************
* Designed & Developed by *
* xdrm-brackets *
***************************
* https://xdrm.io/ *
**************************/
class Builder{
}

View File

@ -1,146 +0,0 @@
<?php
namespace api\core;
class Checker{
/* VERIFICATIONS DES TYPES UTILES GENERIQUES
*
* @type<String> Type que l'on veut verifier
* @value<mixed*> Valeur a verifier
*
* @return match<Boolean> Retourne si oui ou non la valeur @value est du bon type @type
*
*/
public static function run($type, $value){
$checker = true;
/* [0] On verifie que $value n'est pas nul
=========================================================*/
if( is_null($value) ) return false;
/* [1] Si de type VARCHAR(min, max, flags)
=========================================================*/
if( preg_match('/^varchar\((\d+), ?(\d+)((?:, ?\w+)+)?\)$/', $type, $match) ){
// On recupere la taille min
$min = (int) $match[1];
// On recupere la taille max
$max = (int) $match[2];
// On recupere le sous-type si défini
$flags = isset($match[3]) ? explode(',', substr($match[3], 1)) : null;
// On effectue la verification de taille
$lenCheck = $checker && is_string($value) && strlen($value) <= $max && strlen($value) >= $min;
// On vérifie les FLAGS s'il est donné
if( is_array($flags) )
foreach( $flags as $flag )
$lenCheck = $lenCheck && self::run($flag, $value);
return $lenCheck;
}
/* [2] Si de type ARRAY(type_elements)
=========================================================*/
if( preg_match('/^array<(.+)>$/', $type, $match) ){
// Si c'est pas un tableau on retourne une erreur
if( !is_array($value) )
return false;
$elements_type = $match[1];
// On verifie le type pour chaque element
foreach($value as $element)
// Si erreur dans au moins 1 element, on retourne que c'est incorrect
if( !self::run($elements_type, ($element) ) )
return false;
// Si aucune erreur, on retourne que tout est bon
return true;
}
/* [n] Sinon, tous les autres types definis
=========================================================*/
switch($type){
// Quoi que ce soit
case 'mixed':
return $checker && !is_null($value);
break;
// Entier positif (id dans BDD)
case 'id':
return $checker && is_numeric($value) && $value <= 2147483647 && $value >= 0;
break;
// Code RFID
case 'rfid':
return $checker && is_string($value) && preg_match('/^[\dA-F]{2}(\-[\dA-F]{2}){3,5}$/i', $value);
break;
// String quelconque (peut etre vide)
case 'text':
return $checker && is_string($value);
// Adresse mail (255 caracteres max)
case 'mail':
return $checker && is_string($value) && strlen($value) <= 50 && preg_match('/^[\w\.-]+@[\w\.-]+\.[a-z]{2,4}$/i', $value);
break;
// Hash sha1/md5
case 'hash':
return $checker && is_string($value) && preg_match('/^[\da-f]+$/i', $value) && (strlen($value) == 40 || strlen($value) == 64);
break;
case 'alphanumeric':
return $checker && is_string($value) && preg_match('/^[\w\.-]+$/ui', $value);
break;
case 'letters':
return $checker && is_string($value) && preg_match('/^[a-z -]+$/i', $value);
break;
case 'status':
return $checker && is_numeric($value) && floor($value) == $value && $value >= 0 && $value <= 100;
break;
// Tableau non vide
case 'array':
return $checker && is_array($value) && count($value) > 0;
break;
// Boolean
case 'boolean':
return $checker && is_bool($value);
break;
// Objet non vide
case 'object':
return $checker && is_object($value) && count((array) $value) > 0;
break;
// Chaine JSON (on vérifie via le parser)
case 'json':
return $checker && is_string($value) && json_decode($value, true) !== NULL;
break;
default:
return false;
break;
}
return $checker;
}
}
?>

View File

@ -1,506 +0,0 @@
<?php
namespace api\module;
use \database\core\DatabaseDriver;
use \manager\sessionManager;
use \api\core\ModuleRequest;
use \manager\ManagerError;
use \database\core\Repo;
use \lightdb\core\lightdb;
class download{
/* CONSTRUIT UN CONTENU CSV A PARTIR DES DONNEES @DATA ET DU DICTIONNAIRE @DICT
*
* @data<Array> Tableau contenant les valeurs
* @dict<Array> Tableau contenant le dictionnaire des valeurs
* @displayColumns<Boolean> VRAI s'il faut afficher les colonnes
*
* @return csvContent<String> Retourne le contenu CSV associé
*
*/
private static function parseCSV($data, $dict, $displayColumns=true){
$output = ''; // Contiendra le résultat
$dictKeys = array_keys($dict); // Contient les clés de @dict
/* [0] On récupère toutes les colonnes
=========================================================*/
$columns = []; // Contiendra les colonnes
/* (1) Pour chaque set de @data */
foreach($data as $dataset){
$keys = [];
/* (2) Pour chaque champ de chaque set de @data, on ajoute les clés */
foreach($dataset as $key=>$value){
// {1} Si c'est un tableau -> on ajoute les sous-clés //
if( is_array($value) )
foreach($value as $subIndex=>$subValue)
array_push( $keys, "${key}_$subIndex" );
// {2} Si c'est une valeur simple -> on ajoute la clé //
else
array_push( $keys, $key );
}
/* (3) On ajoute à chaque fois les clés du set à la liste des colonnes */
$columns = array_unique( array_merge( $columns, $keys ) );
}
/* [1] On ajoute les colonnes à la sortie
=========================================================*/
if( $displayColumns )
foreach($columns as $i=>$column)
$output .= ($i < count($columns)-1) ? "\"$column\";" : "\"$column\"\r\n";
/* [2] On récupère les valeurs et on les ajoute à la sortie
=========================================================*/
/* (1) Pour chaque set de @data */
foreach($data as $dataset){
/* (2) Pour chaque colonne */
foreach($columns as $c=>$column){
/* (3) On décompose la colonne (ne change que si elle l'est) */
$col = explode('_', $column);
$composed = true;
// Si il n'existe pas une 2me partie numérique, on annule la décomposition
if( !isset($col[1]) || !is_numeric($col[1]) ){
$col = [ $column ];
$composed = false;
}
/* (4) Si la colonne existe dans le set actuel */
if( isset($dataset[$col[0]]) ){
/* (5) Si c'est une valeur composée, on récupère la valeur */
if( $composed && isset($dataset[$col[0]][$col[1]]) )
// {1} Si valeur dans le dictionnaire, on fait modulo le nombre de choix possibles //
if( isset($dict[$col[0]]) )
$output .= "\"".( $dataset[$col[0]][$col[1]] % count($dict[$col[0]]) )."\"";
// {2} Si pas dans le dictionnaire, on laisse la valeur //
else
$output .= "\"".$dataset[$col[0]][$col[1]]."\"";
/* (6) Si la valeur n'est pas composée, on récupère la valeur */
elseif( !$composed && !is_array($dataset[$col[0]]) )
$output .= "\"".$dataset[$col[0]]."\"";
}
// On ajoute une virgule sauf à la dernière valeur
$output .= ($c < count($columns)-1) ? ";" : "";
}
$output .= "\r\n";
}
return $output;
}
/* DOWNLOAD D'UN FICHIER CONTENANT LES DONNEES SELECTIONNEES
*
* @subjects<Array> Liste des identifiants des sujets à prendre en compte
* @all<Boolean> Si TRUE, prend en compte tous les sujets (annule @subjects)
*
* @return data<File> Retourne une archive .zip contenant toutes les données sélectionnées
*
*/
public static function multiple($params){
extract($params);
/* (0) Gestion du formattage des paramètres */
$subjects = !is_array($subjects) ? [] : $subjects;
$all = !is_bool($all) ? false : $all;
/* [0] On récupère le dictionnaire
=========================================================*/
$dict = file_get_contents(__BUILD__.'/lightdb/storage/dictionary.json');
/* (2) Si une erreur pour le fichier de conf */
if( $dict === false )
return [ 'ModuleError' => ManagerError::UnreachableResource ];
/* (3) On récupère la config sous forme de tableau */
$dict = json_decode( $dict, true );
/* (4) Si erreur de PARSAGE */
if( !is_array($dict) )
return [ 'ModuleError' => ManagerError::ParsingFailed ];
/* [1] Initialisation
=========================================================*/
/* (1) Fichiers de sortie */
$output = [
'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 la liste des sujets
=========================================================*/
$subjectindexes = array_keys($subjectdb->index());
$subjectids = [];
/* (1) On récupère tous les sujets si c'est spécifié */
if( $all )
$subjectids = $subjectindexes;
/* (2) Sinon on retire les ids incorrects */
else
foreach($subjects as $i=>$id)
if( in_array($id, $subjectindexes) )
$subjectids[] = intval($id);
/* (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.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 );
// {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 ajoute le sujet à la liste des contacts
$output['contacts.mini'] .= self::parseCSV([[
'id' => $subid,
'name' => $subject['subject']['name']
]], [], strlen($output['contacts.mini']) == 0);
/* (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 );
}
/* [5] On ajoute le dictionnaire
=========================================================*/
$output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n";
foreach($dict as $ds=>$dataset)
foreach($dataset as $f=>$field)
foreach($field as $key=>$value)
$output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n";
/* [6] Création de l'archive
=========================================================*/
$zip = new \ZipArchive();
$fname = __TMP__.'/'.time().'.zip';
$zip->open($fname, \ZipArchive::CREATE);
foreach($output as $file=>$content)
if( strlen($content) > 0 )
$zip->addFromString($file.'.csv', $content);
$zip->close();
/* [5] On lance le téléchargement
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'headers' => [
'Content-Type' => 'application/zip; charset=utf-8',
'Content-Disposition' => 'attachment; filename=export'.date('_d_m_Y', time()).'.zip',
'Pragma' => 'no-cache',
'Expires' => '0'
],
'body' => file_get_contents($fname)
];
}
/* EXPORT POUR GEPHI OU AUTRE LOGICIEL SUR LE PRINCIPE NODES+EDGES
*
* @subjects<Array> Liste des identifiants des sujets à prendre en compte
* @all<Boolean> Si TRUE, prend en compte tous les sujets (annule @subjects)
*
* @return data<File> Retourne une archive .zip contenant toutes les données sélectionnées
*/
public static function chart($params){
extract($params);
/* (0) Gestion du formattage des paramètres */
$subjects = !is_array($subjects) ? [] : $subjects;
$all = !is_bool($all) ? false : $all;
/* [0] On récupère le dictionnaire
=========================================================*/
$dict = file_get_contents(__BUILD__.'/lightdb/storage/dictionary.json');
/* (2) Si une erreur pour le fichier de conf */
if( $dict === false )
return [ 'ModuleError' => ManagerError::UnreachableResource ];
/* (3) On récupère la config sous forme de tableau */
$dict = json_decode( $dict, true );
/* (4) Si erreur de PARSAGE */
if( !is_array($dict) )
return [ 'ModuleError' => ManagerError::ParsingFailed ];
/* [1] Initialisation
=========================================================*/
/* (1) Fichiers de sortie */
$output = [
'gephi.nodes' => '', // contiendra les contacts et leurs données
'gephi.edges' => '', // 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 la liste des sujets
=========================================================*/
$subjectindexes = array_keys($subjectdb->index());
$subjectids = [];
/* (1) On récupère tous les sujets si c'est spécifié */
if( $all )
$subjectids = $subjectindexes;
/* (2) Sinon on retire les ids incorrects */
else
foreach($subjects as $i=>$id)
if( in_array($id, $subjectindexes) )
$subjectids[] = intval($id);
/* (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.2} On ajoute le contact au fichier des FICHES //
if( array_key_exists('studies2', $contact) ){
// On affiche les colonnes pour le premier contact uniquement
$contact['type'] = 'fiche';
$output['gephi.nodes'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['gephi.nodes']) == 0 );
// {3.3} On ajoute le contact au fichier des MINI //
}elseif( array_key_exists('studies1', $contact) ){
// On affiche les colonnes pour le premier contact uniquement
$contact['type'] = 'mini';
$output['gephi.nodes'] .= self::parseCSV([$contact], $dict['contacts'], strlen($output['gephi.nodes']) == 0 );
}
}
// On ajoute le sujet à la liste des contacts
$output['gephi.nodes'] .= self::parseCSV([[
'id' => $subid,
'name' => $subject['subject']['name']
]], [], strlen($output['gephi.nodes']) == 0);
/* (4) Si aucune relation -> suivant */
if( !isset($subject['relations']) || !is_array($subject['relations']) )
continue;
/* (5) On ajoute les relations */
foreach($subject['relations'] as $r=>$rel)
$output['gephi.edges'] .= self::parseCSV(
[[
'source' => $rel['idA'],
'target' => $rel['idB'],
'weight' => ($rel['idA']==$subid) ? .5 : 1,
'type' => 'Undirected'
]],
[],
strlen($output['gephi.edges']) == 0
);
}
/* [5] On ajoute le dictionnaire
=========================================================*/
$output['dict'] .= "\"sheet\";\"field\";\"key\";\"value\"\r\n";
foreach($dict as $ds=>$dataset)
foreach($dataset as $f=>$field)
foreach($field as $key=>$value)
$output['dict'] .= "\"$ds\";\"$f\";\"$key\";\"$value\"\r\n";
/* [6] Création de l'archive
=========================================================*/
$zip = new \ZipArchive();
$fname = __TMP__.'/'.time().'.zip';
$zip->open($fname, \ZipArchive::CREATE);
foreach($output as $file=>$content)
if( strlen($content) > 0 )
$zip->addFromString($file.'.csv', $content);
$zip->close();
/* [5] On lance le téléchargement
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'headers' => [
'Content-Type' => 'application/zip; charset=utf-8',
'Content-Disposition' => 'attachment; filename=graphics'.date('_d_m_Y', time()).'.zip',
'Pragma' => 'no-cache',
'Expires' => '0'
],
'body' => file_get_contents($fname)
];
}
/* RENVOIE LE CONTENU DU MENU
*
*/
public static function menu($params){
extract($params);
$menu_json = json_decode( file_get_contents(__CONFIG__.'/menu.json'), true );
// si erreur
if( $menu_json == null )
return ['ModuleError' => ManagerError::ParsingFailed];
// si tout bon
return [
'ModuleError' => ManagerError::Success,
'menu' => $menu_json
];
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,290 +0,0 @@
<?php
namespace api\module;
use \manager\ManagerError;
class module{
/* PERMET DE TESTER L'API
*
*/
public static function method(){
return [
'ModuleError' => ManagerError::Success,
'ReceivedArguments' => func_get_args()
];
}
/* PERMET DE TESTER UNE L'ORDRE DES PARAMÈTRES
*
*/
public static function phpunitParams($params){
extract($params);
return [
'ModuleError' => ManagerError::Success,
'p1' => $p1,
'p2' => $p2
];
}
/* RENVOIE UNE DESCRIPTION EN MARKDOWN DES MODULES DE L'API
*
* @return markdown<String> Description des modules
*
*/
public static function markdown(){
/* [1] Récupération de la configuration
=========================================================*/
// On récupère le fichier et on le parse
$modules = json_decode( file_get_contents(__CONFIG__.'/modules.json'), true );
// Gestion de l'erreur de parsage
if( $modules == null )
return [ 'ModuleError' => ManagerError::ParsingFailed ];
/* [2] Mise en forme de la liste des modules
=========================================================*/
$markdown = "## Module List\n";
foreach($modules as $moduleName=>$moduleData)
$markdown .= "- $moduleName\n";
/* [3] Mise en forme des méthodes des modules
=========================================================*/
$markdown .= "----\n## Method List & Description\n";
$count = 1;
foreach($modules as $moduleName=>$moduleData){
$markdown .= "### $count - '$moduleName' methods\n";
foreach($moduleData as $methodName=>$methodData)
$markdown .= "`$methodName` - ".$methodData['description']."\n";
$markdown .= "----\n";
$count++;
}
/* [n] Gestion du retour
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'headers' => [
'Content-Type' => 'text/markdown; charset=utf-8',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'attachment; filename=NxTIC.apib',
'Pragma' => 'no-cache',
'Expires' => '0'
],
'body' => $markdown
];
}
/* RENVOIE UNE DOC API_BLUEPRINT DE L'API
*
* @return apiBlueprint<String> Description des modules au format API Blueprint
*
*/
public static function apiBlueprint(){
/* [0] Récupération de la configuration
=========================================================*/
// On récupère le fichier et on le parse
$modules = json_decode( file_get_contents(__CONFIG__.'/modules.json'), true );
// Gestion de l'erreur de parsage
if( $modules == null )
return [ 'ModuleError' => ManagerError::ParsingFailed ];
/* [1] Début du fichier custom
=========================================================*/
$content = "FORMAT: 1A\n";
$content .= "HOST: https://socioview.xdrm.io/api/\n\n";
$content .= "# NxTIC API\n";
$content .= "API de la plateforme d'étude **NxTIC**, cette documentation présentera toutes les méthodes accessibles depuis la plateforme elle-même et depuis un logiciel tiers.\n";
$content .= "La plateforme **NxTIC** est une plateforme d'étude sociale développé par Adrien Marquès _(xdrm-brackets)_ pour un laboratoire de sociologie du _CNRS_.\n";
$content .= "Elle a pour objectif l'acquisition, la visualisation et l'extraction de données relationnelles.\n";
$content .= "> Cette plateforme est temporairement hébergée sur https://socioview.xdrm.io/.\n\n";
$content .= "## Structure et fonctionnement\n";
$content .= "Le fonctionnement est basé sur une délégation à 2 niveaux : des __modules__ contenant des __méthodes__.\n\n";
$content .= "***\n\n";
$content .= "### Paramètres\n";
$content .= "Tous les paramètres doivent être envoyés en `multipart/form-data`.\n\n";
$content .= "1. Chacun formatté en `json` \n";
$content .= "2. Portant le `nom` défini dans la documentation \n";
$content .= "3. L'ordre n'a pas d'importance \n";
$content .= "4. Respectant le `type` défini dans la documentation (cf. [Types](#introduction/types-de-donnees)) \n\n";
$content .= "> **Note:** Les `paramètres URI` ne correspondent pas aux paramètres URI. \n";
$content .= "Ils servent à expliciter les paramètres et leurs types, et correspondent aux variables notées `{nomVar}` dans le corps de la requête.\n\n";
$content .= "### Réponses\n\n";
$content .= "#### A. Les réponses seront formattées en json et contiendront:\n\n";
$content .= "1. `ModuleError` - Le code de l'erreur \n";
$content .= "2. `ErrorDescription` - La description de l'erreur\n\n";
$content .= "****\n\n";
$content .= "#### B. Codes `HTTP` et leur signification.\n\n";
$content .= "|Status|Code HTTP|\n";
$content .= "|---|---|\n";
$content .= "|OK|`200` - Success|\n";
$content .= "|Erreur|`417` - Erreur quelconque|\n\n";
$content .= "## Types de données\n\n";
$content .= "### Types Simples \n";
$content .= "|Type|Exemple|Description|\n";
$content .= "|---|---|---|\n";
$content .= "|`mixed`|`[9,\"a\"]`, `\"a\"`|Type quelconque (peut être simple ou composé)|\n";
$content .= "|`id`|`10`, `\"23\"`|Nombre entier positif compris entre `0` et `2147483647`|\n";
$content .= "|`text`|`\"Hello!\"`|Chaine de caractères de longueur quelconque (peut être vide)|\n";
$content .= "|`mail`|`\"a.b@c.def\"`|Adresse mail avec une syntaxe valide|\n";
$content .= "|`number`|`0102030405`|Numéro de téléphone valide suivant les formats : `06`, `+336`, `+33 6`|\n";
$content .= "|`array`|`[1, 3]`|Tableau quelconque non vide|\n";
$content .= "|`boolean`|`true`, `false`|Booléen|\n";
$content .= "|`varchar(a,b)`|`\"Hello!\"`|Chaine de caractères de taille comprise entre `a` et `b` (inclus)|\n\n";
$content .= "### Type composé : array\n\n";
$content .= "|Type|Sous-Type|Description|\n";
$content .= "|---|---|---|\n";
$content .= "|`array<mixed>`|`mixed`|Tableau contenant uniquement des données de type `mixed`|\n";
$content .= "|`array<id>`|`id`|Tableau contenant uniquement des données de type `id`|\n";
$content .= "|`array<text>`|`text`|Tableau contenant uniquement des données de type `text`|\n";
$content .= "|`array<mail>`|`mail`|Tableau contenant uniquement des données de type `mail`|\n";
$content .= "|`array<number>`|`number`|Tableau contenant uniquement des données de type `number`|\n";
$content .= "|`array<array>`|`array`|Tableau contenant uniquement des données de type `array`|\n";
$content .= "|`array<boolean>`|`boolean`|Tableau contenant uniquement des données de type `boolean`|\n";
$content .= "|`array<varchar(a,b)>`|`varchar(a,b)`|Tableau contenant uniquement des données de type `varchar(a,b)`|\n\n";
$content .= "> **Note:** Il est possible de chainer le type `array` autant de fois que nécessaire. \n";
$content .= "**Ex.:** `array<array<id>>` - Soit un tableau contenant des tableaux contenant exclusivement des données de type `id`.\n";
$content .= "\n\n\n\n\n";
/* [2] Pour chaque module
=========================================================*/
foreach($modules as $module=>$methods){
$content .= "## $module [/$module] \n\n";
/* [3] Pour chaque méthode
=========================================================*/
foreach($methods as $methName=>$method){
/* (1) Description */
$content .= "### $methName [POST /$module/$methName]\n\n";
$content .= $method['description']."\n";
if( count($method['permissions']) > 0)
$content .= '> Permissions `'.implode('``', $method['permissions'])."`\n\n";
// Liste des paramètres
if( isset($method['parameters']) && count($method['parameters']) > 0 ){
// On explicite tous les paramètres
$content .= "+ Parameters\n\n";
foreach($method['parameters'] as $argName=>$argument){
$optional = isset($argument['optional']) && $argument['optional'] === true;
$content .= " + $argName (${argument['type']}, ".( $optional ? 'optional' : 'required' ).") - ${argument['description']}\n";
}
$content .= "\n";
}
/* (2) Requête */
$content .= "+ Request (multipart/form-data; boundary=xxxBOUNDARYxxx)\n\n";
// Header
$content .= " + Headers\n\n";
$content .= " Authorization: Digest {yourAccessToken}\n";
$content .= " Cache-Control: no-cache\n";
if( isset($method['parameters']) && count($method['parameters']) > 0 ){
// Body
$content .= " + Body\n\n";
foreach($method['parameters'] as $argName=>$argument){
$content .= " --xxxBOUNDARYxxx\n";
$content .= " Content-Disposition: form-data; name=\"$argName\"\n";
$content .= " Content-Type: application/json\n\n";
$content .= " {".$argName."}\n";
}
$content .= " --xxxBOUNDARYxxx--\n";
// Schema
$content .= " + Schema\n\n";
$content .= " {\n";
foreach($method['parameters'] as $argName=>$argData)
$content .= " \"$argName\": @$argName\n";
$content .= " }\n";
}
/* (3) Réponse */
$content .= "\n+ Response 200 (application/json)\n\n";
if( isset($method['output']) && count($method['output']) > 0 ){
// Body
$content .= " + Body\n\n";
$content .= " {\n";
foreach($method['output'] as $outName=>$outData)
$content .= " \"$outName\": @$outName\n";
$content .= " }\n";
// Schema
$content .= " + Schema\n\n";
$content .= " {\n";
foreach($method['output'] as $outName=>$outData)
$content .= " \"$outName\": @$outName\n";
$content .= " }\n";
// On explicite tous les paramètres
$content .= " + Attributes (object)\n\n";
foreach($method['output'] as $outName=>$outData)
$content .= " + $outName (${outData['type']}) - ${outData['description']}\n";
}
$content .= "\n\n";
}
}
return [
'ModuleError' => ManagerError::Success,
'headers' => [
'Content-Type' => 'application/octet-stream; charset=utf-8',
'Content-Transfer-Encoding' => 'binary',
'Content-Disposition' => 'attachment; filename=NxTIC.apib',
'Pragma' => 'no-cache',
'Expires' => '0'
],
'body' => $content
];
}
}
?>

View File

@ -1,268 +0,0 @@
<?php
namespace api\module;
use \manager\sessionManager;
use \database\core\DatabaseDriver;
use \manager\ManagerError;
use \database\core\Repo;
use \lightdb\core\lightdb;
class subject{
/* FETCHES NEW SUBJECTS FROM Lab-Surveys Database
*
* @note: will store new subjects to localStorage
*
*/
private static function fetchNewSubjects(){
/* [1] Fetch subjects which have answer this survey
=========================================================*/
/* (1) Section Title */
}
/* RETOURNE LA LISTE DE TOUS LES SUJETS
*
* @return subjects<Array> Tableau contenant les informations de tous les utilisateurs
*
*/
public static function getAll(){
// Contiendra les sujets
$subjects = [];
/* [1] On récupére la liste des sujets
=========================================================*/
/* (1) On initialise et ouvre la bd */
$db = new lightdb('subject');
$ids = array_keys( $db->index() );
/* (2) On récupère tous les sujets */
foreach($ids as $id){
$sub = $db->fetch($id)['subject'];
$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();
/* [4] Gestion du retour
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'subjects' => $subjects
];
}
/* RETOURNE LA LISTE DE TOUS LES AMIS D'UN SUJET
*
* @subject_id<int> Identifiant du sujet d'enquête
*
* @return subjects<Array> Tableau contenant les informations de tous les utilisateurs
*
*/
public static function getFriends($params){
extract($params);
// Contiendra les sujets
$contacts = [];
/* [1] On récupére la liste des sujets
=========================================================*/
/* (1) On initialise et ouvre la bd */
$db = new lightdb('subject');
$fetch = $db->fetch($subject_id);
$db->close();
/* (2) Si on trouve personne, on renvoie une erreur */
if( $fetch === false )
return [ 'ModuleError' => ManagerError::ModuleError ];
/* (3) On enregistre ses contacts s'il en a */
$db = new lightdb('contact');
if( isset($fetch['contacts']) ){
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] Gestion des relations
=========================================================*/
/* (1) On récupère toutes les relations */
//blabla
/* [4] Gestion du retour
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'subjects' => $contacts
];
}
/* CREATION D'UN SUJET
*
* @name<String> Pseudo du sujet
*
* @return id_subject<int> Renvoie l'id du sujet cree
*
*/
public static function create($params){
extract($params);
/* [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 = trim( fgets( $funiq ) );
if( !is_numeric($uniqid) )
$uniqid = 0;
// Décalage à appliquer à tous les ids
$newId = intval($uniqid) + 1;
// On crée notre sujet
$data = [
'subject' => [
'id' => $newId,
'name' => $name,
'creation' => time(),
'surveys' => [],
'coords' => ''
]
];
/* [2] On crée le sujet dans SURVEYS
=========================================================*/
/* (1) On initialise et ouvre la bd */
$db = new lightdb('subject');
$db->insert( $newId, $data );
$db->close();
/* [3] On met à jour le nouvel ID unique
=========================================================*/
rewind($funiq); // On revient au début du fichier
fwrite($funiq, $newId); // On écrit la nouvelle valeur (forcément plus grande)
flock($funiq, LOCK_UN); // On débloque le verrou
fclose($funiq);
/* [2] Gestion du retour
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'id_subject' => $newId
];
}
/* RECHERCHE DE SUJETS
*
* @name<String> Nom du sujet recherché
*
* @return results<Array> Tableau contenant les résultats
*
*/
public static function search($params){
extract($params);
// Contiendra les sujets
$subjects = [];
/* [0] Notre fonction de recherche (comparaison)
=========================================================*/
function compareSearch($A, $B){
// Returns all if no search keyword
if( $A == '' )
return true;
// {1} On supprime les espaces et tout en minuscule //
$A = str_replace(' ', '', strtolower($A));
$B = str_replace(' ', '', strtolower($B));
// {2} On vérifie si A est dans B et inversement //
if( strpos($A, $B) !== false ) return true;
if( strpos($B, $A) !== false ) return true;
return $A == $B;
}
/* [1] On récupére la liste des sujets
=========================================================*/
/* (1) On initialise et ouvre la bd */
$db = new lightdb('subject');
$ids = array_keys( $db->index() );
/* (2) On récupère tous les sujets */
foreach($ids as $id){
$sub = $db->fetch($id)['subject'];
if( compareSearch($name, $sub['name']) ){
$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();
/* [4] Retour des données
=========================================================*/
return [
'ModuleError' => ManagerError::Success,
'results' => $subjects
];
}
}
?>

View File

@ -1,198 +0,0 @@
<?php
namespace http\core;
class HttpRequest{
/* [0] Constants
=========================================================*/
/* (1) Content-Type */
const CT_BINARY = 0; // unknown
const CT_TEXT = 1;
const CT_JSON = 2;
const CT_YAML = 3;
const CT_MULTIPART_FORM_DATA = 4;
const CT_X_WWW_FORM_URLENCODED = 5;
/* [1] Attributes
=========================================================*/
private $uri;
private $headers;
private $method;
private $postdata;
private $getdata;
private $type;
private $body;
/* [2] Constructs an HTTP Request based on environment
*
* @return instance<HttpRequest> auto-filled HTTP Request
*
=========================================================*/
public function __construct(){
/* [1] Define URI & Status Code & method
=========================================================*/
$this->uri = $_SERVER['REQUEST_URI'];
$this->method = $_SERVER['REQUEST_METHOD'];
/* [2] Define headers
=========================================================*/
$this->headers = \getallheaders();
/* [3] Define default datasets (GET, POST)
=========================================================*/
$this->getdata = $_GET;
$this->postdata = $_POST;
/* [4] Define BODY & its type
=========================================================*/
/* (1) Default: set plain/text body */
$this->body = \file_get_contents('php://input');
/* (2) Fetch content type */
$this->type = self::getContentType($this->headers['Content-Type']);
/* [5] Parse BODY data -> POST
=========================================================*/
$this->parseBody();
}
/* GET CONSTANT CT_* FROM `Content-Type` HEADER
*
* @pContentType<String> `Content-Type` header value
*
* @return type<int> Constant value
*
*/
private static function getContentType($pContentType=null){
/* [1] Checks argv
=========================================================*/
if( is_null($pContentType) )
$pContentType = $_SERVER['CONTENT_TYPE'];
/* [2] Checks types
=========================================================*/
/* (1) Form Data Types
---------------------------------------------------------*/
/* (1) multipart/form-data */
if( preg_match('/^multipart\/form\-data; boundary=(.+)$/i', $pContentType) )
return self::CT_MULTIPART_FORM_DATA;
/* (2) application/x-www-form-urlencoded */
if( preg_match('/^application\/x\-www\-form\-urlencoded/i', $pContentType) )
return self::CT_X_WWW_FORM_URLENCODED;
/* (2) Data types
---------------------------------------------------------*/
/* (1) Basic JSON content type */
if( preg_match('/^application\/json/i', $pContentType) )
return self::CT_JSON;
/* (2) Basic YAML content type */
if( preg_match('/^application\/yaml/i', $pContentType) )
return self::CT_YAML;
/* (3) Basic TEXT content type */
if( preg_match('/text\/[a-z]+/', $pContentType) )
return self::CT_TEXT;
/* (3) Default Type
---------------------------------------------------------*/
return self::CT_BINARY;
}
/* PARSES BODY DATA
*
*/
private function parseBody(){
/* [1] If empty body -> do nothing
=========================================================*/
if( strlen($this->body) === 0 )
return true;
/* [2] Management for each ContentType
=========================================================*/
switch($this->type){
/* (1) multipart/form-data -> parse for not-POST methods
---------------------------------------------------------*/
case self::CT_MULTIPART_FORM_DATA:
/* (1) Fetch the boundary */
if( !preg_match('/boundary=(.+)$/i', $this->headers['Content-Type'], $match) )
return false;
$boundary = $match[1];
/* (2) Break body into parts */
$splitter = "/(?:\n|\r\n|--)*$boundary(?:\n|\r\n|--)?/im";
$parts = preg_split($splitter, $this->body);
/* (3) Process parts */
foreach($parts as $part)
if( preg_match('/^Content\-Disposition: form\-data; name=\"([^"]+)\"(?:\n|\r\n){2}(.+)$/mi', $part, $match) )
$this->postdata[$match[1]] = $match[2];
/* (4) Erases body */
$this->body = '';
break;
/* (2) application/x-www-form-urlencoded -> parse for not-POST methods
---------------------------------------------------------*/
case self::CT_X_WWW_FORM_URLENCODED:
/* Auto parse builtin-php function */
parse_str($this->body, $this->postdata);
/* Erases body */
$this->body = '';
break;
/* (3) application/json -> parse if no error
---------------------------------------------------------*/
case self::CT_JSON:
/* (1) Decode body content */
$decoded = json_decode($this->body, true);
/* (2) If error -> do nothing */
if( is_null($decoded) )
return;
/* (3) Parse body into body */
$this->body = $decoded;
break;
/* (4) application/yaml -> parse if no error
---------------------------------------------------------*/
case self::CT_YAML:
break;
}
}
public function BODY(){ return $this->body; }
public function POST(){ return $this->postdata; }
public function GET(){ return $this->getdata; }
public function HEADERS(){ return $this->headers; }
public function METHOD(){ return $this->method; }
public function URI(){ return $this->uri; }
}

View File

@ -1,86 +0,0 @@
{"id":16,"name":"contact-x","sexe":"1","age":"6","studies2":"1","reltype":"1","dist":"1","job":"12","famsit":"1","city":"35","cp":"10025","quartier":"25","duration":["25","125"],"context":"11","contextExtra":["internet","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"0","irlfreq":["1","6","11","16","21"],"relmark":"0","medrel":"1"}
{"id":17,"name":"contact-1","sexe":"0","age":"6","studies2":"6","reltype":"6","dist":"2","job":"6","famsit":"2","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"1","irlfreq":["2","7","12","17","22"],"relmark":"1","medrel":"0"}
{"id":18,"name":"contact-2","sexe":"1","age":"7","studies2":"7","reltype":"autre","dist":"3","job":"7","famsit":"3","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"2","irlfreq":["3","8","13","18","23"],"relmark":"2","medrel":"1"}
{"id":19,"name":"contact-3","sexe":"2","age":"8","studies2":"0","reltype":"0","dist":"0","job":"8","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"3","irlfreq":["0","5","10","15","20"],"relmark":"3","medrel":"2"}
{"id":20,"name":"contact-4","sexe":"0","age":"9","studies2":"1","reltype":"1","dist":"1","job":"9","famsit":"1","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"4","irlfreq":["1","6","11","16","21"],"relmark":"4","medrel":"0"}
{"id":21,"name":"contact-5","sexe":"1","age":"10","studies2":"2","reltype":"2","dist":"2","job":"10","famsit":"2","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"0","irlfreq":["2","7","12","17","22"],"relmark":"0","medrel":"1"}
{"id":22,"name":"contact-6","sexe":"2","age":"11","studies2":"3","reltype":"3","dist":"3","job":"11","famsit":"3","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"1","irlfreq":["3","8","13","18","23"],"relmark":"1","medrel":"2"}
{"id":23,"name":"contact-7","sexe":"0","age":"12","studies2":"4","reltype":"4","dist":"0","job":"12","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"2","irlfreq":["0","5","10","15","20"],"relmark":"2","medrel":"0"}
{"id":24,"name":"contact-8","sexe":"1","age":"13","studies2":"5","reltype":"5","dist":"1","job":"0","famsit":"1","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"3","irlfreq":["1","6","11","16","21"],"relmark":"3","medrel":"1"}
{"id":25,"name":"contact-9","sexe":"2","age":"14","studies2":"6","reltype":"6","dist":"2","job":"1","famsit":"2","city":"24","cp":"10014","quartier":"14","duration":["14","114"],"context":"0","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"4","irlfreq":["2","7","12","17","22"],"relmark":"4","medrel":"2"}
{"id":26,"name":"contact-10","sexe":"0","age":"15","studies2":"7","reltype":"autre","dist":"3","job":"2","famsit":"3","city":"25","cp":"10015","quartier":"15","duration":["15","115"],"context":"1","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"0","irlfreq":["3","8","13","18","23"],"relmark":"0","medrel":"0"}
{"id":27,"name":"contact-11","sexe":"1","age":"16","studies2":"0","reltype":"0","dist":"0","job":"3","famsit":"0","city":"26","cp":"10016","quartier":"16","duration":["16","116"],"context":"2","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"1","irlfreq":["0","5","10","15","20"],"relmark":"1","medrel":"1"}
{"id":28,"name":"contact-12","sexe":"2","age":"17","studies2":"1","reltype":"1","dist":"1","job":"4","famsit":"1","city":"27","cp":"10017","quartier":"17","duration":["17","117"],"context":"3","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"2","irlfreq":["1","6","11","16","21"],"relmark":"2","medrel":"2"}
{"id":29,"name":"contact-13","sexe":"0","age":"18","studies2":"2","reltype":"2","dist":"2","job":"5","famsit":"2","city":"28","cp":"10018","quartier":"18","duration":["18","118"],"context":"4","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"3","irlfreq":["2","7","12","17","22"],"relmark":"3","medrel":"0"}
{"id":30,"name":"contact-14","sexe":"1","age":"0","studies2":"3","reltype":"3","dist":"3","job":"6","famsit":"3","city":"29","cp":"10019","quartier":"19","duration":["19","119"],"context":"5","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"4","irlfreq":["3","8","13","18","23"],"relmark":"4","medrel":"1"}
{"id":31,"name":"contact-15","sexe":"2","age":"1","studies2":"4","reltype":"4","dist":"0","job":"7","famsit":"0","city":"30","cp":"10020","quartier":"20","duration":["20","120"],"context":"6","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"0","irlfreq":["0","5","10","15","20"],"relmark":"0","medrel":"2"}
{"id":32,"name":"contact-16","sexe":"0","age":"2","studies2":"5","reltype":"5","dist":"1","job":"8","famsit":"1","city":"31","cp":"10021","quartier":"21","duration":["21","121"],"context":"7","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"1","irlfreq":["1","6","11","16","21"],"relmark":"1","medrel":"0"}
{"id":33,"name":"contact-17","sexe":"1","age":"3","studies2":"6","reltype":"6","dist":"2","job":"9","famsit":"2","city":"32","cp":"10022","quartier":"22","duration":["22","122"],"context":"8","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"2","irlfreq":["2","7","12","17","22"],"relmark":"2","medrel":"1"}
{"id":34,"name":"contact-18","sexe":"2","age":"4","studies2":"7","reltype":"autre","dist":"3","job":"10","famsit":"3","city":"33","cp":"10023","quartier":"23","duration":["23","123"],"context":"9","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"3","irlfreq":["3","8","13","18","23"],"relmark":"3","medrel":"2"}
{"id":35,"name":"contact-19","sexe":"0","age":"5","studies2":"0","reltype":"0","dist":"0","job":"11","famsit":"0","city":"34","cp":"10024","quartier":"24","duration":["24","124"],"context":"10","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"4","irlfreq":["0","5","10","15","20"],"relmark":"4","medrel":"0"}
{"id":37,"name":"contact-21","sexe":"2","age":"7","studies2":"2","reltype":"2","dist":"2","job":"0","famsit":"2","city":"36","cp":"10026","quartier":"26","duration":["26","126"],"context":"12","contextExtra":["","association",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"1","irlfreq":["2","7","12","17","22"],"relmark":"1","medrel":"2"}
{"id":38,"name":"contact-22","sexe":"0","age":"8","studies2":"3","reltype":"3","dist":"3","job":"1","famsit":"3","city":"37","cp":"10027","quartier":"27","duration":["27","127"],"context":"13","contextExtra":["","","autre"],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"2","irlfreq":["3","8","13","18","23"],"relmark":"2","medrel":"0"}
{"id":39,"name":"contact-23","sexe":"1","age":"9","studies2":"4","reltype":"4","dist":"0","job":"2","famsit":"0","city":"38","cp":"10028","quartier":"28","duration":["28","128"],"context":"0","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"3","irlfreq":["0","5","10","15","20"],"relmark":"3","medrel":"1"}
{"id":40,"name":"contact-24","sexe":"2","age":"10","studies2":"5","reltype":"5","dist":"1","job":"3","famsit":"1","city":"39","cp":"10029","quartier":"29","duration":["29","129"],"context":"1","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"4","irlfreq":["1","6","11","16","21"],"relmark":"4","medrel":"2"}
{"id":41,"name":"contact-25","sexe":"0","age":"11","studies2":"6","reltype":"6","dist":"2","job":"4","famsit":"2","city":"40","cp":"10030","quartier":"30","duration":["30","130"],"context":"2","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"0","irlfreq":["2","7","12","17","22"],"relmark":"0","medrel":"0"}
{"id":42,"name":"contact-26","sexe":"1","age":"12","studies2":"7","reltype":"autre","dist":"3","job":"5","famsit":"3","city":"41","cp":"10031","quartier":"31","duration":["31","131"],"context":"3","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"1","irlfreq":["3","8","13","18","23"],"relmark":"1","medrel":"1"}
{"id":43,"name":"contact-27","sexe":"2","age":"13","studies2":"0","reltype":"0","dist":"0","job":"6","famsit":"0","city":"42","cp":"10032","quartier":"32","duration":["32","132"],"context":"4","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"2","irlfreq":["0","5","10","15","20"],"relmark":"2","medrel":"2"}
{"id":44,"name":"contact-28","sexe":"0","age":"14","studies2":"1","reltype":"1","dist":"1","job":"7","famsit":"1","city":"43","cp":"10033","quartier":"33","duration":["33","133"],"context":"5","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"3","irlfreq":["1","6","11","16","21"],"relmark":"3","medrel":"0"}
{"id":45,"name":"contact-29","sexe":"1","age":"15","studies2":"2","reltype":"2","dist":"2","job":"8","famsit":"2","city":"44","cp":"10034","quartier":"34","duration":["34","134"],"context":"6","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"4","irlfreq":["2","7","12","17","22"],"relmark":"4","medrel":"1"}
{"id":46,"name":"contact-30","sexe":"2","age":"16","studies2":"3","reltype":"3","dist":"3","job":"9","famsit":"3","city":"45","cp":"10035","quartier":"35","duration":["35","135"],"context":"7","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"0","irlfreq":["3","8","13","18","23"],"relmark":"0","medrel":"2"}
{"id":47,"name":"contact-31","sexe":"0","age":"17","studies2":"4","reltype":"4","dist":"0","job":"10","famsit":"0","city":"46","cp":"10036","quartier":"36","duration":["36","136"],"context":"8","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"1","irlfreq":["0","5","10","15","20"],"relmark":"1","medrel":"0"}
{"id":48,"name":"contact-32","sexe":"1","age":"18","studies2":"5","reltype":"5","dist":"1","job":"11","famsit":"1","city":"47","cp":"10037","quartier":"37","duration":["37","137"],"context":"9","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"2","irlfreq":["1","6","11","16","21"],"relmark":"2","medrel":"1"}
{"id":49,"name":"contact-33","sexe":"2","age":"0","studies2":"6","reltype":"6","dist":"2","job":"12","famsit":"2","city":"48","cp":"10038","quartier":"38","duration":["38","138"],"context":"10","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"3","irlfreq":["2","7","12","17","22"],"relmark":"3","medrel":"2"}
{"id":50,"name":"contact-34","sexe":"0","age":"1","studies2":"7","reltype":"autre","dist":"3","job":"0","famsit":"3","city":"49","cp":"10039","quartier":"39","duration":["39","139"],"context":"11","contextExtra":["internet","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"4","irlfreq":["3","8","13","18","23"],"relmark":"4","medrel":"0"}
{"id":51,"name":"contact-35","sexe":"1","age":"2","studies2":"0","reltype":"0","dist":"0","job":"1","famsit":"0","city":"50","cp":"10040","quartier":"40","duration":["40","140"],"context":"12","contextExtra":["","association",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"0","irlfreq":["0","5","10","15","20"],"relmark":"0","medrel":"1"}
{"id":52,"name":"contact-36","sexe":"2","age":"3","studies2":"1","reltype":"1","dist":"1","job":"2","famsit":"1","city":"51","cp":"10041","quartier":"41","duration":["41","141"],"context":"13","contextExtra":["","","autre"],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"1","irlfreq":["1","6","11","16","21"],"relmark":"1","medrel":"2"}
{"id":53,"name":"contact-37","sexe":"0","age":"4","studies2":"2","reltype":"2","dist":"2","job":"3","famsit":"2","city":"52","cp":"10042","quartier":"42","duration":["42","142"],"context":"0","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"2","irlfreq":["2","7","12","17","22"],"relmark":"2","medrel":"0"}
{"id":54,"name":"contact-38","sexe":"1","age":"5","studies2":"3","reltype":"3","dist":"3","job":"4","famsit":"3","city":"53","cp":"10043","quartier":"43","duration":["43","143"],"context":"1","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"3","irlfreq":["3","8","13","18","23"],"relmark":"3","medrel":"1"}
{"id":55,"name":"contact-39","sexe":"2","age":"6","studies2":"4","reltype":"4","dist":"0","job":"5","famsit":"0","city":"54","cp":"10044","quartier":"44","duration":["44","144"],"context":"2","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"4","irlfreq":["0","5","10","15","20"],"relmark":"4","medrel":"2"}
{"id":57,"name":"contact-41","sexe":"1","age":"","studies1":"2","reltype":"1","dist":"0"}
{"id":58,"name":"contact-42","sexe":"0","age":"2","studies1":"3","reltype":"2","dist":"1"}
{"id":59,"name":"contact-43","sexe":"1","age":"3","studies1":"4","reltype":"3","dist":"2"}
{"id":60,"name":"contact-44","sexe":"0","age":"4","studies1":"5","reltype":"4","dist":"3"}
{"id":63,"name":"contact-x","sexe":"1","age":"6","studies2":"1","reltype":"1","dist":"1","job":"12","famsit":"1","city":"35","cp":"10025","quartier":"25","duration":["25","125"],"context":"11","contextExtra":["internet","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"0","irlfreq":["1","6","11","16","21"],"relmark":"0","medrel":"1"}
{"id":64,"name":"contact-1","sexe":"0","age":"6","studies2":"6","reltype":"6","dist":"2","job":"6","famsit":"2","city":"16","cp":"10006","quartier":"6","duration":["6","16"],"context":"6","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"1","irlfreq":["2","7","12","17","22"],"relmark":"1","medrel":"0"}
{"id":65,"name":"contact-2","sexe":"1","age":"7","studies2":"7","reltype":"autre","dist":"3","job":"7","famsit":"3","city":"17","cp":"10007","quartier":"7","duration":["7","17"],"context":"7","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"2","irlfreq":["3","8","13","18","23"],"relmark":"2","medrel":"1"}
{"id":66,"name":"contact-3","sexe":"2","age":"8","studies2":"0","reltype":"0","dist":"0","job":"8","famsit":"0","city":"18","cp":"10008","quartier":"8","duration":["8","18"],"context":"8","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"3","irlfreq":["0","5","10","15","20"],"relmark":"3","medrel":"2"}
{"id":67,"name":"contact-4","sexe":"0","age":"9","studies2":"1","reltype":"1","dist":"1","job":"9","famsit":"1","city":"19","cp":"10009","quartier":"9","duration":["9","19"],"context":"9","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"4","irlfreq":["1","6","11","16","21"],"relmark":"4","medrel":"0"}
{"id":68,"name":"contact-5","sexe":"1","age":"10","studies2":"2","reltype":"2","dist":"2","job":"10","famsit":"2","city":"20","cp":"10010","quartier":"10","duration":["10","110"],"context":"10","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"0","irlfreq":["2","7","12","17","22"],"relmark":"0","medrel":"1"}
{"id":69,"name":"contact-6","sexe":"2","age":"11","studies2":"3","reltype":"3","dist":"3","job":"11","famsit":"3","city":"21","cp":"10011","quartier":"11","duration":["11","111"],"context":"11","contextExtra":["internet","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"1","irlfreq":["3","8","13","18","23"],"relmark":"1","medrel":"2"}
{"id":70,"name":"contact-7","sexe":"0","age":"12","studies2":"4","reltype":"4","dist":"0","job":"12","famsit":"0","city":"22","cp":"10012","quartier":"12","duration":["12","112"],"context":"12","contextExtra":["","association",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"2","irlfreq":["0","5","10","15","20"],"relmark":"2","medrel":"0"}
{"id":71,"name":"contact-8","sexe":"1","age":"13","studies2":"5","reltype":"5","dist":"1","job":"0","famsit":"1","city":"23","cp":"10013","quartier":"13","duration":["13","113"],"context":"13","contextExtra":["","","autre"],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"3","irlfreq":["1","6","11","16","21"],"relmark":"3","medrel":"1"}
{"id":72,"name":"contact-9","sexe":"2","age":"14","studies2":"6","reltype":"6","dist":"2","job":"1","famsit":"2","city":"24","cp":"10014","quartier":"14","duration":["14","114"],"context":"0","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"4","irlfreq":["2","7","12","17","22"],"relmark":"4","medrel":"2"}
{"id":73,"name":"contact-10","sexe":"0","age":"15","studies2":"7","reltype":"autre","dist":"3","job":"2","famsit":"3","city":"25","cp":"10015","quartier":"15","duration":["15","115"],"context":"1","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"0","irlfreq":["3","8","13","18","23"],"relmark":"0","medrel":"0"}
{"id":74,"name":"contact-11","sexe":"1","age":"16","studies2":"0","reltype":"0","dist":"0","job":"3","famsit":"0","city":"26","cp":"10016","quartier":"16","duration":["16","116"],"context":"2","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"1","irlfreq":["0","5","10","15","20"],"relmark":"1","medrel":"1"}
{"id":75,"name":"contact-12","sexe":"2","age":"17","studies2":"1","reltype":"1","dist":"1","job":"4","famsit":"1","city":"27","cp":"10017","quartier":"17","duration":["17","117"],"context":"3","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"2","irlfreq":["1","6","11","16","21"],"relmark":"2","medrel":"2"}
{"id":76,"name":"contact-13","sexe":"0","age":"18","studies2":"2","reltype":"2","dist":"2","job":"5","famsit":"2","city":"28","cp":"10018","quartier":"18","duration":["18","118"],"context":"4","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"3","irlfreq":["2","7","12","17","22"],"relmark":"3","medrel":"0"}
{"id":77,"name":"contact-14","sexe":"1","age":"0","studies2":"3","reltype":"3","dist":"3","job":"6","famsit":"3","city":"29","cp":"10019","quartier":"19","duration":["19","119"],"context":"5","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"4","irlfreq":["3","8","13","18","23"],"relmark":"4","medrel":"1"}
{"id":78,"name":"contact-15","sexe":"2","age":"1","studies2":"4","reltype":"4","dist":"0","job":"7","famsit":"0","city":"30","cp":"10020","quartier":"20","duration":["20","120"],"context":"6","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"0","irlfreq":["0","5","10","15","20"],"relmark":"0","medrel":"2"}
{"id":79,"name":"contact-16","sexe":"0","age":"2","studies2":"5","reltype":"5","dist":"1","job":"8","famsit":"1","city":"31","cp":"10021","quartier":"21","duration":["21","121"],"context":"7","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"1","irlfreq":["1","6","11","16","21"],"relmark":"1","medrel":"0"}
{"id":80,"name":"contact-17","sexe":"1","age":"3","studies2":"6","reltype":"6","dist":"2","job":"9","famsit":"2","city":"32","cp":"10022","quartier":"22","duration":["22","122"],"context":"8","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"2","irlfreq":["2","7","12","17","22"],"relmark":"2","medrel":"1"}
{"id":81,"name":"contact-18","sexe":"2","age":"4","studies2":"7","reltype":"autre","dist":"3","job":"10","famsit":"3","city":"33","cp":"10023","quartier":"23","duration":["23","123"],"context":"9","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"3","irlfreq":["3","8","13","18","23"],"relmark":"3","medrel":"2"}
{"id":82,"name":"contact-19","sexe":"0","age":"5","studies2":"0","reltype":"0","dist":"0","job":"11","famsit":"0","city":"34","cp":"10024","quartier":"24","duration":["24","124"],"context":"10","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"4","irlfreq":["0","5","10","15","20"],"relmark":"4","medrel":"0"}
{"id":84,"name":"contact-21","sexe":"2","age":"7","studies2":"2","reltype":"2","dist":"2","job":"0","famsit":"2","city":"36","cp":"10026","quartier":"26","duration":["26","126"],"context":"12","contextExtra":["","association",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"1","irlfreq":["2","7","12","17","22"],"relmark":"1","medrel":"2"}
{"id":85,"name":"contact-22","sexe":"0","age":"8","studies2":"3","reltype":"3","dist":"3","job":"1","famsit":"3","city":"37","cp":"10027","quartier":"27","duration":["27","127"],"context":"13","contextExtra":["","","autre"],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"2","irlfreq":["3","8","13","18","23"],"relmark":"2","medrel":"0"}
{"id":86,"name":"contact-23","sexe":"1","age":"9","studies2":"4","reltype":"4","dist":"0","job":"2","famsit":"0","city":"38","cp":"10028","quartier":"28","duration":["28","128"],"context":"0","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"3","irlfreq":["0","5","10","15","20"],"relmark":"3","medrel":"1"}
{"id":87,"name":"contact-24","sexe":"2","age":"10","studies2":"5","reltype":"5","dist":"1","job":"3","famsit":"1","city":"39","cp":"10029","quartier":"29","duration":["29","129"],"context":"1","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"4","irlfreq":["1","6","11","16","21"],"relmark":"4","medrel":"2"}
{"id":88,"name":"contact-25","sexe":"0","age":"11","studies2":"6","reltype":"6","dist":"2","job":"4","famsit":"2","city":"40","cp":"10030","quartier":"30","duration":["30","130"],"context":"2","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"0","irlfreq":["2","7","12","17","22"],"relmark":"0","medrel":"0"}
{"id":89,"name":"contact-26","sexe":"1","age":"12","studies2":"7","reltype":"autre","dist":"3","job":"5","famsit":"3","city":"41","cp":"10031","quartier":"31","duration":["31","131"],"context":"3","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"1","irlfreq":["3","8","13","18","23"],"relmark":"1","medrel":"1"}
{"id":90,"name":"contact-27","sexe":"2","age":"13","studies2":"0","reltype":"0","dist":"0","job":"6","famsit":"0","city":"42","cp":"10032","quartier":"32","duration":["32","132"],"context":"4","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"2","irlfreq":["0","5","10","15","20"],"relmark":"2","medrel":"2"}
{"id":91,"name":"contact-28","sexe":"0","age":"14","studies2":"1","reltype":"1","dist":"1","job":"7","famsit":"1","city":"43","cp":"10033","quartier":"33","duration":["33","133"],"context":"5","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"3","irlfreq":["1","6","11","16","21"],"relmark":"3","medrel":"0"}
{"id":92,"name":"contact-29","sexe":"1","age":"15","studies2":"2","reltype":"2","dist":"2","job":"8","famsit":"2","city":"44","cp":"10034","quartier":"34","duration":["34","134"],"context":"6","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"4","irlfreq":["2","7","12","17","22"],"relmark":"4","medrel":"1"}
{"id":93,"name":"contact-30","sexe":"2","age":"16","studies2":"3","reltype":"3","dist":"3","job":"9","famsit":"3","city":"45","cp":"10035","quartier":"35","duration":["35","135"],"context":"7","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"0","irlfreq":["3","8","13","18","23"],"relmark":"0","medrel":"2"}
{"id":94,"name":"contact-31","sexe":"0","age":"17","studies2":"4","reltype":"4","dist":"0","job":"10","famsit":"0","city":"46","cp":"10036","quartier":"36","duration":["36","136"],"context":"8","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"1","irlfreq":["0","5","10","15","20"],"relmark":"1","medrel":"0"}
{"id":95,"name":"contact-32","sexe":"1","age":"18","studies2":"5","reltype":"5","dist":"1","job":"11","famsit":"1","city":"47","cp":"10037","quartier":"37","duration":["37","137"],"context":"9","contextExtra":["","",""],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"2","irlfreq":["1","6","11","16","21"],"relmark":"2","medrel":"1"}
{"id":96,"name":"contact-33","sexe":"2","age":"0","studies2":"6","reltype":"6","dist":"2","job":"12","famsit":"2","city":"48","cp":"10038","quartier":"38","duration":["38","138"],"context":"10","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"3","irlfreq":["2","7","12","17","22"],"relmark":"3","medrel":"2"}
{"id":97,"name":"contact-34","sexe":"0","age":"1","studies2":"7","reltype":"autre","dist":"3","job":"0","famsit":"3","city":"49","cp":"10039","quartier":"39","duration":["39","139"],"context":"11","contextExtra":["internet","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"4","irlfreq":["3","8","13","18","23"],"relmark":"4","medrel":"0"}
{"id":98,"name":"contact-35","sexe":"1","age":"2","studies2":"0","reltype":"0","dist":"0","job":"1","famsit":"0","city":"50","cp":"10040","quartier":"40","duration":["40","140"],"context":"12","contextExtra":["","association",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"0","irlfreq":["0","5","10","15","20"],"relmark":"0","medrel":"1"}
{"id":99,"name":"contact-36","sexe":"2","age":"3","studies2":"1","reltype":"1","dist":"1","job":"2","famsit":"1","city":"51","cp":"10041","quartier":"41","duration":["41","141"],"context":"13","contextExtra":["","","autre"],"freq":["1","6","11","16","21"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"1","interest":"1","irlfreq":["1","6","11","16","21"],"relmark":"1","medrel":"2"}
{"id":100,"name":"contact-37","sexe":"0","age":"4","studies2":"2","reltype":"2","dist":"2","job":"3","famsit":"2","city":"52","cp":"10042","quartier":"42","duration":["42","142"],"context":"0","contextExtra":["","",""],"freq":["2","7","12","17","22"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"2","interest":"2","irlfreq":["2","7","12","17","22"],"relmark":"2","medrel":"0"}
{"id":101,"name":"contact-38","sexe":"1","age":"5","studies2":"3","reltype":"3","dist":"3","job":"4","famsit":"3","city":"53","cp":"10043","quartier":"43","duration":["43","143"],"context":"1","contextExtra":["","",""],"freq":["3","8","13","18","23"],"connect":["1","3","5","7","9","11"],"connectExtra":["",""],"medsoc":"3","interest":"3","irlfreq":["3","8","13","18","23"],"relmark":"3","medrel":"1"}
{"id":102,"name":"contact-39","sexe":"2","age":"6","studies2":"4","reltype":"4","dist":"0","job":"5","famsit":"0","city":"54","cp":"10044","quartier":"44","duration":["44","144"],"context":"2","contextExtra":["","",""],"freq":["0","5","10","15","20"],"connect":["0","2","4","6","8","10"],"connectExtra":["",""],"medsoc":"0","interest":"4","irlfreq":["0","5","10","15","20"],"relmark":"4","medrel":"2"}
{"id":104,"name":"contact-41","sexe":"1","age":"","studies1":"2","reltype":"1","dist":"0"}
{"id":105,"name":"contact-42","sexe":"0","age":"2","studies1":"3","reltype":"2","dist":"1"}
{"id":106,"name":"contact-43","sexe":"1","age":"3","studies1":"4","reltype":"3","dist":"2"}
{"id":107,"name":"contact-44","sexe":"0","age":"4","studies1":"5","reltype":"4","dist":"3"}

View File

@ -1 +0,0 @@
{"16":{"line":0},"17":{"line":1},"18":{"line":2},"19":{"line":3},"20":{"line":4},"21":{"line":5},"22":{"line":6},"23":{"line":7},"24":{"line":8},"25":{"line":9},"26":{"line":10},"27":{"line":11},"28":{"line":12},"29":{"line":13},"30":{"line":14},"31":{"line":15},"32":{"line":16},"33":{"line":17},"34":{"line":18},"35":{"line":19},"37":{"line":20},"38":{"line":21},"39":{"line":22},"40":{"line":23},"41":{"line":24},"42":{"line":25},"43":{"line":26},"44":{"line":27},"45":{"line":28},"46":{"line":29},"47":{"line":30},"48":{"line":31},"49":{"line":32},"50":{"line":33},"51":{"line":34},"52":{"line":35},"53":{"line":36},"54":{"line":37},"55":{"line":38},"57":{"line":39},"58":{"line":40},"59":{"line":41},"60":{"line":42},"63":{"line":43},"64":{"line":44},"65":{"line":45},"66":{"line":46},"67":{"line":47},"68":{"line":48},"69":{"line":49},"70":{"line":50},"71":{"line":51},"72":{"line":52},"73":{"line":53},"74":{"line":54},"75":{"line":55},"76":{"line":56},"77":{"line":57},"78":{"line":58},"79":{"line":59},"80":{"line":60},"81":{"line":61},"82":{"line":62},"84":{"line":63},"85":{"line":64},"86":{"line":65},"87":{"line":66},"88":{"line":67},"89":{"line":68},"90":{"line":69},"91":{"line":70},"92":{"line":71},"93":{"line":72},"94":{"line":73},"95":{"line":74},"96":{"line":75},"97":{"line":76},"98":{"line":77},"99":{"line":78},"100":{"line":79},"101":{"line":80},"102":{"line":81},"104":{"line":82},"105":{"line":83},"106":{"line":84},"107":{"line":85}}

View File

@ -1,218 +0,0 @@
{
"logs": {
"direction": { "0": "INCOMING", "1": "OUTGOING", "2": "MISSED" },
"type": { "0": "PHONE", "1": "SMS" }
},
"questions": {
"sexe": { "x": "Civilité" },
"age": { "x": "Age" },
"studies1": { "x": "Niveau d'études maximal (fiche rapide)" },
"studies2": { "x": "Niveau d'études maximal (fiche complète)" },
"job": { "x": "Dernière profession exercée" },
"city": { "x": "Où habite t-elle/il ? (ville)" },
"cp": { "x": "Où habite t-elle/il ? (code postal)" },
"quartier": { "x": "Où habite t-elle/il ? (quartier)" },
"context": { "x": "Contexte de rencontre" },
"contextExtra": { "0": "Internet (quel contexte ? préciser)",
"1": "Par une association (quel type ? préciser)",
"2": "Autre" },
"famsit": { "x": "Situation familiale" },
"reltype": { "x": "Type de relation" },
"dist": { "x": "À combien de temps est-ce de chez vous (en voiture) ? (si deux domiciles, le plus proche)" },
"duration": { "0": "Depuis quand connaissez-vous cette personne ? (mois)",
"1": "Depuis quand connaissez-vous cette personne ? (années)" },
"freq": { "0": "Avec quelle fréquence discutez-vous avec cette personne face à face ?",
"1": "Avec quelle fréquence discutez-vous avec cette personne via téléphone ou skype et équivalent ?",
"2": "Avec quelle fréquence discutez-vous avec cette personne via SMS et équivalents ?",
"3": "Avec quelle fréquence discutez-vous avec cette personne via courrier éléctronique ?",
"4": "Avec quelle fréquence discutez-vous avec cette personne via facebook ou autre réseau social ?" },
"irlfreq": { "0": "Selon vous, à quelle fréquence cette personne publie des commentaires personnels ou réagit aux publications des autres ?",
"1": "Selon vous, à quelle fréquence cette personne publie des photos personnelles (profil, voyages, etc.) ?",
"2": "Selon vous, à quelle fréquence cette personne partage de la musique ou des clips musicaux ?",
"3": "Selon vous, à quelle fréquence cette personne partage des informations culturelles (concert, exposition, etc.) ?",
"4": "Selon vous, à quelle fréquence cette personne partage des articles, des informations, des contenus avec une portée politique ?" },
"connect": { "0": "Ses coordonnées sont dans votre carnet d'adresse",
"1": "Son numéro de mobile est enregistré sur votre mobile (ou vous-mêmes êtes sur le sien)",
"2": "Elle figure parmi vos amis facebook (idem)",
"3": "Elle figure parmi vos amis facebook et vous interagissez avec elle sur ce dispositif régulièrement (idem)",
"4": "Vous le suivez sur Twitter (ou elle vous suit)",
"5": "Vous communiquez avec cette personne sur Twitter (idem)" },
"connectExtra": { "0": "Vous communiquez dans autre réseau",
"1": "Vous communiquez dans un autre dispositif (blogs, jeu vidéo ou autre)" },
"medsoc": { "x": "Comment cette personne utilise-t-elle les médias sociaux de votre point de vue ?" },
"medrel": { "x": "Considérez-vous que vos échange avec cette personne à travers les médias sociaux" },
"interest": { "x": "Sur une échelle de 1 à 5, préciser l'intérêt que vous accordez aux contenue qu'elle partage via les médias sociaux" },
"relmark": { "x": "Sur une échelle de 1 à 5, comment jugez-vous votre relation à cette personne ?" }
},
"contacts": {
"sexe": { "0":"Homme", "1":"Femme", "2":"Indéterminé" },
"age": {
".": "NA",
"0": "5 à 10", "1": "10 à 15", "2": "15 à 20", "3": "20 à 25", "4": "25 à 30",
"5": "30 à 35", "6": "35 à 40", "7": "40 à 45", "8": "45 à 50", "9": "50 à 55",
"10": "55 à 60", "11": "60 à 65", "12": "65 à 70", "13": "70 à 75", "14": "75 à 80",
"15": "80 à 85", "16": "85 à 90", "17": "90 à 95", "18": "95 à 100"
},
"studies1": {
".": "NA",
"0": "Inconnu",
"1": "< BAC",
"2": "BAC",
"3": "BAC+2",
"4": "BAC+3",
"5": "BAC+4 et plus"
},
"studies2": {
".": "NA",
"0": "Aucun diplôme, CEP, BEPC",
"1": "CAP, CAPA, BEP, BEPA, Brevet de compagnon, Diplômes sociaux (aide-soignante, auxiliaire de puériculture, travailleuse familiale)",
"2": "Bac technologique ou professionnel, brevet professionnel ou de technicien",
"3": "Baccalauréat général, brevet supérieur",
"4": "Diplôme universitaire de 1er cycle: Licence, BTS, DUT",
"5": "Diplôme universitaire de 2ème cycle : MASTER, Maîtrise ou DEA, CAPES",
"6": "Doctorat (y compris médecine, pharmacie, dentaire)",
"7": "Diplôme d'ingénieur, diplôme d'une grande école de commerce"
},
"job": {
".": "NA",
"0": "Agriculateur exploitants",
"1": "Artisans",
"2": "Commerçants et assimilés",
"3": "Chefs d'entreprise de 10 salariés ou plus",
"4": "Professions libérales et assimilés",
"5": "Cadres de la fonction publique, professions intellectuelles et artistiques",
"6": "Cadres d'entreprise",
"7": "Professions intermétiaires de l'enseignement, de la santé, de la fonction publique et assimilés",
"8": "Professions intermédiaires administratives et commerciales des entreprises",
"9": "Techniciens",
"10": "Contremaîtres, agents de maîtrise",
"11": "Employés",
"12": "Ouvriers"
},
"context": {
"0": "De la même famille",
"1": "Grandi ensemble",
"2": "Par mon mari/ma femme/relation amoureuse",
"3": "Par mes parents",
"4": "Par mes enfants",
"5": "Par un ami",
"6": "Comme voisin",
"7": "Par dautres membres de la famille",
"8": "Etudes",
"9": "Etudes supérieures",
"10": "Au travail",
"11": "Internet",
"12": "Association",
"13": "Autre"
},
"famsit": {
"0": "Seul",
"1": "Seul avec enfant(s)",
"2": "En couple sans enfants",
"3": "En couple avec enfants"
},
"reltype": {
"0": "Père, mère ou équivalent",
"1": "Frère ou soeur",
"2": "Autre membre de la famille",
"3": "Relation amoureuse",
"4": "Collègue",
"5": "Voisin",
"6": "Ami proche",
"7": "Ami",
"8": "Relation de service (médecin, ...)",
"9": "Inconnu"
},
"dist": {
".": "NA",
"0": "- de 5 minutes",
"1": "de 5 à 15 minutes",
"2": "de 15 à 60 minutes",
"3": "+ d'une heure"
},
"freq": {
"0": "plusieurs fois par semaine",
"1": "1 fois par semaine",
"2": "1 fois par mois",
"3": "1 fois par an ou moins",
"4": "Jamais"
},
"irlfreq": {
"0": "plusieurs fois par semaine",
"1": "1 fois par semaine",
"2": "1 fois par mois",
"3": "1 fois par an ou moins",
"4": "Jamais"
},
"connect": {
"0": "Oui",
"1": "Non"
},
"medsoc": {
"0": "D'une personne qui n'utilise pas ou peu les médias sociaux",
"1": "D'une personne qui consulte des publications mais partage peu de contenus",
"2": "D'une personne qui consulte des publication et partage des contenus de temps en temps",
"3": "D'une personne qui partage beaucoup de contenus et s'exprime fréquemment"
},
"medrel": {
"0": "N'ont aucun effet sur votre relation",
"1": "Vous ont rapproché d'elle",
"2": "Vous ont éloigné d'elle"
},
"interest": {
"0": "1",
"1": "2",
"2": "3",
"3": "4",
"4": "5"
},
"relmark": {
"0": "1",
"1": "2",
"2": "3",
"3": "4",
"4": "5"
}
},
"relations": {
"type": {
"0": "Aucune relation",
"1": "Relation alter-alter",
"2": "Relation cellulaire mineure",
"3": "Relation facebook mineure",
"4": "Top 10 des appels",
"5": "Top 10 des sms",
"6": "Top 10 de l'historique Facebook",
"7": "Top 10 de Facebook Messenger"
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
Contient les équivalences :
id_subject => {
"subject": [données du sujet]
"contact": [liste des id des contacts],
"relations": [liste des relations]
}

View File

@ -1 +0,0 @@
{"2":{"line":0},"4":{"line":1},"5":{"line":2},"6":{"line":3},"7":{"line":4},"8":{"line":5},"9":{"line":6},"10":{"line":7},"11":{"line":8},"12":{"line":9},"13":{"line":10},"14":{"line":11},"15":{"line":12},"1":{"line":13},"3":{"line":14}}

View File

@ -1 +0,0 @@
107

View File

@ -1,131 +0,0 @@
<?php
namespace manager;
class ManagerError{
/* SUCCESS */
const Success = 0;
/* Parsage json */
const ParsingFailed = 1;
/* ResourceDispatcher */
// Drapeaux invalides
const InvalidFlags = 2;
// Fichier inexistant
const UnreachableResource = 3;
/* ModuleRequest */
// Le @path n'est pas renseigne
const MissingPath = 4;
// Verification de la coherence du chemin (existe dans la conf)
const WrongPathModule = 5;
// Module non specifie dans la conf
const UnknownModule = 6;
// Methode non specifie pour ce Module dans la conf
const UnknownMethod = 7;
// Methode inamorcable
const UncallableMethod = 8;
// Erreur de parametre(s)
const ParamError = 9;
// Erreur dans le traitement
const ModuleError = 10;
/* Repo */
// Verification de la coherence du chemin (existe dans la conf)
const WrongPathRepo = 11;
// Module non specifie dans la conf
const UnknownRepo = 12;
// Erreur dans le traitement
const RepoError = 13;
/* Database */
// Erreur lors de la creation d'un objet PDO (connection)
const PDOConnection = 14;
/* API token */
// Token inexistant ou faux
const TokenError = 15;
const PermissionError = 16;
/* Erreur d'UPLOAD */
const UploadError = 17;
// Mauvais format de fichier
const FormatError = 18;
/* Erreur au niveau javascript */
//const JavascriptError = 19; // -> géré en js
// Already done error
const Already = 20;
/* EXPLICITE UN CODE D'ERREUR
*
* @error<Integer> Code d'erreur
*
* @return explicit<String> Description explicite du code d'erreur
*
*/
public static function explicit($error){
switch($error){
case self::Success: return "All right."; break;
case self::ParsingFailed: return "JSON/XML file format error."; break;
case self::InvalidFlags: return "Flags are incorrect."; break;
case self::UnreachableResource: return "Resource unreachable (404)."; break;
case self::MissingPath: return "Path missing."; break;
case self::WrongPathModule: return "Module path incorrect 'module/method'."; break;
case self::WrongPathRepo: return "Repository path incorrect 'repo/method'."; break;
case self::UnknownModule: return "Requested module not found."; break;
case self::UnknownRepo: return "Requested repository not found."; break;
case self::UnknownMethod: return "Requested method not found."; break;
case self::UncallableMethod: return "Cannot call requested method."; break;
case self::ParamError: return "Wrong or missing parameter(s)."; break;
case self::ModuleError: return "Module error."; break;
case self::RepoError: return "Repository error."; break;
case self::PDOConnection: return "Database connection failed."; break;
case self::TokenError: return "Access token wrong, missing or expired."; break;
case self::PermissionError: return "Not granted to do so."; break;
case self::UploadError: return "Upload error."; break;
case self::FormatError: return "Format error."; break;
case self::Already: return "Already done."; break;
default: return "Unknown debug error"; break;
}
// Erreur inconnue
return null;
}
public static function setHttpCode($error){
http_response_code( $error == self::Success ? 200 : 417 );
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,370 +0,0 @@
<?php
namespace orm\core;
use \database\core\DatabaseDriver;
use \orm\core\Rows;
class SQLBuilder{
/* CONSTRUIT LA REQUETE FORMATTEE "SELECT" AVEC UNE LISTE DE CHAMPS
*
* @sqlFields<Array> Liste de champs : [table => field => [func, alias] ]
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function SELECT($sqlFields){
return $sqlFields;
}
/* CONSTRUIT LA REQUETE FORMATTEE "ORDER BY" AVEC UNE LISTE DE CHAMPS
*
* @tables<Array> Liste de champs : [table => fields]
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function ORDERBY($tables){
return $tables;
}
/* CONSTRUIT LA REQUETE FORMATTEE "GROUP BY" AVEC UNE LISTE DE CHAMPS
*
* @tables<Array> Liste de champs : [table => fields]
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function GROUPBY($tables){
return $tables;
}
/* CONSTRUIT LA REQUETE FORMATTEE "FROM" AVEC UNE LISTE DE TABLES
*
* @tables<Array> Liste de tables OU SQL PUR
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function FROM($tables){
return $tables;
}
/* CONSTRUIT LA REQUETE FORMATTEE "UPDATE" AVEC LA TABLE EN QUESTION
*
* @table<String> Table en question
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function UPDATE($table){
return $table;
}
/* CONSTRUIT LA REQUETE FORMATTEE "DELETE" AVEC LA TABLE EN QUESTION
*
* @table<String> Table en question
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function DELETE($table){
return $table;
}
/* CONSTRUIT LA REQUETE TEXTUELLE "IN" AVEC UNE LISTE DE TABLES
*
* @field<Array> Tableau contenant [table, field]
* @array<Array> Valeurs de la clause IN
* @offset<int> Permet de rendre la condition unique (nommage des variables)
* @bound<Arary> Tableau associatif contenant les variables "bindés" -> ajout des champs
*
* @return sql<String> Renvoie le textuel formatté
*
*/
public static function IN($field, $array, $offset=0, &$bound){
/* [0] Initialisation
=========================================================*/
$sql = '';
/* [1] On construit la requête
=========================================================*/
/* (1) Champ */
$sql .= $field[0].'.'.$field[1].' IN (';
/* (2) Valeurs */
$c = 0;
foreach($array as $i=>$value){
if( $c > 0 ) $sql .= ', ';
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset.'_'.$i;
$bound[':'.$field[0].'_x_'.$field[1].'_'.$offset.'_'.$i] = $value;
$c++;
}
return $sql.")";
} /* CONSTRUIT LA REQUETE TEXTUELLE "WHERE" AVEC UNE LISTE DE TABLES
*
* @field<Array> Tableau contenant [table, field]
* @valeur<Array> Valeurs de la clause WHERE [valeur, opérateur]
* @offset<int> Permet de rendre la condition unique (nommage des variables)
* @bound<Arary> Tableau associatif contenant les variables "bindés" -> ajout des champs
*
* @return sql<String> Renvoie le textuel formatté
*
*/
public static function WHERE($field, $value, $offset=0, &$bound){
/* [0] Initialisation
=========================================================*/
$sql = '';
/* [1] On construit la requête
=========================================================*/
/* (1) Chamo */
$sql .= $field[0].'.'.$field[1].' ';
/* (2) Opérateur */
$sql .= substr($value[1], 2, -2).' ';
/* (3) Variable */
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset;
$bound[':'.$field[0].'_x_'.$field[1].'_'.$offset] = $value[0];
return $sql;
} /* CONSTRUIT LA REQUETE FORMATTEE "SET" AVEC UNE LISTE DE TABLES
*
* @values<Array> Tableau de la forme [ field=>value, field2=>value2 ]
* @bound<Arary> Tableau associatif contenant les variables "bindés" -> ajout des champs
*
* @return sql<Array> Renvoie un tableau formatté
*
*/
public static function SET($values, &$bound){
/* [0] Initialisation
=========================================================*/
$sql = [];
/* [1] On construit la requête
=========================================================*/
$c = 0;
foreach($values as $field=>$value){
/* (1) Champ */
$sql[$c] = $field.' = ';
/* (2) Variable */
$sql[$c] .= ':update_'.$field;
$bound[':update_'.$field] = $value;
$c++;
}
return $sql;
} /* CONSTRUIT LA REQUETE FORMATTEE "LIMIT" AVEC UN NOMBRE D'ENTREES
*
* @count<int> Nombre limite
*
* @return sql<Array> Renvoie un sql formatté
*
*/
public static function LIMIT($count=null){
/* [0] Initialisation
=========================================================*/
$sql = '';
/* [1] On construit la requête
=========================================================*/
if( intval($count) == $count )
$sql = intval($count);
return $sql;
}
/* CONSTRUIT LA REQUETE A PARTIR D'UNE REQUETTE FORMATTEE
*
* @request<Arary> Requête formattée
*
* @return sql<String> Requête formattée en SQL
*
*/
public static function BUILD($request){
/* [0] On initialise le retour
=========================================================*/
$sql = '';
/* [1] Gestion dans l'ordre
=========================================================*/
foreach($request as $clause=>$statements){
switch($clause){
/* (1) Clause SELECT
---------------------------------------------------------*/
case 'SELECT':
$sql .= "SELECT ";
$c = 0;
foreach($statements as $table=>$fields){
foreach($fields as $field=>$select){
/* (1) On construit le nom du champ */
$fieldStr = "$table.$field";
/* (2) On ajout le DISTINCT s'il y a lieu */
if( isset($select[1]) && $select[1] )
$fieldStr = "DISTINCT $fieldStr";
/* (3) On ajoute la fonction d'aggrégation s'il y a lieu */
if( isset($select[0]) && !is_null($select[0]) )
$fieldStr = substr($select[0], 2, -2)."($fieldStr)";
/* (4) On ajoute l'alias */
// si défini
if( isset($select[2]) )
$fieldStr = "$fieldStr as ".$select[2];
// si func et non défini
elseif( isset($select[0]) && !is_null($select[0]) )
$fieldStr = "$fieldStr as agg_$field";
else
$fieldStr = "$fieldStr";
$sql .= ($c==0) ? "$fieldStr" : ", $fieldStr";
$c++;
}
}
$sql .= "\n";
break;
/* (2) Clause FROM
---------------------------------------------------------*/
case 'FROM':
$sql .= 'FROM ';
$c = 0;
foreach($statements as $field){
$sql .= ($c==0) ? "$field" : ", $field";
$c++;
}
$sql .= "\n";
break;
/* (3) Clause WHERE
---------------------------------------------------------*/
case 'WHERE':
$c = 0;
foreach($statements as $field){
$sql .= ($c==0) ? "WHERE $field\n" : "AND $field\n";
$c++;
}
$sql .= ($c==0) ? '' : "\n";
break;
/* (4) Clause LIMIT
---------------------------------------------------------*/
case 'LIMIT':
if( is_numeric($statements) )
$sql .= 'LIMIT '.intval($statements);
break;
/* (5) Clause DELETE
---------------------------------------------------------*/
case 'DELETE':
$sql .= "DELETE FROM $statements\n";
break;
/* (6) Clause UPDATE
---------------------------------------------------------*/
case 'UPDATE':
$sql .= "UPDATE $statements\n";
break;
/* (7) Clause SET
---------------------------------------------------------*/
case 'SET':
$c = 0;
foreach($statements as $field){
$sql .= ($c>0) ? "\n, $field" : "SET $field";
$c++;
}
$sql .= "\n";
break;
/* (8) Clause GROUP BY
---------------------------------------------------------*/
case 'GROUPBY':
$sql .= 'GROUP BY ';
$c = 0;
foreach($statements as $table=>$fields)
foreach($fields as $field){
$sql .= ($c==0) ? "$table.$field" : ", $table.$field";
$c++;
}
$sql .= "\n";
break;
/* (9) Clause ORDER BY
---------------------------------------------------------*/
case 'ORDERBY':
// si aucun ORDER BY, on quitte
if( count($statements) == 0 )
continue;
$sql .= 'ORDER BY ';
$c = 0;
foreach($statements as $table=>$fields)
foreach($fields as $field=>$order){
if( $c > 0 ) $sql .= ', ';
$sql .= "$table.$field ". substr($order, 2, -2);
$c++;
}
$sql .= "\n";
break;
}
}
/* [2] On retourne le résultat
=========================================================*/
return $sql;
}
}
?>

View File

@ -1,132 +0,0 @@
<?php
namespace orm\core;
use \database\core\DatabaseDriver;
use \manager\ManagerError;
use \orm\core\Rows;
// CLASSE MAITRE
class Table{
/* RENVOIE LES DONNEES D'UNE TABLE
*
* @table<String> Nom de la table à selectionner
* @driver<String> [optional] DatabaseDriver label
*
* @return this<ORM> Retourne une instance de l'ORM
*
*/
public static function get($table_name, $driver=null){
/* [0] Initialisation des attributs
=========================================================*/
$schema = [
'database' => DatabaseDriver::get($driver)->getConfig()['dbname'],
'table' => null,
'columns' => null
];
/* [1] On vérifie que la table existe
=========================================================*/
/* (1) Requête */
$checkTable = DatabaseDriver::getPDO($driver)->query("SHOW tables FROM ".$schema['database']);
$checkTableResult = DatabaseDriver::delNumeric( $checkTable->fetchAll() );
/* (2) On met en forme les données */
$tables = [];
foreach($checkTableResult as $table)
$tables[] = $table['Tables_in_'.$schema['database']];
/* (3) Si n'existe pas, on renvoie une erreur */
if( !in_array($table_name, $tables) )
throw new \Exception('[*] Unknown table.');
/* (4) On enregistre les données */
$schema['table'] = $table_name;
/* [2] Si la table existe, on récupère les colonnes
=========================================================*/
/* (1) On récupère les colonnes */
$getColumns = DatabaseDriver::getPDO($driver)->query("SHOW columns FROM ".$schema['database'].'.'.$table_name);
$columnsResult = DatabaseDriver::delNumeric( $getColumns->fetchAll() );
/* (2) On met en forme les données */
$columns = [];
foreach($columnsResult as $col){
// On formatte le type //
$type = $col['Type'];
if( preg_match('/^(int|float|varchar|text)/i', $type, $m) )
$type = strtolower($m[1]);
// On ajoute la colonne //
$columns[$col['Field']] = [
'type' => $type,
'primary' => $col['Key'] == 'PRI'
];
}
/* (3) Si on trouve rien, on envoie une erreur */
if( !is_array($columns) || count($columns) == 0 )
throw new \Exception('[*] Cannot fetch columns');
/* (4) On enregistre les colonnes */
$schema['columns'] = $columns;
/* [3] On récupère les clés étrangères
=========================================================*/
/* (1) On récupère le texte du 'CREATE TABLE' */
$getCreateTable = DatabaseDriver::getPDO($driver)->query("show create table ".$table_name);
if( is_bool($getCreateTable) )
throw new \Exception('[*] Cannot fetch constrains');
$create_table = $getCreateTable->fetch()['Create Table'];
/* (2) On découpte en lignes */
$create_table_lines = explode("\n", $create_table);
/* (3) Pour chaque ligne, si c'est une contrainte, on l'enregistre dans la colonne associée */
foreach($create_table_lines as $i=>$line)
if( preg_match('/CONSTRAINT `.+` FOREIGN KEY \(`(.+)`\) REFERENCES `(.+)` \(`(.+)`\)+/i', $line, $m) )
$schema['columns'][$m[1]]['references'] = [$m[2], $m[3]];
/* [3] On renvoie une instance de 'Rows'
=========================================================*/
return new Rows($schema, $driver);
}
};
// // USE CASE :: ACCESS TABLE
// ORM::Table = ORM::Table('user');
//
// // USE CASE :: getBy{ATTRIBUTE}
// ORM::Row = ORM::Table->getByUsername('someUsername'); // ORM_FETCH by default
// ORM::Row = ORM::Table->getByUsername('someUsername', ORM_FETCH);
// ORM::Column = ORM::Table->getByUsername('someUsername', ORM_FETCHALL);
//
// // USE CASE :: getById -> primary key(s)
// ORM::Row = ORM::Table->getById(5, 7); // because PRIMARY KEY is composed by '5' and '7'
//
// // USE CASE :: getAll
// ORM::Column = ORM::Table->getAll();
//
// // USE CASE :: select(FIELD)
// mixed = ORM::Row->select('username');
//
// // USE CASE :: select(FIELD1, FIELD2, ...)
// mixed = ORM::Row->select('id_user', 'username');

View File

@ -1,852 +0,0 @@
{
"subject": {
"subject_id": "1"
},
"contacts": {
"0": {
"uid": 0,
"username": "Ismael",
"existing": ".",
"hash": 1627075103
},
"1": {
"uid": 1,
"username": "Rosa",
"existing": ".",
"hash": 498192491
},
"2": {
"uid": 2,
"username": "Judith",
"existing": ".",
"hash": 1451575763
},
"3": {
"uid": 3,
"username": "Alex",
"existing": ".",
"hash": 2660323475
},
"4": {
"uid": 4,
"username": "Adri",
"existing": ".",
"hash": 2559488290
},
"5": {
"uid": 5,
"username": "Fred",
"existing": ".",
"hash": 4039469544
},
"6": {
"uid": 6,
"username": "Shanone",
"existing": ".",
"hash": 28222849
},
"7": {
"uid": 7,
"username": "Manon",
"existing": ".",
"hash": 336712847
},
"8": {
"uid": 8,
"username": "Java",
"existing": ".",
"hash": 1359920097
},
"9": {
"uid": 9,
"username": "Thalees",
"existing": ".",
"hash": 2826325950
},
"10": {
"uid": 10,
"username": "Crème",
"existing": ".",
"hash": 4211503315
},
"11": {
"uid": 11,
"username": "Margaux",
"existing": ".",
"hash": 3915760272
},
"12": {
"uid": 12,
"username": "Anthony",
"existing": ".",
"hash": 410858384
},
"13": {
"uid": 13,
"username": "Lino",
"existing": ".",
"hash": 2457771762
}
},
"mini": {},
"fiches": {
"0": {
"sexe": "0",
"age": "0",
"job": "10",
"famsit": "0",
"studies": "",
"reltype": "0",
"reltypeSpecial": "",
"city": "10",
"quartier": "0",
"cp": "10000",
"loc": "0",
"duration": [
"0",
"10"
],
"context": "0",
"contextSpecial": [
"",
"",
""
],
"freq": [
"2",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 0,
"contact": 0,
"hash": 3977448909,
"valid": true,
"timestamp": 1478429171540
},
"1": {
"sexe": "1",
"age": "1",
"job": "21",
"famsit": "0",
"studies": "01",
"reltype": "1",
"reltypeSpecial": "",
"city": "11",
"quartier": "1",
"cp": "10001",
"loc": "1",
"duration": [
"1",
"11"
],
"context": "1",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 1,
"contact": 1,
"hash": 3439453096,
"valid": true,
"timestamp": 1478429171592
},
"2": {
"sexe": "2",
"age": "2",
"job": "22",
"famsit": "0",
"studies": "02",
"reltype": "2",
"reltypeSpecial": "",
"city": "12",
"quartier": "2",
"cp": "10002",
"loc": "2",
"duration": [
"2",
"12"
],
"context": "2",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 2,
"contact": 2,
"hash": 2538679406,
"valid": true,
"timestamp": 1478429171636
},
"3": {
"sexe": "0",
"age": "3",
"job": "23",
"famsit": "0",
"studies": "03",
"reltype": "3",
"reltypeSpecial": "",
"city": "13",
"quartier": "3",
"cp": "10003",
"loc": "3",
"duration": [
"3",
"13"
],
"context": "3",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 3,
"contact": 3,
"hash": 1448962210,
"valid": true,
"timestamp": 1478429171695
},
"4": {
"sexe": "1",
"age": "4",
"job": "31",
"famsit": "0",
"studies": "04",
"reltype": "4",
"reltypeSpecial": "",
"city": "14",
"quartier": "4",
"cp": "10004",
"loc": "0",
"duration": [
"4",
"14"
],
"context": "4",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 4,
"contact": 4,
"hash": 3000740570,
"valid": true,
"timestamp": 1478429171741
},
"5": {
"sexe": "2",
"age": "5",
"job": "32",
"famsit": "0",
"studies": "05",
"reltype": "5",
"reltypeSpecial": "",
"city": "15",
"quartier": "5",
"cp": "10005",
"loc": "1",
"duration": [
"5",
"15"
],
"context": "5",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 5,
"contact": 5,
"hash": 1185776066,
"valid": true,
"timestamp": 1478429171805
},
"6": {
"sexe": "0",
"age": "6",
"job": "36",
"famsit": "0",
"studies": "06",
"reltype": "6",
"reltypeSpecial": "",
"city": "16",
"quartier": "6",
"cp": "10006",
"loc": "2",
"duration": [
"6",
"16"
],
"context": "6",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 6,
"contact": 6,
"hash": 3580676315,
"valid": true,
"timestamp": 1478429171858
},
"7": {
"sexe": "1",
"age": "7",
"job": "41",
"famsit": "0",
"studies": "07",
"reltype": "7",
"reltypeSpecial": "",
"city": "17",
"quartier": "7",
"cp": "10007",
"loc": "3",
"duration": [
"7",
"17"
],
"context": "7",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 7,
"contact": 7,
"hash": 3989377397,
"valid": true,
"timestamp": 1478429171905
},
"8": {
"sexe": "2",
"age": "8",
"job": "46",
"famsit": "0",
"studies": "08",
"reltype": "10",
"reltypeSpecial": "autre",
"city": "18",
"quartier": "8",
"cp": "10008",
"loc": "0",
"duration": [
"8",
"18"
],
"context": "8",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 8,
"contact": 8,
"hash": 594979660,
"valid": true,
"timestamp": 1478429171955
},
"9": {
"sexe": "0",
"age": "9",
"job": "47",
"famsit": "0",
"studies": "09",
"reltype": "0",
"reltypeSpecial": "",
"city": "19",
"quartier": "9",
"cp": "10009",
"loc": "1",
"duration": [
"9",
"19"
],
"context": "9",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 9,
"contact": 9,
"hash": 1585642677,
"valid": true,
"timestamp": 1478429172030
},
"10": {
"sexe": "1",
"age": "10",
"job": "48",
"famsit": "0",
"studies": "10",
"reltype": "1",
"reltypeSpecial": "",
"city": "20",
"quartier": "10",
"cp": "10010",
"loc": "2",
"duration": [
"10",
"110"
],
"context": "10",
"contextSpecial": [
"",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 10,
"contact": 10,
"hash": 350296051,
"valid": true,
"timestamp": 1478429172091
},
"11": {
"sexe": "2",
"age": "11",
"job": "51",
"famsit": "0",
"studies": "11",
"reltype": "2",
"reltypeSpecial": "",
"city": "21",
"quartier": "11",
"cp": "10011",
"loc": "3",
"duration": [
"11",
"111"
],
"context": "11",
"contextSpecial": [
"internet",
"",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 11,
"contact": 11,
"hash": 2556603658,
"valid": true,
"timestamp": 1478429172141
},
"12": {
"sexe": "0",
"age": "12",
"job": "54",
"famsit": "0",
"studies": "",
"reltype": "3",
"reltypeSpecial": "",
"city": "22",
"quartier": "12",
"cp": "10012",
"loc": "0",
"duration": [
"12",
"112"
],
"context": "12",
"contextSpecial": [
"",
"association",
""
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 12,
"contact": 12,
"hash": 1254626617,
"valid": true,
"timestamp": 1478429172191
},
"13": {
"sexe": "1",
"age": "13",
"job": "55",
"famsit": "0",
"studies": "01",
"reltype": "4",
"reltypeSpecial": "",
"city": "23",
"quartier": "13",
"cp": "10013",
"loc": "1",
"duration": [
"13",
"113"
],
"context": "13",
"contextSpecial": [
"",
"",
"autre"
],
"freq": [
"4",
"9",
"14",
"19",
"24"
],
"connect": [
"1",
"3",
"5",
"7",
"9",
"11"
],
"connectSpecial": [
"",
""
],
"uid": 13,
"contact": 13,
"hash": 1821404092,
"valid": true,
"timestamp": 1478429175971
}
},
"matrice": {
"0": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"1": [
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13
],
"2": [
3,
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"3": [
4,
5,
6,
7,
8,
9,
10,
11,
12
],
"4": [
5,
6,
7,
8,
9,
10,
11,
12
],
"5": [
6,
7,
8,
9,
10,
11,
12
],
"6": [
7,
8,
9,
11,
12
],
"7": [
8,
9,
10,
11,
12
],
"8": [
9,
10,
11,
12
],
"9": [
10,
11,
12
],
"10": [
11
]
}
}

0
config/.htaccess Executable file → Normal file
View File

View File

@ -1,31 +0,0 @@
{
"default": {
"local": {
"host" : "localhost",
"dbname" : "nxtic",
"user" : "php",
"password" : "Qt358nUdyeTxLDM8"
},
"remote": {
"host" : "localhost",
"dbname" : "nxtic",
"user" : "nxtic-php",
"password" : "wxcvbn"
}
},
"lab-surveys": {
"local": {
"host" : "listic-lab-surveys.irit.fr",
"dbname" : "lab-surveys",
"user" : "lab-surveys",
"password" : "wxcvbn"
},
"remote": {
"host" : "listic-lab-surveys.irit.fr",
"dbname" : "lab-surveys",
"user" : "lab-surveys",
"password" : "wxcvbn"
}
}
}

6
config/database-local.json Executable file
View File

@ -0,0 +1,6 @@
{
"host" : "localhost",
"dbname" : "socioview",
"user" : "php",
"password" : "Qt358nUdyeTxLDM8"
}

6
config/database.json Executable file
View File

@ -0,0 +1,6 @@
{
"host" : "xdrm.io",
"dbname" : "socioview",
"user" : "php",
"password" : "QbzjZACndQM6NmuD"
}

View File

@ -0,0 +1,11 @@
{
"svg": "image/svg+xml",
"jpg": "image/jpeg",
"png": "image/png",
"css": "text/css",
"js": "text/javascript",
"json": "application/json"
}

15
config/dispatcher-tree.json Executable file
View File

@ -0,0 +1,15 @@
{
"api" : "/api",
"st" : "/src/static",
"dy" : "/src/dynamic",
"conf" : "/config",
"css" : "/css",
"js" : "/js",
"highcharts": "/js/lib/highcharts/js",
"upload": "/src/upload"
}

24
config/menu.json Executable file → Normal file
View File

@ -1,6 +1,6 @@
[
{ "icon": "/src/static/menu-side/home.svg", "text": "Tableau de bord",
{ "icon": "f/svg/home/st/menu-side", "text": "Tableau de bord",
"attributes": { "data-link": "dashboard", "class": "sep" },
"children": [
@ -12,11 +12,11 @@
},
{ "icon": "/src/static/menu-side/input.svg", "text": "Acquisition",
{ "icon": "f/svg/input/st/menu-side", "text": "Acquisition",
"attributes": { "data-link": "input" },
"children": [
{ "permissions": ["admin"], "text": "Chercher un sujet",
{ "permissions": ["admin"], "text": "Chercher le sujet",
"attributes": { "data-sublink": "survey" } },
{ "permissions": ["admin"], "text": "Données cellulaire",
"attributes": { "data-sublink": "phone" } },
@ -26,13 +26,25 @@
},
{ "icon": "/src/static/menu-side/analytics.svg", "text": "Données",
{ "icon": "f/svg/charts/st/menu-side", "text": "Graphiques",
"attributes": { "data-link": "charts", "class": "sep" },
"children": [
{ "permissions": [], "text": "Données cellulaires",
"attributes": { "data-sublink": "phone" } },
{ "permissions": [], "text": "Réseau",
"attributes": { "data-sublink": "network" } }
]
},
{ "icon": "f/svg/analytics/st/menu-side", "text": "Données",
"attributes": { "data-link": "data" },
"children": [
{ "permissions": [], "text": "Export des données",
"attributes": { "data-sublink": "export" } },
{ "permissions": [], "text": "Export Gephi",
{ "permissions": [], "text": "Export des graphiques",
"attributes": { "data-sublink": "charts" } },
{ "permissions": [], "text": "Statistiques",
"attributes": { "data-sublink": "analytics" } }
@ -40,7 +52,7 @@
},
{ "icon": "/src/static/menu-side/settings.svg", "text": "Paramètres",
{ "icon": "f/svg/settings/st/menu-side", "text": "Paramètres",
"attributes": { "data-link": "settings" },
"children": [

View File

@ -12,9 +12,6 @@
"parameters": {
"p1": { "description": "Texte", "type": "text" },
"p2": { "description": "Entier positif", "type": "id" }
},
"output": {
"receivedArguments": { "description": "Liste des arguments reçus par la méthode", "type": "array<mixed>" }
}
},
@ -34,17 +31,10 @@
"parameters": {}
},
"markdown": {
"description": "Retourne une description en markdown des différents modules de l'API",
"permissions": [],
"options": { "download": true },
"parameters": {}
},
"apiBlueprint": {
"description": "Retourne une documentation de l'API au format API Blueprint.",
"permissions": [],
"options": { "download": true },
"parameters": {}
}
},
@ -56,50 +46,44 @@
"parameters": {
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(3,50)" },
"password": { "description": "Mot de passe", "type": "text" }
},
"output": {
"id_user": { "description": "Identifiant de l'utilisateur connecté", "type": "id" }
}
},
"logout": {
"description": "Deconnexion",
"permissions": ["admin"],
"permissions": [],
"parameters": {}
},
"getById": {
"description": "Retourne les informations d'un utilisateur.",
"permissions": ["admin"],
"parameters": {
"id_user": { "description": "UID de l'utilisateur recherche.", "type": "id" }
},
"output": {
"user": { "description": "Propriétés de l'utilisateur en question.", "type": "array<mixed>" }
}
},
"getAll": {
"description": "Retourne les informations de tous les utilisateurs.",
"permissions": ["admin"],
"parameters": {},
"output": {
"users": { "description": "Propriétés de tous les utilisateurs existants.", "type": "array<array<mixed>>" }
"parameters": {}
},
"create": {
"description": "Creation d'un nouvel utilisateur.",
"permissions": ["admin"],
"parameters": {
"login": { "description": "Login de l'utilisateur, 30 caracteres maximum.", "type": "varchar(3,30)" },
"password": { "description": "Mot de passe de l'utilisateur.", "type": "text" },
"mail": { "description": "Adresse mail de l'utilisateur.", "type": "mail" },
"reference": { "description": "UID d'une personne d'un sondage, peut etre vide.", "type": "text" },
"permission": { "description": "Permissions de l'utilisateur : 'admin' ou 'subject'", "type": "varchar(5,7)" }
}
},
"create": {
"description": "Creation d'un nouvel administrateur.",
"permissions": ["admin"],
"parameters": {
"login": { "description": "Login de l'administrateur, 30 caracteres maximum.", "type": "varchar(3,30)" },
"password": { "description": "Mot de passe de l'administrateur.", "type": "text" },
"mail": { "description": "Adresse mail de l'administrateur.", "type": "mail" }
},
"output": {
"id_user": { "description": "Identifiant de l'administrateur créé", "type": "id" }
}
},
"remove": {
"description": "Suppression d'un utilisateur.",
@ -108,11 +92,88 @@
"id_user": { "description": "UID de l'utilisateur", "type": "id" }
}
}
},
"call_log": {
"unserialize": {
"description": "Recupere le contenu d'un fichier XML de journal d'appel s'il a été importé au préalable.",
"permissions": [],
"parameters": {
"phone_number": { "description": "Numéro de téléphone de l'interrogé.", "type": "number" }
}
}
},
"chart": {
"direction": {
"description": "Renvoie les données pour un graphique sur les sens de communications",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"type": {
"description": "Renvoie les données pour un graphique sur les types de communications",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"sexe": {
"description": "Renvoie les données pour un graphique sur le sexe des contacts",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"ages": {
"description": "Renvoie les données pour un graphique sur les ages des contacts",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"relations": {
"description": "Renvoie les données pour un graphique sur les types de relations des contacts",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"weekdays": {
"description": "Renvoie les données pour un graphique sur les communication parmi les jours de la semaine",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"duration": {
"description": "Renvoie les données pour un graphique sur les temps de communication",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
},
"timeofday": {
"description": "Renvoie les données pour un graphique sur les heures de communication",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Identifiant du sujet à étudier,", "type": "id" }
}
}
},
"token": {
"remove": {
"description": "Suppression d'un token d'id donne.",
"permissions": ["admin"],
@ -121,60 +182,63 @@
}
},
"generate": {
"description": "Création d'un token de nom et de durée donnée",
"permissions": ["admin"],
"parameters": {
"name": { "description": "Nom attribué au token", "type": "varchar(3,50)" },
"duration": { "description": "Durée du token en nombre de jours", "type": "id" }
},
"output": {
"id_token": { "description": "Identifiant du token généré", "type": "id" }
}
}
},
"subject": {
"search": {
"description": "Recherche d'un sujet par nom",
"getById": {
"description": "Retourne les informations d'un sujet.",
"permissions": ["admin"],
"parameters": {
"name": { "description": "Le nom du sujet", "type": "varchar(0,50)" }
},
"output": {
"results": { "description": "Liste des sujet associés aux mots-clés.", "type": "array<array<mixed>>" }
"id_subject": { "description": "UID du sujet recherche.", "type": "id" }
}
},
"getFriends": {
"description": "Retourne les informations de tous les contacts renseignés par un sujet d'enquête.",
"permissions": ["admin"],
"parameters": {
"subject_id": { "description": "Identifiant du sujet duquel on veut les amis.", "type": "id" }
},
"output": {
"subjects": { "description": "Liste des sujet renseignés par le sujet donné.", "type": "array<array<mixed>>" }
}
},
"getAll": {
"description": "Retourne les informations de tous les sujets.",
"permissions": ["admin"],
"parameters": {},
"output": {
"subjects": { "description": "Liste de tous les sujet.", "type": "array<array<mixed>>" }
}
"parameters": {}
},
"create": {
"description": "Creation d'un nouveau sujet.",
"permissions": ["admin"],
"parameters": {
"name" : { "description": "Pseudo du sujet, 50 caracteres maximum.", "type": "varchar(1,50)" }
"username" : { "description": "Pseudo du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"firstname" : { "description": "Prénom du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"lastname" : { "description": "Nom du sujet, 30 caracteres maximum.", "type": "varchar(0,30)" },
"id_facebook": { "description": "Id facebook du sujet (optionnel).", "type": "id", "optional": true },
"number" : { "description": "Numéro de téléphone du sujet (optionnel).", "type": "number", "optional": true }
}
},
"output": {
"id_subject": { "description": "Identifiant du sujet créé.", "type": "id" }
"merge": {
"description": "Fusion de 2 sujets qui sont en fait la même personne.",
"permissions": ["admin"],
"parameters": {
"id_source": { "description": "UID de l'utilisateur doublon", "type": "id" },
"id_target": { "description": "UID de l'utilisateur déjà existant", "type": "id" }
}
},
"remove": {
"description": "Suppression d'un sujet d'id donné.",
"permissions": ["admin"],
"parameters": {
"id_subject": { "description": "UID du sujet à supprimer.", "type": "id" }
}
}
@ -182,33 +246,16 @@
"input": {
"survey": {
"description": "Enregistre les données d'une enquête téléphonique.",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Données du sujet (id, etc)", "type": "array<mixed>" },
"contacts": { "description": "Données des contacts de l'enquête.", "type": "array<array>" },
"mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array<array>" },
"fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" },
"matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true }
},
"output": {
"subject_id": { "description": "Identifiant du sujet complété", "type": "id" }
}
},
"phone": {
"description": "Enregistre les données d'une enquête téléphonique.",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Données du sujet (id, etc)", "type": "array<mixed>" },
"subject": { "description": "Données sur le sujet de l'enquête.", "type": "array" },
"contacts": { "description": "Données des contacts de l'enquête.", "type": "array<array>" },
"mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array<array>" },
"fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" },
"matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true }
},
"output": {
"subject_id": { "description": "Identifiant du sujet complété", "type": "id" }
}
},
@ -216,14 +263,12 @@
"description": "Enregistre les données d'une enquête facebook.",
"permissions": ["admin"],
"parameters": {
"subject": { "description": "Données du sujet (id, etc)", "type": "array<mixed>" },
"subject": { "description": "Données sur le sujet de l'enquête.", "type": "array" },
"contacts": { "description": "Données des contacts de l'enquête.", "type": "array<array>" },
"mini": { "description": "Mini fiches relations sur les contacts de l'enquête.", "type": "array<array>" },
"fiches": { "description": "Fiches relation sur les plus proches contacts de l'enquête.", "type": "array<array>" },
"matrice": { "description": "Matrice contenant les relations entre les plus proches contacts", "type": "array<array>", "optional": true }
},
"output": {
"subject_id": { "description": "Identifiant du sujet complété", "type": "id" }
}
}
},
@ -231,14 +276,30 @@
"upload": {
"call_log": {
"description": "Upload d'un journal d'appel au format .xml.",
"permissions": ["admin"],
"parameters": {
"phone_number": { "description": "Numéro de téléphone de l'interrogé.", "type": "number" },
"file": { "description": "Fichier du journal d'appel.", "type": "FILE" }
}
},
"iexplorer_convert": {
"description": "Convertisseur .txt (iExplorer) vers .xml (Call Log)",
"permissions": ["admin"],
"parameters": {
"file": { "description": "Fichier exporté de iExplorer", "type": "FILE" }
}
},
"local_data": {
"description": "Upload d'une sauvegarde de formulaire local au format .json.",
"permissions": ["admin"],
"parameters": {
"file": { "description": "Fichier du de sauvegarde de formulaire local.", "type": "FILE" }
},
"output": {
"local_data": { "description": "Contenu formatté du fichier.", "type": "array<mixed>"}
}
}
@ -253,27 +314,11 @@
"options": { "download": true },
"parameters": {
"subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array<id>", "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 }
}
},
"chart": {
"description": "Download des données relatives aux sujets donnés sur le principe noeuds+liens.",
"permissions": ["admin"],
"options": { "download": true },
"parameters": {
"subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array<id>", "optional": true },
"all": { "description": "Si vaut TRUE, renvoie tous les sujets enregistrés.", "type": "boolean", "optional": true }
}
},
"menu": {
"description": "Contenu de la configuration du menu.",
"permissions": ["admin"],
"parameters": {},
"output": {
"menu": { "description": "Contenu formatté de la configuration du menu.", "type": "array<mixed>" }
}
}
}
}

View File

@ -9,6 +9,34 @@
"remove"
],
"subject": [
"getById",
"getAll",
"create",
"merge",
"remove",
"link"
],
"relation": [
"getAll",
"getById",
"create",
"remove"
],
"category": [
"getAll",
"getById",
"getByIntitule",
"getOrCreate"
],
"Personnes": [
"getById"
],
"token": [
"getAll",
"getById",

4
config/server.json Executable file → Normal file
View File

@ -1,12 +1,12 @@
{
"local" : {
"host" : "http://nxtic/",
"host" : "http://socioview",
"root" : "/"
},
"remote" : {
"host" : "https://nxtic.xdrm.io/",
"host" : "https://socioview.xdrm.io",
"root" : "/"
}

4
config/upload-auth.json Executable file → Normal file
View File

@ -1,6 +1,8 @@
{
"root": "/src/upload",
"directories": [
"local_data"
"call_log",
"local_data",
"convert_iexplorer"
]
}

1
config/views.json Executable file → Normal file
View File

@ -2,5 +2,6 @@
"dashboard",
"input",
"analytics",
"charts",
"settings"
]

View File

@ -4,7 +4,7 @@
$theme-bg: #e8e8e8;
$theme-bg-primary: #ffffff;
$theme-fg: #515151;
$theme-fg-primary: #0e6dbf;
$theme-fg-primary: #399ced;
/* (2) COULEURS DE THEME $DARK */
$dark-bg: #313541;
@ -16,14 +16,12 @@ $header-dark: #F8F8FA;
/* (3) Couleurs du theme pour la timeline */
$timeline-color: #738394;
$timeline-0: #0e6dbf;
$timeline-0: #399ced;
$timeline-1: #e64e3e;
$timeline-2: #d54b28;
$timeline-2: #10baa3;
$timeline-3: #b14be7;
$timeline-4: #053b5d;
$timeline-fb: #3b5998;
/* [2] DIMENSIONS
=========================================================*/
@ -53,5 +51,5 @@ $header-height: 4em;
=========================================================*/
// Transforme une couleur hex en string sans le #
@function color-str($color){
@return str-slice("#{$color}", 2, str-length("#{$color}"));
@return str-slice(#{$color}, 2, str-length(#{$color}));
}

14
css/constants/compact.css Normal file
View File

@ -0,0 +1,14 @@
/* [1] COULEURS
=========================================================*/
/* (1) COULEURS DU THEME $DEFAULT */
/* (2) COULEURS DE THEME $DARK */
/* (3) Couleurs du theme pour la timeline */
/* [2] DIMENSIONS
=========================================================*/
/* (1) Layout de base */
/* [3] Mixins
=========================================================*/
/* [4] Functions
=========================================================*/
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiY29tcGFjdC5jc3MiLAoJInNvdXJjZXMiOiBbCgkJIi4uL2NvbnN0YW50cy5zY3NzIgoJXSwKCSJzb3VyY2VzQ29udGVudCI6IFsKCQkiLyogWzFdIENPVUxFVVJTXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIENPVUxFVVJTIERVIFRIRU1FICRERUZBVUxUICovXG4kdGhlbWUtYmc6ICAgICAgICAgI2U4ZThlODtcbiR0aGVtZS1iZy1wcmltYXJ5OiAjZmZmZmZmO1xuJHRoZW1lLWZnOiAgICAgICAgICM1MTUxNTE7XG4kdGhlbWUtZmctcHJpbWFyeTogIzM5OWNlZDtcblxuLyogKDIpIENPVUxFVVJTIERFIFRIRU1FICREQVJLICovXG4kZGFyay1iZzogICAgICAgICAjMzEzNTQxO1xuJGRhcmstYmctcHJpbWFyeTogIzI5MjgyZTtcbiRkYXJrLWZnOiAgICAgICAgICM5MzkzOTM7XG4kZGFyay1mZy1wcmltYXJ5OiAjZmZmZmZmO1xuXG4kaGVhZGVyLWRhcms6ICAgICAjMzMzMzMzO1xuXG4vKiAoMykgQ291bGV1cnMgZHUgdGhlbWUgcG91ciBsYSB0aW1lbGluZSAqL1xuJHRpbWVsaW5lLWNvbG9yOiAjYWFhO1xuJHRpbWVsaW5lLTE6ICNlNjRlM2U7XG4kdGltZWxpbmUtMjogIzEwYmFhMztcbiR0aW1lbGluZS0zOiAjYjE0YmU3O1xuJHRpbWVsaW5lLTQ6ICMwNTNiNWQ7XG5cblxuLyogWzJdIERJTUVOU0lPTlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiAoMSkgTGF5b3V0IGRlIGJhc2UgKi9cbiRtZW51LXNpZGUtd2lkdGg6IDE1ZW07XG4kaGVhZGVyLWhlaWdodDogICA0ZW07XG5cblxuXG4vKiBbM10gTWl4aW5zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuQG1peGluIHRyYW5zZm9ybSgkdmFsdWUuLi4pIHtcbiAgICB0cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1vei10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW8tdHJhbnNmb3JtOiAkdmFsdWU7XG5cdC1tcy10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LXdlYmtpdC10cmFuc2Zvcm06ICR2YWx1ZTtcbn1cblxuXG5AbWl4aW4gdHJhbnNpdGlvbigkdmFsdWUuLi4pIHtcbiAgICAtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcbiAgICB0cmFuc2l0aW9uOiAkdmFsdWU7XG59XG5cbi8qIFs0XSBGdW5jdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vLyBUcmFuc2Zvcm1lIHVuZSBjb3VsZXVyIGhleCBlbiBzdHJpbmcgc2FucyBsZSAjXG5AZnVuY3Rpb24gY29sb3Itc3RyKCRjb2xvcil7XG4gICAgQHJldHVybiBzdHItc2xpY2UoI3skY29sb3J9LCAyLCBzdHItbGVuZ3RoKCN7JGNvbG9yfSkpO1xufVxuIgoJXSwKCSJtYXBwaW5ncyI6ICJBQUFBOzJEQUMyRDtBQUMzRCxvQ0FBb0M7QUFNcEMsaUNBQWlDO0FBUWpDLDRDQUE0QztBQVE1QzsyREFDMkQ7QUFDM0Qsd0JBQXdCO0FBTXhCOzJEQUMyRDtBQWUzRDsyREFDMkQiLAoJIm5hbWVzIjogW10KfQ== */

View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "compact.css",
"sources": [
"../constants.scss"
],
"sourcesContent": [
"/* [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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #aaa;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n @return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n"
],
"mappings": "AAAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAQ5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AAe3D;2DAC2D",
"names": []
}

View File

@ -0,0 +1,14 @@
/* [1] COULEURS
=========================================================*/
/* (1) COULEURS DU THEME $DEFAULT */
/* (2) COULEURS DE THEME $DARK */
/* (3) Couleurs du theme pour la timeline */
/* [2] DIMENSIONS
=========================================================*/
/* (1) Layout de base */
/* [3] Mixins
=========================================================*/
/* [4] Functions
=========================================================*/
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiZXhwYW5kZWQuY3NzIiwKCSJzb3VyY2VzIjogWwoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8qIFsxXSBDT1VMRVVSU1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qICgxKSBDT1VMRVVSUyBEVSBUSEVNRSAkREVGQVVMVCAqL1xuJHRoZW1lLWJnOiAgICAgICAgICNlOGU4ZTg7XG4kdGhlbWUtYmctcHJpbWFyeTogI2ZmZmZmZjtcbiR0aGVtZS1mZzogICAgICAgICAjNTE1MTUxO1xuJHRoZW1lLWZnLXByaW1hcnk6ICMzOTljZWQ7XG5cbi8qICgyKSBDT1VMRVVSUyBERSBUSEVNRSAkREFSSyAqL1xuJGRhcmstYmc6ICAgICAgICAgIzMxMzU0MTtcbiRkYXJrLWJnLXByaW1hcnk6ICMyOTI4MmU7XG4kZGFyay1mZzogICAgICAgICAjOTM5MzkzO1xuJGRhcmstZmctcHJpbWFyeTogI2ZmZmZmZjtcblxuJGhlYWRlci1kYXJrOiAgICAgI0Y4RjhGQTtcblxuLyogKDMpIENvdWxldXJzIGR1IHRoZW1lIHBvdXIgbGEgdGltZWxpbmUgKi9cbiR0aW1lbGluZS1jb2xvcjogIzczODM5NDtcbiR0aW1lbGluZS0wOiAjMzk5Y2VkO1xuJHRpbWVsaW5lLTE6ICNlNjRlM2U7XG4kdGltZWxpbmUtMjogIzEwYmFhMztcbiR0aW1lbGluZS0zOiAjYjE0YmU3O1xuJHRpbWVsaW5lLTQ6ICMwNTNiNWQ7XG5cblxuLyogWzJdIERJTUVOU0lPTlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiAoMSkgTGF5b3V0IGRlIGJhc2UgKi9cbiRtZW51LXNpZGUtd2lkdGg6IDE1ZW07XG4kaGVhZGVyLWhlaWdodDogICA0ZW07XG5cblxuXG4vKiBbM10gTWl4aW5zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuQG1peGluIHRyYW5zZm9ybSgkdmFsdWUuLi4pIHtcblx0dHJhbnNmb3JtOiAkdmFsdWU7XG5cdC1tb3otdHJhbnNmb3JtOiAkdmFsdWU7XG5cdC1vLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbXMtdHJhbnNmb3JtOiAkdmFsdWU7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiAkdmFsdWU7XG59XG5cblxuQG1peGluIHRyYW5zaXRpb24oJHZhbHVlLi4uKSB7XG5cdC13ZWJraXQtdHJhbnNpdGlvbjogJHZhbHVlO1xuXHR0cmFuc2l0aW9uOiAkdmFsdWU7XG59XG5cbi8qIFs0XSBGdW5jdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vLyBUcmFuc2Zvcm1lIHVuZSBjb3VsZXVyIGhleCBlbiBzdHJpbmcgc2FucyBsZSAjXG5AZnVuY3Rpb24gY29sb3Itc3RyKCRjb2xvcil7XG5cdEByZXR1cm4gc3RyLXNsaWNlKCN7JGNvbG9yfSwgMiwgc3RyLWxlbmd0aCgjeyRjb2xvcn0pKTtcbn1cbiIKCV0sCgkibWFwcGluZ3MiOiAiQUFBQTsyREFDMkQ7QUFDM0Qsb0NBQW9DO0FBTXBDLGlDQUFpQztBQVFqQyw0Q0FBNEM7QUFTNUM7MkRBQzJEO0FBQzNELHdCQUF3QjtBQU14QjsyREFDMkQ7QUFlM0Q7MkRBQzJEIiwKCSJuYW1lcyI6IFtdCn0= */

View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "expanded.css",
"sources": [
"../constants.scss"
],
"sourcesContent": [
"/* [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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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": "AAAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAS5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AAe3D;2DAC2D",
"names": []
}

2
css/constants/min.css Normal file
View File

@ -0,0 +1,2 @@
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibWluLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vY29uc3RhbnRzLnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKiBbMV0gQ09VTEVVUlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiAoMSkgQ09VTEVVUlMgRFUgVEhFTUUgJERFRkFVTFQgKi9cbiR0aGVtZS1iZzogICAgICAgICAjZThlOGU4O1xuJHRoZW1lLWJnLXByaW1hcnk6ICNmZmZmZmY7XG4kdGhlbWUtZmc6ICAgICAgICAgIzUxNTE1MTtcbiR0aGVtZS1mZy1wcmltYXJ5OiAjMzk5Y2VkO1xuXG4vKiAoMikgQ09VTEVVUlMgREUgVEhFTUUgJERBUksgKi9cbiRkYXJrLWJnOiAgICAgICAgICMzMTM1NDE7XG4kZGFyay1iZy1wcmltYXJ5OiAjMjkyODJlO1xuJGRhcmstZmc6ICAgICAgICAgIzkzOTM5MztcbiRkYXJrLWZnLXByaW1hcnk6ICNmZmZmZmY7XG5cbiRoZWFkZXItZGFyazogICAgICNGOEY4RkE7XG5cbi8qICgzKSBDb3VsZXVycyBkdSB0aGVtZSBwb3VyIGxhIHRpbWVsaW5lICovXG4kdGltZWxpbmUtY29sb3I6ICM3MzgzOTQ7XG4kdGltZWxpbmUtMDogIzM5OWNlZDtcbiR0aW1lbGluZS0xOiAjZTY0ZTNlO1xuJHRpbWVsaW5lLTI6ICMxMGJhYTM7XG4kdGltZWxpbmUtMzogI2IxNGJlNztcbiR0aW1lbGluZS00OiAjMDUzYjVkO1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdzIjogIiIsCgkibmFtZXMiOiBbXQp9 */

12
css/constants/min.css.map Normal file
View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "min.css",
"sources": [
"../constants.scss"
],
"sourcesContent": [
"/* [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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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": "",
"names": []
}

14
css/constants/nested.css Normal file
View File

@ -0,0 +1,14 @@
/* [1] COULEURS
=========================================================*/
/* (1) COULEURS DU THEME $DEFAULT */
/* (2) COULEURS DE THEME $DARK */
/* (3) Couleurs du theme pour la timeline */
/* [2] DIMENSIONS
=========================================================*/
/* (1) Layout de base */
/* [3] Mixins
=========================================================*/
/* [4] Functions
=========================================================*/
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibmVzdGVkLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vY29uc3RhbnRzLnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKiBbMV0gQ09VTEVVUlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiAoMSkgQ09VTEVVUlMgRFUgVEhFTUUgJERFRkFVTFQgKi9cbiR0aGVtZS1iZzogICAgICAgICAjZThlOGU4O1xuJHRoZW1lLWJnLXByaW1hcnk6ICNmZmZmZmY7XG4kdGhlbWUtZmc6ICAgICAgICAgIzUxNTE1MTtcbiR0aGVtZS1mZy1wcmltYXJ5OiAjMzk5Y2VkO1xuXG4vKiAoMikgQ09VTEVVUlMgREUgVEhFTUUgJERBUksgKi9cbiRkYXJrLWJnOiAgICAgICAgICMzMTM1NDE7XG4kZGFyay1iZy1wcmltYXJ5OiAjMjkyODJlO1xuJGRhcmstZmc6ICAgICAgICAgIzkzOTM5MztcbiRkYXJrLWZnLXByaW1hcnk6ICNmZmZmZmY7XG5cbiRoZWFkZXItZGFyazogICAgICMzMzMzMzM7XG5cbi8qICgzKSBDb3VsZXVycyBkdSB0aGVtZSBwb3VyIGxhIHRpbWVsaW5lICovXG4kdGltZWxpbmUtY29sb3I6ICNhYWE7XG4kdGltZWxpbmUtMTogI2U2NGUzZTtcbiR0aW1lbGluZS0yOiAjMTBiYWEzO1xuJHRpbWVsaW5lLTM6ICNiMTRiZTc7XG4kdGltZWxpbmUtNDogIzA1M2I1ZDtcblxuXG4vKiBbMl0gRElNRU5TSU9OU1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qICgxKSBMYXlvdXQgZGUgYmFzZSAqL1xuJG1lbnUtc2lkZS13aWR0aDogMTVlbTtcbiRoZWFkZXItaGVpZ2h0OiAgIDRlbTtcblxuXG5cbi8qIFszXSBNaXhpbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5AbWl4aW4gdHJhbnNmb3JtKCR2YWx1ZS4uLikge1xuICAgIHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogJHZhbHVlO1xuICAgIHRyYW5zaXRpb246ICR2YWx1ZTtcbn1cblxuLyogWzRdIEZ1bmN0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8vIFRyYW5zZm9ybWUgdW5lIGNvdWxldXIgaGV4IGVuIHN0cmluZyBzYW5zIGxlICNcbkBmdW5jdGlvbiBjb2xvci1zdHIoJGNvbG9yKXtcbiAgICBAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdzIjogIkFBQUE7MkRBQzJEO0FBQzNELG9DQUFvQztBQU1wQyxpQ0FBaUM7QUFRakMsNENBQTRDO0FBUTVDOzJEQUMyRDtBQUMzRCx3QkFBd0I7QUFNeEI7MkRBQzJEO0FBZTNEOzJEQUMyRCIsCgkibmFtZXMiOiBbXQp9 */

View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "nested.css",
"sources": [
"../constants.scss"
],
"sourcesContent": [
"/* [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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #aaa;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n @return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n"
],
"mappings": "AAAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAQ5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AAe3D;2DAC2D",
"names": []
}

View File

@ -12,6 +12,15 @@
// Gestion de l'activation des sous-parties
&.active{ display: block; }
// Gestion d'une section contenant des graphiques
&.charts{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-around;
}
position: relative;
flex-grow: 1;
@ -80,6 +89,7 @@
content: '';
display: inline-block;
position: relative;
top: .1em;
left: -.8em;
width: calc( 1em - 2*.15em );
height: calc( 1em - 2*.15em );
@ -107,7 +117,7 @@
& input[type="radio"]:checked + label[for]:before,
& input[type="checkbox"]:checked + label[for]:before{
background-color: $theme-fg-primary;
background-image: url('/src/static/container/checked.svg');
background-image: url('/f/svg/checked/st/container');
}
@ -128,8 +138,8 @@
=========================================================*/
& input[type="submit"],
& input[type="button"]{
padding: .2em .5em;
margin: .5em 0;
padding: .3em .5em;
border-radius: 3px;
border: 1px solid $theme-fg;
@ -196,15 +206,11 @@
border-radius: 5px;
border: 1px solid #b5b5b5;
// color: #555;
color: darken($theme-fg-primary, .2);
color: #555;
font-family: 'Inconsolata';
}
.flat-border{ border-radius: 0; }
}
}

49
css/container/compact.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "compact.css",
"sources": [
"../container.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants.scss';\n\n#WRAPPER > #CONTAINER{\n\n\t/* [1] Section (contenu)\n\t=========================================================*/\n\t& > section{\n\t\tdisplay: none;\n\n\t\tmargin: 3em;\n\n\t\t// Gestion de l'activation des sous-parties\n\t\t&.active{ display: block; }\n\n\t\t// Gestion d'une section contenant des graphiques\n\t\t&.charts{\n\t\t\tdisplay: flex;\n\n\t\t\tflex-direction: row;\n\t\t\tflex-wrap: wrap;\n\t\t\tjustify-content: space-around;\n\t\t}\n\n\t\tposition: relative;\n\t\tflex-grow: 1;\n\n\t\tpadding: 1em;\n\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: #fff;\n\n\t\tcolor: #000;\n\t\tfont-size: 1em;\n\n\t\tborder: 1px solid #ddd;\n\n\n\n\t\t/* [2] Titres\n\t\t=========================================================*/\n\t\t& h6{\n\t\t\tcolor: lighten($theme-fg, 20);\n\t\t\tfont-size: 1.2em;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: 300;\n\t\t\tletter-spacing: .2em;\n\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\n\t\t\t&:before{content:'- ';}\n\t\t\t&:after{content:' -';}\n\n\t\t\t// quand centré\n\t\t\t&.center{\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t}\n\n\n\n\n\n\t\t/* [3][4] Boutons radio + Checkboxes\n\t\t=========================================================*/\n\t\t& input[type=\"radio\"],\n\t\t& input[type=\"checkbox\"]{\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t// Label\n\t\t& input[type=\"radio\"] + label[for],\n\t\t& input[type=\"checkbox\"] + label[for]{\n\t\t\tpadding-left: .8em;\n\n\t\t\t// Pas de selection\n\t\t\t-webkit-touch-callout: none; /* iOS Safari */\n\t\t\t-webkit-user-select: none; /* Chrome/Safari/Opera */\n\t\t\t-khtml-user-select: none; /* Konqueror */\n\t\t\t-moz-user-select: none; /* Firefox */\n\t\t\t-ms-user-select: none; /* IE/Edge */\n\t\t\tuser-select: none; /* non-prefixed */\n\n\n\t\t\t// Receptacle\n\t\t\t&:before{\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tposition: relative;\n\t\t\t\t\ttop: .1em;\n\t\t\t\t\tleft: -.8em;\n\t\t\t\t\twidth: calc( 1em - 2*.15em );\n\t\t\t\t\theight: calc( 1em - 2*.15em );\n\n\t\t\t\tborder-radius: 50% / 50%;\n\t\t\t\tborder: .15em solid $theme-fg-primary;\n\n\t\t\t\tbackground: #fff center center no-repeat;\n\t\t\t\tbackground-image: none;\n\t\t\t\tbackground-size: 70% auto;\n\n\t\t\t\t@include transition( background .2s ease-in-out );\n\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t}\n\n\t\t// Quand actif\n\t\t& input[type=\"radio\"]:checked + label[for]:before,\n\t\t& input[type=\"checkbox\"]:checked + label[for]:before{\n\t\t\tbackground-color: $theme-fg-primary;\n\t\t\tbackground-image: url('/f/svg/checked/st/container');\n\t\t}\n\n\n\t\t// Specifique a checkbox\n\t\t& input[type=\"checkbox\"] + label[for]:before{\n\t\t\tborder-radius: 3px;\n\t\t}\n\n\n\n\n\n\t\t/* [5] Boutons de submit\n\t\t=========================================================*/\n\t\t& input[type=\"submit\"],\n\t\t& input[type=\"button\"]{\n\t\t\tmargin: .5em 0;\n\t\t\tpadding: .3em .5em;\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid $theme-fg;\n\n\t\t\tcolor: $theme-fg;\n\n\t\t\tbackground-color: #fff;\n\n\t\t\t@include transition( background .1s ease-in-out, color .1s ease-in-out );\n\n\t\t\t/* (1) Animation de @hover */\n\t\t\t&:hover{\n\t\t\t\tbackground-color: $theme-fg;\n\t\t\t\tcolor: #fff;\n\t\t\t}\n\n\n\t\t\t/* (2) Bouton primaire */\n\t\t\t&.primary{\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\tbackground-color: #fff;\n\n\n\t\t\t\t/* (3) Animation de @hover pour bouton primaire */\n\t\t\t\t&:hover{\n\t\t\t\t\tbackground-color: $theme-fg-primary;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t}\n\n\t\t/* [6] Images inline\n\t\t=========================================================*/\n\t\t& img{\n\t\t\tmargin: 1em;\n\t\t\theight: 3em;\n\t\t}\n\n\t\t/* [7] Contour flags\n\t\t=========================================================*/\n\t\t& .flag{\n\t\t\tmargin: 0 .8em;\n\t\t\tpadding: .2em .5em;\n\n\t\t\tborder-radius: 5px;\n\t\t\tborder: 1px solid #b5b5b5;\n\n\t\t\tcolor: #555;\n\t\t\tfont-family: 'Inconsolata';\n\t\t}\n\n\n\t}\n\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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #399ced;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n"
],
"mappings": "ACAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAG5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AD1B3D,QAAQ,GAAG,UAAU,CAAA,EAEpB,oFAC2D,EAuL3D;;AA1LD,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAAA,EACV,OAAO,EAAE,IAAK,EAEd,MAAM,EAAE,GAAI,EAcZ,QAAQ,EAAE,QAAS,EACnB,SAAS,EAAE,CAAE,EAEb,OAAO,EAAE,GAAI,EAEb,aAAa,EAAE,GAAI,EAEnB,gBAAgB,EAAE,IAAK,EAEvB,KAAK,EAAE,IAAK,EACZ,SAAS,EAAE,GAAI,EAEf,MAAM,EAAE,cAAe,EAIvB,yEAC2D,CAwB3D,gGAC2D,CA4D3D,oFAC2D,CAuC3D,gFAC2D,CAM3D,gFAC2D,EAa3D;;AAxLF,QAAQ,GAAG,UAAU,GAIhB,OAAO,AAMT,OAAO,CAAA,EAAE,OAAO,EAAE,KAAM,GAAI;;AAV/B,QAAQ,GAAG,UAAU,GAIhB,OAAO,AAST,OAAO,CAAA,EACP,OAAO,EAAE,IAAK,EAEd,cAAc,EAAE,GAAI,EACpB,SAAS,EAAE,IAAK,EAChB,eAAe,EAAE,YAAa,GAC9B;;AAnBH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,CAAA,EACH,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,KAAM,EACjB,cAAc,EAAE,SAAU,EAC1B,WAAW,EAAE,GAAI,EACjB,cAAc,EAAE,IAAK,EAErB,MAAM,EAAE,CAAE,EACV,OAAO,EAAE,CAAE,GASX;;AAxDH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAUF,OAAO,CAAA,EAAC,OAAO,EAAC,IAAK,GAAG;;AAjD5B,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAWF,MAAM,CAAA,EAAC,OAAO,EAAC,IAAK,GAAG;;AAlD3B,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAcF,OAAO,CAAA,EACP,UAAU,EAAE,MAAO,GACnB;;AAvDJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA4DR,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,GAhEV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA6DR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAgB,EACvB,OAAO,EAAE,IAAK,GACd;;AAnEH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAkER,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,IAAgB,KAAK,CAAA,AAAA,GAAC,AAAA,GAtEhC,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmER,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,EAAI,EACpC,YAAY,EAAE,IAAK,EAGnB,qBAAqB,EAAE,IAAK,EAAE,yBAAyB,CACvD,mBAAmB,EAAI,IAAK,EAAE,yBAAyB,CACvD,kBAAkB,EAAK,IAAK,EAAE,yBAAyB,CACvD,gBAAgB,EAAO,IAAK,EAAE,yBAAyB,CACvD,eAAe,EAAQ,IAAK,EAAE,yBAAyB,CACvD,WAAW,EAAY,IAAK,EAAE,yBAAyB,EAwBvD;;AAxGH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAkER,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,IAAgB,KAAK,CAAA,AAAA,GAAC,AAAA,CAc5B,OAAO,EApFX,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmER,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,CAa/B,OAAO,CAAA,EACP,OAAO,EAAE,EAAG,EACZ,OAAO,EAAE,YAAa,EACtB,QAAQ,EAAE,QAAS,EAClB,GAAG,EAAE,IAAK,EACV,IAAI,EAAE,KAAM,EACZ,KAAK,EAAE,oBAAI,EACX,MAAM,EAAE,oBAAI,EAEb,aAAa,EAAE,SAAU,EACzB,MAAM,EAAE,MAAK,CAAC,KAAK,CC1FJ,OAAO,ED4FtB,UAAU,EAAE,4BAA6B,EACzC,gBAAgB,EAAE,IAAK,EACvB,eAAe,EAAE,QAAS,EC7D1B,kBAAkB,ED+DG,UAAU,CAAC,IAAG,CAAC,WAAW,EC9D/C,UAAU,ED8DW,UAAU,CAAC,IAAG,CAAC,WAAW,EAE/C,MAAM,EAAE,OAAQ,GAChB;;AAvGJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAuGR,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,QAAQ,GAAG,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO,EA3GnD,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAwGR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO,CAAA,EACnD,gBAAgB,ECzGA,OAAO,ED0GvB,gBAAgB,EAAE,kCAAG,GACrB;;AA/GH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA+GR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO,CAAA,EAC3C,aAAa,EAAE,GAAI,GACnB;;AArHH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,GA7HV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAc,EACrB,MAAM,EAAE,MAAO,EACf,OAAO,EAAE,SAAU,EAEnB,aAAa,EAAE,GAAI,EACnB,MAAM,EAAE,GAAG,CAAC,KAAK,CChID,OAAO,EDkIvB,KAAK,EClIW,OAAO,EDoIvB,gBAAgB,EAAE,IAAK,EClGtB,kBAAkB,EDoGE,UAAU,CAAC,IAAG,CAAC,WAAW,EAAE,KAAK,CAAC,IAAG,CAAC,WAAW,ECnGrE,UAAU,EDmGU,UAAU,CAAC,IAAG,CAAC,WAAW,EAAE,KAAK,CAAC,IAAG,CAAC,WAAW,EAEtE,6BAA6B,CAO7B,yBAAyB,EAezB;;AAjKH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAeN,MAAM,EA5IV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAcN,MAAM,CAAA,EACN,gBAAgB,EC1ID,OAAO,ED2ItB,KAAK,EAAE,IAAK,GACZ;;AA/IJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAsBN,QAAQ,EAnJZ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAqBN,QAAQ,CAAA,EACR,YAAY,EChJG,OAAO,EDiJtB,KAAK,ECjJU,OAAO,EDkJtB,gBAAgB,EAAE,IAAK,EAGvB,kDAAkD,EAKlD;;AA9JJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAsBN,QAAQ,AAOP,MAAM,EA1JX,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAqBN,QAAQ,AAOP,MAAM,CAAA,EACN,gBAAgB,ECvJF,OAAO,EDwJrB,KAAK,EAAE,IAAK,GACZ;;AA7JL,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAiKR,GAAG,CAAA,EACJ,MAAM,EAAE,GAAI,EACZ,MAAM,EAAE,GAAI,GACZ;;AAxKH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAwKR,KAAK,CAAA,EACN,MAAM,EAAE,MAAO,EACf,OAAO,EAAE,SAAU,EAEnB,aAAa,EAAE,GAAI,EACnB,MAAM,EAAE,iBAAkB,EAE1B,KAAK,EAAE,IAAK,EACZ,WAAW,EAAE,aAAc,GAC3B",
"names": []
}

200
css/container/expanded.css Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
css/container/min.css Normal file

File diff suppressed because one or more lines are too long

14
css/container/min.css.map Normal file

File diff suppressed because one or more lines are too long

134
css/container/nested.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "nested.css",
"sources": [
"../container.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants.scss';\n\n#WRAPPER > #CONTAINER{\n\n\t/* [1] Section (contenu)\n\t=========================================================*/\n\t& > section{\n\t\tdisplay: none;\n\n\t\tmargin: 3em;\n\n\t\t// Gestion de l'activation des sous-parties\n\t\t&.active{ display: block; }\n\n\t\t// Gestion d'une section contenant des graphiques\n\t\t&.charts{\n\t\t\tdisplay: flex;\n\n\t\t\tflex-direction: row;\n\t\t\tflex-wrap: wrap;\n\t\t\tjustify-content: space-around;\n\t\t}\n\n\t\tposition: relative;\n\t\tflex-grow: 1;\n\n\t\tpadding: 1em;\n\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: #fff;\n\n\t\tcolor: #000;\n\t\tfont-size: 1em;\n\n\t\tborder: 1px solid #ddd;\n\n\n\n\t\t/* [2] Titres\n\t\t=========================================================*/\n\t\t& h6{\n\t\t\tcolor: lighten($theme-fg, 20);\n\t\t\tfont-size: 1.2em;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: 300;\n\t\t\tletter-spacing: .2em;\n\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\n\t\t\t&:before{content:'- ';}\n\t\t\t&:after{content:' -';}\n\n\t\t\t// quand centré\n\t\t\t&.center{\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t}\n\n\n\n\n\n\t\t/* [3][4] Boutons radio + Checkboxes\n\t\t=========================================================*/\n\t\t& input[type=\"radio\"],\n\t\t& input[type=\"checkbox\"]{\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t// Label\n\t\t& input[type=\"radio\"] + label[for],\n\t\t& input[type=\"checkbox\"] + label[for]{\n\t\t\tpadding-left: .8em;\n\n\t\t\t// Pas de selection\n\t\t\t-webkit-touch-callout: none; /* iOS Safari */\n\t\t\t-webkit-user-select: none; /* Chrome/Safari/Opera */\n\t\t\t-khtml-user-select: none; /* Konqueror */\n\t\t\t-moz-user-select: none; /* Firefox */\n\t\t\t-ms-user-select: none; /* IE/Edge */\n\t\t\tuser-select: none; /* non-prefixed */\n\n\n\t\t\t// Receptacle\n\t\t\t&:before{\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tposition: relative;\n\t\t\t\t\ttop: .1em;\n\t\t\t\t\tleft: -.8em;\n\t\t\t\t\twidth: calc( 1em - 2*.15em );\n\t\t\t\t\theight: calc( 1em - 2*.15em );\n\n\t\t\t\tborder-radius: 50% / 50%;\n\t\t\t\tborder: .15em solid $theme-fg-primary;\n\n\t\t\t\tbackground: #fff center center no-repeat;\n\t\t\t\tbackground-image: none;\n\t\t\t\tbackground-size: 70% auto;\n\n\t\t\t\t@include transition( background .2s ease-in-out );\n\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t}\n\n\t\t// Quand actif\n\t\t& input[type=\"radio\"]:checked + label[for]:before,\n\t\t& input[type=\"checkbox\"]:checked + label[for]:before{\n\t\t\tbackground-color: $theme-fg-primary;\n\t\t\tbackground-image: url('/f/svg/checked/st/container');\n\t\t}\n\n\n\t\t// Specifique a checkbox\n\t\t& input[type=\"checkbox\"] + label[for]:before{\n\t\t\tborder-radius: 3px;\n\t\t}\n\n\n\n\n\n\t\t/* [5] Boutons de submit\n\t\t=========================================================*/\n\t\t& input[type=\"submit\"],\n\t\t& input[type=\"button\"]{\n\t\t\tmargin: .5em 0;\n\t\t\tpadding: .3em .5em;\n\n\t\t\tborder-radius: 3px;\n\t\t\tborder: 1px solid $theme-fg;\n\n\t\t\tcolor: $theme-fg;\n\n\t\t\tbackground-color: #fff;\n\n\t\t\t@include transition( background .1s ease-in-out, color .1s ease-in-out );\n\n\t\t\t/* (1) Animation de @hover */\n\t\t\t&:hover{\n\t\t\t\tbackground-color: $theme-fg;\n\t\t\t\tcolor: #fff;\n\t\t\t}\n\n\n\t\t\t/* (2) Bouton primaire */\n\t\t\t&.primary{\n\t\t\t\tborder-color: $theme-fg-primary;\n\t\t\t\tcolor: $theme-fg-primary;\n\t\t\t\tbackground-color: #fff;\n\n\n\t\t\t\t/* (3) Animation de @hover pour bouton primaire */\n\t\t\t\t&:hover{\n\t\t\t\t\tbackground-color: $theme-fg-primary;\n\t\t\t\t\tcolor: #fff;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t}\n\n\t\t/* [6] Images inline\n\t\t=========================================================*/\n\t\t& img{\n\t\t\tmargin: 1em;\n\t\t\theight: 3em;\n\t\t}\n\n\t\t/* [7] Contour flags\n\t\t=========================================================*/\n\t\t& .flag{\n\t\t\tmargin: 0 .8em;\n\t\t\tpadding: .2em .5em;\n\n\t\t\tborder-radius: 5px;\n\t\t\tborder: 1px solid #b5b5b5;\n\n\t\t\tcolor: #555;\n\t\t\tfont-family: 'Inconsolata';\n\t\t}\n\n\n\t}\n\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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #399ced;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n"
],
"mappings": "ACAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAG5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AD1B3D,QAAQ,GAAG,UAAU,CAAA;EAEpB;4DAC2D,EAuL3D;EA1LD,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAAA;IACV,OAAO,EAAE,IAAK;IAEd,MAAM,EAAE,GAAI;IAcZ,QAAQ,EAAE,QAAS;IACnB,SAAS,EAAE,CAAE;IAEb,OAAO,EAAE,GAAI;IAEb,aAAa,EAAE,GAAI;IAEnB,gBAAgB,EAAE,IAAK;IAEvB,KAAK,EAAE,IAAK;IACZ,SAAS,EAAE,GAAI;IAEf,MAAM,EAAE,cAAe;IAIvB;6DAC2D;IAwB3D;6DAC2D;IA4D3D;6DAC2D;IAuC3D;6DAC2D;IAM3D;6DAC2D,EAa3D;IAxLF,QAAQ,GAAG,UAAU,GAIhB,OAAO,AAMT,OAAO,CAAA;MAAE,OAAO,EAAE,KAAM,GAAI;IAV/B,QAAQ,GAAG,UAAU,GAIhB,OAAO,AAST,OAAO,CAAA;MACP,OAAO,EAAE,IAAK;MAEd,cAAc,EAAE,GAAI;MACpB,SAAS,EAAE,IAAK;MAChB,eAAe,EAAE,YAAa,GAC9B;IAnBH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,CAAA;MACH,KAAK,EAAE,OAAO;MACd,SAAS,EAAE,KAAM;MACjB,cAAc,EAAE,SAAU;MAC1B,WAAW,EAAE,GAAI;MACjB,cAAc,EAAE,IAAK;MAErB,MAAM,EAAE,CAAE;MACV,OAAO,EAAE,CAAE,GASX;MAxDH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAUF,OAAO,CAAA;QAAC,OAAO,EAAC,IAAK,GAAG;MAjD5B,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAWF,MAAM,CAAA;QAAC,OAAO,EAAC,IAAK,GAAG;MAlD3B,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmCR,EAAE,AAcF,OAAO,CAAA;QACP,UAAU,EAAE,MAAO,GACnB;IAvDJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA4DR,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;IAhEV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA6DR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAgB;MACvB,OAAO,EAAE,IAAK,GACd;IAnEH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAkER,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,IAAgB,KAAK,CAAA,AAAA,GAAC,AAAA;IAtEhC,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmER,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,EAAI;MACpC,YAAY,EAAE,IAAK;MAGnB,qBAAqB,EAAE,IAAK;MAAE,yBAAyB;MACvD,mBAAmB,EAAI,IAAK;MAAE,yBAAyB;MACvD,kBAAkB,EAAK,IAAK;MAAE,yBAAyB;MACvD,gBAAgB,EAAO,IAAK;MAAE,yBAAyB;MACvD,eAAe,EAAQ,IAAK;MAAE,yBAAyB;MACvD,WAAW,EAAY,IAAK;MAAE,yBAAyB,EAwBvD;MAxGH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAkER,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,IAAgB,KAAK,CAAA,AAAA,GAAC,AAAA,CAc5B,OAAO;MApFX,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAmER,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,CAa/B,OAAO,CAAA;QACP,OAAO,EAAE,EAAG;QACZ,OAAO,EAAE,YAAa;QACtB,QAAQ,EAAE,QAAS;QAClB,GAAG,EAAE,IAAK;QACV,IAAI,EAAE,KAAM;QACZ,KAAK,EAAE,oBAAI;QACX,MAAM,EAAE,oBAAI;QAEb,aAAa,EAAE,SAAU;QACzB,MAAM,EAAE,MAAK,CAAC,KAAK,CC1FJ,OAAO;QD4FtB,UAAU,EAAE,4BAA6B;QACzC,gBAAgB,EAAE,IAAK;QACvB,eAAe,EAAE,QAAS;QC7D1B,kBAAkB,ED+DG,UAAU,CAAC,IAAG,CAAC,WAAW;QC9D/C,UAAU,ED8DW,UAAU,CAAC,IAAG,CAAC,WAAW;QAE/C,MAAM,EAAE,OAAQ,GAChB;IAvGJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAuGR,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,QAAQ,GAAG,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO;IA3GnD,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAwGR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CAAgB,QAAQ,GAAG,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO,CAAA;MACnD,gBAAgB,ECzGA,OAAO;MD0GvB,gBAAgB,EAAE,kCAAG,GACrB;IA/GH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA+GR,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,IAAmB,KAAK,CAAA,AAAA,GAAC,AAAA,CAAI,OAAO,CAAA;MAC3C,aAAa,EAAE,GAAI,GACnB;IArHH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb;IA7HV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAc;MACrB,MAAM,EAAE,MAAO;MACf,OAAO,EAAE,SAAU;MAEnB,aAAa,EAAE,GAAI;MACnB,MAAM,EAAE,GAAG,CAAC,KAAK,CChID,OAAO;MDkIvB,KAAK,EClIW,OAAO;MDoIvB,gBAAgB,EAAE,IAAK;MClGtB,kBAAkB,EDoGE,UAAU,CAAC,IAAG,CAAC,WAAW,EAAE,KAAK,CAAC,IAAG,CAAC,WAAW;MCnGrE,UAAU,EDmGU,UAAU,CAAC,IAAG,CAAC,WAAW,EAAE,KAAK,CAAC,IAAG,CAAC,WAAW;MAEtE,6BAA6B;MAO7B,yBAAyB,EAezB;MAjKH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAeN,MAAM;MA5IV,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAcN,MAAM,CAAA;QACN,gBAAgB,EC1ID,OAAO;QD2ItB,KAAK,EAAE,IAAK,GACZ;MA/IJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAsBN,QAAQ;MAnJZ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAqBN,QAAQ,CAAA;QACR,YAAY,EChJG,OAAO;QDiJtB,KAAK,ECjJU,OAAO;QDkJtB,gBAAgB,EAAE,IAAK;QAGvB,kDAAkD,EAKlD;QA9JJ,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAyHR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAsBN,QAAQ,AAOP,MAAM;QA1JX,QAAQ,GAAG,UAAU,GAIhB,OAAO,CA0HR,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAqBN,QAAQ,AAOP,MAAM,CAAA;UACN,gBAAgB,ECvJF,OAAO;UDwJrB,KAAK,EAAE,IAAK,GACZ;IA7JL,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAiKR,GAAG,CAAA;MACJ,MAAM,EAAE,GAAI;MACZ,MAAM,EAAE,GAAI,GACZ;IAxKH,QAAQ,GAAG,UAAU,GAIhB,OAAO,CAwKR,KAAK,CAAA;MACN,MAAM,EAAE,MAAO;MACf,OAAO,EAAE,SAAU;MAEnB,aAAa,EAAE,GAAI;MACnB,MAAM,EAAE,iBAAkB;MAE1B,KAAK,EAAE,IAAK;MACZ,WAAW,EAAE,aAAc,GAC3B",
"names": []
}

46
css/font.scss Executable file
View File

@ -0,0 +1,46 @@
/* [1] Proxima Nova
=========================================================*/
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: 100;
src: url('/css/fonts/proxima-nova/thin.eot');
src: url('/css/fonts/proxima-nova/thin#iefix.eot') format("embedded-opentype"),
url('/css/fonts/proxima-nova/thin.woff') format("woff"),
url('/css/fonts/proxima-nova/thin.ttf') format("truetype");
}
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: normal;
src: url('/css/fonts/proxima-nova/regular.eot');
src: url('/css/fonts/proxima-nova/regular#iefix.eot') format("embedded-opentype"),
url('/css/fonts/proxima-nova/regular.woff') format("woff"),
url('/css/fonts/proxima-nova/regular.ttf') format("truetype");
}
/* [2] Icomoon
=========================================================*/
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: 100;
src: url("/css/fonts/icomoon/thin.eot");
src: url('/css/fonts/icomoon/thin.woff') format("woff"),
url('/css/fonts/icomoon/thin.ttf') format("truetype");
}
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: normal;
src: url("/css/fonts/icomoon/regular.eot");
src: url('/css/fonts/icomoon/regular.woff') format("woff"),
url('/css/fonts/icomoon/regular.ttf') format("truetype");
}

13
css/font/compact.css Normal file
View File

@ -0,0 +1,13 @@
/* [1] Proxima Nova
=========================================================*/
@font-face { font-family: 'Proxima Nova'; font-style: normal; font-weight: 100; src: url("/css/fonts/proxima-nova/thin.eot"); src: url("/css/fonts/proxima-nova/thin#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/thin.woff") format("woff"), url("/css/fonts/proxima-nova/thin.ttf") format("truetype"); }
@font-face { font-family: 'Proxima Nova'; font-style: normal; font-weight: normal; src: url("/css/fonts/proxima-nova/regular.eot"); src: url("/css/fonts/proxima-nova/regular#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/regular.woff") format("woff"), url("/css/fonts/proxima-nova/regular.ttf") format("truetype"); }
/* [2] Icomoon
=========================================================*/
@font-face { font-family: 'icomoon'; font-style: normal; font-weight: 100; src: url("/css/fonts/icomoon/thin.eot"); src: url("/css/fonts/icomoon/thin.woff") format("woff"), url("/css/fonts/icomoon/thin.ttf") format("truetype"); }
@font-face { font-family: 'icomoon'; font-style: normal; font-weight: normal; src: url("/css/fonts/icomoon/regular.eot"); src: url("/css/fonts/icomoon/regular.woff") format("woff"), url("/css/fonts/icomoon/regular.ttf") format("truetype"); }
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiY29tcGFjdC5jc3MiLAoJInNvdXJjZXMiOiBbCgkJIi4uL2ZvbnQuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8qIFsxXSBQcm94aW1hIE5vdmFcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ1Byb3hpbWEgTm92YSc7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG5cbiAgICBzcmM6IHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbi5lb3QnKTtcbiAgICBzcmM6ICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbiNpZWZpeC5lb3QnKSAgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3RoaW4ud29mZicpICAgICAgIGZvcm1hdChcIndvZmZcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3RoaW4udHRmJykgICAgICAgIGZvcm1hdChcInRydWV0eXBlXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ1Byb3hpbWEgTm92YSc7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICBzcmM6IHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhci5lb3QnKTtcbiAgICBzcmM6ICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhciNpZWZpeC5lb3QnKSAgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3JlZ3VsYXIud29mZicpICAgICAgIGZvcm1hdChcIndvZmZcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3JlZ3VsYXIudHRmJykgICAgICAgIGZvcm1hdChcInRydWV0eXBlXCIpO1xufVxuXG5cbi8qIFsyXSBJY29tb29uXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdpY29tb29uJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDtcblxuICAgIHNyYzogdXJsKFwiL2Nzcy9mb250cy9pY29tb29uL3RoaW4uZW90XCIpO1xuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL2ljb21vb24vdGhpbi53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9pY29tb29uL3RoaW4udHRmJykgICAgICAgIGZvcm1hdChcInRydWV0eXBlXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2ljb21vb24nO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgc3JjOiB1cmwoXCIvY3NzL2ZvbnRzL2ljb21vb24vcmVndWxhci5lb3RcIik7XG4gICAgc3JjOiB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi9yZWd1bGFyLndvZmYnKSAgICAgICBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL2ljb21vb24vcmVndWxhci50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG4iCgldLAoJIm1hcHBpbmdzIjogIkFBQUE7MkRBQzJEO0FBQzNELFVBQVUsR0FDTixXQUFXLEVBQUUsY0FBZSxFQUM1QixVQUFVLEVBQUUsTUFBTyxFQUNuQixXQUFXLEVBQUUsR0FBSSxFQUVqQixHQUFHLEVBQUUsdUNBQUcsRUFDUixHQUFHLEVBQUssNkNBQUcsQ0FBNEMsMkJBQU0sRUFDckQsd0NBQUcsQ0FBNEMsY0FBTSxFQUNyRCx1Q0FBRyxDQUE0QyxrQkFBTTs7QUFHakUsVUFBVSxHQUNOLFdBQVcsRUFBRSxjQUFlLEVBQzVCLFVBQVUsRUFBRSxNQUFPLEVBQ25CLFdBQVcsRUFBRSxNQUFPLEVBRXBCLEdBQUcsRUFBRSwwQ0FBRyxFQUNSLEdBQUcsRUFBSyxnREFBRyxDQUErQywyQkFBTSxFQUN4RCwyQ0FBRyxDQUErQyxjQUFNLEVBQ3hELDBDQUFHLENBQStDLGtCQUFNOztBQUlwRTsyREFDMkQ7QUFDM0QsVUFBVSxHQUNOLFdBQVcsRUFBRSxTQUFVLEVBQ3ZCLFVBQVUsRUFBRSxNQUFPLEVBQ25CLFdBQVcsRUFBRSxHQUFJLEVBRWpCLEdBQUcsRUFBRSxrQ0FBRyxFQUNSLEdBQUcsRUFBRSxtQ0FBRyxDQUF1QyxjQUFNLEVBQzdDLGtDQUFHLENBQXVDLGtCQUFNOztBQUc1RCxVQUFVLEdBQ04sV0FBVyxFQUFFLFNBQVUsRUFDdkIsVUFBVSxFQUFFLE1BQU8sRUFDbkIsV0FBVyxFQUFFLE1BQU8sRUFFcEIsR0FBRyxFQUFFLHFDQUFHLEVBQ1IsR0FBRyxFQUFFLHNDQUFHLENBQTBDLGNBQU0sRUFDaEQscUNBQUcsQ0FBMEMsa0JBQU0iLAoJIm5hbWVzIjogW10KfQ== */

12
css/font/compact.css.map Normal file
View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "compact.css",
"sources": [
"../font.scss"
],
"sourcesContent": [
"/* [1] Proxima Nova\n=========================================================*/\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: 100;\n\n src: url('/css/fonts/proxima-nova/thin.eot');\n src: url('/css/fonts/proxima-nova/thin#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/thin.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: normal;\n\n src: url('/css/fonts/proxima-nova/regular.eot');\n src: url('/css/fonts/proxima-nova/regular#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/regular.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/regular.ttf') format(\"truetype\");\n}\n\n\n/* [2] Icomoon\n=========================================================*/\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: 100;\n\n src: url(\"/css/fonts/icomoon/thin.eot\");\n src: url('/css/fonts/icomoon/thin.woff') format(\"woff\"),\n url('/css/fonts/icomoon/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: normal;\n\n src: url(\"/css/fonts/icomoon/regular.eot\");\n src: url('/css/fonts/icomoon/regular.woff') format(\"woff\"),\n url('/css/fonts/icomoon/regular.ttf') format(\"truetype\");\n}\n"
],
"mappings": "AAAA;2DAC2D;AAC3D,UAAU,GACN,WAAW,EAAE,cAAe,EAC5B,UAAU,EAAE,MAAO,EACnB,WAAW,EAAE,GAAI,EAEjB,GAAG,EAAE,uCAAG,EACR,GAAG,EAAK,6CAAG,CAA4C,2BAAM,EACrD,wCAAG,CAA4C,cAAM,EACrD,uCAAG,CAA4C,kBAAM;;AAGjE,UAAU,GACN,WAAW,EAAE,cAAe,EAC5B,UAAU,EAAE,MAAO,EACnB,WAAW,EAAE,MAAO,EAEpB,GAAG,EAAE,0CAAG,EACR,GAAG,EAAK,gDAAG,CAA+C,2BAAM,EACxD,2CAAG,CAA+C,cAAM,EACxD,0CAAG,CAA+C,kBAAM;;AAIpE;2DAC2D;AAC3D,UAAU,GACN,WAAW,EAAE,SAAU,EACvB,UAAU,EAAE,MAAO,EACnB,WAAW,EAAE,GAAI,EAEjB,GAAG,EAAE,kCAAG,EACR,GAAG,EAAE,mCAAG,CAAuC,cAAM,EAC7C,kCAAG,CAAuC,kBAAM;;AAG5D,UAAU,GACN,WAAW,EAAE,SAAU,EACvB,UAAU,EAAE,MAAO,EACnB,WAAW,EAAE,MAAO,EAEpB,GAAG,EAAE,qCAAG,EACR,GAAG,EAAE,sCAAG,CAA0C,cAAM,EAChD,qCAAG,CAA0C,kBAAM",
"names": []
}

37
css/font/expanded.css Normal file
View File

@ -0,0 +1,37 @@
/* [1] Proxima Nova
=========================================================*/
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: 100;
src: url("/css/fonts/proxima-nova/thin.eot");
src: url("/css/fonts/proxima-nova/thin#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/thin.woff") format("woff"), url("/css/fonts/proxima-nova/thin.ttf") format("truetype");
}
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: normal;
src: url("/css/fonts/proxima-nova/regular.eot");
src: url("/css/fonts/proxima-nova/regular#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/regular.woff") format("woff"), url("/css/fonts/proxima-nova/regular.ttf") format("truetype");
}
/* [2] Icomoon
=========================================================*/
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: 100;
src: url("/css/fonts/icomoon/thin.eot");
src: url("/css/fonts/icomoon/thin.woff") format("woff"), url("/css/fonts/icomoon/thin.ttf") format("truetype");
}
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: normal;
src: url("/css/fonts/icomoon/regular.eot");
src: url("/css/fonts/icomoon/regular.woff") format("woff"), url("/css/fonts/icomoon/regular.ttf") format("truetype");
}
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiZXhwYW5kZWQuY3NzIiwKCSJzb3VyY2VzIjogWwoJCSIuLi9mb250LnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKiBbMV0gUHJveGltYSBOb3ZhXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdQcm94aW1hIE5vdmEnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuXG4gICAgc3JjOiB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3RoaW4uZW90Jyk7XG4gICAgc3JjOiAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3RoaW4jaWVmaXguZW90JykgIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluLndvZmYnKSAgICAgICBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluLnR0ZicpICAgICAgICBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdQcm94aW1hIE5vdmEnO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgc3JjOiB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3JlZ3VsYXIuZW90Jyk7XG4gICAgc3JjOiAgICB1cmwoJy9jc3MvZm9udHMvcHJveGltYS1ub3ZhL3JlZ3VsYXIjaWVmaXguZW90JykgIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyLndvZmYnKSAgICAgICBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyLnR0ZicpICAgICAgICBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cblxuXG4vKiBbMl0gSWNvbW9vblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG5cbiAgICBzcmM6IHVybChcIi9jc3MvZm9udHMvaWNvbW9vbi90aGluLmVvdFwiKTtcbiAgICBzcmM6IHVybCgnL2Nzcy9mb250cy9pY29tb29uL3RoaW4ud29mZicpICAgICAgIGZvcm1hdChcIndvZmZcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi90aGluLnR0ZicpICAgICAgICBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdpY29tb29uJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgIHNyYzogdXJsKFwiL2Nzcy9mb250cy9pY29tb29uL3JlZ3VsYXIuZW90XCIpO1xuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL2ljb21vb24vcmVndWxhci53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9pY29tb29uL3JlZ3VsYXIudHRmJykgICAgICAgIGZvcm1hdChcInRydWV0eXBlXCIpO1xufVxuIgoJXSwKCSJtYXBwaW5ncyI6ICJBQUFBOzJEQUMyRDtBQUMzRCxVQUFVO0VBQ04sV0FBVyxFQUFFLGNBQWU7RUFDNUIsVUFBVSxFQUFFLE1BQU87RUFDbkIsV0FBVyxFQUFFLEdBQUk7RUFFakIsR0FBRyxFQUFFLHVDQUFHO0VBQ1IsR0FBRyxFQUFLLDZDQUFHLENBQTRDLDJCQUFNLEVBQ3JELHdDQUFHLENBQTRDLGNBQU0sRUFDckQsdUNBQUcsQ0FBNEMsa0JBQU07OztBQUdqRSxVQUFVO0VBQ04sV0FBVyxFQUFFLGNBQWU7RUFDNUIsVUFBVSxFQUFFLE1BQU87RUFDbkIsV0FBVyxFQUFFLE1BQU87RUFFcEIsR0FBRyxFQUFFLDBDQUFHO0VBQ1IsR0FBRyxFQUFLLGdEQUFHLENBQStDLDJCQUFNLEVBQ3hELDJDQUFHLENBQStDLGNBQU0sRUFDeEQsMENBQUcsQ0FBK0Msa0JBQU07OztBQUlwRTsyREFDMkQ7QUFDM0QsVUFBVTtFQUNOLFdBQVcsRUFBRSxTQUFVO0VBQ3ZCLFVBQVUsRUFBRSxNQUFPO0VBQ25CLFdBQVcsRUFBRSxHQUFJO0VBRWpCLEdBQUcsRUFBRSxrQ0FBRztFQUNSLEdBQUcsRUFBRSxtQ0FBRyxDQUF1QyxjQUFNLEVBQzdDLGtDQUFHLENBQXVDLGtCQUFNOzs7QUFHNUQsVUFBVTtFQUNOLFdBQVcsRUFBRSxTQUFVO0VBQ3ZCLFVBQVUsRUFBRSxNQUFPO0VBQ25CLFdBQVcsRUFBRSxNQUFPO0VBRXBCLEdBQUcsRUFBRSxxQ0FBRztFQUNSLEdBQUcsRUFBRSxzQ0FBRyxDQUEwQyxjQUFNLEVBQ2hELHFDQUFHLENBQTBDLGtCQUFNIiwKCSJuYW1lcyI6IFtdCn0= */

12
css/font/expanded.css.map Normal file
View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "expanded.css",
"sources": [
"../font.scss"
],
"sourcesContent": [
"/* [1] Proxima Nova\n=========================================================*/\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: 100;\n\n src: url('/css/fonts/proxima-nova/thin.eot');\n src: url('/css/fonts/proxima-nova/thin#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/thin.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: normal;\n\n src: url('/css/fonts/proxima-nova/regular.eot');\n src: url('/css/fonts/proxima-nova/regular#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/regular.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/regular.ttf') format(\"truetype\");\n}\n\n\n/* [2] Icomoon\n=========================================================*/\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: 100;\n\n src: url(\"/css/fonts/icomoon/thin.eot\");\n src: url('/css/fonts/icomoon/thin.woff') format(\"woff\"),\n url('/css/fonts/icomoon/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: normal;\n\n src: url(\"/css/fonts/icomoon/regular.eot\");\n src: url('/css/fonts/icomoon/regular.woff') format(\"woff\"),\n url('/css/fonts/icomoon/regular.ttf') format(\"truetype\");\n}\n"
],
"mappings": "AAAA;2DAC2D;AAC3D,UAAU;EACN,WAAW,EAAE,cAAe;EAC5B,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,GAAI;EAEjB,GAAG,EAAE,uCAAG;EACR,GAAG,EAAK,6CAAG,CAA4C,2BAAM,EACrD,wCAAG,CAA4C,cAAM,EACrD,uCAAG,CAA4C,kBAAM;;;AAGjE,UAAU;EACN,WAAW,EAAE,cAAe;EAC5B,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,MAAO;EAEpB,GAAG,EAAE,0CAAG;EACR,GAAG,EAAK,gDAAG,CAA+C,2BAAM,EACxD,2CAAG,CAA+C,cAAM,EACxD,0CAAG,CAA+C,kBAAM;;;AAIpE;2DAC2D;AAC3D,UAAU;EACN,WAAW,EAAE,SAAU;EACvB,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,GAAI;EAEjB,GAAG,EAAE,kCAAG;EACR,GAAG,EAAE,mCAAG,CAAuC,cAAM,EAC7C,kCAAG,CAAuC,kBAAM;;;AAG5D,UAAU;EACN,WAAW,EAAE,SAAU;EACvB,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,MAAO;EAEpB,GAAG,EAAE,qCAAG;EACR,GAAG,EAAE,sCAAG,CAA0C,cAAM,EAChD,qCAAG,CAA0C,kBAAM",
"names": []
}

3
css/font/min.css Normal file
View File

@ -0,0 +1,3 @@
@font-face{font-family:'Proxima Nova';font-style:normal;font-weight:100;src:url("/css/fonts/proxima-nova/thin.eot");src:url("/css/fonts/proxima-nova/thin#iefix.eot") format("embedded-opentype"),url("/css/fonts/proxima-nova/thin.woff") format("woff"),url("/css/fonts/proxima-nova/thin.ttf") format("truetype")}@font-face{font-family:'Proxima Nova';font-style:normal;font-weight:normal;src:url("/css/fonts/proxima-nova/regular.eot");src:url("/css/fonts/proxima-nova/regular#iefix.eot") format("embedded-opentype"),url("/css/fonts/proxima-nova/regular.woff") format("woff"),url("/css/fonts/proxima-nova/regular.ttf") format("truetype")}@font-face{font-family:'icomoon';font-style:normal;font-weight:100;src:url("/css/fonts/icomoon/thin.eot");src:url("/css/fonts/icomoon/thin.woff") format("woff"),url("/css/fonts/icomoon/thin.ttf") format("truetype")}@font-face{font-family:'icomoon';font-style:normal;font-weight:normal;src:url("/css/fonts/icomoon/regular.eot");src:url("/css/fonts/icomoon/regular.woff") format("woff"),url("/css/fonts/icomoon/regular.ttf") format("truetype")}
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibWluLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vZm9udC5zY3NzIgoJXSwKCSJzb3VyY2VzQ29udGVudCI6IFsKCQkiLyogWzFdIFByb3hpbWEgTm92YVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUHJveGltYSBOb3ZhJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDtcblxuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluLmVvdCcpO1xuICAgIHNyYzogICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluI2llZml4LmVvdCcpICBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbi53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbi50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUHJveGltYSBOb3ZhJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyLmVvdCcpO1xuICAgIHNyYzogICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyI2llZml4LmVvdCcpICBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhci53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhci50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cblxuLyogWzJdIEljb21vb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2ljb21vb24nO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuXG4gICAgc3JjOiB1cmwoXCIvY3NzL2ZvbnRzL2ljb21vb24vdGhpbi5lb3RcIik7XG4gICAgc3JjOiB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi90aGluLndvZmYnKSAgICAgICBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL2ljb21vb24vdGhpbi50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICBzcmM6IHVybChcIi9jc3MvZm9udHMvaWNvbW9vbi9yZWd1bGFyLmVvdFwiKTtcbiAgICBzcmM6IHVybCgnL2Nzcy9mb250cy9pY29tb29uL3JlZ3VsYXIud29mZicpICAgICAgIGZvcm1hdChcIndvZmZcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi9yZWd1bGFyLnR0ZicpICAgICAgICBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cbiIKCV0sCgkibWFwcGluZ3MiOiAiQUFFQSxVQUFVLENBQ04sV0FBVyxDQUFFLGNBQWUsQ0FDNUIsVUFBVSxDQUFFLE1BQU8sQ0FDbkIsV0FBVyxDQUFFLEdBQUksQ0FFakIsR0FBRyxDQUFFLHVDQUFHLENBQ1IsR0FBRyxDQUFLLDZDQUFHLENBQTRDLDJCQUFNLENBQ3JELHdDQUFHLENBQTRDLGNBQU0sQ0FDckQsdUNBQUcsQ0FBNEMsa0JBQU0sQ0FHakUsVUFBVSxDQUNOLFdBQVcsQ0FBRSxjQUFlLENBQzVCLFVBQVUsQ0FBRSxNQUFPLENBQ25CLFdBQVcsQ0FBRSxNQUFPLENBRXBCLEdBQUcsQ0FBRSwwQ0FBRyxDQUNSLEdBQUcsQ0FBSyxnREFBRyxDQUErQywyQkFBTSxDQUN4RCwyQ0FBRyxDQUErQyxjQUFNLENBQ3hELDBDQUFHLENBQStDLGtCQUFNLENBTXBFLFVBQVUsQ0FDTixXQUFXLENBQUUsU0FBVSxDQUN2QixVQUFVLENBQUUsTUFBTyxDQUNuQixXQUFXLENBQUUsR0FBSSxDQUVqQixHQUFHLENBQUUsa0NBQUcsQ0FDUixHQUFHLENBQUUsbUNBQUcsQ0FBdUMsY0FBTSxDQUM3QyxrQ0FBRyxDQUF1QyxrQkFBTSxDQUc1RCxVQUFVLENBQ04sV0FBVyxDQUFFLFNBQVUsQ0FDdkIsVUFBVSxDQUFFLE1BQU8sQ0FDbkIsV0FBVyxDQUFFLE1BQU8sQ0FFcEIsR0FBRyxDQUFFLHFDQUFHLENBQ1IsR0FBRyxDQUFFLHNDQUFHLENBQTBDLGNBQU0sQ0FDaEQscUNBQUcsQ0FBMEMsa0JBQU0iLAoJIm5hbWVzIjogW10KfQ== */

12
css/font/min.css.map Normal file
View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "min.css",
"sources": [
"../font.scss"
],
"sourcesContent": [
"/* [1] Proxima Nova\n=========================================================*/\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: 100;\n\n src: url('/css/fonts/proxima-nova/thin.eot');\n src: url('/css/fonts/proxima-nova/thin#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/thin.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: normal;\n\n src: url('/css/fonts/proxima-nova/regular.eot');\n src: url('/css/fonts/proxima-nova/regular#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/regular.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/regular.ttf') format(\"truetype\");\n}\n\n\n/* [2] Icomoon\n=========================================================*/\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: 100;\n\n src: url(\"/css/fonts/icomoon/thin.eot\");\n src: url('/css/fonts/icomoon/thin.woff') format(\"woff\"),\n url('/css/fonts/icomoon/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: normal;\n\n src: url(\"/css/fonts/icomoon/regular.eot\");\n src: url('/css/fonts/icomoon/regular.woff') format(\"woff\"),\n url('/css/fonts/icomoon/regular.ttf') format(\"truetype\");\n}\n"
],
"mappings": "AAEA,UAAU,CACN,WAAW,CAAE,cAAe,CAC5B,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,GAAI,CAEjB,GAAG,CAAE,uCAAG,CACR,GAAG,CAAK,6CAAG,CAA4C,2BAAM,CACrD,wCAAG,CAA4C,cAAM,CACrD,uCAAG,CAA4C,kBAAM,CAGjE,UAAU,CACN,WAAW,CAAE,cAAe,CAC5B,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,MAAO,CAEpB,GAAG,CAAE,0CAAG,CACR,GAAG,CAAK,gDAAG,CAA+C,2BAAM,CACxD,2CAAG,CAA+C,cAAM,CACxD,0CAAG,CAA+C,kBAAM,CAMpE,UAAU,CACN,WAAW,CAAE,SAAU,CACvB,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,GAAI,CAEjB,GAAG,CAAE,kCAAG,CACR,GAAG,CAAE,mCAAG,CAAuC,cAAM,CAC7C,kCAAG,CAAuC,kBAAM,CAG5D,UAAU,CACN,WAAW,CAAE,SAAU,CACvB,UAAU,CAAE,MAAO,CACnB,WAAW,CAAE,MAAO,CAEpB,GAAG,CAAE,qCAAG,CACR,GAAG,CAAE,sCAAG,CAA0C,cAAM,CAChD,qCAAG,CAA0C,kBAAM",
"names": []
}

33
css/font/nested.css Normal file
View File

@ -0,0 +1,33 @@
/* [1] Proxima Nova
=========================================================*/
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: 100;
src: url("/css/fonts/proxima-nova/thin.eot");
src: url("/css/fonts/proxima-nova/thin#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/thin.woff") format("woff"), url("/css/fonts/proxima-nova/thin.ttf") format("truetype"); }
@font-face {
font-family: 'Proxima Nova';
font-style: normal;
font-weight: normal;
src: url("/css/fonts/proxima-nova/regular.eot");
src: url("/css/fonts/proxima-nova/regular#iefix.eot") format("embedded-opentype"), url("/css/fonts/proxima-nova/regular.woff") format("woff"), url("/css/fonts/proxima-nova/regular.ttf") format("truetype"); }
/* [2] Icomoon
=========================================================*/
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: 100;
src: url("/css/fonts/icomoon/thin.eot");
src: url("/css/fonts/icomoon/thin.woff") format("woff"), url("/css/fonts/icomoon/thin.ttf") format("truetype"); }
@font-face {
font-family: 'icomoon';
font-style: normal;
font-weight: normal;
src: url("/css/fonts/icomoon/regular.eot");
src: url("/css/fonts/icomoon/regular.woff") format("woff"), url("/css/fonts/icomoon/regular.ttf") format("truetype"); }
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibmVzdGVkLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vZm9udC5zY3NzIgoJXSwKCSJzb3VyY2VzQ29udGVudCI6IFsKCQkiLyogWzFdIFByb3hpbWEgTm92YVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUHJveGltYSBOb3ZhJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IDEwMDtcblxuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluLmVvdCcpO1xuICAgIHNyYzogICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS90aGluI2llZml4LmVvdCcpICBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbi53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvdGhpbi50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUHJveGltYSBOb3ZhJztcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuICAgIHNyYzogdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyLmVvdCcpO1xuICAgIHNyYzogICAgdXJsKCcvY3NzL2ZvbnRzL3Byb3hpbWEtbm92YS9yZWd1bGFyI2llZml4LmVvdCcpICBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhci53b2ZmJykgICAgICAgZm9ybWF0KFwid29mZlwiKSxcbiAgICAgICAgICAgIHVybCgnL2Nzcy9mb250cy9wcm94aW1hLW5vdmEvcmVndWxhci50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cblxuLyogWzJdIEljb21vb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ2ljb21vb24nO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogMTAwO1xuXG4gICAgc3JjOiB1cmwoXCIvY3NzL2ZvbnRzL2ljb21vb24vdGhpbi5lb3RcIik7XG4gICAgc3JjOiB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi90aGluLndvZmYnKSAgICAgICBmb3JtYXQoXCJ3b2ZmXCIpLFxuICAgICAgICAgICAgdXJsKCcvY3NzL2ZvbnRzL2ljb21vb24vdGhpbi50dGYnKSAgICAgICAgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnaWNvbW9vbic7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICBzcmM6IHVybChcIi9jc3MvZm9udHMvaWNvbW9vbi9yZWd1bGFyLmVvdFwiKTtcbiAgICBzcmM6IHVybCgnL2Nzcy9mb250cy9pY29tb29uL3JlZ3VsYXIud29mZicpICAgICAgIGZvcm1hdChcIndvZmZcIiksXG4gICAgICAgICAgICB1cmwoJy9jc3MvZm9udHMvaWNvbW9vbi9yZWd1bGFyLnR0ZicpICAgICAgICBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cbiIKCV0sCgkibWFwcGluZ3MiOiAiQUFBQTsyREFDMkQ7QUFDM0QsVUFBVTtFQUNOLFdBQVcsRUFBRSxjQUFlO0VBQzVCLFVBQVUsRUFBRSxNQUFPO0VBQ25CLFdBQVcsRUFBRSxHQUFJO0VBRWpCLEdBQUcsRUFBRSx1Q0FBRztFQUNSLEdBQUcsRUFBSyw2Q0FBRyxDQUE0QywyQkFBTSxFQUNyRCx3Q0FBRyxDQUE0QyxjQUFNLEVBQ3JELHVDQUFHLENBQTRDLGtCQUFNOztBQUdqRSxVQUFVO0VBQ04sV0FBVyxFQUFFLGNBQWU7RUFDNUIsVUFBVSxFQUFFLE1BQU87RUFDbkIsV0FBVyxFQUFFLE1BQU87RUFFcEIsR0FBRyxFQUFFLDBDQUFHO0VBQ1IsR0FBRyxFQUFLLGdEQUFHLENBQStDLDJCQUFNLEVBQ3hELDJDQUFHLENBQStDLGNBQU0sRUFDeEQsMENBQUcsQ0FBK0Msa0JBQU07O0FBSXBFOzJEQUMyRDtBQUMzRCxVQUFVO0VBQ04sV0FBVyxFQUFFLFNBQVU7RUFDdkIsVUFBVSxFQUFFLE1BQU87RUFDbkIsV0FBVyxFQUFFLEdBQUk7RUFFakIsR0FBRyxFQUFFLGtDQUFHO0VBQ1IsR0FBRyxFQUFFLG1DQUFHLENBQXVDLGNBQU0sRUFDN0Msa0NBQUcsQ0FBdUMsa0JBQU07O0FBRzVELFVBQVU7RUFDTixXQUFXLEVBQUUsU0FBVTtFQUN2QixVQUFVLEVBQUUsTUFBTztFQUNuQixXQUFXLEVBQUUsTUFBTztFQUVwQixHQUFHLEVBQUUscUNBQUc7RUFDUixHQUFHLEVBQUUsc0NBQUcsQ0FBMEMsY0FBTSxFQUNoRCxxQ0FBRyxDQUEwQyxrQkFBTSIsCgkibmFtZXMiOiBbXQp9 */

12
css/font/nested.css.map Normal file
View File

@ -0,0 +1,12 @@
{
"version": 3,
"file": "nested.css",
"sources": [
"../font.scss"
],
"sourcesContent": [
"/* [1] Proxima Nova\n=========================================================*/\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: 100;\n\n src: url('/css/fonts/proxima-nova/thin.eot');\n src: url('/css/fonts/proxima-nova/thin#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/thin.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'Proxima Nova';\n font-style: normal;\n font-weight: normal;\n\n src: url('/css/fonts/proxima-nova/regular.eot');\n src: url('/css/fonts/proxima-nova/regular#iefix.eot') format(\"embedded-opentype\"),\n url('/css/fonts/proxima-nova/regular.woff') format(\"woff\"),\n url('/css/fonts/proxima-nova/regular.ttf') format(\"truetype\");\n}\n\n\n/* [2] Icomoon\n=========================================================*/\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: 100;\n\n src: url(\"/css/fonts/icomoon/thin.eot\");\n src: url('/css/fonts/icomoon/thin.woff') format(\"woff\"),\n url('/css/fonts/icomoon/thin.ttf') format(\"truetype\");\n}\n\n@font-face {\n font-family: 'icomoon';\n font-style: normal;\n font-weight: normal;\n\n src: url(\"/css/fonts/icomoon/regular.eot\");\n src: url('/css/fonts/icomoon/regular.woff') format(\"woff\"),\n url('/css/fonts/icomoon/regular.ttf') format(\"truetype\");\n}\n"
],
"mappings": "AAAA;2DAC2D;AAC3D,UAAU;EACN,WAAW,EAAE,cAAe;EAC5B,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,GAAI;EAEjB,GAAG,EAAE,uCAAG;EACR,GAAG,EAAK,6CAAG,CAA4C,2BAAM,EACrD,wCAAG,CAA4C,cAAM,EACrD,uCAAG,CAA4C,kBAAM;;AAGjE,UAAU;EACN,WAAW,EAAE,cAAe;EAC5B,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,MAAO;EAEpB,GAAG,EAAE,0CAAG;EACR,GAAG,EAAK,gDAAG,CAA+C,2BAAM,EACxD,2CAAG,CAA+C,cAAM,EACxD,0CAAG,CAA+C,kBAAM;;AAIpE;2DAC2D;AAC3D,UAAU;EACN,WAAW,EAAE,SAAU;EACvB,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,GAAI;EAEjB,GAAG,EAAE,kCAAG;EACR,GAAG,EAAE,mCAAG,CAAuC,cAAM,EAC7C,kCAAG,CAAuC,kBAAM;;AAG5D,UAAU;EACN,WAAW,EAAE,SAAU;EACvB,UAAU,EAAE,MAAO;EACnB,WAAW,EAAE,MAAO;EAEpB,GAAG,EAAE,qCAAG;EACR,GAAG,EAAE,sCAAG,CAA0C,cAAM,EAChD,qCAAG,CAA0C,kBAAM",
"names": []
}

40
css/global.scss Executable file
View File

@ -0,0 +1,40 @@
@import 'constants';
/* [1] Panel list (tokens, utilisateurs, etc)
=========================================================*/
@import 'panel-list';
/* [2] Formulaire de type 'timeline'
=========================================================*/
@import 'timeline-form';
#WRAPPER > #CONTAINER table,
#WRAPPER > #CONTAINER > section > table{
& tr,
& > tr{
& > td{
padding: .8em;
color: #888;
font-weight: normal;
text-align: center;
white-space: nowrap;
& > input[type="checkbox"]+label[for]:before{
left: -.4em;
width: calc( 1.05em - 2*.15em );
}
}
& > td.hidden:before{
content: '+';
color: #ddd;
font-weight: bold;
}
}
}

174
css/global/compact.css Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

750
css/global/expanded.css Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

3
css/global/min.css Normal file

File diff suppressed because one or more lines are too long

18
css/global/min.css.map Normal file

File diff suppressed because one or more lines are too long

499
css/global/nested.css Normal file

File diff suppressed because one or more lines are too long

18
css/global/nested.css.map Normal file

File diff suppressed because one or more lines are too long

View File

@ -57,21 +57,19 @@
& > #user-picture{
display: block;
position: absolute;
top: 1.5em;
top: 1em;
right: $header-height;
width: calc( #{$header-height} - 2*1.5em );
height: calc( #{$header-height} - 2*1.5em );
width: calc( #{$header-height} - 2*1em );
height: calc( #{$header-height} - 2*1em );
border-radius: 50% / 50%;
background-color: $theme-bg;
background: $theme-bg url('/f/svg/nopic/st/header') center center no-repeat;
background-size: auto 80%;
// Si on est connecte
&.active{
background-color: $theme-fg-primary;
}
&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }
cursor: default;
@ -90,7 +88,7 @@
width: $header-height;
height: $header-height;
background: url('/src/static/header/expand@000000.svg') center center no-repeat;
background: url('/f/svg/expand/st/header/000000') center center no-repeat;
background-size: 1em 1em;
cursor: pointer;

43
css/header/compact.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "compact.css",
"sources": [
"../header.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants';\n\n\n#WRAPPER > #HEADER{\n\n\t/* [1] Barre de recherche\n\t=========================================================*/\n\t& > #searchbar{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: .8em;\n\t\t\tleft: 1em;\n\t\t\twidth: 20em;\n\t\t\theight: 2em;\n\n\t\tpadding: .2em 1em;\n\n\t\tborder: 0;\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: $theme-bg;\n\n\t}\n\n\t/* [2] Informations utilisateur\n\t=========================================================*/\n\t/* (0) Conteneur */\n\t& > #user-data{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\theight: calc( 100% - 2*1em );\n\n\n\t\t/* (1) Username de l'utilisateur */\n\t\t& > #user-name{\n\t \tdisplay: block;\n\t \tposition: absolute;\n\t \t\ttop: 0;\n\t \t\tright: calc( #{$header-height}*2 - 1em );\n\t \t\theight: $header-height;\n\n\t \tpadding: 0 1em;\n\n\t\t\tcolor: #fff;\n\t\t\tline-height: $header-height;\n\t\t\twhite-space: nowrap;\n\t\t\tfont-weight: bold;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t\t/* (2) Image du profil */\n\t\t& > #user-picture{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 1em;\n\t\t\t\tright: $header-height;\n\t\t\t\twidth: calc( #{$header-height} - 2*1em );\n\t\t\t\theight: calc( #{$header-height} - 2*1em );\n\n\n\t\t\tborder-radius: 50% / 50%;\n\n\t\t\tbackground: $theme-bg url('/f/svg/nopic/st/header') center center no-repeat;\n\t\t\tbackground-size: auto 80%;\n\n\t\t\t// Si on est connecte\n\t\t\t&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }\n\n\t\t\tcursor: default;\n\n\t\t\talign-self: center;\n\t\t}\n\n\n\n\t\t/* (3) Icone d'activation */\n\t\t&:before{\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: 0;\n\t\t\t\twidth: $header-height;\n\t\t\t\theight: $header-height;\n\n\t\t\tbackground: url('/f/svg/expand/st/header/ffffff') center center no-repeat;\n\t\t\tbackground-size: 1em 1em;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t}\n\n\n\n\t/* [3] Menu deroulant pour l'administration du profil\n\t=========================================================*/\n\t& > .user-panel{\n \tdisplay: block;\n \tposition: absolute;\n \ttop: calc( #{$header-height} - 1em );\n \tright: 0;\n\n margin: .5em;\n\n\t\tborder-radius: 5px;\n\t\tborder: 1px solid darken($theme-bg, 10);\n\n background-color: #fff;\n\n @include transition( left .3s ease-in-out );\n\n\n /* (1) Pour chaque element du menu */\n & > span{\n \tdisplay: block;\n \tposition: relative;\n\n\t\t\t// On ajoute une ligne en dessous sauf pour le dernier\n\t\t\t&:not(:last-child){\n\t\t\t\tborder-bottom: 1px solid #ddd;\n\t\t\t}\n\n\t\t\tcolor: #000;\n\t\t\tpadding: .5em 1em;\n\t\t\tpadding-left: 2em;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// @hover\n\t\t\t&:hover{\n\t\t\t\tbackground-color: #eee;\n\t\t\t}\n }\n\n\n\n\n }\n\n /* (3) Gestion de l'activation ou non de l'user panel */\n\t& > #toggle-user-panel{ display: none; }\n\t& > #toggle-user-panel + .user-panel{ left: 100%; }\n\t& > #toggle-user-panel:checked + .user-panel{ left: auto; }\n\t& > #toggle-user-panel:checked + .user-panel:before{ left: 7em; }\n\n\n\n\n\n\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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #399ced;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n @return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n"
],
"mappings": "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",
"names": []
}

141
css/header/expanded.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "expanded.css",
"sources": [
"../header.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants';\n\n\n#WRAPPER > #HEADER{\n\n\t/* [1] Barre de recherche\n\t=========================================================*/\n\t& > #searchbar{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: .8em;\n\t\t\tleft: 1em;\n\t\t\twidth: 20em;\n\t\t\theight: 2em;\n\n\t\tpadding: .2em 1em;\n\n\t\tborder: 0;\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: $theme-bg;\n\n\t}\n\n\t/* [2] Informations utilisateur\n\t=========================================================*/\n\t/* (0) Conteneur */\n\t& > #user-data{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\theight: calc( 100% - 2*1em );\n\n\n\t\t/* (1) Username de l'utilisateur */\n\t\t& > #user-name{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: calc( #{$header-height}*2 - 1em );\n\t\t\t\theight: $header-height;\n\n\t\t\tpadding: 0 1em;\n\n\t\t\tcolor: #555;\n\t\t\tline-height: $header-height;\n\t\t\twhite-space: nowrap;\n\t\t\tfont-weight: bold;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t\t/* (2) Image du profil */\n\t\t& > #user-picture{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 1em;\n\t\t\t\tright: $header-height;\n\t\t\t\twidth: calc( #{$header-height} - 2*1em );\n\t\t\t\theight: calc( #{$header-height} - 2*1em );\n\n\n\t\t\tborder-radius: 50% / 50%;\n\n\t\t\tbackground: $theme-bg url('/f/svg/nopic/st/header') center center no-repeat;\n\t\t\tbackground-size: auto 80%;\n\n\t\t\t// Si on est connecte\n\t\t\t&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }\n\n\t\t\tcursor: default;\n\n\t\t\talign-self: center;\n\t\t}\n\n\n\n\t\t/* (3) Icone d'activation */\n\t\t&:before{\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: 0;\n\t\t\t\twidth: $header-height;\n\t\t\t\theight: $header-height;\n\n\t\t\tbackground: url('/f/svg/expand/st/header/000000') center center no-repeat;\n\t\t\tbackground-size: 1em 1em;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t}\n\n\n\n\t/* [3] Menu deroulant pour l'administration du profil\n\t=========================================================*/\n\t& > .user-panel{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: calc( #{$header-height} - 1em );\n\t\t\tright: 0;\n\n\t\tmargin: .5em;\n\n\t\tborder-radius: 5px;\n\t\tborder: 1px solid darken($theme-bg, 10);\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( left .3s ease-in-out );\n\n\n\t\t/* (1) Pour chaque element du menu */\n\t\t& > span{\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\n\t\t\t// On ajoute une ligne en dessous sauf pour le dernier\n\t\t\t&:not(:last-child){\n\t\t\t\tborder-bottom: 1px solid #ddd;\n\t\t\t}\n\n\t\t\tcolor: #000;\n\t\t\tpadding: .5em 1em;\n\t\t\tpadding-left: 2em;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// @hover\n\t\t\t&:hover{\n\t\t\t\tbackground-color: #eee;\n\t\t\t}\n\t\t}\n\n\n\n\n\t}\n\n\t/* (3) Gestion de l'activation ou non de l'user panel */\n\t& > #toggle-user-panel{ display: none; }\n\t& > #toggle-user-panel + .user-panel{ left: 100%; }\n\t& > #toggle-user-panel:checked + .user-panel{ left: auto; }\n\t& > #toggle-user-panel:checked + .user-panel:before{ left: 7em; }\n\n\n\n\n\n\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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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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",
"names": []
}

3
css/header/min.css Normal file

File diff suppressed because one or more lines are too long

14
css/header/min.css.map Normal file
View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "min.css",
"sources": [
"../header.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants';\n\n\n#WRAPPER > #HEADER{\n\n\t/* [1] Barre de recherche\n\t=========================================================*/\n\t& > #searchbar{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: .8em;\n\t\t\tleft: 1em;\n\t\t\twidth: 20em;\n\t\t\theight: 2em;\n\n\t\tpadding: .2em 1em;\n\n\t\tborder: 0;\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: $theme-bg;\n\n\t}\n\n\t/* [2] Informations utilisateur\n\t=========================================================*/\n\t/* (0) Conteneur */\n\t& > #user-data{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\theight: calc( 100% - 2*1em );\n\n\n\t\t/* (1) Username de l'utilisateur */\n\t\t& > #user-name{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: calc( #{$header-height}*2 - 1em );\n\t\t\t\theight: $header-height;\n\n\t\t\tpadding: 0 1em;\n\n\t\t\tcolor: #555;\n\t\t\tline-height: $header-height;\n\t\t\twhite-space: nowrap;\n\t\t\tfont-weight: bold;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t\t/* (2) Image du profil */\n\t\t& > #user-picture{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 1em;\n\t\t\t\tright: $header-height;\n\t\t\t\twidth: calc( #{$header-height} - 2*1em );\n\t\t\t\theight: calc( #{$header-height} - 2*1em );\n\n\n\t\t\tborder-radius: 50% / 50%;\n\n\t\t\tbackground: $theme-bg url('/f/svg/nopic/st/header') center center no-repeat;\n\t\t\tbackground-size: auto 80%;\n\n\t\t\t// Si on est connecte\n\t\t\t&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }\n\n\t\t\tcursor: default;\n\n\t\t\talign-self: center;\n\t\t}\n\n\n\n\t\t/* (3) Icone d'activation */\n\t\t&:before{\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: 0;\n\t\t\t\twidth: $header-height;\n\t\t\t\theight: $header-height;\n\n\t\t\tbackground: url('/f/svg/expand/st/header/000000') center center no-repeat;\n\t\t\tbackground-size: 1em 1em;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t}\n\n\n\n\t/* [3] Menu deroulant pour l'administration du profil\n\t=========================================================*/\n\t& > .user-panel{\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\t\ttop: calc( #{$header-height} - 1em );\n\t\t\tright: 0;\n\n\t\tmargin: .5em;\n\n\t\tborder-radius: 5px;\n\t\tborder: 1px solid darken($theme-bg, 10);\n\n\t\tbackground-color: #fff;\n\n\t\t@include transition( left .3s ease-in-out );\n\n\n\t\t/* (1) Pour chaque element du menu */\n\t\t& > span{\n\t\t\tdisplay: block;\n\t\t\tposition: relative;\n\n\t\t\t// On ajoute une ligne en dessous sauf pour le dernier\n\t\t\t&:not(:last-child){\n\t\t\t\tborder-bottom: 1px solid #ddd;\n\t\t\t}\n\n\t\t\tcolor: #000;\n\t\t\tpadding: .5em 1em;\n\t\t\tpadding-left: 2em;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// @hover\n\t\t\t&:hover{\n\t\t\t\tbackground-color: #eee;\n\t\t\t}\n\t\t}\n\n\n\n\n\t}\n\n\t/* (3) Gestion de l'activation ou non de l'user panel */\n\t& > #toggle-user-panel{ display: none; }\n\t& > #toggle-user-panel + .user-panel{ left: 100%; }\n\t& > #toggle-user-panel:checked + .user-panel{ left: auto; }\n\t& > #toggle-user-panel:checked + .user-panel:before{ left: 7em; }\n\n\n\n\n\n\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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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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",
"names": []
}

112
css/header/nested.css Normal file

File diff suppressed because one or more lines are too long

14
css/header/nested.css.map Normal file
View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "nested.css",
"sources": [
"../header.scss",
"../constants.scss"
],
"sourcesContent": [
"@import 'constants';\n\n\n#WRAPPER > #HEADER{\n\n\t/* [1] Barre de recherche\n\t=========================================================*/\n\t& > #searchbar{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: .8em;\n\t\t\tleft: 1em;\n\t\t\twidth: 20em;\n\t\t\theight: 2em;\n\n\t\tpadding: .2em 1em;\n\n\t\tborder: 0;\n\t\tborder-radius: 3px;\n\n\t\tbackground-color: $theme-bg;\n\n\t}\n\n\t/* [2] Informations utilisateur\n\t=========================================================*/\n\t/* (0) Conteneur */\n\t& > #user-data{\n\t\tdisplay: inline-block;\n\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\theight: calc( 100% - 2*1em );\n\n\n\t\t/* (1) Username de l'utilisateur */\n\t\t& > #user-name{\n\t \tdisplay: block;\n\t \tposition: absolute;\n\t \t\ttop: 0;\n\t \t\tright: calc( #{$header-height}*2 - 1em );\n\t \t\theight: $header-height;\n\n\t \tpadding: 0 1em;\n\n\t\t\tcolor: #fff;\n\t\t\tline-height: $header-height;\n\t\t\twhite-space: nowrap;\n\t\t\tfont-weight: bold;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t\t/* (2) Image du profil */\n\t\t& > #user-picture{\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 1em;\n\t\t\t\tright: $header-height;\n\t\t\t\twidth: calc( #{$header-height} - 2*1em );\n\t\t\t\theight: calc( #{$header-height} - 2*1em );\n\n\n\t\t\tborder-radius: 50% / 50%;\n\n\t\t\tbackground: $theme-bg url('/f/svg/nopic/st/header') center center no-repeat;\n\t\t\tbackground-size: auto 80%;\n\n\t\t\t// Si on est connecte\n\t\t\t&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }\n\n\t\t\tcursor: default;\n\n\t\t\talign-self: center;\n\t\t}\n\n\n\n\t\t/* (3) Icone d'activation */\n\t\t&:before{\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\t\ttop: 0;\n\t\t\t\tright: 0;\n\t\t\t\twidth: $header-height;\n\t\t\t\theight: $header-height;\n\n\t\t\tbackground: url('/f/svg/expand/st/header/ffffff') center center no-repeat;\n\t\t\tbackground-size: 1em 1em;\n\n\t\t\tcursor: pointer;\n\n\t\t}\n\n\n\t}\n\n\n\n\t/* [3] Menu deroulant pour l'administration du profil\n\t=========================================================*/\n\t& > .user-panel{\n \tdisplay: block;\n \tposition: absolute;\n \ttop: calc( #{$header-height} - 1em );\n \tright: 0;\n\n margin: .5em;\n\n\t\tborder-radius: 5px;\n\t\tborder: 1px solid darken($theme-bg, 10);\n\n background-color: #fff;\n\n @include transition( left .3s ease-in-out );\n\n\n /* (1) Pour chaque element du menu */\n & > span{\n \tdisplay: block;\n \tposition: relative;\n\n\t\t\t// On ajoute une ligne en dessous sauf pour le dernier\n\t\t\t&:not(:last-child){\n\t\t\t\tborder-bottom: 1px solid #ddd;\n\t\t\t}\n\n\t\t\tcolor: #000;\n\t\t\tpadding: .5em 1em;\n\t\t\tpadding-left: 2em;\n\n\t\t\tcursor: pointer;\n\n\t\t\t// @hover\n\t\t\t&:hover{\n\t\t\t\tbackground-color: #eee;\n\t\t\t}\n }\n\n\n\n\n }\n\n /* (3) Gestion de l'activation ou non de l'user panel */\n\t& > #toggle-user-panel{ display: none; }\n\t& > #toggle-user-panel + .user-panel{ left: 100%; }\n\t& > #toggle-user-panel:checked + .user-panel{ left: auto; }\n\t& > #toggle-user-panel:checked + .user-panel:before{ left: 7em; }\n\n\n\n\n\n\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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #399ced;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n\n/* [4] Functions\n=========================================================*/\n// Transforme une couleur hex en string sans le #\n@function color-str($color){\n @return str-slice(#{$color}, 2, str-length(#{$color}));\n}\n"
],
"mappings": "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",
"names": []
}

View File

@ -110,7 +110,7 @@ body{
align-items: center;
background-color: #D7D7D9;
background-color: $header-dark;
@include transition( left .3s ease-in-out );
@ -124,7 +124,7 @@ body{
width: 35em;
height: 10em;
background: url('/src/static/iconv4.png') center center no-repeat;
background: url('/f/svg/iconv2/st') center center no-repeat;
background-size: auto 100%;
}
@ -151,8 +151,8 @@ body{
align-items: middle;
border-radius: 3px;
border: 1px solid #aaa;
border-radius: 5px;
border: 1px solid lighten($theme-fg, 10);
background-color: $header-dark;
@ -166,8 +166,7 @@ body{
// Animation de @hover/@focus
&:hover,
&:focus
&:not([value=""]){
&:focus{
border-color: $theme-fg-primary;
}
@ -177,7 +176,7 @@ body{
/* (2.2) Bouton de connexion */
& > input[type='submit']{
width: 100%;
margin-top: calc( 2em - 3px );
margin-top: 2em;
margin-bottom: 2em;
border: 0;
@ -196,16 +195,12 @@ body{
// Animation de @hover
&:hover, &.hover{
background-color: darken($theme-fg-primary, 10);
border-top-width: 1px;
margin-top: calc( 2em - 2px );
margin-bottom: calc( 2em + 2px );
border-top-color: transparent;
}
// Animation de clic @active
&:active{
border-top-width: 0;
margin-top: 2em;
margin-bottom: calc( 2em + 3px );
border-top-color: transparent;
}
}
@ -216,7 +211,6 @@ body{
/* (3) Mot de passe oublie */
& > #lost-password{
position: absolute;
color: #777;
cursor: pointer;
@ -239,7 +233,7 @@ body{
min-width: 2em;
height: 2em;
background: url('/src/static/container/back@555555.svg') right center no-repeat;
background: url('/f/svg/back/st/container/555555') right center no-repeat;
background-size: 1em;
color: #555;

45
css/layout/compact.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "compact.css",
"sources": [
"../layout.scss",
"../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: $dark-bg;\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('/f/svg/icon/st') 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: 5px;\n\t\t\tborder: 1px solid lighten($theme-fg, 10);\n\n\t\t\tbackground-color: $dark-bg;\n\n\t\t\tcolor: $dark-fg-primary;\n\t\t\tfont-weight: bold;\n\t\t\tletter-spacing: .07em;\n\n\t\t\t@include transition( border .2s ease-in-out );\n\n\t\t\tcursor: default;\n\n\t\t\t// Animation de @hover/@focus\n\t\t\t&:hover,\n\t\t\t&:focus{\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: 2em 0;\n\n\t\t\tborder: 0;\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// Animation de @hover\n\t\t\t&:hover{\n\t\t\t\tbackground-color: darken($theme-fg-primary, 10);\n\t\t\t\tbox-shadow: 0 0 1em darken($dark-bg, 10);\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\tcolor: $dark-fg;\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('/f/svg/back/st/container/ffffff') right center no-repeat;\n\t\tbackground-size: 1em;\n\n\t\tcolor: #fff;\n\t\tpadding-right: 2em;\n\t\tline-height: 2em;\n\t\tfont-weight: bold;\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: #399ced;\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: #333333;\n\n/* (3) Couleurs du theme pour la timeline */\n$timeline-color: #399ced;\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 transform: $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 -webkit-transition: $value;\n transition: $value;\n}\n"
],
"mappings": "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",
"names": []
}

196
css/layout/expanded.css Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "expanded.css",
"sources": [
"../layout.scss",
"../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: $header-dark;\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('/f/svg/iconv2/st') 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: 5px;\n\t\t\tborder: 1px solid lighten($theme-fg, 10);\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\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: 2em;\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-color: transparent;\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t&:active{\n\t\t\t\tborder-top-color: transparent;\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\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('/f/svg/back/st/container/555555') 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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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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",
"names": []
}

3
css/layout/min.css Normal file

File diff suppressed because one or more lines are too long

14
css/layout/min.css.map Normal file
View File

@ -0,0 +1,14 @@
{
"version": 3,
"file": "min.css",
"sources": [
"../layout.scss",
"../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: $header-dark;\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('/f/svg/iconv2/st') 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: 5px;\n\t\t\tborder: 1px solid lighten($theme-fg, 10);\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\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: 2em;\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-color: transparent;\n\t\t\t}\n\n\t\t\t// Animation de clic @active\n\t\t\t&:active{\n\t\t\t\tborder-top-color: transparent;\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\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('/f/svg/back/st/container/555555') 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: #399ced;\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: #399ced;\n$timeline-1: #e64e3e;\n$timeline-2: #10baa3;\n$timeline-3: #b14be7;\n$timeline-4: #053b5d;\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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",
"names": []
}

Some files were not shown because too many files have changed in this diff Show More