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: 908dc6aa6541f33129dd62ce21c078a31750acb1
4
- data.tar.gz: 89c05934d265bbc1f813806feff67f4b3b45e167
3
+ metadata.gz: 9fec52a545c338bbcd9d624d709eb6bc48ea4265
4
+ data.tar.gz: 8a17b8d883258b40ed743a7b5d63f97a94f4d4c8
5
5
  SHA512:
6
- metadata.gz: b7c0411089b5c5602fcacadba24737cb58f86e38074b894eea129bc49aa70deb12a5e812af5379f08f82598a16c3f9888959bf9aa9d968919b02e7314baf9abf
7
- data.tar.gz: 1d9a2617d47f1c9b9d1ccaa15c53496783210d606261dcd533001bb174d61b4e50ffaedc0040e6c0328ff94a1a8e1000bc62ecb38aaed9e57e1961bc04358b02
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
@@ -1,2 +1,3 @@
1
1
  ModelGen::Engine.routes.draw do
2
+ resources :entities, only: [:new, :create]
2
3
  end
@@ -1,3 +1,3 @@
1
1
  module ModelGen
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
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.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-26 00:00:00.000000000 Z
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