Index: arms/html/analysisScope/content-container.html =================================================================== diff -u -ref7d785388c0ded89289f287f8e5da97d868648f -r06e382be7ea02603ec324deb2e4da4518b5743c9 --- arms/html/analysisScope/content-container.html (.../content-container.html) (revision ef7d785388c0ded89289f287f8e5da97d868648f) +++ arms/html/analysisScope/content-container.html (.../content-container.html) (revision 06e382be7ea02603ec324deb2e4da4518b5743c9) @@ -561,7 +561,7 @@ -
+
Index: arms/js/analysisScope.js =================================================================== diff -u -r525e0741214634b8c79cb2745fb862a6c7b127b6 -r06e382be7ea02603ec324deb2e4da4518b5743c9 --- arms/js/analysisScope.js (.../analysisScope.js) (revision 525e0741214634b8c79cb2745fb862a6c7b127b6) +++ arms/js/analysisScope.js (.../analysisScope.js) (revision 06e382be7ea02603ec324deb2e4da4518b5743c9) @@ -565,6 +565,7 @@ } function networkChart(pdServiceVersions, jiraIssueData) { + $('.network-graph').removeClass('show'); d3.select("#NETWORK_GRAPH").remove(); var NETWORK_DATA = { @@ -698,12 +699,6 @@ let width = baseWidth; let height = baseHeight; - let initScale = 1; - - if (increaseFactor !== 0) { - initScale = initScale / increaseFactor; - } - let simulation = d3 .forceSimulation(nodes) .force( @@ -739,25 +734,10 @@ // return 20; // })); - //simulation.stop(); + // simulation.stop(); let svg = d3.select("#NETWORK_GRAPH").attr("viewBox", [0, 0, width, height]); - let initialTransform = d3.zoomIdentity - .translate(width / 3, height / 3) // 초기 위치 설정 - .scale(initScale); // 초기 줌 레벨 설정 - - let zoom = d3 - .zoom() - .scaleExtent([0.1, 5]) // 줌 가능한 최소/최대 줌 레벨 설정 - .on("zoom", zoomed); // 줌 이벤트 핸들러 설정 - - // SVG에 확대/축소 기능 적용 - svg.call(zoom); - - // 초기 줌 설정 - svg.transition().duration(500).call(zoom.transform, initialTransform); - let gHolder = svg.append("g").attr("class", "g-holder"); let link = gHolder @@ -853,11 +833,42 @@ dr = Math.sqrt(dx * dx + dy * dy); return "M" + d.source.x + "," + d.source.y + "A" + dr + "," + dr + " 0 0,1 " + d.target.x + "," + d.target.y; }); + + simulation.on("end", () => { + + // 노드 위치의 최소값과 최대값을 구합니다. + let xExtent = d3.extent(nodes, d => d.x); + let yExtent = d3.extent(nodes, d => d.y); + + // 노드 위치에 따라 차트의 크기를 설정합니다. + let chartWidth = xExtent[1] - xExtent[0] + 20; + let chartHeight = yExtent[1] - yExtent[0] + 20; + + // 화면 크기에 따라 초기 줌 레벨을 설정합니다. + let scaleX = width / chartWidth; + let scaleY = height / chartHeight; + let initScale = Math.min(scaleX, scaleY); + console.log("initScale : " + initScale); + + let initialTransform = d3.zoomIdentity + .translate(width / 3, height / 3) // 초기 위치 설정 + .scale(initScale); // 초기 줌 레벨 설정 + + let zoom = d3 + .zoom() + .scaleExtent([0.1, 5]) // 줌 가능한 최소/최대 줌 레벨 설정 + .on("zoom", zoomed); // 줌 이벤트 핸들러 설정 + + // SVG에 확대/축소 기능 적용 + svg.call(zoom); + + // 초기 줌 설정 + svg.transition().duration(500).call(zoom.transform, initialTransform); + + $('.network-graph').addClass('show'); + }); }); - // d3-5.16.0 - // function zoomed() { - // let transform = d3.event.transform; function zoomed() { // 현재 확대/축소 변환을 얻음 let transform = d3.event.transform; @@ -871,24 +882,6 @@ return svg.node(); }, drag: function (simulation) { - // d3-5.16.0 - // function dragstarted(d) { - // if (!d3.event.active) simulation.alphaTarget(0.3).restart(); - // d.fx = d.x; - // d.fy = d.y; - // } - // - // function dragged(d) { - // d.fx = d3.event.x; - // d.fy = d3.event.y; - // } - // - // function dragended(d) { - // if (!d3.event.active) simulation.alphaTarget(0); - // d.fx = null; - // d.fy = null; - // } - function dragstarted(d) { if (!d3.event.active) simulation.alphaTarget(0.3).restart(); d.fx = d.x;