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/utils/uri-utils.js","webpack:///./src/js/angular/import/controllers.js"],"names":["iriRegExp","angular","module","factory","isValidIri","iri","undefined","match","validateRdfUri","value","hasAngleBrackets","indexOf","noAngleBrackets","lastIndexOf","validProtocol","test","validPath","schemaSlashesIdx","substring","length","RegExp","e","FILE_STATUS","importCtrl","controller","$scope","$http","toastr","$interval","$repositories","$uibModal","$filter","$jwtAuth","$location","LicenseRestService","files","fileChecked","checkAll","popoverTemplateUrl","fileQuery","getAppData","getInfo","success","data","appData","properties","i","key","source","maxUploadFileSizeMB","error","msg","getError","fileFormats","gzs","_","map","f","basics","fileFormatsExtended","reduce","union","el","all","fileFormatsHuman","textFileFormatsHuman","filter","updateListHttp","force","method","url","getBaseUrl","forEach","type","defaultType","rebatch","remoteStatus","find","matches","name","status","assign","viewType","showClearStatuses","file","savedSettings","mapKeys","loader","warning","$watch","$","tabId","is","hash","updateList","canWriteActiveRepo","init","setRestricted","isRestricted","getSettings","$on","pullList","timer","updating","cancel","getVisibleFiles","getTypeFilter","showItems","selectAllFiles","importable","getSettingsFor","fileName","withDefaultSettings","isEmpty","copy","defaultSettings","setSettingsFor","settingsFor","settings","open","templateUrl","resolve","hasParserSettings","isLocalLocation","isMultiple","size","result","then","importSelected","importFile","updateImport","stopImport","params","hasImportable","showTable","switchBatch","batch","newFileChecked","each","getSelectedFiles","overrideSettings","selectedFileNames","importNext","shift","resetStatusOrRemoveEntry","names","remove","headers","resetStatus","resetStatusSelected","removeEntry","removeEntrySelected","location","getActiveLocation","local","filterSettings","filtered","omitBy","isNull","omit","keys","viewUrl","getActiveRepository","pritifySettings","JSON","stringify","toTitleCase","s","upperFirst","toLowerCase","$controller","extend","this","importServerFiles","importSettings","fileNames","Upload","currentFiles","fileSelected","$files","$file","$newFiles","$duplicateFiles","$invalidFiles","Math","floor","$watchCollection","substr","fileIdx","splice","uniqBy","startImport","nextCallback","fileIndex","findIndex","format","message","finally","jsonBlob","upload","progress","evt","progressPercentage","parseInt","loaded","total","updateTextImport","pastedDataIdx","formattedDate","date","Date","getFullYear","padStart","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","pasteData","text","unshift","rdfDataFromURL","scope","existing","$uibModalInstance","importFormat","dismiss","ok","close","dataUrl","importFormats","rdfText","setFormat","isCollapsed","changeHelpTemplate","templateFile","commonUrl","UriUtils","hasError","input","o","context","target","enableReplace","replaceGraphs","fixSettings","settingsForm","replaceGraph","$setValidity","$valid","reset","addReplaceGraph","graph","valid","$setTouched","push","checkEnterReplaceGraph","event","keyCode","preventDefault","showAdvancedSettings","switchParserSettings"],"mappings":"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","file":"11.043e8d20764e39c10e31.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.utils.uriutils', [])\n .factory('UriUtils', UriUtils);\n\nlet iriRegExp;\ntry {\n // Real validation but it requires a relatively new browser\n iriRegExp = new RegExp(\"^[a-z](?:[-a-z0-9\\\\+\\\\.])*:(?:\\\\/\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:])*@)?(?:\\\\[(?:(?:(?:[0-9a-f]{1,4}:){6}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|::(?:[0-9a-f]{1,4}:){5}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4}:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+[-a-z0-9\\\\._~!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:]+)\\\\]|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}|(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=@])*)(?::[0-9]*)?(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*|\\\\/(?:(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))+)(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*)?|(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))+)(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*|(?!(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])))(?:\\\\?(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])|[\\\\u{E000}-\\\\u{F8FF}\\\\u{F0000}-\\\\u{FFFFD}\\\\u{100000}-\\\\u{10FFFD}\\\\/\\\\?])*)?(?:#(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])|[\\\\/\\\\?])*)?$\", \"ui\");\n} catch (e) {\n // Fallback to simple validation, works in all browsers\n iriRegExp = new RegExp(\"^[a-z](?:[-a-z0-9\\\\+\\\\.])*:\", \"i\");\n}\n\nfunction UriUtils() {\n function validateRdfUri(value) {\n const hasAngleBrackets = value.indexOf(\"<\") >= 0 && value.indexOf(\">\") >= 0;\n const noAngleBrackets = value.indexOf(\"<\") === -1 && value.lastIndexOf(\">\") === -1;\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 function isValidIri(iri) {\n return iri !== undefined && !!iri.match(iriRegExp);\n }\n\n return {\n isValidIri: isValidIri,\n validateRdfUri: validateRdfUri\n };\n}\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst FILE_STATUS = {\n 'UPLOADING': 'UPLOADING',\n 'PENDING': 'PENDING',\n 'ERROR': 'ERROR',\n 'DONE': 'DONE',\n 'NONE': 'NONE'\n};\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.uriutils'\n];\n\nconst importCtrl = angular.module('graphdb.framework.impex.import.controllers', modules);\n\nimportCtrl.controller('CommonCtrl', ['$scope', '$http', 'toastr', '$interval', '$repositories', '$uibModal', '$filter', '$jwtAuth', '$location', 'LicenseRestService',\n function ($scope, $http, toastr, $interval, $repositories, $uibModal, $filter, $jwtAuth, $location, LicenseRestService) {\n $scope.files = [];\n $scope.fileChecked = {};\n $scope.checkAll = false;\n $scope.popoverTemplateUrl = 'settingsPopoverTemplate.html';\n $scope.fileQuery = '';\n\n $scope.getAppData = function () {\n LicenseRestService.getInfo().success(function (data) {\n $scope.appData = {};\n\n $scope.appData.properties = {};\n\n for (let i = 0; i < data.length; i++) {\n $scope.appData.properties[data[i].key] = {\n source: data[i].source,\n value: data[i].value\n };\n }\n $scope.maxUploadFileSizeMB = $scope.appData.properties['graphdb.workbench.maxUploadSize'].value / (1024 * 1024);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.getAppData();\n\n $scope.fileFormats = ['ttl', 'ttls', 'rdf', 'rj', 'n3', 'nt', 'nq', 'trig', 'trigs', 'trix', 'brf', 'owl', 'jsonld'];\n\n {\n const gzs = _.map($scope.fileFormats, function (f) {\n return '.' + f + '.gz';\n });\n const basics = _.map($scope.fileFormats, function (f) {\n return '.' + f;\n });\n $scope.fileFormatsExtended = _.reduce(_.union(gzs, basics, ['.zip']), function (el, all) {\n return el + ', ' + all;\n });\n $scope.fileFormatsHuman = _.reduce(basics, function (el, all) {\n return el + ' ' + all;\n }) + ', as well as their .gz versions and .zip archives';\n $scope.textFileFormatsHuman = _.reduce(_.filter(basics, function (el) {\n return el !== '.brf';\n }),\n function (el, all) {\n return el + ' ' + all;\n });\n }\n\n $scope.updateListHttp = function (force) {\n $http({\n method: 'GET',\n url: $scope.getBaseUrl()\n }).success(function (data) {\n if ($scope.files.length === 0 || force) {\n $scope.files = data;\n _.forEach($scope.files, function (f) {\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n $scope.rebatch();\n } else {\n $scope.files.forEach(function (f) {\n const remoteStatus = _.find(data, _.matches({'name': f.name}));\n if (f.status && remoteStatus) {\n _.assign(f, remoteStatus);\n }\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n }\n // Need new status here\n if (force && 'user' === $scope.viewType) {\n $scope.files = _.filter($scope.files, function (f) {\n return f.status !== undefined;\n });\n }\n $scope.showClearStatuses = _.filter($scope.files, function (file) {\n return file.status === FILE_STATUS.DONE || file.status === FILE_STATUS.ERROR;\n }).length > 0;\n\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n\n $scope.loader = false;\n }).error(function (data) {\n toastr.warning('Could not get files; ' + getError(data));\n $scope.loader = false;\n });\n };\n\n // update the list instantly when the tab is changed\n $scope.$watch(function () {\n return $($scope.tabId).is(':visible');\n }, function () {\n if ($($scope.tabId).is(':visible')) {\n $scope.updateListHttp(false);\n $location.hash($scope.viewType);\n }\n });\n\n $scope.updateList = function (force) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n if (!$($scope.tabId).is(':visible')) {\n return;\n }\n $scope.updateListHttp(force);\n };\n\n $scope.init = function () {\n // Update restricted on repositoryIsSet\n $scope.setRestricted();\n if ($scope.isRestricted) {\n return;\n }\n $scope.updateList(true);\n $scope.getSettings();\n };\n\n $scope.$on('repositoryIsSet', $scope.init);\n\n $scope.pullList = function () {\n const timer = $interval(function () {\n // Skip iteration if we are updating something\n if (!$scope.updating) {\n $scope.updateList(false);\n }\n }, 4000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n $scope.getVisibleFiles = function () {\n return $filter('filter')($scope.files, {name: $scope.fileQuery, type: $scope.getTypeFilter()});\n };\n\n $scope.getTypeFilter = function () {\n if ($scope.viewType === 'server' && ($scope.showItems === 'file' || $scope.showItems === 'directory')) {\n return $scope.showItems;\n } else {\n return '';\n }\n };\n\n $scope.selectAllFiles = function () {\n $scope.getVisibleFiles().forEach(function (file) {\n $scope.fileChecked[file.name] = $scope.checkAll && $scope.importable(file);\n });\n };\n\n $scope.getSettingsFor = function (fileName, withDefaultSettings) {\n if (!withDefaultSettings && !_.isEmpty(fileName) && !_.isEmpty($scope.savedSettings[fileName])) {\n return $scope.savedSettings[fileName];\n } else {\n return angular.copy($scope.defaultSettings);\n }\n };\n\n $scope.setSettingsFor = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/settingsModal.html',\n controller: 'SettingsModalCtrl',\n resolve: {\n settings: function () {\n return angular.copy($scope.settings);\n },\n hasParserSettings: $scope.isLocalLocation,\n defaultSettings: function () {\n return $scope.defaultSettings;\n },\n isMultiple: function () {\n return !fileName;\n }\n },\n size: 'lg'\n });\n\n\n modalInstance.result.then(function (settings) {\n $scope.settings = settings;\n if ($scope.settingsFor === '') {\n $scope.importSelected();\n } else {\n $scope.importFile($scope.settingsFor, true);\n }\n\n }, function (settings) {\n $scope.settings = settings;\n });\n };\n\n $scope.updateImport = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n $scope.importFile(fileName, false);\n };\n\n $scope.stopImport = function (file) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl(),\n params: {name: file.name, type: file.type}\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.warning('Could not stop import; ' + getError(data));\n });\n };\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.hasImportable = function () {\n return _.filter($scope.files, function (f) {\n return $scope.importable(f);\n }).length > 0;\n };\n\n $scope.showTable = function () {\n const showTable = $scope.files.length > 0 && ('user' === $scope.viewType || 'server' === $scope.viewType);\n if ($scope.checkAll) {\n $scope.switchBatch(true);\n }\n return showTable;\n };\n\n $scope.switchBatch = function (all) {\n if (all) {\n $scope.selectAllFiles();\n } else {\n if ($scope.checkAll) {\n $scope.checkAll = false;\n }\n }\n $scope.batch = _.map(_.filter($scope.files, function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name').length > 0;\n };\n\n $scope.rebatch = function () {\n const newFileChecked = {};\n $scope.batch = false;\n _.each($scope.files, function (file) {\n newFileChecked[file.name] = $scope.fileChecked[file.name];\n $scope.batch |= $scope.fileChecked[file.name];\n });\n if (!$scope.batch) {\n $scope.checkAll = false;\n }\n $scope.fileChecked = newFileChecked;\n };\n\n $scope.getSelectedFiles = function () {\n return _.map(_.filter($scope.getVisibleFiles(), function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name');\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n\n // Calls the REST API sequentially for the selected files\n const importNext = function () {\n const fileName = selectedFileNames.shift();\n if (fileName) {\n if (overrideSettings) {\n $scope.settings = $scope.getSettingsFor(fileName);\n }\n $scope.importFile(fileName, true, importNext);\n }\n };\n\n importNext();\n };\n\n const resetStatusOrRemoveEntry = function (names, remove) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl() + '/status',\n params: {remove: remove},\n data: names,\n headers: {'Content-type': 'application/json;charset=utf-8'}\n }).success(function () {\n $scope.updateList(true);\n }).error(function (data) {\n toastr.warning('Could not clear status; ' + getError(data));\n });\n };\n\n $scope.resetStatus = function (names) {\n resetStatusOrRemoveEntry(names, false);\n };\n\n $scope.resetStatusSelected = function () {\n $scope.resetStatus($scope.getSelectedFiles());\n };\n\n $scope.removeEntry = function (names) {\n resetStatusOrRemoveEntry(names, true);\n };\n\n $scope.removeEntrySelected = function () {\n $scope.removeEntry($scope.getSelectedFiles());\n };\n\n $scope.isLocalLocation = function () {\n const location = $repositories.getActiveLocation();\n return location && location.local;\n };\n // Settings\n\n $scope.filterSettings = function (fileName) {\n let filtered = _.omitBy($scope.savedSettings[fileName], _.isNull);\n filtered = _.omit(filtered, ['repoLocationHash', 'status', 'message', 'name', 'data', 'type', 'format', 'fileNames', '$$hashKey']);\n return _.map(_.keys(filtered), function (key) {\n return [key, filtered[key]];\n });\n };\n\n $scope.getSettings = function () {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'GET',\n url: 'rest/data/import/settings/default'\n }).success(function (data) {\n $scope.defaultSettings = data;\n }).error(function (data) {\n toastr.warning('Could not get default settings; ' + getError(data));\n });\n };\n\n $scope.getBaseUrl = function () {\n return 'rest/data/import/' + $scope.viewUrl + '/' + $repositories.getActiveRepository();\n };\n\n $scope.pritifySettings = function (settings) {\n return JSON.stringify(settings, null, ' ');\n };\n\n $scope.toTitleCase = function (s) {\n if (!s) {\n return s;\n }\n return _.upperFirst(s.toLowerCase());\n };\n }]);\n\nimportCtrl.controller('ImportCtrl', ['$scope', '$http', 'toastr', '$controller', function ($scope, $http, toastr, $controller) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'server';\n $scope.defaultType = 'server';\n $scope.tabId = '#import-server';\n $scope.showItems = 'all';\n\n $scope.pullList();\n\n const importServerFiles = function (selectedFileNames, overrideSettings) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'POST',\n url: $scope.getBaseUrl(),\n data: {importSettings: overrideSettings ? null : $scope.settings, fileNames: selectedFileNames}\n }).success(function () {\n $scope.updateList();\n $scope.batch = false;\n $scope.fileChecked = {};\n }).error(function (data) {\n toastr.error('Could not send file for import; ' + getError(data));\n });\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n importServerFiles(selectedFileNames, overrideSettings);\n };\n\n $scope.importFile = function (fileName) {\n importServerFiles([fileName]);\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UploadCtrl', ['$scope', 'Upload', '$http', 'toastr', '$controller', '$uibModal', function ($scope, Upload, $http, toastr, $controller, $uibModal) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'upload';\n $scope.defaultType = 'file';\n $scope.tabId = '#import-user';\n\n $scope.pullList();\n\n $scope.currentFiles = [];\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.fileSelected = function ($files, $file, $newFiles, $duplicateFiles, $invalidFiles) {\n if ($invalidFiles.length > 0) {\n $invalidFiles.forEach(function (f) {\n toastr.warning('File ' + f.name + ' too big ' + Math.floor(f.size / (1024 * 1024)) + ' MB. Use Server Files import.');\n });\n }\n };\n\n $scope.$watchCollection('currentFiles', function () {\n function disallowBZip2Files() {\n $scope.currentFiles.forEach(function (f) {\n if (f.name.substr(f.name.lastIndexOf('.') + 1) === 'bz2') {\n const fileIdx = $scope.currentFiles.indexOf(f);\n if (fileIdx > -1) {\n $scope.currentFiles.splice(fileIdx, 1);\n }\n toastr.error('Could not upload file ' + f.name + '. BZip2 archives are not supported.');\n }\n });\n }\n\n if ($scope.currentFiles) {\n // RDF4J does not support decompressing .bz2 files so we want to reject importing them\n disallowBZip2Files();\n }\n $scope.files = _.uniqBy(\n _.union(\n _.map($scope.currentFiles, function (file) {\n return {name: file.name, type: 'file', file: file}\n }),\n $scope.files\n ),\n function (file) {\n return file.name;\n }\n );\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n _.each($scope.currentFiles, function (file) {\n $scope.updateImport(file.name);\n });\n });\n\n $scope.importFile = function (fileName, startImport, nextCallback) {\n const fileIndex = _.findIndex($scope.files, {name: fileName});\n if (fileIndex < 0) {\n toastr.warning('No such file; ' + fileName);\n } else {\n const file = $scope.files[fileIndex];\n if (file.type === 'text') {\n // Import text snippet\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/text',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not send data for import; ' + getError(data));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n } else if (file.type === 'url') {\n // Submit URL\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/url',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not send url for import; ' + getError(data));\n }).finally(nextCallback || function () {\n });\n } else {\n // Upload real file\n $scope.settings.name = file.name;\n let data;\n if (file.file) {\n data = {file: file.file, importSettings: Upload.jsonBlob($scope.settings)};\n } else {\n data = {importSettings: Upload.jsonBlob($scope.settings)};\n }\n Upload.upload({\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/file',\n data: data\n }).progress(function (evt) {\n if (file.file) {\n file.file = null;\n file.status = FILE_STATUS.UPLOADING;\n } else if (file.status !== FILE_STATUS.UPLOADING) {\n file.status = FILE_STATUS.PENDING;\n }\n\n if (file.status === FILE_STATUS.UPLOADING) {\n const progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n file.message = progressPercentage + '% uploaded';\n }\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not upload file; ' + getError(data));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n }\n }\n };\n\n $scope.updateTextImport = function (settings) {\n $scope.updating = true;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + '/update/text',\n data: settings\n }).success(function (data) {\n }).error(function (data) {\n toastr.error('Could not update text import; ' + getError(data));\n }).finally(function () {\n $scope.updating = false;\n });\n };\n\n $scope.pastedDataIdx = 1;\n\n const formattedDate = function () {\n const date = new Date();\n return date.getFullYear() + '-' + _.padStart(date.getMonth() + 1, 2, '0') + '-' + _.padStart(date.getDate(), 2, '0')\n + ' ' + _.padStart(date.getHours(), 2, '0') + ':' + _.padStart(date.getMinutes(), 2, '0') + ':' + _.padStart(date.getSeconds(), 2, '0')\n + '.' + _.padStart(date.getMilliseconds(), 3, '0');\n };\n\n $scope.pasteData = function (file) {\n const scope = {};\n if (file) {\n scope.rdfText = file.data;\n }\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/textSnippet.html',\n controller: 'TextCtrl',\n resolve: {\n text: function () {\n return file ? file.data : '';\n },\n format: function () {\n return file ? file.format : 'text/turtle';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n if (file) {\n if ((file.data !== data.text || file.format !== data.format) && file.status !== FILE_STATUS.NONE) {\n file.status = FILE_STATUS.NONE;\n file.message = 'Text snippet was edited but has not been imported again.';\n }\n file.data = data.text;\n file.format = data.format;\n $scope.updateTextImport(file);\n } else {\n file = {type: 'text', name: 'Text snippet ' + formattedDate(), format: data.format, data: data.text};\n $scope.files.unshift(file);\n $scope.updateImport(file.name);\n }\n if (data.startImport) {\n $scope.setSettingsFor(file.name);\n }\n });\n };\n\n $scope.rdfDataFromURL = function () {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/urlImport.html',\n controller: 'UrlCtrl',\n scope: $scope\n });\n\n modalInstance.result.then(function (data) {\n // URL may already exist\n const existing = _.find($scope.files, {type: 'url', name: data.url});\n if (existing) {\n existing.format = data.format;\n } else {\n $scope.files.unshift({type: 'url', name: data.url, format: data.format, data: data.url});\n }\n $scope.updateImport(data.url, true);\n if (data.startImport) {\n $scope.setSettingsFor(data.url, true);\n }\n });\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UrlCtrl', ['$scope', '$uibModalInstance', 'toastr', function ($scope, $uibModalInstance) {\n $scope.importFormat = {name: 'Auto', type: ''};\n $scope.startImport = true;\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $uibModalInstance.close({\n url: $scope.dataUrl,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TextCtrl', ['$scope', '$uibModalInstance', 'text', 'format', function ($scope, $uibModalInstance, text, format) {\n $scope.importFormats = [\n {name: 'RDF/JSON', type: 'application/rdf+json'},\n {name: 'JSON-LD', type: 'application/ld+json'},\n {name: 'RDF/XML', type: 'application/rdf+xml'},\n {name: 'N3', type: 'text/rdf+n3'},\n {name: 'N-Triples', type: 'text/plain'},\n {name: 'N-Quads', type: 'text/x-nquads'},\n {name: 'Turtle', type: 'text/turtle'},\n {name: 'Turtle*', type: 'application/x-turtlestar'},\n {name: 'TriX', type: 'application/trix'},\n {name: 'TriG', type: 'application/x-trig'},\n {name: 'TriG*', type: 'application/x-trigstar'},\n ];\n\n $scope.rdfText = text;\n $scope.importFormat = _.find($scope.importFormats, {type: format});\n $scope.startImport = true;\n\n $scope.setFormat = function (format) {\n $scope.importFormat = format;\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $uibModalInstance.close({\n text: $scope.rdfText,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TabCtrl', ['$scope', '$location', function ($scope, $location) {\n $scope.viewType = $location.hash();\n if ($scope.viewType !== 'user' && $scope.viewType !== 'server') {\n $scope.viewType = 'user';\n }\n $scope.isCollapsed = false;\n if ($scope.viewType === 'user') {\n $scope.templateUrl = 'js/angular/import/templates/uploadInfo.html';\n } else {\n $scope.templateUrl = 'js/angular/import/templates/importInfo.html';\n }\n $scope.changeHelpTemplate = function (templateFile) {\n $scope.templateUrl = 'js/angular/import/templates/' + templateFile;\n };\n $scope.commonUrl = 'js/angular/import/templates/commonInfo.html';\n}]);\n\nimportCtrl.controller('SettingsModalCtrl', ['$scope', '$uibModalInstance', 'toastr', 'UriUtils', 'settings', 'hasParserSettings', 'defaultSettings', 'isMultiple',\n function ($scope, $uibModalInstance, toastr, UriUtils, settings, hasParserSettings, defaultSettings, isMultiple) {\n $scope.hasError = function (error, input) {\n return _.find(error, function (o) {\n return input === o['$name'];\n });\n };\n\n $scope.settings = settings;\n $scope.hasParserSettings = hasParserSettings;\n if ($scope.settings.context) {\n if ($scope.settings.context === 'default') {\n $scope.target = 'default';\n $scope.settings.context = '';\n } else {\n $scope.target = 'named';\n }\n } else {\n $scope.target = 'data';\n }\n $scope.isMultiple = isMultiple;\n $scope.enableReplace = !!($scope.settings.replaceGraphs && $scope.settings.replaceGraphs.length);\n\n const fixSettings = function () {\n if ($scope.target === 'default') {\n $scope.settings.context = 'default';\n } else if ($scope.target === 'data') {\n $scope.settings.context = '';\n }\n if ($scope.enableReplace) {\n if ($scope.target === 'default' || $scope.target === 'named') {\n $scope.settings.replaceGraphs = [$scope.settings.context];\n }\n } else {\n $scope.settings.replaceGraphs = [];\n }\n };\n\n $scope.ok = function () {\n // resets the validity of a field only used for temporary things\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', true);\n\n if ($scope.settingsForm.$valid) {\n fixSettings();\n $uibModalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n fixSettings();\n $uibModalInstance.dismiss($scope.settings);\n };\n\n $scope.reset = function () {\n $scope.settings = angular.copy(defaultSettings);\n $scope.target = 'data';\n };\n\n $scope.addReplaceGraph = function (graph) {\n let valid = true;\n if (graph !== 'default') {\n valid = UriUtils.isValidIri(graph);\n }\n $scope.settingsForm.replaceGraph.$setTouched();\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', valid);\n\n if ($scope.settingsForm.replaceGraph.$valid) {\n $scope.settings.replaceGraphs = $scope.settings.replaceGraphs || [];\n if (_.indexOf($scope.settings.replaceGraphs, graph) === -1) {\n $scope.replaceGraph = '';\n $scope.settings.replaceGraphs.push(graph);\n } else {\n toastr.warning('This graph is already in the list.');\n }\n }\n };\n\n $scope.checkEnterReplaceGraph = function (event, graph) {\n if (event.keyCode === 13) {\n event.preventDefault();\n\n $scope.addReplaceGraph(graph);\n }\n };\n\n $scope.showAdvancedSettings = false;\n $scope.switchParserSettings = function () {\n $scope.showAdvancedSettings = !$scope.showAdvancedSettings;\n };\n}]);\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[111],{164:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="sparql-content">\n <div ng-hide="viewMode == \'editor\'"\n ng-class="orientationViewMode ? \'row\' : viewMode == \'yasr\' ? \'col-xs-12\' : \'col-xs-6\'" ng-style="noPadding">\n <div class="col-xs-12 mb-1" ng-style="noPadding">\n\n <ul class="nav nav-tabs">\n <li ng-hide="notabs" role="presentation" ng-repeat="tab in tabs" ng-click="focusQueryEditor()"\n class="nav-item sparql-tab">\n <sparql-tab\n data-id="{{tab.id}}"\n class="nav-link">\n </sparql-tab>\n </li>\n <li ng-hide="notabs" role="presentation" ng-click="focusQueryEditor()" class="nav-item">\n <span id="wb-sparql-addNewTab" ng-click="addNewTab()" class="nav-link">\n \t<button class="btn btn-link btn-sm secondary"><span class="icon-plus"></span></button>\n </span>\n </li>\n </ul>\n\n <script type="text/ng-template" id="sampleQueriesPopoverTemplate.html">\n <ul id="wb-sparql-queryInSampleQueries" class="list-unstyled">\n <li ng-repeat="query in sampleQueries" ng-hide="ignoreSharedQueries && query.owner != principal().username" class="hovered-parent saved-query">\n <a href ng-click="querySelected(query)">{{query.name}}</a>\n &nbsp;\n <em class="icon-warning" ng-show="query.owner != principal().username && isUser()"\n uib-popover="Query shared by another user. You may not edit or delete it."\n popover-trigger="mouseenter"></em>\n <span class="actions-bar hovered-item">\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n uib-popover="Edit query" popover-trigger="mouseenter"\n ng-click="editQuery(query)">\n\t\t\t\t\t\t\t\t<span class="icon-edit"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n uib-popover="Delete query" popover-trigger="mouseenter"\n ng-click="deleteQuery(query.name)">\n\t\t\t\t\t\t\t\t<span class="icon-trash"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n uib-popover="Get URL to query" popover-trigger="mouseenter"\n ng-click="copyToClipboardQuery(query.name, query.owner)">\n\t\t\t\t\t\t\t\t<span class="icon-link"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</span>\n </li>\n </ul>\n <\/script>\n\n \x3c!--\n <div class="collapse width pull-right well" id="sampleQueriesCollapse">\n <div class="list-group-item-heading">Select saved query from the list</div>\n <ul id="wb-sparql-queryInSampleQueries" class="queries list-unstyled">\n <li ng-repeat="query in sampleQueries">\n\n <a href="#" ng-click="querySelected(query.body)"><i class="fa fa-1x fa-caret-right"></i>{{query.name}}</a>\n <span>\n <i ng-show="canWriteActiveRepo()" uib-tooltip="Edit query" tooltip-trigger="mouseenter" href="#" class="fa fa-pencil-square-o fa-1x editSampleQuery" ng-click="editQuery(query)"></i>\n <i ng-show="canWriteActiveRepo()" uib-tooltip="Delete query" tooltip-trigger="mouseenter" href="#" class="fa fa-trash-o fa-1x deleteSampleQuery" ng-click="deleteQuery(query.name)"></i>\n <i uib-tooltip="Get URL to query" tooltip-trigger="mouseenter" href="#" class="fa fa-link fa-1x" ng-click="copyToClipboardQuery(query.name)"></i>\n </span>\n </li>\n </ul>\n </div>\n --\x3e\n\n <div id="queryEditor">\n <textarea ng-model="query" id="query" rows="16" cols="100"></textarea>\n\n <div id="yasqe_buttons_mocked" style="display: none"></div>\n <div id="yasqe_buttons" ng-hide="notoolbar">\n <div id="buttons">\n <button class="btn btn-link" id="wb-sparql-saveQuery"\n ng-show="!notoolbarSaved && isUser()"\n ng-click="saveTab(currentQuery.id); saveQuery(currentQuery);"\n data-container="#queryEditor"\n uib-tooltip="Create saved query"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter">\n <em class="icon-save icon-2-5x"></em>\n </button>\n \x3c!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex --\x3e\n <a tabindex="0" class="btn btn-link" id="wb-sparql-toggleSampleQueries"\n ng-hide="notoolbarSaved"\n ng-click="toggleSampleQueries()"\n data-container="#queryEditor"\n uib-tooltip="Show saved queries"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter"\n uib-popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true">\n \x3c!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) --\x3e\n <span class="icon-folder icon-2-5x"\n uib-popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true"></span>\n </a>\n <button class="btn btn-link" id="wb-sparql-copyToClipboardQuery"\n ng-hide="notoolbarCopy"\n ng-click="copyToClipboardQuery()"\n uib-tooltip="Get URL to current query"\n tooltip-append-to-body="true">\n <span class="icon-link icon-2-5x"></span>\n </button>\n <button class="btn btn-link" id="inference"\n ng-hide="notoolbarInference"\n ng-click="currentQuery.inference = !currentQuery.inference"\n uib-tooltip="Include inferred data in results: {{currentQuery.inference ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n ng-class="{\'icon-inferred-on\':currentQuery.inference, \'icon-inferred-off\':!currentQuery.inference}"></span>\n </button>\n <button class="btn btn-link" id="sameAs"\n ng-hide="notoolbarSameAs"\n ng-click="currentQuery.sameAs = !currentQuery.sameAs"\n uib-tooltip="Expand results over owl:sameAs: {{currentQuery.sameAs ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n tooltip="{{!currentQuery.inference ? \'Requires \\\'Include Inferred\\\'!\' : \'\'}}"\n ng-class="{\'icon-sameas-on\':currentQuery.sameAs, \'icon-sameas-off\':!currentQuery.sameAs}"></span>\n </button>\n </div>\n </div>\n <div id="runButton" ng-hide="norun">\n <button id="wb-sparql-runQuery" class="btn btn-primary" ng-disabled="queryIsRunning"\n ng-click="runQuery(false, $event.shiftKey)">\n {{runButtonName}}\n </button>\n </div>\n <div>\n <keyboard-shortcuts template-url="res/sparql/keyboard-shortcuts.html"></keyboard-shortcuts>\n </div>\n \x3c!--\n <div id="checkboxes">\n --\x3e\n \x3c!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\n <input id="sameAs" ng-model="currentQuery.sameAs" data-label="disable sameAs" name="equivalent" value="http://www.ontotext.com/disable-sameAs" type="checkbox"/> --\x3e\n \x3c!--\n <label>\n <input id="inference" ng-model="currentQuery.inference" type="checkbox" value="true" />\n Include inferred\n </label>\n </div>\n --\x3e\n </div>\n \x3c!--<div id="separator" ng-if="!orientationViewMode" ng-mousedown="onDragStart($event)" draggable="true" ondragend="angular.element(this).scope().onDragEnd(event)"></div>--\x3e\n </div>\n\n </div>\n\n <div class="clearfix mb-2" ng-hide="viewMode === \'yasr\'" id="yasr"\n ng-class="orientationViewMode ? \'col-xs-12 col-lg-12\' : viewMode == \'editor\' ? \'col-xs-12 vertical\' : \'col-xs-6 vertical\'">\n <uib-pagination\n class="nav navbar-right"\n ng-show="currentTabConfig.queryType != \'UPDATE\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize"\n total-items="currentTabConfig.allResultsCount"\n items-per-page="currentTabConfig.pageSize"\n ng-model="currentTabConfig.page"\n ng-change="changePagination()"\n direction-links="true"\n boundary-l\n max-size="5"\n rotate="true"\n previous-text="&lsaquo;"\n next-text="&rsaquo;"\n first-text="&laquo;"\n last-text="&raquo;">\n </uib-pagination>\n\n <div class="yasr" id="yasr-inner">\n <div ng-hide="nostatus || currentTabConfig.queryType || queryIsRunning"\n class="alert alert-info no-icon no-query-run">No results from previous run.\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\n </div>\n \x3c!--ng-show="!queryIsRunning">--\x3e\n <div class=\'yasr_header mb-1 clearfix\'\n ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && currentTabConfig.queryType != \'ASK\' && !queryIsRunning">\n <div class="resultsVisualButton btn-group pull-right">\n <button class="btn btn-primary btn-sm" ng-show="!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \'CONSTRUCT\' || currentTabConfig.queryType == \'DESCRIBE\')"\n ng-click="goToVisual()">\n Visual\n </button>\n </div>\n </div>\n <h6 class="alert alert-danger no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.errorMessage">Error: {{currentTabConfig.errorMessage}}</h6>\n <h6 class="alert alert-warning no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.warningMessage">Warning: {{currentTabConfig.warningMessage}}</h6>\n <div class="alert alert-info no-icon results-info"\n ng-show="!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning">\n <div class="text-xs-right">\n <span class="icon-warning icon-lg"\n ng-show="getStaleWarningMessage()"\n uib-tooltip="{{getStaleWarningMessage()}}" tooltip-trigger="mouseenter"\n tooltip-append-to-body="true"></span>\n <span ng-show="currentTabConfig.queryType != \'ASK\'" class="results-description">\n {{getResultsDescription()}}\n </span>\n <span ng-show="currentTabConfig.timeTook" class="query-duration">\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n </div>\n <div class=\'alert alert-info no-icon update-info\'\n ng-show="!nostatus && currentTabConfig.queryType == \'UPDATE\' && !queryIsRunning">\n {{getUpdateDescription()}}\n <span ng-show="currentTabConfig.timeTook">\n {{currentTabConfig.customUpdateMessage ? \'Operation\' : \'Update\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n <div class="alert alert-danger no-icon results-info update-info" ng-show="currentTabConfig.queryType == \'ERROR\'">\n <div>\n <div class="pull-right" ng-show="currentTabConfig.timeTook">\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </div>\n <h6>Error<span ng-show="yasr.results.getException().status > 0"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\n </div>\n\n <div class="plaintext">{{yasr.results.getException().responseText}}</div>\n </div>\n <div class=\'yasr_results\' ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning"></div>\n </div>\n\n <div ng-show="queryIsRunning && currentTrackAlias" class="qe-aborter">\n <div disabled-wrapper class="d-inline-block" uib-popover="{{abortRequested ? (lastRunQueryMode === \'update\' ? \'Update was requested to abort and will be terminated if possible\' : \'Query was requested to abort and will be terminated on the first I/O operation\') : (lastRunQueryMode === \'update\' ? \'Click to abort update\' : \'Click to abort query\')}}"\n popover-trigger="mouseenter"\n popover-placement="left">\n <div ng-class="abortRequested ? \'disabled\' : \'\'"> \x3c!-- Keep this div --\x3e\n <button ng-disabled="abortRequested" class="btn btn-xs btn-primary"\n ng-click="abortCurrentQuery()" ng-hide="!isUserLoggedIn() && isSecurityEnabled()">\n {{abortRequested ? \'Stop has been requested\' : (lastRunQueryMode === \'update\' ? \'Abort update\' : \'Abort query\')}}\n </button>\n </div>\n </div>\n </div>\n\n <div onto-loader-new\n ng-if="queryIsRunning"\n ng-show="queryIsRunning"\n class="sparql-loader"\n size="75"\n message="getLoaderMessage"\n timeout="[1]">\n </div>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=111.73819c3722ceee587ce7.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/templates/query-editor.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,o+fAGP,OAAOA","file":"111.73819c3722ceee587ce7.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"sparql-content\">\\n <div ng-hide=\"viewMode == \\'editor\\'\"\\n ng-class=\"orientationViewMode ? \\'row\\' : viewMode == \\'yasr\\' ? \\'col-xs-12\\' : \\'col-xs-6\\'\" ng-style=\"noPadding\">\\n <div class=\"col-xs-12 mb-1\" ng-style=\"noPadding\">\\n\\n <ul class=\"nav nav-tabs\">\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-repeat=\"tab in tabs\" ng-click=\"focusQueryEditor()\"\\n class=\"nav-item sparql-tab\">\\n <sparql-tab\\n data-id=\"{{tab.id}}\"\\n class=\"nav-link\">\\n </sparql-tab>\\n </li>\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-click=\"focusQueryEditor()\" class=\"nav-item\">\\n <span id=\"wb-sparql-addNewTab\" ng-click=\"addNewTab()\" class=\"nav-link\">\\n \t<button class=\"btn btn-link btn-sm secondary\"><span class=\"icon-plus\"></span></button>\\n </span>\\n </li>\\n </ul>\\n\\n <script type=\"text/ng-template\" id=\"sampleQueriesPopoverTemplate.html\">\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\" ng-hide=\"ignoreSharedQueries && query.owner != principal().username\" class=\"hovered-parent saved-query\">\\n <a href ng-click=\"querySelected(query)\">{{query.name}}</a>\\n &nbsp;\\n <em class=\"icon-warning\" ng-show=\"query.owner != principal().username && isUser()\"\\n uib-popover=\"Query shared by another user. You may not edit or delete it.\"\\n popover-trigger=\"mouseenter\"></em>\\n <span class=\"actions-bar hovered-item\">\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n uib-popover=\"Edit query\" popover-trigger=\"mouseenter\"\\n ng-click=\"editQuery(query)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-edit\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n uib-popover=\"Delete query\" popover-trigger=\"mouseenter\"\\n ng-click=\"deleteQuery(query.name)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-trash\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n uib-popover=\"Get URL to query\" popover-trigger=\"mouseenter\"\\n ng-click=\"copyToClipboardQuery(query.name, query.owner)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-link\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t</span>\\n </li>\\n </ul>\\n </script>\\n\\n <!--\\n <div class=\"collapse width pull-right well\" id=\"sampleQueriesCollapse\">\\n <div class=\"list-group-item-heading\">Select saved query from the list</div>\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"queries list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\">\\n\\n <a href=\"#\" ng-click=\"querySelected(query.body)\"><i class=\"fa fa-1x fa-caret-right\"></i>{{query.name}}</a>\\n <span>\\n <i ng-show=\"canWriteActiveRepo()\" uib-tooltip=\"Edit query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-pencil-square-o fa-1x editSampleQuery\" ng-click=\"editQuery(query)\"></i>\\n <i ng-show=\"canWriteActiveRepo()\" uib-tooltip=\"Delete query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-trash-o fa-1x deleteSampleQuery\" ng-click=\"deleteQuery(query.name)\"></i>\\n <i uib-tooltip=\"Get URL to query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-link fa-1x\" ng-click=\"copyToClipboardQuery(query.name)\"></i>\\n </span>\\n </li>\\n </ul>\\n </div>\\n -->\\n\\n <div id=\"queryEditor\">\\n <textarea ng-model=\"query\" id=\"query\" rows=\"16\" cols=\"100\"></textarea>\\n\\n <div id=\"yasqe_buttons_mocked\" style=\"display: none\"></div>\\n <div id=\"yasqe_buttons\" ng-hide=\"notoolbar\">\\n <div id=\"buttons\">\\n <button class=\"btn btn-link\" id=\"wb-sparql-saveQuery\"\\n ng-show=\"!notoolbarSaved && isUser()\"\\n ng-click=\"saveTab(currentQuery.id); saveQuery(currentQuery);\"\\n data-container=\"#queryEditor\"\\n uib-tooltip=\"Create saved query\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\">\\n <em class=\"icon-save icon-2-5x\"></em>\\n </button>\\n <!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex -->\\n <a tabindex=\"0\" class=\"btn btn-link\" id=\"wb-sparql-toggleSampleQueries\"\\n ng-hide=\"notoolbarSaved\"\\n ng-click=\"toggleSampleQueries()\"\\n data-container=\"#queryEditor\"\\n uib-tooltip=\"Show saved queries\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\"\\n uib-popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\">\\n <!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) -->\\n <span class=\"icon-folder icon-2-5x\"\\n uib-popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\"></span>\\n </a>\\n <button class=\"btn btn-link\" id=\"wb-sparql-copyToClipboardQuery\"\\n ng-hide=\"notoolbarCopy\"\\n ng-click=\"copyToClipboardQuery()\"\\n uib-tooltip=\"Get URL to current query\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-link icon-2-5x\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"inference\"\\n ng-hide=\"notoolbarInference\"\\n ng-click=\"currentQuery.inference = !currentQuery.inference\"\\n uib-tooltip=\"Include inferred data in results: {{currentQuery.inference ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n ng-class=\"{\\'icon-inferred-on\\':currentQuery.inference, \\'icon-inferred-off\\':!currentQuery.inference}\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"sameAs\"\\n ng-hide=\"notoolbarSameAs\"\\n ng-click=\"currentQuery.sameAs = !currentQuery.sameAs\"\\n uib-tooltip=\"Expand results over owl:sameAs: {{currentQuery.sameAs ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n tooltip=\"{{!currentQuery.inference ? \\'Requires \\\\\\'Include Inferred\\\\\\'!\\' : \\'\\'}}\"\\n ng-class=\"{\\'icon-sameas-on\\':currentQuery.sameAs, \\'icon-sameas-off\\':!currentQuery.sameAs}\"></span>\\n </button>\\n </div>\\n </div>\\n <div id=\"runButton\" ng-hide=\"norun\">\\n <button id=\"wb-sparql-runQuery\" class=\"btn btn-primary\" ng-disabled=\"queryIsRunning\"\\n ng-click=\"runQuery(false, $event.shiftKey)\">\\n {{runButtonName}}\\n </button>\\n </div>\\n <div>\\n <keyboard-shortcuts template-url=\"res/sparql/keyboard-shortcuts.html\"></keyboard-shortcuts>\\n </div>\\n <!--\\n <div id=\"checkboxes\">\\n -->\\n <!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\\n <input id=\"sameAs\" ng-model=\"currentQuery.sameAs\" data-label=\"disable sameAs\" name=\"equivalent\" value=\"http://www.ontotext.com/disable-sameAs\" type=\"checkbox\"/> -->\\n <!--\\n <label>\\n <input id=\"inference\" ng-model=\"currentQuery.inference\" type=\"checkbox\" value=\"true\" />\\n Include inferred\\n </label>\\n </div>\\n -->\\n </div>\\n <!--<div id=\"separator\" ng-if=\"!orientationViewMode\" ng-mousedown=\"onDragStart($event)\" draggable=\"true\" ondragend=\"angular.element(this).scope().onDragEnd(event)\"></div>-->\\n </div>\\n\\n </div>\\n\\n <div class=\"clearfix mb-2\" ng-hide=\"viewMode === \\'yasr\\'\" id=\"yasr\"\\n ng-class=\"orientationViewMode ? \\'col-xs-12 col-lg-12\\' : viewMode == \\'editor\\' ? \\'col-xs-12 vertical\\' : \\'col-xs-6 vertical\\'\">\\n <uib-pagination\\n class=\"nav navbar-right\"\\n ng-show=\"currentTabConfig.queryType != \\'UPDATE\\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize\"\\n total-items=\"currentTabConfig.allResultsCount\"\\n items-per-page=\"currentTabConfig.pageSize\"\\n ng-model=\"currentTabConfig.page\"\\n ng-change=\"changePagination()\"\\n direction-links=\"true\"\\n boundary-l\\n max-size=\"5\"\\n rotate=\"true\"\\n previous-text=\"&lsaquo;\"\\n next-text=\"&rsaquo;\"\\n first-text=\"&laquo;\"\\n last-text=\"&raquo;\">\\n </uib-pagination>\\n\\n <div class=\"yasr\" id=\"yasr-inner\">\\n <div ng-hide=\"nostatus || currentTabConfig.queryType || queryIsRunning\"\\n class=\"alert alert-info no-icon no-query-run\">No results from previous run.\\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\\n </div>\\n <!--ng-show=\"!queryIsRunning\">-->\\n <div class=\\'yasr_header mb-1 clearfix\\'\\n ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && currentTabConfig.queryType != \\'ASK\\' && !queryIsRunning\">\\n <div class=\"resultsVisualButton btn-group pull-right\">\\n <button class=\"btn btn-primary btn-sm\" ng-show=\"!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \\'CONSTRUCT\\' || currentTabConfig.queryType == \\'DESCRIBE\\')\"\\n ng-click=\"goToVisual()\">\\n Visual\\n </button>\\n </div>\\n </div>\\n <h6 class=\"alert alert-danger no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.errorMessage\">Error: {{currentTabConfig.errorMessage}}</h6>\\n <h6 class=\"alert alert-warning no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.warningMessage\">Warning: {{currentTabConfig.warningMessage}}</h6>\\n <div class=\"alert alert-info no-icon results-info\"\\n ng-show=\"!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\">\\n <div class=\"text-xs-right\">\\n <span class=\"icon-warning icon-lg\"\\n ng-show=\"getStaleWarningMessage()\"\\n uib-tooltip=\"{{getStaleWarningMessage()}}\" tooltip-trigger=\"mouseenter\"\\n tooltip-append-to-body=\"true\"></span>\\n <span ng-show=\"currentTabConfig.queryType != \\'ASK\\'\" class=\"results-description\">\\n {{getResultsDescription()}}\\n </span>\\n <span ng-show=\"currentTabConfig.timeTook\" class=\"query-duration\">\\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n </div>\\n <div class=\\'alert alert-info no-icon update-info\\'\\n ng-show=\"!nostatus && currentTabConfig.queryType == \\'UPDATE\\' && !queryIsRunning\">\\n {{getUpdateDescription()}}\\n <span ng-show=\"currentTabConfig.timeTook\">\\n {{currentTabConfig.customUpdateMessage ? \\'Operation\\' : \\'Update\\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n <div class=\"alert alert-danger no-icon results-info update-info\" ng-show=\"currentTabConfig.queryType == \\'ERROR\\'\">\\n <div>\\n <div class=\"pull-right\" ng-show=\"currentTabConfig.timeTook\">\\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </div>\\n <h6>Error<span ng-show=\"yasr.results.getException().status > 0\"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\\n </div>\\n\\n <div class=\"plaintext\">{{yasr.results.getException().responseText}}</div>\\n </div>\\n <div class=\\'yasr_results\\' ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\"></div>\\n </div>\\n\\n <div ng-show=\"queryIsRunning && currentTrackAlias\" class=\"qe-aborter\">\\n <div disabled-wrapper class=\"d-inline-block\" uib-popover=\"{{abortRequested ? (lastRunQueryMode === \\'update\\' ? \\'Update was requested to abort and will be terminated if possible\\' : \\'Query was requested to abort and will be terminated on the first I/O operation\\') : (lastRunQueryMode === \\'update\\' ? \\'Click to abort update\\' : \\'Click to abort query\\')}}\"\\n popover-trigger=\"mouseenter\"\\n popover-placement=\"left\">\\n <div ng-class=\"abortRequested ? \\'disabled\\' : \\'\\'\"> <!-- Keep this div -->\\n <button ng-disabled=\"abortRequested\" class=\"btn btn-xs btn-primary\"\\n ng-click=\"abortCurrentQuery()\" ng-hide=\"!isUserLoggedIn() && isSecurityEnabled()\">\\n {{abortRequested ? \\'Stop has been requested\\' : (lastRunQueryMode === \\'update\\' ? \\'Abort update\\' : \\'Abort query\\')}}\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div onto-loader-new\\n ng-if=\"queryIsRunning\"\\n ng-show=\"queryIsRunning\"\\n class=\"sparql-loader\"\\n size=\"75\"\\n message=\"getLoaderMessage\"\\n timeout=\"[1]\">\\n </div>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[112],{165:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='\x3c!-- Start QuerySample modal --\x3e\n\n<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<form novalidate ng-submit="ok()" name="form" class="save-query-form">\n <div class="modal-body">\n <input id="wb-sparql-sampleName" required type="text" ng-model="query.name" class="form-control"\n ng-change="queryExists = false"\n placeholder="Enter Title"/>\n <label for="share-query"\n uib-tooltip="If checked other users will be able to see the query but not delete or edit it.">\n <input id="share-query" type="checkbox" ng-model="query.shared">\n Share query with other users\n </label>\n <input style="height: 0; border: 0; padding: 0; margin: 0;" autofocus/>\n <br>\n <textarea id="wb-sparql-sampleValue" required rows="8" class="form-control" ng-model="query.body"\n placeholder="Create your Sample Query" ng-blur="errorMsg = \'\'"></textarea>\n <div class="saved-query-errors">\n <div ng-show="form.$error.required.length" >\n <div ng-hide="query.name" class="alert alert-danger empty-query-name-err" style="margin-top: 5px;">\n Name cannot be empty!\n </div>\n <div ng-hide="query.body" class="alert alert-danger empty-query-err" style="margin-top: 5px;">\n Query cannot be empty!\n </div>\n </div>\n <div ng-hide="form.$error.required.length" ng-if="queryExists" class="alert alert-danger query-exists-error"\n style="margin-top: 5px;">\n Query with name <strong>&#39;{{query.name}}&#39;</strong> already exists!\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary cancel-btn" ng-click="cancel()">Cancel</button>\n <button id="wb-sparql-submit" class="btn btn-primary create-btn" ng-click="ok()" type="submit">\n {{okButtonText}}\n </button>\n </div>\n</form>\n\n\x3c!-- End QuerySample modal --\x3e\n';return __p}}}]);
2
+ //# sourceMappingURL=112.b48a6ea437c1c3ddd7b5.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/templates/query-sample.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,yqEAGP,OAAOA","file":"112.b48a6ea437c1c3ddd7b5.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<!-- Start QuerySample modal -->\\n\\n<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">{{title}}</h3>\\n</div>\\n<form novalidate ng-submit=\"ok()\" name=\"form\" class=\"save-query-form\">\\n <div class=\"modal-body\">\\n <input id=\"wb-sparql-sampleName\" required type=\"text\" ng-model=\"query.name\" class=\"form-control\"\\n ng-change=\"queryExists = false\"\\n placeholder=\"Enter Title\"/>\\n <label for=\"share-query\"\\n uib-tooltip=\"If checked other users will be able to see the query but not delete or edit it.\">\\n <input id=\"share-query\" type=\"checkbox\" ng-model=\"query.shared\">\\n Share query with other users\\n </label>\\n <input style=\"height: 0; border: 0; padding: 0; margin: 0;\" autofocus/>\\n <br>\\n <textarea id=\"wb-sparql-sampleValue\" required rows=\"8\" class=\"form-control\" ng-model=\"query.body\"\\n placeholder=\"Create your Sample Query\" ng-blur=\"errorMsg = \\'\\'\"></textarea>\\n <div class=\"saved-query-errors\">\\n <div ng-show=\"form.$error.required.length\" >\\n <div ng-hide=\"query.name\" class=\"alert alert-danger empty-query-name-err\" style=\"margin-top: 5px;\">\\n Name cannot be empty!\\n </div>\\n <div ng-hide=\"query.body\" class=\"alert alert-danger empty-query-err\" style=\"margin-top: 5px;\">\\n Query cannot be empty!\\n </div>\\n </div>\\n <div ng-hide=\"form.$error.required.length\" ng-if=\"queryExists\" class=\"alert alert-danger query-exists-error\"\\n style=\"margin-top: 5px;\">\\n Query with name <strong>&#39;{{query.name}}&#39;</strong> already exists!\\n </div>\\n </div>\\n </div>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary cancel-btn\" ng-click=\"cancel()\">Cancel</button>\\n <button id=\"wb-sparql-submit\" class=\"btn btn-primary create-btn\" ng-click=\"ok()\" type=\"submit\">\\n {{okButtonText}}\\n </button>\\n </div>\\n</form>\\n\\n<!-- End QuerySample modal -->\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[113],{166:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=1.11.3-TR1" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n uib-tooltip="Close search" tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n uib-tooltip="Search RDF resources"\n tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=113.09a0a17c31bfc387c352.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,07CAGP,OAAOA","file":"113.09a0a17c31bfc387c352.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=1.11.3-TR1\" rel=\"stylesheet\"/>\\n\\n<div ng-if=\"getActiveRepository() && hasActiveLocation() && isNotLoading()\" ng-cloak>\\n <div id=\"search-box\" class=\"card search-rdf-input\" ng-keydown=\"onKeyDown($event)\" ng-if=\"!isHomePage()\">\\n <div class=\"card-block\">\\n <search-resource-input namespacespromise=\"getNamespacesPromise\"\\n autocompletepromisestatus=\"getAutocompletePromise\"\\n empty=\"empty\"\\n open-in-new-tab=\"true\"\\n preserve-search=\"true\"\\n radio-buttons=\"true\"\\n clear-input-icon=\"true\">\\n </search-resource-input>\\n <button class=\"btn btn-link close-rdf-search-btn\"\\n uib-tooltip=\"Close search\" tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"hideInput()\">\\n <i class=\"icon-close icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n </div>\\n </div>\\n <button class=\"btn btn-link search-rdf-btn\"\\n uib-tooltip=\"Search RDF resources\"\\n tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"showInput()\">\\n <i class=\"icon-search icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[114],{167:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="mb-2 row" ng-hide="getActiveRepository() && !isRestricted">\n <div role="alert">\n <div class="mb-1 mt-1 ml-1 mr-1">\n <div class="card repository-errors">\n <div class="alert alert-warning lead">\n <div ng-if="!getActiveRepository()" >Some functionalities are not available because you are not connected to any repository.</div>\n <div id="restrictedDiv" ng-if="getActiveRepository() && isRestricted">Some functionalities are not available because\n <span ng-if="isSecurityEnabled() && !canWriteActiveRepo()">you have no write permission to repository </span>\n <strong ng-if="isActiveRepoOntopType()">{{getActiveRepository()}}</strong>\n <span ng-if="canWriteActiveRepo() && isActiveRepoOntopType()"> is read-only Virtual Repository</span>\n <span ng-if="canWriteActiveRepo() && isActiveRepoFedXType()"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\n <small>\n <span ng-if="getAccessibleRepositories().length">\n Click one of the repositories below to connect to it<span ng-if="canManageRepositories()"> or create a new repository</span>.\n </span>\n\n <span ng-hide="getAccessibleRepositories().length">\n There are no accessible <span ng-if="isRestricted">writable </span>repositories<span ng-if="canManageRepositories()">. You can create a new repository</span>.\n </span>\n </small>\n </div>\n\n <ul class="list-group limit-height clearfix two-columns repos" ng-mouseleave="hidePopoverForRepo($event)">\n <li ng-repeat="repository in getAccessibleRepositories() | orderBy: [\'type === \\\'system\\\'\', \'id\']"\n ng-if="repository.id !== getActiveRepository()"\n class="list-group-item list-group-item-action repository"\n ng-mouseenter="showPopoverForRepo($event, repository)" ngx-mouseleave="setPopoverForRepo($event, repository, false)">\n <div class="lead ellipsis-block" ng-click="setRepository(repository.id)">\n <span class="popover-anchor"\n popover-popup-delay="500"\n popover-trigger="show" popover-placement="{{$index % 2 === 0 ? \'bottom-right\' : \'left-bottom\'}}"\n popover-template="popoverTemplate" popover-title="Repository {{repository.id}}">\n <em class="icon-lg" ng-class="\'icon-repo-\' + repository.type"></em>\n <strong>{{repository.id}}</strong></span><small ng-show="repository.title"><span class="small"> &middot; {{repository.title}}</span></small>\n </div>\n </li>\n </ul>\n\n <div class="pull-right" ng-if="canManageRepositories()">\n <button class="btn btn-link px-0 create-repository-btn" ng-click="goToAddRepo()">\n <span class="icon-plus"></span> Create new repository\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n';return __p}}}]);
2
- //# sourceMappingURL=114.edebb3161ce52d4ca2e1.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[114],{167:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="mb-2 row" ng-hide="getActiveRepository() && !isRestricted">\n <div role="alert">\n <div class="mb-1 mt-1 ml-1 mr-1">\n <div class="card repository-errors">\n <div class="alert alert-warning lead">\n <div ng-if="!getActiveRepository()" >Some functionalities are not available because you are not connected to any repository.</div>\n <div id="restrictedDiv" ng-if="getActiveRepository() && isRestricted">Some functionalities are not available because\n <span ng-if="isSecurityEnabled() && !canWriteActiveRepo()">you have no write permission to repository </span>\n <strong ng-if="isActiveRepoOntopType()">{{getActiveRepository()}}</strong>\n <span ng-if="canWriteActiveRepo() && isActiveRepoOntopType()"> is read-only Virtual Repository</span>\n <span ng-if="canWriteActiveRepo() && isActiveRepoFedXType()"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\n <small>\n <span ng-if="getAccessibleRepositories().length">\n Click one of the repositories below to connect to it<span ng-if="canManageRepositories()"> or create a new repository</span>.\n </span>\n\n <span ng-hide="getAccessibleRepositories().length">\n There are no accessible <span ng-if="isRestricted">writable </span>repositories<span ng-if="canManageRepositories()">. You can create a new repository</span>.\n </span>\n </small>\n </div>\n\n <ul class="list-group limit-height clearfix two-columns repos" ng-mouseleave="hidePopoverForRepo($event)">\n <li ng-repeat="repository in getAccessibleRepositories() | orderBy: [\'type === \\\'system\\\'\', \'id\']"\n ng-if="repository.id !== getActiveRepository()"\n class="list-group-item list-group-item-action repository"\n ng-mouseenter="showPopoverForRepo($event, repository)" ngx-mouseleave="setPopoverForRepo($event, repository, false)">\n <div class="lead ellipsis-block" ng-click="setRepository(repository.id)">\n <span class="popover-anchor"\n popover-popup-delay="500"\n popover-trigger="show" popover-placement="{{$index % 2 === 0 ? \'bottom-right\' : \'left-bottom\'}}"\n uib-popover-template="popoverTemplate" popover-title="Repository {{repository.id}}">\n <em class="icon-lg" ng-class="\'icon-repo-\' + repository.type"></em>\n <strong>{{repository.id}}</strong></span><small ng-show="repository.title"><span class="small"> &middot; {{repository.title}}</span></small>\n </div>\n </li>\n </ul>\n\n <div class="pull-right" ng-if="canManageRepositories()">\n <button class="btn btn-link px-0 create-repository-btn" ng-click="goToAddRepo()">\n <span class="icon-plus"></span> Create new repository\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n';return __p}}}]);
2
+ //# sourceMappingURL=114.dcc909bf7059e08fad2a.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/core/templates/core-errors.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,23GAGP,OAAOA","file":"114.edebb3161ce52d4ca2e1.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"mb-2 row\" ng-hide=\"getActiveRepository() && !isRestricted\">\\n <div role=\"alert\">\\n <div class=\"mb-1 mt-1 ml-1 mr-1\">\\n <div class=\"card repository-errors\">\\n <div class=\"alert alert-warning lead\">\\n <div ng-if=\"!getActiveRepository()\" >Some functionalities are not available because you are not connected to any repository.</div>\\n <div id=\"restrictedDiv\" ng-if=\"getActiveRepository() && isRestricted\">Some functionalities are not available because\\n <span ng-if=\"isSecurityEnabled() && !canWriteActiveRepo()\">you have no write permission to repository </span>\\n <strong ng-if=\"isActiveRepoOntopType()\">{{getActiveRepository()}}</strong>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoOntopType()\"> is read-only Virtual Repository</span>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoFedXType()\"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\\n <small>\\n <span ng-if=\"getAccessibleRepositories().length\">\\n Click one of the repositories below to connect to it<span ng-if=\"canManageRepositories()\"> or create a new repository</span>.\\n </span>\\n\\n <span ng-hide=\"getAccessibleRepositories().length\">\\n There are no accessible <span ng-if=\"isRestricted\">writable </span>repositories<span ng-if=\"canManageRepositories()\">. You can create a new repository</span>.\\n </span>\\n </small>\\n </div>\\n\\n <ul class=\"list-group limit-height clearfix two-columns repos\" ng-mouseleave=\"hidePopoverForRepo($event)\">\\n <li ng-repeat=\"repository in getAccessibleRepositories() | orderBy: [\\'type === \\\\\\'system\\\\\\'\\', \\'id\\']\"\\n ng-if=\"repository.id !== getActiveRepository()\"\\n class=\"list-group-item list-group-item-action repository\"\\n ng-mouseenter=\"showPopoverForRepo($event, repository)\" ngx-mouseleave=\"setPopoverForRepo($event, repository, false)\">\\n <div class=\"lead ellipsis-block\" ng-click=\"setRepository(repository.id)\">\\n <span class=\"popover-anchor\"\\n popover-popup-delay=\"500\"\\n popover-trigger=\"show\" popover-placement=\"{{$index % 2 === 0 ? \\'bottom-right\\' : \\'left-bottom\\'}}\"\\n popover-template=\"popoverTemplate\" popover-title=\"Repository {{repository.id}}\">\\n <em class=\"icon-lg\" ng-class=\"\\'icon-repo-\\' + repository.type\"></em>\\n <strong>{{repository.id}}</strong></span><small ng-show=\"repository.title\"><span class=\"small\"> &middot; {{repository.title}}</span></small>\\n </div>\\n </li>\\n </ul>\\n\\n <div class=\"pull-right\" ng-if=\"canManageRepositories()\">\\n <button class=\"btn btn-link px-0 create-repository-btn\" ng-click=\"goToAddRepo()\">\\n <span class=\"icon-plus\"></span> Create new repository\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/templates/core-errors.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,+3GAGP,OAAOA","file":"114.dcc909bf7059e08fad2a.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"mb-2 row\" ng-hide=\"getActiveRepository() && !isRestricted\">\\n <div role=\"alert\">\\n <div class=\"mb-1 mt-1 ml-1 mr-1\">\\n <div class=\"card repository-errors\">\\n <div class=\"alert alert-warning lead\">\\n <div ng-if=\"!getActiveRepository()\" >Some functionalities are not available because you are not connected to any repository.</div>\\n <div id=\"restrictedDiv\" ng-if=\"getActiveRepository() && isRestricted\">Some functionalities are not available because\\n <span ng-if=\"isSecurityEnabled() && !canWriteActiveRepo()\">you have no write permission to repository </span>\\n <strong ng-if=\"isActiveRepoOntopType()\">{{getActiveRepository()}}</strong>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoOntopType()\"> is read-only Virtual Repository</span>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoFedXType()\"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\\n <small>\\n <span ng-if=\"getAccessibleRepositories().length\">\\n Click one of the repositories below to connect to it<span ng-if=\"canManageRepositories()\"> or create a new repository</span>.\\n </span>\\n\\n <span ng-hide=\"getAccessibleRepositories().length\">\\n There are no accessible <span ng-if=\"isRestricted\">writable </span>repositories<span ng-if=\"canManageRepositories()\">. You can create a new repository</span>.\\n </span>\\n </small>\\n </div>\\n\\n <ul class=\"list-group limit-height clearfix two-columns repos\" ng-mouseleave=\"hidePopoverForRepo($event)\">\\n <li ng-repeat=\"repository in getAccessibleRepositories() | orderBy: [\\'type === \\\\\\'system\\\\\\'\\', \\'id\\']\"\\n ng-if=\"repository.id !== getActiveRepository()\"\\n class=\"list-group-item list-group-item-action repository\"\\n ng-mouseenter=\"showPopoverForRepo($event, repository)\" ngx-mouseleave=\"setPopoverForRepo($event, repository, false)\">\\n <div class=\"lead ellipsis-block\" ng-click=\"setRepository(repository.id)\">\\n <span class=\"popover-anchor\"\\n popover-popup-delay=\"500\"\\n popover-trigger=\"show\" popover-placement=\"{{$index % 2 === 0 ? \\'bottom-right\\' : \\'left-bottom\\'}}\"\\n uib-popover-template=\"popoverTemplate\" popover-title=\"Repository {{repository.id}}\">\\n <em class=\"icon-lg\" ng-class=\"\\'icon-repo-\\' + repository.type\"></em>\\n <strong>{{repository.id}}</strong></span><small ng-show=\"repository.title\"><span class=\"small\"> &middot; {{repository.title}}</span></small>\\n </div>\\n </li>\\n </ul>\\n\\n <div class=\"pull-right\" ng-if=\"canManageRepositories()\">\\n <button class=\"btn btn-link px-0 create-repository-btn\" ng-click=\"goToAddRepo()\">\\n <span class=\"icon-plus\"></span> Create new repository\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[119],{172:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="search-resource-box" class="input-group btn-group" ng-class="{\'input-group-lg\': !radioButtons}" style="white-space: nowrap">\n <input type="text" class="form-control view-res-input" placeholder="{{placeholder}}" ng-model="searchInput"\n ng-change="onChange()"\n ng-keydown="onKeyDown($event)">\n <button ng-if="clearInputIcon && showClearInputIcon" class="btn btn-link clear-icon"\n uib-tooltip="Clear" tooltip-placement="bottom" tooltip-trigger="mouseenter">\n <i class="icon-close" aria-hidden="true" ng-click="clearInput()"></i>\n </button>\n <span ng-if="!radioButtons" class="input-group-btn">\n <button ng-if="textButton !== \'\'" type="button" class="btn btn-primary autocomplete-text-btn" ng-click="checkIfValidAndSearchText()">\n {{textButtonLabel}}\n </button>\n </span>\n <span ng-if="!radioButtons" class="input-group-btn show-btn">\n <button ng-if="visualButton !== \'\'" type="button" class="btn btn-primary autocomplete-visual-btn" ng-click="checkIfValidAndSearchVisual()">\n {{visualButtonLabel}}\n </button>\n </span>\n <span ng-if="radioButtons" class="input-group-btn">\n <button class="btn btn-secondary display-type-table-btn" ng-model="searchType" uib-btn-radio="searchDisplayType.table" ng-click="changeSearchType(searchDisplayType.table)">\n {{textButtonLabel}}\n </button>\n <button class="btn btn-secondary display-type-visual-btn" ng-model="searchType" uib-btn-radio="searchDisplayType.visual" ng-click="changeSearchType(searchDisplayType.visual)">\n {{visualButtonLabel}}\n </button>\n </span>\n</div>\n<span class="autocomplete-hint">Hint: "ab c" matches "abC*", "ab c*" and "ab-c*"</span>\n<div id="auto-complete-results-wrapper">\n <div ng-repeat="autoCompleteUriResult in autoCompleteUriResults track by $index"\n id="{{\'auto_\' + $index}}"\n ng-click="searchRdfResourceByEvent(autoCompleteUriResult, $event)"\n ng-class="{active: activeSearchElm === $index, selected: selectedElementIndex === $index}"\n ng-mousemove="setActiveClassOnMouseMove($index)"\n class="result-item">\n <p ng-bind-html="getResultItemHtml(autoCompleteUriResult)"></p>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=119.08aed6d34851afdefac5.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/templates/search-resource-input.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,oxEAGP,OAAOA","file":"119.08aed6d34851afdefac5.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"search-resource-box\" class=\"input-group btn-group\" ng-class=\"{\\'input-group-lg\\': !radioButtons}\" style=\"white-space: nowrap\">\\n <input type=\"text\" class=\"form-control view-res-input\" placeholder=\"{{placeholder}}\" ng-model=\"searchInput\"\\n ng-change=\"onChange()\"\\n ng-keydown=\"onKeyDown($event)\">\\n <button ng-if=\"clearInputIcon && showClearInputIcon\" class=\"btn btn-link clear-icon\"\\n uib-tooltip=\"Clear\" tooltip-placement=\"bottom\" tooltip-trigger=\"mouseenter\">\\n <i class=\"icon-close\" aria-hidden=\"true\" ng-click=\"clearInput()\"></i>\\n </button>\\n <span ng-if=\"!radioButtons\" class=\"input-group-btn\">\\n <button ng-if=\"textButton !== \\'\\'\" type=\"button\" class=\"btn btn-primary autocomplete-text-btn\" ng-click=\"checkIfValidAndSearchText()\">\\n {{textButtonLabel}}\\n </button>\\n </span>\\n <span ng-if=\"!radioButtons\" class=\"input-group-btn show-btn\">\\n <button ng-if=\"visualButton !== \\'\\'\" type=\"button\" class=\"btn btn-primary autocomplete-visual-btn\" ng-click=\"checkIfValidAndSearchVisual()\">\\n {{visualButtonLabel}}\\n </button>\\n </span>\\n <span ng-if=\"radioButtons\" class=\"input-group-btn\">\\n <button class=\"btn btn-secondary display-type-table-btn\" ng-model=\"searchType\" uib-btn-radio=\"searchDisplayType.table\" ng-click=\"changeSearchType(searchDisplayType.table)\">\\n {{textButtonLabel}}\\n </button>\\n <button class=\"btn btn-secondary display-type-visual-btn\" ng-model=\"searchType\" uib-btn-radio=\"searchDisplayType.visual\" ng-click=\"changeSearchType(searchDisplayType.visual)\">\\n {{visualButtonLabel}}\\n </button>\\n </span>\\n</div>\\n<span class=\"autocomplete-hint\">Hint: \"ab c\" matches \"abC*\", \"ab c*\" and \"ab-c*\"</span>\\n<div id=\"auto-complete-results-wrapper\">\\n <div ng-repeat=\"autoCompleteUriResult in autoCompleteUriResults track by $index\"\\n id=\"{{\\'auto_\\' + $index}}\"\\n ng-click=\"searchRdfResourceByEvent(autoCompleteUriResult, $event)\"\\n ng-class=\"{active: activeSearchElm === $index, selected: selectedElementIndex === $index}\"\\n ng-mousemove=\"setActiveClassOnMouseMove($index)\"\\n class=\"result-item\">\\n <p ng-bind-html=\"getResultItemHtml(autoCompleteUriResult)\"></p>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[12],{85:function(e,r,t){"use strict";t.r(r);t(2),t(9),t(17),t(18);var s=t(0);const o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","toastr"]),n=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},o={};for(let n=0;n<e.length;n++){const i=e[n];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,o[s]=o[s]||{},"READ_REPO"===r?o[s].read=!0:"WRITE_REPO"===r&&(o[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:o}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$location","$rootScope",function(e,r,t,s,o,n,i){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},n.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):n.search().expired&&t.error("Your authentication token has expired. Please login again.","Login error"),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){return r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(e,r,t){s.authenticate(e,t("Authorization")).then(()=>{i.returnToUrl?n.url(i.returnToUrl):n.path("/")})})).error((function(r,s){if(401===s)t.error("Wrong credentials!","Error"),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$uibModal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService",function(e,r,t,s,o,i,a,u){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){u.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=n(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=i((function(){s.location.reload()}),500);e.$on("$destroy",(function(){i.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?u.getFreeAccess().then((function(s){let n=s.data.authorities,i=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return e.id}));return _.each(n,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:i}}}}).result.then((function(e){n=e.authorities,i=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),n,i,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){a.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the user '"+r+"'?",warning:!0}).result.then((function(){e.loader=!0,u.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$uibModalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")}}]),o.controller("CommonUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth",function(e,r,t,o,n,i,a){e.isAdmin=function(){return a.hasRole(s.UserRole.ROLE_ADMIN)},e.hasExternalAuth=function(){return a.hasExternalAuth()},e.hasEditRestrictions=function(){return e.user&&e.user.username===s.UserType.ADMIN},e.isOverrideAuth=function(){return a.isDefaultAuthEnabled()},e.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(e)},e.hasReadPermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.READ_REPO[r]||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&(e.grantedAuthorities.READ_REPO["*"]||e.grantedAuthorities.WRITE_REPO["*"])},e.hasWritePermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&e.grantedAuthorities.WRITE_REPO["*"]},e.readCheckDisabled=function(r){return e.hasWritePermission(r)||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.READ_REPO["*"]||e.hasEditRestrictions()},e.writeCheckDisabled=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.WRITE_REPO["*"]||e.hasEditRestrictions()},e.userType=s.UserType.USER,e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},e.validatePassword=function(){return e.noPassword?(e.passwordError="",e.confirmPasswordError="",!0):e.user.password!==e.user.confirmpassword?(e.user.password?(e.passwordError="",e.confirmPasswordError="Confirm password!"):(e.passwordError="Enter password!",e.confirmPasswordError=""),!1):(e.passwordError="",e.confirmPasswordError="",!0)},e.isLocalAuthentication=function(){return"Local"===a.getAuthImplementation()},e.updateUser=function(){if(!e.validateForm())return!1;e.isLocalAuthentication()&&e.setGrantedAuthorities(),e.repositoryCheckError||e.updateUserHttp()},e.setNoPassword=function(){e.noPassword&&(e.user.password="",e.user.confirmpassword="",e.passwordError="",e.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService",function(e,r,t,o,n,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=n((function(){o.history.back()}),100);e.$on("$destroy",(function(){n.cancel(r)}))},e.pageTitle="Create new user",e.passwordPlaceholder="Password",e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Create administrator",message:"If the password is unset and security is enabled, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.createUser()})):e.createUser()},e.createUserHttp=function(){e.loader=!0,c.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" has been created.");const r=n((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){n.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError="Enter username!",r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError="Enter password!",r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError="Confirm password!",r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p,d,l){angular.extend(this,p("CommonUserCtrl",{$scope:e})),e.mode="edit",e.saveButtonText="Save",e.goBack=function(){const r=a((function(){o.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=i,e.pageTitle="Edit user: "+e.params.userId,e.passwordPlaceholder="New password",e.userType=s.UserType.USER;const E={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){d.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||E,e.userType=s.UserType.USER;const t=n(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,"Error")}))},e.getUserData(),e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?l.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,d.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" was updated.");const r=a((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),e.user.username===c.getPrincipal().username&&(c.getPrincipal().appSettings=e.user.appSettings)})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService",function(e,r,t){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText="Save",e.goBack=function(){const r=o((function(){t.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.currentUserData=function(){return i.getPrincipal()},e.updateCurrentUserData=function(){_.assign(i.getPrincipal(),e.userData)},e.redirectAdmin=function(){e.currentUserData()||a.redirectToLogin()},e.pageTitle="Settings",e.passwordPlaceholder="New password",e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const d=function(r){r.userData=angular.copy(r.currentUserData()),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=n(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.currentUserData()?d(e):e.$on("securityInit",(function(e){e.currentScope.redirectAdmin(),d(e.currentScope)})),e.loader=!1,e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,c.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success("The user "+e.user.username+" was updated.");const s=o((function(){e.loader=!1,t.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(s)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()}}]),o.controller("DeleteUserCtrl",["$scope","$uibModalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
2
+ //# sourceMappingURL=12.bb55709d82da219afedf.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/security/controllers.js"],"names":["securityCtrl","angular","module","parseAuthorities","authorities","userType","USER","grantedAuthorities","repositories","i","length","role","ROLE_ADMIN","ADMIN","ROLE_REPO_MANAGER","REPO_MANAGER","ROLE_USER","indexOf","index","op","substr","repo","read","write","userTypeDescription","getUserRoleName","controller","$scope","$http","toastr","$jwtAuth","$openIDAuth","$location","$rootScope","username","password","loginWithOpenID","loginOpenID","search","noaccess","error","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","encodeURIComponent","headers","success","data","status","authenticate","then","returnToUrl","path","wrongCredentials","msg","getError","$uibModal","$window","$timeout","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","$on","toggleSecurity","timer","location","reload","cancel","toggleFreeAccess","updateFreeAccess","getFreeAccess","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","id","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","warning","deleteUser","name","$uibModalInstance","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","WRITE_REPO","push","READ_REPO","close","dismiss","isAdmin","hasRole","hasEditRestrictions","user","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","arguments","authority","hasReadPermission","repositoryId","hasWritePermission","readCheckDisabled","writeCheckDisabled","validatePassword","noPassword","passwordError","confirmPasswordError","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","$controller","extend","this","mode","saveButtonText","goBack","history","back","pageTitle","passwordPlaceholder","submit","createUser","createUserHttp","pass","usernameError","$routeParams","params","userId","defaultUserSettings","getUserData","getUser","userData","external","undefined","getPrincipal","debugMapping","mapping","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","map","filter","reverse","orderBy","p","currentUserData","updateCurrentUserData","assign","redirectAdmin","redirectToLogin","initUserData","scope","copy","currentScope","updateUserData"],"mappings":"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","file":"12.bb55709d82da219afedf.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/openid-auth.service';\nimport 'angular/rest/security.rest.service';\nimport {UserUtils, UserRole, UserType} from 'angular/utils/user-utils';\n\nconst SYSTEM_REPO = 'SYSTEM';\nconst READ_REPO = 'READ_REPO';\nconst READ_REPO_PREFIX = 'READ_REPO_';\nconst WRITE_REPO = 'WRITE_REPO';\nconst WRITE_REPO_PREFIX = 'WRITE_REPO_';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.openIDService',\n 'graphdb.framework.rest.security.service',\n 'toastr'\n];\n\nconst securityCtrl = angular.module('graphdb.framework.security.controllers', modules);\n\nconst setGrantedAuthorities = function ($scope) {\n function pushAuthority() {\n for (let i = 0; i < arguments.length; i++) {\n const authority = arguments[i];\n if (_.indexOf($scope.user.grantedAuthorities, authority) < 0) {\n $scope.user.grantedAuthorities.push(authority);\n }\n }\n }\n\n $scope.user.grantedAuthorities = [];\n\n $scope.repositoryCheckError = true;\n if ($scope.userType === UserType.ADMIN) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_ADMIN);\n } else if ($scope.userType === UserType.REPO_MANAGER) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_REPO_MANAGER);\n } else {\n pushAuthority(UserRole.ROLE_USER);\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(WRITE_REPO_PREFIX + index, READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(READ_REPO_PREFIX + index);\n }\n }\n }\n};\n\nconst parseAuthorities = function (authorities) {\n let userType = UserType.USER;\n const grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n const repositories = {};\n for (let i = 0; i < authorities.length; i++) {\n const role = authorities[i];\n if (role === UserRole.ROLE_ADMIN) {\n userType = UserType.ADMIN;\n } else if (role === UserRole.ROLE_REPO_MANAGER) {\n if (userType !== UserType.ADMIN) {\n userType = UserType.REPO_MANAGER;\n }\n } else if (role === UserRole.ROLE_USER) {\n userType = UserType.USER;\n } else if (role.indexOf('ROLE_') !== 0) {\n const index = role.indexOf('_', role.indexOf('_') + 1);\n const op = role.substr(0, index);\n const repo = role.substr(index + 1);\n grantedAuthorities[op][repo] = true;\n repositories[repo] = repositories[repo] || {};\n if (op === READ_REPO) {\n repositories[repo].read = true;\n } else if (op === WRITE_REPO) {\n repositories[repo].write = true;\n }\n }\n }\n\n return {\n userType: userType,\n userTypeDescription: UserUtils.getUserRoleName(userType),\n grantedAuthorities: grantedAuthorities,\n repositories: repositories\n };\n};\n\nsecurityCtrl.controller('LoginCtrl', ['$scope', '$http', 'toastr', '$jwtAuth', '$openIDAuth', '$location', '$rootScope',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $location, $rootScope) {\n $scope.username = '';\n $scope.password = '';\n\n $scope.loginWithOpenID = function() {\n $jwtAuth.loginOpenID();\n };\n\n if ($location.search().noaccess) {\n toastr.error('User has no access rights or configuration error.', 'Login error');\n } else if ($location.search().expired) {\n toastr.error('Your authentication token has expired. Please login again.', 'Login error');\n }\n\n $scope.isGDBLoginEnabled = function() {\n return $jwtAuth.passwordLoginEnabled;\n };\n\n $scope.isOpenIDEnabled = function() {\n return $jwtAuth.openIDEnabled;\n };\n\n $scope.login = function () {\n return $http({\n method: 'POST',\n url: 'rest/login/' + encodeURIComponent($scope.username),\n headers: {\n 'X-GraphDB-Password': $scope.password\n }\n }).success(function (data, status, headers) {\n $jwtAuth.authenticate(data, headers('Authorization'))\n .then(() => {\n if ($rootScope.returnToUrl) {\n // go back to remembered url\n $location.url($rootScope.returnToUrl);\n } else {\n // no remembered url, go to home\n $location.path('/');\n }\n });\n }).error(function (data, status) {\n if (status === 401) {\n toastr.error('Wrong credentials!', 'Error');\n $scope.wrongCredentials = true;\n $scope.username = '';\n $scope.password = '';\n } else {\n const msg = getError(data);\n toastr.error(msg, status);\n }\n });\n };\n }]);\n\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$uibModal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService',\n function ($scope, $uibModal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityRestService) {\n\n $scope.loader = true;\n $scope.securityEnabled = function () {\n return $jwtAuth.isSecurityEnabled();\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n $scope.getAuthImplementation = function () {\n return $jwtAuth.getAuthImplementation();\n };\n $scope.freeAccessEnabled = function () {\n return $jwtAuth.isFreeAccessEnabled();\n };\n $scope.getUsers = function () {\n SecurityRestService.getUsers()\n .success(function (data) {\n $scope.users = data;\n for (let i = 0; i < $scope.users.length; i++) {\n const pa = parseAuthorities($scope.users[i].grantedAuthorities);\n $scope.users[i].userType = pa.userType;\n $scope.users[i].userTypeDescription = pa.userTypeDescription;\n $scope.users[i].repositories = pa.repositories;\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 $scope.getUsers();\n\n $scope.$on('repositoryIsSet', function () {\n $scope.getUsers();\n });\n\n $scope.toggleSecurity = function () {\n $jwtAuth.toggleSecurity(!$jwtAuth.isSecurityEnabled());\n if ($jwtAuth.isSecurityEnabled()) {\n const timer = $timeout(function () {\n $window.location.reload();\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n };\n\n $scope.toggleFreeAccess = function (updateFreeAccess) {\n if (!$jwtAuth.isFreeAccessEnabled() || ($jwtAuth.isFreeAccessEnabled() && updateFreeAccess)) {\n SecurityRestService.getFreeAccess().then(function (res) {\n let authorities = res.data.authorities;\n let appSettings = res.data.appSettings || {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/security/templates/modal/default-authorities.html',\n controller: 'DefaultAuthoritiesCtrl',\n resolve: {\n data: function () {\n return {\n // converts the array rights to hash ones. why, oh, why do we have both formats?\n defaultAuthorities: function () {\n const defaultAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n // We might have old (no longer existing) repositories so we have to check that\n const repoIds = _.mapKeys($scope.getRepositories(), function (r) {\n return r.id;\n });\n _.each(authorities, function (a) {\n // indexOf works in IE 11, startsWith doesn't\n if (a.indexOf(WRITE_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(11))) {\n defaultAuthorities[WRITE_REPO][a.substr(11)] = true;\n }\n } else if (a.indexOf(READ_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(10))) {\n defaultAuthorities[READ_REPO][a.substr(10)] = true;\n }\n }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings\n };\n }\n }\n });\n modalInstance.result.then(function (data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n $jwtAuth.toggleFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), authorities, appSettings, updateFreeAccess);\n });\n });\n } else {\n $jwtAuth.toggleFreeAccess(!$jwtAuth.isFreeAccessEnabled(), []);\n }\n };\n\n $scope.editFreeAccess = function () {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function (username) {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: 'Are you sure you want to delete the user \\'' + username + '\\'?',\n warning: true\n }).result.then(function () {\n $scope.loader = true;\n SecurityRestService.deleteUser(username).success(function () {\n $scope.getUsers();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\n\n });\n };\n\n // Should be able to send the original username to $routeParams\n $scope.encodeURIComponent = function (name) {\n return encodeURIComponent(name);\n };\n }]);\n\nsecurityCtrl.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$uibModalInstance', 'data', '$rootScope',\n function ($scope, $http, $uibModalInstance, data, $rootScope) {\n $scope.grantedAuthorities = data.defaultAuthorities();\n $scope.appSettings = data.appSettings;\n\n $scope.hasActiveLocation = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return !_.isEmpty($rootScope.globalLocation);\n };\n\n $scope.getRepositories = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return $rootScope.globalRepositories;\n };\n\n $scope.ok = function () {\n const auth = [];\n $scope.repositoryCheckError = true;\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n auth.push(WRITE_REPO_PREFIX + index);\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index] && auth.indexOf(READ_REPO_PREFIX + index) === -1) {\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n if (!$scope.repositoryCheckError) {\n $uibModalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n }]);\n\nsecurityCtrl.controller('CommonUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth) {\n\n $scope.isAdmin = function () {\n return $jwtAuth.hasRole(UserRole.ROLE_ADMIN);\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n\n $scope.hasEditRestrictions = function () {\n return $scope.user && $scope.user.username === UserType.ADMIN;\n };\n\n $scope.isOverrideAuth = function () {\n return $jwtAuth.isDefaultAuthEnabled();\n };\n\n $scope.setGrantedAuthorities = function () {\n setGrantedAuthorities($scope);\n };\n\n $scope.hasReadPermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.READ_REPO[repositoryId]\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO\n && ($scope.grantedAuthorities.READ_REPO['*'] || $scope.grantedAuthorities.WRITE_REPO['*']);\n };\n\n $scope.hasWritePermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*'];\n };\n\n $scope.readCheckDisabled = function (repositoryId) {\n return $scope.hasWritePermission(repositoryId)\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n $scope.validatePassword = function() {\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n return true;\n }\n if ($scope.user.password !== $scope.user.confirmpassword) {\n if (!$scope.user.password) {\n $scope.passwordError = 'Enter password!';\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = 'Confirm password!';\n }\n return false;\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n return true;\n };\n\n $scope.isLocalAuthentication = function() {\n return $jwtAuth.getAuthImplementation() === 'Local';\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n if ($scope.isLocalAuthentication()) {\n $scope.setGrantedAuthorities();\n }\n\n if (!$scope.repositoryCheckError) {\n $scope.updateUserHttp();\n }\n };\n\n $scope.setNoPassword = function() {\n if ($scope.noPassword) {\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n }\n }]);\n\nsecurityCtrl.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'add';\n $scope.saveButtonText = 'Create';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.pageTitle = 'Create new user';\n $scope.passwordPlaceholder = 'Password';\n\n $scope.user = {\n 'username': '',\n 'password': '',\n 'confirmpassword': '',\n 'grantedAuthorities': [],\n 'appSettings': {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n }\n };\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Create administrator',\n message: 'If the password is unset and security is enabled, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\n warning: true\n }).result.then(function () {\n $scope.createUser();\n });\n } else {\n $scope.createUser();\n }\n };\n\n $scope.createUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.createUser({\n username: $scope.user.username,\n pass: $scope.user.password,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' has been created.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.createUser = function () {\n if ($scope.validateForm()) {\n $scope.setGrantedAuthorities();\n\n if (!$scope.repositoryCheckError) {\n $scope.createUserHttp();\n }\n }\n };\n\n $scope.validateForm = function () {\n let result = true;\n if (!$scope.user.username) {\n $scope.usernameError = 'Enter username!';\n result = false;\n } else {\n $scope.usernameError = '';\n }\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n } else {\n if (!$scope.user.password) {\n $scope.passwordError = 'Enter password!';\n result = false;\n } else {\n $scope.passwordError = '';\n }\n if (!$scope.user.confirmpassword || $scope.user.password !== $scope.user.confirmpassword) {\n $scope.confirmPasswordError = 'Confirm password!';\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityCtrl.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'edit';\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.params = $routeParams;\n $scope.pageTitle = 'Edit user: ' + $scope.params.userId;\n $scope.passwordPlaceholder = 'New password';\n $scope.userType = UserType.USER;\n const defaultUserSettings = {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n\n if (!$jwtAuth.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function () {\n SecurityRestService.getUser($scope.params.userId).success(function (data) {\n $scope.userData = data;\n $scope.user = {username: $scope.userData.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = $scope.userData.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = UserType.USER;\n const pa = parseAuthorities(data.grantedAuthorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.getUserData();\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\n warning: true\n }).result.then(function () {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n };\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUser({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' was updated.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n // if we update the settings of the currently logged user, update the principal\n if ($scope.user.username === $jwtAuth.getPrincipal().username) {\n $jwtAuth.getPrincipal().appSettings = $scope.user.appSettings;\n }\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityRestService',\n function ($scope, toastr, SecurityRestService) {\n\n $scope.debugMapping = function (role, mapping) {\n const method = mapping.split(':');\n SecurityRestService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0]\n });\n };\n\n const loadRoles = function () {\n SecurityRestService.getRoles()\n .success(function (data) {\n $scope.roleMappings = data;\n $scope.roles = _.keys($scope.roleMappings);\n $scope.mappings = _.keys($scope.roleMappings[$scope.roles[0]]);\n const permissionsCount = _.map($scope.roles, function (role) {\n return [role, _.filter($scope.roleMappings[role]).length];\n });\n $scope.roles = _.reverse(_.map(_.orderBy(permissionsCount, function (p) {\n return p[1];\n }), function (p) {\n return p[0];\n }));\n })\n .error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.$on('repositoryIsSet', function () {\n loadRoles();\n });\n}]);\n\nsecurityCtrl.controller('ChangeUserPasswordSettingsCtrl', ['$scope', 'toastr', '$window', '$timeout', '$jwtAuth', '$rootScope', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, toastr, $window, $timeout, $jwtAuth, $rootScope, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'settings';\n $scope.hasEditRestrictions = function () {\n return true;\n };\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.currentUserData = function () {\n return $jwtAuth.getPrincipal();\n };\n\n $scope.updateCurrentUserData = function () {\n _.assign($jwtAuth.getPrincipal(), $scope.userData);\n };\n\n //call it as a function so I can make test on it\n $scope.redirectAdmin = function () {\n if (!$scope.currentUserData()) {\n $rootScope.redirectToLogin();\n }\n };\n\n $scope.pageTitle = 'Settings';\n $scope.passwordPlaceholder = 'New password';\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n const initUserData = function (scope) {\n // Copy needed so that Cancel would work correctly, need to call updateCurrentUserData on OK\n scope.userData = angular.copy(scope.currentUserData());\n scope.user = {username: scope.userData.username};\n scope.user.password = '';\n scope.user.confirmpassword = '';\n scope.user.external = scope.userData.external;\n scope.user.appSettings = scope.userData.appSettings;\n // For backward compatibility\n if (scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] === undefined) {\n scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] = true;\n }\n\n const pa = parseAuthorities(scope.userData.authorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n };\n\n if ($scope.currentUserData()) {\n initUserData($scope);\n } else {\n $scope.$on('securityInit', function (scope) {\n scope.currentScope.redirectAdmin();\n initUserData(scope.currentScope);\n });\n }\n\n $scope.loader = false;\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\n warning: true\n }).result.then(function () {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n }\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUserData({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings\n }).success(function () {\n $scope.updateCurrentUserData();\n toastr.success('The user ' + $scope.user.username + ' was updated.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n $scope.updateUserHttp();\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('DeleteUserCtrl', ['$scope', '$uibModalInstance', 'username', function ($scope, $uibModalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[121],{174:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">Confirm delete</h3>\n</div>\n<div class="modal-body">\n <p>Are you sure you want to delete this connector?</p>\n <span uib-popover="Force delete will remove the connector even if part of the operation fails. Use it if normal delete does not work.{{ isExternal ? (\' Note that you may have to drop the index manually from \' + type + \'.\') : \'\' }}"\n popover-trigger="mouseenter"\n popover-placement="bottom">\n <input id="force-delete" type="checkbox" ng-model="force"><label for="force-delete">&nbsp;Force delete</label>\n </span>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" ng-click="cancel()">Cancel</button>\n <button type="submit" class="btn btn-primary delete-connector-btn" ng-click="ok()">Delete</button>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=121.574db48a413271cafc2e.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/externalsync/templates/deleteConnector.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,u7BAGP,OAAOA","file":"121.574db48a413271cafc2e.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">Confirm delete</h3>\\n</div>\\n<div class=\"modal-body\">\\n <p>Are you sure you want to delete this connector?</p>\\n <span uib-popover=\"Force delete will remove the connector even if part of the operation fails. Use it if normal delete does not work.{{ isExternal ? (\\' Note that you may have to drop the index manually from \\' + type + \\'.\\') : \\'\\' }}\"\\n popover-trigger=\"mouseenter\"\\n popover-placement=\"bottom\">\\n <input id=\"force-delete\" type=\"checkbox\" ng-model=\"force\"><label for=\"force-delete\">&nbsp;Force delete</label>\\n </span>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary\" ng-click=\"cancel()\">Cancel</button>\\n <button type=\"submit\" class=\"btn btn-primary delete-connector-btn\" ng-click=\"ok()\">Delete</button>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[123],{176:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='\x3c!-- Start save graph modal --\x3e\n\n<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<form novalidate ng-submit="ok()" name="form">\n <div class="modal-body">\n <input id="wb-graphviz-savegraph-name" required type="text" ng-model="graph.name" class="form-control"\n ng-change="graphExists = false"\n placeholder="Enter name" ng-maxlength="100"/>\n <label for="share-graph"\n uib-tooltip="If checked other users will be able to see the graph but not delete or edit it.">\n <input id="share-graph" type="checkbox" ng-model="graph.shared">\n Share graph with other users\n </label>\n <input style="height: 0; border: 0; padding: 0; margin: 0;" autofocus/>\n <br>\n <div ng-show="form.$error.maxlength">\n <div class="alert alert-danger" style="margin-top: 5px;">Name is too long!</div>\n </div>\n <div ng-show="form.$error.required.length">\n <div ng-hide="graph.name" class="alert alert-danger" style="margin-top: 5px;">Name cannot be empty!</div>\n </div>\n <div ng-hide="form.$error.required.length" ng-if="graphExists" class="alert alert-danger"\n style="margin-top: 5px;">Saved graph with name <strong>&#39;{{graph.name}}&#39;</strong> already exists!\n </div>\n \x3c!-- <div ng-if="graphExists || overwrite"><label for="override-saved">Overwrite existing saved graph <input id="override-saved" type="checkbox" ng-model="overwrite"></label></div> --\x3e\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" ng-click="cancel()">Cancel</button>\n <button ng-if="mode == \'update\'" id="wb-graphviz-savegraph-submit2" class="btn btn-tertiary" ng-click="saveNew()" type="button">Save as new...</button>\n <button id="wb-graphviz-savegraph-submit" class="btn btn-primary" ng-click="ok()" type="submit">{{okButtonText}}</button>\n </div>\n</form>\n\n\x3c!-- End save graph modal --\x3e\n\n';return __p}}}]);
2
+ //# sourceMappingURL=123.9ba8fea15f3fcddc734d.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/graphexplore/templates/modal/save-graph.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,imEAGP,OAAOA","file":"123.9ba8fea15f3fcddc734d.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<!-- Start save graph modal -->\\n\\n<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">{{title}}</h3>\\n</div>\\n<form novalidate ng-submit=\"ok()\" name=\"form\">\\n <div class=\"modal-body\">\\n <input id=\"wb-graphviz-savegraph-name\" required type=\"text\" ng-model=\"graph.name\" class=\"form-control\"\\n ng-change=\"graphExists = false\"\\n placeholder=\"Enter name\" ng-maxlength=\"100\"/>\\n <label for=\"share-graph\"\\n uib-tooltip=\"If checked other users will be able to see the graph but not delete or edit it.\">\\n <input id=\"share-graph\" type=\"checkbox\" ng-model=\"graph.shared\">\\n Share graph with other users\\n </label>\\n <input style=\"height: 0; border: 0; padding: 0; margin: 0;\" autofocus/>\\n <br>\\n <div ng-show=\"form.$error.maxlength\">\\n <div class=\"alert alert-danger\" style=\"margin-top: 5px;\">Name is too long!</div>\\n </div>\\n <div ng-show=\"form.$error.required.length\">\\n <div ng-hide=\"graph.name\" class=\"alert alert-danger\" style=\"margin-top: 5px;\">Name cannot be empty!</div>\\n </div>\\n <div ng-hide=\"form.$error.required.length\" ng-if=\"graphExists\" class=\"alert alert-danger\"\\n style=\"margin-top: 5px;\">Saved graph with name <strong>&#39;{{graph.name}}&#39;</strong> already exists!\\n </div>\\n <!-- <div ng-if=\"graphExists || overwrite\"><label for=\"override-saved\">Overwrite existing saved graph <input id=\"override-saved\" type=\"checkbox\" ng-model=\"overwrite\"></label></div> -->\\n </div>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary\" ng-click=\"cancel()\">Cancel</button>\\n <button ng-if=\"mode == \\'update\\'\" id=\"wb-graphviz-savegraph-submit2\" class=\"btn btn-tertiary\" ng-click=\"saveNew()\" type=\"button\">Save as new...</button>\\n <button id=\"wb-graphviz-savegraph-submit\" class=\"btn btn-primary\" ng-click=\"ok()\" type=\"submit\">{{okButtonText}}</button>\\n </div>\\n</form>\\n\\n<!-- End save graph modal -->\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[125],{178:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div>\n\t<div ng-hide="rdfsLabel == undefined" class="media mb-1">\n\t\t<div class="media-left"\n\t\t\t uib-tooltip="rdfs:label"\n\t\t\t tooltip-placement="top"\n\t\t\t tooltip-trigger="mouseenter">\n\t\t\t<i class="icon-tag icon-lg" aria-hidden="true"></i>\n\t\t</div>\n\t\t<div class="media-body">\n\t\t\t{{rdfsLabel}}\n\t\t</div>\n\t</div>\n <div ng-if="rdfsComment" class="media mb-1">\n <div class="media-left"\n\t\t\tuib-tooltip="rdfs:comment"\n\t\t\ttooltip-placement="top"\n\t\t\ttooltip-trigger="mouseenter">\n\t\t\t<i class="icon-comment icon-lg" aria-hidden="true"></i>\n </div>\n <div class="media-body">\n\t\t\t<div class="rdfs-comment" ng-class="expanded ? \'expanded\' : \'not-expanded\'">\n\t\t\t\t<em class="rdfs-comment-text rdfs-text small">{{rdfsComment | limitTo: stringLimit}} {{rdfsComment.length > stringLimit ? \'...\' : \'\'}}</em>\n\t\t\t</div>\n </div>\n </div>\n <div ng-if="!alwaysExpanded && rdfsComment && !checkCommentLength()" class="clearfix">\n\t\t<button class="pull-right btn btn-link small px-0" ng-click="scrollToTop(); equalHeights(); toggleFullComment()">\n\t\t\t<span ng-show="!expanded">Show</span>\n\t\t\t<span ng-show="expanded">Hide</span> full comment\n\t\t</button>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=125.4ffda62ed511df3132f6.bundle.js.map