graphdb-workbench 2.2.2-TR2 → 2.3.0-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 (312) hide show
  1. package/dist/10.2c7c4caeb5771a2a98d1.bundle.js +2 -0
  2. package/dist/10.2c7c4caeb5771a2a98d1.bundle.js.map +1 -0
  3. package/dist/102.850f372bb910e3a64905.bundle.js +2 -0
  4. package/dist/102.850f372bb910e3a64905.bundle.js.map +1 -0
  5. package/dist/104.2e04965e98d05ada03fd.bundle.js +2 -0
  6. package/dist/104.2e04965e98d05ada03fd.bundle.js.map +1 -0
  7. package/dist/{107.37693ea0237c39fda863.bundle.js → 107.e401af35eca7e21cc9c2.bundle.js} +2 -2
  8. package/dist/107.e401af35eca7e21cc9c2.bundle.js.map +1 -0
  9. package/dist/{108.3c3f9c242e6a3e18fff5.bundle.js → 108.90cf8908233ccb473643.bundle.js} +2 -2
  10. package/dist/108.90cf8908233ccb473643.bundle.js.map +1 -0
  11. package/dist/{11.f4c5533cd200c8568ff6.bundle.js → 11.f912f1a9f37160d23a3b.bundle.js} +2 -2
  12. package/dist/11.f912f1a9f37160d23a3b.bundle.js.map +1 -0
  13. package/dist/{124.6a31dfbe4ac2f9064a29.bundle.js → 124.82728aea87e9d1190441.bundle.js} +2 -2
  14. package/dist/124.82728aea87e9d1190441.bundle.js.map +1 -0
  15. package/dist/{126.48e00b0525b3ef8efbe8.bundle.js → 126.d21b0bf850be03830298.bundle.js} +2 -2
  16. package/dist/126.d21b0bf850be03830298.bundle.js.map +1 -0
  17. package/dist/140.08e0e8799d3d5fefcda5.bundle.js +2 -0
  18. package/dist/140.08e0e8799d3d5fefcda5.bundle.js.map +1 -0
  19. package/dist/141.c16968e963be850e7a7b.bundle.js +2 -0
  20. package/dist/141.c16968e963be850e7a7b.bundle.js.map +1 -0
  21. package/dist/142.0204215ce1bf7b2cf84d.bundle.js +2 -0
  22. package/dist/142.0204215ce1bf7b2cf84d.bundle.js.map +1 -0
  23. package/dist/143.c194ab0648b274f3b554.bundle.js +2 -0
  24. package/dist/143.c194ab0648b274f3b554.bundle.js.map +1 -0
  25. package/dist/145.828376c0cb6b5ba6e015.bundle.js +2 -0
  26. package/dist/145.828376c0cb6b5ba6e015.bundle.js.map +1 -0
  27. package/dist/146.581f1af823b55dc358d6.bundle.js +2 -0
  28. package/dist/146.581f1af823b55dc358d6.bundle.js.map +1 -0
  29. package/dist/147.66395fd5d79176a79c38.bundle.js +2 -0
  30. package/dist/147.66395fd5d79176a79c38.bundle.js.map +1 -0
  31. package/dist/{148.dd250d3cc5aafade33c6.bundle.js → 148.78e7398de964231883f3.bundle.js} +2 -2
  32. package/dist/{148.dd250d3cc5aafade33c6.bundle.js.map → 148.78e7398de964231883f3.bundle.js.map} +1 -1
  33. package/dist/{149.a0873076f2dd40830be9.bundle.js → 149.6eb6ef704b8da7bfc6ce.bundle.js} +2 -2
  34. package/dist/{149.a0873076f2dd40830be9.bundle.js.map → 149.6eb6ef704b8da7bfc6ce.bundle.js.map} +1 -1
  35. package/dist/{150.3bd8af24551408342185.bundle.js → 150.283dd1f6da002f1ca17f.bundle.js} +2 -2
  36. package/dist/{150.3bd8af24551408342185.bundle.js.map → 150.283dd1f6da002f1ca17f.bundle.js.map} +1 -1
  37. package/dist/154.056ec5c8aafbc07484e0.bundle.js +2 -0
  38. package/dist/154.056ec5c8aafbc07484e0.bundle.js.map +1 -0
  39. package/dist/156.e15f9befbcfaf6677387.bundle.js +2 -0
  40. package/dist/156.e15f9befbcfaf6677387.bundle.js.map +1 -0
  41. package/dist/158.29813ed563736e5c85b2.bundle.js +2 -0
  42. package/dist/158.29813ed563736e5c85b2.bundle.js.map +1 -0
  43. package/dist/16.b8bb2389b9f026a298f7.bundle.js +3 -0
  44. package/dist/16.b8bb2389b9f026a298f7.bundle.js.map +1 -0
  45. package/dist/160.d5f5ab14c56efd04e404.bundle.js +2 -0
  46. package/dist/160.d5f5ab14c56efd04e404.bundle.js.map +1 -0
  47. package/dist/161.f142c1fe18346f00882a.bundle.js +2 -0
  48. package/dist/161.f142c1fe18346f00882a.bundle.js.map +1 -0
  49. package/dist/164.d4b744057d28ed5e7e47.bundle.js +2 -0
  50. package/dist/164.d4b744057d28ed5e7e47.bundle.js.map +1 -0
  51. package/dist/166.256169db442fec472d9d.bundle.js +2 -0
  52. package/dist/166.256169db442fec472d9d.bundle.js.map +1 -0
  53. package/dist/167.f79a82f7de6734cca660.bundle.js +2 -0
  54. package/dist/167.f79a82f7de6734cca660.bundle.js.map +1 -0
  55. package/dist/169.16292782069da22a11c0.bundle.js +2 -0
  56. package/dist/169.16292782069da22a11c0.bundle.js.map +1 -0
  57. package/dist/17.675eef636eb095240fab.bundle.js +2 -0
  58. package/dist/17.675eef636eb095240fab.bundle.js.map +1 -0
  59. package/dist/171.2aecfe97c1fa24db3bf3.bundle.js +2 -0
  60. package/dist/171.2aecfe97c1fa24db3bf3.bundle.js.map +1 -0
  61. package/dist/172.558d9080f05080a0dac2.bundle.js +2 -0
  62. package/dist/172.558d9080f05080a0dac2.bundle.js.map +1 -0
  63. package/dist/173.c1546a02befda215609d.bundle.js +2 -0
  64. package/dist/173.c1546a02befda215609d.bundle.js.map +1 -0
  65. package/dist/175.943ac5019fe29113e1f2.bundle.js +2 -0
  66. package/dist/175.943ac5019fe29113e1f2.bundle.js.map +1 -0
  67. package/dist/176.96a2ffd87018134c7b29.bundle.js +2 -0
  68. package/dist/176.96a2ffd87018134c7b29.bundle.js.map +1 -0
  69. package/dist/177.443034c31f85d8ac396c.bundle.js +2 -0
  70. package/dist/177.443034c31f85d8ac396c.bundle.js.map +1 -0
  71. package/dist/180.384be4faad5d0b1716b5.bundle.js +2 -0
  72. package/dist/180.384be4faad5d0b1716b5.bundle.js.map +1 -0
  73. package/dist/181.ce536d7a1f4cb278f82c.bundle.js +2 -0
  74. package/dist/181.ce536d7a1f4cb278f82c.bundle.js.map +1 -0
  75. package/dist/182.6154b3558b619301bfdf.bundle.js +2 -0
  76. package/dist/{182.1b40c7e8a8424e87da32.bundle.js.map → 182.6154b3558b619301bfdf.bundle.js.map} +1 -1
  77. package/dist/183.67e81437028990463d1a.bundle.js +2 -0
  78. package/dist/183.67e81437028990463d1a.bundle.js.map +1 -0
  79. package/dist/20.fbcb31706f03a07e8827.bundle.js +1 -1
  80. package/dist/20.fbcb31706f03a07e8827.bundle.js.map +1 -1
  81. package/dist/21.081b98fe7cc1b3dbbd72.bundle.js +2 -0
  82. package/dist/21.081b98fe7cc1b3dbbd72.bundle.js.map +1 -0
  83. package/dist/{23.b945d0565ded44df49c5.bundle.js → 23.24787bc4590d48521f4b.bundle.js} +2 -2
  84. package/dist/23.24787bc4590d48521f4b.bundle.js.map +1 -0
  85. package/dist/24.7468162b4988a0ad6eaa.bundle.js +2 -0
  86. package/dist/24.7468162b4988a0ad6eaa.bundle.js.map +1 -0
  87. package/dist/{25.9d7a3d8f98840b1fc5da.bundle.js → 25.64b95438d07ae2d82d8c.bundle.js} +2 -2
  88. package/dist/25.64b95438d07ae2d82d8c.bundle.js.map +1 -0
  89. package/dist/{26.a15a1adb6b30ab849e62.bundle.js → 26.7b0b040185949c4eb865.bundle.js} +2 -2
  90. package/dist/26.7b0b040185949c4eb865.bundle.js.map +1 -0
  91. package/dist/{27.83b24ef9ec0fd6964d92.bundle.js → 27.78b1f59da6f702484766.bundle.js} +2 -2
  92. package/dist/27.78b1f59da6f702484766.bundle.js.map +1 -0
  93. package/dist/{3.7f19eec4e1cff6bb8ff2.bundle.js → 3.9b969c666ea9ed46ea4f.bundle.js} +2 -2
  94. package/dist/3.9b969c666ea9ed46ea4f.bundle.js.map +1 -0
  95. package/dist/{30.a2596e679fb09411b854.bundle.js → 30.67e342e8f1485d26a99b.bundle.js} +2 -2
  96. package/dist/30.67e342e8f1485d26a99b.bundle.js.map +1 -0
  97. package/dist/31.133397ed26eda58c7e18.bundle.js +2 -0
  98. package/dist/31.133397ed26eda58c7e18.bundle.js.map +1 -0
  99. package/dist/33.4d23fa109c9184727386.bundle.js +1 -1
  100. package/dist/33.4d23fa109c9184727386.bundle.js.map +1 -1
  101. package/dist/{35.8be1042671722a19f3b4.bundle.js → 35.541a97f880621d5f7031.bundle.js} +2 -2
  102. package/dist/35.541a97f880621d5f7031.bundle.js.map +1 -0
  103. package/dist/36.239dd56c03aeda760f8b.bundle.js +2 -0
  104. package/dist/36.239dd56c03aeda760f8b.bundle.js.map +1 -0
  105. package/dist/{38.f4b561d7ee5b236ba481.bundle.js → 38.c8620e7cbab859b6f236.bundle.js} +2 -2
  106. package/dist/38.c8620e7cbab859b6f236.bundle.js.map +1 -0
  107. package/dist/39.c630c0e36b0dc913bbe3.bundle.js +2 -0
  108. package/dist/39.c630c0e36b0dc913bbe3.bundle.js.map +1 -0
  109. package/dist/{4.186c084105c931abbe1a.bundle.js → 4.d3fb6d0dcca79643bcb3.bundle.js} +2 -2
  110. package/dist/4.d3fb6d0dcca79643bcb3.bundle.js.map +1 -0
  111. package/dist/40.50b40301c8cc69a70457.bundle.js +1 -1
  112. package/dist/40.50b40301c8cc69a70457.bundle.js.map +1 -1
  113. package/dist/42.45ee7b629beac3e06cc2.bundle.js +2 -0
  114. package/dist/42.45ee7b629beac3e06cc2.bundle.js.map +1 -0
  115. package/dist/43.72fbe7e5d290c40db9ec.bundle.js +2 -0
  116. package/dist/43.72fbe7e5d290c40db9ec.bundle.js.map +1 -0
  117. package/dist/{5.5f48e5c6fc10b52dd415.bundle.js → 5.a44aa21343f8bf48f0e0.bundle.js} +2 -2
  118. package/dist/5.a44aa21343f8bf48f0e0.bundle.js.map +1 -0
  119. package/dist/{53.78084dd64a27f7a6d2e8.bundle.js → 53.c6d488d0fb81a54a3e55.bundle.js} +2 -2
  120. package/dist/53.c6d488d0fb81a54a3e55.bundle.js.map +1 -0
  121. package/dist/{54.fe5e554af6ba2c5778c1.bundle.js → 54.6209da75289a30ff366b.bundle.js} +2 -2
  122. package/dist/54.6209da75289a30ff366b.bundle.js.map +1 -0
  123. package/dist/{56.9c6f6ecafc1909c42dda.bundle.js → 56.0d89e5b9f6403aab1c8e.bundle.js} +2 -2
  124. package/dist/56.0d89e5b9f6403aab1c8e.bundle.js.map +1 -0
  125. package/dist/61.6332e06d94ef4426f068.bundle.js +2 -0
  126. package/dist/61.6332e06d94ef4426f068.bundle.js.map +1 -0
  127. package/dist/{62.86f5ed4f7b582a8aa17d.bundle.js → 62.14d5882e16c3da266b6f.bundle.js} +2 -2
  128. package/dist/62.14d5882e16c3da266b6f.bundle.js.map +1 -0
  129. package/dist/{7.c7d8fb1dfdb444052435.bundle.js → 7.8ca1f2ef4d0aa49b93ac.bundle.js} +2 -2
  130. package/dist/7.8ca1f2ef4d0aa49b93ac.bundle.js.map +1 -0
  131. package/dist/{71.4dbbc366049697f736c5.bundle.js → 71.48a75ab912070cdb19f5.bundle.js} +2 -2
  132. package/dist/71.48a75ab912070cdb19f5.bundle.js.map +1 -0
  133. package/dist/9.3b571539df8c3b22cf6e.bundle.js +2 -0
  134. package/dist/9.3b571539df8c3b22cf6e.bundle.js.map +1 -0
  135. package/dist/94.38349f52df66313fbcc0.bundle.js +1 -1
  136. package/dist/94.38349f52df66313fbcc0.bundle.js.map +1 -1
  137. package/dist/97.df243fffeb4322e50f63.bundle.js +2 -0
  138. package/dist/97.df243fffeb4322e50f63.bundle.js.map +1 -0
  139. package/dist/bundle.73c02a0d535f14462730.bundle.js +92 -0
  140. package/dist/bundle.73c02a0d535f14462730.bundle.js.map +1 -0
  141. package/dist/index.html +7 -7
  142. package/dist/js/angular/clustermanagement/templates/modal/add-nodes-dialog.html +2 -2
  143. package/dist/js/angular/clustermanagement/templates/modal/cluster-create-dialog.html +8 -8
  144. package/dist/js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html +1 -1
  145. package/dist/js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html +5 -5
  146. package/dist/js/angular/core/directives/languageselector/templates/languageSelector.html +2 -2
  147. package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +19 -19
  148. package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +1 -1
  149. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +3 -3
  150. package/dist/js/angular/core/templates/core-errors.html +1 -1
  151. package/dist/js/angular/core/templates/inactive-plugin-warning-page.html +1 -1
  152. package/dist/js/angular/core/templates/search-resource-input.html +3 -3
  153. package/dist/js/angular/externalsync/templates/deleteConnector.html +1 -1
  154. package/dist/js/angular/graphexplore/templates/modal/save-graph.html +1 -1
  155. package/dist/js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html +2 -2
  156. package/dist/js/angular/graphexplore/templates/searchIconInputTemplate.html +3 -3
  157. package/dist/js/angular/import/templates/filesTable.html +12 -12
  158. package/dist/js/angular/import/templates/settingsModal.html +19 -19
  159. package/dist/js/angular/import/templates/textSnippet.html +4 -4
  160. package/dist/js/angular/import/templates/urlImport.html +4 -4
  161. package/dist/js/angular/repositories/templates/fedx-repo.html +15 -15
  162. package/dist/js/angular/repositories/templates/ontop-repo.html +8 -8
  163. package/dist/js/angular/security/templates/modal/default-authorities.html +2 -2
  164. package/dist/js/angular/security/templates/user.html +13 -13
  165. package/dist/js/angular/security/templates/users.html +8 -8
  166. package/dist/js/angular/settings/modal/location-settings.html +1 -1
  167. package/dist/js/angular/templates/modal/add-location.html +3 -3
  168. package/dist/js/angular/templates/modal/edit-location.html +3 -3
  169. package/dist/js/angular/templates/modal/editRepoFile.html +1 -1
  170. package/dist/js/angular/templates/modal/upload-repository-config.html +2 -2
  171. package/dist/pages/autocomplete.html +8 -8
  172. package/dist/pages/choose-repository-type.html +1 -1
  173. package/dist/pages/cluster-management/clusterInfo.html +15 -15
  174. package/dist/pages/connectorsInfo.html +5 -5
  175. package/dist/pages/create-index.html +15 -15
  176. package/dist/pages/createConnector.html +23 -23
  177. package/dist/pages/dependencies.html +12 -12
  178. package/dist/pages/domainRangeInfo.html +6 -6
  179. package/dist/pages/edit.html +7 -7
  180. package/dist/pages/explore.html +10 -10
  181. package/dist/pages/export.html +14 -14
  182. package/dist/pages/find.html +2 -2
  183. package/dist/pages/graph-config/saveGraphConfig.html +22 -22
  184. package/dist/pages/graphs-visualizations.html +47 -47
  185. package/dist/pages/guides.html +6 -6
  186. package/dist/pages/home.html +10 -10
  187. package/dist/pages/import.html +7 -7
  188. package/dist/pages/info.html +16 -16
  189. package/dist/pages/jdbc-create.html +18 -18
  190. package/dist/pages/jdbc.html +3 -3
  191. package/dist/pages/licenseInfo.html +1 -1
  192. package/dist/pages/login.html +2 -2
  193. package/dist/pages/monitor/queries.html +5 -5
  194. package/dist/pages/monitor/resources.html +13 -13
  195. package/dist/pages/namespaces.html +14 -14
  196. package/dist/pages/plugins.html +4 -4
  197. package/dist/pages/rdfClassHierarchyInfo.html +16 -16
  198. package/dist/pages/rdfrank.html +17 -17
  199. package/dist/pages/registerLicenseInfo.html +3 -3
  200. package/dist/pages/repositories.html +20 -20
  201. package/dist/pages/repository.html +37 -37
  202. package/dist/pages/similarity-indexes.html +15 -15
  203. package/dist/pages/sparql-template-create.html +9 -9
  204. package/dist/pages/sparql-templates.html +3 -3
  205. package/dist/pages/sparql.html +8 -8
  206. package/dist/pages/webapi.html +3 -3
  207. package/dist/res/swagger/index.html +27 -27
  208. package/package.json +2 -2
  209. package/dist/10.973caeed3c05ef2cfd1c.bundle.js +0 -2
  210. package/dist/10.973caeed3c05ef2cfd1c.bundle.js.map +0 -1
  211. package/dist/102.93af0905ca1ff2be2dbf.bundle.js +0 -2
  212. package/dist/102.93af0905ca1ff2be2dbf.bundle.js.map +0 -1
  213. package/dist/104.b82229ea4c12400f6f5d.bundle.js +0 -2
  214. package/dist/104.b82229ea4c12400f6f5d.bundle.js.map +0 -1
  215. package/dist/107.37693ea0237c39fda863.bundle.js.map +0 -1
  216. package/dist/108.3c3f9c242e6a3e18fff5.bundle.js.map +0 -1
  217. package/dist/11.f4c5533cd200c8568ff6.bundle.js.map +0 -1
  218. package/dist/124.6a31dfbe4ac2f9064a29.bundle.js.map +0 -1
  219. package/dist/126.48e00b0525b3ef8efbe8.bundle.js.map +0 -1
  220. package/dist/140.8f22a20a0689c072368f.bundle.js +0 -2
  221. package/dist/140.8f22a20a0689c072368f.bundle.js.map +0 -1
  222. package/dist/141.6ffbf225a69b845e5e07.bundle.js +0 -2
  223. package/dist/141.6ffbf225a69b845e5e07.bundle.js.map +0 -1
  224. package/dist/142.355ab1a9716ce7315ad6.bundle.js +0 -2
  225. package/dist/142.355ab1a9716ce7315ad6.bundle.js.map +0 -1
  226. package/dist/143.64b1142c8e48b388717f.bundle.js +0 -2
  227. package/dist/143.64b1142c8e48b388717f.bundle.js.map +0 -1
  228. package/dist/145.9858a584e01b6c01a57c.bundle.js +0 -2
  229. package/dist/145.9858a584e01b6c01a57c.bundle.js.map +0 -1
  230. package/dist/146.15a2396be0b56a454857.bundle.js +0 -2
  231. package/dist/146.15a2396be0b56a454857.bundle.js.map +0 -1
  232. package/dist/147.638cfbfdf711a97e19f1.bundle.js +0 -2
  233. package/dist/147.638cfbfdf711a97e19f1.bundle.js.map +0 -1
  234. package/dist/154.6dadeaa5b9cdab265cb3.bundle.js +0 -2
  235. package/dist/154.6dadeaa5b9cdab265cb3.bundle.js.map +0 -1
  236. package/dist/156.4252f16fc656c91fba0c.bundle.js +0 -2
  237. package/dist/156.4252f16fc656c91fba0c.bundle.js.map +0 -1
  238. package/dist/158.13d4aafb2c7f02af028b.bundle.js +0 -2
  239. package/dist/158.13d4aafb2c7f02af028b.bundle.js.map +0 -1
  240. package/dist/16.61454b9a7360266e544a.bundle.js +0 -3
  241. package/dist/16.61454b9a7360266e544a.bundle.js.map +0 -1
  242. package/dist/160.3b604e0909b8a932d959.bundle.js +0 -2
  243. package/dist/160.3b604e0909b8a932d959.bundle.js.map +0 -1
  244. package/dist/161.c72cc3169ea1191e49e8.bundle.js +0 -2
  245. package/dist/161.c72cc3169ea1191e49e8.bundle.js.map +0 -1
  246. package/dist/164.a03f4da227b54ad97c18.bundle.js +0 -2
  247. package/dist/164.a03f4da227b54ad97c18.bundle.js.map +0 -1
  248. package/dist/166.b4fd0bd3df4985d3e74a.bundle.js +0 -2
  249. package/dist/166.b4fd0bd3df4985d3e74a.bundle.js.map +0 -1
  250. package/dist/167.0e3773d3b16936a2a72a.bundle.js +0 -2
  251. package/dist/167.0e3773d3b16936a2a72a.bundle.js.map +0 -1
  252. package/dist/169.a43d9e76a361ad2cabb5.bundle.js +0 -2
  253. package/dist/169.a43d9e76a361ad2cabb5.bundle.js.map +0 -1
  254. package/dist/17.545bc1027c226502e3b8.bundle.js +0 -2
  255. package/dist/17.545bc1027c226502e3b8.bundle.js.map +0 -1
  256. package/dist/171.584fa763e2fe9a4d34f4.bundle.js +0 -2
  257. package/dist/171.584fa763e2fe9a4d34f4.bundle.js.map +0 -1
  258. package/dist/172.67ba9379059ac602d509.bundle.js +0 -2
  259. package/dist/172.67ba9379059ac602d509.bundle.js.map +0 -1
  260. package/dist/173.fd7ee2abdf75fc0ed3a3.bundle.js +0 -2
  261. package/dist/173.fd7ee2abdf75fc0ed3a3.bundle.js.map +0 -1
  262. package/dist/175.341ea8612291026d2630.bundle.js +0 -2
  263. package/dist/175.341ea8612291026d2630.bundle.js.map +0 -1
  264. package/dist/176.7cdff30cd9372f424163.bundle.js +0 -2
  265. package/dist/176.7cdff30cd9372f424163.bundle.js.map +0 -1
  266. package/dist/177.57ac19484b6430c0f242.bundle.js +0 -2
  267. package/dist/177.57ac19484b6430c0f242.bundle.js.map +0 -1
  268. package/dist/180.f19924b6b550773f9163.bundle.js +0 -2
  269. package/dist/180.f19924b6b550773f9163.bundle.js.map +0 -1
  270. package/dist/181.db05a22a05f9c928b08c.bundle.js +0 -2
  271. package/dist/181.db05a22a05f9c928b08c.bundle.js.map +0 -1
  272. package/dist/182.1b40c7e8a8424e87da32.bundle.js +0 -2
  273. package/dist/183.1ed57fba52ab51806ec3.bundle.js +0 -2
  274. package/dist/183.1ed57fba52ab51806ec3.bundle.js.map +0 -1
  275. package/dist/21.ea150df1291050bc1c4a.bundle.js +0 -2
  276. package/dist/21.ea150df1291050bc1c4a.bundle.js.map +0 -1
  277. package/dist/23.b945d0565ded44df49c5.bundle.js.map +0 -1
  278. package/dist/24.77907cc1d707305663c9.bundle.js +0 -2
  279. package/dist/24.77907cc1d707305663c9.bundle.js.map +0 -1
  280. package/dist/25.9d7a3d8f98840b1fc5da.bundle.js.map +0 -1
  281. package/dist/26.a15a1adb6b30ab849e62.bundle.js.map +0 -1
  282. package/dist/27.83b24ef9ec0fd6964d92.bundle.js.map +0 -1
  283. package/dist/3.7f19eec4e1cff6bb8ff2.bundle.js.map +0 -1
  284. package/dist/30.a2596e679fb09411b854.bundle.js.map +0 -1
  285. package/dist/31.fbcd8b1840a84a281e47.bundle.js +0 -2
  286. package/dist/31.fbcd8b1840a84a281e47.bundle.js.map +0 -1
  287. package/dist/35.8be1042671722a19f3b4.bundle.js.map +0 -1
  288. package/dist/36.8d7becdfce12d9a0de33.bundle.js +0 -2
  289. package/dist/36.8d7becdfce12d9a0de33.bundle.js.map +0 -1
  290. package/dist/38.f4b561d7ee5b236ba481.bundle.js.map +0 -1
  291. package/dist/39.68f59c2a9aeb4c4100c9.bundle.js +0 -2
  292. package/dist/39.68f59c2a9aeb4c4100c9.bundle.js.map +0 -1
  293. package/dist/4.186c084105c931abbe1a.bundle.js.map +0 -1
  294. package/dist/42.87fe547d27ce0c30deef.bundle.js +0 -2
  295. package/dist/42.87fe547d27ce0c30deef.bundle.js.map +0 -1
  296. package/dist/43.34060633fa9548ec3437.bundle.js +0 -2
  297. package/dist/43.34060633fa9548ec3437.bundle.js.map +0 -1
  298. package/dist/5.5f48e5c6fc10b52dd415.bundle.js.map +0 -1
  299. package/dist/53.78084dd64a27f7a6d2e8.bundle.js.map +0 -1
  300. package/dist/54.fe5e554af6ba2c5778c1.bundle.js.map +0 -1
  301. package/dist/56.9c6f6ecafc1909c42dda.bundle.js.map +0 -1
  302. package/dist/61.faf4ab26276a053ccac5.bundle.js +0 -2
  303. package/dist/61.faf4ab26276a053ccac5.bundle.js.map +0 -1
  304. package/dist/62.86f5ed4f7b582a8aa17d.bundle.js.map +0 -1
  305. package/dist/7.c7d8fb1dfdb444052435.bundle.js.map +0 -1
  306. package/dist/71.4dbbc366049697f736c5.bundle.js.map +0 -1
  307. package/dist/9.7bdbee8225f687ec81bc.bundle.js +0 -2
  308. package/dist/9.7bdbee8225f687ec81bc.bundle.js.map +0 -1
  309. package/dist/97.e88574ad257bd44724c3.bundle.js +0 -2
  310. package/dist/97.e88574ad257bd44724c3.bundle.js.map +0 -1
  311. package/dist/bundle.f540ee201846422b1cb9.bundle.js +0 -92
  312. package/dist/bundle.f540ee201846422b1cb9.bundle.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[17,54,63,120,126,134],{101:function(e,t){angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",r),r.$inject=["$http","$repositories"];function r(e){return{getIndexes:function(){return e.get("rest/similarity")},getSearchQueries:function(){return e.get("rest/similarity/config")},rebuildIndex:function(e){return t("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(t){return e.delete("rest/similarity?name="+t.name)},createIndex:t,getSamples:function(){return e.get("rest/similarity/samples")},getQuery:function(t){return e.get("rest/similarity/query",{params:{name:t.indexName,options:t.indexOptions,stopList:t.indexStopList,selectQuery:t.query,infer:t.queryInference,sameAs:t.querySameAs,type:t.viewType,analyzer:t.indexAnalyzer}})},saveSearchQuery:function(t){return e({method:"put",url:"rest/similarity/search-query",data:t})}};function t(t,r,n,i,a,o,s,c,u,l,d){return e({method:t,url:"rest/similarity",noCancelOnRouteChange:!0,data:{name:r,options:n,selectQuery:i,stopList:s,infer:c,sameAs:u,type:l,analyzer:d,searchQuery:a,analogicalQuery:o}})}}},103:function(e,t,r){"use strict";r.r(t);var n=r(259),i=r.n(n),a=r(0),o=r(57);function s(e,t,r,n,s,c,u,l,d,y,p,g){const m="http://www.ontotext.com/graphdb/similarity/",f="http://www.ontotext.com/graphdb/similarity/psi/",h=f+"any";e.pluginName="similarity",e.pluginIsActive=!0,e.setPluginIsActive=function(t){e.pluginIsActive=t};const w=function(e){return'"'+e+'"'},x=function(e){return void 0===e||e.startsWith("<<")&&e.endsWith(">>")?e:"<"+e+">"};function b(){return!e.getActiveRepository()||e.isActiveRepoFedXType()||e.isActiveRepoOntopType()}let I;function v(){s.isLicenseValid()&&(e.getAutocompletePromise=d.checkAutocompleteStatus())}e.info=y,e.getActiveRepository=function(){return n.getActiveRepository()},b()||l.getSearchQueries().success((function(t){e.searchQueries=t})).error((function(e){const t=getError(e);r.error(t,g.instant("similarity.could.not.get.search.queries.error"))})),e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getSimilarityIndexes=function(){!b()&&e.pluginIsActive&&l.getIndexes().success((function(t){e.similarityIndexes=t})).error((function(e){const t=getError(e);r.error(t,g.instant("similarity.could.not.get.indexes.error"))}))},e.pullList=function(){e.getSimilarityIndexes();const r=t((function(){e.$broadcast("checkIsActive"),"false"!==$("#indexes-table").attr("aria-expanded")&&e.getSimilarityIndexes()}),5e3);e.$on("$destroy",(function(){t.cancel(r)}))},e.getActiveRepository()&&s.isLicenseValid()&&e.pullList(),e.$watch((function(){return n.getActiveRepository()}),(function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()||(e.getNamespacesPromise=p.getNamespaces(e.getActiveRepository()).success((function(t){v(),e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),e.$on("$destroy",(function(){I&&I.destroy()})),I=i()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0,pluginsOptions:o.YasrUtils.getYasrConfiguration()})})).error((function(e){r.error(getError(e),g.instant("get.namespaces.error.msg"))})))})),e.$on("autocompleteStatus",(function(){v()})),e.loading=!1,e.selected=void 0,e.searchType="searchTerm",e.resultType="termResult",e.$watch("searchType",(function(){e.empty=!0})),e.goToSimilarityIndex=function(t){"BUILT"!==t.status&&"OUTDATED"!==t.status&&"REBUILDING"!==t.status||(e.empty=!0,e.selected!==t&&(e.lastSearch=void 0,e.selected=t),"text"===t.type?e.searchType="searchTerm":"predication"===t.type&&(e.searchType="searchEntity"),"text"!==t.type&&"predication"!==t.type||$("#indexes-table").collapse("hide"))};const S=function(t){const r=angular.element(document.getElementById("yasr-inner")),n=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,r.addClass("opacity-hide"),n.removeClass("opacity-hide")):(e.loading=!1,r.removeClass("opacity-hide"),n.addClass("opacity-hide"))};e.performSearch=function(t,i,a,o,s){S(!0);let c=i;e.lastSearch={},e.lastSearch.type=a,"searchEntityPredicate"===a&&(c=e.psiSubject,e.lastSearch.predicate=i),c="searchTerm"===a?w(c):x(c),e.lastSearch.termOrSubject=c;let u;u="searchAnalogical"===a?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const l={query:u,$index:x("http://www.ontotext.com/graphdb/similarity/instance/"+t),$query:c,$searchType:x(("text"===e.selected.type?m:f)+("searchEntityPredicate"===a?"searchEntity":a)),$resultType:x("text"===e.selected.type?m+o:f+"entityResult"),$parameters:w(s)};"searchEntityPredicate"===a&&(l.$psiPredicate=e.lastSearch.predicate?x(e.lastSearch.predicate):x(h)),"searchAnalogical"===a&&(e.searchSubject=i,l.$givenSubject=x(e.analogicalSubject),l.$givenObject=x(e.analogicalObject),l.$searchSubject=x(i)),$.ajax({method:"GET",url:"repositories/"+n.getActiveRepository(),data:l,headers:{Accept:"application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8"}}).done((function(e,t,r){S(!1),I.setResponse(e,t,r)})).fail((function(e){r.error(getError(e),g.instant("similarity.get.resource.error")),S(!1)}))},e.viewSearchQuery=function(){let t;t="searchAnalogical"===e.lastSearch.type?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];let r=[],n="";r=t.match(/[a-zA-Z0-9-]+:<http:\/\/www.ontotext.com\/graphdb\/similarity\/instance\/>/),n=null==r?"similarity-index":r[0].substring(0,r[0].indexOf(":"));const i=t.replace("?index",n+":"+e.selected.name).replace("?query",e.lastSearch.termOrSubject).replace("?searchType",("text"===e.selected.type?":":"psi:")+("searchEntityPredicate"===e.lastSearch.type?"searchEntity":e.lastSearch.type)).replace("?resultType","text"===e.selected.type?":"+e.resultType:"psi:entityResult").replace("?parameters",w(e.searchParameters?e.searchParameters:"")).replace("?psiPredicate",e.lastSearch.predicate?x(e.lastSearch.predicate):x(h)).replace("?givenSubject",x(e.analogicalSubject)).replace("?givenObject",x(e.analogicalObject)).replace("?searchSubject",x(e.searchSubject));u.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return i}}})},e.deleteIndex=function(t){c.openSimpleModal({title:g.instant("common.confirm"),message:g.instant("similarity.delete.index.warning",{name:t.name}),warning:!0}).result.then((function(){l.deleteIndex(t).then((function(){e.getSimilarityIndexes()}),(function(e){r.error(getError(e))}))}))},e.viewCreateQuery=function(e){l.getQuery({indexName:e.name,indexOptions:e.options,query:e.selectQuery,indexStopList:e.stopList,queryInference:e.infer,querySameAs:e.sameAs,viewType:e.type,indexAnalyzer:e.analyzer}).success((function(e){u.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})}))},e.rebuildIndex=function(t){t.searchQuery||(t.searchQuery=t.type?e.searchQueries[t.type]:e.searchQueries.text),c.openSimpleModal({title:g.instant("common.confirm"),message:Object(a.decodeHTML)(g.instant("similarity.rebuild.index.warning",{name:t.name})),warning:!0}).result.then((function(){t.status="REBUILDING",l.rebuildIndex(t).then((function(e){}),(function(e){r.error(getError(e))}))}))},e.copyToClipboardResult=function(e){c.openCopyToClipboardModal(e)},e.trimIRI=function(e){return _.trim(e,"<>")}}angular.module("graphdb.framework.similarity.controllers.list",[]).controller("SimilarityCtrl",s),s.$inject=["$scope","$interval","toastr","$repositories","$licenseService","ModalService","$uibModal","SimilarityRestService","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService","$translate"]},104:function(e,t,r){"use strict";r.r(t);r(39),r(5);function n(e,t,r,n,i,a,o,s,c,u,l,d,y){const p=o.search().type;void 0===p||p.startsWith("text")?e.viewType="text":e.viewType=p;e.newIndex={},e.info=s,e.page=1;const g={id:"1",name:"",query:"",inference:!0,sameAs:!0};const m=function(){var r;if(e.editSearchQuery=o.search().editSearchQuery,e.page=e.editSearchQuery?2:1,e.newIndex.name=(r=o.search().name)?1!==e.page?r:"Copy_of_"+r:"",e.newIndex.options=o.search().options?o.search().options:"text"===e.viewType?"-termweight idf":"",e.searchQueries&&(e.newIndex.searchQuery=o.search().searchQuery?o.search().searchQuery:e.searchQueries[e.viewType],"predication"===e.viewType&&(e.newIndex.analogicalQuery=o.search().analogicalQuery?o.search().analogicalQuery:e.searchQueries.analogical)),e.editSearchQuery)e.currentQuery.query=e.newIndex.searchQuery,e.notoolbarInference=!0,e.notoolbarSameAs=!0,window.editor&&e.setQuery(e.newIndex.searchQuery);else{if("text"===e.viewType&&e.allSamples){e.samples=e.allSamples.text,e.newIndex.stopList=o.search().stopList?o.search().stopList:void 0,e.newIndex.analyzer=o.search().analyzer?o.search().analyzer:"org.apache.lucene.analysis.en.EnglishAnalyzer";const t=x("-literal_index");void 0!==t&&(e.newIndex.isLiteralIndex=t),window.editor&&e.setQuery(e.samples.literals)}"predication"===e.viewType&&e.allSamples&&(i.getIndexes().success((function(t){if(e.literalIndexes=["no-index"].concat(t.filter((function(e){return"textLiteral"===e.type&&("BUILT"===e.status||"OUTDATED"===e.status)})).map((function(e){return e.name}))),void 0===e.newIndex.inputIndex){const t=x("-input_index");if(void 0!==t)for(let r=0;r<e.literalIndexes.length;r++)t===e.literalIndexes[r]&&(e.newIndex.inputIndex=e.literalIndexes[r])}void 0===e.newIndex.inputIndex&&(e.newIndex.inputIndex=e.literalIndexes[0])})).error((function(e){const r=getError(e);t.error(r,y.instant("similarity.could.not.get.indexes.error"))})),e.samples=e.allSamples.predication,window.editor&&e.setQuery(e.samples.predication))}},f=new RegExp("^[a-zA-Z0-9-_]+$"),h=function(){return e.invalidIndexName=!1,e.saveQueries(),e.newIndex.name?f.test(e.newIndex.name)?e.newIndex.query?e.newIndex.searchQuery?"predication"!==e.viewType||e.newIndex.analogicalQuery?"SELECT"===window.editor.getQueryType()||void t.error(y.instant("similarity.index.select.queries.constraint")):(t.error(y.instant("similarity.empty.analogical.query.error")),!1):(t.error(y.instant("similarity.empty.search.query.error")),!1):(t.error(y.instant("similarity.empty.select.query.error")),!1):(e.invalidIndexName=y.instant("similarity.index.name.constraint"),!1):(e.invalidIndexName=y.instant("similarity.empty.index.name.error"),!1)},w=function(t,r){e.newIndex.options=e.newIndex.options+(""===e.newIndex.options?"":" ")+t+" "+r};function x(t){const r=e.newIndex.options.split(" ");for(let n=0;n<r.length;n++)if(r[n]===t&&n+1<r.length){const t=r[n+1];return delete r[n],delete r[n+1],e.newIndex.options=r.join(" "),t}}function b(e){}function I(t,r,n){const i=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=t,t?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=r,e.extraMessage=n,i.addClass("hide")):(e.progressMessage="",e.extraMessage="",i.removeClass("hide")),null===e.$$phase&&e.$apply()}function v(t){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}const i=t;if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let t;t=n(i?function(){e.fixSizesOnHorizontalViewModeSwitch(i)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){n.cancel(t)}))}window.yasr&&window.yasr.container&&n((function(){window.yasr.container.resize()}),100)}function S(){v(!0)}function Q(e){n((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function T(r,n){e.executedQueryTab=e.currentQuery,"SELECT"===window.editor.getQueryType()?n&&"SELECT"!==window.editor.getQueryType()?t.warning(y.instant("similarity.explain.select.queries.constraint")):"update"!==window.editor.getQueryMode()?(e.explainRequested=n,e.queryIsRunning||(r?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.viewMode="editor",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch(),I(!0,y.instant("evaluating.query.msg")),window.editor.query())):t.warning(y.instant("cannot.execute.update.error")):t.error(y.instant("similarity.indexes.select.queries.constraint"))}function q(){I(!0,y.instant("common.refreshing.namespaces"),y.instant("common.extra.message")),u.getRepositoryNamespaces().success((function(t){const r={};t.results.bindings.forEach((function(e){r[e.prefix.value]=e.namespace.value})),e.namespaces=r})).error((function(t){e.repositoryError=getError(t)})).finally((function(){I(!1)}))}function C(){a.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){const r=getError(e);return t.error(r,y.instant("common.add.known.prefixes.error")),!0}))}function E(t){let r=void 0;return angular.forEach(e.tabsData,(function(e){if(e.name===t.name&&e.query===t.body)return r=e.id,e})),r}function A(){e.tabsData=[e.currentQuery];const t=e.currentQuery;null===e.currentQuery.query||""===e.currentQuery.query?window.editor.setValue(" "):window.editor.setValue(e.currentQuery.query||" "),n((function(){e.currentTabConfig={},e.currentTabConfig.queryType=t.queryType,e.currentTabConfig.resultsCount=t.resultsCount,e.currentTabConfig.offset=t.offset,e.currentTabConfig.allResultsCount=t.allResultsCount,e.currentTabConfig.page=t.page,e.currentTabConfig.pageSize=t.pageSize,e.currentTabConfig.timeFinished=t.timeFinished,e.currentTabConfig.timeTook=t.timeTook,e.currentTabConfig.sizeDelta=t.sizeDelta,e.$apply()}),0),$("#yasr").css("padding","0")}function R(e){return $(e).attr("data-id")}i.getSearchQueries().success((function(t){e.searchQueries=t,i.getSamples().success((function(t){g.query=o.search().selectQuery?o.search().selectQuery:t.text.literals,g.inference=!("false"===o.search().infer),g.sameAs=!("false"===o.search().sameAs),e.tabsData=e.tabs=[g],e.currentQuery=angular.copy(g),e.allSamples=t,m()}))})).error((function(e){const r=getError(e);t.error(r,y.instant("similarity.could.not.get.search.queries.error"))})),e.$watch("viewType",(function(){m()})),e.helpHidden=1===l.get(d.HIDE_SIMILARITY_HELP),e.toggleHelp=function(t){void 0===t&&(t=l.get(d.HIDE_SIMILARITY_HELP)),1!==t?(l.set(d.HIDE_SIMILARITY_HELP,1),e.helpHidden=!0):(l.set(d.HIDE_SIMILARITY_HELP,0),e.helpHidden=!1)},e.viewQuery=function(){h()&&i.getQuery({indexName:e.newIndex.name,indexOptions:e.newIndex.options,query:e.currentQuery.query,indexStopList:e.newIndex.stopList,queryInference:e.currentQuery.inference,querySameAs:e.currentQuery.sameAs,viewType:e.viewType,indexAnalyzer:e.newIndex.analyzer}).success((function(e){e&&r.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})})).error((function(e){const r=getError(e);t.error(r)}))},e.$watch("newIndex.name",(function(){e.isInvalidIndexName=!1,e.isEmptyIndexName=!1})),e.saveQueries=function(){const t=window.editor.getValue().trim();1===e.page?e.newIndex.query=t:2===e.page?e.newIndex.searchQuery=t:3===e.page&&(e.newIndex.analogicalQuery=t)},e.goToPage=function(t){1!==t&&"yasr"!==e.viewMode&&(e.showEditor(),n((function(){2===t&&(e.currentQuery.query=e.newIndex.searchQuery),3===t&&(e.currentQuery.query=e.newIndex.analogicalQuery),window.editor.setValue(e.currentQuery.query||" ")}))),e.saveQueries(),1===t?e.currentQuery.query=e.newIndex.query:2===t?e.currentQuery.query=e.newIndex.searchQuery:3===t&&(e.currentQuery.query=e.newIndex.analogicalQuery),A(),e.notoolbar=1!==t,e.page=t},e.createIndex=function(){h()&&i.getIndexes().success((function(r){if(r.forEach((function(t){t.name===e.newIndex.name&&(e.invalidIndexName=y.instant("similarity.existing.index.name.error"))})),!e.invalidIndexName){let r=e.viewType;if(void 0!==e.literalIndexes){const t=e.newIndex.inputIndex;t!==e.literalIndexes[0]&&w("-input_index",t)}"true"===e.newIndex.isLiteralIndex&&(w("-literal_index","true"),r="textLiteral"),i.createIndex("POST",e.newIndex.name,e.newIndex.options,e.newIndex.query,e.newIndex.searchQuery,e.newIndex.analogicalQuery,e.newIndex.stopList,e.currentQuery.inference,e.currentQuery.sameAs,r,e.newIndex.analyzer).error((function(e){t.error(getError(e),y.instant("similarity.create.index.error"))})),o.url("similarity")}})).error((function(e){const r=getError(e);t.error(r,y.instant("similarity.could.not.get.indexes.error"))}))},e.setQuery=function(e){window.editor.setValue(e||" ")},e.showEditor=function(){window.editor.xhr&&window.editor.xhr.abort(),e.viewMode="yasr"},e.showPreview=function(){e.currentQuery.outputType="table",e.runQuery()},e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:100,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.tabsData=e.tabs=[g],e.saveTab=function(t){const r=function(t){for(let r=0;r<e.tabsData.length;r++){if(e.tabsData[r].id===t)return r}}(t);if(void 0===r)return{};const n=e.tabsData[r];return e.saveQueryToLocal(n),n},e.loadTab=A,e.addNewTab=function(e,t,r){},e.runQuery=T,e.getNamespaces=q,e.changePagination=function(){T(!0,e.explainRequested)},e.toggleSampleQueries=function(){},e.addKnownPrefixes=C,e.getExistingTabId=E,e.querySelected=function(t){const r=E(t);e.toggleSampleQueries(),angular.isDefined(r)?Q(r):e.addNewTab(null,t.name,t.body)},e.saveQueryToLocal=b,e.setLoader=I,e.getLoaderMessage=function(){const t=(Date.now()-e.queryStartTime)/1e3,r=e.getHumanReadableSeconds(t);let n="";n=e.progressMessage?e.progressMessage+"... "+r:y.instant("common.running.operation",{timeHuman:r});e.extraMessage&&t>10&&(n+="\n"+e.extraMessage);return n},e.fixSizesOnHorizontalViewModeSwitch=v,e.changeViewMode=function(t){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,v(),$(".dataTables_filter").remove(),$(".resultsTable").remove(),n((function(){A(),Q(t)}),100)},e.showHideEditor=S,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!0,e.getActiveRepository(),e.orientationViewMode||S(),e.getActiveRepository()&&q(),e.$on("$destroy",(function(){window.editor=null,window.yasr=null})),$("textarea").on("paste",(function(){n((function(){C()}),0)})),e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(){e.currentQuery})),e.$on("tabAction",(function(t,r){r.relatedTarget&&e.saveTab(R(r.relatedTarget)),e.loadTab(R(r.target))})),e.$on("deleteAllexeptSelected",(function(t,r){e.tabsData=r,e.tabs=r})),e.currentQuery=angular.copy(g),e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.getResultsDescription=function(){},e.getUpdateDescription=function(){},e.getStaleWarningMessage=function(){},e.saveSearchQuery=function(){if("SELECT"!==window.editor.getQueryType())return void t.error(y.instant("similarity.index.select.queries.constraint"));let r={name:e.newIndex.name,changedQuery:e.currentQuery.query,isSearchQuery:2===e.page};return i.saveSearchQuery(JSON.stringify(r)).then((async function(){await c.showToastMessageWithDelay(2===e.page?"similarity.changed.search.query.msg":"similarity.changed.analogical.query.msg"),o.url("similarity")}),(function(e){t.error(getError(e),y.instant("similarity.change.query.error"))}))},e.getCloseBtnMsg=function(){let t=e.editSearchQuery?y.instant("similarity.query.edition.msg"):y.instant("similarity.index.creation.msg");return y.instant("similarity.close.btn.msg",{operation:t})}}angular.module("graphdb.framework.similarity.controllers.create",["graphdb.framework.utils.notifications","graphdb.framework.utils.localstorageadapter"]).controller("CreateSimilarityIdxCtrl",n),n.$inject=["$scope","toastr","$uibModal","$timeout","SimilarityRestService","SparqlRestService","$location","productInfo","Notifications","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys","$translate"]},157:function(e,t,r){"use strict";r.r(t);r(4),r(11),r(16),r(101),r(103),r(104),r(45),r(55),r(56);angular.module("graphdb.framework.similarity",["graphdb.framework.core.controllers","graphdb.framework.core.directives","graphdb.framework.rest.similarity.service","graphdb.framework.similarity.controllers.create","graphdb.framework.similarity.controllers.list","graphdb.framework.core.directives.queryeditor.controllers","graphdb.framework.core.directives.queryeditor.sparqltab","graphdb.framework.core.directives.queryeditor.queryeditor"])},39:function(e,t){function r(e,t){return{showToastMessageWithDelay:function(r){return new Promise(n=>{e.success(t.instant(r)),setTimeout(n,200)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",r),r.$inject=["toastr","$translate"]},45:function(e,t,r){"use strict";r.r(t);r(5);function n(e,t,r,n){return{restrict:"AE",template:'<a class="nav-link" role="tab" data-toggle="tab" blur="submit" editable-text="tab.name" e-form="editCurrentlySelectedOnly" ng-click="selectThisTab($event)" ng-dblclick="editCurrentTab()" ><span ng-class="{\'text-muted\': !tab.name}">{{ tab.name || (\'sparql.tab.directive.unnamed.tab.title\' | translate)}}</span><button type="button" ng-click="deleteTab($event)" class="btn btn-link btn-sm secondary delete-sparql-tab-btn" title="Delete tab"><i class="icon-close"></i></button></a>',replace:!0,controller:["$scope","$element","$rootScope","ModalService","toastr","$translate",function(e,n,i,a,o,s){function c(e){return $(e).attr("data-id")}function u(e){$('a[data-id = "'+e+'"]').tab("show")}e.state={},$(n).on("shown.bs.tab",(function(e){i.$broadcast("tabAction",e)})),e.deleteTab=function(l){if(l.preventDefault(),l.stopPropagation(),e.tabs.length<2)return void o.warning(s.instant("sparql.tab.directive.close.last.warning"));l.shiftKey?(e.state.selectedTabId=c(n),a.openSimpleModal({title:s.instant("common.confirm"),message:s.instant("sparql.tab.directive.delete.all.tabs.warning"),warning:!0}).result.then((function(){var n;n=e.state.selectedTabId,e.tabs=e.tabs.filter((function(e){if(e.id===n)return e})),u(e.tabs[0].id),t.set(r.TABS_STATE,e.tabs),i.$broadcast("deleteAllexeptSelected",e.tabs)}))):(e.state.idForDelete=c(n),a.openSimpleModal({title:s.instant("common.confirm"),message:s.instant("sparql.tab.directive.close.tab.warning"),warning:!0}).result.then((function(){!function(t){if(angular.isUndefined(t))throw"Delete by id was called with undefined id";const r=function(t){for(let r=0;r<e.tabs.length;r++){if(e.tabs[r].id===t)return r}}(t);e.tabs.splice(r,1),t===e.currentQuery.id&&e.tabs.length>0&&u(r>0?e.tabs[r-1].id:e.tabs[0].id)}(e.state.idForDelete)})));angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.editCurrentTab=function(){if(c(n)!==e.currentQuery.id)return;e.editCurrentlySelectedOnly.$show();const t=$(".editable-buttons");t.children(".btn.btn-primary").addClass("btn-sm"),t.children(".btn.btn-default").addClass("btn-sm"),$(".editable-controls .editable-input").addClass("form-control-sm").on("change",(function(t){e.currentQuery.name=t.currentTarget.$$currentValue})),$(".editable-buttons .glyphicon.glyphicon-ok").removeClass("glyphicon glyphicon-ok").addClass("fa fa-check"),$(".editable-buttons .glyphicon.glyphicon-remove").removeClass("glyphicon glyphicon-remove").addClass("fa fa-close")},e.selectThisTab=function(t){t.preventDefault(),t.stopPropagation(),e.isTabChangeOk(!1)&&$(n).tab("show")}}]}}angular.module("graphdb.framework.core.directives.queryeditor.sparqltab",["graphdb.framework.core","graphdb.framework.utils.localstorageadapter"]).directive("sparqlTab",n),n.$inject=["$rootScope","LocalStorageAdapter","LSKeys","ModalService"]}}]);
2
+ //# sourceMappingURL=17.675eef636eb095240fab.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/rest/similarity.rest.service.js","webpack:///./src/js/angular/similarity/controllers/similarity-list.controller.js","webpack:///./src/js/angular/similarity/controllers/create-index.controller.js","webpack:///./src/js/angular/similarity/app.js","webpack:///./src/js/angular/utils/notifications.js","webpack:///./src/js/angular/core/directives/queryeditor/sparql-tab.directive.js"],"names":["angular","module","factory","SimilarityRestService","$inject","$http","getIndexes","get","getSearchQueries","rebuildIndex","index","createIndex","name","options","selectQuery","searchQuery","analogicalQuery","stopList","infer","sameAs","type","deleteIndex","delete","getSamples","getQuery","data","params","indexName","indexOptions","indexStopList","query","queryInference","querySameAs","viewType","analyzer","indexAnalyzer","saveSearchQuery","method","url","noCancelOnRouteChange","SimilarityCtrl","$scope","$interval","toastr","$repositories","$licenseService","ModalService","$uibModal","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService","$translate","PREFIX","PREFIX_PREDICATION","ANY_PREDICATE","pluginName","pluginIsActive","setPluginIsActive","isPluginActive","literalForQuery","literal","iriForQuery","iri","undefined","startsWith","endsWith","shouldSkipCall","getActiveRepository","isActiveRepoFedXType","isActiveRepoOntopType","yasr","checkAutocompleteStatus","isLicenseValid","getAutocompletePromise","info","success","searchQueries","error","msg","getError","instant","encodeURIComponent","param","getSimilarityIndexes","similarityIndexes","pullList","timer","$broadcast","$","attr","$on","cancel","$watch","getNamespacesPromise","getNamespaces","usedPrefixes","results","bindings","forEach","e","prefix","value","namespace","destroy","document","getElementById","getUsedPrefixes","persistency","hideHeader","pluginsOptions","getYasrConfiguration","loading","selected","searchType","resultType","empty","goToSimilarityIndex","status","lastSearch","collapse","toggleOntoLoader","showLoader","yasrInnerContainer","element","resultsLoader","addClass","removeClass","performSearch","uri","parameters","termOrSubject","psiSubject","predicate","sparqlQuery","sendData","$index","$query","$searchType","$resultType","$parameters","$psiPredicate","searchSubject","$givenSubject","analogicalSubject","$givenObject","analogicalObject","$searchSubject","ajax","headers","Accept","done","textStatus","jqXhrOrErrorString","setResponse","fail","viewSearchQuery","queryTemplate","tokens","match","substring","indexOf","replacedQuery","replace","searchParameters","open","templateUrl","controller","resolve","openSimpleModal","title","message","warning","result","then","err","viewCreateQuery","text","res","copyToClipboardResult","openCopyToClipboardModal","trimIRI","_","trim","CreateSimilarityIdxCtrl","$timeout","SparqlRestService","$location","Notifications","LocalStorageAdapter","LSKeys","indexType","search","newIndex","page","defaultTabConfig","id","inference","initForViewType","indexNameFromLocation","editSearchQuery","currentQuery","notoolbarInference","notoolbarSameAs","window","editor","setQuery","allSamples","samples","isLiteralIndex","getAndRemoveOption","literalIndexes","concat","filter","idx","map","inputIndex","desiredIdx","j","length","filenamePattern","RegExp","validateIndex","invalidIndexName","saveQueries","test","getQueryType","appendOption","option","key","optArr","split","i","join","saveQueryToLocal","currentQueryTab","setLoader","isRunning","progressMessage","extraMessage","queryIsRunning","queryStartTime","Date","now","countTimeouted","$$phase","$apply","fixSizesOnHorizontalViewModeSwitch","verticalViewParam","visibleWindowHeight","innerHeight","documentElement","clientHeight","body","verticalView","orientationViewMode","viewMode","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","container","resize","showHideEditor","selectTab","tab","runQuery","changePage","explain","executedQueryTab","getQueryMode","explainRequested","currentTabConfig","resultsCount","resetCurrentTabConfig","getRepositoryNamespaces","namespaces","repositoryError","finally","addKnownPrefixes","JSON","stringify","getValue","isDefined","setValue","getExistingTabId","existingTabId","tabsData","item","loadTab","queryType","offset","allResultsCount","pageSize","timeFinished","timeTook","sizeDelta","css","getQueryID","tabs","copy","helpHidden","HIDE_SIMILARITY_HELP","toggleHelp","set","viewQuery","isInvalidIndexName","isEmptyIndexName","goToPage","showEditor","notoolbar","xhr","abort","showPreview","outputType","queryExists","saveTab","findTabIndexByID","addNewTab","callback","tabName","savedQuery","changePagination","toggleSampleQueries","querySelected","tabId","getLoaderMessage","timeSeconds","timeHuman","getHumanReadableSeconds","changeViewMode","tabID","remove","focusQueryEditor","find","is","focus","on","$watchCollection","tabEvent","relatedTarget","target","showSampleQueries","sampleQueries","getResultsDescription","getUpdateDescription","getStaleWarningMessage","changedQuery","isSearchQuery","async","showToastMessageWithDelay","response","getCloseBtnMsg","operationType","operation","Promise","r","setTimeout","sparqlTabDirective","$rootScope","restrict","template","$element","state","deleteTab","preventDefault","stopPropagation","shiftKey","selectedTabId","obj","TABS_STATE","idForDelete","isUndefined","splice","deleteTabByID","editCurrentTab","editCurrentlySelectedOnly","$show","$editableButtons","children","$el","currentTarget","$$currentValue","selectThisTab","isTabChangeOk","directive"],"mappings":"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","file":"17.675eef636eb095240fab.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.similarity.service', [])\n .factory('SimilarityRestService', SimilarityRestService);\n\nSimilarityRestService.$inject = ['$http', '$repositories'];\n\nconst SIMILARITY_ENDPOINT = 'rest/similarity';\n\nfunction SimilarityRestService($http) {\n\n return {\n getIndexes,\n getSearchQueries,\n rebuildIndex,\n deleteIndex,\n createIndex,\n getSamples,\n getQuery,\n saveSearchQuery\n };\n\n function getIndexes() {\n return $http.get(SIMILARITY_ENDPOINT);\n }\n\n function getSamples() {\n return $http.get(`${SIMILARITY_ENDPOINT}/samples`);\n }\n\n function getSearchQueries() {\n return $http.get(`${SIMILARITY_ENDPOINT}/config`);\n }\n\n function createIndex(method, name, options, selectQuery, searchQuery, analogicalQuery, stopList, infer, sameAs, type, analyzer) {\n return $http({\n method,\n url: `${SIMILARITY_ENDPOINT}`,\n noCancelOnRouteChange: true,\n data: {\n name,\n options,\n selectQuery,\n stopList,\n infer,\n sameAs,\n type,\n analyzer,\n searchQuery,\n analogicalQuery\n }\n }\n );\n }\n\n function rebuildIndex(index) {\n return createIndex('PUT', index.name, index.options, index.selectQuery, index.searchQuery, index.analogicalQuery, index.stopList, index.infer, index.sameAs, index.type);\n }\n\n function deleteIndex(index) {\n return $http.delete(`${SIMILARITY_ENDPOINT}?name=${index.name}`);\n }\n\n function getQuery(data) {\n return $http.get('rest/similarity/query',\n {\n params: {\n name: data.indexName,\n options: data.indexOptions,\n stopList: data.indexStopList,\n selectQuery: data.query,\n infer: data.queryInference,\n sameAs: data.querySameAs,\n type: data.viewType,\n analyzer: data.indexAnalyzer\n }\n });\n }\n\n function saveSearchQuery(data) {\n return $http({\n method: 'put',\n url: 'rest/similarity/search-query',\n data\n });\n }\n}\n","import YASR from 'lib/yasr.bundled';\nimport {decodeHTML} from \"../../../../app\";\nimport {YasrUtils} from \"../../utils/yasr-utils\";\n\nangular\n .module('graphdb.framework.similarity.controllers.list', [])\n .controller('SimilarityCtrl', SimilarityCtrl);\n\nSimilarityCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', 'ModalService', '$uibModal', 'SimilarityRestService', 'AutocompleteRestService', 'productInfo', 'RDF4JRepositoriesRestService', '$translate'];\n\nfunction SimilarityCtrl($scope, $interval, toastr, $repositories, $licenseService, ModalService, $uibModal, SimilarityRestService, AutocompleteRestService, productInfo, RDF4JRepositoriesRestService, $translate) {\n\n const PREFIX = 'http://www.ontotext.com/graphdb/similarity/';\n const PREFIX_PREDICATION = 'http://www.ontotext.com/graphdb/similarity/psi/';\n const PREFIX_INSTANCE = PREFIX + 'instance/';\n const ANY_PREDICATE = PREFIX_PREDICATION + 'any';\n $scope.pluginName = 'similarity';\n $scope.pluginIsActive = true;\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n };\n\n const literalForQuery = function (literal) {\n return '\"' + literal + '\"';\n };\n\n // TODO: Fix cases when this function is called with undefined\n const iriForQuery = function (iri) {\n // Do not put brackets on nested triples\n if (iri === undefined || iri.startsWith(\"<<\") && iri.endsWith(\">>\")) {\n return iri;\n }\n return '<' + iri + '>';\n };\n\n $scope.info = productInfo;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n // Don't call functions if one of the following conditions are met\n function shouldSkipCall() {\n return !$scope.getActiveRepository() ||\n $scope.isActiveRepoFedXType() ||\n $scope.isActiveRepoOntopType();\n }\n\n if (!shouldSkipCall()) {\n SimilarityRestService.getSearchQueries().success(function (data) {\n $scope.searchQueries = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('similarity.could.not.get.search.queries.error'));\n });\n }\n\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n // get similarity indexes\n $scope.getSimilarityIndexes = function () {\n if (shouldSkipCall() || !$scope.pluginIsActive) {\n return;\n }\n SimilarityRestService.getIndexes()\n .success(function (data) {\n $scope.similarityIndexes = data;\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('similarity.could.not.get.indexes.error'));\n });\n };\n\n $scope.pullList = function () {\n $scope.getSimilarityIndexes();\n const timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($('#indexes-table').attr('aria-expanded') !== 'false') {\n $scope.getSimilarityIndexes();\n }\n }, 5000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n if ($scope.getActiveRepository()) {\n if ($licenseService.isLicenseValid()) {\n $scope.pullList();\n }\n }\n\n let yasr;\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n // Don't try to get namespaces for ontop or fedx repository\n if ($scope.getActiveRepository() && !$scope.isActiveRepoOntopType() && !$scope.isActiveRepoFedXType()) {\n $scope.getNamespacesPromise = RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n checkAutocompleteStatus();\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.$on('$destroy', function () {\n if (yasr) {\n yasr.destroy();\n }\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true,\n pluginsOptions: YasrUtils.getYasrConfiguration()\n });\n }).error(function (data) {\n toastr.error(getError(data), $translate.instant('get.namespaces.error.msg'));\n });\n }\n });\n\n function checkAutocompleteStatus() {\n if ($licenseService.isLicenseValid()) {\n $scope.getAutocompletePromise = AutocompleteRestService.checkAutocompleteStatus();\n }\n }\n\n $scope.$on('autocompleteStatus', function() {\n checkAutocompleteStatus();\n });\n\n $scope.loading = false;\n\n $scope.selected = undefined;\n $scope.searchType = 'searchTerm';\n $scope.resultType = 'termResult';\n\n $scope.$watch('searchType', function () {\n $scope.empty = true;\n });\n\n $scope.goToSimilarityIndex = function (index) {\n if (!('BUILT' === index.status || 'OUTDATED' === index.status || 'REBUILDING' === index.status)) {\n return;\n }\n $scope.empty = true;\n if ($scope.selected !== index) {\n $scope.lastSearch = undefined;\n $scope.selected = index;\n }\n if (index.type === 'text') {\n $scope.searchType = 'searchTerm';\n } else if (index.type === 'predication') {\n $scope.searchType = 'searchEntity';\n }\n if (index.type === 'text' || index.type === 'predication') {\n $('#indexes-table').collapse('hide');\n }\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass('opacity-hide');\n resultsLoader.removeClass('opacity-hide');\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass('opacity-hide');\n resultsLoader.addClass('opacity-hide');\n }\n };\n\n $scope.performSearch = function (index, uri, searchType, resultType, parameters) {\n\n toggleOntoLoader(true);\n\n // this is either the search term or the iri for the subject\n let termOrSubject = uri;\n\n $scope.lastSearch = {};\n $scope.lastSearch.type = searchType;\n\n if (searchType === 'searchEntityPredicate') {\n termOrSubject = $scope.psiSubject;\n $scope.lastSearch.predicate = uri;\n }\n\n if (searchType === 'searchTerm') {\n termOrSubject = literalForQuery(termOrSubject);\n } else {\n termOrSubject = iriForQuery(termOrSubject);\n }\n\n $scope.lastSearch.termOrSubject = termOrSubject;\n\n const headers = {Accept: 'application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8'};\n let sparqlQuery;\n if (searchType === 'searchAnalogical') {\n sparqlQuery = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n sparqlQuery = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n const sendData = {\n query: sparqlQuery,\n $index: iriForQuery(PREFIX_INSTANCE + index),\n $query: termOrSubject,\n $searchType: iriForQuery(($scope.selected.type === 'text' ? PREFIX : PREFIX_PREDICATION) + (searchType === 'searchEntityPredicate' ? 'searchEntity' : searchType)),\n $resultType: iriForQuery($scope.selected.type === 'text' ? PREFIX + resultType : PREFIX_PREDICATION + 'entityResult'),\n $parameters: literalForQuery(parameters)\n };\n\n if (searchType === 'searchEntityPredicate') {\n sendData.$psiPredicate = $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE);\n }\n\n if (searchType === 'searchAnalogical') {\n $scope.searchSubject = uri;\n sendData.$givenSubject = iriForQuery($scope.analogicalSubject);\n sendData.$givenObject = iriForQuery($scope.analogicalObject);\n sendData.$searchSubject = iriForQuery(uri);\n }\n\n $.ajax({\n method: 'GET',\n url: 'repositories/' + $repositories.getActiveRepository(),\n data: sendData,\n headers: headers\n }).done(function (data, textStatus, jqXhrOrErrorString) {\n toggleOntoLoader(false);\n yasr.setResponse(data, textStatus, jqXhrOrErrorString);\n }).fail(function (data) {\n toastr.error(getError(data), $translate.instant('similarity.get.resource.error'));\n toggleOntoLoader(false);\n });\n };\n\n $scope.viewSearchQuery = function () {\n let queryTemplate;\n if ($scope.lastSearch.type === 'searchAnalogical') {\n queryTemplate = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n queryTemplate = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n\n //replace template prefix for PREFIX_INSTANCE in the view mode with actual prefix from the query\n let tokens = [];\n let prefix = '';\n tokens = queryTemplate.match(/[a-zA-Z0-9-]+:<http:\\/\\/www.ontotext.com\\/graphdb\\/similarity\\/instance\\/>/);\n prefix = tokens == null ? \"similarity-index\" : tokens[0].substring(0, tokens[0].indexOf(':'));\n\n const replacedQuery = queryTemplate\n .replace('?index', prefix + ':' + $scope.selected.name)\n .replace('?query', $scope.lastSearch.termOrSubject)\n .replace('?searchType', ($scope.selected.type === 'text' ? ':' : 'psi:') + ($scope.lastSearch.type === 'searchEntityPredicate' ? 'searchEntity' : $scope.lastSearch.type))\n .replace('?resultType', $scope.selected.type === 'text' ? ':' + $scope.resultType : 'psi:entityResult')\n .replace('?parameters', literalForQuery((!$scope.searchParameters) ? '' : $scope.searchParameters))\n .replace('?psiPredicate', $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE))\n .replace('?givenSubject', iriForQuery($scope.analogicalSubject))\n .replace('?givenObject', iriForQuery($scope.analogicalObject))\n .replace('?searchSubject', iriForQuery($scope.searchSubject));\n\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return replacedQuery;\n }\n }\n });\n };\n\n\n $scope.deleteIndex = function (index) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm'),\n message: $translate.instant('similarity.delete.index.warning', {name: index.name}),\n warning: true\n }).result\n .then(function () {\n SimilarityRestService.deleteIndex(index)\n .then(function () {\n $scope.getSimilarityIndexes();\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.viewCreateQuery = function (index) {\n SimilarityRestService.getQuery({\n indexName: index.name,\n indexOptions: index.options,\n query: index.selectQuery,\n indexStopList: index.stopList,\n queryInference: index.infer,\n querySameAs: index.sameAs,\n viewType: index.type,\n indexAnalyzer: index.analyzer\n }).success(function (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n });\n };\n\n $scope.rebuildIndex = function (index) {\n // Migration\n if (!index.searchQuery) {\n index.searchQuery = index.type ? $scope.searchQueries[index.type] : $scope.searchQueries.text;\n }\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm'),\n message: decodeHTML($translate.instant('similarity.rebuild.index.warning', {name: index.name})),\n warning: true\n }).result\n .then(function () {\n index.status = 'REBUILDING';\n SimilarityRestService.rebuildIndex(index)\n .then(function (res) {\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.trimIRI = function (iri) {\n return _.trim(iri, \"<>\");\n };\n}\n","import 'angular/utils/notifications';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.similarity.controllers.create', [\n 'graphdb.framework.utils.notifications',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .controller('CreateSimilarityIdxCtrl', CreateSimilarityIdxCtrl);\n\nCreateSimilarityIdxCtrl.$inject = ['$scope', 'toastr', '$uibModal', '$timeout', 'SimilarityRestService', 'SparqlRestService', '$location', 'productInfo', 'Notifications', 'RDF4JRepositoriesRestService', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction CreateSimilarityIdxCtrl($scope, toastr, $uibModal, $timeout, SimilarityRestService, SparqlRestService, $location, productInfo, Notifications, RDF4JRepositoriesRestService, LocalStorageAdapter, LSKeys, $translate) {\n\n const indexType = $location.search().type;\n if (indexType === undefined || indexType.startsWith('text')) {\n $scope.viewType = 'text';\n } else {\n $scope.viewType = indexType;\n }\n\n const textDefaultOptions = '-termweight idf';\n const predDefaultOptions = '';\n $scope.newIndex = {};\n\n $scope.info = productInfo;\n $scope.page = 1;\n\n const defaultTabConfig = {\n id: '1',\n name: '',\n query: '',\n inference: true,\n sameAs: true\n };\n\n let getNewIndexName = function (indexNameFromLocation) {\n if (indexNameFromLocation) {\n if ($scope.page !== 1) {\n return indexNameFromLocation;\n } else {\n return 'Copy_of_' + indexNameFromLocation;\n }\n }\n return '';\n };\n\n const initForViewType = function () {\n $scope.editSearchQuery = $location.search().editSearchQuery;\n $scope.page = $scope.editSearchQuery ? 2 : 1;\n $scope.newIndex.name = getNewIndexName($location.search().name);\n $scope.newIndex.options = ($location.search().options ? $location.search().options : ($scope.viewType === \"text\") ? textDefaultOptions : predDefaultOptions);\n\n if ($scope.searchQueries) {\n $scope.newIndex.searchQuery = $location.search().searchQuery ? $location.search().searchQuery : $scope.searchQueries[$scope.viewType];\n if ($scope.viewType === 'predication') {\n $scope.newIndex.analogicalQuery = $location.search().analogicalQuery ? $location.search().analogicalQuery : $scope.searchQueries['analogical'];\n }\n }\n\n if ($scope.editSearchQuery) {\n // Default will be opened search query tab for edition\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n $scope.notoolbarInference = true;\n $scope.notoolbarSameAs = true;\n if (window.editor) {\n $scope.setQuery($scope.newIndex.searchQuery);\n }\n } else {\n if ($scope.viewType === 'text' && $scope.allSamples) {\n $scope.samples = $scope.allSamples['text'];\n $scope.newIndex.stopList = ($location.search().stopList ? $location.search().stopList : undefined);\n $scope.newIndex.analyzer = ($location.search().analyzer ? $location.search().analyzer : 'org.apache.lucene.analysis.en.EnglishAnalyzer');\n const isLiteralIndex = getAndRemoveOption('-literal_index');\n if (isLiteralIndex !== undefined) {\n $scope.newIndex.isLiteralIndex = isLiteralIndex;\n }\n if (window.editor) {\n $scope.setQuery($scope.samples['literals']);\n }\n }\n if ($scope.viewType === 'predication' && $scope.allSamples) {\n SimilarityRestService.getIndexes()\n .success(function (data) {\n $scope.literalIndexes = ['no-index'].concat(data\n .filter(function (idx) {\n return idx.type === 'textLiteral' && (idx.status === 'BUILT' || idx.status === 'OUTDATED')\n })\n .map(function (idx) {\n return idx.name;\n }));\n\n if ($scope.newIndex.inputIndex === undefined) {\n const desiredIdx = getAndRemoveOption('-input_index');\n if (desiredIdx !== undefined) {\n for (let j = 0; j < $scope.literalIndexes.length; j++) {\n if (desiredIdx === $scope.literalIndexes[j]) {\n $scope.newIndex.inputIndex = $scope.literalIndexes[j];\n }\n }\n }\n }\n if ($scope.newIndex.inputIndex === undefined) {\n $scope.newIndex.inputIndex = $scope.literalIndexes[0];\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('similarity.could.not.get.indexes.error'));\n });\n\n $scope.samples = $scope.allSamples['predication'];\n if (window.editor) {\n $scope.setQuery($scope.samples['predication']);\n }\n }\n }\n };\n\n const filenamePattern = new RegExp('^[a-zA-Z0-9-_]+$');\n\n const validateIndex = function () {\n $scope.invalidIndexName = false;\n $scope.saveQueries();\n if (!$scope.newIndex.name) {\n $scope.invalidIndexName = $translate.instant('similarity.empty.index.name.error');\n return false;\n }\n if (!filenamePattern.test($scope.newIndex.name)) {\n $scope.invalidIndexName = $translate.instant('similarity.index.name.constraint');\n return false;\n }\n\n if (!$scope.newIndex.query) {\n toastr.error($translate.instant('similarity.empty.select.query.error'));\n return false;\n }\n\n if (!$scope.newIndex.searchQuery) {\n toastr.error($translate.instant('similarity.empty.search.query.error'));\n return false;\n }\n\n if ($scope.viewType === 'predication' && !$scope.newIndex.analogicalQuery) {\n toastr.error($translate.instant('similarity.empty.analogical.query.error'));\n return false;\n }\n\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error($translate.instant('similarity.index.select.queries.constraint'));\n return;\n }\n\n return true;\n };\n\n const appendOption = function (option, value) {\n $scope.newIndex.options = $scope.newIndex.options + ($scope.newIndex.options === '' ? '' : ' ') + option + ' ' + value;\n };\n\n SimilarityRestService.getSearchQueries().success(function (data) {\n $scope.searchQueries = data;\n SimilarityRestService.getSamples().success(function (samples) {\n defaultTabConfig.query = $location.search().selectQuery ? $location.search().selectQuery : samples['text']['literals'];\n defaultTabConfig.inference = !($location.search().infer === 'false');\n defaultTabConfig.sameAs = !($location.search().sameAs === 'false');\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n $scope.currentQuery = angular.copy(defaultTabConfig);\n $scope.allSamples = samples;\n initForViewType();\n });\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('similarity.could.not.get.search.queries.error'));\n });\n\n $scope.$watch('viewType', function () {\n initForViewType();\n });\n\n $scope.helpHidden = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP) === 1;\n $scope.toggleHelp = function (value) {\n if (value === undefined) {\n value = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP);\n }\n if (value !== 1) {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 1);\n $scope.helpHidden = true;\n } else {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 0);\n $scope.helpHidden = false;\n }\n };\n\n $scope.viewQuery = function () {\n if (!validateIndex()) {\n return;\n }\n\n SimilarityRestService.getQuery({\n indexName: $scope.newIndex.name,\n indexOptions: $scope.newIndex.options,\n query: $scope.currentQuery.query,\n indexStopList: $scope.newIndex.stopList,\n queryInference: $scope.currentQuery.inference,\n querySameAs: $scope.currentQuery.sameAs,\n viewType: $scope.viewType,\n indexAnalyzer: $scope.newIndex.analyzer\n }).success(function (query) {\n if (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n }).error(function (error) {\n const msg = getError(error);\n toastr.error(msg);\n });;\n };\n\n $scope.$watch('newIndex.name', function () {\n $scope.isInvalidIndexName = false;\n $scope.isEmptyIndexName = false;\n });\n\n $scope.saveQueries = function () {\n // save the current query\n const query = window.editor.getValue().trim();\n if ($scope.page === 1) {\n $scope.newIndex.query = query;\n } else if ($scope.page === 2) {\n $scope.newIndex.searchQuery = query;\n } else if ($scope.page === 3) {\n $scope.newIndex.analogicalQuery = query;\n }\n };\n\n $scope.goToPage = function (page) {\n // ugly fix for GDB-3099\n if (page !== 1 && $scope.viewMode !== 'yasr') {\n $scope.showEditor();\n $timeout(function () {\n if (page === 2) {\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n }\n if (page === 3) {\n $scope.currentQuery.query = $scope.newIndex.analogicalQuery;\n }\n\n window.editor.setValue($scope.currentQuery.query || ' ');\n });\n }\n\n $scope.saveQueries();\n // get the saved query\n if (page === 1) {\n $scope.currentQuery.query = $scope.newIndex.query;\n } else if (page === 2) {\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n } else if (page === 3) {\n $scope.currentQuery.query = $scope.newIndex.analogicalQuery;\n }\n\n loadTab();\n $scope.notoolbar = page !== 1;\n\n $scope.page = page;\n };\n\n $scope.createIndex = function () {\n if (!validateIndex()) {\n return;\n }\n // Check existing indexes\n SimilarityRestService.getIndexes()\n .success(function (data) {\n data.forEach(function (index) {\n if (index.name === $scope.newIndex.name) {\n $scope.invalidIndexName = $translate.instant('similarity.existing.index.name.error');\n }\n });\n if (!$scope.invalidIndexName) {\n let indexType = $scope.viewType;\n\n if ($scope.literalIndexes !== undefined) {\n const inputIndex = $scope.newIndex.inputIndex;\n if (inputIndex !== $scope.literalIndexes[0]) {\n appendOption('-input_index', inputIndex);\n }\n }\n if ($scope.newIndex.isLiteralIndex === 'true') {\n appendOption('-literal_index', 'true');\n indexType = 'textLiteral';\n }\n\n SimilarityRestService.createIndex('POST',\n $scope.newIndex.name,\n $scope.newIndex.options,\n $scope.newIndex.query,\n $scope.newIndex.searchQuery,\n $scope.newIndex.analogicalQuery,\n $scope.newIndex.stopList,\n $scope.currentQuery.inference,\n $scope.currentQuery.sameAs,\n indexType,\n $scope.newIndex.analyzer)\n .error(function (err) {\n toastr.error(getError(err), $translate.instant('similarity.create.index.error'));\n });\n $location.url('similarity');\n }\n\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('similarity.could.not.get.indexes.error'));\n });\n };\n\n // Called when user clicks on a sample query\n $scope.setQuery = function (query) {\n // Hack for YASQE bug\n window.editor.setValue(query ? query : ' ');\n };\n\n // TODO don't copy paste each time, this is the same as in the graph config\n // DOWN HERE WE KEEP EVERYTHING PURELY QUERY EDITOR (MOSTLY BORROWED FROM query-editor.controller.js)\n\n $scope.showEditor = function () {\n if (window.editor.xhr) {\n window.editor.xhr.abort();\n }\n $scope.viewMode = 'yasr';\n };\n\n $scope.showPreview = function () {\n // For some reason YASR gets confused and sets this to rawResponse\n // if we execute a CONSTRUCT and then a SELECT. This makes sure it's always table.\n $scope.currentQuery.outputType = 'table';\n $scope.runQuery();\n };\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 100, // page limit 100 as this is only used for preview\n page: 1,\n allResultsCount: 0,\n resultsCount: 0\n };\n };\n\n $scope.queryExists = false;\n\n $scope.resetCurrentTabConfig();\n\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n\n // query tab operations\n $scope.saveTab = saveTab;\n $scope.loadTab = loadTab;\n $scope.addNewTab = addNewTab;\n\n // query operations\n $scope.runQuery = runQuery;\n $scope.getNamespaces = getNamespaces;\n $scope.changePagination = changePagination;\n $scope.toggleSampleQueries = toggleSampleQueries;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.getExistingTabId = getExistingTabId;\n $scope.querySelected = querySelected;\n $scope.saveQueryToLocal = saveQueryToLocal;\n\n $scope.setLoader = setLoader;\n $scope.getLoaderMessage = getLoaderMessage;\n\n // query editor and results orientation\n $scope.fixSizesOnHorizontalViewModeSwitch = fixSizesOnHorizontalViewModeSwitch;\n $scope.changeViewMode = changeViewMode;\n $scope.showHideEditor = showHideEditor;\n $scope.focusQueryEditor = focusQueryEditor;\n $scope.orientationViewMode = true;\n\n // start of repository actions\n $scope.getActiveRepository();\n\n function getAndRemoveOption(key) {\n const optArr = $scope.newIndex.options.split(' ');\n for (let i = 0; i < optArr.length; i++) {\n if (optArr[i] === key && i + 1 < optArr.length) {\n const value = optArr[i + 1];\n\n delete optArr[i];\n delete optArr[i + 1];\n $scope.newIndex.options = optArr.join(' ');\n\n return value;\n }\n }\n return undefined;\n }\n\n function saveQueryToLocal(currentQueryTab) {\n }\n\n function setLoader(isRunning, progressMessage, extraMessage) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n yasrInnerContainer.addClass('hide');\n } else {\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n yasrInnerContainer.removeClass('hide');\n }\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function getLoaderMessage() {\n const timeSeconds = (Date.now() - $scope.queryStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = $translate.instant('common.running.operation', {timeHuman: timeHuman});\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n }\n\n // start of query editor results orientation operations\n function fixSizesOnHorizontalViewModeSwitch(verticalViewParam) {\n function visibleWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;\n }\n\n const verticalView = verticalViewParam;\n if (!$scope.orientationViewMode) {\n $scope.noPadding = {paddingRight: 15, paddingLeft: 0};\n\n // window.editor is undefined if no repo is selected\n if (window.editor && document.querySelector('.CodeMirror-wrap')) {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n document.getElementById('yasr').style.minHeight = newHeight + 'px';\n //window.editor.refresh();\n } else {\n let timer;\n if (verticalView) {\n timer = $timeout(function () {\n $scope.fixSizesOnHorizontalViewModeSwitch(verticalView);\n }, 100);\n } else {\n timer = $timeout($scope.fixSizesOnHorizontalViewModeSwitch, 100);\n }\n\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n } else {\n if ($scope.viewMode === 'yasr') {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n } else {\n $scope.noPadding = {};\n document.querySelector('.CodeMirror-wrap').style.height = '';\n }\n document.getElementById('yasr').style.minHeight = '';\n }\n if (window.yasr && window.yasr.container) {\n $timeout(function () {\n window.yasr.container.resize();\n }, 100);\n }\n }\n\n if (!$scope.orientationViewMode) {\n showHideEditor();\n }\n\n function changeViewMode(tabID) {\n $scope.viewMode = 'none';\n $scope.orientationViewMode = !$scope.orientationViewMode;\n fixSizesOnHorizontalViewModeSwitch();\n $('.dataTables_filter').remove();\n $('.resultsTable').remove();\n $timeout(function () {\n loadTab();\n selectTab(tabID);\n }, 100);\n }\n\n function showHideEditor() {\n fixSizesOnHorizontalViewModeSwitch(true);\n }\n\n function focusQueryEditor() {\n if (!angular.element(document).find('.editable-input').is(':focus')) {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n }\n\n // end of query editor results orientation operations\n\n function selectTab(id) {\n $timeout(function () {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }, 0);\n }\n\n // start of query operations\n function runQuery(changePage, explain) {\n $scope.executedQueryTab = $scope.currentQuery;\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error($translate.instant('similarity.indexes.select.queries.constraint'));\n return;\n }\n if (explain && window.editor.getQueryType() !== 'SELECT') {\n toastr.warning($translate.instant('similarity.explain.select.queries.constraint'));\n return;\n }\n\n if (window.editor.getQueryMode() === 'update') {\n toastr.warning($translate.instant('cannot.execute.update.error'));\n return;\n }\n\n $scope.explainRequested = explain;\n if (!$scope.queryIsRunning) {\n if (changePage) {\n $scope.currentTabConfig.resultsCount = 0;\n } else {\n $scope.resetCurrentTabConfig();\n }\n\n // Hides the editor and shows the yasr results\n $scope.viewMode = 'editor';\n if ($scope.orientationViewMode) {\n $scope.fixSizesOnHorizontalViewModeSwitch();\n }\n\n setLoader(true, $translate.instant('evaluating.query.msg'));\n window.editor.query();\n }\n }\n\n // FIXME: this is copy-pasted in graphs-config.controller.js and query-editor.controller.js. Find a way to avoid duplications\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, $translate.instant('common.refreshing.namespaces'), $translate.instant('common.extra.message'));\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n });\n }\n\n function changePagination() {\n runQuery(true, $scope.explainRequested);\n }\n\n if ($scope.getActiveRepository()) {\n getNamespaces();\n }\n\n $scope.$on('$destroy', function () {\n window.editor = null;\n window.yasr = null;\n });\n\n function toggleSampleQueries() {\n }\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.add.known.prefixes.error'));\n return true;\n });\n }\n\n $('textarea').on('paste', function () {\n $timeout(function () {\n addKnownPrefixes();\n }, 0);\n });\n\n function querySelected(query) {\n const tabId = getExistingTabId(query);\n $scope.toggleSampleQueries();\n if (!angular.isDefined(tabId)) {\n $scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n\n function getExistingTabId(query) {\n let existingTabId = undefined;\n angular.forEach($scope.tabsData, function (item) {\n if (item.name === query.name && item.query === query.body) {\n existingTabId = item.id;\n return item;\n }\n });\n\n return existingTabId;\n }\n\n\n // end of query operations\n\n // start of query tab operations\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabsData.length; i++) {\n const tab = $scope.tabsData[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n $scope.$watchCollection('[currentQuery.inference, currentQuery.sameAs]', function () {\n saveQueryToLocal($scope.currentQuery);\n });\n\n function saveTab(id) {\n const idx = findTabIndexByID(id);\n // Tab was deleted, don't try to save it's state\n if (idx === undefined) {\n return {};\n }\n const tab = $scope.tabsData[idx];\n //tab.query = window.editor.getValue();\n $scope.saveQueryToLocal(tab);\n return tab;\n }\n\n function addNewTab(callback, tabName, savedQuery) {\n }\n\n function loadTab() {\n $scope.tabsData = [$scope.currentQuery];\n\n const tab = $scope.currentQuery;\n\n if ($scope.currentQuery.query === null || $scope.currentQuery.query === '') {\n // hack for YASQE bug\n window.editor.setValue(' ');\n } else {\n window.editor.setValue($scope.currentQuery.query || ' ');\n }\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.$apply();\n }, 0);\n\n //Remove paddign of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n }\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n $scope.$on('tabAction', function (e, tabEvent) {\n if (tabEvent.relatedTarget) {\n $scope.saveTab(getQueryID(tabEvent.relatedTarget));\n }\n $scope.loadTab(getQueryID(tabEvent.target));\n });\n\n $scope.$on('deleteAllexeptSelected', function (e, tabs) {\n $scope.tabsData = tabs;\n $scope.tabs = tabs;\n });\n // end of query tab operations\n\n $scope.currentQuery = angular.copy(defaultTabConfig);\n // $scope.state = {};\n $scope.showSampleQueries = false;\n $scope.savedQuery = {};\n $scope.sampleQueries = {};\n\n $scope.getResultsDescription = function () {\n };\n\n $scope.getUpdateDescription = function () {\n };\n\n $scope.getStaleWarningMessage = function () {\n };\n\n $scope.saveSearchQuery = function () {\n // Should validate that query is SELECT\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error($translate.instant('similarity.index.select.queries.constraint'));\n return;\n }\n let data = {\n name: $scope.newIndex.name,\n changedQuery: $scope.currentQuery.query,\n isSearchQuery: $scope.page === 2\n };\n\n return SimilarityRestService.saveSearchQuery(JSON.stringify(data))\n .then(async function () {\n await Notifications.showToastMessageWithDelay($scope.page === 2 ? 'similarity.changed.search.query.msg' : 'similarity.changed.analogical.query.msg');\n $location.url('similarity');\n }, function (response) {\n toastr.error(getError(response), $translate.instant('similarity.change.query.error'));\n });\n };\n\n $scope.getCloseBtnMsg = function () {\n let operationType = $scope.editSearchQuery ? $translate.instant('similarity.query.edition.msg') : $translate.instant('similarity.index.creation.msg');\n return $translate.instant('similarity.close.btn.msg', {operation: operationType});\n }\n}\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/rest/similarity.rest.service';\nimport 'angular/similarity/controllers/similarity-list.controller';\nimport 'angular/similarity/controllers/create-index.controller';\nimport 'angular/core/directives/queryeditor/sparql-tab.directive';\nimport 'angular/core/directives/queryeditor/query-editor.controller';\nimport 'angular/core/directives/queryeditor/query-editor.directive';\n\nangular.module('graphdb.framework.similarity', [\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.rest.similarity.service',\n 'graphdb.framework.similarity.controllers.create',\n 'graphdb.framework.similarity.controllers.list',\n 'graphdb.framework.core.directives.queryeditor.controllers',\n 'graphdb.framework.core.directives.queryeditor.sparqltab',\n 'graphdb.framework.core.directives.queryeditor.queryeditor'\n]);\n","angular\n .module('graphdb.framework.utils.notifications', [])\n .factory('Notifications', Notifications);\n\nNotifications.$inject = ['toastr', '$translate'];\n\nfunction Notifications(toastr, $translate) {\n return {\n showToastMessageWithDelay\n };\n\n /**\n * This method will show message with tiny delay and only after completion\n * of latter redirection to \"graphs-visualizations\" page will happen.\n * @param {string} message The message to be displayed.\n * @return {Promise<any>}\n */\n function showToastMessageWithDelay(message) {\n return new Promise((r) => {\n toastr.success($translate.instant(message));\n setTimeout(r, 200);\n });\n }\n}\n","import 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.core.directives.queryeditor.sparqltab', [\n 'graphdb.framework.core',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .directive('sparqlTab', sparqlTabDirective);\n\nsparqlTabDirective.$inject = ['$rootScope', 'LocalStorageAdapter', 'LSKeys', 'ModalService'];\n\nfunction sparqlTabDirective($rootScope, LocalStorageAdapter, LSKeys, ModalService) {\n const SparqlTabCtrl = ['$scope', '$element', '$rootScope', 'ModalService', 'toastr', '$translate', function ($scope, $element, $rootScope, ModalService, toastr, $translate) {\n $scope.state = {};\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabs.length; i++) {\n const tab = $scope.tabs[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n $($element).on('shown.bs.tab', function (e) {\n $rootScope.$broadcast('tabAction', e);\n });\n\n $scope.deleteTab = deleteTab;\n $scope.editCurrentTab = editCurrentTab;\n $scope.selectThisTab = selectThisTab;\n\n function selectThisTab(e) {\n e.preventDefault();\n e.stopPropagation();\n if ($scope.isTabChangeOk(false)) {\n $($element).tab('show');\n }\n }\n\n function selectTab(id) {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }\n\n function deleteTab(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if ($scope.tabs.length < 2) {\n toastr.warning($translate.instant('sparql.tab.directive.close.last.warning'));\n return;\n }\n\n if (e.shiftKey) {\n $scope.state.selectedTabId = getQueryID($element);\n\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm'),\n message: $translate.instant('sparql.tab.directive.delete.all.tabs.warning'),\n warning: true\n }).result.then(function () {\n deleteAllTabsExceptSelected($scope.state.selectedTabId);\n });\n } else {\n $scope.state.idForDelete = getQueryID($element);\n\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm'),\n message: $translate.instant('sparql.tab.directive.close.tab.warning'),\n warning: true\n }).result.then(function () {\n deleteTabByID($scope.state.idForDelete);\n });\n }\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n\n function editCurrentTab() {\n if (getQueryID($element) !== $scope.currentQuery.id) {\n return;\n }\n $scope.editCurrentlySelectedOnly.$show();\n //fix for buttons for edit\n const $editableButtons = $(\".editable-buttons\");\n $editableButtons.children(\".btn.btn-primary\").addClass('btn-sm');\n $editableButtons.children(\".btn.btn-default\").addClass('btn-sm');\n $('.editable-controls .editable-input').addClass('form-control-sm').on('change', function ($el) {\n $scope.currentQuery.name = $el.currentTarget.$$currentValue;\n });\n //$('.editable-buttons').css('margin-top', '5px');\n //$('.editable-input.editable-has-buttons').css('width', '50%');\n $('.editable-buttons .glyphicon.glyphicon-ok')\n .removeClass('glyphicon glyphicon-ok')\n .addClass('fa fa-check');\n $('.editable-buttons .glyphicon.glyphicon-remove')\n .removeClass('glyphicon glyphicon-remove')\n .addClass('fa fa-close');\n }\n\n function deleteTabByID(id) {\n if (angular.isUndefined(id)) {\n throw 'Delete by id was called with undefined id';\n }\n const idx = findTabIndexByID(id);\n $scope.tabs.splice(idx, 1);\n\n if (id === $scope.currentQuery.id) {\n if ($scope.tabs.length > 0) {\n if (idx > 0) {\n // select previous tab if we deleted any but the first tab\n selectTab($scope.tabs[idx - 1].id);\n } else {\n // select first tab if we deleted the first tab\n selectTab($scope.tabs[0].id);\n }\n }\n }\n }\n\n function deleteAllTabsExceptSelected(id) {\n $scope.tabs = $scope.tabs.filter(function (obj) {\n if (obj.id === id) {\n return obj;\n }\n });\n selectTab($scope.tabs[0].id);\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n $rootScope.$broadcast('deleteAllexeptSelected', $scope.tabs);\n }\n }];\n\n return {\n restrict: 'AE',\n // for some reason when you extract this template in a file and use templateUrl it selects all tabs when editing the tab name, not only the currently selected one\n template: '<a class=\"nav-link\" role=\"tab\" data-toggle=\"tab\" blur=\"submit\" editable-text=\"tab.name\" e-form=\"editCurrentlySelectedOnly\" ng-click=\"selectThisTab($event)\" ng-dblclick=\"editCurrentTab()\" ><span ng-class=\"{\\'text-muted\\': !tab.name}\">{{ tab.name || (\\'sparql.tab.directive.unnamed.tab.title\\' | translate)}}</span><button type=\"button\" ng-click=\"deleteTab($event)\" class=\"btn btn-link btn-sm secondary delete-sparql-tab-btn\" title=\"Delete tab\"><i class=\"icon-close\"></i></button></a>',\n replace: true,\n controller: SparqlTabCtrl\n };\n}\n"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[171],{236:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="fedx-content" class="pt-1">\n <div id="fedx-members">\n <div class="form-repo-members col-md-6 col-lg-5 col-xl-4 mb-1">\n <h4>{{\'fedx.repo.federation.members\' | translate}}</h4>\n <div class="alert alert-warning" ng-if="fedxMembers.length === 0">{{\'fedx.repo.no.members.warning\' | translate}}</div>\n <ul id="fedx-members-table" class="list-group" aria-describedby="Repositories table">\n <li class="list-group-item list-group-item-action d-flex justify-content-between align-items-center repository"\n ng-repeat="member in fedxMembers | orderBy: [\'type === \\\'system\\\'\', \'endpoint\', \'repositoryServer\', \'repositoryName\'] : true ">\n <div class="name">\n <span class="multiline-text multilined">\n <em ng-class="getMemberIcon(member)" class="fedx-repo-member-icon"></em>\n {{resolveName(member)}}\n </span>\n <span class="icon-warning" ng-if="!checkIfRepoExist(member)" uib-tooltip="{{\'repoTooltips.fedx.repositoryNotExistWarning\' | translate}}"> </span>\n </div>\n <div class="actions">\n <button class="btn btn-link p-0 edit-repository-btn" type="button">\n <span id="{{member.repositoryName}}-icon-edit" class="icon-edit"\n ng-click="editFedXRepository(member)"\n ng-if="member.store !== \'NativeStore\'"\n uib-tooltip="{{\'repoTooltips.editRepository\' | translate}}"></span>\n </button>\n <button class="btn btn-link p-0 secondary" type="button">\n <span id="{{member.repositoryName}}-icon-close" ng-click="removeMember(member)"\n class="icon-close"\n uib-tooltip="{{\'repoTooltips.fedx.removeMember\' | translate}}"></span>\n </button>\n <button class="btn btn-link p-0 secondary">\n <span id="{{member.repositoryName}}-icon-writable"\n ng-click="setWritableRepo(member)"\n class="icon-import{{getActiveClass(member)}}"\n uib-tooltip="{{\'repoTooltips.fedx.setAsWritable\' | translate}}"></span>\n </button>\n </div>\n </li>\n </ul>\n </div>\n <div class="col-md-4 col-lg-3 col-xl-3 mb-1">\n <div class="attached-header">{{\'fedx.repo.local.attached.header\' | translate}}</div>\n <div class="form-local-repos pre-scrollable locations-list">\n <div class="location-item hoverable"\n ng-repeat="repository in knownRepos | orderBy: [\'type === \\\'system\\\'\', \'location\', \'id\']"\n ng-if="repository.type !== \'fedx\'"\n id="{{repository.id}}-local-repo">\n\n <a id="{{repository.id}}-a"\n ng-click="addMember(repository)"\n uib-tooltip="{{\'repoTooltips.fedx.localReposInstructions\' | translate}}">\n <span class="multiline-text">\n <em ng-class="\'icon-repo-\' + repository.type" class="fedx-repo-member-icon"></em>\n {{repository.id}}\n </span>\n <span class="small"><small> &middot; {{getRepositoryServer(repository)}}</small></span>\n </a>\n </div>\n </div>\n <button type="button" id="addFedXRepository" ng-click="addRemoteMember()" class="btn btn-primary">\n <span class="icon-plus"></span>\n {{\'fedx.repo.add.remote\' | translate}}\n </button>\n </div>\n </div>\n <div id="fedx-options">\n <h4>{{\'fedx.repo.options\' | translate}}</h4>\n <div class="pb-1">\n <div class="form-group row">\n <div class="checkbox offset-xs-1 offset-md-4 indented-div checkbox-param-include-inferred">\n <label\n uib-tooltip="{{\'repoTooltips.fedx.withIncludeInferredDefault\' | translate}}">\n <input id="includeInferredDefault" name="includeInferredDefault" type="checkbox"\n ng-true-value="\'true\'" ng-false-value="\'false\'"\n ng-model="repositoryInfo.params.includeInferredDefault.value"/>\n {{repositoryInfo.params.includeInferredDefault.label}}\n </label>\n </div>\n <div class="checkbox offset-xs-1 offset-md-4 offset-lg-2">\n <label class="padding-label" uib-tooltip="{{\'repoTooltips.fedx.withEnableServiceAsBoundJoin\' | translate}}">\n <input id="enableServiceAsBoundJoin"\n name="enableServiceAsBoundJoin" type="checkbox"\n ng-true-value="\'true\'" ng-false-value="\'false\'"\n ng-model="repositoryInfo.params.enableServiceAsBoundJoin.value"/>\n {{repositoryInfo.params.enableServiceAsBoundJoin.label}}\n </label>\n </div>\n </div>\n <div class="form-group row">\n <div class="checkbox offset-xs-1 offset-md-4 indented-div checkbox-param-padded">\n <label\n uib-tooltip="{{\'repoTooltips.fedx.withLogQueries\' | translate}}">\n <input id="isLogQueries" name="isLogQueries" type="checkbox"\n ng-true-value="\'true\'" ng-false-value="\'false\'"\n ng-model="repositoryInfo.params.isLogQueries.value"/>\n {{repositoryInfo.params.isLogQueries.label}}\n </label>\n </div>\n <div class="checkbox offset-xs-1 offset-md-4 offset-lg-2">\n <label class="padding-label" uib-tooltip="{{\'repoTooltips.fedx.withDebugQueryPlan\' | translate}}">\n <input id="debugQueryPlan"\n name="debugQueryPlan" type="checkbox"\n ng-true-value="\'true\'" ng-false-value="\'false\'"\n ng-model="repositoryInfo.params.debugQueryPlan.value"/>\n {{repositoryInfo.params.debugQueryPlan.label}}\n </label>\n </div>\n </div>\n </div>\n <div class="pb-1">\n <div class="form-group row">\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n {{repositoryInfo.params.queryTimeout.label}}\n </label>\n <div class="col-lg-2">\n <input id="enforceMaxQueryTime"\n name="enforceMaxQueryTime"\n type="number" step="1"\n ng-model="repositoryInfo.params.queryTimeout.value"\n class="form-control"\n required\n uib-tooltip="{{\'repoTooltips.fedx.enforceMaxQueryTime\' | translate}}"/>\n </div>\n </div>\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n {{repositoryInfo.params.boundJoinBlockSize.label}}\n </label>\n <div class="col-lg-2">\n <input id="boundJoinBlockSize"\n name="boundJoinBlockSize"\n type="number" step="1"\n ng-model="repositoryInfo.params.boundJoinBlockSize.value"\n class="form-control"\n required\n uib-tooltip="{{\'repoTooltips.fedx.withBoundJoinBlockSize\' | translate}}"/>\n </div>\n </div>\n </div>\n <div class="form-group row">\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n {{repositoryInfo.params.joinWorkerThreads.label}}\n </label>\n <div class="col-lg-2">\n <input id="joinWorkerThreads"\n name="joinWorkerThreads"\n type="number" step="1"\n ng-model="repositoryInfo.params.joinWorkerThreads.value"\n class="form-control"\n required\n uib-tooltip="{{\'repoTooltips.fedx.withJoinWorkerThreads\' | translate}}"/>\n </div>\n </div>\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n {{repositoryInfo.params.leftJoinWorkerThreads.label}}\n </label>\n <div class="col-lg-2">\n <input id="leftJoinWorkerThreads"\n name="leftJoinWorkerThreads"\n type="number" step="1"\n ng-model="repositoryInfo.params.leftJoinWorkerThreads.value"\n class="form-control"\n required\n uib-tooltip="{{\'repoTooltips.fedx.withLeftJoinWorkerThreads\' | translate}}"/>\n </div>\n </div>\n </div>\n <div class="form-group row">\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n </label>\n <div class="col-lg-2">\n </div>\n </div>\n <div class="offset-xs-1 offset-md-4 indented-div">\n <label class="col-lg-3">\n {{repositoryInfo.params.unionWorkerThreads.label}}\n </label>\n <div class="col-lg-2">\n <input id="unionWorkerThreads"\n name="unionWorkerThreads"\n type="number" step="1"\n ng-model="repositoryInfo.params.unionWorkerThreads.value"\n class="form-control"\n required\n uib-tooltip="{{\'repoTooltips.fedx.unionWorkerThreads\' | translate}}"/>\n </div>\n </div>\n </div>\n </div>\n <div class="pb-1">\n <div class="form-group row">\n <div class="indented-div">\n <label for="cache-spec" class="col-md-3 col-lg-3 col-form-label">{{\'fedx.repo.source.selection.cache.spec\' | translate}}</label>\n <div class="col-lg-7 col-xl-7">\n <input id="cache-spec" class="form-control"\n ng-model="repositoryInfo.params[\'sourceCacheSpec\'].value"\n uib-tooltip="{{\'repoTooltips.fedx.withSourceSelectionCacheSpec\' | translate}}"/>\n </div>\n </div>\n </div>\n\n </div>\n\n </div>\n\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=171.2aecfe97c1fa24db3bf3.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/repositories/templates/fedx-repo.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,uuXAGP,OAAOA","file":"171.2aecfe97c1fa24db3bf3.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"fedx-content\" class=\"pt-1\">\\n <div id=\"fedx-members\">\\n <div class=\"form-repo-members col-md-6 col-lg-5 col-xl-4 mb-1\">\\n <h4>{{\\'fedx.repo.federation.members\\' | translate}}</h4>\\n <div class=\"alert alert-warning\" ng-if=\"fedxMembers.length === 0\">{{\\'fedx.repo.no.members.warning\\' | translate}}</div>\\n <ul id=\"fedx-members-table\" class=\"list-group\" aria-describedby=\"Repositories table\">\\n <li class=\"list-group-item list-group-item-action d-flex justify-content-between align-items-center repository\"\\n ng-repeat=\"member in fedxMembers | orderBy: [\\'type === \\\\\\'system\\\\\\'\\', \\'endpoint\\', \\'repositoryServer\\', \\'repositoryName\\'] : true \">\\n <div class=\"name\">\\n <span class=\"multiline-text multilined\">\\n <em ng-class=\"getMemberIcon(member)\" class=\"fedx-repo-member-icon\"></em>\\n {{resolveName(member)}}\\n </span>\\n <span class=\"icon-warning\" ng-if=\"!checkIfRepoExist(member)\" uib-tooltip=\"{{\\'repoTooltips.fedx.repositoryNotExistWarning\\' | translate}}\"> </span>\\n </div>\\n <div class=\"actions\">\\n <button class=\"btn btn-link p-0 edit-repository-btn\" type=\"button\">\\n <span id=\"{{member.repositoryName}}-icon-edit\" class=\"icon-edit\"\\n ng-click=\"editFedXRepository(member)\"\\n ng-if=\"member.store !== \\'NativeStore\\'\"\\n uib-tooltip=\"{{\\'repoTooltips.editRepository\\' | translate}}\"></span>\\n </button>\\n <button class=\"btn btn-link p-0 secondary\" type=\"button\">\\n <span id=\"{{member.repositoryName}}-icon-close\" ng-click=\"removeMember(member)\"\\n class=\"icon-close\"\\n uib-tooltip=\"{{\\'repoTooltips.fedx.removeMember\\' | translate}}\"></span>\\n </button>\\n <button class=\"btn btn-link p-0 secondary\">\\n <span id=\"{{member.repositoryName}}-icon-writable\"\\n ng-click=\"setWritableRepo(member)\"\\n class=\"icon-import{{getActiveClass(member)}}\"\\n uib-tooltip=\"{{\\'repoTooltips.fedx.setAsWritable\\' | translate}}\"></span>\\n </button>\\n </div>\\n </li>\\n </ul>\\n </div>\\n <div class=\"col-md-4 col-lg-3 col-xl-3 mb-1\">\\n <div class=\"attached-header\">{{\\'fedx.repo.local.attached.header\\' | translate}}</div>\\n <div class=\"form-local-repos pre-scrollable locations-list\">\\n <div class=\"location-item hoverable\"\\n ng-repeat=\"repository in knownRepos | orderBy: [\\'type === \\\\\\'system\\\\\\'\\', \\'location\\', \\'id\\']\"\\n ng-if=\"repository.type !== \\'fedx\\'\"\\n id=\"{{repository.id}}-local-repo\">\\n\\n <a id=\"{{repository.id}}-a\"\\n ng-click=\"addMember(repository)\"\\n uib-tooltip=\"{{\\'repoTooltips.fedx.localReposInstructions\\' | translate}}\">\\n <span class=\"multiline-text\">\\n <em ng-class=\"\\'icon-repo-\\' + repository.type\" class=\"fedx-repo-member-icon\"></em>\\n {{repository.id}}\\n </span>\\n <span class=\"small\"><small> &middot; {{getRepositoryServer(repository)}}</small></span>\\n </a>\\n </div>\\n </div>\\n <button type=\"button\" id=\"addFedXRepository\" ng-click=\"addRemoteMember()\" class=\"btn btn-primary\">\\n <span class=\"icon-plus\"></span>\\n {{\\'fedx.repo.add.remote\\' | translate}}\\n </button>\\n </div>\\n </div>\\n <div id=\"fedx-options\">\\n <h4>{{\\'fedx.repo.options\\' | translate}}</h4>\\n <div class=\"pb-1\">\\n <div class=\"form-group row\">\\n <div class=\"checkbox offset-xs-1 offset-md-4 indented-div checkbox-param-include-inferred\">\\n <label\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withIncludeInferredDefault\\' | translate}}\">\\n <input id=\"includeInferredDefault\" name=\"includeInferredDefault\" type=\"checkbox\"\\n ng-true-value=\"\\'true\\'\" ng-false-value=\"\\'false\\'\"\\n ng-model=\"repositoryInfo.params.includeInferredDefault.value\"/>\\n {{repositoryInfo.params.includeInferredDefault.label}}\\n </label>\\n </div>\\n <div class=\"checkbox offset-xs-1 offset-md-4 offset-lg-2\">\\n <label class=\"padding-label\" uib-tooltip=\"{{\\'repoTooltips.fedx.withEnableServiceAsBoundJoin\\' | translate}}\">\\n <input id=\"enableServiceAsBoundJoin\"\\n name=\"enableServiceAsBoundJoin\" type=\"checkbox\"\\n ng-true-value=\"\\'true\\'\" ng-false-value=\"\\'false\\'\"\\n ng-model=\"repositoryInfo.params.enableServiceAsBoundJoin.value\"/>\\n {{repositoryInfo.params.enableServiceAsBoundJoin.label}}\\n </label>\\n </div>\\n </div>\\n <div class=\"form-group row\">\\n <div class=\"checkbox offset-xs-1 offset-md-4 indented-div checkbox-param-padded\">\\n <label\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withLogQueries\\' | translate}}\">\\n <input id=\"isLogQueries\" name=\"isLogQueries\" type=\"checkbox\"\\n ng-true-value=\"\\'true\\'\" ng-false-value=\"\\'false\\'\"\\n ng-model=\"repositoryInfo.params.isLogQueries.value\"/>\\n {{repositoryInfo.params.isLogQueries.label}}\\n </label>\\n </div>\\n <div class=\"checkbox offset-xs-1 offset-md-4 offset-lg-2\">\\n <label class=\"padding-label\" uib-tooltip=\"{{\\'repoTooltips.fedx.withDebugQueryPlan\\' | translate}}\">\\n <input id=\"debugQueryPlan\"\\n name=\"debugQueryPlan\" type=\"checkbox\"\\n ng-true-value=\"\\'true\\'\" ng-false-value=\"\\'false\\'\"\\n ng-model=\"repositoryInfo.params.debugQueryPlan.value\"/>\\n {{repositoryInfo.params.debugQueryPlan.label}}\\n </label>\\n </div>\\n </div>\\n </div>\\n <div class=\"pb-1\">\\n <div class=\"form-group row\">\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n {{repositoryInfo.params.queryTimeout.label}}\\n </label>\\n <div class=\"col-lg-2\">\\n <input id=\"enforceMaxQueryTime\"\\n name=\"enforceMaxQueryTime\"\\n type=\"number\" step=\"1\"\\n ng-model=\"repositoryInfo.params.queryTimeout.value\"\\n class=\"form-control\"\\n required\\n uib-tooltip=\"{{\\'repoTooltips.fedx.enforceMaxQueryTime\\' | translate}}\"/>\\n </div>\\n </div>\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n {{repositoryInfo.params.boundJoinBlockSize.label}}\\n </label>\\n <div class=\"col-lg-2\">\\n <input id=\"boundJoinBlockSize\"\\n name=\"boundJoinBlockSize\"\\n type=\"number\" step=\"1\"\\n ng-model=\"repositoryInfo.params.boundJoinBlockSize.value\"\\n class=\"form-control\"\\n required\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withBoundJoinBlockSize\\' | translate}}\"/>\\n </div>\\n </div>\\n </div>\\n <div class=\"form-group row\">\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n {{repositoryInfo.params.joinWorkerThreads.label}}\\n </label>\\n <div class=\"col-lg-2\">\\n <input id=\"joinWorkerThreads\"\\n name=\"joinWorkerThreads\"\\n type=\"number\" step=\"1\"\\n ng-model=\"repositoryInfo.params.joinWorkerThreads.value\"\\n class=\"form-control\"\\n required\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withJoinWorkerThreads\\' | translate}}\"/>\\n </div>\\n </div>\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n {{repositoryInfo.params.leftJoinWorkerThreads.label}}\\n </label>\\n <div class=\"col-lg-2\">\\n <input id=\"leftJoinWorkerThreads\"\\n name=\"leftJoinWorkerThreads\"\\n type=\"number\" step=\"1\"\\n ng-model=\"repositoryInfo.params.leftJoinWorkerThreads.value\"\\n class=\"form-control\"\\n required\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withLeftJoinWorkerThreads\\' | translate}}\"/>\\n </div>\\n </div>\\n </div>\\n <div class=\"form-group row\">\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n </label>\\n <div class=\"col-lg-2\">\\n </div>\\n </div>\\n <div class=\"offset-xs-1 offset-md-4 indented-div\">\\n <label class=\"col-lg-3\">\\n {{repositoryInfo.params.unionWorkerThreads.label}}\\n </label>\\n <div class=\"col-lg-2\">\\n <input id=\"unionWorkerThreads\"\\n name=\"unionWorkerThreads\"\\n type=\"number\" step=\"1\"\\n ng-model=\"repositoryInfo.params.unionWorkerThreads.value\"\\n class=\"form-control\"\\n required\\n uib-tooltip=\"{{\\'repoTooltips.fedx.unionWorkerThreads\\' | translate}}\"/>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\"pb-1\">\\n <div class=\"form-group row\">\\n <div class=\"indented-div\">\\n <label for=\"cache-spec\" class=\"col-md-3 col-lg-3 col-form-label\">{{\\'fedx.repo.source.selection.cache.spec\\' | translate}}</label>\\n <div class=\"col-lg-7 col-xl-7\">\\n <input id=\"cache-spec\" class=\"form-control\"\\n ng-model=\"repositoryInfo.params[\\'sourceCacheSpec\\'].value\"\\n uib-tooltip=\"{{\\'repoTooltips.fedx.withSourceSelectionCacheSpec\\' | translate}}\"/>\\n </div>\\n </div>\\n </div>\\n\\n </div>\\n\\n </div>\\n\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[172],{237:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="ontop-content" class="pt-1">\n <h4>{{\'ontop.repo.configuration\' | translate}}</h4>\n <div class="form-group row indented-div">\n <label class="col-xs-12 col-md-3 col-lg-2 col-form-label">{{\'ontop.repo.database.driver\' | translate}}</label>\n <div class="col-xs-8 col-md-5 col-lg-4" uib-tooltip="{{\'repoTooltips.ontop.driverType\' | translate}}">\n <select class="form-control" id="driverType" ng-model="selectedDriver.driverType"\n ng-change="selectDriverByType(selectedDriver.driverType)"\n ng-options="driver.driverType as driver.driverName for driver in supportedDriversData">\n </select>\n </div>\n <div class="form-group col-xs-4 col-md-2 wrapper-div"\n ng-if="selectedDriver.driverType === genericDriverType"\n uib-tooltip="{{\'repoTooltips.ontop.testConn\' | translate}}">\n <button id="testConnection" ng-click="validateOntopPropertiesConnection()"\n ng-disabled="!isOntopRepoFileUploaded() && !editRepoPage"\n type="submit"\n class="btn btn-primary">{{\'ontop.repo.test.connection\' | translate}}\n </button>\n </div>\n </div>\n <div ng-repeat="labelName in propertiesFileParams" class="form-group row indented-div"\n ng-if="selectedDriver.driverType !== genericDriverType">\n <label for="{{labelName}}" class="col-xs-12 col-md-3 col-lg-2 col-form-label">\n {{supportedDriverLabels[labelName] + (isRequiredField(labelName) ? \'*\' : \'\')}}</label>\n <div ng-class="{\'col-xs-8 col-md-5 col-lg-4\': labelName === \'url\', \'col-xs-12 col-md-5 col-lg-4\': labelName !== \'url\'}"\n uib-tooltip="{{getFieldTooltip(labelName)}}">\n <input id="{{labelName}}" class="form-control" ng-readonly="isReadOnly(labelName)"\n type="{{getInputType(labelName)}}" min="1" max="65535"\n ng-required="isRequiredField(labelName)"\n placeholder="{{isRequiredField(labelName) ? \'required.field\' : \'\' | translate}}"\n ng-model="selectedDriver.jdbc[labelName]" ng-change="concatURL(labelName)">\n </div>\n <div class="col-xs-12 col-md-4" ng-if="labelName === \'driverClass\'">\n <em class="icon-warning icon-2x"\n ng-if="!classAvailable"\n uib-tooltip="{{\'repoTooltips.ontop.driverClassWarning\' | translate}}"\n tooltip-placement="top"></em>\n <a class="uri" ng-if="selectedDriver.downloadDriverUrl && !classAvailable"\n href="{{selectedDriver.downloadDriverUrl}}"\n style="text-decoration: underline;">\n {{\'ontop.repo.download.jdbc.driver\' | translate}}\n </a>\n </div>\n <div class="col-xs-4 col-md-2" ng-if="labelName === \'url\'">\n <div class="wrapper-div" uib-tooltip="{{\'repoTooltips.ontop.testConn\' | translate}}">\n <button id="testConnection1" ng-click="validateOntopPropertiesConnection()"\n ng-disabled="!selectedDriver.jdbc.hostName || !selectedDriver.jdbc.userName || !selectedDriver.jdbc.databaseName || isRequiredField(\'port\') && !selectedDriver.jdbc.port"\n type="submit"\n class="btn btn-primary">{{\'ontop.repo.test.connection\' | translate}}\n </button>\n </div>\n </div>\n </div>\n <div ng-repeat="file in ontopRepoFiles" class="form-group row indented-div"\n ng-if="selectedDriver.driverType === genericDriverType || propertiesFile !== file">\n <label for="{{file}}" class="col-xs-12 col-md-3 col-lg-2 col-form-label">\n {{repositoryInfo.params[file].label + (isRequiredOntopRepoFile(file) ? \'*\' : \'\')}}</label>\n <div class="col-xs-8 col-md-5 col-lg-4" uib-tooltip="{{\'repoTooltips.ontop.\' + file | translate}}">\n <a class="btn btn-link ot-edit-input" ng-if="ontopRepoFileNames[file]" ng-click="editFile(file)"\n uib-tooltip="{{\'edit.file.content\' | translate}}"\n tooltip-placement="right"\n tooltip-trigger="mouseenter">\n <span class="icon-edit"></span>\n </a>\n <input class="form-control" id="{{file}}" ng-readonly="true"\n placeholder="{{isRequiredOntopRepoFile(file) ? \'required.field\' : \'\' | translate}}"\n ng-model="ontopRepoFileNames[file]">\n </div>\n <div class="col-xs-4 col-md-2">\n <div class="btn btn-outline-primary btn-sm">\n <div ngf-select ngf-change="uploadOntopRepoFile($files, file)" ngf-multiple="false "\n class="selectFiles pointer clearfix">\n <em ng-hide="uploadFileLoader" class="fa fa-upload fa-2x"></em>&nbsp;\n <div ng-show="uploadFileLoader" onto-loader size="24" class="spinner-container ot-loader"></div>\n <span for="{{file}}" class="pageInfo" style="vertical-align: super; color: #8a8a8a;">{{\'upload.file\' | translate}}</span>\n </div>\n </div>\n </div>\n </div>\n <div class="pt-1"></div>\n <div class="form-group row" ng-if="editRepoPage">\n <div class="checkbox col-xs-12">\n <label uib-tooltip="{{\'restart.repo.check.tooltip\' | translate}}">\n <input id="restartRepo" name="restartRepo"\n type="checkbox"\n ng-model="repositoryInfo.restartRequested"\n ng-checked="repositoryInfo.restartRequested || repositoryInfo.saveId !== repositoryInfo.id"\n ng-disabled="repositoryInfo.saveId !== repositoryInfo.id"/>\n {{\'restart.repo.label\' | translate}}\n </label>\n </div>\n </div>\n <div class="form-group row pb-3">\n <div class="col-xs-12">\n <button id="addSaveOntopRepository" ng-click="createOntopRepo()" ng-if="!editRepoPage" type="submit" class="btn btn-primary">{{\'common.create.btn\' | translate}}</button>\n <button id="addEditOntopRepository" ng-click="editOntopRepo()" ng-if="editRepoPage" type="submit" class="btn btn-primary">{{\'common.save.btn\' | translate}}</button>\n <a ng-click="goBackToPrevious()" class="btn btn-secondary">{{\'common.cancel.btn\' | translate}}</a>\n </div>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=172.558d9080f05080a0dac2.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/repositories/templates/ontop-repo.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,85MAGP,OAAOA","file":"172.558d9080f05080a0dac2.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"ontop-content\" class=\"pt-1\">\\n <h4>{{\\'ontop.repo.configuration\\' | translate}}</h4>\\n <div class=\"form-group row indented-div\">\\n <label class=\"col-xs-12 col-md-3 col-lg-2 col-form-label\">{{\\'ontop.repo.database.driver\\' | translate}}</label>\\n <div class=\"col-xs-8 col-md-5 col-lg-4\" uib-tooltip=\"{{\\'repoTooltips.ontop.driverType\\' | translate}}\">\\n <select class=\"form-control\" id=\"driverType\" ng-model=\"selectedDriver.driverType\"\\n ng-change=\"selectDriverByType(selectedDriver.driverType)\"\\n ng-options=\"driver.driverType as driver.driverName for driver in supportedDriversData\">\\n </select>\\n </div>\\n <div class=\"form-group col-xs-4 col-md-2 wrapper-div\"\\n ng-if=\"selectedDriver.driverType === genericDriverType\"\\n uib-tooltip=\"{{\\'repoTooltips.ontop.testConn\\' | translate}}\">\\n <button id=\"testConnection\" ng-click=\"validateOntopPropertiesConnection()\"\\n ng-disabled=\"!isOntopRepoFileUploaded() && !editRepoPage\"\\n type=\"submit\"\\n class=\"btn btn-primary\">{{\\'ontop.repo.test.connection\\' | translate}}\\n </button>\\n </div>\\n </div>\\n <div ng-repeat=\"labelName in propertiesFileParams\" class=\"form-group row indented-div\"\\n ng-if=\"selectedDriver.driverType !== genericDriverType\">\\n <label for=\"{{labelName}}\" class=\"col-xs-12 col-md-3 col-lg-2 col-form-label\">\\n {{supportedDriverLabels[labelName] + (isRequiredField(labelName) ? \\'*\\' : \\'\\')}}</label>\\n <div ng-class=\"{\\'col-xs-8 col-md-5 col-lg-4\\': labelName === \\'url\\', \\'col-xs-12 col-md-5 col-lg-4\\': labelName !== \\'url\\'}\"\\n uib-tooltip=\"{{getFieldTooltip(labelName)}}\">\\n <input id=\"{{labelName}}\" class=\"form-control\" ng-readonly=\"isReadOnly(labelName)\"\\n type=\"{{getInputType(labelName)}}\" min=\"1\" max=\"65535\"\\n ng-required=\"isRequiredField(labelName)\"\\n placeholder=\"{{isRequiredField(labelName) ? \\'required.field\\' : \\'\\' | translate}}\"\\n ng-model=\"selectedDriver.jdbc[labelName]\" ng-change=\"concatURL(labelName)\">\\n </div>\\n <div class=\"col-xs-12 col-md-4\" ng-if=\"labelName === \\'driverClass\\'\">\\n <em class=\"icon-warning icon-2x\"\\n ng-if=\"!classAvailable\"\\n uib-tooltip=\"{{\\'repoTooltips.ontop.driverClassWarning\\' | translate}}\"\\n tooltip-placement=\"top\"></em>\\n <a class=\"uri\" ng-if=\"selectedDriver.downloadDriverUrl && !classAvailable\"\\n href=\"{{selectedDriver.downloadDriverUrl}}\"\\n style=\"text-decoration: underline;\">\\n {{\\'ontop.repo.download.jdbc.driver\\' | translate}}\\n </a>\\n </div>\\n <div class=\"col-xs-4 col-md-2\" ng-if=\"labelName === \\'url\\'\">\\n <div class=\"wrapper-div\" uib-tooltip=\"{{\\'repoTooltips.ontop.testConn\\' | translate}}\">\\n <button id=\"testConnection1\" ng-click=\"validateOntopPropertiesConnection()\"\\n ng-disabled=\"!selectedDriver.jdbc.hostName || !selectedDriver.jdbc.userName || !selectedDriver.jdbc.databaseName || isRequiredField(\\'port\\') && !selectedDriver.jdbc.port\"\\n type=\"submit\"\\n class=\"btn btn-primary\">{{\\'ontop.repo.test.connection\\' | translate}}\\n </button>\\n </div>\\n </div>\\n </div>\\n <div ng-repeat=\"file in ontopRepoFiles\" class=\"form-group row indented-div\"\\n ng-if=\"selectedDriver.driverType === genericDriverType || propertiesFile !== file\">\\n <label for=\"{{file}}\" class=\"col-xs-12 col-md-3 col-lg-2 col-form-label\">\\n {{repositoryInfo.params[file].label + (isRequiredOntopRepoFile(file) ? \\'*\\' : \\'\\')}}</label>\\n <div class=\"col-xs-8 col-md-5 col-lg-4\" uib-tooltip=\"{{\\'repoTooltips.ontop.\\' + file | translate}}\">\\n <a class=\"btn btn-link ot-edit-input\" ng-if=\"ontopRepoFileNames[file]\" ng-click=\"editFile(file)\"\\n uib-tooltip=\"{{\\'edit.file.content\\' | translate}}\"\\n tooltip-placement=\"right\"\\n tooltip-trigger=\"mouseenter\">\\n <span class=\"icon-edit\"></span>\\n </a>\\n <input class=\"form-control\" id=\"{{file}}\" ng-readonly=\"true\"\\n placeholder=\"{{isRequiredOntopRepoFile(file) ? \\'required.field\\' : \\'\\' | translate}}\"\\n ng-model=\"ontopRepoFileNames[file]\">\\n </div>\\n <div class=\"col-xs-4 col-md-2\">\\n <div class=\"btn btn-outline-primary btn-sm\">\\n <div ngf-select ngf-change=\"uploadOntopRepoFile($files, file)\" ngf-multiple=\"false \"\\n class=\"selectFiles pointer clearfix\">\\n <em ng-hide=\"uploadFileLoader\" class=\"fa fa-upload fa-2x\"></em>&nbsp;\\n <div ng-show=\"uploadFileLoader\" onto-loader size=\"24\" class=\"spinner-container ot-loader\"></div>\\n <span for=\"{{file}}\" class=\"pageInfo\" style=\"vertical-align: super; color: #8a8a8a;\">{{\\'upload.file\\' | translate}}</span>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div class=\"pt-1\"></div>\\n <div class=\"form-group row\" ng-if=\"editRepoPage\">\\n <div class=\"checkbox col-xs-12\">\\n <label uib-tooltip=\"{{\\'restart.repo.check.tooltip\\' | translate}}\">\\n <input id=\"restartRepo\" name=\"restartRepo\"\\n type=\"checkbox\"\\n ng-model=\"repositoryInfo.restartRequested\"\\n ng-checked=\"repositoryInfo.restartRequested || repositoryInfo.saveId !== repositoryInfo.id\"\\n ng-disabled=\"repositoryInfo.saveId !== repositoryInfo.id\"/>\\n {{\\'restart.repo.label\\' | translate}}\\n </label>\\n </div>\\n </div>\\n <div class=\"form-group row pb-3\">\\n <div class=\"col-xs-12\">\\n <button id=\"addSaveOntopRepository\" ng-click=\"createOntopRepo()\" ng-if=\"!editRepoPage\" type=\"submit\" class=\"btn btn-primary\">{{\\'common.create.btn\\' | translate}}</button>\\n <button id=\"addEditOntopRepository\" ng-click=\"editOntopRepo()\" ng-if=\"editRepoPage\" type=\"submit\" class=\"btn btn-primary\">{{\\'common.save.btn\\' | translate}}</button>\\n <a ng-click=\"goBackToPrevious()\" class=\"btn btn-secondary\">{{\\'common.cancel.btn\\' | translate}}</a>\\n </div>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[173],{238:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="modal-header">\n <h3 class="modal-title">{{\'security.free.access.config.title\' | translate}}</h3>\n <div>{{\'security.free.access.config.settings\' | translate}}</div>\n</div>\n<div class="modal-body">\n <div class="card" id="user-settings">\n <div class="card-block">\n <h3>{{\'security.application.settings\' | translate}}</h3>\n <label class="mr-1"><input type="checkbox" ng-model="appSettings.DEFAULT_SAMEAS" id="defaultSameAs" checked="appSettings.DEFAULT_SAMEAS" > {{\'security.default.same.as\' | translate}}</label>\n <label class="mr-1"><input type="checkbox" ng-model="appSettings.DEFAULT_INFERENCE" id="defaultInference" checked="appSettings.DEFAULT_INFERENCE" > {{\'security.default.inference\' | translate}}</label>\n <label><input type="checkbox" ng-model="appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT"> {{\'security.count.all.results\' | translate}}</label>\n </div>\n </div>\n <div class="card">\n <div class="card-block repo-fields">\n <h3>{{\'security.read.write.access\' | translate}}</h3>\n <div class="row">\n <p ng-show="repositoryCheckError" class="authoritiesError alert alert-danger col-xs-12">\n {{\'security.user.rights\' | translate}}\n </p>\n <p ng-hide="hasActiveLocation()" class="authoritiesError alert alert-danger col-xs-12">{{\'security.no.active.location\' | translate}}\n <a href="repository" ng-if="isAdmin()">{{\'activate.location\' | translate}}</a>\n </p>\n </div>\n <div class="row" style="margin-top: 0">\n <h5 class="boldless col-xs-10">{{\'security.repository.title\' | translate}}</h5>\n <span class="fa fa-eye fa-1andAhalfx col-xs-1" uib-tooltip="{{\'security.tooltip.read\' | translate}}" tooltip-trigger="mouseenter"\n tooltip-placement="top" tooltip-append-to-body="true" style="margin-top: 10px"></span>\n <span class="fa fa-pencil fa-1andAhalfx col-xs-1" uib-tooltip="{{\'security.tooltip.write\' | translate}}" tooltip-trigger="mouseenter"\n tooltip-placement="top" tooltip-append-to-body="true" style="margin-top: 10px"></span>\n </div>\n <div id="access-user-repos access-user-rights" class="row"\n ng-repeat="repository in getRepositories() | orderBy: [\'id\', \'location\']">\n <p class="col-xs-10">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \'Local\'}}</small></p>\n <label class="col-xs-1">\n <input class="animated read" type="checkbox"\n ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]"\n ng-checked="grantedAuthorities.READ_REPO[createUniqueKey(repository)] || grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]"\n ng-disabled="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]"\n ng-class="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)] ? \'bounceIn\' : \'\'"\n ng-click="setGrantedAuthorities()">\n </label>\n <label class="col-xs-1">\n <input class="animated write" type="checkbox"\n ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]"\n ng-checked="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]"\n ng-click="setGrantedAuthorities()">\n </label>\n </div>\n </div>\n </div>\n</div>\n<div class="modal-footer">\n <button type="button" class="btn btn-default" ng-click="cancel()">{{\'common.cancel.btn\' | translate}}</button>\n <button class="btn btn-primary" ng-click="ok()">{{\'common.ok.btn\' | translate}}</button>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=173.c1546a02befda215609d.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/security/templates/modal/default-authorities.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,u9HAGP,OAAOA","file":"173.c1546a02befda215609d.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"modal-header\">\\n <h3 class=\"modal-title\">{{\\'security.free.access.config.title\\' | translate}}</h3>\\n <div>{{\\'security.free.access.config.settings\\' | translate}}</div>\\n</div>\\n<div class=\"modal-body\">\\n <div class=\"card\" id=\"user-settings\">\\n <div class=\"card-block\">\\n <h3>{{\\'security.application.settings\\' | translate}}</h3>\\n <label class=\"mr-1\"><input type=\"checkbox\" ng-model=\"appSettings.DEFAULT_SAMEAS\" id=\"defaultSameAs\" checked=\"appSettings.DEFAULT_SAMEAS\" > {{\\'security.default.same.as\\' | translate}}</label>\\n <label class=\"mr-1\"><input type=\"checkbox\" ng-model=\"appSettings.DEFAULT_INFERENCE\" id=\"defaultInference\" checked=\"appSettings.DEFAULT_INFERENCE\" > {{\\'security.default.inference\\' | translate}}</label>\\n <label><input type=\"checkbox\" ng-model=\"appSettings.EXECUTE_COUNT\" id=\"defaultCount\" checked=\"appSettings.EXECUTE_COUNT\"> {{\\'security.count.all.results\\' | translate}}</label>\\n </div>\\n </div>\\n <div class=\"card\">\\n <div class=\"card-block repo-fields\">\\n <h3>{{\\'security.read.write.access\\' | translate}}</h3>\\n <div class=\"row\">\\n <p ng-show=\"repositoryCheckError\" class=\"authoritiesError alert alert-danger col-xs-12\">\\n {{\\'security.user.rights\\' | translate}}\\n </p>\\n <p ng-hide=\"hasActiveLocation()\" class=\"authoritiesError alert alert-danger col-xs-12\">{{\\'security.no.active.location\\' | translate}}\\n <a href=\"repository\" ng-if=\"isAdmin()\">{{\\'activate.location\\' | translate}}</a>\\n </p>\\n </div>\\n <div class=\"row\" style=\"margin-top: 0\">\\n <h5 class=\"boldless col-xs-10\">{{\\'security.repository.title\\' | translate}}</h5>\\n <span class=\"fa fa-eye fa-1andAhalfx col-xs-1\" uib-tooltip=\"{{\\'security.tooltip.read\\' | translate}}\" tooltip-trigger=\"mouseenter\"\\n tooltip-placement=\"top\" tooltip-append-to-body=\"true\" style=\"margin-top: 10px\"></span>\\n <span class=\"fa fa-pencil fa-1andAhalfx col-xs-1\" uib-tooltip=\"{{\\'security.tooltip.write\\' | translate}}\" tooltip-trigger=\"mouseenter\"\\n tooltip-placement=\"top\" tooltip-append-to-body=\"true\" style=\"margin-top: 10px\"></span>\\n </div>\\n <div id=\"access-user-repos access-user-rights\" class=\"row\"\\n ng-repeat=\"repository in getRepositories() | orderBy: [\\'id\\', \\'location\\']\">\\n <p class=\"col-xs-10\">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \\'Local\\'}}</small></p>\\n <label class=\"col-xs-1\">\\n <input class=\"animated read\" type=\"checkbox\"\\n ng-model=\"grantedAuthorities.READ_REPO[createUniqueKey(repository)]\"\\n ng-checked=\"grantedAuthorities.READ_REPO[createUniqueKey(repository)] || grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]\"\\n ng-disabled=\"grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]\"\\n ng-class=\"grantedAuthorities.WRITE_REPO[createUniqueKey(repository)] ? \\'bounceIn\\' : \\'\\'\"\\n ng-click=\"setGrantedAuthorities()\">\\n </label>\\n <label class=\"col-xs-1\">\\n <input class=\"animated write\" type=\"checkbox\"\\n ng-model=\"grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]\"\\n ng-checked=\"grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]\"\\n ng-click=\"setGrantedAuthorities()\">\\n </label>\\n </div>\\n </div>\\n </div>\\n</div>\\n<div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-default\" ng-click=\"cancel()\">{{\\'common.cancel.btn\\' | translate}}</button>\\n <button class=\"btn btn-primary\" ng-click=\"ok()\">{{\\'common.ok.btn\\' | translate}}</button>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[175],{240:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<script type="text/ng-template" id="popover-content-user.html">\n\t<h5>{{\'security.user.may\' | translate}}</h5>\n\t<ul>\n <li>{{\'security.use.gdb\' | translate}}</li>\n\t <li>{{\'security.grant.read.access\' | translate}}</li>\n\t\t<li>{{\'security.grant.read.write.access\' | translate}}</li>\n </ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-repo-manager.html">\n\t<h5>{{\'security.repo.manager.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<script type="text/ng-template" id="popover-content-admin.html">\n\t<h5>{{\'security.admin.may\' | translate}}</h5>\n\t<ul>\n\t\t<li>{{\'security.use.gdb\' | translate}}</li>\n\t\t<li>{{\'security.read.write.all.repos\' | translate}}</li>\n\t\t<li>{{\'security.create.edit.delete.repos\' | translate}}</li>\n\t\t<li>{{\'security.access.monitoring\' | translate}}</li>\n\t\t<li>{{\'security.attach.remote.locations\' | translate}}</li>\n\t\t<li>{{\'security.manage.users.access\' | translate}}</li>\n\t\t<li>{{\'security.manage.cluster\' | translate}}</li>\n\t\t<li>{{\'security.view.sys.info\' | translate}}</li>\n\t</ul>\n<\/script>\n\n<h1>{{pageTitle}}</h1>\n\n<div id="wb-user" ng-hide="loader">\n\t<form name="form" class="form newUserForm userForm editUserContainer" ng-submit="submit()" novalidate>\n\t\t<div class="row">\n\t\t\t<div class="col-md-6">\n\t\t\t\t<div class="card login-credentials" ng-hide="isOverrideAuth() || !isLocalAuthentication()">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'view.login.title\' | translate}}</h3>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': usernameError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" uib-tooltip="{{\'security.table.username\' | translate}}" tooltip-trigger="mouseenter"><em class="icon-user icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-username" placeholder="{{\'security.table.username\' | translate}}" name="username" class="form-control form-control-lg" type="text" ng-model="user.username" ng-readonly="mode !== \'add\'">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="usernameError" class="form-control-feedback">{{usernameError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': passwordError}">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" uib-tooltip="{{\'security.password.placeholder\' | translate}}" tooltip-trigger="mouseenter"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-password" placeholder="{{passwordPlaceholder | translate}}" name="password" class="form-control form-control-lg" type="password"\tng-model="user.password" ng-hide="user.external || hasExternalAuthUser()" ng-readonly="noPassword">\n\t\t\t\t\t\t\t\t<span ng-show="user.external || hasExternalAuthUser()">{{\'security.auth.from.external.module\' | translate}}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="passwordError" class="form-control-feedback">{{passwordError}}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="form-group" ng-class="{\'has-danger\': confirmPasswordError}" ng-hide="user.external || hasExternalAuthUser()">\n\t\t\t\t\t\t\t<div class="input-group">\n\t\t\t\t\t\t\t\t<span class="input-group-addon" uib-tooltip="{{\'security.password.confirm\' | translate}}" tooltip-trigger="mouseenter"><em class="icon-lock icon-2x text-muted"></em></span>\n\t\t\t\t\t\t\t\t<input id="wb-user-confirmpassword" placeholder="{{\'security.password.confirm\' | translate}}" name="password_confirm" class="form-control form-control-lg" type="password" ng-model="user.confirmpassword" ng-readonly="noPassword">\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div ng-show="confirmPasswordError" class="form-control-feedback">{{confirmPasswordError}}</div>\n\t\t\t\t\t\t</div>\n <div>\n <label class="d-block">\n <input type="checkbox" id="noPassword" ng-model="noPassword" ng-change="setNoPassword()">\n <span ng-show="mode === \'add\'">{{\'security.dont.set.password\' | translate}} </span>\n <span ng-show="mode !== \'add\'">{{\'security.unset.password\' | translate}} </span>\n </label>\n </div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card sparql-editor-settings" id="user-settings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.settings\' | translate}}</h3>\n\n\t\t\t\t\t\t<div id="sameas-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="sameas-label">\n\t\t\t\t\t\t\t\t{{\'security.expand.sameAs.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_SAMEAS ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_SAMEAS ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span uib-tooltip="{{shouldDisableSameAs() ? \'core.require.inferred\' : \'security.tooltip.click.me\' | translate}}" tooltip-placement="top" tooltip-trigger="mouseenter"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input id="sameAsCheck" type="checkbox" class="switch"\n ng-checked="user.appSettings.DEFAULT_SAMEAS"\n ng-disabled="shouldDisableSameAs()"/>\n\t\t\t\t\t\t\t\t<label for="sameas-on"></label>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t{{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<div id="inference-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="inference-label">\n\t\t\t\t\t\t\t\t{{\'security.inference.is\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_INFERENCE ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_INFERENCE ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span uib-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" tooltip-trigger="mouseenter"\n\t\t\t\t\t\t\t\t ng-click="user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE"\n\t\t\t\t\t\t\t\t class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_INFERENCE"/>\n\t\t\t\t\t\t\t\t<label for="inference-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.editor.graph\' | translate}}\n\t\t\t\t\t\t</div>\n\n <div id="schema-on" class="mb-1">\n\t\t\t\t\t\t\t<span class="schema-label">\n\t\t\t\t\t\t\t\t{{\'security.show.schema\' | translate}}\n\t\t\t\t\t\t\t\t<span class="tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'tag-primary\' : \'tag-default\'}}">\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \'common.on.btn\' : \'common.off.btn\' | translate}}\n\t\t\t\t\t\t\t\t</span>\n <span uib-tooltip="{{\'security.tooltip.click.me\' | translate}}" tooltip-placement="top" tooltip-trigger="mouseenter"\n ng-click="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"\n class="switch mr-0">\n\t\t\t\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA"/>\n\t\t\t\t\t\t\t\t<label for="schema-on"></label>\n\t\t\t\t\t\t\t</span>\n {{\'security.default.visual.graph\' | translate}}\n\t\t\t\t\t\t\t</span>\n </div>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.EXECUTE_COUNT" id="defaultCount" checked="appSettings.EXECUTE_COUNT">\n\t\t\t\t\t\t\t{{\'security.count.total.results\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t\t<label class="d-block">\n\t\t\t\t\t\t\t<input type="checkbox" ng-model="user.appSettings.IGNORE_SHARED_QUERIES" id="ignore-shared" checked="appSettings.IGNORE_SHARED_QUERIES">\n\t\t\t\t\t\t\t{{\'security.ignore.shared.queries\' | translate}}\n\t\t\t\t\t\t</label>\n\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class="card" id="workbench-settings" ng-if="showWorkbenchSettings">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.workbench.settings.title\' | translate}}\n\t\t\t\t\t\t\t<em class="icon-info text-primary small" uib-tooltip="{{\'security.workbench.settings.theme.tooltip\' | translate}}"></em></h3>\n\n\t\t\t\t\t\t<div class="mb-1">\n\t\t\t\t\t\t\t<label class="col-lg-5">{{\'security.workbench.settings.theme.label\' | translate}}</label>\n\t\t\t\t\t\t\t<div class="radio">\n\t\t\t\t\t\t\t\t<label class="px-1">\n\t\t\t\t\t\t\t\t\t<input type="radio" value="light" ng-model="workbenchSettings.theme" ng-change="setWorkbenchTheme()"/>\n\t\t\t\t\t\t\t\t\t{{\'security.workbench.settings.theme.light\' | translate}}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t<label class="px-1">\n\t\t\t\t\t\t\t\t\t<input type="radio" value="dark" ng-model="workbenchSettings.theme" ng-change="setWorkbenchTheme()"/>\n\t\t\t\t\t\t\t\t\t{{\'security.workbench.settings.theme.dark\' | translate}}\n\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t\t<div class="col-md-6" ng-hide="!isLocalAuthentication()">\n\t\t\t\t<div class="card user-role" id="user-roles">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.user.role\' | translate}}</h3>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-user.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleUser" value="user" ng-disabled="hasEditRestrictions()" >\n\t\t\t\t\t\t\t{{\'security.user.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label class="mr-1"\n\t\t\t\t\t\t\t uib-popover-template="\'popover-content-repo-manager.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleRepoAdmin" value="repoManager" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.repo.manager.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t\t<label uib-popover-template="\'popover-content-admin.html\'"\n\t\t\t\t\t\t\t popover-trigger="mouseenter"\n\t\t\t\t\t\t\t popover-placement="bottom">\n\t\t\t\t\t\t\t<input type="radio" ng-model="userType" id="roleAdmin" value="admin" ng-disabled="hasEditRestrictions()">\n\t\t\t\t\t\t\t{{\'security.admin.label\' | translate}}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="user-repos" class="card user-repositories">\n\t\t\t\t\t<div class="card-block">\n\t\t\t\t\t\t<h3>{{\'security.repo.rights\' | translate}}</h3>\n\t\t\t\t\t\t<div class="has-danger">\n\t\t\t\t\t\t\t<p ng-show="repositoryCheckError" class="form-control-feedback">\n\t\t\t\t\t\t\t\t{{\'security.user.rights\' | translate}}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<table class="table table-hover table-sm" aria-describedby="User rights table">\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th id="repositoryIdColumn">{{\'security.repository.title\' | translate}}</th>\n\t\t\t\t\t\t\t\t\t<th id="readRightsColumn" class="text-xs-center"><em class="icon-eye icon-lg" uib-tooltip="{{\'security.tooltip.read\' | translate}}" tooltip-trigger="mouseenter"></em></th>\n\t\t\t\t\t\t\t\t\t<th id="writeRightColumn" class="text-xs-center"><em class="icon-edit icon-lg" uib-tooltip="{{\'security.tooltip.write\' | translate}}" tooltip-trigger="mouseenter"></em></th>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>{{\'security.any.data.repo\' | translate}}\n\t\t\t\t\t\t\t\t\t\t<em class="icon-info text-primary" uib-tooltip="{{\'security.data.repos\' | translate}}"></em>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t<td class="text-xs-center">\n <input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[\'*\']" ng-checked="hasReadPermission(\'*\')" ng-disabled="readCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </td>\n\t\t\t\t\t\t\t\t\t<td class="text-xs-center">\n <input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[\'*\']" ng-checked="hasWritePermission(\'*\')" ng-disabled="writeCheckDisabled(\'*\')" ng-click="setGrantedAuthorities()">\n </td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr ng-repeat="repository in getReadableRepositories() | orderBy: [\'location\', \'id\']">\n\t\t\t\t\t\t\t\t\t<td class="repository-name">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \'Local\'}}</small></td>\n\t\t\t\t\t\t\t\t\t<td class="text-xs-center read-rights"><input class="read" type="checkbox" ng-model="grantedAuthorities.READ_REPO[createUniqueKey(repository)]" ng-checked="hasReadPermission(repository)" ng-disabled="readCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n\t\t\t\t\t\t\t\t\t<td class="text-xs-center write-rights"><input class="write" type="checkbox" ng-model="grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]" ng-checked="hasWritePermission(repository)" ng-disabled="writeCheckDisabled(repository)" ng-click="setGrantedAuthorities()"></td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n </div>\n\t\t</div>\n\n\t\t<div class="mb-3">\n\t\t\t<button id="wb-user-submit" class="btn btn-primary" type="submit">{{saveButtonText}}</button>\n\t\t\t<button id="wb-user-goBack" class="btn btn-secondary" type="button" ng-click="goBack()">{{\'common.cancel.btn\' | translate}}</button>\n\t\t</div>\n\t</form>\n</div>\n<div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div>\n\n\n\n';return __p}}}]);
2
+ //# sourceMappingURL=175.943ac5019fe29113e1f2.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/security/templates/user.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,4scAGP,OAAOA","file":"175.943ac5019fe29113e1f2.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<script type=\"text/ng-template\" id=\"popover-content-user.html\">\\n\t<h5>{{\\'security.user.may\\' | translate}}</h5>\\n\t<ul>\\n <li>{{\\'security.use.gdb\\' | translate}}</li>\\n\t <li>{{\\'security.grant.read.access\\' | translate}}</li>\\n\t\t<li>{{\\'security.grant.read.write.access\\' | translate}}</li>\\n </ul>\\n</script>\\n\\n<script type=\"text/ng-template\" id=\"popover-content-repo-manager.html\">\\n\t<h5>{{\\'security.repo.manager.may\\' | translate}}</h5>\\n\t<ul>\\n\t\t<li>{{\\'security.use.gdb\\' | translate}}</li>\\n\t\t<li>{{\\'security.read.write.all.repos\\' | translate}}</li>\\n\t\t<li>{{\\'security.create.edit.delete.repos\\' | translate}}</li>\\n\t\t<li>{{\\'security.access.monitoring\\' | translate}}</li>\\n\t</ul>\\n</script>\\n\\n<script type=\"text/ng-template\" id=\"popover-content-admin.html\">\\n\t<h5>{{\\'security.admin.may\\' | translate}}</h5>\\n\t<ul>\\n\t\t<li>{{\\'security.use.gdb\\' | translate}}</li>\\n\t\t<li>{{\\'security.read.write.all.repos\\' | translate}}</li>\\n\t\t<li>{{\\'security.create.edit.delete.repos\\' | translate}}</li>\\n\t\t<li>{{\\'security.access.monitoring\\' | translate}}</li>\\n\t\t<li>{{\\'security.attach.remote.locations\\' | translate}}</li>\\n\t\t<li>{{\\'security.manage.users.access\\' | translate}}</li>\\n\t\t<li>{{\\'security.manage.cluster\\' | translate}}</li>\\n\t\t<li>{{\\'security.view.sys.info\\' | translate}}</li>\\n\t</ul>\\n</script>\\n\\n<h1>{{pageTitle}}</h1>\\n\\n<div id=\"wb-user\" ng-hide=\"loader\">\\n\t<form name=\"form\" class=\"form newUserForm userForm editUserContainer\" ng-submit=\"submit()\" novalidate>\\n\t\t<div class=\"row\">\\n\t\t\t<div class=\"col-md-6\">\\n\t\t\t\t<div class=\"card login-credentials\" ng-hide=\"isOverrideAuth() || !isLocalAuthentication()\">\\n\t\t\t\t\t<div class=\"card-block\">\\n\t\t\t\t\t\t<h3>{{\\'view.login.title\\' | translate}}</h3>\\n\t\t\t\t\t\t<div class=\"form-group\" ng-class=\"{\\'has-danger\\': usernameError}\">\\n\t\t\t\t\t\t\t<div class=\"input-group\">\\n\t\t\t\t\t\t\t\t<span class=\"input-group-addon\" uib-tooltip=\"{{\\'security.table.username\\' | translate}}\" tooltip-trigger=\"mouseenter\"><em class=\"icon-user icon-2x text-muted\"></em></span>\\n\t\t\t\t\t\t\t\t<input id=\"wb-user-username\" placeholder=\"{{\\'security.table.username\\' | translate}}\" name=\"username\" class=\"form-control form-control-lg\" type=\"text\" ng-model=\"user.username\" ng-readonly=\"mode !== \\'add\\'\">\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t<div ng-show=\"usernameError\" class=\"form-control-feedback\">{{usernameError}}</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t<div class=\"form-group\" ng-class=\"{\\'has-danger\\': passwordError}\">\\n\t\t\t\t\t\t\t<div class=\"input-group\">\\n\t\t\t\t\t\t\t\t<span class=\"input-group-addon\" uib-tooltip=\"{{\\'security.password.placeholder\\' | translate}}\" tooltip-trigger=\"mouseenter\"><em class=\"icon-lock icon-2x text-muted\"></em></span>\\n\t\t\t\t\t\t\t\t<input id=\"wb-user-password\" placeholder=\"{{passwordPlaceholder | translate}}\" name=\"password\" class=\"form-control form-control-lg\" type=\"password\"\tng-model=\"user.password\" ng-hide=\"user.external || hasExternalAuthUser()\" ng-readonly=\"noPassword\">\\n\t\t\t\t\t\t\t\t<span ng-show=\"user.external || hasExternalAuthUser()\">{{\\'security.auth.from.external.module\\' | translate}}</span>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t<div ng-show=\"passwordError\" class=\"form-control-feedback\">{{passwordError}}</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t<div class=\"form-group\" ng-class=\"{\\'has-danger\\': confirmPasswordError}\" ng-hide=\"user.external || hasExternalAuthUser()\">\\n\t\t\t\t\t\t\t<div class=\"input-group\">\\n\t\t\t\t\t\t\t\t<span class=\"input-group-addon\" uib-tooltip=\"{{\\'security.password.confirm\\' | translate}}\" tooltip-trigger=\"mouseenter\"><em class=\"icon-lock icon-2x text-muted\"></em></span>\\n\t\t\t\t\t\t\t\t<input id=\"wb-user-confirmpassword\" placeholder=\"{{\\'security.password.confirm\\' | translate}}\" name=\"password_confirm\" class=\"form-control form-control-lg\" type=\"password\" ng-model=\"user.confirmpassword\" ng-readonly=\"noPassword\">\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t\t<div ng-show=\"confirmPasswordError\" class=\"form-control-feedback\">{{confirmPasswordError}}</div>\\n\t\t\t\t\t\t</div>\\n <div>\\n <label class=\"d-block\">\\n <input type=\"checkbox\" id=\"noPassword\" ng-model=\"noPassword\" ng-change=\"setNoPassword()\">\\n <span ng-show=\"mode === \\'add\\'\">{{\\'security.dont.set.password\\' | translate}} </span>\\n <span ng-show=\"mode !== \\'add\\'\">{{\\'security.unset.password\\' | translate}} </span>\\n </label>\\n </div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\\n\t\t\t\t<div class=\"card sparql-editor-settings\" id=\"user-settings\">\\n\t\t\t\t\t<div class=\"card-block\">\\n\t\t\t\t\t\t<h3>{{\\'security.user.settings\\' | translate}}</h3>\\n\\n\t\t\t\t\t\t<div id=\"sameas-on\" class=\"mb-1\">\\n\t\t\t\t\t\t\t<span class=\"sameas-label\">\\n\t\t\t\t\t\t\t\t{{\\'security.expand.sameAs.is\\' | translate}}\\n\t\t\t\t\t\t\t\t<span class=\"tag {{user.appSettings.DEFAULT_SAMEAS ? \\'tag-primary\\' : \\'tag-default\\'}}\">\\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_SAMEAS ? \\'common.on.btn\\' : \\'common.off.btn\\' | translate}}\\n\t\t\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t\t<span uib-tooltip=\"{{shouldDisableSameAs() ? \\'core.require.inferred\\' : \\'security.tooltip.click.me\\' | translate}}\" tooltip-placement=\"top\" tooltip-trigger=\"mouseenter\"\\n\t\t\t\t\t\t\t\t ng-click=\"user.appSettings.DEFAULT_SAMEAS = !user.appSettings.DEFAULT_SAMEAS\"\\n\t\t\t\t\t\t\t\t class=\"switch mr-0\">\\n\t\t\t\t\t\t\t\t<input id=\"sameAsCheck\" type=\"checkbox\" class=\"switch\"\\n ng-checked=\"user.appSettings.DEFAULT_SAMEAS\"\\n ng-disabled=\"shouldDisableSameAs()\"/>\\n\t\t\t\t\t\t\t\t<label for=\"sameas-on\"></label>\\n\t\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t\t{{\\'security.default.editor.graph\\' | translate}}\\n\t\t\t\t\t\t</div>\\n\\n\t\t\t\t\t\t<div id=\"inference-on\" class=\"mb-1\">\\n\t\t\t\t\t\t\t<span class=\"inference-label\">\\n\t\t\t\t\t\t\t\t{{\\'security.inference.is\\' | translate}}\\n\t\t\t\t\t\t\t\t<span class=\"tag {{user.appSettings.DEFAULT_INFERENCE ? \\'tag-primary\\' : \\'tag-default\\'}}\">\\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_INFERENCE ? \\'common.on.btn\\' : \\'common.off.btn\\' | translate}}\\n\t\t\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t\t</span>\\n\t\t\t\t\t\t\t<span uib-tooltip=\"{{\\'security.tooltip.click.me\\' | translate}}\" tooltip-placement=\"top\" tooltip-trigger=\"mouseenter\"\\n\t\t\t\t\t\t\t\t ng-click=\"user.appSettings.DEFAULT_INFERENCE = !user.appSettings.DEFAULT_INFERENCE\"\\n\t\t\t\t\t\t\t\t class=\"switch mr-0\">\\n\t\t\t\t\t\t\t\t<input type=\"checkbox\" class=\"switch\" ng-checked=\"user.appSettings.DEFAULT_INFERENCE\"/>\\n\t\t\t\t\t\t\t\t<label for=\"inference-on\"></label>\\n\t\t\t\t\t\t\t</span>\\n {{\\'security.default.editor.graph\\' | translate}}\\n\t\t\t\t\t\t</div>\\n\\n <div id=\"schema-on\" class=\"mb-1\">\\n\t\t\t\t\t\t\t<span class=\"schema-label\">\\n\t\t\t\t\t\t\t\t{{\\'security.show.schema\\' | translate}}\\n\t\t\t\t\t\t\t\t<span class=\"tag {{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \\'tag-primary\\' : \\'tag-default\\'}}\">\\n\t\t\t\t\t\t\t\t\t{{user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA ? \\'common.on.btn\\' : \\'common.off.btn\\' | translate}}\\n\t\t\t\t\t\t\t\t</span>\\n <span uib-tooltip=\"{{\\'security.tooltip.click.me\\' | translate}}\" tooltip-placement=\"top\" tooltip-trigger=\"mouseenter\"\\n ng-click=\"user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA = !user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA\"\\n class=\"switch mr-0\">\\n\t\t\t\t\t\t\t\t<input type=\"checkbox\" class=\"switch\" ng-checked=\"user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA\"/>\\n\t\t\t\t\t\t\t\t<label for=\"schema-on\"></label>\\n\t\t\t\t\t\t\t</span>\\n {{\\'security.default.visual.graph\\' | translate}}\\n\t\t\t\t\t\t\t</span>\\n </div>\\n\\n\t\t\t\t\t\t<label class=\"d-block\">\\n\t\t\t\t\t\t\t<input type=\"checkbox\" ng-model=\"user.appSettings.EXECUTE_COUNT\" id=\"defaultCount\" checked=\"appSettings.EXECUTE_COUNT\">\\n\t\t\t\t\t\t\t{{\\'security.count.total.results\\' | translate}}\\n\t\t\t\t\t\t</label>\\n\\n\t\t\t\t\t\t<label class=\"d-block\">\\n\t\t\t\t\t\t\t<input type=\"checkbox\" ng-model=\"user.appSettings.IGNORE_SHARED_QUERIES\" id=\"ignore-shared\" checked=\"appSettings.IGNORE_SHARED_QUERIES\">\\n\t\t\t\t\t\t\t{{\\'security.ignore.shared.queries\\' | translate}}\\n\t\t\t\t\t\t</label>\\n\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\\n\t\t\t\t<div class=\"card\" id=\"workbench-settings\" ng-if=\"showWorkbenchSettings\">\\n\t\t\t\t\t<div class=\"card-block\">\\n\t\t\t\t\t\t<h3>{{\\'security.workbench.settings.title\\' | translate}}\\n\t\t\t\t\t\t\t<em class=\"icon-info text-primary small\" uib-tooltip=\"{{\\'security.workbench.settings.theme.tooltip\\' | translate}}\"></em></h3>\\n\\n\t\t\t\t\t\t<div class=\"mb-1\">\\n\t\t\t\t\t\t\t<label class=\"col-lg-5\">{{\\'security.workbench.settings.theme.label\\' | translate}}</label>\\n\t\t\t\t\t\t\t<div class=\"radio\">\\n\t\t\t\t\t\t\t\t<label class=\"px-1\">\\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" value=\"light\" ng-model=\"workbenchSettings.theme\" ng-change=\"setWorkbenchTheme()\"/>\\n\t\t\t\t\t\t\t\t\t{{\\'security.workbench.settings.theme.light\\' | translate}}\\n\t\t\t\t\t\t\t\t</label>\\n\t\t\t\t\t\t\t\t<label class=\"px-1\">\\n\t\t\t\t\t\t\t\t\t<input type=\"radio\" value=\"dark\" ng-model=\"workbenchSettings.theme\" ng-change=\"setWorkbenchTheme()\"/>\\n\t\t\t\t\t\t\t\t\t{{\\'security.workbench.settings.theme.dark\\' | translate}}\\n\t\t\t\t\t\t\t\t</label>\\n\t\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\\n\t\t\t</div>\\n\\n\t\t\t<div class=\"col-md-6\" ng-hide=\"!isLocalAuthentication()\">\\n\t\t\t\t<div class=\"card user-role\" id=\"user-roles\">\\n\t\t\t\t\t<div class=\"card-block\">\\n\t\t\t\t\t\t<h3>{{\\'security.user.role\\' | translate}}</h3>\\n\t\t\t\t\t\t<label class=\"mr-1\"\\n\t\t\t\t\t\t\t uib-popover-template=\"\\'popover-content-user.html\\'\"\\n\t\t\t\t\t\t\t popover-trigger=\"mouseenter\"\\n\t\t\t\t\t\t\t popover-placement=\"bottom\">\\n\t\t\t\t\t\t\t<input type=\"radio\" ng-model=\"userType\" id=\"roleUser\" value=\"user\" ng-disabled=\"hasEditRestrictions()\" >\\n\t\t\t\t\t\t\t{{\\'security.user.label\\' | translate}}\\n\t\t\t\t\t\t</label>\\n\t\t\t\t\t\t<label class=\"mr-1\"\\n\t\t\t\t\t\t\t uib-popover-template=\"\\'popover-content-repo-manager.html\\'\"\\n\t\t\t\t\t\t\t popover-trigger=\"mouseenter\"\\n\t\t\t\t\t\t\t popover-placement=\"bottom\">\\n\t\t\t\t\t\t\t<input type=\"radio\" ng-model=\"userType\" id=\"roleRepoAdmin\" value=\"repoManager\" ng-disabled=\"hasEditRestrictions()\">\\n\t\t\t\t\t\t\t{{\\'security.repo.manager.label\\' | translate}}\\n\t\t\t\t\t\t</label>\\n\t\t\t\t\t\t<label uib-popover-template=\"\\'popover-content-admin.html\\'\"\\n\t\t\t\t\t\t\t popover-trigger=\"mouseenter\"\\n\t\t\t\t\t\t\t popover-placement=\"bottom\">\\n\t\t\t\t\t\t\t<input type=\"radio\" ng-model=\"userType\" id=\"roleAdmin\" value=\"admin\" ng-disabled=\"hasEditRestrictions()\">\\n\t\t\t\t\t\t\t{{\\'security.admin.label\\' | translate}}\\n\t\t\t\t\t\t</label>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n\\n\t\t\t\t<div id=\"user-repos\" class=\"card user-repositories\">\\n\t\t\t\t\t<div class=\"card-block\">\\n\t\t\t\t\t\t<h3>{{\\'security.repo.rights\\' | translate}}</h3>\\n\t\t\t\t\t\t<div class=\"has-danger\">\\n\t\t\t\t\t\t\t<p ng-show=\"repositoryCheckError\" class=\"form-control-feedback\">\\n\t\t\t\t\t\t\t\t{{\\'security.user.rights\\' | translate}}\\n\t\t\t\t\t\t\t</p>\\n\t\t\t\t\t\t</div>\\n\t\t\t\t\t\t<table class=\"table table-hover table-sm\" aria-describedby=\"User rights table\">\\n\t\t\t\t\t\t\t<thead>\\n\t\t\t\t\t\t\t\t<tr>\\n\t\t\t\t\t\t\t\t\t<th id=\"repositoryIdColumn\">{{\\'security.repository.title\\' | translate}}</th>\\n\t\t\t\t\t\t\t\t\t<th id=\"readRightsColumn\" class=\"text-xs-center\"><em class=\"icon-eye icon-lg\" uib-tooltip=\"{{\\'security.tooltip.read\\' | translate}}\" tooltip-trigger=\"mouseenter\"></em></th>\\n\t\t\t\t\t\t\t\t\t<th id=\"writeRightColumn\" class=\"text-xs-center\"><em class=\"icon-edit icon-lg\" uib-tooltip=\"{{\\'security.tooltip.write\\' | translate}}\" tooltip-trigger=\"mouseenter\"></em></th>\\n\t\t\t\t\t\t\t\t</tr>\\n\t\t\t\t\t\t\t</thead>\\n\t\t\t\t\t\t\t<tbody>\\n\t\t\t\t\t\t\t\t<tr>\\n\t\t\t\t\t\t\t\t\t<td>{{\\'security.any.data.repo\\' | translate}}\\n\t\t\t\t\t\t\t\t\t\t<em class=\"icon-info text-primary\" uib-tooltip=\"{{\\'security.data.repos\\' | translate}}\"></em>\\n\t\t\t\t\t\t\t\t\t</td>\\n\t\t\t\t\t\t\t\t\t<td class=\"text-xs-center\">\\n <input class=\"read\" type=\"checkbox\" ng-model=\"grantedAuthorities.READ_REPO[\\'*\\']\" ng-checked=\"hasReadPermission(\\'*\\')\" ng-disabled=\"readCheckDisabled(\\'*\\')\" ng-click=\"setGrantedAuthorities()\">\\n </td>\\n\t\t\t\t\t\t\t\t\t<td class=\"text-xs-center\">\\n <input class=\"write\" type=\"checkbox\" ng-model=\"grantedAuthorities.WRITE_REPO[\\'*\\']\" ng-checked=\"hasWritePermission(\\'*\\')\" ng-disabled=\"writeCheckDisabled(\\'*\\')\" ng-click=\"setGrantedAuthorities()\">\\n </td>\\n\t\t\t\t\t\t\t\t</tr>\\n\t\t\t\t\t\t\t\t<tr ng-repeat=\"repository in getReadableRepositories() | orderBy: [\\'location\\', \\'id\\']\">\\n\t\t\t\t\t\t\t\t\t<td class=\"repository-name\">{{repository.id}}<small> &middot; {{repository.location ? repository.location : \\'Local\\'}}</small></td>\\n\t\t\t\t\t\t\t\t\t<td class=\"text-xs-center read-rights\"><input class=\"read\" type=\"checkbox\" ng-model=\"grantedAuthorities.READ_REPO[createUniqueKey(repository)]\" ng-checked=\"hasReadPermission(repository)\" ng-disabled=\"readCheckDisabled(repository)\" ng-click=\"setGrantedAuthorities()\"></td>\\n\t\t\t\t\t\t\t\t\t<td class=\"text-xs-center write-rights\"><input class=\"write\" type=\"checkbox\" ng-model=\"grantedAuthorities.WRITE_REPO[createUniqueKey(repository)]\" ng-checked=\"hasWritePermission(repository)\" ng-disabled=\"writeCheckDisabled(repository)\" ng-click=\"setGrantedAuthorities()\"></td>\\n\t\t\t\t\t\t\t\t</tr>\\n\t\t\t\t\t\t\t</tbody>\\n\t\t\t\t\t\t</table>\\n\t\t\t\t\t</div>\\n\t\t\t\t</div>\\n </div>\\n\t\t</div>\\n\\n\t\t<div class=\"mb-3\">\\n\t\t\t<button id=\"wb-user-submit\" class=\"btn btn-primary\" type=\"submit\">{{saveButtonText}}</button>\\n\t\t\t<button id=\"wb-user-goBack\" class=\"btn btn-secondary\" type=\"button\" ng-click=\"goBack()\">{{\\'common.cancel.btn\\' | translate}}</button>\\n\t\t</div>\\n\t</form>\\n</div>\\n<div class=\"ot-loader ot-main-loader\" onto-loader size=\"50\" ng-show=\"loader\"></div>\\n\\n\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[176],{241:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<h1>\n\t{{title}}\n\t<span class="btn btn-link"\n\t uib-popover-template="\'js/angular/templates/titlePopoverTemplate.html\'"\n\t popover-trigger="mouseenter"\n\t popover-placement="bottom-right"\n\t popover-append-to-body="true"><span class="icon-info"></span></span>\n</h1>\n<div id="wb-users" ng-hide="loader">\n\t<div class="mb-1">\n\t\t<div class="pull-right">\n\t\t\t<span id="toggle-security" class="mr-1">\n\t\t\t\t<span class="security-switch-label">{{\'security.is\' | translate}} <span class="tag {{securityEnabled() ? \'tag-primary\' : \'tag-default\'}}">{{securityEnabled() ? \'common.on.btn\' : \'common.off.btn\' | translate}}</span></span>\n\t\t\t\t<span uib-tooltip="{{\'click.to\' | translate}} {{securityEnabled() ? \'disable\' : \'enable\' | translate}} {{\'security.label\' | translate}}" tooltip-placement="top" tooltip-trigger="mouseenter" ng-click="toggleSecurity()" class="switch">\n\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="securityEnabled()"/>\n\t\t\t\t\t<label for="toggle-security"></label>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t\t<span ng-show="securityEnabled()" id="toggle-freeaccess">\n\t\t\t\t<span>{{\'security.free.access.is\' | translate}} <span class="tag {{freeAccessEnabled() ? \'tag-primary\' : \'tag-default\'}}">{{freeAccessEnabled() ? \'common.on.btn\' : \'common.off.btn\' | translate}}</span></span>\n\t\t\t\t<span uib-tooltip="{{\'click.to\' | translate}} {{freeAccessEnabled() ? \'disable\' : \'enable\' | translate}} {{\'security.free.access.non.admin\' | translate}}" tooltip-placement="top" tooltip-trigger="mouseenter" ng-click="toggleFreeAccess()" class="switch">\n\t\t\t\t\t<input type="checkbox" class="switch" ng-checked="freeAccessEnabled()"/>\n\t\t\t\t\t<label for="toggle-freeaccess"></label>\n\t\t\t\t</span>\n\t\t\t\t<span ng-show="freeAccessEnabled()">\n\t\t\t\t\t{{\'security.free.access.settings\' | translate}}\n\t\t\t\t\t<a style="padding-left: 0px;" class="btn btn-link" href="#"><em class="icon-settings" uib-tooltip="{{\'security.free.access.config.title\' | translate}}" ng-click="editFreeAccess()"></em></a>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<a id="wb-users-userCreateLink" ng-show="!hasExternalAuth()" class="btn btn-primary" href="user/create"><span class="icon-plus"></span> {{\'view.create.user.title\' | translate}}</a>\n\t</div>\n\n\t<div ng-show="hasExternalAuth()">\n\t\t<div>&nbsp;</div>\n\t\t<div class="alert alert-info no-icon mt-1">\n\t\t\t<p>{{\'security.using.external.auth.db\' | translate}} {{getAuthImplementation()}}.</p>\n\t\t\t<p>{{\'security.user.settings.modification\' | translate}}</p>\n\t\t</div>\n\t</div>\n\n\t<table id="wb-users-userInUsers" class="table table-striped" aria-describedby="Users table">\n\t\t<thead>\n\t\t\t<tr>\n\t\t\t\t<th id="usernameColumn">{{\'security.table.username\' | translate}}</th>\n\t\t\t\t<th id="roleColumn">{{\'security.table.role\' | translate}}</th>\n\t\t\t\t<th id="repoRightsColumn">{{\'security.repo.rights\' | translate}}</th>\n\t\t\t\t<th id="creationDateColumn">{{\'security.table.date.created\' | translate}}</th>\n\t\t\t\t<th id="actionsColumn">{{\'security.table.actions\' | translate}}</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<tr ng-repeat="user in users | orderBy: \'username\'">\n\t\t\t\t<td class="username"><span>{{user.username}}</span></td>\n\t\t\t\t<td class="user-type">{{user.userTypeDescription}}</td>\n\t\t\t\t<td class="repository-rights">\n\t\t\t\t\t<div ng-show="user.userType === \'user\'" ng-repeat="(repo, rights) in user.repositories track by $index">\n\t\t\t\t\t\t<em class="icon-eye" ng-class="rights.read ? \'text-tertiary\' : \'text-muted\'" uib-tooltip="{{rights.read ? \'security.has.read.access\' : \'security.no.read.access\' | translate}}"></em>\n\t\t\t\t\t\t<em class="icon-edit" ng-class="rights.write ? \'text-tertiary\' : \'text-muted\'" uib-tooltip="{{rights.read ? \'security.has.write.access\' : \'security.no.write.access\' | translate}}"></em>\n\t\t\t\t\t\t{{repo}}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div ng-show="user.userType !== \'user\'">{{\'security.unrestricted\' | translate}}</div>\n\t\t\t\t</td>\n\t\t\t\t<td class="date-created"><span>{{user.dateCreated | date: \'yyyy-MM-dd HH:mm:ss\'}}</span></td>\n\t\t\t\t<td class="actions-bar">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<a class="btn btn-link edit-user-btn" href="user/{{encodeURIComponent(user.username)}}">\n <em class="icon-edit" uib-tooltip="{{\'security.edit.user.tooltip\' | translate}}"></em>\n </a>\n\t\t\t\t\t\t<a class="btn btn-link secondary delete-user-btn" ng-if="user.username != \'admin\'" ng-show="!hasExternalAuth()" href ng-click="removeUser(user.username)">\n <em class="icon-trash" uib-tooltip="{{\'security.delete.user.tooltip\' | translate}}"></em>\n </a>\n\t\t\t\t\t</span>\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</tbody>\n\t</table>\n</div>\n<div class="ot-loader ot-main-loader" onto-loader size="50" ng-show="loader"></div>\n\n';return __p}}}]);
2
+ //# sourceMappingURL=176.96a2ffd87018134c7b29.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/security/templates/users.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,06JAGP,OAAOA","file":"176.96a2ffd87018134c7b29.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<h1>\\n\t{{title}}\\n\t<span class=\"btn btn-link\"\\n\t uib-popover-template=\"\\'js/angular/templates/titlePopoverTemplate.html\\'\"\\n\t popover-trigger=\"mouseenter\"\\n\t popover-placement=\"bottom-right\"\\n\t popover-append-to-body=\"true\"><span class=\"icon-info\"></span></span>\\n</h1>\\n<div id=\"wb-users\" ng-hide=\"loader\">\\n\t<div class=\"mb-1\">\\n\t\t<div class=\"pull-right\">\\n\t\t\t<span id=\"toggle-security\" class=\"mr-1\">\\n\t\t\t\t<span class=\"security-switch-label\">{{\\'security.is\\' | translate}} <span class=\"tag {{securityEnabled() ? \\'tag-primary\\' : \\'tag-default\\'}}\">{{securityEnabled() ? \\'common.on.btn\\' : \\'common.off.btn\\' | translate}}</span></span>\\n\t\t\t\t<span uib-tooltip=\"{{\\'click.to\\' | translate}} {{securityEnabled() ? \\'disable\\' : \\'enable\\' | translate}} {{\\'security.label\\' | translate}}\" tooltip-placement=\"top\" tooltip-trigger=\"mouseenter\" ng-click=\"toggleSecurity()\" class=\"switch\">\\n\t\t\t\t\t<input type=\"checkbox\" class=\"switch\" ng-checked=\"securityEnabled()\"/>\\n\t\t\t\t\t<label for=\"toggle-security\"></label>\\n\t\t\t\t</span>\\n\t\t\t</span>\\n\t\t\t<span ng-show=\"securityEnabled()\" id=\"toggle-freeaccess\">\\n\t\t\t\t<span>{{\\'security.free.access.is\\' | translate}} <span class=\"tag {{freeAccessEnabled() ? \\'tag-primary\\' : \\'tag-default\\'}}\">{{freeAccessEnabled() ? \\'common.on.btn\\' : \\'common.off.btn\\' | translate}}</span></span>\\n\t\t\t\t<span uib-tooltip=\"{{\\'click.to\\' | translate}} {{freeAccessEnabled() ? \\'disable\\' : \\'enable\\' | translate}} {{\\'security.free.access.non.admin\\' | translate}}\" tooltip-placement=\"top\" tooltip-trigger=\"mouseenter\" ng-click=\"toggleFreeAccess()\" class=\"switch\">\\n\t\t\t\t\t<input type=\"checkbox\" class=\"switch\" ng-checked=\"freeAccessEnabled()\"/>\\n\t\t\t\t\t<label for=\"toggle-freeaccess\"></label>\\n\t\t\t\t</span>\\n\t\t\t\t<span ng-show=\"freeAccessEnabled()\">\\n\t\t\t\t\t{{\\'security.free.access.settings\\' | translate}}\\n\t\t\t\t\t<a style=\"padding-left: 0px;\" class=\"btn btn-link\" href=\"#\"><em class=\"icon-settings\" uib-tooltip=\"{{\\'security.free.access.config.title\\' | translate}}\" ng-click=\"editFreeAccess()\"></em></a>\\n\t\t\t\t</span>\\n\t\t\t</span>\\n\t\t</div>\\n\\n\t\t<a id=\"wb-users-userCreateLink\" ng-show=\"!hasExternalAuth()\" class=\"btn btn-primary\" href=\"user/create\"><span class=\"icon-plus\"></span> {{\\'view.create.user.title\\' | translate}}</a>\\n\t</div>\\n\\n\t<div ng-show=\"hasExternalAuth()\">\\n\t\t<div>&nbsp;</div>\\n\t\t<div class=\"alert alert-info no-icon mt-1\">\\n\t\t\t<p>{{\\'security.using.external.auth.db\\' | translate}} {{getAuthImplementation()}}.</p>\\n\t\t\t<p>{{\\'security.user.settings.modification\\' | translate}}</p>\\n\t\t</div>\\n\t</div>\\n\\n\t<table id=\"wb-users-userInUsers\" class=\"table table-striped\" aria-describedby=\"Users table\">\\n\t\t<thead>\\n\t\t\t<tr>\\n\t\t\t\t<th id=\"usernameColumn\">{{\\'security.table.username\\' | translate}}</th>\\n\t\t\t\t<th id=\"roleColumn\">{{\\'security.table.role\\' | translate}}</th>\\n\t\t\t\t<th id=\"repoRightsColumn\">{{\\'security.repo.rights\\' | translate}}</th>\\n\t\t\t\t<th id=\"creationDateColumn\">{{\\'security.table.date.created\\' | translate}}</th>\\n\t\t\t\t<th id=\"actionsColumn\">{{\\'security.table.actions\\' | translate}}</th>\\n\t\t\t</tr>\\n\t\t</thead>\\n\t\t<tbody>\\n\t\t\t<tr ng-repeat=\"user in users | orderBy: \\'username\\'\">\\n\t\t\t\t<td class=\"username\"><span>{{user.username}}</span></td>\\n\t\t\t\t<td class=\"user-type\">{{user.userTypeDescription}}</td>\\n\t\t\t\t<td class=\"repository-rights\">\\n\t\t\t\t\t<div ng-show=\"user.userType === \\'user\\'\" ng-repeat=\"(repo, rights) in user.repositories track by $index\">\\n\t\t\t\t\t\t<em class=\"icon-eye\" ng-class=\"rights.read ? \\'text-tertiary\\' : \\'text-muted\\'\" uib-tooltip=\"{{rights.read ? \\'security.has.read.access\\' : \\'security.no.read.access\\' | translate}}\"></em>\\n\t\t\t\t\t\t<em class=\"icon-edit\" ng-class=\"rights.write ? \\'text-tertiary\\' : \\'text-muted\\'\" uib-tooltip=\"{{rights.read ? \\'security.has.write.access\\' : \\'security.no.write.access\\' | translate}}\"></em>\\n\t\t\t\t\t\t{{repo}}\\n\t\t\t\t\t</div>\\n\t\t\t\t\t<div ng-show=\"user.userType !== \\'user\\'\">{{\\'security.unrestricted\\' | translate}}</div>\\n\t\t\t\t</td>\\n\t\t\t\t<td class=\"date-created\"><span>{{user.dateCreated | date: \\'yyyy-MM-dd HH:mm:ss\\'}}</span></td>\\n\t\t\t\t<td class=\"actions-bar\">\\n\t\t\t\t\t<span>\\n\t\t\t\t\t\t<a class=\"btn btn-link edit-user-btn\" href=\"user/{{encodeURIComponent(user.username)}}\">\\n <em class=\"icon-edit\" uib-tooltip=\"{{\\'security.edit.user.tooltip\\' | translate}}\"></em>\\n </a>\\n\t\t\t\t\t\t<a class=\"btn btn-link secondary delete-user-btn\" ng-if=\"user.username != \\'admin\\'\" ng-show=\"!hasExternalAuth()\" href ng-click=\"removeUser(user.username)\">\\n <em class=\"icon-trash\" uib-tooltip=\"{{\\'security.delete.user.tooltip\\' | translate}}\"></em>\\n </a>\\n\t\t\t\t\t</span>\\n\t\t\t\t</td>\\n\t\t\t</tr>\\n\t\t</tbody>\\n\t</table>\\n</div>\\n<div class=\"ot-loader ot-main-loader\" onto-loader size=\"50\" ng-show=\"loader\"></div>\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}