Browse Source

FD3-233 Se agrega listado de OLTs en el Stats, de momento agrego link al
listado de ONUs y PonPorts de cada OLT listada.

Maximiliano Schvindt 7 years ago
parent
commit
b777554c85

+ 101 - 0
src/StatsBundle/Admin/OltAdmin.php

@@ -0,0 +1,101 @@
+<?php
+
+namespace StatsBundle\Admin;
+
+use Base\AdminBundle\Admin\BaseAdmin;
+use Sonata\AdminBundle\Datagrid\DatagridMapper;
+use Sonata\AdminBundle\Datagrid\ListMapper;
+use Sonata\AdminBundle\Form\FormMapper;
+use Sonata\AdminBundle\Show\ShowMapper;
+use DeviceBundle\Utils\DeviceTypes;
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
+use Sonata\AdminBundle\Route\RouteCollection;
+
+class OltAdmin extends BaseAdmin
+{
+    protected $baseRouteName = 'admin_stats_olt';
+    protected $baseRoutePattern = 'stats/olt';
+
+    /**
+     * @param DatagridMapper $datagridMapper
+     */
+    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
+    {
+        $datagridMapper
+                ->add('deviceServer')
+                ->add('deviceId')
+                ->add('ip')
+                ->add('tenancyId')
+        ;
+    }
+
+    /**
+     * @param ListMapper $listMapper
+     */
+    protected function configureListFields(ListMapper $listMapper)
+    {
+        $listMapper
+                ->add('deviceServer')
+                ->add('deviceId')
+                ->add('ip')
+                ->add('extraData.name', 'string', array('template' => 'StatsBundle:Device:extra_data_text_field.html.twig', 'column' => 'name', 'label' => 'list.label_olt_device_id'))
+                ->add('extraData.mark', 'string', array('template' => 'StatsBundle:Device:extra_data_text_field.html.twig', 'column' => 'mark', 'label' => 'list.label_olt_mark'))
+                ->add('extraData.library', 'string', array('template' => 'StatsBundle:Device:extra_data_text_field.html.twig', 'column' => 'library', 'label' => 'list.label_olt_library'))
+                ->add('extraData.executeSnmp', 'string', array('template' => 'StatsBundle:Device:extra_data_boolean_field.html.twig', 'column' => 'executeSnmp', 'label' => 'list.label_olt_executeSnmp'))
+                ->add('_action', null, array(
+                    'actions' => array(
+                        'onus' => array('template' => 'StatsBundle:Device:action_olt_show_onu.html.twig'),
+                        'ponports' => array('template' => 'StatsBundle:Device:action_olt_show_ponport.html.twig'),
+                        'report' => array('template' => 'StatsBundle:Device:action_olt_show_report.html.twig')
+                    )))
+               
+        ;
+    }
+
+    /**
+     * @param FormMapper $formMapper
+     */
+    protected function configureFormFields(FormMapper $formMapper)
+    {
+       
+    }
+
+    /**
+     * @param ShowMapper $showMapper
+     */
+    protected function configureShowFields(ShowMapper $showMapper)
+    {
+        
+    }
+
+    /**
+     * @param string $action
+     * @param Object $object
+     * 
+     * @return array
+     */
+    public function configureActionButtons($action, $object = null)
+    {
+        $actions = parent::configureActionButtons($action, $object);
+
+        return $actions;
+    }
+
+    protected function configureRoutes(RouteCollection $collection)
+    {
+        $collection->remove('delete');
+        $collection->remove('create');
+        $collection->remove('edit');
+    }
+
+    public function createQuery($context = 'list')
+    {
+        $query = parent::createQuery($context);
+        $query->andWhere(
+            $query->expr()->eq($query->getRootAliases()[0] . '.deviceType', ':my_type')
+        );
+        $query->setParameter('my_type', 'FTTHBundle\Entity\OLT');
+        return $query;
+    }
+
+}

+ 8 - 0
src/StatsBundle/Resources/config/services.yml

@@ -43,3 +43,11 @@ services:
     stats.report.manager:
         class: StatsBundle\Services\ReportManager
         arguments: ['@doctrine.orm.entity_manager','@validator','@webservice']
+
+    stats.admin.olt:
+        class: StatsBundle\Admin\OltAdmin
+        arguments: [~, StatsBundle\Entity\Device, SonataAdminBundle:CRUD]
+        tags:
+            - { name: sonata.admin, manager_type: orm, group: List, label: OLT, label_catalogue: StatsBundle, label_translator_strategy: sonata.admin.label.strategy.underscore }
+        calls:    
+            - [setTranslationDomain, [StatsBundle]]

+ 7 - 1
src/StatsBundle/Resources/translations/StatsBundle.es.yml

@@ -95,6 +95,9 @@ list:
     label_bias_current: Bias Current
     label_array_rx_power: Rx Power
     label_save_historic: Guardar Históricos
+    label_olt_mark: Marca
+    label_olt_library: Librería
+    label_olt_executeSnmp: Stats
     
 help:
     url: Url a consultar dispositivos
@@ -118,4 +121,7 @@ link_action_show_ponport_in_map: Ver en Mapa
 show_ponport: Mostrar PonPort
 link_action_add_onu_in_ftth: Agregar al sistema
 msg_no_registered_in_ftth: La ONU no se encuentra registrada en FTTH. Puede agregarla desde Acciones > Agregar al sistema.
-msg_no_exist_map: No se encuentra el mapa solicitado.
+msg_no_exist_map: No se encuentra el mapa solicitado.
+action_olt_show_report: Informe
+action_olt_show_onu: ONUs
+action_olt_show_ponport: PonPorts

+ 4 - 0
src/StatsBundle/Resources/views/Device/action_olt_show_onu.html.twig

@@ -0,0 +1,4 @@
+<a href="{{ url('admin_stats_onu_list') }}?filter[oltDeviceId][value]={{object.getDeviceId}}" class="btn btn-sm btn-default view_link" title="{{ 'action_olt_show_onu'|trans({}, 'StatsBundle') }}">
+    <i class="fa fa-align-justify" aria-hidden="true" style="font-size: 14px; vertical-align: bottom;"></i>
+    {{ 'action_olt_show_onu'|trans({}, 'StatsBundle') }}
+</a>

+ 4 - 0
src/StatsBundle/Resources/views/Device/action_olt_show_ponport.html.twig

@@ -0,0 +1,4 @@
+<a href="{{ url('admin_stats_ponport_list') }}?filter[oltDeviceId][value]={{object.getDeviceId}}" class="btn btn-sm btn-default view_link" title="{{ 'action_olt_show_ponport'|trans({}, 'StatsBundle') }}">
+    <i class="fa fa-align-justify" aria-hidden="true" style="font-size: 14px; vertical-align: bottom;"></i>
+    {{ 'action_olt_show_ponport'|trans({}, 'StatsBundle') }}
+</a>

+ 4 - 0
src/StatsBundle/Resources/views/Device/action_olt_show_report.html.twig

@@ -0,0 +1,4 @@
+<a href="#?filter[oltDeviceId][value]={{object.getDeviceId}}" class="btn btn-sm btn-default view_link" title="{{ 'action_olt_show_report'|trans({}, 'StatsBundle') }}">
+    <i class="fa fa-area-chart" aria-hidden="true" style="font-size: 14px; vertical-align: bottom;"></i>
+    {{ 'action_olt_show_report'|trans({}, 'StatsBundle') }}
+</a>

+ 16 - 0
src/StatsBundle/Resources/views/Device/extra_data_boolean_field.html.twig

@@ -0,0 +1,16 @@
+{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
+
+{% block field %}
+    
+    {% set column = field_description.options.column %}
+    {% set value = object.jsonExtraData() %}
+    {% if value[column] is defined %}
+        {% if value[column] == "true" or value[column] == 1 %}
+            <span class="label label-success">yes</span>
+        {% else %}
+            <span class="label label-danger">no</span>
+        {% endif %}
+    {% else %}
+        <span class="text_column_stats">{{ 'macroFields.notavailable'|trans({},'StatsBundle') }}</span>
+    {% endif %}
+{% endblock %}

+ 12 - 0
src/StatsBundle/Resources/views/Device/extra_data_text_field.html.twig

@@ -0,0 +1,12 @@
+{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
+
+{% block field %}
+    
+    {% set column = field_description.options.column %}
+    {% set value = object.jsonExtraData() %}
+    {% if value[column] is defined %}
+        {{value[column]}}
+    {% else %}
+        <span class="text_column_stats">{{ 'macroFields.notavailable'|trans({},'StatsBundle') }}</span>
+    {% endif %}
+{% endblock %}