roundabout 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +6 -0
- data/app/assets/stylesheets/roundabout/roundabout.css.scss +102 -1
- data/app/controllers/roundabout/roundabout_controller.rb +7 -7
- data/app/views/roundabout/roundabout/index.html.erb +18 -3
- data/lib/roundabout/rspec.rb +1 -1
- data/lib/roundabout/version.rb +1 -1
- metadata +13 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dcb58b4a2e5cc4434b6cfe400420f51ca98db935
|
4
|
+
data.tar.gz: 1075039a0f8931e5f680372c88a77f86bee32a98
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1cb6ac0560493f4ceb19d0f6291d367d31d1d68976cfc760bcfa4ffbca7058f426b6e543848fd12ec591061a7714e0137fb315778c1c3fc6d7385ccce5615ee2
|
7
|
+
data.tar.gz: 691efe7c90e8e138e04179a5a662a533e53118a4378b85b694f601f109a426693a8007ab56b551a9f625e35e3b3b6a65a3c68680026ef58e4b60e7a4408d5d9a
|
data/README.md
CHANGED
@@ -53,3 +53,9 @@ Then browse at your `http://localhost:3000/roundabout`
|
|
53
53
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
54
54
|
4. Push to the branch (`git push origin my-new-feature`)
|
55
55
|
5. Create new Pull Request
|
56
|
+
|
57
|
+
|
58
|
+
## Team
|
59
|
+
|
60
|
+
* [Akira Matsuda](https://github.com/amatsuda)
|
61
|
+
* [Teppei Machida](http://github.com/machida)
|
@@ -1,5 +1,106 @@
|
|
1
|
+
$black: #444444;
|
2
|
+
$white: white;
|
3
|
+
$yellow: #fffebe;
|
4
|
+
$button_yellow: #ffff4f;
|
5
|
+
$background-color: #3aade3;
|
6
|
+
|
7
|
+
// reset
|
8
|
+
|
9
|
+
html, body, p, ul, ol, dl, p, li, dt, dd, tr, td, form {
|
10
|
+
margin: 0;
|
11
|
+
padding: 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
li {
|
15
|
+
list-style-type: none;
|
16
|
+
}
|
17
|
+
|
18
|
+
// design
|
19
|
+
|
20
|
+
body {
|
21
|
+
margin: 20px;
|
22
|
+
color: $black;
|
23
|
+
position: relative;
|
24
|
+
font-family: arial,sans-serif;
|
25
|
+
background: $background-color url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTExMTA1MUYzRUMxMTFFMkJDNjQ4QUM5N0I1ODJDNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTExMTA1MjAzRUMxMTFFMkJDNjQ4QUM5N0I1ODJDNUMiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNEZGNDMzQTNFQUExMUUyQkM2NDhBQzk3QjU4MkM1QyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1MTExMDUxRTNFQzExMUUyQkM2NDhBQzk3QjU4MkM1QyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PolLCroAAAAhSURBVHjaYvj//78KEDMQwkwMRIJRhXgBC5RWIaQQIMAA1wEePzIPm4IAAAAASUVORK5CYII=) repeat top right;
|
26
|
+
}
|
27
|
+
|
28
|
+
#roundabout {
|
29
|
+
padding: 20px;
|
30
|
+
z-index: 2;
|
31
|
+
}
|
32
|
+
|
1
33
|
div.node {
|
2
34
|
position: absolute;
|
3
|
-
border: 1px #
|
35
|
+
border: 1px #444444 solid;
|
4
36
|
cursor: move;
|
37
|
+
background: $white;
|
38
|
+
border-radius: 3px;
|
39
|
+
-moz-box-sizing: border-box;
|
40
|
+
-webkit-box-sizing: border-box;
|
41
|
+
box-sizing: border-box;
|
42
|
+
padding: 4px;
|
43
|
+
&:hover {
|
44
|
+
box-shadow: rgba(0, 0, 0, 0.6) 0 1px 2px;
|
45
|
+
background: $yellow;
|
46
|
+
z-index: 10
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
.node-name span {
|
51
|
+
display: block;
|
52
|
+
font-size: 12px;
|
53
|
+
line-height: 1.4;
|
54
|
+
}
|
55
|
+
|
56
|
+
svg {
|
57
|
+
z-index: -1;
|
58
|
+
}
|
59
|
+
|
60
|
+
@mixin button($button-color: $button_yellow) {
|
61
|
+
display: block;
|
62
|
+
color: lighten($black, 8%);
|
63
|
+
font-size: 11px;
|
64
|
+
line-height: 28px;
|
65
|
+
text-decoration: none;
|
66
|
+
border-radius: 4px;
|
67
|
+
text-shadow: rgba(255, 255, 255, 0.4) 0 1px 0;
|
68
|
+
padding: 0 12px;
|
69
|
+
border: darken($button-color, 16%) solid 1px;
|
70
|
+
box-shadow: rgba(255, 255, 255, 0.2) 0 1px 0 inset, rgba(0, 0, 0, .1) 0 1px 0;
|
71
|
+
background: linear-gradient($button-color, darken($button-color, 8%));
|
72
|
+
span {
|
73
|
+
font-weight: bold;
|
74
|
+
font-size: 16px;
|
75
|
+
color: $black;
|
76
|
+
display: inline-block;
|
77
|
+
margin: 0 0 0 4px;
|
78
|
+
}
|
79
|
+
&:hover {
|
80
|
+
background: linear-gradient(darken($button-color, 6%), darken($button-color, 12%));
|
81
|
+
}
|
82
|
+
&:active {
|
83
|
+
box-shadow: rgba(0, 0, 0, .1) 0 1px 1px inset, rgba(255, 255, 255, .4) 0 1px 0;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
#downloads {
|
88
|
+
position: absolute;
|
89
|
+
top: 0;
|
90
|
+
right: 0;
|
91
|
+
background: rgba(255, 255, 255, .6);
|
92
|
+
padding: 12px 14px;
|
93
|
+
border-radius: 4px;
|
94
|
+
}
|
95
|
+
|
96
|
+
#downloads li:first-child a {
|
97
|
+
margin: 0 0 10px;
|
98
|
+
}
|
99
|
+
|
100
|
+
.pdf {
|
101
|
+
@include button(#fdf524);
|
102
|
+
}
|
103
|
+
|
104
|
+
.png {
|
105
|
+
@include button(#ffc2ee);
|
5
106
|
}
|
@@ -5,22 +5,22 @@ require 'graphviz'
|
|
5
5
|
module Roundabout
|
6
6
|
class RoundaboutController < ::Roundabout::ApplicationController
|
7
7
|
def index
|
8
|
-
if (json = Rails.root.join('
|
8
|
+
if (json = Rails.root.join('tmp/roundabout.json')).exist?
|
9
9
|
transitions = ActiveSupport::JSON.decode json.read
|
10
10
|
viz = GraphViz.new(:G, type: :digraph, rankdir: 'LR') do |g|
|
11
11
|
transitions.each do |t|
|
12
|
-
from = g.add_nodes t['from'], shape: 'box'
|
13
|
-
to = g.add_nodes t['to'], shape: 'box'
|
12
|
+
from = g.add_nodes t['from'].sub('#', "\n"), shape: 'box'
|
13
|
+
to = g.add_nodes t['to'].sub('#', "\n"), shape: 'box'
|
14
14
|
color = case t['type']
|
15
15
|
when 'redirect'
|
16
|
-
'
|
16
|
+
'#484848'
|
17
17
|
when 'form'
|
18
|
-
'
|
18
|
+
'#f83737'
|
19
19
|
else
|
20
20
|
if t['method'] != 'get'
|
21
|
-
'
|
21
|
+
'#f83737'
|
22
22
|
else
|
23
|
-
'
|
23
|
+
'#f2cd01'
|
24
24
|
end
|
25
25
|
end
|
26
26
|
g.add_edges from, to, color: color
|
@@ -3,11 +3,26 @@
|
|
3
3
|
<% @nodes.each.with_index(1) do |node, i| %>
|
4
4
|
<% width, height = BigDecimal.new(node[:width].source) * 72, BigDecimal.new(node[:height].source) * 72 %>
|
5
5
|
<div id="roundabout-node-<%= i %>" class="node" style="top: <%= node[:pos].point[1] - height / 2 %>px; left: <%= node[:pos].point[0] - width / 2 %>px; width: <%= width %>px; height: <%= height %>px;">
|
6
|
-
|
6
|
+
<%- node_controller_name, node_action_name = node.id.split("\n") %>
|
7
|
+
<div class="node-name"><span class="controller_name"><%= node_controller_name %></span><span class="controller_name"><%= node_action_name %></span></div>
|
7
8
|
</div>
|
8
9
|
<% end %>
|
9
10
|
<script>window.raw_edges = '<%= @edges.to_json.html_safe %>';</script>
|
10
11
|
</div>
|
11
12
|
</div>
|
12
|
-
<
|
13
|
-
<
|
13
|
+
<div id="downloads">
|
14
|
+
<ul>
|
15
|
+
<li>
|
16
|
+
<%= link_to '/roundabout.png', {:class => 'png'} do %>
|
17
|
+
Download
|
18
|
+
<span>.png</span>
|
19
|
+
<% end %>
|
20
|
+
</li>
|
21
|
+
<li>
|
22
|
+
<%= link_to '/roundabout.pdf', {:class => 'pdf'} do %>
|
23
|
+
Download
|
24
|
+
<span>.pdf</span>
|
25
|
+
<% end %>
|
26
|
+
</li>
|
27
|
+
</ul>
|
28
|
+
</div>
|
data/lib/roundabout/rspec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
config.after :suite do
|
3
3
|
transitions = Roundabout.compile_page_transitions
|
4
|
-
Rails.root.join('
|
4
|
+
Rails.root.join('tmp/roundabout.json').open('w') {|f| f.write transitions.to_json} unless transitions.empty?
|
5
5
|
end
|
6
6
|
end
|
data/lib/roundabout/version.rb
CHANGED
metadata
CHANGED
@@ -1,62 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roundabout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Akira Matsuda
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: capybara
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.0.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.0.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 2.0.0
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 2.0.0
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: ruby-graphviz
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 1.0.0
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 1.0.0
|
62
55
|
description: A Rails Engine that generates a page transition diagram for your Rails
|
@@ -94,27 +87,26 @@ files:
|
|
94
87
|
- vendor/assets/javascripts/raphael-min.js
|
95
88
|
homepage: https://github.com/amatsuda/roundabout
|
96
89
|
licenses: []
|
90
|
+
metadata: {}
|
97
91
|
post_install_message:
|
98
92
|
rdoc_options: []
|
99
93
|
require_paths:
|
100
94
|
- lib
|
101
95
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
96
|
requirements:
|
104
|
-
- -
|
97
|
+
- - '>='
|
105
98
|
- !ruby/object:Gem::Version
|
106
99
|
version: '0'
|
107
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
101
|
requirements:
|
110
|
-
- -
|
102
|
+
- - '>='
|
111
103
|
- !ruby/object:Gem::Version
|
112
104
|
version: '0'
|
113
105
|
requirements: []
|
114
106
|
rubyforge_project:
|
115
|
-
rubygems_version:
|
107
|
+
rubygems_version: 2.0.3
|
116
108
|
signing_key:
|
117
|
-
specification_version:
|
109
|
+
specification_version: 4
|
118
110
|
summary: A Rails Engine that generates a page transition diagram for your Rails app
|
119
111
|
from request specs
|
120
112
|
test_files: []
|