Browse Source

Campos de cliente en listado y filtro de CM

Maximiliano Schvindt 6 years ago
parent
commit
474d3c7af8

+ 28 - 3
src/StatsBundle/Admin/CablemodemAdmin.php

@@ -10,6 +10,8 @@ use Sonata\AdminBundle\Show\ShowMapper;
 use DeviceBundle\Utils\DeviceTypes;
 use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
 use Sonata\AdminBundle\Route\RouteCollection;
+use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
+use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
 
 class CablemodemAdmin extends BaseAdmin
 {
@@ -33,10 +35,30 @@ class CablemodemAdmin extends BaseAdmin
 
         $datagridMapper
             ->add('cmtsDeviceId', 'doctrine_orm_string', array(), 'choice', array('choices' => $choices))
-            ->add('deviceServer')
-            ->add('tenancyId')
-            ->add('ip')
             ->add('mac')
+            ->add('ip')
+            ->add('clientName', CallbackFilter::class, array(
+                'callback' => function (ProxyQuery $query, $alias, $field, $data) {
+                    if (!$data || !is_array($data) || !array_key_exists('value', $data) || !isset($data['value'])) {
+                        return;
+                    }
+
+                    $alias = $query->getRootAlias();
+                    $query
+                        ->andWhere("{$alias}.clientExternalId LIKE :id OR
+                                    {$alias}.clientAddress LIKE :id OR
+                                    {$alias}.clientName LIKE :id")
+                        ->setParameter('id', "%{$data['value']}%");
+                        
+                    return true;
+                },), null, [
+                    'attr' => [
+                        'placeholder' => $this->trans('sonata.filter.onu_client')
+                    ]
+                ])
+            ->add('upIf')
+            ->add('downIf')
+            ->add('status')
         ;
     }
 
@@ -98,6 +120,9 @@ class CablemodemAdmin extends BaseAdmin
             ->add('signalCmts',null, array('template' => 'StatsBundle:Cablemodem:field_snr_power_in_cm.html.twig'))
             /* ->add('microreflectionCmts',null, array('template' => 'StatsBundle:Cablemodem:field_microreflection_power_in_cm.html.twig')) */
             ->add('uptime',null, array('template' => 'StatsBundle:Cablemodem:field_uptime.html.twig'))
+            ->add('clientExternalId', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
+            ->add('clientName', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
+            ->add('clientAddress', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
             
         ;
     }

+ 3 - 3
src/StatsBundle/Admin/OnuAdmin.php

@@ -117,9 +117,9 @@ class OnuAdmin extends BaseAdmin
             ->add('outOctets',null, array('template' => 'StatsBundle:Onu:field_octets.html.twig'))
             ->add('rxPowerOlt', 'string', array('template' => 'StatsBundle:Onu:field_rx_in_olt.html.twig'))
             ->add('uptime', 'string', array('template' => 'StatsBundle:Onu:field_uptime.html.twig'))
-            ->add('clientExternalId','string',array('attr' => array('title' => 'External ID del cliente')))
-            ->add('clientName')
-            ->add('clientAddress')
+            ->add('clientExternalId', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
+            ->add('clientName', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
+            ->add('clientAddress', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
         ;
     }
 

+ 6 - 2
src/StatsBundle/Command/BaseCommand.php

@@ -272,7 +272,7 @@ abstract class BaseCommand extends ContainerAwareCommand
 
                 $mac = strtolower($extra['mac']);
 
-                $lat = $lng = NULL;
+                $clientId = $lat = $lng = NULL;
                 if(isset($extra['location']) && isset($extra['location']['extraData'])) 
                 {
                     if(isset($extra['location']['extraData']['lat'])) 
@@ -283,7 +283,11 @@ abstract class BaseCommand extends ContainerAwareCommand
 
                 }
 
-                $data[$mac] = array('deviceId' => $device->getDeviceId(), 'lat' => $lat, 'lng' => $lng);
+                if(isset($extra['clientId'])) {
+                    $clientId = $extra['clientId'];
+                }
+
+                $data[$mac] = array('deviceId' => $device->getDeviceId(), 'lat' => $lat, 'lng' => $lng, 'clientId' => $clientId);
             }
         }
 

File diff suppressed because it is too large
+ 17 - 1
src/StatsBundle/Command/StatsCmCommand.php


+ 2 - 0
src/StatsBundle/Entity/Cablemodem.php

@@ -9,6 +9,7 @@ use Symfony\Component\Validator\Constraints as Assert;
 use JMS\Serializer\Annotation as JMS;
 use Base\AdminBundle\Traits\TenancyIdTrait;
 use Base\AdminBundle\Traits\TenancyIdTraitInterface;
+use StatsBundle\Traits\ClientTrait;
 
 
 /**
@@ -19,6 +20,7 @@ use Base\AdminBundle\Traits\TenancyIdTraitInterface;
  */
 class Cablemodem implements TenancyIdTraitInterface
 {
+    use ClientTrait;
     use ExtraDataTrait;
     use TenancyIdTrait;
     

+ 11 - 0
src/StatsBundle/Resources/views/Templates/base_list_field_null.html.twig

@@ -0,0 +1,11 @@
+{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
+
+{% block field %}
+
+    {% if value is null or value is empty %}
+        <span class="text_column_stats">{{ 'macroFields.notavailable'|trans({},'StatsBundle') }}</span>
+    {% else %}
+        {{ value }}
+    {% endif %}
+
+{% endblock %}