erd 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.
@@ -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("<tr><td>#{action}</td><td>#{model}</td><td>#{column}</td><td>#{from}</td><td>#{to}</td></tr>")
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] = [parseInt(div.css('left')), parseInt(div.css('width')), parseInt(div.css('top')), parseInt(div.css('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#{parseInt(from.vertex.x)} #{parseInt(from.vertex.y)}H#{parseInt((from.vertex.x + to.vertex.x) / 2)} V#{parseInt(to.vertex.y)} H#{parseInt(to.vertex.x)}"
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#{parseInt(from.vertex.x)} #{parseInt(from.vertex.y)}V#{parseInt((from.vertex.y + to.vertex.y) / 2)} H#{parseInt(to.vertex.x)} V#{parseInt(to.vertex.y)}"
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
- j = '['
96
- rows = ($(tr).find('td') for tr in $('#changes > tbody > tr'))
97
- $(rows).each (i, row) ->
98
- j += "{\"action\": \"#{$(row[0]).html()}\", \"model\": \"#{$(row[1]).html()}\", \"column\": \"#{$(row[2]).html()}\", \"from\": \"#{$(row[3]).html()}\", \"to\": \"#{$(row[4]).html()}\"}"
99
- j += ',' if i < rows.length - 1
100
- j += ']'
101
- $('#changes_form').find('input[name=changes]').val(j)
102
-
103
- handle_add_column: (ev) ->
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]}
@@ -0,0 +1,7 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.require :default, :development
5
+
6
+ Combustion.initialize!
7
+ run Combustion::Application
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Erd
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe Erd::ErdController do
4
+ it 'should GET :index' do
5
+ get :index
6
+
7
+ response.should render_template('index')
8
+ end
9
+ end
10
+
@@ -0,0 +1,3 @@
1
+ class Post < ActiveRecord::Base
2
+ belongs_to :user
3
+ end
@@ -0,0 +1,3 @@
1
+ class User < ActiveRecord::Base
2
+ has_many :posts
3
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/combustion_test.sqlite
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ #
3
+ end
@@ -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
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+
4
+ Bundler.require :default, :development
5
+
6
+ Combustion.initialize!
7
+
8
+ require 'rspec/rails'
9
+
10
+ RSpec.configure do |config|
11
+ config.use_transactional_fixtures = true
12
+ end
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.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-04-30 00:00:00.000000000 Z
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: &70208383601640 !ruby/object:Gem::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: *70208383601640
24
+ version_requirements: *70212334462400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70208383631860 !ruby/object:Gem::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: *70208383631860
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