five-two-nw-olivander 0.1.2.28 → 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: 80addbfd5fe9f9691a5b0b37db9456e0920abb8c31907d067c8dfe60683bd6fc
4
- data.tar.gz: 1bd44fc8d34dd873c80ed5768da7d0b94d75aed63e6568370a64ba033dbb861c
3
+ metadata.gz: c44e3b7096fe950aaac7828a92343e5f05cabac07d3776d35369fd434fd83a97
4
+ data.tar.gz: 6a46d72cfc1f35b37fdc61ee0027f278785af0fcb79e5ee38f1f67cf72da4756
5
5
  SHA512:
6
- metadata.gz: 9a8bd33731c14f442c8857df913bb77c259c2edf64cec9a0d59a73cf22f7515f7c1a78ace886fbb46f710087d8b30ae470e26df1d176efe5b61c7fc3ba9c4e4e
7
- data.tar.gz: 2a03cdfae9a10222167c04af1b8deb133a491b1057f6796965135e3201b6e3f1d606710bf0340f646cff56726282824550918dff39391d1775710486b7c5cda0
6
+ metadata.gz: fa838b60681399f4000cf08e2c0fcc8d23cbacd9ea8c72087a309fc78bcb1223f3062ce5be88c849591d477aaef2c49a18c35b0e5bc166ef972aa4d6902e04d8
7
+ data.tar.gz: ad347d7be7b1a862b125152ea10484e5b9c5cd36287064d3c8bc49fe60043349aaff32eca85f77ceee1c8d5e1eb7c769fb12af5e54457908b87bb0ddbd95f65d
@@ -0,0 +1,15 @@
1
+ - if @turbo_frame.present?
2
+ <turbo-frame id="#{@turbo_frame}" src="#{@src}" loading="#{@loading}">
3
+
4
+ .card{ class: @background }
5
+ .card-header{ class: @header_background }
6
+ %h3.card-title= @title
7
+ .card-body
8
+ = content
9
+ .card-footer
10
+ - if @src.present?
11
+ .overlay.dark
12
+ %i.fas.fa-sync-alt.fa-spin.fa-lg
13
+
14
+ - if @turbo_frame.present?
15
+ </turbo-frame>
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Olivander
4
+ module Components
5
+ class PortletComponent < ViewComponent::Base
6
+ def initialize(title, background: nil, header_background: 'bg-info', turbo_frame: nil, src: nil, loading: nil)
7
+ super
8
+ @title = title
9
+ @background = background
10
+ @header_background = header_background
11
+ @turbo_frame = turbo_frame
12
+ @src = src
13
+ @loading = loading
14
+ end
15
+ end
16
+ end
17
+ end
@@ -11,7 +11,7 @@
11
11
  %a.small-box-footer{ href: @more_link }
12
12
  = @more_text
13
13
  %i{ class: @more_icon }
14
- - if @turbo_frame.present?
14
+ - if @src.present?
15
15
  .overlay.dark
16
16
  - if @turbo_frame.present?
17
17
  </turbo-frame>
@@ -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.28'.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.28
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
@@ -184,6 +184,8 @@ files:
184
184
  - app/assets/stylesheets/olivander/application.css
185
185
  - app/components/olivander/components/menu_item_component.html.haml
186
186
  - app/components/olivander/components/menu_item_component.rb
187
+ - app/components/olivander/components/portlet_component.html.haml
188
+ - app/components/olivander/components/portlet_component.rb
187
189
  - app/components/olivander/components/resource_form_component.html.haml
188
190
  - app/components/olivander/components/resource_form_component.rb
189
191
  - app/components/olivander/components/resource_show_component.html.haml
@@ -191,6 +193,8 @@ files:
191
193
  - app/components/olivander/components/small_box_component.html.haml
192
194
  - app/components/olivander/components/small_box_component.rb
193
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
194
198
  - app/controllers/concerns/olivander/resources/route_builder.rb
195
199
  - app/controllers/olivander/application_controller.rb
196
200
  - app/datatables/olivander/datatable.rb