lasha 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1128399aa7cbf6394c90fe56c306aaf0b92b2f4e4e8b1cbce0bf55ce5d49760c
4
- data.tar.gz: 530d6601b7b0741249e40996fefeabb05e4492ade32aab0c5ecd96b07167d70c
3
+ metadata.gz: 4ab27f8003cdc41c6b993553160462e0159a4c8aace65109905a1bcef545444e
4
+ data.tar.gz: 6a9c564ec9b76857660ce86f62d4468277301c8a96d5e9cce1851fbc5fd568ab
5
5
  SHA512:
6
- metadata.gz: 6bbfaced8b83fd1f413a8bef26cf2da234732b70f1abf56e093ee2eb13a603e912f056c05d823c59364ed142fbb8f2e4c1ef13b8d6d954f6db8f10efba5330ea
7
- data.tar.gz: 654984834d08dacb644d2896835de2bed45d8ed4530300893653c5e6a1506cf943d2d362e597a30b991efe8238747ad41055ba28c84dd037f449ad3e70949292
6
+ metadata.gz: dbb6c791ffdeba8ffb9cc770b45bab9ac37fda819583a3127801a7fa8e2d370a10279ad22722632ed1d20cccbd285278e40858f54b924c4498a56c332b180ea9
7
+ data.tar.gz: c3f140510674723659f56e5ed93134ff0238f80e06d60d9b7042a43695cbe9b85c186f9aa625cd59a0632f939e45a05c9f10143682388fc68ba4e89d95571653
data/README.md CHANGED
@@ -2,7 +2,31 @@
2
2
  Short description and motivation.
3
3
 
4
4
  ## Usage
5
- How to use my plugin.
5
+ Controller `index` action
6
+ ```
7
+ @data = Lasha.index_data(
8
+ controller: self,
9
+ # namespace: :admin, # optional
10
+ # model: TxFee, # optional
11
+ collection: TxFee.all.order(created_at: :desc).limit(20),
12
+ attributes: %i[amount node_id created_at],
13
+ # actions: %i[show] # optional
14
+ )
15
+ ```
16
+ `index_data` input options
17
+ ```
18
+ controller: (required) used to derive namespace and index actions
19
+ collection: (required) array or AR collection
20
+ attributes: (required) model attributes determine which index columns are shown
21
+ namespace-: (optional) controller namespace (derive from controller)
22
+ model-----: (optional) derive from collection
23
+ actions---: (optional) derive from controller, can contain %i[new show edit destroy]
24
+ ```
25
+
26
+ index view `index.html.slim`
27
+ ```
28
+ = render partial: "shared/index_generator", locals: { data: @data }
29
+ ```
6
30
 
7
31
  ## Installation
8
32
  Add this line to your application's Gemfile:
@@ -21,8 +45,15 @@ Or install it yourself as:
21
45
  $ gem install lasha
22
46
  ```
23
47
 
48
+ ## Development Helpers
49
+ Snippet for quickly rebuilding gem
50
+ ```
51
+ cd ~/gem_dir
52
+ gem uninstall lasha; rake build; gem install pkg/lasha-0.2.4.gem
53
+ ```
54
+
24
55
  ## Contributing
25
- Contribution directions go here.
56
+ PR will do. Also, you can contact me if you want to discuss large scale ideas.
26
57
 
27
58
  ## License
28
59
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,5 @@
1
+ .btn-group-xs > .btn, .btn-xs
2
+ padding: .25em .4em
3
+ font-size: .875em
4
+ line-height: 1em
5
+ border-radius: .2em
@@ -0,0 +1,24 @@
1
+ h2.text-center Listing #{data[:model]}-s
2
+ .row
3
+ .col-sm-12
4
+ .table-responsive
5
+ table.table.table-bordered.table-hover.table-sm
6
+ thead.thead-dark
7
+ tr
8
+ - data[:attributes].each do |attribute|
9
+ th.text-center = attribute
10
+ - data[:actions].each do |action|
11
+ th.text-center
12
+
13
+ tbody
14
+ - data[:collection].each do |item|
15
+ tr
16
+ - data[:attributes].each do |attribute|
17
+ - attribute = item.read_attribute(attribute)
18
+ - if attribute.is_a? ActiveSupport::TimeWithZone
19
+ td = l attribute, format: :short
20
+ - else
21
+ td = attribute
22
+
23
+ - data[:actions].each do |action|
24
+ td = link_to action, url_for([data[:namespace], item]), class: "btn btn-light btn-xs btn-block"
data/lib/lasha/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Lasha
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.5"
3
3
  end
data/lib/lasha.rb CHANGED
@@ -1,7 +1,70 @@
1
1
  require "lasha/engine"
2
2
 
3
3
  module Lasha
4
- def self.say
5
- puts "**********"
4
+ @index_actions = %i[new show edit destroy]
5
+
6
+ def self.index_data(
7
+ controller:,
8
+ namespace: nil,
9
+ model: nil,
10
+ actions: nil,
11
+ collection:,
12
+ attributes:
13
+ )
14
+ index_data_hash = {
15
+ namespace: set_or_guess_namespace(namespace, controller),
16
+ model: set_or_guess_model(model, collection),
17
+ collection: collection,
18
+ attributes: attributes,
19
+ actions: set_or_guess_actions(actions, controller)
20
+ }
21
+ raise ArgumentError if index_data_invalid?(**index_data_hash)
22
+
23
+ index_data_hash
24
+ rescue ArgumentError => e
25
+ puts "***** index_data argument error report"
26
+ puts "#{e} #{e.message}"
27
+ puts e.backtrace
6
28
  end
29
+
30
+ private
31
+
32
+ def self.set_or_guess_namespace(namespace, controller)
33
+ if namespace.present?
34
+ namespace
35
+ elsif controller.class.name.include?("::")
36
+ controller.class.name.deconstantize.underscore.to_sym
37
+ end
38
+ end
39
+
40
+ def self.set_or_guess_model(model, collection)
41
+ model.present? ? model : collection.first.class
42
+ end
43
+
44
+ def self.set_or_guess_actions(actions, controller)
45
+ if actions.present?
46
+ actions
47
+ else
48
+ controller.action_methods.to_a.map(&:to_sym) & @index_actions
49
+ end
50
+ end
51
+
52
+ def self.index_data_invalid?(**index_data_hash)
53
+ truthy_array = []
54
+ index_data_hash.each do |key, value|
55
+ case key
56
+ when :model
57
+ truthy_array << (value.blank? || index_data_hash[:collection].blank?)
58
+ when :actions
59
+ truthy_array << (value - @index_actions).any?
60
+ # when :namespace
61
+ # truthy_array << false
62
+ # when :collection
63
+ # truthy_array << false
64
+ # when :attributes
65
+ # truthy_array << false
66
+ end
67
+ end
68
+ truthy_array.include?(true)
69
+ end
7
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lasha
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lasha Abulashvili
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-18 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -49,7 +49,8 @@ files:
49
49
  - README.md
50
50
  - Rakefile
51
51
  - app/assets/config/lasha_manifest.js
52
- - app/views/shared/_table.html.slim
52
+ - app/assets/stylesheets/lasha.sass
53
+ - app/views/shared/_index_generator.html.slim
53
54
  - config/routes.rb
54
55
  - lib/lasha.rb
55
56
  - lib/lasha/engine.rb
@@ -1,2 +0,0 @@
1
- = @collection.size
2
- = @collection.first