rails_admin_json_editor 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: 04b3bb8371e4bed444b1fbe9d35f3ba0f2b2aece
4
- data.tar.gz: da37c5f1ef2409fd27b9498b4964812281b35fbf
3
+ metadata.gz: 78111023f4c078ee3c814246cde586fac767e666
4
+ data.tar.gz: 51c14ae94d388c03b50fbaadf1952ed53df62691
5
5
  SHA512:
6
- metadata.gz: 40b4d2f80e5cc1869630332a9a1a5cf36c08976d2821fa30916979fb3328ca3947d50edea48ec763714add6b11828f1536576df9b785d187f67ef37a63c43081
7
- data.tar.gz: 416d02f0820df3953d49b2ce51f10e0934e3fbc4853c501a4d55b2c663d5aa18cf20754b07109c13bbec763278ffa06755207c45d78372d7f7c48263bc4ab881
6
+ metadata.gz: 449e8c87d4476abbf53b56385a51bc6499bba7adcaf44675d54e2bc2a88041ffb875f7818c342f9149ce3afe88a9d53a60e4e5225426ff205f5b33c143954378
7
+ data.tar.gz: 54a97e63e3d571ec631d94a054ba351ea089a5dc12db428e6c52a512c185ebed2e7a1333520d5805a12f56471e92618c7a2e64bbc280e3fa8a0ed80f3247664b
@@ -0,0 +1,47 @@
1
+ <script type="text/javascript">
2
+ var recordPickers = {};
3
+ console.log('yo?')
4
+ </script>
5
+
6
+ <div ref="components_json" class="components_json">
7
+ <div v-repeat="components" class="component">
8
+ <% field.components.each do |component| %>
9
+ <%= render 'form_json_editor_component', locals: { component: component } %>
10
+ <% end %>
11
+ </div>
12
+
13
+ <%= render 'form_json_editor_dropdown', locals: { components: field.components } %>
14
+
15
+ <%= form.text_area field.name, 'v-model' => 'components', cols:50, rows:10, style: 'margin-top:40px' %>
16
+ </div>
17
+
18
+ <% field.components
19
+ .map(&:fields)
20
+ .flatten
21
+ .select { |f| f.picker_records != nil }
22
+ .each do |f| %>
23
+ <%= render 'form_json_editor_picker', locals: { field:f } %>
24
+ <% end %>
25
+
26
+ <script type="text/javascript">
27
+ var componentsVM = new Vue({
28
+ el: '[ref=components_json]',
29
+ data: {
30
+ components: <%= raw field.value || "[]" %>
31
+ },
32
+ methods: {
33
+ addComponent: function(e) {
34
+ e.preventDefault();
35
+ var type = e.target.getAttribute('component-type');
36
+ this.components.push({ type:type })
37
+ },
38
+ openPicker: function(e) {
39
+ e.preventDefault();
40
+ var name = e.target.getAttribute('component-name');
41
+ var index = e.target.getAttribute('component-index');
42
+ console.log('openPicker', name, index);
43
+ recordPickers[name].show(index);
44
+ }
45
+ }
46
+ });
47
+ </script>
@@ -0,0 +1,29 @@
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>
@@ -0,0 +1,9 @@
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>
@@ -0,0 +1,52 @@
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>
@@ -0,0 +1,86 @@
1
+ require 'rails_admin/config/fields/types/text'
2
+
3
+ module RailsAdmin
4
+ module Config
5
+ module Fields
6
+ module Types
7
+ class JsonEditor < RailsAdmin::Config::Fields::Types::Text
8
+ # Register field type for the type loader
9
+ RailsAdmin::Config::Fields::Types.register(self)
10
+
11
+ register_instance_option :partial do
12
+ :form_json_editor
13
+ end
14
+
15
+ register_instance_option :components do
16
+ @components
17
+ end
18
+
19
+ def setup
20
+ @components = []
21
+ yield if block_given?
22
+ end
23
+
24
+ def component(type)
25
+ component = Component.new(type)
26
+
27
+ yield(component) if block_given?
28
+
29
+ @components << component
30
+ end
31
+
32
+ class Component
33
+ attr_accessor :type, :fields
34
+ attr_accessor :label, :help
35
+
36
+ def initialize(type)
37
+ @type = type
38
+ @fields = []
39
+ @label = type
40
+ end
41
+
42
+ def field(name, type)
43
+ field = Field.new(name, type)
44
+
45
+ yield(field) if block_given?
46
+
47
+ @fields << field
48
+ end
49
+
50
+ def label(s = nil)
51
+ if s.nil? then return @label else @label = s end
52
+ end
53
+
54
+ def help(s = nil)
55
+ if s.nil? then return @help else @help = s end
56
+ end
57
+ end
58
+
59
+ class Field
60
+ attr_accessor :name, :type
61
+ attr_accessor :label, :help
62
+ attr_accessor :picker_records
63
+
64
+ def initialize(name, type)
65
+ @name = name
66
+ @type = type
67
+ @label = name
68
+ end
69
+
70
+ def label(s = nil)
71
+ if s.nil? then return @label else @label = s end
72
+ end
73
+
74
+ def help(s = nil)
75
+ if s.nil? then return @help else @help = s end
76
+ end
77
+
78
+ def picker_records(a = nil)
79
+ if a.nil? then return @picker_records else @picker_records = a end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -1,3 +1,3 @@
1
1
  module RailsAdminJsonEditor
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_admin_json_editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jasper Haggenburg
@@ -65,6 +65,11 @@ files:
65
65
  - LICENSE.txt
66
66
  - README.md
67
67
  - Rakefile
68
+ - app/views/rails_admin/main/_form_json_editor.html.erb
69
+ - app/views/rails_admin/main/_form_json_editor_component.html.erb
70
+ - app/views/rails_admin/main/_form_json_editor_dropdown.html.erb
71
+ - app/views/rails_admin/main/_form_json_editor_picker.html.erb
72
+ - config/initializers/rails_admin_json_editor.rb
68
73
  - lib/rails_admin_json_editor.rb
69
74
  - lib/rails_admin_json_editor/version.rb
70
75
  - rails_admin_json_editor.gemspec