Compare commits

...

39 Commits

Author SHA1 Message Date
xdrm-brackets 55b379cd8c fix 2018-11-05 10:18:35 +01:00
xdrm-brackets 6712b33841 [build.generic.view.*group*.twig] fixed block clause that blocks counters to check if has no result 2018-04-17 16:41:44 +02:00
xdrm-brackets 73be58df63 [public.css.container] fixed card layout #rev.2 2018-04-17 16:31:27 +02:00
xdrm-brackets 7af0fefdc1 [public.css.container] fixed card layout 2018-04-17 16:28:47 +02:00
xdrm-brackets ee9f7871e4 [public.css.*.css] updated css builds 2018-04-17 15:42:09 +02:00
xdrm-brackets bba94f5630 [public.css.layout] fixed popup footer out-of-flow 2018-04-17 15:40:21 +02:00
xdrm-brackets ec3560beb5 [build.generic.view.settings.admin.create.main.twig] now 'generated password' when creating admin is selectable (copiable) 2018-04-17 15:39:25 +02:00
xdrm-brackets 3b2c707618 upd: fixed page-manager (dependencies' file content was downloaded in Ajax but never used, only checks if the file exists, so now <script> or <style> tags are filled with the downloaded content -> so more efficient) 2018-02-08 11:39:06 +01:00
xdrm-brackets 0c0f34c7d4 fix: http.core.HttpRequest (now manages both Apache/nginx, especially php-fpm because the function 'getallheaders()' is not available, so gess it from (solution from http://php.net/manual/en/function.getallheaders.php\#84262)) 2018-02-07 14:52:21 +01:00
xdrm-brackets f1c338853f fix: router.core.router (now manages URI with beginning slash '/' (removes it)) 2018-02-07 14:50:36 +01:00
xdrm-brackets eb604f2299 upd: composer.lock 2018-02-07 14:50:04 +01:00
xdrm-brackets 2709a109c7 fixed build.api.module.machineDefault (added argument id_warehouse to machine.state (in view machine.listAll)) 2018-01-29 22:26:22 +01:00
xdrm-brackets 1f91f4feb1 Fix header icon -1px (border-bottom of header) 2017-11-13 16:42:28 +01:00
xdrm-brackets d5a0cf7977 Update database backup 2017-11-13 14:20:05 +01:00
xdrm-brackets b38822e506 Fix history.archive layout 2017-11-13 13:49:32 +01:00
xdrm-brackets ea66003d27 Created TreeTokenNull to disable the 'TreeToken' build at will + use it in index 2017-11-13 13:43:14 +01:00
xdrm-brackets d064e304ee When no history.search.value -> display all 2017-11-13 13:37:50 +01:00
xdrm-brackets f99d1a8435 Update repo machine/search to match any keywords (space-separated) with a OR condition + minfix user 2017-11-13 13:34:38 +01:00
xdrm-brackets b745c9ef08 Update repo user/search to match any keywords (space-separated) with a OR condition + if no search input -> display all 2017-11-13 13:28:18 +01:00
xdrm-brackets d30ec35636 Now history.view.search searches through users+machines (as on its views) + TODO: manage space separated keywords 2017-11-13 12:17:26 +01:00
xdrm-brackets ad4143771c Make LIKE sql WHERE clause lower case 2017-11-13 11:51:25 +01:00
xdrm-brackets 061d473cad Reversed history.timeline order (DESC) 2017-11-13 11:42:08 +01:00
xdrm-brackets 3c642732b2 Now scroll to timeline.event when loading sub-section 2017-11-13 11:40:13 +01:00
xdrm-brackets 9d49c7fd10 Now on click on timeline.event -> load this event entry 2017-11-12 18:34:52 +01:00
xdrm-brackets 545d99d212 Added dates + hours to events history.timeline 2017-11-12 18:09:57 +01:00
xdrm-brackets 067f12cc1a Removed infobox popup js 2017-11-12 17:24:25 +01:00
xdrm-brackets 20baf93bf3 Now history.timeline is vertical 2017-11-12 17:22:35 +01:00
xdrm-brackets 57d7abb7b6 Updated css 2017-11-12 15:10:40 +01:00
xdrm-brackets 6616916013 Fix fonts.css -> font.css 2017-11-12 15:09:06 +01:00
xdrm-brackets 0390bdf7ad Now a little circle 'below' the event circle when same user 2017-11-12 14:53:33 +01:00
xdrm-brackets bc1df78120 History details.timeline ASC order (not reverse as history.view) 2017-11-12 14:53:06 +01:00
xdrm-brackets 43e626d32d Added module historyDefault/getById to check current user in history.details.view + Refactor css + added info in svg tags + javascript began management (only launch event, implementation TODO) 2017-11-12 13:01:29 +01:00
xdrm-brackets b0f9cfae1e session timeout management in views: warehouse, admin + if no response, logout just .5min after the session timeout 2017-11-12 11:45:47 +01:00
xdrm-brackets 0faaee0040 serverinfo.js now shows a popup when session time out + api.js reset the timeout when an API call have an error=0 + if no answer to popup in 5min logout 2017-11-12 11:29:52 +01:00
xdrm-brackets 172f1e5935 Updated container.scss to be a 'pointer' on timeline events 2017-11-11 18:50:01 +01:00
xdrm-brackets b73f71c652 Svg generation + historyDefault/get_timeline + repo history/getByIdMachine + container.scss to generate machine timeline 2017-11-11 18:46:43 +01:00
xdrm-brackets 34ffdae4fe Fix tests according to branch 'api-refactor' 2017-11-11 13:09:30 +01:00
xdrm-brackets 6b9bd03d9e Pop-Up manages 'background.click' to send FALSE to the 'handler' + hide (equivalent to CANCEL action) 2017-11-11 13:03:30 +01:00
xdrm-brackets a2d575e94f Added confirmation Pop-Up for: 1. history.archive 2. machine.delete 3. user.delete 2017-11-11 12:56:46 +01:00
66 changed files with 2869 additions and 3076 deletions

View File

@ -150,6 +150,88 @@
]; ];
} }
/* (x) Return the machine history for an history entry
*
* @id_entry<id> UID of the history entry
*
* @return timeline<array> Machine timeline data
*
---------------------------------------------------------*/
public function get_timeline($params){
extract($params);
/* (1) Get history entry data
---------------------------------------------------------*/
/* (1) Request */
$entry = new Repo('history/getById', [$id_entry]);
/* (2) Get response */
$entry = $entry->answer();
/* (3) Manage error */
if( !is_array($entry) )
return ['error' => new Error(Err::RepoError)];
/* (2) Get history for machine
---------------------------------------------------------*/
/* (1) Request */
$timeline = new Repo('history/getByIdMachine', [
$_SESSION['WAREHOUSE']['id'],
$entry['id_machine']
]);
/* (2) Get response */
$timeline = $timeline->answer();
/* (3) Manage error */
if( $timeline === false )
return ['error' => new Error(Err::RepoError)];
/* (3) Return data
---------------------------------------------------------*/
return [ 'timeline' => $timeline ];
}
/* (x) Return the entry data for an history id
*
* @id_entry<id> UID of the history entry
*
* @return data<array> Entry data
*
---------------------------------------------------------*/
public function getById($params){
extract($params);
/* (1) Get history entry data
---------------------------------------------------------*/
/* (1) Request */
$entry = new Repo('history/getById', [$id_entry]);
/* (2) Get response */
$entry = $entry->answer();
/* (3) Manage error */
if( !is_array($entry) )
return ['error' => new Error(Err::RepoError)];
/* (2) Return data
---------------------------------------------------------*/
return [ 'entry' => $entry ];
}
} }

View File

@ -383,7 +383,7 @@
/* [3] Get history for the machine /* [3] Get history for the machine
=========================================================*/ =========================================================*/
/* (1) Write request */ /* (1) Write request */
$history_req = new Repo('history/getByIdMachine', [$id_machine]); $history_req = new Repo('history/getByIdMachine', [$_SESSION['WAREHOUSE']['id'], $id_machine]);
/* (2) Manage error */ /* (2) Manage error */
if( $history_req->error->get() != Err::Success ) if( $history_req->error->get() != Err::Success )

View File

@ -88,15 +88,37 @@
* FALSE si aucun résultat * FALSE si aucun résultat
* *
*/ */
public static function getByIdMachine($id_machine){ public static function getByIdMachine($id_warehouse, $id_machine){
/* [1] On rédige/execute la requête /* [1] On rédige/execute la requête
=========================================================*/ =========================================================*/
$machine = Table::get('history') $users = Table::get('user')
->whereIdMachine($id_machine) ->whereIdWarehouse($id_warehouse)
->orderby('timestamp', Rows::ORDER_DESC) ->select('id_user')
->select('*'); ->select('username', null, null, 'user_name')
->select('firstname', null, null, 'user_firstname')
->select('lastname', null, null, 'user_lastname');
return $machine->fetch(); $machines = Table::get('machine')
->whereIdWarehouse($id_warehouse)
->whereId($id_machine)
->select('id_machine')
->select('name', null, null, 'machine_name');
$actions = Table::get('action')
->select('id_action')
->select('name', null, null, 'action_name');
$history = Table::get('history')
->join('id_user', $users)
->join('id_machine', $machines)
->join('id_action', $actions)
->select('id_history')
->select('timestamp')
->orderby('timestamp', Rows::ORDER_DESC);
return $history->fetch();
} }
@ -134,21 +156,23 @@
/* RETOURNE UNE ENTREE SPECIFIQUE /* RETOURNE UNE ENTREE SPECIFIQUE
* *
* @id_history<int> UID de l'entree * @id_entry<int> UID de l'entrée historique
* *
* @return entry<Array> Données de l'entree * @return entry<Array> Données de l'entree
* FALSE si aucun résultat * FALSE si erreur | aucun résultat
* *
*/ */
public static function getById($id_history){ public static function getById($id_entry){
/* [1] On rédige/execute la requête /* [1] On rédige/execute la requête
=========================================================*/ =========================================================*/
$user = Table::get('user') $entry = Table::get('history')
->whereId($id_history) ->whereId($id_entry)
->orderby('timestamp', Rows::ORDER_DESC) ->orderby('timestamp', Rows::ORDER_DESC)
->select('*'); ->select('*')
->unique();
return $entry->fetch();
return $user->fetch();
} }
@ -211,34 +235,60 @@
/* [1] Recherche dans les relations 'machines' /* [1] Recherche dans les relations 'machines'
=========================================================*/ =========================================================*/
/* (1) On exécute la requête */ /* (1) On exécute la requête */
$machines_r = new Repo('machine/search', [$id_warehouse, $keyword]); $machines_rq = new Repo('machine/search', [$id_warehouse, $keyword]);
$machines_rs = $machines_rq->answer();
/* (2) Gestion succès */ /* (2) Gestion succès */
if( $machines_r->error->get() == Err::Success ) if( is_array($machines_rs) )
foreach($machines_r->answer() as $row) foreach($machines_rs as $row)
$machine_ids[] = $row['id_machine']; $machine_ids[] = $row['id_machine'];
/* [2] Recherche dans les relations 'users' /* [2] Recherche dans les relations 'users'
=========================================================*/ =========================================================*/
/* (1) On cherche dans les utilisateurs */ /* (1) On cherche dans les utilisateurs */
$users_r = new Repo('user/search', [$id_warehouse, $keyword]); $users_rq = new Repo('user/search', [$id_warehouse, $keyword]);
$users_rs = $users_rq->answer();
/* (2) Gestion succès */ /* (2) Gestion succès */
if( $users_r->error->get() == Err::Success ) if( is_array($users_rs) )
foreach($users_r->answer() as $row) foreach($users_rs as $row)
$user_ids[] = $row['id_user']; $user_ids[] = $row['id_user'];
/* [3] On rédige/execute la requête /* [3] On rédige/execute la requête
=========================================================*/ =========================================================*/
$history_r = DatabaseDriver::getPDO()->prepare("SELECT id_history FROM history /* (1) Recherche par utilisateur */
WHERE id_user IN (SELECT id_user FROM user WHERE username LIKE '%$keyword%') $history_r_user = Table::get('history')
or id_machine IN (SELECT id_machine FROM machine WHERE name LIKE '%$keyword%') ->select('id_history')
ORDER BY timestamp DESC;"); ->whereIdUser([ $user_ids, Rows::COND_IN ]);
$history_r->execute(); /* (2) Recherche par utilisateur */
$history_r_machine = Table::get('history')
->select('id_history')
->whereIdMachine([ $machine_ids, Rows::COND_IN ]);
return DatabaseDriver::delNumeric( $history_r->fetchAll() ); /* (3) On enregistre les entrées par utilisateur */
$already_id = [];
$ids = $history_r_user->fetch();
foreach($ids as $user_result)
$already_id[ $user_result['id_history'] ] = null;
/* (4) On ajoute les entrées par machines (si pas déja) */
foreach($history_r_machine->fetch() as $machine_result)
if( !isset($already_id[$machine_result['id_history']]) ){
$ids[] = $machine_result;
$already_id[ $machine_result['id_history'] ] = null;
}
/* (5) On retourne le total */
return $ids;
} }

View File

@ -65,15 +65,75 @@
* *
*/ */
public static function search($id_warehouse, $keyword){ public static function search($id_warehouse, $keyword){
// On recupere les donnees
$search = Table::get('machine') /* (1) Format keyword
->whereIdWarehouse($id_warehouse) ---------------------------------------------------------*/ {
->whereName(["%$keyword%", Rows::COND_LIKE])
/* (1) Make all lowercase */
$keyword = strtolower($keyword);
/* (2) Create a keyword set (separator: space) */
$keywords = [];
$keywords_tmp = explode(' ', $keyword);
/* (4) Trim each keyword + ignore empty ones (2 consecutive spaces) */
foreach($keywords_tmp as $kw){
// ignore empty keywords
if( strlen(trim($kw)) == 0 )
continue;
// store others
$keywords[] = trim($kw);
}
}
/* (2) Search for each keyword
---------------------------------------------------------*/ {
/* (1) Initialise id list that will contain each matching user ids */
$mac_id_list = [];
/* (2) Request for each keyword */
foreach($keywords as $kw){
// {2.1} Request //
$searchmac = Table::get('machine')
->select('id_machine')
->whereIdWarehouse($id_warehouse)
->whereName(["%$kw%", Rows::COND_LIKE] );
// {2.2} Fetch result //
$matches = $searchmac->fetch();
// {2.3} Only add non-already added ids //
foreach($matches as $match){
// {2.4.1} If not already -> add it //
if( !isset($mac_id_list[ $match['id_machine'] ]) )
$mac_id_list[ $match['id_machine'] ] = null;
}
}
}
/* (3) Join results
---------------------------------------------------------*/
/* (1) Join request */
$join_rq = Table::get('machine')
->select('id_machine') ->select('id_machine')
->select('name') ->select('name')
->orderby('name', Rows::ORDER_ASC); ->whereId([array_keys($mac_id_list), Rows::COND_IN]);
/* (2) Return result */
return $join_rq->fetch();
return $search->fetch();
} }

View File

@ -66,22 +66,82 @@
* *
*/ */
public static function search($id_warehouse, $keyword){ public static function search($id_warehouse, $keyword){
// On recupere les donnees
$searchusers = DatabaseDriver::getPDO()->prepare("SELECT * FROM user
WHERE id_warehouse = :id_warehouse
AND ( code LIKE '%".$keyword."%'
OR username LIKE '%".$keyword."%'
OR firstname LIKE '%".$keyword."%'
OR lastname LIKE '%".$keyword."%'
OR mail LIKE '%".$keyword."%'
)
");
$searchusers->execute([ /* (1) Format keyword
':id_warehouse' => $id_warehouse ---------------------------------------------------------*/ {
]);
return DatabaseDriver::delNumeric( $searchusers->fetchAll() ); /* (1) Make all lowercase */
$keyword = strtolower($keyword);
/* (2) Create a keyword set (separator: space) */
$keywords = [];
$keywords_tmp = explode(' ', $keyword);
/* (4) Trim each keyword + ignore empty ones (2 consecutive spaces) */
foreach($keywords_tmp as $kw){
// ignore empty keywords
if( strlen(trim($kw)) == 0 )
continue;
// store others
$keywords[] = trim($kw);
}
}
/* (2) Search for each keyword
---------------------------------------------------------*/ {
/* (1) Initialise id list that will contain each matching user ids */
$user_id_list = [];
/* (2) Request for each keyword */
foreach($keywords as $kw){
// {2.1} Request //
$searchusers = DatabaseDriver::getPDO()->prepare("SELECT id_user FROM user
WHERE id_warehouse = :id_warehouse
AND ( LOWER(code) LIKE '%".$kw."%'
OR LOWER(username) LIKE '%".$kw."%'
OR LOWER(firstname) LIKE '%".$kw."%'
OR LOWER(lastname) LIKE '%".$kw."%'
OR LOWER(mail) LIKE '%".$kw."%'
)
");
// {2.2} Inject params //
$searchusers->execute([ ':id_warehouse' => $id_warehouse ]);
// {2.3} Fetch result //
$matches = DatabaseDriver::delNumeric( $searchusers->fetchAll() );
// {2.4} Only add non-already added ids //
foreach($matches as $match){
// {2.4.1} If not already -> add it //
if( !isset($user_id_list[ $match['id_user'] ]) )
$user_id_list[ $match['id_user'] ] = null;
}
}
}
/* (3) Join results
---------------------------------------------------------*/
/* (1) Join request */
$join_rq = Table::get('user')
->select('*')
->whereId([array_keys($user_id_list), Rows::COND_IN]);
/* (2) Return result */
return $join_rq->fetch();
} }

View File

@ -1,12 +1,12 @@
{% block search_bar %} <input type='text' class='searchbar' placeholder='Recherche'> {% endblock %} {% block search_bar %} <input type='text' class='searchbar' placeholder='Recherche'> {% endblock %}
{% set noresult = true %} {% set count = 0 %}
{% block user_cluster_list %} {# {% block user_cluster_list %} #}
{% for user_cluster in core.get_clusters(0) %} {% for user_cluster in core.get_clusters(0) %}
{% set noresult = false %} {% set count = count + 1 %}
{% set id_user_cluster = 'u' ~ user_cluster.id_user_cluster %} {% set id_user_cluster = 'u' ~ user_cluster.id_user_cluster %}
{% set memlen = core.get_members(user_cluster.id_user_cluster,0) | length %} {% set memlen = core.get_members(user_cluster.id_user_cluster,0) | length %}
@ -58,15 +58,16 @@
{% endfor %} {% endfor %}
{% endblock %} {# {% endblock %} #}
{% block machines_cluster_list %} {# {% block machines_cluster_list %} #}
{% for machine_cluster in core.get_clusters(1) %} {% for machine_cluster in core.get_clusters(1) %}
{% set noresult = false %} {% set count = count + 1 %}
{% set id_machine_cluster = 'm' ~ machine_cluster.id_machine_cluster %} {% set id_machine_cluster = 'm' ~ machine_cluster.id_machine_cluster %}
{% set memlen = core.get_members(machine_cluster.id_machine_cluster,1) | length %} {% set memlen = core.get_members(machine_cluster.id_machine_cluster,1) | length %}
@ -132,16 +133,16 @@
{% endfor %} {% endfor %}
{% endblock %} {# {% endblock %} #}
{# if no result #} {# if no result #}
{% if noresult %} {% if count <= 0 %}
{% block no_result %} {% block no_result %}
<article class='inline-box'> <article class='inline-box'>
<span>Aucun groupe trouvé</span> <span>Aucun résultat {{ count }}</span>
</article> </article>
{% endblock %} {% endblock %}

View File

@ -10,11 +10,247 @@
class main extends i_view{ class main extends i_view{
public $id_history; public $id_history;
public $timeline = [];
public $entry = [];
/* (1) Constructor
*
* @id_history<id> UID of the history entry
*
---------------------------------------------------------*/
public function __construct($id_history){ public function __construct($id_history){
/* (1) Set attributes
---------------------------------------------------------*/
$this->id_history = $id_history; $this->id_history = $id_history;
/* (3) Get entry data
---------------------------------------------------------*/
/* (1) Request */
$entry_req = new Request('historyDefault/getById', [ 'id_entry' => $this->id_history ]);
/* (2) Get response */
$entry_res = $entry_req->dispatch();
/* (3) On success, store entry data */
if( $entry_res->error->get() == Err::Success )
$this->entry = $entry_res->get('entry');
/* (3) Get machine timeline
---------------------------------------------------------*/
/* (1) Request */
$mac_req = new Request('historyDefault/get_timeline', [ 'id_entry' => $this->id_history ]);
/* (2) Get response */
$mac_res = $mac_req->dispatch();
/* (3) On success, store timeline data */
if( $mac_res->error->get() == Err::Success ){
$this->timeline = $mac_res->get('timeline');
// add date nodes to the timeline
$this->add_date_nodes();
}
}
/* (2) Format timeline data to svg render
*
* @return svg<String> SVG raw render
*
---------------------------------------------------------*/
public function svg(){
/* (1) Initialize variables
---------------------------------------------------------*/
/* (1) Set date() timezone */
date_default_timezone_set('Europe/Paris');
debug();
/* (2) Init. result raw svg */
$RAW = '';
/* (3) Set global range */
$c = 0;
$cl = count($this->timeline);
// if no entry -> abort
if( $cl == 0 )
return '';
/* (4) Useful variables */
$y_pad = 50; // padding between each node
$line_pad = 50; // padding on each LINE end
$line_height = ( $cl + 1 ) * $y_pad; // line height (each node * @y_pad + @y_pad)
$height = $line_height + 2*$line_pad; // svg height
$width = 200; // svg width
$x = 50; // center width
/* (5) Svg tag */
$RAW .= "<svg width='$width' height='$height' viewBox='0 0 $width $height' class='timeline'>";
/* (6) Start CIRCLE */ {
// {6.1} Date node //
$y = $line_pad;
$RAW .= "<circle cx='$x' cy='$y' r='7' fill='#edf0f5' class='tstart'/>";
$RAW .= "<circle cx='$x' cy='$y' r='4' fill='#555' class='tstart'/>";
// {6.2} Date line to text //
$line_end_x = $x + (30-8);
$RAW .= "<path d='m".($x+8)." $y L$line_end_x $y' style='stroke-dasharray: 3px;' s stroke='#444'/>";
// {6.3} Date text //
$x_decal = $x + 30;
$y_decal = $y + 5;
$RAW .= "<text x='$x_decal' y='$y_decal' class='bold'>".date('d / m / Y', $this->timeline[0]['timestamp'])."</text>";
}
/* (2) Build barebone
---------------------------------------------------------*/
/* (1) Default TIMELINE */
$line_end_y = $line_height + $line_pad;
$RAW .= "<path d='m$x $line_pad L$x $line_end_y' style='stroke-dasharray: 3px;' stroke='#444' class='timeline line'/>";
/* (3) Build each action
---------------------------------------------------------*/
for( $c = 0 ; $c < $cl ; $c++ ){
/* (1) Calculate X */
$y = $line_pad + $y_pad + $c*$y_pad;
/* (2) Get entry data */
$entry = $this->timeline[$c];
/* (2.1) If DATE NODE -> add it */
if( isset($entry['date_node']) ){
// {2.1.1} Date node //
$RAW .= "<circle cx='$x' cy='$y' r='7' fill='#edf0f5' class='tstart'/>";
$RAW .= "<circle cx='$x' cy='$y' r='4' fill='#555' class='tstart'/>";
// {2.1.2} Date line to text //
$line_end_x = $x + (30-8);
$RAW .= "<path d='m".($x+8)." $y L$line_end_x $y' style='stroke-dasharray: 3px;' stroke='#555'/>";
// {2.1.3} Date text //
$x_decal = $x + 30;
$y_decal = $y + 5;
$RAW .= "<text x='$x_decal' y='$y_decal' class='bold'>".$entry['date_node']."</text>";
continue;
}
/* (3) Get useful data */
$action_class = strtolower($entry['action_name']);
$icon_uri = '/src/static/timeline/'.$action_class.'@ffffff.svg';
$data_entry = "data-entry='".$entry['id_history']."'";
$data_user = " data-user='".$entry['user_name']."'";
$data_machine = " data-machine='".$entry['machine_name']."'";
$data_action = " data-action='".$entry['action_name']."'";
$data_time = " data-time='".date('H:i:s d/m/Y', $entry['timestamp'])."'";
$data_tags = $data_entry.$data_user.$data_machine.$data_action.$data_time;
$y_img = $y - 5.5;
/* (4) Draw entry circles */
$RAW .= "<circle cx='$x' cy='$y' r='15' class='timeline around $action_class' $data_tags id='e".$entry['id_history']."' data-y='$y' />";
$RAW .= "<circle cx='$x' cy='$y' r='12' class='timeline center $action_class' />";
/* (5) Draw entry icon (action) */
$x_decal = $x - 5.5;
$RAW .= "\t<image x='$x_decal' y='$y_img' width='12' height='12' xlink:href='$icon_uri' class='icon' />";
/* (6) Draw circle below if current user */
if( $this->entry['id_user'] == $entry['id_user'] ){
$x_decal = $x - 25;
// {6.1} If current ENTRY -> draw big circle //
if( $this->entry['id_history'] == $entry['id_history'] )
$RAW .= "<circle cx='$x_decal' cy='$y' r='4' class='timeline below $action_class' />";
// {6.2} Else -> draw little circle //
else
$RAW .= "<circle cx='$x_decal' cy='$y' r='2' class='timeline below $action_class' />";
}
/* (6) Hour */
$x_decal = $x + 25;
$y_decal = $y + 5;
$RAW .= "<text x='$x_decal' y='$y_decal' class='$action_class'>".date('H:i:s', $entry['timestamp'])." - ".$entry['user_name']."</text>";
}
/* (4) Close SVG
---------------------------------------------------------*/
/* (1) Stop CIRCLE */
$y = $line_height + $line_pad;
$RAW .= "<circle cx='$x' cy='$y' r='6' fill='#edf0f5' class='tstop' />";
$RAW .= "<circle cx='$x' cy='$y' r='4' fill='#555' class='tstop' />";
/* (2) Close SVG tag */
$RAW .= "</svg>";
/* (5) Create invisible infobox (for now)
---------------------------------------------------------*/
$RAW .= "<div class='timeline infobox'></div>";
return $RAW;
}
/* (3) Add events for new day in @this->timeline
*
---------------------------------------------------------*/
private function add_date_nodes(){
/* (1) Initialization
---------------------------------------------------------*/
/* (1) Initialize variables */
$last_day = null;
$new_timeline = []; // will contain the new @timeline data
/* (2) Browse each entry
---------------------------------------------------------*/
foreach($this->timeline as $entry){
/* (1) If different day (not null) -> add a node + update last_day */
if( !is_null($last_day) && $last_day != date('d / m / Y', $entry['timestamp']) )
$new_timeline[] = [ 'date_node' => $last_day ];
/* (2) In all cases -> copy the event */
$new_timeline[] = $entry;
/* (3) Update the day */
$last_day = date('d / m / Y', $entry['timestamp']);
}
/* (3) Update the result
---------------------------------------------------------*/
$this->timeline = $new_timeline;
} }
} }

View File

@ -1 +1,6 @@
<span class='in-dev'>In development.. This feature will soon be available.</span> <!-- <span class='in-dev'>In development.. This feature will soon be available.</span> -->
<article class='timeline container' data-length='{{ core.timeline | length }}'>
{{ core.svg() | raw }}
</article>

View File

@ -72,7 +72,7 @@
{% block no_result %} {% block no_result %}
<article class='inline-box'> <article class='inline-box'>
<span>Aucun groupe trouvé.</span> <span>Aucun groupe machine trouvé.</span>
</article> </article>
{% endblock %} {% endblock %}

View File

@ -12,7 +12,7 @@
{% block generated %} {% block generated %}
<input id='admin_password' type='text' placeholder='Mot de passe généré...' disabled><br> <input id='admin_password' type='text' placeholder='Mot de passe généré...'><br>
{% endblock %} {% endblock %}

View File

@ -55,7 +55,7 @@
{% block no_result %} {% block no_result %}
<article class='inline-box'> <article class='inline-box'>
<span>Aucun groupe trouvé.</span> <span>Aucun groupe utilisateur trouvé.</span>
</article> </article>
{% endblock %} {% endblock %}

View File

@ -42,7 +42,7 @@
/* [2] Define headers /* [2] Define headers
=========================================================*/ =========================================================*/
$this->headers = \getallheaders(); $this->headers = self::getallheaders_adapter();
/* [3] Define default datasets (GET, POST) /* [3] Define default datasets (GET, POST)
@ -201,4 +201,30 @@
public function HEADERS(){ return $this->headers; } public function HEADERS(){ return $this->headers; }
public function METHOD(){ return $this->method; } public function METHOD(){ return $this->method; }
public function URI(){ return $this->uri; } public function URI(){ return $this->uri; }
private static function getallheaders_adapter(){
/* (1) If exists -> use it
---------------------------------------------------------*/
if( function_exists('getallheaders') )
return getallheaders();
/* (2) If does not (php-fpm)
---------------------------------------------------------*/
/* (1) init. variables */
$fetched_headers = [];
/* (2) Get all headers from $_SERVER */
foreach($_SERVER as $hname=>$hvalue ){
// {1} Store only if begins with 'HTTP_' //
if( substr($hname,0,5) == 'HTTP_' )
$fetched_headers[ str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($hname,5)))))] = $hvalue;
}
/* (3) Return created headers */
return $fetched_headers;
}
} }

View File

@ -237,7 +237,7 @@
/* [3] If `IN` condition /* [3] If `IN` condition
=========================================================*/ =========================================================*/
$defaultWhere = $this->where; $defaultWhere = $this->where;
$inCond = count($args[0]) > 1 && is_array($args[0][0]) && $args[0][1] == self::COND_IN; $inCond = is_array($args[0]) && count($args[0]) > 1 && is_array($args[0][0]) && $args[0][1] == self::COND_IN;
// erreur // erreur
if( is_array($args[0][0]) && !$inCond ) if( is_array($args[0][0]) && !$inCond )

View File

@ -132,7 +132,10 @@
/* [1] On construit la requête /* [1] On construit la requête
=========================================================*/ =========================================================*/
/* (1) Chamo */ /* (1) Chamo */
$sql .= $field[0].'.'.$field[1].' '; if( $value[1] == Rows::COND_LIKE ) // make LIKE lowercase
$sql .= 'LOWER('.$field[0].'.'.$field[1].') ';
else
$sql .= $field[0].'.'.$field[1].' ';
/* (2) Opérateur */ /* (2) Opérateur */
$sql .= substr($value[1], 2, -2).' '; $sql .= substr($value[1], 2, -2).' ';
@ -143,7 +146,7 @@
$sql .= 'NULL'; $sql .= 'NULL';
return $sql; return $sql;
} }
// {2} Si not NULL // // {2} Si not NULL //
$sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset; $sql .= ':'.$field[0].'_x_'.$field[1].'_'.$offset;

View File

@ -18,6 +18,10 @@ class Router{
* *
*/ */
public function __construct($url){ public function __construct($url){
// Format URI (ne doit pas avoir le premier '/')
if( preg_match("@^/@", $url) )
$url = substr($url, 1);
$this->url = $url; $this->url = $url;
// On initialise les routes // On initialise les routes

View File

@ -0,0 +1,14 @@
<?php
namespace token\core;
class TreeTokenNull{
public function __construct(){}
public function init_parent(){ return true; }
public function init_child(){ return true; }
}

387
composer.lock generated
View File

@ -4,21 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "a67d059eefe03511f76073ba76c61878",
"content-hash": "98f631539238eb6dba4f74f1ae9e4744", "content-hash": "98f631539238eb6dba4f74f1ae9e4744",
"packages": [ "packages": [
{ {
"name": "symfony/polyfill-mbstring", "name": "symfony/polyfill-mbstring",
"version": "v1.6.0", "version": "v1.7.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git", "url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
"reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -30,7 +29,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.6-dev" "dev-master": "1.7-dev"
} }
}, },
"autoload": { "autoload": {
@ -64,7 +63,7 @@
"portable", "portable",
"shim" "shim"
], ],
"time": "2017-10-11 12:05:26" "time": "2018-01-30T19:27:44+00:00"
}, },
{ {
"name": "twig/twig", "name": "twig/twig",
@ -130,22 +129,22 @@
"keywords": [ "keywords": [
"templating" "templating"
], ],
"time": "2017-09-27 17:50:14" "time": "2017-09-27T17:50:14+00:00"
} }
], ],
"packages-dev": [ "packages-dev": [
{ {
"name": "composer/ca-bundle", "name": "composer/ca-bundle",
"version": "1.0.8", "version": "1.1.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/ca-bundle.git", "url": "https://github.com/composer/ca-bundle.git",
"reference": "9dd73a03951357922d8aee6cc084500de93e2343" "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/9dd73a03951357922d8aee6cc084500de93e2343", "url": "https://api.github.com/repos/composer/ca-bundle/zipball/943b2c4fcad1ef178d16a713c2468bf7e579c288",
"reference": "9dd73a03951357922d8aee6cc084500de93e2343", "reference": "943b2c4fcad1ef178d16a713c2468bf7e579c288",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -154,12 +153,9 @@
"php": "^5.3.2 || ^7.0" "php": "^5.3.2 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.5", "phpunit/phpunit": "^4.8.35",
"psr/log": "^1.0", "psr/log": "^1.0",
"symfony/process": "^2.5 || ^3.0" "symfony/process": "^2.5 || ^3.0 || ^4.0"
},
"suggest": {
"symfony/process": "This is necessary to reliably check whether openssl_x509_parse is vulnerable on older php versions, but can be ignored on PHP 5.5.6+"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -191,39 +187,39 @@
"ssl", "ssl",
"tls" "tls"
], ],
"time": "2017-09-11 07:24:36" "time": "2017-11-29T09:37:33+00:00"
}, },
{ {
"name": "composer/composer", "name": "composer/composer",
"version": "1.5.2", "version": "1.6.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/composer.git", "url": "https://github.com/composer/composer.git",
"reference": "c639623fa2178b404ed4bab80f0d1263853fa4ae" "reference": "88a69fda0f2187ad8714cedffd7a8872dceaa4c2"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/composer/zipball/c639623fa2178b404ed4bab80f0d1263853fa4ae", "url": "https://api.github.com/repos/composer/composer/zipball/88a69fda0f2187ad8714cedffd7a8872dceaa4c2",
"reference": "c639623fa2178b404ed4bab80f0d1263853fa4ae", "reference": "88a69fda0f2187ad8714cedffd7a8872dceaa4c2",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer/ca-bundle": "^1.0", "composer/ca-bundle": "^1.0",
"composer/semver": "^1.0", "composer/semver": "^1.0",
"composer/spdx-licenses": "^1.0", "composer/spdx-licenses": "^1.2",
"justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0",
"php": "^5.3.2 || ^7.0", "php": "^5.3.2 || ^7.0",
"psr/log": "^1.0", "psr/log": "^1.0",
"seld/cli-prompt": "^1.0", "seld/cli-prompt": "^1.0",
"seld/jsonlint": "^1.4", "seld/jsonlint": "^1.4",
"seld/phar-utils": "^1.0", "seld/phar-utils": "^1.0",
"symfony/console": "^2.7 || ^3.0", "symfony/console": "^2.7 || ^3.0 || ^4.0",
"symfony/filesystem": "^2.7 || ^3.0", "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
"symfony/finder": "^2.7 || ^3.0", "symfony/finder": "^2.7 || ^3.0 || ^4.0",
"symfony/process": "^2.7 || ^3.0" "symfony/process": "^2.7 || ^3.0 || ^4.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.5 || ^5.0.5", "phpunit/phpunit": "^4.8.35 || ^5.7",
"phpunit/phpunit-mock-objects": "^2.3 || ^3.0" "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
}, },
"suggest": { "suggest": {
@ -237,7 +233,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.5-dev" "dev-master": "1.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -268,7 +264,7 @@
"dependency", "dependency",
"package" "package"
], ],
"time": "2017-09-11 14:59:26" "time": "2018-01-31T15:28:18+00:00"
}, },
{ {
"name": "composer/semver", "name": "composer/semver",
@ -330,27 +326,27 @@
"validation", "validation",
"versioning" "versioning"
], ],
"time": "2016-08-30 16:08:34" "time": "2016-08-30T16:08:34+00:00"
}, },
{ {
"name": "composer/spdx-licenses", "name": "composer/spdx-licenses",
"version": "1.1.6", "version": "1.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/composer/spdx-licenses.git", "url": "https://github.com/composer/spdx-licenses.git",
"reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c" "reference": "7e111c50db92fa2ced140f5ba23b4e261bc77a30"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/composer/spdx-licenses/zipball/2603a0d7ddc00a015deb576fa5297ca43dee6b1c", "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7e111c50db92fa2ced140f5ba23b4e261bc77a30",
"reference": "2603a0d7ddc00a015deb576fa5297ca43dee6b1c", "reference": "7e111c50db92fa2ced140f5ba23b4e261bc77a30",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.3.2 || ^7.0" "php": "^5.3.2 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.5 || ^5.0.5", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
"phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0"
}, },
"type": "library", "type": "library",
@ -391,24 +387,24 @@
"spdx", "spdx",
"validator" "validator"
], ],
"time": "2017-04-03 19:08:52" "time": "2018-01-31T13:17:27+00:00"
}, },
{ {
"name": "doctrine/collections", "name": "doctrine/collections",
"version": "v1.4.0", "version": "v1.5.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/collections.git", "url": "https://github.com/doctrine/collections.git",
"reference": "1a4fb7e902202c33cce8c55989b945612943c2ba" "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/collections/zipball/1a4fb7e902202c33cce8c55989b945612943c2ba", "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
"reference": "1a4fb7e902202c33cce8c55989b945612943c2ba", "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.6 || ^7.0" "php": "^7.1"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "~0.1@dev", "doctrine/coding-standard": "~0.1@dev",
@ -458,26 +454,28 @@
"collections", "collections",
"iterator" "iterator"
], ],
"time": "2017-01-03 10:49:41" "time": "2017-07-22T10:37:32+00:00"
}, },
{ {
"name": "gitonomy/gitlib", "name": "gitonomy/gitlib",
"version": "v1.0.2", "version": "v1.0.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/gitonomy/gitlib.git", "url": "https://github.com/gitonomy/gitlib.git",
"reference": "b4b916423a2e2da631cf3b3787beb9386a7b253c" "reference": "1c2b0605115786613cb517798046c8ab57c17097"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/gitonomy/gitlib/zipball/b4b916423a2e2da631cf3b3787beb9386a7b253c", "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/1c2b0605115786613cb517798046c8ab57c17097",
"reference": "b4b916423a2e2da631cf3b3787beb9386a7b253c", "reference": "1c2b0605115786613cb517798046c8ab57c17097",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"symfony/process": "^2.3|^3.0" "php": "^5.3 || ^7.0",
"symfony/process": "^2.3|^3.0|^4.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.8.35|^5.7",
"psr/log": "^1.0" "psr/log": "^1.0"
}, },
"suggest": { "suggest": {
@ -512,7 +510,7 @@
], ],
"description": "Library for accessing git", "description": "Library for accessing git",
"homepage": "http://gitonomy.com", "homepage": "http://gitonomy.com",
"time": "2016-05-11 08:25:40" "time": "2018-01-10T11:34:47+00:00"
}, },
{ {
"name": "jakub-onderka/php-parallel-lint", "name": "jakub-onderka/php-parallel-lint",
@ -559,7 +557,7 @@
], ],
"description": "This tool check syntax of PHP files about 20x faster than serial check.", "description": "This tool check syntax of PHP files about 20x faster than serial check.",
"homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint", "homepage": "https://github.com/JakubOnderka/PHP-Parallel-Lint",
"time": "2015-12-15 10:42:16" "time": "2015-12-15T10:42:16+00:00"
}, },
{ {
"name": "justinrainbow/json-schema", "name": "justinrainbow/json-schema",
@ -625,7 +623,7 @@
"json", "json",
"schema" "schema"
], ],
"time": "2017-10-21 13:15:38" "time": "2017-10-21T13:15:38+00:00"
}, },
{ {
"name": "kahlan/kahlan", "name": "kahlan/kahlan",
@ -679,7 +677,7 @@
"testing", "testing",
"unit test" "unit test"
], ],
"time": "2017-08-12 20:37:11" "time": "2017-08-12T20:37:11+00:00"
}, },
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
@ -757,31 +755,31 @@
"logging", "logging",
"psr-3" "psr-3"
], ],
"time": "2017-06-19 01:22:40" "time": "2017-06-19T01:22:40+00:00"
}, },
{ {
"name": "ocramius/package-versions", "name": "ocramius/package-versions",
"version": "1.1.3", "version": "1.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Ocramius/PackageVersions.git", "url": "https://github.com/Ocramius/PackageVersions.git",
"reference": "72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7" "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7", "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f",
"reference": "72b226d2957e9e6a9ed09aeaa29cabd840d1a3b7", "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"composer-plugin-api": "^1.0", "composer-plugin-api": "^1.0.0",
"php": "~7.0" "php": "^7.1.0"
}, },
"require-dev": { "require-dev": {
"composer/composer": "^1.3", "composer/composer": "^1.6.3",
"ext-zip": "*", "ext-zip": "*",
"humbug/humbug": "dev-master", "infection/infection": "^0.7.1",
"phpunit/phpunit": "^5.7.5" "phpunit/phpunit": "^7.0.0"
}, },
"type": "composer-plugin", "type": "composer-plugin",
"extra": { "extra": {
@ -806,33 +804,37 @@
} }
], ],
"description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
"time": "2017-09-06 15:24:43" "time": "2018-02-05T13:05:30+00:00"
}, },
{ {
"name": "ocramius/proxy-manager", "name": "ocramius/proxy-manager",
"version": "2.0.4", "version": "2.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git", "url": "https://github.com/Ocramius/ProxyManager.git",
"reference": "a55d08229f4f614bf335759ed0cf63378feeb2e6" "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/a55d08229f4f614bf335759ed0cf63378feeb2e6", "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/e18ac876b2e4819c76349de8f78ccc8ef1554cd7",
"reference": "a55d08229f4f614bf335759ed0cf63378feeb2e6", "reference": "e18ac876b2e4819c76349de8f78ccc8ef1554cd7",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ocramius/package-versions": "^1.0", "ocramius/package-versions": "^1.1.1",
"php": "7.0.0 - 7.0.5 || ^7.0.7", "php": "^7.1.0",
"zendframework/zend-code": "3.0.0 - 3.0.2 || ^3.0.4" "zendframework/zend-code": "^3.1.0"
}, },
"require-dev": { "require-dev": {
"couscous/couscous": "^1.4.0", "couscous/couscous": "^1.5.2",
"ext-phar": "*", "ext-phar": "*",
"phpbench/phpbench": "^0.11.2", "humbug/humbug": "dev-master@DEV",
"phpunit/phpunit": "^5.4.6", "nikic/php-parser": "^3.0.4",
"squizlabs/php_codesniffer": "^2.6.0" "phpbench/phpbench": "^0.12.2",
"phpstan/phpstan": "^0.6.4",
"phpunit/phpunit": "^5.6.4",
"phpunit/phpunit-mock-objects": "^3.4.1",
"squizlabs/php_codesniffer": "^2.7.0"
}, },
"suggest": { "suggest": {
"ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects",
@ -871,7 +873,7 @@
"proxy pattern", "proxy pattern",
"service proxies" "service proxies"
], ],
"time": "2016-11-04 15:53:15" "time": "2017-05-04T11:12:50+00:00"
}, },
{ {
"name": "phpro/grumphp", "name": "phpro/grumphp",
@ -968,7 +970,7 @@
} }
], ],
"description": "A composer plugin that enables source code quality checks.", "description": "A composer plugin that enables source code quality checks.",
"time": "2017-05-31 17:49:48" "time": "2017-05-31T17:49:48+00:00"
}, },
{ {
"name": "psr/container", "name": "psr/container",
@ -1017,7 +1019,7 @@
"container-interop", "container-interop",
"psr" "psr"
], ],
"time": "2017-02-14 16:28:37" "time": "2017-02-14T16:28:37+00:00"
}, },
{ {
"name": "psr/log", "name": "psr/log",
@ -1064,7 +1066,7 @@
"psr", "psr",
"psr-3" "psr-3"
], ],
"time": "2016-10-10 12:19:37" "time": "2016-10-10T12:19:37+00:00"
}, },
{ {
"name": "seld/cli-prompt", "name": "seld/cli-prompt",
@ -1112,27 +1114,27 @@
"input", "input",
"prompt" "prompt"
], ],
"time": "2017-03-18 11:32:45" "time": "2017-03-18T11:32:45+00:00"
}, },
{ {
"name": "seld/jsonlint", "name": "seld/jsonlint",
"version": "1.6.1", "version": "1.7.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Seldaek/jsonlint.git", "url": "https://github.com/Seldaek/jsonlint.git",
"reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77" "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
"reference": "50d63f2858d87c4738d5b76a7dcbb99fa8cf7c77", "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.3 || ^7.0" "php": "^5.3 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^4.5" "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
}, },
"bin": [ "bin": [
"bin/jsonlint" "bin/jsonlint"
@ -1161,7 +1163,7 @@
"parser", "parser",
"validator" "validator"
], ],
"time": "2017-06-18 15:11:04" "time": "2018-01-24T12:46:19+00:00"
}, },
{ {
"name": "seld/phar-utils", "name": "seld/phar-utils",
@ -1205,34 +1207,34 @@
"keywords": [ "keywords": [
"phra" "phra"
], ],
"time": "2015-10-13 18:44:15" "time": "2015-10-13T18:44:15+00:00"
}, },
{ {
"name": "symfony/config", "name": "symfony/config",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/config.git", "url": "https://github.com/symfony/config.git",
"reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd" "reference": "72689b934d6c6ecf73eca874e98933bf055313c9"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/4ab62407bff9cd97c410a7feaef04c375aaa5cfd", "url": "https://api.github.com/repos/symfony/config/zipball/72689b934d6c6ecf73eca874e98933bf055313c9",
"reference": "4ab62407bff9cd97c410a7feaef04c375aaa5cfd", "reference": "72689b934d6c6ecf73eca874e98933bf055313c9",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.5.9|>=7.0.8", "php": "^5.5.9|>=7.0.8",
"symfony/filesystem": "~2.8|~3.0" "symfony/filesystem": "~2.8|~3.0|~4.0"
}, },
"conflict": { "conflict": {
"symfony/dependency-injection": "<3.3", "symfony/dependency-injection": "<3.3",
"symfony/finder": "<3.3" "symfony/finder": "<3.3"
}, },
"require-dev": { "require-dev": {
"symfony/dependency-injection": "~3.3", "symfony/dependency-injection": "~3.3|~4.0",
"symfony/finder": "~3.3", "symfony/finder": "~3.3|~4.0",
"symfony/yaml": "~3.0" "symfony/yaml": "~3.0|~4.0"
}, },
"suggest": { "suggest": {
"symfony/yaml": "To use the yaml reference dumper" "symfony/yaml": "To use the yaml reference dumper"
@ -1240,7 +1242,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1267,48 +1269,49 @@
], ],
"description": "Symfony Config Component", "description": "Symfony Config Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-04 18:56:58" "time": "2018-01-21T19:05:02+00:00"
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "116bc56e45a8e5572e51eb43ab58c769a352366c" "reference": "26b6f419edda16c19775211987651cb27baea7f1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/116bc56e45a8e5572e51eb43ab58c769a352366c", "url": "https://api.github.com/repos/symfony/console/zipball/26b6f419edda16c19775211987651cb27baea7f1",
"reference": "116bc56e45a8e5572e51eb43ab58c769a352366c", "reference": "26b6f419edda16c19775211987651cb27baea7f1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.5.9|>=7.0.8", "php": "^5.5.9|>=7.0.8",
"symfony/debug": "~2.8|~3.0", "symfony/debug": "~2.8|~3.0|~4.0",
"symfony/polyfill-mbstring": "~1.0" "symfony/polyfill-mbstring": "~1.0"
}, },
"conflict": { "conflict": {
"symfony/dependency-injection": "<3.3" "symfony/dependency-injection": "<3.4",
"symfony/process": "<3.3"
}, },
"require-dev": { "require-dev": {
"psr/log": "~1.0", "psr/log": "~1.0",
"symfony/config": "~3.3", "symfony/config": "~3.3|~4.0",
"symfony/dependency-injection": "~3.3", "symfony/dependency-injection": "~3.4|~4.0",
"symfony/event-dispatcher": "~2.8|~3.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
"symfony/filesystem": "~2.8|~3.0", "symfony/lock": "~3.4|~4.0",
"symfony/process": "~2.8|~3.0" "symfony/process": "~3.3|~4.0"
}, },
"suggest": { "suggest": {
"psr/log": "For using the console logger", "psr/log": "For using the console logger",
"symfony/event-dispatcher": "", "symfony/event-dispatcher": "",
"symfony/filesystem": "", "symfony/lock": "",
"symfony/process": "" "symfony/process": ""
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1335,36 +1338,36 @@
], ],
"description": "Symfony Console Component", "description": "Symfony Console Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-29T09:03:43+00:00"
}, },
{ {
"name": "symfony/debug", "name": "symfony/debug",
"version": "v3.3.10", "version": "v4.0.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/debug.git", "url": "https://github.com/symfony/debug.git",
"reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd" "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", "url": "https://api.github.com/repos/symfony/debug/zipball/c77bb31d0f6310a2ac11e657475d396a92e5dc54",
"reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", "reference": "c77bb31d0f6310a2ac11e657475d396a92e5dc54",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.5.9|>=7.0.8", "php": "^7.1.3",
"psr/log": "~1.0" "psr/log": "~1.0"
}, },
"conflict": { "conflict": {
"symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" "symfony/http-kernel": "<3.4"
}, },
"require-dev": { "require-dev": {
"symfony/http-kernel": "~2.8|~3.0" "symfony/http-kernel": "~3.4|~4.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "4.0-dev"
} }
}, },
"autoload": { "autoload": {
@ -1391,20 +1394,20 @@
], ],
"description": "Symfony Debug Component", "description": "Symfony Debug Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-18T22:19:33+00:00"
}, },
{ {
"name": "symfony/dependency-injection", "name": "symfony/dependency-injection",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/dependency-injection.git", "url": "https://github.com/symfony/dependency-injection.git",
"reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1" "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8ebad929aee3ca185b05f55d9cc5521670821ad1", "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4b2717ee2499390e371e1fc7abaf886c1c83e83d",
"reference": "8ebad929aee3ca185b05f55d9cc5521670821ad1", "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1412,17 +1415,18 @@
"psr/container": "^1.0" "psr/container": "^1.0"
}, },
"conflict": { "conflict": {
"symfony/config": "<3.3.1", "symfony/config": "<3.3.7",
"symfony/finder": "<3.3", "symfony/finder": "<3.3",
"symfony/yaml": "<3.3" "symfony/proxy-manager-bridge": "<3.4",
"symfony/yaml": "<3.4"
}, },
"provide": { "provide": {
"psr/container-implementation": "1.0" "psr/container-implementation": "1.0"
}, },
"require-dev": { "require-dev": {
"symfony/config": "~3.3", "symfony/config": "~3.3|~4.0",
"symfony/expression-language": "~2.8|~3.0", "symfony/expression-language": "~2.8|~3.0|~4.0",
"symfony/yaml": "~3.3" "symfony/yaml": "~3.4|~4.0"
}, },
"suggest": { "suggest": {
"symfony/config": "", "symfony/config": "",
@ -1434,7 +1438,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1461,20 +1465,20 @@
], ],
"description": "Symfony DependencyInjection Component", "description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-04 17:15:30" "time": "2018-01-29T09:16:57+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/event-dispatcher.git", "url": "https://github.com/symfony/event-dispatcher.git",
"reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423" "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d7ba037e4b8221956ab1e221c73c9e27e05dd423", "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/26b87b6bca8f8f797331a30b76fdae5342dc26ca",
"reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423", "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1485,10 +1489,10 @@
}, },
"require-dev": { "require-dev": {
"psr/log": "~1.0", "psr/log": "~1.0",
"symfony/config": "~2.8|~3.0", "symfony/config": "~2.8|~3.0|~4.0",
"symfony/dependency-injection": "~3.3", "symfony/dependency-injection": "~3.3|~4.0",
"symfony/expression-language": "~2.8|~3.0", "symfony/expression-language": "~2.8|~3.0|~4.0",
"symfony/stopwatch": "~2.8|~3.0" "symfony/stopwatch": "~2.8|~3.0|~4.0"
}, },
"suggest": { "suggest": {
"symfony/dependency-injection": "", "symfony/dependency-injection": "",
@ -1497,7 +1501,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1524,20 +1528,20 @@
], ],
"description": "Symfony EventDispatcher Component", "description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-03T07:37:34+00:00"
}, },
{ {
"name": "symfony/filesystem", "name": "symfony/filesystem",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/filesystem.git", "url": "https://github.com/symfony/filesystem.git",
"reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1" "reference": "e078773ad6354af38169faf31c21df0f18ace03d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/90bc45abf02ae6b7deb43895c1052cb0038506f1", "url": "https://api.github.com/repos/symfony/filesystem/zipball/e078773ad6354af38169faf31c21df0f18ace03d",
"reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1", "reference": "e078773ad6354af38169faf31c21df0f18ace03d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1546,7 +1550,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1573,20 +1577,20 @@
], ],
"description": "Symfony Filesystem Component", "description": "Symfony Filesystem Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-03 13:33:10" "time": "2018-01-03T07:37:34+00:00"
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "773e19a491d97926f236942484cb541560ce862d" "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/773e19a491d97926f236942484cb541560ce862d", "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f",
"reference": "773e19a491d97926f236942484cb541560ce862d", "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1595,7 +1599,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1622,20 +1626,20 @@
], ],
"description": "Symfony Finder Component", "description": "Symfony Finder Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-03T07:37:34+00:00"
}, },
{ {
"name": "symfony/options-resolver", "name": "symfony/options-resolver",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/options-resolver.git", "url": "https://github.com/symfony/options-resolver.git",
"reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6" "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/options-resolver/zipball/ee4e22978fe885b54ee5da8c7964f0a5301abfb6", "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f3109a6aedd20e35c3a33190e932c2b063b7b50e",
"reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6", "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1644,7 +1648,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1676,20 +1680,20 @@
"configuration", "configuration",
"options" "options"
], ],
"time": "2017-07-29 21:54:42" "time": "2018-01-11T07:56:07+00:00"
}, },
{ {
"name": "symfony/process", "name": "symfony/process",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/process.git", "url": "https://github.com/symfony/process.git",
"reference": "fdf89e57a723a29baf536e288d6e232c059697b1" "reference": "09a5172057be8fc677840e591b17f385e58c7c0d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/fdf89e57a723a29baf536e288d6e232c059697b1", "url": "https://api.github.com/repos/symfony/process/zipball/09a5172057be8fc677840e591b17f385e58c7c0d",
"reference": "fdf89e57a723a29baf536e288d6e232c059697b1", "reference": "09a5172057be8fc677840e591b17f385e58c7c0d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1698,7 +1702,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1725,34 +1729,34 @@
], ],
"description": "Symfony Process Component", "description": "Symfony Process Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-29T09:03:43+00:00"
}, },
{ {
"name": "symfony/proxy-manager-bridge", "name": "symfony/proxy-manager-bridge",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git", "url": "https://github.com/symfony/proxy-manager-bridge.git",
"reference": "8c88403febb02a49e3f55512fced3c400c80cf28" "reference": "ffb375b65cf112364b5374ed99059975ca84a6bd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/8c88403febb02a49e3f55512fced3c400c80cf28", "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/ffb375b65cf112364b5374ed99059975ca84a6bd",
"reference": "8c88403febb02a49e3f55512fced3c400c80cf28", "reference": "ffb375b65cf112364b5374ed99059975ca84a6bd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"ocramius/proxy-manager": "~0.4|~1.0|~2.0", "ocramius/proxy-manager": "~0.4|~1.0|~2.0",
"php": "^5.5.9|>=7.0.8", "php": "^5.5.9|>=7.0.8",
"symfony/dependency-injection": "~2.8|~3.0" "symfony/dependency-injection": "~3.4|~4.0"
}, },
"require-dev": { "require-dev": {
"symfony/config": "~2.8|~3.0" "symfony/config": "~2.8|~3.0|~4.0"
}, },
"type": "symfony-bridge", "type": "symfony-bridge",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1779,27 +1783,30 @@
], ],
"description": "Symfony ProxyManager Bridge", "description": "Symfony ProxyManager Bridge",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-02 06:42:24" "time": "2018-01-03T07:37:34+00:00"
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v3.3.10", "version": "v3.4.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46" "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", "url": "https://api.github.com/repos/symfony/yaml/zipball/eab73b6c21d27ae4cd037c417618dfd4befb0bfe",
"reference": "8c7bf1e7d5d6b05a690b715729cb4cd0c0a99c46", "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.5.9|>=7.0.8" "php": "^5.5.9|>=7.0.8"
}, },
"conflict": {
"symfony/console": "<3.4"
},
"require-dev": { "require-dev": {
"symfony/console": "~2.8|~3.0" "symfony/console": "~3.4|~4.0"
}, },
"suggest": { "suggest": {
"symfony/console": "For validating YAML files using the lint command" "symfony/console": "For validating YAML files using the lint command"
@ -1807,7 +1814,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.3-dev" "dev-master": "3.4-dev"
} }
}, },
"autoload": { "autoload": {
@ -1834,31 +1841,31 @@
], ],
"description": "Symfony Yaml Component", "description": "Symfony Yaml Component",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"time": "2017-10-05 14:43:42" "time": "2018-01-21T19:05:02+00:00"
}, },
{ {
"name": "zendframework/zend-code", "name": "zendframework/zend-code",
"version": "3.1.0", "version": "3.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/zendframework/zend-code.git", "url": "https://github.com/zendframework/zend-code.git",
"reference": "2899c17f83a7207f2d7f53ec2f421204d3beea27" "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-code/zipball/2899c17f83a7207f2d7f53ec2f421204d3beea27", "url": "https://api.github.com/repos/zendframework/zend-code/zipball/6b1059db5b368db769e4392c6cb6cc139e56640d",
"reference": "2899c17f83a7207f2d7f53ec2f421204d3beea27", "reference": "6b1059db5b368db769e4392c6cb6cc139e56640d",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^5.6 || 7.0.0 - 7.0.4 || ^7.0.6", "php": "^7.1",
"zendframework/zend-eventmanager": "^2.6 || ^3.0" "zendframework/zend-eventmanager": "^2.6 || ^3.0"
}, },
"require-dev": { "require-dev": {
"doctrine/annotations": "~1.0", "doctrine/annotations": "~1.0",
"ext-phar": "*", "ext-phar": "*",
"phpunit/phpunit": "^4.8.21", "phpunit/phpunit": "^6.2.3",
"squizlabs/php_codesniffer": "^2.5", "zendframework/zend-coding-standard": "^1.0.0",
"zendframework/zend-stdlib": "^2.7 || ^3.0" "zendframework/zend-stdlib": "^2.7 || ^3.0"
}, },
"suggest": { "suggest": {
@ -1868,8 +1875,8 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.1-dev", "dev-master": "3.2-dev",
"dev-develop": "3.2-dev" "dev-develop": "3.3-dev"
} }
}, },
"autoload": { "autoload": {
@ -1887,7 +1894,7 @@
"code", "code",
"zf2" "zf2"
], ],
"time": "2016-10-24 13:23:32" "time": "2017-10-20T15:21:32+00:00"
}, },
{ {
"name": "zendframework/zend-eventmanager", "name": "zendframework/zend-eventmanager",
@ -1941,7 +1948,7 @@
"events", "events",
"zf2" "zf2"
], ],
"time": "2017-07-11 19:17:22" "time": "2017-07-11T19:17:22+00:00"
} }
], ],
"aliases": [], "aliases": [],

View File

@ -605,6 +605,28 @@
"options": { "download": true }, "options": { "download": true },
"parameters": {}, "parameters": {},
"output": {} "output": {}
},
"get_timeline": {
"description": "Retourne la timeline d'une machine pour associée à une entrée historique.",
"permissions": [["admin"]],
"parameters": {
"id_entry": { "description": "UID de l'entrée historique", "type": "id" }
},
"output": {
"timeline": { "description": "Données de la timeline.", "type": "array" }
}
},
"getById": {
"description": "Retourne les données associées à une entrée historique.",
"permissions": [["admin"]],
"parameters": {
"id_entry": { "description": "UID de l'entrée historique", "type": "id" }
},
"output": {
"entry": { "description": "Données de l'entrée.", "type": "array" }
}
} }
}, },

View File

@ -18,6 +18,7 @@
"search", "search",
"getAll", "getAll",
"getById",
"getByIdUser", "getByIdUser",
"getByIdMachine", "getByIdMachine",
"getByIdAction" "getByIdAction"

View File

@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net -- http://www.phpmyadmin.net
-- --
-- Host: localhost -- Host: localhost
-- Generation Time: Oct 12, 2017 at 09:32 PM -- Generation Time: Nov 13, 2017 at 08:18 AM
-- Server version: 5.7.19-0ubuntu0.16.04.1 -- Server version: 5.7.19-0ubuntu0.16.04.1
-- PHP Version: 7.0.22-0ubuntu0.16.04.1 -- PHP Version: 7.0.22-0ubuntu0.16.04.1
@ -19,8 +19,6 @@ SET time_zone = "+00:00";
-- --
-- Database: `logauth` -- Database: `logauth`
-- --
CREATE DATABASE IF NOT EXISTS `logauth` DEFAULT CHARACTER SET latin1 COLLATE latin1_bin;
USE `logauth`;
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -28,7 +26,6 @@ USE `logauth`;
-- Table structure for table `action` -- Table structure for table `action`
-- --
DROP TABLE IF EXISTS `action`;
CREATE TABLE `action` ( CREATE TABLE `action` (
`id_action` int(11) NOT NULL, `id_action` int(11) NOT NULL,
`name` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
@ -55,7 +52,6 @@ INSERT INTO `action` (`id_action`, `name`, `timeout`, `required`, `action`) VALU
-- Table structure for table `action_merge` -- Table structure for table `action_merge`
-- --
DROP TABLE IF EXISTS `action_merge`;
CREATE TABLE `action_merge` ( CREATE TABLE `action_merge` (
`id_action_merge` int(11) NOT NULL, `id_action_merge` int(11) NOT NULL,
`id_target` int(11) NOT NULL, `id_target` int(11) NOT NULL,
@ -105,7 +101,6 @@ INSERT INTO `action_merge` (`id_action_merge`, `id_target`, `id_source`, `id_act
-- Table structure for table `admin` -- Table structure for table `admin`
-- --
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` ( CREATE TABLE `admin` (
`id_admin` int(11) NOT NULL, `id_admin` int(11) NOT NULL,
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
@ -121,8 +116,10 @@ CREATE TABLE `admin` (
INSERT INTO `admin` (`id_admin`, `id_warehouse`, `username`, `mail`, `password`, `token`) VALUES INSERT INTO `admin` (`id_admin`, `id_warehouse`, `username`, `mail`, `password`, `token`) VALUES
(1, 7, 'adrien.marques', 'adminmail@gmail.com', 'eb35bccc794d3151b050285c3f6f6d084faadcc7345302b639fbb036cf623b7befcbf7ea08579c612f6201b22cdbc98d6d5d39354b3d31f51ba0426a5299371d', '434f3494ca228538463320eccf93ba67ca29e734073fbf7a9178ba7494b0e26365bb5ae2ead89428f515cdcb9ac75f0ec2200033c3911f4a49f133dfb6dd4aca'), (1, 7, 'adrien.marques', 'adminmail@gmail.com', 'eb35bccc794d3151b050285c3f6f6d084faadcc7345302b639fbb036cf623b7befcbf7ea08579c612f6201b22cdbc98d6d5d39354b3d31f51ba0426a5299371d', '434f3494ca228538463320eccf93ba67ca29e734073fbf7a9178ba7494b0e26365bb5ae2ead89428f515cdcb9ac75f0ec2200033c3911f4a49f133dfb6dd4aca'),
(2, 8, 'alexandre.marques', 'admin2mail@gmail.com', 'b70896036f6d717f938ca09f531364c17910fc6a2011166e2c2bac6f505bda52e8d8993fefb7a6fdf13b1fd5368280f064ff87e01ae74aadf7e14f582dede676', '287361328d110cbc2e78464563e005dc82a6a0d501b84cba6770dd3d173b65eef0b226fcb8326cc14fb4ee9dec5df6622a11fd8e6e8a6e518a7eca055e67e8c5'), (4, 7, 'willy.fontaine', 'willy.fontaine@stef.com', '08678556fd8223eb5d6014deeec072b809df8ac1dd6e087150f2b9e3820640ed92e33db793b9a02f31615490cee7b01c659865a6322a9d784bf86747ec41d7aa', '728caa787cf2f567cfeacf682e64b36a6387955cc441dc62c59fc51df034760e76fccb934b82f4495cfe860c3092665811d93bd1549f7d286d0ad071ee45b6fd'),
(4, 8, 'willy.fontaine', 'willy.fontaine@stef.com', '08678556fd8223eb5d6014deeec072b809df8ac1dd6e087150f2b9e3820640ed92e33db793b9a02f31615490cee7b01c659865a6322a9d784bf86747ec41d7aa', '728caa787cf2f567cfeacf682e64b36a6387955cc441dc62c59fc51df034760e76fccb934b82f4495cfe860c3092665811d93bd1549f7d286d0ad071ee45b6fd'); (5, 8, 'willy.fontaine', 'willy.fontaine@stef.com', '08678556fd8223eb5d6014deeec072b809df8ac1dd6e087150f2b9e3820640ed92e33db793b9a02f31615490cee7b01c659865a6322a9d784bf86747ec41d7aa', '9e8d9632bde19a34e1d0cc953c4ad59f59ed6f8ce981e655fccc6083e8dc2dfbc754230277ec5aa2c5e884a4fd71ee229b2d9e49492ce283fb40c23a73e432f3'),
(8, 8, 'patrick.letort', 'patrick.letort@stef.com', '2dae3e1c28554b77c2e1ec20fba4405937b159f7607802f8e88df8cefaa53a683f143edad0e1196dd13c58dc180e3bbd23e97ed320361ac33b99500e5f63071c', '8cfae3acc5917a8656e5603f7e7171265342c04af4d3a1c5ddb183905ab8bd0030edc64a4beee67b92bcbdfbbf5299625adfbbc48fb27f42a98e0a0b8afc4e09'),
(9, 8, 'adrien.marques', 'marquesadri1@gmail.com', 'e8bf5e2e0fa92a3dabfa3563c49c55ad1741faf71783d86c3342cd3bd04b46c8b138cb4efeb078c98daa777856de7eccad2189fc5f4f6fe58ffb1dec2baf38b3', '395c9e06462072e0e724be228cddccbf5189ef1f52558241ae2f89cfdf83f825b3c718396f8002a097e4648199ab8094c1390e31f0b77dbc4004093a62115822');
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -130,7 +127,6 @@ INSERT INTO `admin` (`id_admin`, `id_warehouse`, `username`, `mail`, `password`,
-- Table structure for table `chip` -- Table structure for table `chip`
-- --
DROP TABLE IF EXISTS `chip`;
CREATE TABLE `chip` ( CREATE TABLE `chip` (
`id_chip` int(11) NOT NULL, `id_chip` int(11) NOT NULL,
`id_module` int(11) DEFAULT NULL, `id_module` int(11) DEFAULT NULL,
@ -154,7 +150,6 @@ INSERT INTO `chip` (`id_chip`, `id_module`, `name`, `position`, `type`, `pins`)
-- Table structure for table `etree` -- Table structure for table `etree`
-- --
DROP TABLE IF EXISTS `etree`;
CREATE TABLE `etree` ( CREATE TABLE `etree` (
`id_etree` int(11) NOT NULL, `id_etree` int(11) NOT NULL,
`id_module` int(11) NOT NULL, `id_module` int(11) NOT NULL,
@ -177,7 +172,6 @@ INSERT INTO `etree` (`id_etree`, `id_module`, `daemon`) VALUES
-- Table structure for table `global_state` -- Table structure for table `global_state`
-- --
DROP TABLE IF EXISTS `global_state`;
CREATE TABLE `global_state` ( CREATE TABLE `global_state` (
`id_global_state` int(11) NOT NULL, `id_global_state` int(11) NOT NULL,
`global_state` varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT 'started | signaled | locked', `global_state` varchar(20) COLLATE utf8_unicode_ci NOT NULL COMMENT 'started | signaled | locked',
@ -200,7 +194,6 @@ INSERT INTO `global_state` (`id_global_state`, `global_state`, `chips`) VALUES
-- Table structure for table `history` -- Table structure for table `history`
-- --
DROP TABLE IF EXISTS `history`;
CREATE TABLE `history` ( CREATE TABLE `history` (
`id_history` int(11) NOT NULL, `id_history` int(11) NOT NULL,
`timestamp` int(11) NOT NULL, `timestamp` int(11) NOT NULL,
@ -214,68 +207,117 @@ CREATE TABLE `history` (
-- --
INSERT INTO `history` (`id_history`, `timestamp`, `id_user`, `id_machine`, `id_action`) VALUES INSERT INTO `history` (`id_history`, `timestamp`, `id_user`, `id_machine`, `id_action`) VALUES
(285, 1506950713, 215, 126, 1), (504, 1508073591, 210, 127, 1),
(286, 1506950739, 215, 126, 5), (505, 1508073598, 210, 127, 5),
(287, 1506950740, 215, 126, 1), (506, 1508073601, 210, 127, 1),
(288, 1506950741, 215, 126, 5), (507, 1508073644, 210, 127, 5),
(289, 1506950742, 215, 126, 1), (508, 1508073654, 210, 127, 1),
(290, 1506950804, 215, 126, 5), (509, 1508073657, 210, 127, 2),
(291, 1506950807, 215, 126, 2), (510, 1508073659, 210, 127, 3),
(292, 1506950810, 215, 126, 5), (511, 1508073682, 218, 127, 4),
(293, 1506950811, 215, 126, 1), (512, 1508073687, 210, 127, 1),
(294, 1506950812, 215, 126, 5), (513, 1508129928, 210, 127, 5),
(295, 1506950813, 215, 126, 1), (514, 1508129955, 210, 127, 1),
(296, 1506950815, 210, 126, 6), (515, 1508129964, 210, 127, 5),
(297, 1506950819, 215, 126, 5), (516, 1508129991, 210, 127, 1),
(298, 1506950822, 215, 126, 2), (517, 1508130001, 210, 127, 5),
(299, 1506950824, 215, 126, 3), (518, 1508130011, 210, 127, 1),
(300, 1506950829, 210, 126, 4), (519, 1508130022, 210, 127, 5),
(301, 1506950831, 215, 126, 1), (520, 1508130024, 210, 127, 1),
(302, 1506951006, 215, 126, 5), (521, 1508130027, 210, 127, 2),
(303, 1506951006, 215, 126, 1), (522, 1508130029, 210, 127, 3),
(304, 1506951007, 215, 126, 5), (523, 1508130114, 218, 127, 4),
(305, 1506951188, 215, 126, 1), (524, 1508130137, 210, 127, 1),
(306, 1506951190, 215, 126, 5), (525, 1508130156, 210, 127, 5),
(307, 1506951201, 215, 126, 1), (526, 1508130160, 210, 127, 1),
(308, 1506951205, 215, 126, 5), (527, 1508130198, 210, 127, 5),
(309, 1506951209, 215, 126, 1), (528, 1508130200, 210, 127, 1),
(310, 1506951210, 215, 126, 5), (529, 1508130203, 210, 127, 2),
(311, 1506951211, 215, 126, 1), (530, 1508130332, 218, 127, 6),
(312, 1506951211, 215, 126, 5), (531, 1508130339, 210, 127, 5),
(313, 1506951212, 215, 126, 1), (532, 1508130349, 210, 127, 1),
(314, 1506951213, 215, 126, 5), (533, 1508130447, 210, 127, 5),
(315, 1506951218, 215, 126, 1), (534, 1508130449, 210, 127, 1),
(316, 1506951219, 215, 126, 5), (535, 1508130451, 210, 127, 5),
(317, 1506951219, 215, 126, 1), (536, 1508130459, 210, 127, 1),
(318, 1506951219, 215, 126, 5), (537, 1508130644, 210, 127, 5),
(319, 1506951220, 215, 126, 1), (538, 1508130652, 210, 127, 1),
(320, 1506951221, 215, 126, 5), (539, 1508130654, 210, 127, 5),
(321, 1506951221, 215, 126, 1), (540, 1508130663, 210, 127, 1),
(322, 1506951225, 215, 126, 5), (541, 1508130668, 210, 127, 5),
(323, 1506951235, 215, 126, 1), (542, 1508131094, 210, 127, 1),
(324, 1506951237, 215, 126, 5), (543, 1508131102, 210, 127, 5),
(325, 1506951271, 215, 126, 1), (544, 1508131107, 210, 127, 1),
(326, 1506951274, 215, 126, 2), (545, 1508131120, 210, 127, 5),
(327, 1506951276, 215, 126, 3), (546, 1508131149, 210, 127, 1),
(328, 1506951341, 210, 126, 4), (547, 1508131167, 210, 127, 5),
(329, 1506951345, 215, 126, 1), (548, 1508131176, 210, 127, 1),
(330, 1506951370, 215, 126, 5), (549, 1508131281, 210, 127, 5),
(331, 1506951372, 215, 126, 1), (550, 1508131286, 210, 127, 1),
(332, 1506951375, 215, 126, 2), (551, 1508131313, 210, 127, 5),
(333, 1506951377, 215, 126, 3), (552, 1508131320, 210, 127, 1),
(334, 1506951480, 210, 126, 4), (553, 1508131323, 210, 127, 5),
(335, 1507815648, 215, 127, 1), (554, 1508136438, 210, 127, 1),
(336, 1507815649, 215, 127, 5), (555, 1508136455, 210, 127, 5),
(337, 1507816917, 215, 127, 1), (556, 1508136480, 210, 127, 1),
(338, 1507820260, 215, 127, 5), (557, 1508136499, 210, 127, 5),
(339, 1507820263, 215, 127, 2), (558, 1508137679, 210, 127, 1),
(340, 1507830442, 215, 127, 5), (559, 1508137723, 210, 127, 5),
(341, 1507830445, 215, 127, 1), (560, 1508137727, 210, 127, 1),
(342, 1507830516, 215, 127, 5), (561, 1508137737, 210, 127, 5),
(343, 1507830518, 215, 127, 1), (562, 1508137744, 210, 127, 1),
(344, 1507830586, 215, 127, 5), (563, 1508152269, 210, 127, 5),
(345, 1507830587, 215, 127, 1), (564, 1508153966, 210, 127, 1),
(346, 1507830590, 210, 127, 6); (565, 1508163844, 210, 127, 5),
(566, 1508163848, 210, 127, 1),
(567, 1508163849, 210, 127, 5),
(568, 1508163873, 210, 127, 1),
(569, 1508163879, 210, 127, 5),
(570, 1508220239, 210, 127, 1),
(571, 1508220269, 210, 127, 5),
(572, 1508220272, 210, 127, 1),
(573, 1508220284, 210, 127, 5),
(574, 1508220292, 210, 127, 1),
(575, 1508226597, 210, 127, 5),
(576, 1508227895, 210, 127, 1),
(577, 1508233976, 210, 127, 5),
(578, 1508236312, 210, 127, 1),
(579, 1508248170, 210, 127, 5),
(580, 1508249485, 210, 127, 1),
(581, 1508253739, 210, 127, 5),
(582, 1508296080, 210, 127, 1),
(583, 1508296083, 210, 127, 5),
(584, 1508296086, 210, 127, 1),
(585, 1508296091, 210, 127, 5),
(586, 1508296095, 210, 127, 1),
(587, 1508296106, 210, 127, 5),
(588, 1508296155, 210, 127, 1),
(589, 1508296156, 210, 127, 5),
(590, 1508296248, 210, 127, 1),
(591, 1508296252, 210, 127, 5),
(592, 1508306368, 210, 127, 1),
(593, 1508325871, 210, 127, 5),
(594, 1508387103, 210, 127, 1),
(595, 1508389196, 210, 127, 5),
(596, 1508389201, 210, 127, 1),
(597, 1508389202, 210, 127, 5),
(598, 1508389203, 210, 127, 1),
(599, 1508389205, 210, 127, 5),
(600, 1508389216, 210, 127, 1),
(601, 1508389224, 210, 127, 5),
(602, 1508389226, 210, 127, 1),
(603, 1508389235, 210, 127, 5),
(604, 1508534088, 210, 127, 1),
(605, 1508534098, 210, 127, 5),
(606, 1508534099, 210, 127, 1),
(607, 1508534383, 210, 127, 5),
(608, 1508650844, 210, 127, 1),
(609, 1508659205, 210, 127, 5),
(610, 1508659207, 210, 127, 1),
(611, 1508665004, 210, 127, 5),
(612, 1508665006, 210, 127, 1),
(613, 1508665094, 210, 127, 5),
(614, 1508667146, 210, 127, 1);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -283,7 +325,6 @@ INSERT INTO `history` (`id_history`, `timestamp`, `id_user`, `id_machine`, `id_a
-- Table structure for table `log` -- Table structure for table `log`
-- --
DROP TABLE IF EXISTS `log`;
CREATE TABLE `log` ( CREATE TABLE `log` (
`id_log` int(11) NOT NULL, `id_log` int(11) NOT NULL,
`id_feature` int(11) NOT NULL, `id_feature` int(11) NOT NULL,
@ -298,7 +339,6 @@ CREATE TABLE `log` (
-- Table structure for table `machine` -- Table structure for table `machine`
-- --
DROP TABLE IF EXISTS `machine`;
CREATE TABLE `machine` ( CREATE TABLE `machine` (
`id_machine` int(11) NOT NULL, `id_machine` int(11) NOT NULL,
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
@ -423,12 +463,12 @@ INSERT INTO `machine` (`id_machine`, `id_warehouse`, `name`, `token`, `unlock_co
(115, 7, 'sd', NULL, NULL, NULL, NULL), (115, 7, 'sd', NULL, NULL, NULL, NULL),
(116, 7, 'machine13', NULL, NULL, NULL, NULL), (116, 7, 'machine13', NULL, NULL, NULL, NULL),
(121, 7, 'dsad', NULL, NULL, NULL, NULL), (121, 7, 'dsad', NULL, NULL, NULL, NULL),
(122, 8, 'surgel1', NULL, '5f4769b43bba1ad8ee063b917a77a54569280cee4b04b65e251b3fa80a25867645356e99a1178830824be5ae4bd72196d2781d7324a6ca965406676f80e6c159', NULL, NULL), (122, 8, 'surgel1', '7853cb554aebb76640df3e066b67a099720939aa86e52b9c17bb236d090121936fb018b301fb1ab1b49d68e360a3ebbc0a2a9be99cfadf20f69facf058a1ad4a', NULL, '6452a1', '192.168.0.21'),
(123, 8, 'surgel2', NULL, NULL, NULL, NULL), (123, 8, 'surgel2', NULL, '24d74a635267b26a587a9902ab19275f889c8c693538373ca4c9f85eb4fb75625a07fdef5289161b9fe78156c78a777185efef2bc249f6647538d5758f5b7210', NULL, NULL),
(124, 8, 'surgel3', NULL, NULL, NULL, NULL), (124, 8, 'surgel3', NULL, NULL, NULL, NULL),
(125, 8, 'surgel4', NULL, NULL, NULL, NULL), (125, 8, 'surgel4', NULL, NULL, NULL, NULL),
(126, 8, 'lait1', 'd1607996880675c78ecdf3507540fdf6fbfb4a9fc10f350929e24e5c0b3cea03e444348f7aac7c77410a1fd61745c4f0a370a89621237174a575870d7108d8e4', NULL, '6452a1', '192.168.0.44'), (126, 8, 'lait1', NULL, NULL, NULL, NULL),
(127, 8, 'lait2', '14e7f5ba1e789b622bdc1a9770452b71bb8959d694b48fc65610649fdf57d6113b0d4c89216b08633beec11f14764b8854ba7962eb8516d5b90466148f2b8871', NULL, '6452a1', '192.168.0.44'), (127, 8, 'lait2', '207a8ef6a121fbffbedd7affcdf1c4eccf3918941d186ef93ddc03b7eeebc721b58155c10e20d2b45e41de71428f49d51da8a4223284e19d52bea7a1df2f6807', NULL, '23c683', '192.168.1.100'),
(128, 8, 'lait3', NULL, NULL, NULL, NULL), (128, 8, 'lait3', NULL, NULL, NULL, NULL),
(129, 8, 'lait4', NULL, NULL, NULL, NULL); (129, 8, 'lait4', NULL, NULL, NULL, NULL);
@ -438,7 +478,6 @@ INSERT INTO `machine` (`id_machine`, `id_warehouse`, `name`, `token`, `unlock_co
-- Table structure for table `machine_cluster` -- Table structure for table `machine_cluster`
-- --
DROP TABLE IF EXISTS `machine_cluster`;
CREATE TABLE `machine_cluster` ( CREATE TABLE `machine_cluster` (
`id_machine_cluster` int(11) NOT NULL, `id_machine_cluster` int(11) NOT NULL,
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
@ -462,7 +501,6 @@ INSERT INTO `machine_cluster` (`id_machine_cluster`, `id_warehouse`, `name`) VAL
-- Table structure for table `machine_cluster_merge` -- Table structure for table `machine_cluster_merge`
-- --
DROP TABLE IF EXISTS `machine_cluster_merge`;
CREATE TABLE `machine_cluster_merge` ( CREATE TABLE `machine_cluster_merge` (
`id_machine_cluster_merge` int(11) NOT NULL, `id_machine_cluster_merge` int(11) NOT NULL,
`id_machine_cluster` int(11) NOT NULL, `id_machine_cluster` int(11) NOT NULL,
@ -477,14 +515,15 @@ INSERT INTO `machine_cluster_merge` (`id_machine_cluster_merge`, `id_machine_clu
(3, 1, 58), (3, 1, 58),
(4, 2, 75), (4, 2, 75),
(5, 3, 6), (5, 3, 6),
(6, 2, 58),
(9, 4, 122),
(10, 4, 123), (10, 4, 123),
(11, 4, 124), (11, 4, 124),
(12, 4, 125), (12, 4, 125),
(13, 5, 126), (13, 5, 126),
(14, 5, 127), (16, 5, 129),
(16, 5, 129); (18, 5, 127),
(19, 4, 122),
(20, 5, 128),
(22, 3, 58);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -492,7 +531,6 @@ INSERT INTO `machine_cluster_merge` (`id_machine_cluster_merge`, `id_machine_clu
-- Table structure for table `module` -- Table structure for table `module`
-- --
DROP TABLE IF EXISTS `module`;
CREATE TABLE `module` ( CREATE TABLE `module` (
`id_module` int(11) NOT NULL, `id_module` int(11) NOT NULL,
`name` varchar(50) COLLATE utf8_unicode_ci NOT NULL `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL
@ -514,7 +552,6 @@ INSERT INTO `module` (`id_module`, `name`) VALUES
-- Table structure for table `module_availability` -- Table structure for table `module_availability`
-- --
DROP TABLE IF EXISTS `module_availability`;
CREATE TABLE `module_availability` ( CREATE TABLE `module_availability` (
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
`id_module` int(11) NOT NULL `id_module` int(11) NOT NULL
@ -537,7 +574,6 @@ INSERT INTO `module_availability` (`id_warehouse`, `id_module`) VALUES
-- Table structure for table `module_merge` -- Table structure for table `module_merge`
-- --
DROP TABLE IF EXISTS `module_merge`;
CREATE TABLE `module_merge` ( CREATE TABLE `module_merge` (
`id_module_merge` int(11) NOT NULL, `id_module_merge` int(11) NOT NULL,
`id_machine_cluster` int(11) NOT NULL, `id_machine_cluster` int(11) NOT NULL,
@ -563,20 +599,26 @@ INSERT INTO `module_merge` (`id_module_merge`, `id_machine_cluster`, `id_etree`,
-- Table structure for table `motheure` -- Table structure for table `motheure`
-- --
DROP TABLE IF EXISTS `motheure`;
CREATE TABLE `motheure` ( CREATE TABLE `motheure` (
`id_motheure` int(11) NOT NULL, `id_motheure` int(11) NOT NULL,
`id_machine` int(11) NOT NULL, `id_machine` int(11) NOT NULL,
`count` int(11) NOT NULL `count` bigint(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin; ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
--
-- Dumping data for table `motheure`
--
INSERT INTO `motheure` (`id_motheure`, `id_machine`, `count`) VALUES
(3, 122, 13),
(6, 127, 2890);
-- -------------------------------------------------------- -- --------------------------------------------------------
-- --
-- Table structure for table `state` -- Table structure for table `state`
-- --
DROP TABLE IF EXISTS `state`;
CREATE TABLE `state` ( CREATE TABLE `state` (
`id_state` int(11) NOT NULL, `id_state` int(11) NOT NULL,
`id_chip` int(11) NOT NULL, `id_chip` int(11) NOT NULL,
@ -602,7 +644,6 @@ INSERT INTO `state` (`id_state`, `id_chip`, `state`, `value`) VALUES
-- Table structure for table `user` -- Table structure for table `user`
-- --
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` ( CREATE TABLE `user` (
`id_user` int(11) NOT NULL, `id_user` int(11) NOT NULL,
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
@ -710,7 +751,7 @@ INSERT INTO `user` (`id_user`, `id_warehouse`, `code`, `username`, `firstname`,
(215, 8, 'F9-7D-5D-9E', 'Pass-A', 'Pass', 'A-1', 'passA@logauth.xdrm.io'), (215, 8, 'F9-7D-5D-9E', 'Pass-A', 'Pass', 'A-1', 'passA@logauth.xdrm.io'),
(216, 8, 'D2-E2-CA-12', 'Card-D', 'Carte', 'D-3', 'cardD@logauth.xdrm.io'), (216, 8, 'D2-E2-CA-12', 'Card-D', 'Carte', 'D-3', 'cardD@logauth.xdrm.io'),
(217, 8, 'D4-34-E8-AB', 'Pass-E', 'Pass', 'E-4', 'passE@logauth.xdrm.io'), (217, 8, 'D4-34-E8-AB', 'Pass-E', 'Pass', 'E-4', 'passE@logauth.xdrm.io'),
(218, 8, 'A9-5B-5D-9E', 'Pass-F', 'Pass', 'F-5', 'passF@logauth.xdrm.io'); (218, 8, 'A9-05-5D-9E', 'Pass-F', 'Pass', 'F-5', 'passF@logauth.xdrm.io');
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -718,7 +759,6 @@ INSERT INTO `user` (`id_user`, `id_warehouse`, `code`, `username`, `firstname`,
-- Table structure for table `user_cluster` -- Table structure for table `user_cluster`
-- --
DROP TABLE IF EXISTS `user_cluster`;
CREATE TABLE `user_cluster` ( CREATE TABLE `user_cluster` (
`id_user_cluster` int(11) NOT NULL, `id_user_cluster` int(11) NOT NULL,
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
@ -743,7 +783,6 @@ INSERT INTO `user_cluster` (`id_user_cluster`, `id_warehouse`, `name`) VALUES
-- Table structure for table `user_cluster_merge` -- Table structure for table `user_cluster_merge`
-- --
DROP TABLE IF EXISTS `user_cluster_merge`;
CREATE TABLE `user_cluster_merge` ( CREATE TABLE `user_cluster_merge` (
`id_user_cluster_merge` int(11) NOT NULL, `id_user_cluster_merge` int(11) NOT NULL,
`id_user_cluster` int(11) NOT NULL, `id_user_cluster` int(11) NOT NULL,
@ -769,7 +808,8 @@ INSERT INTO `user_cluster_merge` (`id_user_cluster_merge`, `id_user_cluster`, `i
(91, 5, 210), (91, 5, 210),
(92, 7, 216), (92, 7, 216),
(94, 6, 218), (94, 6, 218),
(99, 8, 217); (99, 8, 217),
(100, 5, 216);
-- -------------------------------------------------------- -- --------------------------------------------------------
@ -777,7 +817,6 @@ INSERT INTO `user_cluster_merge` (`id_user_cluster_merge`, `id_user_cluster`, `i
-- Table structure for table `warehouse` -- Table structure for table `warehouse`
-- --
DROP TABLE IF EXISTS `warehouse`;
CREATE TABLE `warehouse` ( CREATE TABLE `warehouse` (
`id_warehouse` int(11) NOT NULL, `id_warehouse` int(11) NOT NULL,
`name` varchar(30) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `name` varchar(30) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
@ -792,7 +831,7 @@ CREATE TABLE `warehouse` (
INSERT INTO `warehouse` (`id_warehouse`, `name`, `theme`, `password`, `token`) VALUES INSERT INTO `warehouse` (`id_warehouse`, `name`, `theme`, `password`, `token`) VALUES
(7, 'stef-montauban', '3091DB', '53859350c1eb59e301d8fe747f4d1c96d3ec31d95cd1bc72c81d72800edbc6ab45da0d5b6208080fb2e519b1f9848ce0a1289775800912068f32e390f5e1bb6c', '2046c66738b4f1f1e6460537f11970ec5b2cfa65f295b2ca0d2036609dcd3f8ccb6ec271e15440933d3b24ae27eba71423a4545583ab6f3736a5d4f7c8f8c53e'), (7, 'stef-montauban', '3091DB', '53859350c1eb59e301d8fe747f4d1c96d3ec31d95cd1bc72c81d72800edbc6ab45da0d5b6208080fb2e519b1f9848ce0a1289775800912068f32e390f5e1bb6c', '2046c66738b4f1f1e6460537f11970ec5b2cfa65f295b2ca0d2036609dcd3f8ccb6ec271e15440933d3b24ae27eba71423a4545583ab6f3736a5d4f7c8f8c53e'),
(8, 'stef-toulouse', 'DB554E', '273bd225482d20c061620c80e3bb87528d9e178bd572acd47feb58eee7e8a3847cb308b287d9d94c7a292b33d4c766cdb7c95c2828f53b97bbc0f80fa44aeb83', '52131065a906de90e26da0732e58400edd6739cfa03fc658e7593abef4a4504e18e66e1a8fe9da374a8e8f753603463e4777789262b3ee945d4bf72dd8d6399c'); (8, 'stef-montbartier', 'DB554E', '034a8313428d9780e4c5bc4bc25ae3985d1d987f4c6928f888e61685ec3f183f7ec0c83f691da2eeb64f27d916fb44aafdef66113892dbc800218b3b512e316e', '52131065a906de90e26da0732e58400edd6739cfa03fc658e7593abef4a4504e18e66e1a8fe9da374a8e8f753603463e4777789262b3ee945d4bf72dd8d6399c');
-- --
-- Indexes for dumped tables -- Indexes for dumped tables
@ -962,7 +1001,7 @@ ALTER TABLE `action_merge`
-- AUTO_INCREMENT for table `admin` -- AUTO_INCREMENT for table `admin`
-- --
ALTER TABLE `admin` ALTER TABLE `admin`
MODIFY `id_admin` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; MODIFY `id_admin` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
-- --
-- AUTO_INCREMENT for table `chip` -- AUTO_INCREMENT for table `chip`
-- --
@ -982,7 +1021,7 @@ ALTER TABLE `global_state`
-- AUTO_INCREMENT for table `history` -- AUTO_INCREMENT for table `history`
-- --
ALTER TABLE `history` ALTER TABLE `history`
MODIFY `id_history` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=347; MODIFY `id_history` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=615;
-- --
-- AUTO_INCREMENT for table `log` -- AUTO_INCREMENT for table `log`
-- --
@ -1002,7 +1041,7 @@ ALTER TABLE `machine_cluster`
-- AUTO_INCREMENT for table `machine_cluster_merge` -- AUTO_INCREMENT for table `machine_cluster_merge`
-- --
ALTER TABLE `machine_cluster_merge` ALTER TABLE `machine_cluster_merge`
MODIFY `id_machine_cluster_merge` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19; MODIFY `id_machine_cluster_merge` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=25;
-- --
-- AUTO_INCREMENT for table `module` -- AUTO_INCREMENT for table `module`
-- --
@ -1017,7 +1056,7 @@ ALTER TABLE `module_merge`
-- AUTO_INCREMENT for table `motheure` -- AUTO_INCREMENT for table `motheure`
-- --
ALTER TABLE `motheure` ALTER TABLE `motheure`
MODIFY `id_motheure` int(11) NOT NULL AUTO_INCREMENT; MODIFY `id_motheure` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;
-- --
-- AUTO_INCREMENT for table `state` -- AUTO_INCREMENT for table `state`
-- --
@ -1037,7 +1076,7 @@ ALTER TABLE `user_cluster`
-- AUTO_INCREMENT for table `user_cluster_merge` -- AUTO_INCREMENT for table `user_cluster_merge`
-- --
ALTER TABLE `user_cluster_merge` ALTER TABLE `user_cluster_merge`
MODIFY `id_user_cluster_merge` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=100; MODIFY `id_user_cluster_merge` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=101;
-- --
-- AUTO_INCREMENT for table `warehouse` -- AUTO_INCREMENT for table `warehouse`
-- --
@ -1122,12 +1161,6 @@ ALTER TABLE `module_merge`
ADD CONSTRAINT `fk_module_merge_id_machine_cluster` FOREIGN KEY (`id_machine_cluster`) REFERENCES `machine_cluster` (`id_machine_cluster`) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT `fk_module_merge_id_machine_cluster` FOREIGN KEY (`id_machine_cluster`) REFERENCES `machine_cluster` (`id_machine_cluster`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `fk_module_merge_id_warehouse` FOREIGN KEY (`id_warehouse`) REFERENCES `warehouse` (`id_warehouse`) ON DELETE CASCADE ON UPDATE CASCADE; ADD CONSTRAINT `fk_module_merge_id_warehouse` FOREIGN KEY (`id_warehouse`) REFERENCES `warehouse` (`id_warehouse`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Constraints for table `motheure`
--
ALTER TABLE `motheure`
ADD CONSTRAINT `fk_motheure_id_machine` FOREIGN KEY (`id_machine`) REFERENCES `machine` (`id_machine`) ON DELETE CASCADE ON UPDATE CASCADE;
-- --
-- Constraints for table `state` -- Constraints for table `state`
-- --

View File

@ -17,6 +17,7 @@ $form-grey-color: #8d8d8d;
/* GESTION DES LONGUEURS */ /* GESTION DES LONGUEURS */
$menu-side-width: 4em; $menu-side-width: 4em;
$sub-menu-side-width: 7.5em;
// POUR RESOURCE_DISPATCHER // POUR RESOURCE_DISPATCHER

View File

@ -13,10 +13,11 @@
// @active + .list // @active + .list
& > section.active{ & > section.active{
display: flex; display: flex;
flex-direction: row; flex-flow: row wrap;
align-items: flex-start;
justify-content: flex-start; justify-content: flex-start;
flex-wrap: wrap; align-items: stretch;
align-content: flex-start;
&.contain-check-table{ &.contain-check-table{
flex-direction: column; flex-direction: column;
@ -25,11 +26,13 @@
} }
.inline-box{ .inline-box{
flex: 0 0 1; flex: 1 1 20%;
height: auto;
min-height: 10em;
} }
.inline-row{ .inline-row{
flex: 3em 0 0; flex: 0 0 2.3em;
} }
// Barre de recherche // Barre de recherche
@ -62,7 +65,7 @@
.error, .in-dev{ .error, .in-dev{
display: inline-block; display: inline-block;
position: relative; position: relative;
width: calc( 100% - 2*1em - 2*1em ); // width: calc( 100% - 2*1em - 2*1em );
height: 1em; height: 1em;
margin: 1em; margin: 1em;
padding: 1em; padding: 1em;
@ -96,6 +99,7 @@
position: relative; position: relative;
// width: calc( 50% - 2*1em - 2*1em ); // width: calc( 50% - 2*1em - 2*1em );
flex: calc( 50% - 2*1em - 2*1em ); flex: calc( 50% - 2*1em - 2*1em );
height: auto;
margin: 1em; margin: 1em;
padding: 1em; padding: 1em;
@ -458,79 +462,208 @@
}
/* [4] Tableau à cocher
=========================================================*/
article.check-table{
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
border-radius: 3px;
border: 1px solid #ddd;
& > div{ /* [4] Tableau à cocher
=========================================================*/
article.check-table{
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: wrap;
justify-content: space-between; justify-content: space-between;
flex: 100%; border-radius: 3px;
padding: .8em 0; border: 1px solid #ddd;
color: #333;
background: #f8f8f8;
border-bottom: 1px solid #eee;
transition: background .2s ease-in-out;
&:nth-child(2n){
background: #fdfdfd;
}
overflow: hidden;
& > span{ & > div{
flex: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: nowrap;
justify-content: center; justify-content: space-between;
flex: 100%;
padding: .8em 0;
/* (1) Gestion du checkbox hack */ color: #333;
input[type='checkbox']{ display: none; }
input[type='checkbox'] + label[for]{ background: #f8f8f8;
display: inline-block; border-bottom: 1px solid #eee;
position: absolute;
width: 1.2em;
height: 1.2em;
// border-radius: 50% / 50%; transition: background .2s ease-in-out;
background: url('/src/static/container/checkbox@999999.svg') center center no-repeat; &:nth-child(2n){
background-size: 100% auto;; background: #fdfdfd;
transition: box-shadow .2s ease-in-out;
cursor: pointer;
} }
input[type='checkbox']:checked + label[for]{ overflow: hidden;
background-image: url('/src/static/container/checkbox@checked@007dd8.svg');
& > span{
flex: 100%;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
/* (1) Gestion du checkbox hack */
input[type='checkbox']{ display: none; }
input[type='checkbox'] + label[for]{
display: inline-block;
position: absolute;
width: 1.2em;
height: 1.2em;
// border-radius: 50% / 50%;
background: url('/src/static/container/checkbox@999999.svg') center center no-repeat;
background-size: 100% auto;;
transition: box-shadow .2s ease-in-out;
cursor: pointer;
}
input[type='checkbox']:checked + label[for]{
background-image: url('/src/static/container/checkbox@checked@007dd8.svg');
}
} }
} }
} }
}
/* [5] Timeline SVG
=========================================================*/
article.timeline.container{
display: block;
position: absolute;
width: calc( 100vw - #{$menu-side-width} - #{$sub-menu-side-width} - 11em );
flex: 1em;
overflow: hidden;
// overflow-x: auto;
svg.timeline{
/* (1) svg circles -> set right transform-origin */
& circle.timeline{
-webkit-transform-origin: 50% 50% 0;
transform-origin: 50% 50% 0;
transition: transform .2s ease-in-out;
/* (2) Set cursor to pointer */
&.around{
cursor: pointer;
/* (3) Dispatch event to next nodes */
&:hover + .center{ // center node
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
&:hover + .center + image + .below{ // below node
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
/* (4) Remove center circle event */
&.center{
-webkit-pointer-events: none;
pointer-events: none;
}
/* (5) Set colors according to action type */
&.around, &.center, &.below{
&.start{ fill: #2cde8b; }
&.stop{ fill: #3a3a3a; }
&.lock{ fill: #e04343; }
&.unlock{ fill: #af1c1c; }
&.signal{ fill: #3258d8; }
&.unsignal{ fill: #2041ab; }
}
/* (6) Make around circles a bit transparent */
&.around{ opacity: .6; }
}
/* (7) Avoid icons inside center circles to block :hover */
image{
-webkit-pointer-events: none;
pointer-events: none;
}
/* (8) Default 'text' font*/
text{
fill: #444;
font-size: 14px;
font-family: 'Open Sans';
&.bold{
font-size: 16px;
font-weight: bold;
}
&.start{ fill: #2cde8b; }
&.stop{ fill: #3a3a3a; }
&.lock{ fill: #e04343; }
&.unlock{ fill: #af1c1c; }
&.signal{ fill: #3258d8; }
&.unsignal{ fill: #2041ab; }
}
}
/* (9) Timeline infobox */
div.timeline.infobox{
display: none;
position: absolute;
top: 80px;
left: 0;
width: auto;
height: auto;
padding: .5em 1em;
border: 1px solid #b1b6c0;
border-radius: 3px;
background: #d8deea;
color: #444;
&.active{
display: block;
}
}
}
}

View File

@ -1,7 +0,0 @@
/* COULEUR DU THEME */
/* COULEUR DU SOUS-MENU */
/* COULEUR DES ERREURS */
/* FORMULAIRES */
/* GESTION DES LONGUEURS */
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiY29uc3RhbnRzLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vY29uc3RhbnRzLnNjc3MiCgldLAoJInNvdXJjZXNDb250ZW50IjogWwoJCSIvKiBDT1VMRVVSIERVIFRIRU1FICovXG4kdGhlbWUtY29sb3I6ICNmNDRmMDY7XG5cbi8qIENPVUxFVVIgRFUgU09VUy1NRU5VICovXG4kc3ViLW1lbnUtY29sb3I6ICM1YjVlNjM7XG5cbi8qIENPVUxFVVIgREVTIEVSUkVVUlMgKi9cbiRlcnJvci1jb2xvcjogI2NjNTg1NztcblxuLyogRk9STVVMQUlSRVMgKi9cbiRmb3JtLXZhbGlkLWNvbG9yOiAgICMyN2E1NjA7XG4kZm9ybS1uZXV0cmFsLWNvbG9yOiAjMjE5M2U2O1xuJGZvcm0tc2VhcmNoLWNvbG9yOiAgIzU2MzBlZDtcbiRmb3JtLWludmFsaWQtY29sb3I6ICNkNTI5MTg7XG5cblxuLyogR0VTVElPTiBERVMgTE9OR1VFVVJTICovXG4kbWVudS1zaWRlLXdpZHRoOiA0ZW07XG5cblxuLy8gUE9VUiBSRVNPVVJDRV9ESVNQQVRDSEVSXG4kcmQtZm9ybS12YWxpZC1jb2xvcjogICAnMjdhNTYwJztcbiRyZC1mb3JtLW5ldXRyYWwtY29sb3I6ICcyMTkzZTYnO1xuJHJkLWZvcm0tc2VhcmNoLWNvbG9yOiAgJzU2MzBlZCc7XG4kcmQtZm9ybS1pbnZhbGlkLWNvbG9yOiAnZDUyOTE4JztcbiIKCV0sCgkibWFwcGluZ3MiOiAiQUFBQSxzQkFBc0I7QUFHdEIsMEJBQTBCO0FBRzFCLHlCQUF5QjtBQUd6QixpQkFBaUI7QUFPakIsMkJBQTJCIiwKCSJuYW1lcyI6IFtdCn0= */

View File

@ -1,619 +0,0 @@
@charset "UTF-8";
/* COULEUR DU THEME */
/* COULEUR DU SOUS-MENU */
/* COULEUR DES ERREURS */
/* FORMULAIRES */
/* GESTION DES LONGUEURS */
#WRAPPER > #CONTAINER {
/* [1] Section (contenu)
=========================================================*/
/* [2] INLINE-BOX pour afficher les listes de donnees
=========================================================*/
/* [2-2] INLINE-ROW pour afficher des lignes
=========================================================*/
/* [3] Formulaires
=========================================================*/
/* (1) Champs de texte */
/* (2) Boutons */
}
#WRAPPER > #CONTAINER > section {
display: none;
flex-grow: 1;
}
#WRAPPER > #CONTAINER > section.active {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: flex-start;
flex-wrap: wrap;
}
#WRAPPER > #CONTAINER > section.active .inline-box {
flex: 0 0 1;
}
#WRAPPER > #CONTAINER > section.active .inline-row {
flex: 3em 0 1;
}
#WRAPPER > #CONTAINER > section.active .searchbar {
display: inline-block;
position: relative;
flex: calc( 100% - 2*1em - 2*1em );
margin: 1em;
padding: .5em 1em;
padding-left: 2em;
border-radius: 3px;
border: 1px solid #b1b1b1;
background: #fff url("/src/static/sub-menu-side/search@b1b1b1.svg") 0.5em center no-repeat;
background-size: 1em;
transition: border .4s ease-in-out;
}
#WRAPPER > #CONTAINER > section.active .searchbar:hover, #WRAPPER > #CONTAINER > section.active .searchbar:focus {
border-color: #5630ed;
}
#WRAPPER > #CONTAINER > section.active .error {
display: inline-block;
position: relative;
width: calc( 100% - 2*1em - 2*1em );
height: 1em;
margin: 1em;
padding: 1em;
border-radius: 3px;
border: 1px solid #d52918;
background: #d52918;
color: #fff;
text-shadow: 1px 1px #a72013;
}
#WRAPPER > #CONTAINER > section > .inline-box, #WRAPPER > #CONTAINER > section > .inline-row {
display: inline-block;
position: relative;
flex: calc( 50% - 2*1em - 2*1em );
margin: 1em;
padding: 1em;
border-radius: 3px;
box-shadow: 0 0 1px #b7b7b7;
background-color: #fff;
/* (0) Etat des machines */
/* (1) Titre de l'element */
/* (2) Code RFID */
/* (3) Adresse mail */
/* (4) Groupes */
/* (5) Lien vers la modification */
/* (6) Lien vers la suppression */
}
#WRAPPER > #CONTAINER > section > .inline-box.hidden, #WRAPPER > #CONTAINER > section > .inline-row.hidden {
display: none;
}
#WRAPPER > #CONTAINER > section > .inline-box a, #WRAPPER > #CONTAINER > section > .inline-row a {
text-decoration: none;
color: inherit;
}
#WRAPPER > #CONTAINER > section > .inline-box.selected, #WRAPPER > #CONTAINER > section > .inline-row.selected {
border: 1px solid #7362ff;
transition: box-shadow .2s ease-in-out;
}
#WRAPPER > #CONTAINER > section > .inline-box.selected:hover, #WRAPPER > #CONTAINER > section > .inline-row.selected:hover {
box-shadow: 2px 2px 7px #aaa;
}
#WRAPPER > #CONTAINER > section > .inline-box .state, #WRAPPER > #CONTAINER > section > .inline-row .state {
display: inline-block;
width: .7em;
height: .7em;
margin-right: .3em;
border-radius: 50% / 50%;
background-color: #ddd;
}
#WRAPPER > #CONTAINER > section > .inline-box .state[data-state='stopped'], #WRAPPER > #CONTAINER > section > .inline-row .state[data-state='stopped'] {
background-color: #ddd;
}
#WRAPPER > #CONTAINER > section > .inline-box .state[data-state='started'], #WRAPPER > #CONTAINER > section > .inline-row .state[data-state='started'] {
background-color: #22E07B;
}
#WRAPPER > #CONTAINER > section > .inline-box .state[data-state='signaled'], #WRAPPER > #CONTAINER > section > .inline-row .state[data-state='signaled'] {
background-color: #3897D6;
}
#WRAPPER > #CONTAINER > section > .inline-box .state[data-state='locked'], #WRAPPER > #CONTAINER > section > .inline-row .state[data-state='locked'] {
background-color: #EA460A;
}
#WRAPPER > #CONTAINER > section > .inline-box .state[data-state='detached'], #WRAPPER > #CONTAINER > section > .inline-row .state[data-state='detached'] {
background-color: transparent;
}
#WRAPPER > #CONTAINER > section > .inline-box .title, #WRAPPER > #CONTAINER > section > .inline-row .title {
display: inline-block;
font-size: 1.15em;
font-weight: bold;
color: #ea4c06;
white-space: nowrap;
}
#WRAPPER > #CONTAINER > section > .inline-box .title > span, #WRAPPER > #CONTAINER > section > .inline-row .title > span {
font-size: .8em;
color: #333;
}
#WRAPPER > #CONTAINER > section > .inline-box .code,
#WRAPPER > #CONTAINER > section > .inline-box .mail, #WRAPPER > #CONTAINER > section > .inline-row .code,
#WRAPPER > #CONTAINER > section > .inline-row .mail {
display: block;
margin: 1em;
color: #333;
white-space: nowrap;
}
#WRAPPER > #CONTAINER > section > .inline-box .code svg,
#WRAPPER > #CONTAINER > section > .inline-box .mail svg, #WRAPPER > #CONTAINER > section > .inline-row .code svg,
#WRAPPER > #CONTAINER > section > .inline-row .mail svg {
display: inline-block;
position: relative;
margin-left: .5em;
margin-right: .5em;
margin-bottom: -.6em;
width: 1.5em;
height: 2em;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .code svg path#stylisable,
#WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stylisable,
#WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stylisable {
fill: #333 !important;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .code svg path#stroke-stylisable,
#WRAPPER > #CONTAINER > section > .inline-box .mail svg path#stroke-stylisable, #WRAPPER > #CONTAINER > section > .inline-row .code svg path#stroke-stylisable,
#WRAPPER > #CONTAINER > section > .inline-row .mail svg path#stroke-stylisable {
stroke: #333 !important;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups, #WRAPPER > #CONTAINER > section > .inline-row .groups {
display: block;
margin: 1em;
color: #333;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups svg, #WRAPPER > #CONTAINER > section > .inline-row .groups svg {
display: inline-block;
position: relative;
margin-left: .5em;
margin-right: .5em;
margin-bottom: -.6em;
width: 1.5em;
height: 2em;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups svg path, #WRAPPER > #CONTAINER > section > .inline-row .groups svg path {
fill: #333 !important;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore), #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore), #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span {
display: inline-block;
position: relative;
padding: .1em .5em;
margin-right: calc( .4em + 2em );
margin-bottom: .5em;
border-radius: 3px 0 0 3px;
border: 1px solid #bdbdbd;
box-shadow: inset 0 0 2px #fafafa;
background-color: #f9f9f9;
color: #333;
cursor: default;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-member, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-member {
border-radius: 3px;
cursor: pointer;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-permission > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-group > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-member > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-permission > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-group > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-member > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-permission > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-group > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-member > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-permission > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-group > div.dropdown, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-member > div.dropdown {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
flex: 100%;
justify-content: space-between;
position: absolute;
top: calc( 100% + 5px );
left: 0;
width: 12em;
height: 500%;
border-radius: 3px;
overflow: hidden;
overflow-y: auto;
background: #fff;
box-shadow: 0 2px 4px 0 rgba(34, 36, 38, 0.12), 0 2px 10px 0 rgba(34, 36, 38, 0.15);
z-index: 100;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-permission > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-group > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-member > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-permission > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-group > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-member > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-permission > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-group > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-member > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-permission > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-group > div.dropdown > span, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-member > div.dropdown > span {
padding: .5em;
padding-left: 1em;
flex: 2em 1 1;
cursor: pointer;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-permission > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-group > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore).add-member > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-permission > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-group > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span.add-member > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-permission > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-group > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore).add-member > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-permission > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-group > div.dropdown > span:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span.add-member > div.dropdown > span:hover {
background-color: #F8F8F8;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-member, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-member, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-group, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-member {
display: block;
position: absolute;
top: -1px;
left: 100%;
width: 1em;
height: calc( 100% - .1em - 2px );
padding: .12em .5em;
border-radius: 0 3px 3px 0;
border: 1px solid #bdbdbd;
box-shadow: inset 0 0 2px #fafafa;
background: url("/src/static/sub-menu-side/remove.svg") center center no-repeat;
background-size: auto 70%;
background-color: #f9f9f9;
color: inherit;
cursor: pointer;
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-permission:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.rem-member:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-permission:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.rem-member:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.rem-member:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-group:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.rem-member:hover {
background-image: url("/src/static/sub-menu-side/remove@d52918.svg");
}
#WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span:not(.ignore) > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-box .groups > span.ignore > span > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span:not(.ignore) > span.icon-permission:hover, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.icon-permission, #WRAPPER > #CONTAINER > section > .inline-row .groups > span.ignore > span > span.icon-permission:hover {
border-color: #ddd;
background-color: #eee;
cursor: default;
background-image: url("/src/static/sub-menu-side/permission.svg");
}
#WRAPPER > #CONTAINER > section > .inline-box .link_edit,
#WRAPPER > #CONTAINER > section > .inline-box .link_remove, #WRAPPER > #CONTAINER > section > .inline-row .link_edit,
#WRAPPER > #CONTAINER > section > .inline-row .link_remove {
display: inline-block;
float: right;
position: relative;
width: 1em;
height: 1em;
margin-left: 1em;
cursor: pointer;
}
#WRAPPER > #CONTAINER > section > .inline-box .link_edit > svg,
#WRAPPER > #CONTAINER > section > .inline-box .link_remove > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit > svg,
#WRAPPER > #CONTAINER > section > .inline-row .link_remove > svg {
width: 100%;
height: 100%;
fill: #ddd !important;
transition: fill .4s ease-in-out;
pointer-events: none;
}
#WRAPPER > #CONTAINER > section > .inline-box .link_edit:hover > svg,
#WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_edit:hover > svg,
#WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg {
fill: #2193e6 !important;
}
#WRAPPER > #CONTAINER > section > .inline-box .link_remove:hover > svg, #WRAPPER > #CONTAINER > section > .inline-row .link_remove:hover > svg {
fill: #d52918 !important;
}
#WRAPPER > #CONTAINER > section.fstart {
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
}
#WRAPPER > #CONTAINER > section.fstart .searchbar {
flex: auto 1 1;
}
#WRAPPER > #CONTAINER > section.active > .inline-row {
flex: auto 1 1;
}
#WRAPPER > #CONTAINER > section > .inline-row {
width: calc( 100% - 4em - 2*1em );
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
overflow: hidden;
}
#WRAPPER > #CONTAINER > section > .inline-row > span {
display: flex;
flex-direction: column;
justify-content: space-around;
flex: 100% 1 1;
border-left: 1px solid #ddd;
text-align: center;
}
#WRAPPER > #CONTAINER > section > .inline-row > span:first-child {
border-left: 0;
}
#WRAPPER > #CONTAINER > section > .inline-row button {
flex: auto;
width: 5em;
}
#WRAPPER > #CONTAINER > section > form, #WRAPPER > #CONTAINER .form {
display: inline-block;
position: relative;
left: 50%;
margin: .3em 0;
padding: 1em;
border-radius: 3px;
border-color: #d52918;
box-shadow: 0 0 1px #b7b7b7;
background-color: #fff;
transform: translateX(-50%);
}
#WRAPPER > #CONTAINER > section > form.valid, #WRAPPER > #CONTAINER .form.valid {
border-color: #27a560;
}
#WRAPPER > #CONTAINER > section > form.neutral, #WRAPPER > #CONTAINER .form.neutral {
border-color: #2193e6;
}
#WRAPPER > #CONTAINER > section > form.search, #WRAPPER > #CONTAINER .form.search {
border-color: #2193e6;
}
#WRAPPER > #CONTAINER > section > form .edit_search_view,
#WRAPPER > #CONTAINER > section > form .remove_search_view, #WRAPPER > #CONTAINER .form .edit_search_view,
#WRAPPER > #CONTAINER .form .remove_search_view {
display: inline-block;
width: 100%;
text-align: center;
color: #aaaaaa;
}
#WRAPPER > #CONTAINER > section > form .edit_search_view span,
#WRAPPER > #CONTAINER > section > form .remove_search_view span, #WRAPPER > #CONTAINER .form .edit_search_view span,
#WRAPPER > #CONTAINER .form .remove_search_view span {
color: #888888;
}
#WRAPPER > #CONTAINER > section > form span.error-msg, #WRAPPER > #CONTAINER .form span.error-msg {
display: inline-block;
color: #F03C3C;
font-size: 0.7em;
}
#WRAPPER > #CONTAINER input[type=text],
#WRAPPER > #CONTAINER input[type=mail],
#WRAPPER > #CONTAINER input[type=password],
#WRAPPER > #CONTAINER select, #WRAPPER > #CONTAINER.invalid > input[type=text], #WRAPPER > #CONTAINER.invalid > input[type=mail], #WRAPPER > #CONTAINER.invalid > input[type=password], #WRAPPER > #CONTAINER.invalid > select,
#WRAPPER > #CONTAINER input.invalid[type=text],
#WRAPPER > #CONTAINER input.invalid[type=mail],
#WRAPPER > #CONTAINER input.invalid[type=password],
#WRAPPER > #CONTAINER select.invalid {
display: inline-block;
margin: 1em 0;
padding: .7em 1em;
border-radius: 3px;
border: 1px solid #d7dde8;
color: #2f3033;
transition: border .4s ease-in-out;
}
#WRAPPER > #CONTAINER input[type=text]:focus, #WRAPPER > #CONTAINER input[type=text]:hover,
#WRAPPER > #CONTAINER input[type=mail]:focus,
#WRAPPER > #CONTAINER input[type=mail]:hover,
#WRAPPER > #CONTAINER input[type=password]:focus,
#WRAPPER > #CONTAINER input[type=password]:hover,
#WRAPPER > #CONTAINER select:focus,
#WRAPPER > #CONTAINER select:hover, #WRAPPER > #CONTAINER.invalid > input[type=text]:focus, #WRAPPER > #CONTAINER.invalid > input[type=text]:hover, #WRAPPER > #CONTAINER.invalid > input[type=mail]:focus, #WRAPPER > #CONTAINER.invalid > input[type=mail]:hover, #WRAPPER > #CONTAINER.invalid > input[type=password]:focus, #WRAPPER > #CONTAINER.invalid > input[type=password]:hover, #WRAPPER > #CONTAINER.invalid > select:focus, #WRAPPER > #CONTAINER.invalid > select:hover,
#WRAPPER > #CONTAINER input.invalid[type=text]:focus,
#WRAPPER > #CONTAINER input.invalid[type=text]:hover,
#WRAPPER > #CONTAINER input.invalid[type=mail]:focus,
#WRAPPER > #CONTAINER input.invalid[type=mail]:hover,
#WRAPPER > #CONTAINER input.invalid[type=password]:focus,
#WRAPPER > #CONTAINER input.invalid[type=password]:hover,
#WRAPPER > #CONTAINER select.invalid:focus,
#WRAPPER > #CONTAINER select.invalid:hover {
border-color: #d52918;
}
#WRAPPER > #CONTAINER select {
width: 100%;
display: block;
background: #fff;
}
#WRAPPER > #CONTAINER select option {
padding: .5em;
}
#WRAPPER > #CONTAINER .valid > input[type=text]:focus, #WRAPPER > #CONTAINER .valid > input[type=text]:hover,
#WRAPPER > #CONTAINER .valid > input[type=mail]:focus,
#WRAPPER > #CONTAINER .valid > input[type=mail]:hover,
#WRAPPER > #CONTAINER .valid > input[type=password]:focus,
#WRAPPER > #CONTAINER .valid > input[type=password]:hover,
#WRAPPER > #CONTAINER .valid > select:focus,
#WRAPPER > #CONTAINER .valid > select:hover,
#WRAPPER > #CONTAINER input.valid[type=text]:focus,
#WRAPPER > #CONTAINER input.valid[type=text]:hover,
#WRAPPER > #CONTAINER input.valid[type=mail]:focus,
#WRAPPER > #CONTAINER input.valid[type=mail]:hover,
#WRAPPER > #CONTAINER input.valid[type=password]:focus,
#WRAPPER > #CONTAINER input.valid[type=password]:hover,
#WRAPPER > #CONTAINER select.valid:focus,
#WRAPPER > #CONTAINER select.valid:hover {
border-color: #27a560;
}
#WRAPPER > #CONTAINER .neutral > input[type=text]:focus, #WRAPPER > #CONTAINER .neutral > input[type=text]:hover,
#WRAPPER > #CONTAINER .neutral > input[type=mail]:focus,
#WRAPPER > #CONTAINER .neutral > input[type=mail]:hover,
#WRAPPER > #CONTAINER .neutral > input[type=password]:focus,
#WRAPPER > #CONTAINER .neutral > input[type=password]:hover,
#WRAPPER > #CONTAINER .neutral > select:focus,
#WRAPPER > #CONTAINER .neutral > select:hover,
#WRAPPER > #CONTAINER input.neutral[type=text]:focus,
#WRAPPER > #CONTAINER input.neutral[type=text]:hover,
#WRAPPER > #CONTAINER input.neutral[type=mail]:focus,
#WRAPPER > #CONTAINER input.neutral[type=mail]:hover,
#WRAPPER > #CONTAINER input.neutral[type=password]:focus,
#WRAPPER > #CONTAINER input.neutral[type=password]:hover,
#WRAPPER > #CONTAINER select.neutral:focus,
#WRAPPER > #CONTAINER select.neutral:hover {
border-color: #2193e6;
}
#WRAPPER > #CONTAINER .search > input[type=text]:focus, #WRAPPER > #CONTAINER .search > input[type=text]:hover,
#WRAPPER > #CONTAINER .search > input[type=mail]:focus,
#WRAPPER > #CONTAINER .search > input[type=mail]:hover,
#WRAPPER > #CONTAINER .search > input[type=password]:focus,
#WRAPPER > #CONTAINER .search > input[type=password]:hover,
#WRAPPER > #CONTAINER .search > select:focus,
#WRAPPER > #CONTAINER .search > select:hover,
#WRAPPER > #CONTAINER input.search[type=text]:focus,
#WRAPPER > #CONTAINER input.search[type=text]:hover,
#WRAPPER > #CONTAINER input.search[type=mail]:focus,
#WRAPPER > #CONTAINER input.search[type=mail]:hover,
#WRAPPER > #CONTAINER input.search[type=password]:focus,
#WRAPPER > #CONTAINER input.search[type=password]:hover {
border-color: #5630ed;
}
#WRAPPER > #CONTAINER button,
#WRAPPER > #CONTAINER button.invalid,
#WRAPPER > #CONTAINER .invalid > button {
display: inline-block;
position: relative;
left: 50%;
padding: .7em 1em;
border-radius: 3px;
border: 1px solid #d52918;
background: #d52918 center center no-repeat;
color: #fff;
transition: background .4s ease-in-out;
transform: translateX(-50%);
}
#WRAPPER > #CONTAINER button:hover, #WRAPPER > #CONTAINER button:focus, #WRAPPER > #CONTAINER button:disabled,
#WRAPPER > #CONTAINER button.invalid:hover,
#WRAPPER > #CONTAINER button.invalid:focus,
#WRAPPER > #CONTAINER button.invalid:disabled,
#WRAPPER > #CONTAINER .invalid > button:hover,
#WRAPPER > #CONTAINER .invalid > button:focus,
#WRAPPER > #CONTAINER .invalid > button:disabled {
background-color: #fff;
color: #d52918;
}
#WRAPPER > #CONTAINER button.valid,
#WRAPPER > #CONTAINER .valid > button {
border-color: #27a560;
background-color: #27a560;
}
#WRAPPER > #CONTAINER button.valid:hover, #WRAPPER > #CONTAINER button.valid:focus, #WRAPPER > #CONTAINER button.valid:disabled,
#WRAPPER > #CONTAINER .valid > button:hover,
#WRAPPER > #CONTAINER .valid > button:focus,
#WRAPPER > #CONTAINER .valid > button:disabled {
background-color: #fff;
color: #27a560;
}
#WRAPPER > #CONTAINER button.neutral,
#WRAPPER > #CONTAINER .neutral > button {
border-color: #2193e6;
background-color: #2193e6;
}
#WRAPPER > #CONTAINER button.neutral:hover, #WRAPPER > #CONTAINER button.neutral:focus, #WRAPPER > #CONTAINER button.neutral:disabled,
#WRAPPER > #CONTAINER .neutral > button:hover,
#WRAPPER > #CONTAINER .neutral > button:focus,
#WRAPPER > #CONTAINER .neutral > button:disabled {
background-color: #fff;
color: #2193e6;
}
#WRAPPER > #CONTAINER button.search,
#WRAPPER > #CONTAINER .search > button {
border-color: #5630ed;
background-color: #5630ed;
}
#WRAPPER > #CONTAINER button.search:hover, #WRAPPER > #CONTAINER button.search:focus, #WRAPPER > #CONTAINER button.search:disabled,
#WRAPPER > #CONTAINER .search > button:hover,
#WRAPPER > #CONTAINER .search > button:focus,
#WRAPPER > #CONTAINER .search > button:disabled {
background-color: #fff;
color: #5630ed;
}
#WRAPPER > #CONTAINER .invalid > button.active,
#WRAPPER > #CONTAINER button.invalid.active,
#WRAPPER > #CONTAINER button.active {
background-color: #fff;
background-image: url("/src/static/container/active@d52918.svg") !important;
background-size: 1em auto;
color: transparent !important;
}
#WRAPPER > #CONTAINER button.valid.active,
#WRAPPER > #CONTAINER .valid > button.active {
background-image: url("/src/static/container/active@27a560.svg") !important;
}
#WRAPPER > #CONTAINER button.neutral.active,
#WRAPPER > #CONTAINER .neutral > button.active {
background-image: url("/src/static/container/active@2193e6.svg") !important;
}
#WRAPPER > #CONTAINER button.search.active,
#WRAPPER > #CONTAINER .search > button.active {
background-image: url("/src/static/container/active@5630ed.svg") !important;
}
#WRAPPER > #CONTAINER hr.OR[data-label] {
display: block;
position: relative;
width: 100%;
height: 0;
border: 0;
border-bottom: 1px dashed #d52918;
}
#WRAPPER > #CONTAINER hr.OR[data-label]:before {
content: attr(data-label);
display: inline-block;
position: relative;
top: 50%;
left: 50%;
padding: 0 1em;
background-color: #fff;
color: #d52918;
transform: translateX(-50%) translatey(-50%);
}
#WRAPPER > #CONTAINER .valid > hr.OR,
#WRAPPER > #CONTAINER hr.OR.valid {
border-bottom: 1px dashed #27a560;
}
#WRAPPER > #CONTAINER .valid > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.valid:before {
color: #27a560;
}
#WRAPPER > #CONTAINER .neutral > hr.OR,
#WRAPPER > #CONTAINER hr.OR.neutral {
border-bottom: 1px dashed #2193e6;
}
#WRAPPER > #CONTAINER .neutral > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.neutral:before {
color: #2193e6;
}
#WRAPPER > #CONTAINER .search > hr.OR,
#WRAPPER > #CONTAINER hr.OR.search {
border-bottom: 1px dashed #5630ed;
}
#WRAPPER > #CONTAINER .search > hr.OR:before,
#WRAPPER > #CONTAINER hr.OR.search:before {
color: #5630ed;
}
/* [4] Tableau à cocher
=========================================================*/
article.check-table {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
border-radius: 3px;
border: 1px solid #ddd;
}
article.check-table > div {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
flex: 100%;
padding: .8em 0;
color: #333;
background: #f8f8f8;
border-bottom: 1px solid #eee;
transition: background .2s ease-in-out;
overflow: hidden;
}
article.check-table > div:nth-child(2n) {
background: #fdfdfd;
}
article.check-table > div > span {
flex: 100%;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
/* (1) Gestion du checkbox hack */
}
article.check-table > div > span input[type='checkbox'] {
display: none;
}
article.check-table > div > span input[type='checkbox'] + label[for] {
display: inline-block;
position: absolute;
width: 1.2em;
height: 1.2em;
background: url("/src/static/container/checkbox@999999.svg") center center no-repeat;
background-size: 100% auto;
transition: box-shadow .2s ease-in-out;
cursor: pointer;
}
article.check-table > div > span input[type='checkbox']:checked + label[for] {
background-image: url("/src/static/container/checkbox@checked@007dd8.svg");
}
/*# sourceMappingURL=container.css.map */

View File

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

View File

@ -1,31 +0,0 @@
/* COULEUR DU THEME */
/* COULEUR DU SOUS-MENU */
/* COULEUR DES ERREURS */
/* FORMULAIRES */
/* GESTION DES LONGUEURS */
#WRAPPER > #HEADER {
/* Animation de chargement qudnd chargement ajax */
}
#WRAPPER > #HEADER > .icon {
display: block;
position: absolute;
top: 0;
left: 0;
width: 4em;
height: 4em;
background-color: #c23f05;
background-image: url("/src/static/iconv2.svg");
background-position: center center;
background-repeat: no-repeat;
background-size: 50% 50%;
cursor: pointer;
transition: all .3s;
}
#WRAPPER > #HEADER.loading > .icon {
background-image: url("/src/static/loaderv2.svg");
background-size: 70% 70%;
}
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiaGVhZGVyLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vaGVhZGVyLnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cblxuI1dSQVBQRVIgPiAjSEVBREVSe1xuXHQvLyBJY29uZSBkdSBzaXRlXG5cdCYgPiAuaWNvbntcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6ICRtZW51LXNpZGUtd2lkdGg7XG5cdFx0XHRoZWlnaHQ6ICRtZW51LXNpZGUtd2lkdGg7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJHRoZW1lLWNvbG9yLCAxMCk7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCcvc3JjL3N0YXRpYy9pY29udjIuc3ZnJyk7XG5cdFx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRcdGJhY2tncm91bmQtc2l6ZTogNTAlIDUwJTtcblxuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdHRyYW5zaXRpb246IGFsbCAuM3M7XG5cblx0fVxuXG5cdC8qIEFuaW1hdGlvbiBkZSBjaGFyZ2VtZW50IHF1ZG5kIGNoYXJnZW1lbnQgYWpheCAqL1xuXHQmLmxvYWRpbmcgPiAuaWNvbntcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9zcmMvc3RhdGljL2xvYWRlcnYyLnN2ZycpO1xuXHRcdGJhY2tncm91bmQtc2l6ZTogNzAlIDcwJTtcblx0fVxuXG59XG4iLAoJCSIvKiBDT1VMRVVSIERVIFRIRU1FICovXG4kdGhlbWUtY29sb3I6ICNmNDRmMDY7XG5cbi8qIENPVUxFVVIgRFUgU09VUy1NRU5VICovXG4kc3ViLW1lbnUtY29sb3I6ICM1YjVlNjM7XG5cbi8qIENPVUxFVVIgREVTIEVSUkVVUlMgKi9cbiRlcnJvci1jb2xvcjogI2NjNTg1NztcblxuLyogRk9STVVMQUlSRVMgKi9cbiRmb3JtLXZhbGlkLWNvbG9yOiAgICMyN2E1NjA7XG4kZm9ybS1uZXV0cmFsLWNvbG9yOiAjMjE5M2U2O1xuJGZvcm0tc2VhcmNoLWNvbG9yOiAgIzU2MzBlZDtcbiRmb3JtLWludmFsaWQtY29sb3I6ICNkNTI5MTg7XG5cblxuLyogR0VTVElPTiBERVMgTE9OR1VFVVJTICovXG4kbWVudS1zaWRlLXdpZHRoOiA0ZW07XG5cblxuLy8gUE9VUiBSRVNPVVJDRV9ESVNQQVRDSEVSXG4kcmQtZm9ybS12YWxpZC1jb2xvcjogICAnMjdhNTYwJztcbiRyZC1mb3JtLW5ldXRyYWwtY29sb3I6ICcyMTkzZTYnO1xuJHJkLWZvcm0tc2VhcmNoLWNvbG9yOiAgJzU2MzBlZCc7XG4kcmQtZm9ybS1pbnZhbGlkLWNvbG9yOiAnZDUyOTE4JztcbiIKCV0sCgkibWFwcGluZ3MiOiAiQUNBQSxzQkFBc0I7QUFHdEIsMEJBQTBCO0FBRzFCLHlCQUF5QjtBQUd6QixpQkFBaUI7QUFPakIsMkJBQTJCO0FEYjNCLEFBQVcsUUFBSCxHQUFHLE9BQU8sQ0FBQTtFQXNCakIsbURBQW1EO0NBTW5EOztBQTVCRCxBQUVLLFFBRkcsR0FBRyxPQUFPLEdBRWIsS0FBSyxDQUFBO0VBQ1IsT0FBTyxFQUFFLEtBQU07RUFDZixRQUFRLEVBQUUsUUFBUztFQUNsQixHQUFHLEVBQUUsQ0FBRTtFQUNQLElBQUksRUFBRSxDQUFFO0VBQ1IsS0FBSyxFQ09VLEdBQUc7RURObEIsTUFBTSxFQ01TLEdBQUc7RURKbkIsZ0JBQWdCLEVBQUUsT0FBTTtFQUN4QixnQkFBZ0IsRUFBRSw2QkFBRztFQUNyQixtQkFBbUIsRUFBRSxhQUFjO0VBQ25DLGlCQUFpQixFQUFFLFNBQVU7RUFDN0IsZUFBZSxFQUFFLE9BQVE7RUFFekIsTUFBTSxFQUFFLE9BQVE7RUFFaEIsVUFBVSxFQUFFLE9BQVE7Q0FFcEI7O0FBcEJGLEFBdUJhLFFBdkJMLEdBQUcsT0FBTyxBQXVCaEIsUUFBUSxHQUFHLEtBQUssQ0FBQTtFQUNoQixnQkFBZ0IsRUFBRSwrQkFBRztFQUNyQixlQUFlLEVBQUUsT0FBUTtDQUN6QiIsCgkibmFtZXMiOiBbXQp9 */

View File

@ -1,62 +0,0 @@
/* COULEUR DU THEME */
/* COULEUR DU SOUS-MENU */
/* COULEUR DES ERREURS */
/* FORMULAIRES */
/* GESTION DES LONGUEURS */
#WRAPPER {
display: block;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #edf0f5;
font-family: 'Open Sans', 'Ubuntu';
/* [1] Header de la page
==========================================*/
/* [2] Side-Menu de la page
==========================================*/
/* [3] Container de la page
==========================================*/
}
#WRAPPER > #HEADER {
display: block;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: calc( 4em - 1px);
border-bottom: 1px solid #c23f05;
background-color: #f44f06;
z-index: 10;
}
#WRAPPER > #MENU-SIDE {
display: block;
position: absolute;
top: 4em;
left: 0;
width: 4em;
height: 100%;
box-shadow: 2px 1px 3px #ddd;
background-color: #fff;
transition: all .3s;
z-index: 9;
}
#WRAPPER > #CONTAINER {
display: flex;
position: absolute;
top: 4em;
left: 4em;
width: calc( 100% - 4em - 2*1em);
height: calc( 100% - 4em - 2*1em);
padding: 1em;
flex-direction: row;
justify-content: space-between;
overflow-x: none;
overflow-y: auto;
}
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAibGF5b3V0LmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vbGF5b3V0LnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cbiNXUkFQUEVSe1xuXHRkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IGZpeGVkO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTAwJTtcblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWRmMGY1O1xuXG5cdGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ1VidW50dSc7XG5cblxuXHQvKiBbMV0gSGVhZGVyIGRlIGxhIHBhZ2Vcblx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblx0JiA+ICNIRUFERVJ7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKCAjeyRtZW51LXNpZGUtd2lkdGh9IC0gMXB4ICk7XG5cblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgZGFya2VuKCR0aGVtZS1jb2xvciwgMTApO1xuXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHRoZW1lLWNvbG9yO1xuXG5cdFx0ei1pbmRleDogMTA7XG5cblx0fVxuXG5cblx0LyogWzJdIFNpZGUtTWVudSBkZSBsYSBwYWdlXG5cdD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cdC8vIEdlc3Rpb24gZHUgbWVudVxuXHQmID4gI01FTlUtU0lERXtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6ICRtZW51LXNpZGUtd2lkdGg7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6ICRtZW51LXNpZGUtd2lkdGg7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cblx0XHRib3gtc2hhZG93OiAycHggMXB4IDNweCAjZGRkO1xuXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcblxuXHRcdHRyYW5zaXRpb246IGFsbCAuM3M7XG5cblx0XHR6LWluZGV4OiA5O1xuXHR9XG5cblxuXHQvKiBbM10gQ29udGFpbmVyIGRlIGxhIHBhZ2Vcblx0PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblx0JiA+ICNDT05UQUlORVJ7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6ICRtZW51LXNpZGUtd2lkdGg7XG5cdFx0XHRsZWZ0OiAkbWVudS1zaWRlLXdpZHRoO1xuXHRcdFx0d2lkdGg6IGNhbGMoIDEwMCUgLSAjeyRtZW51LXNpZGUtd2lkdGh9IC0gMioxZW0gKTtcblx0XHRcdGhlaWdodDogY2FsYyggMTAwJSAtICN7JG1lbnUtc2lkZS13aWR0aH0gLSAyKjFlbSApO1xuXHRcdHBhZGRpbmc6IDFlbTtcblxuXHRcdC8vIEZsZXggcHJvcGVydGllc1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG5cdFx0b3ZlcmZsb3cteDogbm9uZTtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHR9XG59XG4iLAoJCSIvKiBDT1VMRVVSIERVIFRIRU1FICovXG4kdGhlbWUtY29sb3I6ICNmNDRmMDY7XG5cbi8qIENPVUxFVVIgRFUgU09VUy1NRU5VICovXG4kc3ViLW1lbnUtY29sb3I6ICM1YjVlNjM7XG5cbi8qIENPVUxFVVIgREVTIEVSUkVVUlMgKi9cbiRlcnJvci1jb2xvcjogI2NjNTg1NztcblxuLyogRk9STVVMQUlSRVMgKi9cbiRmb3JtLXZhbGlkLWNvbG9yOiAgICMyN2E1NjA7XG4kZm9ybS1uZXV0cmFsLWNvbG9yOiAjMjE5M2U2O1xuJGZvcm0tc2VhcmNoLWNvbG9yOiAgIzU2MzBlZDtcbiRmb3JtLWludmFsaWQtY29sb3I6ICNkNTI5MTg7XG5cblxuLyogR0VTVElPTiBERVMgTE9OR1VFVVJTICovXG4kbWVudS1zaWRlLXdpZHRoOiA0ZW07XG5cblxuLy8gUE9VUiBSRVNPVVJDRV9ESVNQQVRDSEVSXG4kcmQtZm9ybS12YWxpZC1jb2xvcjogICAnMjdhNTYwJztcbiRyZC1mb3JtLW5ldXRyYWwtY29sb3I6ICcyMTkzZTYnO1xuJHJkLWZvcm0tc2VhcmNoLWNvbG9yOiAgJzU2MzBlZCc7XG4kcmQtZm9ybS1pbnZhbGlkLWNvbG9yOiAnZDUyOTE4JztcbiIKCV0sCgkibWFwcGluZ3MiOiAiQUNBQSxzQkFBc0I7QUFHdEIsMEJBQTBCO0FBRzFCLHlCQUF5QjtBQUd6QixpQkFBaUI7QUFPakIsMkJBQTJCO0FEZDNCLEFBQUEsUUFBUSxDQUFBO0VBQ1AsT0FBTyxFQUFFLEtBQU07RUFDZixRQUFRLEVBQUUsS0FBTTtFQUNmLEdBQUcsRUFBRSxDQUFFO0VBQ1AsSUFBSSxFQUFFLENBQUU7RUFDUixLQUFLLEVBQUUsSUFBSztFQUNaLE1BQU0sRUFBRSxJQUFLO0VBRWQsZ0JBQWdCLEVBQUUsT0FBUTtFQUUxQixXQUFXLEVBQUUscUJBQXNCO0VBR25DOzZDQUM0QztFQWtCNUM7NkNBQzRDO0VBb0I1Qzs2Q0FDNEM7Q0FpQjVDOztBQXZFRCxBQWVLLFFBZkcsR0FlSCxPQUFPLENBQUE7RUFDVixPQUFPLEVBQUUsS0FBTTtFQUNmLFFBQVEsRUFBRSxRQUFTO0VBQ2xCLEdBQUcsRUFBRSxDQUFFO0VBQ1AsSUFBSSxFQUFFLENBQUU7RUFDUixLQUFLLEVBQUUsSUFBSztFQUNaLE1BQU0sRUFBRSxnQkFBSTtFQUViLGFBQWEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU07RUFFL0IsZ0JBQWdCLEVDMUJKLE9BQU87RUQ0Qm5CLE9BQU8sRUFBRSxFQUFHO0NBRVo7O0FBN0JGLEFBbUNLLFFBbkNHLEdBbUNILFVBQVUsQ0FBQTtFQUNiLE9BQU8sRUFBRSxLQUFNO0VBQ2YsUUFBUSxFQUFFLFFBQVM7RUFDbEIsR0FBRyxFQ3ZCWSxHQUFHO0VEd0JsQixJQUFJLEVBQUUsQ0FBRTtFQUNSLEtBQUssRUN6QlUsR0FBRztFRDBCbEIsTUFBTSxFQUFFLElBQUs7RUFFZCxVQUFVLEVBQUUsZ0JBQWlCO0VBRTdCLGdCQUFnQixFQUFFLElBQUs7RUFFdkIsVUFBVSxFQUFFLE9BQVE7RUFFcEIsT0FBTyxFQUFFLENBQUU7Q0FDWDs7QUFsREYsQUF1REssUUF2REcsR0F1REgsVUFBVSxDQUFBO0VBQ2IsT0FBTyxFQUFFLElBQUs7RUFDZCxRQUFRLEVBQUUsUUFBUztFQUNsQixHQUFHLEVDM0NZLEdBQUc7RUQ0Q2xCLElBQUksRUM1Q1csR0FBRztFRDZDbEIsS0FBSyxFQUFFLHlCQUFJO0VBQ1gsTUFBTSxFQUFFLHlCQUFJO0VBQ2IsT0FBTyxFQUFFLEdBQUk7RUFHYixjQUFjLEVBQUUsR0FBSTtFQUNwQixlQUFlLEVBQUUsYUFBYztFQUUvQixVQUFVLEVBQUUsSUFBSztFQUNqQixVQUFVLEVBQUUsSUFBSztDQUNqQiIsCgkibmFtZXMiOiBbXQp9 */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,54 +0,0 @@
/* COULEUR DU THEME */
/* COULEUR DU SOUS-MENU */
/* COULEUR DES ERREURS */
/* FORMULAIRES */
/* GESTION DES LONGUEURS */
#CONTAINER > .sub-menu-side {
display: block;
position: relative;
}
#CONTAINER > .sub-menu-side > span[data-sublink] {
display: block;
position: relative;
width: 7.5em;
padding: .3em 1em .3em 2em;
margin: 1em;
border-radius: 3px;
color: #5b5e63;
text-shadow: 1px 1px white;
white-space: nowrap;
transition: all .2s;
cursor: pointer;
overflow: hidden;
}
#CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg {
display: inline-block;
position: absolute;
left: .5em;
top: 50%;
width: 1em;
height: 1em;
transform: translateY(-50%);
}
#CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg path {
fill: #5b5e63 !important;
}
#CONTAINER > .sub-menu-side > span[data-sublink]:hover, #CONTAINER > .sub-menu-side > span[data-sublink].active {
color: #121213;
background-color: #d8deea;
box-shadow: inset 0 0 4px #c8ced9;
}
#CONTAINER > .sub-menu-side > span[data-sublink]:hover > .svg > svg path, #CONTAINER > .sub-menu-side > span[data-sublink].active > .svg > svg path {
fill: #121213 !important;
}
#CONTAINER > .sub-menu-side > span[data-sublink]:nth-child(1) {
margin-top: 1em;
}
/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAic3VibWVudS1zaWRlLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vc3VibWVudS1zaWRlLnNjc3MiLAoJCSIuLi9jb25zdGFudHMuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgJ2NvbnN0YW50cyc7XG5cblxuI0NPTlRBSU5FUiA+IC5zdWItbWVudS1zaWRle1xuXHRkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdC8vIExlcyBsaWVucyBkdSBtZW51XG5cdCYgPiBzcGFuW2RhdGEtc3VibGlua117XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0d2lkdGg6IDcuNWVtO1xuXG5cdFx0cGFkZGluZzogLjNlbSAxZW0gLjNlbSAyZW07XG5cdFx0bWFyZ2luOiAxZW07XG5cblx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cblx0XHRjb2xvcjogJHN1Yi1tZW51LWNvbG9yO1xuXHRcdHRleHQtc2hhZG93OiAxcHggMXB4IHdoaXRlO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHR0cmFuc2l0aW9uOiBhbGwgLjJzO1xuXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdC8vIERpbWVuc2lvbi9Qb3NpdGlvbiBkZXMgc3ZnIChpY29uZXMpXG5cdFx0JiA+IC5zdmcgPiBzdmd7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IC41ZW07XG5cdFx0XHRcdC8vIGxlZnQ6IDEwMCU7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHR3aWR0aDogMWVtO1xuXHRcdFx0XHRoZWlnaHQ6IDFlbTtcblxuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXG5cdFx0XHQvLyBDb2xvcmF0aW9uIHBvdXIgdG91cyBsZXMgZWxlbWVudHMgZHUgc3ZnXG5cdFx0XHQmIHBhdGh7XG5cdFx0XHRcdGZpbGw6ICRzdWItbWVudS1jb2xvciAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCY6aG92ZXIsXG5cdFx0Ji5hY3RpdmV7XG5cdFx0XHRjb2xvcjogZGFya2VuKCRzdWItbWVudS1jb2xvciwgMzApO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Q4ZGVlYTtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCA0cHggI2M4Y2VkOTtcblxuXHRcdFx0JiA+IC5zdmcgPiBzdmcgcGF0aHtcblx0XHRcdFx0ZmlsbDogZGFya2VuKCRzdWItbWVudS1jb2xvciwgMzApICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0fVxuXG5cblx0Ly8gT24gZGVjYWxlIGxlIHByZW1pZXJcblx0JiA+IHNwYW5bZGF0YS1zdWJsaW5rXTpudGgtY2hpbGQoMSl7XG5cdFx0bWFyZ2luLXRvcDogMWVtO1xuXHR9XG5cbn1cbiIsCgkJIi8qIENPVUxFVVIgRFUgVEhFTUUgKi9cbiR0aGVtZS1jb2xvcjogI2Y0NGYwNjtcblxuLyogQ09VTEVVUiBEVSBTT1VTLU1FTlUgKi9cbiRzdWItbWVudS1jb2xvcjogIzViNWU2MztcblxuLyogQ09VTEVVUiBERVMgRVJSRVVSUyAqL1xuJGVycm9yLWNvbG9yOiAjY2M1ODU3O1xuXG4vKiBGT1JNVUxBSVJFUyAqL1xuJGZvcm0tdmFsaWQtY29sb3I6ICAgIzI3YTU2MDtcbiRmb3JtLW5ldXRyYWwtY29sb3I6ICMyMTkzZTY7XG4kZm9ybS1zZWFyY2gtY29sb3I6ICAjNTYzMGVkO1xuJGZvcm0taW52YWxpZC1jb2xvcjogI2Q1MjkxODtcblxuXG4vKiBHRVNUSU9OIERFUyBMT05HVUVVUlMgKi9cbiRtZW51LXNpZGUtd2lkdGg6IDRlbTtcblxuXG4vLyBQT1VSIFJFU09VUkNFX0RJU1BBVENIRVJcbiRyZC1mb3JtLXZhbGlkLWNvbG9yOiAgICcyN2E1NjAnO1xuJHJkLWZvcm0tbmV1dHJhbC1jb2xvcjogJzIxOTNlNic7XG4kcmQtZm9ybS1zZWFyY2gtY29sb3I6ICAnNTYzMGVkJztcbiRyZC1mb3JtLWludmFsaWQtY29sb3I6ICdkNTI5MTgnO1xuIgoJXSwKCSJtYXBwaW5ncyI6ICJBQ0FBLHNCQUFzQjtBQUd0QiwwQkFBMEI7QUFHMUIseUJBQXlCO0FBR3pCLGlCQUFpQjtBQU9qQiwyQkFBMkI7QURiM0IsQUFBYSxVQUFILEdBQUcsY0FBYyxDQUFBO0VBQzFCLE9BQU8sRUFBRSxLQUFNO0VBQ2YsUUFBUSxFQUFFLFFBQVM7Q0E2RG5COztBQS9ERCxBQUtzQixVQUxaLEdBQUcsY0FBYyxHQUt0QixJQUFJLENBQUEsQUFBQSxZQUFDLEFBQUEsRUFBYTtFQUNyQixPQUFPLEVBQUUsS0FBTTtFQUNmLFFBQVEsRUFBRSxRQUFTO0VBQ2xCLEtBQUssRUFBRSxLQUFNO0VBRWQsT0FBTyxFQUFFLGlCQUFrQjtFQUMzQixNQUFNLEVBQUUsR0FBSTtFQUVaLGFBQWEsRUFBRSxHQUFJO0VBRW5CLEtBQUssRUNkVSxPQUFPO0VEZXRCLFdBQVcsRUFBRSxhQUFjO0VBQzNCLFdBQVcsRUFBRSxNQUFPO0VBRXBCLFVBQVUsRUFBRSxPQUFRO0VBRXBCLE1BQU0sRUFBRSxPQUFRO0VBRWhCLFFBQVEsRUFBRSxNQUFPO0NBZ0NqQjs7QUF2REYsQUEwQmEsVUExQkgsR0FBRyxjQUFjLEdBS3RCLElBQUksQ0FBQSxBQUFBLFlBQUMsQUFBQSxJQXFCSixJQUFJLEdBQUcsR0FBRyxDQUFBO0VBQ2IsT0FBTyxFQUFFLFlBQWE7RUFDdEIsUUFBUSxFQUFFLFFBQVM7RUFDbEIsSUFBSSxFQUFFLElBQUs7RUFFWCxHQUFHLEVBQUUsR0FBSTtFQUNULEtBQUssRUFBRSxHQUFJO0VBQ1gsTUFBTSxFQUFFLEdBQUk7RUFFYixTQUFTLEVBQUUsZ0JBQVU7Q0FNckI7O0FBekNILEFBc0NLLFVBdENLLEdBQUcsY0FBYyxHQUt0QixJQUFJLENBQUEsQUFBQSxZQUFDLEFBQUEsSUFxQkosSUFBSSxHQUFHLEdBQUcsQ0FZWCxJQUFJLENBQUE7RUFDTCxJQUFJLEVDdENTLE9BQU8sQ0RzQ0UsVUFBVTtDQUNoQzs7QUF4Q0osQUFLc0IsVUFMWixHQUFHLGNBQWMsR0FLdEIsSUFBSSxDQUFBLEFBQUEsWUFBQyxBQUFBLENBc0NQLE1BQU0sRUEzQ1QsQUFLc0IsVUFMWixHQUFHLGNBQWMsR0FLdEIsSUFBSSxDQUFBLEFBQUEsWUFBQyxBQUFBLENBdUNQLE9BQU8sQ0FBQTtFQUNQLEtBQUssRUFBRSxPQUFNO0VBQ2IsZ0JBQWdCLEVBQUUsT0FBUTtFQUMxQixVQUFVLEVBQUUscUJBQXNCO0NBTWxDOztBQXJESCxBQWlEa0IsVUFqRFIsR0FBRyxjQUFjLEdBS3RCLElBQUksQ0FBQSxBQUFBLFlBQUMsQUFBQSxDQXNDUCxNQUFNLEdBTUYsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBakR0QixBQWlEa0IsVUFqRFIsR0FBRyxjQUFjLEdBS3RCLElBQUksQ0FBQSxBQUFBLFlBQUMsQUFBQSxDQXVDUCxPQUFPLEdBS0gsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7RUFDbEIsSUFBSSxFQUFFLE9BQU0sQ0FBc0IsVUFBVTtDQUM1Qzs7QUFuREosQUEyRG1DLFVBM0R6QixHQUFHLGNBQWMsR0EyRHRCLElBQUksQ0FBQSxBQUFBLFlBQUMsQUFBQSxDQUFhLFVBQVcsQ0FBQSxBQUFBLENBQUMsRUFBQztFQUNsQyxVQUFVLEVBQUUsR0FBSTtDQUNoQiIsCgkibmFtZXMiOiBbXQp9 */

View File

@ -9,7 +9,7 @@
top: 0; top: 0;
left: 0; left: 0;
width: $menu-side-width; width: $menu-side-width;
height: $menu-side-width; height: calc( #{$menu-side-width} - 1px );
background-color: darken($theme-color, 10); background-color: darken($theme-color, 10);
background-image: url('/src/static/iconv3.svg'); background-image: url('/src/static/iconv3.svg');

View File

@ -68,7 +68,7 @@
flex-direction: row; flex-direction: row;
justify-content: space-between; justify-content: space-between;
overflow-x: none; overflow: hidden;
overflow-y: auto; overflow-y: auto;
} }
@ -100,8 +100,11 @@
z-index: 101; z-index: 101;
flex-flow: column nowrap;
justify-content: space-between;
&.active{ &.active{
display: block; display: flex;
} }

4
public_html/css/min/constants.css Executable file → Normal file
View File

@ -3,6 +3,4 @@
/* COULEUR DES ERREURS */ /* COULEUR DES ERREURS */
/* FORMULAIRES */ /* FORMULAIRES */
/* GESTION DES LONGUEURS */ /* GESTION DES LONGUEURS */
/*# sourceMappingURL=constants.css.map */
/*# sourceMappingURL= constants.css.map */

File diff suppressed because it is too large Load Diff

View File

@ -2,50 +2,41 @@
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/R.ttf"); src: url("/css/font/Open Sans/R.ttf");
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal; }
}
@font-face { @font-face {
font-family: 'Open Sans sb'; font-family: 'Open Sans sb';
src: url("/css/font/Open Sans/SB.ttf"); src: url("/css/font/Open Sans/SB.ttf");
font-weight: normal; font-weight: normal;
font-style: normal; font-style: normal; }
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/b.ttf"); src: url("/css/font/Open Sans/b.ttf");
font-weight: bold; font-weight: bold;
font-style: normal; font-style: normal; }
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/i.ttf"); src: url("/css/font/Open Sans/i.ttf");
font-weight: normal; font-weight: normal;
font-style: italic; font-style: italic; }
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/bi.ttf"); src: url("/css/font/Open Sans/bi.ttf");
font-weight: bold; font-weight: bold;
font-style: italic; font-style: italic; }
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/L.ttf"); src: url("/css/font/Open Sans/L.ttf");
font-weight: 100; font-weight: 100;
font-style: normal; font-style: normal; }
}
@font-face { @font-face {
font-family: 'Open Sans'; font-family: 'Open Sans';
src: url("/css/font/Open Sans/Li.ttf"); src: url("/css/font/Open Sans/Li.ttf");
font-weight: 100; font-weight: 100;
font-style: italic; font-style: italic; }
} /*# sourceMappingURL=font.css.map */
/*# sourceMappingURL= font.css.map */

View File

@ -1,37 +0,0 @@
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/R.ttf");
font-weight: normal;
font-style: normal; }
@font-face {
font-family: 'Open Sans sb';
src: url("/css/font/Open Sans/SB.ttf");
font-weight: normal;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/b.ttf");
font-weight: bold;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/i.ttf");
font-weight: normal;
font-style: italic; }
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/bi.ttf");
font-weight: bold;
font-style: italic; }
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/L.ttf");
font-weight: 100;
font-style: normal; }
@font-face {
font-family: 'Open Sans';
src: url("/css/font/Open Sans/Li.ttf");
font-weight: 100;
font-style: italic; }
/*# sourceMappingURL=fonts.css.map */

305
public_html/css/min/global.css Executable file → Normal file
View File

@ -16,47 +16,32 @@ section > form, .form {
box-shadow: 0 0 1px #b7b7b7; box-shadow: 0 0 1px #b7b7b7;
background-color: #fff; background-color: #fff;
-webkit-transform: translateX(-50%); -webkit-transform: translateX(-50%);
transform: translateX(-50%); transform: translateX(-50%); }
} section > form#choose-cluster, .form#choose-cluster {
left: 0;
section > form#choose-cluster, .form#choose-cluster { -webkit-transform: none;
left: 0; transform: none; }
-webkit-transform: none; section > form.valid, .form.valid {
transform: none; border-color: #27a560; }
} section > form.neutral, .form.neutral {
border-color: #2193e6; }
section > form.valid, .form.valid { section > form.search, .form.search {
border-color: #27a560; border-color: #2193e6; }
} section > form .edit_search_view,
section > form .remove_search_view, .form .edit_search_view,
section > form.neutral, .form.neutral { .form .remove_search_view {
border-color: #2193e6; display: inline-block;
} width: 100%;
text-align: center;
section > form.search, .form.search { color: #aaaaaa; }
border-color: #2193e6; section > form .edit_search_view span,
} section > form .remove_search_view span, .form .edit_search_view span,
.form .remove_search_view span {
section > form .edit_search_view, color: #888888; }
section > form .remove_search_view, .form .edit_search_view, section > form span.error-msg, .form span.error-msg {
.form .remove_search_view { display: inline-block;
display: inline-block; color: #F03C3C;
width: 100%; font-size: 0.7em; }
text-align: center;
color: #aaaaaa;
}
section > form .edit_search_view span,
section > form .remove_search_view span, .form .edit_search_view span,
.form .remove_search_view span {
color: #888888;
}
section > form span.error-msg, .form span.error-msg {
display: inline-block;
color: #F03C3C;
font-size: 0.7em;
}
/* (1) Champs de texte */ /* (1) Champs de texte */
input[type=text], input[type=text],
@ -77,44 +62,38 @@ select.invalid {
border-radius: 3px; border-radius: 3px;
border: 1px solid #d7dde8; border: 1px solid #d7dde8;
color: #2f3033; color: #2f3033;
transition: border .4s ease-in-out; transition: border .4s ease-in-out; }
} input[type=text]:focus, input[type=text]:hover,
input[type=mail]:focus,
input[type=text]:focus, input[type=text]:hover, input[type=mail]:hover,
input[type=mail]:focus, input[type=password]:focus,
input[type=mail]:hover, input[type=password]:hover,
input[type=password]:focus, select:focus,
input[type=password]:hover, select:hover,
select:focus, .invalid > input[type=text]:focus,
select:hover, .invalid > input[type=text]:hover,
.invalid > input[type=text]:focus, .invalid > input[type=mail]:focus,
.invalid > input[type=text]:hover, .invalid > input[type=mail]:hover,
.invalid > input[type=mail]:focus, .invalid > input[type=password]:focus,
.invalid > input[type=mail]:hover, .invalid > input[type=password]:hover,
.invalid > input[type=password]:focus, .invalid > select:focus,
.invalid > input[type=password]:hover, .invalid > select:hover,
.invalid > select:focus, input.invalid[type=text]:focus,
.invalid > select:hover, input.invalid[type=text]:hover,
input.invalid[type=text]:focus, input.invalid[type=mail]:focus,
input.invalid[type=text]:hover, input.invalid[type=mail]:hover,
input.invalid[type=mail]:focus, input.invalid[type=password]:focus,
input.invalid[type=mail]:hover, input.invalid[type=password]:hover,
input.invalid[type=password]:focus, select.invalid:focus,
input.invalid[type=password]:hover, select.invalid:hover {
select.invalid:focus, border-color: #d52918; }
select.invalid:hover {
border-color: #d52918;
}
select { select {
width: 100%; width: 100%;
display: block; display: block;
background: #fff; background: #fff; }
} select option {
padding: .5em; }
select option {
padding: .5em;
}
.valid > input[type=text]:focus, .valid > input[type=text]:hover, .valid > input[type=text]:focus, .valid > input[type=text]:hover,
.valid > input[type=mail]:focus, .valid > input[type=mail]:focus,
@ -131,8 +110,7 @@ input.valid[type=password]:focus,
input.valid[type=password]:hover, input.valid[type=password]:hover,
select.valid:focus, select.valid:focus,
select.valid:hover { select.valid:hover {
border-color: #27a560; border-color: #27a560; }
}
.neutral > input[type=text]:focus, .neutral > input[type=text]:hover, .neutral > input[type=text]:focus, .neutral > input[type=text]:hover,
.neutral > input[type=mail]:focus, .neutral > input[type=mail]:focus,
@ -149,8 +127,7 @@ input.neutral[type=password]:focus,
input.neutral[type=password]:hover, input.neutral[type=password]:hover,
select.neutral:focus, select.neutral:focus,
select.neutral:hover { select.neutral:hover {
border-color: #2193e6; border-color: #2193e6; }
}
.search > input[type=text]:focus, .search > input[type=text]:hover, .search > input[type=text]:focus, .search > input[type=text]:hover,
.search > input[type=mail]:focus, .search > input[type=mail]:focus,
@ -165,8 +142,7 @@ input.search[type=mail]:focus,
input.search[type=mail]:hover, input.search[type=mail]:hover,
input.search[type=password]:focus, input.search[type=password]:focus,
input.search[type=password]:hover { input.search[type=password]:hover {
border-color: #5630ed; border-color: #5630ed; }
}
/* (2) Boutons */ /* (2) Boutons */
button, button,
@ -182,75 +158,60 @@ button.invalid,
color: #fff; color: #fff;
transition: background .4s ease-in-out; transition: background .4s ease-in-out;
-webkit-transform: translateX(-50%); -webkit-transform: translateX(-50%);
transform: translateX(-50%); transform: translateX(-50%); }
} button:hover, button:focus, button:disabled,
button.invalid:hover,
button:hover, button:focus, button:disabled, button.invalid:focus,
button.invalid:hover, button.invalid:disabled,
button.invalid:focus, .invalid > button:hover,
button.invalid:disabled, .invalid > button:focus,
.invalid > button:hover, .invalid > button:disabled {
.invalid > button:focus, background-color: #fff;
.invalid > button:disabled { color: #d52918; }
background-color: #fff;
color: #d52918;
}
button.grey, button.grey,
.grey > button { .grey > button {
border-color: #8d8d8d; border-color: #8d8d8d;
background-color: #8d8d8d; background-color: #8d8d8d; }
} button.grey:hover, button.grey:focus, button.grey:disabled,
.grey > button:hover,
button.grey:hover, button.grey:focus, button.grey:disabled, .grey > button:focus,
.grey > button:hover, .grey > button:disabled {
.grey > button:focus, background-color: #fff;
.grey > button:disabled { color: #8d8d8d; }
background-color: #fff;
color: #8d8d8d;
}
button.valid, button.valid,
.valid > button { .valid > button {
border-color: #27a560; border-color: #27a560;
background-color: #27a560; background-color: #27a560; }
} button.valid:hover, button.valid:focus, button.valid:disabled,
.valid > button:hover,
button.valid:hover, button.valid:focus, button.valid:disabled, .valid > button:focus,
.valid > button:hover, .valid > button:disabled {
.valid > button:focus, background-color: #fff;
.valid > button:disabled { color: #27a560; }
background-color: #fff;
color: #27a560;
}
button.neutral, button.neutral,
.neutral > button { .neutral > button {
border-color: #2193e6; border-color: #2193e6;
background-color: #2193e6; background-color: #2193e6; }
} button.neutral:hover, button.neutral:focus, button.neutral:disabled,
.neutral > button:hover,
button.neutral:hover, button.neutral:focus, button.neutral:disabled, .neutral > button:focus,
.neutral > button:hover, .neutral > button:disabled {
.neutral > button:focus, background-color: #fff;
.neutral > button:disabled { color: #2193e6; }
background-color: #fff;
color: #2193e6;
}
button.search, button.search,
.search > button { .search > button {
border-color: #5630ed; border-color: #5630ed;
background-color: #5630ed; background-color: #5630ed; }
} button.search:hover, button.search:focus, button.search:disabled,
.search > button:hover,
button.search:hover, button.search:focus, button.search:disabled, .search > button:focus,
.search > button:hover, .search > button:disabled {
.search > button:focus, background-color: #fff;
.search > button:disabled { color: #5630ed; }
background-color: #fff;
color: #5630ed;
}
.invalid > button.active, .invalid > button.active,
button.invalid.active, button.invalid.active,
@ -258,23 +219,19 @@ button.active {
background-color: #fff; background-color: #fff;
background-image: url("/src/static/container/active@d52918.svg") !important; background-image: url("/src/static/container/active@d52918.svg") !important;
background-size: 1em auto; background-size: 1em auto;
color: transparent !important; color: transparent !important; }
}
button.valid.active, button.valid.active,
.valid > button.active { .valid > button.active {
background-image: url("/src/static/container/active@27a560.svg") !important; background-image: url("/src/static/container/active@27a560.svg") !important; }
}
button.neutral.active, button.neutral.active,
.neutral > button.active { .neutral > button.active {
background-image: url("/src/static/container/active@2193e6.svg") !important; background-image: url("/src/static/container/active@2193e6.svg") !important; }
}
button.search.active, button.search.active,
.search > button.active { .search > button.active {
background-image: url("/src/static/container/active@5630ed.svg") !important; background-image: url("/src/static/container/active@5630ed.svg") !important; }
}
hr.OR[data-label] { hr.OR[data-label] {
display: block; display: block;
@ -282,51 +239,37 @@ hr.OR[data-label] {
width: 100%; width: 100%;
height: 0; height: 0;
border: 0; border: 0;
border-bottom: 1px dashed #d52918; border-bottom: 1px dashed #d52918; }
} hr.OR[data-label]:before {
content: attr(data-label);
hr.OR[data-label]:before { display: inline-block;
content: attr(data-label); position: relative;
display: inline-block; top: 50%;
position: relative; left: 50%;
top: 50%; padding: 0 1em;
left: 50%; background-color: #fff;
padding: 0 1em; color: #d52918;
background-color: #fff; -webkit-transform: translateX(-50%) translatey(-50%);
color: #d52918; transform: translateX(-50%) translatey(-50%); }
-webkit-transform: translateX(-50%) translatey(-50%);
transform: translateX(-50%) translatey(-50%);
}
.valid > hr.OR, .valid > hr.OR,
hr.OR.valid { hr.OR.valid {
border-bottom: 1px dashed #27a560; border-bottom: 1px dashed #27a560; }
} .valid > hr.OR:before,
hr.OR.valid:before {
.valid > hr.OR:before, color: #27a560; }
hr.OR.valid:before {
color: #27a560;
}
.neutral > hr.OR, .neutral > hr.OR,
hr.OR.neutral { hr.OR.neutral {
border-bottom: 1px dashed #2193e6; border-bottom: 1px dashed #2193e6; }
} .neutral > hr.OR:before,
hr.OR.neutral:before {
.neutral > hr.OR:before, color: #2193e6; }
hr.OR.neutral:before {
color: #2193e6;
}
.search > hr.OR, .search > hr.OR,
hr.OR.search { hr.OR.search {
border-bottom: 1px dashed #5630ed; border-bottom: 1px dashed #5630ed; }
} .search > hr.OR:before,
hr.OR.search:before {
.search > hr.OR:before, color: #5630ed; }
hr.OR.search:before { /*# sourceMappingURL=global.css.map */
color: #5630ed;
}
/*# sourceMappingURL= global.css.map */

73
public_html/css/min/header.css Executable file → Normal file
View File

@ -4,45 +4,34 @@
/* FORMULAIRES */ /* FORMULAIRES */
/* GESTION DES LONGUEURS */ /* GESTION DES LONGUEURS */
#WRAPPER > #HEADER { #WRAPPER > #HEADER {
/* Animation de chargement qudnd chargement ajax */ /* Animation de chargement qudnd chargement ajax */ }
} #WRAPPER > #HEADER > .icon {
display: block;
#WRAPPER > #HEADER > .icon { position: absolute;
display: block; top: 0;
position: absolute; left: 0;
top: 0; width: 4em;
left: 0; height: calc( 4em - 1px);
width: 4em; background-color: #c23f05;
height: 4em; background-image: url("/src/static/iconv3.svg");
background-color: #c23f05; background-position: center center;
background-image: url("/src/static/iconv3.svg"); background-repeat: no-repeat;
background-position: center center; background-size: 50% 50%;
background-repeat: no-repeat; cursor: pointer;
background-size: 50% 50%; transition: all .3s; }
cursor: pointer; #WRAPPER > #HEADER.loading > .icon {
transition: all .3s; background-image: url("/src/static/loaderv2.svg");
} background-size: 70% 70%; }
#WRAPPER > #HEADER > .logout-icon {
#WRAPPER > #HEADER.loading > .icon { display: block;
background-image: url("/src/static/loaderv2.svg"); position: absolute;
background-size: 70% 70%; top: 0;
} left: calc( 100% - 4em);
width: 4em;
#WRAPPER > #HEADER > .logout-icon { height: 4em;
display: block; background: transparent url("/src/static/logout@e0e7ed.svg") center center no-repeat;
position: absolute; background-size: 40%;
top: 0; cursor: pointer; }
left: calc( 100% - 4em); #WRAPPER > #HEADER > .logout-icon:hover {
width: 4em; background-image: url("/src/static/logout@ffffff.svg"); }
height: 4em; /*# sourceMappingURL=header.css.map */
background: transparent url("/src/static/logout@e0e7ed.svg") center center no-repeat;
background-size: 40%;
cursor: pointer;
}
#WRAPPER > #HEADER > .logout-icon:hover {
background-image: url("/src/static/logout@ffffff.svg");
}
/*# sourceMappingURL= header.css.map */

221
public_html/css/min/layout.css Executable file → Normal file
View File

@ -19,126 +19,101 @@
/* [3] Container de la page /* [3] Container de la page
==========================================*/ ==========================================*/
/* [4] Popup background - window /* [4] Popup background - window
==========================================*/ ==========================================*/ }
} #WRAPPER > #HEADER {
display: block;
#WRAPPER > #HEADER { position: absolute;
display: block; top: 0;
position: absolute; left: 0;
top: 0; width: 100%;
left: 0; height: calc( 4em - 1px);
width: 100%; border-bottom: 1px solid #c23f05;
height: calc( 4em - 1px); background-color: #f44f06;
border-bottom: 1px solid #c23f05; z-index: 10; }
background-color: #f44f06; #WRAPPER > #MENU-SIDE {
z-index: 10; display: block;
} position: absolute;
top: 4em;
#WRAPPER > #MENU-SIDE { left: 0;
display: block; width: 4em;
position: absolute; height: 100%;
top: 4em; box-shadow: 2px 1px 3px #ddd;
left: 0; background-color: #fff;
width: 4em; transition: all .3s;
height: 100%; z-index: 9; }
box-shadow: 2px 1px 3px #ddd; #WRAPPER > #CONTAINER {
background-color: #fff; display: flex;
transition: all .3s; position: absolute;
z-index: 9; top: 4em;
} left: 4em;
width: calc( 100% - 4em - 2*1em);
#WRAPPER > #CONTAINER { height: calc( 100% - 4em - 2*1em);
display: flex; padding: 1em;
position: absolute; flex-direction: row;
top: 4em; justify-content: space-between;
left: 4em; overflow: hidden;
width: calc( 100% - 4em - 2*1em); overflow-y: auto; }
height: calc( 100% - 4em - 2*1em); #WRAPPER > #POPUP {
padding: 1em; display: none;
flex-direction: row; position: fixed;
justify-content: space-between; top: 50%;
overflow-x: none; left: 50%;
overflow-y: auto; min-width: 50%;
} max-width: 50%;
min-height: 30%;
#WRAPPER > #POPUP { max-height: 50%;
display: none; border-radius: 5px;
position: fixed; background: #fff;
top: 50%; color: #34495e;
left: 50%; box-shadow: -10px 10px 0 rgba(26, 33, 40, 0.8);
min-width: 50%; -webkit-transform: translateX(-50%) translateY(-50%);
max-width: 50%; transform: translateX(-50%) translateY(-50%);
min-height: 30%; z-index: 101;
max-height: 50%; flex-flow: column nowrap;
border-radius: 5px; justify-content: space-between; }
background: #fff; #WRAPPER > #POPUP.active {
color: #34495e; display: flex; }
box-shadow: -10px 10px 0 rgba(26, 33, 40, 0.8); #WRAPPER > #POPUP > .header {
-webkit-transform: translateX(-50%) translateY(-50%); display: block;
transform: translateX(-50%) translateY(-50%); position: relative;
z-index: 101; width: calc( 100% - 2*1em);
} padding: 1em;
border-radius: 5px 5px 0 0;
#WRAPPER > #POPUP.active { border-bottom: 2px solid #ecf0f1;
display: block; font-size: 1.1em;
} font-weight: bold; }
#WRAPPER > #POPUP > .body {
#WRAPPER > #POPUP > .header { display: block;
display: block; position: relative;
position: relative; width: calc( 100% - 2*1em);
width: calc( 100% - 2*1em); padding: 1em; }
padding: 1em; #WRAPPER > #POPUP > .body b, #WRAPPER > #POPUP > .body strong {
border-radius: 5px 5px 0 0; color: #5630ed; }
border-bottom: 2px solid #ecf0f1; #WRAPPER > #POPUP > .footer {
font-size: 1.1em; display: flex;
font-weight: bold; position: relative;
} width: calc( 100% - 2*1em);
padding: 1em;
#WRAPPER > #POPUP > .body { background-color: #ecf0f1;
display: block; border-radius: 0 0 5px 5px;
position: relative; flex-direction: row;
width: calc( 100% - 2*1em); flex-wrap: wrap;
padding: 1em; justify-content: flex-end; }
} #WRAPPER > #POPUP > .footer button {
left: auto;
#WRAPPER > #POPUP > .body b, #WRAPPER > #POPUP > .body strong { margin: 0 1em;
color: #5630ed; -webkit-transform: none;
} transform: none; }
#WRAPPER > #POPUP-BG {
#WRAPPER > #POPUP > .footer { display: none;
display: flex; position: fixed;
position: relative; top: 0;
width: calc( 100% - 2*1em); left: 0;
padding: 1em; width: 100%;
background-color: #ecf0f1; height: 100%;
border-radius: 0 0 5px 5px; background: #29333f;
flex-direction: row; background: rgba(41, 51, 63, 0.8);
flex-wrap: wrap; z-index: 100; }
justify-content: flex-end; #WRAPPER #POPUP.active ~ #POPUP-BG {
} display: block; }
/*# sourceMappingURL=layout.css.map */
#WRAPPER > #POPUP > .footer button {
left: auto;
margin: 0 1em;
-webkit-transform: none;
transform: none;
}
#WRAPPER > #POPUP-BG {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #29333f;
background: rgba(41, 51, 63, 0.8);
z-index: 100;
}
#WRAPPER #POPUP.active ~ #POPUP-BG {
display: block;
}
/*# sourceMappingURL= layout.css.map */

109
public_html/css/min/menu-side.css Executable file → Normal file
View File

@ -15,69 +15,46 @@
color: #a2a2a2; color: #a2a2a2;
line-height: calc( 4em - 2*.7em - 2*.55em - 2*.01em); line-height: calc( 4em - 2*.7em - 2*.55em - 2*.01em);
transition: color .3s, border .3s; transition: color .3s, border .3s;
cursor: pointer; cursor: pointer; }
} #WRAPPER > #MENU-SIDE > span[data-link].mt {
margin-top: 3em; }
#WRAPPER > #MENU-SIDE > span[data-link].mt { #WRAPPER > #MENU-SIDE > span[data-link].mb {
margin-top: 3em; margin-bottom: 3em; }
} #WRAPPER > #MENU-SIDE > span[data-link] svg, #WRAPPER > #MENU-SIDE > span[data-link] svg * {
width: calc( 4em / 2.5);
#WRAPPER > #MENU-SIDE > span[data-link].mb { height: calc( 4em / 2.5);
margin-bottom: 3em; transition: fill .3s, stroke .3s;
} pointer-events: none; }
#WRAPPER > #MENU-SIDE > span[data-link] svg #stylisable, #WRAPPER > #MENU-SIDE > span[data-link] svg * #stylisable {
#WRAPPER > #MENU-SIDE > span[data-link] svg, #WRAPPER > #MENU-SIDE > span[data-link] svg * { fill: #a2a2a2 !important; }
width: calc( 4em / 2.5); #WRAPPER > #MENU-SIDE > span[data-link] svg #stroke-stylisable, #WRAPPER > #MENU-SIDE > span[data-link] svg * #stroke-stylisable {
height: calc( 4em / 2.5); stroke: #a2a2a2 !important; }
transition: fill .3s, stroke .3s; #WRAPPER > #MENU-SIDE > span[data-link][data-desc]:after {
pointer-events: none; content: attr(data-desc);
} display: block;
position: absolute;
#WRAPPER > #MENU-SIDE > span[data-link] svg #stylisable, #WRAPPER > #MENU-SIDE > span[data-link] svg * #stylisable { top: calc( 4em / 4 - 2*.3em);
fill: #a2a2a2 !important; left: calc( 4em * 1.15 - 2*.3em);
} padding: .3em;
border-radius: 3px;
#WRAPPER > #MENU-SIDE > span[data-link] svg #stroke-stylisable, #WRAPPER > #MENU-SIDE > span[data-link] svg * #stroke-stylisable { background-color: #2a2a2a;
stroke: #a2a2a2 !important; color: #e2e2e2;
} white-space: nowrap;
transition: transform .1s;
#WRAPPER > #MENU-SIDE > span[data-link][data-desc]:after { -webkit-transform-origin: 0 0;
content: attr(data-desc); transform-origin: 0 0;
display: block; -webkit-transform: scaleX(0);
position: absolute; transform: scaleX(0); }
top: calc( 4em / 4 - 2*.3em); #WRAPPER > #MENU-SIDE > span[data-link]:hover, #WRAPPER > #MENU-SIDE > span[data-link].active {
left: calc( 4em * 1.15 - 2*.3em); color: #f44f06;
padding: .3em; border-color: #e6e6e6;
border-radius: 3px; box-shadow: inset 0 0 .5em #eee; }
background-color: #2a2a2a; #WRAPPER > #MENU-SIDE > span[data-link]:hover:hover:after, #WRAPPER > #MENU-SIDE > span[data-link].active:hover:after {
color: #e2e2e2; -webkit-transform: scaleX(1);
white-space: nowrap; transform: scaleX(1);
transition: transform .1s; color: #fff; }
-webkit-transform-origin: 0 0; #WRAPPER > #MENU-SIDE > span[data-link]:hover svg #stylisable, #WRAPPER > #MENU-SIDE > span[data-link].active svg #stylisable {
transform-origin: 0 0; fill: #000 !important; }
-webkit-transform: scaleX(0); #WRAPPER > #MENU-SIDE > span[data-link]:hover svg #stroke-stylisable, #WRAPPER > #MENU-SIDE > span[data-link].active svg #stroke-stylisable {
transform: scaleX(0); stroke: #000 !important; }
} /*# sourceMappingURL=menu-side.css.map */
#WRAPPER > #MENU-SIDE > span[data-link]:hover, #WRAPPER > #MENU-SIDE > span[data-link].active {
color: #f44f06;
border-color: #e6e6e6;
box-shadow: inset 0 0 .5em #eee;
}
#WRAPPER > #MENU-SIDE > span[data-link]:hover:hover:after, #WRAPPER > #MENU-SIDE > span[data-link].active:hover:after {
-webkit-transform: scaleX(1);
transform: scaleX(1);
color: #fff;
}
#WRAPPER > #MENU-SIDE > span[data-link]:hover svg #stylisable, #WRAPPER > #MENU-SIDE > span[data-link].active svg #stylisable {
fill: #000 !important;
}
#WRAPPER > #MENU-SIDE > span[data-link]:hover svg #stroke-stylisable, #WRAPPER > #MENU-SIDE > span[data-link].active svg #stroke-stylisable {
stroke: #000 !important;
}
/*# sourceMappingURL= menu-side.css.map */

127
public_html/css/min/reset.css Executable file → Normal file
View File

@ -10,8 +10,7 @@ html {
-ms-text-size-adjust: 100%; -ms-text-size-adjust: 100%;
/* 2 */ /* 2 */
-webkit-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;
/* 2 */ /* 2 */ }
}
/** /**
* Remove default margin. * Remove default margin.
@ -20,8 +19,7 @@ body {
margin: 0; margin: 0;
font-size: 16px; font-size: 16px;
font-family: 'Open Sans', 'Ubuntu', 'Verdana', 'Arial'; font-family: 'Open Sans', 'Ubuntu', 'Verdana', 'Arial';
font-weight: normal; font-weight: normal; }
}
/* HTML5 display definitions /* HTML5 display definitions
========================================================================== */ ========================================================================== */
@ -43,8 +41,7 @@ menu,
nav, nav,
section, section,
summary { summary {
display: block; display: block; }
}
/** /**
* 1. Correct `inline-block` display not defined in IE 8/9. * 1. Correct `inline-block` display not defined in IE 8/9.
@ -57,8 +54,7 @@ video {
display: inline-block; display: inline-block;
/* 1 */ /* 1 */
vertical-align: baseline; vertical-align: baseline;
/* 2 */ /* 2 */ }
}
/** /**
* Prevent modern browsers from displaying `audio` without controls. * Prevent modern browsers from displaying `audio` without controls.
@ -66,8 +62,7 @@ video {
*/ */
audio:not([controls]) { audio:not([controls]) {
display: none; display: none;
height: 0; height: 0; }
}
/** /**
* Address `[hidden]` styling not present in IE 8/9/10. * Address `[hidden]` styling not present in IE 8/9/10.
@ -75,8 +70,7 @@ audio:not([controls]) {
*/ */
[hidden], [hidden],
template { template {
display: none; display: none; }
}
/* Links /* Links
========================================================================== */ ========================================================================== */
@ -84,8 +78,7 @@ template {
* Remove the gray background color from active links in IE 10. * Remove the gray background color from active links in IE 10.
*/ */
a { a {
background-color: transparent; background-color: transparent; }
}
/** /**
* Improve readability of focused elements when they are also in an * Improve readability of focused elements when they are also in an
@ -93,8 +86,7 @@ a {
*/ */
a:active, a:active,
a:hover { a:hover {
outline: 0; outline: 0; }
}
/* Text-level semantics /* Text-level semantics
========================================================================== */ ========================================================================== */
@ -109,8 +101,7 @@ abbr[title] {
text-decoration: underline; text-decoration: underline;
/* 2 */ /* 2 */
text-decoration: underline dotted; text-decoration: underline dotted;
/* 2 */ /* 2 */ }
}
/** /**
* Address inconsistent styling of b and strong. * Address inconsistent styling of b and strong.
@ -120,21 +111,18 @@ abbr[title] {
b, b,
strong { strong {
font-weight: inherit; font-weight: inherit;
/* 1 */ /* 1 */ }
}
b, b,
strong { strong {
font-weight: bolder; font-weight: bolder;
/* 2 */ /* 2 */ }
}
/** /**
* Address styling not present in Safari and Chrome. * Address styling not present in Safari and Chrome.
*/ */
dfn { dfn {
font-style: italic; font-style: italic; }
}
/** /**
* Address variable `h1` font-size and margin within `section` and `article` * Address variable `h1` font-size and margin within `section` and `article`
@ -142,23 +130,20 @@ dfn {
*/ */
h1 { h1 {
font-size: 2em; font-size: 2em;
margin: 0.67em 0; margin: 0.67em 0; }
}
/** /**
* Address styling not present in IE 8/9. * Address styling not present in IE 8/9.
*/ */
mark { mark {
background-color: #ff0; background-color: #ff0;
color: #000; color: #000; }
}
/** /**
* Address inconsistent and variable font size in all browsers. * Address inconsistent and variable font size in all browsers.
*/ */
small { small {
font-size: 80%; font-size: 80%; }
}
/** /**
* Prevent `sub` and `sup` affecting `line-height` in all browsers. * Prevent `sub` and `sup` affecting `line-height` in all browsers.
@ -168,16 +153,13 @@ sup {
font-size: 75%; font-size: 75%;
line-height: 0; line-height: 0;
position: relative; position: relative;
vertical-align: baseline; vertical-align: baseline; }
}
sup { sup {
top: -0.5em; top: -0.5em; }
}
sub { sub {
bottom: -0.25em; bottom: -0.25em; }
}
/* Embedded content /* Embedded content
========================================================================== */ ========================================================================== */
@ -185,15 +167,13 @@ sub {
* Remove border when inside `a` element in IE 8/9/10. * Remove border when inside `a` element in IE 8/9/10.
*/ */
img { img {
border: 0; border: 0; }
}
/** /**
* Correct overflow not hidden in IE 9/10/11. * Correct overflow not hidden in IE 9/10/11.
*/ */
svg:not(:root) { svg:not(:root) {
overflow: hidden; overflow: hidden; }
}
/* Grouping content /* Grouping content
========================================================================== */ ========================================================================== */
@ -201,8 +181,7 @@ svg:not(:root) {
* Address margin not present in IE 8/9 and Safari. * Address margin not present in IE 8/9 and Safari.
*/ */
figure { figure {
margin: 1em 40px; margin: 1em 40px; }
}
/** /**
* Address inconsistent styling of `hr`. * Address inconsistent styling of `hr`.
@ -215,15 +194,13 @@ hr {
height: 0; height: 0;
/* 1 */ /* 1 */
overflow: visible; overflow: visible;
/* 2 */ /* 2 */ }
}
/** /**
* Contain overflow in all browsers. * Contain overflow in all browsers.
*/ */
pre { pre {
overflow: auto; overflow: auto; }
}
/** /**
* 1. Correct inheritance and scaling of font-size for preformatted text. * 1. Correct inheritance and scaling of font-size for preformatted text.
@ -236,8 +213,7 @@ samp {
font-family: monospace, monospace; font-family: monospace, monospace;
/* 1 */ /* 1 */
font-size: 1em; font-size: 1em;
/* 2 */ /* 2 */ }
}
/* Forms /* Forms
========================================================================== */ ========================================================================== */
@ -257,15 +233,13 @@ textarea {
font: inherit; font: inherit;
/* 1 */ /* 1 */
margin: 0; margin: 0;
/* 2 */ /* 2 */ }
}
/** /**
* Address `overflow` set to `hidden` in IE 8/9/10/11. * Address `overflow` set to `hidden` in IE 8/9/10/11.
*/ */
button { button {
overflow: visible; overflow: visible; }
}
/** /**
* Address inconsistent `text-transform` inheritance for `button` and `select`. * Address inconsistent `text-transform` inheritance for `button` and `select`.
@ -275,8 +249,7 @@ button {
*/ */
button, button,
select { select {
text-transform: none; text-transform: none; }
}
/** /**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
@ -292,16 +265,14 @@ input[type="submit"] {
-webkit-appearance: button; -webkit-appearance: button;
/* 2 */ /* 2 */
cursor: pointer; cursor: pointer;
/* 3 */ /* 3 */ }
}
/** /**
* Re-set default cursor for disabled elements. * Re-set default cursor for disabled elements.
*/ */
button[disabled], button[disabled],
html input[disabled] { html input[disabled] {
cursor: default; cursor: default; }
}
/** /**
* Remove inner padding and border in Firefox 4+. * Remove inner padding and border in Firefox 4+.
@ -309,16 +280,14 @@ html input[disabled] {
button::-moz-focus-inner, button::-moz-focus-inner,
input::-moz-focus-inner { input::-moz-focus-inner {
border: 0; border: 0;
padding: 0; padding: 0; }
}
/** /**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in * Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet. * the UA stylesheet.
*/ */
input { input {
line-height: normal; line-height: normal; }
}
/** /**
* It's recommended that you don't attempt to style these elements. * It's recommended that you don't attempt to style these elements.
@ -332,8 +301,7 @@ input[type="radio"] {
box-sizing: border-box; box-sizing: border-box;
/* 1 */ /* 1 */
padding: 0; padding: 0;
/* 2 */ /* 2 */ }
}
/** /**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain * Fix the cursor style for Chrome's increment/decrement buttons. For certain
@ -342,15 +310,13 @@ input[type="radio"] {
*/ */
input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button { input[type="number"]::-webkit-outer-spin-button {
height: auto; height: auto; }
}
/** /**
* Address `appearance` set to `searchfield` in Safari and Chrome. * Address `appearance` set to `searchfield` in Safari and Chrome.
*/ */
input[type="search"] { input[type="search"] {
-webkit-appearance: textfield; -webkit-appearance: textfield; }
}
/** /**
* Remove inner padding and search cancel button in Safari and Chrome on OS X. * Remove inner padding and search cancel button in Safari and Chrome on OS X.
@ -359,8 +325,7 @@ input[type="search"] {
*/ */
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration { input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none; -webkit-appearance: none; }
}
/** /**
* Define consistent border, margin, and padding. * Define consistent border, margin, and padding.
@ -368,8 +333,7 @@ input[type="search"]::-webkit-search-decoration {
fieldset { fieldset {
border: 1px solid #c0c0c0; border: 1px solid #c0c0c0;
margin: 0 2px; margin: 0 2px;
padding: 0.35em 0.625em 0.75em; padding: 0.35em 0.625em 0.75em; }
}
/** /**
* 1. Correct `color` not being inherited in IE 8/9/10/11. * 1. Correct `color` not being inherited in IE 8/9/10/11.
@ -379,23 +343,20 @@ legend {
border: 0; border: 0;
/* 1 */ /* 1 */
padding: 0; padding: 0;
/* 2 */ /* 2 */ }
}
/** /**
* Remove default vertical scrollbar in IE 8/9/10/11. * Remove default vertical scrollbar in IE 8/9/10/11.
*/ */
textarea { textarea {
overflow: auto; overflow: auto; }
}
/** /**
* Don't inherit the `font-weight` (applied by a rule above). * Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X. * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/ */
optgroup { optgroup {
font-weight: bold; font-weight: bold; }
}
/* Tables /* Tables
========================================================================== */ ========================================================================== */
@ -404,13 +365,9 @@ optgroup {
*/ */
table { table {
border-collapse: collapse; border-collapse: collapse;
border-spacing: 0; border-spacing: 0; }
}
td, td,
th { th {
padding: 0; padding: 0; }
} /*# sourceMappingURL=reset.css.map */
/*# sourceMappingURL= reset.css.map */

83
public_html/css/min/submenu-side.css Executable file → Normal file
View File

@ -5,52 +5,37 @@
/* GESTION DES LONGUEURS */ /* GESTION DES LONGUEURS */
#CONTAINER > .sub-menu-side { #CONTAINER > .sub-menu-side {
display: block; display: block;
position: relative; position: relative; }
} #CONTAINER > .sub-menu-side > span[data-sublink] {
display: block;
#CONTAINER > .sub-menu-side > span[data-sublink] { position: relative;
display: block; width: 7.5em;
position: relative; padding: .3em 1em .3em 2em;
width: 7.5em; margin: 1em;
padding: .3em 1em .3em 2em; border-radius: 3px;
margin: 1em; color: #5b5e63;
border-radius: 3px; text-shadow: 1px 1px white;
color: #5b5e63; white-space: nowrap;
text-shadow: 1px 1px white; transition: all .2s;
white-space: nowrap; cursor: pointer;
transition: all .2s; overflow: hidden; }
cursor: pointer; #CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg {
overflow: hidden; display: inline-block;
} position: absolute;
left: .5em;
#CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg { top: 50%;
display: inline-block; width: 1em;
position: absolute; height: 1em;
left: .5em; -webkit-transform: translateY(-50%);
top: 50%; transform: translateY(-50%); }
width: 1em; #CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg path {
height: 1em; fill: #5b5e63 !important; }
-webkit-transform: translateY(-50%); #CONTAINER > .sub-menu-side > span[data-sublink]:hover, #CONTAINER > .sub-menu-side > span[data-sublink].active {
transform: translateY(-50%); color: #121213;
} background-color: #d8deea;
box-shadow: inset 0 0 4px #c8ced9; }
#CONTAINER > .sub-menu-side > span[data-sublink] > .svg > svg path { #CONTAINER > .sub-menu-side > span[data-sublink]:hover > .svg > svg path, #CONTAINER > .sub-menu-side > span[data-sublink].active > .svg > svg path {
fill: #5b5e63 !important; fill: #121213 !important; }
} #CONTAINER > .sub-menu-side > span[data-sublink]:nth-child(1) {
margin-top: 1em; }
#CONTAINER > .sub-menu-side > span[data-sublink]:hover, #CONTAINER > .sub-menu-side > span[data-sublink].active { /*# sourceMappingURL=submenu-side.css.map */
color: #121213;
background-color: #d8deea;
box-shadow: inset 0 0 4px #c8ced9;
}
#CONTAINER > .sub-menu-side > span[data-sublink]:hover > .svg > svg path, #CONTAINER > .sub-menu-side > span[data-sublink].active > .svg > svg path {
fill: #121213 !important;
}
#CONTAINER > .sub-menu-side > span[data-sublink]:nth-child(1) {
margin-top: 1em;
}
/*# sourceMappingURL= submenu-side.css.map */

View File

@ -9,7 +9,7 @@
& > span[data-sublink]{ & > span[data-sublink]{
display: block; display: block;
position: relative; position: relative;
width: 7.5em; width: $sub-menu-side-width;
padding: .3em 1em .3em 2em; padding: .3em 1em .3em 2em;
margin: 1em; margin: 1em;

View File

@ -8,12 +8,11 @@
use \api\core\Response; use \api\core\Response;
use \database\core\DatabaseDriver; use \database\core\DatabaseDriver;
use \api\core\AuthSystemDefault; use \api\core\AuthSystemDefault;
use \token\core\TreeToken; use \token\core\TreeTokenNull;
use \log\core\Log; use \log\core\Log;
$page_log = Log::get('router'); $page_log = Log::get('router');
$session_guard = new TreeToken(1000); $session_guard = new TreeTokenNull(1000);
/*******************************************/ /*******************************************/
@ -90,6 +89,9 @@
global $auth; global $auth;
// session timeout warning
$session_warn = 5; // 5 minutes before expiration
// {1} Disable cache // // {1} Disable cache //
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0'); header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Cache-Control: post-check=0, pre-check=0', false); header('Cache-Control: post-check=0, pre-check=0', false);
@ -115,8 +117,41 @@
} }
} }
// session timeout
echo "\n\t},\n";
echo "\tsession: {\n";
echo "\t\ttimeout: '".( (ini_get('session.gc_maxlifetime')-$session_warn*60) * 1000 )."'\n";
echo "\n\t}\n"; echo "\n\t}\n";
echo "};\n";
echo "};\n\n";
// {3} Function that reloads or logout the user
echo "var KEEP_SESSION = function(keep){\n";
echo "\tdocument.location = ( keep ) ? '' : '/logout';\n";
echo "};\n\n";
// {4} Function called at session timeout
echo "var SESSION_TIMEOUT_FUNC = function(){\n";
// {4.1} setup POPUP window
echo "\tvar popup = new Popup();\n";
echo "\tvar popup_content = {\n";
echo "\t\ttitle: 'Expiration de connexion',\n";
echo "\t\tcontent: 'Vous n\'avez rien fait depuis un moment. Vous serez déconnecté dans <b>".round(.5+$session_warn)." minutes</b>. Vous pouvez recharger la page pour garder votre connexion.',\n";
echo "\t\ttype: 'search',\n";
echo "\t\taction: 'Recharger la page'\n";
echo "\t}\n";
// {4.2} Show popup dialog -> on reload: reload page ; on cancel: logout
echo "\tpopup.ask(popup_content, KEEP_SESSION);\n";
// {4.3} Logout by default 5min if no popup response
echo "\tsetTimeout(function(){ KEEP_SESSION(false); }, (.5+$session_warn)*60*1000);\n";
echo "};\n\n";
// {5} Set the timeout
echo "var SESSION_TIMEOUT = setTimeout(SESSION_TIMEOUT_FUNC, SERVER.session.timeout);\n";
die(); die();

View File

@ -71,7 +71,7 @@ APIClass.prototype = {
// Récupération token TreeToken // Récupération token TreeToken
window._tree_token_ = ptrAPI.xhr[i].getResponseHeader('X-Tree-Token'); window._tree_token_ = ptrAPI.xhr[i].getResponseHeader('X-Tree-Token');
var parsedResponse = {ModuleError:-1, ErrorDescription:'Erreur au niveau de api.js'}; var parsedResponse = {error:-1, ErrorDescription:'Erreur au niveau de api.js'};
// On essaie de parser le json // On essaie de parser le json
try{ try{
@ -81,15 +81,21 @@ APIClass.prototype = {
// On lance la handler // On lance la handler
console.log('api response', parsedResponse); console.log('api response', parsedResponse);
if( parsedResponse.hasOwnProperty('ModuleError') && parsedResponse.ModuleError != 0 ) if( parsedResponse.hasOwnProperty('error') && parsedResponse.error != 0 )
console.error('ModuleError::'+parsedResponse.ModuleError); console.error('ModuleError::'+parsedResponse.error);
// If success -> reload session_timeout
if( parsedResponse.hasOwnProperty('error') && parsedResponse.error == 0 ){
clearTimeout(SESSION_TIMEOUT);
SESSION_TIMEOUT = setTimeout(SESSION_TIMEOUT_FUNC, SERVER.session.timeout);
}
pHandler(parsedResponse, ptrAPI.optionalParams[i]); pHandler(parsedResponse, ptrAPI.optionalParams[i]);
} }
/* sinon retourne obj.request = 'unreachable' */ /* sinon retourne obj.request = 'unreachable' */
else else
pHandler({ModuleError:-2, ModuleDescription:'Erreur au niveau d\'AJAX.'}); pHandler({error:-2, ErrorDescription:'Erreur au niveau d\'AJAX.'});
} }
}; };
@ -124,8 +130,6 @@ APIClass.prototype = {
// Header pour dire que c'est AJAX // Header pour dire que c'est AJAX
this.xhr[i].setRequestHeader('X-Requested-With', 'XMLHttpRequest'); this.xhr[i].setRequestHeader('X-Requested-With', 'XMLHttpRequest');
this.xhr[i].send( form ); this.xhr[i].send( form );
} }

View File

@ -1 +1 @@
function APIClass(e){this.target=e}APIClass.prototype={xhr:[],buffer:null,optionalParams:[],send:function(e,r,t){e.hasOwnProperty("path")||r({ModuleError:4});for(var s=0;s<this.xhr.length;s++)4==this.xhr[s].readyState&&this.xhr.splice(s,1);if(this.xhr.push(null),s=this.xhr.length-1,this.optionalParams[s]=[],arguments.length>3)for(var o=3;o<arguments.length;o++)this.optionalParams[s].push(arguments[o]);window.XMLHttpRequest?this.xhr[s]=new XMLHttpRequest:this.xhr[s]=new ActiveXObject("Microsoft.XMLHttpRequest");var n=this;this.xhr[s].onreadystatechange=function(){if(4==n.xhr[s].readyState)if(n.buffer=n.xhr[s].responseText,console.log("api request",e),[0,200,417].indexOf(n.xhr[s].status)>-1){window._tree_token_=n.xhr[s].getResponseHeader("X-Tree-Token");var t={ModuleError:-1,ErrorDescription:"Erreur au niveau de api.js"};try{t=JSON.parse(n.xhr[s].responseText)}catch(e){}console.log("api response",t),t.hasOwnProperty("ModuleError")&&0!=t.ModuleError&&console.error("ModuleError::"+t.ModuleError),r(t,n.optionalParams[s])}else r({ModuleError:-2,ModuleDescription:"Erreur au niveau d'AJAX."})};var a=new FormData;for(var i in e)"path"==i?a.append(i,e[i]):e[i]instanceof File?a.append(i,e[i]):a.append(i,JSON.stringify(e[i]));this.xhr[s].open("POST",this.target,!0),null!=t&&this.xhr[s].setRequestHeader("Authorization","Digest "+t),null==window._tree_token_?this.xhr[s].setRequestHeader("X-Tree-Token",JSON.parse('{"'+document.cookie.replace(/=/g,'":"').replace(/; /g,'","')+'"}')._PUBLIC_):this.xhr[s].setRequestHeader("X-Tree-Token",window._tree_token_),this.xhr[s].setRequestHeader("X-Requested-With","XMLHttpRequest"),this.xhr[s].send(a)}}; function APIClass(e){this.target=e}APIClass.prototype={xhr:[],buffer:null,optionalParams:[],send:function(e,r,t){e.hasOwnProperty("path")||r({ModuleError:4});for(var s=0;s<this.xhr.length;s++)4==this.xhr[s].readyState&&this.xhr.splice(s,1);if(this.xhr.push(null),s=this.xhr.length-1,this.optionalParams[s]=[],arguments.length>3)for(var o=3;o<arguments.length;o++)this.optionalParams[s].push(arguments[o]);window.XMLHttpRequest?this.xhr[s]=new XMLHttpRequest:this.xhr[s]=new ActiveXObject("Microsoft.XMLHttpRequest");var n=this;this.xhr[s].onreadystatechange=function(){if(4==n.xhr[s].readyState)if(n.buffer=n.xhr[s].responseText,console.log("api request",e),[0,200,417].indexOf(n.xhr[s].status)>-1){window._tree_token_=n.xhr[s].getResponseHeader("X-Tree-Token");var t={error:-1,ErrorDescription:"Erreur au niveau de api.js"};try{t=JSON.parse(n.xhr[s].responseText)}catch(e){}console.log("api response",t),t.hasOwnProperty("error")&&0!=t.error&&console.error("ModuleError::"+t.error),t.hasOwnProperty("error")&&0==t.error&&(clearTimeout(SESSION_TIMEOUT),SESSION_TIMEOUT=setTimeout(SESSION_TIMEOUT_FUNC,SERVER.session.timeout)),r(t,n.optionalParams[s])}else r({error:-2,ErrorDescription:"Erreur au niveau d'AJAX."})};var a=new FormData;for(var i in e)"path"==i?a.append(i,e[i]):e[i]instanceof File?a.append(i,e[i]):a.append(i,JSON.stringify(e[i]));this.xhr[s].open("POST",this.target,!0),null!=t&&this.xhr[s].setRequestHeader("Authorization","Digest "+t),null==window._tree_token_?this.xhr[s].setRequestHeader("X-Tree-Token",JSON.parse('{"'+document.cookie.replace(/=/g,'":"').replace(/; /g,'","')+'"}')._PUBLIC_):this.xhr[s].setRequestHeader("X-Tree-Token",window._tree_token_),this.xhr[s].setRequestHeader("X-Requested-With","XMLHttpRequest"),this.xhr[s].send(a)}};

View File

@ -1,19 +1 @@
/***************************************/ function pageManagerClass(){}var ptrPageManagerClass;pageManagerClass.prototype={loaded:null,depJS:null,depCSS:null,xhr:[],activeXHR:null,page:null,vars:[],root:"",path:"",jsPath:"js",cssPath:"css",pagelist:null,container:null,refresher:function(){},ajax:function(t,e,s,i){var h;h=this.xhr.push(window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest"))-1,this.activeXHR=this.xhr[h],this.xhr[h].addEventListener("readystatechange",function(t){if(void 0!=this.xhr[t]&&4===this.xhr[t].readyState){[0,200].indexOf(this.xhr[t].status)>-1?e(this.xhr[t].responseText):e(),this.xhr[t]=null;for(var s=!0,t=0;t<this.xhr.length;t++)if(null!==this.xhr[t]){s=!1;break}s&&(this.xhr=[])}}.bind(this,h),!1);var n="string"==typeof s&&/^POST|GET$/i.test(s)?s.toUpperCase():"POST",a="POST"==n&&"object"==typeof i&&i instanceof FormData?i:null;return this.xhr[h].open(n,t,!0),this.xhr[h].send(a),this},explodeURL:function(t){if(t=arguments.length>=1?t:document.URL,null!=this.pagelist&&/^(?:(?:https?:\/\/)?[^\/]+)\/([a-z0-9_]+)(?:\/|((?:\/\w+)+)\/?)?(#.*)?$/i.test(t)){var e=RegExp.$2.split("/").slice(1);return this.pagelist.indexOf(RegExp.$1)>-1?{page:RegExp.$1,var:e}:null}return null},loadDependencies:function(){"object"==typeof this.depCSS&&this.depCSS instanceof Element&&this.depCSS.parentNode==document.head&&document.head.removeChild(this.depCSS),"object"==typeof this.depJS&&this.depJS instanceof Element&&this.depJS.parentNode==document.head&&document.head.removeChild(this.depJS),this.ajax(this.root+this.path+"/"+this.cssPath+"/"+this.page+".css",function(t){return null==t?void console.warn("[loadDependencies_Error] - ("+this.root+this.path+"/"+this.cssPath+"/"+this.page+".css)"):(this.depCSS=document.createElement("link"),this.depCSS.rel="stylesheet",this.depCSS.type="text/css",this.depCSS.innerHTML=t,void document.head.appendChild(this.depCSS))}.bind(this),"GET"),this.ajax(this.root+this.path+"/"+this.jsPath+"/"+this.page+".js",function(t){return null==t?void console.warn("[loadDependencies_Error] - ("+this.root+this.path+"/"+this.jsPath+"/"+this.page+".js)"):(this.depJS=document.createElement("script"),this.depJS.type="text/javascript",this.depJS.innerHTML=t,void document.head.appendChild(this.depJS))}.bind(this),"GET")},updateURL:function(){this.vars.length>0?window.history.pushState(this.page,this.page,this.root+"/"+this.page+"/"+this.vars.join("/")+"/"):window.history.pushState(this.page,this.page,this.root+"/"+this.page+"/")},setPage:function(t,e,s,i,h){var n="object"==typeof i&&i instanceof Array?i:null;if(null!=n)for(var a=0;a<n.length&&(n="string"==typeof n[a]&&/^[a-z0-9_]+$/i.test(n[a])?n:null,null!=n);a++);if(this.pagelist=null!=n?n:this.pagelist,this.root="string"==typeof h?h:this.root,this.path="string"==typeof e?e:this.path,this.container="object"==typeof s&&s instanceof Element?s:this.container,this.pagelist&&this.container){if(t===!0){for(var r=new FormData,a=0;a<this.vars.length;a++)r.append(this.vars[a],null);return this.updateURL(),this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies(),this.refresher.apply(this),this.updateURL()}.bind(this),"POST",r),this}if("string"==typeof t&&this.pagelist.indexOf(t)>-1){this.page=t;for(var r=new FormData,a=0;a<this.vars.length;a++)r.append(this.vars[a],null);this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies()}.bind(this),"POST",r),this.updateURL()}else{var o=this.explodeURL();if(null!=o){var r=new FormData;this.vars.length=0;for(var a=0;a<o.var.length;a++)this.vars[a]=o.var[a],r.append(this.vars[a],null);if(o.page==this.page)return this;this.page=o.page,this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies()}.bind(this),"POST",r),this.updateURL()}else this.setPage(this.pagelist[0])}}else console.warn("pagelist et container manquant");return this},refresh:function(t){return t instanceof Function?void(this.refresher=t):this.setPage(!0)}};
function pageManagerClass(){}var ptrPageManagerClass
pageManagerClass.prototype={loaded:null,depJS:null,depCSS:null,xhr:[],activeXHR:null,page:null,vars:[],root:"",path:"",jsPath:"js",cssPath:"css",pagelist:null,container:null,refresher:function(){},ajax:function(t,e,s,i){var h
h=this.xhr.push(window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHttpRequest"))-1,this.activeXHR=this.xhr[h],this.xhr[h].addEventListener("readystatechange",function(t){if(void 0!=this.xhr[t]&&4===this.xhr[t].readyState){[0,200].indexOf(this.xhr[t].status)>-1?e(this.xhr[t].responseText):e(),this.xhr[t]=null
for(var s=!0,t=0;t<this.xhr.length;t++)if(null!==this.xhr[t]){s=!1
break}s&&(this.xhr=[])}}.bind(this,h),!1)
var n="string"==typeof s&&/^POST|GET$/i.test(s)?s.toUpperCase():"POST",a="POST"==n&&"object"==typeof i&&i instanceof FormData?i:null
return this.xhr[h].open(n,t,!0),this.xhr[h].send(a),this},explodeURL:function(t){if(t=arguments.length>=1?t:document.URL,null!=this.pagelist&&/^(?:(?:https?:\/\/)?[^\/]+)\/([a-z0-9_]+)(?:\/|((?:\/\w+)+)\/?)?(#.*)?$/i.test(t)){var e=RegExp.$2.split("/").slice(1)
return this.pagelist.indexOf(RegExp.$1)>-1?{page:RegExp.$1,var:e}:null}return null},loadDependencies:function(){"object"==typeof this.depCSS&&this.depCSS instanceof Element&&this.depCSS.parentNode==document.head&&document.head.removeChild(this.depCSS),"object"==typeof this.depJS&&this.depJS instanceof Element&&this.depJS.parentNode==document.head&&document.head.removeChild(this.depJS),this.ajax(this.root+this.path+"/"+this.cssPath+"/"+this.page+".css",function(t){null!=t?(this.depCSS=document.createElement("link"),this.depCSS.rel="stylesheet",this.depCSS.type="text/css",this.depCSS.href=this.root+this.path+"/"+this.cssPath+"/"+this.page+".css",document.head.appendChild(this.depCSS)):console.warn("[loadDependencies_Error] - ("+this.root+this.path+"/"+this.cssPath+"/"+this.page+".css)")}.bind(this)),this.ajax(this.root+this.path+"/"+this.jsPath+"/"+this.page+".js",function(t){null!=t?(this.depJS=document.createElement("script"),this.depJS.type="text/javascript",this.depJS.src=this.root+this.path+"/"+this.jsPath+"/"+this.page+".js",document.head.appendChild(this.depJS)):console.warn("[loadDependencies_Error] - ("+this.root+this.path+"/"+this.jsPath+"/"+this.page+".js)")}.bind(this))},updateURL:function(){this.vars.length>0?window.history.pushState(this.page,this.page,this.root+"/"+this.page+"/"+this.vars.join("/")+"/"):window.history.pushState(this.page,this.page,this.root+"/"+this.page+"/")},setPage:function(t,e,s,i,h){var n="object"==typeof i&&i instanceof Array?i:null
if(null!=n)for(var a=0;a<n.length&&(n="string"==typeof n[a]&&/^[a-z0-9_]+$/i.test(n[a])?n:null,null!=n);a++);if(this.pagelist=null!=n?n:this.pagelist,this.root="string"==typeof h?h:this.root,this.path="string"==typeof e?e:this.path,this.container="object"==typeof s&&s instanceof Element?s:this.container,this.pagelist&&this.container){if(t===!0){for(var r=new FormData,a=0;a<this.vars.length;a++)r.append(this.vars[a],null)
return this.updateURL(),this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies(),this.refresher.apply(this),this.updateURL()}.bind(this),"POST",r),this}if("string"==typeof t&&this.pagelist.indexOf(t)>-1){this.page=t
for(var r=new FormData,a=0;a<this.vars.length;a++)r.append(this.vars[a],null)
this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies()}.bind(this),"POST",r),this.updateURL()}else{var p=this.explodeURL()
if(null!=p){var r=new FormData
this.vars.length=0
for(var a=0;a<p.var.length;a++)this.vars[a]=p.var[a],r.append(this.vars[a],null)
if(p.page==this.page)return this
this.page=p.page,this.ajax(this.root+this.path+"/"+this.page+".php",function(t){this.container.innerHTML=t,this.loadDependencies()}.bind(this),"POST",r),this.updateURL()}else this.setPage(this.pagelist[0])}}else console.warn("pagelist et container manquant")
return this},refresh:function(t){return t instanceof Function?void(this.refresher=t):this.setPage(!0)}}

View File

@ -1 +1 @@
function Popup(){this.element={frame:document.querySelector("#POPUP"),header:document.querySelector("#POPUP .header"),body:document.querySelector("#POPUP .body"),footer:document.querySelector("#POPUP .footer")}}Popup.prototype={element:{frame:null,header:null,body:null,footer:null},show:function(){return this.element.frame.addClass("active"),this},hide:function(){return this.element.frame.remClass("active"),this},ask:function(e,t){function n(e){this.hide(),t("grey"!=e.target.className)}if(!(e instanceof Object))return null;if(null==e.title)return null;if(null==e.content)return null;if(null==e.type)return null;if(null==e.action)return null;if(!(t instanceof Function))return null;this.element.header.innerHTML=e.title,this.element.body.innerHTML=e.content;var r=document.createElement("button");r.className=e.type,r.innerHTML=e.action;var l=document.createElement("button");return l.className="grey",l.innerHTML="Annuler",r.addEventListener("click",n.bind(this),!1),l.addEventListener("click",n.bind(this),!1),this.element.footer.innerHTML="",this.element.footer.appendChild(r),this.element.footer.appendChild(l),this.show()}}; function Popup(){this.element={background:document.querySelector("#POPUP-BG"),frame:document.querySelector("#POPUP"),header:document.querySelector("#POPUP .header"),body:document.querySelector("#POPUP .body"),footer:document.querySelector("#POPUP .footer")},this.element.background.addEventListener("click",function(e){this.hide().handler(!1)}.bind(this),!1)}Popup.prototype={handler:null,element:{frame:null,header:null,body:null,footer:null},show:function(){return this.element.frame.addClass("active"),this},hide:function(){return this.element.frame.remClass("active"),this},ask:function(e,n){function t(e){this.hide(),this.handler("grey"!=e.target.className)}if(!(e instanceof Object))return null;if(null==e.title)return null;if(null==e.content)return null;if(null==e.type)return null;if(null==e.action)return null;if(!(n instanceof Function))return null;this.element.header.innerHTML=e.title,this.element.body.innerHTML=e.content,this.handler=n;var r=document.createElement("button");r.className=e.type,r.innerHTML=e.action;var l=document.createElement("button");return l.className="grey",l.innerHTML="Annuler",r.addEventListener("click",t.bind(this),!1),l.addEventListener("click",t.bind(this),!1),this.element.footer.innerHTML="",this.element.footer.appendChild(r),this.element.footer.appendChild(l),this.show()}};

View File

@ -155,26 +155,33 @@ pageManagerClass.prototype = {
// si le fichier css existe // si le fichier css existe
this.ajax(this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css', function(e){ this.ajax(this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css', function(e){
if( e != null ){ // on charge la dépendance CSS si le fichier existe if( e == null ){ // on charge la dépendance CSS si le fichier existe
this.depCSS = document.createElement('link');
this.depCSS.rel = 'stylesheet';
this.depCSS.type = 'text/css';
this.depCSS.href = this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css';
document.head.appendChild(this.depCSS);
}else
console.warn('[loadDependencies_Error] - ('+this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css)'); console.warn('[loadDependencies_Error] - ('+this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css)');
}.bind(this)); return;
}
this.depCSS = document.createElement('link');
this.depCSS.rel = 'stylesheet';
this.depCSS.type = 'text/css';
// this.depCSS.href = this.root+this.path+'/'+this.cssPath+'/'+this.page+'.css';
this.depCSS.innerHTML = e;
document.head.appendChild(this.depCSS);
}.bind(this), 'GET');
// si le fichier js existe // si le fichier js existe
this.ajax(this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js', function(e){ this.ajax(this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js', function(e){
if( e != null ){ // on charge la dépendance JS si le fichier existe if( e == null ){ // on charge la dépendance JS si le fichier existe
this.depJS = document.createElement('script');
this.depJS.type = 'text/javascript';
this.depJS.src = this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js';
document.head.appendChild(this.depJS);
}else
console.warn('[loadDependencies_Error] - ('+this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js)'); console.warn('[loadDependencies_Error] - ('+this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js)');
}.bind(this)); return;
}
this.depJS = document.createElement('script');
this.depJS.type = 'text/javascript';
// this.depJS.src = this.root+this.path+'/'+this.jsPath+'/'+this.page+'.js';
this.depJS.innerHTML = e;
document.head.appendChild(this.depJS);
}.bind(this), 'GET');
}, },
/* ======================================================================= /* =======================================================================
@ -240,7 +247,7 @@ pageManagerClass.prototype = {
fd.append(this.vars[i], null); fd.append(this.vars[i], null);
this.updateURL(); // could be useful for content or dep this.updateURL(); // could be useful for content or dep
this.ajax(this.root+this.path+'/'+this.page+'.php', function(e){ this.ajax(this.root+this.path+'/'+this.page+'.php', function(e){
this.container.innerHTML = e; this.container.innerHTML = e;
this.loadDependencies(); this.loadDependencies();

View File

@ -1,16 +1,24 @@
function Popup(){ function Popup(){
/* (1) Fetch DOM elements */
this.element = { this.element = {
frame: document.querySelector('#POPUP'), background: document.querySelector('#POPUP-BG'),
header: document.querySelector('#POPUP .header'), frame: document.querySelector('#POPUP'),
body: document.querySelector('#POPUP .body'), header: document.querySelector('#POPUP .header'),
footer: document.querySelector('#POPUP .footer') body: document.querySelector('#POPUP .body'),
footer: document.querySelector('#POPUP .footer')
}; };
/* (2) Set background click === to CANCEL action */
this.element.background.addEventListener('click', function(e){
this.hide().handler(false);
}.bind(this), false);
} }
Popup.prototype = { Popup.prototype = {
handler: null,
element: { frame: null, header: null, body: null, footer: null }, element: { frame: null, header: null, body: null, footer: null },
show: function(){ show: function(){
@ -59,6 +67,10 @@ Popup.prototype = {
/* (2) Content */ /* (2) Content */
this.element.body.innerHTML = pObject.content; this.element.body.innerHTML = pObject.content;
/* (3) Store the handler */
this.handler = pHandler;
/* (3) Set the buttons (action) /* (3) Set the buttons (action)
---------------------------------------------------------*/ ---------------------------------------------------------*/
@ -73,7 +85,7 @@ Popup.prototype = {
cancel_btn.innerHTML = 'Annuler'; cancel_btn.innerHTML = 'Annuler';
/* (3) Bind events */ /* (3) Bind events */
function handler(e){ this.hide(); pHandler( e.target.className != 'grey' ); } function handler(e){ this.hide(); this.handler( e.target.className != 'grey' ); }
action_btn.addEventListener('click', handler.bind(this), false); action_btn.addEventListener('click', handler.bind(this), false);
cancel_btn.addEventListener('click', handler.bind(this), false); cancel_btn.addEventListener('click', handler.bind(this), false);

View File

@ -105,8 +105,6 @@ Element.prototype.anim = function(className, timeout){
}; };
/* DEFINITION DES FORMATS UTILES POUR INPUT-CHECKER /* DEFINITION DES FORMATS UTILES POUR INPUT-CHECKER
* *
*/ */

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
enable-background="new 0 0 141.732 141.732"
height="32"
id="Livello_1"
version="1.1"
viewBox="0 0 32.000002 32.000001"
width="32"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="lock.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-page="true"
inkscape:zoom="9.41931"
inkscape:cx="5.9336621"
inkscape:cy="7.2474796"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Livello_1" /><g
id="Livello_113"
transform="translate(-17.238667,-109.21765)" /><path
inkscape:connector-curvature="0"
d="m 22.378488,16.002563 0,-4.570818 a 6.3784857,6.856227 0 1 0 -12.7569707,0 l 0,4.570818 z m -19.1354571,0 2.1261615,0 0,-4.570818 a 10.630811,11.427045 0 1 1 21.2616196,0 l 0,4.570818 2.126162,0 0,15.997863 -25.5139431,0 z"
id="stylisable" /></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="32"
viewBox="0 0 32 32"
width="32"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="signal.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview6"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-page="true"
inkscape:zoom="14.481547"
inkscape:cx="22.770708"
inkscape:cy="28.336291"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="m 20.363634,25.4545 0,5.091 q 0,0.5909 -0.43181,1.0227 Q 19.500004,32 18.909094,32 l -5.81818,0 q -0.59091,0 -1.02273,-0.4318 -0.43182,-0.4318 -0.43182,-1.0227 l 0,-5.091 q 0,-0.5909 0.43182,-1.0227 Q 12.500004,24 13.090914,24 l 5.81818,0 q 0.59091,0 1.02273,0.4318 0.43181,0.4318 0.43181,1.0227 z M 21.045454,1.4544998 20.409094,18.9091 q -0.0227,0.5909 -0.46591,1.0227 -0.44318,0.4318 -1.03409,0.4318 l -5.81818,0 q -0.59091,0 -1.03409,-0.4318 -0.44319,-0.4318 -0.46591,-1.0227 L 10.954544,1.4544998 Q 10.931844,0.86359978 11.352274,0.43179978 11.772734,-2.22046e-7 12.363634,-2.22046e-7 l 7.27273,0 q 0.59091,0 1.01137,0.431800002046 0.42045,0.4318 0.39772,1.02270002 z"
id="stylisable"
inkscape:connector-curvature="0" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="32"
id="Layer_1"
version="1.1"
viewBox="0 0 31.999999 32"
width="32"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="start.svg"><metadata
id="metadata9"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs7" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview5"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-page="true"
inkscape:zoom="14.5625"
inkscape:cx="13.38136"
inkscape:cy="12.329643"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><path
inkscape:connector-curvature="0"
d="M 7.9999977,4.9999997e-8 7.9999977,17.6 l 4.8000003,0 0,14.4 11.2,-19.2 -6.4,0 6.4,-12.799999950000003 z"
id="stylisable" /></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="32"
id="Layer_1"
version="1.2"
viewBox="0 0 32 32"
width="32"
xml:space="preserve"
inkscape:version="0.91 r13725"
sodipodi:docname="stop.svg"><metadata
id="metadata11"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs9" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview7"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="9.8333333"
inkscape:cx="-11.033899"
inkscape:cy="6.0000006"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" /><g
id="g3"
transform="matrix(2.0564972,0,0,2.0564972,-8.6779661,-8.6779661)" /><path
inkscape:connector-curvature="0"
d="m 20.295204,16 6.442427,-6.4424263 c 1.185984,-1.1859835 1.185984,-3.1092209 0,-4.294445 -1.185984,-1.1859835 -3.10998,-1.1859835 -4.295964,0 L 16,11.704796 9.5575738,5.2631287 c -1.1859835,-1.1859835 -3.1092211,-1.1859835 -4.2952047,0 -1.1859835,1.1859835 -1.1859835,3.1099803 0,4.294445 L 11.704796,16 5.2623691,22.442427 c -1.1859835,1.185983 -1.1859835,3.10922 0,4.294445 1.1859836,1.185983 3.1092212,1.185983 4.2952047,0 L 16,20.295204 l 6.441667,6.441668 c 1.185984,1.185983 3.10998,1.185983 4.295964,0 1.185984,-1.185984 1.185984,-3.109981 0,-4.294445 L 20.295204,16 Z"
id="stylisable" /></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="32"
viewBox="0 0 32 32"
width="32"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="unsignal.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview6"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-page="true"
inkscape:zoom="14.481547"
inkscape:cx="12.792553"
inkscape:cy="12.35049"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
transform="matrix(1.1851852,0,0,1.1851852,-3.5555556,-3.5555556)"
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1"
id="Page-1">
<g
style="fill:#157efb"
id="icon-24-key">
<path
inkscape:connector-curvature="0"
d="M 18.532404,19.467596 14,24 l -3,0 0,3 -3,0 0,3 -5,0 0,-5 10.532404,-10.532404 C 13.188157,13.543721 13,12.543834 13,11.5 13,6.8055794 16.805579,3 21.5,3 26.194421,3 30,6.8055794 30,11.5 30,16.194421 26.194421,20 21.5,20 20.456166,20 19.456279,19.811843 18.532404,19.467596 l 0,0 0,0 z M 27,9 c 0,-1.6568543 -1.343146,-3 -3,-3 -1.656854,0 -3,1.3431457 -3,3 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 l 0,0 z"
id="stylisable"
style="fill:#000000" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="32"
viewBox="0 0 32 32"
width="32"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="unsignal.svg">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1056"
id="namedview6"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:snap-page="true"
inkscape:zoom="14.481547"
inkscape:cx="12.792553"
inkscape:cy="12.35049"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<g
transform="matrix(1.1851852,0,0,1.1851852,-3.5555556,-3.5555556)"
style="fill:none;fill-rule:evenodd;stroke:none;stroke-width:1"
id="Page-1">
<g
style="fill:#157efb"
id="icon-24-key">
<path
inkscape:connector-curvature="0"
d="M 18.532404,19.467596 14,24 l -3,0 0,3 -3,0 0,3 -5,0 0,-5 10.532404,-10.532404 C 13.188157,13.543721 13,12.543834 13,11.5 13,6.8055794 16.805579,3 21.5,3 26.194421,3 30,6.8055794 30,11.5 30,16.194421 26.194421,20 21.5,20 20.456166,20 19.456279,19.811843 18.532404,19.467596 l 0,0 0,0 z M 27,9 c 0,-1.6568543 -1.343146,-3 -3,-3 -1.656854,0 -3,1.3431457 -3,3 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 l 0,0 z"
id="stylisable"
style="fill:#000000" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -10,7 +10,7 @@
<meta name='desctiption' content="Système de gestion des véhicules pour STEF."> <meta name='desctiption' content="Système de gestion des véhicules pour STEF.">
<!-- Dépendences CSS --> <!-- Dépendences CSS -->
<link type='text/css' rel='stylesheet' href='/css/min/fonts.css' /> <!-- Chargement des fonts --> <link type='text/css' rel='stylesheet' href='/css/min/font.css' /> <!-- Chargement des fonts -->
<link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers --> <link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers -->
<!-- Icone --> <!-- Icone -->
@ -22,6 +22,8 @@
<script type='text/javascript' src='/js/lib/min/api.js' ></script> <!-- Gestion des transactions avec le serveur --> <script type='text/javascript' src='/js/lib/min/api.js' ></script> <!-- Gestion des transactions avec le serveur -->
<script type='text/javascript' src='/js/lib/page-manager.js' ></script> <!-- Gestion des transactions avec le serveur --> <script type='text/javascript' src='/js/lib/page-manager.js' ></script> <!-- Gestion des transactions avec le serveur -->
<script type='text/javascript' src='/serverinfo.js' ></script> <!-- Gestion dynamique des info server -->
</head> </head>
<style type='text/css'> <style type='text/css'>
body{ body{

View File

@ -43,6 +43,22 @@ if( section.view.element != null ){
/* (2) Gestion de la recherche instantannee */ /* (2) Gestion de la recherche instantannee */
section.view.search.func = function(){ section.view.search.func = function(){
// if no keyword -> show all
if( section.view.search.bar.value.length == 0 ){
// On recupere la liste des elements correspondants aux utilisateurs
var history_list = document.querySelectorAll(section.view.text + '> article.inline-row[id]');
// Affiche chaque carte
for( var i = 0 ; i < history_list.length ; i++ )
history_list[i].remClass('hidden');
return;
}
var search = { var search = {
path: 'historyDefault/search', path: 'historyDefault/search',
keywords: section.view.search.bar.value keywords: section.view.search.bar.value
@ -119,12 +135,31 @@ if( section.archive.element != null ){
e.preventDefault(); e.preventDefault();
api.send({path: 'historyDefault/archive'}, function(result){ /* (2) Create popup */
if( result.error == 0 ){ var PopupManager = new Popup();
document.location = result.link; var confirm_content = {
title: "Archivage de l'historique",
content: "L'historique sera définitivement supprimé de la plateforme après la création de l'archive. Cette opération ne peut être annulée.",
type: "search",
action: "Archiver"
};
/* (3) Ask for confirmation */
PopupManager.ask(confirm_content, function(is_confirmed){
// {3.1} If cancelled -> abort //
if( !is_confirmed )
return;
// {3.2} Manage request //
api.send({path: 'historyDefault/archive'}, function(result){
if( result.error == 0 )
document.location = result.link;
});
}
}); });
}, false); }, false);
@ -132,3 +167,83 @@ if( section.archive.element != null ){
} }
/* GESTION DE L'AFFICHAGE DES DETAILS
*
*/
if( section.details.element != null ){
/* (0) On gère le zoom sur un log via URL */
if( pageManager.vars.length > 1 && !isNaN(pageManager.vars[1]) ){
// element
var element = document.getElementById('e'+pageManager.vars[1]);
// if element exist -> scroll to event
if( element != null )
DOM.CONTAINER.scrollTo( 0, element.getData('y') );
}
/* (1) Get useful DOM Elements
---------------------------------------------------------*/
/* (1) Get parent */
section.details.parent = {
text: section.details.text+'article.timeline.container ',
element: document.querySelector( section.details.text+'article.timeline.container ' )
};
/* (2) Get SVG tag */
section.details.svg = {
text: section.details.parent.text+'svg.timeline ',
element: document.querySelector( section.details.parent.text+'svg.timeline ' )
};
/* (3) Get each event node */
section.details.event = {
text: section.details.svg.text+'circle.around ',
list: document.querySelectorAll( section.details.svg.text+'circle.around ' )
};
/* (4) Get infobox node */
section.details.info = {
text: section.details.parent.text+'div.timeline.infobox ',
element: document.querySelector( section.details.parent.text+'div.timeline.infobox ' )
};
/* (5) Bind infobox sub-elements */
section.details.info.input = {
};
/* (3) Function: show infobox on click on event
---------------------------------------------------------*/
/* (1) Set click handler */
section.details.event.handler = function(target){
pageManager.vars[1] = target.getData('entry');
pageManager.refresh();
// section.details.info.element.addClass('active');
console.log('show infobox on element', target);
};
/* (2) Trigger event */
section.details.svg.element.addEventListener('click', function(e){
// {1} Trigger function only if element is an 'around circle' //
if( e.target.nodeName && e.target.getData('entry') && e.target.getData('user') && e.target.getData('machine') && e.target.getData('action') && e.target.getData('time') )
section.details.event.handler(e.target);
}, false);
}

View File

@ -66,6 +66,20 @@ if( section.view.element != null ){
/* (3) Gestion de la recherche instantannee */ /* (3) Gestion de la recherche instantannee */
section.view.search.func = function(){ section.view.search.func = function(){
// if no keyword -> show all
if( section.view.search.bar.value.length == 0 ){
// On recupere la liste des elements correspondants aux utilisateurs
var mac_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
// Affiche chaque carte
for( var i = 0 ; i < mac_list.length ; i++ )
mac_list[i].remClass('hidden');
return;
}
var search = { var search = {
path: 'machineDefault/search', path: 'machineDefault/search',
keywords: section.view.search.bar.value keywords: section.view.search.bar.value
@ -84,6 +98,7 @@ if( section.view.element != null ){
var machine_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]'); var machine_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
// Pour chaque machine // Pour chaque machine
console.log(uid_list);
for( var i = 0 ; i < machine_list.length ; i++ ){ for( var i = 0 ; i < machine_list.length ; i++ ){
// Si doit etre visible // Si doit etre visible
if( uid_list.indexOf(parseInt(machine_list[i].id)) > -1 ) if( uid_list.indexOf(parseInt(machine_list[i].id)) > -1 )
@ -503,8 +518,26 @@ if( section.remove.element != null ){
// On annule l'envoi de base (PHP) // On annule l'envoi de base (PHP)
e.preventDefault(); e.preventDefault();
// Si l'id est defini // Si l'id n'est pas défini -> abort
if( section.remove.input.search.id.value != '' ){ if( section.remove.input.search.id.value == '' )
return;
/* (1) Create popup */
var PopupManager = new Popup();
var confirm_content = {
title: "Suppression de machine",
content: "La machine <b>"+section.remove.input.name.value+"</b> sera définitivement supprimée de la plateforme. Cette opération ne peut être annulée.",
type: "invalid",
action: "Supprimer"
};
/* (2) Ask for confirmation */
PopupManager.ask(confirm_content, function(is_confirmed){
// {2.1} If cancelled -> abort //
if( !is_confirmed )
return;
/* (2) On supprime la machine */ /* (2) On supprime la machine */
var request = { var request = {
@ -548,7 +581,7 @@ if( section.remove.element != null ){
console.error('ModuleError::'+answer.error); console.error('ModuleError::'+answer.error);
}); });
} });
}, false); }, false);

View File

@ -135,7 +135,7 @@ if( section.admins.element != null ){
/* (3) Ask for confirmation */ /* (3) Ask for confirmation */
PopupManager.ask(confirm_content, function(is_confirmed){ PopupManager.ask(confirm_content, function(is_confirmed){
/* (3.1) If not cancelled -> abort */ /* (3.1) If cancelled -> abort */
if( !is_confirmed ) if( !is_confirmed )
return; return;

View File

@ -71,6 +71,20 @@ if( section.view.element != null ){
/* (3) Gestion de la recherche instantannee */ /* (3) Gestion de la recherche instantannee */
section.view.search.func = function(){ section.view.search.func = function(){
// if no keyword -> show all
if( section.view.search.bar.value.length == 0 ){
// On recupere la liste des elements correspondants aux utilisateurs
var user_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
// Affiche chaque carte
for( var i = 0 ; i < user_list.length ; i++ )
user_list[i].remClass('hidden');
return;
}
var search = { var search = {
path: 'userDefault/search', path: 'userDefault/search',
keywords: section.view.search.bar.value keywords: section.view.search.bar.value
@ -86,7 +100,7 @@ if( section.view.element != null ){
// On enregistre tous les UID dans un tableau // On enregistre tous les UID dans un tableau
var uid_list = []; var uid_list = [];
for( var i = 0 ; i < result.users.length ; i++ ) for( var i = 0 ; i < result.users.length ; i++ )
uid_list.push( result.users[i].id_user); uid_list.push( result.users[i].id_user );
// On recupere la liste des elements correspondants aux utilisateurs // On recupere la liste des elements correspondants aux utilisateurs
var user_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]'); var user_list = document.querySelectorAll(section.view.text + '> article.inline-box[id]');
@ -94,7 +108,7 @@ if( section.view.element != null ){
// Pour chaque utilisateur // Pour chaque utilisateur
for( var i = 0 ; i < user_list.length ; i++ ){ for( var i = 0 ; i < user_list.length ; i++ ){
// Si doit etre visible // Si doit etre visible
if( uid_list.indexOf(user_list[i].id) > -1 ) if( uid_list.indexOf(parseInt(user_list[i].id)) > -1 )
user_list[i].remClass('hidden'); user_list[i].remClass('hidden');
// Si ne doit pas etre visible // Si ne doit pas etre visible
else else
@ -543,8 +557,26 @@ if( section.remove.element != null ){
// On annule l'envoi de base (PHP) // On annule l'envoi de base (PHP)
e.preventDefault(); e.preventDefault();
// Si l'id est defini // Si l'id n'est pas defini -> abort
if( section.remove.input.search.id.value != '' ){ if( section.remove.input.search.id.value == '' )
return;
/* (1) Create popup */
var PopupManager = new Popup();
var confirm_content = {
title: "Suppression d'utilisateur",
content: "L'utilisateur <b>"+section.remove.input.username.value+"</b> sera définitivement supprimé de la plateforme. Cette opération ne peut être annulée.",
type: "invalid",
action: "Supprimer"
};
/* (2) Ask for confirmation */
PopupManager.ask(confirm_content, function(is_confirmed){
// {2.1} If cancelled -> abort //
if( !is_confirmed )
return;
/* (2) On supprime l'utilisateur */ /* (2) On supprime l'utilisateur */
var request = { var request = {
@ -589,7 +621,7 @@ if( section.remove.element != null ){
}); });
} });
}, false); }, false);
} }

View File

@ -12,7 +12,7 @@
<!-- Dépendences CSS --> <!-- Dépendences CSS -->
<link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers --> <link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers -->
<link type='text/css' rel='stylesheet' href='/css/min/fonts.css' /> <!-- Positionnement global des pages --> <link type='text/css' rel='stylesheet' href='/css/min/font.css' /> <!-- Positionnement global des pages -->
<link type='text/css' rel='stylesheet' href='/css/min/layout.css' /> <!-- Positionnement global des pages --> <link type='text/css' rel='stylesheet' href='/css/min/layout.css' /> <!-- Positionnement global des pages -->
<link type='text/css' rel='stylesheet' href='/css/min/header.css' /> <!-- Gestion du header --> <link type='text/css' rel='stylesheet' href='/css/min/header.css' /> <!-- Gestion du header -->
<link type='text/css' rel='stylesheet' href='/css/min/menu-side.css' /> <!-- Gestion du menu --> <link type='text/css' rel='stylesheet' href='/css/min/menu-side.css' /> <!-- Gestion du menu -->

View File

@ -10,7 +10,7 @@
<meta name='desctiption' content="Système de gestion des véhicules pour STEF."> <meta name='desctiption' content="Système de gestion des véhicules pour STEF.">
<!-- Dépendences CSS --> <!-- Dépendences CSS -->
<link type='text/css' rel='stylesheet' href='/css/min/fonts.css' /> <!-- Chargement des fonts --> <link type='text/css' rel='stylesheet' href='/css/min/font.css' /> <!-- Chargement des fonts -->
<link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers --> <link type='text/css' rel='stylesheet' href='/css/min/reset.css' /> <!-- Reset du css natif des browsers -->
<!-- Icone --> <!-- Icone -->
@ -22,6 +22,8 @@
<script type='text/javascript' src='/js/lib/min/api.js' ></script> <!-- Gestion des transactions avec le serveur --> <script type='text/javascript' src='/js/lib/min/api.js' ></script> <!-- Gestion des transactions avec le serveur -->
<script type='text/javascript' src='/js/lib/min/page-manager.js' ></script> <!-- Gestion des transactions avec le serveur --> <script type='text/javascript' src='/js/lib/min/page-manager.js' ></script> <!-- Gestion des transactions avec le serveur -->
<script type='text/javascript' src='/serverinfo.js' ></script> <!-- Gestion dynamique des info server -->
</head> </head>
<style type='text/css'> <style type='text/css'>
body{ body{

View File

@ -67,9 +67,9 @@
allow('file_exists')->toBeCalled()->andReturn(true); allow('file_exists')->toBeCalled()->andReturn(true);
// normally the 'module' module is always here for testing purposes // normally the 'module' module is always here for testing purposes
$err = ModuleFactory::getModule('module'); $err = ModuleFactory::getModule('documentationDefault');
expect($err)->not->toBeAnInstanceOf('\\error\\core\\Error'); expect($err)->not->toBeAnInstanceOf("\\error\\core\\Error");
}); });

View File

@ -274,7 +274,7 @@
it('fail when unknown method', function(){ it('fail when unknown method', function(){
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'mo-du_leA' => [ 'POST::me-th_odA' => [] ], 'mo-du_leA' => [ 'me-th_odA' => [] ],
'moduleB' => [] 'moduleB' => []
]); ]);
@ -299,7 +299,7 @@
allow(Request::class)->toReceive('buildOptions')->andReturn(true); allow(Request::class)->toReceive('buildOptions')->andReturn(true);
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'mo-du_leA' => [ 'POST::me-th_odA' => [] ], 'mo-du_leA' => [ 'me-th_odA' => [] ],
'moduleB' => [] 'moduleB' => []
]); ]);
@ -320,7 +320,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [] 'methodA' => []
] ]
]); ]);
@ -338,7 +338,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [ 'methodA' => [
'permissions' => 23.2 'permissions' => 23.2
] ]
] ]
@ -358,7 +358,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [ 'methodA' => [
'permissions' => [] 'permissions' => []
] ]
] ]
@ -381,7 +381,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [ 'methodA' => [
'permissions' => ['a'] 'permissions' => ['a']
] ]
] ]
@ -400,7 +400,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [ 'methodA' => [
'permissions' => ['a'] 'permissions' => ['a']
] ]
] ]
@ -420,7 +420,7 @@
allow('json_decode')->toBeCalled()->andReturn([ allow('json_decode')->toBeCalled()->andReturn([
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [ 'methodA' => [
'permissions' => ['a'] 'permissions' => ['a']
] ]
] ]
@ -466,7 +466,7 @@
$this->json = [ $this->json = [
'moduleA' => [ 'moduleA' => [
'POST::methodA' => [] 'methodA' => []
] ]
]; ];
@ -499,7 +499,7 @@
it('fail if \'parameters\' has no <string> name', function(){ it('fail if \'parameters\' has no <string> name', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
1 => [] 1 => []
]; ];
allow('json_decode')->toBeCalled()->andReturn($this->json); allow('json_decode')->toBeCalled()->andReturn($this->json);
@ -511,7 +511,7 @@
it('fail if \'parameters\' has no <array> specification', function(){ it('fail if \'parameters\' has no <array> specification', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => 1 'paramName' => 1
]; ];
allow('json_decode')->toBeCalled()->andReturn($this->json); allow('json_decode')->toBeCalled()->andReturn($this->json);
@ -523,7 +523,7 @@
it('fail if one \'parameters\' have no \'type\' clause', function(){ it('fail if one \'parameters\' have no \'type\' clause', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => false 'optional' => false
] ]
@ -537,7 +537,7 @@
it('fail if one \'parameters\' have incorrect \'type\' clause', function(){ it('fail if one \'parameters\' have incorrect \'type\' clause', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => false, 'optional' => false,
'type' => 12 'type' => 12
@ -556,7 +556,7 @@
it('pass if missing optional parameter -> set to null by default', function(){ it('pass if missing optional parameter -> set to null by default', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => true, 'optional' => true,
'type' => 'text' 'type' => 'text'
@ -576,7 +576,7 @@
it('fail if optional param wrong type ', function(){ it('fail if optional param wrong type ', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => true, 'optional' => true,
'type' => 'id' 'type' => 'id'
@ -592,7 +592,7 @@
it('pass if optional param matching type ', function(){ it('pass if optional param matching type ', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => true, 'optional' => true,
'type' => 'id' 'type' => 'id'
@ -608,7 +608,7 @@
it('fail if required param missing ', function(){ it('fail if required param missing ', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => false, 'optional' => false,
'type' => 'id' 'type' => 'id'
@ -623,7 +623,7 @@
it('fail if required param wrong type ', function(){ it('fail if required param wrong type ', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => false, 'optional' => false,
'type' => 'id' 'type' => 'id'
@ -639,7 +639,7 @@
it('pass if required param matching type ', function(){ it('pass if required param matching type ', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => false, 'optional' => false,
'type' => 'id' 'type' => 'id'
@ -659,7 +659,7 @@
it('fail if FILE param required + file does not exist', function(){ it('fail if FILE param required + file does not exist', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'type' => 'FILE' 'type' => 'FILE'
] ]
@ -674,7 +674,7 @@
it('pass if FILE param required + file exists -> create ref', function(){ it('pass if FILE param required + file exists -> create ref', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'type' => 'FILE' 'type' => 'FILE'
] ]
@ -694,7 +694,7 @@
it('pass if FILE optional param missing -> null', function(){ it('pass if FILE optional param missing -> null', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => true, 'optional' => true,
'type' => 'FILE' 'type' => 'FILE'
@ -715,7 +715,7 @@
it('pass if FILE optional param + file exists -> create ref', function(){ it('pass if FILE optional param + file exists -> create ref', function(){
$this->json['moduleA']['POST::methodA']['parameters'] = [ $this->json['moduleA']['methodA']['parameters'] = [
'paramName' => [ 'paramName' => [
'optional' => true, 'optional' => true,
'type' => 'FILE' 'type' => 'FILE'