graphdb-workbench 1.11.2 → 1.11.3-TR1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/dist/10.94e753e068396d6b6ec9.bundle.js +2 -0
  2. package/dist/10.94e753e068396d6b6ec9.bundle.js.map +1 -0
  3. package/dist/11.043e8d20764e39c10e31.bundle.js +2 -0
  4. package/dist/11.043e8d20764e39c10e31.bundle.js.map +1 -0
  5. package/dist/111.73819c3722ceee587ce7.bundle.js +2 -0
  6. package/dist/111.73819c3722ceee587ce7.bundle.js.map +1 -0
  7. package/dist/112.b48a6ea437c1c3ddd7b5.bundle.js +2 -0
  8. package/dist/112.b48a6ea437c1c3ddd7b5.bundle.js.map +1 -0
  9. package/dist/113.09a0a17c31bfc387c352.bundle.js +2 -0
  10. package/dist/113.09a0a17c31bfc387c352.bundle.js.map +1 -0
  11. package/dist/{114.edebb3161ce52d4ca2e1.bundle.js → 114.dcc909bf7059e08fad2a.bundle.js} +2 -2
  12. package/dist/{114.edebb3161ce52d4ca2e1.bundle.js.map → 114.dcc909bf7059e08fad2a.bundle.js.map} +1 -1
  13. package/dist/119.08aed6d34851afdefac5.bundle.js +2 -0
  14. package/dist/119.08aed6d34851afdefac5.bundle.js.map +1 -0
  15. package/dist/12.bb55709d82da219afedf.bundle.js +2 -0
  16. package/dist/12.bb55709d82da219afedf.bundle.js.map +1 -0
  17. package/dist/121.574db48a413271cafc2e.bundle.js +2 -0
  18. package/dist/121.574db48a413271cafc2e.bundle.js.map +1 -0
  19. package/dist/123.9ba8fea15f3fcddc734d.bundle.js +2 -0
  20. package/dist/123.9ba8fea15f3fcddc734d.bundle.js.map +1 -0
  21. package/dist/125.4ffda62ed511df3132f6.bundle.js +2 -0
  22. package/dist/125.4ffda62ed511df3132f6.bundle.js.map +1 -0
  23. package/dist/126.c5fd3ba65878ffcc3c03.bundle.js +2 -0
  24. package/dist/126.c5fd3ba65878ffcc3c03.bundle.js.map +1 -0
  25. package/dist/129.5d023d0fbbb2c517932c.bundle.js +2 -0
  26. package/dist/129.5d023d0fbbb2c517932c.bundle.js.map +1 -0
  27. package/dist/131.e7a34e7f2b2e5898249d.bundle.js +2 -0
  28. package/dist/131.e7a34e7f2b2e5898249d.bundle.js.map +1 -0
  29. package/dist/132.b98cc245bf2c668b2ffd.bundle.js +2 -0
  30. package/dist/132.b98cc245bf2c668b2ffd.bundle.js.map +1 -0
  31. package/dist/134.72b76429fe72a9fc5119.bundle.js +2 -0
  32. package/dist/134.72b76429fe72a9fc5119.bundle.js.map +1 -0
  33. package/dist/136.991f41ef4565f68c31a7.bundle.js +2 -0
  34. package/dist/136.991f41ef4565f68c31a7.bundle.js.map +1 -0
  35. package/dist/137.b62f0afcb15c29764c04.bundle.js +2 -0
  36. package/dist/137.b62f0afcb15c29764c04.bundle.js.map +1 -0
  37. package/dist/138.fba22be7b3b98750e0c3.bundle.js +2 -0
  38. package/dist/138.fba22be7b3b98750e0c3.bundle.js.map +1 -0
  39. package/dist/{14.0c709b039159410b0b91.bundle.js → 14.6f8b993e972dee32e159.bundle.js} +2 -2
  40. package/dist/14.6f8b993e972dee32e159.bundle.js.map +1 -0
  41. package/dist/140.b4777706146b1ac867ed.bundle.js +2 -0
  42. package/dist/140.b4777706146b1ac867ed.bundle.js.map +1 -0
  43. package/dist/141.4464fb26b1893e0dbc7a.bundle.js +2 -0
  44. package/dist/141.4464fb26b1893e0dbc7a.bundle.js.map +1 -0
  45. package/dist/142.4d4fdae663dbeb2df310.bundle.js +2 -0
  46. package/dist/142.4d4fdae663dbeb2df310.bundle.js.map +1 -0
  47. package/dist/145.c9ab7d2a56005326406c.bundle.js +2 -0
  48. package/dist/145.c9ab7d2a56005326406c.bundle.js.map +1 -0
  49. package/dist/146.f5efcb8ef74bf52d3daf.bundle.js +2 -0
  50. package/dist/146.f5efcb8ef74bf52d3daf.bundle.js.map +1 -0
  51. package/dist/{147.0798c61ee5472e70b552.bundle.js → 147.fa44265c07ea2c3c5615.bundle.js} +2 -2
  52. package/dist/{147.0798c61ee5472e70b552.bundle.js.map → 147.fa44265c07ea2c3c5615.bundle.js.map} +1 -1
  53. package/dist/148.8b1e910543c6c25b2f0b.bundle.js +2 -0
  54. package/dist/148.8b1e910543c6c25b2f0b.bundle.js.map +1 -0
  55. package/dist/15.eb562ad073aa0fcd725f.bundle.js +2 -0
  56. package/dist/15.eb562ad073aa0fcd725f.bundle.js.map +1 -0
  57. package/dist/16.0a3c03f05a4bbdfe83ef.bundle.js +2 -0
  58. package/dist/16.0a3c03f05a4bbdfe83ef.bundle.js.map +1 -0
  59. package/dist/18.c3e44ed00a2532402729.bundle.js +3 -0
  60. package/dist/18.c3e44ed00a2532402729.bundle.js.map +1 -0
  61. package/dist/20.264daf29beccbf7de84a.bundle.js +2 -0
  62. package/dist/20.264daf29beccbf7de84a.bundle.js.map +1 -0
  63. package/dist/22.e85ffde858c596437b7a.bundle.js +1 -1
  64. package/dist/22.e85ffde858c596437b7a.bundle.js.map +1 -1
  65. package/dist/23.c58eff831306fad29d42.bundle.js +2 -0
  66. package/dist/23.c58eff831306fad29d42.bundle.js.map +1 -0
  67. package/dist/25.8c10d875bf32c8648157.bundle.js +2 -0
  68. package/dist/25.8c10d875bf32c8648157.bundle.js.map +1 -0
  69. package/dist/{26.57526f30f6b3c581334d.bundle.js → 26.c59631eb4bc0bf8d26b2.bundle.js} +2 -2
  70. package/dist/26.c59631eb4bc0bf8d26b2.bundle.js.map +1 -0
  71. package/dist/27.ed9e0cc8aaa3a12c1fa2.bundle.js +2 -0
  72. package/dist/27.ed9e0cc8aaa3a12c1fa2.bundle.js.map +1 -0
  73. package/dist/28.8f5d9fc8ee46db2a6357.bundle.js +2 -0
  74. package/dist/28.8f5d9fc8ee46db2a6357.bundle.js.map +1 -0
  75. package/dist/30.d341c7532759bc79f41a.bundle.js +1 -1
  76. package/dist/30.d341c7532759bc79f41a.bundle.js.map +1 -1
  77. package/dist/{32.ba5b5ca3e4b7dcf5bd15.bundle.js → 32.1059e272ed99ba3db699.bundle.js} +2 -2
  78. package/dist/32.1059e272ed99ba3db699.bundle.js.map +1 -0
  79. package/dist/{35.b8c8d16a8707c20a1fcb.bundle.js → 35.1f53c71368afc468cc10.bundle.js} +2 -2
  80. package/dist/35.1f53c71368afc468cc10.bundle.js.map +1 -0
  81. package/dist/{36.d96e6ee811e8340ae320.bundle.js → 36.aced0c9768c16e4d29ef.bundle.js} +2 -2
  82. package/dist/36.aced0c9768c16e4d29ef.bundle.js.map +1 -0
  83. package/dist/37.dcbe2e4e1f86ca2da209.bundle.js +1 -1
  84. package/dist/37.dcbe2e4e1f86ca2da209.bundle.js.map +1 -1
  85. package/dist/38.171aa543e807777b4f29.bundle.js +1 -1
  86. package/dist/38.171aa543e807777b4f29.bundle.js.map +1 -1
  87. package/dist/40.f660048c67e9b6d478dc.bundle.js +2 -0
  88. package/dist/40.f660048c67e9b6d478dc.bundle.js.map +1 -0
  89. package/dist/{42.190f8880ee8f3a97a042.bundle.js → 42.9bbccd6cb2c263d7b873.bundle.js} +2 -2
  90. package/dist/42.9bbccd6cb2c263d7b873.bundle.js.map +1 -0
  91. package/dist/{43.899bf21ce1de203ace21.bundle.js → 43.6f609ec150488009b166.bundle.js} +2 -2
  92. package/dist/43.6f609ec150488009b166.bundle.js.map +1 -0
  93. package/dist/{44.c649782fa0755b53a62c.bundle.js → 44.8be8b582a97146d3ad6f.bundle.js} +2 -2
  94. package/dist/44.8be8b582a97146d3ad6f.bundle.js.map +1 -0
  95. package/dist/47.b94dca10f70c70009f46.bundle.js +2 -0
  96. package/dist/47.b94dca10f70c70009f46.bundle.js.map +1 -0
  97. package/dist/{48.52c5b13ab244c45a8c43.bundle.js → 48.10699147cdbee9af3c2b.bundle.js} +2 -2
  98. package/dist/48.10699147cdbee9af3c2b.bundle.js.map +1 -0
  99. package/dist/{5.21d2da4b4bc2b26e2534.bundle.js → 5.275d1f74283aff0821f2.bundle.js} +2 -2
  100. package/dist/5.275d1f74283aff0821f2.bundle.js.map +1 -0
  101. package/dist/{56.ce399f5788c0f5fe937b.bundle.js → 56.dae3cb719fcb013d7a06.bundle.js} +2 -2
  102. package/dist/56.dae3cb719fcb013d7a06.bundle.js.map +1 -0
  103. package/dist/68.5fa639981e7ce624fb73.bundle.js +2 -0
  104. package/dist/68.5fa639981e7ce624fb73.bundle.js.map +1 -0
  105. package/dist/{7.a0f5ec224bebd08058f4.bundle.js → 7.9946929545b7635857ac.bundle.js} +2 -2
  106. package/dist/7.9946929545b7635857ac.bundle.js.map +1 -0
  107. package/dist/75.3dd1e0c0ad0cf40ed6a1.bundle.js +2 -0
  108. package/dist/75.3dd1e0c0ad0cf40ed6a1.bundle.js.map +1 -0
  109. package/dist/78.6caec59329b53bb098ee.bundle.js +2 -0
  110. package/dist/78.6caec59329b53bb098ee.bundle.js.map +1 -0
  111. package/dist/{79.f4a2c3ec71bed08d61b9.bundle.js → 79.0f7567cb18c210d45806.bundle.js} +2 -2
  112. package/dist/79.0f7567cb18c210d45806.bundle.js.map +1 -0
  113. package/dist/{9.c9fc88a79b7990e29e04.bundle.js → 9.c4b55fc1e3fc858be626.bundle.js} +2 -2
  114. package/dist/9.c4b55fc1e3fc858be626.bundle.js.map +1 -0
  115. package/dist/{94.3efcd047d4d4e506cbd7.bundle.js → 94.afe4c166f07dbf1bc30f.bundle.js} +2 -2
  116. package/dist/94.afe4c166f07dbf1bc30f.bundle.js.map +1 -0
  117. package/dist/{96.754454264340bc9d9a70.bundle.js → 96.f7d3f181e8860ce2bd8b.bundle.js} +2 -2
  118. package/dist/96.f7d3f181e8860ce2bd8b.bundle.js.map +1 -0
  119. package/dist/bundle.48ae48a008439cff2323.bundle.js +79 -0
  120. package/dist/bundle.48ae48a008439cff2323.bundle.js.map +1 -0
  121. package/dist/index.html +7 -7
  122. package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +18 -18
  123. package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +1 -1
  124. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +3 -3
  125. package/dist/js/angular/core/templates/core-errors.html +1 -1
  126. package/dist/js/angular/core/templates/search-resource-input.html +3 -3
  127. package/dist/js/angular/externalsync/templates/deleteConnector.html +1 -1
  128. package/dist/js/angular/graphexplore/templates/modal/save-graph.html +1 -1
  129. package/dist/js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html +3 -3
  130. package/dist/js/angular/graphexplore/templates/searchIconInputTemplate.html +3 -3
  131. package/dist/js/angular/import/templates/filesTable.html +12 -12
  132. package/dist/js/angular/import/templates/settingsModal.html +19 -19
  133. package/dist/js/angular/import/templates/textSnippet.html +4 -4
  134. package/dist/js/angular/import/templates/urlImport.html +4 -4
  135. package/dist/js/angular/repositories/templates/fedx-repo.html +28 -19
  136. package/dist/js/angular/repositories/templates/ontop-repo.html +8 -8
  137. package/dist/js/angular/security/templates/modal/default-authorities.html +3 -3
  138. package/dist/js/angular/security/templates/user.html +12 -12
  139. package/dist/js/angular/security/templates/users.html +11 -11
  140. package/dist/js/angular/settings/modal/location-settings.html +5 -5
  141. package/dist/js/angular/templates/modal/add-location.html +3 -3
  142. package/dist/js/angular/templates/modal/edit-location.html +3 -3
  143. package/dist/js/angular/templates/modal/editRepoFile.html +1 -1
  144. package/dist/js/angular/templates/modal/upload-repository-config.html +2 -2
  145. package/dist/pages/autocomplete.html +8 -8
  146. package/dist/pages/choose-repository-type.html +1 -1
  147. package/dist/pages/clusterInfo.html +2 -2
  148. package/dist/pages/connectorsInfo.html +5 -5
  149. package/dist/pages/create-index.html +16 -16
  150. package/dist/pages/createConnector.html +22 -22
  151. package/dist/pages/dependencies.html +12 -12
  152. package/dist/pages/domainRangeInfo.html +4 -4
  153. package/dist/pages/edit.html +7 -7
  154. package/dist/pages/explore.html +10 -10
  155. package/dist/pages/export.html +14 -14
  156. package/dist/pages/find.html +2 -2
  157. package/dist/pages/graph-config/saveGraphConfig.html +28 -40
  158. package/dist/pages/graphs-visualizations.html +46 -46
  159. package/dist/pages/home.html +10 -10
  160. package/dist/pages/import.html +7 -7
  161. package/dist/pages/info.html +16 -16
  162. package/dist/pages/jdbc-create.html +20 -20
  163. package/dist/pages/jdbc.html +3 -3
  164. package/dist/pages/licenseInfo.html +1 -1
  165. package/dist/pages/login.html +2 -2
  166. package/dist/pages/monitor/queries.html +6 -6
  167. package/dist/pages/monitor/resources.html +3 -3
  168. package/dist/pages/namespaces.html +14 -14
  169. package/dist/pages/ontorefine.html +1 -1
  170. package/dist/pages/rdfClassHierarchyInfo.html +16 -16
  171. package/dist/pages/rdfrank.html +17 -17
  172. package/dist/pages/registerLicenseInfo.html +3 -3
  173. package/dist/pages/repositories.html +22 -22
  174. package/dist/pages/repository.html +28 -28
  175. package/dist/pages/similarity-indexes.html +15 -15
  176. package/dist/pages/sparql-template-create.html +9 -9
  177. package/dist/pages/sparql-templates.html +3 -3
  178. package/dist/pages/sparql.html +8 -8
  179. package/dist/pages/webapi.html +3 -3
  180. package/dist/res/swagger/index.html +25 -25
  181. package/package.json +5 -4
  182. package/dist/10.f0277e5092cea150b5a8.bundle.js +0 -2
  183. package/dist/10.f0277e5092cea150b5a8.bundle.js.map +0 -1
  184. package/dist/11.bdd794940dcfd5daa9a1.bundle.js +0 -2
  185. package/dist/11.bdd794940dcfd5daa9a1.bundle.js.map +0 -1
  186. package/dist/111.056eb71072bfd8f6551b.bundle.js +0 -2
  187. package/dist/111.056eb71072bfd8f6551b.bundle.js.map +0 -1
  188. package/dist/112.50fd62c66c6594e055a3.bundle.js +0 -2
  189. package/dist/112.50fd62c66c6594e055a3.bundle.js.map +0 -1
  190. package/dist/113.2c059fa7d06fd04149eb.bundle.js +0 -2
  191. package/dist/113.2c059fa7d06fd04149eb.bundle.js.map +0 -1
  192. package/dist/119.dfdf8b9afa2c31b90232.bundle.js +0 -2
  193. package/dist/119.dfdf8b9afa2c31b90232.bundle.js.map +0 -1
  194. package/dist/12.a3762f9fba854a28c1cb.bundle.js +0 -2
  195. package/dist/12.a3762f9fba854a28c1cb.bundle.js.map +0 -1
  196. package/dist/121.aa10886f87136602a6cf.bundle.js +0 -2
  197. package/dist/121.aa10886f87136602a6cf.bundle.js.map +0 -1
  198. package/dist/123.318a247a0939300080aa.bundle.js +0 -2
  199. package/dist/123.318a247a0939300080aa.bundle.js.map +0 -1
  200. package/dist/125.4978d60a14b65499a047.bundle.js +0 -2
  201. package/dist/125.4978d60a14b65499a047.bundle.js.map +0 -1
  202. package/dist/126.4a830f0d18f079b1dca7.bundle.js +0 -2
  203. package/dist/126.4a830f0d18f079b1dca7.bundle.js.map +0 -1
  204. package/dist/129.7ca4a0a32cacb6feb225.bundle.js +0 -2
  205. package/dist/129.7ca4a0a32cacb6feb225.bundle.js.map +0 -1
  206. package/dist/131.087611adf6562e7e1b00.bundle.js +0 -2
  207. package/dist/131.087611adf6562e7e1b00.bundle.js.map +0 -1
  208. package/dist/132.b1ed3e4c9238c5b6303b.bundle.js +0 -2
  209. package/dist/132.b1ed3e4c9238c5b6303b.bundle.js.map +0 -1
  210. package/dist/134.653804476f9803033cbe.bundle.js +0 -2
  211. package/dist/134.653804476f9803033cbe.bundle.js.map +0 -1
  212. package/dist/136.5d60eb9d8d66581003ce.bundle.js +0 -2
  213. package/dist/136.5d60eb9d8d66581003ce.bundle.js.map +0 -1
  214. package/dist/137.0cfdd5934c6a400ab990.bundle.js +0 -2
  215. package/dist/137.0cfdd5934c6a400ab990.bundle.js.map +0 -1
  216. package/dist/138.611df35cbfdfec860909.bundle.js +0 -2
  217. package/dist/138.611df35cbfdfec860909.bundle.js.map +0 -1
  218. package/dist/14.0c709b039159410b0b91.bundle.js.map +0 -1
  219. package/dist/140.b0310ba39e9c3237f48a.bundle.js +0 -2
  220. package/dist/140.b0310ba39e9c3237f48a.bundle.js.map +0 -1
  221. package/dist/141.5d76be84a3151e69fc9d.bundle.js +0 -2
  222. package/dist/141.5d76be84a3151e69fc9d.bundle.js.map +0 -1
  223. package/dist/142.a4094b510036aaf72b0b.bundle.js +0 -2
  224. package/dist/142.a4094b510036aaf72b0b.bundle.js.map +0 -1
  225. package/dist/145.6536295098a4f2e030e3.bundle.js +0 -2
  226. package/dist/145.6536295098a4f2e030e3.bundle.js.map +0 -1
  227. package/dist/146.ee9db0da29c25ec7fbf9.bundle.js +0 -2
  228. package/dist/146.ee9db0da29c25ec7fbf9.bundle.js.map +0 -1
  229. package/dist/148.0ce4968734a80e71b2b9.bundle.js +0 -2
  230. package/dist/148.0ce4968734a80e71b2b9.bundle.js.map +0 -1
  231. package/dist/15.fc7c799455b5aec64393.bundle.js +0 -2
  232. package/dist/15.fc7c799455b5aec64393.bundle.js.map +0 -1
  233. package/dist/16.005766c64d76f95231b1.bundle.js +0 -2
  234. package/dist/16.005766c64d76f95231b1.bundle.js.map +0 -1
  235. package/dist/18.2ddbba81e5b663db1894.bundle.js +0 -3
  236. package/dist/18.2ddbba81e5b663db1894.bundle.js.map +0 -1
  237. package/dist/20.a35d80fb5e80ae3874ce.bundle.js +0 -2
  238. package/dist/20.a35d80fb5e80ae3874ce.bundle.js.map +0 -1
  239. package/dist/23.102a20601f717ba91551.bundle.js +0 -2
  240. package/dist/23.102a20601f717ba91551.bundle.js.map +0 -1
  241. package/dist/25.bd69d5c4040e1547800b.bundle.js +0 -2
  242. package/dist/25.bd69d5c4040e1547800b.bundle.js.map +0 -1
  243. package/dist/26.57526f30f6b3c581334d.bundle.js.map +0 -1
  244. package/dist/27.ab75434b1389b977291c.bundle.js +0 -2
  245. package/dist/27.ab75434b1389b977291c.bundle.js.map +0 -1
  246. package/dist/28.b2180a7cba95d9328e1a.bundle.js +0 -2
  247. package/dist/28.b2180a7cba95d9328e1a.bundle.js.map +0 -1
  248. package/dist/32.ba5b5ca3e4b7dcf5bd15.bundle.js.map +0 -1
  249. package/dist/35.b8c8d16a8707c20a1fcb.bundle.js.map +0 -1
  250. package/dist/36.d96e6ee811e8340ae320.bundle.js.map +0 -1
  251. package/dist/40.c754ab2b3b35c2acb854.bundle.js +0 -2
  252. package/dist/40.c754ab2b3b35c2acb854.bundle.js.map +0 -1
  253. package/dist/42.190f8880ee8f3a97a042.bundle.js.map +0 -1
  254. package/dist/43.899bf21ce1de203ace21.bundle.js.map +0 -1
  255. package/dist/44.c649782fa0755b53a62c.bundle.js.map +0 -1
  256. package/dist/47.421938875d2461427ae3.bundle.js +0 -2
  257. package/dist/47.421938875d2461427ae3.bundle.js.map +0 -1
  258. package/dist/48.52c5b13ab244c45a8c43.bundle.js.map +0 -1
  259. package/dist/5.21d2da4b4bc2b26e2534.bundle.js.map +0 -1
  260. package/dist/56.ce399f5788c0f5fe937b.bundle.js.map +0 -1
  261. package/dist/68.6b887fe6160e5bd8742b.bundle.js +0 -2
  262. package/dist/68.6b887fe6160e5bd8742b.bundle.js.map +0 -1
  263. package/dist/7.a0f5ec224bebd08058f4.bundle.js.map +0 -1
  264. package/dist/75.dbd9915663de96056138.bundle.js +0 -2
  265. package/dist/75.dbd9915663de96056138.bundle.js.map +0 -1
  266. package/dist/78.608f8074bef29a89d68b.bundle.js +0 -2
  267. package/dist/78.608f8074bef29a89d68b.bundle.js.map +0 -1
  268. package/dist/79.f4a2c3ec71bed08d61b9.bundle.js.map +0 -1
  269. package/dist/9.c9fc88a79b7990e29e04.bundle.js.map +0 -1
  270. package/dist/94.3efcd047d4d4e506cbd7.bundle.js.map +0 -1
  271. package/dist/96.754454264340bc9d9a70.bundle.js.map +0 -1
  272. package/dist/bundle.ac70985c70f7da448f2d.bundle.js +0 -79
  273. package/dist/bundle.ac70985c70f7da448f2d.bundle.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/repositories/fedx-repo.directive.js"],"names":["fedxRepoDirective","$uibModal","RepositoriesRestService","toastr","$timeout","restrict","scope","templateUrl","link","$scope","LOCAL_REPO_STORE","getRepositories","success","response","localRepos","allLocalRepos","slice","error","msg","getError","populateLocalRepos","member","fedxMembers","filter","repo","id","repositoryName","store","getLocalRepositories","then","editRepoPage","repositoryInfo","params","value","setWritableRepo","currentWritable","find","writable","JSON","stringify","getActiveClass","checkIfRepoExist","length","localReposTimer","updateMembers","push","removeEndingSlash","url","checkEditMode","model","editMode","$on","cancel","addLocalMember","repository","repoType","type","respectRights","el","removeMember","endpoint","repositoryLocation","repositoryServer","addRemoteMember","mode","sparqlEndpoint","username","password","supportsASKQueries","$uibModalInstance","open","getMemberIcon","editFedXRepository","resolveName","dismiss","ok","resolvedName","close","angular","module","directive","$inject"],"mappings":"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","file":"78.6caec59329b53bb098ee.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.repositories.fedx-repo.directive', [])\n .directive('fedxRepo', fedxRepoDirective);\n\nfedxRepoDirective.$inject = ['$uibModal', 'RepositoriesRestService', 'toastr', '$timeout'];\n\nfunction fedxRepoDirective($uibModal, RepositoriesRestService, toastr, $timeout) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/fedx-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n const LOCAL_REPO_STORE = 'ResolvableRepository';\n const REMOTE_REPO_STORE = 'RemoteRepository';\n const SPARQL_ENDPOINT_STORE = 'SPARQLEndpoint';\n const NATIVE_STORE = 'NativeStore';\n\n $scope.fedxMembers = [];\n $scope.localRepos = [];\n $scope.allLocalRepos = [];\n\n function getRepositories() {\n return RepositoriesRestService.getRepositories()\n .success(function (response) {\n $scope.localRepos = response;\n $scope.allLocalRepos = $scope.localRepos.slice();\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, 'Error');\n });\n }\n\n function populateLocalRepos() {\n for (const member of $scope.fedxMembers) {\n $scope.localRepos = $scope.localRepos.filter(repo => repo.id !== member.repositoryName || member.store !== LOCAL_REPO_STORE);\n }\n }\n\n $scope.setWritableRepo = function (member) {\n let currentWritable = getWritableRepo();\n if (currentWritable && currentWritable.repositoryName !== member.repositoryName) {\n currentWritable.writable = 'false';\n }\n member.writable = JSON.stringify(member.writable === 'false');\n }\n\n $scope.getActiveClass = function (member) {\n return member.writable === 'true' ? ' active' : '';\n }\n\n function getWritableRepo() {\n return $scope.fedxMembers.find(member => member.writable === \"true\");\n }\n\n function getLocalRepositories() {\n getRepositories()\n .then(function () {\n if ($scope.editRepoPage) {\n $scope.fedxMembers = $scope.repositoryInfo.params.member.value.slice();\n }\n populateLocalRepos();\n });\n }\n\n $scope.checkIfRepoExist = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n return $scope.allLocalRepos.filter(repo => repo.id === member.repositoryName).length !== 0;\n } else {\n return true;\n }\n }\n\n const localReposTimer = $timeout(function () {\n getLocalRepositories();\n }, 2000);\n\n $scope.$on('$destroy', function () {\n $timeout.cancel(localReposTimer);\n });\n\n $scope.addLocalMember = function (repository) {\n let member = {\n store: LOCAL_REPO_STORE,\n repositoryName: repository.id,\n repoType: repository.type,\n respectRights: \"true\",\n writable: \"false\"\n };\n\n $scope.localRepos = $scope.localRepos.filter(el => el.id !== member.repositoryName);\n updateMembers(member);\n }\n\n $scope.removeMember = function (member) {\n if (member.store && member.store === LOCAL_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store);\n getRepositories()\n .then(function () {\n populateLocalRepos();\n });\n } else if (member.store && member.store === SPARQL_ENDPOINT_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n } else if (member.store && member.store === NATIVE_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryLocation !== member.repositoryLocation);\n } else if (member.store && member.store === REMOTE_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n }\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n $scope.addRemoteMember = function () {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: false,\n store: REMOTE_REPO_STORE,\n repositoryName: '',\n repositoryServer: '',\n sparqlEndpoint: '',\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n\n $scope.$uibModalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope,\n });\n };\n\n $scope.getMemberIcon = function (member) {\n if (member.repoType) {\n return 'icon-repo-' + member.repoType;\n } else if (member.store === NATIVE_STORE) {\n return 'icon-warning';\n } else {\n return 'icon-link';\n }\n }\n\n $scope.editFedXRepository = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n $scope.mode = 'local';\n $scope.model = {\n editMode: true,\n store: member.store,\n respectRights: member.respectRights,\n repositoryName: member.repositoryName,\n repoType: member.repoType,\n writable: member.writable\n }\n } else {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: true,\n store: member.store,\n repositoryName: member.repositoryName,\n repositoryServer: member.repositoryServer,\n sparqlEndpoint: member.store === SPARQL_ENDPOINT_STORE ? member.endpoint : member.repositoryLocation,\n username: member.username,\n password: member.password,\n supportsASKQueries: member.supportsASKQueries,\n writable: member.writable\n }\n }\n\n $scope.$uibModalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope\n });\n };\n\n $scope.resolveName = function (member) {\n switch (member.store) {\n case LOCAL_REPO_STORE : {\n return member.repositoryName;\n }\n case REMOTE_REPO_STORE : {\n return member.repositoryName + '@' + member.repositoryServer;\n }\n case SPARQL_ENDPOINT_STORE : {\n return member.endpoint;\n }\n case NATIVE_STORE : {\n return member.repositoryLocation;\n }\n default :\n return \"\";\n }\n }\n\n $scope.cancel = function () {\n $scope.$uibModalInstance.dismiss('cancel');\n };\n\n function updateMembers(member) {\n $scope.fedxMembers.push(member);\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n function removeEndingSlash(url) {\n return url.slice(-1) === '/' ? url.slice(0, -1) : url\n }\n\n function checkEditMode() {\n return $scope.editRepoPage && !$scope.editRepoPage || !$scope.model.editMode;\n }\n\n $scope.ok = function () {\n let member;\n if ($scope.model.repositoryName && $scope.model.store === LOCAL_REPO_STORE) {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repoType: $scope.model.repoType,\n respectRights: $scope.model.respectRights,\n writable: $scope.model.writable\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store );\n } else if ($scope.model.repositoryName && $scope.model.store === REMOTE_REPO_STORE) {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repositoryServer: removeEndingSlash($scope.model.repositoryServer),\n username: $scope.model.username,\n password: $scope.model.password,\n writable: $scope.model.writable\n };\n if (checkEditMode() && $scope.fedxMembers.find(el => el.repositoryName === member.repositoryName\n && el.repositoryServer === member.repositoryServer)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error(`Repository ${resolvedName} already added as a FedX member`);\n $scope.$uibModalInstance.close();\n return;\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n } else {\n member = {\n store: SPARQL_ENDPOINT_STORE,\n endpoint: removeEndingSlash($scope.model.sparqlEndpoint),\n username: $scope.model.username,\n password: $scope.model.password,\n supportsASKQueries: $scope.model.supportsASKQueries,\n writable: $scope.model.writable\n };\n\n if (checkEditMode() && $scope.fedxMembers.find(el => el.endpoint === member.endpoint)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error(`SPARQL endpoint ${resolvedName} already added as a FedX member`);\n $scope.$uibModalInstance.close();\n return;\n }\n\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n }\n\n updateMembers(member);\n $scope.$uibModalInstance.close();\n };\n\n getLocalRepositories();\n }\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[79],{73:function(e,r,o){"use strict";o.r(r);var t=o(42);function i(e,r,o,i){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/ontop-repo.html",link:function(s){s.selectedDriver={driverType:"generic",driverName:"Generic JDBC Driver",jdbc:{hostName:"",port:"",databaseName:"",userName:"",password:"",driverClass:"",url:""},urlTemplate:"",downloadDriverUrl:""},s.ontopRepoFileNames={},s.supportedDriversData=[],s.ontopRepoFileLabels={propertiesFile:"JDBC properties",obdaFile:"OBDA or R2RML",owlFile:"ontology file",constraintFile:"constraint file",dbMetadataFile:"DB metadata file"},s.ontopRepoFiles=Object.keys(s.ontopRepoFileLabels),s.ontopRepoFiles.forEach((function(e){s.repositoryInfo.params[e]&&(s.ontopRepoFileNames[e]=Object(t.getFileName)(s.repositoryInfo.params[e].value))})),s.supportedDriverLabels={hostName:"Hostname",port:"Port",databaseName:"Database name",userName:"Username",password:"Password",driverClass:"Driver class",url:"URL"},s.propertiesFileParams=Object.keys(s.supportedDriverLabels),s.classAvailable=!1,s.genericDriverType="generic",s.propertiesFile="propertiesFile";const a=[s.propertiesFile,"obdaFile"],n=["hostName","databaseName","userName"];function l(){return s.selectedDriver.driverType!==s.genericDriverType?n.filter((function(e){return!s.selectedDriver.jdbc[e]})).length>0&&(o.error("Missing required field"),1)?Promise.reject("Missing required field"):(s.uploadFileLoader=!0,r.updatePropertiesFile(s.repositoryInfo.params[s.propertiesFile].value,s.selectedDriver.jdbc).success((function(e){s.ontopRepoFileNames[s.propertiesFile]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[s.propertiesFile].value=e.fileLocation,s.uploadFileLoader=!1})).error((function(e){p("Error",e),s.uploadFileLoader=!1}))):Promise.resolve()}function p(e,r){const t=getError(r);o.error(t,e)}s.loadDriverByClass=function(e){const r=s.supportedDriversData.find(r=>r.driverClass===e);return r&&s.copyDriverProperties(r),r},s.selectDriverByType=function(e){s.copyDriverProperties(s.supportedDriversData.find(r=>r.driverType===e)),s.concatURL("hostName",s)},s.copyDriverProperties=function(e){s.selectedDriver.driverType=e.driverType,s.selectedDriver.jdbc.driverClass=e.driverClass,s.selectedDriver.jdbc.url=e.urlTemplate,s.selectedDriver.urlTemplate=e.urlTemplate,s.selectedDriver.downloadDriverUrl=e.downloadDriverUrl,s.selectedDriver.portRequired=e.portRequired,s.classAvailable=e.classAvailable},s.isReadOnly=function(e){return"driverClass"===e||"url"===e},s.editFile=function(o){e.open({templateUrl:"js/angular/templates/modal/editRepoFile.html",controller:"EditRepositoryFileCtrl",resolve:{file:function(){return s.repositoryInfo.params[o]?s.repositoryInfo.params[o].value:""}}}).result.then((function(e){r.updateRepositoryFileContent(e.fileLocation,e.content).success((function(e){s.ontopRepoFileNames[o]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[o].value=e.fileLocation})).error((function(e){p("Error",e)}))}))},s.uploadOntopRepoFile=function(e,r){e&&e.length&&(s.uploadFile=e[0],s.uploadFileLoader=!0,i.upload({url:"rest/repositories/uploadFile",data:{uploadFile:s.uploadFile}}).success((function(e){e.success?(s.ontopRepoFileNames[r]=s.uploadFile.name,s.repositoryInfo.params[r].value=e.fileLocation):o.error(e.errorMessage),s.uploadFileLoader=!1})).error((function(e){p("Error",e),s.uploadFile="",s.uploadFileLoader=!1})))},s.concatURL=function(e){if("hostName"===e||"port"===e||"databaseName"===e){let e=s.selectedDriver.urlTemplate;s.selectedDriver.jdbc.hostName&&(e=s.selectedDriver.jdbc.port?e.replace("{hostport}",`${s.selectedDriver.jdbc.hostName}:${s.selectedDriver.jdbc.port}`):e.replace("{hostport}",s.selectedDriver.jdbc.hostName)),s.selectedDriver.jdbc.databaseName&&(e=e.replace("{database}",s.selectedDriver.jdbc.databaseName)),s.selectedDriver.jdbc.url=e}},s.getInputType=function(e){switch(e){case"password":return"password";case"port":return"number";default:return"text"}},s.checkForRequiredOntopFiles=function(){return l().then((function(){return a.filter((function(e){return!s.repositoryInfo.params[e].value})).length>0?(o.error("Missing required ontop repo file"),Promise.reject("Missing required ontop repo file")):Promise.resolve()}))},s.validateOntopPropertiesConnection=function(){l().then((function(){r.validateOntopPropertiesConnection(s.repositoryInfo.params.propertiesFile).success((function(){o.success("Connection is successful")})).error((function(e){p("Failed to connect",e)}))}))},s.isOntopRepoFileUploaded=function(){return s.repositoryInfo.params.propertiesFile&&s.repositoryInfo.params.propertiesFile.value.length>0},s.isRequiredOntopRepoFile=function(e){return a.indexOf(e)>-1},s.isRequiredField=function(e){return n.indexOf(e)>-1||"port"===e&&s.selectedDriver.portRequired},s.getFieldTooltip=function(e){return"port"===e&&s.selectedDriver.portRequired&&(e="portIfRequired"),s.repoTooltips.ontop[e]},s.editOntopRepo=function(){s.checkForRequiredOntopFiles().then((function(){s.editRepository()})).catch((function(e){}))},s.createOntopRepo=function(){s.repositoryInfo.id?s.checkForRequiredOntopFiles().then((function(){s.createRepo()})).catch((function(e){})):o.error("Repository ID cannot be empty")},s.goBackToPrevious=function(){s.goBackToPreviousLocation()},r.getSupportedDriversData().success((function(e){s.supportedDriversData=e})).error((function(e){p("Error",e)})).then((function(){s.editRepoPage&&r.loadPropertiesFile(s.repositoryInfo.params[s.propertiesFile].value).success((function(e){s.loadDriverByClass(e.driverClass)&&(s.selectedDriver.jdbc.hostName=e.hostName,s.selectedDriver.jdbc.port=parseInt(e.port),s.selectedDriver.jdbc.databaseName=e.databaseName,s.selectedDriver.jdbc.userName=e.userName,s.selectedDriver.jdbc.password=e.password,s.selectedDriver.jdbc.url=e.url)})).error((function(e){p("Error",e),s.uploadFileLoader=!1}))}))}}}angular.module("graphdb.framework.repositories.ontop-repo.directive",[]).directive("ontopRepo",i),i.$inject=["$modal","RepositoriesRestService","toastr","Upload"]}}]);
2
- //# sourceMappingURL=79.f4a2c3ec71bed08d61b9.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[79],{73:function(e,r,o){"use strict";o.r(r);var t=o(42);function i(e,r,o,i){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/ontop-repo.html",link:function(s){s.selectedDriver={driverType:"generic",driverName:"Generic JDBC Driver",jdbc:{hostName:"",port:"",databaseName:"",userName:"",password:"",driverClass:"",url:""},urlTemplate:"",downloadDriverUrl:""},s.ontopRepoFileNames={},s.supportedDriversData=[],s.ontopRepoFileLabels={propertiesFile:"JDBC properties",obdaFile:"OBDA or R2RML",owlFile:"ontology file",constraintFile:"constraint file",dbMetadataFile:"DB metadata file"},s.ontopRepoFiles=Object.keys(s.ontopRepoFileLabels),s.ontopRepoFiles.forEach((function(e){s.repositoryInfo.params[e]&&(s.ontopRepoFileNames[e]=Object(t.getFileName)(s.repositoryInfo.params[e].value))})),s.supportedDriverLabels={hostName:"Hostname",port:"Port",databaseName:"Database name",userName:"Username",password:"Password",driverClass:"Driver class",url:"URL"},s.propertiesFileParams=Object.keys(s.supportedDriverLabels),s.classAvailable=!1,s.genericDriverType="generic",s.propertiesFile="propertiesFile";const a=[s.propertiesFile,"obdaFile"],n=["hostName","databaseName","userName"];function l(){return s.selectedDriver.driverType!==s.genericDriverType?n.filter((function(e){return!s.selectedDriver.jdbc[e]})).length>0&&(o.error("Missing required field"),1)?Promise.reject("Missing required field"):(s.uploadFileLoader=!0,r.updatePropertiesFile(s.repositoryInfo.params[s.propertiesFile].value,s.selectedDriver.jdbc).success((function(e){s.ontopRepoFileNames[s.propertiesFile]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[s.propertiesFile].value=e.fileLocation,s.uploadFileLoader=!1})).error((function(e){p("Error",e),s.uploadFileLoader=!1}))):Promise.resolve()}function p(e,r){const t=getError(r);o.error(t,e)}s.loadDriverByClass=function(e){const r=s.supportedDriversData.find(r=>r.driverClass===e);return r&&s.copyDriverProperties(r),r},s.selectDriverByType=function(e){s.copyDriverProperties(s.supportedDriversData.find(r=>r.driverType===e)),s.concatURL("hostName",s)},s.copyDriverProperties=function(e){s.selectedDriver.driverType=e.driverType,s.selectedDriver.jdbc.driverClass=e.driverClass,s.selectedDriver.jdbc.url=e.urlTemplate,s.selectedDriver.urlTemplate=e.urlTemplate,s.selectedDriver.downloadDriverUrl=e.downloadDriverUrl,s.selectedDriver.portRequired=e.portRequired,s.classAvailable=e.classAvailable},s.isReadOnly=function(e){return"driverClass"===e||"url"===e},s.editFile=function(o){e.open({templateUrl:"js/angular/templates/modal/editRepoFile.html",controller:"EditRepositoryFileCtrl",resolve:{file:function(){return s.repositoryInfo.params[o]?s.repositoryInfo.params[o].value:""}}}).result.then((function(e){r.updateRepositoryFileContent(e.fileLocation,e.content).success((function(e){s.ontopRepoFileNames[o]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[o].value=e.fileLocation})).error((function(e){p("Error",e)}))}))},s.uploadOntopRepoFile=function(e,r){e&&e.length&&(s.uploadFile=e[0],s.uploadFileLoader=!0,i.upload({url:"rest/repositories/uploadFile",data:{uploadFile:s.uploadFile}}).success((function(e){e.success?(s.ontopRepoFileNames[r]=s.uploadFile.name,s.repositoryInfo.params[r].value=e.fileLocation):o.error(e.errorMessage),s.uploadFileLoader=!1})).error((function(e){p("Error",e),s.uploadFile="",s.uploadFileLoader=!1})))},s.concatURL=function(e){if("hostName"===e||"port"===e||"databaseName"===e){let e=s.selectedDriver.urlTemplate;s.selectedDriver.jdbc.hostName&&(e=s.selectedDriver.jdbc.port?e.replace("{hostport}",`${s.selectedDriver.jdbc.hostName}:${s.selectedDriver.jdbc.port}`):e.replace("{hostport}",s.selectedDriver.jdbc.hostName)),s.selectedDriver.jdbc.databaseName&&(e=e.replace("{database}",s.selectedDriver.jdbc.databaseName)),s.selectedDriver.jdbc.url=e}},s.getInputType=function(e){switch(e){case"password":return"password";case"port":return"number";default:return"text"}},s.checkForRequiredOntopFiles=function(){return l().then((function(){return a.filter((function(e){return!s.repositoryInfo.params[e].value})).length>0?(o.error("Missing required ontop repo file"),Promise.reject("Missing required ontop repo file")):Promise.resolve()}))},s.validateOntopPropertiesConnection=function(){l().then((function(){r.validateOntopPropertiesConnection(s.repositoryInfo.params.propertiesFile).success((function(){o.success("Connection is successful")})).error((function(e){p("Failed to connect",e)}))}))},s.isOntopRepoFileUploaded=function(){return s.repositoryInfo.params.propertiesFile&&s.repositoryInfo.params.propertiesFile.value.length>0},s.isRequiredOntopRepoFile=function(e){return a.indexOf(e)>-1},s.isRequiredField=function(e){return n.indexOf(e)>-1||"port"===e&&s.selectedDriver.portRequired},s.getFieldTooltip=function(e){return"port"===e&&s.selectedDriver.portRequired&&(e="portIfRequired"),s.repoTooltips.ontop[e]},s.editOntopRepo=function(){s.checkForRequiredOntopFiles().then((function(){s.editRepository()})).catch((function(e){}))},s.createOntopRepo=function(){s.repositoryInfo.id?s.checkForRequiredOntopFiles().then((function(){s.createRepo()})).catch((function(e){})):o.error("Repository ID cannot be empty")},s.goBackToPrevious=function(){s.goBackToPreviousLocation()},r.getSupportedDriversData().success((function(e){s.supportedDriversData=e})).error((function(e){p("Error",e)})).then((function(){s.editRepoPage&&r.loadPropertiesFile(s.repositoryInfo.params[s.propertiesFile].value).success((function(e){s.loadDriverByClass(e.driverClass)&&(s.selectedDriver.jdbc.hostName=e.hostName,s.selectedDriver.jdbc.port=parseInt(e.port),s.selectedDriver.jdbc.databaseName=e.databaseName,s.selectedDriver.jdbc.userName=e.userName,s.selectedDriver.jdbc.password=e.password,s.selectedDriver.jdbc.url=e.url)})).error((function(e){p("Error",e),s.uploadFileLoader=!1}))}))}}}angular.module("graphdb.framework.repositories.ontop-repo.directive",[]).directive("ontopRepo",i),i.$inject=["$uibModal","RepositoriesRestService","toastr","Upload"]}}]);
2
+ //# sourceMappingURL=79.0f7567cb18c210d45806.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/repositories/ontop-repo.directive.js"],"names":["ontopRepoDirective","$uibModal","RepositoriesRestService","toastr","Upload","restrict","scope","templateUrl","link","$scope","selectedDriver","driverType","driverName","jdbc","hostName","port","databaseName","userName","password","driverClass","url","urlTemplate","downloadDriverUrl","ontopRepoFileNames","supportedDriversData","ontopRepoFileLabels","propertiesFile","obdaFile","owlFile","constraintFile","dbMetadataFile","ontopRepoFiles","Object","keys","forEach","key","repositoryInfo","params","value","supportedDriverLabels","propertiesFileParams","classAvailable","genericDriverType","REQUIRED_ONTOP_REPO_PARAMS","REQUIRED_PROPERTIES_FIELD_PARAMS","updateProperties","filter","requiredField","length","error","Promise","reject","uploadFileLoader","updatePropertiesFile","success","data","fileLocation","showErrorMsg","resolve","title","msg","getError","loadDriverByClass","foundDriver","find","driver","copyDriverProperties","selectDriverByType","concatURL","portRequired","isReadOnly","labelName","editFile","file","open","controller","result","then","updateRepositoryFileContent","content","uploadOntopRepoFile","files","param","uploadFile","upload","name","errorMessage","replace","getInputType","checkForRequiredOntopFiles","requiredFile","validateOntopPropertiesConnection","isOntopRepoFileUploaded","isRequiredOntopRepoFile","indexOf","isRequiredField","field","getFieldTooltip","repoTooltips","ontop","editOntopRepo","editRepository","catch","err","createOntopRepo","id","createRepo","goBackToPrevious","goBackToPreviousLocation","getSupportedDriversData","response","editRepoPage","loadPropertiesFile","driverData","parseInt","angular","module","directive","$inject"],"mappings":"0FAAA,mBAQA,SAASA,EAAmBC,EAAWC,EAAyBC,EAAQC,GACpE,MAAO,CACHC,SAAU,IACVC,OAAO,EACPC,YAAa,oDAEbC,KAGJ,SAAkBC,GAEdA,EAAOC,eAAiB,CACpBC,WAAY,UACZC,WAAY,sBACZC,KAAM,CACFC,SAAU,GACVC,KAAM,GACNC,aAAc,GACdC,SAAU,GACVC,SAAU,GACVC,YAAa,GACbC,IAAK,IAETC,YAAa,GACbC,kBAAmB,IAEvBb,EAAOc,mBAAqB,GAC5Bd,EAAOe,qBAAuB,GAC9Bf,EAAOgB,oBACH,CAACC,eAAgB,kBAAmBC,SAAU,gBAAiBC,QAAS,gBACpEC,eAAgB,kBAAmBC,eAAgB,oBAC3DrB,EAAOsB,eAAiBC,OAAOC,KAAKxB,EAAOgB,qBAC3ChB,EAAOsB,eAAeG,SAAQ,SAASC,GAC/B1B,EAAO2B,eAAeC,OAAOF,KAC7B1B,EAAOc,mBAAmBY,GAAO,sBAAY1B,EAAO2B,eAAeC,OAAOF,GAAKG,WAGvF7B,EAAO8B,sBAAwB,CAACzB,SAAU,WAAYC,KAAM,OAAQC,aAAc,gBAClDC,SAAU,WAAYC,SAAU,WAAYC,YAAa,eAAgBC,IAAK,OAC9GX,EAAO+B,qBAAuBR,OAAOC,KAAKxB,EAAO8B,uBACjD9B,EAAOgC,gBAAiB,EACxBhC,EAAOiC,kBAAoB,UAC3BjC,EAAOiB,eAAiB,iBAExB,MAAMiB,EAA6B,CAAClC,EAAOiB,eAAgB,YACrDkB,EAAmC,CAAC,WAAY,eAAgB,YAsLtE,SAASC,IACL,OAAIpC,EAAOC,eAAeC,aAAeF,EAAOiC,kBAZhCE,EACXE,QAAO,SAAUC,GACd,OAAQtC,EAAOC,eAAeG,KAAKkC,MAE/BC,OAAS,IACjB7C,EAAO8C,MAAM,0BACN,GAQIC,QAAQC,OAAO,2BAQ9B1C,EAAO2C,kBAAmB,EACnBlD,EACFmD,qBAAqB5C,EAAO2B,eAAeC,OAAO5B,EAAOiB,gBAAgBY,MAAO7B,EAAOC,eAAeG,MACtGyC,SAAQ,SAAUC,GACf9C,EAAOc,mBAAmBd,EAAOiB,gBAAkB,sBAAY6B,EAAKC,cACpE/C,EAAO2B,eAAeC,OAAO5B,EAAOiB,gBAAgBY,MAAQiB,EAAKC,aACjE/C,EAAO2C,kBAAmB,KAC3BH,OAAM,SAAUM,GACfE,EAAa,QAASF,GACtB9C,EAAO2C,kBAAmB,MAb3BF,QAAQQ,UA4DnB,SAASD,EAAcE,EAAOJ,GAC1B,MAAMK,EAAMC,SAASN,GACrBpD,EAAO8C,MAAMW,EAAKD,GAhPtBlD,EAAOqD,kBAAoB,SAAU3C,GACjC,MAAM4C,EAActD,EAAOe,qBACtBwC,KAAMC,GAAWA,EAAO9C,cAAgBA,GAI7C,OAHI4C,GACAtD,EAAOyD,qBAAqBH,GAEzBA,GAGXtD,EAAO0D,mBAAqB,SAAUxD,GAClCF,EAAOyD,qBAAqBzD,EAAOe,qBAC9BwC,KAAMC,GAAWA,EAAOtD,aAAeA,IAE5CF,EAAO2D,UAAU,WAAY3D,IAGjCA,EAAOyD,qBAAuB,SAAUD,GACpCxD,EAAOC,eAAeC,WAAasD,EAAOtD,WAC1CF,EAAOC,eAAeG,KAAKM,YAAc8C,EAAO9C,YAChDV,EAAOC,eAAeG,KAAKO,IAAM6C,EAAO5C,YACxCZ,EAAOC,eAAeW,YAAc4C,EAAO5C,YAC3CZ,EAAOC,eAAeY,kBAAoB2C,EAAO3C,kBACjDb,EAAOC,eAAe2D,aAAeJ,EAAOI,aAC5C5D,EAAOgC,eAAiBwB,EAAOxB,gBAGnChC,EAAO6D,WAAa,SAAUC,GAC1B,MAAqB,gBAAdA,GAA6C,QAAdA,GAG1C9D,EAAO+D,SAAW,SAASC,GACDxE,EAAUyE,KAAK,CACjCnE,YAAa,+CACboE,WAAY,yBACZjB,QAAS,CACLe,KAAM,WACF,OAAOhE,EAAO2B,eAAeC,OAAOoC,GAAQhE,EAAO2B,eAAeC,OAAOoC,GAAMnC,MAAQ,OAKrFsC,OAAOC,MAAK,SAAUtB,GAEhCrD,EAAwB4E,4BAA4BvB,EAAKC,aAAcD,EAAKwB,SAASzB,SAAQ,SAASsB,GAClGnE,EAAOc,mBAAmBkD,GAAQ,sBAAYG,EAAOpB,cACrD/C,EAAO2B,eAAeC,OAAOoC,GAAMnC,MAAQsC,EAAOpB,gBACnDP,OAAM,SAAUA,GACfQ,EAAa,QAASR,UAKlCxC,EAAOuE,oBAAsB,SAASC,EAAOC,GACrCD,GAASA,EAAMjC,SACfvC,EAAO0E,WAAaF,EAAM,GAC1BxE,EAAO2C,kBAAmB,EAC1BhD,EAAOgF,OAAO,CACVhE,IAAK,+BACLmC,KAAM,CAAC4B,WAAY1E,EAAO0E,cAEzB7B,SAAQ,SAAUC,GACVA,EAAKD,SAGN7C,EAAOc,mBAAmB2D,GAASzE,EAAO0E,WAAWE,KACrD5E,EAAO2B,eAAeC,OAAO6C,GAAO5C,MAAQiB,EAAKC,cAHjDrD,EAAO8C,MAAMM,EAAK+B,cAKtB7E,EAAO2C,kBAAmB,KAC3BH,OAAM,SAAUM,GACnBE,EAAa,QAASF,GACtB9C,EAAO0E,WAAa,GACpB1E,EAAO2C,kBAAmB,OAKtC3C,EAAO2D,UAAY,SAASG,GACxB,GAAkB,aAAdA,GAA0C,SAAdA,GAAsC,iBAAdA,EAA8B,CAClF,IAAIK,EAASnE,EAAOC,eAAeW,YAC/BZ,EAAOC,eAAeG,KAAKC,WAEvB8D,EADAnE,EAAOC,eAAeG,KAAKE,KAClB6D,EAAOW,QAAQ,aACpB,GAAG9E,EAAOC,eAAeG,KAAKC,YAAYL,EAAOC,eAAeG,KAAKE,QAEhE6D,EAAOW,QAAQ,aAAc9E,EAAOC,eAAeG,KAAKC,WAIrEL,EAAOC,eAAeG,KAAKG,eAC3B4D,EAASA,EAAOW,QAAQ,aAAc9E,EAAOC,eAAeG,KAAKG,eAGrEP,EAAOC,eAAeG,KAAKO,IAAMwD,IAIzCnE,EAAO+E,aAAe,SAAUjB,GAC5B,OAAQA,GACJ,IAAK,WACD,MAAO,WACX,IAAK,OACD,MAAO,SACX,QACI,MAAO,SAInB9D,EAAOgF,2BAA6B,WAGhC,OAAO5C,IACFgC,MAAK,WAIF,OAHwBlC,EAA2BG,QAAO,SAAU4C,GAChE,OAAQjF,EAAO2B,eAAeC,OAAOqD,GAAcpD,SAEnCU,OAAS,GACzB7C,EAAO8C,MAAM,oCACNC,QAAQC,OAAO,qCAEnBD,QAAQQ,cAuB3BjD,EAAOkF,kCAAoC,WACvC9C,IACKgC,MAAK,WACF3E,EAAwByF,kCAAkClF,EAAO2B,eAAeC,OAAOX,gBAClF4B,SAAQ,WACLnD,EAAOmD,QAAQ,+BAChBL,OAAM,SAAUM,GACnBE,EAAa,oBAAqBF,UAKlD9C,EAAOmF,wBAA0B,WAC7B,OAAOnF,EAAO2B,eAAeC,OAAOX,gBAChCjB,EAAO2B,eAAeC,OAAOX,eAAeY,MAAMU,OAAS,GAuCnEvC,EAAOoF,wBAA0B,SAASpB,GACtC,OAAO9B,EAA2BmD,QAAQrB,IAAS,GAGvDhE,EAAOsF,gBAAkB,SAAUC,GAC/B,OAAOpD,EAAiCkD,QAAQE,IAAU,GACzC,SAAVA,GAAoBvF,EAAOC,eAAe2D,cAGrD5D,EAAOwF,gBAAkB,SAAUD,GAI/B,MAHc,SAAVA,GAAoBvF,EAAOC,eAAe2D,eAC1C2B,EAAQ,kBAELvF,EAAOyF,aAAaC,MAAMH,IAGrCvF,EAAO2F,cAAgB,WACnB3F,EAAOgF,6BACFZ,MAAK,WACFpE,EAAO4F,oBACRC,OAAM,SAAUC,QAK3B9F,EAAO+F,gBAAkB,WAChB/F,EAAO2B,eAAeqE,GAK3BhG,EAAOgF,6BACFZ,MAAK,WACFpE,EAAOiG,gBACRJ,OAAM,SAAUC,OAPnBpG,EAAO8C,MAAM,kCAYrBxC,EAAOkG,iBAAmB,WACtBlG,EAAOmG,4BAnPA1G,EAAwB2G,0BAC1BvD,SAAQ,SAAUwD,GACfrG,EAAOe,qBAAuBsF,KAC/B7D,OAAM,SAAU6D,GACfrD,EAAa,QAASqD,MAwP7BjC,MAAK,WACEpE,EAAOsG,cAzHf7G,EAAwB8G,mBAAmBvG,EAAO2B,eAAeC,OAAO5B,EAAOiB,gBAAgBY,OAC1FgB,SAAQ,SAAU2D,GACAxG,EAAOqD,kBAAkBmD,EAAW9F,eAG/CV,EAAOC,eAAeG,KAAKC,SAAWmG,EAAWnG,SACjDL,EAAOC,eAAeG,KAAKE,KAAOmG,SAASD,EAAWlG,MACtDN,EAAOC,eAAeG,KAAKG,aAAeiG,EAAWjG,aACrDP,EAAOC,eAAeG,KAAKI,SAAWgG,EAAWhG,SACjDR,EAAOC,eAAeG,KAAKK,SAAW+F,EAAW/F,SACjDT,EAAOC,eAAeG,KAAKO,IAAM6F,EAAW7F,QAEjD6B,OAAM,SAAUM,GACnBE,EAAa,QAASF,GACtB9C,EAAO2C,kBAAmB,UAxM1C+D,QACKC,OAAO,sDAAuD,IAC9DC,UAAU,YAAarH,GAE5BA,EAAmBsH,QAAU,CAAC,YAAa,0BAA2B,SAAU","file":"79.0f7567cb18c210d45806.bundle.js","sourcesContent":["import {getFileName} from \"./controllers\";\n\nangular\n .module('graphdb.framework.repositories.ontop-repo.directive', [])\n .directive('ontopRepo', ontopRepoDirective);\n\nontopRepoDirective.$inject = ['$uibModal', 'RepositoriesRestService', 'toastr', 'Upload'];\n\nfunction ontopRepoDirective($uibModal, RepositoriesRestService, toastr, Upload) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/ontop-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n $scope.selectedDriver = {\n driverType: \"generic\",\n driverName: \"Generic JDBC Driver\",\n jdbc: {\n hostName: \"\",\n port: \"\",\n databaseName: \"\",\n userName: \"\",\n password: \"\",\n driverClass: \"\",\n url: \"\"\n },\n urlTemplate: \"\",\n downloadDriverUrl: \"\"\n };\n $scope.ontopRepoFileNames = {};\n $scope.supportedDriversData = [];\n $scope.ontopRepoFileLabels =\n {propertiesFile: 'JDBC properties', obdaFile: 'OBDA or R2RML', owlFile: 'ontology file',\n constraintFile: 'constraint file', dbMetadataFile: 'DB metadata file'};\n $scope.ontopRepoFiles = Object.keys($scope.ontopRepoFileLabels);\n $scope.ontopRepoFiles.forEach(function(key) {\n if ($scope.repositoryInfo.params[key]) {\n $scope.ontopRepoFileNames[key] = getFileName($scope.repositoryInfo.params[key].value);\n }\n });\n $scope.supportedDriverLabels = {hostName: 'Hostname', port: \"Port\", databaseName: 'Database name',\n userName: 'Username', password: 'Password', driverClass: 'Driver class', url: 'URL'};\n $scope.propertiesFileParams = Object.keys($scope.supportedDriverLabels);\n $scope.classAvailable = false;\n $scope.genericDriverType = 'generic';\n $scope.propertiesFile = 'propertiesFile';\n\n const REQUIRED_ONTOP_REPO_PARAMS = [$scope.propertiesFile, 'obdaFile'];\n const REQUIRED_PROPERTIES_FIELD_PARAMS = ['hostName', 'databaseName', 'userName'];\n\n function getSupportedDriversData() {\n return RepositoriesRestService.getSupportedDriversData()\n .success(function (response) {\n $scope.supportedDriversData = response;\n }).error(function (response) {\n showErrorMsg('Error', response);\n });\n }\n\n $scope.loadDriverByClass = function (driverClass) {\n const foundDriver = $scope.supportedDriversData\n .find((driver) => driver.driverClass === driverClass);\n if (foundDriver) {\n $scope.copyDriverProperties(foundDriver);\n }\n return foundDriver;\n };\n\n $scope.selectDriverByType = function (driverType) {\n $scope.copyDriverProperties($scope.supportedDriversData\n .find((driver) => driver.driverType === driverType));\n // Call concatURL with proper labelName to apply changes to url field\n $scope.concatURL('hostName', $scope);\n };\n\n $scope.copyDriverProperties = function (driver) {\n $scope.selectedDriver.driverType = driver.driverType;\n $scope.selectedDriver.jdbc.driverClass = driver.driverClass;\n $scope.selectedDriver.jdbc.url = driver.urlTemplate;\n $scope.selectedDriver.urlTemplate = driver.urlTemplate;\n $scope.selectedDriver.downloadDriverUrl = driver.downloadDriverUrl;\n $scope.selectedDriver.portRequired = driver.portRequired;\n $scope.classAvailable = driver.classAvailable;\n };\n\n $scope.isReadOnly = function (labelName) {\n return labelName === 'driverClass' || labelName === 'url';\n }\n\n $scope.editFile = function(file) {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/templates/modal/editRepoFile.html',\n controller: 'EditRepositoryFileCtrl',\n resolve: {\n file: function () {\n return $scope.repositoryInfo.params[file] ? $scope.repositoryInfo.params[file].value : '';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n // send data to backend\n RepositoriesRestService.updateRepositoryFileContent(data.fileLocation, data.content).success(function(result) {\n $scope.ontopRepoFileNames[file] = getFileName(result.fileLocation);\n $scope.repositoryInfo.params[file].value = result.fileLocation;\n }).error(function (error) {\n showErrorMsg('Error', error);\n })\n });\n }\n\n $scope.uploadOntopRepoFile = function(files, param) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/uploadFile',\n data: {uploadFile: $scope.uploadFile}\n })\n .success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n } else {\n $scope.ontopRepoFileNames[param] = $scope.uploadFile.name;\n $scope.repositoryInfo.params[param].value = data.fileLocation;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n }\n\n $scope.concatURL = function(labelName) {\n if (labelName === 'hostName' || labelName === 'port' || labelName === 'databaseName') {\n let result = $scope.selectedDriver.urlTemplate;\n if ($scope.selectedDriver.jdbc.hostName) {\n if ($scope.selectedDriver.jdbc.port) {\n result = result.replace('{hostport}',\n `${$scope.selectedDriver.jdbc.hostName}:${$scope.selectedDriver.jdbc.port}`);\n } else {\n result = result.replace('{hostport}', $scope.selectedDriver.jdbc.hostName);\n }\n }\n\n if ($scope.selectedDriver.jdbc.databaseName) {\n result = result.replace('{database}', $scope.selectedDriver.jdbc.databaseName);\n }\n\n $scope.selectedDriver.jdbc.url = result;\n }\n }\n\n $scope.getInputType = function (labelName) {\n switch (labelName) {\n case 'password':\n return 'password';\n case 'port':\n return 'number';\n default:\n return 'text';\n }\n }\n\n $scope.checkForRequiredOntopFiles = function () {\n // Should guarantee that code will be executed in sequential manner,\n // because properties file is not created yet\n return updateProperties()\n .then(function () {\n const missingRequired = REQUIRED_ONTOP_REPO_PARAMS.filter(function (requiredFile) {\n return !$scope.repositoryInfo.params[requiredFile].value;\n });\n if (missingRequired.length > 0) {\n toastr.error('Missing required ontop repo file');\n return Promise.reject('Missing required ontop repo file');\n }\n return Promise.resolve();\n });\n }\n\n function loadPropertiesFile() {\n RepositoriesRestService.loadPropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value)\n .success(function (driverData) {\n const driver = $scope.loadDriverByClass(driverData.driverClass);\n // If driver class is not found means that the selected driver is a GENERIC ONE\n if (driver) {\n $scope.selectedDriver.jdbc.hostName = driverData.hostName;\n $scope.selectedDriver.jdbc.port = parseInt(driverData.port);\n $scope.selectedDriver.jdbc.databaseName = driverData.databaseName;\n $scope.selectedDriver.jdbc.userName = driverData.userName;\n $scope.selectedDriver.jdbc.password = driverData.password;\n $scope.selectedDriver.jdbc.url = driverData.url;\n }\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.validateOntopPropertiesConnection = function () {\n updateProperties()\n .then(function () {\n RepositoriesRestService.validateOntopPropertiesConnection($scope.repositoryInfo.params.propertiesFile)\n .success(function () {\n toastr.success('Connection is successful');\n }).error(function (data) {\n showErrorMsg('Failed to connect', data);\n });\n });\n }\n\n $scope.isOntopRepoFileUploaded = function() {\n return $scope.repositoryInfo.params.propertiesFile &&\n $scope.repositoryInfo.params.propertiesFile.value.length > 0\n };\n\n function missingRequiredField() {\n const missing = REQUIRED_PROPERTIES_FIELD_PARAMS\n .filter(function (requiredField) {\n return !$scope.selectedDriver.jdbc[requiredField]\n });\n if (missing.length > 0) {\n toastr.error('Missing required field');\n return true;\n }\n return false;\n }\n\n function updateProperties() {\n if ($scope.selectedDriver.driverType !== $scope.genericDriverType) {\n if (missingRequiredField()) {\n return Promise.reject('Missing required field');\n }\n return updatePropertiesFile();\n }\n return Promise.resolve();\n }\n\n function updatePropertiesFile() {\n $scope.uploadFileLoader = true;\n return RepositoriesRestService\n .updatePropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.selectedDriver.jdbc)\n .success(function (data) {\n $scope.ontopRepoFileNames[$scope.propertiesFile] = getFileName(data.fileLocation);\n $scope.repositoryInfo.params[$scope.propertiesFile].value = data.fileLocation;\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.isRequiredOntopRepoFile = function(file) {\n return REQUIRED_ONTOP_REPO_PARAMS.indexOf(file) > -1;\n };\n\n $scope.isRequiredField = function (field) {\n return REQUIRED_PROPERTIES_FIELD_PARAMS.indexOf(field) > -1\n || field === 'port' && $scope.selectedDriver.portRequired;\n };\n\n $scope.getFieldTooltip = function (field) {\n if (field === 'port' && $scope.selectedDriver.portRequired) {\n field = 'portIfRequired';\n }\n return $scope.repoTooltips.ontop[field];\n };\n\n $scope.editOntopRepo = function () {\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.editRepository();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n }\n\n $scope.createOntopRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error('Repository ID cannot be empty');\n return;\n }\n\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.createRepo();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n };\n\n $scope.goBackToPrevious = function () {\n $scope.goBackToPreviousLocation();\n }\n\n function showErrorMsg (title, data) {\n const msg = getError(data);\n toastr.error(msg, title);\n }\n\n getSupportedDriversData()\n .then(function () {\n if ($scope.editRepoPage) {\n loadPropertiesFile();\n }\n });\n }\n}\n"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
1
  (window.webpackJsonp=window.webpackJsonp||[]).push([[9,103],{211:function(e,t,n){var r,o=o||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o=e.webkitRequestFileSystem,i=e.requestFileSystem||o||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},s=0,c=function(t){var r=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?r():setTimeout(r,500)},l=function(e,t,n){for(var r=(t=[].concat(t)).length;r--;){var o=e["on"+t[r]];if("function"==typeof o)try{o.call(e,n||e)}catch(e){a(e)}}},u=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},p=function(t,a){t=u(t);var p,d,f,m=this,g=t.type,h=!1,x=function(){l(m,"writestart progress write writeend".split(" "))},w=function(){(!h&&p||(p=n().createObjectURL(t)),d)?d.location.href=p:null==e.open(p,"_blank")&&"undefined"!=typeof safari&&(e.location.href=p);m.readyState=m.DONE,x(),c(p)},y=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},R={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),r)return p=n().createObjectURL(t),r.href=p,r.download=a,void setTimeout((function(){var e,t;e=r,t=new MouseEvent("click"),e.dispatchEvent(t),x(),c(p),m.readyState=m.DONE}));e.chrome&&g&&"application/octet-stream"!==g&&(f=t.slice||t.webkitSlice,t=f.call(t,0,t.size,"application/octet-stream"),h=!0),o&&"download"!==a&&(a+=".download"),("application/octet-stream"===g||o)&&(d=e),i?(s+=t.size,i(e.TEMPORARY,s,y((function(e){e.root.getDirectory("saved",R,y((function(e){var n=function(){e.getFile(a,R,y((function(e){e.createWriter(y((function(n){n.onwriteend=function(t){d.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&w()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),w)})),w)};e.getFile(a,{create:!1},y((function(e){e.remove(),n()})),y((function(e){e.code===e.NOT_FOUND_ERR?n():w()})))})),w)})),w)):w()},d=p.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(u(e),t)}:(d.abort=function(){this.readyState=this.DONE,l(this,"abort")},d.readyState=d.INIT=0,d.WRITING=1,d.DONE=2,d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null,function(e,t){return new p(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
- /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=o:null!==n(212)&&null!=n(213)&&(void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r))},212:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},213:function(e,t){(function(t){e.exports=t}).call(this,{})},36:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},83:function(e,t,n){"use strict";n.r(t);n(36);var r=n(208),o=n.n(r),i=n(211);function a(e,t,n,r,a,s,c,l,u,p,d){const f=d.getPrincipal();let m;e.loading=!1,e.getActiveRepository=function(){return s.getActiveRepository()},e.isTripleResource=function(){return!!e.tripleParam},e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getRdfStarLocalNames=function(e){let t=e.slice();return e.replace(/[<>]+/g,"").split(" ").forEach(e=>{t=t.replace(e,c.getLocalName(e))}),t},e.role=n.search().role?n.search().role:"subject",e.inferenceNamed="explicit",e.inferences=[{id:"all",title:"Explicit and Implicit"},{id:"explicit",title:"Explicit only"},{id:"implicit",title:"Implicit only"}],e.context="",e.getLocalName=function(e){return c.getLocalName(e)},e.blanks=!0,e.inference=f.appSettings.DEFAULT_INFERENCE?"all":"explicit",e.sameAs=f.appSettings.DEFAULT_INFERENCE&&f.appSettings.DEFAULT_SAMEAS,e.formats=p,window.editor={},window.editor.getQueryType=function(){return"RESOURCE"},e.$watch((function(){return s.getActiveRepository()}),(function(){e.getActiveRepository()&&(e.usedPrefixes?e.loadResource():u.getNamespaces(e.getActiveRepository()).success((function(t){e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),m=o()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0}),e.loadResource()})).error((function(e){r.error("Cannot get namespaces for repository. View will not work properly; "+getError(e))})))})),e.loadResource=function(){a.prefix&&a.localName&&e.usedPrefixes[a.prefix]?e.uriParam=e.usedPrefixes[a.prefix]+a.localName:n.search().uri?e.uriParam=n.search().uri+(n.hash()?"#"+n.hash():""):n.search().triple?e.tripleParam=n.search().triple+(n.hash()?"#"+n.hash():""):e.uriParam=n.absUrl(),null!=a.context&&(e.context=a.context),e.uriParam=e.uriParam&&e.uriParam.replace(/<|>/g,""),t({url:"rest/explore/details",method:"GET",params:{uri:e.uriParam,triple:e.tripleParam,context:e.context},headers:{Accept:"application/json"}}).success((function(t){e.details=t,e.context=e.details.context,"object"!==e.details.uri&&(e.details.encodeURI=encodeURIComponent(e.details.uri))})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),e.exploreResource()},e.isContextAvailable=function(){return null!==e.context&&"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph"===e.context},e.goToGraphsViz=function(){n.path("graphs-visualizations").search("uri",e.uriParam)};const g=function(t){const n=angular.element(document.getElementById("yasr-inner")),r=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,n.addClass("opacity-hide"),r.removeClass("opacity-hide")):(e.loading=!1,n.removeClass("opacity-hide"),r.addClass("opacity-hide"))};e.exploreResource=function(){g(!0),null!=a.context&&(e.context=a.context);$.ajax({method:"GET",url:"rest/explore/graph",data:{uri:e.uriParam,triple:e.tripleParam,inference:e.inference,role:e.role,bnodes:e.blanks,sameAs:e.sameAs,context:e.context},headers:{Accept:"application/x-graphdb-table-results+json"}}).done((function(e,t,n){g(!1),m.setResponse(n,t)})).fail((function(e){r.error("Could not get resource; "+getError(e)),g(!1)}))},e.downloadExport=function(n){let o,a;e.uriParam?(o="uri=",a=encodeURIComponent(e.uriParam)):(o="triple=",a=encodeURIComponent(e.tripleParam)),t({method:"GET",url:"rest/explore/graph?"+o+a+"&role="+e.role+"&inference="+e.inference+"&bnodes="+e.blanks+"&sameAs="+e.sameAs+(e.context?"&context="+encodeURIComponent(e.context):""),headers:{Accept:n.type}}).success((function(e){let t=e;n.type.indexOf("json")>-1&&(t=JSON.stringify(t));const r=navigator.userAgent.toLowerCase();if(-1!==r.indexOf("safari")&&-1===r.indexOf("chrome"))window.open('data:attachment/csv;filename="statements.'+n.extension+'",'+encodeURIComponent(t),"statements."+n.extension);else{const e=new Blob([t],{type:n.type});Object(i.saveAs)(e,"statements"+n.extension)}})).error((function(e){const t=getError(e);r.error(t,"Error")}))},e.changeRole=function(t){e.role=t,e.exploreResource()},e.changeInference=function(t){e.inference=t,e.exploreResource()},e.copyToClipboardResult=function(e){l.openCopyToClipboardModal(e)}}function s(e,t,n,r,o,i,a,s,c,l,u){function p(){s.checkAutocompleteStatus().success((function(t){t||a.warning("",'<div class="autocomplete-toast"><a href="autocomplete">Autocomplete is OFF<br>Go to Setup -> Autocomplete</a></div>',{allowHtml:!0}),e.autocompleteEnabled=t})).error((function(){a.error("Error attempting to check autocomplete capability!")}))}function d(){u.getNamespaces(r.getActiveRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);a.error(n,"Error"),e.loader=!1}))}function f(e){const t=e.indexOf("<")>=0&&e.lastIndexOf(">")===e.length-1,n=-1===e.indexOf("<")&&-1===e.lastIndexOf(">"),r=/^<?[http|urn].*>?$/.test(e)&&(t||n);let o=!1;if(r)if(e.indexOf("http")>=0){const t=e.indexOf("//");o=t>4&&e.substring(t+2).length>0}else e.indexOf("urn")>=0&&(o=e.substring(4).length>0);return r&&o}let m,g;function h(t){function r(t){i((function(){e.form&&(e.form.$dirty=t)}))}t||(t=document.getElementById("resources_finder_value").value),t&&f(t)?(r(!1),n.path("resource").search("uri",t)):(r(!0),t&&a.error("Invalid input!"))}e.submit=h,e.getAutocompleteSuggestions=function(t){if(!/<|>/.test(t)&&":"===t.slice(-1)){const n=c.getNamespaceUriForPrefix(e.namespaces,t.slice(0,-1));g=n!==g?n:g,g&&$("#resources_finder_value").val(g)}let n;if(e.autocompleteEnabled){const e=t.replace(g,g+";");n=s.getAutocompleteSuggestions(e)}else n=o.when(e.autocompleteEnabled);return n},e.inputChangedFn=function(){m=document.getElementById("resources_finder_value").value,e.form.$dirty=!(m&&f(m))},e.selectedUriCallback=function(t){e.selectedUri={name:t.title},h(e.selectedUri.name)},e.selectedUri={name:""},e.autocompleteEnabled=!1,angular.isDefined(l.search)&&i((function(){$("#resources_finder_value").val(l.search),$(".search-button").click()}),500),e.getActiveRepository()&&(p(),d()),e.$on("repositoryIsSet",(function(){p(),d()}))}function c(e,t,n,r,o,i,a,s,c,l){e.uriParam=n.search().uri,e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newResource=!1,e.datatypeOptions=c.getDatatypeOptions(),e.activeRepository=function(){return o.getActiveRepository()},e.getClassInstancesDetails=function(){l.getNamespaces(e.activeRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);r.error(n,"Error"),e.loader=!1})),s.getDetails(e.uriParam).success((function(t){e.details=t,e.details.encodeURI=encodeURIComponent(e.details.uri)})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),s.getGraph(e.uriParam).then((function(t){const n=c.buildStatements(t,e.uriParam);e.statements=n,e.newResource=!n.length}))},e.addStatement=function(){e.newRowPredicate.$setSubmitted(),e.newRowObject.$setSubmitted(),e.newRowContext.$setSubmitted(),e.newRowPredicate.$valid&&e.newRowObject.$valid&&e.newRowContext.$valid&&(e.statements.push(angular.copy(e.newRow)),e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newRowPredicate.$setPristine(),e.newRowPredicate.$setUntouched(),e.newRowObject.$setPristine(),e.newRowObject.$setUntouched(),e.newRowContext.$setPristine(),e.newRowContext.$setUntouched())},e.removeStatement=function(t){e.statements.splice(t,1)},e.getLocalName=function(e){return s.getLocalName(e)},e.checkValid=function(e){if(!angular.isUndefined(e))return!0;return"Please enter a valid value."},e.validEditRow=function(){return e.rowform.$valid},e.viewTrig=function(){i.open({templateUrl:"js/angular/explore/templates/viewTrig.html",controller:"ViewTrigCtrl",size:"lg",resolve:{data:function(){return c.transformToTrig(e.statements)}}})},e.save=function(){const o=e.newResource?"POST":"PUT";t({method:o,url:"rest/resource?uri="+encodeURIComponent(e.uriParam),headers:{"Content-Type":"application/x-trig"},data:c.transformToTrig(e.statements)}).success((function(){r.success("Resource saved.");const t=a((function(){n.path("resource").search("uri",e.uriParam)}),500);e.$on("$destroy",(function(){a.cancel(t)}))})).error((function(e){r.error(getError(e))}))},e.$watch((function(){return o.getActiveRepository()}),(function(){e.activeRepository()&&e.getClassInstancesDetails()})),e.validateUri=function(t){let n=!0;const r=t||"";if(-1===r.indexOf(":"))n=!1;else{const t=r.substring(0,r.indexOf(":"));if(""===s.getNamespaceUriForPrefix(e.namespaces,t)){!1===/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(r)&&(n=!1);const e=r.match(/\//g);(void 0===e||e.length<3)&&(n=!1)}else{r.substring(r.indexOf(":")+1).trim().length<1&&(n=!1)}}return n}}function l(e,t,n){e.trig=n,e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.explore.controllers",["ngCookies","ngRoute","ui.bootstrap","toastr","graphdb.framework.core","graphdb.framework.core.services.repositories","graphdb.framework.explore.services","graphdb.workbench.utils.filetypes"]).controller("FindResourceCtrl",s).controller("ExploreCtrl",a).controller("EditResourceCtrl",c).controller("ViewTrigCtrl",l),a.$inject=["$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","$jwtAuth"],s.$inject=["$scope","$http","$location","$repositories","$q","$timeout","toastr","AutocompleteRestService","ClassInstanceDetailsService","$routeParams","RDF4JRepositoriesRestService"],c.$inject=["$scope","$http","$location","toastr","$repositories","$modal","$timeout","ClassInstanceDetailsService","StatementsService","RDF4JRepositoriesRestService"],l.$inject=["$scope","$modalInstance","data"]}}]);
3
- //# sourceMappingURL=9.c9fc88a79b7990e29e04.bundle.js.map
2
+ /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=o:null!==n(212)&&null!=n(213)&&(void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r))},212:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},213:function(e,t){(function(t){e.exports=t}).call(this,{})},36:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},83:function(e,t,n){"use strict";n.r(t);n(36);var r=n(208),o=n.n(r),i=n(211);function a(e,t,n,r,a,s,c,l,u,p,d){const f=d.getPrincipal();let m;e.loading=!1,e.getActiveRepository=function(){return s.getActiveRepository()},e.isTripleResource=function(){return!!e.tripleParam},e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getRdfStarLocalNames=function(e){let t=e.slice();return e.replace(/[<>]+/g,"").split(" ").forEach(e=>{t=t.replace(e,c.getLocalName(e))}),t},e.role=n.search().role?n.search().role:"subject",e.inferenceNamed="explicit",e.inferences=[{id:"all",title:"Explicit and Implicit"},{id:"explicit",title:"Explicit only"},{id:"implicit",title:"Implicit only"}],e.context="",e.getLocalName=function(e){return c.getLocalName(e)},e.blanks=!0,e.inference=f.appSettings.DEFAULT_INFERENCE?"all":"explicit",e.sameAs=f.appSettings.DEFAULT_INFERENCE&&f.appSettings.DEFAULT_SAMEAS,e.formats=p,window.editor={},window.editor.getQueryType=function(){return"RESOURCE"},e.$watch((function(){return s.getActiveRepository()}),(function(){e.getActiveRepository()&&(e.usedPrefixes?e.loadResource():u.getNamespaces(e.getActiveRepository()).success((function(t){e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),m=o()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0}),e.loadResource()})).error((function(e){r.error("Cannot get namespaces for repository. View will not work properly; "+getError(e))})))})),e.loadResource=function(){a.prefix&&a.localName&&e.usedPrefixes[a.prefix]?e.uriParam=e.usedPrefixes[a.prefix]+a.localName:n.search().uri?e.uriParam=n.search().uri+(n.hash()?"#"+n.hash():""):n.search().triple?e.tripleParam=n.search().triple+(n.hash()?"#"+n.hash():""):e.uriParam=n.absUrl(),null!=a.context&&(e.context=a.context),e.uriParam=e.uriParam&&e.uriParam.replace(/<|>/g,""),t({url:"rest/explore/details",method:"GET",params:{uri:e.uriParam,triple:e.tripleParam,context:e.context},headers:{Accept:"application/json"}}).success((function(t){e.details=t,e.context=e.details.context,"object"!==e.details.uri&&(e.details.encodeURI=encodeURIComponent(e.details.uri))})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),e.exploreResource()},e.isContextAvailable=function(){return null!==e.context&&"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph"===e.context},e.goToGraphsViz=function(){n.path("graphs-visualizations").search("uri",e.uriParam)};const g=function(t){const n=angular.element(document.getElementById("yasr-inner")),r=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,n.addClass("opacity-hide"),r.removeClass("opacity-hide")):(e.loading=!1,n.removeClass("opacity-hide"),r.addClass("opacity-hide"))};e.exploreResource=function(){g(!0),null!=a.context&&(e.context=a.context);$.ajax({method:"GET",url:"rest/explore/graph",data:{uri:e.uriParam,triple:e.tripleParam,inference:e.inference,role:e.role,bnodes:e.blanks,sameAs:e.sameAs,context:e.context},headers:{Accept:"application/x-graphdb-table-results+json"}}).done((function(e,t,n){g(!1),m.setResponse(n,t)})).fail((function(e){r.error("Could not get resource; "+getError(e)),g(!1)}))},e.downloadExport=function(n){let o,a;e.uriParam?(o="uri=",a=encodeURIComponent(e.uriParam)):(o="triple=",a=encodeURIComponent(e.tripleParam)),t({method:"GET",url:"rest/explore/graph?"+o+a+"&role="+e.role+"&inference="+e.inference+"&bnodes="+e.blanks+"&sameAs="+e.sameAs+(e.context?"&context="+encodeURIComponent(e.context):""),headers:{Accept:n.type}}).success((function(e){let t=e;n.type.indexOf("json")>-1&&(t=JSON.stringify(t));const r=navigator.userAgent.toLowerCase();if(-1!==r.indexOf("safari")&&-1===r.indexOf("chrome"))window.open('data:attachment/csv;filename="statements.'+n.extension+'",'+encodeURIComponent(t),"statements."+n.extension);else{const e=new Blob([t],{type:n.type});Object(i.saveAs)(e,"statements"+n.extension)}})).error((function(e){const t=getError(e);r.error(t,"Error")}))},e.changeRole=function(t){e.role=t,e.exploreResource()},e.changeInference=function(t){e.inference=t,e.exploreResource()},e.copyToClipboardResult=function(e){l.openCopyToClipboardModal(e)}}function s(e,t,n,r,o,i,a,s,c,l,u){function p(){s.checkAutocompleteStatus().success((function(t){t||a.warning("",'<div class="autocomplete-toast"><a href="autocomplete">Autocomplete is OFF<br>Go to Setup -> Autocomplete</a></div>',{allowHtml:!0}),e.autocompleteEnabled=t})).error((function(){a.error("Error attempting to check autocomplete capability!")}))}function d(){u.getNamespaces(r.getActiveRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);a.error(n,"Error"),e.loader=!1}))}function f(e){const t=e.indexOf("<")>=0&&e.lastIndexOf(">")===e.length-1,n=-1===e.indexOf("<")&&-1===e.lastIndexOf(">"),r=/^<?[http|urn].*>?$/.test(e)&&(t||n);let o=!1;if(r)if(e.indexOf("http")>=0){const t=e.indexOf("//");o=t>4&&e.substring(t+2).length>0}else e.indexOf("urn")>=0&&(o=e.substring(4).length>0);return r&&o}let m,g;function h(t){function r(t){i((function(){e.form&&(e.form.$dirty=t)}))}t||(t=document.getElementById("resources_finder_value").value),t&&f(t)?(r(!1),n.path("resource").search("uri",t)):(r(!0),t&&a.error("Invalid input!"))}e.submit=h,e.getAutocompleteSuggestions=function(t){if(!/<|>/.test(t)&&":"===t.slice(-1)){const n=c.getNamespaceUriForPrefix(e.namespaces,t.slice(0,-1));g=n!==g?n:g,g&&$("#resources_finder_value").val(g)}let n;if(e.autocompleteEnabled){const e=t.replace(g,g+";");n=s.getAutocompleteSuggestions(e)}else n=o.when(e.autocompleteEnabled);return n},e.inputChangedFn=function(){m=document.getElementById("resources_finder_value").value,e.form.$dirty=!(m&&f(m))},e.selectedUriCallback=function(t){e.selectedUri={name:t.title},h(e.selectedUri.name)},e.selectedUri={name:""},e.autocompleteEnabled=!1,angular.isDefined(l.search)&&i((function(){$("#resources_finder_value").val(l.search),$(".search-button").click()}),500),e.getActiveRepository()&&(p(),d()),e.$on("repositoryIsSet",(function(){p(),d()}))}function c(e,t,n,r,o,i,a,s,c,l){e.uriParam=n.search().uri,e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newResource=!1,e.datatypeOptions=c.getDatatypeOptions(),e.activeRepository=function(){return o.getActiveRepository()},e.getClassInstancesDetails=function(){l.getNamespaces(e.activeRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);r.error(n,"Error"),e.loader=!1})),s.getDetails(e.uriParam).success((function(t){e.details=t,e.details.encodeURI=encodeURIComponent(e.details.uri)})).error((function(e){r.error("Cannot get resource details; "+getError(e))})),s.getGraph(e.uriParam).then((function(t){const n=c.buildStatements(t,e.uriParam);e.statements=n,e.newResource=!n.length}))},e.addStatement=function(){e.newRowPredicate.$setSubmitted(),e.newRowObject.$setSubmitted(),e.newRowContext.$setSubmitted(),e.newRowPredicate.$valid&&e.newRowObject.$valid&&e.newRowContext.$valid&&(e.statements.push(angular.copy(e.newRow)),e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newRowPredicate.$setPristine(),e.newRowPredicate.$setUntouched(),e.newRowObject.$setPristine(),e.newRowObject.$setUntouched(),e.newRowContext.$setPristine(),e.newRowContext.$setUntouched())},e.removeStatement=function(t){e.statements.splice(t,1)},e.getLocalName=function(e){return s.getLocalName(e)},e.checkValid=function(e){if(!angular.isUndefined(e))return!0;return"Please enter a valid value."},e.validEditRow=function(){return e.rowform.$valid},e.viewTrig=function(){i.open({templateUrl:"js/angular/explore/templates/viewTrig.html",controller:"ViewTrigCtrl",size:"lg",resolve:{data:function(){return c.transformToTrig(e.statements)}}})},e.save=function(){const o=e.newResource?"POST":"PUT";t({method:o,url:"rest/resource?uri="+encodeURIComponent(e.uriParam),headers:{"Content-Type":"application/x-trig"},data:c.transformToTrig(e.statements)}).success((function(){r.success("Resource saved.");const t=a((function(){n.path("resource").search("uri",e.uriParam)}),500);e.$on("$destroy",(function(){a.cancel(t)}))})).error((function(e){r.error(getError(e))}))},e.$watch((function(){return o.getActiveRepository()}),(function(){e.activeRepository()&&e.getClassInstancesDetails()})),e.validateUri=function(t){let n=!0;const r=t||"";if(-1===r.indexOf(":"))n=!1;else{const t=r.substring(0,r.indexOf(":"));if(""===s.getNamespaceUriForPrefix(e.namespaces,t)){!1===/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(r)&&(n=!1);const e=r.match(/\//g);(void 0===e||e.length<3)&&(n=!1)}else{r.substring(r.indexOf(":")+1).trim().length<1&&(n=!1)}}return n}}function l(e,t,n){e.trig=n,e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.explore.controllers",["ngCookies","ngRoute","ui.bootstrap","toastr","graphdb.framework.core","graphdb.framework.core.services.repositories","graphdb.framework.explore.services","graphdb.workbench.utils.filetypes"]).controller("FindResourceCtrl",s).controller("ExploreCtrl",a).controller("EditResourceCtrl",c).controller("ViewTrigCtrl",l),a.$inject=["$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","$jwtAuth"],s.$inject=["$scope","$http","$location","$repositories","$q","$timeout","toastr","AutocompleteRestService","ClassInstanceDetailsService","$routeParams","RDF4JRepositoriesRestService"],c.$inject=["$scope","$http","$location","toastr","$repositories","$uibModal","$timeout","ClassInstanceDetailsService","StatementsService","RDF4JRepositoriesRestService"],l.$inject=["$scope","$uibModalInstance","data"]}}]);
3
+ //# sourceMappingURL=9.c4b55fc1e3fc858be626.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/lib/FileSaver-patch.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/angular/utils/file-types.js","webpack:///./src/js/angular/explore/controllers.js"],"names":["saveAs","view","navigator","test","userAgent","doc","document","get_URL","URL","webkitURL","save_link","createElementNS","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","setTimeout","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","event","i","concat","length","listener","call","auto_bom","blob","type","Blob","FileSaver","name","object_url","target_view","slice","this","blob_changed","dispatch_all","split","fs_error","createObjectURL","location","href","undefined","open","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","download","node","MouseEvent","dispatchEvent","webkitSlice","size","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","error","code","ABORT_ERR","forEach","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","prototype","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","self","window","content","module","exports","Error","__webpack_amd_options__","angular","value","extension","ExploreCtrl","$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","$jwtAuth","principal","getPrincipal","yasr","loading","getActiveRepository","isTripleResource","tripleParam","encodeURIComponent","param","getRdfStarLocalNames","triple","localNames","replace","uri","getLocalName","role","search","inferenceNamed","inferences","id","title","context","blanks","inference","appSettings","sameAs","formats","editor","getQueryType","$watch","usedPrefixes","loadResource","getNamespaces","success","data","results","bindings","e","prefix","namespace","getElementById","getUsedPrefixes","persistency","hideHeader","getError","localName","uriParam","hash","absUrl","url","method","params","headers","details","encodeURI","exploreResource","isContextAvailable","goToGraphsViz","path","toggleOntoLoader","showLoader","yasrInnerContainer","element","resultsLoader","addClass","removeClass","$","ajax","bnodes","Accept","done","textStatus","jqXhr","setResponse","fail","downloadExport","format","encodedURI","response","indexOf","JSON","stringify","ua","toLowerCase","msg","changeRole","roleVar","changeInference","copyToClipboardResult","openCopyToClipboardModal","FindResourceCtrl","$q","$timeout","AutocompleteRestService","checkAutocompleteStatus","warning","allowHtml","autocompleteEnabled","getAllNamespacesForActiveRepository","namespaces","map","loader","validateRdfUri","hasAngleBrackets","lastIndexOf","noAngleBrackets","validProtocol","validPath","schemaSlashesIdx","substring","expandedUri","submit","setFormInvalid","isDirty","form","$dirty","getAutocompleteSuggestions","str","newExpandedUri","getNamespaceUriForPrefix","val","promise","query","when","inputChangedFn","selectedUriCallback","selected","selectedUri","isDefined","click","$on","EditResourceCtrl","$uibModal","StatementsService","newRow","subject","object","datatype","newResource","datatypeOptions","getDatatypeOptions","activeRepository","getClassInstancesDetails","getDetails","getGraph","then","res","statements","buildStatements","addStatement","newRowPredicate","$setSubmitted","newRowObject","newRowContext","$valid","push","copy","$setPristine","$setUntouched","removeStatement","idx","splice","checkValid","isUndefined","validEditRow","rowform","viewTrig","templateUrl","controller","resolve","transformToTrig","timer","cancel","validateUri","check","text","count","match","trim","ViewTrigCtrl","$uibModalInstance","trig","dismiss","$inject"],"mappings":"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","file":"9.c4b55fc1e3fc858be626.bundle.js","sourcesContent":["/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 2015-05-07.2\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name) {\n\t\t\tblob = auto_bom(blob);\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t//window.open('data:attachment/csv;charset=utf-8,' + object_url);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name) {\n\t\t\treturn new FileSaver(blob, name);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name) {\n\t\t\treturn navigator.msSaveOrOpenBlob(auto_bom(blob), name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","angular.module('graphdb.workbench.utils.filetypes', [])\n .value('FileTypes', [\n {name: 'JSON', type: 'application/rdf+json', extension: '.json'},\n {name: 'JSON-LD', type: 'application/ld+json', extension: '.jsonld'},\n {name: 'RDF-XML', type: 'application/rdf+xml', extension: '.rdf'},\n {name: 'N3', type: 'text/rdf+n3', extension: '.n3'},\n {name: 'N-Triples', type: 'text/plain', extension: '.nt'},\n {name: 'N-Quads', type: 'text/x-nquads', extension: '.nq'},\n {name: 'Turtle', type: 'text/turtle', extension: '.ttl'},\n {name: 'Turtle*', type: 'application/x-turtlestar', extension: '.ttls'},\n {name: 'TriX', type: 'application/trix', extension: '.trix'},\n {name: 'TriG', type: 'application/x-trig', extension: '.trig'},\n {name: 'TriG*', type: 'application/x-trigstar', extension: '.trigs'},\n {name: 'Binary RDF', type: 'application/x-binary-rdf', extension: '.brf'}\n ]);\n","import 'angular/utils/file-types';\nimport YASR from 'lib/yasr.bundled';\nimport {saveAs} from 'lib/FileSaver-patch';\n\nconst modules = [\n 'ngCookies',\n 'ngRoute',\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.explore.services',\n 'graphdb.workbench.utils.filetypes'\n];\n\nangular\n .module('graphdb.framework.explore.controllers', modules)\n .controller('FindResourceCtrl', FindResourceCtrl)\n .controller('ExploreCtrl', ExploreCtrl)\n .controller('EditResourceCtrl', EditResourceCtrl)\n .controller('ViewTrigCtrl', ViewTrigCtrl);\n\nExploreCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$routeParams', '$repositories', 'ClassInstanceDetailsService', 'ModalService', 'RDF4JRepositoriesRestService', 'FileTypes', '$jwtAuth'];\n\nfunction ExploreCtrl($scope, $http, $location, toastr, $routeParams, $repositories, ClassInstanceDetailsService, ModalService, RDF4JRepositoriesRestService, FileTypes, $jwtAuth) {\n\n // We need to get sameAs and inference for the current user\n const principal = $jwtAuth.getPrincipal();\n $scope.loading = false;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.isTripleResource = function () {\n return !!$scope.tripleParam;\n };\n\n // TODO move this to core\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n $scope.getRdfStarLocalNames = function(triple) {\n let localNames = triple.slice();\n const trimmed = triple.replace(/[<>]+/g, '');\n trimmed.split(' ').forEach(uri => {\n localNames = localNames.replace(uri, ClassInstanceDetailsService.getLocalName(uri));\n });\n return localNames;\n };\n\n // Defaults\n $scope.role = $location.search().role ? $location.search().role : 'subject';\n // Fixed inference when we're showing the context tab and a named graph\n $scope.inferenceNamed = 'explicit';\n $scope.inferences = [\n {id: 'all', title: 'Explicit and Implicit'},\n {id: 'explicit', title: 'Explicit only'},\n {id: 'implicit', title: 'Implicit only'}\n ];\n $scope.context = '';\n\n $scope.getLocalName = function (uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n };\n\n $scope.blanks = true;\n\n // Get the predefined settings for sameAs and inference per user\n $scope.inference = principal.appSettings['DEFAULT_INFERENCE'] ? 'all' : 'explicit';\n $scope.sameAs = principal.appSettings['DEFAULT_INFERENCE'] && principal.appSettings['DEFAULT_SAMEAS'];\n\n $scope.formats = FileTypes;\n\n let yasr;\n\n window.editor = {};\n window.editor.getQueryType = function () {\n return 'RESOURCE';\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.getActiveRepository()) {\n if ($scope.usedPrefixes) {\n $scope.loadResource();\n } else {\n RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true\n });\n $scope.loadResource();\n }).error(function (data) {\n toastr.error('Cannot get namespaces for repository. View will not work properly; ' + getError(data));\n });\n }\n }\n });\n\n $scope.loadResource = function () {\n if ($routeParams.prefix && $routeParams.localName && $scope.usedPrefixes[$routeParams.prefix]) {\n // /resource/PREFIX/LOCAL -> URI = expanded PREFIX + LOCAL\n $scope.uriParam = $scope.usedPrefixes[$routeParams.prefix] + $routeParams.localName;\n } else if ($location.search().uri) {\n // uri parameter -> URI\n $scope.uriParam = $location.search().uri + ($location.hash() ? '#' + $location.hash() : '');\n } else if ($location.search().triple) {\n // uri parameter -> URI\n $scope.tripleParam = $location.search().triple + ($location.hash() ? '#' + $location.hash() : '');\n } else {\n // absolute URI -> URI\n $scope.uriParam = $location.absUrl();\n }\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n // remove angle brackets which were allowed when filling out the search input field\n // but are forbidden when passing the uri as a query parameter\n $scope.uriParam = $scope.uriParam && $scope.uriParam.replace(/<|>/g, \"\");\n\n // Get resource details\n $http({\n url: 'rest/explore/details',\n method: 'GET',\n params: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n context: $scope.context\n },\n headers: {\n 'Accept': 'application/json'\n }\n }).success(function (data) {\n $scope.details = data;\n $scope.context = $scope.details.context;\n if ($scope.details.uri !== 'object') {\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }\n }).error(function (data) {\n toastr.error('Cannot get resource details; ' + getError(data));\n });\n\n $scope.exploreResource();\n };\n\n $scope.isContextAvailable = function () {\n return $scope.context !== null && $scope.context === \"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph\";\n };\n\n $scope.goToGraphsViz = function () {\n $location.path('graphs-visualizations').search('uri', $scope.uriParam);\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n const opacityHideClass = 'opacity-hide';\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass(opacityHideClass);\n resultsLoader.removeClass(opacityHideClass);\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass(opacityHideClass);\n resultsLoader.addClass(opacityHideClass);\n }\n };\n\n // Get resource table\n $scope.exploreResource = function () {\n toggleOntoLoader(true);\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n const headers = {Accept: 'application/x-graphdb-table-results+json'};\n $.ajax({\n method: 'GET',\n url: 'rest/explore/graph',\n data: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n inference: $scope.inference,\n role: $scope.role,\n bnodes: $scope.blanks,\n sameAs: $scope.sameAs,\n context: $scope.context\n },\n headers: headers\n }).done(function (data, textStatus, jqXhr) {\n toggleOntoLoader(false);\n // Pass the xhr argument first as the yasr expects it that way. See https://ontotext.atlassian.net/browse/GDB-3939\n yasr.setResponse(jqXhr, textStatus);\n }).fail(function (data) {\n toastr.error('Could not get resource; ' + getError(data));\n toggleOntoLoader(false);\n });\n };\n\n $scope.downloadExport = function (format) {\n let param;\n let encodedURI;\n if ($scope.uriParam) {\n param = 'uri=';\n encodedURI = encodeURIComponent($scope.uriParam);\n } else {\n param = 'triple=';\n encodedURI = encodeURIComponent($scope.tripleParam);\n }\n\n $http({\n method: 'GET',\n url: 'rest/explore/graph?' + param + encodedURI +\n \"&role=\" + $scope.role +\n \"&inference=\" + $scope.inference +\n \"&bnodes=\" + $scope.blanks +\n \"&sameAs=\" + $scope.sameAs +\n ($scope.context ? \"&context=\" + encodeURIComponent($scope.context) : \"\"),\n headers: {\n 'Accept': format.type\n }\n }).success(function (response) {\n let data = response;\n if (format.type.indexOf('json') > -1) {\n data = JSON.stringify(data);\n }\n // TODO: Use bowser library to get the browser type\n const ua = navigator.userAgent.toLowerCase();\n if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) {\n window.open('data:attachment/csv;filename=\"statements.' + format.extension + '\",' + encodeURIComponent(data), 'statements.' + format.extension);\n } else {\n const file = new Blob([data], {type: format.type});\n saveAs(file, 'statements' + format.extension);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.changeRole = function (roleVar) {\n $scope.role = roleVar;\n $scope.exploreResource();\n };\n\n $scope.changeInference = function (inference) {\n $scope.inference = inference;\n $scope.exploreResource();\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n}\n\nFindResourceCtrl.$inject = ['$scope', '$http', '$location', '$repositories', '$q', '$timeout', 'toastr', 'AutocompleteRestService', 'ClassInstanceDetailsService', '$routeParams', 'RDF4JRepositoriesRestService'];\n\nfunction FindResourceCtrl($scope, $http, $location, $repositories, $q, $timeout, toastr, AutocompleteRestService, ClassInstanceDetailsService, $routeParams, RDF4JRepositoriesRestService) {\n $scope.submit = submit;\n $scope.getAutocompleteSuggestions = getAutocompleteSuggestions;\n $scope.inputChangedFn = inputChangedFn;\n $scope.selectedUriCallback = selectedUriCallback;\n\n $scope.selectedUri = {name: \"\"};\n\n $scope.autocompleteEnabled = false;\n\n if (angular.isDefined($routeParams.search)) {\n $timeout(function () {\n $('#resources_finder_value').val($routeParams.search);\n $('.search-button').click();\n }, 500);\n }\n\n function checkAutocompleteStatus() {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (response) {\n if (!response) {\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 $scope.autocompleteEnabled = response;\n })\n .error(function () {\n toastr.error(\"Error attempting to check autocomplete capability!\");\n });\n }\n\n function getAllNamespacesForActiveRepository() {\n RDF4JRepositoriesRestService.getNamespaces($repositories.getActiveRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n }\n\n function validateRdfUri(value) {\n // has a pair of angle brackets and the closing one is the last char of the string\n const hasAngleBrackets = value.indexOf(\"<\") >= 0 && value.lastIndexOf(\">\") === value.length - 1;\n\n // does not have a pair of angle bracket - if only one of the is available that is incorrect\n const noAngleBrackets = value.indexOf(\"<\") === -1 && value.lastIndexOf(\">\") === -1;\n\n const validProtocol = /^<?[http|urn].*>?$/.test(value) && (hasAngleBrackets || noAngleBrackets);\n let validPath = false;\n if (validProtocol) {\n if (value.indexOf(\"http\") >= 0) {\n const schemaSlashesIdx = value.indexOf('//');\n validPath = schemaSlashesIdx > 4\n && value.substring(schemaSlashesIdx + 2).length > 0;\n } else if (value.indexOf(\"urn\") >= 0) {\n validPath = value.substring(4).length > 0;\n }\n }\n return validProtocol && validPath;\n }\n\n let uri;\n\n function submit(uri) {\n function setFormInvalid(isDirty) {\n // does not work yet\n $timeout(function () {\n if ($scope.form) {\n $scope.form.$dirty = isDirty;\n }\n });\n }\n\n if (!uri) {\n uri = document.getElementById(\"resources_finder_value\").value;\n }\n if (uri && validateRdfUri(uri)) {\n setFormInvalid(false);\n $location\n .path('resource')\n .search('uri', uri);\n } else {\n setFormInvalid(true);\n if (uri) {\n toastr.error(\"Invalid input!\");\n }\n }\n }\n\n if ($scope.getActiveRepository()) {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n }\n\n // use a global var to keep old uri in order to change it when a new one appears\n let expandedUri;\n\n function getAutocompleteSuggestions(str) {\n // expand prefix to uri only if the last character of the input is a colon and\n // there are no angle brackets because they are allowed only for absolute uris\n const ANGLE_BRACKETS_REGEX = /<|>/;\n if (!ANGLE_BRACKETS_REGEX.test(str) && str.slice(-1) === ':') {\n const newExpandedUri = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, str.slice(0, -1));\n expandedUri = (newExpandedUri !== expandedUri) ? newExpandedUri : expandedUri;\n if (expandedUri) {\n $(\"#resources_finder_value\").val(expandedUri);\n }\n }\n\n let promise;\n if ($scope.autocompleteEnabled) {\n // add semicolon after the expanded uri in order to filter only by local names for this uri\n const query = str.replace(expandedUri, expandedUri + ';');\n promise = AutocompleteRestService.getAutocompleteSuggestions(query);\n } else {\n // return empty promise\n promise = $q.when($scope.autocompleteEnabled);\n }\n return promise;\n }\n\n $scope.$on('repositoryIsSet', function () {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n });\n\n function inputChangedFn() {\n uri = document.getElementById(\"resources_finder_value\").value;\n $scope.form.$dirty = !(uri && validateRdfUri(uri));\n }\n\n function selectedUriCallback(selected) {\n $scope.selectedUri = {name: selected.title};\n submit($scope.selectedUri.name);\n }\n}\n\nEditResourceCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$repositories', '$uibModal', '$timeout', 'ClassInstanceDetailsService', 'StatementsService', 'RDF4JRepositoriesRestService'];\n\nfunction EditResourceCtrl($scope, $http, $location, toastr, $repositories, $uibModal, $timeout, ClassInstanceDetailsService, StatementsService, RDF4JRepositoriesRestService) {\n $scope.uriParam = $location.search().uri;\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newResource = false;\n $scope.datatypeOptions = StatementsService.getDatatypeOptions();\n\n $scope.activeRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.getClassInstancesDetails = getClassInstancesDetails;\n $scope.addStatement = addStatement;\n $scope.removeStatement = removeStatement;\n $scope.getLocalName = getLocalName;\n $scope.checkValid = checkValid;\n $scope.validEditRow = validEditRow;\n $scope.viewTrig = viewTrig;\n $scope.save = save;\n\n function getClassInstancesDetails() {\n RDF4JRepositoriesRestService.getNamespaces($scope.activeRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n\n ClassInstanceDetailsService.getDetails($scope.uriParam)\n .success(function (data) {\n $scope.details = data;\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }).error(function (data) {\n toastr.error('Cannot get resource details; ' + getError(data));\n });\n\n ClassInstanceDetailsService.getGraph($scope.uriParam)\n .then(function (res) {\n const statements = StatementsService.buildStatements(res, $scope.uriParam);\n $scope.statements = statements;\n $scope.newResource = !statements.length;\n });\n }\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.activeRepository()) {\n $scope.getClassInstancesDetails();\n }\n });\n\n $scope.validateUri = function (val) {\n let check = true;\n const text = val ? val : '';\n\n if (text.indexOf(':') === -1) {\n check = false;\n } else {\n const prefix = text.substring(0, text.indexOf(':'));\n const uriForPrefixNotAvailable = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, prefix) === '';\n if (uriForPrefixNotAvailable) {\n // TODO: There's this reported useless escape character for this regex, but I'm not sure if and can I fix it.\n if (/^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(text) === false) {\n check = false;\n }\n\n const count = text.match(/\\//g);\n\n if (count === undefined || count.length < 3) {\n check = false;\n }\n } else {\n const restText = text.substring(text.indexOf(':') + 1).trim();\n if (restText.length < 1) {\n check = false;\n }\n }\n }\n\n return check;\n };\n\n function addStatement() {\n $scope.newRowPredicate.$setSubmitted();\n $scope.newRowObject.$setSubmitted();\n $scope.newRowContext.$setSubmitted();\n if ($scope.newRowPredicate.$valid && $scope.newRowObject.$valid && $scope.newRowContext.$valid) {\n $scope.statements.push(angular.copy($scope.newRow));\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newRowPredicate.$setPristine();\n $scope.newRowPredicate.$setUntouched();\n $scope.newRowObject.$setPristine();\n $scope.newRowObject.$setUntouched();\n $scope.newRowContext.$setPristine();\n $scope.newRowContext.$setUntouched();\n }\n }\n\n function checkValid(data) {\n if (!angular.isUndefined(data)) {\n return true;\n }\n return \"Please enter a valid value.\";\n }\n\n function validEditRow() {\n return $scope.rowform.$valid;\n }\n\n function removeStatement(idx) {\n $scope.statements.splice(idx, 1);\n }\n\n function getLocalName(uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n }\n\n function viewTrig() {\n $uibModal.open({\n templateUrl: 'js/angular/explore/templates/viewTrig.html',\n controller: 'ViewTrigCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return StatementsService.transformToTrig($scope.statements);\n }\n }\n });\n }\n\n function save() {\n const method = $scope.newResource ? 'POST' : 'PUT';\n $http({\n method: method,\n url: 'rest/resource?uri=' + encodeURIComponent($scope.uriParam),\n headers: {\n 'Content-Type': 'application/x-trig'\n },\n data: StatementsService.transformToTrig($scope.statements)\n }).success(function () {\n toastr.success(\"Resource saved.\");\n const timer = $timeout(function () {\n $location.path('resource').search('uri', $scope.uriParam);\n }, 500);\n $scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n toastr.error(getError(data));\n });\n }\n}\n\nViewTrigCtrl.$inject = ['$scope', '$uibModalInstance', 'data'];\n\nfunction ViewTrigCtrl($scope, $uibModalInstance, data) {\n $scope.trig = data;\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[94],{40:function(e,t,n){"use strict";n.r(t);n(2),n(9);function s(e,t,n,s){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,"Error getting settings")}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success("Settings have been saved")}),(function(e){const n=getError(e.data);t.error(n,"Error saving settings")}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s){e.loader=!0,t.checkLicenseHardcoded().success((function(e){s.isLicenseHardcoded="true"===e})).error((function(){s.isLicenseHardcoded=!1,n.error("Error checking license availability")})).then((function(){t.getLicenseInfo().success((function(t){e.loader=!1,e.license=t})).error((function(){e.loader=!1,e.license={message:"No license was set.",valid:!1}}))}))}function c(e,t,n,s,i,c,o){e.$on("securityInit",(function(){o.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=a;const r=$(".license-textarea");function a(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(r.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=r.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){c.history.back()})).error((function(){i.error("Error registering GraphDB license")}))}else i.error("No license code available in textarea")}(n)}))}(n,e)):(r.val(""),i.error(n.message))})).error((function(){i.error("Invalid license")}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){a(e)})).error((function(){i.error("Could not upload file")}))}})),e.getBackToPreviousPage=function(){c.history.back()}}function o(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function r(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",o).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",c).controller("LoaderSamplesCtrl",r),s.$inject=["$scope","toastr","$modalInstance","LicenseRestService"],i.$inject=["$scope","LicenseRestService","toastr","$rootScope"],c.$inject=["$scope","LicenseRestService","$location","$modal","toastr","$window","$jwtAuth"],o.$inject=["$scope","$modalInstance","license"],r.$inject=["$scope"]}}]);
2
- //# sourceMappingURL=94.3efcd047d4d4e506cbd7.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[94],{40:function(e,t,n){"use strict";n.r(t);n(2),n(9);function s(e,t,n,s){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,"Error getting settings")}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success("Settings have been saved")}),(function(e){const n=getError(e.data);t.error(n,"Error saving settings")}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s){e.loader=!0,t.checkLicenseHardcoded().success((function(e){s.isLicenseHardcoded="true"===e})).error((function(){s.isLicenseHardcoded=!1,n.error("Error checking license availability")})).then((function(){t.getLicenseInfo().success((function(t){e.loader=!1,e.license=t})).error((function(){e.loader=!1,e.license={message:"No license was set.",valid:!1}}))}))}function c(e,t,n,s,i,c,o){e.$on("securityInit",(function(){o.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=a;const r=$(".license-textarea");function a(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(r.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=r.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){c.history.back()})).error((function(){i.error("Error registering GraphDB license")}))}else i.error("No license code available in textarea")}(n)}))}(n,e)):(r.val(""),i.error(n.message))})).error((function(){i.error("Invalid license")}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){a(e)})).error((function(){i.error("Could not upload file")}))}})),e.getBackToPreviousPage=function(){c.history.back()}}function o(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function r(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",o).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",c).controller("LoaderSamplesCtrl",r),s.$inject=["$scope","toastr","$uibModalInstance","LicenseRestService"],i.$inject=["$scope","LicenseRestService","toastr","$rootScope"],c.$inject=["$scope","LicenseRestService","$location","$uibModal","toastr","$window","$jwtAuth"],o.$inject=["$scope","$uibModalInstance","license"],r.$inject=["$scope"]}}]);
2
+ //# sourceMappingURL=94.afe4c166f07dbf1bc30f.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/settings/controllers.js"],"names":["ActiveLocationSettingsCtrl","$scope","toastr","$uibModalInstance","LicenseRestService","supportsStatistics","settings","statistics","getSettings","loader","getStatistics","then","response","data","status","msg","getError","error","setSettings","toggleStatistics","close","success","submitForm","cancel","dismiss","LicenseCtrl","$rootScope","checkLicenseHardcoded","res","isLicenseHardcoded","getLicenseInfo","license","message","valid","RegisterLicenseCtrl","$location","$uibModal","$window","$jwtAuth","$on","isAdmin","path","sendLicenseToValidateAndActivate","textAreaSel","$","licenseCode","sendLicenseToValidate","validatedLicense","licensee","val","open","templateUrl","controller","resolve","result","decodedLicense","atob","replace","registerLicense","history","back","confirmWantedNewLicenseDetails","$watch","currentFile","file","extractFromLicenseFile","getBackToPreviousPage","ValidateLicenseModalCtrl","ok","LoaderSamplesCtrl","setLoader","angular","module","$inject"],"mappings":"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","file":"94.afe4c166f07dbf1bc30f.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\n\nangular\n .module('graphdb.framework.settings.controllers', [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'toastr'\n ])\n .controller('ActiveLocationSettingsCtrl', ActiveLocationSettingsCtrl)\n .controller('ValidateLicenseModalCtrl', ValidateLicenseModalCtrl)\n .controller('LicenseCtrl', LicenseCtrl)\n .controller('RegisterLicenseCtrl', RegisterLicenseCtrl)\n .controller('LoaderSamplesCtrl', LoaderSamplesCtrl);\n\nActiveLocationSettingsCtrl.$inject = ['$scope', 'toastr', '$uibModalInstance', 'LicenseRestService'];\n\nfunction ActiveLocationSettingsCtrl($scope, toastr, $uibModalInstance, LicenseRestService) {\n $scope.supportsStatistics = true;\n $scope.settings = {statistics: false};\n $scope.getSettings = getSettings;\n\n function getSettings() {\n $scope.loader = true;\n LicenseRestService.getStatistics().then(function (response) {\n $scope.settings.statistics = response.data === 'true';\n $scope.supportsStatistics = true;\n }, function (response) {\n if (response.status === 404) {\n $scope.supportsStatistics = false;\n } else {\n const msg = getError(response.data);\n toastr.error(msg, 'Error getting settings');\n }\n });\n }\n\n $scope.getSettings();\n\n $scope.setSettings = function () {\n $scope.loader = true;\n LicenseRestService.toggleStatistics($scope.settings.statistics).then(function () {\n $uibModalInstance.close();\n toastr.success('Settings have been saved');\n }, function (response) {\n const msg = getError(response.data);\n toastr.error(msg, 'Error saving settings');\n });\n };\n\n $scope.submitForm = function () {\n $scope.setSettings();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nLicenseCtrl.$inject = ['$scope', 'LicenseRestService', 'toastr', '$rootScope'];\n\nfunction LicenseCtrl($scope, LicenseRestService, toastr, $rootScope) {\n $scope.loader = true;\n\n LicenseRestService.checkLicenseHardcoded()\n .success(function (res) {\n $rootScope.isLicenseHardcoded = (res === 'true');\n })\n .error(function () {\n $rootScope.isLicenseHardcoded = false;\n toastr.error('Error checking license availability');\n })\n .then(function () {\n LicenseRestService.getLicenseInfo()\n .success(function (res) {\n $scope.loader = false;\n $scope.license = res;\n // check if you have a hardcoded license that is not activated through the workbench and if\n // you do disable ability to update license\n })\n .error(function () {\n // no license but we need to check for 417\n $scope.loader = false;\n $scope.license = {message: 'No license was set.', valid: false};\n });\n });\n}\n\nRegisterLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$location', '$uibModal', 'toastr', '$window', '$jwtAuth'];\n\nfunction RegisterLicenseCtrl($scope, LicenseRestService, $location, $uibModal, toastr, $window, $jwtAuth) {\n $scope.$on('securityInit', function () {\n if (!$jwtAuth.isAdmin()) {\n $location.path('/license');\n }\n });\n\n $scope.sendLicenseToValidateAndActivate = sendLicenseToValidateAndActivate;\n\n const textAreaSel = $('.license-textarea');\n\n // watch for uploaded license file\n $scope.$watch('currentFile', function () {\n if ($scope.currentFile) {\n const file = $scope.currentFile;\n LicenseRestService.extractFromLicenseFile(file)\n .success(function (licenseCode) {\n sendLicenseToValidateAndActivate(licenseCode);\n }).error(function () {\n toastr.error('Could not upload file');\n });\n }\n });\n\n $scope.getBackToPreviousPage = function () {\n $window.history.back();\n };\n\n // send license code for validation and activation\n function sendLicenseToValidateAndActivate(licenseCode) {\n LicenseRestService.sendLicenseToValidate(licenseCode)\n .success(function (validatedLicense) {\n if (validatedLicense.licensee !== 'Invalid') {\n // write code to textarea\n textAreaSel.val(licenseCode);\n // pop dialog for license details confirmation\n confirmWantedNewLicenseDetails(validatedLicense, licenseCode);\n } else {\n // clear textarea on invalid license\n textAreaSel.val('');\n // show error\n toastr.error(validatedLicense.message);\n }\n })\n .error(function () {\n toastr.error('Invalid license');\n });\n }\n\n\n // pops a modal dialog which asks you if your expected license details are correct\n // and sends license to GraphDB upon confirmation\n function confirmWantedNewLicenseDetails(license, licenseCode) {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/settings/modal/validate-license.html',\n controller: 'ValidateLicenseModalCtrl',\n resolve: {\n license: function () {\n return license;\n }\n }\n });\n\n modalInstance.result.then(function () {\n registerLicense(licenseCode);\n });\n }\n\n // send license code to GraphDB for activation\n function registerLicense(licenseCode) {\n if (!licenseCode) {\n licenseCode = textAreaSel.val();\n }\n\n if (licenseCode) {\n // replacing whitespace makes this work on Safari too,\n // whereas other browser happily ignore the whitespace\n const decodedLicense = atob(licenseCode.replace(/\\s/g, ''));\n LicenseRestService.registerLicense(decodedLicense)\n .success(function () {\n $window.history.back();\n }).error(function () {\n toastr.error('Error registering GraphDB license');\n });\n } else {\n toastr.error('No license code available in textarea');\n }\n }\n}\n\nValidateLicenseModalCtrl.$inject = ['$scope', '$uibModalInstance', 'license'];\n\nfunction ValidateLicenseModalCtrl($scope, $uibModalInstance, license) {\n $scope.ok = ok;\n $scope.cancel = cancel;\n $scope.license = license;\n\n function ok() {\n $uibModalInstance.close();\n }\n\n function cancel() {\n $uibModalInstance.dismiss('cancel');\n }\n}\n\nLoaderSamplesCtrl.$inject = ['$scope'];\n\nfunction LoaderSamplesCtrl($scope) {\n $scope.loader = true;\n $scope.setLoader = function (loader) {\n $scope.loader = loader;\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[96],{78:function(e,t,r){"use strict";r.r(t);var i=r(208),s=r.n(i);function a(e,t,r,i,a,c,n,o,l,u){const p="http://www.ontotext.com/graphdb/similarity/",d="http://www.ontotext.com/graphdb/similarity/psi/",y=d+"any";e.pluginName="similarity",e.pluginIsActive=!0,e.setPluginIsActive=function(t){e.pluginIsActive=t};const h=function(e){return'"'+e+'"'},m=function(e){return void 0===e||e.startsWith("<<")&&e.endsWith(">>")?e:"<"+e+">"};function g(){return!e.getActiveRepository()||e.isActiveRepoFedXType()||e.isActiveRepoOntopType()}let f;function S(){e.getAutocompletePromise=o.checkAutocompleteStatus()}e.info=l,e.getActiveRepository=function(){return i.getActiveRepository()},g()||n.getSearchQueries().success((function(t){e.searchQueries=t})).error((function(e){const t=getError(e);r.error(t,"Could not get search queries")})),e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getSimilarityIndexes=function(){!g()&&e.pluginIsActive&&n.getIndexes().success((function(t){e.similarityIndexes=t})).error((function(e){const t=getError(e);r.error(t,"Could not get indexes")}))},e.pullList=function(){e.getSimilarityIndexes();const r=t((function(){e.$broadcast("checkIsActive"),"false"!==$("#indexes-table").attr("aria-expanded")&&e.getSimilarityIndexes()}),5e3);e.$on("$destroy",(function(){t.cancel(r)}))},e.getActiveRepository()&&e.pullList(),e.$watch((function(){return i.getActiveRepository()}),(function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()||(e.getNamespacesPromise=u.getNamespaces(e.getActiveRepository()).success((function(t){S(),e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),f=s()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0})})).error((function(e){r.error(getError(e),"Cannot get namespaces for repository. View will not work properly;")})))})),e.$on("autocompleteStatus",(function(){S()})),e.loading=!1,e.selected=void 0,e.searchType="searchTerm",e.resultType="termResult",e.$watch("searchType",(function(){e.empty=!0})),e.goToSimilarityIndex=function(t){"BUILT"!==t.status&&"OUTDATED"!==t.status&&"REBUILDING"!==t.status||(e.empty=!0,e.selected!==t&&(e.lastSearch=void 0,e.selected=t),"text"===t.type?e.searchType="searchTerm":"predication"===t.type&&(e.searchType="searchEntity"),"text"!==t.type&&"predication"!==t.type||$("#indexes-table").collapse("hide"))};const v=function(t){const r=angular.element(document.getElementById("yasr-inner")),i=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,r.addClass("opacity-hide"),i.removeClass("opacity-hide")):(e.loading=!1,r.removeClass("opacity-hide"),i.addClass("opacity-hide"))};e.performSearch=function(t,s,a,c,n){v(!0);let o=s;e.lastSearch={},e.lastSearch.type=a,"searchEntityPredicate"===a&&(o=e.psiSubject,e.lastSearch.predicate=s),o="searchTerm"===a?h(o):m(o),e.lastSearch.termOrSubject=o;let l;l="searchAnalogical"===a?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const u={query:l,$index:m("http://www.ontotext.com/graphdb/similarity/instance/"+t),$query:o,$searchType:m(("text"===e.selected.type?p:d)+("searchEntityPredicate"===a?"searchEntity":a)),$resultType:m("text"===e.selected.type?p+c:d+"entityResult"),$parameters:h(n)};"searchEntityPredicate"===a&&(u.$psiPredicate=e.lastSearch.predicate?m(e.lastSearch.predicate):m(y)),"searchAnalogical"===a&&(e.searchSubject=s,u.$givenSubject=m(e.analogicalSubject),u.$givenObject=m(e.analogicalObject),u.$searchSubject=m(s)),$.ajax({method:"GET",url:"repositories/"+i.getActiveRepository(),data:u,headers:{Accept:"application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8"}}).done((function(e,t,r){v(!1),f.setResponse(e,t,r)})).fail((function(e){r.error(getError(e),"Could not get resource!"),v(!1)}))},e.viewSearchQuery=function(){let t;t="searchAnalogical"===e.lastSearch.type?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const r=t.replace("?index","inst:"+e.selected.name).replace("?query",e.lastSearch.termOrSubject).replace("?searchType",("text"===e.selected.type?":":"psi:")+("searchEntityPredicate"===e.lastSearch.type?"searchEntity":e.lastSearch.type)).replace("?resultType","text"===e.selected.type?":"+e.resultType:"psi:entityResult").replace("?parameters",h(e.searchParameters?e.searchParameters:"")).replace("?psiPredicate",e.lastSearch.predicate?m(e.lastSearch.predicate):m(y)).replace("?givenSubject",m(e.analogicalSubject)).replace("?givenObject",m(e.analogicalObject)).replace("?searchSubject",m(e.searchSubject));c.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return r}}})},e.deleteIndex=function(t){a.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the index '"+t.name+"'?",warning:!0}).result.then((function(){n.deleteIndex(t).then((function(){e.getSimilarityIndexes()}),(function(e){r.error(getError(e))}))}))},e.viewCreateQuery=function(e){n.getQuery({indexName:e.name,indexOptions:e.options,query:e.selectQuery,indexStopList:e.stopList,queryInference:e.infer,querySameAs:e.sameAs,viewType:e.type,indexAnalyzer:e.analyzer}).success((function(e){c.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})}))},e.rebuildIndex=function(t){t.searchQuery||(t.searchQuery=t.type?e.searchQueries[t.type]:e.searchQueries.text),a.openSimpleModal({title:"Confirm",message:"Are you sure you want to rebuild the whole index '"+t.name+"'?<br>You will still be able to use the latest successful build!",warning:!0}).result.then((function(){t.status="REBUILDING",n.rebuildIndex(t).then((function(e){}),(function(e){r.error(getError(e))}))}))},e.copyToClipboardResult=function(e){a.openCopyToClipboardModal(e)},e.trimIRI=function(e){return _.trim(e,"<>")}}angular.module("graphdb.framework.similarity.controllers.list",[]).controller("SimilarityCtrl",a),a.$inject=["$scope","$interval","toastr","$repositories","ModalService","$modal","SimilarityRestService","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService"]}}]);
2
- //# sourceMappingURL=96.754454264340bc9d9a70.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[96],{78:function(e,t,r){"use strict";r.r(t);var i=r(208),s=r.n(i);function a(e,t,r,i,a,c,n,o,l,u){const p="http://www.ontotext.com/graphdb/similarity/",d="http://www.ontotext.com/graphdb/similarity/psi/",y=d+"any";e.pluginName="similarity",e.pluginIsActive=!0,e.setPluginIsActive=function(t){e.pluginIsActive=t};const h=function(e){return'"'+e+'"'},m=function(e){return void 0===e||e.startsWith("<<")&&e.endsWith(">>")?e:"<"+e+">"};function g(){return!e.getActiveRepository()||e.isActiveRepoFedXType()||e.isActiveRepoOntopType()}let f;function S(){e.getAutocompletePromise=o.checkAutocompleteStatus()}e.info=l,e.getActiveRepository=function(){return i.getActiveRepository()},g()||n.getSearchQueries().success((function(t){e.searchQueries=t})).error((function(e){const t=getError(e);r.error(t,"Could not get search queries")})),e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getSimilarityIndexes=function(){!g()&&e.pluginIsActive&&n.getIndexes().success((function(t){e.similarityIndexes=t})).error((function(e){const t=getError(e);r.error(t,"Could not get indexes")}))},e.pullList=function(){e.getSimilarityIndexes();const r=t((function(){e.$broadcast("checkIsActive"),"false"!==$("#indexes-table").attr("aria-expanded")&&e.getSimilarityIndexes()}),5e3);e.$on("$destroy",(function(){t.cancel(r)}))},e.getActiveRepository()&&e.pullList(),e.$watch((function(){return i.getActiveRepository()}),(function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()||(e.getNamespacesPromise=u.getNamespaces(e.getActiveRepository()).success((function(t){S(),e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),f=s()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0})})).error((function(e){r.error(getError(e),"Cannot get namespaces for repository. View will not work properly;")})))})),e.$on("autocompleteStatus",(function(){S()})),e.loading=!1,e.selected=void 0,e.searchType="searchTerm",e.resultType="termResult",e.$watch("searchType",(function(){e.empty=!0})),e.goToSimilarityIndex=function(t){"BUILT"!==t.status&&"OUTDATED"!==t.status&&"REBUILDING"!==t.status||(e.empty=!0,e.selected!==t&&(e.lastSearch=void 0,e.selected=t),"text"===t.type?e.searchType="searchTerm":"predication"===t.type&&(e.searchType="searchEntity"),"text"!==t.type&&"predication"!==t.type||$("#indexes-table").collapse("hide"))};const v=function(t){const r=angular.element(document.getElementById("yasr-inner")),i=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,r.addClass("opacity-hide"),i.removeClass("opacity-hide")):(e.loading=!1,r.removeClass("opacity-hide"),i.addClass("opacity-hide"))};e.performSearch=function(t,s,a,c,n){v(!0);let o=s;e.lastSearch={},e.lastSearch.type=a,"searchEntityPredicate"===a&&(o=e.psiSubject,e.lastSearch.predicate=s),o="searchTerm"===a?h(o):m(o),e.lastSearch.termOrSubject=o;let l;l="searchAnalogical"===a?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const u={query:l,$index:m("http://www.ontotext.com/graphdb/similarity/instance/"+t),$query:o,$searchType:m(("text"===e.selected.type?p:d)+("searchEntityPredicate"===a?"searchEntity":a)),$resultType:m("text"===e.selected.type?p+c:d+"entityResult"),$parameters:h(n)};"searchEntityPredicate"===a&&(u.$psiPredicate=e.lastSearch.predicate?m(e.lastSearch.predicate):m(y)),"searchAnalogical"===a&&(e.searchSubject=s,u.$givenSubject=m(e.analogicalSubject),u.$givenObject=m(e.analogicalObject),u.$searchSubject=m(s)),$.ajax({method:"GET",url:"repositories/"+i.getActiveRepository(),data:u,headers:{Accept:"application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8"}}).done((function(e,t,r){v(!1),f.setResponse(e,t,r)})).fail((function(e){r.error(getError(e),"Could not get resource!"),v(!1)}))},e.viewSearchQuery=function(){let t;t="searchAnalogical"===e.lastSearch.type?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const r=t.replace("?index","inst:"+e.selected.name).replace("?query",e.lastSearch.termOrSubject).replace("?searchType",("text"===e.selected.type?":":"psi:")+("searchEntityPredicate"===e.lastSearch.type?"searchEntity":e.lastSearch.type)).replace("?resultType","text"===e.selected.type?":"+e.resultType:"psi:entityResult").replace("?parameters",h(e.searchParameters?e.searchParameters:"")).replace("?psiPredicate",e.lastSearch.predicate?m(e.lastSearch.predicate):m(y)).replace("?givenSubject",m(e.analogicalSubject)).replace("?givenObject",m(e.analogicalObject)).replace("?searchSubject",m(e.searchSubject));c.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return r}}})},e.deleteIndex=function(t){a.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the index '"+t.name+"'?",warning:!0}).result.then((function(){n.deleteIndex(t).then((function(){e.getSimilarityIndexes()}),(function(e){r.error(getError(e))}))}))},e.viewCreateQuery=function(e){n.getQuery({indexName:e.name,indexOptions:e.options,query:e.selectQuery,indexStopList:e.stopList,queryInference:e.infer,querySameAs:e.sameAs,viewType:e.type,indexAnalyzer:e.analyzer}).success((function(e){c.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})}))},e.rebuildIndex=function(t){t.searchQuery||(t.searchQuery=t.type?e.searchQueries[t.type]:e.searchQueries.text),a.openSimpleModal({title:"Confirm",message:"Are you sure you want to rebuild the whole index '"+t.name+"'?<br>You will still be able to use the latest successful build!",warning:!0}).result.then((function(){t.status="REBUILDING",n.rebuildIndex(t).then((function(e){}),(function(e){r.error(getError(e))}))}))},e.copyToClipboardResult=function(e){a.openCopyToClipboardModal(e)},e.trimIRI=function(e){return _.trim(e,"<>")}}angular.module("graphdb.framework.similarity.controllers.list",[]).controller("SimilarityCtrl",a),a.$inject=["$scope","$interval","toastr","$repositories","ModalService","$uibModal","SimilarityRestService","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService"]}}]);
2
+ //# sourceMappingURL=96.f7d3f181e8860ce2bd8b.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/similarity/controllers/similarity-list.controller.js"],"names":["SimilarityCtrl","$scope","$interval","toastr","$repositories","ModalService","$uibModal","SimilarityRestService","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService","PREFIX","PREFIX_PREDICATION","ANY_PREDICATE","pluginName","pluginIsActive","setPluginIsActive","isPluginActive","literalForQuery","literal","iriForQuery","iri","undefined","startsWith","endsWith","shouldSkipCall","getActiveRepository","isActiveRepoFedXType","isActiveRepoOntopType","yasr","checkAutocompleteStatus","getAutocompletePromise","info","getSearchQueries","success","data","searchQueries","error","msg","getError","encodeURIComponent","param","getSimilarityIndexes","getIndexes","similarityIndexes","pullList","timer","$broadcast","$","attr","$on","cancel","$watch","getNamespacesPromise","getNamespaces","usedPrefixes","results","bindings","forEach","e","prefix","value","namespace","document","getElementById","getUsedPrefixes","persistency","hideHeader","loading","selected","searchType","resultType","empty","goToSimilarityIndex","index","status","lastSearch","type","collapse","toggleOntoLoader","showLoader","yasrInnerContainer","angular","element","resultsLoader","addClass","removeClass","performSearch","uri","parameters","termOrSubject","psiSubject","predicate","sparqlQuery","analogicalQuery","searchQuery","sendData","query","$index","$query","$searchType","$resultType","$parameters","$psiPredicate","searchSubject","$givenSubject","analogicalSubject","$givenObject","analogicalObject","$searchSubject","ajax","method","url","headers","Accept","done","textStatus","jqXhrOrErrorString","setResponse","fail","viewSearchQuery","queryTemplate","replacedQuery","replace","name","searchParameters","open","templateUrl","controller","resolve","deleteIndex","openSimpleModal","title","message","warning","result","then","err","viewCreateQuery","getQuery","indexName","indexOptions","options","selectQuery","indexStopList","stopList","queryInference","infer","querySameAs","sameAs","viewType","indexAnalyzer","analyzer","rebuildIndex","text","res","copyToClipboardResult","openCopyToClipboardModal","trimIRI","_","trim","module","$inject"],"mappings":"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","file":"96.f7d3f181e8860ce2bd8b.bundle.js","sourcesContent":["import YASR from 'lib/yasr.bundled';\n\nangular\n .module('graphdb.framework.similarity.controllers.list', [])\n .controller('SimilarityCtrl', SimilarityCtrl);\n\nSimilarityCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', 'ModalService', '$uibModal', 'SimilarityRestService', 'AutocompleteRestService', 'productInfo', 'RDF4JRepositoriesRestService'];\n\nfunction SimilarityCtrl($scope, $interval, toastr, $repositories, ModalService, $uibModal, SimilarityRestService, AutocompleteRestService, productInfo, RDF4JRepositoriesRestService) {\n\n const PREFIX = 'http://www.ontotext.com/graphdb/similarity/';\n const PREFIX_PREDICATION = 'http://www.ontotext.com/graphdb/similarity/psi/';\n const PREFIX_INSTANCE = PREFIX + 'instance/';\n const ANY_PREDICATE = PREFIX_PREDICATION + 'any';\n $scope.pluginName = 'similarity';\n $scope.pluginIsActive = true;\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n }\n\n const literalForQuery = function (literal) {\n return '\"' + literal + '\"';\n };\n\n // TODO: Fix cases when this function is called with undefined\n const iriForQuery = function (iri) {\n // Do not put brackets on nested triples\n if (iri === undefined || iri.startsWith(\"<<\") && iri.endsWith(\">>\")) {\n return iri;\n }\n return '<' + iri + '>';\n };\n\n $scope.info = productInfo;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n // Don't call functions if one of the following conditions are met\n function shouldSkipCall() {\n return !$scope.getActiveRepository() ||\n $scope.isActiveRepoFedXType() ||\n $scope.isActiveRepoOntopType();\n }\n\n if (!shouldSkipCall()) {\n SimilarityRestService.getSearchQueries().success(function (data) {\n $scope.searchQueries = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get search queries');\n });\n }\n\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n // get similarity indexes\n $scope.getSimilarityIndexes = function () {\n if (shouldSkipCall() || !$scope.pluginIsActive) {\n return;\n }\n SimilarityRestService.getIndexes()\n .success(function (data) {\n $scope.similarityIndexes = data;\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get indexes');\n });\n };\n\n $scope.pullList = function () {\n $scope.getSimilarityIndexes();\n const timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($('#indexes-table').attr('aria-expanded') !== 'false') {\n $scope.getSimilarityIndexes();\n }\n }, 5000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n if ($scope.getActiveRepository()) {\n $scope.pullList();\n }\n\n let yasr;\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n // Don't try to get namespaces for ontop or fedx repository\n if ($scope.getActiveRepository() && !$scope.isActiveRepoOntopType() && !$scope.isActiveRepoFedXType()) {\n $scope.getNamespacesPromise = RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n checkAutocompleteStatus();\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true\n });\n }).error(function (data) {\n toastr.error(getError(data), 'Cannot get namespaces for repository. View will not work properly;');\n });\n }\n });\n\n function checkAutocompleteStatus() {\n $scope.getAutocompletePromise = AutocompleteRestService.checkAutocompleteStatus();\n }\n\n $scope.$on('autocompleteStatus', function() {\n checkAutocompleteStatus();\n });\n\n $scope.loading = false;\n\n $scope.selected = undefined;\n $scope.searchType = 'searchTerm';\n $scope.resultType = 'termResult';\n\n $scope.$watch('searchType', function () {\n $scope.empty = true;\n });\n\n $scope.goToSimilarityIndex = function (index) {\n if (!('BUILT' === index.status || 'OUTDATED' === index.status || 'REBUILDING' === index.status)) {\n return;\n }\n $scope.empty = true;\n if ($scope.selected !== index) {\n $scope.lastSearch = undefined;\n $scope.selected = index;\n }\n if (index.type === 'text') {\n $scope.searchType = 'searchTerm';\n } else if (index.type === 'predication') {\n $scope.searchType = 'searchEntity';\n }\n if (index.type === 'text' || index.type === 'predication') {\n $('#indexes-table').collapse('hide');\n }\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass('opacity-hide');\n resultsLoader.removeClass('opacity-hide');\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass('opacity-hide');\n resultsLoader.addClass('opacity-hide');\n }\n };\n\n $scope.performSearch = function (index, uri, searchType, resultType, parameters) {\n\n toggleOntoLoader(true);\n\n // this is either the search term or the iri for the subject\n let termOrSubject = uri;\n\n $scope.lastSearch = {};\n $scope.lastSearch.type = searchType;\n\n if (searchType === 'searchEntityPredicate') {\n termOrSubject = $scope.psiSubject;\n $scope.lastSearch.predicate = uri;\n }\n\n if (searchType === 'searchTerm') {\n termOrSubject = literalForQuery(termOrSubject);\n } else {\n termOrSubject = iriForQuery(termOrSubject);\n }\n\n $scope.lastSearch.termOrSubject = termOrSubject;\n\n const headers = {Accept: 'application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8'};\n let sparqlQuery;\n if (searchType === 'searchAnalogical') {\n sparqlQuery = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n sparqlQuery = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n const sendData = {\n query: sparqlQuery,\n $index: iriForQuery(PREFIX_INSTANCE + index),\n $query: termOrSubject,\n $searchType: iriForQuery(($scope.selected.type === 'text' ? PREFIX : PREFIX_PREDICATION) + (searchType === 'searchEntityPredicate' ? 'searchEntity' : searchType)),\n $resultType: iriForQuery($scope.selected.type === 'text' ? PREFIX + resultType : PREFIX_PREDICATION + 'entityResult'),\n $parameters: literalForQuery(parameters)\n };\n\n if (searchType === 'searchEntityPredicate') {\n sendData.$psiPredicate = $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE);\n }\n\n if (searchType === 'searchAnalogical') {\n $scope.searchSubject = uri;\n sendData.$givenSubject = iriForQuery($scope.analogicalSubject);\n sendData.$givenObject = iriForQuery($scope.analogicalObject);\n sendData.$searchSubject = iriForQuery(uri);\n }\n\n $.ajax({\n method: 'GET',\n url: 'repositories/' + $repositories.getActiveRepository(),\n data: sendData,\n headers: headers\n }).done(function (data, textStatus, jqXhrOrErrorString) {\n toggleOntoLoader(false);\n yasr.setResponse(data, textStatus, jqXhrOrErrorString);\n }).fail(function (data) {\n toastr.error(getError(data), 'Could not get resource!');\n toggleOntoLoader(false);\n });\n };\n\n $scope.viewSearchQuery = function () {\n let queryTemplate;\n if ($scope.lastSearch.type === 'searchAnalogical') {\n queryTemplate = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n queryTemplate = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n const replacedQuery = queryTemplate\n .replace('?index', 'inst:' + $scope.selected.name)\n .replace('?query', $scope.lastSearch.termOrSubject)\n .replace('?searchType', ($scope.selected.type === 'text' ? ':' : 'psi:') + ($scope.lastSearch.type === 'searchEntityPredicate' ? 'searchEntity' : $scope.lastSearch.type))\n .replace('?resultType', $scope.selected.type === 'text' ? ':' + $scope.resultType : 'psi:entityResult')\n .replace('?parameters', literalForQuery((!$scope.searchParameters) ? '' : $scope.searchParameters))\n .replace('?psiPredicate', $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE))\n .replace('?givenSubject', iriForQuery($scope.analogicalSubject))\n .replace('?givenObject', iriForQuery($scope.analogicalObject))\n .replace('?searchSubject', iriForQuery($scope.searchSubject));\n\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return replacedQuery;\n }\n }\n });\n };\n\n\n $scope.deleteIndex = function (index) {\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to delete the index ' + '\\'' + index.name + '\\'?',\n warning: true\n }).result\n .then(function () {\n SimilarityRestService.deleteIndex(index)\n .then(function () {\n $scope.getSimilarityIndexes();\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.viewCreateQuery = function (index) {\n SimilarityRestService.getQuery({\n indexName: index.name,\n indexOptions: index.options,\n query: index.selectQuery,\n indexStopList: index.stopList,\n queryInference: index.infer,\n querySameAs: index.sameAs,\n viewType: index.type,\n indexAnalyzer: index.analyzer\n }).success(function (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n });\n };\n\n $scope.rebuildIndex = function (index) {\n // Migration\n if (!index.searchQuery) {\n index.searchQuery = index.type ? $scope.searchQueries[index.type] : $scope.searchQueries.text;\n }\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to rebuild the whole index ' + '\\'' + index.name + '\\'?' + '<br>You will still be able to use the latest successful build!',\n warning: true\n }).result\n .then(function () {\n index.status = 'REBUILDING';\n SimilarityRestService.rebuildIndex(index)\n .then(function (res) {\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.trimIRI = function (iri) {\n return _.trim(iri, \"<>\");\n };\n}\n"],"sourceRoot":""}