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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/rest/cluster.rest.service.js","webpack:///./src/js/angular/clustermanagement/controllers.js"],"names":["angular","module","factory","ClusterRestService","$inject","$http","getClusterConfig","get","createCluster","groupConfiguration","post","updateCluster","nodes","patch","deleteCluster","forceDelete","data","$","param","force","delete","addNodesToCluster","nodesArray","removeNodesFromCluster","headers","getClusterStatus","getNodeStatus","controller","ClusterManagementCtrl","CreateClusterCtrl","DeleteClusterCtrl","EditClusterCtrl","AddLocationFromClusterCtrl","AddNodesDialogCtrl","RemoveNodesDialogCtrl","RemoteLocationsService","NodeState","LEADER","FOLLOWER","CANDIDATE","OUT_OF_SYNC","NO_CONNECTION","READ_ONLY","RESTRICTED","NO_CLUSTER","DELETED","LinkState","IN_SYNC","SYNCING","$scope","$q","toastr","$repositories","$modal","$sce","$window","$interval","ModalService","$timeout","$location","$translate","$rootScope","updateRequest","then","clusterConfiguration","getClusterConfiguration","currentNode","leaderChanged","getCurrentNodeStatus","finally","childContext","redraw","getLocationsWithRpcAddresses","locations","localNode","find","location","isLocal","endpoint","rpcAddress","address","clusterModel","onAddRemoveSuccess","message","success","handleAddRemoveErrors","status","title","failMessage","Array","isArray","reduce","acc","error","Object","keys","key","allowHtml","loader","isLeader","currentLeader","shouldShowClusterSettingsPanel","onopen","onclose","noop","toggleSidePanel","toggleLegend","setLoader","cancel","loaderTimeout","loaderMessage","selectNode","node","selectedNode","$apply","getLoaderMessage","instant","response","catch","slice","leader","nodeState","newLeader","links","syncStatus","forEach","push","id","source","target","hasCluster","showCreateClusterDialog","open","templateUrl","size","resolve","result","showDeleteDialog","values","every","successMessage","failedNodesList","$broadcast","showEditConfigurationDialog","showAddNodeToClusterDialog","nodesRpcAddress","map","failMessageTitle","showRemoveNodesFromClusterDialog","timer","$on","w","element","resize","bind","mousedown","event","nodeTooltipElement","document","getElementById","contains","unbind","getAdvancedOptionsClass","optionsModule","isAriaExpanded","getAttribute","$modalInstance","pageTitle","autofocusId","errors","electionMinTimeout","electionRangeTimeout","heartbeatInterval","messageSizeKB","verificationTimeout","filter","selectedLocations","close","preconditionErrors","splice","handleErrors","isClusterConfigurationValid","isFormValid","clusterConfigurationForm","$invalid","nodesListValid","length","addNodeToList","loc","removeNodeFromList","index","addLocation","newLocation","ok","warning","dismiss","LocationsRestService","windowClass","dataAddLocation","uri","locationData","msg","getError","locationAdded","addLocationHttp","getLocations","local","errorMsg","locationsArray","rpcAddressFetchers","getLocationRpcAddress","isAvailable","Promise","allSettled","getRemoteLocationsRpcAddresses","productInfo","docBase","getDocBase","isValidLocation","indexOf","copy","productShortVersion","clusterNodes","includes","isNew","shouldRemove","nodesToRemoveCount","leftNodesLessThanTwo","toggleNode","nodesToRemove"],"mappings":"8EAAAA,QACKC,OAAO,yCAA0C,IACjDC,QAAQ,qBAAsBC,GAEnCA,EAAmBC,QAAU,CAAC,SAI9B,SAASD,EAAmBE,GACxB,MAAO,CACHC,iBAUJ,WACI,OAAOD,EAAME,IAAI,wBAVjBC,cAaJ,SAAuBC,GACnB,OAAOJ,EAAMK,KAAK,sBAAoCD,IAbtDE,cAgBJ,SAAuBF,GACfA,EAAmBG,cACZH,EAAmBG,MAE9B,OAAOP,EAAMQ,MAAM,sBAAoCJ,IAnBvDK,cAsBJ,SAAuBC,GACnB,MAAMC,EAAOC,EAAEC,MAAM,CACjBC,MAAOJ,IAEX,OAAOV,EAAMe,OAAO,uBAAoCJ,IAzBxDK,kBA4BJ,SAA2BC,GACvB,OAAOjB,EAAMK,KAAK,2BAAyC,CAACE,MAAOU,KA5BnEC,uBA+BJ,SAAgCD,GAC5B,OAAOjB,EAAMe,OAAO,2BAAyC,CAACJ,KAAM,CAACJ,MAAOU,GAAaE,QAAS,CAAC,eAAgB,uBA/BnHC,iBAkCJ,WACI,OAAOpB,EAAME,IAAI,8BAlCjBmB,cAqCJ,WACI,OAAOrB,EAAME,IAAI,gC,gCCvDzB,sGAYAP,QACKC,OAAO,kDAVI,CACZ,eACA,+CACA,8CACA,yCACA,SACA,wBAKC0B,WAAW,wBAAyBC,GACpCD,WAAW,oBAAqBE,GAChCF,WAAW,oBAAqBG,GAChCH,WAAW,kBAAmBI,GAC9BJ,WAAW,6BAA8BK,GACzCL,WAAW,qBAAsBM,GACjCN,WAAW,wBAAyBO,GACpChC,QAAQ,yBAA0BiC,GAEhC,MAAMC,EAAY,CACrBC,OAAQ,SACRC,SAAU,WACVC,UAAW,YACXC,YAAa,cACbC,cAAe,gBACfC,UAAW,YACXC,WAAY,aACZC,WAAY,aACZC,QAAS,WAEAC,EAAY,CACrBC,QAAS,UACTP,YAAa,cACbQ,QAAS,UACTP,cAAe,iBAMnB,SAASb,EAAsBqB,EAAQ5C,EAAO6C,EAAIC,EAAQC,EAAeC,EAAQC,EAC7EC,EAASC,EAAWC,EAAcC,EAAUvD,EAAoBwD,EAAWC,EAAYzB,EAAwB0B,GAgE/G,IAAIC,EACJ,SAASnD,EAAcQ,GACf2C,IAIJA,EAAgBb,EAAOxB,mBAClBsC,KAAK,KACF,GAAI5C,IAAU8B,EAAOe,qBACjB,OAAOf,EAAOgB,4BAGrBF,KAAK,KACF,IAAKd,EAAOiB,aAAejB,EAAOkB,cAC9B,OAAOlB,EAAOmB,yBAGrBC,QAAQ,KACLP,EAAgB,KAChBb,EAAOqB,aAAaC,YA+JhC,SAASC,IACL,OAAOrC,EAAuBqC,+BACzBT,KAAMU,IACH,MAAMC,EAAYD,EAAUE,KAAMC,GAAaA,EAASC,SACpDH,IACAA,EAAUI,SAAW7B,EAAOiB,YAAYY,SACxCJ,EAAUK,WAAa9B,EAAOiB,YAAYc,SAE9C/B,EAAOgC,aAAaR,UAAYA,IA6E5C,SAASS,EAAmBC,GACxBhC,EAAOiC,QAAQD,GACflC,EAAOgB,0BAGX,SAASoB,EAAsBrE,EAAMsE,EAAQC,GACzC,IAAIC,EAAcxE,EAAKmE,SAAWnE,EAEnB,MAAXsE,GAAkBG,MAAMC,QAAQ1E,GAChCwE,EAAcxE,EAAK2E,OAAO,CAACC,EAAKC,IAAUD,EAAO,QAAQC,UAAe,IACtD,MAAXP,IACPE,EAAcM,OAAOC,KAAK/E,GACrB2E,OAAO,CAACR,EAASa,IAAQb,EAAW,QAAQa,OAAShF,EAAKgF,WAAc,KAEjF7C,EAAO0C,MAAML,EAAaD,EAAO,CAACU,WAAW,IApVjDhD,EAAOiD,QAAS,EAChBjD,EAAOkD,UAAW,EAClBlD,EAAOiB,YAAc,KACrBjB,EAAOgC,aAAe,GACtBhC,EAAOb,UAAYA,EACnBa,EAAOkB,eAAgB,EACvBlB,EAAOmD,cAAgB,KAGvBnD,EAAOqB,aAAe,GAEtBrB,EAAOoD,gCAAiC,EACxCpD,EAAOqD,OAASrD,EAAOsD,QAAU,IAAMvG,QAAQwG,OAE/CvD,EAAOwD,gBAAkB,KACrBxD,EAAOoD,gCAAkCpD,EAAOoD,gCAGpDpD,EAAOyD,aAAe,KACdzD,EAAOqB,aAAaoC,cACpBzD,EAAOqB,aAAaoC,gBAK5BzD,EAAO0D,UAAY,SAAUT,EAAQf,GACjCzB,EAASkD,OAAO3D,EAAO4D,eACnBX,GACAjD,EAAO6D,cAAgB3B,EACvBlC,EAAO4D,cAAgBnD,GAAS,WAC5BT,EAAOiD,OAASA,IACjB,KAEHjD,EAAOiD,QAAS,GAaxBjD,EAAOqB,aAAayC,WATpB,SAAoBC,GACZ/D,EAAOgE,eAAiBD,EACxB/D,EAAOgE,aAAeD,EAEtB/D,EAAOgE,aAAe,KAE1BhE,EAAOiE,UA2CXjE,EAAOkE,iBAAmB,WACtB,OAAOlE,EAAO6D,eAAiBlD,EAAWwD,QAAQ,mBAGtDnE,EAAOgB,wBAA0B,IACtB9D,EAAmBG,mBACrByD,KAAMsD,IAEH,GADApE,EAAOe,qBAAuBqD,EAASrG,MAClCiC,EAAOiB,YACR,OAAOjB,EAAOmB,yBAGrBkD,MAAM,KACHrE,EAAOe,qBAAuB,OAY1Cf,EAAOxB,iBAAmB,WACtB,OAAOtB,EAAmBsB,mBACrBsC,MAAK,SAAUsD,GACZ,MAAMzG,EAAQyG,EAASrG,KAAKuG,QACtBC,EAAS5G,EAAM+D,KAAMqC,GAASA,EAAKS,YAAcrF,EAAUC,QAZ7E,IAAyB+D,EAAesB,EAAftB,EAcOnD,EAAOmD,eAdCsB,EAccF,IAT1CpB,GAAiBA,EAAcpB,UAAY0C,EAAU1C,UAUjD/B,EAAOmD,cAAgBoB,EACvBvE,EAAOkB,eAAgB,GAE3BlB,EAAOiB,YAActD,EAAM+D,KAAMqC,GAASA,EAAKhC,UAAY/B,EAAOiB,YAAYc,SAE9E,MAAM2C,EAAQ,GACVH,GACA1B,OAAOC,KAAKyB,EAAOI,YAAYC,QAASb,IACpC,MAAM1B,EAASkC,EAAOI,WAAWZ,GAC7B1B,IAAWxC,EAAUL,eACrBkF,EAAMG,KAAK,CACPC,GAAI,GAAGP,EAAOxC,WAAWgC,IACzBgB,OAAQR,EAAOxC,QACfiD,OAAQjB,EACR1B,aAKhBrC,EAAOgC,aAAaiD,YAAa,EACjCjF,EAAOgC,aAAarE,MAAQA,EAC5BqC,EAAOgC,aAAa0C,MAAQA,KAE/BL,OAAM,SAAUzB,GACQ,MAAjBA,EAAMP,SACNrC,EAAOgC,aAAaiD,YAAa,EACjCjF,EAAOgC,aAAarE,MAAQ,GAC5BqC,EAAOgC,aAAa0C,MAAQ,GAC5B1E,EAAOe,qBAAuB,UAK9Cf,EAAOkF,wBAA0B,WACP9E,EAAO+E,KAAK,CAC9BC,YAAa,0EACb1G,WAAY,oBACZ2G,KAAM,KACNC,QAAS,CACLvH,KAAM,WACF,MAAO,CACHiE,aAAchC,EAAOgC,kBAMvBuD,OAAOnE,SAAQ,WACzBG,IACA7D,GAAc,OAItBsC,EAAOwF,iBAAmB,KACApF,EAAO+E,KAAK,CAC9BC,YAAa,0EACb1G,WAAY,sBAGF6G,OAAOzE,MAAK,SAAUhD,GAChC,MAAM+F,EAAgBlD,EAAWwD,QAAQ,2DACzCnE,EAAO0D,WAAU,EAAMG,GACvB3G,EAAmBW,cAAcC,GAC5BgD,KAAMsD,IAEH,GADwBvB,OAAO4C,OAAOrB,EAASrG,MAAM2H,MAAOlB,GAAcA,IAAcrF,EAAUS,SAC7E,CACjB,MAAM+F,EAAiBhF,EAAWwD,QAAQ,yEAC1CjE,EAAOiC,QAAQwD,OACZ,CACH,MAAMA,EAAiBhF,EAAWwD,QAC9B,iFACEyB,EAAkB/C,OAAOC,KAAKsB,EAASrG,MACxC2E,OAAO,CAACR,EAASa,IAAQb,EAAW,QAAQa,OAASqB,EAASrG,KAAKgF,WAAc,IACtF7C,EAAOiC,QAAQyD,EAAiBD,EAAgB,CAAC3C,WAAW,IAEhEhD,EAAOgB,4BAEVqD,MAAOzB,IACJ,MAAML,EAAc5B,EAAWwD,QAAQ,sEACjCyB,EAAkB/C,OAAOC,KAAKF,EAAM7E,MACrC2E,OAAO,CAACR,EAASa,IAAQb,EAAW,QAAQa,OAASH,EAAM7E,KAAKgF,WAAc,IACnF7C,EAAO0C,MAAMgD,EAAiBrD,EAAa,CAACS,WAAW,MAE1D5B,QAAQ,KACLpB,EAAO0D,WAAU,GACjBhG,GAAc,GACdkD,EAAWiF,WAAW,yBAKtC7F,EAAO8F,4BAA8B,KACX1F,EAAO+E,KAAK,CAC9BC,YAAa,wEACb1G,WAAY,kBACZ2G,KAAM,KACNC,QAAS,CACLvH,KAAM,WACF,MAAO,CACHgD,qBAAsBf,EAAOe,0BAM/BwE,OAAOnE,SAAQ,WACzB1D,GAAc,OAItBsC,EAAOmB,qBAAuB,IACnBjE,EAAmBuB,gBACrBqC,KAAMsD,IACHpE,EAAOkB,eAAgB,EACvBlB,EAAOiB,YAAcmD,EAASrG,OAEjCsG,MAAOzB,IACJ5C,EAAOiB,YAAc2B,EAAM7E,KAC3BiC,EAAOgC,aAAaiD,YAAa,IAEpCnE,KAAK,IAAMS,KAepBvB,EAAO+F,2BAA6B,KACV3F,EAAO+E,KAAK,CAC9BC,YAAa,qEACb1G,WAAY,qBACZ2G,KAAM,KACNC,QAAS,CACLvH,KAAM,WACF,MAAO,CACHiE,aAAchC,EAAOgC,aACrBjB,qBAAsBf,EAAOe,0BAM/BwE,OAAOzE,MAAK,SAAUnD,GAChC,MAAMkG,EAAgBlD,EAAWwD,QAAQ,oDACzCnE,EAAO0D,WAAU,EAAMG,GAEvB,MAAMmC,EAAkBrI,EAAMsI,IAAKlC,GAASA,EAAKjC,YACjD5E,EAAmBkB,kBAAkB4H,GAChClF,KAAK,KAGFmB,EAFuBtB,EAAWwD,QAC9B,sEAGPE,MAAOzB,IACJ,MAAMsD,EAAmBvF,EAAWwD,QAAQ,gEAC5C/B,EAAsBQ,EAAM7E,KAAM6E,EAAMP,OAAQ6D,KAEnD9E,QAAQ,KACLpB,EAAO0D,WAAU,GACjBhG,GAAc,QAGrB0D,QAAQ,IAAMG,MAGvBvB,EAAOmG,iCAAmC,KAChB/F,EAAO+E,KAAK,CAC9BC,YAAa,wEACb1G,WAAY,wBACZ2G,KAAM,KACNC,QAAS,CACLvH,KAAM,WACF,MAAO,CACHiE,aAAchC,EAAOgC,kBAMvBuD,OAAOzE,MAAK,SAAUnD,GAChC,MAAMkG,EAAgBlD,EAAWwD,QAAQ,uDACzCnE,EAAO0D,WAAU,EAAMG,GAEvB,MAAMmC,EAAkBrI,EAAMsI,IAAKlC,GAASA,EAAKhC,SACjD7E,EAAmBoB,uBAAuB0H,GACrClF,KAAK,KAEFmB,EADuBtB,EAAWwD,QAAQ,yEAG7CE,MAAOzB,IACJ,MAAMsD,EAAmBvF,EAAWwD,QAAQ,mEAC5C/B,EAAsBQ,EAAM7E,KAAM6E,EAAMP,OAAQ6D,KAEnD9E,QAAQ,KACLpB,EAAO0D,WAAU,GACjBhG,GAAc,UAhR1BsC,EAAOiD,QAAS,EAETjD,EAAOmB,uBACTL,KAAK,IACKd,EAAOgB,2BAEjBF,KAAK,IACKd,EAAOxB,oBAEjB4C,QAAQ,KACLpB,EAAO0D,WAAU,MA6RxBtC,QAAQ,KACL,MAAMgF,EAAQ7F,GAAU,WACpB7C,MACD,KAEHsC,EAAOqG,IAAI,YAAY,WACnB9F,EAAUoD,OAAOyC,QAK7B,MAAME,EAAIvJ,QAAQwJ,QAAQjG,GACpBkG,EAAS,WACXxG,EAAOqB,aAAamF,UAExBF,EAAEG,KAAK,SAAUD,GAEjB,MAAME,EAAY,SAAUC,GACxB,MAAM3B,EAAS2B,EAAM3B,OACf4B,EAAqBC,SAASC,eAAe,eAC/C9G,EAAOgE,cAAgB4C,IAAuB5B,IAAW4B,EAAmBG,SAAS/B,IACrFhF,EAAOqB,aAAayC,WAAW,OAGvCwC,EAAEG,KAAK,YAAaC,GACpB1G,EAAOqG,IAAI,YAAY,WACnBC,EAAEU,OAAO,SAAUR,GACnBF,EAAEU,OAAO,YAAaN,MAxX9B/H,EAAsBxB,QAAU,CAAC,SAAU,QAAS,KAAM,SAAU,gBAAiB,SAAU,OAC3F,UAAW,YAAa,eAAgB,WAAY,qBAAsB,YAAa,aAAc,yBAA0B,cA2XnI,MAAM8J,EAA0B,WAC5B,MAAMC,EAAgBL,SAASC,eAAe,mBAE9C,GAAII,EAAe,CACf,MAAMC,EAAiBD,EAAcE,aAAa,iBAClD,GAAID,GAAqC,SAAnBA,EAClB,MAAO,mBAGf,MAAO,qBAMX,SAASvI,EAAkBoB,EAAQqH,EAAgB5G,EAAUvD,EAAoBgD,EAAQS,EAAY5C,EAAMqC,EAAQlB,EAAwB0B,GACvIZ,EAAOsH,UAAY3G,EAAWwD,QAAQ,qDACtCnE,EAAOuH,YAAc,YACrBvH,EAAOwH,OAAS,GAChBxH,EAAOe,qBAAuB,CAC1B0G,mBAAoB,IACpBC,qBAAsB,IACtBC,kBAAmB,IACnBC,cAAe,GACfC,oBAAqB,KACrBlK,MAAO,IAGXqC,EAAOwB,UAAYzD,EAAKiE,aAAaR,UAAUsG,OAAQnG,IAAcA,EAASC,SAC9E5B,EAAO+H,kBAAoBhK,EAAKiE,aAAaR,UAAUsG,OAAQnG,GAAaA,EAASC,SAErF5B,EAAOiD,QAAS,EAEhBjD,EAAOiH,wBAA0BA,EAEjCjH,EAAOzC,cAAgB,WAGnB,OAFAyC,EAAO0D,WAAU,EAAM/C,EAAWwD,QAAQ,4DAC1CnE,EAAOe,qBAAqBpD,MAAQqC,EAAO+H,kBAAkB9B,IAAKlC,GAASA,EAAKjC,YACzE5E,EAAmBK,cAAcyC,EAAOe,sBAC1CD,KAAK,KACFZ,EAAOiC,QAAQxB,EAAWwD,QAAQ,iEAClCkD,EAAeW,UAElB3D,OAAM,SAAUzB,IASzB,SAAsB7E,EAAMsE,UACjBrC,EAAOiI,mBACd/H,EAAO0C,MAAMjC,EAAWwD,QAAQ,gEAChCnE,EAAOwH,OAAOU,OAAO,GACN,MAAX7F,EACArC,EAAOiI,mBAAqBpF,OAAOC,KAAK/E,GAAMkI,IAAKlD,GAAQ,GAAGA,OAAShF,EAAKgF,MAC1D,MAAXV,EACPrC,EAAOwH,OAAO3C,QAAQ9G,GACJ,MAAXsE,GACPrC,EAAOwH,OAAO3C,KAAK9G,GAjBfoK,CAAavF,EAAM7E,KAAM6E,EAAMP,WAElCjB,QAAQ,KACLpB,EAAO0D,WAAU,GACjB9C,EAAWiF,WAAW,sBAiBlC7F,EAAOoI,4BAA8B,KACjC,MAAMC,GAAerI,EAAOsI,yBAAyBC,SAC/CC,EAAiBxI,EAAO+H,mBAAqB/H,EAAO+H,kBAAkBU,QAAU,EACtF,OAAOJ,GAAeG,GAG1BxI,EAAO0D,UAAY,SAAUT,EAAQf,GACjCzB,EAASkD,OAAO3D,EAAO4D,eACnBX,EACAjD,EAAO4D,cAAgBnD,GAAS,WAC5BT,EAAOiD,OAASA,EAChBjD,EAAO6D,cAAgB3B,IACxB,KAEHlC,EAAOiD,QAAS,GAIxBjD,EAAO0I,cAAgB,SAAU/G,GACxBA,EAASG,aAGd9B,EAAO+H,kBAAkBlD,KAAKlD,GAC9B3B,EAAOwB,UAAYxB,EAAOwB,UAAUsG,OAAQa,GAAQA,EAAI9G,WAAaF,EAASE,YAGlF7B,EAAO4I,mBAAqB,SAAUC,EAAO9E,GACrCA,EAAKnC,UAGT5B,EAAO+H,kBAAkBG,OAAOW,EAAO,GACvC7I,EAAOwB,UAAUqD,KAAKd,KAG1B/D,EAAO8I,YAAc,WACjB5J,EAAuB4J,cAClBhI,KAAMiI,IACCA,GACA/I,EAAOwB,UAAUqD,KAAKkE,MAKtC/I,EAAOgJ,GAAK,WACHhJ,EAAOoI,8BAIZpI,EAAOzC,gBAHH2C,EAAO+I,QAAQtI,EAAWwD,QAAQ,gEAM1CnE,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WAM/B,SAASrK,EAAkBmB,EAAQqH,GAC/BrH,EAAOlC,aAAc,EAErBkC,EAAOgJ,GAAK,WACR3B,EAAeW,MAAMhI,EAAOlC,cAGhCkC,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WAM/B,SAAShK,EAAuB9B,EAAO8C,EAAQE,EAAQ+I,EAAsBxI,GACzE,MAAO,CACHmI,YAmEJ,WACI,IAAIC,EACJ,OAAO3I,EAAO+E,KAAK,CACfC,YAAa,+CACbgE,YAAa,oBACb1K,WAAY,+BACb6G,OACEzE,KAAMuI,IACHN,EAAcM,EACdN,EAAYnH,SAAU,EACtBmH,EAAYlH,SAAWkH,EAAYO,IAK/C,SAAyBC,GACrB,IAAIR,EACJ,OAAOI,EAAqBL,YAAYS,GACnClF,MAAOzB,IACJ,MAAM4G,EAAMC,SAAS7G,EAAM7E,KAAM6E,EAAMP,QAEvC,OADAnC,EAAO0C,MAAM4G,EAAK7I,EAAWwD,QAAQ,kBAC9B,IAEVrD,KAAM4I,KACCA,GACOnI,KAIdT,KAAMU,IACH,IAAkB,IAAdA,EAIJ,OADAuH,EAAcvH,EAAUE,KAAMC,GAAaA,EAASE,WAAa0H,EAAaD,KACvEP,IAvBAY,CAAgBZ,MA7E/BxH,6BAA8BA,GAGlC,SAASA,IACL,OAmCO4H,EAAqBS,eACvB9I,MAAK,SAAUsD,GACZ,OAAOA,EAASrG,KAAKkI,IAAK0C,IACf,CACH/G,QAAS+G,EAAIkB,MACbhI,SAAU8G,EAAIW,IACdxH,WAAY6G,EAAI7G,YAAc,GAC9Bc,MAAO+F,EAAImB,eAItBzF,OAAM,SAAUzB,GACb,MAAM4G,EAAMC,SAAS7G,EAAM7E,KAAM6E,EAAMP,QACvCnC,EAAO0C,MAAM4G,EAAK7I,EAAWwD,QAAQ,oBA/CxCrD,KAAMU,IACH,GAAIA,EACA,OAUhB,SAAwCuI,GACpC,MAAMC,EAAqBD,EAAejC,OAAQnG,IAAcA,EAASC,UAAYD,EAASiB,OAAOqD,IAAKtE,GA2C9G,SAA+BA,GAC3B,OAAOwH,EAAqBc,sBAAsBtI,EAASE,UA3ChDoI,CAAsBtI,GACxBb,KAAMsD,IACHzC,EAASG,WAAasC,EAASrG,KAC/B4D,EAASuI,aAAc,EAChBvI,IAEV0C,MAAOzB,IACJjB,EAASuI,aAAc,EACvBvI,EAASiB,MAAQ6G,SAAS7G,EAAM7E,KAAM6E,EAAMP,WAGxD,OAAO8H,QAAQC,WAAWJ,GAAoBlJ,KAAK,IAAMiJ,GAvBtCM,CAA+B7I,MAoG1D,SAASzC,EAA2BiB,EAAQqH,EAAgBnH,EAAQoK,EAAa3J,GAE7EX,EAAO+I,YAAc,CACjB,IAAO,GACP,SAAY,YACZ,SAAY,GACZ,SAAY,GACZ,QAAU,GAEd/I,EAAOuK,QAAUC,EAAWF,GAE5BtK,EAAOyK,gBAAkB,WACrB,OAAQzK,EAAO+I,YAAYO,IAAIb,OAAS,GACY,IAA5CzI,EAAO+I,YAAYO,IAAIoB,QAAQ,UAA+D,IAA7C1K,EAAO+I,YAAYO,IAAIoB,QAAQ,YACjF1K,EAAO+I,YAAYO,IAAIoB,QAAQ,mBAAqB,GAG/D1K,EAAOgJ,GAAK,WACHhJ,EAAO+I,YAIZ1B,EAAeW,MAAMhI,EAAO+I,aAHxB7I,EAAO0C,MAAMjC,EAAWwD,QAAQ,oCAMxCnE,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WAM/B,SAASpK,EAAgBkB,EAAQqH,EAAgB5G,EAAUvD,EAAoBgD,EAAQS,EAAY5C,GAC/FiC,EAAOsH,UAAY3G,EAAWwD,QAAQ,mDACtCnE,EAAOwH,OAAS,GAChBxH,EAAOe,qBAAuBhE,QAAQ4N,KAAK5M,EAAKgD,sBAChDf,EAAOiD,QAAS,EAEhBjD,EAAOtC,cAAgB,WAEnB,OADAsC,EAAO0D,WAAU,EAAM/C,EAAWwD,QAAQ,4DACnCjH,EAAmBQ,cAAcsC,EAAOe,sBAC1CD,KAAK,KACFZ,EAAOiC,QAAQxB,EAAWwD,QAAQ,iEAClCkD,EAAeW,UAElB3D,OAAM,SAAUD,IAMzB,SAAsBrG,EAAMsE,UACjBrC,EAAOiI,mBACd/H,EAAO0C,MAAMjC,EAAWwD,QAAQ,gEAChCnE,EAAOwH,OAAOU,OAAO,GAEN,MAAX7F,GAAkC,iBAATtE,EACzBiC,EAAOwH,OAAO3C,KAAK9G,GACD,MAAXsE,EACPrC,EAAOiI,mBAAqBpF,OAAOC,KAAK/E,GAAMkI,IAAKlD,GAAQ,GAAGA,OAAShF,EAAKgF,MAC1D,MAAXV,GACPrC,EAAOwH,OAAO3C,QAAQ9G,GAflBoK,CAAa/D,EAASrG,KAAMqG,EAAS/B,WAExCjB,QAAQ,IAAMpB,EAAO0D,WAAU,KAiBxC1D,EAAOoI,4BAA8B,KACzBpI,EAAOsI,yBAAyBC,SAG5CvI,EAAO0D,UAAY,SAAUT,EAAQf,GACjCzB,EAASkD,OAAO3D,EAAO4D,eACnBX,EACAjD,EAAO4D,cAAgBnD,GAAS,WAC5BT,EAAOiD,OAASA,EAChBjD,EAAO6D,cAAgB3B,IACxB,KAEHlC,EAAOiD,QAAS,GAIxBjD,EAAOgJ,GAAK,WACHhJ,EAAOoI,8BAIZpI,EAAOtC,gBAHHwC,EAAO+I,QAAQtI,EAAWwD,QAAQ,gEAM1CnE,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WArU/BtK,EAAkBzB,QAAU,CAAC,SAAU,iBAAkB,WAAY,qBAAsB,SAAU,aAAc,OAAQ,SACvH,yBAA0B,cA4G9B0B,EAAkB1B,QAAU,CAAC,SAAU,kBAcvC+B,EAAuB/B,QAAU,CAAC,QAAS,SAAU,SAAU,uBAAwB,cA8GvF4B,EAA2B5B,QAAU,CAAC,SAAU,iBAAkB,SAAU,cAAe,cAgC3F2B,EAAgB3B,QAAU,CAAC,SAAU,iBAAkB,WAAY,qBAAsB,SAAU,aAAc,QAgEjH,MAAMqN,EAAa,SAAUF,GACzB,MAAO,8CAA8CA,EAAYM,qBAKrE,SAAS5L,EAAmBgB,EAAQqH,EAAgBtJ,EAAMqC,EAAQlB,GAC9D,MAAM6B,EAAuBhE,QAAQ4N,KAAK5M,EAAKgD,sBACzCiB,EAAejF,QAAQ4N,KAAK5M,EAAKiE,cACvChC,EAAOrC,MAAQ,GAEfqC,EAAO6K,aAAe7I,EAAarE,MAAMsI,IAAKlC,IAAS,CAAEjC,WAAYiC,EAAKhC,QAASF,SAAUkC,EAAKlC,YAClG7B,EAAOwB,UAAYQ,EAAaR,UAAUsG,OAAQnG,IAAcZ,EAAqBpD,MAAMmN,SAASnJ,EAASG,aAC7G9B,EAAOwB,UAAUoD,QAASjD,GAAaA,EAASoJ,OAAQ,GAExD/K,EAAO0I,cAAgB,SAAU/G,GACxBA,EAASG,aAGd9B,EAAOrC,MAAMkH,KAAKlD,GAClB3B,EAAOwB,UAAYxB,EAAOwB,UAAUsG,OAAQa,GAAQA,EAAI9G,WAAaF,EAASE,YAGlF7B,EAAO4I,mBAAqB,SAAUC,EAAO9E,GACzC/D,EAAOrC,MAAMuK,OAAOW,EAAO,GAC3B7I,EAAOwB,UAAUqD,KAAKd,IAG1B/D,EAAO8I,YAAc,WACjB5J,EAAuB4J,cAClBhI,KAAMiI,IACCA,GACA/I,EAAOwB,UAAUqD,KAAKkE,MAKtC/I,EAAOgJ,GAAK,WACR3B,EAAeW,MAAMhI,EAAOrC,QAGhCqC,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WAM/B,SAASjK,EAAsBe,EAAQqH,EAAgBtJ,GACnD,MAAMiE,EAAejF,QAAQ4N,KAAK5M,EAAKiE,cAEvChC,EAAO6K,aAAe7I,EAAarE,MACnCqC,EAAO6K,aAAajG,QAASb,GAASA,EAAKiH,cAAe,GAC1DhL,EAAOiL,mBAAqB,EAC5BjL,EAAOkL,sBAAuB,EAE9BlL,EAAOmL,WAAa,SAAUtC,EAAO9E,GACjCA,EAAKiH,cAAgBjH,EAAKiH,aACtBjH,EAAKiH,aACLhL,EAAOiL,qBAEPjL,EAAOiL,qBAEXjL,EAAOkL,qBAAuBlL,EAAO6K,aAAapC,OAASzI,EAAOiL,mBAAqB,GAG3FjL,EAAOgJ,GAAK,WACR,MAAMoC,EAAgBpL,EAAO6K,aAAa/C,OAAQ/D,GAASA,EAAKiH,cAChE3D,EAAeW,MAAMoD,IAGzBpL,EAAO2D,OAAS,WACZ0D,EAAe6B,QAAQ,WApE/BlK,EAAmB7B,QAAU,CAAC,SAAU,iBAAkB,OAAQ,SAAU,0BA0C5E8B,EAAsB9B,QAAU,CAAC,SAAU,iBAAkB","file":"4.186c084105c931abbe1a.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.cluster.service', [])\n .factory('ClusterRestService', ClusterRestService);\n\nClusterRestService.$inject = ['$http'];\n\nconst CLUSTER_GROUP_ENDPOINT = 'rest/cluster';\n\nfunction ClusterRestService($http) {\n return {\n getClusterConfig,\n createCluster,\n updateCluster,\n deleteCluster,\n addNodesToCluster,\n removeNodesFromCluster,\n getClusterStatus,\n getNodeStatus\n };\n\n function getClusterConfig() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/config`);\n }\n\n function createCluster(groupConfiguration) {\n return $http.post(`${CLUSTER_GROUP_ENDPOINT}/config`, groupConfiguration);\n }\n\n function updateCluster(groupConfiguration) {\n if (groupConfiguration.nodes) {\n delete groupConfiguration.nodes;\n }\n return $http.patch(`${CLUSTER_GROUP_ENDPOINT}/config`, groupConfiguration);\n }\n\n function deleteCluster(forceDelete) {\n const data = $.param({\n force: forceDelete\n });\n return $http.delete(`${CLUSTER_GROUP_ENDPOINT}/config?${data}`);\n }\n\n function addNodesToCluster(nodesArray) {\n return $http.post(`${CLUSTER_GROUP_ENDPOINT}/config/node`, {nodes: nodesArray});\n }\n\n function removeNodesFromCluster(nodesArray) {\n return $http.delete(`${CLUSTER_GROUP_ENDPOINT}/config/node`, {data: {nodes: nodesArray}, headers: {'Content-Type': 'application/json'}});\n }\n\n function getClusterStatus() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/group/status`);\n }\n\n function getNodeStatus() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/node/status`);\n }\n}\n","import 'angular/core/services';\nimport 'angular/rest/cluster.rest.service';\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.repositories.service',\n 'graphdb.framework.rest.cluster.service',\n 'toastr',\n 'pageslide-directive'\n];\n\nangular\n .module('graphdb.framework.clustermanagement.controllers', modules)\n .controller('ClusterManagementCtrl', ClusterManagementCtrl)\n .controller('CreateClusterCtrl', CreateClusterCtrl)\n .controller('DeleteClusterCtrl', DeleteClusterCtrl)\n .controller('EditClusterCtrl', EditClusterCtrl)\n .controller('AddLocationFromClusterCtrl', AddLocationFromClusterCtrl)\n .controller('AddNodesDialogCtrl', AddNodesDialogCtrl)\n .controller('RemoveNodesDialogCtrl', RemoveNodesDialogCtrl)\n .factory('RemoteLocationsService', RemoteLocationsService);\n\nexport const NodeState = {\n LEADER: 'LEADER',\n FOLLOWER: 'FOLLOWER',\n CANDIDATE: 'CANDIDATE',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n NO_CONNECTION: 'NO_CONNECTION',\n READ_ONLY: 'READ_ONLY',\n RESTRICTED: 'RESTRICTED',\n NO_CLUSTER: 'NO_CLUSTER',\n DELETED: 'DELETED'\n};\nexport const LinkState = {\n IN_SYNC: 'IN_SYNC',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n SYNCING: 'SYNCING',\n NO_CONNECTION: 'NO_CONNECTION'\n};\n\nClusterManagementCtrl.$inject = ['$scope', '$http', '$q', 'toastr', '$repositories', '$modal', '$sce',\n '$window', '$interval', 'ModalService', '$timeout', 'ClusterRestService', '$location', '$translate', 'RemoteLocationsService', '$rootScope'];\n\nfunction ClusterManagementCtrl($scope, $http, $q, toastr, $repositories, $modal, $sce,\n $window, $interval, ModalService, $timeout, ClusterRestService, $location, $translate, RemoteLocationsService, $rootScope) {\n $scope.loader = true;\n $scope.isLeader = false;\n $scope.currentNode = null;\n $scope.clusterModel = {};\n $scope.NodeState = NodeState;\n $scope.leaderChanged = false;\n $scope.currentLeader = null;\n\n // Holds child context\n $scope.childContext = {};\n\n $scope.shouldShowClusterSettingsPanel = false;\n $scope.onopen = $scope.onclose = () => angular.noop();\n\n $scope.toggleSidePanel = () => {\n $scope.shouldShowClusterSettingsPanel = !$scope.shouldShowClusterSettingsPanel;\n };\n\n $scope.toggleLegend = () => {\n if ($scope.childContext.toggleLegend) {\n $scope.childContext.toggleLegend();\n }\n };\n\n // TODO: Similar function is declared multiple times in different components. Find out how to avoid it!\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderMessage = message;\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n }, 50);\n } else {\n $scope.loader = false;\n }\n };\n\n function selectNode(node) {\n if ($scope.selectedNode !== node) {\n $scope.selectedNode = node;\n } else {\n $scope.selectedNode = null;\n }\n $scope.$apply();\n }\n\n $scope.childContext.selectNode = selectNode;\n\n function initialize() {\n $scope.loader = true;\n\n return $scope.getCurrentNodeStatus()\n .then(() => {\n return $scope.getClusterConfiguration();\n })\n .then(() => {\n return $scope.getClusterStatus();\n })\n .finally(() => {\n $scope.setLoader(false);\n });\n }\n\n let updateRequest;\n function updateCluster(force) {\n if (updateRequest) {\n return;\n }\n\n updateRequest = $scope.getClusterStatus()\n .then(() => {\n if (force || !$scope.clusterConfiguration) {\n return $scope.getClusterConfiguration();\n }\n })\n .then(() => {\n if (!$scope.currentNode || $scope.leaderChanged) {\n return $scope.getCurrentNodeStatus();\n }\n })\n .finally(() => {\n updateRequest = null;\n $scope.childContext.redraw();\n });\n }\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.getClusterConfiguration = () => {\n return ClusterRestService.getClusterConfig()\n .then((response) => {\n $scope.clusterConfiguration = response.data;\n if (!$scope.currentNode) {\n return $scope.getCurrentNodeStatus();\n }\n })\n .catch(() => {\n $scope.clusterConfiguration = null;\n });\n };\n\n function isLeaderChanged(currentLeader, newLeader) {\n if (!newLeader) {\n // If election is in place and there is no leader yet, consider it as leader change\n return true;\n }\n return !currentLeader || currentLeader.address !== newLeader.address;\n }\n\n $scope.getClusterStatus = function () {\n return ClusterRestService.getClusterStatus()\n .then(function (response) {\n const nodes = response.data.slice();\n const leader = nodes.find((node) => node.nodeState === NodeState.LEADER);\n\n if (isLeaderChanged($scope.currentLeader, leader)) {\n $scope.currentLeader = leader;\n $scope.leaderChanged = true;\n }\n $scope.currentNode = nodes.find((node) => node.address === $scope.currentNode.address);\n\n const links = [];\n if (leader) {\n Object.keys(leader.syncStatus).forEach((node) => {\n const status = leader.syncStatus[node];\n if (status !== LinkState.NO_CONNECTION) {\n links.push({\n id: `${leader.address}-${node}`,\n source: leader.address,\n target: node,\n status\n });\n }\n });\n }\n $scope.clusterModel.hasCluster = true;\n $scope.clusterModel.nodes = nodes;\n $scope.clusterModel.links = links;\n })\n .catch(function (error) {\n if (error.status === 404) {\n $scope.clusterModel.hasCluster = false;\n $scope.clusterModel.nodes = [];\n $scope.clusterModel.links = [];\n $scope.clusterConfiguration = null;\n }\n });\n };\n\n $scope.showCreateClusterDialog = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-create-dialog.html',\n controller: 'CreateClusterCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel\n };\n }\n }\n });\n\n modalInstance.result.finally(function () {\n getLocationsWithRpcAddresses();\n updateCluster(true);\n });\n };\n\n $scope.showDeleteDialog = () => {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html',\n controller: 'DeleteClusterCtrl'\n });\n\n modalInstance.result.then(function (forceDelete) {\n const loaderMessage = $translate.instant('cluster_management.delete_cluster_dialog.loader_message');\n $scope.setLoader(true, loaderMessage);\n ClusterRestService.deleteCluster(forceDelete)\n .then((response) => {\n const allNodesDeleted = Object.values(response.data).every((nodeState) => nodeState === NodeState.DELETED);\n if (allNodesDeleted) {\n const successMessage = $translate.instant('cluster_management.delete_cluster_dialog.notifications.success_delete');\n toastr.success(successMessage);\n } else {\n const successMessage = $translate.instant(\n 'cluster_management.delete_cluster_dialog.notifications.success_delete_partial');\n const failedNodesList = Object.keys(response.data)\n .reduce((message, key) => message += `<div>${key} - ${response.data[key]}</div>`, '');\n toastr.success(failedNodesList, successMessage, {allowHtml: true});\n }\n $scope.getClusterConfiguration();\n })\n .catch((error) => {\n const failMessage = $translate.instant('cluster_management.delete_cluster_dialog.notifications.fail_delete');\n const failedNodesList = Object.keys(error.data)\n .reduce((message, key) => message += `<div>${key} - ${error.data[key]}</div>`, '');\n toastr.error(failedNodesList, failMessage, {allowHtml: true});\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n $rootScope.$broadcast('reloadLocations');\n });\n });\n };\n\n $scope.showEditConfigurationDialog = () => {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html',\n controller: 'EditClusterCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterConfiguration: $scope.clusterConfiguration\n };\n }\n }\n });\n\n modalInstance.result.finally(function () {\n updateCluster(true);\n });\n };\n\n $scope.getCurrentNodeStatus = () => {\n return ClusterRestService.getNodeStatus()\n .then((response) => {\n $scope.leaderChanged = false;\n $scope.currentNode = response.data;\n })\n .catch((error) => {\n $scope.currentNode = error.data;\n $scope.clusterModel.hasCluster = false;\n })\n .then(() => getLocationsWithRpcAddresses());\n };\n\n function getLocationsWithRpcAddresses() {\n return RemoteLocationsService.getLocationsWithRpcAddresses()\n .then((locations) => {\n const localNode = locations.find((location) => location.isLocal);\n if (localNode) {\n localNode.endpoint = $scope.currentNode.endpoint;\n localNode.rpcAddress = $scope.currentNode.address;\n }\n $scope.clusterModel.locations = locations;\n });\n }\n\n $scope.showAddNodeToClusterDialog = () => {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/add-nodes-dialog.html',\n controller: 'AddNodesDialogCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel,\n clusterConfiguration: $scope.clusterConfiguration\n };\n }\n }\n });\n\n modalInstance.result.then(function (nodes) {\n const loaderMessage = $translate.instant('cluster_management.cluster_page.add_nodes_loader');\n $scope.setLoader(true, loaderMessage);\n\n const nodesRpcAddress = nodes.map((node) => node.rpcAddress);\n ClusterRestService.addNodesToCluster(nodesRpcAddress)\n .then(() => {\n const successMessage = $translate.instant(\n 'cluster_management.cluster_page.notifications.add_nodes_success');\n onAddRemoveSuccess(successMessage);\n })\n .catch((error) => {\n const failMessageTitle = $translate.instant('cluster_management.cluster_page.notifications.add_nodes_fail');\n handleAddRemoveErrors(error.data, error.status, failMessageTitle);\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n });\n })\n .finally(() => getLocationsWithRpcAddresses());\n };\n\n $scope.showRemoveNodesFromClusterDialog = () => {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html',\n controller: 'RemoveNodesDialogCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel\n };\n }\n }\n });\n\n modalInstance.result.then(function (nodes) {\n const loaderMessage = $translate.instant('cluster_management.cluster_page.remove_nodes_loader');\n $scope.setLoader(true, loaderMessage);\n\n const nodesRpcAddress = nodes.map((node) => node.address);\n ClusterRestService.removeNodesFromCluster(nodesRpcAddress)\n .then(() => {\n const successMessage = $translate.instant('cluster_management.cluster_page.notifications.remove_nodes_success');\n onAddRemoveSuccess(successMessage);\n })\n .catch((error) => {\n const failMessageTitle = $translate.instant('cluster_management.cluster_page.notifications.remove_nodes_fail');\n handleAddRemoveErrors(error.data, error.status, failMessageTitle);\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n });\n });\n };\n\n function onAddRemoveSuccess(message) {\n toastr.success(message);\n $scope.getClusterConfiguration();\n }\n\n function handleAddRemoveErrors(data, status, title) {\n let failMessage = data.message || data;\n\n if (status === 400 && Array.isArray(data)) {\n failMessage = data.reduce((acc, error) => acc += `<div>${error}</div>`, '');\n } else if (status === 412) {\n failMessage = Object.keys(data)\n .reduce((message, key) => message += `<div>${key} - ${data[key]}</div>`, '');\n }\n toastr.error(failMessage, title, {allowHtml: true});\n }\n\n initialize()\n .finally(() => {\n const timer = $interval(function () {\n updateCluster();\n }, 1000);\n\n $scope.$on(\"$destroy\", function () {\n $interval.cancel(timer);\n });\n });\n\n // track window resizing and window mousedown\n const w = angular.element($window);\n const resize = function () {\n $scope.childContext.resize();\n };\n w.bind('resize', resize);\n\n const mousedown = function (event) {\n const target = event.target;\n const nodeTooltipElement = document.getElementById('nodeTooltip');\n if ($scope.selectedNode && nodeTooltipElement !== target && !nodeTooltipElement.contains(target)) {\n $scope.childContext.selectNode(null);\n }\n };\n w.bind('mousedown', mousedown);\n $scope.$on('$destroy', function () {\n w.unbind('resize', resize);\n w.unbind('mousedown', mousedown);\n });\n}\n\nconst getAdvancedOptionsClass = function () {\n const optionsModule = document.getElementById('advancedOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n};\n\nCreateClusterCtrl.$inject = ['$scope', '$modalInstance', '$timeout', 'ClusterRestService', 'toastr', '$translate', 'data', '$modal',\n 'RemoteLocationsService', '$rootScope'];\n\nfunction CreateClusterCtrl($scope, $modalInstance, $timeout, ClusterRestService, toastr, $translate, data, $modal, RemoteLocationsService, $rootScope) {\n $scope.pageTitle = $translate.instant('cluster_management.cluster_page.create_page_title');\n $scope.autofocusId = 'autofocus';\n $scope.errors = [];\n $scope.clusterConfiguration = {\n electionMinTimeout: 8000,\n electionRangeTimeout: 6000,\n heartbeatInterval: 2000,\n messageSizeKB: 64,\n verificationTimeout: 1500,\n nodes: []\n };\n\n $scope.locations = data.clusterModel.locations.filter((location) => !location.isLocal);\n $scope.selectedLocations = data.clusterModel.locations.filter((location) => location.isLocal);\n\n $scope.loader = false;\n\n $scope.getAdvancedOptionsClass = getAdvancedOptionsClass;\n\n $scope.createCluster = function () {\n $scope.setLoader(true, $translate.instant('cluster_management.cluster_page.creating_cluster_loader'));\n $scope.clusterConfiguration.nodes = $scope.selectedLocations.map((node) => node.rpcAddress);\n return ClusterRestService.createCluster($scope.clusterConfiguration)\n .then(() => {\n toastr.success($translate.instant('cluster_management.cluster_page.notifications.create_success'));\n $modalInstance.close();\n })\n .catch(function (error) {\n handleErrors(error.data, error.status);\n })\n .finally(() => {\n $scope.setLoader(false);\n $rootScope.$broadcast('reloadLocations');\n });\n };\n\n function handleErrors(data, status) {\n delete $scope.preconditionErrors;\n toastr.error($translate.instant('cluster_management.cluster_page.notifications.create_failed'));\n $scope.errors.splice(0);\n if (status === 412) {\n $scope.preconditionErrors = Object.keys(data).map((key) => `${key} - ${data[key]}`);\n } else if (status === 400) {\n $scope.errors.push(...data);\n } else if (status === 409) {\n $scope.errors.push(data);\n }\n }\n\n $scope.isClusterConfigurationValid = () => {\n const isFormValid = !$scope.clusterConfigurationForm.$invalid;\n const nodesListValid = $scope.selectedLocations && $scope.selectedLocations.length >= 2;\n return isFormValid && nodesListValid;\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.addNodeToList = function (location) {\n if (!location.rpcAddress) {\n return;\n }\n $scope.selectedLocations.push(location);\n $scope.locations = $scope.locations.filter((loc) => loc.endpoint !== location.endpoint);\n };\n\n $scope.removeNodeFromList = function (index, node) {\n if (node.isLocal) {\n return;\n }\n $scope.selectedLocations.splice(index, 1);\n $scope.locations.push(node);\n };\n\n $scope.addLocation = function () {\n RemoteLocationsService.addLocation()\n .then((newLocation) => {\n if (newLocation) {\n $scope.locations.push(newLocation);\n }\n });\n };\n\n $scope.ok = function () {\n if (!$scope.isClusterConfigurationValid()) {\n toastr.warning($translate.instant('cluster_management.cluster_page.notifications.form_invalid'));\n return;\n }\n $scope.createCluster();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nDeleteClusterCtrl.$inject = ['$scope', '$modalInstance'];\n\nfunction DeleteClusterCtrl($scope, $modalInstance) {\n $scope.forceDelete = false;\n\n $scope.ok = function () {\n $modalInstance.close($scope.forceDelete);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nRemoteLocationsService.$inject = ['$http', 'toastr', '$modal', 'LocationsRestService', '$translate'];\n\nfunction RemoteLocationsService($http, toastr, $modal, LocationsRestService, $translate) {\n return {\n addLocation: addLocation,\n getLocationsWithRpcAddresses: getLocationsWithRpcAddresses\n };\n\n function getLocationsWithRpcAddresses() {\n return getLocations()\n .then((locations) => {\n if (locations) {\n return getRemoteLocationsRpcAddresses(locations);\n }\n });\n }\n\n /**\n * Sets multiple remote locations' rpc addresses. Skips local location and locations with errors\n * @param {any[]} locationsArray\n * @return {Promise<[]>} locationArray with filled rpc addresses\n */\n function getRemoteLocationsRpcAddresses(locationsArray) {\n const rpcAddressFetchers = locationsArray.filter((location) => !location.isLocal && !location.error).map((location) => {\n return getLocationRpcAddress(location)\n .then((response) => {\n location.rpcAddress = response.data;\n location.isAvailable = true;\n return location;\n })\n .catch((error) => {\n location.isAvailable = false;\n location.error = getError(error.data, error.status);\n });\n });\n return Promise.allSettled(rpcAddressFetchers).then(() => locationsArray);\n }\n\n /**\n * Fetch locations and map them to a location model\n *\n * @return {*} all remote locations mapped to a location model\n */\n function getLocations() {\n return LocationsRestService.getLocations()\n .then(function (response) {\n return response.data.map((loc) => {\n return {\n isLocal: loc.local,\n endpoint: loc.uri,\n rpcAddress: loc.rpcAddress || '',\n error: loc.errorMsg\n };\n });\n })\n .catch(function (error) {\n const msg = getError(error.data, error.status);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n /**\n * Fetch rpc address of a remote location\n * @param {*} location the remote location\n * @return {Promise<String>} the rpc address of the location\n */\n function getLocationRpcAddress(location) {\n return LocationsRestService.getLocationRpcAddress(location.endpoint);\n\n }\n\n function addLocation() {\n let newLocation;\n return $modal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationFromClusterCtrl'\n }).result\n .then((dataAddLocation) => {\n newLocation = dataAddLocation;\n newLocation.isLocal = false;\n newLocation.endpoint = newLocation.uri;\n return addLocationHttp(newLocation);\n });\n }\n\n function addLocationHttp(locationData) {\n let newLocation;\n return LocationsRestService.addLocation(locationData)\n .catch((error) => {\n const msg = getError(error.data, error.status);\n toastr.error(msg, $translate.instant('common.error'));\n return false;\n })\n .then((locationAdded) => {\n if (locationAdded) {\n return getLocationsWithRpcAddresses();\n }\n return false;\n })\n .then((locations) => {\n if (locations === false) {\n return;\n }\n newLocation = locations.find((location) => location.endpoint === locationData.uri);\n return newLocation;\n });\n }\n}\n\nAddLocationFromClusterCtrl.$inject = ['$scope', '$modalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationFromClusterCtrl($scope, $modalInstance, toastr, productInfo, $translate) {\n //TODO: This, along with the view are duplicated from repositories page. Must be extracted for re-usability.\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'signature',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $modalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditClusterCtrl.$inject = ['$scope', '$modalInstance', '$timeout', 'ClusterRestService', 'toastr', '$translate', 'data'];\n\nfunction EditClusterCtrl($scope, $modalInstance, $timeout, ClusterRestService, toastr, $translate, data) {\n $scope.pageTitle = $translate.instant('cluster_management.cluster_page.edit_page_title');\n $scope.errors = [];\n $scope.clusterConfiguration = angular.copy(data.clusterConfiguration);\n $scope.loader = false;\n\n $scope.updateCluster = function () {\n $scope.setLoader(true, $translate.instant('cluster_management.cluster_page.updating_cluster_loader'));\n return ClusterRestService.updateCluster($scope.clusterConfiguration)\n .then(() => {\n toastr.success($translate.instant('cluster_management.cluster_page.notifications.update_success'));\n $modalInstance.close();\n })\n .catch(function (response) {\n handleErrors(response.data, response.status);\n })\n .finally(() => $scope.setLoader(false));\n };\n\n function handleErrors(data, status) {\n delete $scope.preconditionErrors;\n toastr.error($translate.instant('cluster_management.cluster_page.notifications.update_failed'));\n $scope.errors.splice(0);\n\n if (status === 409 || typeof data === 'string') {\n $scope.errors.push(data);\n } else if (status === 412) {\n $scope.preconditionErrors = Object.keys(data).map((key) => `${key} - ${data[key]}`);\n } else if (status === 400) {\n $scope.errors.push(...data);\n }\n }\n\n $scope.isClusterConfigurationValid = () => {\n return !$scope.clusterConfigurationForm.$invalid;\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.ok = function () {\n if (!$scope.isClusterConfigurationValid()) {\n toastr.warning($translate.instant('cluster_management.cluster_page.notifications.form_invalid'));\n return;\n }\n $scope.updateCluster();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\n\nAddNodesDialogCtrl.$inject = ['$scope', '$modalInstance', 'data', '$modal', 'RemoteLocationsService'];\n\nfunction AddNodesDialogCtrl($scope, $modalInstance, data, $modal, RemoteLocationsService) {\n const clusterConfiguration = angular.copy(data.clusterConfiguration);\n const clusterModel = angular.copy(data.clusterModel);\n $scope.nodes = [];\n\n $scope.clusterNodes = clusterModel.nodes.map((node) => ({rpcAddress: node.address, endpoint: node.endpoint}));\n $scope.locations = clusterModel.locations.filter((location) => !clusterConfiguration.nodes.includes(location.rpcAddress));\n $scope.locations.forEach((location) => location.isNew = true);\n\n $scope.addNodeToList = function (location) {\n if (!location.rpcAddress) {\n return;\n }\n $scope.nodes.push(location);\n $scope.locations = $scope.locations.filter((loc) => loc.endpoint !== location.endpoint);\n };\n\n $scope.removeNodeFromList = function (index, node) {\n $scope.nodes.splice(index, 1);\n $scope.locations.push(node);\n };\n\n $scope.addLocation = function () {\n RemoteLocationsService.addLocation()\n .then((newLocation) => {\n if (newLocation) {\n $scope.locations.push(newLocation);\n }\n });\n };\n\n $scope.ok = function () {\n $modalInstance.close($scope.nodes);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nRemoveNodesDialogCtrl.$inject = ['$scope', '$modalInstance', 'data'];\n\nfunction RemoveNodesDialogCtrl($scope, $modalInstance, data) {\n const clusterModel = angular.copy(data.clusterModel);\n\n $scope.clusterNodes = clusterModel.nodes;\n $scope.clusterNodes.forEach((node) => node.shouldRemove = false);\n $scope.nodesToRemoveCount = 0;\n $scope.leftNodesLessThanTwo = false;\n\n $scope.toggleNode = function (index, node) {\n node.shouldRemove = !node.shouldRemove;\n if (node.shouldRemove) {\n $scope.nodesToRemoveCount++;\n } else {\n $scope.nodesToRemoveCount--;\n }\n $scope.leftNodesLessThanTwo = $scope.clusterNodes.length - $scope.nodesToRemoveCount < 2;\n };\n\n $scope.ok = function () {\n const nodesToRemove = $scope.clusterNodes.filter((node) => node.shouldRemove);\n $modalInstance.close(nodesToRemove);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[42,102],{144:function(n,e,i){"use strict";i.r(e);i(95);angular.module("graphdb.framework.plugins",["ngRoute","graphdb.framework.plugins.controllers"])},95:function(n,e,i){"use strict";i.r(e);i(19);function t(n,e,i,t,r,o,s,l,u){let a;const c=function(){n.clear(),r.isLicenseValid()&&t.getActiveRepository()&&!t.isActiveRepoOntopType()&&!t.isActiveRepoFedXType()&&g()};n.clear=function(){n.searchPluginsTerm="",n.plugins=[],n.displayedPlugins=[]};const g=function(){f(),a=e((function(){f()}),5e3)},f=function(){l.getPlugins(n.getActiveRepository()).success((function(e){n.plugins=n.buildPluginsArray(e.results.bindings)})).error((function(n){i.error(getError(n))})).finally((function(){n.filterResults(),n.setLoader(!1)}))};n.buildPluginsArray=function(n){return n.map(n=>({name:n.s.value,enabled:"true"===n.o.value})).filter((function(n){return"plugincontrol"!==n.name&&"literals-index"!==n.name})).sort((function(n,e){const i=n.name.toLowerCase(),t=e.name.toLowerCase();return i<t?-1:i>t?1:0}))},n.filterResults=function(){const e=n.plugins.filter(e=>-1!==e.name.indexOf(n.searchPluginsTerm));d(e)&&n.updateDisplayedPlugins(e)};const d=function(e){if(!n.displayedPlugins||n.displayedPlugins.length!==e.length)return!0;for(const i in e)if(!n.displayedPlugins.find(n=>angular.equals(n,e[i])))return!0;return!1};function p(){a&&e.cancel(a)}n.updateDisplayedPlugins=function(e){n.displayedPlugins=e,setTimeout((function(){n.applyRowStyles()}),0)},n.setLoader=function(e,i){s.cancel(n.loaderTimeout),e?n.loaderTimeout=s((function(){n.loader=e,n.loaderMessage=i}),300):n.loader=!1},n.$on("repositoryIsSet",(function(){p(),c()})),n.$on("$destroy",(function(){p(),$(window).off("resize.plugin")})),$(window).on("resize.plugin",(function(){n.applyRowStyles()})),n.applyRowStyles=function(){const e=$("#wb-plugins-pluginInPlugins").width(),i=$("tr").width(),t=Math.floor(e/i);$(".wb-plugins-row").toArray().forEach((e,i)=>{n.isGreyBackground(t,i)?$(e).addClass("grey-row"):$(e).removeClass("grey-row")})},n.isGreyBackground=function(n,e){const i=(Math.floor(e/n)+1)%2!=1,t=e%2!=0;if(n%2!=0){if(i&&!t||!i&&!t)return!0;if(i&&t||!i&&t)return!1}else{if(i&&!t||!i&&t)return!1;if(i&&t||!i&&!t)return!0}},n.togglePlugin=function(e,t){const r=n.getActiveRepository(),o=t?u.instant("deactivating.plugin",{pluginName:e}):u.instant("activating.plugin",{pluginName:e});n.setLoader(!0,o),l.togglePlugin(r,t,e).error((function(n){i.error(getError(n))})).finally((function(){f(),n.setLoader(!1)}))},n.getLoaderMessage=function(){return n.loaderMessage||u.instant("common.loading")},n.onSearchTermChanged=function(){n.filterResults()},c()}angular.module("graphdb.framework.plugins.controllers",["graphdb.framework.rest.plugins.service"]).controller("PluginsCtrl",t),t.$inject=["$scope","$interval","toastr","$repositories","$licenseService","$modal","$timeout","PluginsRestService","$translate"]}}]);
2
- //# sourceMappingURL=42.87fe547d27ce0c30deef.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/plugins/app.js","webpack:///./src/js/angular/plugins/controllers.js"],"names":["angular","module","PluginsCtrl","$scope","$interval","toastr","$repositories","$licenseService","$modal","$timeout","PluginsRestService","$translate","timer","init","clear","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","getPlugins","searchPluginsTerm","plugins","displayedPlugins","initPlugins","success","data","buildPluginsArray","results","bindings","error","getError","finally","filterResults","setLoader","map","plugin","name","s","value","enabled","o","filter","sort","a","b","textA","toLowerCase","textB","matchedPlugins","indexOf","displayedPluginsChanged","updateDisplayedPlugins","length","find","element","equals","cancelTimer","cancel","setTimeout","applyRowStyles","loader","message","loaderTimeout","loaderMessage","$on","$","window","off","on","tableWidth","width","rowWidth","columnPerRow","Math","floor","toArray","forEach","index","isGreyBackground","addClass","removeClass","oddRow","evenElement","togglePlugin","pluginName","repoId","instant","getLoaderMessage","onSearchTermChanged","controller","$inject"],"mappings":"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","file":"42.87fe547d27ce0c30deef.bundle.js","sourcesContent":["import 'angular/plugins/controllers';\n\nconst modules = [\n 'ngRoute',\n 'graphdb.framework.plugins.controllers'\n];\n\nangular.module('graphdb.framework.plugins', modules);\n","import 'angular/rest/plugins.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.plugins.service'\n];\n\nangular\n .module('graphdb.framework.plugins.controllers', modules)\n .controller('PluginsCtrl', PluginsCtrl);\n\nPluginsCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$modal', '$timeout', 'PluginsRestService', '$translate'];\n\nfunction PluginsCtrl($scope, $interval, toastr, $repositories, $licenseService, $modal, $timeout, PluginsRestService, $translate) {\n\n let timer;\n\n const init = function () {\n $scope.clear();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n getPlugins();\n };\n\n $scope.clear = function () {\n $scope.searchPluginsTerm = '';\n $scope.plugins = [];\n $scope.displayedPlugins = [];\n };\n\n const getPlugins = function () {\n initPlugins();\n timer = $interval(function () {\n initPlugins();\n }, 5000);\n };\n\n const initPlugins = function () {\n PluginsRestService.getPlugins($scope.getActiveRepository())\n .success(function (data) {\n $scope.plugins = $scope.buildPluginsArray(data.results.bindings);\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.filterResults();\n $scope.setLoader(false);\n });\n };\n\n $scope.buildPluginsArray = function (plugins) {\n return plugins.map((plugin) => ({\n name: plugin.s.value,\n enabled: plugin.o.value === 'true'\n })).filter(function (plugin) {\n return plugin.name !== 'plugincontrol' && plugin.name !== 'literals-index';\n }).sort(function (a, b) {\n const textA = a.name.toLowerCase();\n const textB = b.name.toLowerCase();\n return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;\n });\n };\n\n $scope.filterResults = function () {\n const matchedPlugins = $scope.plugins.filter((plugin) => plugin.name.indexOf($scope.searchPluginsTerm) !== -1);\n if (displayedPluginsChanged(matchedPlugins)) {\n $scope.updateDisplayedPlugins(matchedPlugins);\n }\n };\n\n /**\n * Checks if displayed plugins in the view are different than <code>plugins</code>.\n * @param {*} plugins - plugins to be checked.\n * @return {boolean} returns true if <code>plugins</code> are different from those which are shown in the view.\n */\n const displayedPluginsChanged = function (plugins) {\n if (!$scope.displayedPlugins || $scope.displayedPlugins.length !== plugins.length) {\n return true;\n }\n\n for (const plugin in plugins) {\n if (!$scope.displayedPlugins.find((element) => angular.equals(element, plugins[plugin]))) {\n return true;\n }\n }\n\n return false;\n };\n\n $scope.updateDisplayedPlugins = function (plugins) {\n $scope.displayedPlugins = plugins;\n setTimeout(function () {\n $scope.applyRowStyles();\n }, 0);\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n // this is used when repository is changed from the upper menu to refresh the plugins for it.\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n init();\n });\n\n $scope.$on('$destroy', function () {\n cancelTimer();\n $(window).off('resize.plugin');\n });\n\n $(window).on('resize.plugin', function () {\n $scope.applyRowStyles();\n });\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.applyRowStyles = function () {\n const tableWidth = $('#wb-plugins-pluginInPlugins').width();\n const rowWidth = $('tr').width();\n const columnPerRow = Math.floor(tableWidth / rowWidth);\n $('.wb-plugins-row').toArray().forEach((value, index) => {\n if ($scope.isGreyBackground(columnPerRow, index)) {\n $(value).addClass('grey-row');\n } else {\n $(value).removeClass('grey-row');\n }\n });\n };\n\n $scope.isGreyBackground = function (columnPerRow, index) {\n const row = Math.floor(index / columnPerRow) + 1;\n const oddRow = row % 2 !== 1;\n const evenElement = index % 2 !== 0;\n const evenColumns = columnPerRow % 2 !== 0;\n\n if (evenColumns) {\n if (oddRow && !evenElement || !oddRow && !evenElement) {\n return true;\n }\n if (oddRow && evenElement || !oddRow && evenElement) {\n return false;\n }\n } else {\n if (oddRow && !evenElement || !oddRow && evenElement) {\n return false;\n }\n if (oddRow && evenElement || !oddRow && !evenElement) {\n return true;\n }\n }\n };\n\n $scope.togglePlugin = function (pluginName, enabled) {\n const repoId = $scope.getActiveRepository();\n const message = enabled ? $translate.instant('deactivating.plugin', {pluginName: pluginName}) : $translate.instant('activating.plugin', {pluginName: pluginName});\n $scope.setLoader(true, message);\n PluginsRestService.togglePlugin(repoId, enabled, pluginName)\n .error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n initPlugins();\n $scope.setLoader(false);\n });\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.onSearchTermChanged = function () {\n $scope.filterResults();\n };\n\n init();\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[43,104],{146:function(e,t,o){"use strict";o.r(t);o(4),o(11),o(96);angular.module("graphdb.framework.jmx.queries",["toastr","ui.bootstrap","graphdb.framework.jmx.queries.controllers","graphdb.framework.core.directives"])},96:function(e,t,o){"use strict";o.r(t);o(4),o(13);const n=angular.module("graphdb.framework.jmx.queries.controllers",["ui.bootstrap","toastr","graphdb.framework.rest.monitoring.service"]);n.controller("QueriesCtrl",["$scope","$modal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate",function(e,t,o,n,r,i,s,a,u){e.loader=!0,e.stringLimit=500,e.expanded={},e.error="",e.paused=!1;const c=document.createElement("a");e.parseNode=function(e){if(null==e)return null;let t="local";if(e.indexOf("://localhost:")<0&&e.indexOf("://localhost/")<0){c.href=e;let o=c.hostname;(function(e){const t=e.split(".");for(let e=0,o=0;e<t.length;e++)if(parseInt(t[e],10)>=0&&parseInt(t[e],10)<=255?o++:o=0,4===o)return!0;return!1})(c.hostname)||(o=c.hostname.split(".")[0]),t=o+":"+c.port}const o=e.match(/\/repositories\/([^\/]+)#(\d+)/);return[o[2],t,o[1]]},e.togglePause=function(){e.paused=!e.paused},e.getQueries=function(){e.getQueriesRunning||e.paused||e.error||!r.getActiveRepository()||(e.getQueriesRunning=!0,a.monitorQuery(r.getActiveRepository()).success((function(t){const o=t;e.noQueries=0===o.length,e.queries={};for(let t=0;t<o.length;t++)o[t].parsedNode=e.parseNode(o[t].node),e.queries[o[t].trackId]=o[t];e.noActiveRepository=!1,e.loader=!1,e.getQueriesRunning=!1})).error((function(t){e.error=getError(t),e.loader=!1,e.getQueriesRunning=!1})))};const l=n((function(){r.isActiveRepoOntopType()||e.getQueries()}),1e3);e.$on("$destroy",(function(){n.cancel(l)})),e.deleteQueryHttp=function(t){e.loader=!0,a.deleteQuery(t,r.getActiveRepository()).success((function(){o.success(u.instant("abort.request.sent.msg")),e.loader=!1})).error((function(t){const n=getError(t);o.error(n,u.instant("common.error")),e.loader=!1}))},e.abortQuery=function(t){s.openSimpleModal({title:u.instant("confirm.abort"),message:u.instant("confirm.abort.warning.msg"),warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.downloadQuery=function(e){const t="query_"+e+".rq";let o="/rest/monitor/repository/"+r.getActiveRepository()+"/query/download?query="+encodeURIComponent(e)+"&filename="+encodeURIComponent(t);i.isAuthenticated()&&(o=o+"&authToken="+encodeURIComponent(i.getAuthToken())),window.open(o,"_blank")},e.toggleQueryExpanded=function(t){e.expanded[t]=!e.expanded[t]}}]),n.controller("DeleteQueryCtrl",["$scope","$modalInstance",function(e,t){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")}}])}}]);
2
- //# sourceMappingURL=43.34060633fa9548ec3437.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/queries/app.js","webpack:///./src/js/angular/queries/controllers.js"],"names":["angular","module","queriesCtrl","controller","$scope","$modal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate","loader","stringLimit","expanded","error","paused","parser","document","createElement","parseNode","node","shortUrl","indexOf","href","hostname","ip","blocks","split","i","sequence","length","parseInt","containsIPV4","port","match","togglePause","getQueries","getQueriesRunning","getActiveRepository","monitorQuery","success","data","newQueries","noQueries","queries","parsedNode","trackId","noActiveRepository","getError","timer","isActiveRepoOntopType","$on","cancel","deleteQueryHttp","queryId","deleteQuery","instant","msg","abortQuery","openSimpleModal","title","message","warning","result","then","downloadQuery","filename","link","encodeURIComponent","isAuthenticated","getAuthToken","window","open","toggleQueryExpanded","$modalInstance","ok","close","dismiss"],"mappings":"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","file":"43.34060633fa9548ec3437.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/queries/controllers';\n\nconst modules = [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.jmx.queries.controllers',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.jmx.queries', modules);\n","import 'angular/core/services';\nimport 'angular/rest/monitoring.rest.service';\n\nconst queriesCtrl = angular.module('graphdb.framework.jmx.queries.controllers', [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.rest.monitoring.service'\n]);\n\nqueriesCtrl.controller('QueriesCtrl', ['$scope', '$modal', 'toastr', '$interval', '$repositories', '$jwtAuth', 'ModalService', 'MonitoringRestService', '$translate',\n function ($scope, $modal, toastr, $interval, $repositories, $jwtAuth, ModalService, MonitoringRestService, $translate) {\n\n $scope.loader = true;\n $scope.stringLimit = 500;\n $scope.expanded = {};\n $scope.error = '';\n $scope.paused = false;\n\n function containsIPV4(ip) {\n const blocks = ip.split('.');\n for (let i = 0, sequence = 0; i < blocks.length; i++) {\n if (parseInt(blocks[i], 10) >= 0 && parseInt(blocks[i], 10) <= 255) {\n sequence++;\n } else {\n sequence = 0;\n }\n if (sequence === 4) {\n return true;\n }\n }\n return false;\n }\n\n const parser = document.createElement('a');\n\n // Parses a node of the kind http://host.example.com:7200/repositories/repo#NN,\n // where NN is the track ID into an array [NN, host:7200, repo].\n $scope.parseNode = function (node) {\n if (node == null) {\n return null;\n }\n\n let shortUrl = 'local';\n if (node.indexOf('://localhost:') < 0 && node.indexOf('://localhost/') < 0) {\n parser.href = node;\n let hostname = parser.hostname;\n if (!containsIPV4(parser.hostname)) {\n hostname = parser.hostname.split('.')[0];\n }\n shortUrl = hostname + ':' + parser.port;\n }\n const match = node.match(/\\/repositories\\/([^\\/]+)#(\\d+)/); // eslint-disable-line no-useless-escape\n\n return [match[2], shortUrl, match[1]];\n };\n\n $scope.togglePause = function () {\n $scope.paused = !$scope.paused;\n }\n\n $scope.getQueries = function () {\n // Skip execution if already getting from previous call, if paused, if jolokia returned an error,\n // or if no repository is available\n if ($scope.getQueriesRunning || $scope.paused || $scope.error || !$repositories.getActiveRepository()) {\n return;\n }\n\n $scope.getQueriesRunning = true;\n MonitoringRestService.monitorQuery($repositories.getActiveRepository()).success(function (data) {\n const newQueries = data;\n $scope.noQueries = newQueries.length === 0;\n\n // Converts array to object. Angular seems to handle updates on objects better, i.e.\n // it doesn't recreate DOM elements for queries that are already displayed.\n $scope.queries = {};\n for (let i = 0; i < newQueries.length; i++) {\n newQueries[i].parsedNode = $scope.parseNode(newQueries[i].node);\n $scope.queries[newQueries[i].trackId] = newQueries[i];\n }\n\n $scope.noActiveRepository = false;\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n }).error(function (data) {\n $scope.error = getError(data);\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n });\n };\n\n const timer = $interval(function () {\n // Don't call getQueries for Ontop type repository\n if ($repositories.isActiveRepoOntopType()) {\n return;\n }\n $scope.getQueries();\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n $scope.deleteQueryHttp = function (queryId) {\n\n $scope.loader = true;\n MonitoringRestService.deleteQuery(queryId, $repositories.getActiveRepository()).success(function () {\n toastr.success($translate.instant('abort.request.sent.msg'));\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n\n $scope.loader = false;\n });\n };\n\n $scope.abortQuery = function (queryId) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.abort'),\n message: $translate.instant('confirm.abort.warning.msg'),\n warning: true\n }).result.then(function () {\n $scope.deleteQueryHttp(queryId);\n });\n };\n\n $scope.downloadQuery = function (queryId) {\n const filename = 'query_' + queryId + '.rq';\n let link = '/rest/monitor/repository/' + $repositories.getActiveRepository()\n + '/query/download?query=' + encodeURIComponent(queryId)\n + '&filename=' + encodeURIComponent(filename);\n if ($jwtAuth.isAuthenticated()) {\n link = link + '&authToken=' + encodeURIComponent($jwtAuth.getAuthToken());\n }\n\n window.open(link, '_blank');\n };\n\n $scope.toggleQueryExpanded = function (queryId) {\n $scope.expanded[queryId] = !$scope.expanded[queryId];\n };\n }]);\n\n\nqueriesCtrl.controller('DeleteQueryCtrl', ['$scope', '$modalInstance', function ($scope, $modalInstance) {\n\n $scope.ok = function () {\n $modalInstance.close();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/repositories/repository.constants.js","webpack:///./src/js/angular/repositories/controllers.js"],"names":["STATIC_RULESETS","id","name","REPOSITORY_TYPES","graphdbRepo","free","eeWorker","eeMaster","ontop","se","fedx","FILENAME_PATTERN","RegExp","NUMBER_PATTERN","getFileName","path","lastIdx","lastIndexOf","substring","parseNumberParamsIfNeeded","params","queryTimeout","value","parseInt","queryLimitResults","validationResultsLimitTotal","validationResultsLimitPerConstraint","leftJoinWorkerThreads","boundJoinBlockSize","joinWorkerThreads","unionWorkerThreads","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","validateNumberFields","invalidValues","isInvalidQueryTimeout","test","isInvalidValidationResultsLimitTotal","isInvalidValidationResultsLimitPerConstraint","isInvalidQueryLimit","isInvalidLeftJoinWorkerThreads","isInvalidBoundJoinBlockSize","isInvalidJoinWorkerThreads","isInvalidUnionWorkerThreads","getInvalidParameterErrorMessage","param","$translate","instant","checkInvalidValues","invalidValuesKeys","Object","keys","invalidValuesVal","values","i","length","getDocBase","productInfo","productShortVersion","getFilteredLocations","$repositories","getLocations","then","locations","filter","location","errorMsg","degradedReason","LocationsAndRepositoriesCtrl","$scope","$rootScope","$modal","toastr","ModalService","$jwtAuth","LocationsRestService","LocalStorageAdapter","$interval","$q","GuidesService","loader","isLocationInactive","active","hasActiveLocation","getLocationsAbortRequestPromise","defer","finally","getActiveLocation","getLocationError","getDegradedReason","getRepositories","isRepoActive","repo","deleteLocation","uri","openSimpleModal","title","message","warning","result","addLocationHttp","dataAddLocation","addLocation","success","init","error","data","msg","getError","open","templateUrl","windowClass","controller","editLocationHttp","dataEditLocation","editLocation","resolve","setRepository","deleteRepository","repository","repositoryId","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","angular","forEach","key","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","url","type","token","getAuthToken","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","isActive","guidePaused","initQuick","$on","cancel","getRepositoriesFromLocation","locationId","UploadRepositoryConfigCtrl","$modalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","copy","ChooseRepositoryCtrl","$location","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","repositoryType","rulesets","slice","enable","pageTitle","repositoryInfo","changedLocation","$broadcast","getConfig","getRepositoryConfiguration","member","element","find","focus","isEnterprise","isValidEERepository","isFreeEdition","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","setPageTitle","activeLocation","isInvalidPieFile","uploadRuleset","ruleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","isDefined","previous","$$search","createRepoHttp","createRepository","repoId","catch","createRepo","isInvalidRepoName","rulesetWarning","pp","undefined","disableSameAs","validateNumberInput","autofocusId","EditRepositoryFileCtrl","file","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","editRepoPage","canEditRepoId","restartRequested","saveRepoId","$watch","getRepository","response","ifRulesetExists","item","setRepositoryType","saveId","status","toastrMsg","allowHtml","setTimeout","editRepoHttp","editRepository","modalMsg","editRepositoryId","module","$inject"],"mappings":"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","file":"5.5f48e5c6fc10b52dd415.bundle.js","sourcesContent":["export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {graphdbRepo: 'graphdb', free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPOSITORY_TYPES,\n STATIC_RULESETS\n} from \"./repository.constants\";\nimport {decodeHTML} from \"../../../app\";\n\nexport const getFileName = function (path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function (params) {\n if (params) {\n if (params.queryTimeout) {\n params.queryTimeout.value = parseInt(params.queryTimeout.value);\n }\n if (params.queryLimitResults && params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint) {\n // Parse parameters properly to number\n params.queryLimitResults.value = parseInt(params.queryLimitResults.value);\n params.validationResultsLimitTotal.value = parseInt(params.validationResultsLimitTotal.value);\n params.validationResultsLimitPerConstraint.value = parseInt(params.validationResultsLimitPerConstraint.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads && params.unionWorkerThreads) {\n params.leftJoinWorkerThreads.value = parseInt(params.leftJoinWorkerThreads.value);\n params.boundJoinBlockSize.value = parseInt(params.boundJoinBlockSize.value);\n params.joinWorkerThreads.value = parseInt(params.joinWorkerThreads.value);\n params.unionWorkerThreads.value = parseInt(params.unionWorkerThreads.value);\n }\n }\n};\n\nconst parseMemberParamIfNeeded = function (param) {\n if (param && param.member) {\n param.member.value = [];\n }\n};\n\nconst getShaclOptionsClass = function () {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n};\n\nconst validateNumberFields = function (params, invalidValues) {\n if (params.queryTimeout) {\n invalidValues.isInvalidQueryTimeout = !NUMBER_PATTERN.test(params.queryTimeout.value);\n }\n if (params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint && params.queryLimitResults) {\n invalidValues.isInvalidValidationResultsLimitTotal = !NUMBER_PATTERN.test(params.validationResultsLimitTotal.value);\n invalidValues.isInvalidValidationResultsLimitPerConstraint = !NUMBER_PATTERN.test(params.validationResultsLimitPerConstraint.value);\n invalidValues.isInvalidQueryLimit = !NUMBER_PATTERN.test(params.queryLimitResults.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads\n && params.unionWorkerThreads) {\n invalidValues.isInvalidLeftJoinWorkerThreads = !NUMBER_PATTERN.test(params.leftJoinWorkerThreads.value);\n invalidValues.isInvalidBoundJoinBlockSize = !NUMBER_PATTERN.test(params.boundJoinBlockSize.value);\n invalidValues.isInvalidJoinWorkerThreads = !NUMBER_PATTERN.test(params.joinWorkerThreads.value);\n invalidValues.isInvalidUnionWorkerThreads = !NUMBER_PATTERN.test(params.unionWorkerThreads.value);\n }\n};\n\nconst getInvalidParameterErrorMessage = function (param, $translate) {\n if (param === \"isInvalidQueryLimit\") {\n return $translate.instant('invalid.query.limit');\n } else if (param === \"isInvalidQueryTimeout\") {\n return $translate.instant('invalid.query.timeout');\n } else if (param === \"isInvalidValidationResultsLimitTotal\") {\n return $translate.instant('invalid.validation.results.limit.total');\n } else if (param === \"isInvalidValidationResultsLimitPerConstraint\") {\n return $translate.instant('invalid.validation.results.limit.per.constraint');\n } else if (param === \"isInvalidJoinWorkerThreads\") {\n return $translate.instant('invalid.join.worker.threads');\n } else if (param === \"isInvalidLeftJoinWorkerThreads\") {\n return $translate.instant('invalid.left.join.worker.threads');\n } else if (param === \"isInvalidUnionWorkerThreads\") {\n return $translate.instant('invalid.union.worker.threads');\n } else if (param === \"isInvalidBoundJoinBlockSize\") {\n return $translate.instant('invalid.bound.join.block.size');\n }\n};\n\nconst checkInvalidValues = function (invalidValues, $translate) {\n const invalidValuesKeys = Object.keys(invalidValues);\n const invalidValuesVal = Object.values(invalidValues);\n\n for (let i = 0; i < invalidValuesKeys.length; i++) {\n if (invalidValuesVal[i]) {\n return getInvalidParameterErrorMessage(invalidValuesKeys[i], $translate);\n }\n }\n return '';\n};\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\nconst filterLocations = function (result) {\n return result.filter((location) => !location.errorMsg && !location.degradedReason);\n};\n\n/**\n * Gets the remote locations that are error free and without degraded reason\n * @param {*} $repositories the repositories service\n * @return {[] | Promise} returns the locations as array or a promise of the array\n */\nconst getFilteredLocations = function ($repositories) {\n // Don't allow the user to create repository on location with error or degradeded reason\n return $repositories.getLocations().then((locations) => filterLocations(locations));\n};\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload'\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$rootScope', '$modal', 'toastr', '$repositories', 'ModalService', '$jwtAuth', 'LocationsRestService',\n 'LocalStorageAdapter', '$interval', '$translate', '$q', 'GuidesService'];\n\nfunction LocationsAndRepositoriesCtrl($scope, $rootScope, $modal, toastr, $repositories, ModalService, $jwtAuth, LocationsRestService,\n LocalStorageAdapter, $interval, $translate, $q, GuidesService) {\n $scope.loader = true;\n\n $scope.isLocationInactive = function (location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n const getLocationsAbortRequestPromise = $q.defer();\n //Get locations\n function getLocations() {\n return $repositories.getLocations(getLocationsAbortRequestPromise)\n .then((locations) => {\n $scope.locations = locations;\n })\n .finally(() => $scope.loader = false);\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function () {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function () {\n return $repositories.getRepositories();\n };\n\n $scope.isRepoActive = function (repo) {\n return $repositories.isRepoActive(repo);\n };\n\n //Delete location\n $scope.deleteLocation = function (uri) {\n ModalService.openSimpleModal({\n title: $translate.instant('location.confirm.detach'),\n message: $translate.instant('location.confirm.detach.warning', {uri: uri}),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteLocation(uri).finally(() => getLocations());\n });\n };\n\n //Add new location\n\n $scope.addLocationHttp = function (dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function () {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.addLocation = function () {\n $modal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationCtrl'\n }).result\n .then(function (dataAddLocation) {\n $scope.addLocationHttp(dataAddLocation);\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function (dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function () {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.editLocation = function (location) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/edit-location.html',\n controller: 'EditLocationCtrl',\n resolve: {\n location: function () {\n return location;\n }\n }\n });\n\n modalInstance.result.then(function (dataEditLocation) {\n $scope.editLocationHttp(dataEditLocation);\n }, function () {\n });\n };\n\n //Change repository\n $scope.setRepository = function (repo) {\n $repositories.setRepository(repo);\n };\n\n //Delete repository\n $scope.deleteRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: decodeHTML($translate.instant('delete.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteRepository(repository)\n .finally(() => {\n getLocations();\n $scope.loader = false;\n });\n removeCachedGraphsOnDelete(repository);\n });\n };\n\n $scope.restartRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.restart.repo'),\n message: decodeHTML($translate.instant('confirm.restart.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.restartRepository(repository).finally(() => getLocations());\n });\n };\n\n $scope.toggleDefaultRepository = function (repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function () {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function (repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/download-zip'\n : '/download-ttl')}?location=${repository.location}`;\n const token = $jwtAuth.getAuthToken();\n if (token) {\n url = `${url}&authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl'\n });\n modalInstance.result.then(function () {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function () {\n $modal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl'\n });\n };\n\n getLocations();\n const timer = $interval(function () {\n if (GuidesService.isActive() && !$rootScope.guidePaused) {\n // Don't refresh list while a guide is active\n return;\n }\n\n // Update repositories state\n $repositories.initQuick();\n getLocations();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n // If there is a getLocations request in progress, abort it so the service can properly clear flags\n if (getLocationsAbortRequestPromise) {\n getLocationsAbortRequestPromise.resolve();\n }\n });\n\n function removeCachedGraphsOnDelete(repo) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repo.id}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repo.id}`;\n angular.forEach(LocalStorageAdapter.keys(), function (key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n $scope.getRepositoriesFromLocation = function (locationId) {\n return $repositories.getRepositoriesFromLocation(locationId);\n };\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$modalInstance', 'Upload', 'toastr', '$translate'];\n\nfunction UploadRepositoryConfigCtrl($scope, $modalInstance, Upload, toastr, $translate) {\n $scope.upload = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function () {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile}\n })\n .success(function () {\n $scope.uploadFileLoader = false;\n $modalInstance.close();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$modalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationCtrl($scope, $modalInstance, toastr, productInfo, $translate) {\n\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $modalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$modalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $modalInstance, location, productInfo) {\n\n $scope.editedLocation = angular.copy(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function () {\n $modalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location'];\n\nfunction ChooseRepositoryCtrl($scope, $location) {\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.chooseRepositoryType = function (repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', '$routeParams',\n 'RepositoriesRestService', '$translate'];\n\nfunction AddRepositoryCtrl($scope, toastr, $repositories, $location, $timeout, Upload, $routeParams, RepositoriesRestService, $translate) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n\n $scope.loader = true;\n $scope.pageTitle = $translate.instant('view.create.repo.title');\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: '',\n location: ''\n };\n\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n\n getFilteredLocations($repositories)\n .then((locations) => {\n $scope.locations = locations;\n });\n\n $scope.changedLocation = function () {\n $scope.$broadcast('changedLocation');\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise() && (repositoryType === REPOSITORY_TYPES.graphdbRepo);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition() && !$scope.isEnterprise() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.graphdbRepo:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'GraphDB'});\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'Ontop Virtual SPARQL'});\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'FedX Virtual SPARQL'});\n break;\n }\n }\n\n $scope.getConfig = function (repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).success(function (data) {\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function () {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/ruleset/upload',\n data: {ruleset: $scope.uploadFile, location: $scope.repositoryInfo.location}\n }).progress(function (evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n } else {\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo)\n .then(function () {\n toastr.success($translate.instant('created.repo.success.msg', {repoId: $scope.repositoryInfo.id}));\n $repositories.init();\n })\n .catch(function (error) {\n const msg = getError(error.data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => {\n $scope.loader = false;\n $scope.goBackToPreviousLocation();\n });\n };\n\n $scope.createRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n\n if (isInvalidPieFile) {\n toastr.error($translate.instant('invalid.ruleset.file.error'));\n } else if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function () {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return $translate.instant('repoTooltips.rulesetWarnings.needsSameAs');\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return $translate.instant('repoTooltips.rulesetWarnings.doesntNeedSameAs');\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return $translate.instant('repoTooltips.rulesetWarnings.customRuleset');\n } else {\n return '';\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$modalInstance', 'RepositoriesRestService', 'file', 'toastr', '$translate'];\n\nfunction EditRepositoryFileCtrl($scope, $modalInstance, RepositoriesRestService, file, toastr, $translate) {\n\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file).success(function (data) {\n $scope.fileContent = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n $scope.ok = function () {\n $modalInstance.close({\n content: $scope.fileContent,\n fileLocation: file\n });\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'RepositoriesRestService',\n '$translate'];\n\nfunction EditRepositoryCtrl($scope, $routeParams, toastr, $repositories, $location, ModalService, RepositoriesRestService, $translate) {\n\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.location = $scope.params.location;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.$watch($scope.hasActiveLocation, function () {\n if ($scope.hasActiveLocation) {\n // Should get locations before getting repository info\n getFilteredLocations($repositories).then((locations) => {\n $scope.locations = locations;\n return RepositoriesRestService.getRepository($scope.repositoryInfo);\n })\n .then(function (response) {\n const data = response.data;\n if (angular.isDefined(data.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function (item) {\n if (item.id === data.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (data.params.ruleset && !ifRulesetExists) {\n const name = getFileName(data.params.ruleset.value);\n $scope.rulesets.unshift({id: data.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = data;\n $scope.setRepositoryType(data.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n })\n .catch(function (response) {\n const data = response.data;\n const status = response.status;\n const repositoryId = $routeParams.repositoryId;\n let toastrMsg;\n\n if (status === 404 && repositoryId !== 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.repo.error.not.exists', {repositoryId}));\n } else if (status === 404 && repositoryId === 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.system.repo.warning'));\n } else {\n toastrMsg = getError(data);\n }\n\n toastr.error(toastrMsg, $translate.instant('common.error'), {allowHtml: true});\n\n if (status === 404) {\n setTimeout(function () {\n $scope.loader = false;\n $location.path('repository');\n }, 1000);\n } else {\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function (type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.editRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function () {\n toastr.success($translate.instant('edit.repo.success.msg', {saveId: $scope.repositoryInfo.saveId}));\n $repositories.init().finally(() => $scope.goBackToPreviousLocation());\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n $scope.editRepository = function () {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n let modalMsg = decodeHTML($translate.instant('edit.repo.save.changes.msg', {repoId: $scope.repositoryInfo.id}));\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += decodeHTML($translate.instant('edit.repo.rename.changes.msg'));\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.requested.msg'));\n } else {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.needed.msg'));\n }\n if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.save'),\n message: modalMsg,\n warning: true\n }).result\n .then(function () {\n $scope.editRepoHttp();\n });\n }\n };\n\n $scope.editRepositoryId = function () {\n let msg = decodeHTML($translate.instant('edit.repo.id.warning.msg'));\n if ($scope.isEnterprise()) {\n msg += decodeHTML($translate.instant('edit.repo.id.cluster.warning.msg'));\n }\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.enable.edit'),\n message: msg,\n warning: true\n }).result.then(function () {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n}\n"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/settings/app.js","webpack:///./src/js/angular/settings/controllers.js"],"names":["config","$httpProvider","interceptors","push","run","$rootScope","$location","$licenseService","$on","isLicenseHardcoded","url","path","angular","module","$inject","ActiveLocationSettingsCtrl","$scope","toastr","$modalInstance","LicenseRestService","$translate","supportsStatistics","settings","statistics","getSettings","loader","getStatistics","then","response","data","status","msg","getError","error","instant","setSettings","toggleStatistics","close","success","submitForm","cancel","dismiss","LicenseCtrl","ModalService","loadingLicense","checkLicenseStatus","revertToFree","openSimpleModal","title","message","warning","result","unregisterLicense","RegisterLicenseCtrl","$modal","$window","$jwtAuth","isAdmin","sendLicenseToValidateAndActivate","textAreaSel","$","licenseCode","sendLicenseToValidate","validatedLicense","licensee","val","license","open","templateUrl","controller","size","resolve","decodedLicense","atob","replace","registerLicense","history","back","confirmWantedNewLicenseDetails","$watch","currentFile","file","extractFromLicenseFile","getBackToPreviousPage","ValidateLicenseModalCtrl","ok","LoaderSamplesCtrl","setLoader"],"mappings":"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","file":"53.78084dd64a27f7a6d2e8.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/rest/license.rest.service';\nimport 'angular/settings/controllers';\nimport 'angular/core/interceptors/unauthorized.interceptor';\nimport 'angular/core/services/jwt-auth.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nangular.module('graphdb.framework.settings', [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.rest.license.service',\n 'graphdb.framework.settings.controllers',\n 'graphdb.framework.core.interceptors.unauthorized',\n 'graphdb.framework.core.services.jwtauth'\n])\n .config(config)\n .run(run);\n\nconfig.$inject = ['$httpProvider', '$routeProvider'];\n\nfunction config($httpProvider) {\n $httpProvider.interceptors.push('$unauthorizedInterceptor');\n}\n\nrun.$inject = ['$rootScope', '$location', '$licenseService'];\n\nfunction run($rootScope, $location, $licenseService) {\n $rootScope.$on('$locationChangeStart', function () {\n if ($licenseService.isLicenseHardcoded && $location.url() === '/license/register') {\n $location.path('license');\n }\n });\n}\n","import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\n\nangular\n .module('graphdb.framework.settings.controllers', [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'toastr'\n ])\n .controller('ActiveLocationSettingsCtrl', ActiveLocationSettingsCtrl)\n .controller('ValidateLicenseModalCtrl', ValidateLicenseModalCtrl)\n .controller('LicenseCtrl', LicenseCtrl)\n .controller('RegisterLicenseCtrl', RegisterLicenseCtrl)\n .controller('LoaderSamplesCtrl', LoaderSamplesCtrl);\n\nActiveLocationSettingsCtrl.$inject = ['$scope', 'toastr', '$modalInstance', 'LicenseRestService', '$translate'];\n\nfunction ActiveLocationSettingsCtrl($scope, toastr, $modalInstance, LicenseRestService, $translate) {\n $scope.supportsStatistics = true;\n $scope.settings = {statistics: false};\n $scope.getSettings = getSettings;\n\n function getSettings() {\n $scope.loader = true;\n LicenseRestService.getStatistics().then(function (response) {\n $scope.settings.statistics = response.data === 'true';\n $scope.supportsStatistics = true;\n }, function (response) {\n if (response.status === 404) {\n $scope.supportsStatistics = false;\n } else {\n const msg = getError(response.data);\n toastr.error(msg, $translate.instant('error.getting.settings'));\n }\n });\n }\n\n $scope.getSettings();\n\n $scope.setSettings = function () {\n $scope.loader = true;\n LicenseRestService.toggleStatistics($scope.settings.statistics).then(function () {\n $modalInstance.close();\n toastr.success($translate.instant('saving.settings.success'));\n }, function (response) {\n const msg = getError(response.data);\n toastr.error(msg, $translate.instant('saving.settings.error'));\n });\n };\n\n $scope.submitForm = function () {\n $scope.setSettings();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$licenseService', 'toastr', '$rootScope', 'ModalService', '$translate'];\n\nfunction LicenseCtrl($scope, LicenseRestService, $licenseService, toastr, $rootScope, ModalService, $translate) {\n\n $scope.loadingLicense = function() {\n return $licenseService.loadingLicense;\n };\n\n $licenseService.checkLicenseStatus();\n\n $scope.revertToFree = function () {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.operation'),\n message: $translate.instant(\"revert.to.free.warning.msg\"),\n warning: true\n }).result\n .then(function () {\n LicenseRestService.unregisterLicense()\n .success(function () {\n $licenseService.checkLicenseStatus();\n });\n });\n };\n}\n\nRegisterLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$location', '$modal', 'toastr', '$window', '$jwtAuth', '$translate'];\n\nfunction RegisterLicenseCtrl($scope, LicenseRestService, $location, $modal, toastr, $window, $jwtAuth, $translate) {\n $scope.$on('securityInit', function () {\n if (!$jwtAuth.isAdmin()) {\n $location.path('/license');\n }\n });\n\n $scope.sendLicenseToValidateAndActivate = sendLicenseToValidateAndActivate;\n\n const textAreaSel = $('.license-textarea');\n\n // watch for uploaded license file\n $scope.$watch('currentFile', function () {\n if ($scope.currentFile) {\n const file = $scope.currentFile;\n LicenseRestService.extractFromLicenseFile(file)\n .success(function (licenseCode) {\n sendLicenseToValidateAndActivate(licenseCode);\n }).error(function () {\n toastr.error($translate.instant('could.not.upload.file.error'));\n });\n }\n });\n\n $scope.getBackToPreviousPage = function () {\n $window.history.back();\n };\n\n // send license code for validation and activation\n function sendLicenseToValidateAndActivate(licenseCode) {\n LicenseRestService.sendLicenseToValidate(licenseCode)\n .success(function (validatedLicense) {\n if (validatedLicense.licensee !== 'Invalid') {\n // write code to textarea\n textAreaSel.val(licenseCode);\n // pop dialog for license details confirmation\n confirmWantedNewLicenseDetails(validatedLicense, licenseCode);\n } else {\n // clear textarea on invalid license\n textAreaSel.val('');\n // show error\n toastr.error(validatedLicense.message);\n }\n })\n .error(function () {\n toastr.error($translate.instant('invalid.license'));\n });\n }\n\n\n // pops a modal dialog which asks you if your expected license details are correct\n // and sends license to GraphDB upon confirmation\n function confirmWantedNewLicenseDetails(license, licenseCode) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/settings/modal/validate-license.html',\n controller: 'ValidateLicenseModalCtrl',\n size: 'lg',\n resolve: {\n license: function () {\n return license;\n }\n }\n });\n\n modalInstance.result.then(function () {\n registerLicense(licenseCode);\n });\n }\n\n // send license code to GraphDB for activation\n function registerLicense(licenseCode) {\n if (!licenseCode) {\n licenseCode = textAreaSel.val();\n }\n\n if (licenseCode) {\n // replacing whitespace makes this work on Safari too,\n // whereas other browser happily ignore the whitespace\n const decodedLicense = atob(licenseCode.replace(/\\s/g, ''));\n LicenseRestService.registerLicense(decodedLicense)\n .success(function () {\n $window.history.back();\n }).error(function () {\n toastr.error($translate.instant('license.register.error'));\n });\n } else {\n toastr.error($translate.instant('no.license.code.error'));\n }\n }\n}\n\nValidateLicenseModalCtrl.$inject = ['$scope', '$modalInstance', 'license'];\n\nfunction ValidateLicenseModalCtrl($scope, $modalInstance, license) {\n $scope.ok = ok;\n $scope.cancel = cancel;\n $scope.license = license;\n\n function ok() {\n $modalInstance.close();\n }\n\n function cancel() {\n $modalInstance.dismiss('cancel');\n }\n}\n\nLoaderSamplesCtrl.$inject = ['$scope'];\n\nfunction LoaderSamplesCtrl($scope) {\n $scope.loader = true;\n $scope.setLoader = function (loader) {\n $scope.loader = loader;\n };\n}\n"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/similarity/controllers/create-index.controller.js","webpack:///./src/js/angular/utils/notifications.js"],"names":["CreateSimilarityIdxCtrl","$scope","toastr","$modal","$timeout","SimilarityRestService","SparqlRestService","$location","productInfo","Notifications","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys","$translate","indexType","search","type","undefined","startsWith","viewType","newIndex","info","page","defaultTabConfig","id","name","query","inference","sameAs","initForViewType","indexNameFromLocation","editSearchQuery","options","searchQueries","searchQuery","analogicalQuery","currentQuery","notoolbarInference","notoolbarSameAs","window","editor","setQuery","allSamples","samples","stopList","analyzer","isLiteralIndex","getAndRemoveOption","getIndexes","success","data","literalIndexes","concat","filter","idx","status","map","inputIndex","desiredIdx","j","length","error","msg","getError","instant","filenamePattern","RegExp","validateIndex","invalidIndexName","saveQueries","test","getQueryType","appendOption","option","value","key","optArr","split","i","join","saveQueryToLocal","currentQueryTab","setLoader","isRunning","progressMessage","extraMessage","yasrInnerContainer","angular","element","document","getElementById","queryIsRunning","queryStartTime","Date","now","countTimeouted","addClass","removeClass","$$phase","$apply","fixSizesOnHorizontalViewModeSwitch","verticalViewParam","visibleWindowHeight","innerHeight","documentElement","clientHeight","body","verticalView","orientationViewMode","viewMode","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","timer","$on","cancel","yasr","container","resize","showHideEditor","selectTab","$","tab","runQuery","changePage","explain","executedQueryTab","warning","getQueryMode","explainRequested","currentTabConfig","resultsCount","resetCurrentTabConfig","getNamespaces","getRepositoryNamespaces","usedPrefixes","results","bindings","forEach","e","prefix","namespace","namespaces","repositoryError","finally","addKnownPrefixes","JSON","stringify","getValue","isDefined","setValue","getExistingTabId","existingTabId","tabsData","item","loadTab","queryType","offset","allResultsCount","pageSize","timeFinished","timeTook","sizeDelta","css","getQueryID","attr","getSearchQueries","getSamples","selectQuery","infer","tabs","copy","$watch","helpHidden","get","HIDE_SIMILARITY_HELP","toggleHelp","set","viewQuery","getQuery","indexName","indexOptions","indexStopList","queryInference","querySameAs","indexAnalyzer","open","templateUrl","controller","resolve","isInvalidIndexName","isEmptyIndexName","trim","goToPage","showEditor","notoolbar","createIndex","index","err","url","xhr","abort","showPreview","outputType","queryExists","saveTab","findTabIndexByID","addNewTab","callback","tabName","savedQuery","changePagination","toggleSampleQueries","querySelected","tabId","getLoaderMessage","timeSeconds","timeHuman","getHumanReadableSeconds","message","changeViewMode","tabID","remove","focusQueryEditor","find","is","focus","getActiveRepository","on","$watchCollection","tabEvent","relatedTarget","target","showSampleQueries","sampleQueries","getResultsDescription","getUpdateDescription","getStaleWarningMessage","saveSearchQuery","changedQuery","isSearchQuery","then","async","showToastMessageWithDelay","response","getCloseBtnMsg","operationType","operation","module","$inject","Promise","r","setTimeout","factory"],"mappings":"+FAAA,kBAYA,SAASA,EAAwBC,EAAQC,EAAQC,EAAQC,EAAUC,EAAuBC,EAAmBC,EAAWC,EAAaC,EAAeC,EAA8BC,EAAqBC,EAAQC,GAE3M,MAAMC,EAAYP,EAAUQ,SAASC,UACnBC,IAAdH,GAA2BA,EAAUI,WAAW,QAChDjB,EAAOkB,SAAW,OAElBlB,EAAOkB,SAAWL,EAKtBb,EAAOmB,SAAW,GAElBnB,EAAOoB,KAAOb,EACdP,EAAOqB,KAAO,EAEd,MAAMC,EAAmB,CACrBC,GAAI,IACJC,KAAM,GACNC,MAAO,GACPC,WAAW,EACXC,QAAQ,GAcZ,MAAMC,EAAkB,WAXF,IAAUC,EAwB5B,GAZA7B,EAAO8B,gBAAkBxB,EAAUQ,SAASgB,gBAC5C9B,EAAOqB,KAAOrB,EAAO8B,gBAAkB,EAAI,EAC3C9B,EAAOmB,SAASK,MAdYK,EAcWvB,EAAUQ,SAASU,MAZlC,IAAhBxB,EAAOqB,KACAQ,EAEA,WAAaA,EAGrB,GAOP7B,EAAOmB,SAASY,QAAWzB,EAAUQ,SAASiB,QAAUzB,EAAUQ,SAASiB,QAA+B,SAApB/B,EAAOkB,SA9BtE,kBACA,GA+BnBlB,EAAOgC,gBACPhC,EAAOmB,SAASc,YAAc3B,EAAUQ,SAASmB,YAAc3B,EAAUQ,SAASmB,YAAcjC,EAAOgC,cAAchC,EAAOkB,UACpG,gBAApBlB,EAAOkB,WACPlB,EAAOmB,SAASe,gBAAkB5B,EAAUQ,SAASoB,gBAAkB5B,EAAUQ,SAASoB,gBAAkBlC,EAAOgC,cAA0B,aAIjJhC,EAAO8B,gBAEP9B,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASc,YAC5CjC,EAAOoC,oBAAqB,EAC5BpC,EAAOqC,iBAAkB,EACrBC,OAAOC,QACPvC,EAAOwC,SAASxC,EAAOmB,SAASc,iBAEjC,CACH,GAAwB,SAApBjC,EAAOkB,UAAuBlB,EAAOyC,WAAY,CACjDzC,EAAO0C,QAAU1C,EAAOyC,WAAiB,KACzCzC,EAAOmB,SAASwB,SAAYrC,EAAUQ,SAAS6B,SAAWrC,EAAUQ,SAAS6B,cAAW3B,EACxFhB,EAAOmB,SAASyB,SAAYtC,EAAUQ,SAAS8B,SAAWtC,EAAUQ,SAAS8B,SAAW,gDACxF,MAAMC,EAAiBC,EAAmB,uBACnB9B,IAAnB6B,IACA7C,EAAOmB,SAAS0B,eAAiBA,GAEjCP,OAAOC,QACPvC,EAAOwC,SAASxC,EAAO0C,QAAkB,UAGzB,gBAApB1C,EAAOkB,UAA8BlB,EAAOyC,aAC5CrC,EAAsB2C,aACjBC,SAAQ,SAAUC,GASnB,GARIjD,EAAOkD,eAAiB,CAAC,YAAYC,OAAOF,EACvCG,QAAO,SAAUC,GACd,MAAoB,gBAAbA,EAAItC,OAA0C,UAAfsC,EAAIC,QAAqC,aAAfD,EAAIC,WAEvEC,KAAI,SAAUF,GACX,OAAOA,EAAI7B,cAGYR,IAA/BhB,EAAOmB,SAASqC,WAA0B,CAC1C,MAAMC,EAAaX,EAAmB,gBACtC,QAAmB9B,IAAfyC,EACA,IAAK,IAAIC,EAAI,EAAGA,EAAI1D,EAAOkD,eAAeS,OAAQD,IAC1CD,IAAezD,EAAOkD,eAAeQ,KACrC1D,EAAOmB,SAASqC,WAAaxD,EAAOkD,eAAeQ,SAKhC1C,IAA/BhB,EAAOmB,SAASqC,aAChBxD,EAAOmB,SAASqC,WAAaxD,EAAOkD,eAAe,OAG1DU,OAAM,SAAUX,GACb,MAAMY,EAAMC,SAASb,GACrBhD,EAAO2D,MAAMC,EAAKjD,EAAWmD,QAAQ,8CAGzC/D,EAAO0C,QAAU1C,EAAOyC,WAAwB,YAC5CH,OAAOC,QACPvC,EAAOwC,SAASxC,EAAO0C,QAAqB,gBAMtDsB,EAAkB,IAAIC,OAAO,oBAE7BC,EAAgB,WAGlB,OAFAlE,EAAOmE,kBAAmB,EAC1BnE,EAAOoE,cACFpE,EAAOmB,SAASK,KAIhBwC,EAAgBK,KAAKrE,EAAOmB,SAASK,MAKrCxB,EAAOmB,SAASM,MAKhBzB,EAAOmB,SAASc,YAKG,gBAApBjC,EAAOkB,UAA+BlB,EAAOmB,SAASe,gBAKrB,WAAjCI,OAAOC,OAAO+B,qBACdrE,EAAO2D,MAAMhD,EAAWmD,QAAQ,gDALhC9D,EAAO2D,MAAMhD,EAAWmD,QAAQ,6CACzB,IANP9D,EAAO2D,MAAMhD,EAAWmD,QAAQ,yCACzB,IANP9D,EAAO2D,MAAMhD,EAAWmD,QAAQ,yCACzB,IANP/D,EAAOmE,iBAAmBvD,EAAWmD,QAAQ,qCACtC,IALP/D,EAAOmE,iBAAmBvD,EAAWmD,QAAQ,sCACtC,IA8BTQ,EAAe,SAAUC,EAAQC,GACnCzE,EAAOmB,SAASY,QAAU/B,EAAOmB,SAASY,SAAuC,KAA5B/B,EAAOmB,SAASY,QAAiB,GAAK,KAAOyC,EAAS,IAAMC,GA0OrH,SAAS3B,EAAmB4B,GACxB,MAAMC,EAAS3E,EAAOmB,SAASY,QAAQ6C,MAAM,KAC7C,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAOhB,OAAQkB,IAC/B,GAAIF,EAAOE,KAAOH,GAAOG,EAAI,EAAIF,EAAOhB,OAAQ,CAC5C,MAAMc,EAAQE,EAAOE,EAAI,GAMzB,cAJOF,EAAOE,UACPF,EAAOE,EAAI,GAClB7E,EAAOmB,SAASY,QAAU4C,EAAOG,KAAK,KAE/BL,GAMnB,SAASM,EAAiBC,IAG1B,SAASC,EAAUC,EAAWC,EAAiBC,GAC3C,MAAMC,EAAqBC,QAAQC,QAAQC,SAASC,eAAe,eACnEzF,EAAO0F,eAAiBR,EACpBA,GACAlF,EAAO2F,eAAiBC,KAAKC,MAC7B7F,EAAO8F,gBAAiB,EACxB9F,EAAOmF,gBAAkBA,EACzBnF,EAAOoF,aAAeA,EACtBC,EAAmBU,SAAS,UAE5B/F,EAAOmF,gBAAkB,GACzBnF,EAAOoF,aAAe,GACtBC,EAAmBW,YAAY,SAGZ,OAAnBhG,EAAOiG,SACPjG,EAAOkG,SAsBf,SAASC,EAAmCC,GACxC,SAASC,IACL,OAAO/D,OAAOgE,aAAed,SAASe,gBAAgBC,cAAgBhB,SAASiB,KAAKD,cAAgB,EAGxG,MAAME,EAAeN,EACrB,GAAKpG,EAAO2G,oBAwBL,CACH,GAAwB,SAApB3G,EAAO4G,SAAqB,CAC5B,IAAIC,EAAYR,IAAyBb,SAASsB,cAAc,oBAAoBC,wBAA2B,IAC/GF,GAAa,GACbrB,SAASsB,cAAc,oBAAoBE,MAAMC,OAASJ,EAAY,UAEtE7G,EAAOkH,UAAY,GACnB1B,SAASsB,cAAc,oBAAoBE,MAAMC,OAAS,GAE9DzB,SAASC,eAAe,QAAQuB,MAAMG,UAAY,QA7BlD,GAHAnH,EAAOkH,UAAY,CAACE,aAAc,GAAIC,YAAa,GAG/C/E,OAAOC,QAAUiD,SAASsB,cAAc,oBAAqB,CAC7D,IAAID,EAAYR,IAAyBb,SAASsB,cAAc,oBAAoBC,wBAA2B,IAC/GF,GAAa,GACbrB,SAASsB,cAAc,oBAAoBE,MAAMC,OAASJ,EAAY,KACtErB,SAASC,eAAe,QAAQuB,MAAMG,UAAYN,EAAY,SAE3D,CACH,IAAIS,EAEAA,EAAQnH,EADRuG,EACiB,WACb1G,EAAOmG,mCAAmCO,IAG7B1G,EAAOmG,mCAFrB,KAKPnG,EAAOuH,IAAI,YAAY,WACnBpH,EAASqH,OAAOF,MAcxBhF,OAAOmF,MAAQnF,OAAOmF,KAAKC,WAC3BvH,GAAS,WACLmC,OAAOmF,KAAKC,UAAUC,WACvB,KAoBX,SAASC,IACLzB,GAAmC,GAWvC,SAAS0B,EAAUtG,GACfpB,GAAS,WACL2H,EAAE,gBAAkBvG,EAAK,MAAMwG,IAAI,UACpC,GAIP,SAASC,EAASC,EAAYC,GAC1BlI,EAAOmI,iBAAmBnI,EAAOmC,aACI,WAAjCG,OAAOC,OAAO+B,eAId4D,GAA4C,WAAjC5F,OAAOC,OAAO+B,eACzBrE,EAAOmI,QAAQxH,EAAWmD,QAAQ,iDAID,WAAjCzB,OAAOC,OAAO8F,gBAKlBrI,EAAOsI,iBAAmBJ,EACrBlI,EAAO0F,iBACJuC,EACAjI,EAAOuI,iBAAiBC,aAAe,EAEvCxI,EAAOyI,wBAIXzI,EAAO4G,SAAW,SACd5G,EAAO2G,qBACP3G,EAAOmG,qCAGXlB,GAAU,EAAMrE,EAAWmD,QAAQ,yBACnCzB,OAAOC,OAAOd,UAnBdxB,EAAOmI,QAAQxH,EAAWmD,QAAQ,gCATlC9D,EAAO2D,MAAMhD,EAAWmD,QAAQ,iDAiCxC,SAAS2E,IAELzD,GAAU,EAAMrE,EAAWmD,QAAQ,gCAAiCnD,EAAWmD,QAAQ,yBACvFtD,EAA6BkI,0BACxB3F,SAAQ,SAAUC,GACf,MAAM2F,EAAe,GACrB3F,EAAK4F,QAAQC,SAASC,SAAQ,SAAUC,GACpCJ,EAAaI,EAAEC,OAAOxE,OAASuE,EAAEE,UAAUzE,SAE/CzE,EAAOmJ,WAAaP,KAEvBhF,OAAM,SAAUX,GACbjD,EAAOoJ,gBAAkBtF,SAASb,MAErCoG,SAAQ,WAELpE,GAAU,MAqBtB,SAASqE,IACLjJ,EAAkBiJ,iBAAiBC,KAAKC,UAAUlH,OAAOC,OAAOkH,aAC3DzG,SAAQ,SAAUC,GACXqC,QAAQoE,UAAUpH,OAAOC,SAAW+C,QAAQoE,UAAUzG,IAASA,IAASX,OAAOC,OAAOkH,YACtFnH,OAAOC,OAAOoH,SAAS1G,MAG9BW,OAAM,SAAUX,GACb,MAAMY,EAAMC,SAASb,GAErB,OADAhD,EAAO2D,MAAMC,EAAKjD,EAAWmD,QAAQ,qCAC9B,KAoBnB,SAAS6F,EAAiBnI,GACtB,IAAIoI,OAAgB7I,EAQpB,OAPAsE,QAAQyD,QAAQ/I,EAAO8J,UAAU,SAAUC,GACvC,GAAIA,EAAKvI,OAASC,EAAMD,MAAQuI,EAAKtI,QAAUA,EAAMgF,KAEjD,OADAoD,EAAgBE,EAAKxI,GACdwI,KAIRF,EAmCX,SAASG,IACLhK,EAAO8J,SAAW,CAAC9J,EAAOmC,cAE1B,MAAM4F,EAAM/H,EAAOmC,aAEe,OAA9BnC,EAAOmC,aAAaV,OAAgD,KAA9BzB,EAAOmC,aAAaV,MAE1Da,OAAOC,OAAOoH,SAAS,KAEvBrH,OAAOC,OAAOoH,SAAS3J,EAAOmC,aAAaV,OAAS,KAGxDtB,GAAS,WACLH,EAAOuI,iBAAmB,GAC1BvI,EAAOuI,iBAAiB0B,UAAYlC,EAAIkC,UACxCjK,EAAOuI,iBAAiBC,aAAeT,EAAIS,aAE3CxI,EAAOuI,iBAAiB2B,OAASnC,EAAImC,OACrClK,EAAOuI,iBAAiB4B,gBAAkBpC,EAAIoC,gBAC9CnK,EAAOuI,iBAAiBlH,KAAO0G,EAAI1G,KACnCrB,EAAOuI,iBAAiB6B,SAAWrC,EAAIqC,SAEvCpK,EAAOuI,iBAAiB8B,aAAetC,EAAIsC,aAC3CrK,EAAOuI,iBAAiB+B,SAAWvC,EAAIuC,SACvCtK,EAAOuI,iBAAiBgC,UAAYxC,EAAIwC,UACxCvK,EAAOkG,WACR,GAGH4B,EAAE,SAAS0C,IAAI,UAAW,KAG9B,SAASC,EAAWlF,GAChB,OAAOuC,EAAEvC,GAASmF,KAAK,WAviB3BtK,EAAsBuK,mBAAmB3H,SAAQ,SAAUC,GACvDjD,EAAOgC,cAAgBiB,EACvB7C,EAAsBwK,aAAa5H,SAAQ,SAAUN,GACjDpB,EAAiBG,MAAQnB,EAAUQ,SAAS+J,YAAcvK,EAAUQ,SAAS+J,YAAcnI,EAAc,KAAY,SACrHpB,EAAiBI,YAA2C,UAA7BpB,EAAUQ,SAASgK,OAClDxJ,EAAiBK,SAAyC,UAA9BrB,EAAUQ,SAASa,QAC/C3B,EAAO8J,SAAW9J,EAAO+K,KAAO,CAACzJ,GACjCtB,EAAOmC,aAAemD,QAAQ0F,KAAK1J,GACnCtB,EAAOyC,WAAaC,EACpBd,UAELgC,OAAM,SAAUX,GACf,MAAMY,EAAMC,SAASb,GACrBhD,EAAO2D,MAAMC,EAAKjD,EAAWmD,QAAQ,qDAGzC/D,EAAOiL,OAAO,YAAY,WACtBrJ,OAGJ5B,EAAOkL,WAAsE,IAAzDxK,EAAoByK,IAAIxK,EAAOyK,sBACnDpL,EAAOqL,WAAa,SAAU5G,QACZzD,IAAVyD,IACAA,EAAQ/D,EAAoByK,IAAIxK,EAAOyK,uBAE7B,IAAV3G,GACA/D,EAAoB4K,IAAI3K,EAAOyK,qBAAsB,GACrDpL,EAAOkL,YAAa,IAEpBxK,EAAoB4K,IAAI3K,EAAOyK,qBAAsB,GACrDpL,EAAOkL,YAAa,IAI5BlL,EAAOuL,UAAY,WACVrH,KAIL9D,EAAsBoL,SAAS,CAC3BC,UAAWzL,EAAOmB,SAASK,KAC3BkK,aAAc1L,EAAOmB,SAASY,QAC9BN,MAAOzB,EAAOmC,aAAaV,MAC3BkK,cAAe3L,EAAOmB,SAASwB,SAC/BiJ,eAAgB5L,EAAOmC,aAAaT,UACpCmK,YAAa7L,EAAOmC,aAAaR,OACjCT,SAAUlB,EAAOkB,SACjB4K,cAAe9L,EAAOmB,SAASyB,WAChCI,SAAQ,SAAUvB,GACbA,GACAvB,EAAO6L,KAAK,CACRC,YAAa,uBACbC,WAAY,gBACZC,QAAS,CACLzK,MAAO,WACH,OAAOA,SAKxBmC,OAAM,SAAUA,GACf,MAAMC,EAAMC,SAASF,GACrB3D,EAAO2D,MAAMC,OAIrB7D,EAAOiL,OAAO,iBAAiB,WAC3BjL,EAAOmM,oBAAqB,EAC5BnM,EAAOoM,kBAAmB,KAG9BpM,EAAOoE,YAAc,WAEjB,MAAM3C,EAAQa,OAAOC,OAAOkH,WAAW4C,OACnB,IAAhBrM,EAAOqB,KACPrB,EAAOmB,SAASM,MAAQA,EACD,IAAhBzB,EAAOqB,KACdrB,EAAOmB,SAASc,YAAcR,EACP,IAAhBzB,EAAOqB,OACdrB,EAAOmB,SAASe,gBAAkBT,IAI1CzB,EAAOsM,SAAW,SAAUjL,GAEX,IAATA,GAAkC,SAApBrB,EAAO4G,WACrB5G,EAAOuM,aACPpM,GAAS,WACQ,IAATkB,IACArB,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASc,aAEnC,IAATZ,IACArB,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASe,iBAGhDI,OAAOC,OAAOoH,SAAS3J,EAAOmC,aAAaV,OAAS,SAI5DzB,EAAOoE,cAEM,IAAT/C,EACArB,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASM,MAC5B,IAATJ,EACPrB,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASc,YAC5B,IAATZ,IACPrB,EAAOmC,aAAaV,MAAQzB,EAAOmB,SAASe,iBAGhD8H,IACAhK,EAAOwM,UAAqB,IAATnL,EAEnBrB,EAAOqB,KAAOA,GAGlBrB,EAAOyM,YAAc,WACZvI,KAIL9D,EAAsB2C,aACjBC,SAAQ,SAAUC,GAMf,GALAA,EAAK8F,SAAQ,SAAU2D,GACfA,EAAMlL,OAASxB,EAAOmB,SAASK,OAC/BxB,EAAOmE,iBAAmBvD,EAAWmD,QAAQ,6CAGhD/D,EAAOmE,iBAAkB,CAC1B,IAAItD,EAAYb,EAAOkB,SAEvB,QAA8BF,IAA1BhB,EAAOkD,eAA8B,CACrC,MAAMM,EAAaxD,EAAOmB,SAASqC,WAC/BA,IAAexD,EAAOkD,eAAe,IACrCqB,EAAa,eAAgBf,GAGE,SAAnCxD,EAAOmB,SAAS0B,iBAChB0B,EAAa,iBAAkB,QAC/B1D,EAAY,eAGhBT,EAAsBqM,YAAY,OAC9BzM,EAAOmB,SAASK,KAChBxB,EAAOmB,SAASY,QAChB/B,EAAOmB,SAASM,MAChBzB,EAAOmB,SAASc,YAChBjC,EAAOmB,SAASe,gBAChBlC,EAAOmB,SAASwB,SAChB3C,EAAOmC,aAAaT,UACpB1B,EAAOmC,aAAaR,OACpBd,EACAb,EAAOmB,SAASyB,UACfgB,OAAM,SAAU+I,GACb1M,EAAO2D,MAAME,SAAS6I,GAAM/L,EAAWmD,QAAQ,qCAEvDzD,EAAUsM,IAAI,kBAIrBhJ,OAAM,SAAUX,GACb,MAAMY,EAAMC,SAASb,GACrBhD,EAAO2D,MAAMC,EAAKjD,EAAWmD,QAAQ,+CAKjD/D,EAAOwC,SAAW,SAAUf,GAExBa,OAAOC,OAAOoH,SAASlI,GAAgB,MAM3CzB,EAAOuM,WAAa,WACZjK,OAAOC,OAAOsK,KACdvK,OAAOC,OAAOsK,IAAIC,QAEtB9M,EAAO4G,SAAW,QAGtB5G,EAAO+M,YAAc,WAGjB/M,EAAOmC,aAAa6K,WAAa,QACjChN,EAAOgI,YAGXhI,EAAOyI,sBAAwB,WAC3BzI,EAAOuI,iBAAmB,CACtB6B,SAAU,IACV/I,KAAM,EACN8I,gBAAiB,EACjB3B,aAAc,IAItBxI,EAAOiN,aAAc,EAErBjN,EAAOyI,wBAEPzI,EAAO8J,SAAW9J,EAAO+K,KAAO,CAACzJ,GAGjCtB,EAAOkN,QA2SP,SAAiB3L,GACb,MAAM8B,EAdV,SAA0B9B,GACtB,IAAK,IAAIsD,EAAI,EAAGA,EAAI7E,EAAO8J,SAASnG,OAAQkB,IAAK,CAE7C,GADY7E,EAAO8J,SAASjF,GACpBtD,KAAOA,EACX,OAAOsD,GAUHsI,CAAiB5L,GAE7B,QAAYP,IAARqC,EACA,MAAO,GAEX,MAAM0E,EAAM/H,EAAO8J,SAASzG,GAG5B,OADArD,EAAO+E,iBAAiBgD,GACjBA,GAnTX/H,EAAOgK,QAAUA,EACjBhK,EAAOoN,UAqTP,SAAmBC,EAAUC,EAASC,KAlTtCvN,EAAOgI,SAAWA,EAClBhI,EAAO0I,cAAgBA,EACvB1I,EAAOwN,iBAwNP,WACIxF,GAAS,EAAMhI,EAAOsI,mBAxN1BtI,EAAOyN,oBAoOP,aAnOAzN,EAAOsJ,iBAAmBA,EAC1BtJ,EAAO4J,iBAAmBA,EAC1B5J,EAAO0N,cAyPP,SAAuBjM,GACnB,MAAMkM,EAAQ/D,EAAiBnI,GAC/BzB,EAAOyN,sBACFnI,QAAQoE,UAAUiE,GAGnB9F,EAAU8F,GAFV3N,EAAOoN,UAAU,KAAM3L,EAAMD,KAAMC,EAAMgF,OA5PjDzG,EAAO+E,iBAAmBA,EAE1B/E,EAAOiF,UAAYA,EACnBjF,EAAO4N,iBAmDP,WACI,MAAMC,GAAejI,KAAKC,MAAQ7F,EAAO2F,gBAAkB,IACrDmI,EAAY9N,EAAO+N,wBAAwBF,GACjD,IAAIG,EAAU,GAGVA,EADAhO,EAAOmF,gBACGnF,EAAOmF,gBAAkB,OAAS2I,EAElClN,EAAWmD,QAAQ,2BAA4B,CAAC+J,UAAWA,IAErE9N,EAAOoF,cAAgByI,EAAc,KACrCG,GAAW,KAAOhO,EAAOoF,cAG7B,OAAO4I,GA9DXhO,EAAOmG,mCAAqCA,EAC5CnG,EAAOiO,eAqHP,SAAwBC,GACpBlO,EAAO4G,SAAW,OAClB5G,EAAO2G,qBAAuB3G,EAAO2G,oBACrCR,IACA2B,EAAE,sBAAsBqG,SACxBrG,EAAE,iBAAiBqG,SACnBhO,GAAS,WACL6J,IACAnC,EAAUqG,KACX,MA7HPlO,EAAO4H,eAAiBA,EACxB5H,EAAOoO,iBAmIP,WACS9I,QAAQC,QAAQC,UAAU6I,KAAK,mBAAmBC,GAAG,WACtDhJ,QAAQC,QAAQC,UAAU6I,KAAK,oCAAoCE,SApI3EvO,EAAO2G,qBAAsB,EAG7B3G,EAAOwO,sBA2GFxO,EAAO2G,qBACRiB,IA8FA5H,EAAOwO,uBACP9F,IAGJ1I,EAAOuH,IAAI,YAAY,WACnBjF,OAAOC,OAAS,KAChBD,OAAOmF,KAAO,QAqBlBK,EAAE,YAAY2G,GAAG,SAAS,WACtBtO,GAAS,WACLmJ,MACD,MAsCPtJ,EAAO0O,iBAAiB,iDAAiD,WACpD1O,EAAOmC,gBAsD5BnC,EAAOuH,IAAI,aAAa,SAAUyB,EAAG2F,GAC7BA,EAASC,eACT5O,EAAOkN,QAAQzC,EAAWkE,EAASC,gBAEvC5O,EAAOgK,QAAQS,EAAWkE,EAASE,YAGvC7O,EAAOuH,IAAI,0BAA0B,SAAUyB,EAAG+B,GAC9C/K,EAAO8J,SAAWiB,EAClB/K,EAAO+K,KAAOA,KAIlB/K,EAAOmC,aAAemD,QAAQ0F,KAAK1J,GAEnCtB,EAAO8O,mBAAoB,EAC3B9O,EAAOuN,WAAa,GACpBvN,EAAO+O,cAAgB,GAEvB/O,EAAOgP,sBAAwB,aAG/BhP,EAAOiP,qBAAuB,aAG9BjP,EAAOkP,uBAAyB,aAGhClP,EAAOmP,gBAAkB,WAErB,GAAqC,WAAjC7M,OAAOC,OAAO+B,eAEd,YADArE,EAAO2D,MAAMhD,EAAWmD,QAAQ,+CAGpC,IAAId,EAAO,CACPzB,KAAMxB,EAAOmB,SAASK,KACtB4N,aAAcpP,EAAOmC,aAAaV,MAClC4N,cAA+B,IAAhBrP,EAAOqB,MAG1B,OAAOjB,EAAsB+O,gBAAgB5F,KAAKC,UAAUvG,IACvDqM,MAAKC,uBACI/O,EAAcgP,0BAA0C,IAAhBxP,EAAOqB,KAAa,sCAAwC,2CAC1Gf,EAAUsM,IAAI,iBACf,SAAU6C,GACTxP,EAAO2D,MAAME,SAAS2L,GAAW7O,EAAWmD,QAAQ,sCAIhE/D,EAAO0P,eAAiB,WACpB,IAAIC,EAAgB3P,EAAO8B,gBAAkBlB,EAAWmD,QAAQ,gCAAkCnD,EAAWmD,QAAQ,iCACrH,OAAOnD,EAAWmD,QAAQ,2BAA4B,CAAC6L,UAAWD,KA1vB1ErK,QACKuK,OAAO,kDAAmD,CACvD,wCACA,gDAEH5D,WAAW,0BAA2BlM,GAE3CA,EAAwB+P,QAAU,CAAC,SAAU,SAAU,SAAU,WAAY,wBAAyB,oBAAqB,YAAa,cAAe,gBAAiB,+BAAgC,sBAAuB,SAAU,e,iBCJzO,SAAStP,EAAcP,EAAQW,GAC3B,MAAO,CACH4O,0BASJ,SAAmCxB,GAC/B,OAAO,IAAI+B,QAASC,IAChB/P,EAAO+C,QAAQpC,EAAWmD,QAAQiK,IAClCiC,WAAWD,EAAG,SApB1B1K,QACKuK,OAAO,wCAAyC,IAChDK,QAAQ,gBAAiB1P,GAE9BA,EAAcsP,QAAU,CAAC,SAAU","file":"54.fe5e554af6ba2c5778c1.bundle.js","sourcesContent":["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', '$modal', '$timeout', 'SimilarityRestService', 'SparqlRestService', '$location', 'productInfo', 'Notifications', 'RDF4JRepositoriesRestService', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction CreateSimilarityIdxCtrl($scope, toastr, $modal, $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 $modal.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","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"],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/autocomplete/controllers.js"],"names":["AutocompleteCtrl","$scope","$interval","toastr","$repositories","$licenseService","$modal","$timeout","AutocompleteRestService","$autocompleteStatus","$translate","timer","cancelTimer","cancel","pluginName","setPluginIsActive","isPluginActive","pluginIsActive","refreshEnabledStatus","checkAutocompleteStatus","success","data","autocompleteEnabled","setAutocompleteStatus","error","getError","refreshIndexIRIs","shouldIndexIRIs","refreshIndexStatus","indexStatus","refreshLabelConfig","labelConfig","checkForPlugin","pluginFound","setLoader","loading","finally","pullStatus","$broadcast","$on","loader","message","loaderTimeout","loaderMessage","getLoaderMessage","instant","toggleAutocomplete","newValue","toggleIndexIRIs","buildIndex","interruptIndexing","getDegradedReason","addLabel","editLabel","labelIri","languages","label","isNew","open","templateUrl","controller","resolve","result","then","addLabelConfig","removeLabel","removeLabelConfig","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","AddLabelCtrl","$modalInstance","angular","copy","ok","form","$valid","close","dismiss","setTemplate","iri","$","focus","module","$inject"],"mappings":"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","file":"56.9c6f6ecafc1909c42dda.bundle.js","sourcesContent":["import 'angular/rest/autocomplete.rest.service';\n\nconst modules = [\n 'toastr',\n 'graphdb.framework.rest.autocomplete.service'\n];\n\nangular\n .module('graphdb.framework.autocomplete.controllers', modules)\n .controller('AutocompleteCtrl', AutocompleteCtrl)\n .controller('AddLabelCtrl', AddLabelCtrl);\n\nAutocompleteCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$modal', '$timeout', 'AutocompleteRestService', '$autocompleteStatus', '$translate'];\n\nfunction AutocompleteCtrl($scope, $interval, toastr, $repositories, $licenseService, $modal, $timeout, AutocompleteRestService, $autocompleteStatus, $translate) {\n\n let timer;\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.pluginName = 'autocomplete';\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n };\n\n const refreshEnabledStatus = function () {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (data) {\n $scope.autocompleteEnabled = data;\n $autocompleteStatus.setAutocompleteStatus(data);\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexIRIs = function () {\n AutocompleteRestService.refreshIndexIRIs()\n .success(function (data) {\n $scope.shouldIndexIRIs = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshIndexStatus = function () {\n AutocompleteRestService.refreshIndexStatus()\n .success(function (data) {\n $scope.indexStatus = data;\n })\n .error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const refreshLabelConfig = function () {\n AutocompleteRestService.refreshLabelConfig()\n .success(function (data) {\n $scope.labelConfig = data;\n }).error(function (data) {\n toastr.error(getError(data));\n });\n };\n\n const addLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n\n AutocompleteRestService.addLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const removeLabelConfig = function (label) {\n $scope.setLoader(true, $translate.instant('autocomplete.update'));\n\n AutocompleteRestService.removeLabelConfig(label)\n .success(function () {\n refreshLabelConfig();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.checkForPlugin = function () {\n $scope.pluginFound = false;\n\n $scope.setLoader(true);\n\n AutocompleteRestService.checkForPlugin()\n .success(function (data) {\n $scope.pluginFound = data === true;\n if ($scope.pluginFound) {\n refreshEnabledStatus();\n refreshIndexIRIs();\n refreshIndexStatus();\n refreshLabelConfig();\n } else {\n $scope.autocompleteEnabled = false;\n $scope.loading = false;\n }\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n const pullStatus = function () {\n timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($scope.autocompleteEnabled) {\n refreshIndexStatus();\n }\n }, 5000);\n };\n\n $scope.$on(\"$destroy\", function () {\n cancelTimer();\n });\n\n const init = function() {\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.toggleAutocomplete = function () {\n const newValue = !$scope.autocompleteEnabled;\n $scope.setLoader(true, newValue ? $translate.instant('autocomplete.enabling') : $translate.instant('autocomplete.disabling'));\n\n AutocompleteRestService.toggleAutocomplete(newValue)\n .success(function () {\n refreshEnabledStatus();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.toggleIndexIRIs = function () {\n $scope.setLoader(true, ($translate.instant('autocomplete.index.iri')));\n\n AutocompleteRestService.toggleIndexIRIs(!$scope.shouldIndexIRIs)\n .success(function () {\n refreshIndexIRIs();\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.buildIndex = function () {\n $scope.setLoader(true, $translate.instant('autocomplete.index.build'));\n\n AutocompleteRestService.buildIndex()\n .success(function () {\n $scope.indexStatus = 'BUILDING';\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.interruptIndexing = function () {\n $scope.setLoader(true, $translate.instant('index.interrupt'));\n\n AutocompleteRestService.interruptIndexing()\n .success(function () {\n refreshIndexStatus();\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.addLabel = function () {\n $scope.editLabel({labelIri: '', languages: ''}, true);\n };\n\n $scope.editLabel = function (label, isNew) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/autocomplete/templates/modal/add-label.html',\n controller: 'AddLabelCtrl',\n resolve: {\n data: function () {\n return {\n label: label,\n isNew: isNew\n };\n }\n }\n });\n\n modalInstance.result.then(function (label) {\n addLabelConfig(label);\n });\n };\n\n $scope.removeLabel = function (label) {\n removeLabelConfig(label);\n };\n\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n $scope.checkForPlugin();\n pullStatus();\n });\n\n init();\n}\n\nAddLabelCtrl.$inject = ['$scope', '$modalInstance', '$timeout', 'data'];\n\nfunction AddLabelCtrl($scope, $modalInstance, $timeout, data) {\n $scope.label = angular.copy(data.label);\n $scope.isNew = data.isNew;\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n $modalInstance.close($scope.label);\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n\n $scope.setTemplate = function (iri) {\n $scope.label.labelIri = iri;\n $timeout(function () {\n $('#wb-autocomplete-languages').focus();\n }, 0);\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[61],{43:function(a,e){angular.module("graphdb.framework.core.directives.paginations",[]).directive("paginations",(function(){return{template:'<pagination class="nav navbar-right" total-items="matchedElements.length" items-per-page="pageSize" ng-model="page" ng-change="changePagination()" direction-links="false" boundary-links="true" max-size="5" rotate="true"></pagination>'}}))}}]);
2
- //# sourceMappingURL=61.faf4ab26276a053ccac5.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/core/directives/paginations.js"],"names":["angular","module","directive","template"],"mappings":"2EAAAA,QAAQC,OAAO,gDAAiD,IAC3DC,UAAU,eAAe,WACtB,MAAO,CACHC,SAAU","file":"61.faf4ab26276a053ccac5.bundle.js","sourcesContent":["angular.module('graphdb.framework.core.directives.paginations', [])\n .directive('paginations', function () {\n return {\n template: '<pagination class=\"nav navbar-right\" total-items=\"matchedElements.length\" items-per-page=\"pageSize\" ng-model=\"page\" ng-change=\"changePagination()\" direction-links=\"false\" boundary-links=\"true\" max-size=\"5\" rotate=\"true\"></pagination>',\n };\n });\n"],"sourceRoot":""}