lasha 0.2.3 → 0.2.5

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: 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