avo-diff_field 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +12 -0
- data/avo-diff_field.gemspec +19 -0
- data/lib/avo/diff_field/fields/diff_field/index_component.html.erb +3 -0
- data/lib/avo/diff_field/fields/diff_field/index_component.rb +4 -0
- data/lib/avo/diff_field/fields/diff_field/show_component.html.erb +26 -0
- data/lib/avo/diff_field/fields/diff_field/show_component.rb +21 -0
- data/lib/avo/diff_field/fields/diff_field.rb +7 -0
- data/lib/avo/diff_field/plugin.rb +17 -0
- data/lib/avo/diff_field/railtie.rb +9 -0
- data/lib/avo/diff_field/version.rb +5 -0
- data/lib/avo/diff_field.rb +15 -0
- metadata +67 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6dcc424a0354283119606fb4ce6c8fbbe6481b2ce1bdecf61d937a36d52174b0
|
4
|
+
data.tar.gz: b7f50112c25b580fe6bc27c5c4c682a2a590d3f76b2925f9b82ff0ec61165ef9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 55f43bcf6d320bab05224741f9a8d71c4f03ab2e33aa8bf3bedd4b8afea328ea05844dae19f941330f8ff75261706d3b1d5f11f314cb14b519100bfc8b44cdd3
|
7
|
+
data.tar.gz: b8212ef0cbe0e756ec0edee402f097b690d3eb820decd5b6e3894e81ac62a4a4ecd13fc51c5e5443bf6a2b5bfb53b81e3ef320f9f31a90cb312f4b64123ed2c9
|
data/README.md
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# Avo Diff Field
|
2
|
+
|
3
|
+
A simple diff field for the [avo-hq/avo](https://github.com/avo-hq/avo), a Rails Admin Panel and Internal Tool Builder.
|
4
|
+
|
5
|
+
Docs available at [https://docs.avohq.io/3.0/fields/diff.html](https://docs.avohq.io/3.0/fields/diff.html)
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
field :audited_changes, as: :diff
|
11
|
+
```
|
12
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$:.push File.expand_path("lib", __dir__)
|
2
|
+
|
3
|
+
require "avo/diff_field/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "avo-diff_field"
|
7
|
+
spec.version = Avo::DiffField::VERSION
|
8
|
+
spec.summary = "Diff field for Avo."
|
9
|
+
spec.description = "Diff field for Avo."
|
10
|
+
spec.authors = ["Adrian Marin"]
|
11
|
+
spec.email = "adrian@adrianthedev.com"
|
12
|
+
|
13
|
+
spec.files = Dir["{lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "avo-diff_field.gemspec", "Gemfile", "Gemfile.lock"]
|
14
|
+
|
15
|
+
spec.homepage = "https://avohq.io"
|
16
|
+
spec.license = "MIT"
|
17
|
+
|
18
|
+
spec.add_dependency "diffy"
|
19
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<style>
|
2
|
+
.diff{overflow:auto;}
|
3
|
+
.diff ul{background:#fff;overflow:auto;list-style:none;margin:0;padding:0;display:table;width:100%;}
|
4
|
+
.diff del, .diff ins{display:block;text-decoration:none;}
|
5
|
+
.diff li{padding:0; display:table-row;margin: 0;height:1em;}
|
6
|
+
.diff li.ins{background:#dfd; color:#080}
|
7
|
+
.diff li.del{background:#fee; color:#b00}
|
8
|
+
/* try 'whitespace:pre;' if you don't want lines to wrap */
|
9
|
+
.diff del, .diff ins, .diff span{white-space:pre-wrap;font-family:courier;}
|
10
|
+
.diff del strong{font-weight:normal;background:#fcc;}
|
11
|
+
.diff ins strong{font-weight:normal;background:#9f9;}
|
12
|
+
.diff li.diff-comment { display: none; }
|
13
|
+
.diff li.diff-block-info { background: none repeat scroll 0 0 gray; }
|
14
|
+
</style>
|
15
|
+
|
16
|
+
<%= field_wrapper **field_wrapper_args do %>
|
17
|
+
<% resource_keys = @field.value.keys %>
|
18
|
+
<div class="space-y-2 bg-slate-50">
|
19
|
+
<% @diffy_value.each do |value| %>
|
20
|
+
<div class="border rounded p-2">
|
21
|
+
<div class="uppercase font-bold text-gray-500 text-xs"><%= value[0] %></div>
|
22
|
+
<div class="pt-2 pb-2"><%= value[1].to_s(:html).html_safe %></div>
|
23
|
+
</div>
|
24
|
+
<% end %>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Avo::DiffField::Fields::DiffField::ShowComponent < Avo::Fields::ShowComponent
|
4
|
+
def initialize **args
|
5
|
+
super(**args)
|
6
|
+
@diffy_value = @field.value&.map do |k, v|
|
7
|
+
case @field.record.action
|
8
|
+
when 'update'
|
9
|
+
left_value = v[0]
|
10
|
+
right_value = v[1]
|
11
|
+
when 'destroy'
|
12
|
+
left_value = v
|
13
|
+
right_value = ''
|
14
|
+
when 'create'
|
15
|
+
left_value = ''
|
16
|
+
right_value = v
|
17
|
+
end
|
18
|
+
[k, Diffy::Diff.new(left_value.to_s, right_value.to_s, format: :html, include_plus_and_minus_in_html: true)]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative "fields/diff_field"
|
2
|
+
require "diffy"
|
3
|
+
|
4
|
+
module Avo
|
5
|
+
module DiffField
|
6
|
+
class Plugin < Avo::Plugin
|
7
|
+
class << self
|
8
|
+
def boot
|
9
|
+
Avo.plugin_manager.register_field :diff, Avo::DiffField::Fields::DiffField
|
10
|
+
end
|
11
|
+
|
12
|
+
def init
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "zeitwerk"
|
2
|
+
require "avo"
|
3
|
+
require "avo/diff_field/version"
|
4
|
+
require "avo/diff_field/railtie"
|
5
|
+
|
6
|
+
loader = Zeitwerk::Loader.for_gem_extension(Avo)
|
7
|
+
loader.setup
|
8
|
+
|
9
|
+
module Avo
|
10
|
+
module DiffField
|
11
|
+
# Your code goes here...
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# loader.eager_load
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: avo-diff_field
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adrian Marin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-06-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: diffy
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Diff field for Avo.
|
28
|
+
email: adrian@adrianthedev.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- avo-diff_field.gemspec
|
35
|
+
- lib/avo/diff_field.rb
|
36
|
+
- lib/avo/diff_field/fields/diff_field.rb
|
37
|
+
- lib/avo/diff_field/fields/diff_field/index_component.html.erb
|
38
|
+
- lib/avo/diff_field/fields/diff_field/index_component.rb
|
39
|
+
- lib/avo/diff_field/fields/diff_field/show_component.html.erb
|
40
|
+
- lib/avo/diff_field/fields/diff_field/show_component.rb
|
41
|
+
- lib/avo/diff_field/plugin.rb
|
42
|
+
- lib/avo/diff_field/railtie.rb
|
43
|
+
- lib/avo/diff_field/version.rb
|
44
|
+
homepage: https://avohq.io
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
metadata: {}
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubygems_version: 3.4.10
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: Diff field for Avo.
|
67
|
+
test_files: []
|