lolita 3.4.0 → 3.4.1

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
  SHA1:
3
- metadata.gz: 4b73d7232b6d16a4d0b0b0c0c35a1928fe316390
4
- data.tar.gz: 8f0f31e08f83abff1884b007b8559fa96c25108c
3
+ metadata.gz: 7f81d378fd85598e5de4c672cb470af30b6cb90f
4
+ data.tar.gz: 33b6055aaa7dbee4965baddd4c6a46e2c72fb192
5
5
  SHA512:
6
- metadata.gz: 25028f189a32ad2a665b3f4cbfff3002e5517845d6c1e84a2d2d329cd0f18fd1e0a8ebec07d8118cb2471260fb263b632667b9065fd506cebe493d669d8baaf9
7
- data.tar.gz: 502fd36b78421dcb183bf3c9a03ac535653f257773a3742065bf1b3197948648e0fc37fa9c3057f3fd974ef71fcca2431896ae0d38b5cde59e8d6fa07a3b6c6c
6
+ metadata.gz: 769ab380f0638ea6f64cf9a39bc1e11bcd1be74dc1762952cc6135e8fd1c1111aef963c17f033d3a475dd4a60bdebfb9d9442ab0ec7b8318d2379f7084e306c5
7
+ data.tar.gz: a7c55aa4efa03cc50f5c77bada37f27ac01dd6a21e4852f1aaf843e6a0b105dbdb6397f59a9bcebe2a3b6f72644f2cae93278bd120e073398dc26d1e2db771ed
@@ -1,28 +1,51 @@
1
1
  module Lolita
2
2
  module Configuration
3
+ # column in a list
4
+ #
5
+ # === Examples
6
+ # lolita do
7
+ # list do
8
+ # column :title, sortable: true
9
+ # column :full_name, sortable: 'first_name'
10
+ # column :is_public do
11
+ # formatter do |value, record, view|
12
+ # value ? 'Yes' : 'No'
13
+ # end
14
+ # end
15
+ #
16
+ # column do
17
+ # title "ID"
18
+ # name :id
19
+ # formatter do|value, record, view|
20
+ # view.link_to(value, view.url_for(action: 'edit', id: value))
21
+ # end
22
+ # end
23
+ #
24
+ # column :updated_at, title: 'Date', formatter: '%d.%m.%Y., %H:%M'
25
+ # end
26
+ # end
3
27
  class Column < Lolita::Configuration::Base
4
-
5
- MAX_TEXT_SIZE=20
28
+ MAX_TEXT_SIZE = 20
6
29
  attr_reader :list_association_name
7
- lolita_accessor :name,:title,:type,:options,:sortable, :association
8
-
9
- def initialize(dbi,*args,&block)
30
+ lolita_accessor :name, :title, :type, :options, :sortable, :association
31
+
32
+ def initialize(dbi, *args, &block)
10
33
  set_and_validate_dbi(dbi)
11
- self.set_attributes(*args)
12
- self.instance_eval(&block) if block_given?
34
+ set_attributes(*args)
35
+ instance_eval(&block) if block_given?
13
36
  validate
14
37
  normalize_attributes
15
38
  detect_association
16
39
  end
17
40
 
18
- def list *args, &block
41
+ def list(*args, &block)
19
42
  if args && args.any? || block_given?
20
43
  detect_association
21
- list_association = args[0] && @dbi.associations[args[0].to_s.to_sym] || self.association
44
+ list_association = args[0] && @dbi.associations[args[0].to_s.to_sym] || association
22
45
  list_dbi = list_association && Lolita::DBI::Base.create(list_association.klass)
23
- raise Lolita::UnknownDBPError.new("DBI is not specified for list in column #{self}") unless list_dbi
46
+ fail Lolita::UnknownDBPError.new("DBI is not specified for list in column #{self}") unless list_dbi
24
47
  @list_association_name = list_association.name
25
- Lolita::LazyLoader.lazy_load(self,:@list,Lolita::Configuration::NestedList, list_dbi, self, :association_name => list_association.name, &block)
48
+ Lolita::LazyLoader.lazy_load(self, :@list, Lolita::Configuration::NestedList, list_dbi, self, association_name: list_association.name, &block)
26
49
  else
27
50
  @list
28
51
  end
@@ -31,8 +54,8 @@ module Lolita
31
54
  # Return value of column from given record. When record matches foreign key patter, then foreign key is used.
32
55
  # In other cases it just ask for attribute with same name as column.
33
56
  def value(record)
34
- if self.association
35
- if self.association.macro == :one && dbi.klass.respond_to?(:human_attribute_name)
57
+ if association
58
+ if association.macro == :one && dbi.klass.respond_to?(:human_attribute_name)
36
59
  dbi.klass.human_attribute_name(association.name)
37
60
  # dbi.record(record.send(association.name)).title
38
61
  elsif dbi.klass.respond_to?(:human_attribute_name)
@@ -41,20 +64,20 @@ module Lolita
41
64
  "#{association.name} (#{record.send(association.name).count})"
42
65
  end
43
66
  else
44
- record.send(self.name)
67
+ record.send(name)
45
68
  end
46
69
  end
47
70
 
48
- def formatted_value(record,view)
49
- self.formatter.with(self.value(record), record, view)
71
+ def formatted_value(record, view)
72
+ formatter.with(value(record), record, view)
50
73
  end
51
74
 
52
75
  # Set/Get title. Getter return title what was set or ask for human_attribute_name to model.
53
- def title(new_title=nil)
76
+ def title(new_title = nil)
54
77
  if new_title
55
78
  @title = new_title
56
79
  end
57
- Lolita::Utils.dynamic_string(@title, :default => @name && @dbi.klass.human_attribute_name(@name))
80
+ Lolita::Utils.dynamic_string(@title, default: @name && @dbi.klass.human_attribute_name(@name))
58
81
  end
59
82
 
60
83
  def sortable?
@@ -63,43 +86,55 @@ module Lolita
63
86
 
64
87
  # Find if any of received sort options matches this column.
65
88
  def current_sort_state(params)
66
- @sortable && sort_pairs(params).detect{|pair| pair[0]==self.name.to_s} || []
89
+ @sortable && sort_pairs(params).find { |pair| pair[0] == sort_by_name } || []
67
90
  end
68
91
 
69
92
  # Return string with sort options for column if column is sortable.
70
- def sort_params params
93
+ def sort_params(params)
71
94
  if @sortable
72
95
  pairs = sort_pairs(params)
73
96
  found_pair = false
74
- pairs.each_with_index{|pair,index|
75
- if pair[0] == self.name.to_s
76
- pairs[index][1] = pair[1] == "asc" ? "desc" : "asc"
97
+ pairs.each_with_index{|pair, index|
98
+ if pair[0] == sort_by_name
99
+ pairs[index][1] = pair[1] == 'asc' ? 'desc' : 'asc'
77
100
  found_pair = true
78
101
  end
79
102
  }
80
103
  unless found_pair
81
- pairs << [self.name.to_s,"asc"]
104
+ pairs << [sort_by_name, 'asc']
82
105
  end
83
- (pairs.map{|pair| pair.join(",")}).join("|")
106
+ (pairs.map { |pair| pair.join(',') }).join('|')
84
107
  else
85
- ""
108
+ ''
86
109
  end
87
110
  end
88
111
 
112
+ # returns value to sort by
113
+ # in default it will be column name, but you can specify it
114
+ # in field configuration
115
+ #
116
+ # === Examples
117
+ # list do
118
+ # field :name, sortable: 'some_table.first_name'
119
+ # end
120
+ def sort_by_name
121
+ @sortable.is_a?(TrueClass) ? name.to_s : @sortable.to_s
122
+ end
123
+
89
124
  # Create array of sort information from params.
90
- def sort_pairs params
91
- (params[:s] || "").split("|").map{|pair| pair.split(",")}
125
+ def sort_pairs(params)
126
+ (params[:s] || '').split('|').map { |pair| pair.split(',') }
92
127
  end
93
128
 
94
129
  # Define format, for details see Lolita::Support::Formatter and Lolita::Support::Formater::Rails
95
- def formatter(value=nil,&block)
130
+ def formatter(value = nil, &block)
96
131
  if block_given?
97
- @formatter=Lolita::Support::Formatter.new(value,&block)
132
+ @formatter = Lolita::Support::Formatter.new(value, &block)
98
133
  elsif value || !@formatter
99
134
  if value.kind_of?(Lolita::Support::Formatter)
100
- @formatter=value
135
+ @formatter = value
101
136
  else
102
- @formatter=Lolita::Support::Formatter::Rails.new(value)
137
+ @formatter = Lolita::Support::Formatter::Rails.new(value)
103
138
  end
104
139
  end
105
140
  @formatter
@@ -107,30 +142,30 @@ module Lolita
107
142
 
108
143
  def formatter=(value)
109
144
  if value.kind_of?(Lolita::Support::Formatter)
110
- @formatter=value
145
+ @formatter = value
111
146
  else
112
- @formatter=Lolita::Support::Formatter::Rails.new(value)
147
+ @formatter = Lolita::Support::Formatter::Rails.new(value)
113
148
  end
114
149
  end
115
150
 
116
151
  def set_attributes(*args)
117
152
  options = args ? args.extract_options! : {}
118
153
  if args[0].respond_to?(:field)
119
- [:name,:type].each do |attr|
120
- self.send(:"#{attr}=",args[0].send(attr))
154
+ [:name, :type].each do |attr|
155
+ send(:"#{attr}=", args[0].send(attr))
121
156
  end
122
157
  elsif args[0]
123
158
  self.name = args[0]
124
159
  end
125
- options.each do |attr_name,value|
126
- self.send(:"#{attr_name}=",value)
160
+ options.each do |attr_name, value|
161
+ send(:"#{attr_name}=", value)
127
162
  end
128
163
  end
129
-
164
+
130
165
  private
131
166
 
132
167
  def detect_association
133
- @association ||= dbi.associations[self.name]
168
+ @association ||= dbi.associations[name]
134
169
  end
135
170
 
136
171
  def normalize_attributes
@@ -138,8 +173,8 @@ module Lolita
138
173
  end
139
174
 
140
175
  def validate
141
- raise Lolita::UnknownDBIError.new("DBI is not specified for column #{self}") unless self.dbi
142
- raise ArgumentError.new("Column must have name.") unless self.name
176
+ fail Lolita::UnknownDBIError.new("DBI is not specified for column #{self}") unless dbi
177
+ fail ArgumentError.new('Column must have name.') unless name
143
178
  end
144
179
  end
145
180
  end
@@ -64,6 +64,10 @@ module Lolita
64
64
  else
65
65
  Lolita.default_locale
66
66
  end
67
+ if defined?(::I18n)
68
+ ::I18n.locale = @locale
69
+ end
70
+ @locale
67
71
  end
68
72
  # Return default locale. First looks for defined default locale for Lolita, when not found than
69
73
  # take first of defined #locales for Lolita, if there no defined locales for Lolita, than
@@ -2,7 +2,7 @@ module Lolita
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 4
5
- PATCH = 0
5
+ PATCH = 1
6
6
  BUILD = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lolita
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 3.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ITHouse (Latvia) and Arturs Meisters
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-24 00:00:00.000000000 Z
11
+ date: 2014-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kaminari