get("doctrine.orm.entity_manager"); $deviceServer = $this->getParameter("device_server_base"); $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer' => $deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT')); $choices = array(); foreach($olts as $olt) { $data = $olt->jsonExtraData(); $name = null; (isset($data['name']))? $name = $data['name'] : $name = $olt->getIp(); $choices[$name] = $olt->getDeviceId(); } $datagridMapper ->add('oltDeviceId', 'doctrine_orm_string', array(), 'choice', array('choices' => $choices)) ->add('deviceServer') ->add('tenancyId') ->add('ponPort') ; } /** * @param ListMapper $listMapper */ protected function configureListFields(ListMapper $listMapper) { $em = $this->get("doctrine.orm.entity_manager"); $servers = $em->getRepository("StatsBundle:DeviceServer")->findAll(); $olts_server = $urls_server = array(); foreach($servers as $deviceServer) { $urls = $this->get('webservice')->getData($deviceServer->getUrl()); $urls_server[$deviceServer->getId()] = $urls; $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer'=>$deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT')); $olts_server[$deviceServer->getId()] = array(); foreach($olts as $olt) { $data = $olt->jsonExtraData(); $name = null; if(isset($data['name'])) $name = $data['name']; $olts_server[$deviceServer->getId()][$olt->getDeviceId()] = $name; } } //print_r($urls_server);die; $this->parameters = array('urls_server' => $urls_server, 'olts_server' => $olts_server); $listMapper /* ->add('deviceServer') */ ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_list_field_olt.html.twig')) ->addIdentifier('ponPort') ->add('txPower', 'string', array('template' => 'StatsBundle:Onu:base_list_field_tx.html.twig')) ->add('arrayRxPower', 'ponport-rx-power', array('template' => 'StatsBundle:PonPort:base_list_field_rx.html.twig')) ->add('voltage', 'string', array('template' => 'StatsBundle:Onu:base_list_field_voltage.html.twig')) ->add('temperature', 'string', array('template' => 'StatsBundle:Onu:base_list_field_temperature.html.twig')) ->add('biasCurrent') ; } /** * @param FormMapper $formMapper */ protected function configureFormFields(FormMapper $formMapper) { } /** * @param ShowMapper $showMapper */ protected function configureShowFields(ShowMapper $showMapper) { $ponPort = $this->getSubject(); $oltDeviceId = $ponPort->getOltDeviceId(); $deviceServer = $ponPort->getDeviceServer(); $em = $this->get("doctrine.orm.entity_manager"); $q = $em->getRepository("StatsBundle:Onu")->createQueryBuilder('o'); $onus = $q->where($q->expr()->like('o.ponPort', ':ponPort')) ->andWhere('o.oltDeviceId = :oltDeviceId') ->andWhere('o.deviceServer = :deviceServer') ->setParameter('ponPort', "{$ponPort->getPonPort()}%") ->setParameter('oltDeviceId', $oltDeviceId) ->setParameter('deviceServer', $deviceServer) ->getQuery() ->getResult(); $onuPonPorts = $_onus = array(); if($onus) { $onuPonPorts = $ponPort->getArrayRxPower(); } foreach($onus as $onu) { $p = $onu->getPonPort(); $data = explode("/",$p); $onuIdIndex = 2; if(count($data) == 4) $onuIdIndex = 3; if(isset($data[$onuIdIndex])) { $rxPower = NULL; if(isset($onuPonPorts[$data[$onuIdIndex]])) { $rxPower = $onuPonPorts[$data[$onuIdIndex]]; } $_onus[$data[$onuIdIndex]] = array('onu' => $onu, 'rxPower' => $rxPower); } } ksort($_onus); $this->parameters = array('onus' => $_onus); $olt = $em->getRepository("StatsBundle:device")->findOneBy(array('deviceId' => $oltDeviceId, 'deviceServer'=>$deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT')); if($olt) { $data = $olt->jsonExtraData(); $oltName = null; if(isset($data['name'])) $oltName = $data['name']; } $showMapper ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_show_field_olt.html.twig','oltName' => $oltName)) ->add('ponPort') ->add('txPower', 'string', array('template' => 'StatsBundle:Onu:base_show_field_tx.html.twig')) ->add('voltage', 'string', array('template' => 'StatsBundle:Onu:base_show_field_voltage.html.twig')) ->add('temperature', 'string', array('template' => 'StatsBundle:Onu:base_show_field_temperature.html.twig')) ->add('biasCurrent') ; } /** * @param string $action * @param Object $object * * @return array */ public function configureActionButtons($action, $object = null) { $actions = parent::configureActionButtons($action, $object); if($action == "show") { $actions['show_in_map'] = array('template' => 'StatsBundle:PonPort:map_button.html.twig'); } return $actions; } protected function configureRoutes(RouteCollection $collection) { $collection->remove('delete'); $collection->remove('create'); $collection->remove('edit'); } }