paper_view 0.2.0 → 0.2.2

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: 70d6d49240ad0e8a0742aef1bfff9360fe2bc0e57b3090f7178077086a69b56a
4
+ data.tar.gz: 29218cc81545764a0458f3635a0f3b8bc720202b72efe9507e51f97f29ac408a
5
5
  SHA512:
6
- metadata.gz: baaecb34237b30125aa4cb6d082241336ec38cb8ec76e7292e15f4d0185ba26c56ad0e32a99b925fd96350064e18ae408d2b7e2ed7ce4271d1c25e9f954b6dca
7
- data.tar.gz: d15fdc166fe827652b429666ef5fe1ea4eb8189edf33a0a7428eff19bd95c5ecf8ea8e1eeafb066a28b0bde9cebcbcdad2f4c82e012b96a391c1aa9431f9ee6d
6
+ metadata.gz: c3c9f444f804a5d5ef5b5458ca25f28a1c568892117def85c160699195f7ce08731dff3c47f3078c033d3fe673e8bf08b2f7e9f8759c1dd209f5828b190f9720
7
+ data.tar.gz: e1197a30bb440dadb18071e4237113a3e2c9b330d2891e48106d294564281181849e479b83cb2200d675233174bd935ca5c012c051fdbdad6b77307f3e21aaa3
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
 
@@ -205,6 +205,7 @@
205
205
  background: var(--pv-surface);
206
206
  border: 1px solid var(--pv-border);
207
207
  border-radius: var(--pv-radius);
208
+ overflow: clip;
208
209
  }
209
210
  .pv-card__head {
210
211
  display: flex;
@@ -213,7 +214,6 @@
213
214
  padding: 14px 18px;
214
215
  background: var(--pv-surface-muted);
215
216
  border-bottom: 1px solid var(--pv-border);
216
- border-radius: var(--pv-radius) var(--pv-radius) 0 0;
217
217
  }
218
218
  .pv-card__title { font: 600 14px/1.2 var(--pv-sans); color: var(--pv-ink); }
219
219
  .pv-card__meta { font: 400 13px/1.2 var(--pv-sans); color: var(--pv-ink-soft); }
@@ -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.2"
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.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leon Vogt