model_gen 0.1.1 → 0.1.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9fec52a545c338bbcd9d624d709eb6bc48ea4265
|
4
|
+
data.tar.gz: 8a17b8d883258b40ed743a7b5d63f97a94f4d4c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 828069d41e27cc623837c406fddba1a8b5d1c12a31099d936c4a80654123e4346f7f4f75e5af1ac2b9a2590f892051948a263e2b61bc4126ab76a08716cee891
|
7
|
+
data.tar.gz: d85f578a4041e000f002debe96d57ed0ed6ef62e104f6182ab6be1bea7d93c3d9c10c053f36498360d13bee4cae105836057f096e611c04abc8a9731de60a7ff
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_dependency "model_gen/application_controller"
|
2
|
+
|
3
|
+
module ModelGen
|
4
|
+
class EntitiesController < ApplicationController
|
5
|
+
def new
|
6
|
+
end
|
7
|
+
|
8
|
+
def create
|
9
|
+
command = "rails g model #{params[:name].downcase}"
|
10
|
+
params[:fields].each do |index, field|
|
11
|
+
command = command + " #{field[:name].downcase}:#{field[:type].downcase}"
|
12
|
+
end
|
13
|
+
system command
|
14
|
+
redirect_to new_entity_path
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ModelGen
|
2
|
+
module EntitiesHelper
|
3
|
+
def available_data_types
|
4
|
+
%w{binary boolean date datetime decimal float integer bigint references string text time timestamp}
|
5
|
+
# primary_key
|
6
|
+
end
|
7
|
+
|
8
|
+
def available_models
|
9
|
+
rb_files = File.join("**", "*.rb")
|
10
|
+
Dir.glob("#{Rails.root}/app/models" + rb_files).collect do |filename|
|
11
|
+
filename.chomp('.rb').split("/").last.camelize
|
12
|
+
end.flatten.reject { |m| m.starts_with?('Concerns::') || m == 'ApplicationRecord' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<%= form_tag entities_path do %>
|
2
|
+
<div>
|
3
|
+
<label>Model Name</label>
|
4
|
+
<%= text_field_tag :name %>
|
5
|
+
</div>
|
6
|
+
<br/>
|
7
|
+
<br/>
|
8
|
+
<div id="fields">
|
9
|
+
<div id="field">
|
10
|
+
<div>
|
11
|
+
<label>Field Name</label>
|
12
|
+
<%= text_field_tag 'fields[0][name]' %>
|
13
|
+
</div>
|
14
|
+
<br/>
|
15
|
+
<div>
|
16
|
+
<label>Field Type</label>
|
17
|
+
<%= select_tag "fields[0][type]", options_for_select(available_data_types), onchange: 'checkReferences(this)' %>
|
18
|
+
</div>
|
19
|
+
<br/>
|
20
|
+
<a class="remove-field" onclick="removeField(this)" style="display: none;">Remove</a>
|
21
|
+
<br/>
|
22
|
+
<br/>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<%= select_tag "model", options_for_select(available_models), style: 'display: none;' %>
|
26
|
+
<a id="add-field">
|
27
|
+
Add Field
|
28
|
+
</a>
|
29
|
+
<%= submit_tag 'Create Model' %>
|
30
|
+
<% end %>
|
31
|
+
<script>
|
32
|
+
document.getElementById('add-field').onclick = function(){
|
33
|
+
var index = Math.floor(Math.random()*1000000000000000);
|
34
|
+
var field = document.getElementById("field");
|
35
|
+
var new_field = field.cloneNode(true);
|
36
|
+
var field_name_input = new_field.querySelector("div > #fields_0_name")
|
37
|
+
var field_type_input = new_field.querySelector("div > #fields_0_type")
|
38
|
+
if (field_name_input.nodeName.toLowerCase() == 'select'){
|
39
|
+
var new_field_name_input = document.createElement('input')
|
40
|
+
field_name_input.parentElement.replaceChild(new_field_name_input, field_name_input)
|
41
|
+
field_name_input = new_field_name_input
|
42
|
+
}
|
43
|
+
field_name_input.name = 'fields[' + index + '][name]'
|
44
|
+
field_name_input.id = 'fields_' + index + '_name'
|
45
|
+
field_name_input.value = ''
|
46
|
+
field_type_input.name = 'fields[' + index + '][type]'
|
47
|
+
field_type_input.id = 'fields_' + index + '_type'
|
48
|
+
field_type_input.value = ''
|
49
|
+
new_field.querySelector(".remove-field").style = '';
|
50
|
+
document.getElementById("fields").appendChild(new_field);
|
51
|
+
}
|
52
|
+
function removeField(element){
|
53
|
+
console.log(element.parentElement)
|
54
|
+
element.parentElement.remove()
|
55
|
+
}
|
56
|
+
function checkReferences(element){
|
57
|
+
var index = element.id.split('_')[1]
|
58
|
+
if (element.value == 'references') {
|
59
|
+
var field_name_input = element.parentElement.parentElement.querySelector("div > #fields_" + index + "_name")
|
60
|
+
var field_name_select = document.getElementById('model').cloneNode(true);
|
61
|
+
field_name_select.name = 'fields[' + index + '][name]'
|
62
|
+
field_name_select.id = 'fields_' + index + '_name'
|
63
|
+
field_name_select.value = ''
|
64
|
+
field_name_select.style = ''
|
65
|
+
field_name_input.parentElement.replaceChild(field_name_select,field_name_input)
|
66
|
+
} else {
|
67
|
+
var field_name_select = element.parentElement.parentElement.querySelector("div > select#fields_" + index + "_name")
|
68
|
+
if (field_name_select != undefined) {
|
69
|
+
var field_name_input = document.createElement('input')
|
70
|
+
field_name_input.name = 'fields[' + index + '][name]'
|
71
|
+
field_name_input.id = 'fields_' + index + '_name'
|
72
|
+
field_name_input.value = ''
|
73
|
+
field_name_select.parentElement.replaceChild(field_name_input,field_name_select)
|
74
|
+
}
|
75
|
+
}
|
76
|
+
}
|
77
|
+
</script>
|
data/config/routes.rb
CHANGED
data/lib/model_gen/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: model_gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Atharva System
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,20 +30,6 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 5.0.0.1
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: sqlite3
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0'
|
40
|
-
type: :development
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
33
|
description: Create model in application using required details submitted from gui
|
48
34
|
form.
|
49
35
|
email:
|
@@ -59,11 +45,14 @@ files:
|
|
59
45
|
- app/assets/javascripts/model_gen/application.js
|
60
46
|
- app/assets/stylesheets/model_gen/application.css
|
61
47
|
- app/controllers/model_gen/application_controller.rb
|
48
|
+
- app/controllers/model_gen/entities_controller.rb
|
62
49
|
- app/helpers/model_gen/application_helper.rb
|
50
|
+
- app/helpers/model_gen/entities_helper.rb
|
63
51
|
- app/jobs/model_gen/application_job.rb
|
64
52
|
- app/mailers/model_gen/application_mailer.rb
|
65
53
|
- app/models/model_gen/application_record.rb
|
66
54
|
- app/views/layouts/model_gen/application.html.erb
|
55
|
+
- app/views/model_gen/entities/new.html.erb
|
67
56
|
- config/routes.rb
|
68
57
|
- lib/model_gen.rb
|
69
58
|
- lib/model_gen/engine.rb
|