Sha256: d96e3bef1057d1725f57d3bf6b039cac610b3e08132c8c4f6044ce855f893566

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

module PgAssociable
  module Helpers
    MAX_RESULTS = 8

    def pg_respond_abrir_modal
      src = clase_modelo.new.decorate.new_object_url
      turbo_frame_id = "modal_content_#{params[:id]}"
      content = ModalContentComponent.new(src:, turbo_frame_id:).render_in(view_context)
      modal = AsociableModalComponent.new(modal_id: params[:id]).with_content(content)
      render turbo_stream: turbo_stream.append_all('body', modal)
    end

    def pg_respond_buscar
      partial = 'pg_associable/resultados_inline'
      resultados_prefix = 'resultados-inline'
      query = params[:query]
      timeout_id = params[:timeout_id]
      @collection = search_in_scope(query)
      render turbo_stream:
        turbo_stream.update("#{resultados_prefix}-#{params[:id]}",
                            partial:, locals: { collection: @collection, query:, timeout_id: })
    end

    def search_in_scope(query)
      scope = policy_scope(clase_modelo).kept

      if clase_modelo.ransackable_attributes.include?('search')
        scope.ransack(search_cont: query).result
      else
        Rails.logger.warn("WARNING: #{clase_modelo} should implement a 'search' ransacker")

        if scope.respond_to?(:query)
          Rails.logger.warn("DEPRECATED WARNING: #{clase_modelo}#query is deprecated in favor of 'search' ransacker")
          scope.query(query)
        else
          scope.where(id: query)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pg_rails-7.6.8 pg_associable/app/helpers/pg_associable/helpers.rb
pg_rails-7.6.7 pg_associable/app/helpers/pg_associable/helpers.rb
pg_rails-7.6.6 pg_associable/app/helpers/pg_associable/helpers.rb