five-two-nw-olivander 0.1.2.29 → 0.1.2.30

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