Kaynağa Gözat

FD3-708 se agrega a formulario de onu el campo onuTemplate para presetear los campos

Espinoza Guillermo 6 yıl önce
ebeveyn
işleme
0e8eb63171

+ 25 - 8
src/FTTHBundle/Admin/ONUAdmin.php

@@ -102,12 +102,17 @@ class ONUAdmin extends WorkflowBaseAdmin
      */
     protected function configureFormFields(FormMapper $formMapper)
     {
-        $em = $this->get("doctrine.orm.entity_manager");
-        $template = $em->getRepository(ONUTemplate::class)
-                    ->findOneBy(array(
-                        'base' => true,
-                    ));
         $subject = $this->getSubject();
+        $em = $this->get("doctrine.orm.entity_manager");
+        
+        // busco el ONU template si se pasa como parámetro
+        $template = null;
+        $onuTemplateId = $this->getRequest()->query->get('onu_template');
+        if ($onuTemplateId) {
+            $this->getRequest()->query->remove('onu_template');
+            $template = $em->getRepository(ONUTemplate::class)
+                        ->find($onuTemplateId);
+        }
 
         $marks = OLTModelMark::getChoices();
         foreach ($marks as $m) {
@@ -126,12 +131,11 @@ class ONUAdmin extends WorkflowBaseAdmin
 
         // Editando la ONU o hay template base o pasado como parámetro
         if ($subject->getId() || $template) {
+            $olt = null;
             if ($subject->getOlt()) {
                 $olt = $subject->getOlt();
             } elseif ($template) {
                 $olt = $template->getOlt();
-            } else {
-                $olt = null;
             }
             
             // Según el modelo de OLT se muestran algunos campos específicos
@@ -156,7 +160,20 @@ class ONUAdmin extends WorkflowBaseAdmin
 
         $formMapper
             ->tab('default')
-                ->with('')
+                ->with('');
+        
+        // Se agrega ONUTemplate solo en el create
+        if ($this->isCurrentRoute('create')) {
+            $formMapper->add('onuTemplate', 'entity', [
+                'class' => ONUTemplate::class,
+                'required' => false,
+                'mapped' => false,
+                'help' => $this->trans('helps.onuTemplate'),
+                'data' => $template,
+            ]);
+        }
+        
+        $formMapper
                     ->add('clientId')
                     ->add('ponSerialNumber', null, array(
                         'attr' => array(

+ 1 - 1
src/FTTHBundle/Entity/ONUTemplate.php

@@ -154,7 +154,7 @@ class ONUTemplate implements TenancyIdTraitInterface
      */
     public function __toString()
     {
-        return (string) $this->id;
+        return sprintf("ID: %s MODELO: %s PERFIL: %s OLT: %s ", $this->id, $this->model, $this->profile, $this->olt);
     }
 
     /**

+ 2 - 1
src/FTTHBundle/Resources/translations/FTTHBundle.es.yml

@@ -164,6 +164,7 @@ form:
     label_template: Template
     label_vlan_profile: VLAN Profile
     label_onu_profile: ONU Profile
+    label_onu_template: Plantilla ONU
 
 list:
     label_id: Id
@@ -306,7 +307,7 @@ helps:
     tr069_no_edit: El servicio TR069 se encuentra solamente disponible para la edición de la ONU/ONT.
     tr069_disabled: El servicio TR069 se encuentra deshabilitado.
     tr069_onu_no_detected: No se encontró la ONU/ONT en el servicio TR069.
-
+    onuTemplate: Al seleccionar una Plantilla de ONU se recargará la página y el formulario seteará sus valores 
 error:
     address_not_found: La dirección "%client_address%" no fue encontrada en los servicios de google.
 Distance: Distancia

+ 26 - 0
src/FTTHBundle/Resources/views/ONU/form.html.twig

@@ -237,6 +237,32 @@
                 });
             }
         }
+        
+        
+        // Al cambiar un valor de ONU Template se envía como parámetro el id
+        // y se recarga la página
+        function onuTemplateReloadPage()
+        {
+            if ($('#{{ admin.uniqid  ~ "_onuTemplate" }}')) {
+                var onuTemplateId = $('#{{ admin.uniqid  ~ "_onuTemplate" }}').val();
+                var url = '{{ path('admin_ftth_onu_create') }}';
+                if (onuTemplateId) {
+                    var parameters = ['onu_template=' + onuTemplateId];
+                    if (window.location.href.includes('?')) {
+                        var pieces = window.location.href.split('?');
+                        var parametersSplit = pieces[1].split('&');
+                        for (var i = 0; i < parametersSplit.length; i++) {
+                            var parameter = parametersSplit[i].split('=');
+                            if (parameter[0] != 'onu_template') {
+                                parameters.push(parametersSplit[i]);
+                            }
+                        }
+                    }
+                    window.location = url + '?' + parameters.join('&');
+                }
+            }
+        }
+        $('#{{ admin.uniqid  ~ "_onuTemplate" }}').on('change', onuTemplateReloadPage);
     </script>
 
 {% endblock %}