svg
This commit is contained in:
parent
0900c8c532
commit
b214ebe981
|
@ -41,7 +41,6 @@ security:
|
|||
check_path: /saml/acs
|
||||
|
||||
access_control:
|
||||
- { path: ^/websocket, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM, ROLE_USER] }
|
||||
- { path: ^/user, roles: [ROLE_ADMIN, ROLE_MODO, ROLE_ANIM, ROLE_USER] }
|
||||
- { path: ^/config, roles: [ROLE_ADMIN, ROLE_MODO] }
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
export HTTP_PROXY="192.168.57.160:8080"
|
||||
export HTTPS_PROXY="192.168.57.160:8080"
|
||||
|
||||
cd /var/www/html/ninestat
|
||||
|
||||
|
|
|
@ -58,9 +58,12 @@ apps=`cat /tmp/lstpaquetfinal.txt`
|
|||
|
||||
# Construction de la chaine de parametre
|
||||
mac=`echo $(rawurlencode "${mac}")`
|
||||
etab=`echo $(rawurlencode "${etab}")`
|
||||
eole_module=`echo $(rawurlencode "${eole_module}")`
|
||||
eole_release=`echo $(rawurlencode "${eole_release}")`
|
||||
apps=`echo $(rawurlencode "${apps}")`
|
||||
data="idserver=$mac&idlocal=$rne&name=$etab&module=$eole_module&version=$eole_release"
|
||||
|
||||
data="idserver=$mac&idlocal=$rne&name=$etab&module=$eole_module&version=$eole_release&apps=$apps"
|
||||
|
||||
curl --request POST \
|
||||
--url ${serveurstat} \
|
||||
|
@ -69,6 +72,6 @@ curl --request POST \
|
|||
--header 'cache-control: no-cache' \
|
||||
--header 'content-type: application/x-www-form-urlencoded' \
|
||||
--header 'postman-token: e8cbba3a-9e51-204b-b742-a5b7a083738d' \
|
||||
--data ${data}
|
||||
--data ${data} &
|
||||
|
||||
|
||||
|
|
|
@ -4,15 +4,15 @@ SET foreign_key_checks = 0;
|
|||
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
|
||||
INSERT IGNORE INTO `user` (`id`, `username`, `firstname`, `lastname`, `password`, `email`, `avatar`, `role`) VALUES
|
||||
(-100, 'admin', 'Administrateur', 'SCRUM', '{SSHA}euZCgZjWhBu0xUZI9lPK2ncV9oaB+Jqo', 'admin@ldapbundle.ac-arno.fr', 'admin.jpg', 'ROLE_ADMIN');
|
||||
(-100, 'admin', 'Administrateur', 'STAT', '{SSHA}euZCgZjWhBu0xUZI9lPK2ncV9oaB+Jqo', 'tina-boot@ac-dijon.fr', 'admin.jpg', 'ROLE_ADMIN');
|
||||
|
||||
|
||||
|
||||
DELETE FROM `config` WHERE `changeable` = 0;
|
||||
INSERT IGNORE INTO `config` (`order`, `visible`, `changeable`, `required`, `type`, `id`, `value`, `grouped`, `help`) VALUES
|
||||
('001', 1, 1, 1, 'string', 'appname', 'Ninestat', '', 'Le titre de votre site'),
|
||||
('001', 1, 1, 1, 'string', 'appname', 'Ninestat', '', 'Le titre de votre site'),
|
||||
('002', 1, 0, 1, 'string', 'version', '1.0.0', '', 'Version de l\'application'),
|
||||
('003', 1, 1, 0, 'string', 'subappname', 'Statistiques Envole', '', 'Le sous titre de votre site'),
|
||||
('003', 1, 1, 0, 'string', 'subappname', 'Statistique Envole', '', 'Le sous titre de votre site'),
|
||||
('004', 1, 1, 1, 'logo', 'logo', 'uploads/logo/logo.png', '', 'Le logo de votre site'),
|
||||
('005', 0, 1, 0, 'theme', 'theme', '', '', 'Le theme de votre site'),
|
||||
('006', 0, 1, 0, 'datauser', 'datauser', '', '', 'Parametrage des champs utilisateurs : obligatoire / facultatif / caché'),
|
||||
|
@ -31,7 +31,7 @@ INSERT IGNORE INTO `config` (`order`, `visible`, `changeable`, `required`, `type
|
|||
('060', 1, 1, 1, 'font', 'fontfacetitle', 'Anton-Regular', '', 'Police des titres de votre site'),
|
||||
('061', 1, 1, 1, 'font', 'fontfacebody', 'Helvetica', '', 'Police des titres de votre site'),
|
||||
|
||||
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '1', '', 'Définit un Proxy'),
|
||||
('201', 1, 0, 1, 'string', 'PROXYserver', '192.168.57.160', 'PROXYactivate','Adresse du Proxy'),
|
||||
('202', 1, 0, 1, 'string', 'PROXYport', '8080', 'PROXYactivate','Port du Proxy');
|
||||
('200', 1, 0, 1, 'boolean', 'PROXYactivate', '0', '', 'Définit un Proxy'),
|
||||
('201', 1, 0, 1, 'string', 'PROXYserver', '', 'PROXYactivate','Adresse du Proxy'),
|
||||
('202', 1, 0, 1, 'string', 'PROXYport', '', 'PROXYactivate','Port du Proxy');
|
||||
|
||||
|
|
|
@ -58,19 +58,18 @@ class ApiController extends Controller
|
|||
foreach($apps as $app) {
|
||||
$tmp=explode("-",$app);
|
||||
$tmpname="";
|
||||
for($i=1;$i<count($tmp)-2;$i++) {
|
||||
for($i=0;$i<count($tmp)-2;$i++) {
|
||||
$tmpname.=$tmp[$i];
|
||||
if(($i+1)<(count($tmp)-2)) $tmpname.="-";
|
||||
}
|
||||
if($tmpname=="moodle-update") $tmpname="moodle";
|
||||
|
||||
if($this->fgdebug) echo $tmpname."<br>";
|
||||
$tbapps["$tmpname"]=$app;
|
||||
}
|
||||
|
||||
// Pour chaque apps
|
||||
foreach($tbapps as $name => $version) {
|
||||
$application=$em->getRepository('CadolesCoreBundle:Application')->findOneBy(["name"=>$name]);
|
||||
foreach($tbapps as $package => $version) {
|
||||
$application=$em->getRepository('CadolesCoreBundle:Application')->findOneBy(["package"=>$package]);
|
||||
if($application) {
|
||||
$serveurapplication=$em->getRepository('CadolesCoreBundle:ServerApplication')->findOneBy(["server"=>$server,"application"=>$application]);
|
||||
if(!$serveurapplication) {
|
||||
|
|
|
@ -0,0 +1,140 @@
|
|||
<?php
|
||||
|
||||
namespace Cadoles\CoreBundle\Controller;
|
||||
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
use Cadoles\CoreBundle\Entity\Application;
|
||||
use Cadoles\CoreBundle\Form\ApplicationType;
|
||||
|
||||
class ApplicationController extends Controller
|
||||
{
|
||||
private $labelentity = 'CadolesCoreBundle:Application';
|
||||
|
||||
public function listAction(Request $request)
|
||||
{
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$applications = $em->getRepository($this->labelentity)->findAll();
|
||||
|
||||
return $this->render('CadolesCoreBundle:Application:list.html.twig',[
|
||||
"applications"=>$applications,
|
||||
"useheader"=>true,
|
||||
"usesidebar"=>true,
|
||||
"usemenu"=>false
|
||||
]);
|
||||
}
|
||||
|
||||
public function submitAction(Request $request)
|
||||
{
|
||||
// Initialisation de l'enregistrement
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$data = new Application();
|
||||
|
||||
// Création du formulaire
|
||||
$form = $this->createForm(ApplicationType::class,$data,array("mode"=>"submit"));
|
||||
|
||||
// Récupération des data du formulaire
|
||||
$form->handleRequest($request);
|
||||
|
||||
// Sur erreur
|
||||
$this->getErrorForm(null,$form,$request,$data,"submit");
|
||||
|
||||
// Sur validation
|
||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||
$data = $form->getData();
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
||||
// Retour à la liste
|
||||
return $this->redirectToRoute("cadoles_core_config_application");
|
||||
}
|
||||
|
||||
// Affichage du formulaire
|
||||
return $this->render($this->labelentity.':edit.html.twig', [
|
||||
'useheader' => true,
|
||||
'usesidebar' => true,
|
||||
'usemenu' => false,
|
||||
'application' => $data,
|
||||
'mode' => 'submit',
|
||||
'form' => $form->createView()
|
||||
]);
|
||||
}
|
||||
|
||||
public function updateAction($id,Request $request)
|
||||
{
|
||||
// Initialisation de l'enregistrement
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$data=$em->getRepository($this->labelentity)->find($id);
|
||||
|
||||
// Création du formulaire
|
||||
$form = $this->createForm(ApplicationType::class,$data,array("mode"=>"update"));
|
||||
|
||||
// Récupération des data du formulaire
|
||||
$form->handleRequest($request);
|
||||
|
||||
// Sur erreur
|
||||
$this->getErrorForm(null,$form,$request,$data,"update");
|
||||
|
||||
// Sur validation
|
||||
if ($form->get('submit')->isClicked() && $form->isValid()) {
|
||||
$data = $form->getData();
|
||||
$em->persist($data);
|
||||
$em->flush();
|
||||
|
||||
// Retour à la liste
|
||||
return $this->redirectToRoute("cadoles_core_config_application");
|
||||
}
|
||||
|
||||
// Affichage du formulaire
|
||||
return $this->render($this->labelentity.':edit.html.twig', [
|
||||
'useheader' => true,
|
||||
'usesidebar' => true,
|
||||
'usemenu' => false,
|
||||
'application' => $data,
|
||||
'mode' => 'update',
|
||||
'form' => $form->createView()
|
||||
]);
|
||||
}
|
||||
|
||||
public function deleteAction($id,Request $request)
|
||||
{
|
||||
// Initialisation de l'enregistrement
|
||||
$em = $this->getDoctrine()->getManager();
|
||||
$data=$em->getRepository($this->labelentity)->find($id);
|
||||
$error=false;
|
||||
|
||||
if($error)
|
||||
return $this->redirectToRoute("cadoles_core_config_application_update",["id"=>$id]);
|
||||
else {
|
||||
$em->remove($data);
|
||||
$em->flush();
|
||||
|
||||
// Retour à la liste
|
||||
return $this->redirectToRoute("cadoles_core_config_application");
|
||||
}
|
||||
}
|
||||
|
||||
protected function getErrorForm($id,$form,$request,$data,$mode) {
|
||||
if ($form->get('submit')->isClicked()&&$mode=="delete") {
|
||||
}
|
||||
|
||||
if ($form->get('submit')->isClicked() && $mode=="submit") {
|
||||
}
|
||||
|
||||
if ($form->get('submit')->isClicked() && !$form->isValid()) {
|
||||
$this->get('session')->getFlashBag()->clear();
|
||||
$validator = $this->get('validator');
|
||||
$errors = $validator->validate($data);
|
||||
foreach( $errors as $error ) {
|
||||
$request->getSession()->getFlashBag()->add("error", $error->getMessage());
|
||||
}
|
||||
|
||||
$errors = $form->getErrors();
|
||||
foreach( $errors as $error ) {
|
||||
$request->getSession()->getFlashBag()->add("error", $error->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -69,13 +69,42 @@ class CoreController extends Controller
|
|||
|
||||
}
|
||||
|
||||
// Total servers
|
||||
$servers = $em->getRepository("CadolesCoreBundle:Server")->findAll();
|
||||
|
||||
// Total by module
|
||||
$totalmodules = $em->createQueryBuilder()
|
||||
->select('COUNT(s.module) total','s.module label')
|
||||
->from('CadolesCoreBundle:Server','s')
|
||||
->groupBy('s.module');
|
||||
|
||||
// Total by version
|
||||
$totalversions = $em->createQueryBuilder()
|
||||
->select('COUNT(s.version) total','s.version label')
|
||||
->from('CadolesCoreBundle:Server','s')
|
||||
->groupBy('s.version');
|
||||
|
||||
// Total applications
|
||||
$applications = $em->getRepository("CadolesCoreBundle:ServerApplication")->findAll();
|
||||
|
||||
// Total by apps
|
||||
$totalapplications = $em->createQueryBuilder()
|
||||
->select('COUNT(a.package) total','a.name label')
|
||||
->from('CadolesCoreBundle:ServerApplication','sa')
|
||||
->from('CadolesCoreBundle:Application','a')
|
||||
->where('sa.application=a.id')
|
||||
->groupBy('a.package')
|
||||
->orderBy('total','DESC');
|
||||
|
||||
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
|
||||
'useheader' => true,
|
||||
'usemenu' => false,
|
||||
'usesidebar' => false,
|
||||
'servers' => $servers,
|
||||
'useheader' => true,
|
||||
'usemenu' => false,
|
||||
'usesidebar' => false,
|
||||
'totalserveurs' => count($servers),
|
||||
'totalbymodules' => $totalmodules->getQuery()->getResult(),
|
||||
'totalbyversions' => $totalversions->getQuery()->getResult(),
|
||||
'totalapplications' => count($applications),
|
||||
'totalbyapplications' => $totalapplications->getQuery()->getResult()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,6 @@ use Symfony\Component\HttpFoundation\Session\Session;
|
|||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Filesystem\Filesystem;
|
||||
|
||||
use Cadoles\CoreBundle\Entity\Scrum;
|
||||
use Cadoles\CoreBundle\Form\ScrumType;
|
||||
|
||||
class GroupController extends Controller
|
||||
{
|
||||
private $labelentity="CadolesCoreBundle:Group";
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
<?php
|
||||
namespace Cadoles\CoreBundle\Form;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
|
||||
class ApplicationType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
$builder->add('submit',
|
||||
SubmitType::class, [
|
||||
"label" => "Valider",
|
||||
"attr" => ["class" => "btn btn-success"]
|
||||
]
|
||||
);
|
||||
|
||||
$builder->add('name',
|
||||
TextType::class, [
|
||||
"label" =>"Nom"
|
||||
]
|
||||
);
|
||||
|
||||
$builder->add('package',
|
||||
TextType::class, [
|
||||
"label" =>"Paquet"
|
||||
]
|
||||
);
|
||||
|
||||
$builder->add('description',
|
||||
TextareaType::class, [
|
||||
"label" =>"Paquet",
|
||||
"required" => false,
|
||||
"attr" => array("rows" => '4')
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$resolver->setDefaults(array(
|
||||
'data_class' => 'Cadoles\CoreBundle\Entity\Application',
|
||||
'mode' => 'string'
|
||||
));
|
||||
}
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
<?php
|
||||
namespace Cadoles\CoreBundle\Form;
|
||||
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||
use Symfony\Component\Form\Extension\Core\Type\ColorType;
|
||||
use Cadoles\CoreBundle\Form\IconChoiceType;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Ivory\CKEditorBundle\Form\Type\CKEditorType;
|
||||
use Tetranz\Select2EntityBundle\Form\Type\Select2EntityType;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
|
||||
class ScrumType extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||
{
|
||||
if($options["mode"]!="view") {
|
||||
$builder
|
||||
->add('submit', SubmitType::class, [
|
||||
'label' => 'Valider',
|
||||
'attr' => ['class' => 'btn btn-success']
|
||||
]);
|
||||
|
||||
$builder
|
||||
->add('title', TextType::class, [
|
||||
'label' => 'Titre',
|
||||
'attr' => ['class' => 'form-control', 'style' => 'margin-bottom:15px']
|
||||
]);
|
||||
|
||||
|
||||
$builder
|
||||
->add('groups', Select2EntityType::class, [
|
||||
'label' => 'Visible pour les Groupes',
|
||||
'class' => 'CadolesCoreBundle:Group',
|
||||
'text_property' => 'label',
|
||||
'multiple' => true,
|
||||
'remote_route' => 'cadoles_core_user_group_ajax_list',
|
||||
'primary_key' => 'id',
|
||||
'text_property' => 'label',
|
||||
'minimum_input_length' => 0,
|
||||
'page_limit' => 100,
|
||||
'allow_clear' => true,
|
||||
'delay' => 250,
|
||||
'cache' => false,
|
||||
'cache_timeout' => 60000,
|
||||
'language' => 'fr',
|
||||
'placeholder' => 'Selectionner un groupe',
|
||||
]);
|
||||
}
|
||||
else {
|
||||
$builder
|
||||
->add('description',CKEditorType::class,[
|
||||
'config_name' => 'full_config',
|
||||
'label' => 'Description',
|
||||
'mapped' => false,
|
||||
'required' => false,
|
||||
'config' => ['height' => '300px','filebrowserUploadRoute' => 'cadoles_core_user_scrum_upload'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver)
|
||||
{
|
||||
$resolver->setDefaults(array(
|
||||
'data_class' => 'Cadoles\CoreBundle\Entity\Scrum',
|
||||
'mode' => "string"
|
||||
));
|
||||
}
|
||||
}
|
|
@ -144,5 +144,20 @@ cadoles_core_api:
|
|||
defaults: { _controller: CadolesCoreBundle:Api:api}
|
||||
methods: ["post"]
|
||||
|
||||
#== Application ============================================================================================================
|
||||
cadoles_core_config_application:
|
||||
path: /config/application
|
||||
defaults: { _controller: CadolesCoreBundle:Application:list }
|
||||
|
||||
cadoles_core_config_application_submit:
|
||||
path: /config/application/submit
|
||||
defaults: { _controller: CadolesCoreBundle:Application:submit }
|
||||
|
||||
cadoles_core_config_application_update:
|
||||
path: /config/application/update/{id}
|
||||
defaults: { _controller: CadolesCoreBundle:Application:update }
|
||||
|
||||
cadoles_core_config_application_delete:
|
||||
path: /config/application/delete/{id}
|
||||
defaults: { _controller: CadolesCoreBundle:Application:delete }
|
||||
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
{% extends 'CadolesCoreBundle::base.html.twig' %}
|
||||
|
||||
{% block pagewrapper %}
|
||||
{{ form_start(form) }}
|
||||
<h1 class="page-header">
|
||||
{% if mode=="update" %}
|
||||
Modification APPLICATION
|
||||
{% elseif mode=="submit" %}
|
||||
Création APPLICATION
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
{{ form_widget(form.submit) }}
|
||||
|
||||
<a class="btn btn-secondary" href={{ path('cadoles_core_config_application') }}>Annuler</a>
|
||||
|
||||
{% if mode=="update" %}
|
||||
|
||||
<a href="{{ path('cadoles_core_config_application_delete',{'id':application.id}) }}"
|
||||
class="btn btn-danger float-right"
|
||||
data-method="delete"
|
||||
data-confirm="Êtes-vous sûr de vouloir supprimer cet entregistrement ?">
|
||||
Supprimer
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
<br><br>
|
||||
|
||||
{% if app.session.flashbag.has('error') %}
|
||||
<div class='alert alert-danger' style='margin: 5px 0px'>
|
||||
<strong>Erreur</strong><br>
|
||||
{% for flashMessage in app.session.flashbag.get('error') %}
|
||||
{{ flashMessage }}<br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if app.session.flashbag.has('notice') %}
|
||||
<div class='alert alert-info' style='margin: 5px 0px'>
|
||||
<strong>Information</strong><br>
|
||||
{% for flashMessage in app.session.flashbag.get('notice') %}
|
||||
{{ flashMessage }}<br>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-table fa-fw"></i> Information
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
{{ form_row(form.name) }}
|
||||
{{ form_row(form.package) }}
|
||||
{{ form_row(form.description) }}
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
{% endblock %}
|
|
@ -0,0 +1,51 @@
|
|||
{% extends "CadolesCoreBundle::base.html.twig" %}
|
||||
|
||||
{% block pagewrapper %}
|
||||
<h1 class="page-header">
|
||||
APPLICATIONS
|
||||
</h1>
|
||||
|
||||
<p><a class="btn btn-success" href={{ path('cadoles_core_config_application_submit') }}>Ajouter</a></p>
|
||||
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<i class="fa fa-table fa-fw"></i> Liste des Applications
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div class="dataTable_wrapper">
|
||||
<table class="table table-striped table-bordered table-hover" id="dataTables" style="width:100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th width="70px" class="no-sort">Action</th>
|
||||
<th>Application</th>
|
||||
<th class="no-string">Paquet</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for application in applications %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{path("cadoles_core_config_application_update",{id:application.id})}}"><i class="fa fa-file"></i></a>
|
||||
</td>
|
||||
<td>{{application.name}}</td>
|
||||
<td>{{application.package}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
$(document).ready(function() {
|
||||
$('#dataTables').DataTable({
|
||||
columnDefs: [ { "targets": "no-sort", "orderable": false }, { "targets": "no-string", "type" : "num" } ],
|
||||
responsive: true,
|
||||
iDisplayLength: 100,
|
||||
order: [[ 1, "asc" ]]
|
||||
});
|
||||
});
|
||||
{% endblock %}
|
|
@ -1,24 +1,108 @@
|
|||
{% extends '@CadolesCore/base.html.twig' %}
|
||||
{% block pagewrapper %}
|
||||
<div class="row">
|
||||
<div style="width: 400px;margin: auto;text-align: center;margin-top: 50px;">
|
||||
<a href="{{ path("cadoles_core_home") }}">
|
||||
<img id="logo" src="/{{ alias }}/{{ app.session.get('logo') }}">
|
||||
|
||||
<h1>{{ app.session.get('appname') }}</h1>
|
||||
</a>
|
||||
<div class="row" style="margin-top:20px">
|
||||
<div class="col-md-6" style="padding:20px;text-align:center;">
|
||||
<div class="col-md-12">
|
||||
<h1 style="margin-top:0px"><i class="fa fa-server fa-fw"></i>Serveurs = {{ totalserveurs }} </h1>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-6" >
|
||||
<h1>Serveurs par Module</h1>
|
||||
<div id='bymodule-chart'></div>
|
||||
<div id="bymodule-legend"></div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" >
|
||||
<h1>Serveurs par Version</h1>
|
||||
<div id='byversion-chart'></div>
|
||||
<div id="byversion-legend"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6" style="padding:20px;text-align:center;margin: 0px;">
|
||||
<div class="col-md-12">
|
||||
<h1 style="margin-top:0px; margin-bottom:25px""><i class="fa fa-cubes fa-fw"></i>Applications = {{ totalapplications }} </h1>
|
||||
</div>
|
||||
|
||||
<h1>Applications Installées</h1>
|
||||
|
||||
<div class="col-md-8" >
|
||||
<div id='byapplication-chart'></div>
|
||||
</div>
|
||||
<div id="byapplication-legend" class="col-md-4"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id='morris-donut-chart'></div>
|
||||
{% endblock %}
|
||||
|
||||
{% block localjavascript %}
|
||||
$(document).ready(function() {
|
||||
Morris.Donut({
|
||||
element: 'morris-donut-chart',
|
||||
data: [ {'label':'01','value':100},{'label':'02','value':200} ],
|
||||
//== byModule
|
||||
var bymodule = Morris.Donut({
|
||||
element: 'bymodule-chart',
|
||||
data: [
|
||||
{% for total in totalbymodules %}
|
||||
{'label':'{{ total.label }}','value':{{ total.total }}},
|
||||
{% endfor %}
|
||||
],
|
||||
resize: true
|
||||
});
|
||||
|
||||
bymodule.options.data.forEach(function(label, i) {
|
||||
var legendItem = $('<span style="margin:auto; width: 50%;display: block;text-align: left;"></span>').text( label['label'] + " ( " +label['value'] + " )" ).prepend('<span> </span>');
|
||||
legendItem.find('span')
|
||||
.css('backgroundColor', bymodule.options.colors[i])
|
||||
.css('width', '20px')
|
||||
.css('display', 'inline-block')
|
||||
.css('margin', '5px');
|
||||
$('#bymodule-legend').append(legendItem)
|
||||
});
|
||||
|
||||
//== byVersion
|
||||
var byversion = Morris.Donut({
|
||||
element: 'byversion-chart',
|
||||
data: [
|
||||
{% for total in totalbyversions %}
|
||||
{'label':'{{ total.label }}','value':{{ total.total }}},
|
||||
{% endfor %}
|
||||
],
|
||||
resize: true
|
||||
});
|
||||
|
||||
byversion.options.data.forEach(function(label, i) {
|
||||
var legendItem = $('<span style="margin:auto; width: 50%;display: block;text-align: left;"></span>').text( label['label'] + " ( " +label['value'] + " )" ).prepend('<span> </span>');
|
||||
legendItem.find('span')
|
||||
.css('backgroundColor', byversion.options.colors[i])
|
||||
.css('width', '20px')
|
||||
.css('display', 'inline-block')
|
||||
.css('margin', '5px');
|
||||
$('#byversion-legend').append(legendItem)
|
||||
});
|
||||
|
||||
//== byApplication
|
||||
var byapplication = Morris.Donut({
|
||||
element: 'byapplication-chart',
|
||||
data: [
|
||||
{% for total in totalbyapplications %}
|
||||
{
|
||||
'label':'{{ total.label }}',
|
||||
'value':{{ total.total }},
|
||||
},
|
||||
{% endfor %}
|
||||
],
|
||||
resize: true
|
||||
});
|
||||
|
||||
byapplication.options.data.forEach(function(label, i) {
|
||||
var legendItem = $('<span style="display: block;text-align: left;"></span>').text( label['label'] + " ( " +label['value'] + " )" ).prepend('<span> </span>');
|
||||
legendItem.find('span')
|
||||
.css('backgroundColor', byapplication.options.colors[i])
|
||||
.css('width', '20px')
|
||||
.css('display', 'inline-block')
|
||||
.css('margin', '0px 5px 5px 0px');
|
||||
$('#byapplication-legend').append(legendItem)
|
||||
|
||||
});
|
||||
});
|
||||
{% endblock %}
|
|
@ -20,7 +20,13 @@
|
|||
<a href="{{ path('cadoles_core_config_user') }}">
|
||||
<i class="fa fa-child fa-fw"></i> Utilisateurs</i>
|
||||
</a>
|
||||
</li>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="{{ path('cadoles_core_config_application') }}">
|
||||
<i class="fa fa-cubes fa-fw"></i> Applications</i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
|
|
Loading…
Reference in New Issue