erd_map 0.1.0 → 0.1.1
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/app/controllers/erd_map/erd_map_controller.rb +2 -0
- data/lib/erd_map/graph.rb +5 -5
- data/lib/erd_map/graph_manager.js +6 -6
- data/lib/erd_map/py_call_modules.rb +2 -2
- data/lib/erd_map/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d9e69fe8377878e310f87605d04b56cefe6584a0350d91b5f8e7e4aab53fd4dc
|
4
|
+
data.tar.gz: 1693047c4a7ea2a3b55aea08c74600a5bf4f125038c2b71edd678fc29a1b750c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 709c47b70db579119fcf67bd9775c43889d6035bf6ae6abed7c9d02afec77628ede105bd58cae97a4ed212c2300e469c0a039622cae734ef6d76ecdd5bfd3c77
|
7
|
+
data.tar.gz: 655107b287dadef687eb5ae2c5526747bf7156c44b2a2e9f81ceb629d3f908434af4e11842dc2f57864f015f79f495fe9b5f00ca45a1020474ef9546102519c0
|
@@ -4,6 +4,8 @@ module ErdMap
|
|
4
4
|
class ErdMapController < ApplicationController
|
5
5
|
FILE_PATH = Rails.root.join("tmp", "erd_map", "map.html")
|
6
6
|
|
7
|
+
skip_before_action :verify_authenticity_token, only: [:update]
|
8
|
+
|
7
9
|
def index
|
8
10
|
if File.exist?(FILE_PATH)
|
9
11
|
render html: File.read(FILE_PATH).html_safe
|
data/lib/erd_map/graph.rb
CHANGED
@@ -17,7 +17,7 @@ module ErdMap
|
|
17
17
|
k = 1.0 / Math.sqrt(nodes_size) * 3.0
|
18
18
|
|
19
19
|
subgraph = whole_graph.subgraph(display_nodes)
|
20
|
-
layout =
|
20
|
+
layout = networkx.spring_layout(subgraph, seed: 1, k: k)
|
21
21
|
|
22
22
|
layout_hash = {}
|
23
23
|
layout.each do |node, xy|
|
@@ -34,7 +34,7 @@ module ErdMap
|
|
34
34
|
def chunked_nodes
|
35
35
|
return @chunked_nodes if @chunked_nodes
|
36
36
|
|
37
|
-
centralities =
|
37
|
+
centralities = networkx.eigenvector_centrality(whole_graph) # { node_name => centrality }
|
38
38
|
sorted_nodes = centralities.sort_by { |_node, centrality| centrality }.reverse.map(&:first)
|
39
39
|
|
40
40
|
chunk_sizes = []
|
@@ -133,12 +133,12 @@ module ErdMap
|
|
133
133
|
|
134
134
|
private
|
135
135
|
|
136
|
-
attr_reader :
|
136
|
+
attr_reader :networkx, :networkx_community
|
137
137
|
attr_reader :whole_graph
|
138
138
|
|
139
139
|
def initialize
|
140
140
|
import_modules = ErdMap.py_call_modules.imported_modules
|
141
|
-
@
|
141
|
+
@networkx = import_modules[:networkx]
|
142
142
|
@networkx_community = import_modules[:networkx_community]
|
143
143
|
@whole_graph = build_whole_graph
|
144
144
|
end
|
@@ -151,7 +151,7 @@ module ErdMap
|
|
151
151
|
end
|
152
152
|
|
153
153
|
def build_whole_graph
|
154
|
-
whole_graph =
|
154
|
+
whole_graph = networkx.Graph.new
|
155
155
|
|
156
156
|
whole_models.each do |model|
|
157
157
|
whole_graph.add_node(model.name)
|
@@ -293,8 +293,8 @@ class GraphManager {
|
|
293
293
|
if (!candidateNodes.includes(nodeName)) { return }
|
294
294
|
|
295
295
|
const xy = layout[nodeName] || this.#wholeLayout[nodeName]
|
296
|
-
const dx = xy[0]
|
297
|
-
const dy = xy[1]
|
296
|
+
const dx = xy[0] - this.#mouseX
|
297
|
+
const dy = xy[1] - this.#mouseY
|
298
298
|
const distance = dx * dx + dy * dy
|
299
299
|
if (distance < minmumDistance) {
|
300
300
|
minmumDistance = distance
|
@@ -405,10 +405,10 @@ class GraphManager {
|
|
405
405
|
this.#changeDisplayNodes(connectedNodes)
|
406
406
|
|
407
407
|
const { selectedLayout } = this.#getShowingNodesAndSelectedLayout()
|
408
|
-
this.#updateLayout(selectedLayout, tappedNode)
|
409
|
-
this.#nodesIndex.forEach(nodeName => {
|
410
|
-
selectedLayout[nodeName][0]
|
411
|
-
selectedLayout[nodeName][1]
|
408
|
+
const [nodesX, nodesY] = this.#updateLayout(selectedLayout, tappedNode)
|
409
|
+
this.#nodesIndex.forEach((nodeName, i) => {
|
410
|
+
selectedLayout[nodeName][0] = nodesX[i]
|
411
|
+
selectedLayout[nodeName][1] = nodesY[i]
|
412
412
|
})
|
413
413
|
this.layoutProvider.graph_layout = selectedLayout
|
414
414
|
this.layoutProvider.change.emit()
|
@@ -5,7 +5,7 @@ require "pycall"
|
|
5
5
|
module ErdMap
|
6
6
|
class PyCallModules
|
7
7
|
def initialize
|
8
|
-
@
|
8
|
+
@networkx = PyCall.import_module("networkx")
|
9
9
|
@bokeh_io = PyCall.import_module("bokeh.io")
|
10
10
|
@bokeh_models = PyCall.import_module("bokeh.models")
|
11
11
|
@bokeh_plotting = PyCall.import_module("bokeh.plotting")
|
@@ -14,7 +14,7 @@ module ErdMap
|
|
14
14
|
|
15
15
|
def imported_modules
|
16
16
|
{
|
17
|
-
|
17
|
+
networkx: @networkx,
|
18
18
|
bokeh_io: @bokeh_io,
|
19
19
|
bokeh_models: @bokeh_models,
|
20
20
|
bokeh_plotting: @bokeh_plotting,
|
data/lib/erd_map/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erd_map
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- makicamel
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-01-
|
10
|
+
date: 2025-01-19 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rails
|