diff --git a/src/js/portfolio.js b/src/js/portfolio.js index ae04aa4..5d3eca3 100644 --- a/src/js/portfolio.js +++ b/src/js/portfolio.js @@ -26,20 +26,20 @@ function getNodeLabel(node){ return label; } function getNodeYear(n){ - if(typeof n['http://schema.org/dateCreated'] !== 'undefined') { - return n['http://schema.org/dateCreated'].substr(0,4); + if(typeof n['https://schema.org/dateCreated'] !== 'undefined') { + return n['https://schema.org/dateCreated'].substr(0,4); } - if(typeof n['http://schema.org/datePublished'] !== 'undefined') { - return n['http://schema.org/datePublished'].substr(0,4); + if(typeof n['https://schema.org/datePublished'] !== 'undefined') { + return n['https://schema.org/datePublished'].substr(0,4); } - if(typeof n['http://schema.org/startDate'] !== 'undefined') { - return n['http://schema.org/startDate'].substr(0,4); + if(typeof n['https://schema.org/startDate'] !== 'undefined') { + return n['https://schema.org/startDate'].substr(0,4); } - if(typeof n['http://schema.org/endDate'] !== 'undefined') { - return n['http://schema.org/endDate'].substr(0,4); + if(typeof n['https://schema.org/endDate'] !== 'undefined') { + return n['https://schema.org/endDate'].substr(0,4); } - if(typeof n['http://schema.org/foundingDate'] !== 'undefined') { - return n['http://schema.org/foundingDate'].substr(0,4); + if(typeof n['https://schema.org/foundingDate'] !== 'undefined') { + return n['https://schema.org/foundingDate'].substr(0,4); } return null; } @@ -369,6 +369,7 @@ var positionNodesInCenter = function(idxs) { } var positionNodesInCircle = function(idxs, r) { let viewBox = getViewbox(); + let zoom = getZoomValues(); setViewboxForceCenter(); // sets forceCx & forceCy if(typeof r == 'undefined') { if(idxs.length == 1) { @@ -378,8 +379,8 @@ var positionNodesInCircle = function(idxs, r) { } } currentNodePositionRadius = r; - let forceCx = viewBox[0] + viewBox[2]/2; - let forceCy = viewBox[1] + viewBox[3]/2; + let forceCx = viewBox[0] + viewBox[2]/2 - zoom['dx']; + let forceCy = viewBox[1] + viewBox[3]/2 - zoom['dy']; let stepSize = 2*Math.PI / idxs.length; @@ -692,9 +693,29 @@ var deselectNode = function() { var forceCx, forceCy; var setViewboxForceCenter = function() { let viewBox = getViewbox(); - forceCx = viewBox[0] + viewBox[2]/2; - forceCy = viewBox[1] + viewBox[3]/2; + let zoom = getZoomValues(); + forceCx = viewBox[0] + viewBox[2]/2 - zoom['dx']; + forceCy = viewBox[1] + viewBox[3]/2 - zoom['dy']; } + +var getZoomValues = function(){ + let zoomContainer = document.getElementById("container"); + let dx = 0, dy = 0, scale = 1; + if(zoomContainer.transform.baseVal.length > 0) { + for(let transform of zoomContainer.transform.baseVal) { + if(transform.type == SVGTransform.SVG_TRANSFORM_TRANSLATE) { + dx += transform.matrix.e; + dy += transform.matrix.f; + } + else if (transform.type == SVGTransform.SVG_TRANSFORM_SCALE) { + scale *= transform.matrix.a; // assume simple scale + } + } + } + + return {'dx': dx, 'dy': dy, 'scale': scale}; +} + setViewboxForceCenter(); // sets forceCx & forceCy var graphInitialised = false;