populate-me 0.13.0 → 0.15.0
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 +4 -4
- data/lib/populate_me/admin/__assets__/img/file.png +0 -0
- data/lib/populate_me/admin/__assets__/js/main.js +2 -0
- data/lib/populate_me/admin/views/page.erb +9 -2
- data/lib/populate_me/admin.rb +5 -0
- data/lib/populate_me/document_mixins/outcasting.rb +8 -0
- data/lib/populate_me/variation.rb +1 -1
- data/lib/populate_me/version.rb +1 -1
- data/populate-me.gemspec +1 -1
- data/test/test_document_outcasting.rb +35 -0
- data/test/test_document_schema.rb +1 -0
- metadata +11 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 85deae1b12e76c47c378e2f3843d5e840d06b95cc5359edd130fd64ffa9b88d0
|
|
4
|
+
data.tar.gz: 7078d10da19910b9962bfd3656c3543dd5389be624d11896e8248246f4170eeb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 44c9c3cabe40c90112e0cc4af8e4e1b9f3105f9c7baff24e568cda0e3fb697c84ad00f62e2812fa323ac18475fe3d9d85b711409b1a07f8ba3077b0d9e8973b2
|
|
7
|
+
data.tar.gz: 3a9f806d103a25e7444cda57035bcd5fbfd6fbfa4492458b340c4a56324a4bca990f5e65c3f489728a0d07aa28e62f8c855c9a9cb602b7abc71ba12622d565e4
|
|
Binary file
|
|
@@ -413,6 +413,8 @@ $(function() {
|
|
|
413
413
|
process_data: function(data) {
|
|
414
414
|
if (typeof data == 'object') {
|
|
415
415
|
return PopulateMe.mustache_render(data);
|
|
416
|
+
} else if (typeof data == 'string' && data[0] == '{') {
|
|
417
|
+
return PopulateMe.mustache_render(JSON.parse(data));
|
|
416
418
|
} else {
|
|
417
419
|
return data;
|
|
418
420
|
}
|
|
@@ -117,7 +117,14 @@
|
|
|
117
117
|
</script>
|
|
118
118
|
|
|
119
119
|
<script id="template-string-field" type="x-tmpl-mustache">
|
|
120
|
-
<input name='{{input_name}}' value='{{input_value}}' {{#required}}required{{/required}}{{{build_input_attributes}}} />
|
|
120
|
+
<input name='{{input_name}}' value='{{input_value}}' {{#required}}required{{/required}}{{{build_input_attributes}}} {{#autocomplete.length}}list='datalist-{{id}}'{{/autocomplete.length}} />
|
|
121
|
+
{{#autocomplete.length}}
|
|
122
|
+
<datalist id='datalist-{{id}}'>
|
|
123
|
+
{{#autocomplete}}
|
|
124
|
+
<option value='{{.}}' />
|
|
125
|
+
{{/autocomplete}}
|
|
126
|
+
</datalist>
|
|
127
|
+
{{/autocomplete.length}}
|
|
121
128
|
</script>
|
|
122
129
|
|
|
123
130
|
<script id="template-text-field" type="x-tmpl-mustache">
|
|
@@ -145,7 +152,7 @@
|
|
|
145
152
|
|
|
146
153
|
<script id="template-attachment-field" type="x-tmpl-mustache">
|
|
147
154
|
{{#url}}
|
|
148
|
-
<img src='{{url}}{{cache_buster}}' alt='Preview' width='150' />
|
|
155
|
+
<img src='{{url}}{{cache_buster}}' alt='Preview' width='150' onerror="this.src='<%= request.script_name %>/__assets__/img/file.png'; this.onerror=null;" />
|
|
149
156
|
<button class='attachment-deleter'>x</button>
|
|
150
157
|
<br />
|
|
151
158
|
{{/url}}
|
data/lib/populate_me/admin.rb
CHANGED
|
@@ -67,6 +67,7 @@ class PopulateMe::Admin < Sinatra::Base
|
|
|
67
67
|
if request.path_info=='/menu'
|
|
68
68
|
items.push({title: '?', href: "#{request.script_name}/help", new_page: false})
|
|
69
69
|
end
|
|
70
|
+
content_type :json
|
|
70
71
|
{
|
|
71
72
|
template: 'template_menu',
|
|
72
73
|
page_title: page_title,
|
|
@@ -76,6 +77,7 @@ class PopulateMe::Admin < Sinatra::Base
|
|
|
76
77
|
|
|
77
78
|
get '/list/:class_name' do
|
|
78
79
|
@model_class = resolve_model_class params[:class_name]
|
|
80
|
+
content_type :json
|
|
79
81
|
@model_class.to_admin_list(request: request, params: params).to_json
|
|
80
82
|
end
|
|
81
83
|
|
|
@@ -87,6 +89,7 @@ class PopulateMe::Admin < Sinatra::Base
|
|
|
87
89
|
else
|
|
88
90
|
@model_instance = resolve_model_instance @model_class, params[:id]
|
|
89
91
|
end
|
|
92
|
+
content_type :json
|
|
90
93
|
@model_instance.to_admin_form(
|
|
91
94
|
request: request,
|
|
92
95
|
params: params,
|
|
@@ -102,6 +105,7 @@ class PopulateMe::Admin < Sinatra::Base
|
|
|
102
105
|
|
|
103
106
|
not_found do
|
|
104
107
|
response.headers['X-Cascade'] = 'pass'
|
|
108
|
+
content_type :json
|
|
105
109
|
{'success'=>false,'message'=>'Not Found'}.to_json
|
|
106
110
|
end
|
|
107
111
|
|
|
@@ -109,6 +113,7 @@ class PopulateMe::Admin < Sinatra::Base
|
|
|
109
113
|
puts
|
|
110
114
|
puts env['sinatra.error'].inspect
|
|
111
115
|
puts
|
|
116
|
+
content_type :json
|
|
112
117
|
{'success'=>false,'message'=>env['sinatra.error'].message}.to_json
|
|
113
118
|
end
|
|
114
119
|
|
|
@@ -21,6 +21,14 @@ module PopulateMe
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
def outcast_string field, item, o={}
|
|
25
|
+
if item.key? :autocomplete
|
|
26
|
+
item = item.dup
|
|
27
|
+
item[:autocomplete] = WebUtils.deep_copy(WebUtils.get_value(item[:autocomplete],self))
|
|
28
|
+
end
|
|
29
|
+
item
|
|
30
|
+
end
|
|
31
|
+
|
|
24
32
|
def outcast_list field, item, o={}
|
|
25
33
|
item = item.dup
|
|
26
34
|
item[:items] = self.__send__(field).map do |nested|
|
|
@@ -27,7 +27,7 @@ module PopulateMe
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def default
|
|
30
|
-
self.new_image_magick_job(:populate_me_thumb, :jpg, "-flatten -resize '
|
|
30
|
+
self.new_image_magick_job(:populate_me_thumb, :jpg, "-flatten -resize '400x230' -gravity center -extent 400x230")
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
end
|
data/lib/populate_me/version.rb
CHANGED
data/populate-me.gemspec
CHANGED
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.add_dependency 'sinatra', '~> 2'
|
|
22
22
|
s.add_dependency 'json', '~> 2.1'
|
|
23
23
|
|
|
24
|
-
s.add_development_dependency 'bundler', '
|
|
24
|
+
s.add_development_dependency 'bundler', '>= 2.2.10'
|
|
25
25
|
s.add_development_dependency 'minitest', '~> 5.8'
|
|
26
26
|
s.add_development_dependency 'rack-test', '~> 0.6'
|
|
27
27
|
s.add_development_dependency 'rack-cerberus', '~> 1.0'
|
|
@@ -6,6 +6,7 @@ class Outcasted < PopulateMe::Document
|
|
|
6
6
|
set :default_attachment_class, PopulateMe::Attachment
|
|
7
7
|
|
|
8
8
|
field :name
|
|
9
|
+
field :category, autocomplete: ['Fish', 'Cat', 'Bunny']
|
|
9
10
|
field :size, type: :select, select_options: [
|
|
10
11
|
{description: 'small', value: 's'},
|
|
11
12
|
{description: 'medium', value: 'm'},
|
|
@@ -23,6 +24,10 @@ class Outcasted < PopulateMe::Document
|
|
|
23
24
|
field :weirdo, type: :strange
|
|
24
25
|
field :price, type: :price
|
|
25
26
|
|
|
27
|
+
def get_category_autocomplete_list
|
|
28
|
+
['Horse', 'Bear']
|
|
29
|
+
end
|
|
30
|
+
|
|
26
31
|
def get_size_options
|
|
27
32
|
[
|
|
28
33
|
[:small, :s],
|
|
@@ -65,6 +70,36 @@ describe PopulateMe::Document, 'Outcasting' do
|
|
|
65
70
|
|
|
66
71
|
end
|
|
67
72
|
|
|
73
|
+
describe '#outcast_string' do
|
|
74
|
+
|
|
75
|
+
it 'Generates the autocomplete options when needed' do
|
|
76
|
+
original = Outcasted.fields[:category]
|
|
77
|
+
output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
|
|
78
|
+
assert_equal ['Fish', 'Cat', 'Bunny'], output[:autocomplete]
|
|
79
|
+
refute original.equal?(output)
|
|
80
|
+
|
|
81
|
+
original = Outcasted.fields[:name]
|
|
82
|
+
output = Outcasted.new.outcast(:name, original, {input_name_prefix: 'data'})
|
|
83
|
+
refute output.key?(:autocomplete)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'Generates the autocomplete options from a proc' do
|
|
87
|
+
original = Outcasted.fields[:category].dup
|
|
88
|
+
original[:autocomplete] = proc{ ['Dog', 'Snake'] }
|
|
89
|
+
output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
|
|
90
|
+
assert_equal ['Dog', 'Snake'], output[:autocomplete]
|
|
91
|
+
assert original[:autocomplete].is_a?(Proc)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it 'Generates the autocomplete options from a method name' do
|
|
95
|
+
original = Outcasted.fields[:category].dup
|
|
96
|
+
original[:autocomplete] = :get_category_autocomplete_list
|
|
97
|
+
output = Outcasted.new.outcast(:category, original, {input_name_prefix: 'data'})
|
|
98
|
+
assert_equal ['Horse', 'Bear'], output[:autocomplete]
|
|
99
|
+
assert original[:autocomplete].is_a?(Symbol)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
68
103
|
describe '#outcast_list' do
|
|
69
104
|
|
|
70
105
|
it 'Has no value and an empty list of items when list is empty' do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: populate-me
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mickael Riga
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-09-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: web-utils
|
|
@@ -56,16 +56,16 @@ dependencies:
|
|
|
56
56
|
name: bundler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 2.2.10
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
68
|
+
version: 2.2.10
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: minitest
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -198,6 +198,7 @@ files:
|
|
|
198
198
|
- lib/populate_me/admin/__assets__/css/asmselect.css
|
|
199
199
|
- lib/populate_me/admin/__assets__/css/jquery-ui.min.css
|
|
200
200
|
- lib/populate_me/admin/__assets__/css/main.css
|
|
201
|
+
- lib/populate_me/admin/__assets__/img/file.png
|
|
201
202
|
- lib/populate_me/admin/__assets__/img/help/children.png
|
|
202
203
|
- lib/populate_me/admin/__assets__/img/help/create.png
|
|
203
204
|
- lib/populate_me/admin/__assets__/img/help/delete.png
|
|
@@ -257,7 +258,7 @@ homepage: https://github.com/mig-hub/populate-me
|
|
|
257
258
|
licenses:
|
|
258
259
|
- MIT
|
|
259
260
|
metadata: {}
|
|
260
|
-
post_install_message:
|
|
261
|
+
post_install_message:
|
|
261
262
|
rdoc_options: []
|
|
262
263
|
require_paths:
|
|
263
264
|
- lib
|
|
@@ -272,8 +273,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
272
273
|
- !ruby/object:Gem::Version
|
|
273
274
|
version: '0'
|
|
274
275
|
requirements: []
|
|
275
|
-
rubygems_version: 3.
|
|
276
|
-
signing_key:
|
|
276
|
+
rubygems_version: 3.2.16
|
|
277
|
+
signing_key:
|
|
277
278
|
specification_version: 4
|
|
278
279
|
summary: PopulateMe is an admin system for web applications.
|
|
279
280
|
test_files:
|