rails-erd-d3 0.0.16 → 0.0.17
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 +4 -4
- data/README.md +3 -4
- data/lib/rails_erd_d3.rb +14 -31
- data/lib/templates/d3.html.erb +93 -0
- data/lib/templates/head.html +8 -0
- data/lib/templates/modals.html.erb +40 -0
- data/lib/templates/nav.html +20 -0
- data/rails-erd-d3.gemspec +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 609e081fe5033be3fe4e163f6f79b31ccaad2263
|
4
|
+
data.tar.gz: 5ea5c46a0e0fc60be4d19844df712d9ccd1cff32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7734e3063d9fce108d9c84e8ef6ca71ddacfd6295c489061d398adbde5da4e022b4670d86b54cd3847db6bcaf2786e2f366646034694902845a87eb9f8316dea
|
7
|
+
data.tar.gz: a026def9fde2e298f9d275874a0a9b1aa603fee8f15c34a72a658570e6df39077d29c794397bd881743f56927fa61fb9852a14bdd0b1006cda9cd5d875c4d445
|
data/README.md
CHANGED
@@ -21,12 +21,11 @@ And then execute for creating file erd.html:
|
|
21
21
|
|
22
22
|
## Todo
|
23
23
|
|
24
|
-
- Add message after creating
|
25
24
|
- Sort nodes by label
|
26
25
|
- Check all associations
|
27
|
-
- belongs_to
|
28
|
-
- has_one
|
29
|
-
- has_many
|
26
|
+
- [X] belongs_to
|
27
|
+
- [X] has_one
|
28
|
+
- [x] has_many
|
30
29
|
- has_many :through
|
31
30
|
- has_one :through
|
32
31
|
- has_and_belongs_to_many
|
data/lib/rails_erd_d3.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "json"
|
2
|
+
require "erb"
|
2
3
|
|
3
4
|
class RailsErdD3
|
4
5
|
def self.get_rails_version
|
@@ -6,8 +7,6 @@ class RailsErdD3
|
|
6
7
|
end
|
7
8
|
|
8
9
|
def self.get_all_models
|
9
|
-
version = get_rails_version
|
10
|
-
|
11
10
|
case get_rails_version
|
12
11
|
when 4
|
13
12
|
klass = ActiveRecord::Base
|
@@ -67,37 +66,21 @@ class RailsErdD3
|
|
67
66
|
private
|
68
67
|
|
69
68
|
def self.get_head
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
"<link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' integrity='sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u' crossorigin='anonymous'>"\
|
77
|
-
"</head>"
|
69
|
+
File.read(
|
70
|
+
File.expand_path(
|
71
|
+
"templates/head.html",
|
72
|
+
File.dirname(__FILE__)
|
73
|
+
)
|
74
|
+
)
|
78
75
|
end
|
79
76
|
|
80
77
|
def self.get_nav
|
81
|
-
|
82
|
-
|
83
|
-
"
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
"</a>"\
|
88
|
-
"</div>"\
|
89
|
-
"</div>"\
|
90
|
-
"<div class='collapse navbar-collapse'>"\
|
91
|
-
"<ul class='nav navbar-nav navbar-right'>"\
|
92
|
-
"<li>"\
|
93
|
-
"<a href='https://github.com/romankrasavtsev' target='_blank' style='color: white;'>"\
|
94
|
-
"© 2016 Roman Krasavtsev"\
|
95
|
-
"</a>"\
|
96
|
-
"</li>"\
|
97
|
-
"</ul>"\
|
98
|
-
"</div>"\
|
99
|
-
"</div>"\
|
100
|
-
"</nav>"
|
78
|
+
File.read(
|
79
|
+
File.expand_path(
|
80
|
+
"templates/nav.html",
|
81
|
+
File.dirname(__FILE__)
|
82
|
+
)
|
83
|
+
)
|
101
84
|
end
|
102
85
|
|
103
86
|
def self.get_d3
|
@@ -209,7 +192,7 @@ class RailsErdD3
|
|
209
192
|
"<h4 class='modal-title'>#{name}</h4>"\
|
210
193
|
"</div>"\
|
211
194
|
"<div class='modal-body'>"\
|
212
|
-
"<div class='panel panel-
|
195
|
+
"<div class='panel panel-primary'>"\
|
213
196
|
"<div class='panel-heading'>Associations</div>"\
|
214
197
|
"<table class='table table-hover'>"\
|
215
198
|
"<thead>"\
|
@@ -0,0 +1,93 @@
|
|
1
|
+
<script>
|
2
|
+
var data = <%= get_data %>;
|
3
|
+
|
4
|
+
var width = window.innerWidth
|
5
|
+
|| document.documentElement.clientWidth
|
6
|
+
|| document.body.clientWidth;
|
7
|
+
var height = window.innerHeight
|
8
|
+
|| document.documentElement.clientHeight
|
9
|
+
|| document.body.clientHeight;
|
10
|
+
|
11
|
+
var colorScale = d3.scaleOrdinal(d3.schemeCategory20);
|
12
|
+
|
13
|
+
var svg = d3.select('#erd').append('svg')
|
14
|
+
.attr('height', height)
|
15
|
+
.attr('width', width)
|
16
|
+
.style('background', 'white');
|
17
|
+
|
18
|
+
var simulation = d3.forceSimulation()
|
19
|
+
.force('link', d3.forceLink().id(function(d) { return d.index }))
|
20
|
+
.force('collide',d3.forceCollide( function(d){return d.r + 20 }).iterations(30) )
|
21
|
+
.force('charge', d3.forceManyBody())
|
22
|
+
.force('center', d3.forceCenter(width / 2, height / 2))
|
23
|
+
.force('y', d3.forceY(0))
|
24
|
+
.force('x', d3.forceX(0));
|
25
|
+
|
26
|
+
var link = svg.append('g')
|
27
|
+
.classed('links', true)
|
28
|
+
.selectAll('line')
|
29
|
+
.data(data.links)
|
30
|
+
.enter()
|
31
|
+
.append('line')
|
32
|
+
.attr('stroke', 'black');
|
33
|
+
|
34
|
+
var node = svg.selectAll('.node')
|
35
|
+
.data(data.nodes)
|
36
|
+
.enter()
|
37
|
+
.append('g')
|
38
|
+
.classed('node', true)
|
39
|
+
.style('cursor', 'pointer')
|
40
|
+
.attr('data-toggle', 'modal')
|
41
|
+
.attr('data-target', function(d, i){ return '#' + data.nodes[i].label })
|
42
|
+
.call(d3.drag()
|
43
|
+
.on('start', dragstarted)
|
44
|
+
.on('drag', dragged)
|
45
|
+
.on('end', dragended));
|
46
|
+
|
47
|
+
node.append('circle')
|
48
|
+
.classed('circle', true)
|
49
|
+
.attr('r', function(d){ return d.r })
|
50
|
+
.attr('fill', function(d, i){ return colorScale(i) });
|
51
|
+
|
52
|
+
node.append('text')
|
53
|
+
.classed('text', true)
|
54
|
+
.text(function(d) {
|
55
|
+
return d.label;
|
56
|
+
});
|
57
|
+
|
58
|
+
var ticked = function() {
|
59
|
+
link
|
60
|
+
.attr('x1', function(d) { return d.source.x; })
|
61
|
+
.attr('y1', function(d) { return d.source.y; })
|
62
|
+
.attr('x2', function(d) { return d.target.x; })
|
63
|
+
.attr('y2', function(d) { return d.target.y; });
|
64
|
+
|
65
|
+
node
|
66
|
+
.attr('transform', function(d) {
|
67
|
+
return 'translate(' + [d.x, d.y] + ')';
|
68
|
+
});
|
69
|
+
}
|
70
|
+
|
71
|
+
simulation.nodes(data.nodes)
|
72
|
+
.on('tick', ticked);
|
73
|
+
|
74
|
+
simulation.force('link')
|
75
|
+
.links(data.links);
|
76
|
+
|
77
|
+
function dragstarted(d) {
|
78
|
+
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
|
79
|
+
d.fx = d.x;
|
80
|
+
d.fy = d.y;
|
81
|
+
}
|
82
|
+
|
83
|
+
function dragged(d) {
|
84
|
+
d.fx = d3.event.x;
|
85
|
+
d.fy = d3.event.y;
|
86
|
+
}
|
87
|
+
|
88
|
+
function dragended(d) {
|
89
|
+
if (!d3.event.active) simulation.alphaTarget(0);
|
90
|
+
d.fx = null;
|
91
|
+
d.fy = null;
|
92
|
+
}
|
93
|
+
</script>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<head>
|
2
|
+
<title>Rails-ERD-D3</title>
|
3
|
+
<meta charset="utf-8">
|
4
|
+
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
|
5
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.3.0/d3.min.js"></script>
|
6
|
+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
7
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
8
|
+
</head>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="modal fade" id="<%= name %>" tabindex="-1" role="dialog">
|
2
|
+
<div class="modal-dialog" role="document">
|
3
|
+
<div class="modal-content">
|
4
|
+
<div class="modal-header">
|
5
|
+
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
6
|
+
<h4 class="modal-title">
|
7
|
+
<%= name %>
|
8
|
+
</h4>
|
9
|
+
</div>
|
10
|
+
<div class="modal-body">
|
11
|
+
<div class="panel panel-primary">
|
12
|
+
<div class="panel-heading">Associations</div>
|
13
|
+
<table class="table table-hover">
|
14
|
+
<thead>
|
15
|
+
<tr>
|
16
|
+
<th>#</th>
|
17
|
+
<th>name</th>
|
18
|
+
<th>macro</th>
|
19
|
+
<th>foreign_key</th>
|
20
|
+
</tr>
|
21
|
+
</thead>
|
22
|
+
<tbody>
|
23
|
+
<% model.reflections.each_with_index do |r, index| %>
|
24
|
+
<tr>
|
25
|
+
<th><%= index + 1 %></th>
|
26
|
+
<td><%= r[0].capitalize %></td>
|
27
|
+
<td><%= model.reflections[r[0]].macro %></td>
|
28
|
+
<td><%= model.reflections[r[0]].foreign_key %></td>
|
29
|
+
</tr>
|
30
|
+
<% end %>
|
31
|
+
</tbody>
|
32
|
+
</table>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<div class="modal-footer">
|
36
|
+
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<nav class="navbar navbar-default" style="background-color: #337ab7;">
|
2
|
+
<div class="container">
|
3
|
+
<div class="navbar-header">
|
4
|
+
<div class="navbar-brand">
|
5
|
+
<a href="https://github.com/RomanKrasavtsev/rails-erd-d3" target="_blank" style="color: #ffffff;">
|
6
|
+
Rails-ERD-D3
|
7
|
+
</a>
|
8
|
+
</div>
|
9
|
+
</div>
|
10
|
+
<div class="collapse navbar-collapse">
|
11
|
+
<ul class="nav navbar-nav navbar-right">
|
12
|
+
<li>
|
13
|
+
<a href="https://github.com/romankrasavtsev" target="_blank" style="color: #ffffff;">
|
14
|
+
© 2016 Roman Krasavtsev
|
15
|
+
</a>
|
16
|
+
</li>
|
17
|
+
</ul>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</nav>
|
data/rails-erd-d3.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = "rails-erd-d3"
|
7
7
|
spec.authors = ["Roman Krasavtsev"]
|
8
8
|
spec.email = ["mr.krasavtsev@gmail.com"]
|
9
|
-
spec.version = "0.0.
|
9
|
+
spec.version = "0.0.17"
|
10
10
|
spec.summary = "Entity–relationship diagram with D3.js for Rails application"
|
11
11
|
spec.description = "This gem creates entity–relationship diagram with D3.js for your Rails application"
|
12
12
|
spec.homepage = "https://github.com/RomanKrasavtsev/rails-erd-d3"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-erd-d3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roman Krasavtsev
|
@@ -71,6 +71,10 @@ files:
|
|
71
71
|
- bin/erd
|
72
72
|
- lib/rails-erd-d3.rb
|
73
73
|
- lib/rails_erd_d3.rb
|
74
|
+
- lib/templates/d3.html.erb
|
75
|
+
- lib/templates/head.html
|
76
|
+
- lib/templates/modals.html.erb
|
77
|
+
- lib/templates/nav.html
|
74
78
|
- rails-erd-d3.gemspec
|
75
79
|
homepage: https://github.com/RomanKrasavtsev/rails-erd-d3
|
76
80
|
licenses:
|