paper_view 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5b8c10c7eacd5de4647ef283af9a141770cdee45592572ea0c5b690991f3990
4
- data.tar.gz: c245d622bd0061bba67a1ef574938d83c83c01717688efd8ecede618bcb02b43
3
+ metadata.gz: e74561ab048bdc7e58f0b46e1771ed22dc0639248fabd4f73cc4d57255b03351
4
+ data.tar.gz: eb30982ddad7c762f35f63bd1e2e9fde35a47616584fe0dbc446fde562f2836b
5
5
  SHA512:
6
- metadata.gz: baaecb34237b30125aa4cb6d082241336ec38cb8ec76e7292e15f4d0185ba26c56ad0e32a99b925fd96350064e18ae408d2b7e2ed7ce4271d1c25e9f954b6dca
7
- data.tar.gz: d15fdc166fe827652b429666ef5fe1ea4eb8189edf33a0a7428eff19bd95c5ecf8ea8e1eeafb066a28b0bde9cebcbcdad2f4c82e012b96a391c1aa9431f9ee6d
6
+ metadata.gz: e8bd5fa49f64607df5b87c31747759a8f5b0a46a90b490f42504b74733cadaebbd86d9c342bdf4ee9a89012c260522abd3c91062ff5a6b795b2517ac4015e5c2
7
+ data.tar.gz: be954c77e76e95a4ad341bb41c97e3499ca69c661eaae800ddd8aa13fbf8c4fd8d5142c2876376f789872af4a1134ac11c8fa059bdfc56e97a2fcf949f3ded64
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  A lightweight, mountable dashboard for [paper_trail](https://github.com/paper-trail-gem/paper_trail).
4
4
  Browse the `versions` table and read, in a chronological timeline, what actually changed.
5
5
 
6
- ![preview](https://res.cloudinary.com/dlvuixik3/image/upload/v1789159753/paper_view_preview_aclugn.png)
6
+ ![preview](https://res.cloudinary.com/dlvuixik3/image/upload/v1789366964/paper_view_demo_gdhadu.png)
7
7
 
8
8
  ## Installation
9
9
 
@@ -19,18 +19,6 @@ module PaperView
19
19
  .map { |chunk| Group.new(day_label(chunk.first.date), chunk) }
20
20
  end
21
21
 
22
- def items
23
- @items ||= rows.map(&:item_key).uniq
24
- end
25
-
26
- def multi_item_view?
27
- items.size != 1
28
- end
29
-
30
- def title
31
- multi_item_view? ? "All changes" : rows.first.item_label
32
- end
33
-
34
22
  def selected
35
23
  @selected ||= rows.find { |row| row.id.to_s == @selected_id.to_s } || newest
36
24
  end
@@ -23,16 +23,25 @@ module PaperView
23
23
  end
24
24
 
25
25
  def relation
26
- scope = PaperView.version_class.all
27
- scope = scope.where(item_type: searched_item_types) if searched_item_types
28
- scope = scope.where(item_id: item_id) if item_id
29
- scope = scope.where(event: event) if event
30
- scope.order(created_at: sort.to_sym, id: sort.to_sym)
26
+ filtered.order(created_at: sort.to_sym, id: sort.to_sym)
27
+ end
28
+
29
+ def matched_item_types
30
+ return [item_type] if item_type
31
+ return [] unless item_id
32
+
33
+ @matched_item_types ||= filtered.unscope(:order).distinct.pluck(:item_type)
34
+ end
35
+
36
+ def single_item?
37
+ item_id.present? && matched_item_types.size == 1
31
38
  end
32
39
 
33
- def label
34
- return "All versions" unless item_type
35
- item_id ? "#{item_type} ##{item_id}" : item_type
40
+ def title
41
+ return "All changes" unless item_type || item_id
42
+ return item_type unless item_id
43
+
44
+ single_item? ? "#{matched_item_types.first} ##{item_id}" : "Item ##{item_id}"
36
45
  end
37
46
 
38
47
  private
@@ -41,6 +50,14 @@ module PaperView
41
50
  @versions_table ||= VersionsTable.new
42
51
  end
43
52
 
53
+ def filtered
54
+ scope = PaperView.version_class.all
55
+ scope = scope.where(item_type: searched_item_types) if searched_item_types
56
+ scope = scope.where(item_id: item_id) if item_id
57
+ scope = scope.where(event: event) if event
58
+ scope
59
+ end
60
+
44
61
  def searched_item_types
45
62
  return @searched_item_types if defined?(@searched_item_types)
46
63
 
@@ -30,15 +30,11 @@
30
30
  </section>
31
31
  <% else %>
32
32
  <section class="pv-card">
33
- <div class="pv-card__head">
34
- <span class="pv-card__title">Weight by item type</span>
35
- </div>
36
-
37
33
  <div class="pv-stats">
38
34
  <div class="pv-stat pv-stat--head">
39
35
  <span>Item type</span>
40
36
  <span class="pv-stat__figure">Versions</span>
41
- <span class="pv-stat__figure">Estimated payload</span>
37
+ <span class="pv-stat__figure">Size</span>
42
38
  <span>Share</span>
43
39
  </div>
44
40
 
@@ -27,11 +27,11 @@
27
27
  <div class="pv-layout">
28
28
  <section class="pv-card">
29
29
  <div class="pv-card__head">
30
- <span class="pv-card__title"><%= @timeline.title %></span>
30
+ <span class="pv-card__title"><%= @query.title %></span>
31
31
 
32
32
  <span class="pv-card__meta">
33
33
  <%= number_with_delimiter(@paginator.total_count) %>
34
- <%= "version".pluralize(@paginator.total_count) %><%= " · #{@timeline.items.size} items" if @timeline.multi_item_view? %>
34
+ <%= "version".pluralize(@paginator.total_count) %><%= " · #{@query.matched_item_types.size} item types" if @query.matched_item_types.size > 1 %>
35
35
  </span>
36
36
 
37
37
  <span class="pv-spacer"></span>
@@ -58,7 +58,7 @@
58
58
  <div class="pv-timeline__day"><%= group.label %></div>
59
59
 
60
60
  <% group.rows.each do |row| %>
61
- <%= render "paper_view/versions/timeline_row", row: row, multi_item_view: @timeline.multi_item_view?, selected: row == @timeline.selected %>
61
+ <%= render "paper_view/versions/timeline_row", row: row, multi_item_view: !@query.single_item?, selected: row == @timeline.selected %>
62
62
  <% end %>
63
63
  </div>
64
64
  <% end %>
@@ -69,7 +69,7 @@
69
69
 
70
70
  <aside class="pv-side" data-pv-panels>
71
71
  <% @timeline.rows.each do |row| %>
72
- <%= render "paper_view/versions/panel", row: row, multi_item_view: @timeline.multi_item_view?, active: row == @timeline.selected %>
72
+ <%= render "paper_view/versions/panel", row: row, multi_item_view: !@query.single_item?, active: row == @timeline.selected %>
73
73
  <% end %>
74
74
  </aside>
75
75
  </div>
@@ -1,3 +1,3 @@
1
1
  module PaperView
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_view
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Vogt