OnuAdmin.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace StatsBundle\Admin;
  3. use Base\AdminBundle\Admin\BaseAdmin;
  4. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  5. use Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\AdminBundle\Show\ShowMapper;
  8. use DeviceBundle\Utils\DeviceTypes;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Sonata\AdminBundle\Route\RouteCollection;
  11. use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
  12. use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
  13. class OnuAdmin extends BaseAdmin
  14. {
  15. /**
  16. * @param DatagridMapper $datagridMapper
  17. */
  18. protected function configureDatagridFilters(DatagridMapper $datagridMapper)
  19. {
  20. $em = $this->get("doctrine.orm.entity_manager");
  21. $deviceServer = $this->getParameter("device_server_base");
  22. $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer' => $deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT'));
  23. $choices = array();
  24. foreach($olts as $olt) {
  25. $data = $olt->jsonExtraData();
  26. $name = null;
  27. (isset($data['name']))? $name = $data['name'] : $name = $olt->getIp();
  28. $choices[$name] = $olt->getDeviceId();
  29. }
  30. $datagridMapper
  31. ->add('oltDeviceId', 'doctrine_orm_string', array(), 'choice', array('choices' => $choices))
  32. ->add('ponSerialNumber', CallbackFilter::class, array(
  33. 'callback' => function (ProxyQuery $query, $alias, $field, $data) {
  34. if (!$data || !is_array($data) || !array_key_exists('value', $data) || !isset($data['value'])) {
  35. return;
  36. }
  37. $alias = $query->getRootAlias();
  38. $query
  39. ->andWhere("{$alias}.serialNumber LIKE :id OR
  40. {$alias}.ponSerialNumber LIKE :id")
  41. ->setParameter('id', "%{$data['value']}%");
  42. return true;
  43. },), null, [
  44. 'attr' => [
  45. 'placeholder' => $this->trans('sonata.filter.onu_id')
  46. ]
  47. ])
  48. ->add('clientName', CallbackFilter::class, array(
  49. 'callback' => function (ProxyQuery $query, $alias, $field, $data) {
  50. if (!$data || !is_array($data) || !array_key_exists('value', $data) || !isset($data['value'])) {
  51. return;
  52. }
  53. $alias = $query->getRootAlias();
  54. $query
  55. ->andWhere("{$alias}.clientExternalId LIKE :id OR
  56. {$alias}.clientAddress LIKE :id OR
  57. {$alias}.clientName LIKE :id")
  58. ->setParameter('id', "%{$data['value']}%");
  59. return true;
  60. },), null, [
  61. 'attr' => [
  62. 'placeholder' => $this->trans('sonata.filter.onu_client')
  63. ]
  64. ])
  65. ->add('ponPort')
  66. ->add('status')
  67. ;
  68. }
  69. /**
  70. * @param ListMapper $listMapper
  71. */
  72. protected function configureListFields(ListMapper $listMapper)
  73. {
  74. $em = $this->get("doctrine.orm.entity_manager");
  75. $servers = $em->getRepository("StatsBundle:DeviceServer")->findAll();
  76. $olts_server = $urls_server = array();
  77. foreach($servers as $deviceServer) {
  78. $urls = $this->get('webservice')->getData($deviceServer->getUrl());
  79. $urls_server[$deviceServer->getId()] = $urls;
  80. $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer'=>$deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT'));
  81. $olts_server[$deviceServer->getId()] = array();
  82. foreach($olts as $olt) {
  83. $data = $olt->jsonExtraData();
  84. $name = null;
  85. if(isset($data['name'])) $name = $data['name'];
  86. $olts_server[$deviceServer->getId()][$olt->getDeviceId()] = $name;
  87. }
  88. }
  89. $this->parameters = array('urls_server' => $urls_server, 'olts_server' => $olts_server);
  90. $listMapper
  91. ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_list_field_olt.html.twig'))
  92. ->add('ponSerialNumber', 'string', array('template' => 'StatsBundle:Onu:show_link.html.twig'))
  93. ->add('serialNumber', 'string', array('template' => 'StatsBundle:Templates:base_list_field_upper.html.twig'))
  94. ->add('index')
  95. ->add('ponPort')
  96. ->add('status',null, array('template' => 'StatsBundle:Templates:field_status.html.twig'))
  97. ->add('txPower', 'string', array('template' => 'StatsBundle:Onu:field_tx.html.twig'))
  98. ->add('rxPower', 'string', array('template' => 'StatsBundle:Onu:field_rx.html.twig'))
  99. ->add('voltage', 'string', array('template' => 'StatsBundle:Onu:field_voltage.html.twig'))
  100. ->add('temperature', 'string', array('template' => 'StatsBundle:Onu:field_temperature.html.twig'))
  101. ->add('inOctets',null, array('template' => 'StatsBundle:Onu:field_octets.html.twig'))
  102. ->add('outOctets',null, array('template' => 'StatsBundle:Onu:field_octets.html.twig'))
  103. ->add('rxPowerOlt', 'string', array('template' => 'StatsBundle:Onu:field_rx_in_olt.html.twig'))
  104. ->add('uptime', 'string', array('template' => 'StatsBundle:Onu:field_uptime.html.twig'))
  105. ->add('clientExternalId', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
  106. ->add('clientName', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
  107. ->add('clientAddress', 'string', array('template' => 'StatsBundle:Templates:base_list_field_null.html.twig'))
  108. ;
  109. }
  110. /**
  111. * @param FormMapper $formMapper
  112. */
  113. protected function configureFormFields(FormMapper $formMapper)
  114. {
  115. }
  116. /**
  117. * @param ShowMapper $showMapper
  118. */
  119. protected function configureShowFields(ShowMapper $showMapper)
  120. {
  121. $from = $this->getRequest()->get('from');
  122. $to = $this->getRequest()->get('to');
  123. $this->parameters = array('from' => $from, 'to' => $to);
  124. }
  125. /**
  126. * @param string $action
  127. * @param Object $object
  128. *
  129. * @return array
  130. */
  131. public function configureActionButtons($action, $object = null)
  132. {
  133. $actions = parent::configureActionButtons($action, $object);
  134. /* if($action == "list") {
  135. $actions['show_in_map'] = array('template' => 'StatsBundle:Onu:map_button.html.twig');
  136. } */
  137. return $actions;
  138. }
  139. protected function configureRoutes(RouteCollection $collection)
  140. {
  141. $collection->remove('delete');
  142. $collection->remove('create');
  143. $collection->remove('edit');
  144. }
  145. }