CmtsInterfaceAdmin.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  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. class CmtsInterfaceAdmin extends BaseAdmin
  12. {
  13. /**
  14. * @param DatagridMapper $datagridMapper
  15. */
  16. protected function configureDatagridFilters(DatagridMapper $datagridMapper)
  17. {
  18. $em = $this->get("doctrine.orm.entity_manager");
  19. $deviceServer = $this->getParameter("device_server_base");
  20. $cmtss = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer' => $deviceServer, 'deviceType' => 'CablemodemBundle\Entity\CMTS'));
  21. $choices = array();
  22. foreach($cmtss as $cmts) {
  23. $data = $cmts->jsonExtraData();
  24. $name = null;
  25. (isset($data['name']))? $name = $data['name'] : $name = $cmts->getIp();
  26. $choices[$name] = $cmts->getDeviceId();
  27. }
  28. $datagridMapper
  29. ->add('cmtsDeviceId', 'doctrine_orm_string', array(), 'choice', array('choices' => $choices))
  30. ->add('deviceServer')
  31. ->add('tenancyId')
  32. ->add('index')
  33. ->add('name')
  34. ;
  35. }
  36. /**
  37. * @param ListMapper $listMapper
  38. */
  39. protected function configureListFields(ListMapper $listMapper)
  40. {
  41. $em = $this->get("doctrine.orm.entity_manager");
  42. $servers = $em->getRepository("StatsBundle:DeviceServer")->findAll();
  43. $cmtss_server = $urls_server = array();
  44. foreach($servers as $deviceServer) {
  45. $urls = $this->get('webservice')->getData($deviceServer->getUrl());
  46. $urls_server[$deviceServer->getId()] = $urls;
  47. $cmtss = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer'=>$deviceServer, 'deviceType' => 'CablemodemBundle\Entity\CMTS'));
  48. $cmtss_server[$deviceServer->getId()] = array();
  49. foreach($cmtss as $cmts) {
  50. $data = $cmts->jsonExtraData();
  51. $name = null;
  52. if(isset($data['name'])) $name = $data['name'];
  53. $cmtss_server[$deviceServer->getId()][$cmts->getDeviceId()] = $name;
  54. }
  55. }
  56. //print_r($urls_server);die;
  57. $this->parameters = array('urls_server' => $urls_server, 'cmtss_server' => $cmtss_server);
  58. $listMapper
  59. /* ->add('deviceServer') */
  60. //->add('extraData','string', array('template' => 'StatsBundle:CmtsInterface:base_list_field_extraData.html.twig'))
  61. ->add('cmtsDeviceId', 'string', array('template' => 'StatsBundle:CmtsInterface:base_list_field_cmts.html.twig'))
  62. ->add('index')
  63. ->addIdentifier('name')
  64. ->add('jsonExtraData', 'string', array('template' => 'StatsBundle:CmtsInterface:field_extra_data.html.twig'))
  65. ->add('signal','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_signal.html.twig'))
  66. ->add('microreflection','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_microreflection.html.twig'))
  67. ->add('utilization','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_utilization.html.twig'))
  68. ->add('inOctets','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_octets.html.twig'))
  69. ->add('outOctets','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_octets.html.twig'))
  70. ->add('online','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_count_cablemodem.html.twig'))
  71. ->add('offline','string', array('template' => 'StatsBundle:CmtsInterface:interface_field_count_cablemodem.html.twig'))
  72. ;
  73. }
  74. /**
  75. * @param FormMapper $formMapper
  76. */
  77. protected function configureFormFields(FormMapper $formMapper)
  78. {
  79. }
  80. /**
  81. * @param ShowMapper $showMapper
  82. */
  83. protected function configureShowFields(ShowMapper $showMapper)
  84. {
  85. $interface = $this->getSubject();
  86. $cmtsDeviceId = $interface->getCmtsDeviceId();
  87. $deviceServer = $interface->getDeviceServer();
  88. $em = $this->get("doctrine.orm.entity_manager");
  89. /* $q = $em->getRepository("StatsBundle:Cablemodem")->createQueryBuilder('o');
  90. $onus = $q->where($q->expr()->like('o.ponPort', ':ponPort'))
  91. ->andWhere('o.oltDeviceId = :oltDeviceId')
  92. ->andWhere('o.deviceServer = :deviceServer')
  93. ->setParameter('ponPort', "{$ponPort->getPonPort()}%")
  94. ->setParameter('oltDeviceId', $oltDeviceId)
  95. ->setParameter('deviceServer', $deviceServer)
  96. ->getQuery()
  97. ->getResult();
  98. $onuPonPorts = $_onus = array();
  99. if($onus) {
  100. $onuPonPorts = $ponPort->getArrayRxPower();
  101. }
  102. foreach($onus as $onu) {
  103. $p = $onu->getPonPort();
  104. $data = explode("/",$p);
  105. $onuIdIndex = 2;
  106. if(count($data) == 4) $onuIdIndex = 3;
  107. if(isset($data[$onuIdIndex])) {
  108. $rxPower = NULL;
  109. if(isset($onuPonPorts[$data[$onuIdIndex]])) {
  110. $rxPower = $onuPonPorts[$data[$onuIdIndex]];
  111. }
  112. $_onus[$data[$onuIdIndex]] = array('onu' => $onu, 'rxPower' => $rxPower);
  113. }
  114. }
  115. ksort($_onus);
  116. $this->parameters = array('onus' => $_onus); */
  117. $cmts = $em->getRepository("StatsBundle:device")->findOneBy(array('deviceId' => $cmtsDeviceId, 'deviceServer'=>$deviceServer, 'deviceType' => 'CablemodemBundle\Entity\CMTS'));
  118. if($cmts) {
  119. $data = $cmts->jsonExtraData();
  120. $cmtsName = null;
  121. if(isset($data['name'])) $cmtsName = $data['name'];
  122. }
  123. $showMapper
  124. ->add('cmtsDeviceId', 'string', array('template' => 'StatsBundle:CmtsInterface:base_show_field_cmts.html.twig','cmtsName' => $cmtsName))
  125. ->add('index')
  126. ->add('name')
  127. ->add('jsonExtraData', 'string', array('template' => 'StatsBundle:CmtsInterface:field_extra_data.html.twig', 'extend' => 'base_show_field.html.twig'))
  128. ;
  129. }
  130. /**
  131. * @param string $action
  132. * @param Object $object
  133. *
  134. * @return array
  135. */
  136. public function configureActionButtons($action, $object = null)
  137. {
  138. $actions = parent::configureActionButtons($action, $object);
  139. /* if($action == "show") {
  140. $actions['show_in_map'] = array('template' => 'StatsBundle:PonPort:map_button.html.twig');
  141. } */
  142. return $actions;
  143. }
  144. protected function configureRoutes(RouteCollection $collection)
  145. {
  146. $collection->remove('delete');
  147. $collection->remove('create');
  148. $collection->remove('edit');
  149. }
  150. }