Skip to content

Commit

Permalink
Cambio inicial interno de ubicacion por ubicacionpre y uso de turbo e…
Browse files Browse the repository at this point in the history
…n respectiva pestaña del formulario caso. Closes #725
  • Loading branch information
vtamara committed Oct 23, 2024
1 parent b89b590 commit 22a023f
Show file tree
Hide file tree
Showing 19 changed files with 288 additions and 85 deletions.
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ GIT

GIT
remote: https://gitlab.com/pasosdeJesus/msip.git
revision: 7989958bcbc44605c27aa629171fd6f3aaf5bbab
revision: 1988385b522e329552aee0035df1e20fc9b22a34
branch: main
specs:
msip (2.3.0.alfa2)
Expand Down
42 changes: 0 additions & 42 deletions app/assets/javascripts/sivel2_gen/motor.js.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,6 @@ enviaFormularioContar= (root) ->
$('#ubicaciones').on('cocoon:after-insert', '', (e, ubicacion) ->
ubipais = 'select[id^=caso_][id$=pais_id]'
Msip__Motor.configurarElementoTomSelect(e.target)
llena_departamento($(ubicacion.find(ubipais)), root)
if $(".ubicacion:visible").length == 1
principal = $('input[type="checkbox"][name$="[principal]"]:visible')
principal.prop('checked', true)
Expand Down Expand Up @@ -522,47 +521,6 @@ enviaFormularioContar= (root) ->
otros.prop('checked', false)
)

# Al cambiar país se recalcula lista de departamentos
$(document).on('change', 'select[id^=caso_][id$=pais_id]', (e) ->
llena_departamento($(this), root)
# Exprimentando actualizar a medida que se modifica:
idfu = $(this).attr('id').replace('_pais_id', '_id');
idu = $('#' + idfu).val();
#if (idu > 0)
# $.ajax(url: '/ubicacion/' + idu + '/update/'
)

# Al cambiar departamento se recalcula lista de municipios
$(document).on('change', 'select[id^=caso_][id$=departamento_id]', (e) ->
llena_municipio($(this), root)
)

# Al cambiar municipio se recalcula lista de centros poblados
$(document).on('change', 'select[id^=caso_][id$=municipio_id]', (e) ->
llena_centropoblado($(this), root)
)


# Al cambiar centro poblado se muestra tipo
$(document).on('change', 'select[id^=caso_][id$=centropoblado_id]', (e) ->
centropoblado_id = $(this).val()
select = $(this)
b = root.puntomontaje + 'tipocentropoblado'
$.ajax({
url: b,
data: {id: centropoblado_id},
dataType: "json",
success: (datos) ->
tcentropoblado = datos.nombre
div_padre = select.closest("div")
div_tipo = div_padre.next()
input_tipo = div_tipo.find("input[id^=caso_ubicacion][id$=tcentropoblado]")
input_tipo.val(tcentropoblado)
error: (jqXHR, texto) ->
alert("Error: " + jqXHR.responseText)
})
)

# Tras eliminar presponsable, eliminar dependientes
$('#presponsables').on('cocoon:after-remove', '', (e, presponsable) ->
elimina_pendientes(root.elempe);
Expand Down
8 changes: 8 additions & 0 deletions app/controllers/sivel2_gen/caso_ubicacionespre_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require 'sivel2_gen/concerns/controllers/caso_ubicacionespre_controller'

module Sivel2Gen
class CasoUbicacionespreController < ApplicationController
load_and_authorize_resource class: Sivel2Gen::CasoUbicacionpre
include Sivel2Gen::Concerns::Controllers::CasoUbicacionespreController
end
end
8 changes: 8 additions & 0 deletions app/models/msip/ubicacionpre.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

require 'sivel2_gen/concerns/models/ubicacionpre'

module Msip
class Ubicacionpre < ActiveRecord::Base
include Sivel2Gen::Concerns::Models::Ubicacionpre
end
end
21 changes: 12 additions & 9 deletions app/models/sivel2_gen/ability.rb
Original file line number Diff line number Diff line change
Expand Up @@ -271,15 +271,18 @@ def self.initialize_sivel2_gen(habilidad, usuario = nil)
habilidad.can :mundep, Msip::Ubicacionpre


habilidad.can :manage, Sivel2Gen::CasoEtiqueta
habilidad.can :manage, Sivel2Gen::CasoFuenteprensa
habilidad.can :manage, Sivel2Gen::CasoFotra
habilidad.can :manage, Sivel2Gen::CasoPresponsable
habilidad.can :manage, Sivel2Gen::CasoSolicitud
habilidad.can :nuevo, Sivel2Gen::Combatiente
habilidad.can :nuevo, Sivel2Gen::Presponsable
habilidad.can :manage, Sivel2Gen::Victima
habilidad.can :manage, Sivel2Gen::Victimacolectiva
habilidad.can :manage, [
Sivel2Gen::CasoEtiqueta,
Sivel2Gen::CasoFuenteprensa,
Sivel2Gen::CasoFotra,
Sivel2Gen::CasoPresponsable,
Sivel2Gen::CasoSolicitud,
Sivel2Gen::CasoUbicacionpre,
Sivel2Gen::Combatiente,
Sivel2Gen::Presponsable,
Sivel2Gen::Victima,
Sivel2Gen::Victimacolectiva,
]

if usuario && usuario.rol then
habilidad.can :nuevo, Msip::Ubicacion
Expand Down
8 changes: 8 additions & 0 deletions app/models/sivel2_gen/caso_ubicacionpre.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

require 'sivel2_gen/concerns/models/caso_ubicacionpre'

module Sivel2Gen
class CasoUbicacionpre < ActiveRecord::Base
include Sivel2Gen::Concerns::Models::CasoUbicacionpre
end
end
20 changes: 20 additions & 0 deletions app/views/sivel2_gen/caso_ubicacionespre/create.turbo_stream.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<%= simple_form_for @caso do |form| %>
<%= form.simple_fields_for :caso_ubicacionpre,
child_index: params[:index] do |subf| %>
<%= turbo_stream.replace "agregar-caso-ubicacionpre" do %>
<%= form.submit "Agregar otra ubicacionpre",
formaction: sivel2_gen.crear_caso_ubicacionpre_path(
subf.index.to_i + 1
),
formmethod: :post,
formnovalidate: true,
class: 'btn btn-sm btn-primary',
id: "agregar-caso-ubicacionpre" %>
<% end %>
<%= turbo_stream.append "caso_ubicacionespre_marco" do %>
<%= render "/sivel2_gen/casos/caso_ubicacionpre_campos", f: subf %>
<% end %>
<% end %>
<% end %>
10 changes: 10 additions & 0 deletions app/views/sivel2_gen/caso_ubicacionespre/destroy.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<%= fields model: @caso do |f| %>
<%= f.simple_fields_for :caso_ubicacionpre,
child_index: params[:index] do |subf| %>
<%= turbo_frame_tag "caso_ubicacionpre_#{subf.index}" do %>
<%= subf.hidden_field :id, value: params[:id] %>
<%= subf.hidden_field :_destroy, value: true %>
<% end %>
<% end %>
<% end %>

53 changes: 53 additions & 0 deletions app/views/sivel2_gen/casos/_caso_ubicacionpre_campos.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
<%= turbo_frame_tag "caso_ubicacionpre_#{f.index}" do %>
<div class="control-group nested-fields seccionubicacionpre">
<div class="controls">
<%= f.input :id, as: :hidden %>
<% if f.object.ubicacionpre.nil? %>
<% f.object.ubicacionpre = Msip::Ubicacionpre.new %>
<% end %>
<%= f.input :ubicacionpre_id, as: :hidden %>
<% htmlid = f.index %>
<%= render partial: "msip/ubicacionespre/cuatro_filas", locals: {
f: f,
htmlid: "ubicacionpre-#{htmlid}",
estilogen: "",
campopais: :ubicacionpre_pais,
campopais_etiqueta: "País",
campodepartamento: :ubicacionpre_departamento,
campodepartamento_etiqueta: "Departamento",
campomunicipio: :ubicacionpre_municipio,
campomunicipio_etiqueta: "Municipio",
idresto: "restoubicacionpre",
campocentropoblado: :ubicacionpre_centropoblado,
campocentropoblado_etiqueta: "Centro poblado",
campolugar: :ubicacionpre_lugar,
campolugar_etiqueta: "Barrio o vereda",
campoubicacionpre_id: :ubicacionpre_id,
campositio: :ubicacionpre_sitio,
campositio_etiqueta: "Dirección o finca",
campotsitio: :ubicacionpre_tsitio,
campotsitio_etiqueta: "Tipo de sitio",
campolatitud: :ubicacionpre_latitud,
campolatitud_etiqueta: "Latitud",
campolongitud: :ubicacionpre_longitud,
campolongitud_etiqueta: "Longitud"
} %>

<div class="links">
<%= f.submit "Eliminar",
formaction: sivel2_gen.eliminar_caso_ubicacionpre_path(
id: f.object.id, index: f.index),
formmethod: :delete,
formnovalidate: true,
class: "btn btn-sm btn-danger",
data: {
disable_with: false,
turbo_frame: "caso_ubicacionpre_#{f.index}",
turbo_method: :delete
} %>
</div>
</div>
</div>
<% end %>
8 changes: 6 additions & 2 deletions app/views/sivel2_gen/casos/_fuentesprensa.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@
</div>

<%= f.submit "Agregar fuente",
formaction: sivel2_gen.crear_caso_fuenteprensa_path(index: @caso.fuenteprensa.size),
formaction: sivel2_gen.crear_caso_fuenteprensa_path(
index: @caso.fuenteprensa.size
),
formmethod: :post,
formnovalidate: true,
class: 'btn btn-sm btn-primary',
name: "agregar-caso-fuenteprensa",
id: "agregar-caso-fuenteprensa",
data: {
disable_with: false } %>
disable_with: false
}
%>

2 changes: 1 addition & 1 deletion app/views/sivel2_gen/casos/_reportegeneral.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
<% end %>
</p>
<% if current_usuario %>
<% caso.ubicacion.each do |ub| %>
<% caso.ubicacionpre.each do |ub| %>
<% next if ub.id == caso.ubicacion_id %>
<p style="margin: 0; padding: 0">
<%= ub.departamento.nombre if ub.departamento%> /
Expand Down
32 changes: 20 additions & 12 deletions app/views/sivel2_gen/casos/_ubicaciones.html.erb
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
<%= f.simple_fields_for :ubicacion do |ubicacion| %>
<%= render 'ubicacion_fields', :f => ubicacion %>
<% end %>
<div class="links">
<%= link_to_add_association 'Añadir Ubicación', f, :ubicacion, {
:class => 'btn btn-sm btn-primary',
"data-ajax" => File.join(
Rails.configuration.relative_url_root ,
"ubicaciones/nuevo"
),
"data-ajaxdata" => "caso_id"
} %>
<div id="caso_ubicacionespre_marco">
<%= f.simple_fields_for :caso_ubicacionpre,
f.object.caso_ubicacionpre.order(:id),
child_index: params[:index] do |cubi| %>
<%= render 'sivel2_gen/casos/caso_ubicacionpre_campos', :f => cubi %>
<% end %>
</div>

<%= f.submit "Agregar ubicacion",
formaction: sivel2_gen.crear_caso_ubicacionpre_path(
index: @caso.caso_ubicacionpre.size
),
formmethod: :post,
formnovalidate: true,
class: 'btn btn-sm btn-primary',
name: "agregar-caso-ubicacionpre",
id: "agregar-caso-ubicacionpre",
data: {
disable_with: false
}
%>
7 changes: 7 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,13 @@
end
end

resources :caso_ubicacionpre, only: [], param: :index do
member do
delete '(:id)', to: "caso_ubicacionespre#destroy", as: "eliminar"
post '/' => "caso_ubicacionespre#create", as: "crear"
end
end

resources :familiar, only: [], param: :index do
member do
delete '(:id)', to: "familiares#eliminar_familiar", as: "eliminar"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module Sivel2Gen
module Concerns
module Controllers
module CasoUbicacionespreController
extend ActiveSupport::Concern

included do
include ActionView::Helpers::AssetUrlHelper

before_action :prepara_caso

def destroy
end

def create
end

private

def prepara_caso
@caso = Sivel2Gen::Caso.new(
caso_ubicacionpre: [Sivel2Gen::CasoUbicacionpre.new]
)
end

end # included

end
end
end
end

36 changes: 36 additions & 0 deletions lib/sivel2_gen/concerns/controllers/casos_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -858,6 +858,27 @@ def asignar_id_personatrelacion(
# PATCH/PUT /casos/1.json
def update_gen
respond_to do |format|

if (caso_params[:caso_ubicacionpre_attributes])
# Usa ubicacionepre existente o agrega si hace falta
caso_params[:caso_ubicacionpre_attributes].each do |clave, cu|
if cu[:ubicacionpre_pais_id]
upid = Msip::Ubicacionpre::buscar_o_agregar(
cu[:ubicacionpre_pais_id],
cu[:ubicacionpre_departamento_id],
cu[:ubicacionpre_municipio_id],
cu[:ubicacionpre_centropoblado_id],
cu[:ubicacionpre_lugar],
cu[:ubicacionpre_sitio],
cu[:ubicacionpre_tsitio_id],
cu[:ubicacionpre_latitud],
cu[:ubicacionpre_longitud]
)
params[:caso][:caso_ubicacionpre_attributes][clave]["ubicacionpre_id"] = upid
end
end
end

# En etiquetas pone usuario actual por omision
if (!params[:caso][:caso_etiqueta_attributes].nil?)
params[:caso][:caso_etiqueta_attributes].each do |k,v|
Expand Down Expand Up @@ -1395,6 +1416,21 @@ def lista_params_sivel2_gen
:usuarionotificar_ids => []
]
],
:caso_ubicacionpre_attributes => [
:id,
:ubicacionpre_id,
:ubicacionpre_centropoblado_id,
:ubicacionpre_departamento_id,
:ubicacionpre_municipio_id,
:ubicacionpre_pais_id,
:ubicacionpre_tsitio_id,
:ubicacionpre_latitud,
:ubicacionpre_longitud,
:ubicacionpre_lugar,
:ubicacionpre_principal,
:ubicacionpre_sitio,
:_destroy,
],
:combatiente_attributes => [
:alias,
:edad,
Expand Down
13 changes: 13 additions & 0 deletions lib/sivel2_gen/concerns/models/caso.rb
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,19 @@ module Caso
class_name: 'Sivel2Gen::CasoUsuario', dependent: :delete_all
has_many :usuario, :through => :caso_usuario, class_name: 'Usuario'

has_many :caso_ubicacionpre,
class_name: "Sivel2Gen::CasoUbicacionpre",
dependent: :delete_all,
foreign_key: "caso_id"
accepts_nested_attributes_for :caso_ubicacionpre,
allow_destroy: true,
reject_if: :all_blank
has_many :ubicacionpre, through: :caso_ubicacionpre,
class_name: 'Msip::Ubicacionpre'
accepts_nested_attributes_for :ubicacionpre,
allow_destroy: true,
reject_if: :all_blank

has_many :ubicacion, foreign_key: "caso_id", validate: true,
dependent: :destroy, class_name: 'Msip::Ubicacion'
accepts_nested_attributes_for :ubicacion, allow_destroy: true,
Expand Down
Loading

0 comments on commit 22a023f

Please sign in to comment.