erd 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/erd/erd.js.coffee +35 -25
- data/app/controllers/erd/erd_controller.rb +2 -3
- data/config.ru +7 -0
- data/erd.gemspec +5 -0
- data/lib/erd/version.rb +1 -1
- data/spec/controllers/erd_controller_spec.rb +10 -0
- data/spec/internal/app/models/post.rb +3 -0
- data/spec/internal/app/models/user.rb +3 -0
- data/spec/internal/config/database.yml +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/combustion_test.sqlite +0 -0
- data/spec/internal/db/schema.rb +15 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/spec_helper.rb +12 -0
- metadata +72 -7
@@ -10,14 +10,22 @@ class ERD
|
|
10
10
|
$(rows).each (i, row) ->
|
11
11
|
existing = row if (action == $(row[0]).html()) && (model == $(row[1]).html()) && (column == $(row[2]).html())
|
12
12
|
if existing == null
|
13
|
-
$('#changes > tbody').append("
|
13
|
+
$('#changes > tbody').append("""
|
14
|
+
<tr>
|
15
|
+
<td data-name="action">#{action}</td>
|
16
|
+
<td data-name="model">#{model}</td>
|
17
|
+
<td data-name="column">#{column}</td>
|
18
|
+
<td data-name="from">#{from}</td>
|
19
|
+
<td data-name="to">#{to}</td>
|
20
|
+
</tr>
|
21
|
+
""")
|
14
22
|
else
|
15
23
|
$(existing[3]).text(from)
|
16
24
|
$(existing[4]).text(to)
|
17
25
|
$('#changes').show()
|
18
26
|
|
19
27
|
positions: (div) ->
|
20
|
-
[left, width, top, height] = [
|
28
|
+
[left, width, top, height] = [parseFloat(div.css('left')), parseFloat(div.css('width')), parseFloat(div.css('top')), parseFloat(div.css('height'))]
|
21
29
|
{left: left, right: left + width, top: top, bottom: top + height, center: {x: (left + left + width) / 2, y: (top + top + height) / 2}, vertex: {}}
|
22
30
|
|
23
31
|
connect_arrows: ->
|
@@ -52,9 +60,9 @@ class ERD
|
|
52
60
|
from.vertex.direction = 'h'
|
53
61
|
|
54
62
|
if from.vertex.direction == 'h'
|
55
|
-
path = "M#{
|
63
|
+
path = "M#{Math.floor(from.vertex.x)} #{Math.floor(from.vertex.y)}H#{Math.floor((from.vertex.x + to.vertex.x) / 2)} V#{Math.floor(to.vertex.y)} H#{Math.floor(to.vertex.x)}"
|
56
64
|
else
|
57
|
-
path = "M#{
|
65
|
+
path = "M#{Math.floor(from.vertex.x)} #{Math.floor(from.vertex.y)}V#{Math.floor((from.vertex.y + to.vertex.y) / 2)} H#{Math.floor(to.vertex.x)} V#{Math.floor(to.vertex.y)}"
|
58
66
|
|
59
67
|
@paper.path(path).attr({'stroke-width': 2, opacity: 0.5, 'arrow-end': 'classic-wide-long'})
|
60
68
|
|
@@ -91,16 +99,18 @@ class ERD
|
|
91
99
|
$('form.add_column_form').on 'submit', @handle_add_column
|
92
100
|
$('#changes_form').on 'submit', @handle_save
|
93
101
|
|
94
|
-
handle_save:
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
102
|
+
handle_save: (ev) =>
|
103
|
+
changes = $('#changes > tbody > tr').map(->
|
104
|
+
change = {}
|
105
|
+
$(this).find('td').each ->
|
106
|
+
name = $(this).data('name')
|
107
|
+
value = $(this).html()
|
108
|
+
change[name] = value
|
109
|
+
change
|
110
|
+
).toArray()
|
111
|
+
$('#changes_form').find('input[name=changes]').val(JSON.stringify(changes))
|
112
|
+
|
113
|
+
handle_add_column: (ev) =>
|
104
114
|
ev.preventDefault()
|
105
115
|
target = $(ev.target)
|
106
116
|
name = target.find('input[name=name]').val()
|
@@ -108,7 +118,7 @@ class ERD
|
|
108
118
|
|
109
119
|
model = target.find('input[name=model]').val()
|
110
120
|
type = target.find('input[name=type]').val()
|
111
|
-
upsert_change 'add_column', model, "#{name}(#{type})", '', ''
|
121
|
+
@upsert_change 'add_column', model, "#{name}(#{type})", '', ''
|
112
122
|
|
113
123
|
name_span = $("<span/>", class: 'column_name_text')
|
114
124
|
.append(name)
|
@@ -131,7 +141,7 @@ class ERD
|
|
131
141
|
.find('a.add_column')
|
132
142
|
.show()
|
133
143
|
|
134
|
-
handle_change_column_type: (ev)
|
144
|
+
handle_change_column_type: (ev) =>
|
135
145
|
ev.preventDefault()
|
136
146
|
target = $(ev.target)
|
137
147
|
to = target.find('input[name=to]').val()
|
@@ -141,14 +151,14 @@ class ERD
|
|
141
151
|
column = target.find('input[name=column]').val()
|
142
152
|
type = target.find('input[name=type]').val()
|
143
153
|
if to != type
|
144
|
-
upsert_change 'alter_column', model, column, type, to
|
154
|
+
@upsert_change 'alter_column', model, column, type, to
|
145
155
|
|
146
156
|
target.hide()
|
147
157
|
.siblings('.column_type_text')
|
148
158
|
.text(to)
|
149
159
|
.show()
|
150
160
|
|
151
|
-
handle_rename_column: (ev)
|
161
|
+
handle_rename_column: (ev) =>
|
152
162
|
ev.preventDefault()
|
153
163
|
target = $(ev.target)
|
154
164
|
to = target.find('input[name=to]').val()
|
@@ -157,14 +167,14 @@ class ERD
|
|
157
167
|
model = target.find('input[name=model]').val()
|
158
168
|
column = target.find('input[name=column]').val()
|
159
169
|
if to != column
|
160
|
-
upsert_change 'rename_column', model, column, column, to
|
170
|
+
@upsert_change 'rename_column', model, column, column, to
|
161
171
|
|
162
172
|
target.hide()
|
163
173
|
.siblings('.column_name_text')
|
164
174
|
.text(to)
|
165
175
|
.show()
|
166
176
|
|
167
|
-
handle_rename_model: (ev)
|
177
|
+
handle_rename_model: (ev) =>
|
168
178
|
ev.preventDefault()
|
169
179
|
target = $(ev.target)
|
170
180
|
to = target.find('input[name=to]').val()
|
@@ -172,16 +182,16 @@ class ERD
|
|
172
182
|
|
173
183
|
model = target.find('input[name=model]').val()
|
174
184
|
if to != model
|
175
|
-
upsert_change 'rename_model', model, '', model, to
|
185
|
+
@upsert_change 'rename_model', model, '', model, to
|
176
186
|
|
177
187
|
target.hide()
|
178
188
|
.siblings('.model_name_text')
|
179
189
|
.text(to)
|
180
190
|
.show()
|
181
191
|
|
182
|
-
handle_add_column_click: (ev)
|
192
|
+
handle_add_column_click: (ev) =>
|
183
193
|
ev.preventDefault()
|
184
|
-
target = $(
|
194
|
+
target = $(ev.currentTarget)
|
185
195
|
|
186
196
|
m = target.parents('div.model')
|
187
197
|
if m.hasClass('noclick')
|
@@ -198,8 +208,8 @@ class ERD
|
|
198
208
|
.val('')
|
199
209
|
.focus()
|
200
210
|
|
201
|
-
handle_text_elem_click: (ev)
|
202
|
-
target = $(
|
211
|
+
handle_text_elem_click: (ev) =>
|
212
|
+
target = $(ev.currentTarget)
|
203
213
|
text = target.text()
|
204
214
|
|
205
215
|
m = target.parents('div.model')
|
@@ -8,9 +8,8 @@ module Erd
|
|
8
8
|
|
9
9
|
class ErdController < ::Erd::ApplicationController
|
10
10
|
def index
|
11
|
-
# `bundle exec rake erd filename=tmp/erd filetype=plain`
|
12
11
|
Rails.application.eager_load!
|
13
|
-
RailsERD.options[:filename], RailsERD.options[:filetype] = 'tmp/erd', 'plain'
|
12
|
+
RailsERD.options[:filename], RailsERD.options[:filetype] = Rails.root.join('tmp/erd'), 'plain'
|
14
13
|
RailsERD::Diagram::Graphviz.create
|
15
14
|
plain = Rails.root.join('tmp/erd.plain').read
|
16
15
|
positions = if (json = Rails.root.join('tmp/erd_positions.json')).exist?
|
@@ -23,7 +22,7 @@ module Erd
|
|
23
22
|
migrated_versions = ActiveRecord::Base.connection.select_values("SELECT version FROM #{ActiveRecord::Migrator.schema_migrations_table_name}").map {|v| '%.3d' % v}
|
24
23
|
@migrations = []
|
25
24
|
ActiveRecord::Migrator.migrations_paths.each do |path|
|
26
|
-
Dir.foreach(path) do |file|
|
25
|
+
Dir.foreach(Rails.root.join(path)) do |file|
|
27
26
|
if (version_and_name = /^(\d{3,})_(.+)\.rb$/.match(file))
|
28
27
|
status = migrated_versions.delete(version_and_name[1]) ? 'up' : 'down'
|
29
28
|
@migrations << {status: status, version: version_and_name[1], name: version_and_name[2]}
|
data/config.ru
ADDED
data/erd.gemspec
CHANGED
@@ -17,4 +17,9 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_runtime_dependency 'rails-erd', ['>= 0.4.5']
|
19
19
|
gem.add_runtime_dependency 'nokogiri'
|
20
|
+
|
21
|
+
gem.add_development_dependency 'ruby-debug19'
|
22
|
+
gem.add_development_dependency 'combustion', '~> 0.3.1'
|
23
|
+
gem.add_development_dependency 'rspec-rails'
|
24
|
+
gem.add_development_dependency 'sqlite3'
|
20
25
|
end
|
data/lib/erd/version.rb
CHANGED
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
create_table "posts", :force => true do |t|
|
3
|
+
t.string "title"
|
4
|
+
t.text "content"
|
5
|
+
t.integer "user_id"
|
6
|
+
t.datetime "created_at", :null => false
|
7
|
+
t.datetime "updated_at", :null => false
|
8
|
+
end
|
9
|
+
|
10
|
+
create_table "users", :force => true do |t|
|
11
|
+
t.string "name"
|
12
|
+
t.datetime "created_at", :null => false
|
13
|
+
t.datetime "updated_at", :null => false
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
*.log
|
File without changes
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails-erd
|
16
|
-
requirement: &
|
16
|
+
requirement: &70212334462400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.4.5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70212334462400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70212334461440 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,51 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70212334461440
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: ruby-debug19
|
38
|
+
requirement: &70212334460620 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70212334460620
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: combustion
|
49
|
+
requirement: &70212334459800 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.3.1
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70212334459800
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec-rails
|
60
|
+
requirement: &70212334459100 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70212334459100
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3
|
71
|
+
requirement: &70212334458260 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70212334458260
|
36
80
|
description: erd engine on Rails
|
37
81
|
email:
|
38
82
|
- ronnie@dio.jp
|
@@ -56,12 +100,23 @@ files:
|
|
56
100
|
- app/views/erd/erd/erd.html.erb
|
57
101
|
- app/views/erd/erd/index.html.erb
|
58
102
|
- app/views/layouts/erd/application.html.erb
|
103
|
+
- config.ru
|
59
104
|
- config/routes.rb
|
60
105
|
- erd.gemspec
|
61
106
|
- lib/erd.rb
|
62
107
|
- lib/erd/engine.rb
|
63
108
|
- lib/erd/railtie.rb
|
64
109
|
- lib/erd/version.rb
|
110
|
+
- spec/controllers/erd_controller_spec.rb
|
111
|
+
- spec/internal/app/models/post.rb
|
112
|
+
- spec/internal/app/models/user.rb
|
113
|
+
- spec/internal/config/database.yml
|
114
|
+
- spec/internal/config/routes.rb
|
115
|
+
- spec/internal/db/combustion_test.sqlite
|
116
|
+
- spec/internal/db/schema.rb
|
117
|
+
- spec/internal/log/.gitignore
|
118
|
+
- spec/internal/public/favicon.ico
|
119
|
+
- spec/spec_helper.rb
|
65
120
|
- vendor/assets/javascripts/raphael-min.js
|
66
121
|
homepage: https://github.com/amatsuda/erd
|
67
122
|
licenses: []
|
@@ -87,4 +142,14 @@ rubygems_version: 1.8.16
|
|
87
142
|
signing_key:
|
88
143
|
specification_version: 3
|
89
144
|
summary: erd engine on Rails
|
90
|
-
test_files:
|
145
|
+
test_files:
|
146
|
+
- spec/controllers/erd_controller_spec.rb
|
147
|
+
- spec/internal/app/models/post.rb
|
148
|
+
- spec/internal/app/models/user.rb
|
149
|
+
- spec/internal/config/database.yml
|
150
|
+
- spec/internal/config/routes.rb
|
151
|
+
- spec/internal/db/combustion_test.sqlite
|
152
|
+
- spec/internal/db/schema.rb
|
153
|
+
- spec/internal/log/.gitignore
|
154
|
+
- spec/internal/public/favicon.ico
|
155
|
+
- spec/spec_helper.rb
|