Compare commits
No commits in common. "master" and "feature/charts-structure" have entirely different histories.
master
...
feature/ch
|
@ -1,11 +1,3 @@
|
||||||
.ftpconfig
|
.ftpconfig
|
||||||
sftp-config.json
|
sftp-config.json
|
||||||
phpunit/coverage/
|
phpunit/coverage/
|
||||||
/public_html/tmp/*
|
|
||||||
<<<<<<< HEAD
|
|
||||||
/build/lightdb/storage/*
|
|
||||||
/config/server.json
|
|
||||||
=======
|
|
||||||
/build/lightdb/storage/*/data
|
|
||||||
**.swp
|
|
||||||
>>>>>>> 255af4d6b03408ab9f840db1fea74a35b7bc28c4
|
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
?>
|
|
@ -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>",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -1,24 +1,19 @@
|
||||||
<?php define('__BUILD__', dirname(__FILE__) );
|
<?php define('__ROOT__', dirname(__FILE__) );
|
||||||
require_once __ROOT__.'/autoloader.php';
|
require_once __ROOT__.'/manager/autoloader.php';
|
||||||
|
|
||||||
|
use \manager\ModuleRequest;
|
||||||
|
use \manager\ResourceDispatcher;
|
||||||
|
use \manager\sessionManager;
|
||||||
use \api\core\ModuleRequest;
|
|
||||||
use \manager\ManagerError;
|
use \manager\ManagerError;
|
||||||
use \database\core\Repo;
|
use \manager\Repo;
|
||||||
use \database\core\DatabaseDriver;
|
use \manager\Database;
|
||||||
use \lightdb\core\lightdb;
|
use \manager\lightdb;
|
||||||
|
|
||||||
use \api\client;
|
use \api\client;
|
||||||
|
|
||||||
debug();
|
debug();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* PARSAGE DE JOURNAUX D'APPEL
|
/* PARSAGE DE JOURNAUX D'APPEL
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
@ -26,9 +21,9 @@
|
||||||
function parseCallLog(){
|
function parseCallLog(){
|
||||||
/* [2] On cree la requete
|
/* [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'
|
'phone_number' => '01 02 03 04 05'
|
||||||
]);
|
));
|
||||||
$answer = $request->dispatch(); // on l'execute
|
$answer = $request->dispatch(); // on l'execute
|
||||||
|
|
||||||
/* [3] Si erreur
|
/* [3] Si erreur
|
||||||
|
@ -56,20 +51,20 @@
|
||||||
/* [1] Test du client de l'API generique
|
/* [1] Test du client de l'API generique
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// $api = new client();
|
// $api = new client();
|
||||||
//
|
|
||||||
// $response = $api->send('generate-network-chart-data', [
|
// $response = $api->send('generate-network-chart-data', array(
|
||||||
// '@token'=> '52945efbed43b50c12413f2f0e9519bfd9e98ce8'
|
// '@token'=> '52945efbed43b50c12413f2f0e9519bfd9e98ce8'
|
||||||
// ]);
|
// ));
|
||||||
//
|
|
||||||
// var_dump($response);
|
// var_dump($response);
|
||||||
|
|
||||||
|
|
||||||
/* [2] Gestion du getter dynamique des Repos
|
/* [2] Gestion du getter dynamique des Repos
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// var_dump( \database\repo\user::getById(1) );
|
// var_dump( \manager\repo\user::getById(1) );
|
||||||
// var_dump( \database\repo\user::getByLogin('xdrm') );
|
// var_dump( \manager\repo\user::getByLogin('xdrm') );
|
||||||
// var_dump( \database\repo\subject::getById(69) );
|
// var_dump( \manager\repo\subject::getById(69) );
|
||||||
// var_dump( \database\repo\relation::getById(638, 640, 30) );
|
// var_dump( \manager\repo\relation::getById(638, 640, 30) );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,42 +80,41 @@
|
||||||
//
|
//
|
||||||
// if( isset($_FILES) ){
|
// 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();
|
// $response = $request->dispatch();
|
||||||
// var_dump( ManagerError::explicit($response->error) );
|
// 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
|
/* [4] Test download via AJAX
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// $req = new ModuleRequest('subject/search', [ 'name' => 'a' ]);
|
$db = new lightdb('phone_db', __ROOT__.'/src/dynamic/');
|
||||||
//
|
var_dump( array_keys($db->index()));
|
||||||
// $res = $req->dispatch();
|
$db->close();
|
||||||
//
|
|
||||||
// if( $res->error != ManagerError::Success )
|
|
||||||
// var_dump( ManagerError::explicit($res->error) );
|
|
||||||
//
|
|
||||||
// var_dump($res);
|
|
||||||
|
|
||||||
// $db = new lightdb('phone_db');
|
$db = new lightdb('facebook_db', __ROOT__.'/src/dynamic/');
|
||||||
// $db->delete(284);
|
var_dump( array_keys($db->index()));
|
||||||
// $db->close();
|
$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);
|
// $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->fwrite('SOME TEXT');
|
||||||
// $f=null;
|
// $f=null;
|
||||||
// var_dump('writing time : '.(microtime(true)-$start));
|
// var_dump('writing time : '.(microtime(true)-$start));
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// $start = microtime(true);
|
// $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();
|
// $read = $f2->fgets();
|
||||||
// $f2=null;
|
// $f2=null;
|
||||||
// var_dump('reading time : '.(microtime(true)-$start));
|
// var_dump('reading time : '.(microtime(true)-$start));
|
||||||
|
@ -132,20 +126,20 @@
|
||||||
/* [4] Analyse des performances de `lightdb`
|
/* [4] Analyse des performances de `lightdb`
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// $start = microtime(true);
|
// $start = microtime(true);
|
||||||
// $db = new lightdb('test1', __BUILD__.'/tmp/');
|
// $db = new lightdb('test1', __ROOT__.'/tmp/');
|
||||||
//
|
//
|
||||||
// /* (0) Création des objets à insérer */
|
// /* (0) Création des objets à insérer */
|
||||||
// $object_10 = [];
|
// $object_10 = array();
|
||||||
// for( $i = 0 ; $i < 10 ; $i++ )
|
// for( $i = 0 ; $i < 10 ; $i++ )
|
||||||
// $object_10["key-$i-"] = "value-$i-";
|
// $object_10["key-$i-"] = "value-$i-";
|
||||||
// $o10len = strlen( json_encode($object_10) );
|
// $o10len = strlen( json_encode($object_10) );
|
||||||
//
|
//
|
||||||
// $object_100 = [];
|
// $object_100 = array();
|
||||||
// for( $i = 0 ; $i < 100 ; $i++ )
|
// for( $i = 0 ; $i < 100 ; $i++ )
|
||||||
// $object_100["key-$i-"] = "value-$i-";
|
// $object_100["key-$i-"] = "value-$i-";
|
||||||
// $o100len = strlen( json_encode($object_100) );
|
// $o100len = strlen( json_encode($object_100) );
|
||||||
//
|
//
|
||||||
// $object_1000 = [];
|
// $object_1000 = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// $object_1000["key-$i-"] = "value-$i-";
|
// $object_1000["key-$i-"] = "value-$i-";
|
||||||
// $o1000len = strlen( json_encode($object_1000) );
|
// $o1000len = strlen( json_encode($object_1000) );
|
||||||
|
@ -157,7 +151,7 @@
|
||||||
// var_dump("Inserting 1000* object_10($o10len)");
|
// var_dump("Inserting 1000* object_10($o10len)");
|
||||||
// $start = microtime(true);
|
// $start = microtime(true);
|
||||||
//
|
//
|
||||||
// $data = [];
|
// $data = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// // $db->insert("object-10-$i", $object_10);
|
// // $db->insert("object-10-$i", $object_10);
|
||||||
// $data["object-10-$i"] = $object_10;
|
// $data["object-10-$i"] = $object_10;
|
||||||
|
@ -172,7 +166,7 @@
|
||||||
// $start = microtime(true);
|
// $start = microtime(true);
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// $data = [];
|
// $data = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// // $db->insert("object-100-$i", $object_100);
|
// // $db->insert("object-100-$i", $object_100);
|
||||||
// $data["object-100-$i"] = $object_100;
|
// $data["object-100-$i"] = $object_100;
|
||||||
|
@ -186,7 +180,7 @@
|
||||||
// var_dump("Inserting 1000* object_1000($o1000len)");
|
// var_dump("Inserting 1000* object_1000($o1000len)");
|
||||||
// $start = microtime(true);
|
// $start = microtime(true);
|
||||||
//
|
//
|
||||||
// $data = [];
|
// $data = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// // $db->insert("object-1000-$i", $object_1000);
|
// // $db->insert("object-1000-$i", $object_1000);
|
||||||
// $data["object-1000-$i"] = $object_1000;
|
// $data["object-1000-$i"] = $object_1000;
|
||||||
|
@ -232,7 +226,7 @@
|
||||||
// {1} Suppression d'objects de taille 10 //
|
// {1} Suppression d'objects de taille 10 //
|
||||||
// var_dump("Deleting 10* object_10($o10len)");
|
// var_dump("Deleting 10* object_10($o10len)");
|
||||||
//
|
//
|
||||||
// $keys = [];
|
// $keys = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// array_push($keys, "object-10-$i");
|
// array_push($keys, "object-10-$i");
|
||||||
//
|
//
|
||||||
|
@ -245,7 +239,7 @@
|
||||||
// // {2} Suppression d'objects de taille 100 //
|
// // {2} Suppression d'objects de taille 100 //
|
||||||
// var_dump("Deleting 1000* object_100($o100len)");
|
// var_dump("Deleting 1000* object_100($o100len)");
|
||||||
//
|
//
|
||||||
// $keys = [];
|
// $keys = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// array_push($keys, "object-100-$i");
|
// array_push($keys, "object-100-$i");
|
||||||
//
|
//
|
||||||
|
@ -258,7 +252,7 @@
|
||||||
// // {3} Suppression d'objects de taille 1000 //
|
// // {3} Suppression d'objects de taille 1000 //
|
||||||
// var_dump("Deleting 1000* object_1000($o1000len)");
|
// var_dump("Deleting 1000* object_1000($o1000len)");
|
||||||
|
|
||||||
// $keys = [];
|
// $keys = array();
|
||||||
// for( $i = 0 ; $i < 1000 ; $i++ )
|
// for( $i = 0 ; $i < 1000 ; $i++ )
|
||||||
// array_push($keys, "object-1000-$i");
|
// array_push($keys, "object-1000-$i");
|
||||||
//
|
//
|
||||||
|
@ -269,7 +263,4 @@
|
||||||
//
|
//
|
||||||
// $db->close();
|
// $db->close();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
|
@ -1,17 +0,0 @@
|
||||||
<?php
|
|
||||||
/**************************
|
|
||||||
* Builder *
|
|
||||||
* 05-11-16 *
|
|
||||||
***************************
|
|
||||||
* Designed & Developed by *
|
|
||||||
* xdrm-brackets *
|
|
||||||
***************************
|
|
||||||
* https://xdrm.io/ *
|
|
||||||
**************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Builder{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -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
|
@ -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
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -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
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -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; }
|
|
||||||
}
|
|
|
@ -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"}
|
|
|
@ -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}}
|
|
|
@ -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 d’autres 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
|
@ -1,7 +0,0 @@
|
||||||
Contient les équivalences :
|
|
||||||
|
|
||||||
id_subject => {
|
|
||||||
"subject": [données du sujet]
|
|
||||||
"contact": [liste des id des contacts],
|
|
||||||
"relations": [liste des relations]
|
|
||||||
}
|
|
|
@ -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}}
|
|
|
@ -1 +0,0 @@
|
||||||
107
|
|
|
@ -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
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
|
|
@ -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');
|
|
|
@ -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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"host" : "localhost",
|
||||||
|
"dbname" : "socioview",
|
||||||
|
"user" : "php",
|
||||||
|
"password" : "Qt358nUdyeTxLDM8"
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"host" : "xdrm.io",
|
||||||
|
"dbname" : "socioview",
|
||||||
|
"user" : "php",
|
||||||
|
"password" : "QbzjZACndQM6NmuD"
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"svg": "image/svg+xml",
|
||||||
|
|
||||||
|
"jpg": "image/jpeg",
|
||||||
|
"png": "image/png",
|
||||||
|
|
||||||
|
"css": "text/css",
|
||||||
|
"js": "text/javascript",
|
||||||
|
|
||||||
|
"json": "application/json"
|
||||||
|
}
|
|
@ -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"
|
||||||
|
}
|
|
@ -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" },
|
"attributes": { "data-link": "dashboard", "class": "sep" },
|
||||||
|
|
||||||
"children": [
|
"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" },
|
"attributes": { "data-link": "input" },
|
||||||
|
|
||||||
"children": [
|
"children": [
|
||||||
{ "permissions": ["admin"], "text": "Chercher un sujet",
|
{ "permissions": ["admin"], "text": "Chercher le sujet",
|
||||||
"attributes": { "data-sublink": "survey" } },
|
"attributes": { "data-sublink": "survey" } },
|
||||||
{ "permissions": ["admin"], "text": "Données cellulaire",
|
{ "permissions": ["admin"], "text": "Données cellulaire",
|
||||||
"attributes": { "data-sublink": "phone" } },
|
"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" },
|
"attributes": { "data-link": "data" },
|
||||||
|
|
||||||
"children": [
|
"children": [
|
||||||
{ "permissions": [], "text": "Export des données",
|
{ "permissions": [], "text": "Export des données",
|
||||||
"attributes": { "data-sublink": "export" } },
|
"attributes": { "data-sublink": "export" } },
|
||||||
{ "permissions": [], "text": "Export Gephi",
|
{ "permissions": [], "text": "Export des graphiques",
|
||||||
"attributes": { "data-sublink": "charts" } },
|
"attributes": { "data-sublink": "charts" } },
|
||||||
{ "permissions": [], "text": "Statistiques",
|
{ "permissions": [], "text": "Statistiques",
|
||||||
"attributes": { "data-sublink": "analytics" } }
|
"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" },
|
"attributes": { "data-link": "settings" },
|
||||||
|
|
||||||
"children": [
|
"children": [
|
||||||
|
|
|
@ -12,9 +12,6 @@
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"p1": { "description": "Texte", "type": "text" },
|
"p1": { "description": "Texte", "type": "text" },
|
||||||
"p2": { "description": "Entier positif", "type": "id" }
|
"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": {}
|
"parameters": {}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
"markdown": {
|
"markdown": {
|
||||||
"description": "Retourne une description en markdown des différents modules de l'API",
|
"description": "Retourne une description en markdown des différents modules de l'API",
|
||||||
"permissions": [],
|
"permissions": [],
|
||||||
"options": { "download": true },
|
|
||||||
"parameters": {}
|
|
||||||
},
|
|
||||||
|
|
||||||
"apiBlueprint": {
|
|
||||||
"description": "Retourne une documentation de l'API au format API Blueprint.",
|
|
||||||
"permissions": [],
|
|
||||||
"options": { "download": true },
|
|
||||||
"parameters": {}
|
"parameters": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -56,50 +46,44 @@
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(3,50)" },
|
"login": { "description": "Identifiant ou adresse mail", "type": "varchar(3,50)" },
|
||||||
"password": { "description": "Mot de passe", "type": "text" }
|
"password": { "description": "Mot de passe", "type": "text" }
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"id_user": { "description": "Identifiant de l'utilisateur connecté", "type": "id" }
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"logout": {
|
"logout": {
|
||||||
"description": "Deconnexion",
|
"description": "Deconnexion",
|
||||||
"permissions": ["admin"],
|
"permissions": [],
|
||||||
"parameters": {}
|
"parameters": {}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
"getById": {
|
"getById": {
|
||||||
"description": "Retourne les informations d'un utilisateur.",
|
"description": "Retourne les informations d'un utilisateur.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"id_user": { "description": "UID de l'utilisateur recherche.", "type": "id" }
|
"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": {
|
"getAll": {
|
||||||
"description": "Retourne les informations de tous les utilisateurs.",
|
"description": "Retourne les informations de tous les utilisateurs.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {},
|
"parameters": {}
|
||||||
"output": {
|
},
|
||||||
"users": { "description": "Propriétés de tous les utilisateurs existants.", "type": "array<array<mixed>>" }
|
|
||||||
|
|
||||||
|
"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": {
|
"remove": {
|
||||||
"description": "Suppression d'un utilisateur.",
|
"description": "Suppression d'un utilisateur.",
|
||||||
|
@ -108,11 +92,88 @@
|
||||||
"id_user": { "description": "UID de l'utilisateur", "type": "id" }
|
"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": {
|
"token": {
|
||||||
|
|
||||||
|
|
||||||
"remove": {
|
"remove": {
|
||||||
"description": "Suppression d'un token d'id donne.",
|
"description": "Suppression d'un token d'id donne.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
|
@ -121,60 +182,63 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
"generate": {
|
"generate": {
|
||||||
"description": "Création d'un token de nom et de durée donnée",
|
"description": "Création d'un token de nom et de durée donnée",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"name": { "description": "Nom attribué au token", "type": "varchar(3,50)" },
|
"name": { "description": "Nom attribué au token", "type": "varchar(3,50)" },
|
||||||
"duration": { "description": "Durée du token en nombre de jours", "type": "id" }
|
"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": {
|
"subject": {
|
||||||
|
|
||||||
"search": {
|
"getById": {
|
||||||
"description": "Recherche d'un sujet par nom",
|
"description": "Retourne les informations d'un sujet.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"name": { "description": "Le nom du sujet", "type": "varchar(0,50)" }
|
"id_subject": { "description": "UID du sujet recherche.", "type": "id" }
|
||||||
},
|
|
||||||
"output": {
|
|
||||||
"results": { "description": "Liste des sujet associés aux mots-clés.", "type": "array<array<mixed>>" }
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"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": {
|
"getAll": {
|
||||||
"description": "Retourne les informations de tous les sujets.",
|
"description": "Retourne les informations de tous les sujets.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {},
|
"parameters": {}
|
||||||
"output": {
|
|
||||||
"subjects": { "description": "Liste de tous les sujet.", "type": "array<array<mixed>>" }
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
"create": {
|
"create": {
|
||||||
"description": "Creation d'un nouveau sujet.",
|
"description": "Creation d'un nouveau sujet.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"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": {
|
"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": {
|
"phone": {
|
||||||
"description": "Enregistre les données d'une enquête téléphonique.",
|
"description": "Enregistre les données d'une enquête téléphonique.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"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>" },
|
"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>" },
|
"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>" },
|
"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 }
|
"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.",
|
"description": "Enregistre les données d'une enquête facebook.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"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>" },
|
"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>" },
|
"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>" },
|
"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 }
|
"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": {
|
"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": {
|
"local_data": {
|
||||||
"description": "Upload d'une sauvegarde de formulaire local au format .json.",
|
"description": "Upload d'une sauvegarde de formulaire local au format .json.",
|
||||||
"permissions": ["admin"],
|
"permissions": ["admin"],
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"file": { "description": "Fichier du de sauvegarde de formulaire local.", "type": "FILE" }
|
"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 },
|
"options": { "download": true },
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"subjects": { "description": "Identifiants des sujets d'enquêtes à intégrer.", "type": "array<id>", "optional": true },
|
"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 }
|
"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>" }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,34 @@
|
||||||
"remove"
|
"remove"
|
||||||
],
|
],
|
||||||
|
|
||||||
|
"subject": [
|
||||||
|
"getById",
|
||||||
|
"getAll",
|
||||||
|
"create",
|
||||||
|
"merge",
|
||||||
|
"remove",
|
||||||
|
"link"
|
||||||
|
],
|
||||||
|
|
||||||
|
"relation": [
|
||||||
|
"getAll",
|
||||||
|
"getById",
|
||||||
|
"create",
|
||||||
|
"remove"
|
||||||
|
],
|
||||||
|
|
||||||
|
"category": [
|
||||||
|
"getAll",
|
||||||
|
"getById",
|
||||||
|
"getByIntitule",
|
||||||
|
"getOrCreate"
|
||||||
|
],
|
||||||
|
|
||||||
|
"Personnes": [
|
||||||
|
"getById"
|
||||||
|
],
|
||||||
|
|
||||||
|
|
||||||
"token": [
|
"token": [
|
||||||
"getAll",
|
"getAll",
|
||||||
"getById",
|
"getById",
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
|
|
||||||
"local" : {
|
"local" : {
|
||||||
"host" : "http://nxtic/",
|
"host" : "http://socioview",
|
||||||
"root" : "/"
|
"root" : "/"
|
||||||
},
|
},
|
||||||
|
|
||||||
"remote" : {
|
"remote" : {
|
||||||
"host" : "https://nxtic.xdrm.io/",
|
"host" : "https://socioview.xdrm.io",
|
||||||
"root" : "/"
|
"root" : "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
{
|
{
|
||||||
"root": "/src/upload",
|
"root": "/src/upload",
|
||||||
"directories": [
|
"directories": [
|
||||||
"local_data"
|
"call_log",
|
||||||
|
"local_data",
|
||||||
|
"convert_iexplorer"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,5 +2,6 @@
|
||||||
"dashboard",
|
"dashboard",
|
||||||
"input",
|
"input",
|
||||||
"analytics",
|
"analytics",
|
||||||
|
"charts",
|
||||||
"settings"
|
"settings"
|
||||||
]
|
]
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
$theme-bg: #e8e8e8;
|
$theme-bg: #e8e8e8;
|
||||||
$theme-bg-primary: #ffffff;
|
$theme-bg-primary: #ffffff;
|
||||||
$theme-fg: #515151;
|
$theme-fg: #515151;
|
||||||
$theme-fg-primary: #0e6dbf;
|
$theme-fg-primary: #399ced;
|
||||||
|
|
||||||
/* (2) COULEURS DE THEME $DARK */
|
/* (2) COULEURS DE THEME $DARK */
|
||||||
$dark-bg: #313541;
|
$dark-bg: #313541;
|
||||||
|
@ -16,14 +16,12 @@ $header-dark: #F8F8FA;
|
||||||
|
|
||||||
/* (3) Couleurs du theme pour la timeline */
|
/* (3) Couleurs du theme pour la timeline */
|
||||||
$timeline-color: #738394;
|
$timeline-color: #738394;
|
||||||
$timeline-0: #0e6dbf;
|
$timeline-0: #399ced;
|
||||||
$timeline-1: #e64e3e;
|
$timeline-1: #e64e3e;
|
||||||
$timeline-2: #d54b28;
|
$timeline-2: #10baa3;
|
||||||
$timeline-3: #b14be7;
|
$timeline-3: #b14be7;
|
||||||
$timeline-4: #053b5d;
|
$timeline-4: #053b5d;
|
||||||
|
|
||||||
$timeline-fb: #3b5998;
|
|
||||||
|
|
||||||
|
|
||||||
/* [2] DIMENSIONS
|
/* [2] DIMENSIONS
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
|
@ -53,5 +51,5 @@ $header-height: 4em;
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// Transforme une couleur hex en string sans le #
|
// Transforme une couleur hex en string sans le #
|
||||||
@function color-str($color){
|
@function color-str($color){
|
||||||
@return str-slice("#{$color}", 2, str-length("#{$color}"));
|
@return str-slice(#{$color}, 2, str-length(#{$color}));
|
||||||
}
|
}
|
|
@ -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== */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -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= */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibWluLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vY29uc3RhbnRzLnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKiBbMV0gQ09VTEVVUlNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiAoMSkgQ09VTEVVUlMgRFUgVEhFTUUgJERFRkFVTFQgKi9cbiR0aGVtZS1iZzogICAgICAgICAjZThlOGU4O1xuJHRoZW1lLWJnLXByaW1hcnk6ICNmZmZmZmY7XG4kdGhlbWUtZmc6ICAgICAgICAgIzUxNTE1MTtcbiR0aGVtZS1mZy1wcmltYXJ5OiAjMzk5Y2VkO1xuXG4vKiAoMikgQ09VTEVVUlMgREUgVEhFTUUgJERBUksgKi9cbiRkYXJrLWJnOiAgICAgICAgICMzMTM1NDE7XG4kZGFyay1iZy1wcmltYXJ5OiAjMjkyODJlO1xuJGRhcmstZmc6ICAgICAgICAgIzkzOTM5MztcbiRkYXJrLWZnLXByaW1hcnk6ICNmZmZmZmY7XG5cbiRoZWFkZXItZGFyazogICAgICNGOEY4RkE7XG5cbi8qICgzKSBDb3VsZXVycyBkdSB0aGVtZSBwb3VyIGxhIHRpbWVsaW5lICovXG4kdGltZWxpbmUtY29sb3I6ICM3MzgzOTQ7XG4kdGltZWxpbmUtMDogIzM5OWNlZDtcbiR0aW1lbGluZS0xOiAjZTY0ZTNlO1xuJHRpbWVsaW5lLTI6ICMxMGJhYTM7XG4kdGltZWxpbmUtMzogI2IxNGJlNztcbiR0aW1lbGluZS00OiAjMDUzYjVkO1xuXG5cbi8qIFsyXSBESU1FTlNJT05TXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogKDEpIExheW91dCBkZSBiYXNlICovXG4kbWVudS1zaWRlLXdpZHRoOiAxNWVtO1xuJGhlYWRlci1oZWlnaHQ6ICAgNGVtO1xuXG5cblxuLyogWzNdIE1peGluc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbkBtaXhpbiB0cmFuc2Zvcm0oJHZhbHVlLi4uKSB7XG5cdHRyYW5zZm9ybTogJHZhbHVlO1xuXHQtbW96LXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtby10cmFuc2Zvcm06ICR2YWx1ZTtcblx0LW1zLXRyYW5zZm9ybTogJHZhbHVlO1xuXHQtd2Via2l0LXRyYW5zZm9ybTogJHZhbHVlO1xufVxuXG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR2YWx1ZS4uLikge1xuXHQtd2Via2l0LXRyYW5zaXRpb246ICR2YWx1ZTtcblx0dHJhbnNpdGlvbjogJHZhbHVlO1xufVxuXG4vKiBbNF0gRnVuY3Rpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLy8gVHJhbnNmb3JtZSB1bmUgY291bGV1ciBoZXggZW4gc3RyaW5nIHNhbnMgbGUgI1xuQGZ1bmN0aW9uIGNvbG9yLXN0cigkY29sb3Ipe1xuXHRAcmV0dXJuIHN0ci1zbGljZSgjeyRjb2xvcn0sIDIsIHN0ci1sZW5ndGgoI3skY29sb3J9KSk7XG59XG4iCgldLAoJIm1hcHBpbmdzIjogIiIsCgkibmFtZXMiOiBbXQp9 */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -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 */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -12,6 +12,15 @@
|
||||||
// Gestion de l'activation des sous-parties
|
// Gestion de l'activation des sous-parties
|
||||||
&.active{ display: block; }
|
&.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;
|
position: relative;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
|
||||||
|
@ -80,6 +89,7 @@
|
||||||
content: '';
|
content: '';
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
top: .1em;
|
||||||
left: -.8em;
|
left: -.8em;
|
||||||
width: calc( 1em - 2*.15em );
|
width: calc( 1em - 2*.15em );
|
||||||
height: calc( 1em - 2*.15em );
|
height: calc( 1em - 2*.15em );
|
||||||
|
@ -107,7 +117,7 @@
|
||||||
& input[type="radio"]:checked + label[for]:before,
|
& input[type="radio"]:checked + label[for]:before,
|
||||||
& input[type="checkbox"]:checked + label[for]:before{
|
& input[type="checkbox"]:checked + label[for]:before{
|
||||||
background-color: $theme-fg-primary;
|
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="submit"],
|
||||||
& input[type="button"]{
|
& input[type="button"]{
|
||||||
padding: .2em .5em;
|
|
||||||
margin: .5em 0;
|
margin: .5em 0;
|
||||||
|
padding: .3em .5em;
|
||||||
|
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
border: 1px solid $theme-fg;
|
border: 1px solid $theme-fg;
|
||||||
|
@ -196,15 +206,11 @@
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid #b5b5b5;
|
border: 1px solid #b5b5b5;
|
||||||
|
|
||||||
// color: #555;
|
color: #555;
|
||||||
color: darken($theme-fg-primary, .2);
|
|
||||||
font-family: 'Inconsolata';
|
font-family: 'Inconsolata';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.flat-border{ border-radius: 0; }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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": "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",
|
||||||
|
"names": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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": "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",
|
||||||
|
"names": []
|
||||||
|
}
|
|
@ -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");
|
||||||
|
}
|
|
@ -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== */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -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= */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -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== */
|
|
@ -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": []
|
||||||
|
}
|
|
@ -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 */
|
|
@ -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": []
|
||||||
|
}
|
0
public_html/css/fonts/icomoon/old/regular.eot → css/fonts/icomoon/regular.eot
Executable file → Normal file
0
public_html/css/fonts/icomoon/old/regular.eot → css/fonts/icomoon/regular.eot
Executable file → Normal file
0
public_html/css/fonts/icomoon/old/regular.ttf → css/fonts/icomoon/regular.ttf
Executable file → Normal file
0
public_html/css/fonts/icomoon/old/regular.ttf → css/fonts/icomoon/regular.ttf
Executable file → Normal file
0
public_html/css/fonts/icomoon/old/regular.woff → css/fonts/icomoon/regular.woff
Executable file → Normal file
0
public_html/css/fonts/icomoon/old/regular.woff → css/fonts/icomoon/regular.woff
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular#iefix.eot → css/fonts/proxima-nova/regular#iefix.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular#iefix.eot → css/fonts/proxima-nova/regular#iefix.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.eot → css/fonts/proxima-nova/regular.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.eot → css/fonts/proxima-nova/regular.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.ttf → css/fonts/proxima-nova/regular.ttf
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.ttf → css/fonts/proxima-nova/regular.ttf
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.woff → css/fonts/proxima-nova/regular.woff
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/regular.woff → css/fonts/proxima-nova/regular.woff
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin#iefix.eot → css/fonts/proxima-nova/thin#iefix.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin#iefix.eot → css/fonts/proxima-nova/thin#iefix.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.eot → css/fonts/proxima-nova/thin.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.eot → css/fonts/proxima-nova/thin.eot
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.ttf → css/fonts/proxima-nova/thin.ttf
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.ttf → css/fonts/proxima-nova/thin.ttf
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.woff → css/fonts/proxima-nova/thin.woff
Executable file → Normal file
0
public_html/css/fonts/proxima-nova/thin.woff → css/fonts/proxima-nova/thin.woff
Executable file → Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -57,21 +57,19 @@
|
||||||
& > #user-picture{
|
& > #user-picture{
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 1.5em;
|
top: 1em;
|
||||||
right: $header-height;
|
right: $header-height;
|
||||||
width: calc( #{$header-height} - 2*1.5em );
|
width: calc( #{$header-height} - 2*1em );
|
||||||
height: calc( #{$header-height} - 2*1.5em );
|
height: calc( #{$header-height} - 2*1em );
|
||||||
|
|
||||||
|
|
||||||
border-radius: 50% / 50%;
|
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%;
|
background-size: auto 80%;
|
||||||
|
|
||||||
// Si on est connecte
|
// Si on est connecte
|
||||||
&.active{
|
&.active{ background-image: url('/f/svg/sample/dy/profile'); background-size: auto 100%; }
|
||||||
background-color: $theme-fg-primary;
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor: default;
|
cursor: default;
|
||||||
|
|
||||||
|
@ -90,7 +88,7 @@
|
||||||
width: $header-height;
|
width: $header-height;
|
||||||
height: $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;
|
background-size: 1em 1em;
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
File diff suppressed because one or more lines are too long
|
@ -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": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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": []
|
||||||
|
}
|
|
@ -110,7 +110,7 @@ body{
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
|
||||||
background-color: #D7D7D9;
|
background-color: $header-dark;
|
||||||
|
|
||||||
@include transition( left .3s ease-in-out );
|
@include transition( left .3s ease-in-out );
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ body{
|
||||||
width: 35em;
|
width: 35em;
|
||||||
height: 10em;
|
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%;
|
background-size: auto 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,8 +151,8 @@ body{
|
||||||
align-items: middle;
|
align-items: middle;
|
||||||
|
|
||||||
|
|
||||||
border-radius: 3px;
|
border-radius: 5px;
|
||||||
border: 1px solid #aaa;
|
border: 1px solid lighten($theme-fg, 10);
|
||||||
|
|
||||||
background-color: $header-dark;
|
background-color: $header-dark;
|
||||||
|
|
||||||
|
@ -166,8 +166,7 @@ body{
|
||||||
|
|
||||||
// Animation de @hover/@focus
|
// Animation de @hover/@focus
|
||||||
&:hover,
|
&:hover,
|
||||||
&:focus
|
&:focus{
|
||||||
&:not([value=""]){
|
|
||||||
border-color: $theme-fg-primary;
|
border-color: $theme-fg-primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +176,7 @@ body{
|
||||||
/* (2.2) Bouton de connexion */
|
/* (2.2) Bouton de connexion */
|
||||||
& > input[type='submit']{
|
& > input[type='submit']{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: calc( 2em - 3px );
|
margin-top: 2em;
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
|
|
||||||
border: 0;
|
border: 0;
|
||||||
|
@ -196,16 +195,12 @@ body{
|
||||||
// Animation de @hover
|
// Animation de @hover
|
||||||
&:hover, &.hover{
|
&:hover, &.hover{
|
||||||
background-color: darken($theme-fg-primary, 10);
|
background-color: darken($theme-fg-primary, 10);
|
||||||
border-top-width: 1px;
|
border-top-color: transparent;
|
||||||
margin-top: calc( 2em - 2px );
|
|
||||||
margin-bottom: calc( 2em + 2px );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Animation de clic @active
|
// Animation de clic @active
|
||||||
&:active{
|
&:active{
|
||||||
border-top-width: 0;
|
border-top-color: transparent;
|
||||||
margin-top: 2em;
|
|
||||||
margin-bottom: calc( 2em + 3px );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -216,7 +211,6 @@ body{
|
||||||
|
|
||||||
/* (3) Mot de passe oublie */
|
/* (3) Mot de passe oublie */
|
||||||
& > #lost-password{
|
& > #lost-password{
|
||||||
position: absolute;
|
|
||||||
color: #777;
|
color: #777;
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
@ -239,7 +233,7 @@ body{
|
||||||
min-width: 2em;
|
min-width: 2em;
|
||||||
height: 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;
|
background-size: 1em;
|
||||||
|
|
||||||
color: #555;
|
color: #555;
|
File diff suppressed because one or more lines are too long
|
@ -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": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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": "ACAA;2DAC2D;AAC3D,oCAAoC;AAMpC,iCAAiC;AAQjC,4CAA4C;AAS5C;2DAC2D;AAC3D,wBAAwB;AAMxB;2DAC2D;AAe3D;2DAC2D;ADhD3D,IAAI,CAAA;EAEH,WAAW,EAAE,WAAY;EACzB,SAAS,EAAE,IAAK;CAChB;;AAID,QAAQ,CAAA;EACP,OAAO,EAAE,KAAM;EACf,QAAQ,EAAE,KAAM;EACf,GAAG,EAAE,CAAE;EACP,IAAI,EAAE,CAAE;EACR,KAAK,EAAE,IAAK;EACZ,MAAM,EAAE,IAAK;EAEd,gBAAgB,ECfE,OAAO;EDiBzB,UAAU,EAAE,MAAO;EACnB,UAAU,EAAE,IAAK;EAEjB,OAAO,EAAE,CAAE;EAGX;6CAC4C;EAkB5C;6CAC4C;EAoB5C;6CAC4C;CAkB5C;;AA3ED,QAAQ,GAkBH,OAAO,CAAA;EACV,OAAO,EAAE,KAAM;EACf,QAAQ,EAAE,KAAM;EACf,GAAG,EAAE,CAAE;EACP,IAAI,EAAE,CAAE;EACR,KAAK,EAAE,IAAK;EACZ,MAAM,EAAE,gBAAI;EAEb,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,OAAM;EAE/B,gBAAgB,ECxBA,OAAO;ED0BvB,OAAO,EAAE,GAAI;CAEb;;AAhCF,QAAQ,GAsCH,UAAU,CAAA;EACb,OAAO,EAAE,KAAM;EACf,QAAQ,EAAE,KAAM;EACf,GAAG,ECtBY,GAAG;EDuBlB,IAAI,EAAE,CAAE;EACR,KAAK,ECzBU,IAAI;ED0BnB,MAAM,EAAE,iBAAI;EAEb,UAAU,EAAE,gBAAiB;EAE7B,gBAAgB,EAAE,IAAK;ECbxB,kBAAkB,EDeI,GAAG,CAAC,IAAG;ECd7B,UAAU,EDcY,GAAG,CAAC,IAAG;EAE5B,OAAO,EAAE,EAAG;CACZ;;AArDF,QAAQ,GA0DH,UAAU,CAAA;EACb,OAAO,EAAE,IAAK;EACd,QAAQ,EAAE,QAAS;EAClB,GAAG,EC1CY,GAAG;ED2ClB,IAAI,EC5CW,IAAI;ED6CnB,KAAK,EAAE,kBAAI;EACX,UAAU,EAAE,iBAAI;EAIjB,cAAc,EAAE,GAAI;EACpB,eAAe,EAAE,aAAc;EAC/B,SAAS,EAAE,IAAK;EAEhB,UAAU,EAAE,IAAK;EACjB,UAAU,EAAE,IAAK;CACjB;;AAMF;2DAC2D;AAC3D,MAAM,CAAA;EACL,OAAO,EAAE,IAAK;EACd,QAAQ,EAAE,KAAM;EACf,GAAG,EAAE,CAAE;EACP,IAAI,EAAE,KAAM;EACZ,KAAK,EAAE,IAAK;EACZ,MAAM,EAAE,IAAK;EAQd,cAAc,EAAE,GAAI;EACpB,SAAS,EAAE,MAAO;EAClB,eAAe,EAAE,YAAa;EAC9B,WAAW,EAAE,MAAO;EAGpB,gBAAgB,EClGC,OAAO;EA+BxB,kBAAkB,EDqEG,IAAI,CAAC,IAAG,CAAC,WAAW;ECpEzC,UAAU,EDoEW,IAAI,CAAC,IAAG,CAAC,WAAW;EAEzC,OAAO,EAAE,GAAI;EAKb,6BAA6B;EAU7B,iCAAiC;EA+FjC,iCAAiC;CAoBjC;;AA1JD,MAAM,AASJ,OAAO,CAAA;EACP,IAAI,EAAE,CAAE;CACR;;AAXF,MAAM,GA8BD,WAAW,CAAA;EACd,KAAK,EAAE,IAAK;EACZ,MAAM,EAAE,IAAK;EAEb,UAAU,EAAE,uBAAG,CAAqB,MAAM,CAAC,MAAM,CAAC,SAAS;EAC3D,eAAe,EAAE,SAAU;CAC3B;;AApCF,MAAM,GAwCD,WAAW,CAAA;EACd,OAAO,EAAE,KAAM;EAGf,4CAA4C;EAuC5C,+BAA+B;EAoC/B,6BAA6B;CAa7B;;AApIF,MAAM,GAwCD,WAAW,GAKV,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX;AA7CZ,MAAM,GAwCD,WAAW,GAMV,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf;AA9CZ,MAAM,GAwCD,WAAW,GAOV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAc;EACvB,OAAO,EAAE,IAAK;EACb,KAAK,EAAE,IAAK;EAEb,MAAM,EAAE,KAAM;EACd,OAAO,EAAE,OAAQ;EAGjB,cAAc,EAAE,MAAO;EACvB,eAAe,EAAE,YAAa;EAC9B,SAAS,EAAE,MAAO;EAClB,WAAW,EAAE,MAAO;EAGpB,aAAa,EAAE,GAAI;EACnB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;EAEzB,gBAAgB,EC9ID,OAAO;EDgJtB,KAAK,EAAE,IAAK;EAEZ,cAAc,EAAE,KAAM;ECnHxB,kBAAkB,EDqHK,MAAM,CAAC,IAAG,CAAC,WAAW;ECpH7C,UAAU,EDoHa,MAAM,CAAC,IAAG,CAAC,WAAW;CAU3C;;AAhFH,MAAM,GAwCD,WAAW,GAKV,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CA8BR,MAAM,EA3EV,MAAM,GAwCD,WAAW,GAKV,KAAK,CAAA,AAAA,IAAC,CAAK,MAAM,AAAX,CA+BR,MAAM;AA5EV,MAAM,GAwCD,WAAW,GAMV,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA6BR,MAAM;AA3EV,MAAM,GAwCD,WAAW,GAMV,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,CA8BR,MAAM;AA5EV,MAAM,GAwCD,WAAW,GAOV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CA4BR,MAAM;AA3EV,MAAM,GAwCD,WAAW,GAOV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CA6BR,MAAM,CAAA;EACN,YAAY,ECnKG,OAAO;CDoKtB;;AA9EJ,MAAM,GAwCD,WAAW,GA4CV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAc;EACvB,KAAK,EAAE,IAAK;EACZ,UAAU,EAAE,GAAI;EAChB,aAAa,EAAE,GAAI;EAEnB,MAAM,EAAE,CAAE;EACV,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,OAAM;EAE5B,gBAAgB,EClLA,OAAO;EDoLvB,KAAK,EC9KU,OAAO;ED+KtB,WAAW,EAAE,IAAK;EAClB,UAAU,EAAE,IAAK;EAEjB,MAAM,EAAE,OAAQ;ECjJlB,kBAAkB,EDmJK,GAAG,CAAC,IAAG,CAAC,WAAW;EClJ1C,UAAU,EDkJa,GAAG,CAAC,IAAG,CAAC,WAAW;CAaxC;;AAjHH,MAAM,GAwCD,WAAW,GA4CV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAmBR,MAAM,EAvGV,MAAM,GAwCD,WAAW,GA4CV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAmBC,MAAM,CAAA;EACf,gBAAgB,EAAE,OAAM;EACxB,gBAAgB,EAAE,WAAY;CAC9B;;AA1GJ,MAAM,GAwCD,WAAW,GA4CV,KAAK,CAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAyBR,OAAO,CAAA;EACP,gBAAgB,EAAE,WAAY;CAC9B;;AA/GJ,MAAM,GAwCD,WAAW,GAgFV,cAAc,CAAA;EACjB,KAAK,EAAE,IAAK;EAEZ,MAAM,EAAE,OAAQ;CAOhB;;AAlIH,MAAM,GAwCD,WAAW,GAgFV,cAAc,AAMhB,MAAM,CAAA;EACN,KAAK,ECrNU,OAAO;EDsNtB,eAAe,EAAE,SAAU;CAC3B;;AAjIJ,MAAM,GAuID,YAAY,CAAA;EACf,OAAO,EAAE,KAAM;EACf,QAAQ,EAAE,QAAS;EAClB,GAAG,EAAE,GAAI;EACT,KAAK,EAAE,GAAI;EACX,SAAS,EAAE,GAAI;EACf,MAAM,EAAE,GAAI;EAEb,UAAU,EAAE,sCAAG,CAAoC,KAAK,CAAC,MAAM,CAAC,SAAS;EACzE,eAAe,EAAE,GAAI;EAErB,KAAK,EAAE,IAAK;EACZ,aAAa,EAAE,GAAI;EACnB,WAAW,EAAE,GAAI;EACjB,WAAW,EAAE,IAAK;EAClB,cAAc,EAAE,GAAI;EAEpB,MAAM,EAAE,OAAQ;CAChB",
|
||||||
|
"names": []
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -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
Loading…
Reference in New Issue