administrate-field-jsontable 0.0.1 → 0.1.0

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.
Files changed (54) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +96 -0
  4. data/Gemfile +9 -1
  5. data/Gemfile.lock +153 -118
  6. data/LICENSE.md +1 -1
  7. data/README.md +11 -23
  8. data/Rakefile +11 -0
  9. data/administrate-field-jsontable.gemspec +8 -6
  10. data/app/views/fields/jsontable/_index.html.erb +18 -0
  11. data/app/views/fields/jsontable/_json_table_field.html.erb +30 -0
  12. data/app/views/fields/jsontable/_show.html.erb +6 -33
  13. data/lib/administrate/field/jsontable.rb +2 -0
  14. data/spec/example_app/app/assets/config/manifest.js +2 -0
  15. data/spec/example_app/app/assets/javascripts/application.js +15 -0
  16. data/spec/example_app/app/assets/stylesheets/application.css +15 -0
  17. data/spec/example_app/app/controllers/application_controller.rb +7 -0
  18. data/spec/example_app/app/models/application_record.rb +5 -0
  19. data/spec/example_app/app/views/layouts/application.html.erb +31 -0
  20. data/spec/example_app/app/views/pages/.keep +0 -0
  21. data/spec/example_app/config.ru +6 -0
  22. data/spec/example_app/config/application.rb +39 -0
  23. data/spec/example_app/config/boot.rb +4 -0
  24. data/spec/example_app/config/database.yml +11 -0
  25. data/spec/example_app/config/environment.rb +7 -0
  26. data/spec/example_app/config/environments/development.rb +39 -0
  27. data/spec/example_app/config/environments/production.rb +78 -0
  28. data/spec/example_app/config/environments/staging.rb +3 -0
  29. data/spec/example_app/config/environments/test.rb +43 -0
  30. data/spec/example_app/config/initializers/assets.rb +13 -0
  31. data/spec/example_app/config/initializers/backtrace_silencers.rb +8 -0
  32. data/spec/example_app/config/initializers/cookies_serializer.rb +5 -0
  33. data/spec/example_app/config/initializers/disable_xml_params.rb +5 -0
  34. data/spec/example_app/config/initializers/errors.rb +20 -0
  35. data/spec/example_app/config/initializers/filter_parameter_logging.rb +6 -0
  36. data/spec/example_app/config/initializers/inflections.rb +18 -0
  37. data/spec/example_app/config/initializers/json_encoding.rb +3 -0
  38. data/spec/example_app/config/initializers/mime_types.rb +5 -0
  39. data/spec/example_app/config/initializers/session_store.rb +5 -0
  40. data/spec/example_app/config/initializers/wrap_parameters.rb +16 -0
  41. data/spec/example_app/config/routes.rb +4 -0
  42. data/spec/example_app/config/secrets.yml +15 -0
  43. data/spec/example_app/db/schema.rb +18 -0
  44. data/spec/example_app/db/seeds.rb +8 -0
  45. data/spec/example_app/public/robots.txt +5 -0
  46. data/spec/fixtures/jsontable/array_contains_hash.html +1 -0
  47. data/spec/fixtures/jsontable/hash_contains_array.html +31 -0
  48. data/spec/fixtures/jsontable/pure_hash.html +58 -0
  49. data/spec/lib/administrate/field/jsontable_index_spec.rb +95 -0
  50. data/spec/lib/administrate/field/jsontable_show_spec.rb +95 -0
  51. data/spec/lib/administrate/field/jsontable_spec.rb +16 -5
  52. data/spec/rails_helper.rb +6 -0
  53. data/spec/support/read_fixture.rb +7 -0
  54. metadata +93 -17
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 DisruptiveAngels
3
+ Copyright (c) 2019 Valiot
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,33 +1,21 @@
1
1
  # Administrate::Field::Jsontable
2
2
 
3
- A plugin to show JSON to table attributes in [Administrate].
3
+ A plugin to display the values of a JSON into a table. If the JSON has no data
4
+ of a field it will display a "-". This gem only displays 1 or 2 rows.
4
5
 
5
- This repository is the first field plugin extracted out of Administrate.
6
- Although its structure may change,
7
- it's designed to act as a template for other Administrate field plugins.
6
+ ![JsonTable](https://user-images.githubusercontent.com/7603314/29417081-9fa39038-832d-11e7-9189-b1baaccd8ec6.png)
8
7
 
9
- ## FAQs
8
+ This repository is a field plugin for Administrate.
10
9
 
11
- **Q: How should I name my gem?**
10
+ ## Installation
12
11
 
13
- A: Administrate field gems must be named according to the [Rubygems naming guidelines].
12
+ Add to your gemfile `gem 'administrate-field-jsontable'`
14
13
 
15
- Essentially, name your gem after the field class that it defines.
16
- If there's a namespace in the class name, that gets translated to a dash (`-`) in the gem name.
17
- If the class name is CamelCased, that translates to an underscore (`_`) in the gem name.
18
-
19
- Since all administrate field gems are under the namespace `Administrate::Field`,
20
- every field gem name should start with the prefix `administrate-field-`.
21
-
22
- Here are some examples (these don't correspond to actual gems):
14
+ [Administrate]: https://github.com/thoughtbot/administrate
23
15
 
24
- | Gem Name | Field Name |
25
- |----------------------------|------------------------------|
26
- | `administrate-field-enum` | `Administrate::Field::Enum` |
27
- | `administrate-field-file_upload` | `Administrate::Field::FileUpload` |
28
- | `administrate-field-geocoding-region` | `Administrate::Field::Geocoding::Region` |
29
- | `administrate-field-geocoding-geo_json` | `Administrate::Field::Geocoding::GeoJson` |
16
+ ## Contributing
30
17
 
31
- [Rubygems naming guidelines]: http://guides.rubygems.org/name-your-gem/
18
+ Run `bundle exec rake db:setup` to set up example rails app on development environment
19
+ Run `bundle exec rspec` to run tests
20
+ Run `bundle exec rubocop` to linting tests
32
21
 
33
- [Administrate]: https://github.com/thoughtbot/administrate
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ require File.expand_path('spec/example_app/config/application', __dir__)
10
+
11
+ Rails.application.load_tasks
@@ -1,11 +1,13 @@
1
- $:.push File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
4
 
3
5
  Gem::Specification.new do |s|
4
6
  s.name = 'administrate-field-jsontable'
5
- s.version = '0.0.1'
6
- s.authors = ['Enrique Barragan', 'Esteban Arocha']
7
- s.email = ['enrique@disruptiveangels.com','esteban@disruptiveangels.com']
8
- s.homepage = 'https://github.com/DisruptiveAngels/administrate-field-jsontable'
7
+ s.version = '0.1.0'
8
+ s.authors = ['Adrian Rangel', 'Enrique Barragan']
9
+ s.email = ['adrian@valiot.io', 'enrique@valiot.io']
10
+ s.homepage = 'https://github.com/Valiot/administrate-field-jsontable'
9
11
  s.summary = 'JSON to table field plugin for Administrate'
10
12
  s.description = s.summary
11
13
  s.license = 'MIT'
@@ -15,5 +17,5 @@ Gem::Specification.new do |s|
15
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
18
 
17
19
  s.add_dependency 'administrate'
18
- s.add_dependency 'rails', '>= 4.2', '< 5.1'
20
+ s.add_dependency 'rails', '>= 4.2'
19
21
  end
@@ -0,0 +1,18 @@
1
+ <%#
2
+ # Enum Show Partial
3
+
4
+ This partial renders an enum attribute,
5
+ to be displayed on a resource's show page.
6
+
7
+ By default, the attribute is rendered as a text tag.
8
+
9
+ ## Local variables:
10
+
11
+ - `field`:
12
+ An instance of [Administrate::Field::Enum][1].
13
+ A wrapper around the enum attributes pulled from the model.
14
+
15
+ %>
16
+
17
+
18
+ <%= render partial: '/fields/jsontable/json_table_field', locals: { data: field.data } %>
@@ -0,0 +1,30 @@
1
+ <%#
2
+ # Enum Show Partial
3
+
4
+ This partial renders an enum attribute,
5
+ to be displayed on a resource's show page.
6
+
7
+ By default, the attribute is rendered as a text tag.
8
+
9
+ ## Local variables:
10
+
11
+ - `field`:
12
+ An instance of [Administrate::Field::Enum][1].
13
+ A wrapper around the enum attributes pulled from the model.
14
+
15
+ %>
16
+
17
+ <% if data.kind_of?(Hash) %>
18
+ <table>
19
+ <tbody>
20
+ <% data.each do |key, value| %>
21
+ <tr>
22
+ <td><%= key %></td>
23
+ <td><%= if value.blank? then "-" else render partial: '/fields/jsontable/json_table_field', locals: { data: value } end %></td>
24
+ </tr>
25
+ <% end %>
26
+ <tbody>
27
+ </table>
28
+ <% else %>
29
+ <%= if data.blank? then "-" else data end %>
30
+ <% end %>
@@ -1,7 +1,7 @@
1
1
  <%#
2
- # JSON to table Show Partial
2
+ # Enum Show Partial
3
3
 
4
- This partial renders an JSON to table attribute,
4
+ This partial renders an enum attribute,
5
5
  to be displayed on a resource's show page.
6
6
 
7
7
  By default, the attribute is rendered as a text tag.
@@ -9,37 +9,10 @@ By default, the attribute is rendered as a text tag.
9
9
  ## Local variables:
10
10
 
11
11
  - `field`:
12
- An instance of [Administrate::Field::Jsontable][1].
13
- A wrapper around the JSON to table attributes pulled from the model.
12
+ An instance of [Administrate::Field::Enum][1].
13
+ A wrapper around the enum attributes pulled from the model.
14
14
 
15
15
  %>
16
16
 
17
- <table>
18
- <thead>
19
- <tr>
20
- <% field.data.each do |k,v| %>
21
- <th><%= k %></th>
22
- <% end %>
23
- </tr>
24
- </thead>
25
- <tbody>
26
- <% if field.data.first[1].kind_of?(Array) %>
27
- <tr>
28
- <% field.data.each do |k,v| %>
29
- <td><%= if v[0].blank? then "-" else v[0] end %></td>
30
- <% end %>
31
- </tr>
32
- <tr>
33
- <% field.data.each do |k,v| %>
34
- <td><%= if v[1].blank? then "-" else v[1] end %></td>
35
- <% end %>
36
- </tr>
37
- <% else %>
38
- <tr>
39
- <% field.data.each do |k,v| %>
40
- <td><%= if v.blank? then "-" else v end %></td>
41
- <% end %>
42
- </tr>
43
- <% end %>
44
- </tbody>
45
- </table>
17
+
18
+ <%= render partial: '/fields/jsontable/json_table_field', locals: { data: field.data } %>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'administrate/field/base'
2
4
  require 'rails'
3
5
 
@@ -0,0 +1,2 @@
1
+ //= link administrate/application.css
2
+ //= link administrate/application.js
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationController < ActionController::Base
4
+ # Prevent CSRF attacks by raising an exception.
5
+ # For APIs, you may want to use :null_session instead.
6
+ protect_from_forgery with: :exception
7
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationRecord < ActiveRecord::Base
4
+ self.abstract_class = true
5
+ end
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="ROBOTS" content="NOODP" />
6
+ <meta name="viewport" content="initial-scale=1" />
7
+ <%#
8
+ Configure default and controller-, and view-specific titles in
9
+ config/locales/en.yml. For more see:
10
+ https://github.com/calebthompson/title#usage
11
+ %>
12
+ <title><%= title %></title>
13
+ <%= stylesheet_link_tag "//fonts.googleapis.com/css?family=Lato:300,400,900", media: "all" %>
14
+ <%= stylesheet_link_tag :application, media: "all" %>
15
+ <%= csrf_meta_tags %>
16
+ </head>
17
+
18
+ <body class="<%= body_class %>">
19
+ <main class="main">
20
+ <%= render "navigation" -%>
21
+
22
+ <div class="content">
23
+ <%= render "flashes" -%>
24
+
25
+ <%= yield %>
26
+
27
+ <%= render "javascript" %>
28
+ </div>
29
+ </main>
30
+ </body>
31
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file is used by Rack-based servers to start the application.
4
+
5
+ require ::File.expand_path('config/environment', __dir__)
6
+ run Rails.application
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('boot', __dir__)
4
+
5
+ require 'active_model/railtie'
6
+ require 'active_record/railtie'
7
+ require 'active_job/railtie'
8
+ require 'action_controller/railtie'
9
+ require 'action_view/railtie'
10
+ require 'sprockets/railtie'
11
+
12
+ # Require the gems listed in Gemfile, including any gems
13
+ # you've limited to :test, :development, or :production.
14
+ Bundler.require(*Rails.groups)
15
+
16
+ module AdministrateJsontablePrototype
17
+ class Application < Rails::Application
18
+ config.i18n.enforce_available_locales = true
19
+
20
+ config.generators do |generate|
21
+ generate.helper false
22
+ generate.javascript_engine false
23
+ generate.request_specs false
24
+ generate.routing_specs false
25
+ generate.stylesheets false
26
+ generate.test_framework :rspec
27
+ generate.view_specs false
28
+ end
29
+
30
+ config.action_controller.action_on_unpermitted_parameters = :raise
31
+
32
+ if Rails::VERSION::MAJOR < 5
33
+ # Do not swallow errors in after_commit/after_rollback callbacks.
34
+ config.active_record.raise_in_transactional_callbacks = true
35
+ end
36
+
37
+ config.active_record.time_zone_aware_types = %i[datetime time] if Rails::VERSION::MAJOR >= 5
38
+ end
39
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__)
4
+ require 'bundler/setup'
@@ -0,0 +1,11 @@
1
+ development: &default
2
+ adapter: postgresql
3
+ database: administrate-jsontable_prototype_development
4
+ encoding: utf8
5
+ min_messages: warning
6
+ pool: 2
7
+ timeout: 5000
8
+
9
+ test:
10
+ <<: *default
11
+ database: administrate-jsontable_prototype_test
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Load the Rails application.
4
+ require_relative 'application'
5
+
6
+ # Initialize the Rails application.
7
+ Rails.application.initialize!
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.configure do
4
+ # Settings specified here will take precedence over those in config/application.rb.
5
+
6
+ # In the development environment your application's code is reloaded on
7
+ # every request. This slows down response time but is perfect for development
8
+ # since you don't have to restart the web server when you make code changes.
9
+ config.cache_classes = false
10
+
11
+ # Do not eager load code on boot.
12
+ config.eager_load = false
13
+
14
+ # Show full error reports and disable caching.
15
+ config.consider_all_requests_local = true
16
+ config.action_controller.perform_caching = false
17
+ config.cache_store = :null_store
18
+
19
+ # Print deprecation notices to the Rails logger.
20
+ config.active_support.deprecation = :log
21
+
22
+ # Raise an error on page load if there are pending migrations.
23
+ config.active_record.migration_error = :page_load
24
+
25
+ # Highlight code that triggered database queries in logs.
26
+ config.active_record.verbose_query_logs = true
27
+
28
+ # Debug mode disables concatenation and preprocessing of assets.
29
+ # This option may cause significant delays in view rendering with a large
30
+ # number of complex assets.
31
+ config.assets.debug = true
32
+ config.i18n.default_locale = :tr
33
+
34
+ # Suppress logger output for asset requests.
35
+ config.assets.quiet = true
36
+
37
+ # Raises error for missing translations.
38
+ config.action_view.raise_on_missing_translations = true
39
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ Rails.application.configure do
4
+ # Settings specified here will take precedence over those in config/application.rb.
5
+
6
+ # Code is not reloaded between requests.
7
+ config.cache_classes = true
8
+
9
+ # Eager load code on boot. This eager loads most of Rails and
10
+ # your application in memory, allowing both threaded web servers
11
+ # and those relying on copy on write to perform better.
12
+ # Rake tasks automatically ignore this option for performance.
13
+ config.eager_load = true
14
+
15
+ # Full error reports are disabled and caching is turned on.
16
+ config.consider_all_requests_local = false
17
+ config.action_controller.perform_caching = true
18
+
19
+ # Ensures that a master key has been made available in either
20
+ # ENV["RAILS_MASTER_KEY"] or in config/master.key. This key is used to
21
+ # decrypt credentials (and other encrypted files).
22
+ # config.require_master_key = true
23
+
24
+ # Disable serving static files from the `/public` folder by default since
25
+ # Apache or NGINX already handles this.
26
+ config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
27
+
28
+ # Compress CSS using a preprocessor.
29
+ # config.assets.css_compressor = :sass
30
+
31
+ # Do not fallback to assets pipeline if a precompiled asset is missed.
32
+ config.assets.compile = false
33
+
34
+ # Enable serving of images, stylesheets, and JavaScripts from an asset server.
35
+ # config.action_controller.asset_host = 'http://assets.example.com'
36
+
37
+ # Specifies the header that your server uses for sending files.
38
+ # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
39
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
40
+
41
+ # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
42
+ # config.force_ssl = true
43
+
44
+ # Use the lowest log level to ensure availability of diagnostic information
45
+ # when problems arise.
46
+ config.log_level = :debug
47
+
48
+ # Prepend all log lines with the following tags.
49
+ config.log_tags = [:request_id]
50
+
51
+ # Use a different cache store in production.
52
+ # config.cache_store = :mem_cache_store
53
+
54
+ # Use a real queuing backend for Active Job (and separate queues per
55
+ # environment).
56
+ # config.active_job.queue_adapter = :resque
57
+ # config.active_job.queue_name_prefix = "administrate_prototype_production"
58
+
59
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
60
+ # the I18n.default_locale when a translation cannot be found).
61
+ config.i18n.fallbacks = true
62
+ config.i18n.default_locale = :tr
63
+
64
+ # Send deprecation notices to registered listeners.
65
+ config.active_support.deprecation = :notify
66
+
67
+ # Use default logging formatter so that PID and timestamp are not suppressed.
68
+ config.log_formatter = ::Logger::Formatter.new
69
+
70
+ if ENV['RAILS_LOG_TO_STDOUT'].present?
71
+ logger = ActiveSupport::Logger.new(STDOUT)
72
+ logger.formatter = config.log_formatter
73
+ config.logger = ActiveSupport::TaggedLogging.new(logger)
74
+ end
75
+
76
+ # Do not dump schema after migrations.
77
+ config.active_record.dump_schema_after_migration = false
78
+ end