rubrowser 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8002d005fb557db7ff8facd9628eb9e2f372fe95c7f1249545fb26c0d799cb2e
4
- data.tar.gz: b873c80165e6451aeacf02f7f4dee5ddfee53484ba817bc68e8f93311e82cfc2
3
+ metadata.gz: 1b96b57265b40b9d6be08133f053972d10052ba5f1e977a24d6c0ffb14aa0e5c
4
+ data.tar.gz: 47438b460b1f3276bc21c9f80ec3b95b34771a498c0601c8c85a4ceb5acc7912
5
5
  SHA512:
6
- metadata.gz: e9b9ae14d515ce39948d9f5b6c4142a6fcf00177470c8147df5dce6561789c66b77dab9d8c642ace9c7e3c999ad4c2ea78d365910455908063840fb643b14829
7
- data.tar.gz: dec79a4c9cd503c355264f0bfbd38d3f230c5fe36053e4cb936fcd0567eaf493acf5d4c36cef48f075a71015eeceae942be5e2d6158a9e970a0671ac77aa4993
6
+ metadata.gz: c6260b25527525ec6d2a67c8c691b681f24ba03cbff1630bfb631ded4f09ea73f129c3727d4501343b2d18f38318903f1ae99900c342b51a9cfcbd0842d676e9
7
+ data.tar.gz: 887c3e30156229cfac868468020ca48a47fc1d72358b44554341a4f19f732c92317fe5df02e6056bd765ae3c41306e3ebc19b51588915046f87b1073371e5018
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubrowser (2.3.0)
4
+ rubrowser (2.4.0)
5
5
  parser (~> 2.3, >= 2.3.0)
6
6
 
7
7
  GEM
data/bin/rubrowser CHANGED
@@ -7,6 +7,7 @@ require 'rubrowser/renderer'
7
7
 
8
8
  options = {
9
9
  toolbox: true,
10
+ layout: nil,
10
11
  output: STDOUT
11
12
  }
12
13
 
@@ -17,6 +18,10 @@ OptionParser.new do |opts|
17
18
  options[:output] = output
18
19
  end
19
20
 
21
+ opts.on('-lFILE', '--layout=FILE', 'layout file to apply on the resulting graph') do |layout|
22
+ options[:layout] = layout
23
+ end
24
+
20
25
  opts.on('-T', '--no-toolbox', 'Don\'t display toolbox on the page') do
21
26
  options[:toolbox] = false
22
27
  end
@@ -23,6 +23,7 @@ module Rubrowser
23
23
 
24
24
  def initialize(options)
25
25
  @output = output_file(options[:output])
26
+ @layout = options[:layout]
26
27
  @files = options[:files]
27
28
  @toolbox = options[:toolbox]
28
29
  end
@@ -31,6 +32,11 @@ module Rubrowser
31
32
  path.is_a?(String) ? File.open(path, 'w') : path
32
33
  end
33
34
 
35
+ def layout
36
+ return 'null' unless @layout
37
+ File.read(@layout)
38
+ end
39
+
34
40
  def toolbox?
35
41
  @toolbox
36
42
  end
@@ -1,3 +1,3 @@
1
1
  module Rubrowser
2
- VERSION = '2.3.0'.freeze
2
+ VERSION = '2.4.0'.freeze
3
3
  end
@@ -133,6 +133,35 @@ function transform(d) {
133
133
  return "translate(" + d.x + "," + d.y + ")";
134
134
  }
135
135
 
136
+ var state = {
137
+ get: function(){
138
+ var positions = [];
139
+ rubrowser.definitions.forEach(function(elem){
140
+ if( elem.fx !== undefined && elem.fy !== undefined) {
141
+ positions.push({
142
+ id: elem.id,
143
+ x: elem.fx,
144
+ y: elem.fy
145
+ });
146
+ }
147
+ });
148
+ return positions;
149
+ },
150
+
151
+ set: function(layout){
152
+ if ( !layout ) { return; }
153
+ layout.forEach(function(pos) {
154
+ var definition = node.filter(function(e) { return e.id == pos.id; })
155
+ definition.classed("fixed", true);
156
+
157
+ var datum = definition.data()[0]
158
+ if( datum ) {
159
+ datum.fx = pos.x
160
+ datum.fy = pos.y
161
+ }
162
+ });
163
+ }
164
+ }
136
165
 
137
166
  node.on('mouseover', function(d) {
138
167
  var relatives = [];
@@ -161,5 +190,8 @@ window.rubrowser = {
161
190
  relations: relations,
162
191
  simulation: simulation,
163
192
  node: node,
164
- link: link
193
+ link: link,
194
+ state: state
165
195
  };
196
+
197
+ rubrowser.state.set(layout);
@@ -139,3 +139,15 @@ $(document).on('change', "#hide_namespaces", function(){
139
139
  $(document).on('click', "#pause_simulation", function(){
140
140
  rubrowser.simulation.stop();
141
141
  });
142
+
143
+ $(document).on('click', "#download_layout", function(){
144
+ var json = JSON.stringify(rubrowser.state.get());
145
+ var element = document.createElement('a');
146
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(json));
147
+ element.setAttribute('download', 'layout.json');
148
+
149
+ element.style.display = 'none';
150
+ document.body.appendChild(element);
151
+ element.click();
152
+ document.body.removeChild(element);
153
+ });
data/readme.md CHANGED
@@ -53,6 +53,7 @@ gem install rubrowser
53
53
  ```
54
54
  Usage: rubrowser [options] [file] ...
55
55
  -o, --output=FILE output file page, if not specified output will be written to stdout
56
+ -l, --layout=FILE layout file to apply on the resulting graph
56
57
  -T, --no-toolbox Don't display toolbox on the page
57
58
  -v, --version Print Rubrowser version
58
59
  -h, --help Prints this help
@@ -84,6 +85,7 @@ rubrowser > output.html
84
85
  * Module/class circle size on the graph will be relative to module number of
85
86
  lines in your code
86
87
  * cyclical dependencies are marked in red
88
+ * after you move nodes around, you can download the layout as a file, then provide it when generating the graph file again with `-l file.json` it will embed the layout in the file and the graph will have the same layout by default.
87
89
 
88
90
  ## Why?
89
91
 
data/views/index.erb CHANGED
@@ -17,7 +17,8 @@
17
17
  <script src='https://unpkg.com/lodash@4.17.4/lodash.min.js' type='text/javascript'></script>
18
18
  <script src='https://unpkg.com/d3@4.13.0/build/d3.min.js' type='text/javascript'></script>
19
19
  <script type='text/javascript'>
20
- var data = <%= data %>
20
+ var data = <%= data %>;
21
+ var layout = <%= layout %>;
21
22
  </script>
22
23
  <script type='text/javascript'><%= file('javascript/application.js') %></script>
23
24
 
data/views/toolbox.erb CHANGED
@@ -42,7 +42,8 @@
42
42
  <div class="card mt-2">
43
43
  <div class="card-header">Display</div>
44
44
  <div class="card-body">
45
- <input type="button" id="pause_simulation" class="btn btn-secondary btn-block" value="Pause animation"/>
45
+ <button type="button" id="download_layout" class="btn btn-secondary btn-block">Download layout</button>
46
+ <button type="button" id="pause_simulation" class="btn btn-secondary btn-block">Pause animation</button>
46
47
  </div>
47
48
  <div class="card-body">
48
49
  <label class="form-label">Force Collide</label>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubrowser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emad Elsaid