graphdb-workbench 3.5.1-RC1 → 3.5.1-RC2
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.
- package/dist/{64709.1c394e9d967b7883a14f.bundle.js → 64709.2adc31363ca2b2475476.bundle.js} +2 -2
- package/dist/{64709.1c394e9d967b7883a14f.bundle.js.map → 64709.2adc31363ca2b2475476.bundle.js.map} +1 -1
- package/dist/{65677.5114a3c7a59d95ca6393.bundle.js → 65677.18df5c2d9a605f6db5fc.bundle.js} +2 -2
- package/dist/{65677.5114a3c7a59d95ca6393.bundle.js.map → 65677.18df5c2d9a605f6db5fc.bundle.js.map} +1 -1
- package/dist/73334.1487d58b7e885510d107.bundle.js +2 -0
- package/dist/73334.1487d58b7e885510d107.bundle.js.map +1 -0
- package/dist/{80933.3bb78afbe19f4f42c191.bundle.js → 80933.25b785e67f467a70cf8e.bundle.js} +2 -2
- package/dist/{80933.3bb78afbe19f4f42c191.bundle.js.map → 80933.25b785e67f467a70cf8e.bundle.js.map} +1 -1
- package/dist/{82917.ed203b019f3b90fb8637.bundle.js → 82917.14ea95fa663b724a3ac5.bundle.js} +2 -2
- package/dist/{82917.ed203b019f3b90fb8637.bundle.js.map → 82917.14ea95fa663b724a3ac5.bundle.js.map} +1 -1
- package/dist/{86099.d89902f81893523e85e0.bundle.js → 86099.545332ac6dbc48ce4fb7.bundle.js} +2 -2
- package/dist/{86099.d89902f81893523e85e0.bundle.js.map → 86099.545332ac6dbc48ce4fb7.bundle.js.map} +1 -1
- package/dist/assets/i18n/language-config.json +1 -1
- package/dist/index.html +8 -8
- package/dist/js/angular/clustermanagement/templates/cluster-configuration/cluster-configuration.html +1 -1
- package/dist/js/angular/clustermanagement/templates/cluster-configuration/multi-region.html +1 -1
- package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
- package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
- package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
- package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
- package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
- package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
- package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +1 -1
- package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
- package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
- package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
- package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
- package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
- package/dist/js/angular/security/templates/user.html +2 -2
- package/dist/js/angular/security/templates/users.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
- package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
- package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
- package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
- package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
- package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
- package/dist/{legacyWorkbench.bb36cbc6775ac1378482.js → legacyWorkbench.c8d906e4ff52c680ac0b.js} +3 -3
- package/dist/{legacyWorkbench.bb36cbc6775ac1378482.js.map → legacyWorkbench.c8d906e4ff52c680ac0b.js.map} +1 -1
- package/dist/pages/aclmanagement.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +2 -2
- package/dist/pages/create-index.html +1 -1
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +8 -8
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/guides.html +1 -1
- package/dist/pages/home.html +1 -1
- package/dist/pages/import.html +2 -2
- package/dist/pages/jdbc-create.html +1 -1
- package/dist/pages/jdbc.html +1 -1
- package/dist/pages/monitor/backup-and-restore.html +1 -1
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +1 -1
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +1 -1
- package/dist/pages/repository.html +1 -1
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-editor.html +1 -1
- package/dist/pages/sparql-template-create.html +1 -1
- package/dist/pages/sparql-templates.html +1 -1
- package/dist/pages/ux-test1.html +2 -2
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger5/index.html +11 -11
- package/package.json +1 -1
- package/dist/73334.b9c87ecb49eff4f5195d.bundle.js +0 -2
- package/dist/73334.b9c87ecb49eff4f5195d.bundle.js.map +0 -1
- /package/dist/{legacyWorkbench.bb36cbc6775ac1378482.js.LICENSE.txt → legacyWorkbench.c8d906e4ff52c680ac0b.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=64709;export const __webpack_esm_ids__=[64709];export const __webpack_esm_modules__={64709(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.5.1-
|
|
2
|
-
//# sourceMappingURL=64709.
|
|
1
|
+
export const __webpack_esm_id__=64709;export const __webpack_esm_ids__=[64709];export const __webpack_esm_modules__={64709(){function t(){return{link:function(t,e,o){t.$watch("file.status",function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+o.size+'" height="'+o.size+'" data="js/angular/templates/loader/ot-loader.svg?v=3.5.1-RC2">{{\'common.loading\' | translate}}</object>')})}}}angular.module("graphdb.framework.import.directives.import-progress-indicator",[]).directive("ImportProgressIndicator",t),t.$inject=[]}};
|
|
2
|
+
//# sourceMappingURL=64709.2adc31363ca2b2475476.bundle.js.map
|
package/dist/{64709.1c394e9d967b7883a14f.bundle.js.map → 64709.2adc31363ca2b2475476.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"64709.
|
|
1
|
+
{"version":3,"file":"64709.2adc31363ca2b2475476.bundle.js","mappings":"6HASA,SAASA,IACL,MAAO,CACHC,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMG,OAAO,cAAe,WACE,cAAtBH,EAAMI,KAAKC,QAAgD,cAAtBL,EAAMI,KAAKC,SAC3CC,EAAEL,GAASM,IAAI,UAAUC,OAAS,GACnCF,EAAEL,GAASQ,OAAO,kBAAoBP,EAAKQ,KAAO,aAAeR,EAAKQ,KAAO,6GAGzF,EACJ,EAER,CAnBAC,QACKC,OAAO,gEAHI,IAIXC,UAAU,0BAA2Bf,GAE1CA,EAAwBgB,QAAU,E","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/import/directives/import-progress-indicator.directive.js"],"sourcesContent":["const modules = [];\n\nangular\n .module('graphdb.framework.import.directives.import-progress-indicator', modules)\n .directive('ImportProgressIndicator', ImportProgressIndicator);\n\nImportProgressIndicator.$inject = [];\n\n// importDirectives.directive('filesOntoLoader',\nfunction ImportProgressIndicator() {\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=3.5.1-RC2\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n}\n"],"names":["ImportProgressIndicator","link","scope","element","attr","$watch","file","status","$","has","length","append","size","angular","module","directive","$inject"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const __webpack_esm_id__=65677;export const __webpack_esm_ids__=[65677];export const __webpack_esm_modules__={65677(t,e,r){var a=r(66886),n=r(9508),o=(r(38473),r(44482));function s(t,e,r,s,c,i,l,d,p,u,f,g,h){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const f=d(function(){!function(u){var f=1200,y=f/18,x=f/110,m=x/2,v=f/90,b=1.2,k=o.select("#domain-range").append("svg").attr("viewBox","0 0 1200 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),w=o.forceSimulation(),E=o.drag().subject(function(t){return t}).on("start",function(t,e){w.stop(),e.fx=t.x,e.fy=t.y,o.select(this).classed("selected",!0)}).on("end",function(t,e){e.fx=null,e.fy=null,o.select(this).classed("selected",!1),C?(w.alpha(.2).restart(),C=!1):w.restart()}).on("drag",function(t,e){C=!0,w.alphaTarget(0).restart(),e.fx=t.x,e.fy=t.y}),N=k.append("defs");N.append("marker").attrs({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),o.select("#download-svg").on("mouseover",function(){var t=a.A.Export.getCSSRules("css/domain-range-graph.css?v=3.5.1-RC1");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.A.Export.generateBase64ImageSource("#domain-range svg");o.select(this).attrs({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}),function(){var t=f/7,e=205.7142857142857,r=o.select(".legend-container").append("svg").attr("viewBox","0 0 "+t+" "+e).attr("preserveAspectRatio","xMidYMid meet");r.append("rect").attrs({width:t,height:e}).style("fill","rgba(235, 235, 235, 0.9)");var a=16,n=42.66666666666667,s=n+f/90,i=v/1.1,l=(r.append("circle").attrs({class:"legend-class-node",cx:29.333333333333336,cy:30,r:y/4.5}),30+f/370);r.append("text").attrs({x:s,y:l}).style("font-size",i+"px").text("main class node"),r.append("circle").attrs({class:"legend-object-node",cx:29.333333333333336,cy:70,r:8.727272727272727});var d=l+40;r.append("text").attrs({x:s,y:d}).style("font-size",i+"px").text("class node");var p=70+f/45;r.append("circle").attrs({class:"legend-datatype-node",cx:29.333333333333336,cy:p,r:m});var u=d+f/45;r.append("text").attrs({x:s,y:u}).style("font-size",i+"px").text("datatype node");var g=123.33333333333334;r.append("line").attrs({class:"property-arrow",x1:a,y1:g,x2:n,y2:g}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:126.57657657657658}).style("font-size",i+"px").text("explicit property");var h=150;r.append("line").attrs({class:"implicit-property-arrow",x1:a,y1:h,x2:n,y2:h}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:153.24324324324326}).style("font-size",i+"px").text("implicit property");var x=176.66666666666666;r.append("line").attrs({class:"collapsed-property-arrow",x1:a,y1:x,x2:n,y2:x}).style("stroke-width",2).attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)"),r.append("text").attrs({x:s,y:179.9099099099099}).style("font-size",i+"px").text("collapsed property")}();var R=c.search().uri,A=c.search().name;const L=c.search().collapsed;(function(t,e){s.getDomainRangeData(t,e).success(function(t,e,r){u.domainRangeGraphData=t}).error(function(t){p.error("Request for "+A+" failed!")})})(R,L),$(window).on("popstate",function(){i.set(l.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(l.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(l.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:R,name:A,collapsed:e})}(u.collapseEdges),i.remove(l.DOMAIN_RANGE_WENT_BACK))}),u.$watch("domainRangeGraphData",function(){if(u.domainRangeGraphData){var r=_.cloneDeep(u.domainRangeGraphData);const S=r.nodes,I=r.links;w.nodes(S).force("x",o.forceX(600)).force("y",o.forceY(300)).force("charge",o.forceManyBody().strength(-800)).force("link",o.forceLink(I).distance(f/3.5));var a=k.selectAll(".link").data(I).enter().append("g");function B(t){t.style("stroke",g),t.style("stroke-width",2),t.attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)")}var s,i,l=0;a.each(function(t){if(t.objectPropNodeClassUri!==R)s=a.append("line").attrs({class:"link","marker-end":"url("+c.absUrl()+"#arrow)"}).style("stroke-width",b).each(function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=y;break;case"objectRight":t.targetRadius=x;break;case"datatype":t.targetRadius=m;break;default:t.targetRadius=0}var e=o.select(this);t.targetNodeEdgeCount>1?B(e):t.implicit&&e.style("stroke-dasharray","3, 3")});else{if(angular.isUndefined(i)){var e=y/2;i=o.select(this).append("path").attrs({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+c.absUrl()+"#arrow-loop)"}).style("stroke-width",b)}(l+=t.targetNodeEdgeCount)>1&&B(o.select(".loop-link"))}});var p={};function G(){$.isEmptyObject(p)||(p.text.style("fill","black"),p.background.style("fill","#f0f0f0"))}function W(t,e){G(),p.text=o.select(this),p.background=o.select(this.previousSibling),p.text.style("fill","white"),p.background.style("fill",g),d(function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=e}),t.stopPropagation()}$("document").ready(function(){$("#domain-range").bind("click",G)});var N=a.append("text").attr("class",function(t){return t.objectPropNodeClassUri===R?"loop-link-property-name":"property-name"}).attr("dx",function(t){return y/2*("objectLeft"===t.propertyType?1:-1)}).style("text-anchor",function(t){return"objectLeft"===t.propertyType?"end":"start"}).style("font-size",v).text(function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name});N.each(function(t){var r=o.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",W):r.on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.uri),"_blank")})});var L=a.append("rect").attr("class",function(t){return t.objectPropNodeClassUri!==R?"link-background":"loop-link-background"}).attr("width",function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+4}).attr("height",function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+2}).attr("transform",function(t){var e=2-y/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(2+t.calculatedHeight/2)+")"}).on("click",function(t){t.stopPropagation()}),C=k.selectAll(".node").data(S).enter().append("g"),P=C.filter(function(t){return t.objectPropClassUri!==R}).append("circle").each(function(t){var e=o.select(this);"main"===t.classPosition?e.attrs({class:"class-node",r:y}).attr("marker-end","url("+c.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attrs({class:"datatype-node",r:m}):e.attrs({class:"object-prop-node",r:x})}).call(E);function z(e,r,a){u.$apply(function(){t.$broadcast("reloadDomainRangeGraphView",r,a)})}o.selectAll(".object-prop-node").on("dblclick",z),C.filter(function(t){return t.objectPropClassName&&t.objectPropClassUri!==R}).append("text").attr("class",function(t){return t.classPosition+"-class-label"}).style("font-size",v).text(function(t){return t.objectPropClassName}).on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.objectPropClassUri),"_blank")});var U=C.select("text");k.select(".class-node").each(function(){o.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",function(t){return n.A.Text.calcFontSize(A,y)}).text(A).on("click",function(){e.open("resource?uri="+encodeURIComponent(R),"_blank")})});var j=k.select(".class-node + text"),T=o.select(".class-node"),M=o.selectAll(".loop-link-background"),O=o.selectAll(".loop-link-property-name");if(N=o.selectAll(".property-name"),!angular.isUndefined(i)){var D=[];M.each(function(t,e){o.select(this),D.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})})}function F(t){var e=8*w.alpha();function r(t){var e=t.x+2*y,r=t.y-35.08771929824562;var a=[];M.each(function(n,s){a.push(n),s<h?function(a,n){var o=$.grep(D,function(t){return t.idx==n});n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attrs({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(o.select(this),s):o.select(this).remove()}),function(t){var e;o.select(".view-more-preds-label").style("font-weight","bold").each(function(r){r.target.allEdges=t,e=this.getComputedTextLength()}).on("click",W),o.select(".view-more-preds-rect").attr("height",e+4)}(a)}s.filter(function(t){return t.objectPropNodeClassUri!==R}).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}),P.each(function(t){"main"!==t.classPosition||angular.isUndefined(i)||(function(t){var e=t.x+64,r=t.y-y/5.7-5;i.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(D,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*y-n;e.attrs({x:o,y:s}).moveToFront()}O.each(function(t,r){var a=o.select(this),n=O.size()-h;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,o.select(this.nextSibling),n),e(a,r)),r<h?e(a,r):a.remove())})}(t),r(t)),t.objectPropClassUri!==R&&o.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=T.attr("cx")-600,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})}),j.attr("x",function(t){return t.x}).attr("y",function(t){return t.y}).moveToFront(),L.filter(function(t){return t.objectPropNodeClassUri!==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(),N.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(),U.attr("x",function(t){return"right"===t.classPosition?t.x+13.09090909090909:t.x-13.09090909090909}).attr("y",function(t){return t.y}).moveToFront()}w.on("tick",F)}});let C=!1}(u)},50);u.$on("$destroy",function(){d.cancel(f)})}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","var(--gw-primary-base)").constant("ONTO_GREEN","var(--gw-tertiary-base)").constant("ONTO_BLUE","var(--gw-secondary-base)").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",s),s.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}};
|
|
2
|
-
//# sourceMappingURL=65677.
|
|
1
|
+
export const __webpack_esm_id__=65677;export const __webpack_esm_ids__=[65677];export const __webpack_esm_modules__={65677(t,e,r){var a=r(66886),n=r(9508),o=(r(38473),r(44482));function s(t,e,r,s,c,i,l,d,p,u,f,g,h){return{restrict:"AE",template:'<div id="domain-range"></div>',scope:{showPredicatesInfoPanel:"=",selectedPredicate:"=",collapseEdges:"="},link:function(u){const f=d(function(){!function(u){var f=1200,y=f/18,x=f/110,m=x/2,v=f/90,b=1.2,k=o.select("#domain-range").append("svg").attr("viewBox","0 0 1200 600").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null),w=o.forceSimulation(),E=o.drag().subject(function(t){return t}).on("start",function(t,e){w.stop(),e.fx=t.x,e.fy=t.y,o.select(this).classed("selected",!0)}).on("end",function(t,e){e.fx=null,e.fy=null,o.select(this).classed("selected",!1),C?(w.alpha(.2).restart(),C=!1):w.restart()}).on("drag",function(t,e){C=!0,w.alphaTarget(0).restart(),e.fx=t.x,e.fy=t.y}),N=k.append("defs");N.append("marker").attrs({id:"arrow",viewBox:"0 -5 10 10",refX:10,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"collapsed-arrow",viewBox:"0 -5 10 10",refX:9,refY:0,markerUnits:"strokeWidth",markerWidth:4,markerHeight:4,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),N.append("marker").attrs({id:"arrow-loop",viewBox:"0 -5 10 10",refX:7,refY:0,markerUnits:"strokeWidth",markerWidth:5,markerHeight:5,orient:"auto",fill:g}).append("path").attrs({d:"M0,-5L10,0L0,5",class:"arrowHead"}),o.select("#download-svg").on("mouseover",function(){var t=a.A.Export.getCSSRules("css/domain-range-graph.css?v=3.5.1-RC2");$("defs").append('<style type="text/css"><![CDATA['+t+"]]></style>");var e=a.A.Export.generateBase64ImageSource("#domain-range svg");o.select(this).attrs({href:e,download:"domain-range-graph-"+r.getActiveRepository()+".svg"})}),function(){var t=f/7,e=205.7142857142857,r=o.select(".legend-container").append("svg").attr("viewBox","0 0 "+t+" "+e).attr("preserveAspectRatio","xMidYMid meet");r.append("rect").attrs({width:t,height:e}).style("fill","rgba(235, 235, 235, 0.9)");var a=16,n=42.66666666666667,s=n+f/90,i=v/1.1,l=(r.append("circle").attrs({class:"legend-class-node",cx:29.333333333333336,cy:30,r:y/4.5}),30+f/370);r.append("text").attrs({x:s,y:l}).style("font-size",i+"px").text("main class node"),r.append("circle").attrs({class:"legend-object-node",cx:29.333333333333336,cy:70,r:8.727272727272727});var d=l+40;r.append("text").attrs({x:s,y:d}).style("font-size",i+"px").text("class node");var p=70+f/45;r.append("circle").attrs({class:"legend-datatype-node",cx:29.333333333333336,cy:p,r:m});var u=d+f/45;r.append("text").attrs({x:s,y:u}).style("font-size",i+"px").text("datatype node");var g=123.33333333333334;r.append("line").attrs({class:"property-arrow",x1:a,y1:g,x2:n,y2:g}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:126.57657657657658}).style("font-size",i+"px").text("explicit property");var h=150;r.append("line").attrs({class:"implicit-property-arrow",x1:a,y1:h,x2:n,y2:h}).style("stroke-width",b).attr("marker-end","url("+c.absUrl()+"#arrow)"),r.append("text").attrs({x:s,y:153.24324324324326}).style("font-size",i+"px").text("implicit property");var x=176.66666666666666;r.append("line").attrs({class:"collapsed-property-arrow",x1:a,y1:x,x2:n,y2:x}).style("stroke-width",2).attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)"),r.append("text").attrs({x:s,y:179.9099099099099}).style("font-size",i+"px").text("collapsed property")}();var R=c.search().uri,A=c.search().name;const L=c.search().collapsed;(function(t,e){s.getDomainRangeData(t,e).success(function(t,e,r){u.domainRangeGraphData=t}).error(function(t){p.error("Request for "+A+" failed!")})})(R,L),$(window).on("popstate",function(){i.set(l.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(l.DOMAIN_RANGE_COLLAPSE_EDGES,u.collapseEdges),"true"!==i.get(l.DOMAIN_RANGE_WENT_BACK)&&function(e){t.$broadcast("switchEdgeMode",{uri:R,name:A,collapsed:e})}(u.collapseEdges),i.remove(l.DOMAIN_RANGE_WENT_BACK))}),u.$watch("domainRangeGraphData",function(){if(u.domainRangeGraphData){var r=_.cloneDeep(u.domainRangeGraphData);const S=r.nodes,I=r.links;w.nodes(S).force("x",o.forceX(600)).force("y",o.forceY(300)).force("charge",o.forceManyBody().strength(-800)).force("link",o.forceLink(I).distance(f/3.5));var a=k.selectAll(".link").data(I).enter().append("g");function B(t){t.style("stroke",g),t.style("stroke-width",2),t.attr("marker-end","url("+c.absUrl()+"#collapsed-arrow)")}var s,i,l=0;a.each(function(t){if(t.objectPropNodeClassUri!==R)s=a.append("line").attrs({class:"link","marker-end":"url("+c.absUrl()+"#arrow)"}).style("stroke-width",b).each(function(t){switch(t.propertyType){case"objectLeft":t.targetRadius=y;break;case"objectRight":t.targetRadius=x;break;case"datatype":t.targetRadius=m;break;default:t.targetRadius=0}var e=o.select(this);t.targetNodeEdgeCount>1?B(e):t.implicit&&e.style("stroke-dasharray","3, 3")});else{if(angular.isUndefined(i)){var e=y/2;i=o.select(this).append("path").attrs({d:"M 0 0 A "+e+" "+e+" 0 1 1 0 "+e,class:"loop-link",fill:"none","marker-end":"url("+c.absUrl()+"#arrow-loop)"}).style("stroke-width",b)}(l+=t.targetNodeEdgeCount)>1&&B(o.select(".loop-link"))}});var p={};function G(){$.isEmptyObject(p)||(p.text.style("fill","black"),p.background.style("fill","#f0f0f0"))}function W(t,e){G(),p.text=o.select(this),p.background=o.select(this.previousSibling),p.text.style("fill","white"),p.background.style("fill",g),d(function(){u.showPredicatesInfoPanel=!0,u.selectedPredicate=e}),t.stopPropagation()}$("document").ready(function(){$("#domain-range").bind("click",G)});var N=a.append("text").attr("class",function(t){return t.objectPropNodeClassUri===R?"loop-link-property-name":"property-name"}).attr("dx",function(t){return y/2*("objectLeft"===t.propertyType?1:-1)}).style("text-anchor",function(t){return"objectLeft"===t.propertyType?"end":"start"}).style("font-size",v).text(function(t){return t.targetNodeEdgeCount>1?t.targetNodeEdgeCount+" predicates":t.name});N.each(function(t){var r=o.select(this);/\d\spredicates/.test(r.text())?r.style("font-weight","bold").on("click",W):r.on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.uri),"_blank")})});var L=a.append("rect").attr("class",function(t){return t.objectPropNodeClassUri!==R?"link-background":"loop-link-background"}).attr("width",function(t){return t.calculatedWidth=this.previousSibling.getBBox().width,t.calculatedWidth+4}).attr("height",function(t){return t.calculatedHeight=this.previousSibling.getBBox().height,t.calculatedHeight+2}).attr("transform",function(t){var e=2-y/2*("objectLeft"===t.propertyType?1:-1);return"objectLeft"===t.propertyType&&(e+=t.calculatedWidth),"translate(-"+e+",-"+(2+t.calculatedHeight/2)+")"}).on("click",function(t){t.stopPropagation()}),C=k.selectAll(".node").data(S).enter().append("g"),P=C.filter(function(t){return t.objectPropClassUri!==R}).append("circle").each(function(t){var e=o.select(this);"main"===t.classPosition?e.attrs({class:"class-node",r:y}).attr("marker-end","url("+c.absUrl()+"#loop-link)"):null===t.objectPropClassName?e.attrs({class:"datatype-node",r:m}):e.attrs({class:"object-prop-node",r:x})}).call(E);function z(e,r,a){u.$apply(function(){t.$broadcast("reloadDomainRangeGraphView",r,a)})}o.selectAll(".object-prop-node").on("dblclick",z),C.filter(function(t){return t.objectPropClassName&&t.objectPropClassUri!==R}).append("text").attr("class",function(t){return t.classPosition+"-class-label"}).style("font-size",v).text(function(t){return t.objectPropClassName}).on("click",function(t,r){e.open("resource?uri="+encodeURIComponent(r.objectPropClassUri),"_blank")});var U=C.select("text");k.select(".class-node").each(function(){o.select(this.parentNode).append("text").attr("class","rdf-class-label").style("font-size",function(t){return n.A.Text.calcFontSize(A,y)}).text(A).on("click",function(){e.open("resource?uri="+encodeURIComponent(R),"_blank")})});var j=k.select(".class-node + text"),T=o.select(".class-node"),M=o.selectAll(".loop-link-background"),O=o.selectAll(".loop-link-property-name");if(N=o.selectAll(".property-name"),!angular.isUndefined(i)){var D=[];M.each(function(t,e){o.select(this),D.push({idx:e,width:t.calculatedWidth,height:t.calculatedHeight})})}function F(t){var e=8*w.alpha();function r(t){var e=t.x+2*y,r=t.y-35.08771929824562;var a=[];M.each(function(n,s){a.push(n),s<h?function(a,n){var o=$.grep(D,function(t){return t.idx==n});n>0&&(e+=parseFloat(n*(o[0].height/(n/1.4)))),a.attrs({transform:"rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")",width:o[0].height,height:o[0].width})}(o.select(this),s):o.select(this).remove()}),function(t){var e;o.select(".view-more-preds-label").style("font-weight","bold").each(function(r){r.target.allEdges=t,e=this.getComputedTextLength()}).on("click",W),o.select(".view-more-preds-rect").attr("height",e+4)}(a)}s.filter(function(t){return t.objectPropNodeClassUri!==R}).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}),P.each(function(t){"main"!==t.classPosition||angular.isUndefined(i)||(function(t){var e=t.x+64,r=t.y-y/5.7-5;i.attr("transform","rotate(270, "+t.x+","+t.y+") translate("+e+","+r+")")}(t),function(t){function e(e,r){var a=$.grep(D,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*y-n;e.attrs({x:o,y:s}).moveToFront()}O.each(function(t,r){var a=o.select(this),n=O.size()-h;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,o.select(this.nextSibling),n),e(a,r)),r<h?e(a,r):a.remove())})}(t),r(t)),t.objectPropClassUri!==R&&o.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=T.attr("cx")-600,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})}),j.attr("x",function(t){return t.x}).attr("y",function(t){return t.y}).moveToFront(),L.filter(function(t){return t.objectPropNodeClassUri!==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(),N.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(),U.attr("x",function(t){return"right"===t.classPosition?t.x+13.09090909090909:t.x-13.09090909090909}).attr("y",function(t){return t.y}).moveToFront()}w.on("tick",F)}});let C=!1}(u)},50);u.$on("$destroy",function(){d.cancel(f)})}}}angular.module("graphdb.framework.graphexplore.directives.domainrange",["graphdb.framework.graphexplore.controllers.domainrange","graphdb.framework.utils.localstorageadapter"]).constant("ONTO_RED","var(--gw-primary-base)").constant("ONTO_GREEN","var(--gw-tertiary-base)").constant("ONTO_BLUE","var(--gw-secondary-base)").constant("NON_COLLAPSED_REFLEXIVE_LINK_LIMIT",6).directive("domainRangeGraph",s),s.$inject=["$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT"]}};
|
|
2
|
+
//# sourceMappingURL=65677.18df5c2d9a605f6db5fc.bundle.js.map
|
package/dist/{65677.5114a3c7a59d95ca6393.bundle.js.map → 65677.18df5c2d9a605f6db5fc.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"65677.5114a3c7a59d95ca6393.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"sourcesContent":["import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\nimport * as d3 from 'd3';\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', 'var(--gw-primary-base)')\n .constant('ONTO_GREEN', 'var(--gw-tertiary-base)')\n .constant('ONTO_BLUE', 'var(--gw-secondary-base)')\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 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 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 force = d3.forceSimulation();\n\n var drag = d3.drag()\n .subject(function (d) {\n return d;\n })\n .on(\"start\", dragStart)\n .on(\"end\", dragEnd)\n .on(\"drag\", dragged);\n\n var defs = svg.append(\"defs\");\n generateMarkers(defs);\n\n function generateMarkers(defElement) {\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\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=3.5.1-RC1\");\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(\"#domain-range svg\");\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attrs({\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 generateLegend();\n\n function generateLegend() {\n // start of code for legend\n\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 legendCellGroup\n .append(\"line\")\n .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n const collapsed = $location.search().collapsed;\n\n getDomainRangeData(selectedRdfUri, collapsed);\n\n function getDomainRangeData(selectedRdfUri, collapsed) {\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\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 = _.cloneDeep(scope.domainRangeGraphData);\n\n const nodes = graph.nodes;\n const links = graph.links;\n\n force.nodes(nodes)\n .force('x', d3.forceX(width / 2))\n .force('y', d3.forceY(height / 2))\n .force(\"charge\", d3.forceManyBody().strength(-800))\n .force(\"link\", d3.forceLink(links).distance(width / 3.5))\n\n var linkGroup = svg.selectAll(\".link\")\n .data(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 .attrs({\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 .attrs({\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(event, 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 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 (event, 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 (event) {\n event.stopPropagation();\n });\n\n\n var nodeGroup = svg.selectAll(\".node\")\n .data(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.attrs({\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.attrs({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attrs({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(event, 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 (event, d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n svg.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 () {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = svg.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 * force.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 .attrs({\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 .attrs({\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 force.on(\"tick\", tick)\n\n }\n });\n\n let isDragged = false;\n\n function dragStart(event, d) {\n force.stop();\n d.fx = event.x;\n d.fy = event.y;\n d3.select(this).classed(\"selected\", true);\n\n }\n\n // Update the subject (dragged node) position during drag.\n function dragged(event, d) {\n isDragged = true;\n\n force.alphaTarget(0).restart();\n d.fx = event.x;\n d.fy = event.y;\n }\n\n // Restore the target alpha so the simulation cools after dragging ends.\n // Unfix the subject position now that it’s no longer being dragged.\n function dragEnd(event, d) {\n d.fx = null;\n d.fy = null;\n d3.select(this).classed(\"selected\", false);\n if (isDragged) {\n force.alpha(0.2).restart();\n isDragged = false;\n } else {\n force.restart();\n }\n }\n\n }\n}\n"],"names":["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","width","mainClassSize","otherClassSize","datatypeSize","labelFontSize","basicArrowStrokeWidth","svg","d3","append","attr","on","force","drag","subject","d","event","stop","fx","x","fy","y","this","classed","isDragged","alpha","restart","alphaTarget","defs","attrs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","cssRules","SVG","Export","getCSSRules","$","imgSrc","generateBase64ImageSource","href","download","getActiveRepository","legendBackgroundWidth","legendBackgroundHeight","legendCellGroup","height","style","sourceX","targetX","legendTextX","legendLabelFontSize","classNodeTextY","cx","cy","r","text","classNodeY","objectNodeTextY","datatypeNodeY","datatypeNodeTextY","basicPropertyArrowY","x1","y1","x2","y2","absUrl","implicitPropArrowY","collapsedPropArrowY","generateLegend","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","window","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","_","cloneDeep","nodes","links","strength","distance","linkGroup","selectAll","data","enter","styleArrowsInCollapsedMode","sel","loopLink","loopLinkEdgeCount","each","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","loopLinkSize","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","encodeURIComponent","linkRect","calculatedWidth","getBBox","textPadding","calculatedHeight","translateX","nodeGroup","node","filter","objectPropClassUri","classPosition","objectPropClassName","call","reloadDomainRangeGraphView","$apply","select","parentNode","D3","Text","calcFontSize","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","tick","e","k","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","targetY","pushEdgesToLeftAndRight","angle","Math","atan2","cos","sin","loopTranslateX","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","moveToFront","predicatesLeft","size","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","ActiveXObject","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"65677.18df5c2d9a605f6db5fc.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"sourcesContent":["import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\nimport * as d3 from 'd3';\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', 'var(--gw-primary-base)')\n .constant('ONTO_GREEN', 'var(--gw-tertiary-base)')\n .constant('ONTO_BLUE', 'var(--gw-secondary-base)')\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 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 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 force = d3.forceSimulation();\n\n var drag = d3.drag()\n .subject(function (d) {\n return d;\n })\n .on(\"start\", dragStart)\n .on(\"end\", dragEnd)\n .on(\"drag\", dragged);\n\n var defs = svg.append(\"defs\");\n generateMarkers(defs);\n\n function generateMarkers(defElement) {\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attrs({\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 .attrs({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\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=3.5.1-RC2\");\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(\"#domain-range svg\");\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attrs({\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 generateLegend();\n\n function generateLegend() {\n // start of code for legend\n\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 legendCellGroup\n .append(\"line\")\n .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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 .attrs({\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\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n const collapsed = $location.search().collapsed;\n\n getDomainRangeData(selectedRdfUri, collapsed);\n\n function getDomainRangeData(selectedRdfUri, collapsed) {\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\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 = _.cloneDeep(scope.domainRangeGraphData);\n\n const nodes = graph.nodes;\n const links = graph.links;\n\n force.nodes(nodes)\n .force('x', d3.forceX(width / 2))\n .force('y', d3.forceY(height / 2))\n .force(\"charge\", d3.forceManyBody().strength(-800))\n .force(\"link\", d3.forceLink(links).distance(width / 3.5))\n\n var linkGroup = svg.selectAll(\".link\")\n .data(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 .attrs({\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 .attrs({\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(event, 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 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 (event, 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 (event) {\n event.stopPropagation();\n });\n\n\n var nodeGroup = svg.selectAll(\".node\")\n .data(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.attrs({\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.attrs({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attrs({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(event, 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 (event, d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n svg.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 () {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = svg.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 * force.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 .attrs({\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 .attrs({\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 force.on(\"tick\", tick)\n\n }\n });\n\n let isDragged = false;\n\n function dragStart(event, d) {\n force.stop();\n d.fx = event.x;\n d.fy = event.y;\n d3.select(this).classed(\"selected\", true);\n\n }\n\n // Update the subject (dragged node) position during drag.\n function dragged(event, d) {\n isDragged = true;\n\n force.alphaTarget(0).restart();\n d.fx = event.x;\n d.fy = event.y;\n }\n\n // Restore the target alpha so the simulation cools after dragging ends.\n // Unfix the subject position now that it’s no longer being dragged.\n function dragEnd(event, d) {\n d.fx = null;\n d.fy = null;\n d3.select(this).classed(\"selected\", false);\n if (isDragged) {\n force.alpha(0.2).restart();\n isDragged = false;\n } else {\n force.restart();\n }\n }\n\n }\n}\n"],"names":["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","width","mainClassSize","otherClassSize","datatypeSize","labelFontSize","basicArrowStrokeWidth","svg","d3","append","attr","on","force","drag","subject","d","event","stop","fx","x","fy","y","this","classed","isDragged","alpha","restart","alphaTarget","defs","attrs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","cssRules","SVG","Export","getCSSRules","$","imgSrc","generateBase64ImageSource","href","download","getActiveRepository","legendBackgroundWidth","legendBackgroundHeight","legendCellGroup","height","style","sourceX","targetX","legendTextX","legendLabelFontSize","classNodeTextY","cx","cy","r","text","classNodeY","objectNodeTextY","datatypeNodeY","datatypeNodeTextY","basicPropertyArrowY","x1","y1","x2","y2","absUrl","implicitPropArrowY","collapsedPropArrowY","generateLegend","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","window","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","_","cloneDeep","nodes","links","strength","distance","linkGroup","selectAll","data","enter","styleArrowsInCollapsedMode","sel","loopLink","loopLinkEdgeCount","each","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","loopLinkSize","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","encodeURIComponent","linkRect","calculatedWidth","getBBox","textPadding","calculatedHeight","translateX","nodeGroup","node","filter","objectPropClassUri","classPosition","objectPropClassName","call","reloadDomainRangeGraphView","$apply","select","parentNode","D3","Text","calcFontSize","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","tick","e","k","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","targetY","pushEdgesToLeftAndRight","angle","Math","atan2","cos","sin","loopTranslateX","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","moveToFront","predicatesLeft","size","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","ActiveXObject","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const __webpack_esm_id__=73334;export const __webpack_esm_ids__=[73334,85256];export const __webpack_esm_modules__={73334(n,e,t){t(10500),t(85256);const o=t(71315).I.logger,r="MASKED_SENSITIVE_FIELD";function i(n){const e=[];return Object.keys(n).forEach(function(t){e.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]))}),e.join("&")}function a(n){return _.map(n,function(n,e){return{key:e,value:n}})}function c(n,e){return _.reduce(n,function(n,t){if(""===t.key&&""===t.value);else{if(""===t.key)throw new Error(e.instant("externalsync.empty.value.key.error",{value:t.value}));if(n.hasOwnProperty(t.key))throw new Error(e.instant("externalsync.duplicate.key.error",{key:t.key}));n[t.key]=t.value}return n},{})}function s(n,e){for(let t=0;t<e.length;t++){const o=e[t];if("StringArray"===o.__type)n[o.__name]||(n[o.__name]=[""]);else if("OptionArray"===o.__type)if(n[o.__name])for(let e=0;e<o.__childOptions.length;e++){const t=o.__childOptions[e];if("Boolean"===t.__type)for(let e=0;e<n[o.__name].length;e++){const r=n[o.__name][e];!r.hasOwnProperty([t.__name])&&angular.isDefined(t.__defaultValue)&&(r[t.__name]=t.__defaultValue)}}else{n[o.__name]=[];const e={};for(let n=0;n<o.__childOptions.length;n++){const t=o.__childOptions[n];"StringArray"===t.__type?e[t.__name]=[""]:e[t.__name]=angular.isUndefined(t.__defaultValue)?"":t.__defaultValue}n[o.__name].push(e)}else"Map"===o.__type?n[o.__name]?n[o.__name]=a(n[o.__name]):n[o.__name]=[]:"JsonString"===o.__type?!n[o.__name]||n[o.__name]instanceof String||"string"==typeof n[o.__name]||(n[o.__name]=angular.toJson(n[o.__name],2)):angular.isUndefined(n[o.__name])&&(n[o.__name]=angular.isUndefined(o.__defaultValue)?"":o.__defaultValue)}return n}function l(n,e,t){return n.post("repositories/"+e,i({query:t}),{headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/sparql-results+json","X-GraphDB-Local-Consistency":"updating"}})}function u(n){return n.substring(0,n.length-1)+"/instance#"}function p(n,e,t,o,i,a=!0){const s=function n(e,t){const o={};return _.each(t,function(t){angular.isDefined(e[t.__name])&&("OptionArray"===t.__type?(o[t.__name]=[],_.each(e[t.__name],function(e){o[t.__name].push(n(e,t.__childOptions))})):o[t.__name]=_.cloneDeep(e[t.__name]))}),o}(t,o);for(let n=0;n<o.length;n++)try{"Map"===o[n].__type?s[o[n].__name]=c(s[o[n].__name],$translate):"JsonString"===o[n].__type?s[o[n].__name]=angular.fromJson(s[o[n].__name]):a&&!0===o[n].__sensitive&&s[o[n].__name]&&(s[o[n].__name]=r)}catch(e){return i(o[n].__label,e.message),null}f(s);let l="";return l+="PREFIX :<"+e+">\n",l+="PREFIX inst:<"+u(e)+">\n",l+="INSERT DATA {\n",l+="\tinst:"+n+" :createConnector '''\n",l+=angular.toJson(s,2),l=l.replaceAll(`"${r}"`,r),l+="\n''' .\n}\n",l=l.replace(/\\/g,"\\\\\\"),l}function f(n){return Array.isArray(n)&&(n=_.filter(n,function(n){return null!==n&&(!n.trim||""!==n.trim())})),Object.keys(n).forEach(function(e){""!==n[e]&&null!==n[e]&&void 0!==n[e]||!1===n[e]?"object"==typeof n[e]&&(n[e]=f(n[e])):delete n[e]}),n}function d(n,e,t,r,a,c,f,d,g,m){function y(e){n.beingBuiltConnector={percentDone:0,status:{processedEntities:0,estimatedEntities:0,indexedEntities:0,entitiesPerSecond:0},actionName:e?m.instant("externalsync.repairing"):m.instant("externalsync.creating"),waitOnRepairStartOnce:!!e,eta:"-",inline:!1,iri:null}}function C(e,t,o){return y(o),$.extend(n.beingBuiltConnector,{iri:u(e)+t,name:t,inline:!1,doneCallback:function(){n.beingBuiltConnector.modalInstance.dismiss("cancel")}}),n.beingBuiltConnector.modalInstance=r.open({templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",size:"lg",backdrop:"static",scope:n}),n.beingBuiltConnector.modalInstance}function h(e,o,r){const c=C(e.value,o.name,!1);d.addStatements(t.getActiveRepository(),i({update:o.query})).then(function(){g.getConnectors().then(function(){g.hasConnector(encodeURIComponent(e.value)).then(function(t){n.existing[e.key]=t.data})}),a.success(m.instant("created.connector",{name:o.name}))},function(n){a.error(getError(n)),r()}).finally(function(){c.dismiss("cancel")})}n.loader=!1,n.controllers=[],n.existing={},n.definitions={},n.getLoaderMessage=function(){const e=(Date.now()-n.loaderStartTime)/1e3,t=n.getHumanReadableSeconds(e);let o="";return o=n.progressMessage?n.progressMessage+"... "+t:m.instant("common.running.operation",{timeHuman:t}),n.extraMessage&&e>10&&(o+="\n"+n.extraMessage),o},n.setLoader=function(e,t,o){e?(n.loader=!0,n.loaderStartTime=Date.now(),n.progressMessage=t,n.extraMessage=o):(n.loader=!1,n.progressMessage="",n.extraMessage="")},n.initConnector=function(e){return g.initConnector(encodeURIComponent(e.value)).then(function(t){return n.definitions[e.key]=t.data,g.hasConnector(encodeURIComponent(e.value)).then(function(t){n.existing[e.key]=t.data})})},n.getConnectors=function(){n.isLicenseValid()&&n.canWriteActiveRepo()&&(n.setLoader(!0,m.instant("externalsync.fetching.connectors"),m.instant("common.extra.message")),g.getConnectors().then(function(r){n.connectors=Object.keys(r.data).map(function(n){return{key:n,value:r.data[n]}}),f.all(_.map(n.connectors,function(e){return n.initConnector(e)})).finally(function(){y();const r=function(n){const e=_.map(n,function(n){return"<"+n.value+"connectorStatus>"}).join("|");return e?"SELECT ?connector ?status { ?connector "+e+" ?status }":null}(n.connectors);r?function(n){return l(e,t.getActiveRepository(),n)}(r).then(function(e){const t=function(n){if(n.bindings)for(let e=0;e<n.bindings.length;e++)try{const t=JSON.parse(n.bindings[e].status.value);if("BUILDING"===t.status)return{connector:n.bindings[e].connector.value,status:t}}catch(n){o.error(n)}return{}}(e.data.results);if(t.connector){const e=t.connector.split(/#/);e[0]=e[0].replace(/\/instance$/,"#"),r=e[0],i=e[1],y(),$.extend(n.beingBuiltConnector,{iri:u(r)+i,name:i,inline:!0,doneCallback:function(){n.beingBuiltConnector.inline=!1}})}var r,i}).finally(function(){n.setLoader(!1)}):n.setLoader(!1)})}).catch(function(e){n.setLoader(!1),a.error(getError(e),m.instant("externalsync.could.not.get.connectors.error"))}),n.existing={})},n.getOptions=function(e){return n.definitions[e.key]},n.isEmpty=function(n){return angular.isObject(n)&&0===Object.keys(n).length},n.toPrettyJson=function(n){return angular.toJson(n,2)},n.$watch(function(){return t.getActiveRepository()},n.getConnectors),n.$watch(function(){return t.getActiveLocation()},n.getConnectors),n.copyConnector=function(e,t){let o;angular.isUndefined(t)||(o=_.cloneDeep(t),o.name=o.name+"-copy"),r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(o)?{name:"",values:{}}:o},options:function(){return n.getOptions(e)}}}).result.then(function(t){h(e,t,function(){t.skipConversion=!0,n.newConnector(e,t)})})},n.newConnector=function(e,t){r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(t)?{name:"",values:{}}:t},options:function(){return n.getOptions(e)}}}).result.then(function(t){h(e,t,function(){t.skipConversion=!0,n.newConnector(e,t)})})},n.repair=function(e,o){c.openSimpleModal({title:m.instant("externalsync.confirm.repair"),message:m.instant("externalsync.repair.warning.msg"),warning:!0}).result.then(function(){const r=C(o.value,e.name,!0),c=(s=e.name,"PREFIX prefix:<"+(l=o.value)+">\nINSERT DATA {\n\t<"+u(l)+s+'> prefix:repairConnector ""\n}');var s,l;d.addStatements(t.getActiveRepository(),i({update:c})).then(function(){g.getConnectors().then(function(){g.hasConnector(encodeURIComponent(o.value)).then(function(e){n.existing[o.key]=e.data})}),a.success(m.instant("externalsync.repair.success.msg",{name:e.name}))},function(n){a.error(getError(n))}).finally(function(){r.dismiss("cancel")})})},n.delete=function(e,o){const c=o.key.indexOf("Elastic")>=0||o.key.indexOf("Solr")>=0;r.open({templateUrl:"js/angular/externalsync/templates/deleteConnector.html",controller:"DeleteConnectorCtrl",resolve:{popoverMsg:function(){return c?m.instant("delete.connector.conditional",{type:o.key}):""}}}).result.then(function(r){n.setLoader(!0,m.instant("externalsync.delete.progress.msg",{name:e.name}),m.instant("externalsync.extra.message.warning"));const s=function(n,e,t){const o=e.substring(0,e.length-1)+"/instance#";return"PREFIX prefix:<"+e+">\nINSERT DATA {\n\t<"+o+n+'> prefix:dropConnector "'+(t?"force":"")+'"\n}'}(e.name,o.value,r);d.addStatements(t.getActiveRepository(),i({update:s})).then(function(){g.getConnectors().then(function(){g.hasConnector(encodeURIComponent(o.value)).then(function(e){n.existing[o.key]=e.data})}),r?(a.success(m.instant("externalsync.delete.force.success.msg",{name:e.name})),c&&a.warning(m.instant("externalsync.delete.remote.warning",{key:o.key}))):a.success(m.instant("externalsync.delete.success.msg",{name:e.name}))},function(n){a.error(getError(n))}).finally(function(){n.setLoader(!1)})})},n.viewQuery=function(e,t){r.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){const o=n.getOptions(e);return p(t.name,e.value,s(t.values,o),o)}}})}}function g(n,e,t){n.force=!1,n.popoverMsg=t,n.ok=function(){e.close(n.force)},n.cancel=function(){e.dismiss()}}function m(n,e,t,o,r){function i(e=!0){return p(n.name,t.value,n.values,n.options,function(n,e){r.error(e,n)},e)}n.connector=t,n.addField=function(e,t){const o=_.cloneDeep(n.defaultValues[t][0]);n.values[t].splice(e+1,0,o)},n.addOption=function(n,e){e.splice(n+1,0,"")},n.deleteOption=function(n,e){e.splice(n,1)},n.addMapOption=function(n,e){e.splice(n+1,0,{key:"",value:""})},n.deleteMapOption=function(n,e){e.splice(n,1)},n.ok=function(){if(n.form.$valid){const t=i(!1);t&&e.close({name:n.name,values:n.values,options:n.options,query:t})}},n.viewQuery=function(){const n=i(!0);n&&o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return n}}})},n.cancel=function(){e.dismiss("cancel")}}function y(n,e,t,o,r,i,a,c){angular.extend(this,e("ExtendNewConnectorCtrl",{$scope:n,$uibModalInstance:o,connector:r,$uibModal:i})),n.values=a.values,n.options=c,n.name=a.name,a.skipConversion||(n.values=s(n.values,n.options)),n.defaultValues=_.cloneDeep(n.values)}function C(n,e,t,r,i){function a(){const a=function(n){const e=n.replace(/\/instance#.+$/,"#connectorStatus");let t="";return t+="SELECT ?status {\n",t+="\t<"+n+"> <"+e+"> ?status",t+="\n}",t}(n.beingBuiltConnector.iri);n.beingBuiltConnector.iri=null,n.progressInterval=e(function(){(function(n){return l(t,r.getActiveRepository(),n)})(a).then(function(t){const r=function(n){if(n.bindings&&n.bindings.length>0)try{return JSON.parse(n.bindings[0].status.value)}catch(n){o.error(n)}return{}}(t.data.results);"BUILDING"===r.status?(n.beingBuiltConnector.status=r,n.beingBuiltConnector.percentDone=(100*r.processedEntities/r.estimatedEntities).toFixed(0),n.beingBuiltConnector.eta=n.getHumanReadableSeconds(r.etaSeconds),n.beingBuiltConnector.actionName=r.repair?i.instant("externalsync.repairing"):i.instant("externalsync.creating"),n.beingBuiltConnector.waitOnRepairStartOnce=!1):"BUILT"!==r.status||n.beingBuiltConnector.waitOnRepairStartOnce||(e.cancel(n.progressInterval),n.beingBuiltConnector.doneCallback&&n.beingBuiltConnector.doneCallback())})},1e3),n.$on("$destroy",function(){e.cancel(n.progressInterval)})}n.beingBuiltConnector=n.beingBuiltConnector||{},!n.beingBuiltConnector.inline&&n.beingBuiltConnector.iri&&a(),n.$watch("beingBuiltConnector.iri",function(e){n.beingBuiltConnector.inline&&e&&a()})}angular.module("graphdb.framework.externalsync.controllers",["graphdb.framework.rest.rdf4j.repositories.service","graphdb.framework.rest.connectors.service"]).controller("ConnectorsCtrl",d).controller("ExtendNewConnectorCtrl",m).controller("CreateConnectorCtrl",y).controller("CreateProgressCtrl",C).controller("DeleteConnectorCtrl",g).filter("ceil",function(){return function(n){return Math.ceil(n)}}),d.$inject=["$scope","$http","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","ConnectorsRestService","$translate"],g.$inject=["$scope","$uibModalInstance","popoverMsg"],m.$inject=["$scope","$uibModalInstance","connector","$uibModal","toastr"],y.$inject=["$scope","$controller","$http","$uibModalInstance","connector","$uibModal","values","options"],C.$inject=["$scope","$interval","$http","$repositories","$translate"]},85256(){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",e),e.$inject=["$http"];const n="rest/connectors";function e(e){return{getConnectors:function(t,o){return t?e.get(n,{headers:{"X-GraphDB-Repository":t,"X-GraphDB-Repository-Location":o}}):e.get(n)},initConnector:function(t){return e.get(`${n}/options?prefix=${t}`)},hasConnector:function(t,o,r){return o?e.get(`${n}/existing?prefix=${t}`,{headers:{"X-GraphDB-Repository":o,"X-GraphDB-Repository-Location":r}}):e.get(`${n}/existing?prefix=${t}`)},checkConnector:function(t){return e.post(`${n}/check`,t,{headers:{"Content-Type":"text/plain"}})}}}}};
|
|
2
|
+
//# sourceMappingURL=73334.1487d58b7e885510d107.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"73334.1487d58b7e885510d107.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/externalsync/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/connectors.rest.service.js"],"sourcesContent":["import 'angular/rest/rdf4j.repositories.rest.service';\nimport 'angular/rest/connectors.rest.service';\nimport {LoggerProvider} from \"../core/services/logger-provider\";\n\nconst modules = [\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'graphdb.framework.rest.connectors.service',\n];\n\nconst logger = LoggerProvider.logger;\nconst SENSITIVE_FIELD_MASK = 'MASKED_SENSITIVE_FIELD';\n\nangular\n .module('graphdb.framework.externalsync.controllers', modules)\n .controller('ConnectorsCtrl', ConnectorsCtrl)\n .controller('ExtendNewConnectorCtrl', ExtendNewConnectorCtrl)\n .controller('CreateConnectorCtrl', CreateConnectorCtrl)\n .controller('CreateProgressCtrl', CreateProgressCtrl)\n .controller('DeleteConnectorCtrl', DeleteConnectorCtrl)\n .filter('ceil', ceil);\n\nfunction jsonToFormData(data) {\n const str = [];\n Object.keys(data).forEach(function(key) {\n str.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n });\n return str.join('&');\n}\n\nfunction toArrayMap(map) {\n return _.map(map, function(value, key) {\n return {key: key, value: value};\n });\n}\n\nfunction fromArrayMap(arrayMap, $translate) {\n return _.reduce(arrayMap, function(acc, value) {\n if (value.key === '' && value.value === '') {\n // empty pair, skip it\n } else if (value.key === '') {\n throw new Error($translate.instant('externalsync.empty.value.key.error', {value: value.value}));\n } else if (acc.hasOwnProperty(value.key)) {\n throw new Error($translate.instant('externalsync.duplicate.key.error', {key: value.key}));\n } else {\n acc[value.key] = value.value;\n }\n return acc;\n }, {});\n}\n\nfunction mapCreateValuesToUiValues(values, options) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n if (option.__type === 'StringArray') {\n if (!values[option.__name]) {\n values[option.__name] = [''];\n }\n } else if (option.__type === 'OptionArray') {\n if (!values[option.__name]) { // values has no entry for this option\n values[option.__name] = [];\n const optionEl = {};\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'StringArray') {\n optionEl[child.__name] = [''];\n } else {\n optionEl[child.__name] = (!angular.isUndefined(child.__defaultValue) ? child.__defaultValue : '');\n }\n }\n values[option.__name].push(optionEl);\n } else { // values already has en entry for this option\n // Copies the default value for Boolean child options if no explicit value is set\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'Boolean') {\n for (let k = 0; k < values[option.__name].length; k++) {\n const valueK = values[option.__name][k];\n if (!valueK.hasOwnProperty([child.__name]) && angular.isDefined(child.__defaultValue)) {\n valueK[child.__name] = child.__defaultValue;\n }\n }\n }\n }\n }\n } else if (option.__type === 'Map') {\n if (!values[option.__name]) {\n values[option.__name] = [];\n } else {\n values[option.__name] = toArrayMap(values[option.__name]);\n }\n } else if (option.__type === 'JsonString') {\n if (values[option.__name] && !(values[option.__name] instanceof String) && typeof values[option.__name] !== 'string') {\n values[option.__name] = angular.toJson(values[option.__name], 2);\n }\n } else {\n if (angular.isUndefined(values[option.__name])) {\n values[option.__name] = (!angular.isUndefined(option.__defaultValue) ? option.__defaultValue : '');\n }\n }\n }\n\n return values;\n}\n\nfunction _evaluateSparqlQuery(http, repository, query) {\n return http.post('repositories/' + repository, jsonToFormData({query: query}),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/sparql-results+json',\n 'X-GraphDB-Local-Consistency': 'updating',\n },\n });\n}\n\nfunction buildNamePrefix(prefix) {\n return prefix.substring(0, prefix.length - 1) + '/instance#';\n}\n\nfunction createConnectorQuery(name, prefix, fields, options, reportError, maskSensitiveFields = true) {\n // Returns a copy of the parameter obj sorted according to the order in options\n function sortObject(obj, options) {\n const newObject = {};\n _.each(options, function(option) {\n if (angular.isDefined(obj[option.__name])) {\n if (option.__type === 'OptionArray') {\n newObject[option.__name] = [];\n _.each(obj[option.__name], function(childOption) {\n newObject[option.__name].push(sortObject(childOption, option.__childOptions));\n });\n } else {\n newObject[option.__name] = _.cloneDeep(obj[option.__name]);\n }\n }\n });\n return newObject;\n }\n\n const fcopy = sortObject(fields, options);\n\n for (let i = 0; i < options.length; i++) {\n try {\n if (options[i].__type === 'Map') {\n fcopy[options[i].__name] = fromArrayMap(fcopy[options[i].__name], $translate);\n } else if (options[i].__type === 'JsonString') {\n fcopy[options[i].__name] = angular.fromJson(fcopy[options[i].__name]);\n } else if (maskSensitiveFields && options[i].__sensitive === true && fcopy[options[i].__name]) {\n fcopy[options[i].__name] = SENSITIVE_FIELD_MASK;\n }\n } catch (e) {\n reportError(options[i].__label, e.message);\n return null;\n }\n }\n\n removeEmptyValues(fcopy);\n //escapeValues(fields);\n let finalString = '';\n finalString += 'PREFIX :<' + prefix + '>\\n';\n const namePrefix = buildNamePrefix(prefix);\n finalString += 'PREFIX inst:<' + namePrefix + '>\\n';\n finalString += 'INSERT DATA {\\n';\n finalString += \"\\tinst:\" + name + \" :createConnector '''\\n\";\n finalString += angular.toJson(fcopy, 2);\n finalString = finalString.replaceAll(`\"${SENSITIVE_FIELD_MASK}\"`, SENSITIVE_FIELD_MASK);\n finalString += \"\\n''' .\\n}\\n\";\n finalString = finalString.replace(/\\\\/g, '\\\\\\\\\\\\');\n return finalString;\n}\n\nfunction createStatusQueryForIri(iri) {\n const statusIri = iri.replace(/\\/instance#.+$/, '#connectorStatus');\n let finalString = '';\n finalString += 'SELECT ?status {\\n';\n finalString += '\\t<' + iri + '> <' + statusIri + '> ?status';\n finalString += '\\n}';\n return finalString;\n}\n\nfunction createStatusQueryForAny(connectors) {\n const connectorIris = _.map(connectors,\n function(k) {\n return '<' + k.value + 'connectorStatus' + '>';\n }).join('|');\n\n if (connectorIris) {\n return 'SELECT ?connector ?status { ?connector ' + connectorIris + ' ?status }';\n }\n\n return null;\n}\n\nfunction repairConnectorQuery(name, prefix) {\n const namePrefix = buildNamePrefix(prefix);\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:repairConnector \"\"\\n' +\n '}';\n}\n\nfunction deleteConnectorQuery(name, prefix, force) {\n const namePrefix = prefix.substring(0, prefix.length - 1) + \"/instance#\";\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:dropConnector \"' + (force ? \"force\" : \"\") + '\"\\n' +\n '}';\n}\n\nfunction removeEmptyValues(data) {\n // remove empty values from array\n if (Array.isArray(data)) {\n data = _.filter(data, function(item) {\n return item !== null && (!item.trim || item.trim() !== '');\n });\n }\n // remove empty values from object values\n Object.keys(data).forEach(function(key) {\n if ((data[key] === '' || data[key] === null || data[key] === undefined) && data[key] !== false) {\n delete data[key];\n } else if (typeof data[key] === 'object') {\n data[key] = removeEmptyValues(data[key]);\n }\n });\n return data;\n}\n\nfunction parseFirstBuildingResult(results) {\n if (results.bindings) {\n for (let i = 0; i < results.bindings.length; i++) {\n try {\n const statusObject = JSON.parse(results.bindings[i].status.value);\n if (statusObject.status === 'BUILDING') {\n return {\n connector: results.bindings[i].connector.value,\n status: statusObject,\n };\n }\n } catch (e) {\n logger.error(e);\n }\n }\n }\n\n return {};\n}\n\nConnectorsCtrl.$inject = ['$scope', '$http', '$repositories', '$uibModal', 'toastr', 'ModalService', '$q', 'RDF4JRepositoriesRestService', 'ConnectorsRestService', '$translate'];\n\nfunction ConnectorsCtrl($scope, $http, $repositories, $uibModal, toastr, ModalService, $q, RDF4JRepositoriesRestService, ConnectorsRestService, $translate) {\n $scope.loader = false;\n\n $scope.controllers = [];\n\n $scope.existing = {};\n\n $scope.definitions = {};\n\n $scope.getLoaderMessage = function() {\n const timeSeconds = (Date.now() - $scope.loaderStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = $translate.instant('common.running.operation', {timeHuman: timeHuman});\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n };\n\n $scope.setLoader = function(isRunning, progressMessage, extraMessage) {\n if (isRunning) {\n $scope.loader = true;\n $scope.loaderStartTime = Date.now();\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n } else {\n $scope.loader = false;\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n }\n };\n\n $scope.initConnector = function(connector) {\n return ConnectorsRestService.initConnector(encodeURIComponent(connector.value))\n .then(function(res) {\n $scope.definitions[connector.key] = res.data;\n\n return ConnectorsRestService.hasConnector(encodeURIComponent(connector.value))\n .then(function(res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n };\n\n $scope.getConnectors = function() {\n if (!$scope.isLicenseValid()) {\n return;\n }\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $scope.setLoader(true, $translate.instant('externalsync.fetching.connectors'), $translate.instant('common.extra.message'));\n\n ConnectorsRestService.getConnectors()\n .then(function(res) {\n $scope.connectors = Object.keys(res.data).map(function(key) {\n return {key: key, value: res.data[key]};\n });\n\n $q.all(_.map($scope.connectors, function(connector) {\n return $scope.initConnector(connector);\n })).finally(function() {\n resetProgress();\n\n const query = createStatusQueryForAny($scope.connectors);\n\n if (query) {\n evaluateSparqlQuery(query)\n .then(function(res) {\n const status = parseFirstBuildingResult(res.data.results);\n if (status.connector) {\n // has a building connector, open progress indicator\n const d = status.connector.split(/#/);\n d[0] = d[0].replace(/\\/instance$/, '#');\n showProgress(d[0], d[1]);\n }\n })\n .finally(function() {\n $scope.setLoader(false);\n });\n } else {\n $scope.setLoader(false);\n }\n });\n }).catch(function(e) {\n $scope.setLoader(false);\n toastr.error(getError(e), $translate.instant('externalsync.could.not.get.connectors.error'));\n });\n\n $scope.existing = {};\n };\n\n $scope.getOptions = function(connector) {\n return $scope.definitions[connector.key];\n };\n\n $scope.isEmpty = function(value) {\n return angular.isObject(value) && Object.keys(value).length === 0;\n };\n\n $scope.toPrettyJson = function(value) {\n return angular.toJson(value, 2);\n };\n\n $scope.$watch(function() {\n return $repositories.getActiveRepository();\n }, $scope.getConnectors);\n\n $scope.$watch(function() {\n return $repositories.getActiveLocation();\n }, $scope.getConnectors);\n\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function resetProgress(repair) {\n $scope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0,\n },\n actionName: repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating'),\n waitOnRepairStartOnce: !!repair,\n eta: '-',\n inline: false,\n iri: null,\n };\n }\n\n function openProgressModal(prefix, name, repair) {\n resetProgress(repair);\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: false,\n doneCallback: function() {\n $scope.beingBuiltConnector.modalInstance.dismiss('cancel');\n },\n });\n\n $scope.beingBuiltConnector.modalInstance = $uibModal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: $scope,\n });\n\n return $scope.beingBuiltConnector.modalInstance;\n }\n\n function showProgress(prefix, name) {\n resetProgress();\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: true,\n doneCallback: function() {\n $scope.beingBuiltConnector.inline = false;\n },\n });\n }\n\n function executeCreate(connector, obj, errorCallback) {\n const modal = openProgressModal(connector.value, obj.name, false);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: obj.query}))\n .then(function() {\n ConnectorsRestService.getConnectors().then(function() {\n ConnectorsRestService.hasConnector(encodeURIComponent(connector.value)).then(function(res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n toastr.success($translate.instant('created.connector', {name: obj.name}));\n }, function(err) {\n toastr.error(getError(err));\n errorCallback();\n }).finally(function() {\n modal.dismiss('cancel');\n });\n }\n\n $scope.copyConnector = function(connector, values) {\n let newValues;\n if (!angular.isUndefined(values)) {\n newValues = _.cloneDeep(values);\n newValues.name = newValues.name + '-copy';\n }\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function() {\n return connector;\n },\n values: function() {\n return angular.isUndefined(newValues) ? {name: '', values: {}} : newValues;\n },\n options: function() {\n return $scope.getOptions(connector);\n },\n },\n });\n\n modal.result.then(function(obj) {\n executeCreate(connector, obj, function() {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.newConnector = function(connector, values) {\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function() {\n return connector;\n },\n values: function() {\n return angular.isUndefined(values) ? {name: '', values: {}} : values;\n },\n options: function() {\n return $scope.getOptions(connector);\n },\n },\n });\n\n modal.result.then(function(obj) {\n executeCreate(connector, obj, function() {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.repair = function(inst, type) {\n ModalService.openSimpleModal({\n title: $translate.instant('externalsync.confirm.repair'),\n message: $translate.instant('externalsync.repair.warning.msg'),\n warning: true,\n }).result\n .then(function() {\n const modal = openProgressModal(type.value, inst.name, true);\n\n const query = repairConnectorQuery(inst.name, type.value);\n\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function() {\n ConnectorsRestService.getConnectors().then(function() {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function(res) {\n $scope.existing[type.key] = res.data;\n });\n });\n toastr.success($translate.instant('externalsync.repair.success.msg', {name: inst.name}));\n }, function(err) {\n toastr.error(getError(err));\n }).finally(function() {\n modal.dismiss('cancel');\n });\n });\n };\n\n $scope.delete = function(inst, type) {\n const isExternal = type.key.indexOf(\"Elastic\") >= 0 || type.key.indexOf(\"Solr\") >= 0;\n\n $uibModal.open({\n templateUrl: 'js/angular/externalsync/templates/deleteConnector.html',\n controller: 'DeleteConnectorCtrl',\n resolve: {\n popoverMsg: function() {\n return isExternal ? $translate.instant('delete.connector.conditional', {type: type.key}) : '';\n },\n },\n }).result\n .then(function(force) {\n $scope.setLoader(true, $translate.instant('externalsync.delete.progress.msg', {name: inst.name}),\n $translate.instant('externalsync.extra.message.warning'));\n\n const query = deleteConnectorQuery(inst.name, type.value, force);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function() {\n ConnectorsRestService.getConnectors().then(function() {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function(res) {\n $scope.existing[type.key] = res.data;\n });\n });\n if (force) {\n toastr.success($translate.instant('externalsync.delete.force.success.msg', {name: inst.name}));\n if (isExternal) {\n toastr.warning($translate.instant('externalsync.delete.remote.warning', {key: type.key}));\n }\n } else {\n toastr.success($translate.instant('externalsync.delete.success.msg', {name: inst.name}));\n }\n }, function(err) {\n toastr.error(getError(err));\n }).finally(function() {\n $scope.setLoader(false);\n });\n });\n };\n\n $scope.viewQuery = function(connector, inst) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function() {\n const options = $scope.getOptions(connector);\n return createConnectorQuery(inst.name, connector.value,\n mapCreateValuesToUiValues(inst.values, options), options);\n },\n },\n });\n };\n}\n\nDeleteConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'popoverMsg'];\nfunction DeleteConnectorCtrl($scope, $uibModalInstance, popoverMsg) {\n $scope.force = false;\n $scope.popoverMsg = popoverMsg;\n\n $scope.ok = function() {\n $uibModalInstance.close($scope.force);\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss();\n };\n}\n\nExtendNewConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'connector', '$uibModal', 'toastr'];\nfunction ExtendNewConnectorCtrl($scope, $uibModalInstance, connector, $uibModal, toastr) {\n $scope.connector = connector;\n\n $scope.addField = function(index, optionName) {\n const newField = _.cloneDeep($scope.defaultValues[optionName][0]);\n $scope.values[optionName].splice(index + 1, 0, newField);\n };\n\n $scope.addOption = function(index, array) {\n array.splice(index + 1, 0, '');\n };\n\n $scope.deleteOption = function(index, array) {\n array.splice(index, 1);\n };\n\n $scope.addMapOption = function(index, array) {\n array.splice(index + 1, 0, {key: '', value: ''});\n };\n\n $scope.deleteMapOption = function(index, array) {\n array.splice(index, 1);\n };\n\n function toQuery(maskSensitiveFields = true) {\n return createConnectorQuery($scope.name, connector.value, $scope.values, $scope.options,\n function(label, error) {\n toastr.error(error, label);\n }, maskSensitiveFields);\n }\n\n $scope.ok = function() {\n if ($scope.form.$valid) {\n const query = toQuery(false);\n\n if (query) {\n $uibModalInstance.close({name: $scope.name, values: $scope.values, options: $scope.options, query: query});\n }\n }\n };\n\n $scope.viewQuery = function() {\n const query = toQuery(true);\n\n if (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function() {\n return query;\n },\n },\n });\n }\n };\n\n $scope.cancel = function() {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nCreateConnectorCtrl.$inject = ['$scope', '$controller', '$http', '$uibModalInstance', 'connector', '$uibModal', 'values', 'options'];\n\nfunction CreateConnectorCtrl($scope, $controller, $http, $uibModalInstance, connector, $uibModal, values, options) {\n angular.extend(this, $controller('ExtendNewConnectorCtrl', {\n $scope: $scope,\n $uibModalInstance: $uibModalInstance,\n connector: connector,\n $uibModal: $uibModal,\n }));\n $scope.values = values.values;\n $scope.options = options;\n $scope.name = values.name;\n if (!values.skipConversion) {\n $scope.values = mapCreateValuesToUiValues($scope.values, $scope.options);\n }\n $scope.defaultValues = _.cloneDeep($scope.values);\n}\n\n// Note that this is a fancy controller: it's used both for a modal and for a directive.\n// This means you can't rely on custom injection through resolve in the modal and the scope\n// must be shared with the main connectors controller.\nCreateProgressCtrl.$inject = ['$scope', '$interval', '$http', '$repositories', '$translate'];\n\nfunction CreateProgressCtrl($scope, $interval, $http, $repositories, $translate) {\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function initProgress() {\n const query = createStatusQueryForIri($scope.beingBuiltConnector.iri);\n\n // reset iri value so that watch will fire again when we do something with the same connector\n $scope.beingBuiltConnector.iri = null;\n\n $scope.progressInterval = $interval(function() {\n function getFirstStatusFromResult(results) {\n if (results.bindings) {\n if (results.bindings.length > 0) {\n try {\n return JSON.parse(results.bindings[0].status.value);\n } catch (e) {\n logger.error(e);\n }\n }\n }\n\n return {};\n }\n\n evaluateSparqlQuery(query)\n .then(function(res) {\n const status = getFirstStatusFromResult(res.data.results);\n if (status.status === 'BUILDING') {\n $scope.beingBuiltConnector.status = status;\n $scope.beingBuiltConnector.percentDone = (100 * status.processedEntities / status.estimatedEntities).toFixed(0);\n $scope.beingBuiltConnector.eta = $scope.getHumanReadableSeconds(status.etaSeconds);\n $scope.beingBuiltConnector.actionName = status.repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating');\n $scope.beingBuiltConnector.waitOnRepairStartOnce = false;\n } else if (status.status === 'BUILT' && !$scope.beingBuiltConnector.waitOnRepairStartOnce) {\n // done\n $interval.cancel($scope.progressInterval);\n if ($scope.beingBuiltConnector.doneCallback) {\n $scope.beingBuiltConnector.doneCallback();\n }\n }\n });\n }, 1000);\n\n $scope.$on('$destroy', function() {\n $interval.cancel($scope.progressInterval);\n });\n }\n\n $scope.beingBuiltConnector = $scope.beingBuiltConnector || {};\n\n // for modal instance we get the iri before hand and can start progress now\n if (!$scope.beingBuiltConnector.inline && $scope.beingBuiltConnector.iri) {\n initProgress();\n }\n\n // for inline progress we need to watch for the iri value\n $scope.$watch('beingBuiltConnector.iri', function(value) {\n if ($scope.beingBuiltConnector.inline && value) {\n initProgress();\n }\n });\n}\n\nfunction ceil() {\n return function(input) {\n return Math.ceil(input);\n };\n}\n","angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n /**\n * Fetches all connectors for the repository with id <code>repositoryId</code> and location <code>repositoryLocation</code>.\n * If the repository ID and repository location are not provided, the values persisted in local storage will be used {@see authentication.interceptor.js}.\n *\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {*} The similarity indexes for the specified repository.\n */\n function getConnectors(repositoryId, repositoryLocation) {\n if (repositoryId) {\n return $http.get(CONNECTORS_ENDPOINT, {\n headers: {\n 'X-GraphDB-Repository': repositoryId,\n 'X-GraphDB-Repository-Location': repositoryLocation\n }\n });\n }\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n /**\n * Fetches all connectors of a specific type defined by the prefix for the repository with id <code>repositoryId</code>\n * and location <code>repositoryLocation</code>. If the repository ID and repository location are not provided, the currently selected repository will be used.\n * @param {string} prefix\n * @param {string | undefined} repositoryId - The repository id.\n * @param {string | undefined} repositoryLocation - The repository location.\n * @return {Promise<ConnectorListModel>}\n */\n function hasConnector(prefix, repositoryId, repositoryLocation) {\n if (repositoryId) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`, {\n headers: {\n 'X-GraphDB-Repository': repositoryId,\n 'X-GraphDB-Repository-Location': repositoryLocation\n }\n });\n }\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n"],"names":["logger","LoggerProvider","SENSITIVE_FIELD_MASK","jsonToFormData","data","str","Object","keys","forEach","key","push","encodeURIComponent","join","toArrayMap","map","_","value","fromArrayMap","arrayMap","$translate","reduce","acc","Error","instant","hasOwnProperty","mapCreateValuesToUiValues","values","options","i","length","option","__type","__name","j","__childOptions","child","k","valueK","angular","isDefined","__defaultValue","optionEl","isUndefined","String","toJson","_evaluateSparqlQuery","http","repository","query","post","headers","buildNamePrefix","prefix","substring","createConnectorQuery","name","fields","reportError","maskSensitiveFields","fcopy","sortObject","obj","newObject","each","childOption","cloneDeep","fromJson","__sensitive","e","__label","message","removeEmptyValues","finalString","replaceAll","replace","Array","isArray","filter","item","trim","undefined","ConnectorsCtrl","$scope","$http","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","ConnectorsRestService","resetProgress","repair","beingBuiltConnector","percentDone","status","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","actionName","waitOnRepairStartOnce","eta","inline","iri","openProgressModal","$","extend","doneCallback","modalInstance","dismiss","open","templateUrl","controller","size","backdrop","scope","executeCreate","connector","errorCallback","modal","addStatements","getActiveRepository","update","then","getConnectors","hasConnector","res","existing","success","err","error","getError","finally","loader","controllers","definitions","getLoaderMessage","timeSeconds","Date","now","loaderStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","setLoader","isRunning","initConnector","isLicenseValid","canWriteActiveRepo","connectors","all","connectorIris","createStatusQueryForAny","evaluateSparqlQuery","results","bindings","statusObject","JSON","parse","parseFirstBuildingResult","d","split","catch","getOptions","isEmpty","isObject","toPrettyJson","$watch","getActiveLocation","copyConnector","newValues","resolve","result","skipConversion","newConnector","inst","type","openSimpleModal","title","warning","delete","isExternal","indexOf","popoverMsg","force","namePrefix","deleteConnectorQuery","viewQuery","DeleteConnectorCtrl","$uibModalInstance","ok","close","cancel","ExtendNewConnectorCtrl","toQuery","label","addField","index","optionName","newField","defaultValues","splice","addOption","array","deleteOption","addMapOption","deleteMapOption","form","$valid","CreateConnectorCtrl","$controller","this","CreateProgressCtrl","$interval","initProgress","statusIri","createStatusQueryForIri","progressInterval","getFirstStatusFromResult","toFixed","etaSeconds","$on","module","input","Math","ceil","$inject","factory","CONNECTORS_ENDPOINT","repositoryId","repositoryLocation","get","checkConnector"],"sourceRoot":""}
|