Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ gem 'rubocop-packaging'
gem 'rubocop-performance'
gem 'rubocop-rails'
gem 'rubocop-rspec'
gem 'rubocop-rspec_rails'

# Tools
gem 'pry-rails'
9 changes: 3 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ bundle_install:

db_reset:
@rm -f spec/dummy/db/*.sqlite3
@docker compose -f extra/docker-compose.yml run --rm app bin/rails db:create db:migrate db:test:prepare
@docker compose -f extra/docker-compose.yml run --rm app bin/rails db:create db:migrate db:seed db:test:prepare

up: build bundle_install db_reset
@docker compose -f extra/docker-compose.yml up
Expand All @@ -34,16 +34,13 @@ down:

# App commands

seed:
@docker compose -f extra/docker-compose.yml exec app bin/rails db:seed

console: seed
console:
@docker compose -f extra/docker-compose.yml exec app bin/rails console

lint:
@docker compose -f extra/docker-compose.yml exec app bin/rubocop

server: seed
server:
@rm -f spec/dummy/tmp/pids/server.pid
@docker compose -f extra/docker-compose.yml exec app bin/rails server -b 0.0.0.0 -p ${SERVER_PORT}

Expand Down
51 changes: 51 additions & 0 deletions app/views/administrate_ransack/_filters.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<% content_for(:stylesheet) do %>
<style>
.main-content__header {
display: grid;
}
.main-content__header > div {
text-align: right;
}
.main-content__header > .ransack-search {
order: 2;
text-align: initial;
}

.ransack-search form {
grid-column-start: 1;
grid-column-end: 3;

display: grid;
grid-auto-flow: column;
grid-gap: 4px;
}

.ransack-search .filter > * {
margin-bottom: 4px;
}

.ransack-search .ransack-controls {
text-align: right;
margin: auto 0;
}

.ransack-search .selectize-input {
min-height: 39px;
}
</style>
<% end %>

<% render 'administrate_ransack/javascript' %>

<div class="ransack-search">
<% form_path = [namespace, @ransack_results] %>
<%= search_form_for(form_path, html: { 'data-administrate-ransack-filters': '1' }) do |f| %>
<% @fields.each do |field, data| %>
<% type = data.delete(:type) %>
<% attrs = { form: f, model: @model, field: field, type: type, options: data[:options] } %>
<%= render "administrate_ransack/components/field_#{type}", attrs %>
<% end %>

<%= render 'administrate_ransack/components/filter_buttons', form: f %>
<% end %>
</div>
36 changes: 0 additions & 36 deletions app/views/administrate_ransack/_filters.html.erb

This file was deleted.

5 changes: 4 additions & 1 deletion app/views/administrate_ransack/_javascript.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<% content_for :javascript do %>
<!-- [JS] -->
<script>
console.error('JS error!');

document.addEventListener('DOMContentLoaded', (_event) => {
// flatpickr setup
if(typeof window.flatpickr === 'function') {
Expand All @@ -10,7 +13,7 @@

// selectize setup
$(function () {
$('.filters select').selectize();
$('.ransack-search select').selectize();
});
});
</script>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<% association = model.reflections[field.to_s] %>
<% if association %>
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_eq" %>
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>

<%= form.label(label, class: 'filter-label') %>
<%= form.collection_select(field_key, collection, :id, desc, include_blank: true) %>
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.collection_select(options[:param], collection, :id, desc, include_blank: true) %>
</div>
<% end %>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_eq" %>
<% values = [[t('administrate_ransack.filters.no'), false], [t('administrate_ransack.filters.yes'), true]] %>

<%= form.label(label, class: 'filter-label') %>
<%= form.select(field_key, values, include_blank: true) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.select(options[:param], values, include_blank: true) %>
</div>
16 changes: 9 additions & 7 deletions app/views/administrate_ransack/components/_field_date.html.erb
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<%= form.label(label, class: 'filter-label') %>
<% if model.ransackable_scopes.include?(field) %>
<%= form.date_field(field, value: form.object.send(field)) %>
<% else %>
<%= form.date_field("#{field}_gteq") %>
<%= form.date_field("#{field}_lteq") %>
<% end %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<% if options[:range] %>
<%= form.date_field("#{field}_gteq") %>
<%= form.date_field("#{field}_lteq") %>
<% else %>
<%= form.date_field(options[:param], value: form.object.send(field)) %>
<% end %>
</div>
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<%= form.label(label, class: 'filter-label') %>
<% if model.ransackable_scopes.include?(field) %>
<%= form.datetime_field(field, value: form.object.send(field)) %>
<% else %>
<%= form.datetime_field("#{field}_gteq") %>
<%= form.datetime_field("#{field}_lteq") %>
<% end %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<% if options[:range] %>
<%= form.datetime_field("#{field}_gteq") %>
<%= form.datetime_field("#{field}_lteq") %>
<% else %>
<%= form.datetime_field(options[:param], value: form.object.send(field)) %>
<% end %>
</div>
30 changes: 16 additions & 14 deletions app/views/administrate_ransack/components/_field_has_many.html.erb
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
<% association = model.reflections[field.to_s] %>
<% if association %>
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_in" %>
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%# field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_in" %>
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>

<%= form.label(label, class: 'filter-label') %>
<% if options&.include? 'select' %>
<%= form.select(field_key, nil, {}, multiple: true) do %>
<%= options_from_collection_for_select(collection, :id, desc) %>
<% end %>
<% else %>
<%= form.collection_check_boxes(field_key, collection, :id, desc) do |b| %>
<%= b.label do %>
<%= b.check_box %>
<span><%= b.object.send(desc) %></span>
<%= form.label(options[:label], class: 'filter-label') %>
<% if options[:select] %>
<%= form.select(options[:param], nil, {}, multiple: true) do %>
<%= options_from_collection_for_select(collection, :id, desc) %>
<% end %>
<% else %>
<%= form.collection_check_boxes(options[:param], collection, :id, desc) do |b| %>
<%= b.label do %>
<%= b.check_box %>
<span><%= b.object.send(desc) %></span>
<% end %>
<% end %>
<% end %>
<% end %>
</div>
<% end %>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_eq" %>

<%= form.label(label, class: 'filter-label') %>
<%= form.number_field(field_key) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.number_field(options[:param]) %>
</div>
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<%= form.label(label, class: 'filter-label') %>
<%= form.search_field(field) %>

<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.search_field(options[:param]) %>
</div>
<%# unsupported Field::HasOne %>
<%# unsupported Field::Polymorphic %>
<%# unsupported Field::Password %>
10 changes: 5 additions & 5 deletions app/views/administrate_ransack/components/_field_select.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_eq" %>
<% collection = (type.respond_to?(:options) ? type.options[:collection] : []) || [] %>

<%= form.label(label, class: 'filter-label') %>
<%= form.select(field_key, collection, include_blank: true) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<% collection = options[:collection]&.respond_to?(:call) ? options[:collection].call : options[:collection] %>
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.select(options[:param], collection || [], include_blank: true) %>
</div>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_cont" %>

<%= form.label(label, class: 'filter-label') %>
<%= form.search_field(field_key) %>
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
<%= form.label(options[:label], class: 'filter-label') %>
<%= form.search_field(options[:param]) %>
</div>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<div class="filters-buttons">
<%= form.submit t('administrate_ransack.filters.search'), name: nil %>
<%= link_to t('administrate_ransack.filters.clear_filters'), clear_filters_path, class: 'btn-clear-filters' %>
<%= form.button t('administrate_ransack.filters.search'), name: nil, type: 'submit', class: 'btn-submit button--alt' %>
<%= link_to t('administrate_ransack.filters.clear_filters'), request.path, class: 'btn-clear-filters' %>
</div>
20 changes: 10 additions & 10 deletions lib/administrate_ransack/filters.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

module AdministrateRansack
FILTERS = {
'Administrate::Field::BelongsTo' => 'field_belongs_to',
'Administrate::Field::Boolean' => 'field_boolean',
'Administrate::Field::Date' => 'field_date',
'Administrate::Field::DateTime' => 'field_date',
'Administrate::Field::Email' => 'field_string',
'Administrate::Field::HasMany' => 'field_has_many',
'Administrate::Field::Number' => 'field_number',
'Administrate::Field::Select' => 'field_select',
'Administrate::Field::String' => 'field_string',
'Administrate::Field::Text' => 'field_string'
'Administrate::Field::BelongsTo' => :belongs_to,
'Administrate::Field::Boolean' => :boolean,
'Administrate::Field::Date' => :date,
'Administrate::Field::DateTime' => :date,
'Administrate::Field::Email' => :string,
'Administrate::Field::HasMany' => :has_many,
'Administrate::Field::Number' => :number,
'Administrate::Field::Select' => :select,
'Administrate::Field::String' => :string,
'Administrate::Field::Text' => :string
}.freeze
end
Loading