graphdb-workbench 2.1.2 → 2.1.3-TR1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/{0.1bd9b49fd9f95db7afda.bundle.js → 0.6f85dbec9122f837f5e7.bundle.js} +3 -3
  2. package/dist/0.6f85dbec9122f837f5e7.bundle.js.map +1 -0
  3. package/dist/{10.cabc799d9aabc46e7be7.bundle.js → 10.0d7e127640f8c0678145.bundle.js} +2 -2
  4. package/dist/{10.cabc799d9aabc46e7be7.bundle.js.map → 10.0d7e127640f8c0678145.bundle.js.map} +1 -1
  5. package/dist/{100.24bbc960b22ec8f26f68.bundle.js → 100.8a2c21d9df10d17f9291.bundle.js} +2 -2
  6. package/dist/{100.24bbc960b22ec8f26f68.bundle.js.map → 100.8a2c21d9df10d17f9291.bundle.js.map} +1 -1
  7. package/dist/{11.b2fd98471071348c3964.bundle.js → 11.c8ad938cfc97d57b4d9e.bundle.js} +2 -2
  8. package/dist/{11.b2fd98471071348c3964.bundle.js.map → 11.c8ad938cfc97d57b4d9e.bundle.js.map} +1 -1
  9. package/dist/{110.7419abdcd9b1e7b062ad.bundle.js → 110.4c6719423e79f089e594.bundle.js} +2 -2
  10. package/dist/{110.7419abdcd9b1e7b062ad.bundle.js.map → 110.4c6719423e79f089e594.bundle.js.map} +1 -1
  11. package/dist/{111.87635664a5306fc0c6bb.bundle.js → 111.93eb21f8bd85a9ef5d1b.bundle.js} +2 -2
  12. package/dist/{111.87635664a5306fc0c6bb.bundle.js.map → 111.93eb21f8bd85a9ef5d1b.bundle.js.map} +1 -1
  13. package/dist/{113.2a67bc73a80f0bbf6397.bundle.js → 113.b77f2a783cadc7a2d428.bundle.js} +2 -2
  14. package/dist/{113.2a67bc73a80f0bbf6397.bundle.js.map → 113.b77f2a783cadc7a2d428.bundle.js.map} +1 -1
  15. package/dist/114.db473421180e7bce6495.bundle.js +2 -0
  16. package/dist/114.db473421180e7bce6495.bundle.js.map +1 -0
  17. package/dist/{115.6751a154fb77d1efeec8.bundle.js → 115.00597ad4f535ccc61e03.bundle.js} +2 -2
  18. package/dist/{115.6751a154fb77d1efeec8.bundle.js.map → 115.00597ad4f535ccc61e03.bundle.js.map} +1 -1
  19. package/dist/{116.75f79d13526f131b61f0.bundle.js → 116.7a3c48b8b4348e54c7fd.bundle.js} +2 -2
  20. package/dist/{116.75f79d13526f131b61f0.bundle.js.map → 116.7a3c48b8b4348e54c7fd.bundle.js.map} +1 -1
  21. package/dist/{117.17c60bd040eada2f965d.bundle.js → 117.49b3141cc6594af99fbf.bundle.js} +2 -2
  22. package/dist/{117.17c60bd040eada2f965d.bundle.js.map → 117.49b3141cc6594af99fbf.bundle.js.map} +1 -1
  23. package/dist/{118.fc48834f75995ef9202f.bundle.js → 118.e1ebd5f3d7cf4f8e013a.bundle.js} +2 -2
  24. package/dist/{118.fc48834f75995ef9202f.bundle.js.map → 118.e1ebd5f3d7cf4f8e013a.bundle.js.map} +1 -1
  25. package/dist/{119.44cc6552449537efa8f5.bundle.js → 119.0427b867fee545388a66.bundle.js} +2 -2
  26. package/dist/{119.44cc6552449537efa8f5.bundle.js.map → 119.0427b867fee545388a66.bundle.js.map} +1 -1
  27. package/dist/{12.c008cc99a0d358fd58b7.bundle.js → 12.6bd2906fb955b8456713.bundle.js} +3 -3
  28. package/dist/{12.c008cc99a0d358fd58b7.bundle.js.map → 12.6bd2906fb955b8456713.bundle.js.map} +1 -1
  29. package/dist/{120.8f48d9b3f8071e4c42fd.bundle.js → 120.923b20db8c2c297742d8.bundle.js} +2 -2
  30. package/dist/{120.8f48d9b3f8071e4c42fd.bundle.js.map → 120.923b20db8c2c297742d8.bundle.js.map} +1 -1
  31. package/dist/13.d7290e4e69a54c71e974.bundle.js +3 -0
  32. package/dist/13.d7290e4e69a54c71e974.bundle.js.map +1 -0
  33. package/dist/136.3199d393576be61f53fd.bundle.js +1 -1
  34. package/dist/136.3199d393576be61f53fd.bundle.js.map +1 -1
  35. package/dist/14.638a884323fe9235b58f.bundle.js +2 -0
  36. package/dist/14.638a884323fe9235b58f.bundle.js.map +1 -0
  37. package/dist/{15.e870cbcf6346cc68bd66.bundle.js → 15.244542a39d9296cc4fd8.bundle.js} +2 -2
  38. package/dist/{15.e870cbcf6346cc68bd66.bundle.js.map → 15.244542a39d9296cc4fd8.bundle.js.map} +1 -1
  39. package/dist/{16.23e12f234078c8777ed0.bundle.js → 16.3b52e17f123523d84054.bundle.js} +2 -2
  40. package/dist/{16.23e12f234078c8777ed0.bundle.js.map → 16.3b52e17f123523d84054.bundle.js.map} +1 -1
  41. package/dist/{17.d1ac5f88f9ef9ee1c789.bundle.js → 17.a417430fca1e34e80912.bundle.js} +2 -2
  42. package/dist/{17.d1ac5f88f9ef9ee1c789.bundle.js.map → 17.a417430fca1e34e80912.bundle.js.map} +1 -1
  43. package/dist/{18.63478730d60e02069d90.bundle.js → 18.d6e541cf8e651a6d223e.bundle.js} +2 -2
  44. package/dist/{18.63478730d60e02069d90.bundle.js.map → 18.d6e541cf8e651a6d223e.bundle.js.map} +1 -1
  45. package/dist/19.b5b3699a309774176fc3.bundle.js +1 -1
  46. package/dist/19.b5b3699a309774176fc3.bundle.js.map +1 -1
  47. package/dist/{20.d707dfb57f695469ffaa.bundle.js → 20.a40b79082e0f2a9b3511.bundle.js} +2 -2
  48. package/dist/{20.d707dfb57f695469ffaa.bundle.js.map → 20.a40b79082e0f2a9b3511.bundle.js.map} +1 -1
  49. package/dist/{22.e1562d53daf95dd1fdca.bundle.js → 22.5f70a951e87768500861.bundle.js} +2 -2
  50. package/dist/{22.e1562d53daf95dd1fdca.bundle.js.map → 22.5f70a951e87768500861.bundle.js.map} +1 -1
  51. package/dist/{23.c1b822e6ccc61632355b.bundle.js → 23.3b94ee5770665e9f7ad6.bundle.js} +2 -2
  52. package/dist/{23.c1b822e6ccc61632355b.bundle.js.map → 23.3b94ee5770665e9f7ad6.bundle.js.map} +1 -1
  53. package/dist/{25.8c30b7bafb4875a3cc51.bundle.js → 25.7d9b6d389e1b3c30a2af.bundle.js} +2 -2
  54. package/dist/{25.8c30b7bafb4875a3cc51.bundle.js.map → 25.7d9b6d389e1b3c30a2af.bundle.js.map} +1 -1
  55. package/dist/26.176ffe2071a8d5d382b6.bundle.js +1 -1
  56. package/dist/26.176ffe2071a8d5d382b6.bundle.js.map +1 -1
  57. package/dist/{27.be71055c959c1ac75177.bundle.js → 27.5f249c88f0d56e478227.bundle.js} +2 -2
  58. package/dist/{27.be71055c959c1ac75177.bundle.js.map → 27.5f249c88f0d56e478227.bundle.js.map} +1 -1
  59. package/dist/{29.54cbff989a44a0f71dfd.bundle.js → 29.263746fd089adc12c9eb.bundle.js} +2 -2
  60. package/dist/{29.54cbff989a44a0f71dfd.bundle.js.map → 29.263746fd089adc12c9eb.bundle.js.map} +1 -1
  61. package/dist/31.4ecdb66b2c224a63525e.bundle.js +1 -1
  62. package/dist/31.4ecdb66b2c224a63525e.bundle.js.map +1 -1
  63. package/dist/{32.2582e2eccf29e8d5ec80.bundle.js → 32.31e5cd1ae5b1b26d0bc9.bundle.js} +2 -2
  64. package/dist/{32.2582e2eccf29e8d5ec80.bundle.js.map → 32.31e5cd1ae5b1b26d0bc9.bundle.js.map} +1 -1
  65. package/dist/34.024934549565ec56f905.bundle.js +2 -0
  66. package/dist/34.024934549565ec56f905.bundle.js.map +1 -0
  67. package/dist/{37.ef412d4cbc60967faa5e.bundle.js → 37.48944284f495dd519b6b.bundle.js} +2 -2
  68. package/dist/{37.ef412d4cbc60967faa5e.bundle.js.map → 37.48944284f495dd519b6b.bundle.js.map} +1 -1
  69. package/dist/{39.be2d8c75e4ab391ba984.bundle.js → 39.cd39b4ee76d8238325b0.bundle.js} +2 -2
  70. package/dist/{39.be2d8c75e4ab391ba984.bundle.js.map → 39.cd39b4ee76d8238325b0.bundle.js.map} +1 -1
  71. package/dist/{40.9272ebe1d2246ae3054f.bundle.js → 40.ba69b25514acd93c43c1.bundle.js} +2 -2
  72. package/dist/{40.9272ebe1d2246ae3054f.bundle.js.map → 40.ba69b25514acd93c43c1.bundle.js.map} +1 -1
  73. package/dist/{41.f69dd805b7e51756518f.bundle.js → 41.97280c0900f9b44ab8aa.bundle.js} +2 -2
  74. package/dist/{41.f69dd805b7e51756518f.bundle.js.map → 41.97280c0900f9b44ab8aa.bundle.js.map} +1 -1
  75. package/dist/43.166d4f55ba11d29b26ce.bundle.js +2 -0
  76. package/dist/43.166d4f55ba11d29b26ce.bundle.js.map +1 -0
  77. package/dist/46.c417c82de953a16f7489.bundle.js +2 -0
  78. package/dist/{46.a9d1c07290ab98930744.bundle.js.map → 46.c417c82de953a16f7489.bundle.js.map} +1 -1
  79. package/dist/{48.3c8d17c03f3fc081be89.bundle.js → 48.1c439f5ade00b986bb85.bundle.js} +2 -2
  80. package/dist/{48.3c8d17c03f3fc081be89.bundle.js.map → 48.1c439f5ade00b986bb85.bundle.js.map} +1 -1
  81. package/dist/{55.10bb020070b8c5910e4c.bundle.js → 55.80d6a899d8af7d382755.bundle.js} +2 -2
  82. package/dist/{55.10bb020070b8c5910e4c.bundle.js.map → 55.80d6a899d8af7d382755.bundle.js.map} +1 -1
  83. package/dist/{57.f432e4a7f6dbf5fa9e6e.bundle.js → 57.ff1a43af23df1c3e9eb6.bundle.js} +2 -2
  84. package/dist/{57.f432e4a7f6dbf5fa9e6e.bundle.js.map → 57.ff1a43af23df1c3e9eb6.bundle.js.map} +1 -1
  85. package/dist/{59.feebf4602360cb8257bb.bundle.js → 59.21763503ec43ce516ba9.bundle.js} +2 -2
  86. package/dist/{59.feebf4602360cb8257bb.bundle.js.map → 59.21763503ec43ce516ba9.bundle.js.map} +1 -1
  87. package/dist/{67.58d8539fcac19288b820.bundle.js → 67.d3301189c6f359502b7a.bundle.js} +2 -2
  88. package/dist/{67.58d8539fcac19288b820.bundle.js.map → 67.d3301189c6f359502b7a.bundle.js.map} +1 -1
  89. package/dist/{70.ede527b8438e19a67ebc.bundle.js → 70.bab18e599872f9ceb5bb.bundle.js} +2 -2
  90. package/dist/{70.ede527b8438e19a67ebc.bundle.js.map → 70.bab18e599872f9ceb5bb.bundle.js.map} +1 -1
  91. package/dist/{71.2ddcb945966fd051a3a1.bundle.js → 71.496a9c92cd02ea797086.bundle.js} +2 -2
  92. package/dist/{71.2ddcb945966fd051a3a1.bundle.js.map → 71.496a9c92cd02ea797086.bundle.js.map} +1 -1
  93. package/dist/{72.d2f8a53e83efcb8ab953.bundle.js → 72.e74783723284db9f1039.bundle.js} +2 -2
  94. package/dist/{72.d2f8a53e83efcb8ab953.bundle.js.map → 72.e74783723284db9f1039.bundle.js.map} +1 -1
  95. package/dist/{73.c29f06e5825684d56a9c.bundle.js → 73.c5ea427972a9d61d8bcf.bundle.js} +2 -2
  96. package/dist/{73.c29f06e5825684d56a9c.bundle.js.map → 73.c5ea427972a9d61d8bcf.bundle.js.map} +1 -1
  97. package/dist/{74.b50a23c1751e0fc30aec.bundle.js → 74.87400dce971708ada9bc.bundle.js} +2 -2
  98. package/dist/{74.b50a23c1751e0fc30aec.bundle.js.map → 74.87400dce971708ada9bc.bundle.js.map} +1 -1
  99. package/dist/{75.4f9197361b6427d97b6c.bundle.js → 75.f7026115ff4d35c53061.bundle.js} +2 -2
  100. package/dist/{75.4f9197361b6427d97b6c.bundle.js.map → 75.f7026115ff4d35c53061.bundle.js.map} +1 -1
  101. package/dist/{76.467d072ae323ab41fd3d.bundle.js → 76.7ed7e2f7802914105a2b.bundle.js} +2 -2
  102. package/dist/{76.467d072ae323ab41fd3d.bundle.js.map → 76.7ed7e2f7802914105a2b.bundle.js.map} +1 -1
  103. package/dist/{77.41a60a354d0fb3103b00.bundle.js → 77.8df8d6516be14b18a7c2.bundle.js} +2 -2
  104. package/dist/{77.41a60a354d0fb3103b00.bundle.js.map → 77.8df8d6516be14b18a7c2.bundle.js.map} +1 -1
  105. package/dist/{78.7de8a0f70f6dc1debd05.bundle.js → 78.3d0eba733bb5b528ee23.bundle.js} +2 -2
  106. package/dist/{78.7de8a0f70f6dc1debd05.bundle.js.map → 78.3d0eba733bb5b528ee23.bundle.js.map} +1 -1
  107. package/dist/{79.2f8b2ebcbd07d466c913.bundle.js → 79.f2adb62d49e1ff69c73d.bundle.js} +2 -2
  108. package/dist/{79.2f8b2ebcbd07d466c913.bundle.js.map → 79.f2adb62d49e1ff69c73d.bundle.js.map} +1 -1
  109. package/dist/{8.b21d6a5c1a9412deb34f.bundle.js → 8.fd2fec54b66b2afe1253.bundle.js} +2 -2
  110. package/dist/8.fd2fec54b66b2afe1253.bundle.js.map +1 -0
  111. package/dist/{80.8e71a1aaf3beb2320bf0.bundle.js → 80.40f6ab44b0f5a37f1f1b.bundle.js} +2 -2
  112. package/dist/{80.8e71a1aaf3beb2320bf0.bundle.js.map → 80.40f6ab44b0f5a37f1f1b.bundle.js.map} +1 -1
  113. package/dist/{81.2939c5d2b47cf48be6d5.bundle.js → 81.63bb784ce719c97dccc2.bundle.js} +2 -2
  114. package/dist/{81.2939c5d2b47cf48be6d5.bundle.js.map → 81.63bb784ce719c97dccc2.bundle.js.map} +1 -1
  115. package/dist/{82.69913e9f45a1dd96c6be.bundle.js → 82.f722c4f985e7c7375b7d.bundle.js} +2 -2
  116. package/dist/{82.69913e9f45a1dd96c6be.bundle.js.map → 82.f722c4f985e7c7375b7d.bundle.js.map} +1 -1
  117. package/dist/83.73515cde0a2215275d32.bundle.js +1 -1
  118. package/dist/83.73515cde0a2215275d32.bundle.js.map +1 -1
  119. package/dist/{84.5e89f3253c2c5885f662.bundle.js → 84.ed814bb2e6caa09eaf59.bundle.js} +2 -2
  120. package/dist/{84.5e89f3253c2c5885f662.bundle.js.map → 84.ed814bb2e6caa09eaf59.bundle.js.map} +1 -1
  121. package/dist/{85.f6ae072160876c4c5beb.bundle.js → 85.c1a85a647349f948774e.bundle.js} +2 -2
  122. package/dist/{85.f6ae072160876c4c5beb.bundle.js.map → 85.c1a85a647349f948774e.bundle.js.map} +1 -1
  123. package/dist/{88.4bfa7b74511d52c5c42f.bundle.js → 88.d3afc4e8e2613c803b60.bundle.js} +2 -2
  124. package/dist/{88.4bfa7b74511d52c5c42f.bundle.js.map → 88.d3afc4e8e2613c803b60.bundle.js.map} +1 -1
  125. package/dist/{89.6e767bc84921c435570c.bundle.js → 89.e206f700717532b86d4a.bundle.js} +2 -2
  126. package/dist/{89.6e767bc84921c435570c.bundle.js.map → 89.e206f700717532b86d4a.bundle.js.map} +1 -1
  127. package/dist/{90.5c5efc19e9053c029343.bundle.js → 90.192cdf37db2b7fe57457.bundle.js} +2 -2
  128. package/dist/{90.5c5efc19e9053c029343.bundle.js.map → 90.192cdf37db2b7fe57457.bundle.js.map} +1 -1
  129. package/dist/{92.b601c9bc8133fcf28163.bundle.js → 92.3adcb08e3ce3aa2196d9.bundle.js} +2 -2
  130. package/dist/{92.b601c9bc8133fcf28163.bundle.js.map → 92.3adcb08e3ce3aa2196d9.bundle.js.map} +1 -1
  131. package/dist/{94.4b1ada797602e279b977.bundle.js → 94.b7d4fbf7b903b58bbb9f.bundle.js} +2 -2
  132. package/dist/{94.4b1ada797602e279b977.bundle.js.map → 94.b7d4fbf7b903b58bbb9f.bundle.js.map} +1 -1
  133. package/dist/{95.95758068abd9eac4ed40.bundle.js → 95.4f4ec7e3bf1e54b69e22.bundle.js} +2 -2
  134. package/dist/{95.95758068abd9eac4ed40.bundle.js.map → 95.4f4ec7e3bf1e54b69e22.bundle.js.map} +1 -1
  135. package/dist/{98.8f1b6e94748a6049ed93.bundle.js → 98.46fcd4b9d0cee530a965.bundle.js} +2 -2
  136. package/dist/{98.8f1b6e94748a6049ed93.bundle.js.map → 98.46fcd4b9d0cee530a965.bundle.js.map} +1 -1
  137. package/dist/{bundle.595d7082ecc6c2683c9a.bundle.js → bundle.e02c0ceb3243288288de.bundle.js} +15 -15
  138. package/dist/bundle.e02c0ceb3243288288de.bundle.js.map +1 -0
  139. package/dist/css/yasr.custom.css +5 -1
  140. package/dist/index.html +4 -4
  141. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  142. package/dist/{main.96399f8393ca515638d2.bundle.js → main.e83e6336936d01c58d59.bundle.js} +2 -2
  143. package/dist/{main.96399f8393ca515638d2.bundle.js.map → main.e83e6336936d01c58d59.bundle.js.map} +1 -1
  144. package/dist/{main.c3519a595e24d0a69ccd.css → main.fa014240754b8b1655a9.css} +1 -1
  145. package/dist/pages/autocomplete.html +1 -1
  146. package/dist/pages/choose-repository-type.html +1 -1
  147. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  148. package/dist/pages/create-index.html +4 -4
  149. package/dist/pages/dependencies.html +1 -1
  150. package/dist/pages/domainRangeInfo.html +2 -2
  151. package/dist/pages/edit.html +1 -1
  152. package/dist/pages/explore.html +1 -1
  153. package/dist/pages/export.html +1 -1
  154. package/dist/pages/find.html +1 -1
  155. package/dist/pages/graph-config/saveGraphConfig.html +15 -15
  156. package/dist/pages/graphs-visualizations.html +14 -14
  157. package/dist/pages/guides.html +1 -1
  158. package/dist/pages/import.html +1 -1
  159. package/dist/pages/jdbc-create.html +5 -5
  160. package/dist/pages/monitor/queries.html +1 -1
  161. package/dist/pages/monitor/resources.html +2 -2
  162. package/dist/pages/namespaces.html +4 -4
  163. package/dist/pages/plugins.html +1 -1
  164. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  165. package/dist/pages/rdfrank.html +2 -2
  166. package/dist/pages/repositories.html +2 -2
  167. package/dist/pages/repository.html +2 -2
  168. package/dist/pages/similarity-indexes.html +1 -1
  169. package/dist/pages/sparql-template-create.html +5 -5
  170. package/dist/pages/sparql.html +3 -3
  171. package/dist/pages/webapi.html +2 -2
  172. package/dist/res/swagger/index.html +27 -27
  173. package/dist/{vendor.31cf390ca240d8cd1ef3.bundle.js → vendor.7492dbcfefe195da8d15.bundle.js} +6 -6
  174. package/dist/{vendor.31cf390ca240d8cd1ef3.bundle.js.map → vendor.7492dbcfefe195da8d15.bundle.js.map} +1 -1
  175. package/package.json +1 -1
  176. package/dist/0.1bd9b49fd9f95db7afda.bundle.js.map +0 -1
  177. package/dist/114.ed2c2d1606cd75dbd7c6.bundle.js +0 -2
  178. package/dist/114.ed2c2d1606cd75dbd7c6.bundle.js.map +0 -1
  179. package/dist/13.9b9388352980715b16bb.bundle.js +0 -3
  180. package/dist/13.9b9388352980715b16bb.bundle.js.map +0 -1
  181. package/dist/14.c512cd1282fe7dec36bf.bundle.js +0 -2
  182. package/dist/14.c512cd1282fe7dec36bf.bundle.js.map +0 -1
  183. package/dist/34.100b126b4d89e99d4ac4.bundle.js +0 -2
  184. package/dist/34.100b126b4d89e99d4ac4.bundle.js.map +0 -1
  185. package/dist/43.f76be157f75bc7b3ea68.bundle.js +0 -2
  186. package/dist/43.f76be157f75bc7b3ea68.bundle.js.map +0 -1
  187. package/dist/46.a9d1c07290ab98930744.bundle.js +0 -2
  188. package/dist/8.b21d6a5c1a9412deb34f.bundle.js.map +0 -1
  189. package/dist/bundle.595d7082ecc6c2683c9a.bundle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/repositories/app.js","webpack:///./src/js/angular/settings/controllers.js","webpack:///./src/js/angular/repositories/ontop-repo.directive.js","webpack:///./src/js/angular/repositories/fedx-repo.directive.js","webpack:///./src/js/angular/settings/app.js"],"names":["angular","module","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","$licenseService","$rootScope","ModalService","loadingLicense","checkLicenseStatus","revertToFree","openSimpleModal","title","message","warning","result","unregisterLicense","RegisterLicenseCtrl","$location","$modal","$window","$jwtAuth","$on","isAdmin","path","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","$inject","ontopRepoDirective","RepositoriesRestService","Upload","restrict","scope","link","selectedDriver","driverType","driverName","jdbc","hostName","port","databaseName","userName","password","driverClass","url","urlTemplate","downloadDriverUrl","ontopRepoFileNames","supportedDriversData","ontopRepoFileLabels","propertiesFile","obdaFile","owlFile","constraintFile","dbMetadataFile","ontopRepoFiles","Object","keys","forEach","key","repositoryInfo","params","value","supportedDriverLabels","propertiesFileParams","classAvailable","genericDriverType","REQUIRED_ONTOP_REPO_PARAMS","REQUIRED_PROPERTIES_FIELD_PARAMS","updateProperties","filter","requiredField","length","Promise","reject","uploadFileLoader","updatePropertiesFile","location","fileLocation","showErrorMsg","loadDriverByClass","foundDriver","find","driver","copyDriverProperties","selectDriverByType","concatURL","portRequired","isReadOnly","labelName","editFile","updateRepositoryFileContent","content","uploadOntopRepoFile","files","param","uploadFile","upload","name","errorMessage","getInputType","checkForRequiredOntopFiles","requiredFile","validateOntopPropertiesConnection","isOntopRepoFileUploaded","isRequiredOntopRepoFile","indexOf","isRequiredField","field","getFieldTooltip","repoTooltips","ontop","editOntopRepo","editRepository","catch","err","createOntopRepo","id","createRepo","goBackToPrevious","goBackToPreviousLocation","getSupportedDriversData","editRepoPage","loadPropertiesFile","driverData","parseInt","directive","fedxRepoDirective","LOCAL_REPO_STORE","fedxMembers","knownRepos","allAttachedRepos","member","slice","populateKnownRepos","repo","repositoryServer","repositoryName","local","getKnownRepos","getRepositories","repos","_","values","push","apply","cloneDeep","setWritableRepo","currentWritable","writable","store","JSON","stringify","getActiveClass","checkIfRepoExist","getRepositoryServer","localReposTimer","setInterval","updateMembers","removeEndingSlash","checkEditMode","model","editMode","clearInterval","addMember","repository","repoType","type","respectRights","username","supportsASKQueries","removeMember","el","endpoint","repositoryLocation","addRemoteMember","mode","sparqlEndpoint","getMemberIcon","editFedXRepository","resolveName","resolvedName","config","$httpProvider","interceptors","run","isLicenseHardcoded"],"mappings":"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","file":"20.d707dfb57f695469ffaa.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/repositories/controllers';\nimport 'angular/repositories/ontop-repo.directive';\nimport 'angular/repositories/fedx-repo.directive';\nimport 'angular/core/services/repositories.service';\nimport 'angular/settings/app';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'ngCookies',\n 'ngRoute',\n 'graphdb.framework.repositories.controllers',\n 'graphdb.framework.repositories.ontop-repo.directive',\n 'graphdb.framework.repositories.fedx-repo.directive',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.settings'\n];\n\nangular.module('graphdb.framework.repositories', modules);\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","import {getFileName} from \"./controllers\";\n\nangular\n .module('graphdb.framework.repositories.ontop-repo.directive', [])\n .directive('ontopRepo', ontopRepoDirective);\n\nontopRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', 'Upload', '$translate'];\n\nfunction ontopRepoDirective($modal, RepositoriesRestService, toastr, Upload, $translate) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/ontop-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n $scope.selectedDriver = {\n driverType: \"generic\",\n driverName: \"Generic JDBC Driver\",\n jdbc: {\n hostName: \"\",\n port: \"\",\n databaseName: \"\",\n userName: \"\",\n password: \"\",\n driverClass: \"\",\n url: \"\"\n },\n urlTemplate: \"\",\n downloadDriverUrl: \"\"\n };\n $scope.ontopRepoFileNames = {};\n $scope.supportedDriversData = [];\n $scope.ontopRepoFileLabels =\n {propertiesFile: 'JDBC properties', obdaFile: 'OBDA or R2RML', owlFile: 'ontology file',\n constraintFile: 'constraint file', dbMetadataFile: 'DB metadata file'};\n $scope.ontopRepoFiles = Object.keys($scope.ontopRepoFileLabels);\n $scope.ontopRepoFiles.forEach(function(key) {\n if ($scope.repositoryInfo.params[key]) {\n $scope.ontopRepoFileNames[key] = getFileName($scope.repositoryInfo.params[key].value);\n }\n });\n $scope.supportedDriverLabels = {hostName: 'Hostname', port: \"Port\", databaseName: 'Database name',\n userName: 'Username', password: 'Password', driverClass: 'Driver class', url: 'URL'};\n $scope.propertiesFileParams = Object.keys($scope.supportedDriverLabels);\n $scope.classAvailable = false;\n $scope.genericDriverType = 'generic';\n $scope.propertiesFile = 'propertiesFile';\n\n const REQUIRED_ONTOP_REPO_PARAMS = [$scope.propertiesFile, 'obdaFile'];\n const REQUIRED_PROPERTIES_FIELD_PARAMS = ['hostName', 'databaseName', 'userName'];\n\n function getSupportedDriversData() {\n return RepositoriesRestService.getSupportedDriversData($scope.repositoryInfo)\n .success(function (response) {\n $scope.supportedDriversData = response;\n }).error(function (response) {\n showErrorMsg($translate.instant('common.error'), response);\n });\n }\n\n $scope.loadDriverByClass = function (driverClass) {\n const foundDriver = $scope.supportedDriversData\n .find((driver) => driver.driverClass === driverClass);\n if (foundDriver) {\n $scope.copyDriverProperties(foundDriver);\n }\n return foundDriver;\n };\n\n $scope.selectDriverByType = function (driverType) {\n $scope.copyDriverProperties($scope.supportedDriversData\n .find((driver) => driver.driverType === driverType));\n // Call concatURL with proper labelName to apply changes to url field\n $scope.concatURL('hostName', $scope);\n };\n\n $scope.copyDriverProperties = function (driver) {\n $scope.selectedDriver.driverType = driver.driverType;\n $scope.selectedDriver.jdbc.driverClass = driver.driverClass;\n $scope.selectedDriver.jdbc.url = driver.urlTemplate;\n $scope.selectedDriver.urlTemplate = driver.urlTemplate;\n $scope.selectedDriver.downloadDriverUrl = driver.downloadDriverUrl;\n $scope.selectedDriver.portRequired = driver.portRequired;\n $scope.classAvailable = driver.classAvailable;\n };\n\n $scope.isReadOnly = function (labelName) {\n return labelName === 'driverClass' || labelName === 'url';\n }\n\n $scope.editFile = function(file) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/editRepoFile.html',\n controller: 'EditRepositoryFileCtrl',\n resolve: {\n file: function () {\n return $scope.repositoryInfo.params[file] ? $scope.repositoryInfo.params[file].value : '';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n // send data to backend\n RepositoriesRestService.updateRepositoryFileContent(data.fileLocation, data.content, $scope.repositoryInfo.location).success(function(result) {\n $scope.ontopRepoFileNames[file] = getFileName(result.fileLocation);\n $scope.repositoryInfo.params[file].value = result.fileLocation;\n }).error(function (error) {\n showErrorMsg($translate.instant('common.error'), error);\n })\n });\n }\n\n $scope.uploadOntopRepoFile = function(files, param) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/file/upload',\n data: {file: $scope.uploadFile, location: $scope.repositoryInfo.location}\n })\n .success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n } else {\n $scope.ontopRepoFileNames[param] = $scope.uploadFile.name;\n $scope.repositoryInfo.params[param].value = data.fileLocation;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n }\n\n $scope.concatURL = function(labelName) {\n if (labelName === 'hostName' || labelName === 'port' || labelName === 'databaseName') {\n let result = $scope.selectedDriver.urlTemplate;\n if ($scope.selectedDriver.jdbc.hostName) {\n if ($scope.selectedDriver.jdbc.port) {\n result = result.replace('{hostport}',\n `${$scope.selectedDriver.jdbc.hostName}:${$scope.selectedDriver.jdbc.port}`);\n } else {\n result = result.replace('{hostport}', $scope.selectedDriver.jdbc.hostName);\n }\n }\n\n if ($scope.selectedDriver.jdbc.databaseName) {\n result = result.replace('{database}', $scope.selectedDriver.jdbc.databaseName);\n }\n\n $scope.selectedDriver.jdbc.url = result;\n }\n }\n\n $scope.getInputType = function (labelName) {\n switch (labelName) {\n case 'password':\n return 'password';\n case 'port':\n return 'number';\n default:\n return 'text';\n }\n }\n\n $scope.checkForRequiredOntopFiles = function () {\n // Should guarantee that code will be executed in sequential manner,\n // because properties file is not created yet\n return updateProperties()\n .then(function () {\n const missingRequired = REQUIRED_ONTOP_REPO_PARAMS.filter(function (requiredFile) {\n return !$scope.repositoryInfo.params[requiredFile].value;\n });\n if (missingRequired.length > 0) {\n toastr.error($translate.instant('ontop.repo.missing.required.file.error'));\n return Promise.reject($translate.instant('ontop.repo.missing.required.file.error'));\n }\n return Promise.resolve();\n });\n }\n\n function loadPropertiesFile() {\n RepositoriesRestService.loadPropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.repositoryInfo.location)\n .success(function (driverData) {\n const driver = $scope.loadDriverByClass(driverData.driverClass);\n // If driver class is not found means that the selected driver is a GENERIC ONE\n if (driver) {\n $scope.selectedDriver.jdbc.hostName = driverData.hostName;\n $scope.selectedDriver.jdbc.port = parseInt(driverData.port);\n $scope.selectedDriver.jdbc.databaseName = driverData.databaseName;\n $scope.selectedDriver.jdbc.userName = driverData.userName;\n $scope.selectedDriver.jdbc.password = driverData.password;\n $scope.selectedDriver.jdbc.url = driverData.url;\n }\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.validateOntopPropertiesConnection = function () {\n updateProperties()\n .then(function () {\n RepositoriesRestService.validateOntopPropertiesConnection($scope.repositoryInfo)\n .success(function () {\n toastr.success($translate.instant('ontop.repo.successful.connection.msg'));\n }).error(function (data) {\n showErrorMsg($translate.instant('ontop.repo.failed.to.connect'), data);\n });\n });\n }\n\n $scope.isOntopRepoFileUploaded = function() {\n return $scope.repositoryInfo.params.propertiesFile &&\n $scope.repositoryInfo.params.propertiesFile.value.length > 0\n };\n\n function missingRequiredField() {\n const missing = REQUIRED_PROPERTIES_FIELD_PARAMS\n .filter(function (requiredField) {\n return !$scope.selectedDriver.jdbc[requiredField]\n });\n if (missing.length > 0) {\n toastr.error($translate.instant('missing.required.field.error'));\n return true;\n }\n return false;\n }\n\n function updateProperties() {\n if ($scope.selectedDriver.driverType !== $scope.genericDriverType) {\n if (missingRequiredField()) {\n return Promise.reject($translate.instant('missing.required.field.error'));\n }\n return updatePropertiesFile();\n }\n return Promise.resolve();\n }\n\n function updatePropertiesFile() {\n $scope.uploadFileLoader = true;\n return RepositoriesRestService\n .updatePropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.selectedDriver.jdbc, $scope.repositoryInfo.location)\n .success(function (data) {\n $scope.ontopRepoFileNames[$scope.propertiesFile] = getFileName(data.fileLocation);\n $scope.repositoryInfo.params[$scope.propertiesFile].value = data.fileLocation;\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.isRequiredOntopRepoFile = function(file) {\n return REQUIRED_ONTOP_REPO_PARAMS.indexOf(file) > -1;\n };\n\n $scope.isRequiredField = function (field) {\n return REQUIRED_PROPERTIES_FIELD_PARAMS.indexOf(field) > -1\n || field === 'port' && $scope.selectedDriver.portRequired;\n };\n\n $scope.getFieldTooltip = function (field) {\n if (field === 'port' && $scope.selectedDriver.portRequired) {\n field = 'portIfRequired';\n }\n return $scope.repoTooltips.ontop[field];\n };\n\n $scope.editOntopRepo = function () {\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.editRepository();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n }\n\n $scope.createOntopRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.createRepo();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n };\n\n $scope.goBackToPrevious = function () {\n $scope.goBackToPreviousLocation();\n }\n\n function showErrorMsg (title, data) {\n const msg = getError(data);\n toastr.error(msg, title);\n }\n\n getSupportedDriversData()\n .then(function () {\n if ($scope.editRepoPage) {\n loadPropertiesFile();\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.repositories.fedx-repo.directive', [])\n .directive('fedxRepo', fedxRepoDirective);\n\nfedxRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', '$translate'];\n\nfunction fedxRepoDirective($modal, RepositoriesRestService, toastr, $translate) {\n return {\n restrict: 'E',\n scope: true,\n templateUrl: 'js/angular/repositories/templates/fedx-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n const LOCAL_REPO_STORE = 'ResolvableRepository';\n const REMOTE_REPO_STORE = 'RemoteRepository';\n const SPARQL_ENDPOINT_STORE = 'SPARQLEndpoint';\n const NATIVE_STORE = 'NativeStore';\n\n $scope.fedxMembers = [];\n $scope.knownRepos = [];\n $scope.allAttachedRepos = [];\n\n if ($scope.editRepoPage) {\n $scope.fedxMembers = $scope.repositoryInfo.params.member.value.slice();\n }\n\n function getRepositories() {\n return RepositoriesRestService.getRepositories($scope.repositoryInfo.location)\n .success(function (response) {\n let repos = [];\n _.values(response).forEach((value) => {\n repos.push.apply(repos, value);\n });\n $scope.allAttachedRepos = _.cloneDeep(repos);\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n function populateKnownRepos() {\n for (const member of $scope.fedxMembers) {\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n // if the member is a remote attached member\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n // if the member is a local one\n return repo.id !== member.repositoryName || !repo.local;\n }\n });\n }\n }\n\n $scope.setWritableRepo = function (member) {\n let currentWritable = getWritableRepo();\n if (currentWritable) {\n if (currentWritable.store === LOCAL_REPO_STORE && (member.store !== LOCAL_REPO_STORE || currentWritable.repositoryName !== member.repositoryName) ) {\n currentWritable.writable = 'false';\n } else if (currentWritable.store === REMOTE_REPO_STORE && (member.store !== REMOTE_REPO_STORE || currentWritable.repositoryName !== member.repositoryName || currentWritable.repositoryServer !== member.repositoryServer)) {\n currentWritable.writable = 'false';\n }\n }\n member.writable = JSON.stringify(member.writable === 'false');\n }\n\n $scope.getActiveClass = function (member) {\n return member.writable === 'true' ? ' active' : '';\n }\n\n function getWritableRepo() {\n return $scope.fedxMembers.find(member => member.writable === \"true\");\n }\n\n function getKnownRepos() {\n getRepositories()\n .then(function () {\n $scope.knownRepos = $scope.allAttachedRepos.slice();\n populateKnownRepos();\n });\n }\n\n $scope.checkIfRepoExist = function (member) {\n if (!$scope.allAttachedRepos.length) {\n return true;\n }\n if (member.store === LOCAL_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && !repo.location);\n } else if (member.store === REMOTE_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && repo.location === member.repositoryServer);\n } else {\n return true;\n }\n }\n\n $scope.getRepositoryServer = function (repo) {\n if (repo.local) {\n return \"Local\";\n } else {\n return repo.location;\n }\n }\n\n const localReposTimer = setInterval(function () {\n getKnownRepos();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n clearInterval(localReposTimer);\n });\n\n $scope.addMember = function(repository) {\n let member;\n if ($scope.getRepositoryServer(repository) === \"Local\") {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: repository.id,\n repoType: repository.type,\n respectRights: \"true\",\n writable: \"false\"\n };\n } else {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: repository.id,\n repositoryServer: repository.location,\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n };\n }\n $scope.knownRepos = $scope.knownRepos.filter(repo => repo.id !== repository.id || repo.location !== repository.location);\n updateMembers(member);\n }\n\n $scope.removeMember = function (member) {\n if (member.store && member.store === LOCAL_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName && !el.repositoryServer);\n getKnownRepos();\n } else if (member.store && member.store === SPARQL_ENDPOINT_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n } else if (member.store && member.store === NATIVE_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryLocation !== member.repositoryLocation);\n } else if (member.store && member.store === REMOTE_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n getKnownRepos();\n }\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n $scope.addRemoteMember = function () {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: false,\n store: REMOTE_REPO_STORE,\n repositoryName: '',\n repositoryServer: '',\n sparqlEndpoint: '',\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope,\n });\n };\n\n $scope.getMemberIcon = function (member) {\n if (member.repoType) {\n return 'icon-repo-' + member.repoType;\n } else if (member.store === NATIVE_STORE) {\n return 'icon-warning';\n } else {\n return 'icon-link';\n }\n }\n\n $scope.editFedXRepository = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n $scope.mode = 'local';\n $scope.model = {\n editMode: true,\n store: member.store,\n respectRights: member.respectRights,\n repositoryName: member.repositoryName,\n repoType: member.repoType,\n writable: member.writable\n }\n } else {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: true,\n store: member.store,\n repositoryName: member.repositoryName,\n repositoryServer: member.repositoryServer,\n sparqlEndpoint: member.store === SPARQL_ENDPOINT_STORE ? member.endpoint : member.repositoryLocation,\n username: member.username,\n password: member.password,\n supportsASKQueries: member.supportsASKQueries,\n writable: member.writable\n }\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope\n });\n };\n\n $scope.resolveName = function (member) {\n switch (member.store) {\n case LOCAL_REPO_STORE : {\n return member.repositoryName;\n }\n case REMOTE_REPO_STORE : {\n return member.repositoryName + '@' + member.repositoryServer;\n }\n case SPARQL_ENDPOINT_STORE : {\n return member.endpoint;\n }\n case NATIVE_STORE : {\n return member.repositoryLocation;\n }\n default :\n return \"\";\n }\n }\n\n $scope.cancel = function () {\n $scope.$modalInstance.dismiss('cancel');\n };\n\n function updateMembers(member) {\n $scope.fedxMembers.push(member);\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n function removeEndingSlash(url) {\n return url.slice(-1) === '/' ? url.slice(0, -1) : url\n }\n\n function checkEditMode() {\n return $scope.editRepoPage && !$scope.editRepoPage || !$scope.model.editMode;\n }\n\n $scope.ok = function () {\n let member;\n if ($scope.model.repositoryName && $scope.model.store === LOCAL_REPO_STORE) {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repoType: $scope.model.repoType,\n respectRights: $scope.model.respectRights,\n writable: $scope.model.writable\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store );\n } else if ($scope.model.repositoryName && $scope.model.store === REMOTE_REPO_STORE) {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repositoryServer: removeEndingSlash($scope.model.repositoryServer),\n username: $scope.model.username,\n password: $scope.model.password,\n writable: $scope.model.writable\n };\n if (checkEditMode() && $scope.fedxMembers.find(el => el.repositoryName === member.repositoryName\n && el.repositoryServer === member.repositoryServer)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.member.error', {name: resolvedName}));\n $scope.$modalInstance.close();\n return;\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n } else {\n member = {\n store: SPARQL_ENDPOINT_STORE,\n endpoint: removeEndingSlash($scope.model.sparqlEndpoint),\n username: $scope.model.username,\n password: $scope.model.password,\n supportsASKQueries: $scope.model.supportsASKQueries,\n writable: $scope.model.writable\n };\n\n if (checkEditMode() && $scope.fedxMembers.find(el => el.endpoint === member.endpoint)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.sparql.endpoint.error', {name: resolvedName}));\n $scope.$modalInstance.close();\n return;\n }\n\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n }\n\n updateMembers(member);\n populateKnownRepos();\n $scope.$modalInstance.close();\n };\n\n $scope.$on('changedLocation', function () {\n $scope.fedxMembers = [];\n getKnownRepos();\n });\n\n getKnownRepos();\n }\n}\n","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"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/repositories/app.js","webpack:///./src/js/angular/settings/controllers.js","webpack:///./src/js/angular/repositories/ontop-repo.directive.js","webpack:///./src/js/angular/repositories/fedx-repo.directive.js","webpack:///./src/js/angular/settings/app.js"],"names":["angular","module","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","$licenseService","$rootScope","ModalService","loadingLicense","checkLicenseStatus","revertToFree","openSimpleModal","title","message","warning","result","unregisterLicense","RegisterLicenseCtrl","$location","$modal","$window","$jwtAuth","$on","isAdmin","path","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","$inject","ontopRepoDirective","RepositoriesRestService","Upload","restrict","scope","link","selectedDriver","driverType","driverName","jdbc","hostName","port","databaseName","userName","password","driverClass","url","urlTemplate","downloadDriverUrl","ontopRepoFileNames","supportedDriversData","ontopRepoFileLabels","propertiesFile","obdaFile","owlFile","constraintFile","dbMetadataFile","ontopRepoFiles","Object","keys","forEach","key","repositoryInfo","params","value","supportedDriverLabels","propertiesFileParams","classAvailable","genericDriverType","REQUIRED_ONTOP_REPO_PARAMS","REQUIRED_PROPERTIES_FIELD_PARAMS","updateProperties","filter","requiredField","length","Promise","reject","uploadFileLoader","updatePropertiesFile","location","fileLocation","showErrorMsg","loadDriverByClass","foundDriver","find","driver","copyDriverProperties","selectDriverByType","concatURL","portRequired","isReadOnly","labelName","editFile","updateRepositoryFileContent","content","uploadOntopRepoFile","files","param","uploadFile","upload","name","errorMessage","getInputType","checkForRequiredOntopFiles","requiredFile","validateOntopPropertiesConnection","isOntopRepoFileUploaded","isRequiredOntopRepoFile","indexOf","isRequiredField","field","getFieldTooltip","repoTooltips","ontop","editOntopRepo","editRepository","catch","err","createOntopRepo","id","createRepo","goBackToPrevious","goBackToPreviousLocation","getSupportedDriversData","editRepoPage","loadPropertiesFile","driverData","parseInt","directive","fedxRepoDirective","LOCAL_REPO_STORE","fedxMembers","knownRepos","allAttachedRepos","member","slice","populateKnownRepos","repo","repositoryServer","repositoryName","local","getKnownRepos","getRepositories","repos","_","values","push","apply","cloneDeep","setWritableRepo","currentWritable","writable","store","JSON","stringify","getActiveClass","checkIfRepoExist","getRepositoryServer","localReposTimer","setInterval","updateMembers","removeEndingSlash","checkEditMode","model","editMode","clearInterval","addMember","repository","repoType","type","respectRights","username","supportsASKQueries","removeMember","el","endpoint","repositoryLocation","addRemoteMember","mode","sparqlEndpoint","getMemberIcon","editFedXRepository","resolveName","resolvedName","config","$httpProvider","interceptors","run","isLicenseHardcoded"],"mappings":"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","file":"20.a40b79082e0f2a9b3511.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/repositories/controllers';\nimport 'angular/repositories/ontop-repo.directive';\nimport 'angular/repositories/fedx-repo.directive';\nimport 'angular/core/services/repositories.service';\nimport 'angular/settings/app';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'ngCookies',\n 'ngRoute',\n 'graphdb.framework.repositories.controllers',\n 'graphdb.framework.repositories.ontop-repo.directive',\n 'graphdb.framework.repositories.fedx-repo.directive',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.settings'\n];\n\nangular.module('graphdb.framework.repositories', modules);\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","import {getFileName} from \"./controllers\";\n\nangular\n .module('graphdb.framework.repositories.ontop-repo.directive', [])\n .directive('ontopRepo', ontopRepoDirective);\n\nontopRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', 'Upload', '$translate'];\n\nfunction ontopRepoDirective($modal, RepositoriesRestService, toastr, Upload, $translate) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/ontop-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n $scope.selectedDriver = {\n driverType: \"generic\",\n driverName: \"Generic JDBC Driver\",\n jdbc: {\n hostName: \"\",\n port: \"\",\n databaseName: \"\",\n userName: \"\",\n password: \"\",\n driverClass: \"\",\n url: \"\"\n },\n urlTemplate: \"\",\n downloadDriverUrl: \"\"\n };\n $scope.ontopRepoFileNames = {};\n $scope.supportedDriversData = [];\n $scope.ontopRepoFileLabels =\n {propertiesFile: 'JDBC properties', obdaFile: 'OBDA or R2RML', owlFile: 'ontology file',\n constraintFile: 'constraint file', dbMetadataFile: 'DB metadata file'};\n $scope.ontopRepoFiles = Object.keys($scope.ontopRepoFileLabels);\n $scope.ontopRepoFiles.forEach(function(key) {\n if ($scope.repositoryInfo.params[key]) {\n $scope.ontopRepoFileNames[key] = getFileName($scope.repositoryInfo.params[key].value);\n }\n });\n $scope.supportedDriverLabels = {hostName: 'Hostname', port: \"Port\", databaseName: 'Database name',\n userName: 'Username', password: 'Password', driverClass: 'Driver class', url: 'URL'};\n $scope.propertiesFileParams = Object.keys($scope.supportedDriverLabels);\n $scope.classAvailable = false;\n $scope.genericDriverType = 'generic';\n $scope.propertiesFile = 'propertiesFile';\n\n const REQUIRED_ONTOP_REPO_PARAMS = [$scope.propertiesFile, 'obdaFile'];\n const REQUIRED_PROPERTIES_FIELD_PARAMS = ['hostName', 'databaseName', 'userName'];\n\n function getSupportedDriversData() {\n return RepositoriesRestService.getSupportedDriversData($scope.repositoryInfo)\n .success(function (response) {\n $scope.supportedDriversData = response;\n }).error(function (response) {\n showErrorMsg($translate.instant('common.error'), response);\n });\n }\n\n $scope.loadDriverByClass = function (driverClass) {\n const foundDriver = $scope.supportedDriversData\n .find((driver) => driver.driverClass === driverClass);\n if (foundDriver) {\n $scope.copyDriverProperties(foundDriver);\n }\n return foundDriver;\n };\n\n $scope.selectDriverByType = function (driverType) {\n $scope.copyDriverProperties($scope.supportedDriversData\n .find((driver) => driver.driverType === driverType));\n // Call concatURL with proper labelName to apply changes to url field\n $scope.concatURL('hostName', $scope);\n };\n\n $scope.copyDriverProperties = function (driver) {\n $scope.selectedDriver.driverType = driver.driverType;\n $scope.selectedDriver.jdbc.driverClass = driver.driverClass;\n $scope.selectedDriver.jdbc.url = driver.urlTemplate;\n $scope.selectedDriver.urlTemplate = driver.urlTemplate;\n $scope.selectedDriver.downloadDriverUrl = driver.downloadDriverUrl;\n $scope.selectedDriver.portRequired = driver.portRequired;\n $scope.classAvailable = driver.classAvailable;\n };\n\n $scope.isReadOnly = function (labelName) {\n return labelName === 'driverClass' || labelName === 'url';\n }\n\n $scope.editFile = function(file) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/editRepoFile.html',\n controller: 'EditRepositoryFileCtrl',\n resolve: {\n file: function () {\n return $scope.repositoryInfo.params[file] ? $scope.repositoryInfo.params[file].value : '';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n // send data to backend\n RepositoriesRestService.updateRepositoryFileContent(data.fileLocation, data.content, $scope.repositoryInfo.location).success(function(result) {\n $scope.ontopRepoFileNames[file] = getFileName(result.fileLocation);\n $scope.repositoryInfo.params[file].value = result.fileLocation;\n }).error(function (error) {\n showErrorMsg($translate.instant('common.error'), error);\n })\n });\n }\n\n $scope.uploadOntopRepoFile = function(files, param) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/file/upload',\n data: {file: $scope.uploadFile, location: $scope.repositoryInfo.location}\n })\n .success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n } else {\n $scope.ontopRepoFileNames[param] = $scope.uploadFile.name;\n $scope.repositoryInfo.params[param].value = data.fileLocation;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n }\n\n $scope.concatURL = function(labelName) {\n if (labelName === 'hostName' || labelName === 'port' || labelName === 'databaseName') {\n let result = $scope.selectedDriver.urlTemplate;\n if ($scope.selectedDriver.jdbc.hostName) {\n if ($scope.selectedDriver.jdbc.port) {\n result = result.replace('{hostport}',\n `${$scope.selectedDriver.jdbc.hostName}:${$scope.selectedDriver.jdbc.port}`);\n } else {\n result = result.replace('{hostport}', $scope.selectedDriver.jdbc.hostName);\n }\n }\n\n if ($scope.selectedDriver.jdbc.databaseName) {\n result = result.replace('{database}', $scope.selectedDriver.jdbc.databaseName);\n }\n\n $scope.selectedDriver.jdbc.url = result;\n }\n }\n\n $scope.getInputType = function (labelName) {\n switch (labelName) {\n case 'password':\n return 'password';\n case 'port':\n return 'number';\n default:\n return 'text';\n }\n }\n\n $scope.checkForRequiredOntopFiles = function () {\n // Should guarantee that code will be executed in sequential manner,\n // because properties file is not created yet\n return updateProperties()\n .then(function () {\n const missingRequired = REQUIRED_ONTOP_REPO_PARAMS.filter(function (requiredFile) {\n return !$scope.repositoryInfo.params[requiredFile].value;\n });\n if (missingRequired.length > 0) {\n toastr.error($translate.instant('ontop.repo.missing.required.file.error'));\n return Promise.reject($translate.instant('ontop.repo.missing.required.file.error'));\n }\n return Promise.resolve();\n });\n }\n\n function loadPropertiesFile() {\n RepositoriesRestService.loadPropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.repositoryInfo.location)\n .success(function (driverData) {\n const driver = $scope.loadDriverByClass(driverData.driverClass);\n // If driver class is not found means that the selected driver is a GENERIC ONE\n if (driver) {\n $scope.selectedDriver.jdbc.hostName = driverData.hostName;\n $scope.selectedDriver.jdbc.port = parseInt(driverData.port);\n $scope.selectedDriver.jdbc.databaseName = driverData.databaseName;\n $scope.selectedDriver.jdbc.userName = driverData.userName;\n $scope.selectedDriver.jdbc.password = driverData.password;\n $scope.selectedDriver.jdbc.url = driverData.url;\n }\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.validateOntopPropertiesConnection = function () {\n updateProperties()\n .then(function () {\n RepositoriesRestService.validateOntopPropertiesConnection($scope.repositoryInfo)\n .success(function () {\n toastr.success($translate.instant('ontop.repo.successful.connection.msg'));\n }).error(function (data) {\n showErrorMsg($translate.instant('ontop.repo.failed.to.connect'), data);\n });\n });\n }\n\n $scope.isOntopRepoFileUploaded = function() {\n return $scope.repositoryInfo.params.propertiesFile &&\n $scope.repositoryInfo.params.propertiesFile.value.length > 0\n };\n\n function missingRequiredField() {\n const missing = REQUIRED_PROPERTIES_FIELD_PARAMS\n .filter(function (requiredField) {\n return !$scope.selectedDriver.jdbc[requiredField]\n });\n if (missing.length > 0) {\n toastr.error($translate.instant('missing.required.field.error'));\n return true;\n }\n return false;\n }\n\n function updateProperties() {\n if ($scope.selectedDriver.driverType !== $scope.genericDriverType) {\n if (missingRequiredField()) {\n return Promise.reject($translate.instant('missing.required.field.error'));\n }\n return updatePropertiesFile();\n }\n return Promise.resolve();\n }\n\n function updatePropertiesFile() {\n $scope.uploadFileLoader = true;\n return RepositoriesRestService\n .updatePropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.selectedDriver.jdbc, $scope.repositoryInfo.location)\n .success(function (data) {\n $scope.ontopRepoFileNames[$scope.propertiesFile] = getFileName(data.fileLocation);\n $scope.repositoryInfo.params[$scope.propertiesFile].value = data.fileLocation;\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg($translate.instant('common.error'), data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.isRequiredOntopRepoFile = function(file) {\n return REQUIRED_ONTOP_REPO_PARAMS.indexOf(file) > -1;\n };\n\n $scope.isRequiredField = function (field) {\n return REQUIRED_PROPERTIES_FIELD_PARAMS.indexOf(field) > -1\n || field === 'port' && $scope.selectedDriver.portRequired;\n };\n\n $scope.getFieldTooltip = function (field) {\n if (field === 'port' && $scope.selectedDriver.portRequired) {\n field = 'portIfRequired';\n }\n return $scope.repoTooltips.ontop[field];\n };\n\n $scope.editOntopRepo = function () {\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.editRepository();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n }\n\n $scope.createOntopRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.createRepo();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n };\n\n $scope.goBackToPrevious = function () {\n $scope.goBackToPreviousLocation();\n }\n\n function showErrorMsg (title, data) {\n const msg = getError(data);\n toastr.error(msg, title);\n }\n\n getSupportedDriversData()\n .then(function () {\n if ($scope.editRepoPage) {\n loadPropertiesFile();\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.repositories.fedx-repo.directive', [])\n .directive('fedxRepo', fedxRepoDirective);\n\nfedxRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', '$translate'];\n\nfunction fedxRepoDirective($modal, RepositoriesRestService, toastr, $translate) {\n return {\n restrict: 'E',\n scope: true,\n templateUrl: 'js/angular/repositories/templates/fedx-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n const LOCAL_REPO_STORE = 'ResolvableRepository';\n const REMOTE_REPO_STORE = 'RemoteRepository';\n const SPARQL_ENDPOINT_STORE = 'SPARQLEndpoint';\n const NATIVE_STORE = 'NativeStore';\n\n $scope.fedxMembers = [];\n $scope.knownRepos = [];\n $scope.allAttachedRepos = [];\n\n if ($scope.editRepoPage) {\n $scope.fedxMembers = $scope.repositoryInfo.params.member.value.slice();\n }\n\n function getRepositories() {\n return RepositoriesRestService.getRepositories($scope.repositoryInfo.location)\n .success(function (response) {\n let repos = [];\n _.values(response).forEach((value) => {\n repos.push.apply(repos, value);\n });\n $scope.allAttachedRepos = _.cloneDeep(repos);\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n function populateKnownRepos() {\n for (const member of $scope.fedxMembers) {\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n // if the member is a remote attached member\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n // if the member is a local one\n return repo.id !== member.repositoryName || !repo.local;\n }\n });\n }\n }\n\n $scope.setWritableRepo = function (member) {\n let currentWritable = getWritableRepo();\n if (currentWritable) {\n if (currentWritable.store === LOCAL_REPO_STORE && (member.store !== LOCAL_REPO_STORE || currentWritable.repositoryName !== member.repositoryName) ) {\n currentWritable.writable = 'false';\n } else if (currentWritable.store === REMOTE_REPO_STORE && (member.store !== REMOTE_REPO_STORE || currentWritable.repositoryName !== member.repositoryName || currentWritable.repositoryServer !== member.repositoryServer)) {\n currentWritable.writable = 'false';\n }\n }\n member.writable = JSON.stringify(member.writable === 'false');\n }\n\n $scope.getActiveClass = function (member) {\n return member.writable === 'true' ? ' active' : '';\n }\n\n function getWritableRepo() {\n return $scope.fedxMembers.find(member => member.writable === \"true\");\n }\n\n function getKnownRepos() {\n getRepositories()\n .then(function () {\n $scope.knownRepos = $scope.allAttachedRepos.slice();\n populateKnownRepos();\n });\n }\n\n $scope.checkIfRepoExist = function (member) {\n if (!$scope.allAttachedRepos.length) {\n return true;\n }\n if (member.store === LOCAL_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && !repo.location);\n } else if (member.store === REMOTE_REPO_STORE) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && repo.location === member.repositoryServer);\n } else {\n return true;\n }\n }\n\n $scope.getRepositoryServer = function (repo) {\n if (repo.local) {\n return \"Local\";\n } else {\n return repo.location;\n }\n }\n\n const localReposTimer = setInterval(function () {\n getKnownRepos();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n clearInterval(localReposTimer);\n });\n\n $scope.addMember = function(repository) {\n let member;\n if ($scope.getRepositoryServer(repository) === \"Local\") {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: repository.id,\n repoType: repository.type,\n respectRights: \"true\",\n writable: \"false\"\n };\n } else {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: repository.id,\n repositoryServer: repository.location,\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n };\n }\n $scope.knownRepos = $scope.knownRepos.filter(repo => repo.id !== repository.id || repo.location !== repository.location);\n updateMembers(member);\n }\n\n $scope.removeMember = function (member) {\n if (member.store && member.store === LOCAL_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName && !el.repositoryServer);\n getKnownRepos();\n } else if (member.store && member.store === SPARQL_ENDPOINT_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n } else if (member.store && member.store === NATIVE_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryLocation !== member.repositoryLocation);\n } else if (member.store && member.store === REMOTE_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.store !== member.store || el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n getKnownRepos();\n }\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n $scope.addRemoteMember = function () {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: false,\n store: REMOTE_REPO_STORE,\n repositoryName: '',\n repositoryServer: '',\n sparqlEndpoint: '',\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope,\n });\n };\n\n $scope.getMemberIcon = function (member) {\n if (member.repoType) {\n return 'icon-repo-' + member.repoType;\n } else if (member.store === NATIVE_STORE) {\n return 'icon-warning';\n } else {\n return 'icon-link';\n }\n }\n\n $scope.editFedXRepository = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n $scope.mode = 'local';\n $scope.model = {\n editMode: true,\n store: member.store,\n respectRights: member.respectRights,\n repositoryName: member.repositoryName,\n repoType: member.repoType,\n writable: member.writable\n }\n } else {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: true,\n store: member.store,\n repositoryName: member.repositoryName,\n repositoryServer: member.repositoryServer,\n sparqlEndpoint: member.store === SPARQL_ENDPOINT_STORE ? member.endpoint : member.repositoryLocation,\n username: member.username,\n password: member.password,\n supportsASKQueries: member.supportsASKQueries,\n writable: member.writable\n }\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope\n });\n };\n\n $scope.resolveName = function (member) {\n switch (member.store) {\n case LOCAL_REPO_STORE : {\n return member.repositoryName;\n }\n case REMOTE_REPO_STORE : {\n return member.repositoryName + '@' + member.repositoryServer;\n }\n case SPARQL_ENDPOINT_STORE : {\n return member.endpoint;\n }\n case NATIVE_STORE : {\n return member.repositoryLocation;\n }\n default :\n return \"\";\n }\n }\n\n $scope.cancel = function () {\n $scope.$modalInstance.dismiss('cancel');\n };\n\n function updateMembers(member) {\n $scope.fedxMembers.push(member);\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n function removeEndingSlash(url) {\n return url.slice(-1) === '/' ? url.slice(0, -1) : url\n }\n\n function checkEditMode() {\n return $scope.editRepoPage && !$scope.editRepoPage || !$scope.model.editMode;\n }\n\n $scope.ok = function () {\n let member;\n if ($scope.model.repositoryName && $scope.model.store === LOCAL_REPO_STORE) {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repoType: $scope.model.repoType,\n respectRights: $scope.model.respectRights,\n writable: $scope.model.writable\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store );\n } else if ($scope.model.repositoryName && $scope.model.store === REMOTE_REPO_STORE) {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repositoryServer: removeEndingSlash($scope.model.repositoryServer),\n username: $scope.model.username,\n password: $scope.model.password,\n writable: $scope.model.writable\n };\n if (checkEditMode() && $scope.fedxMembers.find(el => el.repositoryName === member.repositoryName\n && el.repositoryServer === member.repositoryServer)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.member.error', {name: resolvedName}));\n $scope.$modalInstance.close();\n return;\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n } else {\n member = {\n store: SPARQL_ENDPOINT_STORE,\n endpoint: removeEndingSlash($scope.model.sparqlEndpoint),\n username: $scope.model.username,\n password: $scope.model.password,\n supportsASKQueries: $scope.model.supportsASKQueries,\n writable: $scope.model.writable\n };\n\n if (checkEditMode() && $scope.fedxMembers.find(el => el.endpoint === member.endpoint)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error($translate.instant('fedx.repo.already.added.sparql.endpoint.error', {name: resolvedName}));\n $scope.$modalInstance.close();\n return;\n }\n\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n }\n\n updateMembers(member);\n populateKnownRepos();\n $scope.$modalInstance.close();\n };\n\n $scope.$on('changedLocation', function () {\n $scope.fedxMembers = [];\n getKnownRepos();\n });\n\n getKnownRepos();\n }\n}\n","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"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[22,28,47],{100:function(t,e,n){"use strict";n.r(e);n(4),n(11),n(46),n(56),n(10),n(252),n(250),n(255);angular.module("graphdb.framework.clustermanagement",["ngAnimate","toastr","graphdb.framework.clustermanagement.controllers","graphdb.framework.clustermanagement.directives"])},242:function(t,e,n){var o,r,a;r=[],void 0===(a="function"==typeof(o=function(){return function(){var t=function(){return"n"},e=function(){return[0,0]},n=function(){return" "},o=u(),r=null,a=null,s=null,l=null;function c(t){var e;r="svg"===(e=(e=t).node()).tagName.toLowerCase()?e:e.ownerSVGElement,a=r.createSVGPoint(),document.body.appendChild(o)}c.show=function(){var o=Array.prototype.slice.call(arguments);o[o.length-1]instanceof SVGElement&&(s=o.pop());var r,a=n.apply(this,o),u=e.apply(this,o),f=t.apply(this,o),h=p(),g=i.length,y=document.documentElement.scrollTop||document.body.scrollTop,m=document.documentElement.scrollLeft||document.body.scrollLeft,_=l.apply(this,o);for(h.html(a).style({opacity:1,"pointer-events":"all"});g--;)h.classed(i[g],!1);return r=d.get(f).apply(this),_?h.style(_):h.classed(f,!0).style({top:r.top+u[0]+y+"px",left:r.left+u[1]+m+"px"}),c},c.hide=function(){return p().style({opacity:0,"pointer-events":"none"}),c},c.attr=function(t,e){if(arguments.length<2&&"string"==typeof t)return p().attr(t);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.attr.apply(p(),n),c},c.style=function(t,e){if(arguments.length<2&&"string"==typeof t)return p().style(t);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.style.apply(p(),n),c},c.direction=function(e){return arguments.length?(t=null==e?e:d3.functor(e),c):t},c.offset=function(t){return arguments.length?(e=null==t?t:d3.functor(t),c):e},c.html=function(t){return arguments.length?(n=null==t?t:d3.functor(t),c):n},c.customPosition=function(t){return arguments.length?(l=null==t?t:d3.functor(t),c):l},c.destroy=function(){return o&&(p().remove(),o=null),c};var d=d3.map({n:function(){var t=f();return{top:t.n.y-o.offsetHeight,left:t.n.x-o.offsetWidth/2}},s:function(){var t=f();return{top:t.s.y,left:t.s.x-o.offsetWidth/2}},e:function(){var t=f();return{top:t.e.y-o.offsetHeight/2,left:t.e.x}},w:function(){var t=f();return{top:t.w.y-o.offsetHeight/2,left:t.w.x-o.offsetWidth}},nw:function(){var t=f();return{top:t.nw.y-o.offsetHeight,left:t.nw.x-o.offsetWidth}},ne:function(){var t=f();return{top:t.ne.y-o.offsetHeight,left:t.ne.x}},sw:function(){var t=f();return{top:t.sw.y,left:t.sw.x-o.offsetWidth}},se:function(){var t=f();return{top:t.se.y,left:t.e.x}}}),i=d.keys();function u(){var t=d3.select(document.createElement("div"));return t.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box"}),t.node()}function p(){return null===o&&(o=u(),document.body.appendChild(o)),d3.select(o)}function f(){for(var t=s||d3.event.target;void 0===t.getScreenCTM&&"undefined"===t.parentNode;)t=t.parentNode;var e={},n=t.getScreenCTM(),o=t.getBBox(),r=o.width,l=o.height,c=o.x,d=o.y;return a.x=c,a.y=d,e.nw=a.matrixTransform(n),a.x+=r,e.ne=a.matrixTransform(n),a.y+=l,e.se=a.matrixTransform(n),a.x-=r,e.sw=a.matrixTransform(n),a.y-=l/2,e.w=a.matrixTransform(n),a.x+=r,e.e=a.matrixTransform(n),a.x-=r/2,a.y-=l/2,e.n=a.matrixTransform(n),a.y+=l,e.s=a.matrixTransform(n),e}return c}})?o.apply(e,r):o)||(t.exports=a)},50:function(t,e,n){"use strict";n.r(e),n.d(e,"clusterColors",(function(){return r})),n.d(e,"createClusterSvgElement",(function(){return a})),n.d(e,"createClusterZone",(function(){return s})),n.d(e,"setCreateClusterZone",(function(){return l})),n.d(e,"updateClusterZoneLabels",(function(){return c})),n.d(e,"moveElement",(function(){return d})),n.d(e,"createNodes",(function(){return i})),n.d(e,"updateNodes",(function(){return u})),n.d(e,"createLinks",(function(){return f})),n.d(e,"updateLinks",(function(){return h})),n.d(e,"setLinkColor",(function(){return g})),n.d(e,"setLinkStyle",(function(){return y})),n.d(e,"positionNodesOnClusterZone",(function(){return m}));var o=n(46);const r={ontoOrange:"var(--onto-orange)",ontoBlue:"var(--onto-blue)",ontoGreen:"var(--onto-green)",ontoGrey:"var(--onto-grey)"};function a(t){return d3.select(t).append("svg")}function s(t){const e=t.append("g");return e.append("circle").classed("cluster-zone",!0).style("fill","transparent").style("stroke-width","2"),e}function l(t,e,n){if(e.select(".cluster-zone").classed("no-cluster",!t),t)e.selectAll("#no-cluster-zone").remove();else{const t=e.append("g").attr("id","no-cluster-zone");t.append("text").attr("id","no-cluster-label").text(n.no_cluster_configured||"No cluster group configured").attr("y",-50).classed("h2",!0).style("text-anchor","middle"),t.append("text").attr("id","create-cluster-label").classed("h3",!0).text(n.create_cluster_btn||"Click here to create a cluster").style("text-anchor","middle"),t.append("text").attr("y",130).attr("class","icon-any repo").attr("fill",r.ontoOrange).style("text-anchor","middle").classed("settings-icon",!0).text("")}}function c(t,e,n){t||(e.select("#no-cluster-zone #no-cluster-label").text(n.no_cluster_configured),e.select("#no-cluster-zone #create-cluster-label").text(n.create_cluster_btn))}function d(t,e,n){t.attr("transform",()=>`translate(${e}, ${n})`)}function i(t,e,n){const o=t.enter().append("g").attr("id","node-group").classed("legend",n);!function(t,e){const n=Math.sqrt(3)/2,o=[[e+0,0],[e/2+0,e*n+0],[-e/2+0,e*n+0],[0-e,0],[-e/2+0,-e*n+0],[e/2+0,-e*n+0],[e+0,0],[e/2+0,e*n+0]];t.selectAll("path.area").data([o]).enter().append("path").attr("class","node member").attr("d",d3.svg.line())}(o,e),t.exit().remove(),o.append("text").attr("class","icon-any node-icon"),function(t,e,n){const o=t.append("g");n?o.append("foreignObject").attr("y",e).attr("x",-e).attr("width",2*e).attr("height",10).attr("class","label-wrapper").append("xhtml:div").attr("class","id id-host"):(o.append("rect").attr("class","id-host-background").attr("rx",6),o.append("text").attr("y",e+10).attr("class","id id-host").style("text-anchor","middle"))}(o,e,n)}function u(t){!function(t){t.select(".icon-any.node-icon").text(p)}(t),function(t){t.select(".node.member").classed("leader",t=>t.nodeState===o.NodeState.LEADER).classed("follower",t=>t.nodeState===o.NodeState.FOLLOWER).classed("candidate",t=>t.nodeState===o.NodeState.CANDIDATE).classed("other",t=>t.nodeState!==o.NodeState.LEADER&&t.nodeState!==o.NodeState.FOLLOWER&&t.nodeState!==o.NodeState.CANDIDATE)}(t),function(t){t.select(".id.id-host").each((function(t){t.labelNode=this})).text((function(t){return t.hostname})),t.select(".id-host-background").attr("width",(function(t){return d3.select(t.labelNode).node().getBBox().width+10})).attr("height",(function(t){return d3.select(t.labelNode).node().getBBox().height+2})).attr("x",(function(t){return d3.select(t.labelNode).node().getBBox().x-5})).attr("y",(function(t){return d3.select(t.labelNode).node().getBBox().y-1})).attr("fill","#EEEEEE")}(t)}function p(t){return t.nodeState===o.NodeState.LEADER?"":t.nodeState===o.NodeState.FOLLOWER?"":t.nodeState===o.NodeState.CANDIDATE?"":t.nodeState===o.NodeState.NO_CONNECTION?"":t.nodeState===o.NodeState.OUT_OF_SYNC?"":t.nodeState===o.NodeState.READ_ONLY?"":t.nodeState===o.NodeState.RESTRICTED?"":""}function f(t){t.enter().append("path").classed("link",!0),t.exit().remove()}function h(t,e){t.attr("stroke",g).style("stroke-dasharray",y).attr("d",t=>function(t,e){const n=e.find(e=>e.address===t.source),o=e.find(e=>e.address===t.target),r=o.x-n.x,a=o.y-n.y,s=Math.sqrt(r*r+a*a),l=r/s,c=a/s,d=n.x+55*l,i=n.y+55*c,u=o.x-55*l,p=o.y-55*c;return"M"+d+","+i+"L"+u+","+p}(t,e))}function g(t){return t.status===o.LinkState.IN_SYNC||t.status===o.LinkState.SYNCING?r.ontoGreen:t.status===o.LinkState.OUT_OF_SYNC?r.ontoGrey:"none"}function y(t){return t.status===o.LinkState.OUT_OF_SYNC||t.status===o.LinkState.SYNCING?"10 10":"none"}function m(t,e,n,o){t.attr("transform",(r,a)=>{const s=2*Math.PI*a/t[0].length;var l=e+Math.cos(s)*o,c=n+Math.sin(s)*o;return r.x=l,r.y=c,`translate(${l}, ${c})`})}},56:function(t,e,n){"use strict";n.r(e);n(5);var o=n(50),r=n(46),a=n(242),s=n.n(a);let l=240;const c=angular.module("graphdb.framework.clustermanagement.directives",["graphdb.framework.utils.localstorageadapter"]),d={no_cluster_configured:"",create_cluster_btn:"",legend_node_state:"",legend_link_state:"",node_state_leader:"Leader",node_state_follower:"Follower",node_state_candidate:"Candidate",node_state_no_cluster:"No cluster",node_state_out_of_sync:"Out of sync",node_state_no_connection:"No connection",node_state_read_only:"Read only",node_state_restricted:"Restricted",link_state_in_sync:"In sync",link_state_syncing:"Syncing",link_state_out_of_sync:"Out of sync"},i={node_state:"legend_node_state",link_state:"legend_link_state"};c.directive("clusterGraphicalView",["$window","LocalStorageAdapter","LSKeys","UriUtils","$translate","$rootScope",function(t,e,n,r,a,c){return{restrict:"A",link:function(f,h){function g(){Object.keys(d).forEach(t=>{d[t]=a.instant("cluster_management.cluster_graphical_view."+t)})}function y(){const o="collapsedMenu"===e.get(n.MENU_STATE);return l=o?70:240,Math.max(Math.floor(.95*(t.innerWidth-l)),600)}function m(){return Math.max(.95*(t.innerHeight-250),600)}let x,S,N;f.showLegend=!1,c.$on("$translateChangeSuccess",(function(){g(),function(){o.updateClusterZoneLabels(k,w,d),Object.keys(i).forEach(t=>{d3.select("#"+t).text(B(t))}),x&&x.remove();D(),G()}()})),f.$on("$destroy",(function(){R.destroy()}));let k,v,w,E,C,T,L=y(),b=m(),O=Math.min(L,b)/2-100,A=L/2,M=b/2;function B(t){return d[i[t]]}function D(){x=v.append("g").attr("id","legend-group").classed("hidden",!f.showLegend).classed("legend-group",!0)}f.width=function(){return L},f.height=function(){return b};const R=s()().attr("class","d3-tip").customPosition((function(){const t=T.getBoundingClientRect(),e=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.scrollLeft||document.body.scrollLeft;return{left:t.left+n+"px",top:t.top-30+e+"px"}})).html((function(t){return t.toolTip})),I=function(t,e){T=e,R.show(t,T)},Y=function(){T=null,R.hide()};function G(){const t=u(),e=p();!function(t,e){t.forEach(t=>{t.toolTip=t.hostname=d[t.customText]}),e.forEach(t=>{t.toolTip=t.linkTypeText=d[t.linkTypeKey]})}(t,e),x.append("rect").attr("id","legend-background").attr("class","legend-background").attr("fill","#EEEEEE");const n=x.append("text").attr("id","node_state").attr("class","id id-host").attr("x",200).attr("y",24).text(B("node_state")),r=x.append("text").attr("id","link_state").attr("class","id id-host").attr("x",200).attr("y",179).text(B("link_state")),a=x.selectAll("#node-group").data(t);o.createNodes(a,25,!0),o.updateNodes(a),a.select(".node.member").on("mouseover",(function(t){d3.event.stopPropagation(),I(t,this)})).on("mouseout",Y),a.attr("transform",(function(t){const e=Math.floor(t.id/4);return`translate(${35+65*(t.id%4)}, ${59+65*e})`})),x.call((function(){S=this.node().getBBox().width})),n.attr("x",10+S/2),r.attr("x",10+S/2);const s=S/3,l=x.append("g").attr("id","links-group");l.attr("transform","translate(10, 189)"),e.forEach((t,e)=>{const n=s-5,r=l.append("g").classed("link",!0).classed("legend",!0).attr("transform",()=>`translate(${e*s}, 0)`);r.append("path").classed("link",!0).attr("stroke-dasharray",()=>o.setLinkStyle(t)).attr("stroke",()=>o.setLinkColor(t)).attr("d",()=>`M5,0,${n},0`),r.append("foreignObject").attr("y",10).attr("x",5).attr("width",s-10).attr("height",10).attr("class","label-wrapper").append("xhtml:div").attr("class","id id-host").style("font-size","9px").html(t.linkTypeText),r.on("mouseover",(function(){d3.event.stopPropagation(),I(t,this)})).on("mouseout",Y)}),x.call((function(t){N=this.node().getBBox().height,S=this.node().getBBox().width})),x.select(".legend-background").attr("height",N+40).attr("width",S+20).attr("rx","6"),z()}function z(){const t=b-(N+30+50);o.moveElement(x,0,t)}function F(){O=Math.min(L,b)/2-100,A=L/2,M=b/2,o.moveElement(w,A,M),w.select(".cluster-zone").attr("r",O)}function W(){F(),k!==f.clusterModel.hasCluster&&(k=!!f.clusterModel.hasCluster,function(t){let e;o.setCreateClusterZone(t,w,d),t||(e=()=>{f.$apply((function(){f.showCreateClusterDialog()}))}),w.on("mouseup",e)}(k));const t=_.cloneDeep(f.clusterModel.nodes)||[],e=_.cloneDeep(f.clusterModel.links)||[];!function(t){t.forEach(t=>t.hostname=r.shortenIri(t.endpoint));const e=E.selectAll("#node-group").data(t,t=>t.address);e.on("click",t=>{f.childContext.selectNode(t);const e=d3.select(".nodetooltip"),n=$(window).width();d3.event.pageX<n/2?(e.style("left",d3.event.pageX+"px"),e.style("right","")):(e.style("left",""),e.style("right",n-d3.event.pageX+"px")),e.style("top",d3.event.pageY-28+"px")}),o.createNodes(e,50),o.updateNodes(e),o.positionNodesOnClusterZone(e,A,M,O)}(t),function(t,e){const n=C.selectAll(".link").data(t,t=>t.id);o.createLinks(n),o.updateLinks(n,e)}(e,t)}f.childContext.redraw=W,f.childContext.resize=function(){L=y(),b=m(),v.attr("width",L),v.attr("height",b),W(),z()},f.childContext.toggleLegend=()=>{f.showLegend=!f.showLegend,x.classed("hidden",!f.showLegend)},g(),function(t){v=o.createClusterSvgElement(h[0]).attr("width",L).attr("height",b),v.call(R),w=o.createClusterZone(v,t),C=v.append("g").attr("id","links-group"),E=v.append("g").attr("id","nodes-group"),D()}(!(!f.clusterModel.nodes||!f.clusterModel.nodes.length)),G(),W()}}}]).config(["$tooltipProvider",function(t){t.options({appendToBody:!0})}]);const u=function(){const t=[];return t.push({nodeState:r.NodeState.LEADER,customText:"node_state_leader"}),t.push({nodeState:r.NodeState.FOLLOWER,customText:"node_state_follower"}),t.push({nodeState:r.NodeState.CANDIDATE,customText:"node_state_candidate"}),t.push({nodeState:r.NodeState.NO_CLUSTER,customText:"node_state_no_cluster"}),t.push({nodeState:r.NodeState.OUT_OF_SYNC,customText:"node_state_out_of_sync"}),t.push({nodeState:r.NodeState.NO_CONNECTION,customText:"node_state_no_connection"}),t.push({nodeState:r.NodeState.READ_ONLY,customText:"node_state_read_only"}),t.push({nodeState:r.NodeState.RESTRICTED,customText:"node_state_restricted"}),t.forEach((t,e)=>t.id=e),t},p=function(){const t=[];return t.push({status:r.LinkState.IN_SYNC,linkTypeKey:"link_state_in_sync"}),t.push({status:r.LinkState.SYNCING,linkTypeKey:"link_state_syncing"}),t.push({status:r.LinkState.OUT_OF_SYNC,linkTypeKey:"link_state_out_of_sync"}),t.forEach((t,e)=>t.id=e),t}}}]);
2
- //# sourceMappingURL=22.e1562d53daf95dd1fdca.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[22,28,47],{101:function(t,e,n){"use strict";n.r(e);n(4),n(11),n(46),n(56),n(10),n(252),n(250),n(255);angular.module("graphdb.framework.clustermanagement",["ngAnimate","toastr","graphdb.framework.clustermanagement.controllers","graphdb.framework.clustermanagement.directives"])},242:function(t,e,n){var o,r,a;r=[],void 0===(a="function"==typeof(o=function(){return function(){var t=function(){return"n"},e=function(){return[0,0]},n=function(){return" "},o=u(),r=null,a=null,s=null,l=null;function c(t){var e;r="svg"===(e=(e=t).node()).tagName.toLowerCase()?e:e.ownerSVGElement,a=r.createSVGPoint(),document.body.appendChild(o)}c.show=function(){var o=Array.prototype.slice.call(arguments);o[o.length-1]instanceof SVGElement&&(s=o.pop());var r,a=n.apply(this,o),u=e.apply(this,o),f=t.apply(this,o),h=p(),g=i.length,y=document.documentElement.scrollTop||document.body.scrollTop,m=document.documentElement.scrollLeft||document.body.scrollLeft,_=l.apply(this,o);for(h.html(a).style({opacity:1,"pointer-events":"all"});g--;)h.classed(i[g],!1);return r=d.get(f).apply(this),_?h.style(_):h.classed(f,!0).style({top:r.top+u[0]+y+"px",left:r.left+u[1]+m+"px"}),c},c.hide=function(){return p().style({opacity:0,"pointer-events":"none"}),c},c.attr=function(t,e){if(arguments.length<2&&"string"==typeof t)return p().attr(t);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.attr.apply(p(),n),c},c.style=function(t,e){if(arguments.length<2&&"string"==typeof t)return p().style(t);var n=Array.prototype.slice.call(arguments);return d3.selection.prototype.style.apply(p(),n),c},c.direction=function(e){return arguments.length?(t=null==e?e:d3.functor(e),c):t},c.offset=function(t){return arguments.length?(e=null==t?t:d3.functor(t),c):e},c.html=function(t){return arguments.length?(n=null==t?t:d3.functor(t),c):n},c.customPosition=function(t){return arguments.length?(l=null==t?t:d3.functor(t),c):l},c.destroy=function(){return o&&(p().remove(),o=null),c};var d=d3.map({n:function(){var t=f();return{top:t.n.y-o.offsetHeight,left:t.n.x-o.offsetWidth/2}},s:function(){var t=f();return{top:t.s.y,left:t.s.x-o.offsetWidth/2}},e:function(){var t=f();return{top:t.e.y-o.offsetHeight/2,left:t.e.x}},w:function(){var t=f();return{top:t.w.y-o.offsetHeight/2,left:t.w.x-o.offsetWidth}},nw:function(){var t=f();return{top:t.nw.y-o.offsetHeight,left:t.nw.x-o.offsetWidth}},ne:function(){var t=f();return{top:t.ne.y-o.offsetHeight,left:t.ne.x}},sw:function(){var t=f();return{top:t.sw.y,left:t.sw.x-o.offsetWidth}},se:function(){var t=f();return{top:t.se.y,left:t.e.x}}}),i=d.keys();function u(){var t=d3.select(document.createElement("div"));return t.style({position:"absolute",top:0,opacity:0,"pointer-events":"none","box-sizing":"border-box"}),t.node()}function p(){return null===o&&(o=u(),document.body.appendChild(o)),d3.select(o)}function f(){for(var t=s||d3.event.target;void 0===t.getScreenCTM&&"undefined"===t.parentNode;)t=t.parentNode;var e={},n=t.getScreenCTM(),o=t.getBBox(),r=o.width,l=o.height,c=o.x,d=o.y;return a.x=c,a.y=d,e.nw=a.matrixTransform(n),a.x+=r,e.ne=a.matrixTransform(n),a.y+=l,e.se=a.matrixTransform(n),a.x-=r,e.sw=a.matrixTransform(n),a.y-=l/2,e.w=a.matrixTransform(n),a.x+=r,e.e=a.matrixTransform(n),a.x-=r/2,a.y-=l/2,e.n=a.matrixTransform(n),a.y+=l,e.s=a.matrixTransform(n),e}return c}})?o.apply(e,r):o)||(t.exports=a)},50:function(t,e,n){"use strict";n.r(e),n.d(e,"clusterColors",(function(){return r})),n.d(e,"createClusterSvgElement",(function(){return a})),n.d(e,"createClusterZone",(function(){return s})),n.d(e,"setCreateClusterZone",(function(){return l})),n.d(e,"updateClusterZoneLabels",(function(){return c})),n.d(e,"moveElement",(function(){return d})),n.d(e,"createNodes",(function(){return i})),n.d(e,"updateNodes",(function(){return u})),n.d(e,"createLinks",(function(){return f})),n.d(e,"updateLinks",(function(){return h})),n.d(e,"setLinkColor",(function(){return g})),n.d(e,"setLinkStyle",(function(){return y})),n.d(e,"positionNodesOnClusterZone",(function(){return m}));var o=n(46);const r={ontoOrange:"var(--onto-orange)",ontoBlue:"var(--onto-blue)",ontoGreen:"var(--onto-green)",ontoGrey:"var(--onto-grey)"};function a(t){return d3.select(t).append("svg")}function s(t){const e=t.append("g");return e.append("circle").classed("cluster-zone",!0).style("fill","transparent").style("stroke-width","2"),e}function l(t,e,n){if(e.select(".cluster-zone").classed("no-cluster",!t),t)e.selectAll("#no-cluster-zone").remove();else{const t=e.append("g").attr("id","no-cluster-zone");t.append("text").attr("id","no-cluster-label").text(n.no_cluster_configured||"No cluster group configured").attr("y",-50).classed("h2",!0).style("text-anchor","middle"),t.append("text").attr("id","create-cluster-label").classed("h3",!0).text(n.create_cluster_btn||"Click here to create a cluster").style("text-anchor","middle"),t.append("text").attr("y",130).attr("class","icon-any repo").attr("fill",r.ontoOrange).style("text-anchor","middle").classed("settings-icon",!0).text("")}}function c(t,e,n){t||(e.select("#no-cluster-zone #no-cluster-label").text(n.no_cluster_configured),e.select("#no-cluster-zone #create-cluster-label").text(n.create_cluster_btn))}function d(t,e,n){t.attr("transform",()=>`translate(${e}, ${n})`)}function i(t,e,n){const o=t.enter().append("g").attr("id","node-group").classed("legend",n);!function(t,e){const n=Math.sqrt(3)/2,o=[[e+0,0],[e/2+0,e*n+0],[-e/2+0,e*n+0],[0-e,0],[-e/2+0,-e*n+0],[e/2+0,-e*n+0],[e+0,0],[e/2+0,e*n+0]];t.selectAll("path.area").data([o]).enter().append("path").attr("class","node member").attr("d",d3.svg.line())}(o,e),t.exit().remove(),o.append("text").attr("class","icon-any node-icon"),function(t,e,n){const o=t.append("g");n?o.append("foreignObject").attr("y",e).attr("x",-e).attr("width",2*e).attr("height",10).attr("class","label-wrapper").append("xhtml:div").attr("class","id id-host"):(o.append("rect").attr("class","id-host-background").attr("rx",6),o.append("text").attr("y",e+10).attr("class","id id-host").style("text-anchor","middle"))}(o,e,n)}function u(t){!function(t){t.select(".icon-any.node-icon").text(p)}(t),function(t){t.select(".node.member").classed("leader",t=>t.nodeState===o.NodeState.LEADER).classed("follower",t=>t.nodeState===o.NodeState.FOLLOWER).classed("candidate",t=>t.nodeState===o.NodeState.CANDIDATE).classed("other",t=>t.nodeState!==o.NodeState.LEADER&&t.nodeState!==o.NodeState.FOLLOWER&&t.nodeState!==o.NodeState.CANDIDATE)}(t),function(t){t.select(".id.id-host").each((function(t){t.labelNode=this})).text((function(t){return t.hostname})),t.select(".id-host-background").attr("width",(function(t){return d3.select(t.labelNode).node().getBBox().width+10})).attr("height",(function(t){return d3.select(t.labelNode).node().getBBox().height+2})).attr("x",(function(t){return d3.select(t.labelNode).node().getBBox().x-5})).attr("y",(function(t){return d3.select(t.labelNode).node().getBBox().y-1})).attr("fill","#EEEEEE")}(t)}function p(t){return t.nodeState===o.NodeState.LEADER?"":t.nodeState===o.NodeState.FOLLOWER?"":t.nodeState===o.NodeState.CANDIDATE?"":t.nodeState===o.NodeState.NO_CONNECTION?"":t.nodeState===o.NodeState.OUT_OF_SYNC?"":t.nodeState===o.NodeState.READ_ONLY?"":t.nodeState===o.NodeState.RESTRICTED?"":""}function f(t){t.enter().append("path").classed("link",!0),t.exit().remove()}function h(t,e){t.attr("stroke",g).style("stroke-dasharray",y).attr("d",t=>function(t,e){const n=e.find(e=>e.address===t.source),o=e.find(e=>e.address===t.target),r=o.x-n.x,a=o.y-n.y,s=Math.sqrt(r*r+a*a),l=r/s,c=a/s,d=n.x+55*l,i=n.y+55*c,u=o.x-55*l,p=o.y-55*c;return"M"+d+","+i+"L"+u+","+p}(t,e))}function g(t){return t.status===o.LinkState.IN_SYNC||t.status===o.LinkState.SYNCING?r.ontoGreen:t.status===o.LinkState.OUT_OF_SYNC?r.ontoGrey:"none"}function y(t){return t.status===o.LinkState.OUT_OF_SYNC||t.status===o.LinkState.SYNCING?"10 10":"none"}function m(t,e,n,o){t.attr("transform",(r,a)=>{const s=2*Math.PI*a/t[0].length;var l=e+Math.cos(s)*o,c=n+Math.sin(s)*o;return r.x=l,r.y=c,`translate(${l}, ${c})`})}},56:function(t,e,n){"use strict";n.r(e);n(5);var o=n(50),r=n(46),a=n(242),s=n.n(a);let l=240;const c=angular.module("graphdb.framework.clustermanagement.directives",["graphdb.framework.utils.localstorageadapter"]),d={no_cluster_configured:"",create_cluster_btn:"",legend_node_state:"",legend_link_state:"",node_state_leader:"Leader",node_state_follower:"Follower",node_state_candidate:"Candidate",node_state_no_cluster:"No cluster",node_state_out_of_sync:"Out of sync",node_state_no_connection:"No connection",node_state_read_only:"Read only",node_state_restricted:"Restricted",link_state_in_sync:"In sync",link_state_syncing:"Syncing",link_state_out_of_sync:"Out of sync"},i={node_state:"legend_node_state",link_state:"legend_link_state"};c.directive("clusterGraphicalView",["$window","LocalStorageAdapter","LSKeys","UriUtils","$translate","$rootScope",function(t,e,n,r,a,c){return{restrict:"A",link:function(f,h){function g(){Object.keys(d).forEach(t=>{d[t]=a.instant("cluster_management.cluster_graphical_view."+t)})}function y(){const o="collapsedMenu"===e.get(n.MENU_STATE);return l=o?70:240,Math.max(Math.floor(.95*(t.innerWidth-l)),600)}function m(){return Math.max(.95*(t.innerHeight-250),600)}let x,S,N;f.showLegend=!1,c.$on("$translateChangeSuccess",(function(){g(),function(){o.updateClusterZoneLabels(k,w,d),Object.keys(i).forEach(t=>{d3.select("#"+t).text(B(t))}),x&&x.remove();D(),G()}()})),f.$on("$destroy",(function(){R.destroy()}));let k,v,w,E,C,T,L=y(),b=m(),O=Math.min(L,b)/2-100,A=L/2,M=b/2;function B(t){return d[i[t]]}function D(){x=v.append("g").attr("id","legend-group").classed("hidden",!f.showLegend).classed("legend-group",!0)}f.width=function(){return L},f.height=function(){return b};const R=s()().attr("class","d3-tip").customPosition((function(){const t=T.getBoundingClientRect(),e=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.scrollLeft||document.body.scrollLeft;return{left:t.left+n+"px",top:t.top-30+e+"px"}})).html((function(t){return t.toolTip})),I=function(t,e){T=e,R.show(t,T)},Y=function(){T=null,R.hide()};function G(){const t=u(),e=p();!function(t,e){t.forEach(t=>{t.toolTip=t.hostname=d[t.customText]}),e.forEach(t=>{t.toolTip=t.linkTypeText=d[t.linkTypeKey]})}(t,e),x.append("rect").attr("id","legend-background").attr("class","legend-background").attr("fill","#EEEEEE");const n=x.append("text").attr("id","node_state").attr("class","id id-host").attr("x",200).attr("y",24).text(B("node_state")),r=x.append("text").attr("id","link_state").attr("class","id id-host").attr("x",200).attr("y",179).text(B("link_state")),a=x.selectAll("#node-group").data(t);o.createNodes(a,25,!0),o.updateNodes(a),a.select(".node.member").on("mouseover",(function(t){d3.event.stopPropagation(),I(t,this)})).on("mouseout",Y),a.attr("transform",(function(t){const e=Math.floor(t.id/4);return`translate(${35+65*(t.id%4)}, ${59+65*e})`})),x.call((function(){S=this.node().getBBox().width})),n.attr("x",10+S/2),r.attr("x",10+S/2);const s=S/3,l=x.append("g").attr("id","links-group");l.attr("transform","translate(10, 189)"),e.forEach((t,e)=>{const n=s-5,r=l.append("g").classed("link",!0).classed("legend",!0).attr("transform",()=>`translate(${e*s}, 0)`);r.append("path").classed("link",!0).attr("stroke-dasharray",()=>o.setLinkStyle(t)).attr("stroke",()=>o.setLinkColor(t)).attr("d",()=>`M5,0,${n},0`),r.append("foreignObject").attr("y",10).attr("x",5).attr("width",s-10).attr("height",10).attr("class","label-wrapper").append("xhtml:div").attr("class","id id-host").style("font-size","9px").html(t.linkTypeText),r.on("mouseover",(function(){d3.event.stopPropagation(),I(t,this)})).on("mouseout",Y)}),x.call((function(t){N=this.node().getBBox().height,S=this.node().getBBox().width})),x.select(".legend-background").attr("height",N+40).attr("width",S+20).attr("rx","6"),z()}function z(){const t=b-(N+30+50);o.moveElement(x,0,t)}function F(){O=Math.min(L,b)/2-100,A=L/2,M=b/2,o.moveElement(w,A,M),w.select(".cluster-zone").attr("r",O)}function W(){F(),k!==f.clusterModel.hasCluster&&(k=!!f.clusterModel.hasCluster,function(t){let e;o.setCreateClusterZone(t,w,d),t||(e=()=>{f.$apply((function(){f.showCreateClusterDialog()}))}),w.on("mouseup",e)}(k));const t=_.cloneDeep(f.clusterModel.nodes)||[],e=_.cloneDeep(f.clusterModel.links)||[];!function(t){t.forEach(t=>t.hostname=r.shortenIri(t.endpoint));const e=E.selectAll("#node-group").data(t,t=>t.address);e.on("click",t=>{f.childContext.selectNode(t);const e=d3.select(".nodetooltip"),n=$(window).width();d3.event.pageX<n/2?(e.style("left",d3.event.pageX+"px"),e.style("right","")):(e.style("left",""),e.style("right",n-d3.event.pageX+"px")),e.style("top",d3.event.pageY-28+"px")}),o.createNodes(e,50),o.updateNodes(e),o.positionNodesOnClusterZone(e,A,M,O)}(t),function(t,e){const n=C.selectAll(".link").data(t,t=>t.id);o.createLinks(n),o.updateLinks(n,e)}(e,t)}f.childContext.redraw=W,f.childContext.resize=function(){L=y(),b=m(),v.attr("width",L),v.attr("height",b),W(),z()},f.childContext.toggleLegend=()=>{f.showLegend=!f.showLegend,x.classed("hidden",!f.showLegend)},g(),function(t){v=o.createClusterSvgElement(h[0]).attr("width",L).attr("height",b),v.call(R),w=o.createClusterZone(v,t),C=v.append("g").attr("id","links-group"),E=v.append("g").attr("id","nodes-group"),D()}(!(!f.clusterModel.nodes||!f.clusterModel.nodes.length)),G(),W()}}}]).config(["$tooltipProvider",function(t){t.options({appendToBody:!0})}]);const u=function(){const t=[];return t.push({nodeState:r.NodeState.LEADER,customText:"node_state_leader"}),t.push({nodeState:r.NodeState.FOLLOWER,customText:"node_state_follower"}),t.push({nodeState:r.NodeState.CANDIDATE,customText:"node_state_candidate"}),t.push({nodeState:r.NodeState.NO_CLUSTER,customText:"node_state_no_cluster"}),t.push({nodeState:r.NodeState.OUT_OF_SYNC,customText:"node_state_out_of_sync"}),t.push({nodeState:r.NodeState.NO_CONNECTION,customText:"node_state_no_connection"}),t.push({nodeState:r.NodeState.READ_ONLY,customText:"node_state_read_only"}),t.push({nodeState:r.NodeState.RESTRICTED,customText:"node_state_restricted"}),t.forEach((t,e)=>t.id=e),t},p=function(){const t=[];return t.push({status:r.LinkState.IN_SYNC,linkTypeKey:"link_state_in_sync"}),t.push({status:r.LinkState.SYNCING,linkTypeKey:"link_state_syncing"}),t.push({status:r.LinkState.OUT_OF_SYNC,linkTypeKey:"link_state_out_of_sync"}),t.forEach((t,e)=>t.id=e),t}}}]);
2
+ //# sourceMappingURL=22.5f70a951e87768500861.bundle.js.map