From 22a023f150715ee3954852bde8e7adb59a9ee77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20T=C3=A1mara=20Pati=C3=B1o?= Date: Wed, 23 Oct 2024 15:14:50 -0500 Subject: [PATCH] =?UTF-8?q?Cambio=20inicial=20interno=20de=20ubicacion=20p?= =?UTF-8?q?or=20ubicacionpre=20y=20uso=20de=20turbo=20en=20respectiva=20pe?= =?UTF-8?q?sta=C3=B1a=20del=20formulario=20caso.=20Closes=20#725?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock | 2 +- .../javascripts/sivel2_gen/motor.js.coffee | 42 --------------- .../caso_ubicacionespre_controller.rb | 8 +++ app/models/msip/ubicacionpre.rb | 8 +++ app/models/sivel2_gen/ability.rb | 21 ++++---- app/models/sivel2_gen/caso_ubicacionpre.rb | 8 +++ .../create.turbo_stream.erb | 20 +++++++ .../caso_ubicacionespre/destroy.html.erb | 10 ++++ .../casos/_caso_ubicacionpre_campos.html.erb | 53 +++++++++++++++++++ .../sivel2_gen/casos/_fuentesprensa.html.erb | 8 ++- .../sivel2_gen/casos/_reportegeneral.html.erb | 2 +- .../sivel2_gen/casos/_ubicaciones.html.erb | 32 ++++++----- config/routes.rb | 7 +++ .../caso_ubicacionespre_controller.rb | 32 +++++++++++ .../concerns/controllers/casos_controller.rb | 36 +++++++++++++ lib/sivel2_gen/concerns/models/caso.rb | 13 +++++ .../concerns/models/caso_ubicacionpre.rb | 34 ++++++++++++ .../concerns/models/ubicacionpre.rb | 13 +++++ test/dummy/db/structure.sql | 24 +++------ 19 files changed, 288 insertions(+), 85 deletions(-) create mode 100644 app/controllers/sivel2_gen/caso_ubicacionespre_controller.rb create mode 100644 app/models/msip/ubicacionpre.rb create mode 100644 app/models/sivel2_gen/caso_ubicacionpre.rb create mode 100644 app/views/sivel2_gen/caso_ubicacionespre/create.turbo_stream.erb create mode 100644 app/views/sivel2_gen/caso_ubicacionespre/destroy.html.erb create mode 100644 app/views/sivel2_gen/casos/_caso_ubicacionpre_campos.html.erb create mode 100644 lib/sivel2_gen/concerns/controllers/caso_ubicacionespre_controller.rb create mode 100644 lib/sivel2_gen/concerns/models/caso_ubicacionpre.rb create mode 100644 lib/sivel2_gen/concerns/models/ubicacionpre.rb diff --git a/Gemfile.lock b/Gemfile.lock index 3d2cfd542..e160b3c4d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/app/assets/javascripts/sivel2_gen/motor.js.coffee b/app/assets/javascripts/sivel2_gen/motor.js.coffee index 0965ca529..197286f3c 100644 --- a/app/assets/javascripts/sivel2_gen/motor.js.coffee +++ b/app/assets/javascripts/sivel2_gen/motor.js.coffee @@ -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) @@ -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); diff --git a/app/controllers/sivel2_gen/caso_ubicacionespre_controller.rb b/app/controllers/sivel2_gen/caso_ubicacionespre_controller.rb new file mode 100644 index 000000000..0cb6e2a63 --- /dev/null +++ b/app/controllers/sivel2_gen/caso_ubicacionespre_controller.rb @@ -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 diff --git a/app/models/msip/ubicacionpre.rb b/app/models/msip/ubicacionpre.rb new file mode 100644 index 000000000..018f4875a --- /dev/null +++ b/app/models/msip/ubicacionpre.rb @@ -0,0 +1,8 @@ + +require 'sivel2_gen/concerns/models/ubicacionpre' + +module Msip + class Ubicacionpre < ActiveRecord::Base + include Sivel2Gen::Concerns::Models::Ubicacionpre + end +end diff --git a/app/models/sivel2_gen/ability.rb b/app/models/sivel2_gen/ability.rb index 5b0fd3946..1daa18a3c 100644 --- a/app/models/sivel2_gen/ability.rb +++ b/app/models/sivel2_gen/ability.rb @@ -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 diff --git a/app/models/sivel2_gen/caso_ubicacionpre.rb b/app/models/sivel2_gen/caso_ubicacionpre.rb new file mode 100644 index 000000000..23e5827af --- /dev/null +++ b/app/models/sivel2_gen/caso_ubicacionpre.rb @@ -0,0 +1,8 @@ + +require 'sivel2_gen/concerns/models/caso_ubicacionpre' + +module Sivel2Gen + class CasoUbicacionpre < ActiveRecord::Base + include Sivel2Gen::Concerns::Models::CasoUbicacionpre + end +end diff --git a/app/views/sivel2_gen/caso_ubicacionespre/create.turbo_stream.erb b/app/views/sivel2_gen/caso_ubicacionespre/create.turbo_stream.erb new file mode 100644 index 000000000..09a32f2c9 --- /dev/null +++ b/app/views/sivel2_gen/caso_ubicacionespre/create.turbo_stream.erb @@ -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 %> diff --git a/app/views/sivel2_gen/caso_ubicacionespre/destroy.html.erb b/app/views/sivel2_gen/caso_ubicacionespre/destroy.html.erb new file mode 100644 index 000000000..834a5a60a --- /dev/null +++ b/app/views/sivel2_gen/caso_ubicacionespre/destroy.html.erb @@ -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 %> + diff --git a/app/views/sivel2_gen/casos/_caso_ubicacionpre_campos.html.erb b/app/views/sivel2_gen/casos/_caso_ubicacionpre_campos.html.erb new file mode 100644 index 000000000..dad05cdcd --- /dev/null +++ b/app/views/sivel2_gen/casos/_caso_ubicacionpre_campos.html.erb @@ -0,0 +1,53 @@ +<%= turbo_frame_tag "caso_ubicacionpre_#{f.index}" do %> +
+
+ <%= 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" + } %> + + +
+
+<% end %> diff --git a/app/views/sivel2_gen/casos/_fuentesprensa.html.erb b/app/views/sivel2_gen/casos/_fuentesprensa.html.erb index 5a0d151af..da275eac2 100644 --- a/app/views/sivel2_gen/casos/_fuentesprensa.html.erb +++ b/app/views/sivel2_gen/casos/_fuentesprensa.html.erb @@ -6,12 +6,16 @@ <%= 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 + } +%> diff --git a/app/views/sivel2_gen/casos/_reportegeneral.html.erb b/app/views/sivel2_gen/casos/_reportegeneral.html.erb index 5c1750689..1be36725e 100644 --- a/app/views/sivel2_gen/casos/_reportegeneral.html.erb +++ b/app/views/sivel2_gen/casos/_reportegeneral.html.erb @@ -50,7 +50,7 @@ <% end %>

<% if current_usuario %> - <% caso.ubicacion.each do |ub| %> + <% caso.ubicacionpre.each do |ub| %> <% next if ub.id == caso.ubicacion_id %>

<%= ub.departamento.nombre if ub.departamento%> / diff --git a/app/views/sivel2_gen/casos/_ubicaciones.html.erb b/app/views/sivel2_gen/casos/_ubicaciones.html.erb index 45a7b917f..a84abf961 100644 --- a/app/views/sivel2_gen/casos/_ubicaciones.html.erb +++ b/app/views/sivel2_gen/casos/_ubicaciones.html.erb @@ -1,13 +1,21 @@ -<%= f.simple_fields_for :ubicacion do |ubicacion| %> - <%= render 'ubicacion_fields', :f => ubicacion %> -<% end %> -