five-two-nw-olivander 0.1.2.29 → 0.1.2.30

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: c61a734e5a96ba24272b92909d114e801ff0296c5069ee1da4203b66458e295c
4
- data.tar.gz: acc01f788c4120e50a39dd257c92bcbc1ba63d5a9348339f0b6905eb6395270e
3
+ metadata.gz: c44e3b7096fe950aaac7828a92343e5f05cabac07d3776d35369fd434fd83a97
4
+ data.tar.gz: 6a46d72cfc1f35b37fdc61ee0027f278785af0fcb79e5ee38f1f67cf72da4756
5
5
  SHA512:
6
- metadata.gz: 4e568cb13335373644accbe7546189f47ceae111d72b9dd77de4cc1d79cdae2f48c1cf619dee2823e763f0ce403a36f4e05b94bd617bee6d09cf4a89d44b16de
7
- data.tar.gz: 6e1ecbeed3877a5bc9a2da54f0f2bbe71410f78d3b5ca341b37f79fe7f0891376f20019619d5d3db0fe90a9542b1445e7963bfc96bda4ef84a6b1c8f86cb5517
6
+ metadata.gz: fa838b60681399f4000cf08e2c0fcc8d23cbacd9ea8c72087a309fc78bcb1223f3062ce5be88c849591d477aaef2c49a18c35b0e5bc166ef972aa4d6902e04d8
7
+ data.tar.gz: ad347d7be7b1a862b125152ea10484e5b9c5cd36287064d3c8bc49fe60043349aaff32eca85f77ceee1c8d5e1eb7c769fb12af5e54457908b87bb0ddbd95f65d
@@ -0,0 +1,49 @@
1
+ require 'olivander/resources/model_registry'
2
+
3
+ module Olivander
4
+ module Resources
5
+ module ModelRegistrar
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ def this_is_included_method
10
+ puts 'hi'
11
+ end
12
+ end
13
+
14
+ class_methods do
15
+ def register_model(model = self, context: :default, using: self, &block)
16
+ Rails.logger.debug "###################"
17
+ Rails.logger.debug "registering model #{model.name} in context #{context} using #{using&.name} at #{self.name}"
18
+ using.register_model(model, context: context, &block) && return unless using == self
19
+
20
+ ::Olivander::Resources::ModelRegistry.global_registry.register(model, &block)
21
+ Rails.logger.debug "###################\n"
22
+ end
23
+ end
24
+ end
25
+
26
+ class TestRegistrant
27
+ end
28
+
29
+ class TestRegistrar
30
+ include ModelRegistrar
31
+ end
32
+
33
+ class TestRegistrar2
34
+ include ModelRegistrar
35
+
36
+ # register_model do
37
+ # puts 'hello'
38
+ # field_layout :show do :all end
39
+ # end
40
+ # register_model Olivander::Resources::TestRegistrant, context: :foo do
41
+ # puts 'this is the other thing'
42
+ # field_layout do [[1, :id]] end
43
+ # end
44
+ # register_model context: :bar, using: TestRegistrar do
45
+ # puts 'and lastly...'
46
+ # end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,201 @@
1
+ module Olivander
2
+ module Resources
3
+ module ModelRegistry
4
+ mattr_accessor :global_registry
5
+
6
+ module Registry
7
+ extend ActiveSupport::Concern
8
+
9
+ class_methods do
10
+ attr_accessor :_registry_hash
11
+ attr_accessor :_registering
12
+
13
+ def register(model, &block)
14
+ self._registry_hash ||= {}
15
+ self._registering = ensure_registry_for(model)
16
+ instance_exec(&block)
17
+ _registering.make_datatable_classes
18
+ self._registering = nil
19
+ # Rails.logger.debug _registry_hash
20
+ end
21
+
22
+ def entry_for(model)
23
+ _registry_hash[model]
24
+ end
25
+
26
+ def ensure_registry_for(model)
27
+ _registry_hash[model] ||= RegisteredModel.new(model)
28
+ end
29
+
30
+ def field_layout(layouts = [:show, :form])
31
+ layouts = [*layouts] # ensure it's an array
32
+ field_layout = block_given? ? yield : :all
33
+ layouts.each do |layout|
34
+ Rails.logger.debug "setting layout for #{_registering}[#{layout}]"
35
+ _registering.add_layout(layout, field_layout)
36
+ end
37
+ end
38
+
39
+ def add_datatable(view = nil, &block)
40
+ _registering.add_datatable(view, DatatableDef.new(_registering, &block))
41
+ end
42
+
43
+ def render_fields(field_list, with_format: :string)
44
+ _registering.render_fields(field_list, with_format)
45
+ end
46
+ end
47
+ end
48
+
49
+ class DatatableDef
50
+ attr_accessor :model, :blocks, :datatable_class, :block
51
+
52
+ def initialize(model, &block)
53
+ Rails.logger.info "making new datatable"
54
+ Rails.logger.info block.source
55
+ self.model = model
56
+ self.blocks = {}
57
+
58
+ # instance_exec(&block) if block_given?
59
+ self.block = block
60
+ end
61
+
62
+ def datatable(sym)
63
+ blocks[:datatable] = Proc.new{ datatable do model.send(sym) end }
64
+ end
65
+
66
+ def collection(sym)
67
+ blocks[:collection] = Proc.new{ collection do model.send(sym) end }
68
+ end
69
+
70
+ def filters(sym)
71
+ blocks[:filters] = Proc.new{ model.send(sym) }
72
+ end
73
+
74
+ def charts(sym)
75
+ blocks[:charts] = Proc.new{ model.send(sym) }
76
+ end
77
+
78
+ def make_class(key)
79
+ # return datatable_class unless datatable_class.nil?
80
+ # ensure_blocks
81
+
82
+ name_key = key == :index ? '' : key
83
+ name = [model.name.demodulize, name_key, 'Datatable'].join
84
+ blocks = self.blocks
85
+ block = self.block
86
+ klass = Class.new(Olivander::Datatable) do
87
+ puts 'stuff'
88
+ # blocks.values.each do |block|
89
+ # puts 'this is a block'
90
+ # puts block.source
91
+ # instance_eval(block.source)
92
+ # binding.pry
93
+ # instance_exec(&block)
94
+ # end
95
+ # collection do
96
+ # Erp::Rate.all
97
+ # end
98
+ instance_exec(&block)
99
+ end
100
+ module_name = model.name.deconstantize
101
+ constantized_module = module_name.constantize
102
+ constantized_module.send(:remove_const, name) if constantized_module.const_defined?(name)
103
+ self.datatable_class = constantized_module.const_set(name, klass)
104
+ end
105
+
106
+ def ensure_blocks
107
+ blocks[:collection] ||= Proc.new{
108
+ model.all
109
+ }
110
+ end
111
+ end
112
+
113
+ class RegisteredModel
114
+ attr_accessor :fields, :layouts, :datatables, :name, :model
115
+
116
+ def initialize(model)
117
+ self.model = model
118
+ set_fields
119
+ self.layouts = {}
120
+ self.datatables = {}
121
+ self.name = model.name
122
+ end
123
+
124
+ def to_s
125
+ name
126
+ end
127
+
128
+ def inspect
129
+ name
130
+ end
131
+
132
+ def add_layout(key, layout)
133
+ layout = [[2, fields]] if layout == :all
134
+ layouts[key] = layout
135
+ end
136
+
137
+ def layout(key)
138
+ layouts[key] || add_layout(key, :all)
139
+ end
140
+
141
+ def add_datatable(key, datatable_def)
142
+ Rails.logger.info "adding datatable #{key}"
143
+ datatables[key || :index] = datatable_def
144
+ # binding.pry
145
+ end
146
+
147
+ def datatable(key)
148
+ datatables[key] || add_datatable(key, DatatableDef.new(self))
149
+ end
150
+
151
+ def make_datatable_classes
152
+ datatables.each do |key, dt_def|
153
+ dt_def.make_class(key)
154
+ end
155
+ end
156
+
157
+ def render_fields(field_list, with_format)
158
+ field_list.each do |field|
159
+ fields[field].render_as = with_format
160
+ end
161
+ end
162
+
163
+ private
164
+
165
+ def set_fields
166
+ self.fields = {}
167
+
168
+ if model.respond_to?(:columns)
169
+ model.columns.map{ |x| RegisteredField.new(x) }.each do |field|
170
+ fields[field.key] = field
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+ class RegisteredField
177
+ attr_accessor :key, :ar_def, :dt_def, :render_as
178
+
179
+ def to_s
180
+ key
181
+ end
182
+
183
+ def inspect
184
+ key
185
+ end
186
+
187
+ def initialize(ar_def)
188
+ self.key = ar_def.name.to_sym
189
+ self.ar_def = ar_def
190
+ self.render_as = ar_def.type
191
+ self.dt_def = {}
192
+ end
193
+ end
194
+
195
+ class DefaultModelRegistry
196
+ include Registry
197
+ ::Olivander::Resources::ModelRegistry.global_registry = Olivander::Resources::ModelRegistry::DefaultModelRegistry
198
+ end
199
+ end
200
+ end
201
+ end
@@ -109,7 +109,9 @@ module Olivander
109
109
  end
110
110
 
111
111
  def build_routes(mapper)
112
+ Rails.logger.info "building routes..."
112
113
  build_resource_routes(mapper)
114
+ Rails.logger.info "...routes built"
113
115
  end
114
116
 
115
117
  def set_controller_and_helper(a)
@@ -121,6 +123,7 @@ module Olivander
121
123
 
122
124
  def build_resource_routes(mapper)
123
125
  resources.keys.each do |k|
126
+ before_routes = Rails.application.routes.named_routes.helper_names
124
127
  r = resources[k]
125
128
  mapper.resources r.model, only: [] do
126
129
  mapper.collection do
@@ -157,6 +160,10 @@ module Olivander
157
160
  end
158
161
  end
159
162
  end
163
+ after_routes = Rails.application.routes.named_routes.helper_names
164
+ net_routes = after_routes - before_routes
165
+ # Rails.logger.info "added these route helpers:\n#{net_routes}"
166
+ # binding.pry if k == :projects
160
167
  end
161
168
  end
162
169
  end
@@ -41,6 +41,17 @@ module Olivander
41
41
  column_attributes.each do |key|
42
42
  label = field_label_for(klazz, key)
43
43
  sym = key.gsub('_id', '')
44
+
45
+ # modifiers = STRIP OFF ANY PUNCTUATION MARKS
46
+ # modifiers.each do |modifier|
47
+ # case !:
48
+ # visible = false
49
+ # case $:
50
+ # type = currency
51
+ # end
52
+ # end
53
+
54
+
44
55
  visible = show.include?(key) || !(default_hidden.include?(key) || hide.include?(key))
45
56
  if link_path.present? && sym == :id
46
57
  link_col sym, link_path, 'id', visible: visible
@@ -91,7 +91,7 @@ module Olivander
91
91
  end
92
92
 
93
93
  def sidebar_context_name
94
- [@context.name, sidebar_context_suffix&.upcase].reject(&:blank?).join(' ')
94
+ [@context.name, sidebar_context_suffix&.upcase].reject{ |x| x.blank? or x == 'PRODUCTION' }.join(' ')
95
95
  end
96
96
 
97
97
  def sidebar_context_suffix
@@ -1,3 +1,3 @@
1
1
  module Olivander
2
- VERSION = '0.1.2.29'.freeze
2
+ VERSION = '0.1.2.30'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: five-two-nw-olivander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.29
4
+ version: 0.1.2.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Dennis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-01 00:00:00.000000000 Z
11
+ date: 2023-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chartkick
@@ -193,6 +193,8 @@ files:
193
193
  - app/components/olivander/components/small_box_component.html.haml
194
194
  - app/components/olivander/components/small_box_component.rb
195
195
  - app/controllers/concerns/olivander/resources/auto_form_attributes.rb
196
+ - app/controllers/concerns/olivander/resources/model_registrar.rb
197
+ - app/controllers/concerns/olivander/resources/model_registry.rb
196
198
  - app/controllers/concerns/olivander/resources/route_builder.rb
197
199
  - app/controllers/olivander/application_controller.rb
198
200
  - app/datatables/olivander/datatable.rb