pasosdeJesus/msip

View on GitHub
app/javascript/controllers/geodep_controller.js

Summary

Maintainability
A
55 mins
Test Coverage

import { Controller } from "@hotwired/stimulus"
// Controles de geografía pais, departamento, municipio, centro poblado
// dependientes

import Msip__Motor from "../msip/motor"

export default class extends Controller {
  // Conecta un área que incluye campos pais/dep/mun con 
  //   data-controller="msip--geodep"
  // En el campo para el país agrega
  //   data-action='change->msip--geodep#cambiar_pais'
  // En el campo para el departamento agrega
  //   data-action='change->msip--geodep#cambiar_departamento y
  //   data-msip--geodep-target='departamento'
  // En el campo para el municipio agrega
  //   data-action='change->msip--geodep#cambiar_municipio y
  //   data-msip--geodep-target='municipio'
  // En el campo para el centro poblado agrega
  //   data-action='change->msip--geodep#cambiar_centropoblado y
  //   data-msip--geodep-target='centropoblado'

  static targets = [ 
    "departamento", 
    "municipio", 
    "centropoblado", 
  ]

  initialize() {
    console.log('inicializa controlador geodep')
  }

  connect() {
    console.log('conectado controlador geodep')
  }

  cambiar_pais(e) {
    var purl = Msip__Motor.arreglarPuntoMontaje()

    console.log("departamento ahora es", this.departamentoTarget.value)
    let url = purl + '/admin/departamentos.json?pais_id=' + e.target.value
    window.Rails.ajax({
      type: 'GET',
      url: url,
      data: null,
      success: (resp, estado, xhr) => {
        if (this.hasDepartamentoTarget) {
          Msip__Motor.remplazarOpcionesSelect(this.departamentoTarget.id,
            resp, true, 'id', 'nombre', true)
          if (this.hasMunicipioTarget) {
            Msip__Motor.remplazarOpcionesSelect(this.municipioTarget.id,
              [], true, 'id', 'nombre', true)
            if (this.hasCentropobladoTarget) {
              Msip__Motor.remplazarOpcionesSelect(this.centropobladoTarget.id,
                [], true, 'id', 'nombre', true)
            }
          }
        }
      },
      error: (req, estado, xhr) => {
        window.alert('No pudo consultar departamentos')
      }
    })
  }

  cambiar_departamento(e) {
    var purl = Msip__Motor.arreglarPuntoMontaje()

    console.log("municipio ahora es", this.municipioTarget.value)
    let url = purl + '/admin/municipios.json?departamento_id=' + 
      e.target.value
    window.Rails.ajax({
      type: 'GET',
      url: url,
      data: null,
      success: (resp, estado, xhr) => {
        if (this.hasMunicipioTarget) {
          Msip__Motor.remplazarOpcionesSelect(this.municipioTarget.id,
            resp, true, 'id', 'nombre', true)
          if (this.hasCentropobladoTarget) {
            Msip__Motor.remplazarOpcionesSelect(this.centropobladoTarget.id,
              [], true, 'id', 'nombre', true)
          }
        }
      },
      error: (req, estado, xhr) => {
        window.alert('No pudo consultar municipios')
      }
    })
  }

  cambiar_municipio(e) {
    var purl = Msip__Motor.arreglarPuntoMontaje()

    console.log("centro poblado ahora es", this.centropobladoTarget.value)
    let url = purl + '/admin/centrospoblados.json?municipio_id=' + 
      e.target.value
    window.Rails.ajax({
      type: 'GET',
      url: url,
      data: null,
      success: (resp, estado, xhr) => {
        if (this.hasCentropobladoTarget) {
          Msip__Motor.remplazarOpcionesSelect(this.centropobladoTarget.id,
            resp, true, 'id', 'nombre', true)
        }
      },
      error: (req, estado, xhr) => {
        window.alert('No pudo consultar centrospoblados')
      }
    })
  }

  cambiar_centropoblado(e) {
  }
 


}