graphdb-workbench 1.10.1 → 1.11.0-TR1

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.
Files changed (50) hide show
  1. package/dist/113.2c059fa7d06fd04149eb.bundle.js +1 -1
  2. package/dist/113.2c059fa7d06fd04149eb.bundle.js.map +1 -1
  3. package/dist/{14.c7175f400470b470e034.bundle.js → 14.f54e86c6c14979405fa0.bundle.js} +2 -2
  4. package/dist/{14.c7175f400470b470e034.bundle.js.map → 14.f54e86c6c14979405fa0.bundle.js.map} +1 -1
  5. package/dist/22.93d86caa997992a46006.bundle.js +1 -1
  6. package/dist/22.93d86caa997992a46006.bundle.js.map +1 -1
  7. package/dist/28.bbe49746541a2419b9a7.bundle.js +1 -1
  8. package/dist/28.bbe49746541a2419b9a7.bundle.js.map +1 -1
  9. package/dist/30.5ed60b4ae0a67956c66b.bundle.js +1 -1
  10. package/dist/30.5ed60b4ae0a67956c66b.bundle.js.map +1 -1
  11. package/dist/36.53cea4c4866328aef1aa.bundle.js +2 -0
  12. package/dist/36.53cea4c4866328aef1aa.bundle.js.map +1 -0
  13. package/dist/37.571a0ab8fb0508c3f1fe.bundle.js +1 -1
  14. package/dist/37.571a0ab8fb0508c3f1fe.bundle.js.map +1 -1
  15. package/dist/38.c611acd72558ca546c47.bundle.js +1 -1
  16. package/dist/38.c611acd72558ca546c47.bundle.js.map +1 -1
  17. package/dist/{bundle.e7b22d8ef84fbe277d35.bundle.js → bundle.80fd0b52981f2d638a9b.bundle.js} +4 -4
  18. package/dist/bundle.80fd0b52981f2d638a9b.bundle.js.map +1 -0
  19. package/dist/index.html +3 -3
  20. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  21. package/dist/pages/autocomplete.html +1 -1
  22. package/dist/pages/choose-repository-type.html +1 -1
  23. package/dist/pages/clusterInfo.html +1 -1
  24. package/dist/pages/create-index.html +4 -4
  25. package/dist/pages/dependencies.html +1 -1
  26. package/dist/pages/domainRangeInfo.html +2 -2
  27. package/dist/pages/edit.html +1 -1
  28. package/dist/pages/explore.html +1 -1
  29. package/dist/pages/export.html +1 -1
  30. package/dist/pages/find.html +1 -1
  31. package/dist/pages/graph-config/saveGraphConfig.html +29 -17
  32. package/dist/pages/graphs-visualizations.html +13 -13
  33. package/dist/pages/import.html +1 -1
  34. package/dist/pages/jdbc-create.html +5 -5
  35. package/dist/pages/monitor/queries.html +1 -1
  36. package/dist/pages/monitor/resources.html +2 -2
  37. package/dist/pages/namespaces.html +2 -2
  38. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  39. package/dist/pages/rdfrank.html +2 -2
  40. package/dist/pages/repositories.html +2 -2
  41. package/dist/pages/repository.html +2 -2
  42. package/dist/pages/similarity-indexes.html +1 -1
  43. package/dist/pages/sparql-template-create.html +5 -5
  44. package/dist/pages/sparql.html +3 -3
  45. package/dist/pages/webapi.html +2 -2
  46. package/dist/res/swagger/index.html +25 -25
  47. package/package.json +1 -1
  48. package/dist/36.466f06017a4f9d2277fb.bundle.js +0 -2
  49. package/dist/36.466f06017a4f9d2277fb.bundle.js.map +0 -1
  50. package/dist/bundle.e7b22d8ef84fbe277d35.bundle.js.map +0 -1
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[30],{205:function(t,e,r){"use strict";var a=a||{};a.Text=function(){function t(t,e,r,a){r=r||10;var n=e/3;return"string"==typeof t?(n*=10/(t.substring(0,e/3).length+1.5),n+=1,t.match(/[\u0900-\u0DFF\u1100-\u11FF\u2E80-\u2EFF\u3000-\u9FFF]/)&&(n*=.6),n<r&&(n=r),Math.round(n)):(n<r&&(n=r),Math.round(n))}return{calcFontSizeRaw:t,calcFontSize:function(e,r,a,n){return t(e,r,a)+"px"},getTextWithElipsisIfNeeded:function(t,e){return"string"==typeof t&&t.length>e?t.substring(0,e-3)+"...":t}}}(),a.Transition={fadeIn:function(t,e){t.style("opacity",0).transition().duration(e).style("opacity",1)},fadeOut:function(t,e){t.style("opacity",1).transition().duration(e).style("opacity",0)}},a.Click={delayDblClick:function(){var t=d3.dispatch("click","dblclick");return d3.rebind((function(e){var r,a=null;e.on("mousedown",(function(){r=d3.mouse(document.body),new Date})),e.on("mouseup",(function(e){var n,o;n=r,o=d3.mouse(document.body),Math.sqrt(Math.pow(n[0]-o[0],2),Math.pow(n[1]-o[1],2))>5||(a?(window.clearTimeout(a),a=null,t.dblclick(e)):a=window.setTimeout((d3.event,function(){t.click(e),a=null}),250))}))}),t,"on")}},e.a=a},206:function(t,e,r){"use strict";var a=a||{};a.Export={getCSSRules:function(t){var e=$('link[href="'+t+'"]')[0].sheet.rules,r="";return _.each(e,(function(t){r+=t.cssText})),r},generateBase64ImageSource:function(){var t=d3.selectAll("svg").attr({version:"1.1",xmlns:"http://www.w3.org/2000/svg"}).node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(t)))}},e.a=a},59:function(t,e,r){"use strict";r.r(e);var a=r(206),n=r(205);r(4);function o(t,e,r,o,s,i,c,l,d,u,p,f,g){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const p=l((function(){!function(u){d3.selection.prototype.moveToFront=function(){return this.each((function(){d3.select(this.parentNode.appendChild(this))}))},d3.selection.prototype.moveToBack=function(){return this.each((function(){const t=this.parentNode.firstChild;t&&this.parentNode.insertBefore(this,t)}))};var p=1200,h=p/18,y=p/110,x=y/2,m=p/90,v=p/1e3,k=p/600,b=d3.layout.force().size([p,600]).charge(-900),w=b.drag().on("dragstart",(function(t){d3.select(this).classed("selected",t.selected=!0)})),E=d3.select("#domain-range").append("svg").attr("viewBox","0 0 "+p+" 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),N=E.append("defs");N.append("marker").attr({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attr({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attr({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),d3.select("#download-svg").on("mouseover",(function(){var t=a.a.Export.getCSSRules("css/domain-range-graph.css?v=1.10.1");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.a.Export.generateBase64ImageSource();d3.select(this).attr({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}));var C=p/7,R=1.2*C,A=d3.select(".legend-container").append("svg").attr("viewBox","0 0 "+C+" "+R).attr("preserveAspectRatio","xMidYMid meet");A.append("rect").attr({width:C,height:R}).style("fill","rgba(235, 235, 235, 0.9)");var T=p/75,L=p/40,_=T+h/2.5,M=L,U=_+p/90,P=m/1.1,j=L,O=(A.append("circle").attr({class:"legend-class-node",cx:(T+_)/2,cy:j,r:h/4.5}),M+p/370);A.append("text").attr({x:U,y:O}).style("font-size",P+"px").text("main class node");var I=j+p/30;A.append("circle").attr({class:"legend-object-node",cx:(T+_)/2,cy:I,r:y/1.25});var F=O+p/30;A.append("text").attr({x:U,y:F}).style("font-size",P+"px").text("class node");var S=I+p/45;A.append("circle").attr({class:"legend-datatype-node",cx:(T+_)/2,cy:S,r:x});var D=F+p/45;A.append("text").attr({x:U,y:D}).style("font-size",P+"px").text("datatype node");var B=S+p/45;d3.select(".legend-class-node");A.append("line").attr({class:"property-arrow",x1:T,y1:B,x2:_,y2:B}).style("stroke-width",v).attr("marker-end","url("+s.absUrl()+"#arrow)"),A.append("text").attr({x:U,y:B+p/370}).style("font-size",P+"px").text("explicit property");var z=B+p/45;A.append("line").attr({class:"implicit-property-arrow",x1:T,y1:z,x2:_,y2:z}).style("stroke-width",v).attr("marker-end","url("+s.absUrl()+"#arrow)"),A.append("text").attr({x:U,y:z+p/370}).style("font-size",P+"px").text("implicit property");var G=z+p/45;A.append("line").attr({class:"collapsed-property-arrow",x1:T,y1:G,x2:_,y2:G}).style("stroke-width",k).attr("marker-end","url("+s.absUrl()+"#collapsed-arrow)"),A.append("text").attr({x:U,y:G+p/370}).style("font-size",P+"px").text("collapsed property");var W=E,H=s.search().uri,X=s.search().name,Y=s.search().collapsed;o.getDomainRangeData(H,Y).success((function(t,e,r){u.domainRangeGraphData=t})).error((function(t){d.error("Request for "+X+" failed!")})),$(window).on("popstate",(function(){i.set(c.DOMAIN_RANGE_WENT_BACK,!0)})),e.onpopstate=function(e){e.state&&t.$broadcast("changeCollapsedEdgesState",e.state.collapsed)},u.$watch("collapseEdges",(function(){angular.isUndefined(u.collapseEdges)||(i.set(c.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(c.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:H,name:X,collapsed:e})}(u.collapseEdges),i.remove(c.DOMAIN_RANGE_WENT_BACK))})),u.$watch("domainRangeGraphData",(function(){if(u.domainRangeGraphData){var r=angular.copy(u.domainRangeGraphData);b.nodes(r.nodes).links(r.links);var a=W.selectAll(".link").data(r.links).enter().append("g");function o(t){t.style("stroke",f),t.style("stroke-width",k),t.attr("marker-end","url("+s.absUrl()+"#collapsed-arrow)")}var i,c,d=0;a.each((function(t){if(t.objectPropNodeClassUri!==H)i=a.append("line").attr({class:"link","marker-end":"url("+s.absUrl()+"#arrow)"}).style("stroke-width",v).each((function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=h;break;case"objectRight":t.targetRadius=y;break;case"datatype":t.targetRadius=x;break;default:t.targetRadius=0}var e=d3.select(this);t.targetNodeEdgeCount>1?o(e):t.implicit&&e.style("stroke-dasharray","3, 3")}));else{if(angular.isUndefined(c)){var e=h/2;c=d3.select(this).append("path").attr({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+s.absUrl()+"#arrow-loop)"}).style("stroke-width",v)}(d+=t.targetNodeEdgeCount)>1&&o(d3.select(".loop-link"))}}));var E={};function N(){$.isEmptyObject(E)||(E.text.style("fill","black"),E.background.style("fill","#f0f0f0"))}function C(t){N(),E.text=d3.select(this),E.background=d3.select(this.previousSibling),E.text.style("fill","white"),E.background.style("fill",f),l((function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=t})),d3.event.stopPropagation()}$("document").ready((function(){$("#domain-range").bind("click",N)}));var R=a.append("text").attr("class",(function(t){return t.objectPropNodeClassUri===H?"loop-link-property-name":"property-name"})).attr("dx",(function(t){return h/2*("objectLeft"===t.propertyType?1:-1)})).style("text-anchor",(function(t){return"objectLeft"===t.propertyType?"end":"start"})).style("font-size",m).text((function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name}));R.each((function(t){var r=d3.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",C):r.on("click",(function(t){e.open("resource?uri="+encodeURIComponent(t.uri),"_blank")}))}));var A=p/600,T=a.append("rect").attr("class",(function(t){return t.objectPropNodeClassUri!==H?"link-background":"loop-link-background"})).attr("width",(function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+2*A})).attr("height",(function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+A})).attr("transform",(function(t){var e=A-h/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(A+t.calculatedHeight/2)+")"})).on("click",(function(t){d3.event.stopPropagation()})),L=W.selectAll(".node").data(r.nodes).enter().append("g"),_=L.filter((function(t){return t.objectPropClassUri!==H})).append("circle").each((function(t){var e=d3.select(this);"main"===t.classPosition?e.attr({class:"class-node",r:h}).attr("marker-end","url("+s.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attr({class:"datatype-node",r:x}):e.attr({class:"object-prop-node",r:y})})).call(w);d3.selectAll(".object-prop-node").on("dblclick",(function(e,r){u.$apply((function(){t.$broadcast("reloadDomainRangeGraphView",e,r)}))})),L.filter((function(t){return t.objectPropClassName&&t.objectPropClassUri!==H})).append("text").attr("class",(function(t){return t.classPosition+"-class-label"})).style("font-size",m).text((function(t){return t.objectPropClassName})).on("click",(function(t){e.open("resource?uri="+encodeURIComponent(t.objectPropClassUri),"_blank")}));var M=L.select("text");W.select(".class-node").each((function(){d3.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",(function(t){return n.a.Text.calcFontSize(X,h)})).text(X).on("click",(function(t){e.open("resource?uri="+encodeURIComponent(H),"_blank")}))}));var U=W.select(".class-node + text"),P=d3.select(".class-node"),j=d3.selectAll(".loop-link-background"),O=d3.selectAll(".loop-link-property-name");if(R=d3.selectAll(".property-name"),!angular.isUndefined(c)){var I=[];j.each((function(t,e){d3.select(this);I.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})}))}b.on("tick",(function(t){var e=8*t.alpha;function r(t){var e=t.x+2*h,r=t.y-h/1.9;var a=[];j.each((function(n,o){a.push(n),o<g?function(a,n){var o=$.grep(I,(function(t){return t.idx==n}));n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attr({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(d3.select(this),o):d3.select(this).remove()})),function(t){var e;d3.select(".view-more-preds-label").style("font-weight","bold").each((function(r){r.target.allEdges=t,e=this.getComputedTextLength()})).on("click",C),d3.select(".view-more-preds-rect").attr("height",e+2*A)}(a)}i.filter((function(t){return t.objectPropNodeClassUri!==H})).attr("x1",(function(t){return t.source.x})).attr("y1",(function(t){return t.source.y})).attr("x2",(function(t){return t.targetX})).attr("y2",(function(t){return t.targetY})).each((function(t){!function(t){"objectLeft"===t.propertyType?(t.source.x-=8*e,t.source.y-=e/9):(t.target.x+=8*e,t.target.y-=e/9)}(t);var r=Math.atan2(t.target.y-t.source.y,t.target.x-t.source.x);t.targetX=t.target.x-Math.cos(r)*t.targetRadius,t.targetY=t.target.y-Math.sin(r)*t.targetRadius})),_.each((function(t){"main"!==t.classPosition||angular.isUndefined(c)||(!function(t){var e=t.x+.96*h,r=t.y-h/5.7-5;c.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(I,(function(t){return t.idx==r})),n=0;r>0&&(n=parseFloat(2*r*(a[0].height/1.4)));var o=t.x,s=t.y-2.1*h-n;e.attr({x:o,y:s}).moveToFront()}O.each((function(t,r){var a=d3.select(this),n=O.size()-g;n<0?e(a,r):(0==r&&!u.collapseEdges&&n>1&&(!function(t,e,r){t.classed("view-more-preds-label",!0).text(r+" predicates more ..."),null!==this.nextSibling&&e.classed("view-more-preds-rect",!0)}(a,d3.select(this.nextSibling),n),e(a,r)),r<g?e(a,r):a.remove())}))}(t),r(t)),t.objectPropClassUri!==H&&d3.select(this).attr("cx",(function(t){return"main"===t.classPosition?function(t){!window.ActiveXObject&&"ActiveXObject"in window&&(Math.log10=function(t){return Math.log(t)/Math.LN10});var e=P.attr("cx")-p/2,r=.5*Math.log10(Math.abs(e));return t.x+=e>0?-r:r,t.x}(t):t.x})).attr("cy",(function(t){return t.y}))})),U.attr("x",(function(t){return t.x})).attr("y",(function(t){return t.y})).moveToFront(),T.filter((function(t){return t.objectPropNodeClassUri!==H})).attr("x",(function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2})).attr("y",(function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2})).moveToFront(),R.attr("x",(function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2})).attr("y",(function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2})).moveToFront(),M.attr("x",(function(t){return"right"===t.classPosition?t.x+1.2*y:t.x-1.2*y})).attr("y",(function(t){return t.y})).moveToFront()})).linkDistance(p/3.5).start()}}))}(u)}),50);u.$on("$destroy",(function(){l.cancel(p)}))}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","#F04E23").constant("ONTO_GREEN","#0CB0A0").constant("ONTO_BLUE","#003663").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",o),o.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[30],{205:function(t,e,r){"use strict";var a=a||{};a.Text=function(){function t(t,e,r,a){r=r||10;var n=e/3;return"string"==typeof t?(n*=10/(t.substring(0,e/3).length+1.5),n+=1,t.match(/[\u0900-\u0DFF\u1100-\u11FF\u2E80-\u2EFF\u3000-\u9FFF]/)&&(n*=.6),n<r&&(n=r),Math.round(n)):(n<r&&(n=r),Math.round(n))}return{calcFontSizeRaw:t,calcFontSize:function(e,r,a,n){return t(e,r,a)+"px"},getTextWithElipsisIfNeeded:function(t,e){return"string"==typeof t&&t.length>e?t.substring(0,e-3)+"...":t}}}(),a.Transition={fadeIn:function(t,e){t.style("opacity",0).transition().duration(e).style("opacity",1)},fadeOut:function(t,e){t.style("opacity",1).transition().duration(e).style("opacity",0)}},a.Click={delayDblClick:function(){var t=d3.dispatch("click","dblclick");return d3.rebind((function(e){var r,a=null;e.on("mousedown",(function(){r=d3.mouse(document.body),new Date})),e.on("mouseup",(function(e){var n,o;n=r,o=d3.mouse(document.body),Math.sqrt(Math.pow(n[0]-o[0],2),Math.pow(n[1]-o[1],2))>5||(a?(window.clearTimeout(a),a=null,t.dblclick(e)):a=window.setTimeout((d3.event,function(){t.click(e),a=null}),250))}))}),t,"on")}},e.a=a},206:function(t,e,r){"use strict";var a=a||{};a.Export={getCSSRules:function(t){var e=$('link[href="'+t+'"]')[0].sheet.rules,r="";return _.each(e,(function(t){r+=t.cssText})),r},generateBase64ImageSource:function(){var t=d3.selectAll("svg").attr({version:"1.1",xmlns:"http://www.w3.org/2000/svg"}).node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(t)))}},e.a=a},59:function(t,e,r){"use strict";r.r(e);var a=r(206),n=r(205);r(4);function o(t,e,r,o,s,i,c,l,d,u,p,f,g){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const p=l((function(){!function(u){d3.selection.prototype.moveToFront=function(){return this.each((function(){d3.select(this.parentNode.appendChild(this))}))},d3.selection.prototype.moveToBack=function(){return this.each((function(){const t=this.parentNode.firstChild;t&&this.parentNode.insertBefore(this,t)}))};var p=1200,h=p/18,y=p/110,x=y/2,m=p/90,v=p/1e3,k=p/600,b=d3.layout.force().size([p,600]).charge(-900),w=b.drag().on("dragstart",(function(t){d3.select(this).classed("selected",t.selected=!0)})),E=d3.select("#domain-range").append("svg").attr("viewBox","0 0 "+p+" 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),N=E.append("defs");N.append("marker").attr({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attr({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attr({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:f}).append("path").attr({d:"M0,-5L10,0L0,5",class:"arrowHead"}),d3.select("#download-svg").on("mouseover",(function(){var t=a.a.Export.getCSSRules("css/domain-range-graph.css?v=1.11.0-TR1");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.a.Export.generateBase64ImageSource();d3.select(this).attr({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}));var C=p/7,R=1.2*C,A=d3.select(".legend-container").append("svg").attr("viewBox","0 0 "+C+" "+R).attr("preserveAspectRatio","xMidYMid meet");A.append("rect").attr({width:C,height:R}).style("fill","rgba(235, 235, 235, 0.9)");var T=p/75,L=p/40,_=T+h/2.5,M=L,U=_+p/90,P=m/1.1,j=L,O=(A.append("circle").attr({class:"legend-class-node",cx:(T+_)/2,cy:j,r:h/4.5}),M+p/370);A.append("text").attr({x:U,y:O}).style("font-size",P+"px").text("main class node");var I=j+p/30;A.append("circle").attr({class:"legend-object-node",cx:(T+_)/2,cy:I,r:y/1.25});var F=O+p/30;A.append("text").attr({x:U,y:F}).style("font-size",P+"px").text("class node");var S=I+p/45;A.append("circle").attr({class:"legend-datatype-node",cx:(T+_)/2,cy:S,r:x});var D=F+p/45;A.append("text").attr({x:U,y:D}).style("font-size",P+"px").text("datatype node");var B=S+p/45;d3.select(".legend-class-node");A.append("line").attr({class:"property-arrow",x1:T,y1:B,x2:_,y2:B}).style("stroke-width",v).attr("marker-end","url("+s.absUrl()+"#arrow)"),A.append("text").attr({x:U,y:B+p/370}).style("font-size",P+"px").text("explicit property");var z=B+p/45;A.append("line").attr({class:"implicit-property-arrow",x1:T,y1:z,x2:_,y2:z}).style("stroke-width",v).attr("marker-end","url("+s.absUrl()+"#arrow)"),A.append("text").attr({x:U,y:z+p/370}).style("font-size",P+"px").text("implicit property");var G=z+p/45;A.append("line").attr({class:"collapsed-property-arrow",x1:T,y1:G,x2:_,y2:G}).style("stroke-width",k).attr("marker-end","url("+s.absUrl()+"#collapsed-arrow)"),A.append("text").attr({x:U,y:G+p/370}).style("font-size",P+"px").text("collapsed property");var W=E,H=s.search().uri,X=s.search().name,Y=s.search().collapsed;o.getDomainRangeData(H,Y).success((function(t,e,r){u.domainRangeGraphData=t})).error((function(t){d.error("Request for "+X+" failed!")})),$(window).on("popstate",(function(){i.set(c.DOMAIN_RANGE_WENT_BACK,!0)})),e.onpopstate=function(e){e.state&&t.$broadcast("changeCollapsedEdgesState",e.state.collapsed)},u.$watch("collapseEdges",(function(){angular.isUndefined(u.collapseEdges)||(i.set(c.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(c.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:H,name:X,collapsed:e})}(u.collapseEdges),i.remove(c.DOMAIN_RANGE_WENT_BACK))})),u.$watch("domainRangeGraphData",(function(){if(u.domainRangeGraphData){var r=angular.copy(u.domainRangeGraphData);b.nodes(r.nodes).links(r.links);var a=W.selectAll(".link").data(r.links).enter().append("g");function o(t){t.style("stroke",f),t.style("stroke-width",k),t.attr("marker-end","url("+s.absUrl()+"#collapsed-arrow)")}var i,c,d=0;a.each((function(t){if(t.objectPropNodeClassUri!==H)i=a.append("line").attr({class:"link","marker-end":"url("+s.absUrl()+"#arrow)"}).style("stroke-width",v).each((function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=h;break;case"objectRight":t.targetRadius=y;break;case"datatype":t.targetRadius=x;break;default:t.targetRadius=0}var e=d3.select(this);t.targetNodeEdgeCount>1?o(e):t.implicit&&e.style("stroke-dasharray","3, 3")}));else{if(angular.isUndefined(c)){var e=h/2;c=d3.select(this).append("path").attr({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+s.absUrl()+"#arrow-loop)"}).style("stroke-width",v)}(d+=t.targetNodeEdgeCount)>1&&o(d3.select(".loop-link"))}}));var E={};function N(){$.isEmptyObject(E)||(E.text.style("fill","black"),E.background.style("fill","#f0f0f0"))}function C(t){N(),E.text=d3.select(this),E.background=d3.select(this.previousSibling),E.text.style("fill","white"),E.background.style("fill",f),l((function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=t})),d3.event.stopPropagation()}$("document").ready((function(){$("#domain-range").bind("click",N)}));var R=a.append("text").attr("class",(function(t){return t.objectPropNodeClassUri===H?"loop-link-property-name":"property-name"})).attr("dx",(function(t){return h/2*("objectLeft"===t.propertyType?1:-1)})).style("text-anchor",(function(t){return"objectLeft"===t.propertyType?"end":"start"})).style("font-size",m).text((function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name}));R.each((function(t){var r=d3.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",C):r.on("click",(function(t){e.open("resource?uri="+encodeURIComponent(t.uri),"_blank")}))}));var A=p/600,T=a.append("rect").attr("class",(function(t){return t.objectPropNodeClassUri!==H?"link-background":"loop-link-background"})).attr("width",(function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+2*A})).attr("height",(function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+A})).attr("transform",(function(t){var e=A-h/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(A+t.calculatedHeight/2)+")"})).on("click",(function(t){d3.event.stopPropagation()})),L=W.selectAll(".node").data(r.nodes).enter().append("g"),_=L.filter((function(t){return t.objectPropClassUri!==H})).append("circle").each((function(t){var e=d3.select(this);"main"===t.classPosition?e.attr({class:"class-node",r:h}).attr("marker-end","url("+s.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attr({class:"datatype-node",r:x}):e.attr({class:"object-prop-node",r:y})})).call(w);d3.selectAll(".object-prop-node").on("dblclick",(function(e,r){u.$apply((function(){t.$broadcast("reloadDomainRangeGraphView",e,r)}))})),L.filter((function(t){return t.objectPropClassName&&t.objectPropClassUri!==H})).append("text").attr("class",(function(t){return t.classPosition+"-class-label"})).style("font-size",m).text((function(t){return t.objectPropClassName})).on("click",(function(t){e.open("resource?uri="+encodeURIComponent(t.objectPropClassUri),"_blank")}));var M=L.select("text");W.select(".class-node").each((function(){d3.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",(function(t){return n.a.Text.calcFontSize(X,h)})).text(X).on("click",(function(t){e.open("resource?uri="+encodeURIComponent(H),"_blank")}))}));var U=W.select(".class-node + text"),P=d3.select(".class-node"),j=d3.selectAll(".loop-link-background"),O=d3.selectAll(".loop-link-property-name");if(R=d3.selectAll(".property-name"),!angular.isUndefined(c)){var I=[];j.each((function(t,e){d3.select(this);I.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})}))}b.on("tick",(function(t){var e=8*t.alpha;function r(t){var e=t.x+2*h,r=t.y-h/1.9;var a=[];j.each((function(n,o){a.push(n),o<g?function(a,n){var o=$.grep(I,(function(t){return t.idx==n}));n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attr({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(d3.select(this),o):d3.select(this).remove()})),function(t){var e;d3.select(".view-more-preds-label").style("font-weight","bold").each((function(r){r.target.allEdges=t,e=this.getComputedTextLength()})).on("click",C),d3.select(".view-more-preds-rect").attr("height",e+2*A)}(a)}i.filter((function(t){return t.objectPropNodeClassUri!==H})).attr("x1",(function(t){return t.source.x})).attr("y1",(function(t){return t.source.y})).attr("x2",(function(t){return t.targetX})).attr("y2",(function(t){return t.targetY})).each((function(t){!function(t){"objectLeft"===t.propertyType?(t.source.x-=8*e,t.source.y-=e/9):(t.target.x+=8*e,t.target.y-=e/9)}(t);var r=Math.atan2(t.target.y-t.source.y,t.target.x-t.source.x);t.targetX=t.target.x-Math.cos(r)*t.targetRadius,t.targetY=t.target.y-Math.sin(r)*t.targetRadius})),_.each((function(t){"main"!==t.classPosition||angular.isUndefined(c)||(!function(t){var e=t.x+.96*h,r=t.y-h/5.7-5;c.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(I,(function(t){return t.idx==r})),n=0;r>0&&(n=parseFloat(2*r*(a[0].height/1.4)));var o=t.x,s=t.y-2.1*h-n;e.attr({x:o,y:s}).moveToFront()}O.each((function(t,r){var a=d3.select(this),n=O.size()-g;n<0?e(a,r):(0==r&&!u.collapseEdges&&n>1&&(!function(t,e,r){t.classed("view-more-preds-label",!0).text(r+" predicates more ..."),null!==this.nextSibling&&e.classed("view-more-preds-rect",!0)}(a,d3.select(this.nextSibling),n),e(a,r)),r<g?e(a,r):a.remove())}))}(t),r(t)),t.objectPropClassUri!==H&&d3.select(this).attr("cx",(function(t){return"main"===t.classPosition?function(t){!window.ActiveXObject&&"ActiveXObject"in window&&(Math.log10=function(t){return Math.log(t)/Math.LN10});var e=P.attr("cx")-p/2,r=.5*Math.log10(Math.abs(e));return t.x+=e>0?-r:r,t.x}(t):t.x})).attr("cy",(function(t){return t.y}))})),U.attr("x",(function(t){return t.x})).attr("y",(function(t){return t.y})).moveToFront(),T.filter((function(t){return t.objectPropNodeClassUri!==H})).attr("x",(function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2})).attr("y",(function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2})).moveToFront(),R.attr("x",(function(t){return t.target.x>t.source.x?t.source.x+(t.target.x-t.source.x)/2:t.target.x+(t.source.x-t.target.x)/2})).attr("y",(function(t){return t.target.y>t.source.y?t.source.y+(t.target.y-t.source.y)/2:t.target.y+(t.source.y-t.target.y)/2})).moveToFront(),M.attr("x",(function(t){return"right"===t.classPosition?t.x+1.2*y:t.x-1.2*y})).attr("y",(function(t){return t.y})).moveToFront()})).linkDistance(p/3.5).start()}}))}(u)}),50);u.$on("$destroy",(function(){l.cancel(p)}))}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","#F04E23").constant("ONTO_GREEN","#0CB0A0").constant("ONTO_BLUE","#003663").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",o),o.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}}]);
2
2
  //# sourceMappingURL=30.5ed60b4ae0a67956c66b.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/lib/common/d3-utils.js","webpack:///./src/js/lib/common/svg-export.js","webpack:///./src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"names":["D3","Text","calcFontSizeRaw","text","radius","minimumSize","isMultiline","textSize","substring","length","match","Math","round","calcFontSize","getTextWithElipsisIfNeeded","str","threshold","Transition","fadeIn","sel","duration","style","transition","fadeOut","Click","delayDblClick","event","d3","dispatch","rebind","selection","down","wait","on","mouse","document","body","Date","d","a","b","sqrt","pow","window","clearTimeout","dblclick","setTimeout","click","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","exportSvg","selectAll","attr","version","xmlns","node","parentNode","innerHTML","btoa","unescape","encodeURIComponent","domainRangeGraphDirective","$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT","restrict","template","scope","showPredicatesInfoPanel","selectedPredicate","collapseEdges","link","timer","prototype","moveToFront","this","select","appendChild","moveToBack","firstChild","insertBefore","width","mainClassSize","otherClassSize","datatypeSize","labelFontSize","basicArrowStrokeWidth","collapsedArrowStrokeWidth","force","layout","size","charge","drag","classed","selected","svg","append","defs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","imgSrc","href","download","getActiveRepository","legendBackgroundWidth","legendBackgroundHeight","legendCellGroup","height","sourceX","sourceY","targetX","targetY","legendTextX","legendLabelFontSize","classNodeY","classNodeTextY","cx","cy","r","x","y","objectNodeY","objectNodeTextY","datatypeNodeY","datatypeNodeTextY","basicPropertyArrowY","x1","y1","x2","y2","absUrl","implicitPropArrowY","collapsedPropArrowY","g","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","copy","nodes","links","linkGroup","data","enter","styleArrowsInCollapsedMode","loopLink","loopLinkEdgeCount","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","loopLinkSize","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","textPadding","linkRect","calculatedWidth","getBBox","calculatedHeight","translateX","nodeGroup","filter","objectPropClassUri","classPosition","objectPropClassName","call","$apply","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","e","k","alpha","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","pushEdgesToLeftAndRight","angle","atan2","cos","sin","loopTranslateX","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","predicatesLeft","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","linkDistance","start","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"mappings":"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","file":"30.5ed60b4ae0a67956c66b.bundle.js","sourcesContent":["var D3 = D3 || {};\n\nD3.Text = function () {\n function calcFontSizeRaw(text, radius, minimumSize, isMultiline) {\n minimumSize = minimumSize || 10;\n\n var textSize = radius / 3;\n if (typeof text === \"string\") {\n var len = text.substring(0, radius / 3).length + 1.5;\n textSize *= 10 / len;\n textSize += 1;\n // experimental alternative method:\n // var textSize = 3.3 * radius / text.length;\n\n // Tweak for Indian scripts and CJK ones\n if (text.match(/[\\u0900-\\u0DFF\\u1100-\\u11FF\\u2E80-\\u2EFF\\u3000-\\u9FFF]/)) {\n textSize *= 0.6;\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n /* Disabled for the time being, better without this\n if (isMultiline) {\n var numWords = text.split(/\\s+/).length;\n if (numWords > 1) {\n if (numWords > 4) {\n numWords = 4;\n }\n textSize += textSize * (4 - numWords) * 0.1;\n }\n }\n */\n\n return Math.round(textSize);\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n return Math.round(textSize);\n }\n\n function calcFontSize(text, radius, minimumSize, isMultiline) {\n return calcFontSizeRaw(text, radius, minimumSize, isMultiline) + 'px';\n }\n\n function getTextWithElipsisIfNeeded(str, threshold) {\n if (typeof str === \"string\") {\n if (str.length > threshold) {\n return str.substring(0, threshold - 3) + \"...\";\n }\n }\n return str;\n }\n\n return {\n calcFontSizeRaw: calcFontSizeRaw,\n calcFontSize: calcFontSize,\n getTextWithElipsisIfNeeded: getTextWithElipsisIfNeeded\n };\n}();\n\nD3.Transition = function () {\n function fadeIn(sel, duration) {\n sel.style(\"opacity\", 0.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 1.0);\n }\n\n function fadeOut(sel, duration) {\n sel.style(\"opacity\", 1.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 0.0);\n }\n\n return {\n fadeIn: fadeIn,\n fadeOut: fadeOut\n };\n}();\n\nD3.Click = function () {\n function delayDblClick() {\n var event = d3.dispatch('click', 'dblclick');\n\n function cc(selection) {\n var down,\n tolerance = 5,\n last,\n wait = null;\n\n // euclidean distance\n function dist(a, b) {\n return Math.sqrt(Math.pow(a[0] - b[0], 2), Math.pow(a[1] - b[1], 2));\n }\n\n selection.on('mousedown', function () {\n down = d3.mouse(document.body);\n last = +new Date();\n });\n selection.on('mouseup', function (d) {\n if (dist(down, d3.mouse(document.body)) > tolerance) {\n return;\n } else {\n if (wait) {\n window.clearTimeout(wait);\n wait = null;\n event.dblclick(d);\n } else {\n wait = window.setTimeout((function (e) {\n return function () {\n event.click(d);\n wait = null;\n };\n })(d3.event), 250);\n }\n }\n });\n }\n\n return d3.rebind(cc, event, 'on');\n }\n\n return {\n delayDblClick: delayDblClick\n };\n}();\n\nexport default D3;\n","var SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n var cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n var cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource() {\n // add needed xml namespace\n var exportSvg = d3.selectAll(\"svg\")\n .attr({\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n })\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.domainrange', [\n 'graphdb.framework.graphexplore.controllers.domainrange',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant('ONTO_RED', '#F04E23')\n .constant('ONTO_GREEN', '#0CB0A0')\n .constant('ONTO_BLUE', '#003663')\n .constant('NON_COLLAPSED_REFLEXIVE_LINK_LIMIT', 6)\n .directive('domainRangeGraph', domainRangeGraphDirective);\n\ndomainRangeGraphDirective.$inject = ['$rootScope', '$window', '$repositories', 'GraphDataRestService', '$location', 'LocalStorageAdapter', 'LSKeys', '$timeout', 'toastr', 'ONTO_RED', 'ONTO_GREEN', 'ONTO_BLUE', 'NON_COLLAPSED_REFLEXIVE_LINK_LIMIT'];\n\nfunction domainRangeGraphDirective($rootScope, $window, $repositories, GraphDataRestService, $location, LocalStorageAdapter, LSKeys, $timeout, toastr, ONTO_RED, ONTO_GREEN, ONTO_BLUE, NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n return {\n restrict: 'AE',\n template: '<div id=\"domain-range\"></div>',\n scope: {\n showPredicatesInfoPanel: '=',\n selectedPredicate: '=',\n collapseEdges: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope) {\n const timer = $timeout(function () {\n renderDomainRangeGraph(scope);\n }, 50);\n\n scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n\n function renderDomainRangeGraph(scope) {\n d3.selection.prototype.moveToFront = function () {\n return this.each(function () {\n d3.select(this.parentNode.appendChild(this));\n });\n };\n\n d3.selection.prototype.moveToBack = function () {\n return this.each(function () {\n const firstChild = this.parentNode.firstChild;\n if (firstChild) {\n this.parentNode.insertBefore(this, firstChild);\n }\n });\n };\n\n var width = 1200,\n height = 600;\n\n var mainClassSize = width / 18,\n otherClassSize = width / 110,\n datatypeSize = otherClassSize / 2,\n labelFontSize = width / 90,\n basicArrowStrokeWidth = width / 1000,\n collapsedArrowStrokeWidth = width / 600;\n\n\n var force = d3.layout.force()\n .size([width, height])\n .charge(-900);\n\n var drag = force.drag()\n .on(\"dragstart\", dragstart);\n\n var svg = d3.select(\"#domain-range\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n var defs = svg.append(\"defs\");\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 10,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"collapsed-arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 9,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 4,\n markerHeight: 4,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow-loop\",\n viewBox: \"0 -5 10 10\",\n refX: 7,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/domain-range-graph.css?v=1.10.1\");\n\n // inline css rules in a defs tag\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource();\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attr({\n href: imgSrc,\n download: \"domain-range-graph-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n // start of code for legend\n var legendBackgroundWidth = width / 7;\n var legendBackgroundHeight = legendBackgroundWidth * 1.2;\n\n var svgLegend = d3.select(\".legend-container\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + legendBackgroundWidth + \" \" + legendBackgroundHeight)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n var legendCellGroup = svgLegend;\n\n legendCellGroup.append(\"rect\")\n .attr({\n width: legendBackgroundWidth,\n height: legendBackgroundHeight\n })\n .style(\"fill\", \"rgba(235, 235, 235, 0.9)\");\n\n var sourceX = width / 75;\n var sourceY = width / 40;\n var targetX = sourceX + mainClassSize / 2.5;\n var targetY = sourceY;\n\n var legendTextX = targetX + width / 90;\n var legendLabelFontSize = labelFontSize / 1.1;\n\n var classNodeY = sourceY;\n var legendClassNode = legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-class-node\",\n cx: (sourceX + targetX) / 2,\n cy: classNodeY,\n r: mainClassSize / 4.5\n });\n\n var classNodeTextY = targetY + width / 370;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: classNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"main class node\");\n\n var objectNodeY = classNodeY + width / 30;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-object-node\",\n cx: (sourceX + targetX) / 2,\n cy: objectNodeY,\n r: otherClassSize / 1.25\n });\n\n var objectNodeTextY = classNodeTextY + width / 30;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: objectNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"class node\");\n\n var datatypeNodeY = objectNodeY + width / 45;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-datatype-node\",\n cx: (sourceX + targetX) / 2,\n cy: datatypeNodeY,\n r: datatypeSize\n });\n\n var datatypeNodeTextY = objectNodeTextY + width / 45;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: datatypeNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"datatype node\");\n\n var basicPropertyArrowY = datatypeNodeY + width / 45;\n var classNodeSel = d3.select('.legend-class-node');\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"property-arrow\",\n x1: sourceX,\n y1: basicPropertyArrowY,\n x2: targetX,\n y2: basicPropertyArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: basicPropertyArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"explicit property\");\n\n var implicitPropArrowY = basicPropertyArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"implicit-property-arrow\",\n x1: sourceX,\n y1: implicitPropArrowY,\n x2: targetX,\n y2: implicitPropArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: implicitPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"implicit property\");\n\n var collapsedPropArrowY = implicitPropArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"collapsed-property-arrow\",\n x1: sourceX,\n y1: collapsedPropArrowY,\n x2: targetX,\n y2: collapsedPropArrowY\n })\n .style(\"stroke-width\", collapsedArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: collapsedPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"collapsed property\");\n // end of code for legend\n\n // there doesn't seem to be a need for a separate group\n var g = svg; //svg.append(\"g\");\n\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n var collapsed = $location.search().collapsed;\n\n GraphDataRestService.getDomainRangeData(selectedRdfUri, collapsed)\n .success(function (response, status, headers) {\n scope.domainRangeGraphData = response;\n }).error(function (response) {\n toastr.error(\"Request for \" + classNodeLabel + \" failed!\");\n });\n\n function switchEdgeMode(collapsed) {\n $rootScope.$broadcast('switchEdgeMode', {\n uri: selectedRdfUri,\n name: classNodeLabel,\n collapsed: collapsed\n });\n }\n\n // intercept back button press and set action to local storage\n $(window).on('popstate', function () {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_WENT_BACK, true);\n });\n\n $window.onpopstate = function (event) {\n if (event.state) {\n $rootScope.$broadcast(\"changeCollapsedEdgesState\", event.state.collapsed);\n }\n };\n\n scope.$watch('collapseEdges', function () {\n if (!angular.isUndefined(scope.collapseEdges)) {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES, scope.collapseEdges);\n\n // if the back button has not been pressed, then switch to collapsed or non collapsed mode\n // otherwise skip, because back button will not function properly and will not pop the entire\n // history stack\n if (LocalStorageAdapter.get(LSKeys.DOMAIN_RANGE_WENT_BACK) !== \"true\") {\n switchEdgeMode(scope.collapseEdges);\n }\n\n // after back button status has been checked, remove the action from local storage in order\n // to be clean for next check\n LocalStorageAdapter.remove(LSKeys.DOMAIN_RANGE_WENT_BACK);\n }\n });\n\n scope.$watch('domainRangeGraphData', function () {\n if (scope.domainRangeGraphData) {\n var graph = angular.copy(scope.domainRangeGraphData);\n\n force\n .nodes(graph.nodes)\n .links(graph.links);\n\n var linkGroup = g.selectAll(\".link\")\n .data(graph.links)\n .enter()\n .append(\"g\");\n\n function styleArrowsInCollapsedMode(sel) {\n sel.style(\"stroke\", ONTO_BLUE);\n sel.style(\"stroke-width\", collapsedArrowStrokeWidth);\n sel.attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n }\n\n var link,\n loopLink,\n loopLinkEdgeCount = 0;\n\n\n linkGroup\n .each(function (d) {\n if (d.objectPropNodeClassUri !== selectedRdfUri) {\n link = linkGroup\n .append(\"line\")\n .attr({\n class: \"link\",\n // absolute url needed because angular inserts a <base> tag\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .each(function (d) {\n switch (d.propertyType) {\n case \"objectLeft\":\n d.targetRadius = mainClassSize;\n break;\n case \"objectRight\":\n d.targetRadius = otherClassSize;\n break;\n case \"datatype\":\n d.targetRadius = datatypeSize;\n break;\n default:\n d.targetRadius = 0;\n }\n var sel = d3.select(this);\n if (d.targetNodeEdgeCount > 1) {\n styleArrowsInCollapsedMode(sel);\n } else if (d.implicit) {\n sel.style(\"stroke-dasharray\", \"3, 3\");\n }\n });\n } else {\n if (angular.isUndefined(loopLink)) {\n var loopLinkSize = mainClassSize / 2;\n loopLink = d3.select(this)\n .append(\"path\")\n .attr({\n d: \"M 0 0 A \" + loopLinkSize + \" \" + loopLinkSize + \" 0 1 1 0 \" + loopLinkSize,\n class: \"loop-link\",\n fill: \"none\",\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow-loop)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth);\n }\n\n loopLinkEdgeCount += d.targetNodeEdgeCount;\n if (loopLinkEdgeCount > 1) {\n styleArrowsInCollapsedMode(d3.select(\".loop-link\"));\n }\n }\n });\n\n var previousPropertyNameSelection = {};\n\n function disableCollapsedPredicateLabelHightlighting() {\n if (!$.isEmptyObject(previousPropertyNameSelection)) {\n previousPropertyNameSelection.text.style(\"fill\", \"black\");\n previousPropertyNameSelection.background.style(\"fill\", \"#f0f0f0\");\n }\n }\n\n // when clicking anywhere else but the collapsed labels disable highlighting\n // of the currently selected one\n $(\"document\").ready(function () {\n $(\"#domain-range\").bind(\"click\", disableCollapsedPredicateLabelHightlighting);\n });\n\n function onCollapsedPropertyNameClick(d) {\n disableCollapsedPredicateLabelHightlighting();\n previousPropertyNameSelection.text = d3.select(this);\n\n previousPropertyNameSelection.background = d3.select(this.previousSibling);\n previousPropertyNameSelection.text.style(\"fill\", \"white\");\n\n previousPropertyNameSelection.background.style(\"fill\", ONTO_BLUE);\n $timeout(function () {\n scope.showPredicatesInfoPanel = true;\n scope.selectedPredicate = d;\n });\n d3.event.stopPropagation();\n }\n\n\n var propertyNames = linkGroup\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri === selectedRdfUri ? \"loop-link-property-name\" : \"property-name\";\n })\n .attr(\"dx\", function (d) {\n // offset text more towards the main class\n return mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n })\n .style(\"text-anchor\", function (d) {\n return d.propertyType === \"objectLeft\" ? \"end\" : \"start\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.targetNodeEdgeCount > 1 ? d.targetNodeEdgeCount + \" predicates\" : d.name;\n });\n\n\n propertyNames\n .each(function (d) {\n var sel = d3.select(this);\n var isCompoundEdge = /\\d\\spredicates/.test(sel.text());\n\n // handle collapsed predicates by making their font bold, make them highlight when clicked\n // and make them trigger the side panel to display the collapsed edges\n if (isCompoundEdge) {\n sel\n .style(\"font-weight\", \"bold\")\n .on(\"click\", onCollapsedPropertyNameClick);\n } else {\n // for regular predicate labels just attach a link to the \"Resources\" view\n // for more helpful information regarding them\n sel.on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.uri), \"_blank\");\n });\n }\n });\n var textPadding = width / 600;\n\n\n var linkRect = linkGroup\n .append(\"rect\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri ? \"link-background\" : \"loop-link-background\"\n })\n .attr(\"width\", function (d) {\n d.calculatedWidth = this.previousSibling.getBBox().width;\n return d.calculatedWidth + textPadding * 2;\n })\n .attr(\"height\", function (d) {\n d.calculatedHeight = this.previousSibling.getBBox().height;\n return d.calculatedHeight + textPadding;\n })\n .attr(\"transform\", function (d) {\n // offset rect by the same amount as text (besides the padding)\n var translateX = textPadding - mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n if (d.propertyType === \"objectLeft\") {\n translateX += d.calculatedWidth;\n }\n return \"translate(-\" + translateX + \",-\" + (textPadding + d.calculatedHeight / 2) + \")\";\n })\n .on(\"click\", function (d) {\n d3.event.stopPropagation();\n });\n\n\n var nodeGroup = g.selectAll(\".node\")\n .data(graph.nodes)\n .enter()\n .append(\"g\");\n\n var node = nodeGroup\n .filter(function (d) {\n return d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"circle\")\n .each(function (d) {\n var sel = d3.select(this);\n if (d.classPosition === \"main\") {\n sel.attr({\n class: \"class-node\",\n r: mainClassSize\n })\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#loop-link)\");\n } else if (d.objectPropClassName === null) {\n sel.attr({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attr({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(d, collapsed) {\n scope.$apply(function () {\n $rootScope.$broadcast('reloadDomainRangeGraphView', d, collapsed);\n });\n }\n\n d3.selectAll(\".object-prop-node\")\n .on(\"dblclick\", reloadDomainRangeGraphView);\n\n\n nodeGroup\n .filter(function (d) {\n return d.objectPropClassName && d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.classPosition + \"-class-label\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.objectPropClassName;\n })\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n g.select(\".class-node\")\n .each(function () {\n d3.select(this.parentNode)\n .append(\"text\")\n .attr(\"class\", \"rdf-class-label\")\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(classNodeLabel, mainClassSize)\n })\n .text(classNodeLabel)\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = g.select(\".class-node + text\"),\n classNode = d3.select(\".class-node\"),\n loopLinkBackgroundSel = d3.selectAll(\".loop-link-background\"),\n loopLinkPropertyName = d3.selectAll(\".loop-link-property-name\");\n\n propertyNames = d3.selectAll(\".property-name\");\n\n if (!angular.isUndefined(loopLink)) {\n var loopLinkBackgroundProps = [];\n\n loopLinkBackgroundSel.each(function (d, i) {\n var sel = d3.select(this);\n loopLinkBackgroundProps.push({\n idx: i,\n width: d.calculatedWidth,\n height: d.calculatedHeight\n });\n });\n }\n\n function tick(e) {\n var k = 8 * e.alpha;\n\n function pushEdgesToLeftAndRight(d) {\n if (d.propertyType === \"objectLeft\") {\n d.source.x -= 8 * k;\n d.source.y -= k / 9;\n } else {\n d.target.x += 8 * k;\n d.target.y -= k / 9;\n }\n }\n\n link\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x1\", function (d) {\n return d.source.x;\n })\n .attr(\"y1\", function (d) {\n return d.source.y;\n })\n .attr(\"x2\", function (d) {\n return d.targetX;\n })\n .attr(\"y2\", function (d) {\n return d.targetY;\n })\n .each(function (d) {\n pushEdgesToLeftAndRight(d);\n\n // shortens the line to compensate for the circle at the target\n var angle = Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x);\n d.targetX = d.target.x - Math.cos(angle) * d.targetRadius;\n d.targetY = d.target.y - Math.sin(angle) * d.targetRadius;\n });\n\n function positionLoopLink(d) {\n var loopTranslateX = d.x + mainClassSize * 0.96,\n loopTranslateY = d.y - mainClassSize / 5.7 - 5;\n loopLink.attr(\"transform\", \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopTranslateX + \",\" + loopTranslateY + \")\");\n }\n\n function positionLoopLinkLabels(d) {\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n var currentBackgroundHeight = 0;\n if (i > 0) {\n currentBackgroundHeight = parseFloat(2 * i * (foundLoopLinkBackgroundProps[0].height / 1.4));\n }\n\n var loopLinkLabelX = d.x,\n loopLinkLabelY = d.y - mainClassSize * 2.1 - currentBackgroundHeight;\n\n sel\n .attr({\n x: loopLinkLabelX,\n y: loopLinkLabelY\n })\n .moveToFront();\n }\n\n /**\n * Create a \"View more\" label to depict that the are more reflexive link labels\n * left that could be seen in the side panel when clicking this label.\n *\n * @param labelSel\n * d3 selection of the text label\n * @param backgroundSel\n * d3 selection of the rectangle element background\n * @param predicatesLeft\n * number of predicates left that are collapsed\n */\n function createViewMorePredicatesLabel(labelSel, backgroundSel, predicatesLeft) {\n labelSel\n .classed(\"view-more-preds-label\", true)\n .text(predicatesLeft + \" predicates more ...\");\n if (this.nextSibling !== null) {\n backgroundSel\n .classed(\"view-more-preds-rect\", true);\n }\n }\n\n loopLinkPropertyName.each(function (dd, i) {\n var sel = d3.select(this);\n\n var predicatesLeft = loopLinkPropertyName.size() - NON_COLLAPSED_REFLEXIVE_LINK_LIMIT;\n if (predicatesLeft < 0) {\n reposition(sel, i);\n } else {\n if (i == 0 && !scope.collapseEdges && predicatesLeft > 1) {\n createViewMorePredicatesLabel(sel, d3.select(this.nextSibling), predicatesLeft);\n reposition(sel, i);\n }\n\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(sel, i);\n } else {\n sel.remove();\n }\n }\n });\n // loopLinkPropertyName.each(function (dd, i) {\n // var sel = d3.select(this);\n // if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // reposition(sel, i);\n // } else if (i == NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // createViewMorePredicatesLabel(sel, d3.select(this.nextSibling));\n // reposition(sel, i);\n // } else {\n // sel.remove();\n // }\n // });\n }\n\n function positionLoopLinkBackgrounds(d) {\n var loopLinkBackgroundY = d.x + mainClassSize * 2,\n loopLinkBackgroundX = d.y - mainClassSize / 1.9;\n\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n if (i > 0) {\n loopLinkBackgroundY += parseFloat(i * (foundLoopLinkBackgroundProps[0].height / (i / 1.4)));\n }\n\n sel\n .attr({\n transform: \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopLinkBackgroundY + \",\" + loopLinkBackgroundX + \")\",\n width: foundLoopLinkBackgroundProps[0].height,\n height: foundLoopLinkBackgroundProps[0].width\n });\n }\n\n /**\n * Adjust new width of \"View more\" label background and add all reflexive link metadata the this\n * label in order to render them in the side panel.\n *\n * @param allLoopLinkEdges\n * all reflexive links to the current class\n */\n function adjustViewMorePredicatesLabel(allLoopLinkEdges) {\n var viewMoreTextWidth;\n d3.select(\".view-more-preds-label\")\n // make label bold to resemble a collapsed label\n .style(\"font-weight\", \"bold\")\n .each(function (d) {\n // attach all reflexive links to the \"view more\" collapsed predicate\n // because in non collapsed mode the backend does not provide them\n d.target.allEdges = allLoopLinkEdges;\n\n // calculate text width in pixels in order to adjust background width accordingly\n viewMoreTextWidth = this.getComputedTextLength();\n })\n .on(\"click\", onCollapsedPropertyNameClick);\n\n d3.select(\".view-more-preds-rect\")\n // we modify height property instead of width because they are reversed\n // when we repositioned loop link labels\n .attr(\"height\", viewMoreTextWidth + 2 * textPadding);\n }\n\n var allLoopLinkEdges = [];\n loopLinkBackgroundSel.each(function (dd, i) {\n allLoopLinkEdges.push(dd);\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(d3.select(this), i);\n } else {\n d3.select(this).remove();\n }\n });\n\n adjustViewMorePredicatesLabel(allLoopLinkEdges);\n }\n\n\n function centerClassNode(d) {\n if (!(window.ActiveXObject) && \"ActiveXObject\" in window) {\n Math.log10 = function (x) {\n return Math.log(x) / Math.LN10;\n };\n }\n var absDiff = classNode.attr(\"cx\") - width / 2,\n logOffset = Math.log10(Math.abs(absDiff)) * 0.5;\n d.x += absDiff > 0 ? -logOffset : logOffset;\n return d.x;\n }\n\n node\n .each(function (d) {\n if (d.classPosition === \"main\" && !angular.isUndefined(loopLink)) {\n positionLoopLink(d);\n positionLoopLinkLabels(d);\n positionLoopLinkBackgrounds(d);\n }\n\n if (d.objectPropClassUri !== selectedRdfUri) {\n d3.select(this)\n .attr(\"cx\", function (d) {\n // pushes the main class circle to the centre\n if (d.classPosition === \"main\") {\n return centerClassNode(d);\n }\n return d.x;\n })\n .attr(\"cy\", function (d) {\n return d.y;\n });\n }\n });\n\n\n rdfClassName\n .attr(\"x\", function (d) {\n return d.x;\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n\n\n linkRect\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n propertyNames\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n objectPropClassName\n .attr(\"x\", function (d) {\n if (d.classPosition === \"right\") {\n return d.x + otherClassSize * 1.2;\n } else {\n return d.x - otherClassSize * 1.2;\n }\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n }\n\n\n force\n .on(\"tick\", tick)\n .linkDistance(width / 3.5)\n .start();\n\n }\n });\n\n function dragstart(d) {\n d3.select(this)\n .classed(\"selected\", d.selected = true);\n }\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/lib/common/d3-utils.js","webpack:///./src/js/lib/common/svg-export.js","webpack:///./src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"names":["D3","Text","calcFontSizeRaw","text","radius","minimumSize","isMultiline","textSize","substring","length","match","Math","round","calcFontSize","getTextWithElipsisIfNeeded","str","threshold","Transition","fadeIn","sel","duration","style","transition","fadeOut","Click","delayDblClick","event","d3","dispatch","rebind","selection","down","wait","on","mouse","document","body","Date","d","a","b","sqrt","pow","window","clearTimeout","dblclick","setTimeout","click","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","exportSvg","selectAll","attr","version","xmlns","node","parentNode","innerHTML","btoa","unescape","encodeURIComponent","domainRangeGraphDirective","$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT","restrict","template","scope","showPredicatesInfoPanel","selectedPredicate","collapseEdges","link","timer","prototype","moveToFront","this","select","appendChild","moveToBack","firstChild","insertBefore","width","mainClassSize","otherClassSize","datatypeSize","labelFontSize","basicArrowStrokeWidth","collapsedArrowStrokeWidth","force","layout","size","charge","drag","classed","selected","svg","append","defs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","imgSrc","href","download","getActiveRepository","legendBackgroundWidth","legendBackgroundHeight","legendCellGroup","height","sourceX","sourceY","targetX","targetY","legendTextX","legendLabelFontSize","classNodeY","classNodeTextY","cx","cy","r","x","y","objectNodeY","objectNodeTextY","datatypeNodeY","datatypeNodeTextY","basicPropertyArrowY","x1","y1","x2","y2","absUrl","implicitPropArrowY","collapsedPropArrowY","g","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","copy","nodes","links","linkGroup","data","enter","styleArrowsInCollapsedMode","loopLink","loopLinkEdgeCount","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","loopLinkSize","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","textPadding","linkRect","calculatedWidth","getBBox","calculatedHeight","translateX","nodeGroup","filter","objectPropClassUri","classPosition","objectPropClassName","call","$apply","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","e","k","alpha","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","pushEdgesToLeftAndRight","angle","atan2","cos","sin","loopTranslateX","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","predicatesLeft","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","linkDistance","start","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"mappings":"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","file":"30.5ed60b4ae0a67956c66b.bundle.js","sourcesContent":["var D3 = D3 || {};\n\nD3.Text = function () {\n function calcFontSizeRaw(text, radius, minimumSize, isMultiline) {\n minimumSize = minimumSize || 10;\n\n var textSize = radius / 3;\n if (typeof text === \"string\") {\n var len = text.substring(0, radius / 3).length + 1.5;\n textSize *= 10 / len;\n textSize += 1;\n // experimental alternative method:\n // var textSize = 3.3 * radius / text.length;\n\n // Tweak for Indian scripts and CJK ones\n if (text.match(/[\\u0900-\\u0DFF\\u1100-\\u11FF\\u2E80-\\u2EFF\\u3000-\\u9FFF]/)) {\n textSize *= 0.6;\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n /* Disabled for the time being, better without this\n if (isMultiline) {\n var numWords = text.split(/\\s+/).length;\n if (numWords > 1) {\n if (numWords > 4) {\n numWords = 4;\n }\n textSize += textSize * (4 - numWords) * 0.1;\n }\n }\n */\n\n return Math.round(textSize);\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n return Math.round(textSize);\n }\n\n function calcFontSize(text, radius, minimumSize, isMultiline) {\n return calcFontSizeRaw(text, radius, minimumSize, isMultiline) + 'px';\n }\n\n function getTextWithElipsisIfNeeded(str, threshold) {\n if (typeof str === \"string\") {\n if (str.length > threshold) {\n return str.substring(0, threshold - 3) + \"...\";\n }\n }\n return str;\n }\n\n return {\n calcFontSizeRaw: calcFontSizeRaw,\n calcFontSize: calcFontSize,\n getTextWithElipsisIfNeeded: getTextWithElipsisIfNeeded\n };\n}();\n\nD3.Transition = function () {\n function fadeIn(sel, duration) {\n sel.style(\"opacity\", 0.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 1.0);\n }\n\n function fadeOut(sel, duration) {\n sel.style(\"opacity\", 1.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 0.0);\n }\n\n return {\n fadeIn: fadeIn,\n fadeOut: fadeOut\n };\n}();\n\nD3.Click = function () {\n function delayDblClick() {\n var event = d3.dispatch('click', 'dblclick');\n\n function cc(selection) {\n var down,\n tolerance = 5,\n last,\n wait = null;\n\n // euclidean distance\n function dist(a, b) {\n return Math.sqrt(Math.pow(a[0] - b[0], 2), Math.pow(a[1] - b[1], 2));\n }\n\n selection.on('mousedown', function () {\n down = d3.mouse(document.body);\n last = +new Date();\n });\n selection.on('mouseup', function (d) {\n if (dist(down, d3.mouse(document.body)) > tolerance) {\n return;\n } else {\n if (wait) {\n window.clearTimeout(wait);\n wait = null;\n event.dblclick(d);\n } else {\n wait = window.setTimeout((function (e) {\n return function () {\n event.click(d);\n wait = null;\n };\n })(d3.event), 250);\n }\n }\n });\n }\n\n return d3.rebind(cc, event, 'on');\n }\n\n return {\n delayDblClick: delayDblClick\n };\n}();\n\nexport default D3;\n","var SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n var cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n var cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource() {\n // add needed xml namespace\n var exportSvg = d3.selectAll(\"svg\")\n .attr({\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n })\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.domainrange', [\n 'graphdb.framework.graphexplore.controllers.domainrange',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant('ONTO_RED', '#F04E23')\n .constant('ONTO_GREEN', '#0CB0A0')\n .constant('ONTO_BLUE', '#003663')\n .constant('NON_COLLAPSED_REFLEXIVE_LINK_LIMIT', 6)\n .directive('domainRangeGraph', domainRangeGraphDirective);\n\ndomainRangeGraphDirective.$inject = ['$rootScope', '$window', '$repositories', 'GraphDataRestService', '$location', 'LocalStorageAdapter', 'LSKeys', '$timeout', 'toastr', 'ONTO_RED', 'ONTO_GREEN', 'ONTO_BLUE', 'NON_COLLAPSED_REFLEXIVE_LINK_LIMIT'];\n\nfunction domainRangeGraphDirective($rootScope, $window, $repositories, GraphDataRestService, $location, LocalStorageAdapter, LSKeys, $timeout, toastr, ONTO_RED, ONTO_GREEN, ONTO_BLUE, NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n return {\n restrict: 'AE',\n template: '<div id=\"domain-range\"></div>',\n scope: {\n showPredicatesInfoPanel: '=',\n selectedPredicate: '=',\n collapseEdges: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope) {\n const timer = $timeout(function () {\n renderDomainRangeGraph(scope);\n }, 50);\n\n scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n\n function renderDomainRangeGraph(scope) {\n d3.selection.prototype.moveToFront = function () {\n return this.each(function () {\n d3.select(this.parentNode.appendChild(this));\n });\n };\n\n d3.selection.prototype.moveToBack = function () {\n return this.each(function () {\n const firstChild = this.parentNode.firstChild;\n if (firstChild) {\n this.parentNode.insertBefore(this, firstChild);\n }\n });\n };\n\n var width = 1200,\n height = 600;\n\n var mainClassSize = width / 18,\n otherClassSize = width / 110,\n datatypeSize = otherClassSize / 2,\n labelFontSize = width / 90,\n basicArrowStrokeWidth = width / 1000,\n collapsedArrowStrokeWidth = width / 600;\n\n\n var force = d3.layout.force()\n .size([width, height])\n .charge(-900);\n\n var drag = force.drag()\n .on(\"dragstart\", dragstart);\n\n var svg = d3.select(\"#domain-range\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n var defs = svg.append(\"defs\");\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 10,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"collapsed-arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 9,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 4,\n markerHeight: 4,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow-loop\",\n viewBox: \"0 -5 10 10\",\n refX: 7,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/domain-range-graph.css?v=1.11.0-TR1\");\n\n // inline css rules in a defs tag\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource();\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attr({\n href: imgSrc,\n download: \"domain-range-graph-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n // start of code for legend\n var legendBackgroundWidth = width / 7;\n var legendBackgroundHeight = legendBackgroundWidth * 1.2;\n\n var svgLegend = d3.select(\".legend-container\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + legendBackgroundWidth + \" \" + legendBackgroundHeight)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n var legendCellGroup = svgLegend;\n\n legendCellGroup.append(\"rect\")\n .attr({\n width: legendBackgroundWidth,\n height: legendBackgroundHeight\n })\n .style(\"fill\", \"rgba(235, 235, 235, 0.9)\");\n\n var sourceX = width / 75;\n var sourceY = width / 40;\n var targetX = sourceX + mainClassSize / 2.5;\n var targetY = sourceY;\n\n var legendTextX = targetX + width / 90;\n var legendLabelFontSize = labelFontSize / 1.1;\n\n var classNodeY = sourceY;\n var legendClassNode = legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-class-node\",\n cx: (sourceX + targetX) / 2,\n cy: classNodeY,\n r: mainClassSize / 4.5\n });\n\n var classNodeTextY = targetY + width / 370;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: classNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"main class node\");\n\n var objectNodeY = classNodeY + width / 30;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-object-node\",\n cx: (sourceX + targetX) / 2,\n cy: objectNodeY,\n r: otherClassSize / 1.25\n });\n\n var objectNodeTextY = classNodeTextY + width / 30;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: objectNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"class node\");\n\n var datatypeNodeY = objectNodeY + width / 45;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-datatype-node\",\n cx: (sourceX + targetX) / 2,\n cy: datatypeNodeY,\n r: datatypeSize\n });\n\n var datatypeNodeTextY = objectNodeTextY + width / 45;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: datatypeNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"datatype node\");\n\n var basicPropertyArrowY = datatypeNodeY + width / 45;\n var classNodeSel = d3.select('.legend-class-node');\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"property-arrow\",\n x1: sourceX,\n y1: basicPropertyArrowY,\n x2: targetX,\n y2: basicPropertyArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: basicPropertyArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"explicit property\");\n\n var implicitPropArrowY = basicPropertyArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"implicit-property-arrow\",\n x1: sourceX,\n y1: implicitPropArrowY,\n x2: targetX,\n y2: implicitPropArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: implicitPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"implicit property\");\n\n var collapsedPropArrowY = implicitPropArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"collapsed-property-arrow\",\n x1: sourceX,\n y1: collapsedPropArrowY,\n x2: targetX,\n y2: collapsedPropArrowY\n })\n .style(\"stroke-width\", collapsedArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: collapsedPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"collapsed property\");\n // end of code for legend\n\n // there doesn't seem to be a need for a separate group\n var g = svg; //svg.append(\"g\");\n\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n var collapsed = $location.search().collapsed;\n\n GraphDataRestService.getDomainRangeData(selectedRdfUri, collapsed)\n .success(function (response, status, headers) {\n scope.domainRangeGraphData = response;\n }).error(function (response) {\n toastr.error(\"Request for \" + classNodeLabel + \" failed!\");\n });\n\n function switchEdgeMode(collapsed) {\n $rootScope.$broadcast('switchEdgeMode', {\n uri: selectedRdfUri,\n name: classNodeLabel,\n collapsed: collapsed\n });\n }\n\n // intercept back button press and set action to local storage\n $(window).on('popstate', function () {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_WENT_BACK, true);\n });\n\n $window.onpopstate = function (event) {\n if (event.state) {\n $rootScope.$broadcast(\"changeCollapsedEdgesState\", event.state.collapsed);\n }\n };\n\n scope.$watch('collapseEdges', function () {\n if (!angular.isUndefined(scope.collapseEdges)) {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES, scope.collapseEdges);\n\n // if the back button has not been pressed, then switch to collapsed or non collapsed mode\n // otherwise skip, because back button will not function properly and will not pop the entire\n // history stack\n if (LocalStorageAdapter.get(LSKeys.DOMAIN_RANGE_WENT_BACK) !== \"true\") {\n switchEdgeMode(scope.collapseEdges);\n }\n\n // after back button status has been checked, remove the action from local storage in order\n // to be clean for next check\n LocalStorageAdapter.remove(LSKeys.DOMAIN_RANGE_WENT_BACK);\n }\n });\n\n scope.$watch('domainRangeGraphData', function () {\n if (scope.domainRangeGraphData) {\n var graph = angular.copy(scope.domainRangeGraphData);\n\n force\n .nodes(graph.nodes)\n .links(graph.links);\n\n var linkGroup = g.selectAll(\".link\")\n .data(graph.links)\n .enter()\n .append(\"g\");\n\n function styleArrowsInCollapsedMode(sel) {\n sel.style(\"stroke\", ONTO_BLUE);\n sel.style(\"stroke-width\", collapsedArrowStrokeWidth);\n sel.attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n }\n\n var link,\n loopLink,\n loopLinkEdgeCount = 0;\n\n\n linkGroup\n .each(function (d) {\n if (d.objectPropNodeClassUri !== selectedRdfUri) {\n link = linkGroup\n .append(\"line\")\n .attr({\n class: \"link\",\n // absolute url needed because angular inserts a <base> tag\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .each(function (d) {\n switch (d.propertyType) {\n case \"objectLeft\":\n d.targetRadius = mainClassSize;\n break;\n case \"objectRight\":\n d.targetRadius = otherClassSize;\n break;\n case \"datatype\":\n d.targetRadius = datatypeSize;\n break;\n default:\n d.targetRadius = 0;\n }\n var sel = d3.select(this);\n if (d.targetNodeEdgeCount > 1) {\n styleArrowsInCollapsedMode(sel);\n } else if (d.implicit) {\n sel.style(\"stroke-dasharray\", \"3, 3\");\n }\n });\n } else {\n if (angular.isUndefined(loopLink)) {\n var loopLinkSize = mainClassSize / 2;\n loopLink = d3.select(this)\n .append(\"path\")\n .attr({\n d: \"M 0 0 A \" + loopLinkSize + \" \" + loopLinkSize + \" 0 1 1 0 \" + loopLinkSize,\n class: \"loop-link\",\n fill: \"none\",\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow-loop)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth);\n }\n\n loopLinkEdgeCount += d.targetNodeEdgeCount;\n if (loopLinkEdgeCount > 1) {\n styleArrowsInCollapsedMode(d3.select(\".loop-link\"));\n }\n }\n });\n\n var previousPropertyNameSelection = {};\n\n function disableCollapsedPredicateLabelHightlighting() {\n if (!$.isEmptyObject(previousPropertyNameSelection)) {\n previousPropertyNameSelection.text.style(\"fill\", \"black\");\n previousPropertyNameSelection.background.style(\"fill\", \"#f0f0f0\");\n }\n }\n\n // when clicking anywhere else but the collapsed labels disable highlighting\n // of the currently selected one\n $(\"document\").ready(function () {\n $(\"#domain-range\").bind(\"click\", disableCollapsedPredicateLabelHightlighting);\n });\n\n function onCollapsedPropertyNameClick(d) {\n disableCollapsedPredicateLabelHightlighting();\n previousPropertyNameSelection.text = d3.select(this);\n\n previousPropertyNameSelection.background = d3.select(this.previousSibling);\n previousPropertyNameSelection.text.style(\"fill\", \"white\");\n\n previousPropertyNameSelection.background.style(\"fill\", ONTO_BLUE);\n $timeout(function () {\n scope.showPredicatesInfoPanel = true;\n scope.selectedPredicate = d;\n });\n d3.event.stopPropagation();\n }\n\n\n var propertyNames = linkGroup\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri === selectedRdfUri ? \"loop-link-property-name\" : \"property-name\";\n })\n .attr(\"dx\", function (d) {\n // offset text more towards the main class\n return mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n })\n .style(\"text-anchor\", function (d) {\n return d.propertyType === \"objectLeft\" ? \"end\" : \"start\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.targetNodeEdgeCount > 1 ? d.targetNodeEdgeCount + \" predicates\" : d.name;\n });\n\n\n propertyNames\n .each(function (d) {\n var sel = d3.select(this);\n var isCompoundEdge = /\\d\\spredicates/.test(sel.text());\n\n // handle collapsed predicates by making their font bold, make them highlight when clicked\n // and make them trigger the side panel to display the collapsed edges\n if (isCompoundEdge) {\n sel\n .style(\"font-weight\", \"bold\")\n .on(\"click\", onCollapsedPropertyNameClick);\n } else {\n // for regular predicate labels just attach a link to the \"Resources\" view\n // for more helpful information regarding them\n sel.on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.uri), \"_blank\");\n });\n }\n });\n var textPadding = width / 600;\n\n\n var linkRect = linkGroup\n .append(\"rect\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri ? \"link-background\" : \"loop-link-background\"\n })\n .attr(\"width\", function (d) {\n d.calculatedWidth = this.previousSibling.getBBox().width;\n return d.calculatedWidth + textPadding * 2;\n })\n .attr(\"height\", function (d) {\n d.calculatedHeight = this.previousSibling.getBBox().height;\n return d.calculatedHeight + textPadding;\n })\n .attr(\"transform\", function (d) {\n // offset rect by the same amount as text (besides the padding)\n var translateX = textPadding - mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n if (d.propertyType === \"objectLeft\") {\n translateX += d.calculatedWidth;\n }\n return \"translate(-\" + translateX + \",-\" + (textPadding + d.calculatedHeight / 2) + \")\";\n })\n .on(\"click\", function (d) {\n d3.event.stopPropagation();\n });\n\n\n var nodeGroup = g.selectAll(\".node\")\n .data(graph.nodes)\n .enter()\n .append(\"g\");\n\n var node = nodeGroup\n .filter(function (d) {\n return d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"circle\")\n .each(function (d) {\n var sel = d3.select(this);\n if (d.classPosition === \"main\") {\n sel.attr({\n class: \"class-node\",\n r: mainClassSize\n })\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#loop-link)\");\n } else if (d.objectPropClassName === null) {\n sel.attr({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attr({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(d, collapsed) {\n scope.$apply(function () {\n $rootScope.$broadcast('reloadDomainRangeGraphView', d, collapsed);\n });\n }\n\n d3.selectAll(\".object-prop-node\")\n .on(\"dblclick\", reloadDomainRangeGraphView);\n\n\n nodeGroup\n .filter(function (d) {\n return d.objectPropClassName && d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.classPosition + \"-class-label\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.objectPropClassName;\n })\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n g.select(\".class-node\")\n .each(function () {\n d3.select(this.parentNode)\n .append(\"text\")\n .attr(\"class\", \"rdf-class-label\")\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(classNodeLabel, mainClassSize)\n })\n .text(classNodeLabel)\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = g.select(\".class-node + text\"),\n classNode = d3.select(\".class-node\"),\n loopLinkBackgroundSel = d3.selectAll(\".loop-link-background\"),\n loopLinkPropertyName = d3.selectAll(\".loop-link-property-name\");\n\n propertyNames = d3.selectAll(\".property-name\");\n\n if (!angular.isUndefined(loopLink)) {\n var loopLinkBackgroundProps = [];\n\n loopLinkBackgroundSel.each(function (d, i) {\n var sel = d3.select(this);\n loopLinkBackgroundProps.push({\n idx: i,\n width: d.calculatedWidth,\n height: d.calculatedHeight\n });\n });\n }\n\n function tick(e) {\n var k = 8 * e.alpha;\n\n function pushEdgesToLeftAndRight(d) {\n if (d.propertyType === \"objectLeft\") {\n d.source.x -= 8 * k;\n d.source.y -= k / 9;\n } else {\n d.target.x += 8 * k;\n d.target.y -= k / 9;\n }\n }\n\n link\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x1\", function (d) {\n return d.source.x;\n })\n .attr(\"y1\", function (d) {\n return d.source.y;\n })\n .attr(\"x2\", function (d) {\n return d.targetX;\n })\n .attr(\"y2\", function (d) {\n return d.targetY;\n })\n .each(function (d) {\n pushEdgesToLeftAndRight(d);\n\n // shortens the line to compensate for the circle at the target\n var angle = Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x);\n d.targetX = d.target.x - Math.cos(angle) * d.targetRadius;\n d.targetY = d.target.y - Math.sin(angle) * d.targetRadius;\n });\n\n function positionLoopLink(d) {\n var loopTranslateX = d.x + mainClassSize * 0.96,\n loopTranslateY = d.y - mainClassSize / 5.7 - 5;\n loopLink.attr(\"transform\", \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopTranslateX + \",\" + loopTranslateY + \")\");\n }\n\n function positionLoopLinkLabels(d) {\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n var currentBackgroundHeight = 0;\n if (i > 0) {\n currentBackgroundHeight = parseFloat(2 * i * (foundLoopLinkBackgroundProps[0].height / 1.4));\n }\n\n var loopLinkLabelX = d.x,\n loopLinkLabelY = d.y - mainClassSize * 2.1 - currentBackgroundHeight;\n\n sel\n .attr({\n x: loopLinkLabelX,\n y: loopLinkLabelY\n })\n .moveToFront();\n }\n\n /**\n * Create a \"View more\" label to depict that the are more reflexive link labels\n * left that could be seen in the side panel when clicking this label.\n *\n * @param labelSel\n * d3 selection of the text label\n * @param backgroundSel\n * d3 selection of the rectangle element background\n * @param predicatesLeft\n * number of predicates left that are collapsed\n */\n function createViewMorePredicatesLabel(labelSel, backgroundSel, predicatesLeft) {\n labelSel\n .classed(\"view-more-preds-label\", true)\n .text(predicatesLeft + \" predicates more ...\");\n if (this.nextSibling !== null) {\n backgroundSel\n .classed(\"view-more-preds-rect\", true);\n }\n }\n\n loopLinkPropertyName.each(function (dd, i) {\n var sel = d3.select(this);\n\n var predicatesLeft = loopLinkPropertyName.size() - NON_COLLAPSED_REFLEXIVE_LINK_LIMIT;\n if (predicatesLeft < 0) {\n reposition(sel, i);\n } else {\n if (i == 0 && !scope.collapseEdges && predicatesLeft > 1) {\n createViewMorePredicatesLabel(sel, d3.select(this.nextSibling), predicatesLeft);\n reposition(sel, i);\n }\n\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(sel, i);\n } else {\n sel.remove();\n }\n }\n });\n // loopLinkPropertyName.each(function (dd, i) {\n // var sel = d3.select(this);\n // if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // reposition(sel, i);\n // } else if (i == NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // createViewMorePredicatesLabel(sel, d3.select(this.nextSibling));\n // reposition(sel, i);\n // } else {\n // sel.remove();\n // }\n // });\n }\n\n function positionLoopLinkBackgrounds(d) {\n var loopLinkBackgroundY = d.x + mainClassSize * 2,\n loopLinkBackgroundX = d.y - mainClassSize / 1.9;\n\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n if (i > 0) {\n loopLinkBackgroundY += parseFloat(i * (foundLoopLinkBackgroundProps[0].height / (i / 1.4)));\n }\n\n sel\n .attr({\n transform: \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopLinkBackgroundY + \",\" + loopLinkBackgroundX + \")\",\n width: foundLoopLinkBackgroundProps[0].height,\n height: foundLoopLinkBackgroundProps[0].width\n });\n }\n\n /**\n * Adjust new width of \"View more\" label background and add all reflexive link metadata the this\n * label in order to render them in the side panel.\n *\n * @param allLoopLinkEdges\n * all reflexive links to the current class\n */\n function adjustViewMorePredicatesLabel(allLoopLinkEdges) {\n var viewMoreTextWidth;\n d3.select(\".view-more-preds-label\")\n // make label bold to resemble a collapsed label\n .style(\"font-weight\", \"bold\")\n .each(function (d) {\n // attach all reflexive links to the \"view more\" collapsed predicate\n // because in non collapsed mode the backend does not provide them\n d.target.allEdges = allLoopLinkEdges;\n\n // calculate text width in pixels in order to adjust background width accordingly\n viewMoreTextWidth = this.getComputedTextLength();\n })\n .on(\"click\", onCollapsedPropertyNameClick);\n\n d3.select(\".view-more-preds-rect\")\n // we modify height property instead of width because they are reversed\n // when we repositioned loop link labels\n .attr(\"height\", viewMoreTextWidth + 2 * textPadding);\n }\n\n var allLoopLinkEdges = [];\n loopLinkBackgroundSel.each(function (dd, i) {\n allLoopLinkEdges.push(dd);\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(d3.select(this), i);\n } else {\n d3.select(this).remove();\n }\n });\n\n adjustViewMorePredicatesLabel(allLoopLinkEdges);\n }\n\n\n function centerClassNode(d) {\n if (!(window.ActiveXObject) && \"ActiveXObject\" in window) {\n Math.log10 = function (x) {\n return Math.log(x) / Math.LN10;\n };\n }\n var absDiff = classNode.attr(\"cx\") - width / 2,\n logOffset = Math.log10(Math.abs(absDiff)) * 0.5;\n d.x += absDiff > 0 ? -logOffset : logOffset;\n return d.x;\n }\n\n node\n .each(function (d) {\n if (d.classPosition === \"main\" && !angular.isUndefined(loopLink)) {\n positionLoopLink(d);\n positionLoopLinkLabels(d);\n positionLoopLinkBackgrounds(d);\n }\n\n if (d.objectPropClassUri !== selectedRdfUri) {\n d3.select(this)\n .attr(\"cx\", function (d) {\n // pushes the main class circle to the centre\n if (d.classPosition === \"main\") {\n return centerClassNode(d);\n }\n return d.x;\n })\n .attr(\"cy\", function (d) {\n return d.y;\n });\n }\n });\n\n\n rdfClassName\n .attr(\"x\", function (d) {\n return d.x;\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n\n\n linkRect\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n propertyNames\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n objectPropClassName\n .attr(\"x\", function (d) {\n if (d.classPosition === \"right\") {\n return d.x + otherClassSize * 1.2;\n } else {\n return d.x - otherClassSize * 1.2;\n }\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n }\n\n\n force\n .on(\"tick\", tick)\n .linkDistance(width / 3.5)\n .start();\n\n }\n });\n\n function dragstart(d) {\n d3.select(this)\n .classed(\"selected\", d.selected = true);\n }\n }\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[36,104],{31:function(e,n){function t(e){return{showToastMessageWithDelay:function(n){return new Promise(t=>{e.success(n),setTimeout(t,200)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",t),t.$inject=["toastr"]},57:function(e,n,t){"use strict";t.r(n);t(31),t(4);function r(e,n,t,r,o,i,a,u,s,c,d,g,f,l,p,w){var y;e.page=1,e.totalPages=5,e.helpHidden=1===p.get(w.HIDE_GRAPH_CONFIG_HELP),e.toggleHelp=function(n){void 0===n&&(n=p.get(w.HIDE_GRAPH_CONFIG_HELP)),1!==n?(p.set(w.HIDE_GRAPH_CONFIG_HELP,1),e.helpHidden=!0):(p.set(w.HIDE_GRAPH_CONFIG_HELP,0),e.helpHidden=!1)},e.fixedVisualCallback=function(n,t){e.newConfig.startIRI=n,e.newConfig.startIRILabel=t,y=!0},e.isDefaultGraph=function(e){return"Minimal"===e.name||"Advanced"===e.name},e.isUserGraph=function(n){return!e.isDefaultGraph(n)},e.getSampleName=function(e,n){const t=e[n+"Description"];return t||(e.id?"Copy of "+e.name:e.name)};const C=function(){c.getGraphConfigSamples().success((function(n){e.samples=_.filter(n,(function(n){return!n.id||e.newConfig.id!==n.id||(e.revertConfig=n,!1)}))})).error((function(e){r.error(getError(e),"Could not get graph configs. You may not see sample values")}))},m=g.configName;function h(e){r.warning(e)}function b(n){let t;return"query"===n.startMode&&1===e.page?t=n.startGraphQuery:2===e.page?t=n.expandQuery:3===e.page?t=n.resourceQuery:4===e.page?t=n.predicateLabelQuery:5===e.page&&(t=n.resourcePropertiesQuery),angular.isDefined(t)?t:""}function Q(){function i(){e.getAutocompletePromise=d.checkAutocompleteStatus()}C(),e.createGraphConfig=function(){c.createGraphConfig(e.newConfig).success((async function(){await f.showToastMessageWithDelay("Saved new graph config"),t.url("graphs-visualizations")})).error((function(e){r.error(getError(e),"Error! Could not create graph config")}))},e.updateGraphConfig=function(){c.updateGraphConfig(e.newConfig).success((async function(){await f.showToastMessageWithDelay("Graph config saved"),t.url("graphs-visualizations")})).error((function(e){r.error(getError(e),"Error! Could not save graph config")}))},e.$on("autocompleteStatus",(function(){i()})),i(),e.getNamespacesPromise=l.getNamespaces(e.getActiveRepository());const a=function(e,n,t,r,o,i){n?c.validateQuery(n,t,r,o,i).success((function(){e()})).error((function(e){h(getError(e))})):e()};function u(){s()&&e.$broadcast("addStartFixedNodeAutomatically",{startIRI:e.newConfig.startIRI})}function s(){return 1===e.page&&"node"===e.newConfig.startMode}e.validateCurrentPage=function(n){e.updateModel(),1===e.page?"node"!==e.newConfig.startMode||e.newConfig.startIRI?"query"!==e.newConfig.startMode||e.newConfig.startGraphQuery?"query"===e.newConfig.startMode?a(n,e.newConfig.startGraphQuery,"graph"):n():h("Please provide start graph query."):h("Please select start node."):2===e.page?a(n,e.newConfig.expandQuery,"construct",["node"]):3===e.page?a(n,e.newConfig.resourceQuery,"tuple",["node"],[],["type","label","comment","rank"]):4===e.page?a(n,e.newConfig.predicateLabelQuery,"tuple",["edge"],["label"]):5===e.page&&a(n,e.newConfig.resourcePropertiesQuery,"tuple",["node"],["property","value"])},e.goToPage=function(n){e.page!==n&&e.validateCurrentPage((function(){e.showEditor(),e.page=n,e.notoolbar=1!==e.page}))},e.goToPreviousPage=function(){e.page>1&&e.goToPage(e.page-1),s()&&(y=!1)},e.goToNextPage=function(){u(),y&&e.goToPage(e.page+1)},e.saveGraphConfig=function(){u(),s()&&!y||(e.newConfig.startQueryIncludeInferred=e.currentQuery.inference,e.newConfig.startQuerySameAs=e.currentQuery.sameAs,e.validateCurrentPage((function(){e.newConfig.name?e.isUpdate?e.updateGraphConfig(e.newConfig):e.createGraphConfig(e.newConfig):h("Please provide config name.")})))},e.updateModel=function(){const n=window.editor.getValue().trim();"query"===e.newConfig.startMode&&1===e.page?e.newConfig.startGraphQuery=n:2===e.page?e.newConfig.expandQuery=n:3===e.page?e.newConfig.resourceQuery=n:4===e.page?e.newConfig.predicateLabelQuery=n:5===e.page&&(e.newConfig.resourcePropertiesQuery=n)},e.setQuery=function(e){window.editor.setValue(e||" ")},e.updateDirty=function(){if(e.revertConfig){const n=b(e.revertConfig),t=window.editor.getValue().trim();e.queryEditorIsDirty=n!==t}},e.updateEditor=function(){n((function(){e.currentQuery.query=b(e.newConfig),o.isActiveRepoOntopType()&&(e.nocount=!0),e.currentQuery.inference=e.newConfig.startQueryIncludeInferred,e.currentQuery.sameAs=e.newConfig.startQuerySameAs,D(e.currentQuery.id),R(e.currentQuery.id)}),100)},e.showEditor=function(){window.editor&&window.editor.xhr&&window.editor.xhr.abort(),e.viewMode="yasr"},e.showPreview=function(){e.currentQuery.outputType="table",e.runQuery()},e.revertEditor=function(){e.setQuery(b(e.revertConfig))},e.$watch("newConfig.startMode",(function(t){"query"===t&&n((function(){e.updateEditor()}),0)})),e.$watch("page",(function(t){("query"===e.newConfig.startMode||t>1)&&n((function(){e.showEditor(),e.updateEditor()}),0)}))}e.newConfig={startQueryIncludeInferred:!0,startQuerySameAs:!0},e.newConfig.startMode="search",e.isUpdate=!1,e.shared=!1,e.encodeQuery=function(e){return encodeURIComponent(e)},m?(e.isUpdate=!0,c.getConfig(m).success((function(n){e.newConfig=n,Q()})).error((function(e){r.error(getError(e),"Could not load config for name "+m)}))):(e.isUpdate=!1,Q());const T={id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:e.newConfig.startQueryIncludeInferred,sameAs:e.newConfig.startQuerySameAs};e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:100,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.tabsData=e.tabs=[T],e.saveTab=function(n){const t=function(n){for(let t=0;t<e.tabsData.length;t++){if(e.tabsData[t].id===n)return t}}(n);if(void 0===t)return{};const r=e.tabsData[t];return e.saveQueryToLocal(r),r},e.loadTab=D,e.addNewTab=function(e,n,t){},e.runQuery=q,e.getNamespaces=x,e.changePagination=function(){q(!0,e.explainRequested)},e.toggleSampleQueries=function(){},e.addKnownPrefixes=I,e.getExistingTabId=P,e.querySelected=function(n){const t=P(n);e.toggleSampleQueries(),angular.isDefined(t)?R(t):e.addNewTab(null,n.name,n.body)},e.saveQueryToLocal=v,e.setLoader=M,e.getLoaderMessage=function(){const n=(Date.now()-e.queryStartTime)/1e3,t=e.getHumanReadableSeconds(n);let r="";r=e.progressMessage?e.progressMessage+"... "+t:"Running operation..."+t;e.extraMessage&&n>10&&(r+="\n"+e.extraMessage);return r},e.fixSizesOnHorizontalViewModeSwitch=S,e.changeViewMode=function(t){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,S(),$(".dataTables_filter").remove(),$(".resultsTable").remove(),n((function(){D(t),R(t)}),100)},e.showHideEditor=E,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!0;e.getActiveRepository();function v(e){}function M(n,t,r){const o=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=n,n?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=t,e.extraMessage=r,o.addClass("hide")):(e.progressMessage="",e.extraMessage="",o.removeClass("hide")),null===e.$$phase&&e.$apply()}function S(t){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}const o=t;if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let t;t=n(o?function(){e.fixSizesOnHorizontalViewModeSwitch(o)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){n.cancel(t)}))}window.yasr&&window.yasr.container&&n((function(){window.yasr.container.resize()}),100)}function E(){S(!0)}function R(e){n((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function q(n,t){e.executedQueryTab=e.currentQuery,t&&"SELECT"!==window.editor.getQueryType()&&"CONSTRUCT"!==window.editor.getQueryType()?r.warning("Explain only works with SELECT or CONSTRUCT queries."):"update"!==window.editor.getQueryMode()?(e.explainRequested=t,e.queryIsRunning||(n?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.viewMode="editor",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch(),M(!0,"Evaluating query"),window.editor.query())):r.warning("Cannot execute updates from this editor.")}function x(){M(!0,"Refreshing namespaces","Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first."),l.getRepositoryNamespaces().success((function(n){const t={};n.results.bindings.forEach((function(e){t[e.prefix.value]=e.namespace.value})),e.namespaces=t})).error((function(n){e.repositoryError=getError(n)})).finally((function(){M(!1)}))}function I(){u.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){let n=getError(e);return r.error(n,"Error! Could not add known prefixes"),!0}))}function P(n){let t=void 0;return angular.forEach(e.tabsData,(function(e){if(e.name===n.name&&e.query===n.body)return t=e.id,e})),t}e.orientationViewMode||E(),e.getActiveRepository()&&x(),e.$on("$destroy",(function(){window.editor=null,window.yasr=null})),$("textarea").on("paste",(function(){n((function(){I()}),0)})),e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(){e.currentQuery}));function D(t){e.tabsData=[e.currentQuery];let r=e.currentQuery;null==e.currentQuery.query||""===e.currentQuery.query?window.editor.setValue(" "):window.editor.setValue(e.currentQuery.query),n((function(){e.currentTabConfig={},e.currentTabConfig.queryType=r.queryType,e.currentTabConfig.resultsCount=r.resultsCount,e.currentTabConfig.offset=r.offset,e.currentTabConfig.allResultsCount=r.allResultsCount,e.currentTabConfig.page=r.page,e.currentTabConfig.pageSize=r.pageSize,e.currentTabConfig.timeFinished=r.timeFinished,e.currentTabConfig.timeTook=r.timeTook,e.currentTabConfig.sizeDelta=r.sizeDelta,e.$apply()}),0),$("#yasr").css("padding","0")}function H(e){return $(e).attr("data-id")}e.$on("tabAction",(function(n,t){t.relatedTarget&&e.saveTab(H(t.relatedTarget)),e.loadTab(H(t.target))})),e.$on("deleteAllexeptSelected",(function(n,t){e.tabsData=t,e.tabs=t})),e.currentQuery=angular.copy(T),e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.getResultsDescription=function(){},e.getUpdateDescription=function(){},e.getStaleWarningMessage=function(){}}angular.module("graphdb.framework.graphexplore.controllers.graphviz.config",["graphdb.framework.utils.notifications","graphdb.framework.utils.localstorageadapter"]).controller("GraphConfigCtrl",r),r.$inject=["$scope","$timeout","$location","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","GraphConfigRestService","AutocompleteRestService","$routeParams","Notifications","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys"]}}]);
2
+ //# sourceMappingURL=36.53cea4c4866328aef1aa.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/utils/notifications.js","webpack:///./src/js/angular/graphexplore/controllers/graphs-config.controller.js"],"names":["Notifications","toastr","showToastMessageWithDelay","message","Promise","r","success","setTimeout","angular","module","factory","$inject","GraphConfigCtrl","$scope","$timeout","$location","$repositories","$modal","ModalService","SparqlRestService","$filter","GraphConfigRestService","AutocompleteRestService","$routeParams","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys","selectedFixedNodeChanged","page","totalPages","helpHidden","get","HIDE_GRAPH_CONFIG_HELP","toggleHelp","value","undefined","set","fixedVisualCallback","uri","label","newConfig","startIRI","startIRILabel","isDefaultGraph","sample","name","isUserGraph","getSampleName","property","extra","id","getGraphConfigSamples","data","samples","_","filter","s","revertConfig","error","getError","configName","showInvalidMsg","warning","getQueryForCurrentPage","config","query","startMode","startGraphQuery","expandQuery","resourceQuery","predicateLabelQuery","resourcePropertiesQuery","isDefined","initForConfig","checkAutocompleteStatus","getAutocompletePromise","createGraphConfig","async","url","updateGraphConfig","$on","getNamespacesPromise","getNamespaces","getActiveRepository","validateQueryWithCallback","successCallback","queryType","params","all","oneOf","validateQuery","broadcastAddStartFixedNodeEvent","checkPageAndMode","$broadcast","validateCurrentPage","updateModel","goToPage","nextPage","showEditor","notoolbar","goToPreviousPage","goToNextPage","saveGraphConfig","startQueryIncludeInferred","currentQuery","inference","startQuerySameAs","sameAs","isUpdate","window","editor","getValue","trim","setQuery","setValue","updateDirty","q1","q2","queryEditorIsDirty","updateEditor","isActiveRepoOntopType","nocount","loadTab","selectTab","xhr","abort","viewMode","showPreview","outputType","runQuery","revertEditor","$watch","shared","encodeQuery","encodeURIComponent","getConfig","defaultTabConfig","resetCurrentTabConfig","currentTabConfig","pageSize","allResultsCount","resultsCount","queryExists","tabsData","tabs","saveTab","idx","i","length","findTabIndexByID","tab","saveQueryToLocal","addNewTab","callback","tabName","savedQuery","changePagination","explainRequested","toggleSampleQueries","addKnownPrefixes","getExistingTabId","querySelected","tabId","body","setLoader","getLoaderMessage","timeSeconds","Date","now","queryStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","fixSizesOnHorizontalViewModeSwitch","changeViewMode","tabID","orientationViewMode","$","remove","showHideEditor","focusQueryEditor","element","document","find","is","focus","currentQueryTab","isRunning","yasrInnerContainer","getElementById","queryIsRunning","countTimeouted","addClass","removeClass","$$phase","$apply","verticalViewParam","visibleWindowHeight","innerHeight","documentElement","clientHeight","verticalView","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","timer","cancel","yasr","container","resize","changePage","explain","executedQueryTab","getQueryType","getQueryMode","getRepositoryNamespaces","usedPrefixes","results","bindings","forEach","e","prefix","namespace","namespaces","repositoryError","finally","JSON","stringify","msg","existingTabId","item","on","$watchCollection","offset","timeFinished","timeTook","sizeDelta","css","getQueryID","attr","tabEvent","relatedTarget","target","copy","showSampleQueries","sampleQueries","getResultsDescription","getUpdateDescription","getStaleWarningMessage","controller"],"mappings":"+EAMA,SAASA,EAAcC,GACnB,MAAO,CACHC,0BASJ,SAAmCC,GAC/B,OAAO,IAAIC,QAASC,IAChBJ,EAAOK,QAAQH,GACfI,WAAWF,EAAG,SApB1BG,QACKC,OAAO,wCAAyC,IAChDC,QAAQ,gBAAiBV,GAE9BA,EAAcW,QAAU,CAAC,W,gCCJzB,kBAYA,SAASC,EAAgBC,EAAQC,EAAUC,EAAWd,EAAQe,EAAeC,EAAQC,EAAcC,EAAmBC,EAASC,EAAwBC,EAAyBC,EAAcvB,EAAewB,EAA8BC,EAAqBC,GAoB5P,IAAIC,EAlBJd,EAAOe,KAAO,EACdf,EAAOgB,WAAa,EAEpBhB,EAAOiB,WAAwE,IAA3DL,EAAoBM,IAAIL,EAAOM,wBAEnDnB,EAAOoB,WAAa,SAAUC,QACZC,IAAVD,IACAA,EAAQT,EAAoBM,IAAIL,EAAOM,yBAE7B,IAAVE,GACAT,EAAoBW,IAAIV,EAAOM,uBAAwB,GACvDnB,EAAOiB,YAAa,IAEpBL,EAAoBW,IAAIV,EAAOM,uBAAwB,GACvDnB,EAAOiB,YAAa,IAK5BjB,EAAOwB,oBAAsB,SAAUC,EAAKC,GACxC1B,EAAO2B,UAAUC,SAAWH,EAC5BzB,EAAO2B,UAAUE,cAAgBH,EACjCZ,GAA2B,GAG/Bd,EAAO8B,eAAiB,SAAUC,GAC9B,MAAwB,YAAhBA,EAAOC,MAAsC,aAAhBD,EAAOC,MAGhDhC,EAAOiC,YAAc,SAAUF,GAC3B,OAAQ/B,EAAO8B,eAAeC,IAGlC/B,EAAOkC,cAAgB,SAAUH,EAAQI,GACrC,MAAMC,EAAQL,EAAOI,EAAW,eAChC,OAAIC,IAKOL,EAAOM,GAAK,WAAaN,EAAOC,KAAOD,EAAOC,OAI7D,MAAMM,EAAwB,WAC1B9B,EAAuB8B,wBAClB7C,SAAQ,SAAU8C,GACfvC,EAAOwC,QAAUC,EAAEC,OAAOH,GAAM,SAAUI,GAEtC,OAAKA,EAAEN,IAAMrC,EAAO2B,UAAUU,KAAOM,EAAEN,KAGnCrC,EAAO4C,aAAeD,GACf,SAGhBE,OAAM,SAAUN,GACfnD,EAAOyD,MAAMC,SAASP,GAAO,kEAInCQ,EAAarC,EAAaqC,WAUhC,SAASC,EAAe1D,GACpBF,EAAO6D,QAAQ3D,GAkBnB,SAAS4D,EAAuBC,GAC5B,IAAIC,EAcJ,MAZyB,UAArBD,EAAOE,WAAyC,IAAhBrD,EAAOe,KACvCqC,EAAQD,EAAOG,gBACQ,IAAhBtD,EAAOe,KACdqC,EAAQD,EAAOI,YACQ,IAAhBvD,EAAOe,KACdqC,EAAQD,EAAOK,cACQ,IAAhBxD,EAAOe,KACdqC,EAAQD,EAAOM,oBACQ,IAAhBzD,EAAOe,OACdqC,EAAQD,EAAOO,yBAGZ/D,QAAQgE,UAAUP,GAASA,EAAQ,GAG9C,SAASQ,IAsBL,SAASC,IACL7D,EAAO8D,uBAAyBrD,EAAwBoD,0BAtB5DvB,IACAtC,EAAO+D,kBAAoB,WACvBvD,EAAuBuD,kBAAkB/D,EAAO2B,WAC3ClC,SAAQuE,uBACC7E,EAAcE,0BAA0B,0BAC9Ca,EAAU+D,IAAI,4BACfpB,OAAM,SAAUN,GACnBnD,EAAOyD,MAAMC,SAASP,GAAO,4CAIrCvC,EAAOkE,kBAAoB,WACvB1D,EAAuB0D,kBAAkBlE,EAAO2B,WAC3ClC,SAAQuE,uBACC7E,EAAcE,0BAA0B,sBAC9Ca,EAAU+D,IAAI,4BACfpB,OAAM,SAAUN,GACnBnD,EAAOyD,MAAMC,SAASP,GAAO,0CAQrCvC,EAAOmE,IAAI,sBAAsB,WAC7BN,OAGJA,IACA7D,EAAOoE,qBAAuBzD,EAA6B0D,cAAcrE,EAAOsE,uBAEhF,MAAMC,EAA4B,SAAUC,EAAiBpB,EAAOqB,EAAWC,EAAQC,EAAKC,GACnFxB,EAGD5C,EAAuBqE,cAAczB,EAAOqB,EAAWC,EAAQC,EAAKC,GAC/DnF,SAAQ,WACL+E,OACD3B,OAAM,SAAUN,GACnBS,EAAeF,SAASP,OAN5BiC,KAiER,SAASM,IACDC,KACA/E,EAAOgF,WAAW,iCAAkC,CAACpD,SAAU5B,EAAO2B,UAAUC,WAIxF,SAASmD,IACL,OAAuB,IAAhB/E,EAAOe,MAA6C,SAA/Bf,EAAO2B,UAAU0B,UA7DjDrD,EAAOiF,oBAAsB,SAAUT,GACnCxE,EAAOkF,cAEa,IAAhBlF,EAAOe,KAC4B,SAA/Bf,EAAO2B,UAAU0B,WAAyBrD,EAAO2B,UAAUC,SAErB,UAA/B5B,EAAO2B,UAAU0B,WAA0BrD,EAAO2B,UAAU2B,gBAE7B,UAA/BtD,EAAO2B,UAAU0B,UACxBkB,EAA0BC,EAAiBxE,EAAO2B,UAAU2B,gBAAiB,SAE7EkB,IAJAxB,EAAe,qCAFfA,EAAe,6BAQI,IAAhBhD,EAAOe,KACdwD,EAA0BC,EAAiBxE,EAAO2B,UAAU4B,YAAa,YAAa,CAAC,SAChE,IAAhBvD,EAAOe,KACdwD,EAA0BC,EAAiBxE,EAAO2B,UAAU6B,cAAe,QAAS,CAAC,QAAS,GAAI,CAAC,OAAQ,QAAS,UAAW,SACxG,IAAhBxD,EAAOe,KACdwD,EAA0BC,EAAiBxE,EAAO2B,UAAU8B,oBAAqB,QAAS,CAAC,QAAS,CAAC,UAC9E,IAAhBzD,EAAOe,MACdwD,EAA0BC,EAAiBxE,EAAO2B,UAAU+B,wBAAyB,QAAS,CAAC,QAAS,CAAC,WAAY,WAI7H1D,EAAOmF,SAAW,SAAUC,GACpBpF,EAAOe,OAASqE,GAKpBpF,EAAOiF,qBAAoB,WACvBjF,EAAOqF,aACPrF,EAAOe,KAAOqE,EACdpF,EAAOsF,UAA4B,IAAhBtF,EAAOe,SAIlCf,EAAOuF,iBAAmB,WAClBvF,EAAOe,KAAO,GACdf,EAAOmF,SAASnF,EAAOe,KAAO,GAG9BgE,MACAjE,GAA2B,IAInCd,EAAOwF,aAAe,WAClBV,IACIhE,GACAd,EAAOmF,SAASnF,EAAOe,KAAO,IActCf,EAAOyF,gBAAkB,WACtBX,IAEKC,MAAuBjE,IAI3Bd,EAAO2B,UAAU+D,0BAA4B1F,EAAO2F,aAAaC,UACjE5F,EAAO2B,UAAUkE,iBAAmB7F,EAAO2F,aAAaG,OAExD9F,EAAOiF,qBAAoB,WAClBjF,EAAO2B,UAAUK,KAItBhC,EAAO+F,SAAW/F,EAAOkE,kBAAkBlE,EAAO2B,WAAa3B,EAAO+D,kBAAkB/D,EAAO2B,WAH3FqB,EAAe,oCAO3BhD,EAAOkF,YAAc,WACjB,MAAM9B,EAAQ4C,OAAOC,OAAOC,WAAWC,OACJ,UAA/BnG,EAAO2B,UAAU0B,WAAyC,IAAhBrD,EAAOe,KACjDf,EAAO2B,UAAU2B,gBAAkBF,EACZ,IAAhBpD,EAAOe,KACdf,EAAO2B,UAAU4B,YAAcH,EACR,IAAhBpD,EAAOe,KACdf,EAAO2B,UAAU6B,cAAgBJ,EACV,IAAhBpD,EAAOe,KACdf,EAAO2B,UAAU8B,oBAAsBL,EAChB,IAAhBpD,EAAOe,OACdf,EAAO2B,UAAU+B,wBAA0BN,IAKnDpD,EAAOoG,SAAW,SAAUhD,GAExB4C,OAAOC,OAAOI,SAASjD,GAAgB,MAG3CpD,EAAOsG,YAAc,WACjB,GAAItG,EAAO4C,aAAc,CACrB,MAAM2D,EAAKrD,EAAuBlD,EAAO4C,cACnC4D,EAAKR,OAAOC,OAAOC,WAAWC,OACpCnG,EAAOyG,mBAAqBF,IAAOC,IAM3CxG,EAAO0G,aAAe,WAClBzG,GAAS,WACLD,EAAO2F,aAAavC,MAAQF,EAAuBlD,EAAO2B,WAEtDxB,EAAcwG,0BACd3G,EAAO4G,SAAU,GAErB5G,EAAO2F,aAAaC,UAAY5F,EAAO2B,UAAU+D,0BACjD1F,EAAO2F,aAAaG,OAAS9F,EAAO2B,UAAUkE,iBAC9CgB,EAAQ7G,EAAO2F,aAAatD,IAC5ByE,EAAU9G,EAAO2F,aAAatD,MAC/B,MAIPrC,EAAOqF,WAAa,WACZW,OAAOC,QAAUD,OAAOC,OAAOc,KAC/Bf,OAAOC,OAAOc,IAAIC,QAEtBhH,EAAOiH,SAAW,QAGtBjH,EAAOkH,YAAc,WAGjBlH,EAAO2F,aAAawB,WAAa,QACjCnH,EAAOoH,YAGXpH,EAAOqH,aAAe,WAClBrH,EAAOoG,SAASlD,EAAuBlD,EAAO4C,gBAIlD5C,EAAOsH,OAAO,uBAAuB,SAAUjG,GAC7B,UAAVA,GACApB,GAAS,WACLD,EAAO0G,iBACR,MAKX1G,EAAOsH,OAAO,QAAQ,SAAUjG,IACO,UAA/BrB,EAAO2B,UAAU0B,WAAyBhC,EAAQ,IAClDpB,GAAS,WACLD,EAAOqF,aACPrF,EAAO0G,iBACR,MA9Pf1G,EAAO2B,UAAY,CAAC+D,2BAA2B,EAAMG,kBAAkB,GACvE7F,EAAO2B,UAAU0B,UAAY,SAC7BrD,EAAO+F,UAAW,EAClB/F,EAAOuH,QAAS,EAEhBvH,EAAOwH,YAAc,SAAUpE,GAC3B,OAAOqE,mBAAmBrE,IAO1BL,GACA/C,EAAO+F,UAAW,EAClBvF,EAAuBkH,UAAU3E,GAC5BtD,SAAQ,SAAU8C,GACfvC,EAAO2B,UAAYY,EACnBqB,OAEHf,OAAM,SAAUN,GACbnD,EAAOyD,MAAMC,SAASP,GAAO,kCAAoCQ,QAGzE/C,EAAO+F,UAAW,EAClBnC,KA6OJ,MAAM+D,EAAmB,CACrBtF,GAAI,IACJL,KAAM,GACNoB,MAAO,kDAGPwC,UAAW5F,EAAO2B,UAAU+D,0BAC5BI,OAAQ9F,EAAO2B,UAAUkE,kBAG7B7F,EAAO4H,sBAAwB,WAC3B5H,EAAO6H,iBAAmB,CACtBC,SAAU,IACV/G,KAAM,EACNgH,gBAAiB,EACjBC,aAAc,IAItBhI,EAAOiI,aAAc,EAErBjI,EAAO4H,wBAEP5H,EAAOkI,SAAWlI,EAAOmI,KAAO,CAACR,GAGjC3H,EAAOoI,QAyRP,SAAiB/F,GACb,MAAMgG,EAdV,SAA0BhG,GACtB,IAAK,IAAIiG,EAAI,EAAGA,EAAItI,EAAOkI,SAASK,OAAQD,IAAK,CAE7C,GADYtI,EAAOkI,SAASI,GACpBjG,KAAOA,EACX,OAAOiG,GAUHE,CAAiBnG,GAE7B,QAAYf,IAAR+G,EACA,MAAO,GAEX,MAAMI,EAAMzI,EAAOkI,SAASG,GAE5B,OADArI,EAAO0I,iBAAiBD,GACjBA,GAhSXzI,EAAO6G,QAAUA,EACjB7G,EAAO2I,UAoSP,SAAmBC,EAAUC,EAASC,KAjStC9I,EAAOoH,SAAWA,EAClBpH,EAAOqE,cAAgBA,EACvBrE,EAAO+I,iBAuMP,WACI3B,GAAS,EAAMpH,EAAOgJ,mBAvM1BhJ,EAAOiJ,oBAmNP,aAlNAjJ,EAAOkJ,iBAAmBA,EAC1BlJ,EAAOmJ,iBAAmBA,EAC1BnJ,EAAOoJ,cAwOP,SAAuBhG,GACnB,MAAMiG,EAAQF,EAAiB/F,GAC/BpD,EAAOiJ,sBACFtJ,QAAQgE,UAAU0F,GAGnBvC,EAAUuC,GAFVrJ,EAAO2I,UAAU,KAAMvF,EAAMpB,KAAMoB,EAAMkG,OA3OjDtJ,EAAO0I,iBAAmBA,EAE1B1I,EAAOuJ,UAAYA,EACnBvJ,EAAOwJ,iBAmCP,WACI,MAAMC,GAAeC,KAAKC,MAAQ3J,EAAO4J,gBAAkB,IACrDC,EAAY7J,EAAO8J,wBAAwBL,GACjD,IAAInK,EAAU,GAGVA,EADAU,EAAO+J,gBACG/J,EAAO+J,gBAAkB,OAASF,EAElC,uBAAyBA,EAEnC7J,EAAOgK,cAAgBP,EAAc,KACrCnK,GAAW,KAAOU,EAAOgK,cAG7B,OAAO1K,GA9CXU,EAAOiK,mCAAqCA,EAC5CjK,EAAOkK,eAsGP,SAAwBC,GACpBnK,EAAOiH,SAAW,OAClBjH,EAAOoK,qBAAuBpK,EAAOoK,oBACrCH,IACAI,EAAE,sBAAsBC,SACxBD,EAAE,iBAAiBC,SACnBrK,GAAS,WACL4G,EAAQsD,GACRrD,EAAUqD,KACX,MA9GPnK,EAAOuK,eAAiBA,EACxBvK,EAAOwK,iBAoHP,WACS7K,QAAQ8K,QAAQC,UAAUC,KAAK,mBAAmBC,GAAG,WACtDjL,QAAQ8K,QAAQC,UAAUC,KAAK,oCAAoCE,SArH3E7K,EAAOoK,qBAAsB,EAGHpK,EAAOsE,sBAEjC,SAASoE,EAAiBoC,IAG1B,SAASvB,EAAUwB,EAAWhB,EAAiBC,GAC3C,MAAMgB,EAAqBrL,QAAQ8K,QAAQC,SAASO,eAAe,eACnEjL,EAAOkL,eAAiBH,EACpBA,GACA/K,EAAO4J,eAAiBF,KAAKC,MAC7B3J,EAAOmL,gBAAiB,EACxBnL,EAAO+J,gBAAkBA,EACzB/J,EAAOgK,aAAeA,EACtBgB,EAAmBI,SAAS,UAE5BpL,EAAO+J,gBAAkB,GACzB/J,EAAOgK,aAAe,GACtBgB,EAAmBK,YAAY,SAGZ,OAAnBrL,EAAOsL,SACPtL,EAAOuL,SAuBf,SAAStB,EAAmCuB,GACxC,SAASC,IACL,OAAOzF,OAAO0F,aAAehB,SAASiB,gBAAgBC,cAAgBlB,SAASpB,KAAKsC,cAAgB,EAGxG,MACMC,EAAeL,EACrB,GAAKxL,EAAOoK,oBAuBL,CACH,GAAwB,SAApBpK,EAAOiH,SAAqB,CAC5B,IAAI6E,EAAYL,IAAyBf,SAASqB,cA3BxB,oBA2BiEC,wBAA2B,IACtHF,GAAa,GACbpB,SAASqB,cA7BiB,oBA6BwBE,MAAMC,OAASJ,EAAY,UAE7E9L,EAAOmM,UAAY,GACnBzB,SAASqB,cAhCiB,oBAgCwBE,MAAMC,OAAS,GAErExB,SAASO,eAAe,QAAQgB,MAAMG,UAAY,QA5BlD,GAHApM,EAAOmM,UAAY,CAACE,aAAc,GAAIC,YAAa,GAG/CtG,OAAOC,QAAUyE,SAASqB,cANA,oBAM0C,CACpE,IAAID,EAAYL,IAAyBf,SAASqB,cAPxB,oBAOiEC,wBAA2B,IACtHF,GAAa,GACbpB,SAASqB,cATiB,oBASwBE,MAAMC,OAASJ,EAAY,KAC7EpB,SAASO,eAAe,QAAQgB,MAAMG,UAAYN,EAAY,SAC3D,CACH,IAAIS,EAEAA,EAAQtM,EADR4L,EACiB,WACb7L,EAAOiK,mCAAmC4B,IAG7B7L,EAAOiK,mCAFrB,KAKPjK,EAAOmE,IAAI,YAAY,WACnBlE,EAASuM,OAAOD,MAcxBvG,OAAOyG,MAAQzG,OAAOyG,KAAKC,WAC3BzM,GAAS,WACL+F,OAAOyG,KAAKC,UAAUC,WACvB,KAoBX,SAASpC,IACLN,GAAmC,GAcvC,SAASnD,EAAUzE,GACfpC,GAAS,WACLoK,EAAE,gBAAkBhI,EAAK,MAAMoG,IAAI,UACpC,GAIP,SAASrB,EAASwF,EAAYC,GAC1B7M,EAAO8M,iBAAmB9M,EAAO2F,aAC7BkH,GAA8C,WAAjC7G,OAAOC,OAAO8G,gBAAgE,cAAjC/G,OAAOC,OAAO8G,eACxE3N,EAAO6D,QAAQ,wDAIkB,WAAjC+C,OAAOC,OAAO+G,gBAKlBhN,EAAOgJ,iBAAmB6D,EACrB7M,EAAOkL,iBACJ0B,EACA5M,EAAO6H,iBAAiBG,aAAe,EAEvChI,EAAO4H,wBAIX5H,EAAOiH,SAAW,SACdjH,EAAOoK,qBACPpK,EAAOiK,qCAGXV,GAAU,EAAM,oBAChBvD,OAAOC,OAAO7C,UAnBdhE,EAAO6D,QAAQ,4CAuBvB,SAASoB,IAELkF,GAAU,EAAM,wBAAyB,kHACzC5I,EAA6BsM,0BACxBxN,SAAQ,SAAU8C,GACf,MAAM2K,EAAe,GACrB3K,EAAK4K,QAAQC,SAASC,SAAQ,SAAUC,GACpCJ,EAAaI,EAAEC,OAAOlM,OAASiM,EAAEE,UAAUnM,SAE/CrB,EAAOyN,WAAaP,KAEvBrK,OAAM,SAAUN,GACbvC,EAAO0N,gBAAkB5K,SAASP,MAErCoL,SAAQ,WAELpE,GAAU,MAqBtB,SAASL,IACL5I,EAAkB4I,iBAAiB0E,KAAKC,UAAU7H,OAAOC,OAAOC,aAC3DzG,SAAQ,SAAU8C,GACX5C,QAAQgE,UAAUqC,OAAOC,SAAWtG,QAAQgE,UAAUpB,IAASA,IAASyD,OAAOC,OAAOC,YACtFF,OAAOC,OAAOI,SAAS9D,MAG9BM,OAAM,SAAUN,GACb,IAAIuL,EAAMhL,SAASP,GAEnB,OADAnD,EAAOyD,MAAMiL,EAAK,wCACX,KAoBnB,SAAS3E,EAAiB/F,GACtB,IAAI2K,OAAgBzM,EAQpB,OAPA3B,QAAQ0N,QAAQrN,EAAOkI,UAAU,SAAU8F,GACvC,GAAIA,EAAKhM,OAASoB,EAAMpB,MAAQgM,EAAK5K,QAAUA,EAAMkG,KAEjD,OADAyE,EAAgBC,EAAK3L,GACd2L,KAIRD,EAjJN/N,EAAOoK,qBACRG,IA4FAvK,EAAOsE,uBACPD,IAGJrE,EAAOmE,IAAI,YAAY,WACnB6B,OAAOC,OAAS,KAChBD,OAAOyG,KAAO,QAqBlBpC,EAAE,YAAY4D,GAAG,SAAS,WACtBhO,GAAS,WACLiJ,MACD,MAqCPlJ,EAAOkO,iBAAiB,iDAAiD,WACpDlO,EAAO2F,gBAmB5B,SAASkB,EAAQxE,GACbrC,EAAOkI,SAAW,CAAClI,EAAO2F,cAE1B,IAAI8C,EAAMzI,EAAO2F,aAEgB,MAA7B3F,EAAO2F,aAAavC,OAA+C,KAA9BpD,EAAO2F,aAAavC,MAEzD4C,OAAOC,OAAOI,SAAS,KAEvBL,OAAOC,OAAOI,SAASrG,EAAO2F,aAAavC,OAG/CnD,GAAS,WACLD,EAAO6H,iBAAmB,GAC1B7H,EAAO6H,iBAAiBpD,UAAYgE,EAAIhE,UACxCzE,EAAO6H,iBAAiBG,aAAeS,EAAIT,aAE3ChI,EAAO6H,iBAAiBsG,OAAS1F,EAAI0F,OACrCnO,EAAO6H,iBAAiBE,gBAAkBU,EAAIV,gBAC9C/H,EAAO6H,iBAAiB9G,KAAO0H,EAAI1H,KACnCf,EAAO6H,iBAAiBC,SAAWW,EAAIX,SAEvC9H,EAAO6H,iBAAiBuG,aAAe3F,EAAI2F,aAC3CpO,EAAO6H,iBAAiBwG,SAAW5F,EAAI4F,SACvCrO,EAAO6H,iBAAiByG,UAAY7F,EAAI6F,UACxCtO,EAAOuL,WACR,GAGHlB,EAAE,SAASkE,IAAI,UAAW,KAG9B,SAASC,EAAW/D,GAChB,OAAOJ,EAAEI,GAASgE,KAAK,WAG3BzO,EAAOmE,IAAI,aAAa,SAAUmJ,EAAGoB,GAC7BA,EAASC,eACT3O,EAAOoI,QAAQoG,EAAWE,EAASC,gBAEvC3O,EAAO6G,QAAQ2H,EAAWE,EAASE,YAGvC5O,EAAOmE,IAAI,0BAA0B,SAAUmJ,EAAGnF,GAC9CnI,EAAOkI,SAAWC,EAClBnI,EAAOmI,KAAOA,KAIlBnI,EAAO2F,aAAehG,QAAQkP,KAAKlH,GAEnC3H,EAAO8O,mBAAoB,EAC3B9O,EAAO8I,WAAa,GACpB9I,EAAO+O,cAAgB,GAEvB/O,EAAOgP,sBAAwB,aAG/BhP,EAAOiP,qBAAuB,aAG9BjP,EAAOkP,uBAAyB,aA/sBpCvP,QACKC,OAAO,6DAA8D,CAClE,wCACA,gDAEHuP,WAAW,kBAAmBpP,GAEnCA,EAAgBD,QAAU,CAAC,SAAU,WAAY,YAAa,SAAU,gBAAiB,SAAU,eAAgB,oBAAqB,UAAW,yBAA0B,0BAA2B,eAAgB,gBAAiB,+BAAgC,sBAAuB","file":"36.53cea4c4866328aef1aa.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.utils.notifications', [])\n .factory('Notifications', Notifications);\n\nNotifications.$inject = ['toastr'];\n\nfunction Notifications(toastr) {\n return {\n showToastMessageWithDelay\n };\n\n /**\n * This method will show message with tiny delay and only after completion\n * of latter redirection to \"graphs-visualizations\" page will happen.\n * @param {string} message The message to be displayed.\n * @return {Promise<any>}\n */\n function showToastMessageWithDelay(message) {\n return new Promise((r) => {\n toastr.success(message);\n setTimeout(r, 200);\n });\n }\n}\n","import 'angular/utils/notifications';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.controllers.graphviz.config', [\n 'graphdb.framework.utils.notifications',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .controller('GraphConfigCtrl', GraphConfigCtrl);\n\nGraphConfigCtrl.$inject = ['$scope', '$timeout', '$location', 'toastr', '$repositories', '$modal', 'ModalService', 'SparqlRestService', '$filter', 'GraphConfigRestService', 'AutocompleteRestService', '$routeParams', 'Notifications', 'RDF4JRepositoriesRestService', 'LocalStorageAdapter', 'LSKeys'];\n\nfunction GraphConfigCtrl($scope, $timeout, $location, toastr, $repositories, $modal, ModalService, SparqlRestService, $filter, GraphConfigRestService, AutocompleteRestService, $routeParams, Notifications, RDF4JRepositoriesRestService, LocalStorageAdapter, LSKeys) {\n\n $scope.page = 1;\n $scope.totalPages = 5;\n\n $scope.helpHidden = LocalStorageAdapter.get(LSKeys.HIDE_GRAPH_CONFIG_HELP) === 1;\n\n $scope.toggleHelp = function (value) {\n if (value === undefined) {\n value = LocalStorageAdapter.get(LSKeys.HIDE_GRAPH_CONFIG_HELP);\n }\n if (value !== 1) {\n LocalStorageAdapter.set(LSKeys.HIDE_GRAPH_CONFIG_HELP, 1);\n $scope.helpHidden = true;\n } else {\n LocalStorageAdapter.set(LSKeys.HIDE_GRAPH_CONFIG_HELP, 0);\n $scope.helpHidden = false;\n }\n };\n\n var selectedFixedNodeChanged;\n $scope.fixedVisualCallback = function (uri, label) {\n $scope.newConfig.startIRI = uri;\n $scope.newConfig.startIRILabel = label;\n selectedFixedNodeChanged = true;\n };\n\n $scope.isDefaultGraph = function (sample) {\n return (sample.name === 'Minimal' || sample.name === 'Advanced');\n };\n\n $scope.isUserGraph = function (sample) {\n return !$scope.isDefaultGraph(sample);\n };\n\n $scope.getSampleName = function (sample, property) {\n const extra = sample[property + 'Description'];\n if (extra) {\n // Sample has description, use it\n return extra;\n } else {\n // Sample is a copy of existing config, prepend Copy of to name\n return sample.id ? 'Copy of ' + sample.name : sample.name;\n }\n };\n\n const getGraphConfigSamples = function () {\n GraphConfigRestService.getGraphConfigSamples()\n .success(function (data) {\n $scope.samples = _.filter(data, function (s) {\n // Skip the currently edited config from samples and store it into a revert variable\n if (!s.id || $scope.newConfig.id !== s.id) {\n return true;\n } else {\n $scope.revertConfig = s;\n return false;\n }\n });\n }).error(function (data) {\n toastr.error(getError(data), 'Could not get graph configs. You may not see sample values');\n });\n };\n\n const configName = $routeParams.configName;\n $scope.newConfig = {startQueryIncludeInferred: true, startQuerySameAs: true};\n $scope.newConfig.startMode = 'search';\n $scope.isUpdate = false;\n $scope.shared = false;\n\n $scope.encodeQuery = function (query) {\n return encodeURIComponent(query);\n };\n\n function showInvalidMsg(message) {\n toastr.warning(message);\n }\n\n if (configName) {\n $scope.isUpdate = true;\n GraphConfigRestService.getConfig(configName)\n .success(function (data) {\n $scope.newConfig = data;\n initForConfig();\n })\n .error(function (data) {\n toastr.error(getError(data), 'Could not load config for name ' + configName);\n });\n } else {\n $scope.isUpdate = false;\n initForConfig();\n }\n\n function getQueryForCurrentPage(config) {\n let query;\n\n if (config.startMode === 'query' && $scope.page === 1) {\n query = config.startGraphQuery;\n } else if ($scope.page === 2) {\n query = config.expandQuery;\n } else if ($scope.page === 3) {\n query = config.resourceQuery;\n } else if ($scope.page === 4) {\n query = config.predicateLabelQuery;\n } else if ($scope.page === 5) {\n query = config.resourcePropertiesQuery;\n }\n\n return angular.isDefined(query) ? query : '';\n }\n\n function initForConfig() {\n getGraphConfigSamples();\n $scope.createGraphConfig = function () {\n GraphConfigRestService.createGraphConfig($scope.newConfig)\n .success(async function () {\n await Notifications.showToastMessageWithDelay('Saved new graph config');\n $location.url('graphs-visualizations');\n }).error(function (data) {\n toastr.error(getError(data), 'Error! Could not create graph config');\n });\n };\n\n $scope.updateGraphConfig = function () {\n GraphConfigRestService.updateGraphConfig($scope.newConfig)\n .success(async function () {\n await Notifications.showToastMessageWithDelay('Graph config saved');\n $location.url('graphs-visualizations');\n }).error(function (data) {\n toastr.error(getError(data), 'Error! Could not save graph config');\n });\n };\n\n function checkAutocompleteStatus() {\n $scope.getAutocompletePromise = AutocompleteRestService.checkAutocompleteStatus();\n }\n\n $scope.$on('autocompleteStatus', function() {\n checkAutocompleteStatus();\n });\n\n checkAutocompleteStatus();\n $scope.getNamespacesPromise = RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository());\n\n const validateQueryWithCallback = function (successCallback, query, queryType, params, all, oneOf) {\n if (!query) {\n successCallback();\n } else {\n GraphConfigRestService.validateQuery(query, queryType, params, all, oneOf)\n .success(function () {\n successCallback();\n }).error(function (data) {\n showInvalidMsg(getError(data));\n });\n }\n };\n\n $scope.validateCurrentPage = function (successCallback) {\n $scope.updateModel();\n\n if ($scope.page === 1) {\n if ($scope.newConfig.startMode === 'node' && !$scope.newConfig.startIRI) {\n showInvalidMsg('Please select start node.');\n } else if ($scope.newConfig.startMode === 'query' && !$scope.newConfig.startGraphQuery) {\n showInvalidMsg('Please provide start graph query.');\n } else if ($scope.newConfig.startMode === 'query') {\n validateQueryWithCallback(successCallback, $scope.newConfig.startGraphQuery, 'graph')\n } else {\n successCallback();\n }\n } else if ($scope.page === 2) {\n validateQueryWithCallback(successCallback, $scope.newConfig.expandQuery, 'construct', ['node'])\n } else if ($scope.page === 3) {\n validateQueryWithCallback(successCallback, $scope.newConfig.resourceQuery, 'tuple', ['node'], [], ['type', 'label', 'comment', 'rank']);\n } else if ($scope.page === 4) {\n validateQueryWithCallback(successCallback, $scope.newConfig.predicateLabelQuery, 'tuple', ['edge'], ['label']);\n } else if ($scope.page === 5) {\n validateQueryWithCallback(successCallback, $scope.newConfig.resourcePropertiesQuery, 'tuple', ['node'], ['property', 'value']);\n }\n };\n\n $scope.goToPage = function (nextPage) {\n if ($scope.page === nextPage) {\n // already there\n return;\n }\n\n $scope.validateCurrentPage(function () {\n $scope.showEditor();\n $scope.page = nextPage;\n $scope.notoolbar = $scope.page !== 1;\n });\n };\n\n $scope.goToPreviousPage = function () {\n if ($scope.page > 1) {\n $scope.goToPage($scope.page - 1);\n }\n\n if (checkPageAndMode()) {\n selectedFixedNodeChanged = false;\n }\n };\n\n $scope.goToNextPage = function () {\n broadcastAddStartFixedNodeEvent();\n if (selectedFixedNodeChanged) {\n $scope.goToPage($scope.page + 1);\n }\n };\n\n function broadcastAddStartFixedNodeEvent() {\n if (checkPageAndMode()) {\n $scope.$broadcast('addStartFixedNodeAutomatically', {startIRI: $scope.newConfig.startIRI});\n }\n }\n\n function checkPageAndMode() {\n return $scope.page === 1 && $scope.newConfig.startMode === 'node';\n }\n\n $scope.saveGraphConfig = function () {\n broadcastAddStartFixedNodeEvent();\n\n if (checkPageAndMode() && !selectedFixedNodeChanged) {\n return;\n }\n\n $scope.newConfig.startQueryIncludeInferred = $scope.currentQuery.inference;\n $scope.newConfig.startQuerySameAs = $scope.currentQuery.sameAs;\n\n $scope.validateCurrentPage(function () {\n if (!$scope.newConfig.name) {\n showInvalidMsg('Please provide config name.');\n return;\n }\n $scope.isUpdate ? $scope.updateGraphConfig($scope.newConfig) : $scope.createGraphConfig($scope.newConfig);\n });\n };\n\n $scope.updateModel = function () {\n const query = window.editor.getValue().trim();\n if ($scope.newConfig.startMode === 'query' && $scope.page === 1) {\n $scope.newConfig.startGraphQuery = query;\n } else if ($scope.page === 2) {\n $scope.newConfig.expandQuery = query;\n } else if ($scope.page === 3) {\n $scope.newConfig.resourceQuery = query;\n } else if ($scope.page === 4) {\n $scope.newConfig.predicateLabelQuery = query;\n } else if ($scope.page === 5) {\n $scope.newConfig.resourcePropertiesQuery = query;\n }\n };\n\n // Called when user clicks on a sample query\n $scope.setQuery = function (query) {\n // Hack for YASQE bug\n window.editor.setValue(query ? query : ' ');\n };\n\n $scope.updateDirty = function () {\n if ($scope.revertConfig) {\n const q1 = getQueryForCurrentPage($scope.revertConfig);\n const q2 = window.editor.getValue().trim();\n $scope.queryEditorIsDirty = q1 !== q2;\n }\n };\n\n // Updates the position of the query editor to match the current div placeholder\n // and sets the editor's query to the relevant query from the model.\n $scope.updateEditor = function () {\n $timeout(function () {\n $scope.currentQuery.query = getQueryForCurrentPage($scope.newConfig);\n // // Check for ontop repository and override nocount property (it's default value is false)\n if ($repositories.isActiveRepoOntopType()) {\n $scope.nocount = true;\n }\n $scope.currentQuery.inference = $scope.newConfig.startQueryIncludeInferred;\n $scope.currentQuery.sameAs = $scope.newConfig.startQuerySameAs;\n loadTab($scope.currentQuery.id);\n selectTab($scope.currentQuery.id);\n }, 100);\n\n };\n\n $scope.showEditor = function () {\n if (window.editor && window.editor.xhr) {\n window.editor.xhr.abort();\n }\n $scope.viewMode = 'yasr';\n };\n\n $scope.showPreview = function () {\n // For some reason YASR gets confused and sets this to rawResponse\n // if we execute a CONSTRUCT and then a SELECT. This makes sure it's always table.\n $scope.currentQuery.outputType = 'table';\n $scope.runQuery();\n };\n\n $scope.revertEditor = function () {\n $scope.setQuery(getQueryForCurrentPage($scope.revertConfig));\n };\n\n // Trigger for showing the editor and moving it to the right position\n $scope.$watch('newConfig.startMode', function (value) {\n if (value === 'query') {\n $timeout(function () {\n $scope.updateEditor();\n }, 0);\n }\n });\n\n // Trigger for showing the editor and moving it to the right position\n $scope.$watch('page', function (value) {\n if ($scope.newConfig.startMode === 'query' || value > 1) {\n $timeout(function () {\n $scope.showEditor();\n $scope.updateEditor();\n }, 0);\n }\n });\n }\n\n // DOWN HERE WE KEEP EVERYTHING PURELY QUERY EDITOR (MOSTLY BORROWED FROM query-editor.controller.js)\n // But Why? Can't we reuse it instead of borrow?\n\n const defaultTabConfig = {\n id: '1',\n name: '',\n query: 'select * where { \\n' +\n '\\t?s ?p ?o .\\n' +\n '} limit 100 \\n',\n inference: $scope.newConfig.startQueryIncludeInferred,\n sameAs: $scope.newConfig.startQuerySameAs\n };\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 100, // page limit 100 as this is only used for preview\n page: 1,\n allResultsCount: 0,\n resultsCount: 0\n };\n };\n\n $scope.queryExists = false;\n\n $scope.resetCurrentTabConfig();\n\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n\n // query tab operations\n $scope.saveTab = saveTab;\n $scope.loadTab = loadTab;\n $scope.addNewTab = addNewTab;\n\n // query operations\n $scope.runQuery = runQuery;\n $scope.getNamespaces = getNamespaces;\n $scope.changePagination = changePagination;\n $scope.toggleSampleQueries = toggleSampleQueries;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.getExistingTabId = getExistingTabId;\n $scope.querySelected = querySelected;\n $scope.saveQueryToLocal = saveQueryToLocal;\n\n $scope.setLoader = setLoader;\n $scope.getLoaderMessage = getLoaderMessage;\n\n // query editor and results orientation\n $scope.fixSizesOnHorizontalViewModeSwitch = fixSizesOnHorizontalViewModeSwitch;\n $scope.changeViewMode = changeViewMode;\n $scope.showHideEditor = showHideEditor;\n $scope.focusQueryEditor = focusQueryEditor;\n $scope.orientationViewMode = true;\n\n // start of repository actions\n let backendRepositoryID = $scope.getActiveRepository();\n\n function saveQueryToLocal(currentQueryTab) {\n }\n\n function setLoader(isRunning, progressMessage, extraMessage) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n yasrInnerContainer.addClass('hide');\n } else {\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n yasrInnerContainer.removeClass('hide');\n }\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function getLoaderMessage() {\n const timeSeconds = (Date.now() - $scope.queryStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = 'Running operation...' + timeHuman;\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n }\n\n\n // start of query editor results orientation operations\n function fixSizesOnHorizontalViewModeSwitch(verticalViewParam) {\n function visibleWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;\n }\n\n const codemirrorWrapperSelector = '.CodeMirror-wrap';\n const verticalView = verticalViewParam;\n if (!$scope.orientationViewMode) {\n $scope.noPadding = {paddingRight: 15, paddingLeft: 0};\n\n // window.editor is undefined if no repo is selected\n if (window.editor && document.querySelector(codemirrorWrapperSelector)) {\n let newHeight = visibleWindowHeight() - (document.querySelector(codemirrorWrapperSelector).getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector(codemirrorWrapperSelector).style.height = newHeight + 'px';\n document.getElementById('yasr').style.minHeight = newHeight + 'px';\n } else {\n let timer;\n if (verticalView) {\n timer = $timeout(function () {\n $scope.fixSizesOnHorizontalViewModeSwitch(verticalView)\n }, 100);\n } else {\n timer = $timeout($scope.fixSizesOnHorizontalViewModeSwitch, 100);\n }\n\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n } else {\n if ($scope.viewMode === 'yasr') {\n let newHeight = visibleWindowHeight() - (document.querySelector(codemirrorWrapperSelector).getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector(codemirrorWrapperSelector).style.height = newHeight + 'px';\n } else {\n $scope.noPadding = {};\n document.querySelector(codemirrorWrapperSelector).style.height = '';\n }\n document.getElementById('yasr').style.minHeight = '';\n }\n if (window.yasr && window.yasr.container) {\n $timeout(function () {\n window.yasr.container.resize();\n }, 100);\n }\n }\n\n if (!$scope.orientationViewMode) {\n showHideEditor();\n }\n\n function changeViewMode(tabID) {\n $scope.viewMode = 'none';\n $scope.orientationViewMode = !$scope.orientationViewMode;\n fixSizesOnHorizontalViewModeSwitch();\n $('.dataTables_filter').remove();\n $('.resultsTable').remove();\n $timeout(function () {\n loadTab(tabID);\n selectTab(tabID);\n }, 100);\n }\n\n function showHideEditor() {\n fixSizesOnHorizontalViewModeSwitch(true);\n }\n\n function focusQueryEditor() {\n if (!angular.element(document).find('.editable-input').is(':focus')) {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n }\n\n // end of query editor results orientation operations\n\n function deleteCachedSparqlResults() {\n }\n\n function selectTab(id) {\n $timeout(function () {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }, 0);\n }\n\n // start of query operations\n function runQuery(changePage, explain) {\n $scope.executedQueryTab = $scope.currentQuery;\n if (explain && !(window.editor.getQueryType() === 'SELECT' || window.editor.getQueryType() === 'CONSTRUCT')) {\n toastr.warning('Explain only works with SELECT or CONSTRUCT queries.');\n return;\n }\n\n if (window.editor.getQueryMode() === 'update') {\n toastr.warning('Cannot execute updates from this editor.');\n return;\n }\n\n $scope.explainRequested = explain;\n if (!$scope.queryIsRunning) {\n if (changePage) {\n $scope.currentTabConfig.resultsCount = 0;\n } else {\n $scope.resetCurrentTabConfig();\n }\n\n // Hides the editor and shows the yasr results\n $scope.viewMode = 'editor';\n if ($scope.orientationViewMode) {\n $scope.fixSizesOnHorizontalViewModeSwitch()\n }\n\n setLoader(true, 'Evaluating query');\n window.editor.query();\n }\n }\n\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, 'Refreshing namespaces', 'Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first.');\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n });\n }\n\n function changePagination() {\n runQuery(true, $scope.explainRequested);\n }\n\n if ($scope.getActiveRepository()) {\n getNamespaces();\n }\n\n $scope.$on('$destroy', function () {\n window.editor = null;\n window.yasr = null;\n });\n\n function toggleSampleQueries() {\n }\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n let msg = getError(data);\n toastr.error(msg, 'Error! Could not add known prefixes');\n return true;\n });\n }\n\n $('textarea').on('paste', function () {\n $timeout(function () {\n addKnownPrefixes();\n }, 0);\n });\n\n function querySelected(query) {\n const tabId = getExistingTabId(query);\n $scope.toggleSampleQueries();\n if (!angular.isDefined(tabId)) {\n $scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n\n function getExistingTabId(query) {\n let existingTabId = undefined;\n angular.forEach($scope.tabsData, function (item) {\n if (item.name === query.name && item.query === query.body) {\n existingTabId = item.id;\n return item;\n }\n });\n\n return existingTabId;\n }\n\n // end of query operations\n\n // start of query tab operations\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabsData.length; i++) {\n const tab = $scope.tabsData[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n $scope.$watchCollection('[currentQuery.inference, currentQuery.sameAs]', function () {\n saveQueryToLocal($scope.currentQuery);\n });\n\n function saveTab(id) {\n const idx = findTabIndexByID(id);\n // Tab was deleted, don't try to save it's state\n if (idx === undefined) {\n return {};\n }\n const tab = $scope.tabsData[idx];\n $scope.saveQueryToLocal(tab);\n return tab;\n }\n\n let maxID = 1;\n\n function addNewTab(callback, tabName, savedQuery) {\n }\n\n function loadTab(id) {\n $scope.tabsData = [$scope.currentQuery];\n\n let tab = $scope.currentQuery;\n\n if ($scope.currentQuery.query == null || $scope.currentQuery.query === '') {\n // hack for YASQE bug\n window.editor.setValue(' ');\n } else {\n window.editor.setValue($scope.currentQuery.query);\n }\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.$apply();\n }, 0);\n\n //Remove padding of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n }\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n $scope.$on('tabAction', function (e, tabEvent) {\n if (tabEvent.relatedTarget) {\n $scope.saveTab(getQueryID(tabEvent.relatedTarget));\n }\n $scope.loadTab(getQueryID(tabEvent.target));\n });\n\n $scope.$on('deleteAllexeptSelected', function (e, tabs) {\n $scope.tabsData = tabs;\n $scope.tabs = tabs;\n });\n // end of query tab operations\n\n $scope.currentQuery = angular.copy(defaultTabConfig);\n // $scope.state = {};\n $scope.showSampleQueries = false;\n $scope.savedQuery = {};\n $scope.sampleQueries = {};\n\n $scope.getResultsDescription = function () {\n };\n\n $scope.getUpdateDescription = function () {\n };\n\n $scope.getStaleWarningMessage = function () {\n }\n\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[37],{65:function(e,r,t){"use strict";t.r(r);t(2),t(30);const i=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);i.directive("validateUri",["UriUtils",function(e){return{restrict:"A",require:"ngModel",link:function(r,t,i,a){a.$parsers.unshift((function(t){let i=!0;return"named"===r.target&&(i=e.isValidIri(t)),a.$setValidity("validateUri",i),t}))}}}]),i.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),i.directive("filesOntoLoader",(function(){return{link:function(e,r,t){e.$watch("file.status",(function(){"IMPORTING"!==e.file.status&&"UPLOADING"!==e.file.status||!$(r).has("object").length>0&&$(r).append('<object width="'+t.size+'" height="'+t.size+'" data="js/angular/templates/loader/ot-loader.svg?v=1.10.1">Loading...</object>')}))}}}))},96:function(e,r,t){"use strict";t.r(r);t(2),t(7),t(84),t(65),t(8),t(25),t(26);angular.module("graphdb.framework.impex.import",["toastr","ngRoute","ngFileUpload","ui.bootstrap","graphdb.framework.impex.import.directives","graphdb.framework.impex.import.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives"])}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[37],{65:function(e,r,t){"use strict";t.r(r);t(2),t(30);const i=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);i.directive("validateUri",["UriUtils",function(e){return{restrict:"A",require:"ngModel",link:function(r,t,i,a){a.$parsers.unshift((function(t){let i=!0;return"named"===r.target&&(i=e.isValidIri(t)),a.$setValidity("validateUri",i),t}))}}}]),i.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),i.directive("filesOntoLoader",(function(){return{link:function(e,r,t){e.$watch("file.status",(function(){"IMPORTING"!==e.file.status&&"UPLOADING"!==e.file.status||!$(r).has("object").length>0&&$(r).append('<object width="'+t.size+'" height="'+t.size+'" data="js/angular/templates/loader/ot-loader.svg?v=1.11.0-TR1">Loading...</object>')}))}}}))},96:function(e,r,t){"use strict";t.r(r);t(2),t(7),t(84),t(65),t(8),t(25),t(26);angular.module("graphdb.framework.impex.import",["toastr","ngRoute","ngFileUpload","ui.bootstrap","graphdb.framework.impex.import.directives","graphdb.framework.impex.import.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives"])}}]);
2
2
  //# sourceMappingURL=37.571a0ab8fb0508c3f1fe.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/import/directives.js","webpack:///./src/js/angular/import/app.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO,0G,gCCxCrG,8CAmBA1B,QAAQC,OAAO,iCAXC,CACZ,SACA,UACA,eACA,eACA,4CACA,6CACA,+CACA","file":"37.571a0ab8fb0508c3f1fe.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=1.10.1\">Loading...</object>');\n }\n }\n });\n }\n };\n});\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/import/directives.js","webpack:///./src/js/angular/import/app.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO,0G,gCCxCrG,8CAmBA1B,QAAQC,OAAO,iCAXC,CACZ,SACA,UACA,eACA,eACA,4CACA,6CACA,+CACA","file":"37.571a0ab8fb0508c3f1fe.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=1.11.0-TR1\">Loading...</object>');\n }\n }\n });\n }\n };\n});\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n"],"sourceRoot":""}