Skip to content

Commit f155adf

Browse files
committed
feat!: filter resources refactoring
1 parent 9fa9620 commit f155adf

31 files changed

Lines changed: 292 additions & 248 deletions
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<% content_for(:stylesheet) do %>
2+
<style>
3+
.main-content__header {
4+
display: grid;
5+
}
6+
.main-content__header > div {
7+
text-align: right;
8+
}
9+
.main-content__header > .ransack-search {
10+
order: 2;
11+
text-align: initial;
12+
}
13+
14+
.ransack-search form {
15+
grid-column-start: 1;
16+
grid-column-end: 3;
17+
18+
display: grid;
19+
grid-auto-flow: column;
20+
grid-gap: 4px;
21+
}
22+
23+
.ransack-search .filter > * {
24+
margin-bottom: 4px;
25+
}
26+
27+
.ransack-search .ransack-controls {
28+
text-align: right;
29+
margin: auto 0;
30+
}
31+
32+
.ransack-search .selectize-input {
33+
min-height: 39px;
34+
}
35+
</style>
36+
<% end %>
37+
38+
<% render 'administrate_ransack/javascript' %>
39+
40+
<div class="ransack-search">
41+
<% form_path = [namespace, @ransack_results] %>
42+
<%= search_form_for(form_path, html: { 'data-administrate-ransack-filters': '1' }) do |f| %>
43+
<% @fields.each do |field, data| %>
44+
<% type = data.delete(:type) %>
45+
<% attrs = { form: f, model: @model, field: field, type: type, options: data[:options] } %>
46+
<%= render "administrate_ransack/components/field_#{type}", attrs %>
47+
<% end %>
48+
49+
<%= render 'administrate_ransack/components/filter_buttons', form: f %>
50+
<% end %>
51+
</div>

app/views/administrate_ransack/_filters.html.erb

Lines changed: 0 additions & 36 deletions
This file was deleted.

app/views/administrate_ransack/_javascript.html.erb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<% content_for :javascript do %>
2+
<!-- [JS] -->
23
<script>
4+
console.error('JS error!');
5+
36
document.addEventListener('DOMContentLoaded', (_event) => {
47
// flatpickr setup
58
if(typeof window.flatpickr === 'function') {
@@ -10,7 +13,7 @@
1013

1114
// selectize setup
1215
$(function () {
13-
$('.filters select').selectize();
16+
$('.ransack-search select').selectize();
1417
});
1518
});
1619
</script>
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<% association = model.reflections[field.to_s] %>
22
<% if association %>
3-
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_eq" %>
4-
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
5-
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
3+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
4+
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
5+
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
66

7-
<%= form.label(label, class: 'filter-label') %>
8-
<%= form.collection_select(field_key, collection, :id, desc, include_blank: true) %>
7+
<%= form.label(options[:label], class: 'filter-label') %>
8+
<%= form.collection_select(options[:param], collection, :id, desc, include_blank: true) %>
9+
</div>
910
<% end %>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_eq" %>
21
<% values = [[t('administrate_ransack.filters.no'), false], [t('administrate_ransack.filters.yes'), true]] %>
3-
4-
<%= form.label(label, class: 'filter-label') %>
5-
<%= form.select(field_key, values, include_blank: true) %>
2+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
3+
<%= form.label(options[:label], class: 'filter-label') %>
4+
<%= form.select(options[:param], values, include_blank: true) %>
5+
</div>
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
<%= form.label(label, class: 'filter-label') %>
2-
<% if model.ransackable_scopes.include?(field) %>
3-
<%= form.date_field(field, value: form.object.send(field)) %>
4-
<% else %>
5-
<%= form.date_field("#{field}_gteq") %>
6-
<%= form.date_field("#{field}_lteq") %>
7-
<% end %>
1+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
2+
<%= form.label(options[:label], class: 'filter-label') %>
3+
<% if model.ransackable_scopes.include?(field) %>
4+
<%= form.date_field(field, value: form.object.send(field)) %>
5+
<% else %>
6+
<%= form.date_field("#{field}_gteq") %>
7+
<%= form.date_field("#{field}_lteq") %>
8+
<% end %>
9+
</div>
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
<%= form.label(label, class: 'filter-label') %>
2-
<% if model.ransackable_scopes.include?(field) %>
3-
<%= form.datetime_field(field, value: form.object.send(field)) %>
4-
<% else %>
5-
<%= form.datetime_field("#{field}_gteq") %>
6-
<%= form.datetime_field("#{field}_lteq") %>
7-
<% end %>
1+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
2+
<%= form.label(options[:label], class: 'filter-label') %>
3+
<% if model.ransackable_scopes.include?(field) %>
4+
<%= form.datetime_field(field, value: form.object.send(field)) %>
5+
<% else %>
6+
<%= form.datetime_field("#{field}_gteq") %>
7+
<%= form.datetime_field("#{field}_lteq") %>
8+
<% end %>
9+
</div>
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
<% association = model.reflections[field.to_s] %>
22
<% if association %>
3-
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_in" %>
4-
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
5-
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
3+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
4+
<%# field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_id_in" %>
5+
<% desc = association.klass.method_defined?(:admin_label) ? :admin_label : :to_s %>
6+
<% collection = association.klass.send(association.klass.respond_to?(:admin_scope) ? :admin_scope : :all) %>
67

7-
<%= form.label(label, class: 'filter-label') %>
8-
<% if options&.include? 'select' %>
9-
<%= form.select(field_key, nil, {}, multiple: true) do %>
10-
<%= options_from_collection_for_select(collection, :id, desc) %>
11-
<% end %>
12-
<% else %>
13-
<%= form.collection_check_boxes(field_key, collection, :id, desc) do |b| %>
14-
<%= b.label do %>
15-
<%= b.check_box %>
16-
<span><%= b.object.send(desc) %></span>
8+
<%= form.label(options[:label], class: 'filter-label') %>
9+
<% if options[:select] %>
10+
<%= form.select(options[:param], nil, {}, multiple: true) do %>
11+
<%= options_from_collection_for_select(collection, :id, desc) %>
12+
<% end %>
13+
<% else %>
14+
<%= form.collection_check_boxes(options[:param], collection, :id, desc) do |b| %>
15+
<%= b.label do %>
16+
<%= b.check_box %>
17+
<span><%= b.object.send(desc) %></span>
18+
<% end %>
1719
<% end %>
1820
<% end %>
19-
<% end %>
21+
</div>
2022
<% end %>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<% field_key = model.ransackable_scopes.include?(field) ? field : "#{field}_eq" %>
2-
3-
<%= form.label(label, class: 'filter-label') %>
4-
<%= form.number_field(field_key) %>
1+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
2+
<%= form.label(options[:label], class: 'filter-label') %>
3+
<%= form.number_field(options[:param]) %>
4+
</div>
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
<%= form.label(label, class: 'filter-label') %>
2-
<%= form.search_field(field) %>
3-
1+
<div class="filter filter-<%= field.to_s.parameterize %> <%= type %>">
2+
<%= form.label(options[:label], class: 'filter-label') %>
3+
<%= form.search_field(options[:param]) %>
4+
</div>
45
<%# unsupported Field::HasOne %>
56
<%# unsupported Field::Polymorphic %>
67
<%# unsupported Field::Password %>

0 commit comments

Comments
 (0)