graphdb-workbench 2.2.4-TR1 → 2.2.4-TR2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/{102.7141102a059ef5eba1ea.bundle.js → 102.d52dc777ce7b5de1a30a.bundle.js} +2 -2
  2. package/dist/{102.7141102a059ef5eba1ea.bundle.js.map → 102.d52dc777ce7b5de1a30a.bundle.js.map} +1 -1
  3. package/dist/{104.ecd04b9cba294e159ca5.bundle.js → 104.09c8b5802e53cd9dced9.bundle.js} +2 -2
  4. package/dist/{104.ecd04b9cba294e159ca5.bundle.js.map → 104.09c8b5802e53cd9dced9.bundle.js.map} +1 -1
  5. package/dist/{107.5972b71755d2f24f6f44.bundle.js → 107.481f84627ac231f49e56.bundle.js} +2 -2
  6. package/dist/{107.5972b71755d2f24f6f44.bundle.js.map → 107.481f84627ac231f49e56.bundle.js.map} +1 -1
  7. package/dist/108.d61b0e4a54e1d0e6550d.bundle.js +2 -0
  8. package/dist/{108.162ea156d1fc4ad2525f.bundle.js.map → 108.d61b0e4a54e1d0e6550d.bundle.js.map} +1 -1
  9. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js → 11.89d3de4f2e80e373ecf2.bundle.js} +3 -3
  10. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js.map → 11.89d3de4f2e80e373ecf2.bundle.js.map} +1 -1
  11. package/dist/{115.abb22e52d5886ed645c1.bundle.js → 115.36a12f5a0804f33cb569.bundle.js} +2 -2
  12. package/dist/{115.abb22e52d5886ed645c1.bundle.js.map → 115.36a12f5a0804f33cb569.bundle.js.map} +1 -1
  13. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js → 117.9c58e6155d7467c45284.bundle.js} +2 -2
  14. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js.map → 117.9c58e6155d7467c45284.bundle.js.map} +1 -1
  15. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js → 118.7cdbf2a7be83e4cdc7e2.bundle.js} +2 -2
  16. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js.map → 118.7cdbf2a7be83e4cdc7e2.bundle.js.map} +1 -1
  17. package/dist/{119.7b75484ef37c16039937.bundle.js → 119.f7c106efa2582220baa7.bundle.js} +2 -2
  18. package/dist/{119.7b75484ef37c16039937.bundle.js.map → 119.f7c106efa2582220baa7.bundle.js.map} +1 -1
  19. package/dist/{12.eb41e4af80fee51d893c.bundle.js → 12.b4ac6d1ff3d669d3e63f.bundle.js} +2 -2
  20. package/dist/{12.eb41e4af80fee51d893c.bundle.js.map → 12.b4ac6d1ff3d669d3e63f.bundle.js.map} +1 -1
  21. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js → 120.d20d9e20e2d3c5476f8d.bundle.js} +2 -2
  22. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js.map → 120.d20d9e20e2d3c5476f8d.bundle.js.map} +1 -1
  23. package/dist/{121.f85253eb7e057efdb05d.bundle.js → 121.dc96efcaf4dc5e63f58d.bundle.js} +2 -2
  24. package/dist/{121.f85253eb7e057efdb05d.bundle.js.map → 121.dc96efcaf4dc5e63f58d.bundle.js.map} +1 -1
  25. package/dist/{126.349ebcea493c77fecf7e.bundle.js → 126.4c2fb40676d2508bbc65.bundle.js} +2 -2
  26. package/dist/{126.349ebcea493c77fecf7e.bundle.js.map → 126.4c2fb40676d2508bbc65.bundle.js.map} +1 -1
  27. package/dist/{13.bc3607638ad1e2068125.bundle.js → 13.f6b8f9a2288e2485ee20.bundle.js} +2 -2
  28. package/dist/{13.bc3607638ad1e2068125.bundle.js.map → 13.f6b8f9a2288e2485ee20.bundle.js.map} +1 -1
  29. package/dist/148.45985ae23de642595544.bundle.js +1 -1
  30. package/dist/148.45985ae23de642595544.bundle.js.map +1 -1
  31. package/dist/16.2ca98f5bec0fae221cef.bundle.js +3 -0
  32. package/dist/{16.cd06772f9e031d37db03.bundle.js.map → 16.2ca98f5bec0fae221cef.bundle.js.map} +1 -1
  33. package/dist/{17.45b5c34f6c73bde1113d.bundle.js → 17.b19a2d3870590d21e8e9.bundle.js} +2 -2
  34. package/dist/{17.45b5c34f6c73bde1113d.bundle.js.map → 17.b19a2d3870590d21e8e9.bundle.js.map} +1 -1
  35. package/dist/{19.92f27dd146df127e8d6e.bundle.js → 19.34c180252e48207f01b4.bundle.js} +3 -3
  36. package/dist/{19.92f27dd146df127e8d6e.bundle.js.map → 19.34c180252e48207f01b4.bundle.js.map} +1 -1
  37. package/dist/{20.4eb25ede434dc329ecf1.bundle.js → 20.9e9e388a98851c65f8f7.bundle.js} +2 -2
  38. package/dist/{20.4eb25ede434dc329ecf1.bundle.js.map → 20.9e9e388a98851c65f8f7.bundle.js.map} +1 -1
  39. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js +2 -0
  40. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js.map +1 -0
  41. package/dist/{23.16fc17b0a8983ce3d809.bundle.js → 23.22e3720d741ee87c8108.bundle.js} +2 -2
  42. package/dist/{23.16fc17b0a8983ce3d809.bundle.js.map → 23.22e3720d741ee87c8108.bundle.js.map} +1 -1
  43. package/dist/{24.04d84edbd8f93d036633.bundle.js → 24.63acd0fc451fc797ff79.bundle.js} +2 -2
  44. package/dist/{24.04d84edbd8f93d036633.bundle.js.map → 24.63acd0fc451fc797ff79.bundle.js.map} +1 -1
  45. package/dist/{26.3a642e64c7803f3b32f1.bundle.js → 26.194b2d09daa679b7e09c.bundle.js} +2 -2
  46. package/dist/{26.3a642e64c7803f3b32f1.bundle.js.map → 26.194b2d09daa679b7e09c.bundle.js.map} +1 -1
  47. package/dist/{27.fef157d9275358c9f1a0.bundle.js → 27.35fe33bb9622c2e29c43.bundle.js} +2 -2
  48. package/dist/{27.fef157d9275358c9f1a0.bundle.js.map → 27.35fe33bb9622c2e29c43.bundle.js.map} +1 -1
  49. package/dist/{29.a1b30610d7960a86b1cb.bundle.js → 29.e4eadb676659c5d6e44b.bundle.js} +3 -3
  50. package/dist/{29.a1b30610d7960a86b1cb.bundle.js.map → 29.e4eadb676659c5d6e44b.bundle.js.map} +1 -1
  51. package/dist/{30.3a05504ff287ca6df711.bundle.js → 30.0fb90b3cdf78fcde6251.bundle.js} +2 -2
  52. package/dist/{30.3a05504ff287ca6df711.bundle.js.map → 30.0fb90b3cdf78fcde6251.bundle.js.map} +1 -1
  53. package/dist/{31.13d5a8e9834cd5db589c.bundle.js → 31.8dd9fe71d36bd04a0433.bundle.js} +2 -2
  54. package/dist/{31.13d5a8e9834cd5db589c.bundle.js.map → 31.8dd9fe71d36bd04a0433.bundle.js.map} +1 -1
  55. package/dist/{32.59a7369287d15e8b9ab6.bundle.js → 32.8e1c25a47debdf5145d8.bundle.js} +2 -2
  56. package/dist/{32.59a7369287d15e8b9ab6.bundle.js.map → 32.8e1c25a47debdf5145d8.bundle.js.map} +1 -1
  57. package/dist/{33.fde8076c81c87c25c367.bundle.js → 33.89b51420b48880728b96.bundle.js} +2 -2
  58. package/dist/{33.fde8076c81c87c25c367.bundle.js.map → 33.89b51420b48880728b96.bundle.js.map} +1 -1
  59. package/dist/{35.fe688fc32270724c391d.bundle.js → 35.a9846fba95e98a294957.bundle.js} +2 -2
  60. package/dist/{35.fe688fc32270724c391d.bundle.js.map → 35.a9846fba95e98a294957.bundle.js.map} +1 -1
  61. package/dist/{36.7da22f08c8e850885cc5.bundle.js → 36.4dbd0f9007404b0adbe2.bundle.js} +2 -2
  62. package/dist/{36.7da22f08c8e850885cc5.bundle.js.map → 36.4dbd0f9007404b0adbe2.bundle.js.map} +1 -1
  63. package/dist/37.ac99eb00fe71266c5bff.bundle.js +2 -0
  64. package/dist/{37.8a9855206d5ae5eba9be.bundle.js.map → 37.ac99eb00fe71266c5bff.bundle.js.map} +1 -1
  65. package/dist/{39.0eebc4b972cff879c1c9.bundle.js → 39.8f8ae5c232bd2f023e7c.bundle.js} +2 -2
  66. package/dist/{39.0eebc4b972cff879c1c9.bundle.js.map → 39.8f8ae5c232bd2f023e7c.bundle.js.map} +1 -1
  67. package/dist/4.5391679fa01c55e842cc.bundle.js +2 -0
  68. package/dist/4.5391679fa01c55e842cc.bundle.js.map +1 -0
  69. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js → 40.50f010a0a0ce99da5092.bundle.js} +2 -2
  70. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js.map → 40.50f010a0a0ce99da5092.bundle.js.map} +1 -1
  71. package/dist/{41.368780c518c3f6cab4b7.bundle.js → 41.d09e0f01eac3492e3376.bundle.js} +2 -2
  72. package/dist/{41.368780c518c3f6cab4b7.bundle.js.map → 41.d09e0f01eac3492e3376.bundle.js.map} +1 -1
  73. package/dist/{42.1a48ae582180fa6374f9.bundle.js → 42.9561ff9cd77df0f86a91.bundle.js} +2 -2
  74. package/dist/{42.1a48ae582180fa6374f9.bundle.js.map → 42.9561ff9cd77df0f86a91.bundle.js.map} +1 -1
  75. package/dist/{43.64268be8880acd392fee.bundle.js → 43.0400aae23dac518b78ec.bundle.js} +2 -2
  76. package/dist/{43.64268be8880acd392fee.bundle.js.map → 43.0400aae23dac518b78ec.bundle.js.map} +1 -1
  77. package/dist/{53.58a23efc22865c67d57d.bundle.js → 53.54b20545d5504efa8958.bundle.js} +2 -2
  78. package/dist/{53.58a23efc22865c67d57d.bundle.js.map → 53.54b20545d5504efa8958.bundle.js.map} +1 -1
  79. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js → 54.81f97307e31f5eabb5f0.bundle.js} +2 -2
  80. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js.map → 54.81f97307e31f5eabb5f0.bundle.js.map} +1 -1
  81. package/dist/{55.693c1a0dd775181e1e29.bundle.js → 55.e8df33b84ca578a9a633.bundle.js} +2 -2
  82. package/dist/{55.693c1a0dd775181e1e29.bundle.js.map → 55.e8df33b84ca578a9a633.bundle.js.map} +1 -1
  83. package/dist/{56.62459de7af529d956b75.bundle.js → 56.d765faad673f618d41b0.bundle.js} +2 -2
  84. package/dist/{56.62459de7af529d956b75.bundle.js.map → 56.d765faad673f618d41b0.bundle.js.map} +1 -1
  85. package/dist/{60.2cb24e628b92cb3e0210.bundle.js → 60.f13766507ec5f29fde78.bundle.js} +2 -2
  86. package/dist/{60.2cb24e628b92cb3e0210.bundle.js.map → 60.f13766507ec5f29fde78.bundle.js.map} +1 -1
  87. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js → 65.aa9736b7aad2582ca7ea.bundle.js} +2 -2
  88. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js.map → 65.aa9736b7aad2582ca7ea.bundle.js.map} +1 -1
  89. package/dist/{67.5ae0610f77a1455ce92b.bundle.js → 67.e7bd652fadf93be1fbae.bundle.js} +2 -2
  90. package/dist/{67.5ae0610f77a1455ce92b.bundle.js.map → 67.e7bd652fadf93be1fbae.bundle.js.map} +1 -1
  91. package/dist/{69.90776e70cb361d1ac6d5.bundle.js → 69.6b915e6a7a9c36a78e2b.bundle.js} +2 -2
  92. package/dist/{69.90776e70cb361d1ac6d5.bundle.js.map → 69.6b915e6a7a9c36a78e2b.bundle.js.map} +1 -1
  93. package/dist/{71.3e927496e6e4175a3127.bundle.js → 71.624ca936339bf337e46a.bundle.js} +2 -2
  94. package/dist/{71.3e927496e6e4175a3127.bundle.js.map → 71.624ca936339bf337e46a.bundle.js.map} +1 -1
  95. package/dist/{72.bc99fbec188b4e49aa53.bundle.js → 72.3a5620a182219e9ea05d.bundle.js} +2 -2
  96. package/dist/{72.bc99fbec188b4e49aa53.bundle.js.map → 72.3a5620a182219e9ea05d.bundle.js.map} +1 -1
  97. package/dist/{73.40b5cbae08c7f3a58438.bundle.js → 73.f162e544378754078826.bundle.js} +2 -2
  98. package/dist/{73.40b5cbae08c7f3a58438.bundle.js.map → 73.f162e544378754078826.bundle.js.map} +1 -1
  99. package/dist/{74.cc42a1dcef7e9b830354.bundle.js → 74.7595755907badb1a99b8.bundle.js} +2 -2
  100. package/dist/{74.cc42a1dcef7e9b830354.bundle.js.map → 74.7595755907badb1a99b8.bundle.js.map} +1 -1
  101. package/dist/{75.31d1a4766c80c90b2afc.bundle.js → 75.4cc7ff534d56a05c578a.bundle.js} +2 -2
  102. package/dist/{75.31d1a4766c80c90b2afc.bundle.js.map → 75.4cc7ff534d56a05c578a.bundle.js.map} +1 -1
  103. package/dist/{76.89d209ce08efa7429e87.bundle.js → 76.cd0cfea4c96e88230dbe.bundle.js} +2 -2
  104. package/dist/{76.89d209ce08efa7429e87.bundle.js.map → 76.cd0cfea4c96e88230dbe.bundle.js.map} +1 -1
  105. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js → 77.df7767b1a0a3a0efa202.bundle.js} +2 -2
  106. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js.map → 77.df7767b1a0a3a0efa202.bundle.js.map} +1 -1
  107. package/dist/{79.0fbaedffc1f583a6064f.bundle.js → 79.4d64b377b0308809136f.bundle.js} +2 -2
  108. package/dist/{79.0fbaedffc1f583a6064f.bundle.js.map → 79.4d64b377b0308809136f.bundle.js.map} +1 -1
  109. package/dist/{80.6d489af9482e358c8dd8.bundle.js → 80.36e424031127d1743f20.bundle.js} +2 -2
  110. package/dist/{80.6d489af9482e358c8dd8.bundle.js.map → 80.36e424031127d1743f20.bundle.js.map} +1 -1
  111. package/dist/{94.94158487a9024ff3a623.bundle.js → 94.b1ccdd207229ae57569f.bundle.js} +2 -2
  112. package/dist/{94.94158487a9024ff3a623.bundle.js.map → 94.b1ccdd207229ae57569f.bundle.js.map} +1 -1
  113. package/dist/{97.48e14b67906b4d61a1b1.bundle.js → 97.951e03ffd2d5a10f868d.bundle.js} +2 -2
  114. package/dist/{97.48e14b67906b4d61a1b1.bundle.js.map → 97.951e03ffd2d5a10f868d.bundle.js.map} +1 -1
  115. package/dist/{98.cc7086155b76601af017.bundle.js → 98.745b4c457214d4189d7a.bundle.js} +2 -2
  116. package/dist/{98.cc7086155b76601af017.bundle.js.map → 98.745b4c457214d4189d7a.bundle.js.map} +1 -1
  117. package/dist/{bundle.afb7b0e2052d21766bfe.bundle.js → bundle.651116fe2383a66f32c9.bundle.js} +21 -21
  118. package/dist/{bundle.afb7b0e2052d21766bfe.bundle.js.map → bundle.651116fe2383a66f32c9.bundle.js.map} +1 -1
  119. package/dist/index.html +3 -3
  120. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  121. package/dist/pages/autocomplete.html +1 -1
  122. package/dist/pages/choose-repository-type.html +1 -1
  123. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  124. package/dist/pages/create-index.html +4 -4
  125. package/dist/pages/dependencies.html +1 -1
  126. package/dist/pages/domainRangeInfo.html +2 -2
  127. package/dist/pages/edit.html +1 -1
  128. package/dist/pages/explore.html +1 -1
  129. package/dist/pages/export.html +1 -1
  130. package/dist/pages/find.html +1 -1
  131. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  132. package/dist/pages/graphs-visualizations.html +7 -7
  133. package/dist/pages/guides.html +1 -1
  134. package/dist/pages/import.html +1 -1
  135. package/dist/pages/jdbc-create.html +5 -5
  136. package/dist/pages/monitor/queries.html +1 -1
  137. package/dist/pages/monitor/resources.html +2 -2
  138. package/dist/pages/namespaces.html +2 -2
  139. package/dist/pages/plugins.html +1 -1
  140. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  141. package/dist/pages/rdfrank.html +2 -2
  142. package/dist/pages/repositories.html +2 -2
  143. package/dist/pages/repository.html +2 -2
  144. package/dist/pages/similarity-indexes.html +1 -1
  145. package/dist/pages/sparql-template-create.html +5 -5
  146. package/dist/pages/sparql.html +3 -3
  147. package/dist/pages/webapi.html +2 -2
  148. package/dist/res/swagger/index.html +27 -27
  149. package/package.json +1 -1
  150. package/dist/108.162ea156d1fc4ad2525f.bundle.js +0 -2
  151. package/dist/16.cd06772f9e031d37db03.bundle.js +0 -3
  152. package/dist/21.5586732af2e5cec0d05a.bundle.js +0 -2
  153. package/dist/21.5586732af2e5cec0d05a.bundle.js.map +0 -1
  154. package/dist/37.8a9855206d5ae5eba9be.bundle.js +0 -2
  155. package/dist/4.112f94be76eae8c6eea6.bundle.js +0 -2
  156. package/dist/4.112f94be76eae8c6eea6.bundle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/lib/common/d3-utils.js","webpack:///./src/js/lib/common/svg-export.js","webpack:///./src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"names":["D3","Text","calcFontSizeRaw","text","radius","minimumSize","isMultiline","textSize","substring","length","match","Math","round","calcFontSize","getTextWithElipsisIfNeeded","str","threshold","Transition","fadeIn","sel","duration","style","transition","fadeOut","Click","delayDblClick","event","d3","dispatch","rebind","selection","down","wait","on","mouse","document","body","Date","d","a","b","sqrt","pow","window","clearTimeout","dblclick","setTimeout","click","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","exportSvg","selectAll","attr","version","xmlns","node","parentNode","innerHTML","btoa","unescape","encodeURIComponent","domainRangeGraphDirective","$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT","restrict","template","scope","showPredicatesInfoPanel","selectedPredicate","collapseEdges","link","timer","prototype","moveToFront","this","select","appendChild","moveToBack","firstChild","insertBefore","force","layout","size","charge","drag","classed","selected","svg","append","defs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","imgSrc","href","download","getActiveRepository","legendCellGroup","width","height","targetX","legendTextX","cx","cy","r","x","y","classNodeY","objectNodeTextY","x1","y1","datatypeNodeY","x2","y2","absUrl","basicPropertyArrowY","collapsedPropArrowY","g","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","copy","nodes","links","linkGroup","data","enter","styleArrowsInCollapsedMode","loopLink","loopLinkEdgeCount","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","linkRect","calculatedWidth","getBBox","textPadding","calculatedHeight","translateX","nodeGroup","filter","objectPropClassUri","classPosition","objectPropClassName","call","$apply","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","e","k","alpha","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","targetY","pushEdgesToLeftAndRight","angle","atan2","cos","sin","loopTranslateX","mainClassSize","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","predicatesLeft","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","linkDistance","start","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"mappings":"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","file":"33.fde8076c81c87c25c367.bundle.js","sourcesContent":["var D3 = D3 || {};\n\nD3.Text = function () {\n function calcFontSizeRaw(text, radius, minimumSize, isMultiline) {\n minimumSize = minimumSize || 10;\n\n var textSize = radius / 3;\n if (typeof text === \"string\") {\n var len = text.substring(0, radius / 3).length + 1.5;\n textSize *= 10 / len;\n textSize += 1;\n // experimental alternative method:\n // var textSize = 3.3 * radius / text.length;\n\n // Tweak for Indian scripts and CJK ones\n if (text.match(/[\\u0900-\\u0DFF\\u1100-\\u11FF\\u2E80-\\u2EFF\\u3000-\\u9FFF]/)) {\n textSize *= 0.6;\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n /* Disabled for the time being, better without this\n if (isMultiline) {\n var numWords = text.split(/\\s+/).length;\n if (numWords > 1) {\n if (numWords > 4) {\n numWords = 4;\n }\n textSize += textSize * (4 - numWords) * 0.1;\n }\n }\n */\n\n return Math.round(textSize);\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n return Math.round(textSize);\n }\n\n function calcFontSize(text, radius, minimumSize, isMultiline) {\n return calcFontSizeRaw(text, radius, minimumSize, isMultiline) + 'px';\n }\n\n function getTextWithElipsisIfNeeded(str, threshold) {\n if (typeof str === \"string\") {\n if (str.length > threshold) {\n return str.substring(0, threshold - 3) + \"...\";\n }\n }\n return str;\n }\n\n return {\n calcFontSizeRaw: calcFontSizeRaw,\n calcFontSize: calcFontSize,\n getTextWithElipsisIfNeeded: getTextWithElipsisIfNeeded\n };\n}();\n\nD3.Transition = function () {\n function fadeIn(sel, duration) {\n sel.style(\"opacity\", 0.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 1.0);\n }\n\n function fadeOut(sel, duration) {\n sel.style(\"opacity\", 1.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 0.0);\n }\n\n return {\n fadeIn: fadeIn,\n fadeOut: fadeOut\n };\n}();\n\nD3.Click = function () {\n function delayDblClick() {\n var event = d3.dispatch('click', 'dblclick');\n\n function cc(selection) {\n var down,\n tolerance = 5,\n last,\n wait = null;\n\n // euclidean distance\n function dist(a, b) {\n return Math.sqrt(Math.pow(a[0] - b[0], 2), Math.pow(a[1] - b[1], 2));\n }\n\n selection.on('mousedown', function () {\n down = d3.mouse(document.body);\n last = +new Date();\n });\n selection.on('mouseup', function (d) {\n if (dist(down, d3.mouse(document.body)) > tolerance) {\n return;\n } else {\n if (wait) {\n window.clearTimeout(wait);\n wait = null;\n event.dblclick(d);\n } else {\n wait = window.setTimeout((function (e) {\n return function () {\n event.click(d);\n wait = null;\n };\n })(d3.event), 250);\n }\n }\n });\n }\n\n return d3.rebind(cc, event, 'on');\n }\n\n return {\n delayDblClick: delayDblClick\n };\n}();\n\nexport default D3;\n","var SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n var cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n var cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource() {\n // add needed xml namespace\n var exportSvg = d3.selectAll(\"svg\")\n .attr({\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n })\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.domainrange', [\n 'graphdb.framework.graphexplore.controllers.domainrange',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant('ONTO_RED', 'var(--onto-orange)')\n .constant('ONTO_GREEN', 'var(--onto-green)')\n .constant('ONTO_BLUE', 'var(--onto-blue)')\n .constant('NON_COLLAPSED_REFLEXIVE_LINK_LIMIT', 6)\n .directive('domainRangeGraph', domainRangeGraphDirective);\n\ndomainRangeGraphDirective.$inject = ['$rootScope', '$window', '$repositories', 'GraphDataRestService', '$location', 'LocalStorageAdapter', 'LSKeys', '$timeout', 'toastr', 'ONTO_RED', 'ONTO_GREEN', 'ONTO_BLUE', 'NON_COLLAPSED_REFLEXIVE_LINK_LIMIT'];\n\nfunction domainRangeGraphDirective($rootScope, $window, $repositories, GraphDataRestService, $location, LocalStorageAdapter, LSKeys, $timeout, toastr, ONTO_RED, ONTO_GREEN, ONTO_BLUE, NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n return {\n restrict: 'AE',\n template: '<div id=\"domain-range\"></div>',\n scope: {\n showPredicatesInfoPanel: '=',\n selectedPredicate: '=',\n collapseEdges: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope) {\n const timer = $timeout(function () {\n renderDomainRangeGraph(scope);\n }, 50);\n\n scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n\n function renderDomainRangeGraph(scope) {\n d3.selection.prototype.moveToFront = function () {\n return this.each(function () {\n d3.select(this.parentNode.appendChild(this));\n });\n };\n\n d3.selection.prototype.moveToBack = function () {\n return this.each(function () {\n const firstChild = this.parentNode.firstChild;\n if (firstChild) {\n this.parentNode.insertBefore(this, firstChild);\n }\n });\n };\n\n var width = 1200,\n height = 600;\n\n var mainClassSize = width / 18,\n otherClassSize = width / 110,\n datatypeSize = otherClassSize / 2,\n labelFontSize = width / 90,\n basicArrowStrokeWidth = width / 1000,\n collapsedArrowStrokeWidth = width / 600;\n\n\n var force = d3.layout.force()\n .size([width, height])\n .charge(-900);\n\n var drag = force.drag()\n .on(\"dragstart\", dragstart);\n\n var svg = d3.select(\"#domain-range\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n var defs = svg.append(\"defs\");\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 10,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"collapsed-arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 9,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 4,\n markerHeight: 4,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow-loop\",\n viewBox: \"0 -5 10 10\",\n refX: 7,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/domain-range-graph.css?v=2.2.4-TR1\");\n\n // inline css rules in a defs tag\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource();\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attr({\n href: imgSrc,\n download: \"domain-range-graph-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n // start of code for legend\n var legendBackgroundWidth = width / 7;\n var legendBackgroundHeight = legendBackgroundWidth * 1.2;\n\n var svgLegend = d3.select(\".legend-container\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + legendBackgroundWidth + \" \" + legendBackgroundHeight)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n var legendCellGroup = svgLegend;\n\n legendCellGroup.append(\"rect\")\n .attr({\n width: legendBackgroundWidth,\n height: legendBackgroundHeight\n })\n .style(\"fill\", \"rgba(235, 235, 235, 0.9)\");\n\n var sourceX = width / 75;\n var sourceY = width / 40;\n var targetX = sourceX + mainClassSize / 2.5;\n var targetY = sourceY;\n\n var legendTextX = targetX + width / 90;\n var legendLabelFontSize = labelFontSize / 1.1;\n\n var classNodeY = sourceY;\n var legendClassNode = legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-class-node\",\n cx: (sourceX + targetX) / 2,\n cy: classNodeY,\n r: mainClassSize / 4.5\n });\n\n var classNodeTextY = targetY + width / 370;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: classNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"main class node\");\n\n var objectNodeY = classNodeY + width / 30;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-object-node\",\n cx: (sourceX + targetX) / 2,\n cy: objectNodeY,\n r: otherClassSize / 1.25\n });\n\n var objectNodeTextY = classNodeTextY + width / 30;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: objectNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"class node\");\n\n var datatypeNodeY = objectNodeY + width / 45;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-datatype-node\",\n cx: (sourceX + targetX) / 2,\n cy: datatypeNodeY,\n r: datatypeSize\n });\n\n var datatypeNodeTextY = objectNodeTextY + width / 45;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: datatypeNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"datatype node\");\n\n var basicPropertyArrowY = datatypeNodeY + width / 45;\n var classNodeSel = d3.select('.legend-class-node');\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"property-arrow\",\n x1: sourceX,\n y1: basicPropertyArrowY,\n x2: targetX,\n y2: basicPropertyArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: basicPropertyArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"explicit property\");\n\n var implicitPropArrowY = basicPropertyArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"implicit-property-arrow\",\n x1: sourceX,\n y1: implicitPropArrowY,\n x2: targetX,\n y2: implicitPropArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: implicitPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"implicit property\");\n\n var collapsedPropArrowY = implicitPropArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"collapsed-property-arrow\",\n x1: sourceX,\n y1: collapsedPropArrowY,\n x2: targetX,\n y2: collapsedPropArrowY\n })\n .style(\"stroke-width\", collapsedArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: collapsedPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"collapsed property\");\n // end of code for legend\n\n // there doesn't seem to be a need for a separate group\n var g = svg; //svg.append(\"g\");\n\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n var collapsed = $location.search().collapsed;\n\n GraphDataRestService.getDomainRangeData(selectedRdfUri, collapsed)\n .success(function (response, status, headers) {\n scope.domainRangeGraphData = response;\n }).error(function (response) {\n toastr.error(\"Request for \" + classNodeLabel + \" failed!\");\n });\n\n function switchEdgeMode(collapsed) {\n $rootScope.$broadcast('switchEdgeMode', {\n uri: selectedRdfUri,\n name: classNodeLabel,\n collapsed: collapsed\n });\n }\n\n // intercept back button press and set action to local storage\n $(window).on('popstate', function () {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_WENT_BACK, true);\n });\n\n $window.onpopstate = function (event) {\n if (event.state) {\n $rootScope.$broadcast(\"changeCollapsedEdgesState\", event.state.collapsed);\n }\n };\n\n scope.$watch('collapseEdges', function () {\n if (!angular.isUndefined(scope.collapseEdges)) {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES, scope.collapseEdges);\n\n // if the back button has not been pressed, then switch to collapsed or non collapsed mode\n // otherwise skip, because back button will not function properly and will not pop the entire\n // history stack\n if (LocalStorageAdapter.get(LSKeys.DOMAIN_RANGE_WENT_BACK) !== \"true\") {\n switchEdgeMode(scope.collapseEdges);\n }\n\n // after back button status has been checked, remove the action from local storage in order\n // to be clean for next check\n LocalStorageAdapter.remove(LSKeys.DOMAIN_RANGE_WENT_BACK);\n }\n });\n\n scope.$watch('domainRangeGraphData', function () {\n if (scope.domainRangeGraphData) {\n var graph = angular.copy(scope.domainRangeGraphData);\n\n force\n .nodes(graph.nodes)\n .links(graph.links);\n\n var linkGroup = g.selectAll(\".link\")\n .data(graph.links)\n .enter()\n .append(\"g\");\n\n function styleArrowsInCollapsedMode(sel) {\n sel.style(\"stroke\", ONTO_BLUE);\n sel.style(\"stroke-width\", collapsedArrowStrokeWidth);\n sel.attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n }\n\n var link,\n loopLink,\n loopLinkEdgeCount = 0;\n\n\n linkGroup\n .each(function (d) {\n if (d.objectPropNodeClassUri !== selectedRdfUri) {\n link = linkGroup\n .append(\"line\")\n .attr({\n class: \"link\",\n // absolute url needed because angular inserts a <base> tag\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .each(function (d) {\n switch (d.propertyType) {\n case \"objectLeft\":\n d.targetRadius = mainClassSize;\n break;\n case \"objectRight\":\n d.targetRadius = otherClassSize;\n break;\n case \"datatype\":\n d.targetRadius = datatypeSize;\n break;\n default:\n d.targetRadius = 0;\n }\n var sel = d3.select(this);\n if (d.targetNodeEdgeCount > 1) {\n styleArrowsInCollapsedMode(sel);\n } else if (d.implicit) {\n sel.style(\"stroke-dasharray\", \"3, 3\");\n }\n });\n } else {\n if (angular.isUndefined(loopLink)) {\n var loopLinkSize = mainClassSize / 2;\n loopLink = d3.select(this)\n .append(\"path\")\n .attr({\n d: \"M 0 0 A \" + loopLinkSize + \" \" + loopLinkSize + \" 0 1 1 0 \" + loopLinkSize,\n class: \"loop-link\",\n fill: \"none\",\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow-loop)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth);\n }\n\n loopLinkEdgeCount += d.targetNodeEdgeCount;\n if (loopLinkEdgeCount > 1) {\n styleArrowsInCollapsedMode(d3.select(\".loop-link\"));\n }\n }\n });\n\n var previousPropertyNameSelection = {};\n\n function disableCollapsedPredicateLabelHightlighting() {\n if (!$.isEmptyObject(previousPropertyNameSelection)) {\n previousPropertyNameSelection.text.style(\"fill\", \"black\");\n previousPropertyNameSelection.background.style(\"fill\", \"#f0f0f0\");\n }\n }\n\n // when clicking anywhere else but the collapsed labels disable highlighting\n // of the currently selected one\n $(\"document\").ready(function () {\n $(\"#domain-range\").bind(\"click\", disableCollapsedPredicateLabelHightlighting);\n });\n\n function onCollapsedPropertyNameClick(d) {\n disableCollapsedPredicateLabelHightlighting();\n previousPropertyNameSelection.text = d3.select(this);\n\n previousPropertyNameSelection.background = d3.select(this.previousSibling);\n previousPropertyNameSelection.text.style(\"fill\", \"white\");\n\n previousPropertyNameSelection.background.style(\"fill\", ONTO_BLUE);\n $timeout(function () {\n scope.showPredicatesInfoPanel = true;\n scope.selectedPredicate = d;\n });\n d3.event.stopPropagation();\n }\n\n\n var propertyNames = linkGroup\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri === selectedRdfUri ? \"loop-link-property-name\" : \"property-name\";\n })\n .attr(\"dx\", function (d) {\n // offset text more towards the main class\n return mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n })\n .style(\"text-anchor\", function (d) {\n return d.propertyType === \"objectLeft\" ? \"end\" : \"start\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.targetNodeEdgeCount > 1 ? d.targetNodeEdgeCount + \" predicates\" : d.name;\n });\n\n\n propertyNames\n .each(function (d) {\n var sel = d3.select(this);\n var isCompoundEdge = /\\d\\spredicates/.test(sel.text());\n\n // handle collapsed predicates by making their font bold, make them highlight when clicked\n // and make them trigger the side panel to display the collapsed edges\n if (isCompoundEdge) {\n sel\n .style(\"font-weight\", \"bold\")\n .on(\"click\", onCollapsedPropertyNameClick);\n } else {\n // for regular predicate labels just attach a link to the \"Resources\" view\n // for more helpful information regarding them\n sel.on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.uri), \"_blank\");\n });\n }\n });\n var textPadding = width / 600;\n\n\n var linkRect = linkGroup\n .append(\"rect\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri ? \"link-background\" : \"loop-link-background\"\n })\n .attr(\"width\", function (d) {\n d.calculatedWidth = this.previousSibling.getBBox().width;\n return d.calculatedWidth + textPadding * 2;\n })\n .attr(\"height\", function (d) {\n d.calculatedHeight = this.previousSibling.getBBox().height;\n return d.calculatedHeight + textPadding;\n })\n .attr(\"transform\", function (d) {\n // offset rect by the same amount as text (besides the padding)\n var translateX = textPadding - mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n if (d.propertyType === \"objectLeft\") {\n translateX += d.calculatedWidth;\n }\n return \"translate(-\" + translateX + \",-\" + (textPadding + d.calculatedHeight / 2) + \")\";\n })\n .on(\"click\", function (d) {\n d3.event.stopPropagation();\n });\n\n\n var nodeGroup = g.selectAll(\".node\")\n .data(graph.nodes)\n .enter()\n .append(\"g\");\n\n var node = nodeGroup\n .filter(function (d) {\n return d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"circle\")\n .each(function (d) {\n var sel = d3.select(this);\n if (d.classPosition === \"main\") {\n sel.attr({\n class: \"class-node\",\n r: mainClassSize\n })\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#loop-link)\");\n } else if (d.objectPropClassName === null) {\n sel.attr({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attr({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(d, collapsed) {\n scope.$apply(function () {\n $rootScope.$broadcast('reloadDomainRangeGraphView', d, collapsed);\n });\n }\n\n d3.selectAll(\".object-prop-node\")\n .on(\"dblclick\", reloadDomainRangeGraphView);\n\n\n nodeGroup\n .filter(function (d) {\n return d.objectPropClassName && d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.classPosition + \"-class-label\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.objectPropClassName;\n })\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n g.select(\".class-node\")\n .each(function () {\n d3.select(this.parentNode)\n .append(\"text\")\n .attr(\"class\", \"rdf-class-label\")\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(classNodeLabel, mainClassSize)\n })\n .text(classNodeLabel)\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = g.select(\".class-node + text\"),\n classNode = d3.select(\".class-node\"),\n loopLinkBackgroundSel = d3.selectAll(\".loop-link-background\"),\n loopLinkPropertyName = d3.selectAll(\".loop-link-property-name\");\n\n propertyNames = d3.selectAll(\".property-name\");\n\n if (!angular.isUndefined(loopLink)) {\n var loopLinkBackgroundProps = [];\n\n loopLinkBackgroundSel.each(function (d, i) {\n var sel = d3.select(this);\n loopLinkBackgroundProps.push({\n idx: i,\n width: d.calculatedWidth,\n height: d.calculatedHeight\n });\n });\n }\n\n function tick(e) {\n var k = 8 * e.alpha;\n\n function pushEdgesToLeftAndRight(d) {\n if (d.propertyType === \"objectLeft\") {\n d.source.x -= 8 * k;\n d.source.y -= k / 9;\n } else {\n d.target.x += 8 * k;\n d.target.y -= k / 9;\n }\n }\n\n link\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x1\", function (d) {\n return d.source.x;\n })\n .attr(\"y1\", function (d) {\n return d.source.y;\n })\n .attr(\"x2\", function (d) {\n return d.targetX;\n })\n .attr(\"y2\", function (d) {\n return d.targetY;\n })\n .each(function (d) {\n pushEdgesToLeftAndRight(d);\n\n // shortens the line to compensate for the circle at the target\n var angle = Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x);\n d.targetX = d.target.x - Math.cos(angle) * d.targetRadius;\n d.targetY = d.target.y - Math.sin(angle) * d.targetRadius;\n });\n\n function positionLoopLink(d) {\n var loopTranslateX = d.x + mainClassSize * 0.96,\n loopTranslateY = d.y - mainClassSize / 5.7 - 5;\n loopLink.attr(\"transform\", \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopTranslateX + \",\" + loopTranslateY + \")\");\n }\n\n function positionLoopLinkLabels(d) {\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n var currentBackgroundHeight = 0;\n if (i > 0) {\n currentBackgroundHeight = parseFloat(2 * i * (foundLoopLinkBackgroundProps[0].height / 1.4));\n }\n\n var loopLinkLabelX = d.x,\n loopLinkLabelY = d.y - mainClassSize * 2.1 - currentBackgroundHeight;\n\n sel\n .attr({\n x: loopLinkLabelX,\n y: loopLinkLabelY\n })\n .moveToFront();\n }\n\n /**\n * Create a \"View more\" label to depict that the are more reflexive link labels\n * left that could be seen in the side panel when clicking this label.\n *\n * @param labelSel\n * d3 selection of the text label\n * @param backgroundSel\n * d3 selection of the rectangle element background\n * @param predicatesLeft\n * number of predicates left that are collapsed\n */\n function createViewMorePredicatesLabel(labelSel, backgroundSel, predicatesLeft) {\n labelSel\n .classed(\"view-more-preds-label\", true)\n .text(predicatesLeft + \" predicates more ...\");\n if (this.nextSibling !== null) {\n backgroundSel\n .classed(\"view-more-preds-rect\", true);\n }\n }\n\n loopLinkPropertyName.each(function (dd, i) {\n var sel = d3.select(this);\n\n var predicatesLeft = loopLinkPropertyName.size() - NON_COLLAPSED_REFLEXIVE_LINK_LIMIT;\n if (predicatesLeft < 0) {\n reposition(sel, i);\n } else {\n if (i == 0 && !scope.collapseEdges && predicatesLeft > 1) {\n createViewMorePredicatesLabel(sel, d3.select(this.nextSibling), predicatesLeft);\n reposition(sel, i);\n }\n\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(sel, i);\n } else {\n sel.remove();\n }\n }\n });\n // loopLinkPropertyName.each(function (dd, i) {\n // var sel = d3.select(this);\n // if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // reposition(sel, i);\n // } else if (i == NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // createViewMorePredicatesLabel(sel, d3.select(this.nextSibling));\n // reposition(sel, i);\n // } else {\n // sel.remove();\n // }\n // });\n }\n\n function positionLoopLinkBackgrounds(d) {\n var loopLinkBackgroundY = d.x + mainClassSize * 2,\n loopLinkBackgroundX = d.y - mainClassSize / 1.9;\n\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n if (i > 0) {\n loopLinkBackgroundY += parseFloat(i * (foundLoopLinkBackgroundProps[0].height / (i / 1.4)));\n }\n\n sel\n .attr({\n transform: \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopLinkBackgroundY + \",\" + loopLinkBackgroundX + \")\",\n width: foundLoopLinkBackgroundProps[0].height,\n height: foundLoopLinkBackgroundProps[0].width\n });\n }\n\n /**\n * Adjust new width of \"View more\" label background and add all reflexive link metadata the this\n * label in order to render them in the side panel.\n *\n * @param allLoopLinkEdges\n * all reflexive links to the current class\n */\n function adjustViewMorePredicatesLabel(allLoopLinkEdges) {\n var viewMoreTextWidth;\n d3.select(\".view-more-preds-label\")\n // make label bold to resemble a collapsed label\n .style(\"font-weight\", \"bold\")\n .each(function (d) {\n // attach all reflexive links to the \"view more\" collapsed predicate\n // because in non collapsed mode the backend does not provide them\n d.target.allEdges = allLoopLinkEdges;\n\n // calculate text width in pixels in order to adjust background width accordingly\n viewMoreTextWidth = this.getComputedTextLength();\n })\n .on(\"click\", onCollapsedPropertyNameClick);\n\n d3.select(\".view-more-preds-rect\")\n // we modify height property instead of width because they are reversed\n // when we repositioned loop link labels\n .attr(\"height\", viewMoreTextWidth + 2 * textPadding);\n }\n\n var allLoopLinkEdges = [];\n loopLinkBackgroundSel.each(function (dd, i) {\n allLoopLinkEdges.push(dd);\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(d3.select(this), i);\n } else {\n d3.select(this).remove();\n }\n });\n\n adjustViewMorePredicatesLabel(allLoopLinkEdges);\n }\n\n\n function centerClassNode(d) {\n if (!(window.ActiveXObject) && \"ActiveXObject\" in window) {\n Math.log10 = function (x) {\n return Math.log(x) / Math.LN10;\n };\n }\n var absDiff = classNode.attr(\"cx\") - width / 2,\n logOffset = Math.log10(Math.abs(absDiff)) * 0.5;\n d.x += absDiff > 0 ? -logOffset : logOffset;\n return d.x;\n }\n\n node\n .each(function (d) {\n if (d.classPosition === \"main\" && !angular.isUndefined(loopLink)) {\n positionLoopLink(d);\n positionLoopLinkLabels(d);\n positionLoopLinkBackgrounds(d);\n }\n\n if (d.objectPropClassUri !== selectedRdfUri) {\n d3.select(this)\n .attr(\"cx\", function (d) {\n // pushes the main class circle to the centre\n if (d.classPosition === \"main\") {\n return centerClassNode(d);\n }\n return d.x;\n })\n .attr(\"cy\", function (d) {\n return d.y;\n });\n }\n });\n\n\n rdfClassName\n .attr(\"x\", function (d) {\n return d.x;\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n\n\n linkRect\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n propertyNames\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n objectPropClassName\n .attr(\"x\", function (d) {\n if (d.classPosition === \"right\") {\n return d.x + otherClassSize * 1.2;\n } else {\n return d.x - otherClassSize * 1.2;\n }\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n }\n\n\n force\n .on(\"tick\", tick)\n .linkDistance(width / 3.5)\n .start();\n\n }\n });\n\n function dragstart(d) {\n d3.select(this)\n .classed(\"selected\", d.selected = true);\n }\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/lib/common/d3-utils.js","webpack:///./src/js/lib/common/svg-export.js","webpack:///./src/js/angular/graphexplore/directives/domain-range-graph.directive.js"],"names":["D3","Text","calcFontSizeRaw","text","radius","minimumSize","isMultiline","textSize","substring","length","match","Math","round","calcFontSize","getTextWithElipsisIfNeeded","str","threshold","Transition","fadeIn","sel","duration","style","transition","fadeOut","Click","delayDblClick","event","d3","dispatch","rebind","selection","down","wait","on","mouse","document","body","Date","d","a","b","sqrt","pow","window","clearTimeout","dblclick","setTimeout","click","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","exportSvg","selectAll","attr","version","xmlns","node","parentNode","innerHTML","btoa","unescape","encodeURIComponent","domainRangeGraphDirective","$rootScope","$window","$repositories","GraphDataRestService","$location","LocalStorageAdapter","LSKeys","$timeout","toastr","ONTO_RED","ONTO_GREEN","ONTO_BLUE","NON_COLLAPSED_REFLEXIVE_LINK_LIMIT","restrict","template","scope","showPredicatesInfoPanel","selectedPredicate","collapseEdges","link","timer","prototype","moveToFront","this","select","appendChild","moveToBack","firstChild","insertBefore","force","layout","size","charge","drag","classed","selected","svg","append","defs","id","viewBox","refX","refY","markerUnits","markerWidth","markerHeight","orient","fill","class","imgSrc","href","download","getActiveRepository","legendCellGroup","width","height","targetX","legendTextX","cx","cy","r","x","y","classNodeY","objectNodeTextY","x1","y1","datatypeNodeY","x2","y2","absUrl","basicPropertyArrowY","collapsedPropArrowY","g","selectedRdfUri","search","uri","classNodeLabel","name","collapsed","getDomainRangeData","success","response","status","headers","domainRangeGraphData","error","set","DOMAIN_RANGE_WENT_BACK","onpopstate","state","$broadcast","$watch","angular","isUndefined","DOMAIN_RANGE_COLLAPSE_EDGES","get","switchEdgeMode","remove","graph","copy","nodes","links","linkGroup","data","enter","styleArrowsInCollapsedMode","loopLink","loopLinkEdgeCount","objectPropNodeClassUri","propertyType","targetRadius","targetNodeEdgeCount","implicit","previousPropertyNameSelection","disableCollapsedPredicateLabelHightlighting","isEmptyObject","background","onCollapsedPropertyNameClick","previousSibling","stopPropagation","ready","bind","propertyNames","test","open","linkRect","calculatedWidth","getBBox","textPadding","calculatedHeight","translateX","nodeGroup","filter","objectPropClassUri","classPosition","objectPropClassName","call","$apply","rdfClassName","classNode","loopLinkBackgroundSel","loopLinkPropertyName","loopLinkBackgroundProps","i","push","idx","e","k","alpha","positionLoopLinkBackgrounds","loopLinkBackgroundY","loopLinkBackgroundX","allLoopLinkEdges","dd","foundLoopLinkBackgroundProps","grep","obj","parseFloat","transform","reposition","viewMoreTextWidth","target","allEdges","getComputedTextLength","adjustViewMorePredicatesLabel","source","targetY","pushEdgesToLeftAndRight","angle","atan2","cos","sin","loopTranslateX","mainClassSize","loopTranslateY","positionLoopLink","currentBackgroundHeight","loopLinkLabelX","loopLinkLabelY","predicatesLeft","labelSel","backgroundSel","nextSibling","createViewMorePredicatesLabel","positionLoopLinkLabels","log10","log","LN10","absDiff","logOffset","abs","centerClassNode","linkDistance","start","renderDomainRangeGraph","$on","cancel","module","constant","directive","$inject"],"mappings":"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","file":"33.89b51420b48880728b96.bundle.js","sourcesContent":["var D3 = D3 || {};\n\nD3.Text = function () {\n function calcFontSizeRaw(text, radius, minimumSize, isMultiline) {\n minimumSize = minimumSize || 10;\n\n var textSize = radius / 3;\n if (typeof text === \"string\") {\n var len = text.substring(0, radius / 3).length + 1.5;\n textSize *= 10 / len;\n textSize += 1;\n // experimental alternative method:\n // var textSize = 3.3 * radius / text.length;\n\n // Tweak for Indian scripts and CJK ones\n if (text.match(/[\\u0900-\\u0DFF\\u1100-\\u11FF\\u2E80-\\u2EFF\\u3000-\\u9FFF]/)) {\n textSize *= 0.6;\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n /* Disabled for the time being, better without this\n if (isMultiline) {\n var numWords = text.split(/\\s+/).length;\n if (numWords > 1) {\n if (numWords > 4) {\n numWords = 4;\n }\n textSize += textSize * (4 - numWords) * 0.1;\n }\n }\n */\n\n return Math.round(textSize);\n }\n\n if (textSize < minimumSize) {\n textSize = minimumSize;\n }\n\n return Math.round(textSize);\n }\n\n function calcFontSize(text, radius, minimumSize, isMultiline) {\n return calcFontSizeRaw(text, radius, minimumSize, isMultiline) + 'px';\n }\n\n function getTextWithElipsisIfNeeded(str, threshold) {\n if (typeof str === \"string\") {\n if (str.length > threshold) {\n return str.substring(0, threshold - 3) + \"...\";\n }\n }\n return str;\n }\n\n return {\n calcFontSizeRaw: calcFontSizeRaw,\n calcFontSize: calcFontSize,\n getTextWithElipsisIfNeeded: getTextWithElipsisIfNeeded\n };\n}();\n\nD3.Transition = function () {\n function fadeIn(sel, duration) {\n sel.style(\"opacity\", 0.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 1.0);\n }\n\n function fadeOut(sel, duration) {\n sel.style(\"opacity\", 1.0)\n .transition()\n .duration(duration)\n .style(\"opacity\", 0.0);\n }\n\n return {\n fadeIn: fadeIn,\n fadeOut: fadeOut\n };\n}();\n\nD3.Click = function () {\n function delayDblClick() {\n var event = d3.dispatch('click', 'dblclick');\n\n function cc(selection) {\n var down,\n tolerance = 5,\n last,\n wait = null;\n\n // euclidean distance\n function dist(a, b) {\n return Math.sqrt(Math.pow(a[0] - b[0], 2), Math.pow(a[1] - b[1], 2));\n }\n\n selection.on('mousedown', function () {\n down = d3.mouse(document.body);\n last = +new Date();\n });\n selection.on('mouseup', function (d) {\n if (dist(down, d3.mouse(document.body)) > tolerance) {\n return;\n } else {\n if (wait) {\n window.clearTimeout(wait);\n wait = null;\n event.dblclick(d);\n } else {\n wait = window.setTimeout((function (e) {\n return function () {\n event.click(d);\n wait = null;\n };\n })(d3.event), 250);\n }\n }\n });\n }\n\n return d3.rebind(cc, event, 'on');\n }\n\n return {\n delayDblClick: delayDblClick\n };\n}();\n\nexport default D3;\n","var SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n var cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n var cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource() {\n // add needed xml namespace\n var exportSvg = d3.selectAll(\"svg\")\n .attr({\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\"\n })\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import SVG from 'lib/common/svg-export';\nimport D3 from 'lib/common/d3-utils';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.domainrange', [\n 'graphdb.framework.graphexplore.controllers.domainrange',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant('ONTO_RED', 'var(--onto-orange)')\n .constant('ONTO_GREEN', 'var(--onto-green)')\n .constant('ONTO_BLUE', 'var(--onto-blue)')\n .constant('NON_COLLAPSED_REFLEXIVE_LINK_LIMIT', 6)\n .directive('domainRangeGraph', domainRangeGraphDirective);\n\ndomainRangeGraphDirective.$inject = ['$rootScope', '$window', '$repositories', 'GraphDataRestService', '$location', 'LocalStorageAdapter', 'LSKeys', '$timeout', 'toastr', 'ONTO_RED', 'ONTO_GREEN', 'ONTO_BLUE', 'NON_COLLAPSED_REFLEXIVE_LINK_LIMIT'];\n\nfunction domainRangeGraphDirective($rootScope, $window, $repositories, GraphDataRestService, $location, LocalStorageAdapter, LSKeys, $timeout, toastr, ONTO_RED, ONTO_GREEN, ONTO_BLUE, NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n return {\n restrict: 'AE',\n template: '<div id=\"domain-range\"></div>',\n scope: {\n showPredicatesInfoPanel: '=',\n selectedPredicate: '=',\n collapseEdges: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope) {\n const timer = $timeout(function () {\n renderDomainRangeGraph(scope);\n }, 50);\n\n scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n\n function renderDomainRangeGraph(scope) {\n d3.selection.prototype.moveToFront = function () {\n return this.each(function () {\n d3.select(this.parentNode.appendChild(this));\n });\n };\n\n d3.selection.prototype.moveToBack = function () {\n return this.each(function () {\n const firstChild = this.parentNode.firstChild;\n if (firstChild) {\n this.parentNode.insertBefore(this, firstChild);\n }\n });\n };\n\n var width = 1200,\n height = 600;\n\n var mainClassSize = width / 18,\n otherClassSize = width / 110,\n datatypeSize = otherClassSize / 2,\n labelFontSize = width / 90,\n basicArrowStrokeWidth = width / 1000,\n collapsedArrowStrokeWidth = width / 600;\n\n\n var force = d3.layout.force()\n .size([width, height])\n .charge(-900);\n\n var drag = force.drag()\n .on(\"dragstart\", dragstart);\n\n var svg = d3.select(\"#domain-range\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n var defs = svg.append(\"defs\");\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 10,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"collapsed-arrow\",\n viewBox: \"0 -5 10 10\",\n refX: 9,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 4,\n markerHeight: 4,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n defs.append(\"marker\")\n .attr({\n id: \"arrow-loop\",\n viewBox: \"0 -5 10 10\",\n refX: 7,\n refY: 0,\n markerUnits: \"strokeWidth\",\n markerWidth: 5,\n markerHeight: 5,\n orient: \"auto\",\n fill: ONTO_BLUE\n })\n .append(\"path\")\n .attr({\n d: \"M0,-5L10,0L0,5\",\n class: \"arrowHead\"\n });\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/domain-range-graph.css?v=2.2.4-TR2\");\n\n // inline css rules in a defs tag\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource();\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attr({\n href: imgSrc,\n download: \"domain-range-graph-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n // start of code for legend\n var legendBackgroundWidth = width / 7;\n var legendBackgroundHeight = legendBackgroundWidth * 1.2;\n\n var svgLegend = d3.select(\".legend-container\")\n .append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + legendBackgroundWidth + \" \" + legendBackgroundHeight)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\");\n\n var legendCellGroup = svgLegend;\n\n legendCellGroup.append(\"rect\")\n .attr({\n width: legendBackgroundWidth,\n height: legendBackgroundHeight\n })\n .style(\"fill\", \"rgba(235, 235, 235, 0.9)\");\n\n var sourceX = width / 75;\n var sourceY = width / 40;\n var targetX = sourceX + mainClassSize / 2.5;\n var targetY = sourceY;\n\n var legendTextX = targetX + width / 90;\n var legendLabelFontSize = labelFontSize / 1.1;\n\n var classNodeY = sourceY;\n var legendClassNode = legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-class-node\",\n cx: (sourceX + targetX) / 2,\n cy: classNodeY,\n r: mainClassSize / 4.5\n });\n\n var classNodeTextY = targetY + width / 370;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: classNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"main class node\");\n\n var objectNodeY = classNodeY + width / 30;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-object-node\",\n cx: (sourceX + targetX) / 2,\n cy: objectNodeY,\n r: otherClassSize / 1.25\n });\n\n var objectNodeTextY = classNodeTextY + width / 30;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: objectNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"class node\");\n\n var datatypeNodeY = objectNodeY + width / 45;\n legendCellGroup\n .append(\"circle\")\n .attr({\n class: \"legend-datatype-node\",\n cx: (sourceX + targetX) / 2,\n cy: datatypeNodeY,\n r: datatypeSize\n });\n\n var datatypeNodeTextY = objectNodeTextY + width / 45;\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: datatypeNodeTextY\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"datatype node\");\n\n var basicPropertyArrowY = datatypeNodeY + width / 45;\n var classNodeSel = d3.select('.legend-class-node');\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"property-arrow\",\n x1: sourceX,\n y1: basicPropertyArrowY,\n x2: targetX,\n y2: basicPropertyArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: basicPropertyArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"explicit property\");\n\n var implicitPropArrowY = basicPropertyArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"implicit-property-arrow\",\n x1: sourceX,\n y1: implicitPropArrowY,\n x2: targetX,\n y2: implicitPropArrowY\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: implicitPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"implicit property\");\n\n var collapsedPropArrowY = implicitPropArrowY + width / 45;\n legendCellGroup\n .append(\"line\")\n .attr({\n class: \"collapsed-property-arrow\",\n x1: sourceX,\n y1: collapsedPropArrowY,\n x2: targetX,\n y2: collapsedPropArrowY\n })\n .style(\"stroke-width\", collapsedArrowStrokeWidth)\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n\n legendCellGroup\n .append(\"text\")\n .attr({\n x: legendTextX,\n y: collapsedPropArrowY + (width / 370)\n })\n .style('font-size', legendLabelFontSize + 'px')\n .text(\"collapsed property\");\n // end of code for legend\n\n // there doesn't seem to be a need for a separate group\n var g = svg; //svg.append(\"g\");\n\n var selectedRdfUri = $location.search().uri;\n var classNodeLabel = $location.search().name;\n var collapsed = $location.search().collapsed;\n\n GraphDataRestService.getDomainRangeData(selectedRdfUri, collapsed)\n .success(function (response, status, headers) {\n scope.domainRangeGraphData = response;\n }).error(function (response) {\n toastr.error(\"Request for \" + classNodeLabel + \" failed!\");\n });\n\n function switchEdgeMode(collapsed) {\n $rootScope.$broadcast('switchEdgeMode', {\n uri: selectedRdfUri,\n name: classNodeLabel,\n collapsed: collapsed\n });\n }\n\n // intercept back button press and set action to local storage\n $(window).on('popstate', function () {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_WENT_BACK, true);\n });\n\n $window.onpopstate = function (event) {\n if (event.state) {\n $rootScope.$broadcast(\"changeCollapsedEdgesState\", event.state.collapsed);\n }\n };\n\n scope.$watch('collapseEdges', function () {\n if (!angular.isUndefined(scope.collapseEdges)) {\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES, scope.collapseEdges);\n\n // if the back button has not been pressed, then switch to collapsed or non collapsed mode\n // otherwise skip, because back button will not function properly and will not pop the entire\n // history stack\n if (LocalStorageAdapter.get(LSKeys.DOMAIN_RANGE_WENT_BACK) !== \"true\") {\n switchEdgeMode(scope.collapseEdges);\n }\n\n // after back button status has been checked, remove the action from local storage in order\n // to be clean for next check\n LocalStorageAdapter.remove(LSKeys.DOMAIN_RANGE_WENT_BACK);\n }\n });\n\n scope.$watch('domainRangeGraphData', function () {\n if (scope.domainRangeGraphData) {\n var graph = angular.copy(scope.domainRangeGraphData);\n\n force\n .nodes(graph.nodes)\n .links(graph.links);\n\n var linkGroup = g.selectAll(\".link\")\n .data(graph.links)\n .enter()\n .append(\"g\");\n\n function styleArrowsInCollapsedMode(sel) {\n sel.style(\"stroke\", ONTO_BLUE);\n sel.style(\"stroke-width\", collapsedArrowStrokeWidth);\n sel.attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#collapsed-arrow)\");\n }\n\n var link,\n loopLink,\n loopLinkEdgeCount = 0;\n\n\n linkGroup\n .each(function (d) {\n if (d.objectPropNodeClassUri !== selectedRdfUri) {\n link = linkGroup\n .append(\"line\")\n .attr({\n class: \"link\",\n // absolute url needed because angular inserts a <base> tag\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth)\n .each(function (d) {\n switch (d.propertyType) {\n case \"objectLeft\":\n d.targetRadius = mainClassSize;\n break;\n case \"objectRight\":\n d.targetRadius = otherClassSize;\n break;\n case \"datatype\":\n d.targetRadius = datatypeSize;\n break;\n default:\n d.targetRadius = 0;\n }\n var sel = d3.select(this);\n if (d.targetNodeEdgeCount > 1) {\n styleArrowsInCollapsedMode(sel);\n } else if (d.implicit) {\n sel.style(\"stroke-dasharray\", \"3, 3\");\n }\n });\n } else {\n if (angular.isUndefined(loopLink)) {\n var loopLinkSize = mainClassSize / 2;\n loopLink = d3.select(this)\n .append(\"path\")\n .attr({\n d: \"M 0 0 A \" + loopLinkSize + \" \" + loopLinkSize + \" 0 1 1 0 \" + loopLinkSize,\n class: \"loop-link\",\n fill: \"none\",\n \"marker-end\": \"url(\" + $location.absUrl() + \"#arrow-loop)\"\n })\n .style(\"stroke-width\", basicArrowStrokeWidth);\n }\n\n loopLinkEdgeCount += d.targetNodeEdgeCount;\n if (loopLinkEdgeCount > 1) {\n styleArrowsInCollapsedMode(d3.select(\".loop-link\"));\n }\n }\n });\n\n var previousPropertyNameSelection = {};\n\n function disableCollapsedPredicateLabelHightlighting() {\n if (!$.isEmptyObject(previousPropertyNameSelection)) {\n previousPropertyNameSelection.text.style(\"fill\", \"black\");\n previousPropertyNameSelection.background.style(\"fill\", \"#f0f0f0\");\n }\n }\n\n // when clicking anywhere else but the collapsed labels disable highlighting\n // of the currently selected one\n $(\"document\").ready(function () {\n $(\"#domain-range\").bind(\"click\", disableCollapsedPredicateLabelHightlighting);\n });\n\n function onCollapsedPropertyNameClick(d) {\n disableCollapsedPredicateLabelHightlighting();\n previousPropertyNameSelection.text = d3.select(this);\n\n previousPropertyNameSelection.background = d3.select(this.previousSibling);\n previousPropertyNameSelection.text.style(\"fill\", \"white\");\n\n previousPropertyNameSelection.background.style(\"fill\", ONTO_BLUE);\n $timeout(function () {\n scope.showPredicatesInfoPanel = true;\n scope.selectedPredicate = d;\n });\n d3.event.stopPropagation();\n }\n\n\n var propertyNames = linkGroup\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri === selectedRdfUri ? \"loop-link-property-name\" : \"property-name\";\n })\n .attr(\"dx\", function (d) {\n // offset text more towards the main class\n return mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n })\n .style(\"text-anchor\", function (d) {\n return d.propertyType === \"objectLeft\" ? \"end\" : \"start\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.targetNodeEdgeCount > 1 ? d.targetNodeEdgeCount + \" predicates\" : d.name;\n });\n\n\n propertyNames\n .each(function (d) {\n var sel = d3.select(this);\n var isCompoundEdge = /\\d\\spredicates/.test(sel.text());\n\n // handle collapsed predicates by making their font bold, make them highlight when clicked\n // and make them trigger the side panel to display the collapsed edges\n if (isCompoundEdge) {\n sel\n .style(\"font-weight\", \"bold\")\n .on(\"click\", onCollapsedPropertyNameClick);\n } else {\n // for regular predicate labels just attach a link to the \"Resources\" view\n // for more helpful information regarding them\n sel.on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.uri), \"_blank\");\n });\n }\n });\n var textPadding = width / 600;\n\n\n var linkRect = linkGroup\n .append(\"rect\")\n .attr(\"class\", function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri ? \"link-background\" : \"loop-link-background\"\n })\n .attr(\"width\", function (d) {\n d.calculatedWidth = this.previousSibling.getBBox().width;\n return d.calculatedWidth + textPadding * 2;\n })\n .attr(\"height\", function (d) {\n d.calculatedHeight = this.previousSibling.getBBox().height;\n return d.calculatedHeight + textPadding;\n })\n .attr(\"transform\", function (d) {\n // offset rect by the same amount as text (besides the padding)\n var translateX = textPadding - mainClassSize / 2 * (d.propertyType === \"objectLeft\" ? 1 : -1);\n if (d.propertyType === \"objectLeft\") {\n translateX += d.calculatedWidth;\n }\n return \"translate(-\" + translateX + \",-\" + (textPadding + d.calculatedHeight / 2) + \")\";\n })\n .on(\"click\", function (d) {\n d3.event.stopPropagation();\n });\n\n\n var nodeGroup = g.selectAll(\".node\")\n .data(graph.nodes)\n .enter()\n .append(\"g\");\n\n var node = nodeGroup\n .filter(function (d) {\n return d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"circle\")\n .each(function (d) {\n var sel = d3.select(this);\n if (d.classPosition === \"main\") {\n sel.attr({\n class: \"class-node\",\n r: mainClassSize\n })\n .attr(\"marker-end\", \"url(\" + $location.absUrl() + \"#loop-link)\");\n } else if (d.objectPropClassName === null) {\n sel.attr({\n class: \"datatype-node\",\n r: datatypeSize\n });\n } else {\n sel.attr({\n class: \"object-prop-node\",\n r: otherClassSize\n });\n }\n })\n .call(drag);\n\n\n function reloadDomainRangeGraphView(d, collapsed) {\n scope.$apply(function () {\n $rootScope.$broadcast('reloadDomainRangeGraphView', d, collapsed);\n });\n }\n\n d3.selectAll(\".object-prop-node\")\n .on(\"dblclick\", reloadDomainRangeGraphView);\n\n\n nodeGroup\n .filter(function (d) {\n return d.objectPropClassName && d.objectPropClassUri !== selectedRdfUri;\n })\n .append(\"text\")\n .attr(\"class\", function (d) {\n return d.classPosition + \"-class-label\";\n })\n .style(\"font-size\", labelFontSize)\n .text(function (d) {\n return d.objectPropClassName;\n })\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(d.objectPropClassUri), \"_blank\");\n });\n\n var objectPropClassName = nodeGroup.select(\"text\");\n\n g.select(\".class-node\")\n .each(function () {\n d3.select(this.parentNode)\n .append(\"text\")\n .attr(\"class\", \"rdf-class-label\")\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(classNodeLabel, mainClassSize)\n })\n .text(classNodeLabel)\n .on(\"click\", function (d) {\n $window.open(\"resource?uri=\" + encodeURIComponent(selectedRdfUri), \"_blank\");\n });\n });\n\n\n var rdfClassName = g.select(\".class-node + text\"),\n classNode = d3.select(\".class-node\"),\n loopLinkBackgroundSel = d3.selectAll(\".loop-link-background\"),\n loopLinkPropertyName = d3.selectAll(\".loop-link-property-name\");\n\n propertyNames = d3.selectAll(\".property-name\");\n\n if (!angular.isUndefined(loopLink)) {\n var loopLinkBackgroundProps = [];\n\n loopLinkBackgroundSel.each(function (d, i) {\n var sel = d3.select(this);\n loopLinkBackgroundProps.push({\n idx: i,\n width: d.calculatedWidth,\n height: d.calculatedHeight\n });\n });\n }\n\n function tick(e) {\n var k = 8 * e.alpha;\n\n function pushEdgesToLeftAndRight(d) {\n if (d.propertyType === \"objectLeft\") {\n d.source.x -= 8 * k;\n d.source.y -= k / 9;\n } else {\n d.target.x += 8 * k;\n d.target.y -= k / 9;\n }\n }\n\n link\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x1\", function (d) {\n return d.source.x;\n })\n .attr(\"y1\", function (d) {\n return d.source.y;\n })\n .attr(\"x2\", function (d) {\n return d.targetX;\n })\n .attr(\"y2\", function (d) {\n return d.targetY;\n })\n .each(function (d) {\n pushEdgesToLeftAndRight(d);\n\n // shortens the line to compensate for the circle at the target\n var angle = Math.atan2(d.target.y - d.source.y, d.target.x - d.source.x);\n d.targetX = d.target.x - Math.cos(angle) * d.targetRadius;\n d.targetY = d.target.y - Math.sin(angle) * d.targetRadius;\n });\n\n function positionLoopLink(d) {\n var loopTranslateX = d.x + mainClassSize * 0.96,\n loopTranslateY = d.y - mainClassSize / 5.7 - 5;\n loopLink.attr(\"transform\", \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopTranslateX + \",\" + loopTranslateY + \")\");\n }\n\n function positionLoopLinkLabels(d) {\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n var currentBackgroundHeight = 0;\n if (i > 0) {\n currentBackgroundHeight = parseFloat(2 * i * (foundLoopLinkBackgroundProps[0].height / 1.4));\n }\n\n var loopLinkLabelX = d.x,\n loopLinkLabelY = d.y - mainClassSize * 2.1 - currentBackgroundHeight;\n\n sel\n .attr({\n x: loopLinkLabelX,\n y: loopLinkLabelY\n })\n .moveToFront();\n }\n\n /**\n * Create a \"View more\" label to depict that the are more reflexive link labels\n * left that could be seen in the side panel when clicking this label.\n *\n * @param labelSel\n * d3 selection of the text label\n * @param backgroundSel\n * d3 selection of the rectangle element background\n * @param predicatesLeft\n * number of predicates left that are collapsed\n */\n function createViewMorePredicatesLabel(labelSel, backgroundSel, predicatesLeft) {\n labelSel\n .classed(\"view-more-preds-label\", true)\n .text(predicatesLeft + \" predicates more ...\");\n if (this.nextSibling !== null) {\n backgroundSel\n .classed(\"view-more-preds-rect\", true);\n }\n }\n\n loopLinkPropertyName.each(function (dd, i) {\n var sel = d3.select(this);\n\n var predicatesLeft = loopLinkPropertyName.size() - NON_COLLAPSED_REFLEXIVE_LINK_LIMIT;\n if (predicatesLeft < 0) {\n reposition(sel, i);\n } else {\n if (i == 0 && !scope.collapseEdges && predicatesLeft > 1) {\n createViewMorePredicatesLabel(sel, d3.select(this.nextSibling), predicatesLeft);\n reposition(sel, i);\n }\n\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(sel, i);\n } else {\n sel.remove();\n }\n }\n });\n // loopLinkPropertyName.each(function (dd, i) {\n // var sel = d3.select(this);\n // if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // reposition(sel, i);\n // } else if (i == NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n // createViewMorePredicatesLabel(sel, d3.select(this.nextSibling));\n // reposition(sel, i);\n // } else {\n // sel.remove();\n // }\n // });\n }\n\n function positionLoopLinkBackgrounds(d) {\n var loopLinkBackgroundY = d.x + mainClassSize * 2,\n loopLinkBackgroundX = d.y - mainClassSize / 1.9;\n\n function reposition(sel, i) {\n var foundLoopLinkBackgroundProps =\n $.grep(loopLinkBackgroundProps, function (obj) {\n return obj.idx == i;\n });\n if (i > 0) {\n loopLinkBackgroundY += parseFloat(i * (foundLoopLinkBackgroundProps[0].height / (i / 1.4)));\n }\n\n sel\n .attr({\n transform: \"rotate(270, \" + d.x + \",\" + d.y + \") translate(\" + loopLinkBackgroundY + \",\" + loopLinkBackgroundX + \")\",\n width: foundLoopLinkBackgroundProps[0].height,\n height: foundLoopLinkBackgroundProps[0].width\n });\n }\n\n /**\n * Adjust new width of \"View more\" label background and add all reflexive link metadata the this\n * label in order to render them in the side panel.\n *\n * @param allLoopLinkEdges\n * all reflexive links to the current class\n */\n function adjustViewMorePredicatesLabel(allLoopLinkEdges) {\n var viewMoreTextWidth;\n d3.select(\".view-more-preds-label\")\n // make label bold to resemble a collapsed label\n .style(\"font-weight\", \"bold\")\n .each(function (d) {\n // attach all reflexive links to the \"view more\" collapsed predicate\n // because in non collapsed mode the backend does not provide them\n d.target.allEdges = allLoopLinkEdges;\n\n // calculate text width in pixels in order to adjust background width accordingly\n viewMoreTextWidth = this.getComputedTextLength();\n })\n .on(\"click\", onCollapsedPropertyNameClick);\n\n d3.select(\".view-more-preds-rect\")\n // we modify height property instead of width because they are reversed\n // when we repositioned loop link labels\n .attr(\"height\", viewMoreTextWidth + 2 * textPadding);\n }\n\n var allLoopLinkEdges = [];\n loopLinkBackgroundSel.each(function (dd, i) {\n allLoopLinkEdges.push(dd);\n if (i < NON_COLLAPSED_REFLEXIVE_LINK_LIMIT) {\n reposition(d3.select(this), i);\n } else {\n d3.select(this).remove();\n }\n });\n\n adjustViewMorePredicatesLabel(allLoopLinkEdges);\n }\n\n\n function centerClassNode(d) {\n if (!(window.ActiveXObject) && \"ActiveXObject\" in window) {\n Math.log10 = function (x) {\n return Math.log(x) / Math.LN10;\n };\n }\n var absDiff = classNode.attr(\"cx\") - width / 2,\n logOffset = Math.log10(Math.abs(absDiff)) * 0.5;\n d.x += absDiff > 0 ? -logOffset : logOffset;\n return d.x;\n }\n\n node\n .each(function (d) {\n if (d.classPosition === \"main\" && !angular.isUndefined(loopLink)) {\n positionLoopLink(d);\n positionLoopLinkLabels(d);\n positionLoopLinkBackgrounds(d);\n }\n\n if (d.objectPropClassUri !== selectedRdfUri) {\n d3.select(this)\n .attr(\"cx\", function (d) {\n // pushes the main class circle to the centre\n if (d.classPosition === \"main\") {\n return centerClassNode(d);\n }\n return d.x;\n })\n .attr(\"cy\", function (d) {\n return d.y;\n });\n }\n });\n\n\n rdfClassName\n .attr(\"x\", function (d) {\n return d.x;\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n\n\n linkRect\n .filter(function (d) {\n return d.objectPropNodeClassUri !== selectedRdfUri;\n })\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n propertyNames\n .attr(\"x\", function (d) {\n if (d.target.x > d.source.x) {\n return (d.source.x + (d.target.x - d.source.x) / 2);\n } else {\n return (d.target.x + (d.source.x - d.target.x) / 2);\n }\n })\n .attr(\"y\", function (d) {\n if (d.target.y > d.source.y) {\n return (d.source.y + (d.target.y - d.source.y) / 2);\n } else {\n return (d.target.y + (d.source.y - d.target.y) / 2);\n }\n })\n .moveToFront();\n\n\n objectPropClassName\n .attr(\"x\", function (d) {\n if (d.classPosition === \"right\") {\n return d.x + otherClassSize * 1.2;\n } else {\n return d.x - otherClassSize * 1.2;\n }\n })\n .attr(\"y\", function (d) {\n return d.y;\n })\n .moveToFront();\n }\n\n\n force\n .on(\"tick\", tick)\n .linkDistance(width / 3.5)\n .start();\n\n }\n });\n\n function dragstart(d) {\n d3.select(this)\n .classed(\"selected\", d.selected = true);\n }\n }\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[35,56],{111:function(e,t,o){"use strict";o.r(t);o(67);angular.module("graphdb.framework.autocomplete",["ngRoute","graphdb.framework.autocomplete.controllers"])},67:function(e,t,o){"use strict";o.r(t);o(18);function n(e,t,o,n,r,c,i,u,a,l){let s;function d(){s&&t.cancel(s)}e.pluginName="autocomplete",e.setPluginIsActive=function(t){e.pluginIsActive=t};const f=function(){u.checkAutocompleteStatus().success((function(t){e.autocompleteEnabled=t,a.setAutocompleteStatus(t)})).error((function(e){o.error(getError(e))}))},p=function(){u.refreshIndexIRIs().success((function(t){e.shouldIndexIRIs=t})).error((function(e){o.error(getError(e))}))},g=function(){u.refreshIndexStatus().success((function(t){e.indexStatus=t})).error((function(e){o.error(getError(e))}))},m=function(){u.refreshLabelConfig().success((function(t){e.labelConfig=t})).error((function(e){o.error(getError(e))}))};e.checkForPlugin=function(){e.pluginFound=!1,e.setLoader(!0),u.checkForPlugin().success((function(t){e.pluginFound=!0===t,e.pluginFound?(f(),p(),g(),m()):(e.autocompleteEnabled=!1,e.loading=!1)})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))};const b=function(){s=t((function(){e.$broadcast("checkIsActive"),e.autocompleteEnabled&&g()}),5e3)};e.$on("$destroy",(function(){d()}));e.setLoader=function(t,o){i.cancel(e.loaderTimeout),t?e.loaderTimeout=i((function(){e.loader=t,e.loaderMessage=o}),300):e.loader=!1},e.getLoaderMessage=function(){return e.loaderMessage||l.instant("common.loading")},e.toggleAutocomplete=function(){const t=!e.autocompleteEnabled;e.setLoader(!0,t?l.instant("autocomplete.enabling"):l.instant("autocomplete.disabling")),u.toggleAutocomplete(t).success((function(){f(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.toggleIndexIRIs=function(){e.setLoader(!0,l.instant("autocomplete.index.iri")),u.toggleIndexIRIs(!e.shouldIndexIRIs).success((function(){p(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.buildIndex=function(){e.setLoader(!0,l.instant("autocomplete.index.build")),u.buildIndex().success((function(){e.indexStatus="BUILDING"})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.interruptIndexing=function(){e.setLoader(!0,l.instant("index.interrupt")),u.interruptIndexing().success((function(){g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.getDegradedReason=function(){return n.getDegradedReason()},e.addLabel=function(){e.editLabel({labelIri:"",languages:""},!0)},e.editLabel=function(t,n){c.open({templateUrl:"js/angular/autocomplete/templates/modal/add-label.html",controller:"AddLabelCtrl",resolve:{data:function(){return{label:t,isNew:n}}}}).result.then((function(t){!function(t){e.setLoader(!0,l.instant("autocomplete.update")),u.addLabelConfig(t).success((function(){m(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))}(t)}))},e.removeLabel=function(t){!function(t){e.setLoader(!0,l.instant("autocomplete.update")),u.removeLabelConfig(t).success((function(){m(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))}(t)},e.$on("repositoryIsSet",(function(){d(),r.isLicenseValid()&&n.getActiveRepository()&&!n.isActiveRepoOntopType()&&!n.isActiveRepoFedXType()&&(e.checkForPlugin(),b())})),r.isLicenseValid()&&n.getActiveRepository()&&!n.isActiveRepoOntopType()&&!n.isActiveRepoFedXType()&&(e.checkForPlugin(),b())}function r(e,t,o,n){e.label=angular.copy(n.label),e.isNew=n.isNew,e.ok=function(){e.form.$valid&&t.close(e.label)},e.cancel=function(){t.dismiss("cancel")},e.setTemplate=function(t){e.label.labelIri=t,o((function(){$("#wb-autocomplete-languages").focus()}),0)}}angular.module("graphdb.framework.autocomplete.controllers",["toastr","graphdb.framework.rest.autocomplete.service"]).controller("AutocompleteCtrl",n).controller("AddLabelCtrl",r),n.$inject=["$scope","$interval","toastr","$repositories","$licenseService","$uibModal","$timeout","AutocompleteRestService","$autocompleteStatus","$translate"],r.$inject=["$scope","$uibModalInstance","$timeout","data"]}}]);
2
- //# sourceMappingURL=35.fe688fc32270724c391d.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[35,56],{111:function(e,t,o){"use strict";o.r(t);o(68);angular.module("graphdb.framework.autocomplete",["ngRoute","graphdb.framework.autocomplete.controllers"])},68:function(e,t,o){"use strict";o.r(t);o(18);function n(e,t,o,n,r,c,i,u,a,l){let s;function d(){s&&t.cancel(s)}e.pluginName="autocomplete",e.setPluginIsActive=function(t){e.pluginIsActive=t};const f=function(){u.checkAutocompleteStatus().success((function(t){e.autocompleteEnabled=t,a.setAutocompleteStatus(t)})).error((function(e){o.error(getError(e))}))},p=function(){u.refreshIndexIRIs().success((function(t){e.shouldIndexIRIs=t})).error((function(e){o.error(getError(e))}))},g=function(){u.refreshIndexStatus().success((function(t){e.indexStatus=t})).error((function(e){o.error(getError(e))}))},m=function(){u.refreshLabelConfig().success((function(t){e.labelConfig=t})).error((function(e){o.error(getError(e))}))};e.checkForPlugin=function(){e.pluginFound=!1,e.setLoader(!0),u.checkForPlugin().success((function(t){e.pluginFound=!0===t,e.pluginFound?(f(),p(),g(),m()):(e.autocompleteEnabled=!1,e.loading=!1)})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))};const b=function(){s=t((function(){e.$broadcast("checkIsActive"),e.autocompleteEnabled&&g()}),5e3)};e.$on("$destroy",(function(){d()}));e.setLoader=function(t,o){i.cancel(e.loaderTimeout),t?e.loaderTimeout=i((function(){e.loader=t,e.loaderMessage=o}),300):e.loader=!1},e.getLoaderMessage=function(){return e.loaderMessage||l.instant("common.loading")},e.toggleAutocomplete=function(){const t=!e.autocompleteEnabled;e.setLoader(!0,t?l.instant("autocomplete.enabling"):l.instant("autocomplete.disabling")),u.toggleAutocomplete(t).success((function(){f(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.toggleIndexIRIs=function(){e.setLoader(!0,l.instant("autocomplete.index.iri")),u.toggleIndexIRIs(!e.shouldIndexIRIs).success((function(){p(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.buildIndex=function(){e.setLoader(!0,l.instant("autocomplete.index.build")),u.buildIndex().success((function(){e.indexStatus="BUILDING"})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.interruptIndexing=function(){e.setLoader(!0,l.instant("index.interrupt")),u.interruptIndexing().success((function(){g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))},e.getDegradedReason=function(){return n.getDegradedReason()},e.addLabel=function(){e.editLabel({labelIri:"",languages:""},!0)},e.editLabel=function(t,n){c.open({templateUrl:"js/angular/autocomplete/templates/modal/add-label.html",controller:"AddLabelCtrl",resolve:{data:function(){return{label:t,isNew:n}}}}).result.then((function(t){!function(t){e.setLoader(!0,l.instant("autocomplete.update")),u.addLabelConfig(t).success((function(){m(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))}(t)}))},e.removeLabel=function(t){!function(t){e.setLoader(!0,l.instant("autocomplete.update")),u.removeLabelConfig(t).success((function(){m(),g()})).error((function(e){o.error(getError(e))})).finally((function(){e.setLoader(!1)}))}(t)},e.$on("repositoryIsSet",(function(){d(),r.isLicenseValid()&&n.getActiveRepository()&&!n.isActiveRepoOntopType()&&!n.isActiveRepoFedXType()&&(e.checkForPlugin(),b())})),r.isLicenseValid()&&n.getActiveRepository()&&!n.isActiveRepoOntopType()&&!n.isActiveRepoFedXType()&&(e.checkForPlugin(),b())}function r(e,t,o,n){e.label=angular.copy(n.label),e.isNew=n.isNew,e.ok=function(){e.form.$valid&&t.close(e.label)},e.cancel=function(){t.dismiss("cancel")},e.setTemplate=function(t){e.label.labelIri=t,o((function(){$("#wb-autocomplete-languages").focus()}),0)}}angular.module("graphdb.framework.autocomplete.controllers",["toastr","graphdb.framework.rest.autocomplete.service"]).controller("AutocompleteCtrl",n).controller("AddLabelCtrl",r),n.$inject=["$scope","$interval","toastr","$repositories","$licenseService","$uibModal","$timeout","AutocompleteRestService","$autocompleteStatus","$translate"],r.$inject=["$scope","$uibModalInstance","$timeout","data"]}}]);
2
+ //# sourceMappingURL=35.a9846fba95e98a294957.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/autocomplete/app.js","webpack:///./src/js/angular/autocomplete/controllers.js"],"names":["angular","module","AutocompleteCtrl","$scope","$interval","toastr","$repositories","$licenseService","$uibModal","$timeout","AutocompleteRestService","$autocompleteStatus","$translate","timer","cancelTimer","cancel","pluginName","setPluginIsActive","isPluginActive","pluginIsActive","refreshEnabledStatus","checkAutocompleteStatus","success","data","autocompleteEnabled","setAutocompleteStatus","error","getError","refreshIndexIRIs","shouldIndexIRIs","refreshIndexStatus","indexStatus","refreshLabelConfig","labelConfig","checkForPlugin","pluginFound","setLoader","loading","finally","pullStatus","$broadcast","$on","loader","message","loaderTimeout","loaderMessage","getLoaderMessage","instant","toggleAutocomplete","newValue","toggleIndexIRIs","buildIndex","interruptIndexing","getDegradedReason","addLabel","editLabel","labelIri","languages","label","isNew","open","templateUrl","controller","resolve","result","then","addLabelConfig","removeLabel","removeLabelConfig","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","AddLabelCtrl","$uibModalInstance","copy","ok","form","$valid","close","dismiss","setTemplate","iri","$","focus","$inject"],"mappings":"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","file":"35.fe688fc32270724c391d.bundle.js","sourcesContent":["import 'angular/autocomplete/controllers';\n\nconst modules = [\n 'ngRoute',\n 'graphdb.framework.autocomplete.controllers'\n];\n\nangular.module('graphdb.framework.autocomplete', modules);\n","import 'angular/rest/autocomplete.rest.service';\n\nconst modules = [\n 'toastr',\n 'graphdb.framework.rest.autocomplete.service'\n];\n\nangular\n .module('graphdb.framework.autocomplete.controllers', modules)\n .controller('AutocompleteCtrl', AutocompleteCtrl)\n .controller('AddLabelCtrl', AddLabelCtrl);\n\nAutocompleteCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$uibModal', '$timeout', 'AutocompleteRestService', '$autocompleteStatus', '$translate'];\n\nfunction AutocompleteCtrl($scope, $interval, toastr, $repositories, $licenseService, $uibModal, $timeout, AutocompleteRestService, $autocompleteStatus, $translate) {\n\n let timer;\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.pluginName = 'autocomplete';\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n };\n\n const refreshEnabledStatus = function () {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (data) {\n $scope.autocompleteEnabled = data;\n $autocompleteStatus.setAutocompleteStatus(data);\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexIRIs = function () {\n AutocompleteRestService.refreshIndexIRIs()\n .success(function (data) {\n $scope.shouldIndexIRIs = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexStatus = function () {\n AutocompleteRestService.refreshIndexStatus()\n .success(function (data) {\n $scope.indexStatus = data;\n })\n .error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshLabelConfig = function () {\n AutocompleteRestService.refreshLabelConfig()\n .success(function (data) {\n $scope.labelConfig = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const addLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n\n AutocompleteRestService.addLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const removeLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n AutocompleteRestService.removeLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.checkForPlugin = function () {\n $scope.pluginFound = false;\n\n $scope.setLoader(true);\n\n AutocompleteRestService.checkForPlugin()\n .success(function (data) {\n $scope.pluginFound = data === true;\n if ($scope.pluginFound) {\n refreshEnabledStatus();\n refreshIndexIRIs();\n refreshIndexStatus();\n refreshLabelConfig();\n } else {\n $scope.autocompleteEnabled = false;\n $scope.loading = false;\n }\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const pullStatus = function () {\n timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($scope.autocompleteEnabled) {\n refreshIndexStatus();\n }\n }, 5000);\n };\n\n $scope.$on(\"$destroy\", function () {\n cancelTimer();\n });\n\n const init = function() {\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.toggleAutocomplete = function () {\n const newValue = !$scope.autocompleteEnabled;\n $scope.setLoader(true, newValue ? $translate.instant('autocomplete.enabling') : $translate.instant('autocomplete.disabling'));\n\n AutocompleteRestService.toggleAutocomplete(newValue)\n .success(function () {\n refreshEnabledStatus();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.toggleIndexIRIs = function () {\n $scope.setLoader(true, ($translate.instant('autocomplete.index.iri')));\n\n AutocompleteRestService.toggleIndexIRIs(!$scope.shouldIndexIRIs)\n .success(function () {\n refreshIndexIRIs();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.buildIndex = function () {\n $scope.setLoader(true, $translate.instant('autocomplete.index.build'));\n\n AutocompleteRestService.buildIndex()\n .success(function () {\n $scope.indexStatus = 'BUILDING';\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.interruptIndexing = function () {\n $scope.setLoader(true, $translate.instant('index.interrupt'));\n\n AutocompleteRestService.interruptIndexing()\n .success(function () {\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.addLabel = function () {\n $scope.editLabel({labelIri: '', languages: ''}, true);\n };\n\n $scope.editLabel = function (label, isNew) {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/autocomplete/templates/modal/add-label.html',\n controller: 'AddLabelCtrl',\n resolve: {\n data: function () {\n return {\n label: label,\n isNew: isNew\n };\n }\n }\n });\n\n modalInstance.result.then(function (label) {\n addLabelConfig(label);\n });\n };\n\n $scope.removeLabel = function (label) {\n removeLabelConfig(label);\n };\n\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n });\n\n init();\n}\n\nAddLabelCtrl.$inject = ['$scope', '$uibModalInstance', '$timeout', 'data'];\n\nfunction AddLabelCtrl($scope, $uibModalInstance, $timeout, data) {\n $scope.label = angular.copy(data.label);\n $scope.isNew = data.isNew;\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n $uibModalInstance.close($scope.label);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.setTemplate = function (iri) {\n $scope.label.labelIri = iri;\n $timeout(function () {\n $('#wb-autocomplete-languages').focus();\n }, 0);\n };\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/autocomplete/app.js","webpack:///./src/js/angular/autocomplete/controllers.js"],"names":["angular","module","AutocompleteCtrl","$scope","$interval","toastr","$repositories","$licenseService","$uibModal","$timeout","AutocompleteRestService","$autocompleteStatus","$translate","timer","cancelTimer","cancel","pluginName","setPluginIsActive","isPluginActive","pluginIsActive","refreshEnabledStatus","checkAutocompleteStatus","success","data","autocompleteEnabled","setAutocompleteStatus","error","getError","refreshIndexIRIs","shouldIndexIRIs","refreshIndexStatus","indexStatus","refreshLabelConfig","labelConfig","checkForPlugin","pluginFound","setLoader","loading","finally","pullStatus","$broadcast","$on","loader","message","loaderTimeout","loaderMessage","getLoaderMessage","instant","toggleAutocomplete","newValue","toggleIndexIRIs","buildIndex","interruptIndexing","getDegradedReason","addLabel","editLabel","labelIri","languages","label","isNew","open","templateUrl","controller","resolve","result","then","addLabelConfig","removeLabel","removeLabelConfig","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","AddLabelCtrl","$uibModalInstance","copy","ok","form","$valid","close","dismiss","setTemplate","iri","$","focus","$inject"],"mappings":"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","file":"35.a9846fba95e98a294957.bundle.js","sourcesContent":["import 'angular/autocomplete/controllers';\n\nconst modules = [\n 'ngRoute',\n 'graphdb.framework.autocomplete.controllers'\n];\n\nangular.module('graphdb.framework.autocomplete', modules);\n","import 'angular/rest/autocomplete.rest.service';\n\nconst modules = [\n 'toastr',\n 'graphdb.framework.rest.autocomplete.service'\n];\n\nangular\n .module('graphdb.framework.autocomplete.controllers', modules)\n .controller('AutocompleteCtrl', AutocompleteCtrl)\n .controller('AddLabelCtrl', AddLabelCtrl);\n\nAutocompleteCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$uibModal', '$timeout', 'AutocompleteRestService', '$autocompleteStatus', '$translate'];\n\nfunction AutocompleteCtrl($scope, $interval, toastr, $repositories, $licenseService, $uibModal, $timeout, AutocompleteRestService, $autocompleteStatus, $translate) {\n\n let timer;\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.pluginName = 'autocomplete';\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n };\n\n const refreshEnabledStatus = function () {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (data) {\n $scope.autocompleteEnabled = data;\n $autocompleteStatus.setAutocompleteStatus(data);\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexIRIs = function () {\n AutocompleteRestService.refreshIndexIRIs()\n .success(function (data) {\n $scope.shouldIndexIRIs = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexStatus = function () {\n AutocompleteRestService.refreshIndexStatus()\n .success(function (data) {\n $scope.indexStatus = data;\n })\n .error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshLabelConfig = function () {\n AutocompleteRestService.refreshLabelConfig()\n .success(function (data) {\n $scope.labelConfig = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const addLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n\n AutocompleteRestService.addLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const removeLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n AutocompleteRestService.removeLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.checkForPlugin = function () {\n $scope.pluginFound = false;\n\n $scope.setLoader(true);\n\n AutocompleteRestService.checkForPlugin()\n .success(function (data) {\n $scope.pluginFound = data === true;\n if ($scope.pluginFound) {\n refreshEnabledStatus();\n refreshIndexIRIs();\n refreshIndexStatus();\n refreshLabelConfig();\n } else {\n $scope.autocompleteEnabled = false;\n $scope.loading = false;\n }\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const pullStatus = function () {\n timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($scope.autocompleteEnabled) {\n refreshIndexStatus();\n }\n }, 5000);\n };\n\n $scope.$on(\"$destroy\", function () {\n cancelTimer();\n });\n\n const init = function() {\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.toggleAutocomplete = function () {\n const newValue = !$scope.autocompleteEnabled;\n $scope.setLoader(true, newValue ? $translate.instant('autocomplete.enabling') : $translate.instant('autocomplete.disabling'));\n\n AutocompleteRestService.toggleAutocomplete(newValue)\n .success(function () {\n refreshEnabledStatus();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.toggleIndexIRIs = function () {\n $scope.setLoader(true, ($translate.instant('autocomplete.index.iri')));\n\n AutocompleteRestService.toggleIndexIRIs(!$scope.shouldIndexIRIs)\n .success(function () {\n refreshIndexIRIs();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.buildIndex = function () {\n $scope.setLoader(true, $translate.instant('autocomplete.index.build'));\n\n AutocompleteRestService.buildIndex()\n .success(function () {\n $scope.indexStatus = 'BUILDING';\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.interruptIndexing = function () {\n $scope.setLoader(true, $translate.instant('index.interrupt'));\n\n AutocompleteRestService.interruptIndexing()\n .success(function () {\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.addLabel = function () {\n $scope.editLabel({labelIri: '', languages: ''}, true);\n };\n\n $scope.editLabel = function (label, isNew) {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/autocomplete/templates/modal/add-label.html',\n controller: 'AddLabelCtrl',\n resolve: {\n data: function () {\n return {\n label: label,\n isNew: isNew\n };\n }\n }\n });\n\n modalInstance.result.then(function (label) {\n addLabelConfig(label);\n });\n };\n\n $scope.removeLabel = function (label) {\n removeLabelConfig(label);\n };\n\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n });\n\n init();\n}\n\nAddLabelCtrl.$inject = ['$scope', '$uibModalInstance', '$timeout', 'data'];\n\nfunction AddLabelCtrl($scope, $uibModalInstance, $timeout, data) {\n $scope.label = angular.copy(data.label);\n $scope.isNew = data.isNew;\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n $uibModalInstance.close($scope.label);\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n\n $scope.setTemplate = function (iri) {\n $scope.label.labelIri = iri;\n $timeout(function () {\n $('#wb-autocomplete-languages').focus();\n }, 0);\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[36,61],{44:function(e,i){angular.module("graphdb.framework.core.directives.paginations",[]).directive("paginations",(function(){return{template:'<uib-pagination class="nav navbar-right" total-items="matchedElements.length" items-per-page="pageSize" ng-model="page" ng-change="changePagination()" direction-links="false" boundary-links="true" max-size="5" rotate="true"></uib-pagination>'}}))},90:function(e,i,a){"use strict";a.r(i);a(20),a(44);var n=a(1);function t(e,i,a,t,s,r){e.guides=[],e.pageSizeOptions=[10,20,50,100],e.page=1,e.pageSize=e.pageSizeOptions[0],e.translationSubscription=void 0,e.init=function(){a.getGuides().then(i=>{e.guides=t("orderBy")(i,"guideOrder"),e.guides.forEach(e=>{switch(e.translatedGuideName=n.GuideUtils.translateLocalMessage(s,r,e.guideName),e.translatedGuideDescription=n.GuideUtils.translateLocalMessage(s,r,e.guideDescription),e.guideLevel){case void 0:case 0:e.guideLevelLabel="view.guides.level.beginner";break;case 1:e.guideLevelLabel="view.guides.level.intermediate";break;default:e.guideLevelLabel="view.guides.level.advanced"}}),e.matchedElements=e.guides,e.changePagination()})},e.startGuide=function(e){a.startGuide(e)},this.translationSubscription||(this.translationSubscription=i.$on("$translateChangeSuccess",()=>{e.init()})),e.changePagination=function(){angular.isDefined(e.guides)&&(e.displayedGuides=e.guides.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(i){e.page=1,e.pageSize=i||e.pageSizeOptions[0],e.changePagination()},e.init()}angular.module("graphdb.framework.guides.controllers",["ui.bootstrap","graphdb.framework.guides.services","graphdb.framework.core.directives.paginations"]).controller("GuidesCtrl",t),t.$inject=["$scope","$rootScope","GuidesService","$filter","$translate","$interpolate"]}}]);
2
- //# sourceMappingURL=36.7da22f08c8e850885cc5.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[36,61],{44:function(e,i){angular.module("graphdb.framework.core.directives.paginations",[]).directive("paginations",(function(){return{template:'<uib-pagination class="nav navbar-right" total-items="matchedElements.length" items-per-page="pageSize" ng-model="page" ng-change="changePagination()" direction-links="false" boundary-links="true" max-size="5" rotate="true"></uib-pagination>'}}))},91:function(e,i,a){"use strict";a.r(i);a(20),a(44);var n=a(1);function t(e,i,a,t,s,r){e.guides=[],e.pageSizeOptions=[10,20,50,100],e.page=1,e.pageSize=e.pageSizeOptions[0],e.translationSubscription=void 0,e.init=function(){a.getGuides().then(i=>{e.guides=t("orderBy")(i,"guideOrder"),e.guides.forEach(e=>{switch(e.translatedGuideName=n.GuideUtils.translateLocalMessage(s,r,e.guideName),e.translatedGuideDescription=n.GuideUtils.translateLocalMessage(s,r,e.guideDescription),e.guideLevel){case void 0:case 0:e.guideLevelLabel="view.guides.level.beginner";break;case 1:e.guideLevelLabel="view.guides.level.intermediate";break;default:e.guideLevelLabel="view.guides.level.advanced"}}),e.matchedElements=e.guides,e.changePagination()})},e.startGuide=function(e){a.startGuide(e)},this.translationSubscription||(this.translationSubscription=i.$on("$translateChangeSuccess",()=>{e.init()})),e.changePagination=function(){angular.isDefined(e.guides)&&(e.displayedGuides=e.guides.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(i){e.page=1,e.pageSize=i||e.pageSizeOptions[0],e.changePagination()},e.init()}angular.module("graphdb.framework.guides.controllers",["ui.bootstrap","graphdb.framework.guides.services","graphdb.framework.core.directives.paginations"]).controller("GuidesCtrl",t),t.$inject=["$scope","$rootScope","GuidesService","$filter","$translate","$interpolate"]}}]);
2
+ //# sourceMappingURL=36.4dbd0f9007404b0adbe2.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/core/directives/paginations.js","webpack:///./src/js/angular/guides/controllers.js"],"names":["angular","module","directive","template","GuidesCtrl","$scope","$rootScope","GuidesService","$filter","$translate","$interpolate","guides","pageSizeOptions","page","pageSize","translationSubscription","undefined","init","getGuides","then","forEach","guide","translatedGuideName","translateLocalMessage","guideName","translatedGuideDescription","guideDescription","guideLevel","guideLevelLabel","matchedElements","changePagination","startGuide","this","$on","isDefined","displayedGuides","slice","changePageSize","size","controller","$inject"],"mappings":"8EAAAA,QAAQC,OAAO,gDAAiD,IAC3DC,UAAU,eAAe,WACtB,MAAO,CACHC,SAAU,yP,gCCHtB,8BAgBA,SAASC,EAAWC,EAAQC,EAAYC,EAAeC,EAASC,EAAYC,GAExEL,EAAOM,OAAS,GAChBN,EAAOO,gBAAkB,CAAC,GAAI,GAAI,GAAI,KACtCP,EAAOQ,KAAO,EACdR,EAAOS,SAAWT,EAAOO,gBAAgB,GACzCP,EAAOU,6BAA0BC,EAEjCX,EAAOY,KAAO,WACVV,EAAcW,YACTC,KAAKR,IACFN,EAAOM,OAASH,EAAQ,UAARA,CAAmBG,EAAQ,cAC3CN,EAAOM,OAAOS,QAAQC,IAGlB,OAFAA,EAAMC,oBAAsB,aAAWC,sBAAsBd,EAAYC,EAAcW,EAAMG,WAC7FH,EAAMI,2BAA6B,aAAWF,sBAAsBd,EAAYC,EAAcW,EAAMK,kBAC5FL,EAAMM,YACV,UAAKX,EACL,KAAK,EACDK,EAAMO,gBAAkB,6BACxB,MACJ,KAAK,EACDP,EAAMO,gBAAkB,iCACxB,MACJ,QACIP,EAAMO,gBAAkB,gCAGpCvB,EAAOwB,gBAAkBxB,EAAOM,OAChCN,EAAOyB,sBAInBzB,EAAO0B,WAAa,SAAUV,GAC1Bd,EAAcwB,WAAWV,IAGxBW,KAAKjB,0BACNiB,KAAKjB,wBAA0BT,EAAW2B,IAAI,0BAA2B,KACrE5B,EAAOY,UAIfZ,EAAOyB,iBAAmB,WAClB9B,QAAQkC,UAAU7B,EAAOM,UACzBN,EAAO8B,gBAAkB9B,EAAOM,OAAOyB,MAAM/B,EAAOS,UAAYT,EAAOQ,KAAO,GAAIR,EAAOS,SAAWT,EAAOQ,QAInHR,EAAOgC,eAAiB,SAAUC,GAC9BjC,EAAOQ,KAAO,EAEVR,EAAOS,SADPwB,GAGkBjC,EAAOO,gBAAgB,GAE7CP,EAAOyB,oBAGXzB,EAAOY,OAhEXjB,QACKC,OAAO,uCAPI,CACZ,eACA,oCACA,kDAKCsC,WAAW,aAAcnC,GAE9BA,EAAWoC,QAAU,CAAC,SAAU,aAAc,gBAAiB,UAAW,aAAc","file":"36.7da22f08c8e850885cc5.bundle.js","sourcesContent":["angular.module('graphdb.framework.core.directives.paginations', [])\n .directive('paginations', function () {\n return {\n template: '<uib-pagination class=\"nav navbar-right\" total-items=\"matchedElements.length\" items-per-page=\"pageSize\" ng-model=\"page\" ng-change=\"changePagination()\" direction-links=\"false\" boundary-links=\"true\" max-size=\"5\" rotate=\"true\"></uib-pagination>',\n };\n });\n","import 'angular/guides/guides.service';\nimport 'angular/core/directives/paginations';\nimport {GuideUtils} from \"./guide-utils\";\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.guides.services',\n 'graphdb.framework.core.directives.paginations'\n];\n\nangular\n .module('graphdb.framework.guides.controllers', modules)\n .controller('GuidesCtrl', GuidesCtrl);\n\nGuidesCtrl.$inject = ['$scope', '$rootScope', 'GuidesService', '$filter', '$translate', '$interpolate'];\n\nfunction GuidesCtrl($scope, $rootScope, GuidesService, $filter, $translate, $interpolate) {\n\n $scope.guides = [];\n $scope.pageSizeOptions = [10, 20, 50, 100];\n $scope.page = 1;\n $scope.pageSize = $scope.pageSizeOptions[0];\n $scope.translationSubscription = undefined;\n\n $scope.init = function () {\n GuidesService.getGuides()\n .then(guides => {\n $scope.guides = $filter('orderBy')(guides, 'guideOrder');\n $scope.guides.forEach(guide => {\n guide.translatedGuideName = GuideUtils.translateLocalMessage($translate, $interpolate, guide.guideName);\n guide.translatedGuideDescription = GuideUtils.translateLocalMessage($translate, $interpolate, guide.guideDescription);\n switch (guide.guideLevel) {\n case undefined:\n case 0:\n guide.guideLevelLabel = 'view.guides.level.beginner';\n break;\n case 1:\n guide.guideLevelLabel = 'view.guides.level.intermediate';\n break;\n default: // 2 and above\n guide.guideLevelLabel = 'view.guides.level.advanced';\n }\n });\n $scope.matchedElements = $scope.guides;\n $scope.changePagination();\n });\n };\n\n $scope.startGuide = function (guide) {\n GuidesService.startGuide(guide);\n };\n\n if (!this.translationSubscription) {\n this.translationSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n $scope.init();\n });\n }\n\n $scope.changePagination = function () {\n if (angular.isDefined($scope.guides)) {\n $scope.displayedGuides = $scope.guides.slice($scope.pageSize * ($scope.page - 1), $scope.pageSize * $scope.page);\n }\n };\n\n $scope.changePageSize = function (size) {\n $scope.page = 1;\n if (size) {\n $scope.pageSize = size;\n } else {\n $scope.pageSize = $scope.pageSizeOptions[0];\n }\n $scope.changePagination();\n };\n\n $scope.init();\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/paginations.js","webpack:///./src/js/angular/guides/controllers.js"],"names":["angular","module","directive","template","GuidesCtrl","$scope","$rootScope","GuidesService","$filter","$translate","$interpolate","guides","pageSizeOptions","page","pageSize","translationSubscription","undefined","init","getGuides","then","forEach","guide","translatedGuideName","translateLocalMessage","guideName","translatedGuideDescription","guideDescription","guideLevel","guideLevelLabel","matchedElements","changePagination","startGuide","this","$on","isDefined","displayedGuides","slice","changePageSize","size","controller","$inject"],"mappings":"8EAAAA,QAAQC,OAAO,gDAAiD,IAC3DC,UAAU,eAAe,WACtB,MAAO,CACHC,SAAU,yP,gCCHtB,8BAgBA,SAASC,EAAWC,EAAQC,EAAYC,EAAeC,EAASC,EAAYC,GAExEL,EAAOM,OAAS,GAChBN,EAAOO,gBAAkB,CAAC,GAAI,GAAI,GAAI,KACtCP,EAAOQ,KAAO,EACdR,EAAOS,SAAWT,EAAOO,gBAAgB,GACzCP,EAAOU,6BAA0BC,EAEjCX,EAAOY,KAAO,WACVV,EAAcW,YACTC,KAAKR,IACFN,EAAOM,OAASH,EAAQ,UAARA,CAAmBG,EAAQ,cAC3CN,EAAOM,OAAOS,QAAQC,IAGlB,OAFAA,EAAMC,oBAAsB,aAAWC,sBAAsBd,EAAYC,EAAcW,EAAMG,WAC7FH,EAAMI,2BAA6B,aAAWF,sBAAsBd,EAAYC,EAAcW,EAAMK,kBAC5FL,EAAMM,YACV,UAAKX,EACL,KAAK,EACDK,EAAMO,gBAAkB,6BACxB,MACJ,KAAK,EACDP,EAAMO,gBAAkB,iCACxB,MACJ,QACIP,EAAMO,gBAAkB,gCAGpCvB,EAAOwB,gBAAkBxB,EAAOM,OAChCN,EAAOyB,sBAInBzB,EAAO0B,WAAa,SAAUV,GAC1Bd,EAAcwB,WAAWV,IAGxBW,KAAKjB,0BACNiB,KAAKjB,wBAA0BT,EAAW2B,IAAI,0BAA2B,KACrE5B,EAAOY,UAIfZ,EAAOyB,iBAAmB,WAClB9B,QAAQkC,UAAU7B,EAAOM,UACzBN,EAAO8B,gBAAkB9B,EAAOM,OAAOyB,MAAM/B,EAAOS,UAAYT,EAAOQ,KAAO,GAAIR,EAAOS,SAAWT,EAAOQ,QAInHR,EAAOgC,eAAiB,SAAUC,GAC9BjC,EAAOQ,KAAO,EAEVR,EAAOS,SADPwB,GAGkBjC,EAAOO,gBAAgB,GAE7CP,EAAOyB,oBAGXzB,EAAOY,OAhEXjB,QACKC,OAAO,uCAPI,CACZ,eACA,oCACA,kDAKCsC,WAAW,aAAcnC,GAE9BA,EAAWoC,QAAU,CAAC,SAAU,aAAc,gBAAiB,UAAW,aAAc","file":"36.4dbd0f9007404b0adbe2.bundle.js","sourcesContent":["angular.module('graphdb.framework.core.directives.paginations', [])\n .directive('paginations', function () {\n return {\n template: '<uib-pagination class=\"nav navbar-right\" total-items=\"matchedElements.length\" items-per-page=\"pageSize\" ng-model=\"page\" ng-change=\"changePagination()\" direction-links=\"false\" boundary-links=\"true\" max-size=\"5\" rotate=\"true\"></uib-pagination>',\n };\n });\n","import 'angular/guides/guides.service';\nimport 'angular/core/directives/paginations';\nimport {GuideUtils} from \"./guide-utils\";\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.guides.services',\n 'graphdb.framework.core.directives.paginations'\n];\n\nangular\n .module('graphdb.framework.guides.controllers', modules)\n .controller('GuidesCtrl', GuidesCtrl);\n\nGuidesCtrl.$inject = ['$scope', '$rootScope', 'GuidesService', '$filter', '$translate', '$interpolate'];\n\nfunction GuidesCtrl($scope, $rootScope, GuidesService, $filter, $translate, $interpolate) {\n\n $scope.guides = [];\n $scope.pageSizeOptions = [10, 20, 50, 100];\n $scope.page = 1;\n $scope.pageSize = $scope.pageSizeOptions[0];\n $scope.translationSubscription = undefined;\n\n $scope.init = function () {\n GuidesService.getGuides()\n .then(guides => {\n $scope.guides = $filter('orderBy')(guides, 'guideOrder');\n $scope.guides.forEach(guide => {\n guide.translatedGuideName = GuideUtils.translateLocalMessage($translate, $interpolate, guide.guideName);\n guide.translatedGuideDescription = GuideUtils.translateLocalMessage($translate, $interpolate, guide.guideDescription);\n switch (guide.guideLevel) {\n case undefined:\n case 0:\n guide.guideLevelLabel = 'view.guides.level.beginner';\n break;\n case 1:\n guide.guideLevelLabel = 'view.guides.level.intermediate';\n break;\n default: // 2 and above\n guide.guideLevelLabel = 'view.guides.level.advanced';\n }\n });\n $scope.matchedElements = $scope.guides;\n $scope.changePagination();\n });\n };\n\n $scope.startGuide = function (guide) {\n GuidesService.startGuide(guide);\n };\n\n if (!this.translationSubscription) {\n this.translationSubscription = $rootScope.$on('$translateChangeSuccess', () => {\n $scope.init();\n });\n }\n\n $scope.changePagination = function () {\n if (angular.isDefined($scope.guides)) {\n $scope.displayedGuides = $scope.guides.slice($scope.pageSize * ($scope.page - 1), $scope.pageSize * $scope.page);\n }\n };\n\n $scope.changePageSize = function (size) {\n $scope.page = 1;\n if (size) {\n $scope.pageSize = size;\n } else {\n $scope.pageSize = $scope.pageSizeOptions[0];\n }\n $scope.changePagination();\n };\n\n $scope.init();\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[37,133],{60:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},73:function(e,t,n){"use strict";n.r(t);n(4),n(10),n(12),n(60);var o=n(0),r=n(67);angular.module("graphdb.framework.impex.export.controllers",["ngCookies","ui.bootstrap","toastr","graphdb.framework.core.services.repositories","graphdb.framework.core.services.jwtauth","graphdb.workbench.utils.filetypes"]).controller("ExportCtrl",["$scope","$http","$location","$timeout","ModalService","filterFilter","$repositories","toastr","RDF4JRepositoriesRestService","FileTypes","$translate",function(e,t,n,a,i,s,p,l,c,g,d){e.getActiveRepository=function(){return p.getActiveRepository()},e.exportFormats=g,e.deleting={},e.showExportDDTooltip=!0,e.page=1,e.pageSize=10,e.pageSizeOptions=[10,20,50,100],e.displayGraphs=[],e.exportFilter="",e.export=!0,e.exportMultipleGraphs=!1,e.repoExportFormat={name:"TriG",type:"application/x-trig",extension:".trig"},e.selectedGraphs={exportGraphs:{}},e.$watch((function(){return p.getActiveRepository()}),(function(){e.exportFilter="",e.getGraphs(),e.selectedAll=!1,a((function(){e.changePageSize(10)}),100)})),e.isShacl=function(e){return"http%3A%2F%2Frdf4j.org%2Fschema%2Frdf4j%23SHACLShapeGraph"===e},e.getGraphs=function(){e.getActiveRepository()?(e.loader=!0,c.getGraphs(e.getActiveRepository()).success((function(t){t.results.bindings.unshift({contextID:{type:"default",value:"import.default.graph"}}),e.graphsByValue={},Object.keys(t.results.bindings).forEach((function(n){const o=t.results.bindings[n];"bnode"===o.contextID.type?o.contextID.value="_:"+o.contextID.value:"default"===o.contextID.type?(o.contextID.uri=encodeURIComponent("http://www.openrdf.org/schema/sesame#nil"),o.contextID.clearUri="DEFAULT",o.contextID.exportUri="null",o.contextID.longName="default graph"):(o.contextID.uri=encodeURIComponent(o.contextID.value),o.contextID.clearUri="GRAPH <"+o.contextID.value+">",o.contextID.exportUri=encodeURIComponent("<"+o.contextID.value+">"),o.contextID.longName="named graph "+o.contextID.value),e.graphsByValue[o.contextID.value]=o.contextID})),e.graphs=t.results.bindings,e.filteredGraphs=Object(r.cloneDeep)(e.graphs),e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page),e.loader=!1,e.selectedGraphs.exportGraphs={},e.matchedElements=e.graphs})).error((function(t,n){const o=getError(t,n);"There is no active location!"===o&&(p.setRepository(""),l.error(o,d.instant("common.error"))),e.loader=!1}))):e.loader=!1},e.onGraphSearch=function(){e.matchedElements=[],e.deselectAll(),e.filterResults()},e.filterResults=function(){angular.forEach(e.graphs,(function(t){-1!==t.contextID.value.indexOf(e.exportFilter)&&e.matchedElements.push(t)}))},e.downloadExport=function(e,t){let n=e+"&Accept="+encodeURIComponent(t.type);const o=localStorage.getItem("com.ontotext.graphdb.auth");o&&(n=n+"&authToken="+encodeURIComponent(o));let r=window.open(n);a((function(){"about:blank"!==r.document.location.href&&(r.close(),l.error("Could not export graph. Check GraphDB logs for detailed reason."))}),100)},e.openExportDDTooltip=function(){e.showExportDDTooltip&&(a((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),0),a((function(){$("#tooltipTarget").trigger("showExportDDTooltip")}),3e3),e.showExportDDTooltip=!1)},e.exportRepo=function(t,n){"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?i.openSimpleModal({title:d.instant("common.warning"),message:Object(o.decodeHTML)(d.instant("export.format.warning.msg")),warning:!0}).result.then((function(){e.startDownload(t,n)})):e.startDownload(t,n)},e.startDownload=function(t,n){let o;const r=p.getActiveRepositoryObject();o=n?`repositories/${r.id}/statements?infer=false&context=${e.graphsByValue[n.value].exportUri}&location=${encodeURIComponent(r.location)}`:`repositories/${r.id}/statements?infer=false&location=${encodeURIComponent(r.location)}`,e.downloadExport(o,t)},e.hasMultipleSelected=function(){if(_.isEmpty(e.selectedGraphs.exportGraphs))return!_.isEmpty(e.selectedGraphs.exportGraphs);for(const t in e.selectedGraphs.exportGraphs)if(!0===e.selectedGraphs.exportGraphs[t])return!0;return!1},e.exportSelectedGraphs=function(t){let n="";for(const t in e.selectedGraphs.exportGraphs)e.selectedGraphs.exportGraphs[t]&&(n+="context="+e.graphsByValue[t].exportUri+"&");if(n){const r=function(){n=n.substring(0,n.length-1);const o="repositories/"+e.getActiveRepository()+"/statements?infer=false&"+n;e.downloadExport(o,t)};"application/rdf+xml"===t.type||"text/plain"===t.type||"text/turtle"===t.type||"application/x-turtlestar"===t.type||"text/rdf+n3"===t.type?i.openSimpleModal({title:d.instant("common.warning"),message:Object(o.decodeHTML)(d.instant("export.format.warning.msg")),warning:!0}).result.then((function(){r()})):r()}else i.openSimpleModal({title:d.instant("export.multiple.graph"),message:d.instant("export.check.graphs.msg"),warning:!0})},e.$watch("exportFilter",(function(){if(e.filteredGraphs=s(e.graphs,e.exportFilter),e.getActiveRepository()&&angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span").length){const t=angular.element(document).find(".btn.btn-secondary.btn-sm.dropdown-toggle span")[0].innerHTML.trim();let n;"All"===t&&(n=e.filteredGraphs.length),e.filteredGraphs&&e.filteredGraphs.length>e.pageSize&&"All"!==t&&(n=e.pageSize),e.changePageSize(n),e.changePagination()}})),e.changePagination=function(){e.selectedAll=!1,angular.isDefined(e.filteredGraphs)&&(e.displayGraphs=e.filteredGraphs.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(t){$(".ot-graph-page-size").removeClass("active"),e.page=1,t&&(e.pageSize=t,e.changePagination()),e.filteredGraphs&&""!==e.exportFilter&&(e.displayGraphs=e.filteredGraphs)},e.checkAll=function(){e.selectedAll=e.selectedAll||!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=e.selectedAll)}))},e.deselectAll=function(){e.selectedAll=!1,angular.forEach(e.displayGraphs,(function(t){t.contextID.uri&&(e.selectedGraphs.exportGraphs[t.contextID.value]=!1)}))},e.dropRepository=function(){e.canWriteActiveRepo()&&(e.deleting["*"]=!0,i.openSimpleModal({title:d.instant("export.confirm.clear.msg"),message:d.instant("export.warning.clear.repo.msg",{repo:p.getActiveRepository()}),warning:!0}).result.then((function(){a((function(){c.addStatements(p.getActiveRepository(),"update=CLEAR ALL").then((function(){e.deleting["*"]=!1,l.success(d.instant("export.cleared.repo",{repo:p.getActiveRepository()})),e.getGraphs()}),(function(t){e.deleting["*"]=!1;const n=t.data;"string"==typeof n&&n.indexOf("Clearing all statements in the repository is incompatible with collecting history")>-1?l.error(d.instant("export.clearing.statements.warning")):l.error(d.instant("export.cleared.repo.failed.msg",{repo:p.getActiveRepository()}),t)}))}),100)})))},e.dropContext=function(t){e.canWriteActiveRepo()&&(angular.isDefined(t)?function(t){const n=t.contextID.longName;e.deleting[t]=!0,i.openSimpleModal({title:d.instant("export.confirm.clear.graph"),message:d.instant("export.clear.graph.warning",{longName:n}),warning:!0}).result.then((function(){a((function(){const o="update=CLEAR "+t.contextID.clearUri;c.addStatements(p.getActiveRepository(),o).then((function(){e.deleting[t]=!1,l.success(d.instant("export.cleared.graph",{longName:n})),e.getGraphs(),e.exportFilter="",e.filteredGraphs.length=0,e.updateResults(),e.changePageSize(e.pageSize)}),(function(o){e.deleting[t]=!1,l.error(d.instant("export.clear.graph.msg",{longName:n}),getError(o,o.status))}))}),100)}),(function(){e.deleting[t]=!1}))}(t):function(t){const n=[];angular.forEach(e.selectedGraphs.exportGraphs,(function(e,t){e&&n.push(t)})),n.length>0&&(e.deleting[t]=!0,i.openSimpleModal({title:d.instant("export.confirm.clear.graph"),message:d.instant("export.warning.clear.graph.msg"),warning:!0}).result.then((function(){a((function(){let t=0;angular.forEach(n,(function(o){const r="update=CLEAR "+e.graphsByValue[o].clearUri;c.addStatements(p.getActiveRepository(),r).then((function(){e.loader=!0,e.selectedGraphs.exportGraphs[o]=!1,delete e.selectedGraphs.exportGraphs[o],t++,n.length===t&&(e.selectedAll=!1,e.exportFilter="",e.filteredGraphs.length=0,e.getGraphs(),e.updateResults(),e.changePageSize(e.pageSize),l.success(d.instant("export.cleared.graph.msg")),e.loader=!1)}),(function(t){const n=e.graphsByValue[o].longName;l.error(d.instant("export.clear.graph.msg",{longName:n}),getError(t,t.status)),e.selectedAll=!1}))}))}),100)}),(function(){e.deleting[t]=!1})))}(t))}}])}}]);
2
+ //# sourceMappingURL=37.ac99eb00fe71266c5bff.bundle.js.map