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 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,3 @@
1
+ <%= index_field_wrapper **field_wrapper_args do %>
2
+ <%= @field.value.keys.join(", ").truncate 20 %>
3
+ <% end %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::DiffField::Fields::DiffField::IndexComponent < Avo::Fields::IndexComponent
4
+ 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,7 @@
1
+ class Avo::DiffField::Fields::DiffField < Avo::Fields::BaseField
2
+ def initialize(id, **args, &block)
3
+ super(id, **args, &block)
4
+
5
+ hide_on [:forms]
6
+ end
7
+ 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,9 @@
1
+ module Avo
2
+ module DiffField
3
+ class Railtie < Rails::Railtie
4
+ initializer "avo-diff_field.init" do
5
+ Avo.plugin_manager.register Avo::DiffField::Plugin
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ module Avo
2
+ module DiffField
3
+ VERSION = "0.0.1" unless const_defined?(:VERSION)
4
+ end
5
+ 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: []