rails_admin_json_editor 0.0.5 → 0.0.6
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/app/assets/javascripts/rails_admin_json_editor/rails_admin_json_editor.js +1 -1
- data/app/assets/javascripts/rails_admin_json_editor/{vue.js → vue.0.11.4.js} +0 -0
- data/app/views/rails_admin_json_editor/main/_form_json_editor.html.erb +72 -19
- data/lib/rails_admin_json_editor/version.rb +1 -1
- data/lib/rails_admin_json_editor.rb +4 -2
- metadata +3 -6
- data/app/views/rails_admin_json_editor/main/_form_json_editor_component.html.erb +0 -29
- data/app/views/rails_admin_json_editor/main/_form_json_editor_dropdown.html.erb +0 -9
- data/app/views/rails_admin_json_editor/main/_form_json_editor_picker.html.erb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfa96e00db2bfaabb8f895b9329817f255ba06df
|
4
|
+
data.tar.gz: 3622c63269ad8d5d47224ac9385f4eec57db8b01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 879ecc9a8a2028e79ec1842d88094e711c0bc9055133fb46b80ca5265be2015be93bd6850e00cd9f1465ae3b2c8ca84df1f7f3f3c35d3d52a78d4ba1452f35a1
|
7
|
+
data.tar.gz: 7e475f123accc3338aecd3a26682f814fcee8c877e00175fa8fba775aa74e375cb7ea8168a8ba373a342340be3a0f2cb277d280593f2c48f11fc73c9f2c7c29b
|
@@ -1 +1 @@
|
|
1
|
-
//= require rails_admin_json_editor/vue
|
1
|
+
//= require rails_admin_json_editor/vue.0.11.4
|
File without changes
|
@@ -3,43 +3,96 @@
|
|
3
3
|
</script>
|
4
4
|
|
5
5
|
<div ref="components_json" class="components_json">
|
6
|
+
|
7
|
+
<!-- List content -->
|
6
8
|
<div v-repeat="components" class="component">
|
7
9
|
<% field.components.each do |component| %>
|
8
|
-
|
10
|
+
<div v-if="type == '<%= component.type %>'">
|
11
|
+
<legend><%= component.label %></legend>
|
12
|
+
<%= content_tag :p, component.help, class: "help-block" unless component.help.nil? %>
|
13
|
+
|
14
|
+
<% component.fields.each do |f| %>
|
15
|
+
<div class="control-group">
|
16
|
+
<%= label_tag f.name, f.label, class: "control-label" %>
|
17
|
+
|
18
|
+
<div class="controls">
|
19
|
+
<% if f.type == :string %>
|
20
|
+
<%= text_field_tag f.name, nil, 'v-model' => "props.#{f.name}" %>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% if f.type == :text %>
|
24
|
+
<%= text_area_tag f.name, nil, 'v-model' => "props.#{f.name}" %>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<% if f.type == :picker %>
|
28
|
+
<select v-on="change: onChangePicker($event, $index, '<%= f.name %>')" placeholder="Zoeken">
|
29
|
+
<option value=""></option>
|
30
|
+
<% f.picker_records.each do |record| %>
|
31
|
+
<option
|
32
|
+
v-attr="selected: pickerOptionIsSelected(this, '<%= f.name %>', '<%= f.picker_label %>', '<%= record.send(f.picker_label) %>')"
|
33
|
+
value="<%= record.send(f.picker_label) %>"
|
34
|
+
data-json="<%= record.to_json %>">
|
35
|
+
<%= record.send(f.picker_label) %>
|
36
|
+
</option>
|
37
|
+
<% end %>
|
38
|
+
</select>
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
<%= content_tag :p, f.help, class: "help-block" unless f.help.nil? %>
|
42
|
+
</div>
|
43
|
+
</div>
|
44
|
+
<% end %>
|
45
|
+
</div>
|
9
46
|
<% end %>
|
10
47
|
</div>
|
11
48
|
|
12
|
-
|
49
|
+
<!-- Dropdown to add new content -->
|
50
|
+
<div class="dropdown">
|
51
|
+
<a class="dropdown-toggle btn btn-info" data-toggle="dropdown" href="#">Component toevoegen <b class="caret"></b></a>
|
13
52
|
|
14
|
-
|
15
|
-
|
53
|
+
<ul class="dropdown-menu">
|
54
|
+
<% field.components.each do |component| %>
|
55
|
+
<li><a href="#" v-on="click: addComponent" component-type="<%= component.type %>"><%= component.type %></a></li>
|
56
|
+
<% end %>
|
57
|
+
</ul>
|
58
|
+
</div>
|
16
59
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
.select { |f| f.picker_records != nil }
|
21
|
-
.each do |f| %>
|
22
|
-
<%= render 'rails_admin_json_editor/main/form_json_editor_picker', locals: { field:f } %>
|
23
|
-
<% end %>
|
60
|
+
<!-- Hidden field to store JSON -->
|
61
|
+
<%= form.text_area field.name, 'v-model' => 'components | json', cols:50, rows:10, style: 'margin-top:40px' %>
|
62
|
+
</div>
|
24
63
|
|
25
64
|
<script type="text/javascript">
|
26
65
|
var componentsVM = new Vue({
|
27
66
|
el: '[ref=components_json]',
|
28
67
|
data: {
|
29
|
-
components: <%= raw
|
68
|
+
components: <%= raw(field.value.empty? ? "[]" : field.value) %>
|
30
69
|
},
|
31
70
|
methods: {
|
32
71
|
addComponent: function(e) {
|
33
72
|
e.preventDefault();
|
34
73
|
var type = e.target.getAttribute('component-type');
|
35
|
-
this.components.push({ type:type })
|
74
|
+
this.components.push({ type:type, props:{} })
|
36
75
|
},
|
37
|
-
|
38
|
-
e.
|
39
|
-
var
|
40
|
-
var
|
41
|
-
|
42
|
-
|
76
|
+
onChangePicker: function(e, index, fieldName) {
|
77
|
+
var el = e.target;
|
78
|
+
var value = el.options[el.selectedIndex].getAttribute('data-json');
|
79
|
+
var json = JSON.parse(value);
|
80
|
+
|
81
|
+
var props = {};
|
82
|
+
props[fieldName] = json;
|
83
|
+
|
84
|
+
var data = $.extend({}, componentsVM.components[index], {
|
85
|
+
props: props
|
86
|
+
});
|
87
|
+
|
88
|
+
componentsVM.components.$set(index, data)
|
89
|
+
},
|
90
|
+
pickerOptionIsSelected: function(component, fieldName, recordLabel, recordName) {
|
91
|
+
return component.$data
|
92
|
+
&& component.$data.props
|
93
|
+
&& component.$data.props[fieldName]
|
94
|
+
&& component.$data.props[fieldName][recordLabel] == recordName
|
95
|
+
&& component.$data.props[fieldName][recordLabel] == recordName;
|
43
96
|
}
|
44
97
|
}
|
45
98
|
});
|
@@ -66,6 +66,7 @@ module RailsAdmin
|
|
66
66
|
class Field
|
67
67
|
attr_accessor :name, :type
|
68
68
|
attr_accessor :label, :help
|
69
|
+
attr_accessor :picker_label
|
69
70
|
attr_accessor :picker_records
|
70
71
|
|
71
72
|
def initialize(name, type)
|
@@ -82,8 +83,9 @@ module RailsAdmin
|
|
82
83
|
if s.nil? then return @help else @help = s end
|
83
84
|
end
|
84
85
|
|
85
|
-
def
|
86
|
-
|
86
|
+
def setup_picker(label, records)
|
87
|
+
@picker_label = label
|
88
|
+
@picker_records = records
|
87
89
|
end
|
88
90
|
end
|
89
91
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_json_editor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jasper Haggenburg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,11 +66,8 @@ files:
|
|
66
66
|
- README.md
|
67
67
|
- Rakefile
|
68
68
|
- app/assets/javascripts/rails_admin_json_editor/rails_admin_json_editor.js
|
69
|
-
- app/assets/javascripts/rails_admin_json_editor/vue.js
|
69
|
+
- app/assets/javascripts/rails_admin_json_editor/vue.0.11.4.js
|
70
70
|
- app/views/rails_admin_json_editor/main/_form_json_editor.html.erb
|
71
|
-
- app/views/rails_admin_json_editor/main/_form_json_editor_component.html.erb
|
72
|
-
- app/views/rails_admin_json_editor/main/_form_json_editor_dropdown.html.erb
|
73
|
-
- app/views/rails_admin_json_editor/main/_form_json_editor_picker.html.erb
|
74
71
|
- lib/rails_admin_json_editor.rb
|
75
72
|
- lib/rails_admin_json_editor/version.rb
|
76
73
|
- rails_admin_json_editor.gemspec
|
@@ -1,29 +0,0 @@
|
|
1
|
-
<div v-show="type == '<%= locals[:component].type %>'">
|
2
|
-
<legend><%= locals[:component].label %></legend>
|
3
|
-
<%= content_tag :p, locals[:component].help, class: "help-block" unless locals[:component].help.nil? %>
|
4
|
-
|
5
|
-
<% locals[:component].fields.each do |f| %>
|
6
|
-
<div class="control-group">
|
7
|
-
<%= label_tag f.name, f.label, class: "control-label" %>
|
8
|
-
|
9
|
-
<div class="controls">
|
10
|
-
<% if f.type == :string %>
|
11
|
-
<%= text_field_tag f.name, nil, 'v-model' => "props.#{f.name}" %>
|
12
|
-
<% end %>
|
13
|
-
|
14
|
-
<% if f.type == :text %>
|
15
|
-
<%= text_area_tag f.name, nil, 'v-model' => "props.#{f.name}" %>
|
16
|
-
<% end %>
|
17
|
-
|
18
|
-
<% if f.type == :picker %>
|
19
|
-
<%= link_to 'Selecteer', '#', role: 'button', class: 'btn',
|
20
|
-
'v-on' => 'click: openPicker',
|
21
|
-
'component-name' => f.name,
|
22
|
-
'component-index' => '{{ $index }}' %>
|
23
|
-
<% end %>
|
24
|
-
|
25
|
-
<%= content_tag :p, f.help, class: "help-block" unless f.help.nil? %>
|
26
|
-
</div>
|
27
|
-
</div>
|
28
|
-
<% end %>
|
29
|
-
</div>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<div class="dropdown">
|
2
|
-
<a class="dropdown-toggle btn btn-info" data-toggle="dropdown" href="#">Component toevoegen <b class="caret"></b></a>
|
3
|
-
|
4
|
-
<ul class="dropdown-menu">
|
5
|
-
<% locals[:components].each do |component| %>
|
6
|
-
<li><a href="#" v-on="click: addComponent" component-type="<%= component.type %>"><%= component.type %></a></li>
|
7
|
-
<% end %>
|
8
|
-
</ul>
|
9
|
-
</div>
|
@@ -1,52 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
name = locals[:field].name
|
3
|
-
id = "#{name}-record-picker"
|
4
|
-
records = locals[:field].picker_records
|
5
|
-
%>
|
6
|
-
|
7
|
-
<div id="<%= id %>" class="modal hide fade">
|
8
|
-
<div class="modal-header">
|
9
|
-
<button type="button" class="close" data-dismiss="modal">×</button>
|
10
|
-
<h3>Kies <%= name %></h3>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<div class="modal-body">
|
14
|
-
<select v-model="selectedRecord" placeholder="Zoeken">
|
15
|
-
<option value=""></option>
|
16
|
-
<% records.each do |record| %>
|
17
|
-
<option value="<%= record.to_json %>"><%= record.upload_file_name %></option>
|
18
|
-
<% end %>
|
19
|
-
</select>
|
20
|
-
</div>
|
21
|
-
|
22
|
-
<div class="modal-footer">
|
23
|
-
<button class="btn" data-dismiss="modal">Sluiten</button>
|
24
|
-
<button v-on="click:submit" class="btn btn-primary">Opslaan</button>
|
25
|
-
</div>
|
26
|
-
</div>
|
27
|
-
|
28
|
-
<script type="text/javascript">
|
29
|
-
recordPickers['<%= name %>'] = new Vue({
|
30
|
-
el: '#<%= id %>',
|
31
|
-
data: {
|
32
|
-
componentIndex: null,
|
33
|
-
selectedRecord: null
|
34
|
-
},
|
35
|
-
methods: {
|
36
|
-
show: function(componentIndex) {
|
37
|
-
this.componentIndex = componentIndex;
|
38
|
-
this.selectedRecord = null;
|
39
|
-
$('#<%= id %>').modal();
|
40
|
-
},
|
41
|
-
submit: function(e) {
|
42
|
-
e.preventDefault();
|
43
|
-
var values = JSON.parse(this.selectedRecord)
|
44
|
-
|
45
|
-
if(values) {
|
46
|
-
componentsVM.components[this.componentIndex].props = values
|
47
|
-
$('#<%= id %>').modal('hide');
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
51
|
-
})
|
52
|
-
</script>
|