graphdb-workbench 2.0.0-TR5 → 2.0.0-TR9

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 (193) hide show
  1. package/README.md +6 -1
  2. package/dist/{0.21974a2453b9a92dec33.bundle.js → 0.965871b861f4dddbba56.bundle.js} +3 -3
  3. package/dist/0.965871b861f4dddbba56.bundle.js.map +1 -0
  4. package/dist/{112.b871480dd961ac3c18b6.bundle.js → 112.0c1bdd906ac321ffbf5f.bundle.js} +2 -2
  5. package/dist/{112.b871480dd961ac3c18b6.bundle.js.map → 112.0c1bdd906ac321ffbf5f.bundle.js.map} +1 -1
  6. package/dist/114.282a327015f8ae87918b.bundle.js +1 -1
  7. package/dist/114.282a327015f8ae87918b.bundle.js.map +1 -1
  8. package/dist/{12.449fb5148a68a44ba324.bundle.js → 12.5d4da897bdd91e8808fa.bundle.js} +2 -2
  9. package/dist/12.5d4da897bdd91e8808fa.bundle.js.map +1 -0
  10. package/dist/13.f62fa8acc6e68826e07a.bundle.js +4 -0
  11. package/dist/13.f62fa8acc6e68826e07a.bundle.js.map +1 -0
  12. package/dist/14.349458c1675f763995a5.bundle.js +2 -0
  13. package/dist/14.349458c1675f763995a5.bundle.js.map +1 -0
  14. package/dist/15.ebce70c05fd90026747b.bundle.js +2 -0
  15. package/dist/15.ebce70c05fd90026747b.bundle.js.map +1 -0
  16. package/dist/{17.4b048ae019a8d2fd5b46.bundle.js → 17.f01afdf3b3892d73a3fe.bundle.js} +2 -2
  17. package/dist/17.f01afdf3b3892d73a3fe.bundle.js.map +1 -0
  18. package/dist/{18.5514f95535bdd2a71d6e.bundle.js → 18.10f65755b64a6534289e.bundle.js} +2 -2
  19. package/dist/{18.5514f95535bdd2a71d6e.bundle.js.map → 18.10f65755b64a6534289e.bundle.js.map} +1 -1
  20. package/dist/{21.e75213686a349ae7df89.bundle.js → 21.b6bf0d54a846411501c7.bundle.js} +2 -2
  21. package/dist/{21.e75213686a349ae7df89.bundle.js.map → 21.b6bf0d54a846411501c7.bundle.js.map} +1 -1
  22. package/dist/22.e8167eba683605211409.bundle.js +2 -0
  23. package/dist/22.e8167eba683605211409.bundle.js.map +1 -0
  24. package/dist/{23.32f2701680565c5d107b.bundle.js → 23.e3ca5b7bb2cee4f9467f.bundle.js} +3 -3
  25. package/dist/{23.32f2701680565c5d107b.bundle.js.map → 23.e3ca5b7bb2cee4f9467f.bundle.js.map} +1 -1
  26. package/dist/{24.8dd957168a8be963b393.bundle.js → 24.d5ea0f435b896dc12709.bundle.js} +2 -2
  27. package/dist/{24.8dd957168a8be963b393.bundle.js.map → 24.d5ea0f435b896dc12709.bundle.js.map} +1 -1
  28. package/dist/25.5b3feb79a7be0ca1f4ad.bundle.js +2 -0
  29. package/dist/25.5b3feb79a7be0ca1f4ad.bundle.js.map +1 -0
  30. package/dist/26.c4983d9f3009f41beb11.bundle.js +2 -0
  31. package/dist/26.c4983d9f3009f41beb11.bundle.js.map +1 -0
  32. package/dist/27.04085d1d15db39ca4a36.bundle.js +2 -0
  33. package/dist/27.04085d1d15db39ca4a36.bundle.js.map +1 -0
  34. package/dist/{28.b1c15ce7633c501836c5.bundle.js → 28.57b84065ebe40bb45f72.bundle.js} +2 -2
  35. package/dist/{28.b1c15ce7633c501836c5.bundle.js.map → 28.57b84065ebe40bb45f72.bundle.js.map} +1 -1
  36. package/dist/{29.66259b8a21bbb5431a06.bundle.js → 29.959ae6b366d15d0ddea9.bundle.js} +2 -2
  37. package/dist/{29.66259b8a21bbb5431a06.bundle.js.map → 29.959ae6b366d15d0ddea9.bundle.js.map} +1 -1
  38. package/dist/{3.9eb2c7cced9d8b971c99.bundle.js → 3.26d967229917c7c5cdfb.bundle.js} +2 -2
  39. package/dist/{3.9eb2c7cced9d8b971c99.bundle.js.map → 3.26d967229917c7c5cdfb.bundle.js.map} +1 -1
  40. package/dist/{30.4d469715c2f2d1028b4b.bundle.js → 30.3592aaa1063719853218.bundle.js} +2 -2
  41. package/dist/30.3592aaa1063719853218.bundle.js.map +1 -0
  42. package/dist/{31.d810abed46d7c73ade7f.bundle.js → 31.c808da656c9ee6b7e84e.bundle.js} +2 -2
  43. package/dist/{31.d810abed46d7c73ade7f.bundle.js.map → 31.c808da656c9ee6b7e84e.bundle.js.map} +1 -1
  44. package/dist/{32.4f4c8e24d97a9d315335.bundle.js → 32.92b02260015995b4f777.bundle.js} +2 -2
  45. package/dist/{32.4f4c8e24d97a9d315335.bundle.js.map → 32.92b02260015995b4f777.bundle.js.map} +1 -1
  46. package/dist/{33.ea3b66016bbeff928fc3.bundle.js → 33.479162c943ca9a1982aa.bundle.js} +2 -2
  47. package/dist/33.479162c943ca9a1982aa.bundle.js.map +1 -0
  48. package/dist/34.22a096bd891109c927f5.bundle.js +2 -0
  49. package/dist/34.22a096bd891109c927f5.bundle.js.map +1 -0
  50. package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js → 35.9c81c96cc1621f9468aa.bundle.js} +2 -2
  51. package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js.map → 35.9c81c96cc1621f9468aa.bundle.js.map} +1 -1
  52. package/dist/{36.d444f7ad7724d126da1c.bundle.js → 36.cee947247d32cdcec00e.bundle.js} +2 -2
  53. package/dist/{36.d444f7ad7724d126da1c.bundle.js.map → 36.cee947247d32cdcec00e.bundle.js.map} +1 -1
  54. package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js → 37.42e443af5752a63a28fe.bundle.js} +2 -2
  55. package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js.map → 37.42e443af5752a63a28fe.bundle.js.map} +1 -1
  56. package/dist/{38.93c5a81548a3294efd9d.bundle.js → 38.5fff5c171cdd2563aad1.bundle.js} +2 -2
  57. package/dist/{38.93c5a81548a3294efd9d.bundle.js.map → 38.5fff5c171cdd2563aad1.bundle.js.map} +1 -1
  58. package/dist/{39.30dddbc6461137994eb4.bundle.js → 39.91c49550b6e2d11104fa.bundle.js} +2 -2
  59. package/dist/{39.30dddbc6461137994eb4.bundle.js.map → 39.91c49550b6e2d11104fa.bundle.js.map} +1 -1
  60. package/dist/4.786e6f1de67e5c6289a3.bundle.js +2 -0
  61. package/dist/4.786e6f1de67e5c6289a3.bundle.js.map +1 -0
  62. package/dist/{40.ae6db480b8323937451c.bundle.js → 40.a7e0220eb0c8a125abde.bundle.js} +2 -2
  63. package/dist/{40.ae6db480b8323937451c.bundle.js.map → 40.a7e0220eb0c8a125abde.bundle.js.map} +1 -1
  64. package/dist/41.1258b9502ba9383894d7.bundle.js +2 -0
  65. package/dist/{41.ba8cb2fb7f46ccb2ab28.bundle.js.map → 41.1258b9502ba9383894d7.bundle.js.map} +1 -1
  66. package/dist/{43.8d096939ee87946076e0.bundle.js → 43.86f9220f4f79feec5b27.bundle.js} +2 -2
  67. package/dist/{43.8d096939ee87946076e0.bundle.js.map → 43.86f9220f4f79feec5b27.bundle.js.map} +1 -1
  68. package/dist/{47.92a64d48c14c1ae82934.bundle.js → 47.fca0edd51becf34c06b7.bundle.js} +2 -2
  69. package/dist/{47.92a64d48c14c1ae82934.bundle.js.map → 47.fca0edd51becf34c06b7.bundle.js.map} +1 -1
  70. package/dist/{48.4b57a948edab2d3b9c55.bundle.js → 48.e495edf3c48e1b2fc052.bundle.js} +2 -2
  71. package/dist/{48.4b57a948edab2d3b9c55.bundle.js.map → 48.e495edf3c48e1b2fc052.bundle.js.map} +1 -1
  72. package/dist/49.80591a5efda019de6e4a.bundle.js +2 -0
  73. package/dist/49.80591a5efda019de6e4a.bundle.js.map +1 -0
  74. package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js → 53.c29678970b0cb8aa4b47.bundle.js} +2 -2
  75. package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js.map → 53.c29678970b0cb8aa4b47.bundle.js.map} +1 -1
  76. package/dist/{55.751acc0e54255fa3ace7.bundle.js → 55.427172af3ba7612f747a.bundle.js} +2 -2
  77. package/dist/{55.751acc0e54255fa3ace7.bundle.js.map → 55.427172af3ba7612f747a.bundle.js.map} +1 -1
  78. package/dist/{57.677c1eebf6a003639fff.bundle.js → 57.41b09f5fa3ee623aab83.bundle.js} +2 -2
  79. package/dist/{57.677c1eebf6a003639fff.bundle.js.map → 57.41b09f5fa3ee623aab83.bundle.js.map} +1 -1
  80. package/dist/{58.2c460e480eefb1a02aea.bundle.js → 58.ce5a29dded68f58c53b4.bundle.js} +2 -2
  81. package/dist/{58.2c460e480eefb1a02aea.bundle.js.map → 58.ce5a29dded68f58c53b4.bundle.js.map} +1 -1
  82. package/dist/{59.b8e9155530acba27a6fa.bundle.js → 59.10efdeff3a8ef9e5733d.bundle.js} +2 -2
  83. package/dist/{59.b8e9155530acba27a6fa.bundle.js.map → 59.10efdeff3a8ef9e5733d.bundle.js.map} +1 -1
  84. package/dist/{60.27e731a670680751538c.bundle.js → 60.97fb695857f6241ae612.bundle.js} +2 -2
  85. package/dist/{60.27e731a670680751538c.bundle.js.map → 60.97fb695857f6241ae612.bundle.js.map} +1 -1
  86. package/dist/{61.fce8a2436742c2e20032.bundle.js → 61.5d71ec3fe0cda230482b.bundle.js} +2 -2
  87. package/dist/{61.fce8a2436742c2e20032.bundle.js.map → 61.5d71ec3fe0cda230482b.bundle.js.map} +1 -1
  88. package/dist/{62.9e101a1894ee0f9a48be.bundle.js → 62.d53d104f74f9fbdacb35.bundle.js} +2 -2
  89. package/dist/{62.9e101a1894ee0f9a48be.bundle.js.map → 62.d53d104f74f9fbdacb35.bundle.js.map} +1 -1
  90. package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js → 63.46514dd9cf756bd0e831.bundle.js} +2 -2
  91. package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js.map → 63.46514dd9cf756bd0e831.bundle.js.map} +1 -1
  92. package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js → 65.401f44aaddb8aec6be1e.bundle.js} +2 -2
  93. package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js.map → 65.401f44aaddb8aec6be1e.bundle.js.map} +1 -1
  94. package/dist/{66.cf37216fb6f8e53cef2b.bundle.js → 66.7a1e4093247d23b65387.bundle.js} +2 -2
  95. package/dist/{66.cf37216fb6f8e53cef2b.bundle.js.map → 66.7a1e4093247d23b65387.bundle.js.map} +1 -1
  96. package/dist/{69.60ff11762016829be80d.bundle.js → 69.1944a1afebe9115c9262.bundle.js} +2 -2
  97. package/dist/{69.60ff11762016829be80d.bundle.js.map → 69.1944a1afebe9115c9262.bundle.js.map} +1 -1
  98. package/dist/7.0d2811d01a379d8b75fb.bundle.js +3 -0
  99. package/dist/7.0d2811d01a379d8b75fb.bundle.js.map +1 -0
  100. package/dist/{70.f86421bf02a9bfda5b95.bundle.js → 70.84500509fe2b0d19ab93.bundle.js} +2 -2
  101. package/dist/{70.f86421bf02a9bfda5b95.bundle.js.map → 70.84500509fe2b0d19ab93.bundle.js.map} +1 -1
  102. package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js → 76.2fa18e115678c4e24682.bundle.js} +2 -2
  103. package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js.map → 76.2fa18e115678c4e24682.bundle.js.map} +1 -1
  104. package/dist/8.7209929899c18f8a4580.bundle.js +2 -0
  105. package/dist/8.7209929899c18f8a4580.bundle.js.map +1 -0
  106. package/dist/{80.37504cf0c1e5ad897478.bundle.js → 80.83e56da7d7a69fc34eed.bundle.js} +2 -2
  107. package/dist/{80.37504cf0c1e5ad897478.bundle.js.map → 80.83e56da7d7a69fc34eed.bundle.js.map} +1 -1
  108. package/dist/{82.9b4d4dc326055aa47e04.bundle.js → 82.74d50036c210cb10b7f5.bundle.js} +2 -2
  109. package/dist/{82.9b4d4dc326055aa47e04.bundle.js.map → 82.74d50036c210cb10b7f5.bundle.js.map} +1 -1
  110. package/dist/{84.fab513b88806deb0981a.bundle.js → 84.7f42dd9d7dc01baaf465.bundle.js} +2 -2
  111. package/dist/{84.fab513b88806deb0981a.bundle.js.map → 84.7f42dd9d7dc01baaf465.bundle.js.map} +1 -1
  112. package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js → 86.581cbc54b6c6b6ea9f19.bundle.js} +2 -2
  113. package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js.map → 86.581cbc54b6c6b6ea9f19.bundle.js.map} +1 -1
  114. package/dist/{87.765567c0cbe89cbdb03c.bundle.js → 87.3606797303ead8dc2879.bundle.js} +2 -2
  115. package/dist/{87.765567c0cbe89cbdb03c.bundle.js.map → 87.3606797303ead8dc2879.bundle.js.map} +1 -1
  116. package/dist/{88.50c46652774325bffad3.bundle.js → 88.f5b8f83e57c9bea3c137.bundle.js} +2 -2
  117. package/dist/{88.50c46652774325bffad3.bundle.js.map → 88.f5b8f83e57c9bea3c137.bundle.js.map} +1 -1
  118. package/dist/{89.91c58e1902b0f444b068.bundle.js → 89.f9b4c4ddff2c0b5b70f7.bundle.js} +2 -2
  119. package/dist/{89.91c58e1902b0f444b068.bundle.js.map → 89.f9b4c4ddff2c0b5b70f7.bundle.js.map} +1 -1
  120. package/dist/{9.16a945b967e9a52bf535.bundle.js → 9.6a95a5c1eec963050422.bundle.js} +2 -2
  121. package/dist/{9.16a945b967e9a52bf535.bundle.js.map → 9.6a95a5c1eec963050422.bundle.js.map} +1 -1
  122. package/dist/{90.e12e77898d6341e59d8f.bundle.js → 90.4d42ba583fbc1d63d3d2.bundle.js} +2 -2
  123. package/dist/{90.e12e77898d6341e59d8f.bundle.js.map → 90.4d42ba583fbc1d63d3d2.bundle.js.map} +1 -1
  124. package/dist/95.1f83b03f48326a6cec45.bundle.js +2 -0
  125. package/dist/{95.decfcd3477dee353025b.bundle.js.map → 95.1f83b03f48326a6cec45.bundle.js.map} +1 -1
  126. package/dist/{bundle.6ce2d745fe23f2a6d129.bundle.js → bundle.1a982e7b3e2d9d06a802.bundle.js} +5 -5
  127. package/dist/bundle.1a982e7b3e2d9d06a802.bundle.js.map +1 -0
  128. package/dist/css/graphs-vizualizations.css +9 -1
  129. package/dist/css/lib/yasr.css +1 -0
  130. package/dist/css/yasr.custom.css +9 -0
  131. package/dist/index.html +4 -4
  132. package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +1 -0
  133. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  134. package/dist/{main.ea86ac1b6d636ab25dc7.css → main.db108895fbac32ad7e7b.css} +1 -1
  135. package/dist/pages/autocomplete.html +1 -1
  136. package/dist/pages/choose-repository-type.html +1 -1
  137. package/dist/pages/clusterInfo.html +1 -1
  138. package/dist/pages/create-index.html +4 -4
  139. package/dist/pages/dependencies.html +1 -1
  140. package/dist/pages/domainRangeInfo.html +2 -2
  141. package/dist/pages/edit.html +1 -1
  142. package/dist/pages/explore.html +1 -1
  143. package/dist/pages/export.html +1 -1
  144. package/dist/pages/find.html +1 -1
  145. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  146. package/dist/pages/graphs-visualizations.html +20 -10
  147. package/dist/pages/import.html +1 -1
  148. package/dist/pages/jdbc-create.html +5 -5
  149. package/dist/pages/monitor/queries.html +1 -1
  150. package/dist/pages/monitor/resources.html +2 -2
  151. package/dist/pages/namespaces.html +2 -2
  152. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  153. package/dist/pages/rdfrank.html +2 -2
  154. package/dist/pages/repositories.html +2 -2
  155. package/dist/pages/repository.html +2 -2
  156. package/dist/pages/similarity-indexes.html +1 -1
  157. package/dist/pages/sparql-template-create.html +5 -5
  158. package/dist/pages/sparql.html +3 -3
  159. package/dist/pages/webapi.html +2 -2
  160. package/dist/res/swagger/index.html +25 -25
  161. package/package.json +1 -1
  162. package/dist/0.21974a2453b9a92dec33.bundle.js.map +0 -1
  163. package/dist/12.449fb5148a68a44ba324.bundle.js.map +0 -1
  164. package/dist/13.77a8eae45bc4cda5fae7.bundle.js +0 -4
  165. package/dist/13.77a8eae45bc4cda5fae7.bundle.js.map +0 -1
  166. package/dist/14.a1d84445382b665e13e0.bundle.js +0 -2
  167. package/dist/14.a1d84445382b665e13e0.bundle.js.map +0 -1
  168. package/dist/15.73ffeb044255abbac7bf.bundle.js +0 -2
  169. package/dist/15.73ffeb044255abbac7bf.bundle.js.map +0 -1
  170. package/dist/17.4b048ae019a8d2fd5b46.bundle.js.map +0 -1
  171. package/dist/22.a3b52347055f1adac9ce.bundle.js +0 -2
  172. package/dist/22.a3b52347055f1adac9ce.bundle.js.map +0 -1
  173. package/dist/25.34da4f496fc62f2dae9b.bundle.js +0 -2
  174. package/dist/25.34da4f496fc62f2dae9b.bundle.js.map +0 -1
  175. package/dist/26.02814d2ed726f5a71d4e.bundle.js +0 -2
  176. package/dist/26.02814d2ed726f5a71d4e.bundle.js.map +0 -1
  177. package/dist/27.827ef7f030a5501be29a.bundle.js +0 -2
  178. package/dist/27.827ef7f030a5501be29a.bundle.js.map +0 -1
  179. package/dist/30.4d469715c2f2d1028b4b.bundle.js.map +0 -1
  180. package/dist/33.ea3b66016bbeff928fc3.bundle.js.map +0 -1
  181. package/dist/34.620159c2b04af0a88d1b.bundle.js +0 -2
  182. package/dist/34.620159c2b04af0a88d1b.bundle.js.map +0 -1
  183. package/dist/4.6a8bdb4c9048dd910bfd.bundle.js +0 -2
  184. package/dist/4.6a8bdb4c9048dd910bfd.bundle.js.map +0 -1
  185. package/dist/41.ba8cb2fb7f46ccb2ab28.bundle.js +0 -2
  186. package/dist/49.71f6e0f6f3284bf63cab.bundle.js +0 -2
  187. package/dist/49.71f6e0f6f3284bf63cab.bundle.js.map +0 -1
  188. package/dist/7.036cd4322fa473fb187a.bundle.js +0 -3
  189. package/dist/7.036cd4322fa473fb187a.bundle.js.map +0 -1
  190. package/dist/8.46db359ed59a04d3799b.bundle.js +0 -2
  191. package/dist/8.46db359ed59a04d3799b.bundle.js.map +0 -1
  192. package/dist/95.decfcd3477dee353025b.bundle.js +0 -2
  193. package/dist/bundle.6ce2d745fe23f2a6d129.bundle.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/rest/connectors.rest.service.js","webpack:///./src/js/angular/externalsync/controllers.js","webpack:///./src/js/angular/core/directives/queryeditor/query-editor.directive.js"],"names":["angular","module","factory","ConnectorsRestService","$inject","CONNECTORS_ENDPOINT","$http","getConnectors","get","initConnector","prefix","hasConnector","checkConnector","data","post","headers","jsonToFormData","str","Object","keys","forEach","key","push","encodeURIComponent","join","mapCreateValuesToUiValues","values","options","i","length","option","__type","__name","j","__childOptions","child","k","valueK","hasOwnProperty","isDefined","__defaultValue","optionEl","isUndefined","map","_","value","toJson","_evaluateSparqlQuery","http","repository","query","buildNamePrefix","substring","createConnectorQuery","name","fields","reportError","fcopy","sortObject","obj","newObject","each","childOption","copy","arrayMap","reduce","acc","Error","fromJson","e","__label","message","removeEmptyValues","Array","isArray","filter","item","trim","finalString","replace","ConnectorsCtrl","$scope","$repositories","$modal","toastr","ModalService","$q","RDF4JRepositoriesRestService","resetProgress","repair","beingBuiltConnector","percentDone","status","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","actionName","waitOnRepairStartOnce","eta","inline","iri","openProgressModal","$","extend","doneCallback","modalInstance","dismiss","open","templateUrl","controller","size","backdrop","scope","executeCreate","connector","errorCallback","modal","addStatements","getActiveRepository","update","then","res","existing","success","err","error","getError","finally","loader","controllers","definitions","getLoaderMessage","timeSeconds","Date","now","loaderStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","setLoader","isRunning","isLicenseValid","canWriteActiveRepo","connectors","all","connectorIris","createStatusQueryForAny","evaluateSparqlQuery","results","bindings","statusObject","JSON","parse","console","parseFirstBuildingResult","d","split","catch","getOptions","isEmpty","isObject","toPrettyJson","$watch","getActiveLocation","copyConnector","newValues","resolve","result","skipConversion","newConnector","inst","type","openSimpleModal","title","warning","delete","isExternal","indexOf","force","namePrefix","deleteConnectorQuery","viewQuery","DeleteConnectorCtrl","$modalInstance","ok","close","cancel","ExtendNewConnectorCtrl","toQuery","label","addField","index","optionName","newField","defaultValues","splice","addOption","array","deleteOption","addMapOption","deleteMapOption","form","$valid","CreateConnectorCtrl","$controller","this","CreateProgressCtrl","$interval","initProgress","statusIri","createStatusQueryForIri","progressInterval","getFirstStatusFromResult","toFixed","etaSeconds","$on","input","Math","ceil","queryEditorDirective","$timeout","$location","SparqlRestService","$jwtAuth","LocalStorageAdapter","LSKeys","callbackOnChange","restrict","link","element","attrs","nostorage","notabs","notoolbar","notoolbarSaved","notoolbarCopy","notoolbarInference","notoolbarSameAs","nostatus","norun","runButtonName","nocount","callback","saveQueryAction","click","runQueryAction","runQuery","explainQueryAction","goToNextTabAction","tabs","currentQuery","id","isTabChangeOk","idx","findTabIndexByID","selectTab","goToPreviousTabAction","requestedTab","first","tab","changePagination","explainRequested","window","editor","fromTextArea","document","getElementById","persistent","indentUnit","createShareLink","cursorHeight","sparql","showQueryButton","acceptHeaderGraph","acceptHeaderSelect","extraKeys","addNewTab","toastBuildIndex","allowHtml","toastError","on","css","clearTimeout","changesTimeout","hasError","queryValid","setTimeout","toggleClass","attr","getValue","queryType","getQueryType","hide","afterCopy","event","target","removeClass","addClass","blur","onbeforeunload","set","TABS_STATE","saveTab","originalExecuteQuery","executeQuery","originalGetUrlArguments","getUrlArguments","createCustomError","statusText","responseText","connectorProgressModal","yasr","drawButtons","yasqe","buttons","config","qType","currentTabConfig","pageSize","offset","page","cm","resultsContainer","empty","currentTrackAlias","performance","countTimeouted","getQueryMode","endpoint","args","inference","sameAs","customUpdateMessage","thisTabConfig","thisTabId","executedQueryTab","handlers","countCallback","dataOrJqXhr","textStatus","jqXhrOrErrorString","setResultsCount","allResultsCount","allCount","allResultsCountExact","outputType","output","queryStartTime","getTime","setQueryLimit","isActiveRepoOntopType","getValueWithoutComments","doExecute","getRepositorySize","repoSize","parseInt","command","hasSupport","timeFinished","timeTook","customError","connectorName","pluginName","getException","setNewTabState","progressScope","$new","originalGetAjaxConfig","getAjaxConfig","getResponseHeader","contentType","response","executedQueryTabIdx","queryResultState","yasrData","resultsCount","sizeDelta","errorMessage","warningMessage","toBoolean","v","loadQueryIntoExistingOrNewTab","infer","tabId","getExistingTabId","onHandler","search","execute","highlightNextTabChange","body","addTabWithQueryIfNeeded","savedQueryName","owner","getSavedQuery","TABS_STATE_CURRENT_ID","updateRepositoryAndSecurity","getNamespaces","signal","getAuthToken","callbackOrConfig","copyToClipboardQuery","openCopyToClipboardModal","url","location","protocol","host","pathname","param","createQueryURL","copyToClipboardResult","resultURI","goToVisual","paramsToParse","path","addKnownPrefixes","getUsedPrefixes","persistency","getQueryResultsAsFormat","downloadFormat","$wbDownload","val","auth","localStorage","getItem","submit","complete","setNewTabStateForThis","setYasrResponse","updateResultsCallback","repoSizeDiff","undefined","Number","responseJSON","max","hasClass","resetResults","setResponse","namespaces","mouseup","container","is","has","showSampleQueries","toggleSampleQueries","find","focus","drawQueryEditor","directive"],"mappings":"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","file":"26.02814d2ed726f5a71d4e.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n function getConnectors() {\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n function hasConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n","import 'angular/rest/rdf4j.repositories.rest.service';\nimport 'angular/rest/connectors.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'graphdb.framework.rest.connectors.service'\n];\n\nangular\n .module('graphdb.framework.externalsync.controllers', modules)\n .controller('ConnectorsCtrl', ConnectorsCtrl)\n .controller('ExtendNewConnectorCtrl', ExtendNewConnectorCtrl)\n .controller('CreateConnectorCtrl', CreateConnectorCtrl)\n .controller('CreateProgressCtrl', CreateProgressCtrl)\n .controller('DeleteConnectorCtrl', DeleteConnectorCtrl)\n .filter('ceil', ceil);\n\nfunction jsonToFormData(data) {\n const str = [];\n Object.keys(data).forEach(function (key) {\n str.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n });\n return str.join('&');\n}\n\nfunction toArrayMap(map) {\n return _.map(map, function (value, key) {\n return {key: key, value: value};\n });\n}\n\nfunction fromArrayMap(arrayMap) {\n return _.reduce(arrayMap, function (acc, value) {\n if (value.key === '' && value.value === '') {\n // empty pair, skip it\n } else if (value.key === '') {\n throw new Error('Key may not be empty with value \"' + value.value + '\"');\n } else if (acc.hasOwnProperty(value.key)) {\n throw new Error('Duplicate key ' + value.key);\n } else {\n acc[value.key] = value.value;\n }\n return acc;\n }, {});\n}\n\nfunction mapCreateValuesToUiValues(values, options) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n if (option.__type === 'StringArray') {\n if (!values[option.__name]) {\n values[option.__name] = [''];\n }\n } else if (option.__type === 'OptionArray') {\n if (!values[option.__name]) { // values has no entry for this option\n values[option.__name] = [];\n const optionEl = {};\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'StringArray') {\n optionEl[child.__name] = [''];\n } else {\n optionEl[child.__name] = (!angular.isUndefined(child.__defaultValue) ? child.__defaultValue : '');\n }\n }\n values[option.__name].push(optionEl);\n } else { // values already has en entry for this option\n // Copies the default value for Boolean child options if no explicit value is set\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'Boolean') {\n for (let k = 0; k < values[option.__name].length; k++) {\n const valueK = values[option.__name][k];\n if (!valueK.hasOwnProperty([child.__name]) && angular.isDefined(child.__defaultValue)) {\n valueK[child.__name] = child.__defaultValue;\n }\n }\n }\n }\n }\n } else if (option.__type === 'Map') {\n if (!values[option.__name]) {\n values[option.__name] = [];\n } else {\n values[option.__name] = toArrayMap(values[option.__name]);\n }\n } else if (option.__type === 'JsonString') {\n if (values[option.__name]) {\n values[option.__name] = angular.toJson(values[option.__name], 2);\n }\n } else {\n if (angular.isUndefined(values[option.__name])) {\n values[option.__name] = (!angular.isUndefined(option.__defaultValue) ? option.__defaultValue : '');\n }\n }\n }\n\n return values;\n}\n\nfunction _evaluateSparqlQuery(http, repository, query) {\n return http.post('repositories/' + repository, jsonToFormData({query: query}),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/sparql-results+json',\n 'X-GraphDB-Local-Consistency': 'updating'\n }\n });\n}\n\nfunction buildNamePrefix(prefix) {\n return prefix.substring(0, prefix.length - 1) + '/instance#';\n}\n\nfunction createConnectorQuery(name, prefix, fields, options, reportError) {\n // Returns a copy of the parameter obj sorted according to the order in options\n function sortObject(obj, options) {\n const newObject = {};\n _.each(options, function (option) {\n if (angular.isDefined(obj[option.__name])) {\n if (option.__type === 'OptionArray') {\n newObject[option.__name] = [];\n _.each(obj[option.__name], function (childOption) {\n newObject[option.__name].push(sortObject(childOption, option.__childOptions));\n });\n } else {\n newObject[option.__name] = angular.copy(obj[option.__name]);\n }\n }\n });\n return newObject;\n }\n\n const fcopy = sortObject(fields, options);\n\n for (let i = 0; i < options.length; i++) {\n try {\n if (options[i].__type === 'Map') {\n fcopy[options[i].__name] = fromArrayMap(fcopy[options[i].__name]);\n } else if (options[i].__type === 'JsonString') {\n fcopy[options[i].__name] = angular.fromJson(fcopy[options[i].__name]);\n }\n } catch (e) {\n reportError(options[i].__label, e.message);\n return null;\n }\n }\n\n removeEmptyValues(fcopy);\n //escapeValues(fields);\n let finalString = '';\n finalString += 'PREFIX :<' + prefix + '>\\n';\n const namePrefix = buildNamePrefix(prefix);\n finalString += 'PREFIX inst:<' + namePrefix + '>\\n';\n finalString += 'INSERT DATA {\\n';\n finalString += \"\\tinst:\" + name + \" :createConnector '''\\n\"; // eslint-disable-line quotes\n finalString += angular.toJson(fcopy, 2);\n finalString += \"\\n''' .\\n}\\n\"; // eslint-disable-line quotes\n finalString = finalString.replace(/\\\\/g, '\\\\\\\\\\\\');\n return finalString;\n}\n\nfunction createStatusQueryForIri(iri) {\n const statusIri = iri.replace(/\\/instance#.+$/, '#connectorStatus');\n let finalString = '';\n finalString += 'SELECT ?status {\\n';\n finalString += '\\t<' + iri + '> <' + statusIri + '> ?status';\n finalString += '\\n}';\n return finalString;\n}\n\nfunction createStatusQueryForAny(connectors) {\n const connectorIris = _.map(connectors,\n function (k) {\n return '<' + k.value + 'connectorStatus' + '>';\n }).join('|');\n\n if (connectorIris) {\n return 'SELECT ?connector ?status { ?connector ' + connectorIris + ' ?status }';\n }\n\n return null;\n}\n\nfunction repairConnectorQuery(name, prefix) {\n const namePrefix = buildNamePrefix(prefix);\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:repairConnector \"\"\\n' +\n '}';\n}\n\nfunction deleteConnectorQuery(name, prefix, force) {\n const namePrefix = prefix.substring(0, prefix.length - 1) + \"/instance#\";\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:dropConnector \"' + (force ? \"force\" : \"\") + '\"\\n' +\n '}';\n}\n\nfunction removeEmptyValues(data) {\n // remove empty values from array\n if (Array.isArray(data)) {\n data = _.filter(data, function (item) {\n return item !== null && (!item.trim || item.trim() !== '');\n });\n }\n // remove empty values from object values\n Object.keys(data).forEach(function (key) {\n if ((data[key] === '' || data[key] == null) && data[key] !== false) {\n delete data[key];\n } else if (typeof data[key] === 'object') {\n data[key] = removeEmptyValues(data[key]);\n }\n });\n return data;\n}\n\nfunction parseFirstBuildingResult(results) {\n if (results.bindings) {\n for (let i = 0; i < results.bindings.length; i++) {\n try {\n const statusObject = JSON.parse(results.bindings[i].status.value);\n if (statusObject.status === 'BUILDING') {\n return {\n connector: results.bindings[i].connector.value,\n status: statusObject\n };\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n}\n\nConnectorsCtrl.$inject = ['$scope', '$http', '$repositories', '$modal', 'toastr', 'ModalService', '$q', 'RDF4JRepositoriesRestService', 'ConnectorsRestService'];\n\nfunction ConnectorsCtrl($scope, $http, $repositories, $modal, toastr, ModalService, $q, RDF4JRepositoriesRestService, ConnectorsRestService) {\n $scope.loader = false;\n\n $scope.controllers = [];\n\n $scope.existing = {};\n\n $scope.definitions = {};\n\n $scope.getLoaderMessage = function () {\n const timeSeconds = (Date.now() - $scope.loaderStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = 'Running operation...' + timeHuman;\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n };\n\n $scope.setLoader = function (isRunning, progressMessage, extraMessage) {\n if (isRunning) {\n $scope.loader = true;\n $scope.loaderStartTime = Date.now();\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n } else {\n $scope.loader = false;\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n }\n };\n\n $scope.initConnector = function (connector) {\n return ConnectorsRestService.initConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.definitions[connector.key] = res.data;\n\n return ConnectorsRestService.hasConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.existing[connector.key] = res.data;\n\n });\n });\n };\n\n $scope.getConnectors = function () {\n if (!$scope.isLicenseValid()) {\n return;\n }\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $scope.setLoader(true, 'Fetching connectors', 'Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first.');\n\n ConnectorsRestService.getConnectors()\n .then(function (res) {\n $scope.connectors = Object.keys(res.data).map(function (key) {\n return {key: key, value: res.data[key]};\n });\n\n $q.all(_.map($scope.connectors, function (connector) {\n return $scope.initConnector(connector);\n })).finally(function () {\n resetProgress();\n\n const query = createStatusQueryForAny($scope.connectors);\n\n if (query) {\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = parseFirstBuildingResult(res.data.results);\n if (status.connector) {\n // has a building connector, open progress indicator\n const d = status.connector.split(/#/);\n d[0] = d[0].replace(/\\/instance$/, '#');\n showProgress(d[0], d[1]);\n }\n })\n .finally(function () {\n $scope.setLoader(false);\n });\n } else {\n $scope.setLoader(false);\n }\n });\n }).catch(function (e) {\n $scope.setLoader(false);\n toastr.error(getError(e), 'Could not get connectors');\n });\n\n $scope.existing = {};\n };\n\n $scope.getOptions = function (connector) {\n return $scope.definitions[connector.key];\n };\n\n $scope.isEmpty = function (value) {\n return angular.isObject(value) && Object.keys(value).length === 0;\n };\n\n $scope.toPrettyJson = function (value) {\n return angular.toJson(value, 2);\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, $scope.getConnectors);\n\n $scope.$watch(function () {\n return $repositories.getActiveLocation();\n }, $scope.getConnectors);\n\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function resetProgress(repair) {\n $scope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0\n },\n actionName: repair ? 'Repairing' : 'Creating',\n waitOnRepairStartOnce: !!repair,\n eta: '-',\n inline: false,\n iri: null\n };\n }\n\n function openProgressModal(prefix, name, repair) {\n resetProgress(repair);\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: false,\n doneCallback: function () {\n $scope.beingBuiltConnector.modalInstance.dismiss('cancel');\n }\n });\n\n $scope.beingBuiltConnector.modalInstance = $modal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: $scope\n });\n\n return $scope.beingBuiltConnector.modalInstance;\n }\n\n function showProgress(prefix, name) {\n resetProgress();\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: true,\n doneCallback: function () {\n $scope.beingBuiltConnector.inline = false;\n }\n });\n }\n\n function executeCreate(connector, obj, errorCallback) {\n const modal = openProgressModal(connector.value, obj.name, false);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: obj.query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(connector.value)).then(function (res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n toastr.success('Created connector ' + obj.name);\n }, function (err) {\n toastr.error(getError(err));\n errorCallback();\n }).finally(function () {\n modal.dismiss('cancel');\n });\n }\n\n $scope.copyConnector = function (connector, values) {\n let newValues;\n if (!angular.isUndefined(values)) {\n newValues = angular.copy(values);\n newValues.name = newValues.name + '-copy';\n }\n const modal = $modal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(newValues) ? {name: '', values: {}} : newValues;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.newConnector = function (connector, values) {\n const modal = $modal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(values) ? {name: '', values: {}} : values;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.repair = function (inst, type) {\n ModalService.openSimpleModal({\n title: 'Confirm repair',\n message: 'Are you sure you want to repair this connector?<br>Note that repair means delete + recreate with the same settings.',\n warning: true\n }).result\n .then(function () {\n const modal = openProgressModal(type.value, inst.name, true);\n\n const query = repairConnectorQuery(inst.name, type.value);\n\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n toastr.success('Repaired connector ' + inst.name);\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function () {\n modal.dismiss('cancel');\n });\n });\n };\n\n $scope.delete = function (inst, type) {\n const isExternal = type.key.indexOf(\"Elastic\") >= 0 || type.key.indexOf(\"Solr\") >= 0;\n\n $modal.open({\n templateUrl: 'js/angular/externalsync/templates/deleteConnector.html',\n controller: 'DeleteConnectorCtrl',\n resolve: {\n type: function () {\n return type.key;\n },\n isExternal: function () {\n return isExternal;\n }\n }\n }).result\n .then(function(force) {\n $scope.setLoader(true, 'Deleting connector ' + inst.name, 'This is usually a fast operation but it might take a while.');\n\n const query = deleteConnectorQuery(inst.name, type.value, force);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n if (force) {\n toastr.success(\"Deleted (with force) connector \" + inst.name);\n if (isExternal) {\n toastr.warning(\"You may have to remove the index manually from \" + type.key);\n }\n } else {\n toastr.success(\"Deleted connector \" + inst.name);\n }\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function() {\n $scope.setLoader(false);\n });\n });\n };\n\n $scope.viewQuery = function (connector, inst) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n const options = $scope.getOptions(connector);\n return createConnectorQuery(inst.name, connector.value,\n mapCreateValuesToUiValues(inst.values, options), options);\n }\n }\n });\n };\n}\n\nDeleteConnectorCtrl.$inject = ['$scope', '$modalInstance', 'type', 'isExternal'];\nfunction DeleteConnectorCtrl($scope, $modalInstance, type, isExternal) {\n $scope.force = false;\n $scope.type = type;\n $scope.isExternal = isExternal;\n\n $scope.ok = function () {\n $modalInstance.close($scope.force);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss();\n };\n}\n\nExtendNewConnectorCtrl.$inject = ['$scope', '$modalInstance', 'connector', '$modal', 'toastr'];\nfunction ExtendNewConnectorCtrl($scope, $modalInstance, connector, $modal, toastr) {\n\n $scope.connector = connector;\n\n $scope.addField = function (index, optionName) {\n const newField = angular.copy($scope.defaultValues[optionName][0]);\n $scope.values[optionName].splice(index + 1, 0, newField);\n };\n\n $scope.addOption = function (index, array) {\n array.splice(index + 1, 0, '');\n };\n\n $scope.deleteOption = function (index, array) {\n array.splice(index, 1);\n };\n\n $scope.addMapOption = function (index, array) {\n array.splice(index + 1, 0, {key: '', value: ''});\n };\n\n $scope.deleteMapOption = function (index, array) {\n array.splice(index, 1);\n };\n\n function toQuery() {\n return createConnectorQuery($scope.name, connector.value, $scope.values, $scope.options,\n function (label, error) {\n toastr.error(error, label);\n });\n }\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n const query = toQuery();\n\n if (query) {\n $modalInstance.close({name: $scope.name, values: $scope.values, options: $scope.options, query: query});\n }\n }\n };\n\n $scope.viewQuery = function () {\n const query = toQuery();\n\n if (query) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nCreateConnectorCtrl.$inject = ['$scope', '$controller', '$http', '$modalInstance', 'connector', '$modal', 'values', 'options'];\n\nfunction CreateConnectorCtrl($scope, $controller, $http, $modalInstance, connector, $modal, values, options) {\n angular.extend(this, $controller('ExtendNewConnectorCtrl', {\n $scope: $scope,\n $modalInstance: $modalInstance,\n connector: connector,\n $modal: $modal\n }));\n $scope.values = values.values;\n $scope.options = options;\n $scope.name = values.name;\n if (!values.skipConversion) {\n $scope.values = mapCreateValuesToUiValues($scope.values, $scope.options);\n }\n $scope.defaultValues = angular.copy($scope.values);\n}\n\n// Note that this is a fancy controller: it's used both for a modal and for a directive.\n// This means you can't rely on custom injection through resolve in the modal and the scope\n// must be shared with the main connectors controller.\nCreateProgressCtrl.$inject = ['$scope', '$interval', '$http', '$repositories'];\n\nfunction CreateProgressCtrl($scope, $interval, $http, $repositories) {\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function initProgress() {\n const query = createStatusQueryForIri($scope.beingBuiltConnector.iri);\n\n // reset iri value so that watch will fire again when we do something with the same connector\n $scope.beingBuiltConnector.iri = null;\n\n $scope.progressInterval = $interval(function () {\n function getFirstStatusFromResult(results) {\n if (results.bindings) {\n if (results.bindings.length > 0) {\n try {\n return JSON.parse(results.bindings[0].status.value);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n }\n\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = getFirstStatusFromResult(res.data.results);\n if (status.status === 'BUILDING') {\n $scope.beingBuiltConnector.status = status;\n $scope.beingBuiltConnector.percentDone = (100 * status.processedEntities / status.estimatedEntities).toFixed(0);\n $scope.beingBuiltConnector.eta = $scope.getHumanReadableSeconds(status.etaSeconds);\n $scope.beingBuiltConnector.actionName = status.repair ? 'Repairing' : 'Creating';\n $scope.beingBuiltConnector.waitOnRepairStartOnce = false;\n } else if (status.status === 'BUILT' && !$scope.beingBuiltConnector.waitOnRepairStartOnce) {\n // done\n $interval.cancel($scope.progressInterval);\n if ($scope.beingBuiltConnector.doneCallback) {\n $scope.beingBuiltConnector.doneCallback();\n }\n }\n });\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel($scope.progressInterval);\n });\n }\n\n $scope.beingBuiltConnector = $scope.beingBuiltConnector || {};\n\n // for modal instance we get the iri before hand and can start progress now\n if (!$scope.beingBuiltConnector.inline && $scope.beingBuiltConnector.iri) {\n initProgress();\n }\n\n // for inline progress we need to watch for the iri value\n $scope.$watch('beingBuiltConnector.iri', function (value) {\n if ($scope.beingBuiltConnector.inline && value) {\n initProgress();\n }\n });\n}\n\nfunction ceil() {\n return function (input) {\n return Math.ceil(input);\n };\n}\n","import 'angular/rest/connectors.rest.service';\nimport 'angular/utils/local-storage-adapter';\nimport 'angular/externalsync/controllers';\nimport YASQE from 'lib/yasqe.bundled';\nimport YASR from 'lib/yasr.bundled';\n\nangular\n .module('graphdb.framework.core.directives.queryeditor.queryeditor', [\n 'ngCookies',\n 'graphdb.framework.externalsync.controllers',\n 'graphdb.framework.rest.connectors.service',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .directive('queryEditor', queryEditorDirective);\n\nqueryEditorDirective.$inject = ['$timeout', '$location', 'toastr', '$repositories', 'SparqlRestService', 'ModalService', '$modal', '$jwtAuth', 'RDF4JRepositoriesRestService', 'ConnectorsRestService', 'LocalStorageAdapter', 'LSKeys'];\n\nfunction queryEditorDirective($timeout, $location, toastr, $repositories, SparqlRestService, ModalService, $modal, $jwtAuth, RDF4JRepositoriesRestService, ConnectorsRestService, LocalStorageAdapter, LSKeys) {\n\n let callbackOnChange;\n\n return {\n restrict: 'AE',\n scope: false,\n templateUrl: 'js/angular/core/directives/queryeditor/templates/query-editor.html',\n link: linkFunc\n };\n\n //function updateLineGutter() in Yasqe receive wrong data and line numbers div have width 100%\n // magic value 150 seems to work well (including Safari), smaller values work on other browsers but not always on Safari\n function linkFunc(scope, element, attrs) {\n // Doesn't store anything in local storage\n scope.nostorage = attrs.hasOwnProperty('nostorage');\n // Doesn't allow multiple tabs in the editor, only a single tab is active\n scope.notabs = attrs.hasOwnProperty('notabs');\n // Hides all the vertical toolbar inside the editor\n scope.notoolbar = attrs.hasOwnProperty('notoolbar');\n // Hides the saved queries icons in the toolbar\n scope.notoolbarSaved = attrs.hasOwnProperty('notoolbarSaved');\n // Hides the copy query link icon in the toolbar\n scope.notoolbarCopy = attrs.hasOwnProperty('notoolbarCopy');\n // Hides the inference icon in the toolbar\n scope.notoolbarInference = attrs.hasOwnProperty('notoolbarInference');\n // Hides the sameAs icon in the toolbar\n scope.notoolbarSameAs = attrs.hasOwnProperty('notoolbarSameAs');\n // Doesn't show any status messages in YASR (e.g. no results, query took that many seconds, etc)\n scope.nostatus = attrs.hasOwnProperty('nostatus');\n // Doesn't show the run button\n scope.norun = attrs.hasOwnProperty('norun');\n // Name of the Run button in the editor\n scope.runButtonName = \"Run\";\n if (attrs.runButtonName) {\n scope.runButtonName = attrs.runButtonName;\n }\n // Doesn't execute the count query\n scope.nocount = attrs.nocount === \"true\";\n\n // Custom callback to call when the content changes (fired within timeout of 200)\n if (attrs.callbackOnChange) {\n const callback = scope[attrs.callbackOnChange];\n if (typeof callback === 'function') {\n callbackOnChange = callback;\n }\n }\n\n $timeout(function () {\n drawQueryEditor(scope);\n }, 150);\n }\n\n function drawQueryEditor(scope) {\n scope.changePagination = changePagination;\n\n // start of keyboard shortcut actions\n function saveQueryAction() {\n angular.element('#wb-sparql-saveQuery')[0].click();\n }\n\n function runQueryAction() {\n scope.runQuery(false, false);\n }\n\n function explainQueryAction() {\n scope.runQuery(false, true);\n }\n\n function goToNextTabAction() {\n if (scope.tabs.length < 2 || !scope.currentQuery.id || !scope.isTabChangeOk(false)) {\n return;\n }\n let idx = findTabIndexByID(scope.currentQuery.id);\n idx = (idx + 1) % scope.tabs.length;\n const tab = scope.tabs[idx];\n selectTab(tab.id);\n }\n\n function goToPreviousTabAction() {\n if (scope.tabs.length < 2 || !scope.currentQuery.id || !scope.isTabChangeOk(false)) {\n return;\n }\n let idx = findTabIndexByID(scope.currentQuery.id);\n idx--;\n if (idx === -1) {\n idx = scope.tabs.length - 1;\n }\n const tab = scope.tabs[idx];\n selectTab(tab.id);\n }\n\n window.editor = YASQE.fromTextArea(\n document.getElementById(\"query\"), {\n persistent: null,\n value: \"\",\n indentUnit: 4,\n createShareLink: null,\n cursorHeight: 1.0,\n sparql: {\n showQueryButton: false,\n acceptHeaderGraph: \"application/x-graphdb-table-results+json, application/rdf+json;q=0.9, */*;q=0.8\",\n acceptHeaderSelect: \"application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8\"\n },\n // We provide a wrapper for executeQuery so we have to redefine those here\n extraKeys: {\n \"Ctrl-Enter\": runQueryAction,\n \"Cmd-Enter\": runQueryAction,\n \"Shift-Ctrl-Enter\": explainQueryAction,\n \"Shift-Cmd-Enter\": explainQueryAction,\n \"Ctrl-Alt-T\": scope.addNewTab,\n \"Cmd-Alt-T\": scope.addNewTab,\n \"Ctrl-S\": saveQueryAction,\n \"Cmd-S\": saveQueryAction,\n \"Ctrl-Alt-Left\": goToPreviousTabAction,\n \"Cmd-Alt-Left\": goToPreviousTabAction,\n \"Ctrl-Alt-Right\": goToNextTabAction,\n \"Cmd-Alt-Right\": goToNextTabAction\n }\n }\n );\n\n window.editor.toastBuildIndex = function () {\n toastr.warning('', '<div class=\"autocomplete-toast\"><a href=\"autocomplete\">Autocomplete is OFF<br>Go to Setup -> Autocomplete</a></div>',\n {allowHtml: true});\n };\n\n window.editor.toastError = function (data) {\n toastr.error('Cannot execute autocomplete query. ' + getError(data));\n };\n\n window.editor.on(\"changes\", function () {\n angular.element('.CodeMirror-linenumbers').css('width', '1px');\n angular.element('.CodeMirror-sizer').css('margin-left', '0px');\n clearTimeout(scope.changesTimeout);\n const hasError = !window.editor.queryValid;\n scope.changesTimeout = setTimeout(callbackOnChange ? callbackOnChange() : function () {\n const idx = findTabIndexByID(scope.currentQuery.id) + 1;\n $('a[data-id = \"' + idx + '\"]')\n .toggleClass('query-has-error', hasError)\n .attr('title', hasError ?\n 'Query contains a syntax error. See the relevant line for more information.' :\n '');\n }, 200);\n scope.currentQuery.query = window.editor.getValue();\n scope.currentQuery.queryType = window.editor.getQueryType();\n });\n\n\n function selectTab(id) {\n $timeout(function () {\n let requestedTab = $('a[data-id = \"' + id + '\"]');\n if (requestedTab.length === 0) {\n // tab has been deleted in another browser window or something else occurred,\n // select first tab instead\n requestedTab = $('a[data-id]').first();\n }\n requestedTab.tab('show');\n }, 0);\n }\n\n // hide unneeded yasqe fullscreen button\n $(\".fullscreenToggleBtns\").hide();\n\n const afterCopy = function (event) {\n $(event.target).removeClass('fa-link').addClass('fa-check').blur();\n setTimeout(function () {\n $(event.target).removeClass('fa-check').addClass('fa-link');\n }, 1000);\n };\n\n window.onbeforeunload = function () {\n if (!scope.nostorage) {\n LocalStorageAdapter.set(LSKeys.TABS_STATE, scope.tabs);\n }\n scope.saveTab(scope.currentQuery.id);\n };\n\n /*\n * Patch the execute query to take into account the inference\n * and the same as options\n */\n const originalExecuteQuery = YASQE.executeQuery;\n const originalGetUrlArguments = YASQE.getUrlArguments;\n\n scope.$on('$destroy', function () {\n if (!scope.nostorage) {\n LocalStorageAdapter.set(LSKeys.TABS_STATE, scope.tabs);\n }\n YASQE.executeQuery = originalExecuteQuery;\n YASQE.getUrlArguments = originalGetUrlArguments;\n scope.saveTab(scope.currentQuery.id);\n });\n\n /*\n * Add our own buttons\n */\n YASQE.drawButtons = function (yasqe) {\n // Define this property because otherwise there are errors in yasgui's code.\n yasqe.buttons = $(\"#yasqe_buttons_mocked\");\n };\n\n YASQE.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n YASQE.getUrlArguments = function (yasqe, config) {\n const data = originalGetUrlArguments(yasqe, config);\n const qType = window.editor.getQueryType();\n if ('SELECT' === qType || 'CONSTRUCT' === qType || 'DESCRIBE' === qType) {\n // We request pageSize + 1 to know if there are more pages when total count isn't known\n data.push({name: 'limit', value: scope.currentTabConfig.pageSize + 1});\n scope.currentTabConfig.offset = (scope.currentTabConfig.page - 1) * scope.currentTabConfig.pageSize + 1;\n data.push({name: 'offset', value: scope.currentTabConfig.offset - 1});\n }\n // even though we have explainRequested in our scope too it doesn't always contain a fresh value\n if (scope.explainRequested && ('SELECT' === qType || 'CONSTRUCT' === qType)) {\n data.push({name: 'explain', value: 'true'});\n }\n return data;\n };\n\n function createCustomError(status, statusText, responseText) {\n return {\n status: status,\n statusText: statusText,\n responseText: responseText\n };\n }\n\n // Generates a new tracking alias for queries based on time\n function newTrackAlias() {\n return \"query-editor-\" + performance.now() + \"-\" + Date.now();\n }\n\n let connectorProgressModal;\n let yasr;\n\n YASQE.executeQuery = function (cm) {\n if (yasr && $(yasr.resultsContainer).length) {\n $(yasr.resultsContainer).empty();\n }\n // Request extra error/warning handling\n cm.options.sparql.headers['X-GraphDB-Catch'] = scope.currentTabConfig.pageSize + '; throw';\n scope.currentTrackAlias = newTrackAlias();\n cm.options.sparql.headers['X-GraphDB-Track-Alias'] = scope.currentTrackAlias;\n scope.countTimeouted = false;\n if (cm.getQueryMode() === 'query') {\n cm.options.sparql.endpoint = 'repositories/' + $repositories.getActiveRepository();\n } else if (cm.getQueryMode() === 'update') {\n cm.options.sparql.endpoint = 'repositories/' + $repositories.getActiveRepository() + '/statements';\n }\n cm.options.sparql.args = [{\n name: 'infer',\n value: scope.currentQuery.inference\n },\n {\n name: 'sameAs',\n value: scope.currentQuery.sameAs\n }];\n\n scope.currentTabConfig.customUpdateMessage = \"\";\n\n if (window.editor.getQueryMode() === \"update\") {\n const doExecute = function () {\n scope.currentTabConfig.queryType = \"UPDATE\";\n\n RDF4JRepositoriesRestService.getRepositorySize()\n .success(function (data) {\n scope.repoSize = parseInt(data);\n scope.queryStartTime = new Date().getTime();\n return originalExecuteQuery(cm, {});\n })\n .error(function (data) {\n toastr.warning('Could not get repository size for: ' + $repositories.getActiveRepository() + '; ' + getError(data));\n scope.queryStartTime = new Date().getTime();\n return originalExecuteQuery(cm, {});\n });\n };\n\n ConnectorsRestService.checkConnector(window.editor.getValue())\n .then(function (res) {\n if (res.data.command && !res.data.hasSupport) {\n // it's a connector query but the relevant plugin isn't active, stop executing and warn the user\n scope.currentTabConfig.queryType = 'ERROR';\n scope.currentTabConfig.timeFinished = Date.now();\n scope.currentTabConfig.timeTook = (scope.currentTabConfig.timeFinished - scope.queryStartTime) / 1000;\n\n const customError = createCustomError(-1, 'No support for ' + res.data.connectorName, res.data.connectorName\n + ' connectors are not supported because the plugin ' + res.data.pluginName + ' is not active.');\n\n yasr.results = {\n getException: function () {\n return customError;\n }\n };\n\n scope.setLoader(false);\n\n setNewTabState({customError: customError}, '', null);\n\n return;\n }\n\n if (res.data.command === 'create' || res.data.command === 'repair') {\n const repair = res.data.command === 'repair';\n if (repair) {\n scope.setLoader(true, 'Repairing connector ' + res.data.name);\n scope.currentTabConfig.customUpdateMessage = 'Repaired connector ' + res.data.name + '.';\n } else {\n scope.setLoader(true, 'Creating connector ' + res.data.name);\n scope.currentTabConfig.customUpdateMessage = 'Created connector ' + res.data.name + '.';\n }\n\n const progressScope = scope.$new(true);\n\n // This duplicates code in the externalsync module but we can't get it from there\n progressScope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0\n },\n actionName: repair ? 'Repairing' : 'Creating',\n eta: \"-\",\n inline: false,\n iri: res.data.iri,\n name: res.data.name,\n doneCallback: function () {\n connectorProgressModal.dismiss('cancel');\n }\n };\n progressScope.getHumanReadableSeconds = scope.getHumanReadableSeconds;\n\n connectorProgressModal = $modal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: progressScope\n });\n } else if (res.data.command === 'drop') {\n scope.setLoader(true, 'Deleting connector ' + res.data.name);\n scope.currentTabConfig.customUpdateMessage = 'Deleted connector ' + res.data.name + '.';\n }\n\n doExecute();\n }, function () {\n // for some reason we couldn't check if this is a connector update, so just execute it\n doExecute();\n });\n\n } else {\n const thisTabConfig = scope.currentTabConfig;\n const thisTabId = scope.executedQueryTab.id;\n\n // Assign a fresh callback function so that we can associate the count result\n // with the right tab (or lack of tab).\n window.editor.options.sparql.handlers.countCallback = function (dataOrJqXhr, textStatus, jqXhrOrErrorString) {\n if (dataOrJqXhr.status === 200) {\n const tab = scope.tabs[findTabIndexByID(thisTabId)];\n if (tab) {\n yasr.setResultsCount(dataOrJqXhr, textStatus, jqXhrOrErrorString);\n thisTabConfig.allResultsCount = yasr.allCount;\n tab.allResultsCount = yasr.allCount;\n thisTabConfig.allResultsCountExact = true;\n tab.allResultsCountExact = true;\n scope.saveTab(tab.id);\n } // Else tab was closed while we wait for the count, ignore result\n } else {\n // count query timed out or something else went wrong\n thisTabConfig.countTimeouted = true;\n }\n };\n\n // Tell YASR what format we want, or else it will mess it up when switching between tabs.\n if (scope.currentQuery.outputType != null) {\n yasr.options.output = scope.currentQuery.outputType;\n } else { // Default to table if no format has been configured yet.\n yasr.options.output = \"table\";\n }\n scope.currentTabConfig.queryType = window.editor.getQueryType();\n scope.queryStartTime = new Date().getTime();\n return originalExecuteQuery(cm, {\n setQueryLimit: function (query) {\n // Until weird conversion of CONSTRUCT queries is fixed\n // in Ontop project, comments should be removed from them\n // TODO: Remove this check when ${link https://github.com/ontop/ontop/issues/362} is fixed\n if (scope.currentTabConfig.queryType === 'CONSTRUCT' && $repositories.isActiveRepoOntopType()) {\n return window.editor.getValueWithoutComments();\n }\n // For all types of queries we handle limit/offset in our RepositoriesController.\n // TODO: Get rid of this method\n return query;\n }\n });\n }\n\n };\n\n // Override yasqe's getAjaxConfig() so we can inject our authorization header\n const originalGetAjaxConfig = YASQE.getAjaxConfig;\n YASQE.getAjaxConfig = function (yasqe, callbackOrConfig) {\n const config = originalGetAjaxConfig(yasqe, callbackOrConfig);\n\n _.extend(config.headers, {\n 'Authorization': $jwtAuth.getAuthToken()\n });\n\n return config;\n };\n\n function createQueryURL(savedQueryName, owner) {\n let url = [location.protocol, '//', location.host, location.pathname].join('');\n if (savedQueryName) {\n url = url + '?savedQueryName=' + encodeURIComponent(savedQueryName);\n if (owner != null) {\n url += '&owner=' + encodeURIComponent(owner);\n }\n } else {\n url = url + '?' + $.param({\n name: scope.currentQuery.name,\n infer: scope.currentQuery.inference,\n sameAs: scope.currentQuery.sameAs,\n query: window.editor.getValue()\n });\n }\n return url;\n }\n\n scope.copyToClipboardQuery = function (savedQueryName, owner) {\n ModalService.openCopyToClipboardModal(createQueryURL(savedQueryName, owner));\n };\n\n scope.copyToClipboardResult = function (resultURI) {\n ModalService.openCopyToClipboardModal(resultURI);\n };\n\n scope.goToVisual = function () {\n const paramsToParse = {\n query: window.editor.getValue(),\n sameAs: scope.currentQuery.sameAs,\n inference: scope.currentQuery.inference\n };\n\n $location.path('graphs-visualizations').search(paramsToParse);\n };\n\n // Adds prefixes when the user pastes a query. This was in the controller before and it stopped working\n // (needs to happen to after YASQE adds the textarea), see GDB-1936\n $('textarea').on('paste', function () {\n $timeout(function () {\n scope.addKnownPrefixes();\n }, 0);\n });\n\n function setNewTabState(dataOrJqXhr, textStatus, jqXhrOrErrorString) {\n // store explicitly the contentType\n if (dataOrJqXhr.getResponseHeader && dataOrJqXhr.getResponseHeader(\"content-type\")) {\n dataOrJqXhr.contentType = dataOrJqXhr.getResponseHeader(\"content-type\");\n }\n\n // We use this when we set YASR results to avoid double JSON parsing and to enforce\n // using the modified responseJSON. We'll save responseJSON instead (no need to save both).\n delete dataOrJqXhr.response;\n\n const executedQueryTabIdx = findTabIndexByID(scope.executedQueryTab.id);\n const executedQueryTab = scope.tabs[executedQueryTabIdx];\n const queryResultState = {\n queryType: scope.currentTabConfig.queryType,\n yasrData: dataOrJqXhr,\n textStatus: textStatus,\n jqXhrOrErrorString: jqXhrOrErrorString,\n page: scope.currentTabConfig.page,\n pageSize: scope.currentTabConfig.pageSize,\n allResultsCount: scope.currentTabConfig.allResultsCount,\n allResultsCountExact: scope.currentTabConfig.allResultsCountExact,\n resultsCount: scope.currentTabConfig.resultsCount,\n offset: scope.currentTabConfig.offset,\n timeTook: scope.currentTabConfig.timeTook,\n timeFinished: scope.currentTabConfig.timeFinished,\n sizeDelta: scope.currentTabConfig.sizeDelta,\n customUpdateMessage: scope.currentTabConfig.customUpdateMessage,\n errorMessage: scope.currentTabConfig.errorMessage,\n warningMessage: scope.currentTabConfig.warningMessage\n };\n\n // Save the output type only if it isn't an update or an ask query.\n // This way we preserve the existing output type when we execute an update and then\n // execute a non-ask query.\n if (scope.currentTabConfig.queryType !== \"ERROR\" && scope.currentTabConfig.queryType !== \"UPDATE\"\n && scope.currentTabConfig.queryType !== \"ASK\") {\n queryResultState.outputType = scope.yasr.options.output;\n }\n\n // merge query results state with the tab object\n angular.extend(scope.currentQuery, queryResultState);\n\n angular.extend(executedQueryTab, queryResultState);\n if (!scope.nostorage) {\n LocalStorageAdapter.set(LSKeys.TABS_STATE, scope.tabs);\n }\n $('a[data-id = \"' + scope.executedQueryTab.id + '\"]').tab('show');\n }\n\n function initYasr() {\n yasr = YASR(document.getElementById(\"yasr\"), { // eslint-disable-line new-cap\n getUsedPrefixes: {}, // initially blank, populated when we fetch the namespaces\n persistency: false\n });\n window.yasr = yasr;\n yasr.afterCopy = afterCopy;\n yasr.getQueryResultsAsFormat = function (downloadFormat) {\n // Simple cross-browser download with a form\n const $wbDownload = $('#wb-download');\n $wbDownload.attr('action', 'repositories/' + $repositories.getActiveRepository());\n $('#wb-download-query').val(scope.currentQuery.query);\n if (window.editor.getValue() !== scope.currentQuery.query) {\n toastr.warning('The query in your editor does not match the query results. Download will save the results from the last executed query.');\n }\n $('#wb-download-infer').val(scope.currentQuery.inference);\n $('#wb-download-sameAs').val(scope.currentQuery.sameAs);\n const auth = localStorage.getItem('com.ontotext.graphdb.auth');\n if (auth) {\n $('#wb-auth-token').val(auth);\n }\n $('#wb-download-accept').val(downloadFormat);\n $wbDownload.submit();\n };\n window.editor.options.sparql.handlers.complete = function (dataOrJqXhr, textStatus, jqXhrOrErrorString) {\n function setNewTabStateForThis() {\n setNewTabState(dataOrJqXhr, textStatus, jqXhrOrErrorString);\n }\n\n if (connectorProgressModal) {\n connectorProgressModal.dismiss('cancel');\n }\n\n // If yasqe was destroyed when scope was destroyed, do nothing\n if (null === window.editor) {\n scope.setLoader(false);\n\n return;\n }\n\n // Extra error/warning through headers\n scope.currentTabConfig.errorMessage = dataOrJqXhr.getResponseHeader('X-GraphDB-Error');\n scope.currentTabConfig.warningMessage = dataOrJqXhr.getResponseHeader('X-GraphDB-Warning');\n\n yasr.currentQuery = scope.currentQuery;\n\n scope.currentTabConfig.timeFinished = Date.now();\n scope.currentTabConfig.timeTook = (scope.currentTabConfig.timeFinished - scope.queryStartTime) / 1000;\n\n if (dataOrJqXhr.status >= 400) {\n // Removes useless com.blah.whatever.FooException: ... from the error message\n dataOrJqXhr.responseText = dataOrJqXhr.responseText.replace(/^([^: ]+: )+/, '');\n\n scope.currentTabConfig.queryType = 'ERROR';\n setNewTabStateForThis();\n scope.setYasrResponse(dataOrJqXhr, textStatus, jqXhrOrErrorString);\n\n scope.setLoader(false);\n\n return;\n }\n\n if (dataOrJqXhr.status === 0) {\n // Query was aborted, typically through window.editor.xhr.abort()\n\n scope.currentTabConfig.queryType = 'ERROR';\n\n const customError = createCustomError(-1, 'Request was aborted', 'The request has been aborted. There are no results to show.');\n\n yasr.results = {\n getException: function () {\n return customError;\n }\n };\n\n scope.setLoader(false);\n\n setNewTabState({customError: customError}, '', null);\n\n return;\n }\n\n scope.setLoader(false);\n\n let updateResultsCallback;\n\n if (window.editor.getQueryMode() === \"update\") {\n updateResultsCallback = function () {\n RDF4JRepositoriesRestService.getRepositorySize()\n .success(function (data) {\n let repoSizeDiff;\n if (scope.repoSize !== undefined) {\n repoSizeDiff = Number(data) - scope.repoSize;\n }\n scope.currentTabConfig.sizeDelta = repoSizeDiff;\n setNewTabStateForThis();\n }).error(function (data) {\n toastr.warning('Could not get repository size for: ' + scope.getActiveRepository() + '; ' + getError(data));\n scope.currentTabConfig.sizeDelta = undefined;\n setNewTabStateForThis();\n });\n };\n } else {\n if (dataOrJqXhr.status === 200) {\n const contentType = dataOrJqXhr.getResponseHeader('Content-Type');\n\n if (contentType.indexOf('application/sparql-results+json') === 0\n || contentType.indexOf('application/x-sparqlstar-results+json') === 0\n || contentType.indexOf('application/x-graphdb-table-results+json') === 0) {\n if (dataOrJqXhr.responseJSON.results) {\n // SELECT results in one of the standard formats or\n // CONSTRUCT or DESCRIBE results in our custom format that looks\n // like a SELECT result.\n scope.currentTabConfig.resultsCount = dataOrJqXhr.responseJSON.results.bindings.length;\n if (dataOrJqXhr.responseJSON.results.bindings.length > scope.currentTabConfig.pageSize) {\n // The results are more than the page size (because we request +1), truncate to page size\n // and raise flag to know we have at least one page more.\n dataOrJqXhr.responseJSON.results.bindings.length = scope.currentTabConfig.pageSize;\n }\n if (!scope.currentTabConfig.allResultsCountExact) {\n if (scope.nocount || scope.countTimeouted\n || scope.currentTabConfig.resultsCount <= scope.currentTabConfig.pageSize) {\n // No count requested or count timed out or the results are less than the pageSize + 1 buffer\n // In all of these cases it doesn't make sense to run\n // the counting query so we tweak the status to signal that to YASQE.\n dataOrJqXhr.status = 204; // 204 is no content, YASQE counts only if status is 200\n }\n\n // Calculate an \"at least\" all results count, i.e. at least what we have until now + 1.\n // The number will increase when we go to the next page eventually reaching the exact count.\n // A count query may also provide the exact count asynchronously.\n scope.currentTabConfig.allResultsCount = Math.max(scope.currentTabConfig.allResultsCount,\n scope.currentTabConfig.pageSize * (scope.currentTabConfig.page - 1) + scope.currentTabConfig.resultsCount);\n\n // We know we reached the end and the count is exact now.\n if (scope.currentTabConfig.resultsCount <= scope.currentTabConfig.pageSize) {\n scope.currentTabConfig.allResultsCountExact = true;\n }\n }\n }\n }\n }\n\n // The following long-running code needs to be in timeout to get the updated loader message\n scope.setLoader(true, 'Rendering results', null, true);\n\n updateResultsCallback = function () {\n scope.setYasrResponse(dataOrJqXhr, textStatus, jqXhrOrErrorString);\n\n setNewTabStateForThis();\n scope.setLoader(false);\n };\n }\n\n // By having this in timeout we manage to get the updated loader message\n $timeout(function () {\n updateResultsCallback();\n\n // Move disabled class to a, and clean from the li\n if (window.editor.getQueryType() !== \"CONSTRUCT\") {\n $('.yasr_btnGroup.nav.nav-tabs li a.disabled').removeClass('disabled').css('font-weight', '400');\n $('.yasr_btnGroup.nav.nav-tabs li.disabled a').addClass('disabled').css('font-weight', '200');\n if (window.editor.getQueryType() === \"DESCRIBE\") {\n $('.yasr_btnGroup.nav.nav-tabs li a').removeClass('disabled').css('font-weight', '400');\n }\n } else if (window.editor.getQueryType() === \"CONSTRUCT\") {\n $('.yasr_btnGroup.nav.nav-tabs li a.disabled').removeClass('disabled').css('font-weight', '400');\n }\n\n\n //Remove paddign of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n\n if ($('.yasr_btnGroup li:nth-child(2)').hasClass(\"active\")) {\n $timeout(function () {\n $('.yasr_btnGroup li:nth-child(2) a').get(0).click();\n }, 100);\n }\n\n //\n $('#wb-sparql-addNewTab').click(function () {\n $('.dataTables_filter').hide();\n $('.resultsTable').hide();\n });\n }, 100);\n };\n\n window.editor.options.sparql.handlers.resetResults = function () {\n };\n\n scope.yasr = yasr;\n\n scope.setYasrResponse = function(dataOrJqXhr, textStatus, jqXhrOrErrorString) {\n // If YASR doesn't see a \"response\" property it will parse the textual JSON in \"responseText\".\n // This is both slow and interferes with the +1 result per page policy when we truncate responseJSON.\n if (dataOrJqXhr.responseJSON) {\n dataOrJqXhr.response = dataOrJqXhr.responseJSON;\n dataOrJqXhr.responseText = undefined;\n }\n yasr.setResponse(dataOrJqXhr, textStatus, jqXhrOrErrorString);\n };\n\n // Track changes in the output type (tab in yasr) so that we can save this together with\n // the rest of the tab's data.\n scope.$watch('yasr.options.output', function (value) {\n // Save the output type only if it isn't an update or an ask query (see comment where we save all properties).\n if (value && scope.currentTabConfig.queryType !== \"UPDATE\" && scope.currentTabConfig.queryType !== \"ASK\") {\n const tab = scope.tabs[findTabIndexByID(scope.currentQuery.id)];\n // Do not save tab on default yasr initalization since default table overrides saved value\n if (angular.isDefined(tab) && scope.currentTabConfig.queryType) {\n if (tab.outputType !== value) {\n tab.outputType = scope.currentQuery.outputType = value;\n scope.saveTab(tab.id);\n }\n }\n }\n });\n\n scope.$watch('namespaces', function () {\n if (scope.namespaces) {\n if (yasr && yasr.options && scope.namespaces) {\n // this way, the URLs in the results are prettified using the defined prefixes\n yasr.options.getUsedPrefixes = scope.namespaces;\n }\n\n // Notify YASQE about the new namespaces\n YASQE.signal(window.editor, 'namespacesChanged', scope.namespaces);\n }\n });\n }\n\n initYasr();\n\n function changePagination() {\n scope.runQuery(true, scope.explainRequested);\n }\n\n // Hide the sample queries when the user clicks somewhere else in the UI.\n $(document).mouseup(function (event) {\n const container = $('#sampleQueriesCollapse');\n if (!container.is(event.target) // if the target of the click isn't the container..\n && container.has(event.target).length === 0 //... nor a descendant of the container\n && scope.showSampleQueries) {\n scope.toggleSampleQueries();\n }\n });\n\n function findTabIndexByID(id) {\n for (let i = 0; i < scope.tabs.length; i++) {\n const tab = scope.tabs[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n // functions to load query param or saved queries\n function toBoolean(v) {\n return angular.isDefined(v) && v !== 'false';\n }\n\n function autoexecuteQueryIfRequested() {\n const isRequested = toBoolean($location.search().execute);\n\n if (isRequested) {\n if (window.editor.getQueryMode() === 'update') {\n ModalService.openSimpleModal({\n title: 'Confirm execute',\n message: 'This is an update and it may change the data in the repository.<br>Are you sure you want to execute it automatically?',\n warning: true\n }).result\n .then(function () {\n scope.runQuery(false);\n });\n } else {\n scope.runQuery(false);\n }\n }\n }\n\n function loadQueryIntoExistingOrNewTab(query, infer, sameAs) {\n const tabId = scope.getExistingTabId(query);\n // Ah, the joys of non-synchronous events\n const onHandler = scope.$on('tabLoaded', function () {\n if (angular.isDefined(infer)) {\n scope.currentQuery.inference = toBoolean(infer);\n }\n if (angular.isDefined(sameAs)) {\n scope.currentQuery.sameAs = toBoolean(sameAs);\n }\n autoexecuteQueryIfRequested();\n onHandler();\n });\n\n // See comment about this flag in controller. It's a good idea to be consistent and do this\n // every time a tab changes without the user clicking on it.\n scope.highlightNextTabChange = true;\n\n if (!angular.isDefined(tabId)) {\n scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n\n function loadSavedQueryIntoExistingOrNewTab(savedQueryName, owner, infer, sameAs) {\n SparqlRestService.getSavedQuery(savedQueryName, owner)\n .success(function (data) {\n loadQueryIntoExistingOrNewTab(data, infer, sameAs);\n })\n .error(function (data) {\n toastr.error('Could not get data for saved query: ' + savedQueryName + '; ' + getError(data));\n });\n }\n\n function addTabWithQueryIfNeeded() {\n if ($location.search().savedQueryName) {\n // new way\n loadSavedQueryIntoExistingOrNewTab($location.search().savedQueryName, $location.search().owner,\n $location.search().infer, $location.search().sameAs);\n } else if ($location.search().query) {\n const query = {name: $location.search().name, body: $location.search().query};\n loadQueryIntoExistingOrNewTab(query, $location.search().infer, $location.search().sameAs);\n } else {\n // Restore the previous tab after the dom has loaded\n const currentid = LocalStorageAdapter.get(LSKeys.TABS_STATE_CURRENT_ID);\n selectTab(currentid);\n }\n }\n\n function updateRepositoryAndSecurity() {\n scope.getNamespaces();\n YASQE.signal(window.editor, \"repositoryOrAuthorizationChanged\",\n $repositories.getActiveRepository(), $jwtAuth.getAuthToken());\n addTabWithQueryIfNeeded();\n }\n\n if ($repositories.getActiveRepository()) {\n updateRepositoryAndSecurity();\n }\n\n // When no repo is selected (editor hidden) and the user selects a repo the SPARQL params should be handled\n scope.$on('repositoryIsSet', function () {\n if ($repositories.getActiveRepository()) {\n updateRepositoryAndSecurity();\n }\n });\n // end of repository actions\n\n // focus the editor\n $timeout(function () {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }, 50);\n\n }\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[27],{208:function(e,t,n){"use strict";var r=r||{};r.Text=function(){function e(e,t,n,r){n=n||10;var o=t/3;return"string"==typeof e?(o*=10/(e.substring(0,t/3).length+1.5),o+=1,e.match(/[\u0900-\u0DFF\u1100-\u11FF\u2E80-\u2EFF\u3000-\u9FFF]/)&&(o*=.6),o<n&&(o=n),Math.round(o)):(o<n&&(o=n),Math.round(o))}return{calcFontSizeRaw:e,calcFontSize:function(t,n,r,o){return e(t,n,r)+"px"},getTextWithElipsisIfNeeded:function(e,t){return"string"==typeof e&&e.length>t?e.substring(0,t-3)+"...":e}}}(),r.Transition={fadeIn:function(e,t){e.style("opacity",0).transition().duration(t).style("opacity",1)},fadeOut:function(e,t){e.style("opacity",1).transition().duration(t).style("opacity",0)}},r.Click={delayDblClick:function(){var e=d3.dispatch("click","dblclick");return d3.rebind((function(t){var n,r=null;t.on("mousedown",(function(){n=d3.mouse(document.body),new Date})),t.on("mouseup",(function(t){var o,i;o=n,i=d3.mouse(document.body),Math.sqrt(Math.pow(o[0]-i[0],2),Math.pow(o[1]-i[1],2))>5||(r?(window.clearTimeout(r),r=null,e.dblclick(t)):r=window.setTimeout((d3.event,function(){e.click(t),r=null}),250))}))}),e,"on")}},t.a=r},211:function(e,t,n){var r,o,i;o=[],void 0===(i="function"==typeof(r=function(){return function(){var e=function(){return"n"},t=function(){return[0,0]},n=function(){return" "},r=u(),o=null,i=null,a=null,s=null;function c(e){var t;o="svg"===(t=(t=e).node()).tagName.toLowerCase()?t:t.ownerSVGElement,i=o.createSVGPoint(),document.body.appendChild(r)}c.show=function(){var r=Array.prototype.slice.call(arguments);r[r.length-1]instanceof SVGElement&&(a=r.pop());var o,i=n.apply(this,r),u=t.apply(this,r),f=e.apply(this,r),g=p(),h=l.length,m=document.documentElement.scrollTop||document.body.scrollTop,y=document.documentElement.scrollLeft||document.body.scrollLeft,v=s.apply(this,r);for(g.html(i).style({opacity:1,"pointer-events":"all"});h--;)g.classed(l[h],!1);return o=d.get(f).apply(this),v?g.style(v):g.classed(f,!0).style({top:o.top+u[0]+m+"px",left:o.left+u[1]+y+"px"}),c},c.hide=function(){return p().style({opacity:0,"pointer-events":"none"}),c},c.attr=function(e,t){if(arguments.length<2&&"string"==typeof e)return p().attr(e);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.attr.apply(p(),n),c},c.style=function(e,t){if(arguments.length<2&&"string"==typeof e)return p().style(e);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.style.apply(p(),n),c},c.direction=function(t){return arguments.length?(e=null==t?t:d3.functor(t),c):e},c.offset=function(e){return arguments.length?(t=null==e?e:d3.functor(e),c):t},c.html=function(e){return arguments.length?(n=null==e?e:d3.functor(e),c):n},c.customPosition=function(e){return arguments.length?(s=null==e?e:d3.functor(e),c):s},c.destroy=function(){return r&&(p().remove(),r=null),c};var d=d3.map({n:function(){var e=f();return{top:e.n.y-r.offsetHeight,left:e.n.x-r.offsetWidth/2}},s:function(){var e=f();return{top:e.s.y,left:e.s.x-r.offsetWidth/2}},e:function(){var e=f();return{top:e.e.y-r.offsetHeight/2,left:e.e.x}},w:function(){var e=f();return{top:e.w.y-r.offsetHeight/2,left:e.w.x-r.offsetWidth}},nw:function(){var e=f();return{top:e.nw.y-r.offsetHeight,left:e.nw.x-r.offsetWidth}},ne:function(){var e=f();return{top:e.ne.y-r.offsetHeight,left:e.ne.x}},sw:function(){var e=f();return{top:e.sw.y,left:e.sw.x-r.offsetWidth}},se:function(){var e=f();return{top:e.se.y,left:e.e.x}}}),l=d.keys();function u(){var e=d3.select(document.createElement("div"));return e.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box"}),e.node()}function p(){return null===r&&(r=u(),document.body.appendChild(r)),d3.select(r)}function f(){for(var e=a||d3.event.target;void 0===e.getScreenCTM&&"undefined"===e.parentNode;)e=e.parentNode;var t={},n=e.getScreenCTM(),r=e.getBBox(),o=r.width,s=r.height,c=r.x,d=r.y;return i.x=c,i.y=d,t.nw=i.matrixTransform(n),i.x+=o,t.ne=i.matrixTransform(n),i.y+=s,t.se=i.matrixTransform(n),i.x-=o,t.sw=i.matrixTransform(n),i.y-=s/2,t.w=i.matrixTransform(n),i.x+=o,t.e=i.matrixTransform(n),i.x-=o/2,i.y-=s/2,t.n=i.matrixTransform(n),i.y+=s,t.s=i.matrixTransform(n),t}return c}})?r.apply(t,o):r)||(e.exports=i)},56:function(e,t,n){"use strict";n.r(t);n(2);var r=n(208),o=n(211),i=n.n(o);n(4);function a(e,t,n,o,a,s,c,d,l,u,p,f,g,h,m,y,v,x,S,I,w){e.languageChanged=!1,e.propertiesObj={},e.propertiesQueryObj={},e.propertiesObj.items=[],e.propertiesNotFiltered=[],e.searchVisible=!1,e.nodeSelected=!1,e.queryResultsMode=!1,e.embedded=p.search().embedded,e.openedNodeInfoPanel=void 0,e.onopen=e.onclose=()=>angular.noop(),e.embedded&&(p.search().query||p.search().uri||p.search().config||p.search().saved)&&(e.noGoHome=!0);const C={};let b=0,k=0,L={},P=0;const A=16,G=d3.behavior.zoom().scaleExtent([.5,10]);let M;const T=1e3,N=1e3;let E;function R(e){h.openCopyToClipboardModal(e)}function j(t){const n=t.appSettings;e.defaultSettings.includeInferred=n.DEFAULT_INFERENCE,e.defaultSettings.sameAsState=n.DEFAULT_INFERENCE&&n.DEFAULT_SAMEAS,e.defaultSettings.includeSchema=n.DEFAULT_VIS_GRAPH_SCHEMA;const r=v.get(x.GRAPHS_VIZ);if(r&&"object"==typeof r)try{e.saveSettings=r,void 0===e.saveSettings.includeSchema&&(e.saveSettings.includeSchema=e.defaultSettings.includeSchema,e.saveSettings.rejectedPredicates=[...e.saveSettings.rejectedPredicates,...e.defaultSettings.rejectedPredicates].unique())}catch(t){e.saveSettings=angular.copy(e.defaultSettings),v.set(x.GRAPHS_VIZ,e.saveSettings)}else e.saveSettings=angular.copy(e.defaultSettings)}t.key="",C.get=function(t,n,r){return g.initLazyList(t,n,r,b,e.propertiesObj.items)},t.$watch((function(){return t.key}),(function(){b=0,_.each(e.propertiesObj.items,(function(e){t.key>e&&b++})),k++})),C.revision=function(){return k},e.datasource=C,e.adapterContainer={adapter:{remain:!0}},e.propertiesQueryObj.query="",e.propertiesSearchPlaceholder="Search instance properties",e.propertiesFilterFunc=function(t){return t.key.toLowerCase().indexOf(e.propertiesQueryObj.query.toLowerCase())>=0},e.resetState=function(){e.searchVisible=!1,e.nodeSelected=!1,e.configLoaded=null,e.queryResultsMode=!1,e.lastSavedGraphName=null,e.lastSavedGraphId=null,e.shared=!1,e.numberOfPinnedNodes=0,L={},P=0},e.pushHistory=function(t,n){e.embedded&&(t.embedded=!0),p.search(t),p.state(n)},e.goToHome=function(){e.resetState(),p.url("graphs-visualizations")},e.shouldShowSettings=function(){return e.configLoaded&&e.configLoaded.id===e.defaultGraphConfig.id},e.shouldDisableSameAs=function(){const t=$("#sameAsCheck");return e.settings&&!e.settings.includeInferred&&t.prop("checked")&&(t.prop("checked",!1),e.settings.sameAsState=!1),e.settings&&!e.settings.includeInferred},e.$watch("propertiesObj.items",(function(){angular.isDefined(e.propertiesObj.items)&&e.propertiesObj.items.length>0&&s((function(){e.adapterContainer.adapter.reload()}),500)})),e.toggleMoreInfo=function(e){angular.element(e.currentTarget).parent().next().toggle(200),angular.element(e.currentTarget).children("span").toggleClass("icon-caret-down").toggleClass("icon-caret-up")},e.copyToClipboard=R,e.defaultSettings={linksLimit:20,includeInferred:!0,sameAsState:!0,languages:["en"],showLinksText:!0,preferredTypes:[],rejectedTypes:[],preferredPredicates:[],rejectedPredicates:["http://dbpedia.org/property/logo","http://dbpedia.org/property/hasPhotoCollection","http://dbpedia.org/property/website","http://dbpedia.org/property/homepage","http://dbpedia.org/ontology/thumbnail","http://xmlns.com/foaf/0.1/depiction","http://xmlns.com/foaf/0.1/homepage","http://xmlns.com/foaf/0.1/mbox","http://dbpedia.org/ontology/wikiPage*","http://dbpedia.org/property/wikiPage*","http://factforge.net/*"],preferredTypesOnly:!1,preferredPredicatesOnly:!1,includeSchema:!0},e.saveSettings=angular.copy(e.defaultSettings);const z=f.getPrincipal();function O(){e.settings.languagesMap=_.map(e.settings.languages,(function(e){return{text:e}})),e.settings.preferredTypesMap=_.map(e.settings.preferredTypes,(function(e){return{text:e}})),e.settings.rejectedTypesMap=_.map(e.settings.rejectedTypes,(function(e){return{text:e}})),e.settings.preferredPredicatesMap=_.map(e.settings.preferredPredicates,(function(e){return{text:e}})),e.settings.rejectedPredicatesMap=_.map(e.settings.rejectedPredicates,(function(e){return{text:e}}))}z?j(z):e.$on("securityInit",(function(){j(f.getPrincipal())})),e.resetSettings=function(){e.settings=angular.copy(e.defaultSettings),O()},e.changeLimit=function(t){let n=e.settings.linksLimit+t;n<1&&(n=1),n>1e3&&(n=1e3),e.settings.linksLimit=n},e.showSettings=function(){e.showInfoPanel=!0,e.showFilter=!0,e.showNodeInfo=!1,e.showPredicates=!1,e.saveSettings?e.settings=angular.copy(e.saveSettings):e.settings=angular.copy(e.defaultSettings),O()},e.reExpandNode=function(){e.rootNodeIri&&e.$broadcast("onRootNodeChange",e.rootNodeIri)};const F=function(t,n,r){const o=void 0===n?e.saveSettings.sameAsState:!0===n,i=void 0===r?e.saveSettings.includeInferred:!0===r;e.loading=!0,c({url:"rest/explore-graph/graph",method:"POST",headers:{"Content-Type":"application/json"},data:{query:t,linksLimit:e.saveSettings.linksLimit,languages:e.shouldShowSettings()?e.saveSettings.languages:[],includeInferred:i,sameAsState:o}}).then((function(e){ie(e)}),(function(t){e.loading=!1,a.error(getError(t.data),"Cannot load visual graph!")}))};function D(){this.nodes=[],this.links=[],this.addNode=function(e,t,n){return e.x=t,e.y=n,this.nodes.push(e),e},this.computeConnectedness=function(){const e={},t={};_.each(this.links,(function(n){const r=n.source.iri,o=n.target.iri,i=_.min([r,o])+"|"+_.max([r,o]);t[i]||(t[i]=1,e[r]=(e[r]||0)+1,e[o]=(e[o]||0)+1)})),_.each(this.links,(function(t){e[t.source.iri]>1&&e[t.target.iri]>1?t.connectedness=Math.min(5,Math.max(e[t.source.iri],e[t.target.iri])-1):t.connectedness=0}))},this.addAndMatchLinks=function(e){const t=this.nodes;Array.prototype.push.apply(this.links,function(e,t){return _.map(e,(function(e){return{source:_.find(t,(function(t){return t.iri===e.source})),target:_.find(t,(function(t){return t.iri===e.target})),predicates:e.predicates}}))}(e,t)),this.computeConnectedness()};const t=function(e,t){return n(e,t).length};function n(e,t){return _.filter(t,(function(t){return t.source.iri===e.iri||t.target.iri===e.iri}))}this.countLinks=t,this.linksTypes=function(e,t){const r=n(e,t),o=_.map(r,(function(t){return t.source.iri===e.iri?t.target.types:t.source.types}));return _.uniq(_.flatten(o))},this.linksPredicates=function(e,t){const r=n(e,t),o=_.map(r,(function(e){return e.predicates}));return _.uniq(_.flatten(o))},this.removeNode=function(n){this.links=_.reject(this.links,(function(e){return e.source.iri===n.iri||e.target.iri===n.iri}));const r=this.links;this.nodes=_.reject(this.nodes,(function(e){return 0===t(e,r)})),0===this.nodes.length&&(e.nodeSelected=!1),this.computeConnectedness()},this.removeNodeLeafLinks=function(e){let r=this.links;this.links=_.reject(this.links,(function(o){if(o.source.iri===e.iri&&1===t(o.target,r)||o.target.iri===e.iri&&1===t(o.source,r))return!0;let i;return o.source.iri===e.iri&&2===t(o.target,r)?i=n(o.target,r):o.target.iri===e.iri&&2===t(o.source,r)&&(i=n(o.source,r)),i?(i[0].source.iri===e.iri||i[0].target.iri)&&(i[1].source.iri===e.iri||i[1].target.iri):void 0})),r=this.links,this.nodes=_.reject(this.nodes,(function(n){return 0===t(n,r)&&n.iri!==e.iri})),this.computeConnectedness()},this.copyState=function(){return{nodes:_.map(this.nodes,(function(e){return{iri:e.iri,size:e.size,labels:angular.copy(e.labels),types:angular.copy(e.types),rdfRank:e.rdfRank,x:e.x,y:e.y,fixed:e.fixed}})),links:_.map(this.links,(function(e){return{source:e.source.iri,target:e.target.iri,predicates:e.predicates}})),colorIndex:P,type2color:L,scale:G.scale(),translate:G.translate()}},this.restoreState=function(t){e.nodeSelected=!0,e.searchVisible=!1,this.nodes=angular.copy(t.nodes),this.links=[],this.addAndMatchLinks(t.links),_.each(this.nodes,(function(t){t.fixed&&e.numberOfPinnedNodes++})),angular.isDefined(t.colorIndex)&&angular.isDefined(t.type2color)&&(P=t.colorIndex,L=angular.copy(t.type2color)),angular.isDefined(t.translate)&&angular.isDefined(t.scale)&&(M="translate("+t.translate[0]+", "+t.translate[1]+") scale("+t.scale+")",G.translate(t.translate),G.scale(t.scale)),ne()}}e.updateSettings=function(){e.saveSettings=e.settings,e.saveSettings.languages=_.map(e.saveSettings.languagesMap,(function(e){return e.text})),e.saveSettings.preferredTypes=_.map(e.saveSettings.preferredTypesMap,(function(e){return e.text})),e.saveSettings.rejectedTypes=_.map(e.saveSettings.rejectedTypesMap,(function(e){return e.text})),e.saveSettings.preferredPredicates=_.map(e.saveSettings.preferredPredicatesMap,(function(e){return e.text})),e.saveSettings.rejectedPredicates=_.map(e.saveSettings.rejectedPredicatesMap,(function(e){return e.text})),e.rootNodeIri?e.reExpandNode(e.rootNodeIri):e.queryResultsMode&&p.search().query?F(p.search().query,p.search().sameAs,p.search().inference):"query"===e.configLoaded.startMode&&e.loadGraphConfig(e.configLoaded),e.saveSettings.showLinksText?d3.selectAll("svg .link-wrapper text").style("display","block"):d3.selectAll("svg .link-wrapper text").style("display","none"),e.showInfoPanel=!1,e.showFilter=!1,v.set(x.GRAPHS_VIZ,e.saveSettings)},e.showInfoPanel=!1;let U=new D;e.defaultGraphConfig={id:"default",name:"Easy graph",startMode:"search"},e.getGraphConfigs=function(t){I.getGraphConfigs().success((function(n){e.graphConfigs=n,t&&t()})).error((function(e){a.error(getError(e),"Could not get graph configs")}))},e.loadConfigForId=function(t,n){t===e.defaultGraphConfig.id?e.loadGraphConfig(e.defaultGraphConfig):I.getConfig(t).success((function(t){e.loadGraphConfig(t),n()})).error((function(e){a.error(getError(e),"Could not load config "+t)}))},e.findConfigById=function(t){return t===e.defaultGraphConfig.id?e.defaultGraphConfig:$.grep(e.graphConfigs,(function(e){return e.id===t}))[0]},e.easyGraphSearch=function(t){e.configLoaded=e.defaultGraphConfig,e.openUri(t)},e.loadGraphConfig=function(t){e.configLoaded=t,"search"===t.startMode?e.searchVisible=!0:"node"===t.startMode&&t.startIRI?s((function(){e.openUri(t.startIRI,!0)}),0):"query"===t.startMode&&t.startGraphQuery&&(e.loading=!0,I.loadGraphForConfig(t,t.startQueryIncludeInferred,e.saveSettings.linksLimit,t.startQuerySameAs).then((function(e){ie(e)}),(function(t){e.loading=!1,a.error(getError(t),"Could not load graph from config")})))},e.deleteConfig=function(t){h.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the graph config '"+t.name+"'?",warning:!0}).result.then((function(){I.deleteGraphConfig(t).success((function(){e.getGraphConfigs(),e.refreshSavedGraphs()})).error((function(e){a.error(getError(e),"Could not delete graph config")}))}))},e.goToGraphConfig=function(t){e.pushHistory({config:t.id},{config:t}),e.resetState(),e.loadGraphConfig(t)},y.onpopstate=function(t){e.resetState(),t.state&&(t.state.config?(e.loadGraphConfig(t.state.config),t.state.uri&&e.openUri(t.state.uri,!0)):t.state.savedGraph&&e.loadSavedGraph(t.state.savedGraph,!0))};const q=function(){p.search().query?(e.searchVisible=!1,e.queryResultsMode=!0,F(p.search().query,p.search().sameAs,p.search().inference)):e.$on("onRootNodeChange",(function(t,n){e.loading=!0,angular.isDefined(n)&&(e.rootNodeIri=n,c({url:"rest/explore-graph/node",method:"GET",params:{iri:n,config:e.configLoaded?e.configLoaded.id:e.defaultGraphConfig.id,languages:e.shouldShowSettings()?e.saveSettings.languages:[],includeInferred:e.saveSettings.includeInferred,sameAsState:e.saveSettings.sameAsState}}).then((function(t){e.nodeSelected=!0,e.searchVisible=!1,null===t.data.types&&(t.data.types="greyColor"),U=new D;const n=U.addNode(t.data,T/2,N/2);M="translate(0, -70) scale(1)",G.translate([0,-70]),G.scale(1),se(n,!0)})).catch((function(t){e.loading=!1,a.error(getError(t),"Could not load visual graph")})))})),p.search().uri&&e.openUri(p.search().uri),p.search().saved&&S.getSavedGraph(p.search().saved).success((function(t){e.loadSavedGraph(t)})).error((function(e){const t=getError(e);a.error(t,"Error! Could not open saved graph")}))},H=function(){p.search().config?e.loadConfigForId(p.search().config,q):p.search().query||p.search().uri?(e.loadGraphConfig(e.defaultGraphConfig),q()):q()};function B(t){!n.getActiveRepository()||e.hasInitedRepository&&!t||(e.hasInitedRepository=!0,t||e.getGraphConfigs(H),e.getNamespacesPromise=w.getNamespaces(e.getActiveRepository()).success((function(t){const n=_.map(t.results.bindings,(function(e){return{uri:e.namespace.value,prefix:e.prefix.value}}));e.namespaces=_.sortBy(n,(function(e){return e.uri.length})),V()})).error((function(e){a.error(getError(e),"Cannot get namespaces for repository. View will not work properly!")})))}function V(){o.isLicenseValid()&&(e.getAutocompletePromise=l.checkAutocompleteStatus())}e.replaceIRIWithPrefix=function(t){const n=e.namespaces,r=_.findLast(n,(function(e){return 0===t.indexOf(e.uri)}));return r?r.prefix+":"+t.substring(r.uri.length):t},e.addedTag=function(t){return t.text.indexOf(":")<0?(a.warning("Enter an absolute full or prefixed IRI"),null):(t.text=function(e,t){if(!/^<?(http|urn).*>?/.test(e)){const n=e.split(":"),r=n[0],o=n[1];if(!angular.isUndefined(o)){const e=d.getNamespaceUriForPrefix(t,r);if(e)return e+o}}return e}(t.text,e.namespaces),e.pageslideExpanded=!0,t)},e.validateTag=function(e,t,n){if(e.text.indexOf(":")<0)return n?a.warning("Enter an absolute full or prefixed IRI, optionally ending in *",t):a.warning("Enter an absolute full or prefixed IRI",t),!1;const r=e.text.indexOf("*");if(r>=0){if(!n)return a.warning("Wildcards not allowed here",t),!1;if(r<e.text.length-1)return a.warning("Wildcard allowed only as the last character",t),!1}return!0},e.getTagClass=function(e){return e.endsWith("*")?"tag-item-wildcard":null},e.getActiveRepository=function(){return n.getActiveRepository()},e.isLicenseValid=function(){return o.isLicenseValid()},e.hasInitedRepository=!1,e.$on("autocompleteStatus",(function(){V()})),e.$on("repositoryIsSet",(function(t,n){n.newRepo&&(e.hasInitedRepository=!1),B(n.newRepo),n.newRepo&&(e.resetState(),$(".graph-visualization svg").empty(),p.search().query&&(e.goToHome(),q()))})),B();const W=500,Z=1.75,K=d3.scale.linear().domain([0,9]).range(["hsl(0, 100%, 75%)","hsl(360, 90%, 82%)"]).interpolate(d3.interpolateHslLong),Q=d3.scale.linear().domain([0,9]).range(["hsl(180, 50%, 75%)","hsl(540, 40%, 82%)"]).interpolate(d3.interpolateHslLong);e.getColor=function(e){angular.isUndefined(L[e])&&(L[e]=P,P++);const t=L[e];return t>39?"#c2c2c2":t%2==0?K(t/2):Q(t/2)};const J=d3.layout.force().gravity(.07).size([T,N]),Y=d3.select(".main-container .graph-visualization").append("svg").attr("viewBox","0 0 "+T+" "+N).attr("preserveAspectRatio","xMidYMid meet");let X=0,ee=0;const te=new function(){this.state=!1,this.setLoadingState=function(e){this.state=e},this.getLoadingState=function(){return this.state},this.init=function(e,t){d3.select(t).append("circle").attr("cx",(function(){return e.x})).attr("cy",(function(){return e.y})).attr("class","loader-container").attr("r",(function(){return e.size})).style("fill","fff").style("opacity","0.7"),d3.select(t).append("image").attr("xlink:href","js/angular/templates/loader/ot-loader.svg?v=2.0.0-TR5").attr("x",(function(){return e.x-e.size+5})).attr("y",(function(){return e.y-e.size})).attr("width",(function(){return 2*e.size})).attr("height",(function(){return 2*e.size})).attr("class","node-loader")}};function ne(n){d3.selectAll("svg g").remove(),d3.selectAll("svg rect").remove(),d3.selectAll(".d3-tip").remove(),d3.selectAll(".menu-events").remove(),G.on("zoom",(function(){M="translate("+d3.event.translate+") scale("+d3.event.scale+")",o.attr("transform",M)})),Y.append("rect").attr("width",10*T).attr("height",10*N).attr("x",-(10*T-T)/2).attr("y",-(10*N-N)/2).style("fill","none").style("pointer-events","all").call(G).on("click",(function(){d3.event.stopPropagation(),ce(),J.stop()}));const o=Y.append("g").attr("class","nodes-container").attr("transform",(function(){return angular.isDefined(M)&&!n?M:""})),d=i()().attr("class","d3-tip").customPosition((function(){const e=E.getBoundingClientRect();return{top:e.bottom+10+"px",left:e.left-30+"px"}})).html((function(t){let n="";return t.fixed&&(n+='<i class="icon-pin"></i>&nbsp;&nbsp;'),t.types.length>0?n+=_.join(_.map(t.types,(function(t){return e.replaceIRIWithPrefix(t)}))," · "):n+="<i>No types</i>",n})),l=function(e){let t="";return t+=_.join(_.map(e.predicates,(function(t,n){if(0===n)return de(t);if(n<10)return" · "+de(t);if(10===n){const t=function(e){return e.predicates.length-10}(e);return" · more "+(t>1?t+" predicates":t+" predicate")+" to show"}})),""),t};let u;const f=i()().attr("class","d3-tip").customPosition((function(e){const t=u.getBoundingClientRect(),n=function(e){const t=l(e),n=document.createElement("canvas").getContext("2d");return n.font="13px Arial",e.predicates.length<10?n.measureText(t).width:n.measureText(t).width/2}(e);return{top:t.top-30+"px",left:t.left-30+"px",width:n+"px"}})).html((function(e){return l(e)}));const g=function(){s.cancel(void 0),s.cancel(X),E=null,d.hide(),ee=s((function(){ce()}),500)};Y.call(d);Y.call(f);let h=Y.selectAll(".link"),m=Y.selectAll(".node");J.nodes(U.nodes).charge(-3e3),J.links(U.links).linkDistance((function(e){return function(e){const t=$("<span></span>"),n=e.predicates[0].split("/"),r=n[n.length-1];t.addClass("predicate-text").text(r),$("body").append(t);const o=t.width()+2*e.source.size+2*e.target.size+50;return t.remove(),.75*o}(e)+30*e.connectedness})),o.append("defs").selectAll("marker").data(J.links()).enter().append("marker").attr("class","arrow-marker").attr("id",(function(e){return e.target.size})).attr("viewBox","0 -5 10 10").attr("refX",(function(e){return e.target.size+11})).attr("refY",0).attr("markerWidth",10).attr("markerHeight",10).attr("orient","auto").append("path").attr("d","M0,-5L10,0L0,5 L10,0 L0, -5"),h=o.selectAll(".link").data(U.links).enter().append("g").attr("class","link-wrapper").attr("id",(function(e){return e.source.iri+">"+e.target.iri})).append("line").attr("class","link").style("stroke-width",1).style("fill","transparent").style("marker-end",(function(e){return"url("+p.absUrl()+"#"+e.target.size+")"}));const y=o.selectAll(".link-wrapper").append("text").text((function(e){return function(e){if(e.predicates.length>1)return e.predicates.length+" predicates";return de(e.predicates[0])}(e)})).attr("class",(function(e){return e.predicates.length>1?"predicates":"predicate"})).attr("dy","-0.5em").style("text-anchor","middle").style("display",e.saveSettings.showLinksText?"":"none").on("mouseover",(function(e){d3.event.stopPropagation(),function(e){s.cancel(void 0);const t=u=d3.event.target;s((function(){u===t&&e.predicates.length>1&&f.show(e,u)}),300)}(e)})).on("mouseout",(function(){s.cancel(void 0),u=null,f.hide()})).on("click",(function(t){d3.event.stopPropagation(),function(t){e.showNodeInfo=!1,e.showPredicates=!0,e.showFilter=!1,t.predicates.length>1&&(e.predicates=_.map(t.predicates,(function(e){return de(e)})),e.showInfoPanel=!0)}(t)}));let v,x=0,S=0,I=0;const w=function(){d3.event.button&&0!==d3.event.button||(g(),s.cancel(v),e.showPredicates=!1,d3.event.timeStamp-x<W?S++:S=1,x=d3.event.timeStamp,d3.event.preventDefault())},C=function(n){if(d3.event.button&&0!==d3.event.button)return;s.cancel(v);const r=d3.event,o=this;if(d3.event.timeStamp-x<W)if(1===S)v=s((function(){!function(n,r,o){if(e.showInfoPanel=!1,e.showPredicates=!1,e.showNodeInfo=!1,o.shiftKey&&(o.ctrlKey||o.metaKey))return void t.$broadcast("onRootNodeChange",n.iri);if(o.ctrlKey||o.metaKey)return void oe(n);if(void 0!==e.openedNodeInfoPanel&&e.openedNodeInfoPanel===n)return e.pageslideExpanded=!1,void(e.openedNodeInfoPanel=void 0);!function(t){J.stop(),e.openedNodeInfoPanel=t,e.showNodeInfo=!0,e.showFilter=!1,e.showPredicates=!1,e.nodeLabels=t.labels,e.nodeTypes=t.types,e.rdfRank=t.rdfRank,e.nodeIri=t.iri,e.encodedIri=encodeURI(t.iri),e.showInfoPanel=!0,e.rdfsLabel=t.labels[0].label,e.rdfsComment=t.comment,e.expanded=!1,e.propertiesQueryObj.query="",e.dataNodeKeysQuery="",c.get("rest/explore-graph/properties",{params:{iri:t.iri,config:e.configLoaded.id,languages:e.shouldShowSettings()?e.saveSettings.languages:[],includeInferred:e.saveSettings.includeInferred,sameAsState:e.saveSettings.sameAsState,rejectedPredicates:e.shouldShowSettings()?e.saveSettings.rejectedPredicates:[]}}).then((function(t){e.data=_.mapKeys(t.data,(function(t,n){return e.replaceIRIWithPrefix(n)})),e.propertiesObj.items=[],_.forEach(e.data,(function(t,n){e.propertiesObj.items.push({key:n,value:t})})),e.nodeImage=void 0,e.propertiesNotFiltered=e.propertiesObj.items;const n=_.find(e.propertiesObj.items,(function(e){return"image"===e.key}));n&&(e.nodeImage=n.value[0].v),e.propertiesObj.items=_.reject(e.propertiesObj.items,(function(e){return"image"===e.key})),e.propertiesNotFiltered=e.propertiesObj.items}),(function(e){a.warning(getError(e.data),"Error")}))}(n)}(n,0,r)}),40+W-(d3.event.timeStamp-x));else if(2===S){U.countLinks(n,U.links)<=e.saveSettings.linksLimit?se(n,!1,o.parentNode):a.info("Increase limit to see more connections and try again","Node already expanded to predefined maximum links to show."),e.closeInfoPanel()}d3.event.preventDefault()};function b(e,t){let n,r,i,a,s=!0;if("down"===t)n=2*e.size,r=e.size/3,i=.8,a=.3;else if("down-fixed"===t)n=2*e.size,r=e.size,i=.8,a=.66;else if("up"===t)n=e.size/3,r=2*e.size,i=.3,a=.8;else{if("fixed"!==t)return;n=e.size,i=.66,s=!1}let c=o.selectAll(".node-wrapper").filter((function(t){return t===e})).append("text").text("").classed("icon-any pinned",!0).style("font-size",n+"px").attr("x",(function(e){return e.x})).attr("y",(function(e){return e.y})).attr("opacity",i);"fixed"!==t&&"down-fixed"!==t||(e.pin=c),s&&(c=c.transition().duration(1e3).style("font-size",(function(){return r+"px"})).attr("opacity",a),"down-fixed"!==t&&c.remove())}const k=d3.behavior.drag().origin((function(e){return e})).on("dragstart",(function(e){0===d3.event.sourceEvent.button&&(e.fixedBeforeDrag=e.fixed,e.isBeingDragged=!0,e.beginDragging=!0,ce(),d3.event.sourceEvent.stopPropagation(),d3.select(this).classed("dragging",!0))})).on("drag",(function(t){t.isBeingDragged&&(S=0,t.px=d3.event.x,t.py=d3.event.y,t.fixed?t.beginDragging&&b(t,"fixed"):(e.numberOfPinnedNodes++,t.fixed=!0,b(t,"down-fixed")),t.pinWasFixed=!0,t.beginDragging=null,J.resume())})).on("dragend",(function(e){e.isBeingDragged&&(e.pinWasFixed&&(e.pinWasFixed=null,d3.select(".pinned").remove()),e.isBeingDragged=!1,d3.select(this).classed("dragging",!1))}));m=o.selectAll(".node").data(U.nodes).enter().append("g").attr("class","node-wrapper").attr("id",(function(e){return e.iri})).append("circle").attr("class","node").attr("r",(function(e){return e.size})).style("fill",(function(t){return"greyColor"===t.types?"c2c2c2":e.getColor(t.types[0])})).call(k).on("mouseover",(function(t){if(!t.isBeingDragged){const n=d3.event;s.cancel(ee),X=s(()=>{(function(t,n){if(e.showInfoPanel)return!1;(re.closeIcon||re.expandIcon||re.focusIcon||re.copyURIIcon)&&re.removeIcons();if(J.alpha()<.05)return re.initIcons(t,n.parentNode),J.stop(),!0;return!1})(t,this)&&function(e,t){s.cancel(void 0);const n=E=t.target;s((function(){E===n&&d.show(e,E)}),300)}(t,n)},400)}})).on("mouseout",g).on("mousedown",w).on("touchstart",(function(e){w(),I=0,v=s((function(){I<5&&oe(e),v=null,S=0}),1e3)})).on("touchmove",(function(){I++})).on("mouseup",C).on("touchend",C).on("contextmenu",(function(t){d3.event.shiftKey||(d3.event.preventDefault(),ce(),e.closeInfoPanel(),t.fixed?(e.numberOfPinnedNodes--,t.fixed=!1,b(t,"up"),J.resume()):(e.numberOfPinnedNodes++,t.fixed=!0,b(t,"down")),function(e){E&&d.show(e,E)}(t))}));const L=o.selectAll(".node-wrapper").append("foreignObject").style("pointer-events","none").attr("width",(function(e){return 2*e.size*Z}));o.insert("g").attr("class","menu-events"),function(e){e.each((function(e){e.fontSize=r.a.Text.calcFontSizeRaw(e.labels[0].label,e.size,A,!0)})).attr("height",(function(e){return 3*e.fontSize})).append("xhtml:div").attr("class","node-label-body").style("font-size",(function(e){return e.fontSize+"px"})).append("xhtml:div").text((function(e){return e.labels[0].label})),s((function(){$(".node-label-body div").each((function(e,t){let n=t.textContent.substring(0,t.textContent.length-1);let r=0;for(;r<200&&(t.scrollHeight>t.clientHeight||t.scrollWidth>t.clientWidth);)n=n.substring(0,n.length-1),t.textContent=n+"…",r++}))}),50)}(L),J.on("tick",(function(){d3.geom.quadtree(U.nodes);U.nodes.length;h.attr("x1",(function(e){return e.source.x})).attr("y1",(function(e){return e.source.y})).attr("x2",(function(e){return e.target.x})).attr("y2",(function(e){return e.target.y})),y.attr("x",(function(e){return e.x=.5*(e.source.x+e.target.x)})).attr("y",(function(e){return e.y=.5*(e.source.y+e.target.y)})).attr("transform",(function(e){return"rotate("+function(e,t){const n=e.source,r=e.target,o={x:n.x,y:n.y},i={x:r.x,y:r.y};if(t)return 180*Math.atan2(i.y-o.y,i.x-o.x)/Math.PI;{const e=180*Math.atan2(i.y-o.y,i.x-o.x)/Math.PI;return e<=90&&e>=-90?e:(e>0?-1:1)*(180-Math.abs(e))}}(e,e.direction)+", "+e.x+", "+e.y+")"})),m.attr("cx",(function(e){return e.x})).attr("cy",(function(e){return e.y})),o.select(".node-loader").attr("x",(function(e){return e.x-e.size+3})).attr("y",(function(e){return e.y-e.size})),o.select(".loader-container").attr("cx",(function(e){return e.x})).attr("cy",(function(e){return e.y})),L.attr("x",(function(e){return e.x-e.size*Z})).attr("y",(function(e){return e.y-3*e.fontSize/2})),d3.select(".pinned").attr("x",(function(e){return e.x})).attr("y",(function(e){return e.y}))})),angular.isDefined(te)&&te.setLoadingState(!1),e.loading&&(e.loading=!1),d3.selectAll(".link-wrapper").each((function(){const e=$(this).attr("id").split(">")[0],t=$(this).attr("id").split(">")[1];d3.selectAll(".link").each((function(n){if(n.source.iri===t&&n.target.iri===e){let e=n.source.iri;e+=">",e+=n.target.iri;const t=document.createTextNode(" ⟶");document.getElementById(e).lastChild.appendChild(t),n.direction="double"}}))})),d3.selectAll(".d3-actions-tip").remove(),J.start()}ne();const re=new function(){function e(e,t){return"translate("+(t.x-14+(t.size+15)*Math.cos(e*Math.PI/180-Math.PI/2))+","+(t.y-14+(t.size+15)*Math.sin(e*Math.PI/180-Math.PI/2))+")"}this.closeIcon=void 0,this.expandIcon=void 0,this.collapseIcon=void 0,this.focusIcon=void 0,this.copyURIIcon=void 0,this.actionsTip=void 0,this.removeIcons=function(){this.closeIcon.remove("g"),this.expandIcon&&this.expandIcon.remove("g"),this.collapseIcon&&this.collapseIcon.remove("g"),this.focusIcon.remove("g"),this.copyURIIcon.remove("g"),this.closeIcon=void 0,this.expandIcon=void 0,this.collapseIcon=void 0,this.focusIcon=void 0,this.copyURIIcon=void 0,this.expandedState=!1},this.expandedState=!1,this.initIcons=function(n,r){const o=i()().attr("class","d3-tip d3-actions-tip").customPosition((function(){const e=d3.event.target.getBoundingClientRect();return{top:e.top-20+"px",left:e.right+10+"px"}})).html((function(e){return e}));Y.call(o);n.isExpanded?(this.collapseIcon=d3.select(".menu-events").append("g").attr("class","collapse-icon").attr("name","collapse").attr("transform",(function(){return e(20,n)})),this.collapseIcon.append("circle").attr("cx",14).attr("cy",14).attr("r",13).style("fill","#eee"),this.collapseIcon.append("path").attr("d","M22.67,12a.59.59,0,0,1-.53.65l-6.88.72H15.2a.59.59,0,0,1-.59-.65l.72-6.88A.58.58,0,0,1,16,5.33a.59.59,0,0,1,.53.65L16,11.11,21.3,5.79a.64.64,0,0,1,.91.91L16.89,12,22,11.49A.59.59,0,0,1,22.67,12ZM12.59,14.75l-6.75.85a.59.59,0,0,0-.51.66.58.58,0,0,0,.66.51l4.95-.62-5.2,5.2a.64.64,0,1,0,.91.91l5.2-5.2L11.23,22a.59.59,0,0,0,.51.66h.07a.59.59,0,0,0,.59-.52l.85-6.75a.59.59,0,0,0-.17-.49A.58.58,0,0,0,12.59,14.75Z").style("fill","#ed4f2f"),this.collapseIcon.on("click",(function(){var e;(e=n).isExpanded=!1,U.removeNodeLeafLinks(e),ne()})).on("mouseover",(function(){o.show(this.getAttribute("name")),s.cancel(X),s.cancel(ee)})).on("mouseout",(function(){o.hide(),ee=s((function(){ce()}),500)}))):(this.expandIcon=d3.select(".menu-events").append("g").attr("class","expand-icon").attr("name","expand").attr("transform",(function(){return e(20,n)})),this.expandIcon.append("circle").attr("cx",14).attr("cy",14).attr("r",13).style("fill","#eee"),this.expandIcon.append("path").attr("d","M22.37,6.28l-.72,6.88a.59.59,0,0,1-.59.53H21a.59.59,0,0,1-.53-.65L21,7.9l-5.32,5.32a.64.64,0,0,1-.91-.91L20.1,7,15,7.53a.59.59,0,0,1-.12-1.18l6.88-.72a.59.59,0,0,1,.65.65ZM12.89,20.34,7.95,21l5.2-5.2a.64.64,0,0,0-.91-.91L7,20.05l.62-4.95A.59.59,0,0,0,6.48,15l-.85,6.75a.59.59,0,0,0,.59.67h.07L13,21.52a.59.59,0,1,0-.15-1.18Z").style("fill","#ed4f2f"),this.expandIcon.on("click",(function(){se(n,!1,r)})).on("mouseover",(function(){o.show(this.getAttribute("name")),s.cancel(ee),s.cancel(X)})).on("mouseout",(function(){o.hide(),ee=s((function(){ce()}),500)}))),this.focusIcon=d3.select(".menu-events").append("g").attr("class","focus-icon").attr("name","focus").attr("transform",(function(){return e(20,n)})),this.focusIcon.append("circle").attr("cx",14).attr("cy",14).attr("r",13).style("fill","#eee"),this.focusIcon.append("path").attr("d","M14.2,23.81a9.8,9.8,0,1,1,6.93-2.87h0A9.74,9.74,0,0,1,14.2,23.81Zm0-18.17a8.37,8.37,0,1,0,5.92,14.29h0A8.37,8.37,0,0,0,14.2,5.64Zm1.42,6.95a2,2,0,1,0,0,2.85A2,2,0,0,0,15.62,12.59Z").style("fill","#ed4f2f"),this.focusIcon.on("click",(function(){t.$broadcast("onRootNodeChange",n.iri)})).on("mouseover",(function(){o.show(this.getAttribute("name")),s.cancel(ee),s.cancel(X)})).on("mouseout",(function(){o.hide(),ee=s((function(){ce()}),500)})),this.copyURIIcon=d3.select(".menu-events").append("g").attr("class","icon-link").attr("name","link").attr("transform",(function(){return e(20,n)})),this.copyURIIcon.append("circle").attr("cx",14).attr("cy",14).attr("r",13).style("fill","#eee"),this.copyURIIcon.append("path").attr("d","M 13.457031 10.164062 C 13.648438 10.164062 13.820312 10.242188 13.941406 10.363281 L 15.492188 11.859375 C 15.984375 12.332031 16.292969 12.992188 16.292969 13.714844 C 16.292969 14.441406 15.984375 15.097656 15.492188 15.574219 L 10.394531 20.496094 C 9.902344 20.972656 9.222656 21.265625 8.472656 21.265625 C 7.71875 21.265625 7.039062 20.972656 6.546875 20.496094 L 4.996094 19 C 4.507812 18.523438 4.203125 17.867188 4.203125 17.144531 C 4.203125 16.421875 4.507812 15.765625 4.996094 15.289062 L 7.542969 12.824219 C 7.667969 12.707031 7.84375 12.628906 8.035156 12.628906 C 8.417969 12.628906 8.726562 12.929688 8.726562 13.300781 C 8.726562 13.484375 8.648438 13.652344 8.523438 13.773438 L 5.976562 16.234375 C 5.738281 16.46875 5.589844 16.792969 5.589844 17.148438 C 5.589844 17.503906 5.738281 17.824219 5.976562 18.058594 L 7.527344 19.566406 C 7.773438 19.792969 8.105469 19.929688 8.472656 19.929688 C 8.835938 19.929688 9.167969 19.792969 9.414062 19.566406 L 14.511719 14.644531 C 14.753906 14.410156 14.90625 14.089844 14.90625 13.730469 C 14.90625 13.375 14.753906 13.054688 14.511719 12.820312 L 12.964844 11.324219 C 12.839844 11.203125 12.761719 11.039062 12.761719 10.855469 C 12.761719 10.488281 13.070312 10.1875 13.449219 10.1875 Z M 17.082031 3.976562 C 17.082031 3.976562 17.085938 3.976562 17.085938 3.976562 C 17.824219 3.976562 18.492188 4.261719 18.980469 4.722656 L 20.535156 6.203125 C 21.042969 6.679688 21.355469 7.34375 21.355469 8.082031 C 21.355469 8.792969 21.058594 9.441406 20.582031 9.914062 L 18.0625 12.402344 C 17.9375 12.527344 17.761719 12.605469 17.566406 12.605469 C 17.183594 12.605469 16.875 12.304688 16.875 11.9375 C 16.875 11.753906 16.949219 11.589844 17.070312 11.46875 L 19.605469 8.984375 C 19.847656 8.75 19.996094 8.429688 19.996094 8.070312 C 19.996094 7.714844 19.847656 7.394531 19.605469 7.160156 L 18.019531 5.667969 C 17.773438 5.445312 17.4375 5.304688 17.070312 5.300781 C 16.703125 5.304688 16.367188 5.453125 16.128906 5.691406 L 11.085938 10.667969 C 10.84375 10.898438 10.695312 11.222656 10.695312 11.578125 C 10.695312 11.933594 10.84375 12.257812 11.085938 12.488281 L 12.675781 13.980469 C 12.804688 14.101562 12.882812 14.273438 12.882812 14.457031 C 12.882812 14.828125 12.574219 15.128906 12.191406 15.128906 C 12.003906 15.128906 11.832031 15.054688 11.707031 14.9375 L 10.140625 13.457031 C 9.636719 12.980469 9.324219 12.316406 9.324219 11.582031 C 9.324219 10.863281 9.621094 10.214844 10.101562 9.742188 L 15.140625 4.765625 C 15.625 4.285156 16.304688 3.980469 17.054688 3.976562 Z M 17.082031 3.976562").style("fill","#ed4f2f"),this.copyURIIcon.on("click",(function(){R(n.iri),ce(),o.hide()})).on("mouseover",(function(){o.show("<div style='text-align: center;'><b>Copy to ClipBoard</b><br>"+n.iri+"</div>"),s.cancel(ee),s.cancel(X)})).on("mouseout",(function(){o.hide(),ee=s((function(){ce()}),500)})),this.closeIcon=d3.select(".menu-events").append("g").attr("class","close-icon").attr("name","remove").attr("transform",(function(){return e(20,n)})),this.closeIcon.append("circle").attr("cx",14).attr("cy",14).attr("r",13).style("fill","#eee"),this.closeIcon.append("path").attr("d","M14.94,14l5.87-5.87a.66.66,0,1,0-.94-.94L14,13.06,8.13,7.19a.66.66,0,0,0-.94.94L13.06,14,7.19,19.87a.66.66,0,1,0,.94.94L14,14.94l5.87,5.87a.66.66,0,1,0,.94-.94Z").style("fill","#ed4f2f"),this.closeIcon.on("click",(function(){oe(n)})).on("mouseover",(function(){o.show(this.getAttribute("name")),s.cancel(ee),s.cancel(X)})).on("mouseout",(function(){o.hide(),ee=s((function(){ce()}),500)})),this.animateMenu(n)},this.animateMenu=function(t){let n=0;let r=20;this.expandIcon&&this.expandIcon.transition().duration(100).style("opacity",1).ease("sin").attr("transform",(function(){return e(r,t)})).delay(n+=35),this.collapseIcon&&this.collapseIcon.transition().duration(100).style("opacity",1).ease("sin").attr("transform",(function(){return e(r,t)})).delay(n+=35),this.copyURIIcon.transition().duration(100).style("opacity",1).ease("sin").attr("transform",(function(){return r+=30,e(r,t)})).delay(n+=35),this.focusIcon.transition().duration(100).style("opacity",1).ease("sin").attr("transform",(function(){return r+=30,e(r,t)})).delay(n+=35),this.closeIcon.transition().duration(100).style("opacity",1).ease("sin").attr("transform",(function(){return r+=30,e(r,t)})).delay(n+=35),this.expandedState=!0}};function oe(e){U.removeNode(e),ne()}function ie(t){!function(t){e.nodeSelected=!0,null===t.data.types&&(t.data.types="greyColor"),U=new D,M="translate(0, -70) scale(1)",G.translate([0,-70]),G.scale(1)}(t),ae(t)}function ae(t,n,r){let o=t.data;o=_.filter(o,(function(e){return-1===_.findIndex(U.links,(function(t){return e.source===t.source.iri&&e.target===t.target.iri}))})),o=_.filter(o,(function(e){return e.source!==e.target}));const i=_.union(_.flatten(_.map(t.data,(function(e){return[e.source,e.target]})))),s=_.map(U.nodes,(function(e){return e.iri})),d=_.reject(i,(function(e){return _.includes(s,e)}));if(0===d.length)r?a.info("This node has no visible connections. Check your Graph Settings if you expect such."):0===o.length&&a.info("This node has no other visible connections. Check your Graph Settings if you expect such."),U.addAndMatchLinks(o),ne();else{const t=[],r=[];_.forEach(d,(function(n,o){t.push(c({url:"rest/explore-graph/node",method:"GET",params:{iri:n,config:e.configLoaded.id,languages:e.shouldShowSettings()?e.saveSettings.languages:[],includeInferred:e.saveSettings.includeInferred,sameAsState:e.saveSettings.sameAsState}}).then((function(e){r[o]=e.data})))})),u.all(t).then((function(){_.forEach(r,(function(e,t){const o=2*Math.PI*t/r.length,i=(n?n.x:0)+Math.cos(o)*N/3,a=(n?n.y:0)+Math.sin(o)*N/3;U.addNode(e,i,a)})),U.addAndMatchLinks(o),n&&(n.isExpanded=!0),ne()}))}}function se(t,n,r){if(te.getLoadingState())return;te.init(t,r);const o=t.iri;c({url:"rest/explore-graph/links",method:"GET",params:{iri:o,linksLimit:e.saveSettings.linksLimit,includeInferred:e.saveSettings.includeInferred,config:e.configLoaded.id,preferredTypes:e.shouldShowSettings()?e.saveSettings.preferredTypes:[],rejectedTypes:e.shouldShowSettings()?e.saveSettings.rejectedTypes:[],preferredPredicates:e.shouldShowSettings()?e.saveSettings.preferredPredicates:[],rejectedPredicates:e.shouldShowSettings()?e.saveSettings.rejectedPredicates:[],preferredTypesOnly:e.shouldShowSettings()?e.saveSettings.preferredTypesOnly:[],preferredPredicatesOnly:e.shouldShowSettings()?e.saveSettings.preferredPredicatesOnly:[],languages:e.shouldShowSettings()?e.saveSettings.languages:[],sameAsState:e.saveSettings.sameAsState,includeSchema:e.saveSettings.includeSchema}}).then((function(e){ae(e,t,n)}),(function(t){const n=getError(t.data);a.error(n,"Error exploring node"),e.loading=!1,te.setLoadingState(!1)}))}function ce(){angular.isDefined(re)&&re.expandedState&&re.removeIcons()}function de(t){const n=e.replaceIRIWithPrefix(t);return n.length===t.length?t.split("/")[t.split("/").length-1]:n}e.toggleSidePanel=function(){e.pageslideExpanded=!e.pageslideExpanded},e.closeInfoPanel=function(){e.pageslideExpanded=!1,e.openedNodeInfoPanel=void 0,s((function(){e.showInfoPanel=!1}))},e.splitPredicate=function(e){return e.split("/")[e.split("/").length-1]},e.getActiveRepository=function(){return n.getActiveRepository()},e.isLoadingLocation=function(){return n.isLoadingLocation()},e.hasActiveLocation=function(){return n.hasActiveLocation()},e.rotate=function(e){ce();const t=2*(e?1:-1)*Math.PI/180,n=Math.cos(t),r=Math.sin(t),o=T/2,i=N/2;d3.selectAll(".node-wrapper").each((function(e){e.x=o+(n*(e.x-o)+r*(e.y-i)),e.y=i+(-r*(e.x-o)+n*(e.y-i)),e.fixed&&(e.px=e.x,e.py=e.y)})),J.resume()},e.openUri=function(t,n){if(!n){const n={};e.configLoaded.id!==e.defaultGraphConfig.id&&(n.config=e.configLoaded.id),n.uri=t,e.pushHistory(n,{uri:t,config:e.configLoaded})}e.$broadcast("onRootNodeChange",t)},e.saveOrUpdateGraph=function(){const t=JSON.stringify(U.copyState()),n={id:e.lastSavedGraphId,name:e.lastSavedGraphName,data:t,shared:e.shared};n.id?e.saveGraphModal("update",n):e.saveGraphModal("new",n)},e.renameSavedGraph=function(t){e.saveGraphModal("rename",{id:t.id,name:t.name,config:t.config,shared:t.shared})};const le=function(t){S.editSavedGraph(t).success((function(){e.lastSavedGraphName=t.name,e.shared=t.shared,e.refreshSavedGraphs(),a.success("Saved graph "+t.name+" was edited.")})).error((function(e){const t=getError(e);a.error(t,"Error! Cannot edit saved graph")}))};e.saveGraphModal=function(t,n,r){m.open({templateUrl:"js/angular/graphexplore/templates/modal/save-graph.html",controller:"SaveGraphModalCtrl",resolve:{data:function(){return{mode:t,graph:n,graphExists:r,shared:n.shared}}}}).result.then((function(t){if(t.restart)e.saveGraphModal(t.mode,t.graph,!1);else switch(t.mode){case"new":!function(t){e.configLoaded&&(t.config=e.configLoaded.id),S.addNewSavedGraph(t).success((function(n,r,o){e.lastSavedGraphName=t.name,e.lastSavedGraphId=o()["x-saved-graph-id"],e.shared=t.shared,e.refreshSavedGraphs(),a.success("Saved graph "+t.name+" was saved.")})).error((function(n,r){if(422===r)e.saveGraphModal("new",t,!0);else{const e=getError(n);a.error(e,"Error! Cannot create saved graph")}}))}(t.graph);break;case"update":case"rename":le(t.graph)}}))},e.refreshSavedGraphs=function(){S.getSavedGraphs().success((function(t){e.savedGraphs=t})).error((function(e){const t=getError(e);a.error(t,"Error! Could not get saved graphs")}))},e.loadSavedGraph=function(t,n){t.owner?(e.lastSavedGraphName=t.name,e.lastSavedGraphId=t.id,e.shared=t.shared,e.configLoaded=e.findConfigById(t.config)):(e.lastSavedGraphName=null,e.lastSavedGraphId=null,e.shared=t.shared),e.configLoaded||(e.configLoaded=e.defaultGraphConfig),p.url("?saved="+t.id),U.restoreState(JSON.parse(t.data)),n||e.pushHistory({saved:t.id},{savedGraph:t})},e.copyToClipboardSavedGraph=function(e){R([location.protocol,"//",location.host,location.pathname,"?saved=",e.id].join(""))},e.deleteSavedGraph=function(t){h.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the saved graph '"+t.name+"'?",warning:!0}).result.then((function(){!function(t){S.deleteSavedGraph(t).success((function(){e.refreshSavedGraphs(),a.success("Saved graph "+t.name+" was deleted.")})).error((function(e){const t=getError(e);a.error(t,"Error! Cannot delete saved graph")}))}(t)}))},e.openIRI=function(t,n){return n.shiftKey?e.$broadcast("onRootNodeChange",t):window.open(t,"_blank"),!1},e.togglePinAllNodes=function(){ce();const t=e.numberOfPinnedNodes<=0;e.numberOfPinnedNodes=0,d3.selectAll(".node").each((function(n){n.fixed=t,t&&e.numberOfPinnedNodes++})),J.resume()},$("body").on("keydown",(function(t){"input"!==t.target.nodeName&&e.nodeSelected&&(37===t.keyCode?e.rotate(!0):39===t.keyCode&&e.rotate(!1))})),e.getLiteralFromPropValue=function(e){return e.substring(e.indexOf(":")+1)}}function s(e,t,n){switch(e.mode=n.mode,e.graph=angular.copy(n.graph),e.graphExists=n.graphExists,e.mode){case"new":e.title="Create new saved graph",e.okButtonText="Create";break;case"update":e.title="Update saved graph",e.okButtonText="Save";break;case"rename":e.title="Rename saved graph",e.okButtonText="Save"}e.ok=function(){e.form.$valid&&t.close({graph:e.graph,mode:e.mode})},e.saveNew=function(){e.graph.name=e.graph.name+" (new)",t.close({graph:e.graph,mode:"new",restart:!0})},e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.graphexplore.controllers.graphviz",["ui.scroll.jqlite","ui.scroll","toastr","ui.bootstrap","ngTagsInput","graphdb.framework.utils.localstorageadapter"]).controller("GraphsVisualizationsCtrl",a).controller("SaveGraphModalCtrl",s).config(["$tooltipProvider",function(e){e.options({appendToBody:!0})}]),a.$inject=["$scope","$rootScope","$repositories","$licenseService","toastr","$timeout","$http","ClassInstanceDetailsService","AutocompleteRestService","$q","$location","$jwtAuth","UiScrollService","ModalService","$modal","$window","LocalStorageAdapter","LSKeys","SavedGraphsRestService","GraphConfigRestService","RDF4JRepositoriesRestService"],s.$inject=["$scope","$modalInstance","data"]}}]);
2
- //# sourceMappingURL=27.827ef7f030a5501be29a.bundle.js.map