graphdb-workbench 10.0.0-M2-1 → 10.5.1

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 (728) hide show
  1. package/README.md +10 -2
  2. package/dist/0.f8448f998a59db17e94e.bundle.js +25 -0
  3. package/dist/1.46d9ecd4119bac145f3b.bundle.js +81 -0
  4. package/dist/10.a26ae97905866618b14e.bundle.js +7 -0
  5. package/dist/100.aef098a33fbb925e0d2d.bundle.js +1 -0
  6. package/dist/101.42eacc63e0fb5834b78a.bundle.js +1 -0
  7. package/dist/102.4f78eeab62aac245879e.bundle.js +1 -0
  8. package/dist/103.f38f3cd69ff610955aaf.bundle.js +1 -0
  9. package/dist/104.2e21f1462021dca17db1.bundle.js +1 -0
  10. package/dist/105.76381cb7984bcbc9ba9a.bundle.js +1 -0
  11. package/dist/106.23e14c6b280756d04533.bundle.js +1 -0
  12. package/dist/107.75e40619cb45972dc39f.bundle.js +1 -0
  13. package/dist/108.f09444e990531d27e0be.bundle.js +1 -0
  14. package/dist/109.ef97393181ee534042d8.bundle.js +1 -0
  15. package/dist/11.0fc995ac096734b915c6.bundle.js +1 -0
  16. package/dist/110.d59b8565d2255a282669.bundle.js +1 -0
  17. package/dist/111.fff9f089f65f01013923.bundle.js +1 -0
  18. package/dist/112.5bd3fcd7c37f1024fe26.bundle.js +1 -0
  19. package/dist/113.2fa29eca15d32deb3320.bundle.js +1 -0
  20. package/dist/114.d78615087abe68db7b2f.bundle.js +1 -0
  21. package/dist/115.558ce3da00d3be87d18a.bundle.js +1 -0
  22. package/dist/116.577aab1d9bafd0053623.bundle.js +1 -0
  23. package/dist/117.c20f037799328c931eba.bundle.js +1 -0
  24. package/dist/118.39c8b47405ab93c40847.bundle.js +1 -0
  25. package/dist/119.19ee7b3ae143f817c5b1.bundle.js +1 -0
  26. package/dist/12.7877dd6008df9acf44e1.bundle.js +1 -0
  27. package/dist/120.b944d5e63424d4307fc8.bundle.js +1 -0
  28. package/dist/121.3a8954e4c885c56a9817.bundle.js +1 -0
  29. package/dist/122.71a8cf0330504672fffc.bundle.js +1 -0
  30. package/dist/123.c6957ecb441d8a09932a.bundle.js +1 -0
  31. package/dist/124.27e85a0284e2ebeb7d6e.bundle.js +1 -0
  32. package/dist/125.9e925ae0dd1217d81d89.bundle.js +1 -0
  33. package/dist/126.a32b57d6108545746ed3.bundle.js +1 -0
  34. package/dist/127.90d1975083eef3d4a715.bundle.js +1 -0
  35. package/dist/128.544f1a82e19dd245c7de.bundle.js +1 -0
  36. package/dist/129.64ec11449e0c734500c2.bundle.js +1 -0
  37. package/dist/13.fe78f15334507bcc08ae.bundle.js +1 -0
  38. package/dist/130.f8e68ac86e17b3622d40.bundle.js +1 -0
  39. package/dist/131.4868fc3a837277c30273.bundle.js +1 -0
  40. package/dist/132.7815ab1168a254cb0d47.bundle.js +1 -0
  41. package/dist/133.f87e1685dd5ed920f9b5.bundle.js +1 -0
  42. package/dist/134.8998ff724a077ecff2ce.bundle.js +1 -0
  43. package/dist/135.c07268699f76ef7a02ff.bundle.js +1 -0
  44. package/dist/136.908f1f6fe3054f99b560.bundle.js +1 -0
  45. package/dist/137.8262ca9736e9818284cd.bundle.js +1 -0
  46. package/dist/138.8c149cad49010a65b3ca.bundle.js +1 -0
  47. package/dist/139.97ee12e7a3c05be03456.bundle.js +1 -0
  48. package/dist/14.0bb211bcdc29c6d8b3b5.bundle.js +29 -0
  49. package/dist/140.6b3c57ffec700081328b.bundle.js +1 -0
  50. package/dist/141.4981056237955a34b2e2.bundle.js +1 -0
  51. package/dist/142.4d60c1795eed3a9570f9.bundle.js +1 -0
  52. package/dist/143.b7057852f7859cf39e75.bundle.js +1 -0
  53. package/dist/144.3f85f8eacae521d52355.bundle.js +1 -0
  54. package/dist/145.9281069e9e77978b640a.bundle.js +1 -0
  55. package/dist/146.51d2987de4defe7df7c7.bundle.js +1 -0
  56. package/dist/147.54016549674d35bc2869.bundle.js +1 -0
  57. package/dist/148.ad95b30f508a0bd02970.bundle.js +1 -0
  58. package/dist/149.8dd1281617389f8c189b.bundle.js +1 -0
  59. package/dist/15.6a74adbd30b4d2930e10.bundle.js +1 -0
  60. package/dist/150.5e0ee4350f8edd0e7b9a.bundle.js +1 -0
  61. package/dist/151.6b81c99a1ec1b184b82d.bundle.js +1 -0
  62. package/dist/152.2e1aa910a68f0086825b.bundle.js +1 -0
  63. package/dist/153.7a64973115bdaec26406.bundle.js +1 -0
  64. package/dist/154.5938248b52830d0a80a2.bundle.js +1 -0
  65. package/dist/155.a4511849c1001c5f2ba6.bundle.js +1 -0
  66. package/dist/156.bbcaf52acb0cecbc6257.bundle.js +1 -0
  67. package/dist/157.51181d03518519f84b5e.bundle.js +1 -0
  68. package/dist/158.640e412f6002ee1d7341.bundle.js +1 -0
  69. package/dist/159.10457cbb053c1315d93a.bundle.js +1 -0
  70. package/dist/16.2f60fbeaccd97aefaae2.bundle.js +1 -0
  71. package/dist/160.c46bfdf09357a4c62a53.bundle.js +1 -0
  72. package/dist/{103.05b86c1b360c05133b49.bundle.js → 161.0f35ee11981f0ea0455f.bundle.js} +1 -2
  73. package/dist/{104.089568ff7c49a29de892.bundle.js → 162.fef28120701e7d200b01.bundle.js} +1 -2
  74. package/dist/{105.81b74220f7fa646e719b.bundle.js → 163.38565d40ac5f71d1c875.bundle.js} +1 -2
  75. package/dist/164.b2116f472aa847618aee.bundle.js +1 -0
  76. package/dist/168.2d4b5a75da5430c73efc.bundle.js +1 -0
  77. package/dist/169.6897f56896e3664e8b53.bundle.js +1 -0
  78. package/dist/17.2bff7856b13fd72e2db4.bundle.js +1 -0
  79. package/dist/170.d5c0d475c5b6ad84ef77.bundle.js +1 -0
  80. package/dist/171.60cdc91b2bf682a20911.bundle.js +1 -0
  81. package/dist/172.1fb9ead3e508a7cfa5f3.bundle.js +1 -0
  82. package/dist/173.95602c81a2692624a015.bundle.js +1 -0
  83. package/dist/174.aac1982e67b5ca1731c1.bundle.js +1 -0
  84. package/dist/175.5e49a28397900168f816.bundle.js +1 -0
  85. package/dist/176.2e6d1a9f4eac4fdd8422.bundle.js +1 -0
  86. package/dist/177.3b6aabf3c4db8519ea74.bundle.js +1 -0
  87. package/dist/178.e10370553beb5c6bb839.bundle.js +1 -0
  88. package/dist/179.784cbd536b8e636c1272.bundle.js +1 -0
  89. package/dist/18.d6be3e6583bf3dacd54f.bundle.js +2 -0
  90. package/dist/180.d37db50f3ce1b3a04a65.bundle.js +1 -0
  91. package/dist/181.f307cabdc4ed7a10ff64.bundle.js +1 -0
  92. package/dist/182.e8fe148e90fcd334b9b9.bundle.js +1 -0
  93. package/dist/183.a086e00d4dc3c7855611.bundle.js +1 -0
  94. package/dist/184.ff8a39692d0ff666c9e6.bundle.js +1 -0
  95. package/dist/185.8b9f0b866e848f8a1aac.bundle.js +1 -0
  96. package/dist/186.798880846274da7033da.bundle.js +1 -0
  97. package/dist/{120.3b0b67fbfa81ec95e044.bundle.js → 187.eb92a35d38294bc21703.bundle.js} +1 -2
  98. package/dist/{121.ff452d05188836228deb.bundle.js → 188.641582484af80415d29a.bundle.js} +1 -2
  99. package/dist/189.7ccbb0ef67513ae7001a.bundle.js +1 -0
  100. package/dist/19.c2a5c3e7a49a4acba486.bundle.js +2 -0
  101. package/dist/{123.289bb9a87ce416004c0a.bundle.js → 190.a3609218c5d8e873a46f.bundle.js} +1 -2
  102. package/dist/191.4c817606bf66c16d9ad1.bundle.js +1 -0
  103. package/dist/{125.51ff26fe7687752811e4.bundle.js → 192.21f366a1ea7e6905f120.bundle.js} +1 -2
  104. package/dist/193.4d40b788bd7ddcf16788.bundle.js +1 -0
  105. package/dist/{127.4d0a2164fb95df43ea22.bundle.js → 194.0170093f1daf20e82b5f.bundle.js} +1 -2
  106. package/dist/{128.c7a3530622ede2f34e72.bundle.js → 195.d7d8af61458f9416878f.bundle.js} +1 -2
  107. package/dist/{129.2d32313059ae96dba010.bundle.js → 196.6e6b7589cd1342a0b2b5.bundle.js} +1 -2
  108. package/dist/{130.7302112cf14a10bd1306.bundle.js → 197.c071fa1fe9e081a3b053.bundle.js} +1 -2
  109. package/dist/{131.eb262b5100305bdc23ee.bundle.js → 198.3c5ca9ac5a745b4b23a1.bundle.js} +1 -2
  110. package/dist/199.00ac5221a334189ea09a.bundle.js +1 -0
  111. package/dist/2.78b4e53269171c9c08a5.bundle.js +1 -0
  112. package/dist/20.8fd969e3860ddffedcc3.bundle.js +1 -0
  113. package/dist/{133.f855496341ba657eb673.bundle.js → 200.aa3f4dcf9cf98409dbf5.bundle.js} +1 -2
  114. package/dist/201.a1b147e78f43a3bc99c3.bundle.js +1 -0
  115. package/dist/202.20e71b18f57e7d234ff0.bundle.js +1 -0
  116. package/dist/{136.74f131c98a163b48e3df.bundle.js → 203.0219c2ba2d4fe4881af2.bundle.js} +1 -2
  117. package/dist/204.cc169603e18b84e7e65b.bundle.js +1 -0
  118. package/dist/{138.9111fe731587313e4574.bundle.js → 205.99fb3c89cd9b9183ddbf.bundle.js} +1 -2
  119. package/dist/206.43b04d2170165e13353c.bundle.js +1 -0
  120. package/dist/207.798c195e1d7d3f301131.bundle.js +1 -0
  121. package/dist/208.34f042066a757f4fd8c0.bundle.js +1 -0
  122. package/dist/{142.5ced0a8e7a08aea7988f.bundle.js → 209.288844c6a42ff4d5685a.bundle.js} +1 -2
  123. package/dist/21.c981976c6528073c0a2f.bundle.js +1 -0
  124. package/dist/210.1ac38e393ca959703d4b.bundle.js +1 -0
  125. package/dist/211.d2721b9785e609e2f817.bundle.js +1 -0
  126. package/dist/212.b6b19c939f21132b451c.bundle.js +1 -0
  127. package/dist/213.5a5116f764e6357e53ab.bundle.js +1 -0
  128. package/dist/{147.f6bd445276a200981cff.bundle.js → 214.a2640be51c42d820bb83.bundle.js} +1 -2
  129. package/dist/215.209396a71f130477e2b3.bundle.js +1 -0
  130. package/dist/216.16e2e982acc750b4045a.bundle.js +1 -0
  131. package/dist/217.8540eb1d1a0946e72dbf.bundle.js +1 -0
  132. package/dist/218.ef33580c82d20f39f75f.bundle.js +1 -0
  133. package/dist/219.1652bc940cdd0088dc18.bundle.js +1 -0
  134. package/dist/22.9d339503774f4f6c0a8b.bundle.js +1 -0
  135. package/dist/{153.ebc378a7a60222b69484.bundle.js → 220.f8f9c348b1fc0cc72bd6.bundle.js} +1 -2
  136. package/dist/221.b18a92f0ba880edaebbf.bundle.js +1 -0
  137. package/dist/222.a52ebecd1d5201437ebe.bundle.js +1 -0
  138. package/dist/23.87ca8226d464e3699b8e.bundle.js +3 -0
  139. package/dist/24.9076b75f45ce0579f7be.bundle.js +1 -0
  140. package/dist/25.073791b8dd02c5b31183.bundle.js +1 -0
  141. package/dist/26.6e06be7172a866ad45f9.bundle.js +2 -0
  142. package/dist/27.5152c2a1f3b1369e21b0.bundle.js +1 -0
  143. package/dist/28.90b784e728e3d5e4c6aa.bundle.js +1 -0
  144. package/dist/29.e2309b858706718f1732.bundle.js +1 -0
  145. package/dist/3.cf89087c137e759ecd19.bundle.js +27 -0
  146. package/dist/30.32fb84930c42bae43a74.bundle.js +1 -0
  147. package/dist/31.31b7b4bd073b82c09fda.bundle.js +1 -0
  148. package/dist/32.6725d94946764db833b8.bundle.js +1 -0
  149. package/dist/33.fa9f0e662060f2e97267.bundle.js +1 -0
  150. package/dist/34.af22bc6d5ed2bcb72a09.bundle.js +1 -0
  151. package/dist/35.e601e19e63c6ddaf2484.bundle.js +1 -0
  152. package/dist/36.df47a70d8efbf1cd033b.bundle.js +1 -0
  153. package/dist/37.085cdb373f74d55eee07.bundle.js +2 -0
  154. package/dist/38.fc172c7b0d24ab0f8a35.bundle.js +1 -0
  155. package/dist/39.5ca9fa51ec3c63459317.bundle.js +1 -0
  156. package/dist/4.851f9ade6202116ecfb9.bundle.js +1 -0
  157. package/dist/40.309ec5212fd53fe696bb.bundle.js +1 -0
  158. package/dist/41.3870740f1d24570cb415.bundle.js +1 -0
  159. package/dist/42.b926c2c8620df5c7ed6d.bundle.js +1 -0
  160. package/dist/43.d4551e1f6cac0a1a77e5.bundle.js +1 -0
  161. package/dist/44.46c9e2d54a9f07d78368.bundle.js +1 -0
  162. package/dist/45.a916daee1f0c6873c890.bundle.js +1 -0
  163. package/dist/46.4f57238bd032edc81d6d.bundle.js +1 -0
  164. package/dist/47.4fbfdaa63628c501a30c.bundle.js +1 -0
  165. package/dist/48.3fbd50adcb0c7dd7ec60.bundle.js +1 -0
  166. package/dist/49.0707795b3b6e40387da8.bundle.js +1 -0
  167. package/dist/5.7cfbc07050f137932ffe.bundle.js +1 -0
  168. package/dist/50.8f6cc698b42c96f2b41f.bundle.js +1 -0
  169. package/dist/51.514a339efd6cd11db0f8.bundle.js +1 -0
  170. package/dist/52.410a7d8b4cb433fb24ca.bundle.js +1 -0
  171. package/dist/53.174d18435f7bf3bf05a0.bundle.js +1 -0
  172. package/dist/54.7cb3bd3ae8055e350629.bundle.js +1 -0
  173. package/dist/55.f0762e755ba58cbaac26.bundle.js +1 -0
  174. package/dist/56.3b0312e77f8607a4d957.bundle.js +1 -0
  175. package/dist/57.dfb7a710da8ca09c725b.bundle.js +1 -0
  176. package/dist/58.ac0fa95bbbe4b2dfb0fc.bundle.js +1 -0
  177. package/dist/59.273ffcd48e856d2752ff.bundle.js +1 -0
  178. package/dist/6.c5eea752e1f541f494e8.bundle.js +1 -0
  179. package/dist/60.00a29320ea162becd718.bundle.js +1 -0
  180. package/dist/61.3794de8b6d022738bafa.bundle.js +1 -0
  181. package/dist/62.cf39ad55adb1616560ec.bundle.js +1 -0
  182. package/dist/63.8880f667c958d12b338b.bundle.js +1 -0
  183. package/dist/64.fdd90fedc8a5dc3cacaf.bundle.js +1 -0
  184. package/dist/65.cdc961a8042c385c49c6.bundle.js +1 -0
  185. package/dist/66.c3b906de2fcf69089b7b.bundle.js +1 -0
  186. package/dist/67.9c851e5930459a5f5903.bundle.js +1 -0
  187. package/dist/68.05bba948c414a1e21c8f.bundle.js +1 -0
  188. package/dist/69.c5561c83fe410ea9a908.bundle.js +1 -0
  189. package/dist/7.14f008aaac190939acd3.bundle.js +7 -0
  190. package/dist/70.f2557c225be5923bab24.bundle.js +1 -0
  191. package/dist/71.e9c3c5ccc70f443c97cf.bundle.js +1 -0
  192. package/dist/72.0780a8424293909f94a4.bundle.js +1 -0
  193. package/dist/73.57e88cee0af3f67aee77.bundle.js +1 -0
  194. package/dist/74.48e90caf0b5ecd351f1d.bundle.js +1 -0
  195. package/dist/75.c75a824264d0e67421ed.bundle.js +1 -0
  196. package/dist/76.2ad0f5373462bc70bebf.bundle.js +1 -0
  197. package/dist/77.303a075d21928354102c.bundle.js +1 -0
  198. package/dist/78.66f3e9630550f20287ff.bundle.js +1 -0
  199. package/dist/79.29d39a29721f936ae688.bundle.js +1 -0
  200. package/dist/8.b5e29f80f8a5766d70d5.bundle.js +2 -0
  201. package/dist/80.8af0388db859fcc9fbf3.bundle.js +1 -0
  202. package/dist/{47.686e599732ae6f41120c.bundle.js → 81.2ff1f5047ab4e0591585.bundle.js} +1 -2
  203. package/dist/82.27bb51dfeb4898504e96.bundle.js +1 -0
  204. package/dist/83.a59d34bc50cf323af43d.bundle.js +1 -0
  205. package/dist/84.a4ee7bb5d3ed2e6ead5e.bundle.js +1 -0
  206. package/dist/{51.895a3dacdc3a8eaee275.bundle.js → 85.1f1b07562fbf97ab3e11.bundle.js} +1 -2
  207. package/dist/86.637667a4555ae621aff0.bundle.js +1 -0
  208. package/dist/87.b76338a62297ad83960b.bundle.js +1 -0
  209. package/dist/88.532e7295b49b1071d45c.bundle.js +1 -0
  210. package/dist/89.90bb1cf65f183ecce47c.bundle.js +1 -0
  211. package/dist/9.610b595b60a0fc51466a.bundle.js +1 -0
  212. package/dist/90.683c4d5b142356f274ef.bundle.js +1 -0
  213. package/dist/{56.91947e80d8e04223ac58.bundle.js → 91.2437dfc2ea1bc89f53f3.bundle.js} +1 -2
  214. package/dist/92.a12cfd3b602e98b344de.bundle.js +1 -0
  215. package/dist/93.a5cb6192d32cb016bb60.bundle.js +1 -0
  216. package/dist/94.f6a3e7628449796419b6.bundle.js +1 -0
  217. package/dist/95.15f0e472c49c81a68c3a.bundle.js +1 -0
  218. package/dist/96.2bf3b75fb0efb6b9e7e8.bundle.js +1 -0
  219. package/dist/97.bd1988af419f7373b569.bundle.js +1 -0
  220. package/dist/98.060c6842b3a8ed94dd20.bundle.js +1 -0
  221. package/dist/{64.ac922cb38c3ff6c431fb.bundle.js → 99.6360b70da56083cd76fe.bundle.js} +1 -2
  222. package/dist/bundle.39b836d40f0926aeec16.bundle.js +91 -0
  223. package/dist/css/aclmanagement.css +114 -0
  224. package/dist/css/angular-tooltips.css +144 -0
  225. package/dist/css/autocomplete-select.css +62 -0
  226. package/dist/css/backup-and-restore.css +7 -0
  227. package/dist/css/bootstrap-graphdb-theme-dark-auto.css +36 -0
  228. package/dist/css/bootstrap-graphdb-theme.css +514 -252
  229. package/dist/css/clustermanagement.css +145 -266
  230. package/dist/css/common.css +105 -0
  231. package/dist/css/dependencies.css +4 -4
  232. package/dist/css/domain-range-graph.css +3 -3
  233. package/dist/css/explore.css +7 -1
  234. package/dist/css/export.css +13 -9
  235. package/dist/css/find.css +2 -3
  236. package/dist/css/fonts/icons.eot +0 -0
  237. package/dist/css/fonts/icons.svg +14 -5
  238. package/dist/css/fonts/icons.ttf +0 -0
  239. package/dist/css/fonts/icons.woff +0 -0
  240. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff +0 -0
  241. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff2 +0 -0
  242. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff +0 -0
  243. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff2 +0 -0
  244. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
  245. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
  246. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
  247. package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
  248. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff +0 -0
  249. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff2 +0 -0
  250. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff +0 -0
  251. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff2 +0 -0
  252. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff +0 -0
  253. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff2 +0 -0
  254. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff +0 -0
  255. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff2 +0 -0
  256. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
  257. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
  258. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
  259. package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
  260. package/dist/css/graphs-config.css +4 -4
  261. package/dist/css/graphs-vizualizations.css +11 -10
  262. package/dist/css/guides.css +9 -0
  263. package/dist/css/jmx.css +22 -0
  264. package/dist/css/lib/angular-xeditable/xeditable.min.css +2 -2
  265. package/dist/css/new-sparql.css +68 -2
  266. package/dist/css/operations-statuses-monitor.css +111 -0
  267. package/dist/css/plugins.css +7 -18
  268. package/dist/css/rdf-class-hierarchy-labels.css +2 -2
  269. package/dist/css/rdf-class-hierarchy.css +3 -3
  270. package/dist/css/rdf-details-side-panel.css +8 -1
  271. package/dist/css/rdf-resource-search.css +5 -2
  272. package/dist/css/repositories.css +73 -31
  273. package/dist/css/repository.create.css +14 -4
  274. package/dist/css/shepherd-custom.css +80 -0
  275. package/dist/css/workbench-custom.css +54 -14
  276. package/dist/css/yasr.custom.css +28 -6
  277. package/dist/font/{icons.f404525bf0491c43fc1c35fc43fe14d8.eot → icons.23e96f215ba03e98233de883d2c30b60.eot} +0 -0
  278. package/dist/i18n/locale-en.json +488 -129
  279. package/dist/i18n/locale-fr.json +602 -261
  280. package/dist/icon.png +0 -0
  281. package/dist/img/{graphdb-logo-sq.75ddb875d9a986a6ac944450ae134725.svg → graphdb-logo-sq.3a5fb4b3f1e0e248dc308da1bf4de9f8.svg} +4 -4
  282. package/dist/img/{graphdb-logo.cb18d544b9cf2eb6062daa81bdb1f850.svg → graphdb-logo.741abf3e3881e1566e4504c9f00b91c0.svg} +3 -4
  283. package/dist/img/{graphdb-small.635110bdf15de2ad589b6e3fdaa75887.svg → graphdb-small.5f94ee13e65870be1db31bb89e6deded.svg} +6 -6
  284. package/dist/img/graphdb-splash.1ef2940889acddc03c7defb3f9f41f8d.svg +1 -0
  285. package/dist/img/{icons.2271b2cdd5a3d1037d80bf831f4918cc.svg → icons.ab6168834b8775f511d09c8fad540b27.svg} +14 -5
  286. package/dist/index.html +87 -85
  287. package/dist/js/angular/autocomplete/templates/modal/add-label.html +9 -8
  288. package/dist/js/angular/chatgpt/templates/chat.html +113 -0
  289. package/dist/js/angular/chatgpt/templates/chatInfo.html +11 -0
  290. package/dist/js/angular/chatgpt/templates/modal/settings.html +61 -0
  291. package/dist/js/angular/clustermanagement/templates/modal/add-nodes-dialog.html +67 -0
  292. package/dist/js/angular/clustermanagement/templates/modal/cluster-create-dialog.html +173 -0
  293. package/dist/js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html +9 -14
  294. package/dist/js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html +118 -0
  295. package/dist/js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html +39 -0
  296. package/dist/js/angular/clustermanagement/templates/modal/replace-nodes-dialog.html +86 -0
  297. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +18 -0
  298. package/dist/js/angular/core/directives/languageselector/templates/languageSelector.html +9 -7
  299. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +57 -0
  300. package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +44 -56
  301. package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +11 -11
  302. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +4 -6
  303. package/dist/js/angular/core/templates/core-errors.html +27 -18
  304. package/dist/js/angular/core/templates/inactive-plugin-warning-page.html +1 -2
  305. package/dist/js/angular/core/templates/modal/copy-to-clipboard-modal.html +9 -10
  306. package/dist/js/angular/core/templates/modal/modal-warning.html +1 -1
  307. package/dist/js/angular/core/templates/search-resource-input.html +9 -9
  308. package/dist/js/angular/externalsync/templates/deleteConnector.html +5 -5
  309. package/dist/js/angular/graphexplore/templates/modal/save-graph.html +10 -11
  310. package/dist/js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html +4 -6
  311. package/dist/js/angular/graphexplore/templates/searchIconInputTemplate.html +5 -7
  312. package/dist/js/angular/import/templates/filesTable.html +15 -15
  313. package/dist/js/angular/import/templates/settingsModal.html +231 -231
  314. package/dist/js/angular/import/templates/textSnippet.html +4 -4
  315. package/dist/js/angular/import/templates/urlImport.html +7 -5
  316. package/dist/js/angular/repositories/templates/fedx-repo.html +53 -49
  317. package/dist/js/angular/repositories/templates/ontop-repo.html +191 -60
  318. package/dist/js/angular/security/templates/modal/default-authorities.html +12 -12
  319. package/dist/js/angular/security/templates/user.html +102 -41
  320. package/dist/js/angular/security/templates/users.html +24 -17
  321. package/dist/js/angular/settings/modal/location-settings.html +17 -18
  322. package/dist/js/angular/settings/modal/validate-license.html +19 -6
  323. package/dist/js/angular/templates/graphdb-small.svg +6 -6
  324. package/dist/js/angular/templates/modal/add-fedx-remote-repo.html +17 -15
  325. package/dist/js/angular/templates/modal/add-location.html +18 -22
  326. package/dist/js/angular/templates/modal/edit-location.html +11 -11
  327. package/dist/js/angular/templates/modal/editRepoFile.html +2 -2
  328. package/dist/js/angular/templates/modal/upload-repository-config.html +2 -2
  329. package/dist/js/angular/templates/repositorySize.html +7 -1
  330. package/dist/js/lib/angucomplete-alt/angucomplete-alt.css +2 -2
  331. package/dist/js/lib/rzslider/rzslider.min.css +1 -1
  332. package/dist/license-checker-static.json +128 -0
  333. package/dist/license-checker.json +872 -0
  334. package/dist/main.3ac2b4b19f56209c6467.css +1 -0
  335. package/dist/main.948c3b96766ce09e145b.bundle.js +1 -0
  336. package/dist/pages/aclmanagement.html +177 -0
  337. package/dist/pages/autocomplete.html +16 -12
  338. package/dist/pages/choose-repository-type.html +8 -8
  339. package/dist/pages/cluster-management/clusterInfo.html +160 -138
  340. package/dist/pages/connectorsInfo.html +23 -18
  341. package/dist/pages/create-index.html +18 -18
  342. package/dist/pages/createConnector.html +137 -137
  343. package/dist/pages/dependencies.html +23 -31
  344. package/dist/pages/domainRangeInfo.html +16 -19
  345. package/dist/pages/edit.html +15 -15
  346. package/dist/pages/explore.html +22 -25
  347. package/dist/pages/export.html +38 -39
  348. package/dist/pages/find.html +3 -3
  349. package/dist/pages/graph-config/saveGraphConfig.html +43 -43
  350. package/dist/pages/graphs-visualizations.html +71 -78
  351. package/dist/pages/guides.html +60 -0
  352. package/dist/pages/home.html +46 -28
  353. package/dist/pages/import.html +11 -10
  354. package/dist/pages/info.html +18 -18
  355. package/dist/pages/jdbc-create.html +48 -46
  356. package/dist/pages/jdbc.html +4 -4
  357. package/dist/pages/licenseInfo.html +66 -48
  358. package/dist/pages/login.html +5 -6
  359. package/dist/pages/monitor/backup-and-restore.html +80 -0
  360. package/dist/pages/monitor/queries.html +7 -8
  361. package/dist/pages/monitor/resources.html +213 -79
  362. package/dist/pages/namespaces.html +22 -21
  363. package/dist/pages/plugins.html +9 -10
  364. package/dist/pages/rdfClassHierarchyInfo.html +31 -35
  365. package/dist/pages/rdfrank.html +25 -27
  366. package/dist/pages/registerLicenseInfo.html +10 -12
  367. package/dist/pages/repositories.html +170 -193
  368. package/dist/pages/repository.html +124 -58
  369. package/dist/pages/similarity-indexes.html +18 -18
  370. package/dist/pages/sparql-template-create.html +30 -29
  371. package/dist/pages/sparql-templates.html +4 -4
  372. package/dist/pages/sparql.html +11 -11
  373. package/dist/pages/ux-test1.html +102 -0
  374. package/dist/pages/ux-test2.html +17 -0
  375. package/dist/pages/webapi.html +4 -4
  376. package/dist/plugin-registry.js +14 -0
  377. package/dist/plugins.js +1967 -84
  378. package/dist/res/sparql/keyboard-shortcuts.html +7 -1
  379. package/dist/res/swagger/css/onto-theme.css +8 -0
  380. package/dist/res/swagger/css/reset.css +1 -2
  381. package/dist/res/swagger/css/screen.css +6 -15
  382. package/dist/res/swagger/fonts/icons.woff +0 -0
  383. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff +0 -0
  384. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff2 +0 -0
  385. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff +0 -0
  386. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff2 +0 -0
  387. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
  388. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
  389. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
  390. package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
  391. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff +0 -0
  392. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff2 +0 -0
  393. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff +0 -0
  394. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff2 +0 -0
  395. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff +0 -0
  396. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff2 +0 -0
  397. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff +0 -0
  398. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff2 +0 -0
  399. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
  400. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
  401. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
  402. package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
  403. package/dist/res/swagger/fonts/rubik-italic.woff +0 -0
  404. package/dist/res/swagger/fonts/rubik-italic.woff2 +0 -0
  405. package/dist/res/swagger/fonts/rubik-light.woff +0 -0
  406. package/dist/res/swagger/fonts/rubik-light.woff2 +0 -0
  407. package/dist/res/swagger/fonts/rubik-lightitalic.woff +0 -0
  408. package/dist/res/swagger/fonts/rubik-lightitalic.woff2 +0 -0
  409. package/dist/res/swagger/fonts/rubik-medium.woff +0 -0
  410. package/dist/res/swagger/fonts/rubik-medium.woff2 +0 -0
  411. package/dist/res/swagger/fonts/rubik-mediumitalic.woff +0 -0
  412. package/dist/res/swagger/fonts/rubik-mediumitalic.woff2 +0 -0
  413. package/dist/res/swagger/fonts/rubik-regular.woff +0 -0
  414. package/dist/res/swagger/fonts/rubik-regular.woff2 +0 -0
  415. package/dist/res/swagger/index.html +27 -25
  416. package/dist/vendor.7b6ede99ef82acd3dcf5.bundle.js +27 -0
  417. package/dist/{vendor.4ba46e62f4d43dab5e82.css → vendor.d1c629ceaacea40a5f4a.css} +1 -1
  418. package/package.json +13 -9
  419. package/dist/0.32d0f91ca9c8d09fb6f1.bundle.js +0 -82
  420. package/dist/0.32d0f91ca9c8d09fb6f1.bundle.js.map +0 -1
  421. package/dist/1.6300131e72a9f28f9df3.bundle.js +0 -27
  422. package/dist/1.6300131e72a9f28f9df3.bundle.js.map +0 -1
  423. package/dist/10.bb0713b18c3e55445fa7.bundle.js +0 -2
  424. package/dist/10.bb0713b18c3e55445fa7.bundle.js.map +0 -1
  425. package/dist/100.acbece8e389effbcfa2e.bundle.js +0 -2
  426. package/dist/100.acbece8e389effbcfa2e.bundle.js.map +0 -1
  427. package/dist/101.abc28aeafc8c037b80dc.bundle.js +0 -2
  428. package/dist/101.abc28aeafc8c037b80dc.bundle.js.map +0 -1
  429. package/dist/102.236df15ec49946c8799a.bundle.js +0 -2
  430. package/dist/102.236df15ec49946c8799a.bundle.js.map +0 -1
  431. package/dist/103.05b86c1b360c05133b49.bundle.js.map +0 -1
  432. package/dist/104.089568ff7c49a29de892.bundle.js.map +0 -1
  433. package/dist/105.81b74220f7fa646e719b.bundle.js.map +0 -1
  434. package/dist/106.5de7943f8a3adda97372.bundle.js +0 -2
  435. package/dist/106.5de7943f8a3adda97372.bundle.js.map +0 -1
  436. package/dist/11.288d37db1902f00f7c8e.bundle.js +0 -2
  437. package/dist/11.288d37db1902f00f7c8e.bundle.js.map +0 -1
  438. package/dist/110.5a553b21d45a64e7e321.bundle.js +0 -2
  439. package/dist/110.5a553b21d45a64e7e321.bundle.js.map +0 -1
  440. package/dist/111.04e34833a2c4fc227899.bundle.js +0 -2
  441. package/dist/111.04e34833a2c4fc227899.bundle.js.map +0 -1
  442. package/dist/112.b2bdfd64c50509d05503.bundle.js +0 -2
  443. package/dist/112.b2bdfd64c50509d05503.bundle.js.map +0 -1
  444. package/dist/113.b386b036c2a3d9077f64.bundle.js +0 -2
  445. package/dist/113.b386b036c2a3d9077f64.bundle.js.map +0 -1
  446. package/dist/114.0768e042a8e6ec856942.bundle.js +0 -2
  447. package/dist/114.0768e042a8e6ec856942.bundle.js.map +0 -1
  448. package/dist/115.374b221f284e8755ef31.bundle.js +0 -2
  449. package/dist/115.374b221f284e8755ef31.bundle.js.map +0 -1
  450. package/dist/116.ca9d40889c222f47c45f.bundle.js +0 -2
  451. package/dist/116.ca9d40889c222f47c45f.bundle.js.map +0 -1
  452. package/dist/117.92f7630bfb95444a87e8.bundle.js +0 -2
  453. package/dist/117.92f7630bfb95444a87e8.bundle.js.map +0 -1
  454. package/dist/118.7e28dcfd80b93a705d71.bundle.js +0 -2
  455. package/dist/118.7e28dcfd80b93a705d71.bundle.js.map +0 -1
  456. package/dist/119.e3a038ffb960ed3661fe.bundle.js +0 -2
  457. package/dist/119.e3a038ffb960ed3661fe.bundle.js.map +0 -1
  458. package/dist/12.9004ab127289745129a4.bundle.js +0 -4
  459. package/dist/12.9004ab127289745129a4.bundle.js.map +0 -1
  460. package/dist/120.3b0b67fbfa81ec95e044.bundle.js.map +0 -1
  461. package/dist/121.ff452d05188836228deb.bundle.js.map +0 -1
  462. package/dist/122.1b8056c745358fa2f6cb.bundle.js +0 -2
  463. package/dist/122.1b8056c745358fa2f6cb.bundle.js.map +0 -1
  464. package/dist/123.289bb9a87ce416004c0a.bundle.js.map +0 -1
  465. package/dist/124.75965fcb93d0fe988609.bundle.js +0 -2
  466. package/dist/124.75965fcb93d0fe988609.bundle.js.map +0 -1
  467. package/dist/125.51ff26fe7687752811e4.bundle.js.map +0 -1
  468. package/dist/126.b89a0728154793be4eb9.bundle.js +0 -2
  469. package/dist/126.b89a0728154793be4eb9.bundle.js.map +0 -1
  470. package/dist/127.4d0a2164fb95df43ea22.bundle.js.map +0 -1
  471. package/dist/128.c7a3530622ede2f34e72.bundle.js.map +0 -1
  472. package/dist/129.2d32313059ae96dba010.bundle.js.map +0 -1
  473. package/dist/13.897f9af290de9fbd43bb.bundle.js +0 -16
  474. package/dist/13.897f9af290de9fbd43bb.bundle.js.map +0 -1
  475. package/dist/130.7302112cf14a10bd1306.bundle.js.map +0 -1
  476. package/dist/131.eb262b5100305bdc23ee.bundle.js.map +0 -1
  477. package/dist/132.264b9ebf860e308417ad.bundle.js +0 -2
  478. package/dist/132.264b9ebf860e308417ad.bundle.js.map +0 -1
  479. package/dist/133.f855496341ba657eb673.bundle.js.map +0 -1
  480. package/dist/134.91de2ab11c49967200ad.bundle.js +0 -2
  481. package/dist/134.91de2ab11c49967200ad.bundle.js.map +0 -1
  482. package/dist/135.82e48e81e60b2ab89e04.bundle.js +0 -2
  483. package/dist/135.82e48e81e60b2ab89e04.bundle.js.map +0 -1
  484. package/dist/136.74f131c98a163b48e3df.bundle.js.map +0 -1
  485. package/dist/137.89253235e0e48f86534b.bundle.js +0 -2
  486. package/dist/137.89253235e0e48f86534b.bundle.js.map +0 -1
  487. package/dist/138.9111fe731587313e4574.bundle.js.map +0 -1
  488. package/dist/139.642cab70149cdfc8c034.bundle.js +0 -2
  489. package/dist/139.642cab70149cdfc8c034.bundle.js.map +0 -1
  490. package/dist/14.3c22be70e13b5347940a.bundle.js +0 -3
  491. package/dist/14.3c22be70e13b5347940a.bundle.js.map +0 -1
  492. package/dist/140.8fcbd3b16a54b9ca5d80.bundle.js +0 -2
  493. package/dist/140.8fcbd3b16a54b9ca5d80.bundle.js.map +0 -1
  494. package/dist/141.09939d5f25d69d9e1bdd.bundle.js +0 -2
  495. package/dist/141.09939d5f25d69d9e1bdd.bundle.js.map +0 -1
  496. package/dist/142.5ced0a8e7a08aea7988f.bundle.js.map +0 -1
  497. package/dist/143.1bd6e2941d5c9fdc9e77.bundle.js +0 -2
  498. package/dist/143.1bd6e2941d5c9fdc9e77.bundle.js.map +0 -1
  499. package/dist/144.34dd1b710f93da283e39.bundle.js +0 -2
  500. package/dist/144.34dd1b710f93da283e39.bundle.js.map +0 -1
  501. package/dist/145.832e90a54396296da91b.bundle.js +0 -2
  502. package/dist/145.832e90a54396296da91b.bundle.js.map +0 -1
  503. package/dist/146.a4ab1f2f5177d9e27861.bundle.js +0 -2
  504. package/dist/146.a4ab1f2f5177d9e27861.bundle.js.map +0 -1
  505. package/dist/147.f6bd445276a200981cff.bundle.js.map +0 -1
  506. package/dist/148.1c23268b87514b7220b3.bundle.js +0 -2
  507. package/dist/148.1c23268b87514b7220b3.bundle.js.map +0 -1
  508. package/dist/149.82fc16905f1377c6610a.bundle.js +0 -2
  509. package/dist/149.82fc16905f1377c6610a.bundle.js.map +0 -1
  510. package/dist/15.ba4fe6f57951d2f73adc.bundle.js +0 -2
  511. package/dist/15.ba4fe6f57951d2f73adc.bundle.js.map +0 -1
  512. package/dist/150.6d8e3bb0cbc5774322d9.bundle.js +0 -2
  513. package/dist/150.6d8e3bb0cbc5774322d9.bundle.js.map +0 -1
  514. package/dist/151.c752cbb4d5f9299df813.bundle.js +0 -2
  515. package/dist/151.c752cbb4d5f9299df813.bundle.js.map +0 -1
  516. package/dist/152.78d7840c4b8f93748bfe.bundle.js +0 -2
  517. package/dist/152.78d7840c4b8f93748bfe.bundle.js.map +0 -1
  518. package/dist/153.ebc378a7a60222b69484.bundle.js.map +0 -1
  519. package/dist/154.4452ad65074e44967389.bundle.js +0 -2
  520. package/dist/154.4452ad65074e44967389.bundle.js.map +0 -1
  521. package/dist/155.12819130f26753e109ad.bundle.js +0 -2
  522. package/dist/155.12819130f26753e109ad.bundle.js.map +0 -1
  523. package/dist/16.a236b38d63123b1a3c61.bundle.js +0 -4
  524. package/dist/16.a236b38d63123b1a3c61.bundle.js.map +0 -1
  525. package/dist/17.d8d59fa7fbb3b422fdf8.bundle.js +0 -2
  526. package/dist/17.d8d59fa7fbb3b422fdf8.bundle.js.map +0 -1
  527. package/dist/18.bc2da9ff57be136ef082.bundle.js +0 -2
  528. package/dist/18.bc2da9ff57be136ef082.bundle.js.map +0 -1
  529. package/dist/19.19811699b6e54f19f71e.bundle.js +0 -3
  530. package/dist/19.19811699b6e54f19f71e.bundle.js.map +0 -1
  531. package/dist/2.fb2f97f5c543a24296f6.bundle.js +0 -2
  532. package/dist/2.fb2f97f5c543a24296f6.bundle.js.map +0 -1
  533. package/dist/20.df3652981fc73c6a8b8c.bundle.js +0 -2
  534. package/dist/20.df3652981fc73c6a8b8c.bundle.js.map +0 -1
  535. package/dist/21.b7fbdf3c3b22b578928c.bundle.js +0 -2
  536. package/dist/21.b7fbdf3c3b22b578928c.bundle.js.map +0 -1
  537. package/dist/22.2da0e8ec2ac2048ecd60.bundle.js +0 -3
  538. package/dist/22.2da0e8ec2ac2048ecd60.bundle.js.map +0 -1
  539. package/dist/23.4140c4c20347efc963a4.bundle.js +0 -2
  540. package/dist/23.4140c4c20347efc963a4.bundle.js.map +0 -1
  541. package/dist/24.219ce55f8f6a5bd02dad.bundle.js +0 -2
  542. package/dist/24.219ce55f8f6a5bd02dad.bundle.js.map +0 -1
  543. package/dist/25.e79de2370b1ee4072e19.bundle.js +0 -2
  544. package/dist/25.e79de2370b1ee4072e19.bundle.js.map +0 -1
  545. package/dist/26.c1619706b8cbb1ab23cb.bundle.js +0 -2
  546. package/dist/26.c1619706b8cbb1ab23cb.bundle.js.map +0 -1
  547. package/dist/27.350dba622e243e1ab5fb.bundle.js +0 -2
  548. package/dist/27.350dba622e243e1ab5fb.bundle.js.map +0 -1
  549. package/dist/28.e687c87a5f1dc8a30fd0.bundle.js +0 -2
  550. package/dist/28.e687c87a5f1dc8a30fd0.bundle.js.map +0 -1
  551. package/dist/29.34a4af65623cd4af6899.bundle.js +0 -2
  552. package/dist/29.34a4af65623cd4af6899.bundle.js.map +0 -1
  553. package/dist/3.dfa66b44200c3fca24a2.bundle.js +0 -2
  554. package/dist/3.dfa66b44200c3fca24a2.bundle.js.map +0 -1
  555. package/dist/30.f4738c7c2d74f00f2e5f.bundle.js +0 -2
  556. package/dist/30.f4738c7c2d74f00f2e5f.bundle.js.map +0 -1
  557. package/dist/31.ab8f2e70841221e1d427.bundle.js +0 -2
  558. package/dist/31.ab8f2e70841221e1d427.bundle.js.map +0 -1
  559. package/dist/32.3210a7952ffcb57daa1a.bundle.js +0 -2
  560. package/dist/32.3210a7952ffcb57daa1a.bundle.js.map +0 -1
  561. package/dist/33.fcf9c56901b5590bd603.bundle.js +0 -2
  562. package/dist/33.fcf9c56901b5590bd603.bundle.js.map +0 -1
  563. package/dist/34.2c344c05bfc4048c3d53.bundle.js +0 -2
  564. package/dist/34.2c344c05bfc4048c3d53.bundle.js.map +0 -1
  565. package/dist/35.423c4a91e80adf5d97c8.bundle.js +0 -2
  566. package/dist/35.423c4a91e80adf5d97c8.bundle.js.map +0 -1
  567. package/dist/36.247686b6d65de11ec10d.bundle.js +0 -2
  568. package/dist/36.247686b6d65de11ec10d.bundle.js.map +0 -1
  569. package/dist/37.5f6089a939b59309cc82.bundle.js +0 -2
  570. package/dist/37.5f6089a939b59309cc82.bundle.js.map +0 -1
  571. package/dist/38.9e79a9ec2f9d5af38692.bundle.js +0 -2
  572. package/dist/38.9e79a9ec2f9d5af38692.bundle.js.map +0 -1
  573. package/dist/39.b64ae969a5f5fea4504c.bundle.js +0 -2
  574. package/dist/39.b64ae969a5f5fea4504c.bundle.js.map +0 -1
  575. package/dist/4.188966396c80909f58cd.bundle.js +0 -2
  576. package/dist/4.188966396c80909f58cd.bundle.js.map +0 -1
  577. package/dist/40.1303e99feecbba2614a7.bundle.js +0 -2
  578. package/dist/40.1303e99feecbba2614a7.bundle.js.map +0 -1
  579. package/dist/41.687956ca2240355a838f.bundle.js +0 -2
  580. package/dist/41.687956ca2240355a838f.bundle.js.map +0 -1
  581. package/dist/42.78e0302e87b9d244a1d7.bundle.js +0 -2
  582. package/dist/42.78e0302e87b9d244a1d7.bundle.js.map +0 -1
  583. package/dist/43.ee0de548c525f8e422ba.bundle.js +0 -2
  584. package/dist/43.ee0de548c525f8e422ba.bundle.js.map +0 -1
  585. package/dist/44.38b4979d4b201ae1fffb.bundle.js +0 -2
  586. package/dist/44.38b4979d4b201ae1fffb.bundle.js.map +0 -1
  587. package/dist/45.8a0ab002ad0f614964e5.bundle.js +0 -2
  588. package/dist/45.8a0ab002ad0f614964e5.bundle.js.map +0 -1
  589. package/dist/46.720c0f65b93f4fe01a7c.bundle.js +0 -2
  590. package/dist/46.720c0f65b93f4fe01a7c.bundle.js.map +0 -1
  591. package/dist/47.686e599732ae6f41120c.bundle.js.map +0 -1
  592. package/dist/48.bdb51ad865126b918831.bundle.js +0 -2
  593. package/dist/48.bdb51ad865126b918831.bundle.js.map +0 -1
  594. package/dist/49.74a24e08097ef1f6fcd2.bundle.js +0 -2
  595. package/dist/49.74a24e08097ef1f6fcd2.bundle.js.map +0 -1
  596. package/dist/5.9bbd38317d375cd02da2.bundle.js +0 -8
  597. package/dist/5.9bbd38317d375cd02da2.bundle.js.map +0 -1
  598. package/dist/50.313e315d4c339ad1bcdd.bundle.js +0 -2
  599. package/dist/50.313e315d4c339ad1bcdd.bundle.js.map +0 -1
  600. package/dist/51.895a3dacdc3a8eaee275.bundle.js.map +0 -1
  601. package/dist/52.1f6bc47f1c9abcc79e8d.bundle.js +0 -2
  602. package/dist/52.1f6bc47f1c9abcc79e8d.bundle.js.map +0 -1
  603. package/dist/53.f6c19075252833268cca.bundle.js +0 -2
  604. package/dist/53.f6c19075252833268cca.bundle.js.map +0 -1
  605. package/dist/54.599ca3ae32ee1fb5f937.bundle.js +0 -2
  606. package/dist/54.599ca3ae32ee1fb5f937.bundle.js.map +0 -1
  607. package/dist/55.c20a51cb1d894f9113b4.bundle.js +0 -2
  608. package/dist/55.c20a51cb1d894f9113b4.bundle.js.map +0 -1
  609. package/dist/56.91947e80d8e04223ac58.bundle.js.map +0 -1
  610. package/dist/57.ab4ee313c9d6c7e29384.bundle.js +0 -2
  611. package/dist/57.ab4ee313c9d6c7e29384.bundle.js.map +0 -1
  612. package/dist/58.99c83a8dac31c1b681df.bundle.js +0 -2
  613. package/dist/58.99c83a8dac31c1b681df.bundle.js.map +0 -1
  614. package/dist/59.99da52e1d8946ac0f601.bundle.js +0 -2
  615. package/dist/59.99da52e1d8946ac0f601.bundle.js.map +0 -1
  616. package/dist/6.6c67a1bcf82bb335b0c4.bundle.js +0 -2
  617. package/dist/6.6c67a1bcf82bb335b0c4.bundle.js.map +0 -1
  618. package/dist/60.92b9758945e497e52bac.bundle.js +0 -2
  619. package/dist/60.92b9758945e497e52bac.bundle.js.map +0 -1
  620. package/dist/61.42887fbc87f941cf7c81.bundle.js +0 -2
  621. package/dist/61.42887fbc87f941cf7c81.bundle.js.map +0 -1
  622. package/dist/62.c21410d6e123395d3920.bundle.js +0 -2
  623. package/dist/62.c21410d6e123395d3920.bundle.js.map +0 -1
  624. package/dist/63.1ab0c580ba57aee5479c.bundle.js +0 -2
  625. package/dist/63.1ab0c580ba57aee5479c.bundle.js.map +0 -1
  626. package/dist/64.ac922cb38c3ff6c431fb.bundle.js.map +0 -1
  627. package/dist/65.9fcde753699dc94bea1d.bundle.js +0 -2
  628. package/dist/65.9fcde753699dc94bea1d.bundle.js.map +0 -1
  629. package/dist/66.8213a0430e7543b6d7f7.bundle.js +0 -2
  630. package/dist/66.8213a0430e7543b6d7f7.bundle.js.map +0 -1
  631. package/dist/67.320a484bc979f5076d8c.bundle.js +0 -2
  632. package/dist/67.320a484bc979f5076d8c.bundle.js.map +0 -1
  633. package/dist/68.a69e9e22327878f44dbd.bundle.js +0 -2
  634. package/dist/68.a69e9e22327878f44dbd.bundle.js.map +0 -1
  635. package/dist/69.be786580c66ac4ee18cb.bundle.js +0 -2
  636. package/dist/69.be786580c66ac4ee18cb.bundle.js.map +0 -1
  637. package/dist/7.0fd9bc389f42820382e4.bundle.js +0 -3
  638. package/dist/7.0fd9bc389f42820382e4.bundle.js.map +0 -1
  639. package/dist/70.93cfa1f02948e8276451.bundle.js +0 -2
  640. package/dist/70.93cfa1f02948e8276451.bundle.js.map +0 -1
  641. package/dist/71.6b8c8bce52a95f2da242.bundle.js +0 -2
  642. package/dist/71.6b8c8bce52a95f2da242.bundle.js.map +0 -1
  643. package/dist/72.6cbb41a38d917191c660.bundle.js +0 -2
  644. package/dist/72.6cbb41a38d917191c660.bundle.js.map +0 -1
  645. package/dist/73.801e05b4acc74a3e268c.bundle.js +0 -2
  646. package/dist/73.801e05b4acc74a3e268c.bundle.js.map +0 -1
  647. package/dist/74.1c6322e5f93d5376fd76.bundle.js +0 -2
  648. package/dist/74.1c6322e5f93d5376fd76.bundle.js.map +0 -1
  649. package/dist/75.c95c9015a30a98acb353.bundle.js +0 -2
  650. package/dist/75.c95c9015a30a98acb353.bundle.js.map +0 -1
  651. package/dist/76.29111b9618d43a0dd149.bundle.js +0 -2
  652. package/dist/76.29111b9618d43a0dd149.bundle.js.map +0 -1
  653. package/dist/77.6ced6f6e26dfe1c4e00f.bundle.js +0 -2
  654. package/dist/77.6ced6f6e26dfe1c4e00f.bundle.js.map +0 -1
  655. package/dist/78.7c7d2a0d9e7c2d2483e6.bundle.js +0 -2
  656. package/dist/78.7c7d2a0d9e7c2d2483e6.bundle.js.map +0 -1
  657. package/dist/79.696045e048461f420813.bundle.js +0 -2
  658. package/dist/79.696045e048461f420813.bundle.js.map +0 -1
  659. package/dist/8.22695f5c20dcddc1c7f9.bundle.js +0 -2
  660. package/dist/8.22695f5c20dcddc1c7f9.bundle.js.map +0 -1
  661. package/dist/80.b5e832779f88ebe839e2.bundle.js +0 -2
  662. package/dist/80.b5e832779f88ebe839e2.bundle.js.map +0 -1
  663. package/dist/81.5a0776b89463df60bd1a.bundle.js +0 -2
  664. package/dist/81.5a0776b89463df60bd1a.bundle.js.map +0 -1
  665. package/dist/82.0a98b482c7c37a9812fc.bundle.js +0 -2
  666. package/dist/82.0a98b482c7c37a9812fc.bundle.js.map +0 -1
  667. package/dist/83.8beeb651df72c23d53ac.bundle.js +0 -2
  668. package/dist/83.8beeb651df72c23d53ac.bundle.js.map +0 -1
  669. package/dist/84.6f35fe422db61d53ae3e.bundle.js +0 -2
  670. package/dist/84.6f35fe422db61d53ae3e.bundle.js.map +0 -1
  671. package/dist/85.2d1142fcbdf4c9868e94.bundle.js +0 -2
  672. package/dist/85.2d1142fcbdf4c9868e94.bundle.js.map +0 -1
  673. package/dist/86.ce91cb69963c2b84e551.bundle.js +0 -2
  674. package/dist/86.ce91cb69963c2b84e551.bundle.js.map +0 -1
  675. package/dist/87.d4aa485128cd374a11c7.bundle.js +0 -2
  676. package/dist/87.d4aa485128cd374a11c7.bundle.js.map +0 -1
  677. package/dist/88.b4cd8e99a6af1abea692.bundle.js +0 -2
  678. package/dist/88.b4cd8e99a6af1abea692.bundle.js.map +0 -1
  679. package/dist/89.8ce40cc9d5fe2596fdf9.bundle.js +0 -2
  680. package/dist/89.8ce40cc9d5fe2596fdf9.bundle.js.map +0 -1
  681. package/dist/9.d94f24c12177433d455a.bundle.js +0 -2
  682. package/dist/9.d94f24c12177433d455a.bundle.js.map +0 -1
  683. package/dist/90.94988124ca51fa46932e.bundle.js +0 -2
  684. package/dist/90.94988124ca51fa46932e.bundle.js.map +0 -1
  685. package/dist/91.bfbbacbaea095478d82e.bundle.js +0 -2
  686. package/dist/91.bfbbacbaea095478d82e.bundle.js.map +0 -1
  687. package/dist/92.791121a262e5f42a2ba2.bundle.js +0 -2
  688. package/dist/92.791121a262e5f42a2ba2.bundle.js.map +0 -1
  689. package/dist/93.7da268902b8515abecf6.bundle.js +0 -2
  690. package/dist/93.7da268902b8515abecf6.bundle.js.map +0 -1
  691. package/dist/94.88f1bd8fa645739c4f30.bundle.js +0 -2
  692. package/dist/94.88f1bd8fa645739c4f30.bundle.js.map +0 -1
  693. package/dist/95.bbd1b757de3af20f2ac1.bundle.js +0 -2
  694. package/dist/95.bbd1b757de3af20f2ac1.bundle.js.map +0 -1
  695. package/dist/96.38e7df277c99946f9a20.bundle.js +0 -2
  696. package/dist/96.38e7df277c99946f9a20.bundle.js.map +0 -1
  697. package/dist/97.1818744137f2fb66596a.bundle.js +0 -2
  698. package/dist/97.1818744137f2fb66596a.bundle.js.map +0 -1
  699. package/dist/98.1a14af46a31cf35db0e5.bundle.js +0 -2
  700. package/dist/98.1a14af46a31cf35db0e5.bundle.js.map +0 -1
  701. package/dist/99.bd486f7d738e281a0752.bundle.js +0 -2
  702. package/dist/99.bd486f7d738e281a0752.bundle.js.map +0 -1
  703. package/dist/bundle.5eeff901b77240e58d27.bundle.js +0 -89
  704. package/dist/bundle.5eeff901b77240e58d27.bundle.js.map +0 -1
  705. package/dist/css/fonts/rubik-italic.woff +0 -0
  706. package/dist/css/fonts/rubik-italic.woff2 +0 -0
  707. package/dist/css/fonts/rubik-light.woff +0 -0
  708. package/dist/css/fonts/rubik-light.woff2 +0 -0
  709. package/dist/css/fonts/rubik-lightitalic.woff +0 -0
  710. package/dist/css/fonts/rubik-lightitalic.woff2 +0 -0
  711. package/dist/css/fonts/rubik-medium.woff +0 -0
  712. package/dist/css/fonts/rubik-medium.woff2 +0 -0
  713. package/dist/css/fonts/rubik-mediumitalic.woff +0 -0
  714. package/dist/css/fonts/rubik-mediumitalic.woff2 +0 -0
  715. package/dist/css/fonts/rubik-regular.woff +0 -0
  716. package/dist/css/fonts/rubik-regular.woff2 +0 -0
  717. package/dist/css/lib/bootstrap-switch/bootstrap-switch.min.css +0 -10
  718. package/dist/img/graphdb-splash.2eb3f7f02aa7e25a2545459e096f3738.svg +0 -141
  719. package/dist/js/angular/clustermanagement/templates/modal/clone-modal.html +0 -27
  720. package/dist/js/lib/nvd3/nv.d3.css +0 -755
  721. package/dist/main.e5d47f1d0bcd23074c38.css +0 -1
  722. package/dist/main.f10730ef6eebe969b494.bundle.js +0 -2
  723. package/dist/main.f10730ef6eebe969b494.bundle.js.map +0 -1
  724. package/dist/pages/cluster-management/cluster-configuration.html +0 -183
  725. package/dist/res/swagger/css/style.css +0 -250
  726. package/dist/res/swagger/css/typography.css +0 -60
  727. package/dist/vendor.327ffd7c7997ca288654.bundle.js +0 -50
  728. package/dist/vendor.327ffd7c7997ca288654.bundle.js.map +0 -1
package/dist/plugins.js CHANGED
@@ -1,3 +1,37 @@
1
+ PluginRegistry.add('route', {
2
+ 'url': '/aclmanagement',
3
+ 'module': 'graphdb.framework.aclmanagement',
4
+ 'path': 'aclmanagement/app',
5
+ 'chunk': 'aclmanagement',
6
+ 'controller': 'AclManagementCtrl',
7
+ 'templateUrl': 'pages/aclmanagement.html',
8
+ 'title': 'view.aclmanagement.title',
9
+ 'helpInfo': 'view.aclmanagement.helpInfo'
10
+ });
11
+
12
+ PluginRegistry.add('main.menu', {
13
+ 'items': [
14
+ {
15
+ label: 'Setup',
16
+ labelKey: 'menu.setup.label',
17
+ href: '#',
18
+ order: 5,
19
+ role: 'IS_AUTHENTICATED_FULLY',
20
+ icon: "icon-settings",
21
+ guideSelector: 'menu-setup'
22
+ },
23
+ {
24
+ label: 'ACL Management',
25
+ labelKey: 'menu.aclmanagement.label',
26
+ href: 'aclmanagement',
27
+ order: 6,
28
+ parent: 'Setup',
29
+ role: "ROLE_ADMIN",
30
+ guideSelector: 'sub-menu-aclmanagement'
31
+ }
32
+ ]
33
+ });
34
+
1
35
  PluginRegistry.add('route', {
2
36
  'url': '/autocomplete',
3
37
  'module': 'graphdb.framework.autocomplete',
@@ -11,11 +45,69 @@ PluginRegistry.add('route', {
11
45
 
12
46
  PluginRegistry.add('main.menu', {
13
47
  'items': [
14
- {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
15
- {label: 'Autocomplete', labelKey: 'menu.autocomplete.label', href: 'autocomplete', order: 40, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
48
+ {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
49
+ {label: 'Autocomplete', labelKey: 'menu.autocomplete.label', href: 'autocomplete', order: 40, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-autocomplete'}
50
+ ]
51
+ });
52
+
53
+ PluginRegistry.add('route', {
54
+ 'url': '/monitor/backup-and-restore',
55
+ 'module': 'graphdb.framework.monitoring.backupandrestore',
56
+ 'path': 'backup-and-restore/app',
57
+ 'chunk': 'monitor-backup-and-restore',
58
+ 'controller': 'BackupAndRestoreCtrl',
59
+ 'templateUrl': 'pages/monitor/backup-and-restore.html',
60
+ 'title': 'view.monitoring.backup_and_restore.title',
61
+ 'helpInfo': 'view.monitoring.backup_and_restore.helpInfo'
62
+ });
63
+
64
+ PluginRegistry.add('main.menu', {
65
+ 'items': [
66
+ {
67
+ label: 'Backup and Restore',
68
+ labelKey: 'menu.backup_and_restore.label',
69
+ href: 'monitor/backup-and-restore',
70
+ order: 2,
71
+ parent: 'Monitor',
72
+ guideSelector: 'sub-menu-backup-and-restore'
73
+ }
16
74
  ]
17
75
  });
18
76
 
77
+ PluginRegistry.add('route', [
78
+ {
79
+ 'url': '/chatgpt',
80
+ 'templateUrl': 'js/angular/chatgpt/templates/chat.html',
81
+ 'module': 'graphdb.framework.chatgpt',
82
+ 'path': 'chatgpt/app',
83
+ 'controller': 'ChatGptCtrl',
84
+ 'title': 'menu.ttyg.label',
85
+ 'helpInfo': 'ttyg.helpInfo'
86
+ }
87
+ ]);
88
+
89
+ PluginRegistry.add('main.menu', {
90
+ 'items': [
91
+ {
92
+ label: 'Lab',
93
+ labelKey: 'menu.lab.label',
94
+ href: '#',
95
+ order: 6,
96
+ role: 'IS_AUTHENTICATED_FULLY',
97
+ icon: "fa fa-flask",
98
+ guideSelector: 'menu-lab'
99
+ },
100
+ {
101
+ label: 'Talk to Your Graph',
102
+ labelKey: 'menu.ttyg.label',
103
+ href: 'chatgpt',
104
+ order: 20,
105
+ role: 'ROLE_USER',
106
+ parent: 'Lab',
107
+ guideSelector: 'sub-menu-ttyg'
108
+ }]
109
+ });
110
+
19
111
  PluginRegistry.add('route', [
20
112
  {
21
113
  'url': '/cluster',
@@ -26,14 +118,6 @@ PluginRegistry.add('route', [
26
118
  'templateUrl': 'pages/cluster-management/clusterInfo.html',
27
119
  'helpInfo': 'view.clusterManagement.helpInfo',
28
120
  'title': 'view.clusterManagement.title'
29
- }, {
30
- 'url': '/cluster/create',
31
- 'module': 'graphdb.framework.clustermanagement',
32
- 'path': 'clustermanagement/app',
33
- 'chunk': 'clustermanagement',
34
- 'controller': 'CreateClusterCtrl',
35
- 'templateUrl': 'pages/cluster-management/cluster-configuration.html',
36
- 'title': 'view.clusterManagement.create.title'
37
121
  }
38
122
  ]);
39
123
 
@@ -43,12 +127,9 @@ PluginRegistry.add('main.menu', {
43
127
  labelKey: 'menu.cluster.label',
44
128
  href: 'cluster',
45
129
  order: 20,
46
- role: 'ROLE_ADMIN',
130
+ role: 'ROLE_USER',
47
131
  parent: 'Setup',
48
- children: [{
49
- href: 'cluster/create',
50
- children: []
51
- }]
132
+ guideSelector: 'sub-menu-cluster'
52
133
  }]
53
134
  });
54
135
 
@@ -88,7 +169,8 @@ PluginRegistry.add('main.menu', {
88
169
  href: '#',
89
170
  order: 1,
90
171
  role: 'IS_AUTHENTICATED_FULLY',
91
- icon: "icon-data"
172
+ icon: "icon-data",
173
+ guideSelector: 'menu-explore'
92
174
  }]
93
175
  });
94
176
 
@@ -99,7 +181,7 @@ PluginRegistry.add('route', {
99
181
  'chunk': 'export',
100
182
  'controller': 'ExportCtrl',
101
183
  'templateUrl': 'pages/export.html',
102
- 'title': 'menu.explore.label',
184
+ 'title': 'menu.graphs.overview.label',
103
185
  'helpInfo': 'view.export.ctr.helpInfo '
104
186
  });
105
187
 
@@ -111,7 +193,8 @@ PluginRegistry.add('main.menu', {
111
193
  href: '#',
112
194
  order: 1,
113
195
  role: 'IS_AUTHENTICATED_FULLY',
114
- icon: 'icon-data'
196
+ icon: 'icon-data',
197
+ guideSelector: 'menu-explore'
115
198
  },
116
199
  {
117
200
  label: 'Graphs overview',
@@ -119,7 +202,8 @@ PluginRegistry.add('main.menu', {
119
202
  href: 'graphs',
120
203
  order: 0,
121
204
  role: 'IS_AUTHENTICATED_FULLY',
122
- parent: 'Explore'
205
+ parent: 'Explore',
206
+ guideSelector: 'sub-menu-graph-overview'
123
207
  }
124
208
  ]
125
209
  });
@@ -143,7 +227,8 @@ PluginRegistry.add('main.menu', {
143
227
  href: '#',
144
228
  order: 5,
145
229
  role: 'IS_AUTHENTICATED_FULLY',
146
- icon: 'icon-settings'
230
+ icon: 'icon-settings',
231
+ guideSelector: 'menu-setup'
147
232
  },
148
233
  {
149
234
  label: 'Connectors',
@@ -151,7 +236,8 @@ PluginRegistry.add('main.menu', {
151
236
  href: 'connectors',
152
237
  order: 10,
153
238
  parent: 'Setup',
154
- role: 'IS_AUTHENTICATED_FULLY'
239
+ role: 'IS_AUTHENTICATED_FULLY',
240
+ guideSelector: 'sub-menu-connectors'
155
241
  }
156
242
  ]
157
243
  });
@@ -215,19 +301,22 @@ PluginRegistry.add('main.menu', {
215
301
  href: '#',
216
302
  order: 1,
217
303
  role: 'IS_AUTHENTICATED_FULLY',
218
- icon: 'icon-data'
304
+ icon: 'icon-data',
305
+ guideSelector: 'menu-explore'
219
306
  }, {
220
307
  label: 'Class relationships',
221
308
  labelKey: 'menu.class.relationships.label',
222
309
  href: 'relationships',
223
310
  order: 2,
224
- parent: 'Explore'
311
+ parent: 'Explore',
312
+ guideSelector: 'sub-menu-class-relationships'
225
313
  }, {
226
314
  label: 'Class hierarchy',
227
315
  labelKey: 'menu.class.hierarchy.label',
228
316
  href: 'hierarchy',
229
317
  order: 1,
230
- parent: 'Explore'
318
+ parent: 'Explore',
319
+ guideSelector: 'menu-class-hierarchy'
231
320
  }, {
232
321
  label: 'Visual graph',
233
322
  labelKey: 'visual.graph.label',
@@ -237,11 +326,1655 @@ PluginRegistry.add('main.menu', {
237
326
  children: [{
238
327
  href: 'graphs-visualizations/config/save',
239
328
  children: []
240
- }]
329
+ }],
330
+ guideSelector: 'sub-menu-visual-graph'
331
+ }
332
+ ]
333
+ });
334
+
335
+ PluginRegistry.add('route', [
336
+ {
337
+ url: '/guides',
338
+ module: 'graphdb.framework.guides',
339
+ path: 'guides/app',
340
+ templateUrl: 'pages/guides.html',
341
+ title: 'view.guides.title',
342
+ controller: 'GuidesCtrl',
343
+ helpInfo: 'view.guides.helpInfo'
344
+ }
345
+ ]);
346
+
347
+ PluginRegistry.add('main.menu', {
348
+ 'items': [
349
+ {
350
+ label: 'Guides',
351
+ labelKey: 'menu.guides.label',
352
+ order: 0,
353
+ parent: 'Help',
354
+ icon: 'paste',
355
+ href: 'guides',
356
+ role: 'ROLE_USER',
357
+ guideSelector: 'sub-menu-guide'
241
358
  }
242
359
  ]
243
360
  });
244
361
 
362
+ const reloadAndOpenInfoPanel = (services, clasInstanceSelector, resolve, reject) => {
363
+ services.$location.url('/hierarchy');
364
+ services.$route.reload();
365
+ services.GuideUtils.waitFor(clasInstanceSelector, 3)
366
+ .then(() => {
367
+ services.GuideUtils.classHierarchyFocus(clasInstanceSelector);
368
+ // Wait a little time animation to complete.
369
+ services.GuideUtils.deferredShow(500)()
370
+ .then(() => resolve());
371
+ })
372
+ .catch((error) => reject(error));
373
+ };
374
+
375
+ PluginRegistry.add('guide.step', [
376
+ {
377
+ guideBlockName: 'class-hierarchy',
378
+ getSteps: (options, services) => {
379
+ const GuideUtils = services.GuideUtils;
380
+ options.mainAction = 'class-hierarchy';
381
+
382
+ const steps = [
383
+ {
384
+ guideBlockName: 'click-main-menu',
385
+ options: angular.extend({}, {
386
+ menu: 'class-hierarchy',
387
+ showIntro: true
388
+ }, options)
389
+ }, {
390
+ guideBlockName: 'read-only-element',
391
+ options: angular.extend({}, {
392
+ content: 'guide.step_plugin.class_hierarchy_intro.content',
393
+ url: '/hierarchy',
394
+ elementSelector: '#classChart',
395
+ placement: 'left'
396
+ }, options)
397
+ }
398
+ ];
399
+
400
+ if (options.introExtraContent) {
401
+ steps.push({
402
+ guideBlockName: 'read-only-element',
403
+ options: angular.extend({}, {
404
+ content: '',
405
+ extraContent: options.introExtraContent,
406
+ url: '/hierarchy',
407
+ elementSelector: '#classChart #main-group',
408
+ placement: 'left'
409
+ }, options)
410
+ });
411
+ }
412
+
413
+ if (angular.isArray(options.zoomIris)) {
414
+ options.zoomIris.forEach((zoomIri) => {
415
+ const selector = GuideUtils.getGuideElementSelector('class-' + zoomIri.iri);
416
+ steps.push({
417
+ guideBlockName: 'clickable-element',
418
+ options: angular.extend({}, {
419
+ content: 'guide.step_plugin.class_hierarchy_zoom.content',
420
+ url: '/hierarchy',
421
+ placement: 'left',
422
+ elementSelector: selector,
423
+ onNextClick: (guide, step) => {
424
+ GuideUtils.classHierarchyZoom(step.elementSelector);
425
+ guide.next();
426
+ }
427
+ }, options, zoomIri)
428
+ });
429
+ if (zoomIri.postExtraContent) {
430
+ steps.push({
431
+ guideBlockName: 'read-only-element',
432
+ options: angular.extend({}, {
433
+ content: '',
434
+ extraContent: zoomIri.postExtraContent,
435
+ url: '/hierarchy',
436
+ placement: 'left',
437
+ beforeShowPromise: GuideUtils.deferredShow(800),
438
+ elementSelector: selector
439
+ }, options)
440
+ });
441
+ }
442
+ });
443
+ }
444
+
445
+ return steps;
446
+ }
447
+ },
448
+ {
449
+ guideBlockName: 'class-hierarchy-instances',
450
+ getSteps: (options, services) => {
451
+ const GuideUtils = services.GuideUtils;
452
+ const $location = services.$location;
453
+ const $route = services.$route;
454
+ options.title = 'guide.step_plugin.class-hierarchy-instances.title';
455
+ const closeButtonSelector = GuideUtils.getGuideElementSelector('close-info-panel');
456
+ const clasInstanceSelector = GuideUtils.getGuideElementSelector('class-' + options.iri);
457
+ const steps = [
458
+ {
459
+ guideBlockName: 'clickable-element',
460
+ options: angular.extend({}, {
461
+ content: 'guide.step_plugin.class-hierarchy-instances.content',
462
+ url: '/hierarchy',
463
+ elementSelector: clasInstanceSelector,
464
+ onNextClick: (guide) => {
465
+ GuideUtils.classHierarchyFocus(clasInstanceSelector);
466
+ guide.next();
467
+ },
468
+ initPreviousStep: () => new Promise((resolve, reject) => {
469
+ if (!GuideUtils.isVisible(closeButtonSelector)) {
470
+ reloadAndOpenInfoPanel({$location, $route, GuideUtils}, clasInstanceSelector, resolve, reject);
471
+ } else {
472
+ resolve();
473
+ }
474
+ })
475
+ }, options)
476
+ },
477
+ {
478
+ guideBlockName: 'read-only-element',
479
+ options: angular.extend({}, {
480
+ content: 'guide.step_plugin.class-hierarchy-instances-side-panel.content',
481
+ url: '/hierarchy',
482
+ elementSelector: '.rdf-info-side-panel div',
483
+ canBePaused: false,
484
+ placement: 'left',
485
+ beforeShowPromise: GuideUtils.deferredShow(800),
486
+ onPreviousClick: () => new Promise(function (resolve) {
487
+ GuideUtils.waitFor(closeButtonSelector, 1)
488
+ .then(() => $(closeButtonSelector).trigger('click'));
489
+ resolve();
490
+ })
491
+ }, options)
492
+ }
493
+ ];
494
+
495
+ if (angular.isArray(options.focusInstances)) {
496
+ options.focusInstances.forEach((focusInstance) => {
497
+ if (!angular.isObject(focusInstance)) {
498
+ focusInstance = {
499
+ instance: focusInstance
500
+ };
501
+ }
502
+ steps.push({
503
+ guideBlockName: 'read-only-element',
504
+ options: angular.extend({}, {
505
+ content: 'guide.step_plugin.class-hierarchy-instances-focus.content',
506
+ url: '/hierarchy',
507
+ canBePaused: false,
508
+ elementSelector: GuideUtils.getGuideElementSelector('instance-' + focusInstance.instance),
509
+ focusInstance: focusInstance.instance,
510
+ extraContent: focusInstance.message
511
+ }, options)
512
+ });
513
+ });
514
+ }
515
+
516
+ const instanceCountSelector = GuideUtils.getGuideElementSelector('instances-count');
517
+ if (options.followCountLink) {
518
+ steps.push({
519
+ guideBlockName: 'clickable-element',
520
+ options: angular.extend({}, {
521
+ content: 'guide.step_plugin.class-hierarchy-instances-count.content',
522
+ url: '/hierarchy',
523
+ canBePaused: false,
524
+ elementSelector: instanceCountSelector,
525
+ onNextClick: (guide, step) => {
526
+ GuideUtils.waitFor(step.elementSelector, 3)
527
+ .then(() => $(step.elementSelector).trigger('click'));
528
+ guide.next();
529
+ }
530
+ }, options)
531
+ });
532
+
533
+ steps.push({
534
+ guideBlockName: 'read-only-element',
535
+ options: angular.extend({}, {
536
+ content: 'guide.step_plugin.class-hierarchy-instances-query.content',
537
+ url: '/sparql',
538
+ elementSelector: GuideUtils.getSparqlEditorSelector(),
539
+ scrollToHandler: GuideUtils.scrollToTop
540
+ }, options)
541
+ });
542
+ steps.push({
543
+ guideBlockName: 'read-only-element',
544
+ options: angular.extend({}, {
545
+ content: 'guide.step_plugin.class-hierarchy-instances-results.content',
546
+ extraContent: options.showExtraCommentSparql !== false ?
547
+ 'guide.step_plugin.class-hierarchy-instances-results.extraContent' : null,
548
+ url: '/sparql',
549
+ placement: 'top',
550
+ elementSelector: GuideUtils.getSparqlResultsSelector(),
551
+ fileName: options.fileName,
552
+ scrollToHandler: GuideUtils.scrollToTop,
553
+ onNextClick: (guide) => {
554
+ window.history.back();
555
+ guide.next();
556
+ },
557
+ initPreviousStep: () => Promise.resolve()
558
+ }, options)
559
+ });
560
+ }
561
+
562
+ steps.push({
563
+ guideBlockName: 'clickable-element',
564
+ options: angular.extend({}, {
565
+ content: 'guide.step_plugin.class-hierarchy-instances-side-panel-close.content',
566
+ url: '/hierarchy',
567
+ canBePaused: false,
568
+ elementSelector: closeButtonSelector,
569
+ placement: 'left',
570
+ // If we followed the count link we come back here from another view
571
+ // and the side panel needs time to open
572
+ beforeShowPromise: options.followCountLink ? GuideUtils.deferredShow(1500) : Promise.resolve(),
573
+ advanceOn: {
574
+ selector: closeButtonSelector,
575
+ event: 'click'
576
+ },
577
+ onNextClick: () => GuideUtils.waitFor(closeButtonSelector, 3)
578
+ .then(() => $(closeButtonSelector).trigger('click')),
579
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
580
+
581
+ const currentStepId = services.ShepherdService.getCurrentStepId();
582
+ // If method is called from same step just click count link
583
+ if (currentStepId === stepId && options.followCountLink) {
584
+ GuideUtils.waitFor(instanceCountSelector, 3)
585
+ .then(() => {
586
+ $(instanceCountSelector).trigger('click');
587
+ GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(), 3)
588
+ .then(() => {
589
+ GuideUtils.deferredShow(50)()
590
+ .then(() => resolve())
591
+ .catch((error) => reject(error));
592
+ })
593
+ .catch((error) => reject(error));
594
+ resolve();
595
+ })
596
+ .catch((error) => reject(error));
597
+ } else {
598
+ // If is called from other step we have to reload and open the info panel.
599
+ reloadAndOpenInfoPanel({$location, $route, GuideUtils}, clasInstanceSelector, resolve, reject);
600
+ }
601
+ })
602
+ }, options)
603
+ });
604
+
605
+ return steps;
606
+ }
607
+ }
608
+ ]);
609
+
610
+ PluginRegistry.add('guide.step', [
611
+ {
612
+ guideBlockName: 'create-repository',
613
+ getSteps: (options, services) => {
614
+ const GuideUtils = services.GuideUtils;
615
+ options.mainAction = 'create-repository';
616
+
617
+ const repositoryIdInputSelector = GuideUtils.getGuideElementSelector('graphDBRepositoryIdInput');
618
+ const repositoryId = options.repositoryId;
619
+ const steps = [
620
+ {
621
+ guideBlockName: 'click-main-menu',
622
+ options: angular.extend({}, {
623
+ menu: 'repositories',
624
+ showIntro: true
625
+ }, options)
626
+ }, {
627
+ guideBlockName: 'clickable-element',
628
+ options: angular.extend({}, {
629
+ content: 'guide.step_plugin.create_repository.create_repository_button.content',
630
+ url: '/repository',
631
+ elementSelector: GuideUtils.getGuideElementSelector('createRepository'),
632
+ onNextClick: (guide) => GuideUtils.clickOnGuideElement('createRepository')().then(() => guide.next())
633
+
634
+ }, options)
635
+ }, {
636
+ guideBlockName: 'clickable-element',
637
+ options: angular.extend({}, {
638
+ content: 'guide.step_plugin.create_repository.graph_db_repository.content',
639
+ url: '/repository/create',
640
+ elementSelector: GuideUtils.getGuideElementSelector('createGraphDBRepository'),
641
+ onNextClick: GuideUtils.clickOnGuideElement('createGraphDBRepository')
642
+ }, options)
643
+ }, {
644
+ guideBlockName: 'input-element',
645
+ options: angular.extend({}, {
646
+ content: 'guide.step_plugin.create_repository.repository_id.content',
647
+ url: '/repository/create/graphdb',
648
+ elementSelector: repositoryIdInputSelector,
649
+ onNextValidate: () => GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId)
650
+ }, options)
651
+ }
652
+ ];
653
+
654
+ if (options.rulesetName) {
655
+ steps.push({
656
+ guideBlockName: 'clickable-element',
657
+ options: angular.extend({}, {
658
+ content: 'guide.step_plugin.create_repository.ruleset_dropdown.content',
659
+ url: '/repository/create/graphdb',
660
+ elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryRulesetSelect'),
661
+ show: () => () => {
662
+ GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);
663
+ },
664
+ rulesetName: options.rulesetName
665
+ }, options)
666
+ });
667
+ }
668
+ steps.push({
669
+ guideBlockName: 'clickable-element',
670
+ options: angular.extend({}, {
671
+ content: 'guide.step_plugin.create_repository.save_button.content',
672
+ url: '/repository/create/graphdb',
673
+ elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryCrateButton'),
674
+ show: () => () => {
675
+ GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);
676
+ },
677
+ onNextClick: GuideUtils.clickOnGuideElement('graphDBRepositoryCrateButton')
678
+ }, options)
679
+ });
680
+
681
+ return steps;
682
+ }
683
+ }
684
+ ]);
685
+
686
+ PluginRegistry.add('guide.step', [
687
+ {
688
+ guideBlockName: 'download-guide-resource',
689
+ getSteps: (options, services) => {
690
+ return {
691
+ guideBlockName: 'info-message',
692
+ options: angular.extend({}, {
693
+ title: 'guide.step_plugin.download-guide-resource.title',
694
+ content: 'guide.step_plugin.download-guide-resource.content',
695
+ canBePaused: true,
696
+ forceReload: true,
697
+ resourceUrl: services.GuideUtils.toResourceDownloadUrl(options)
698
+ }, options)
699
+ };
700
+ }
701
+ }]
702
+ );
703
+
704
+ PluginRegistry.add('guide.step', [
705
+ {
706
+ guideBlockName: 'enable-autocomplete',
707
+ getSteps: (options, services) => {
708
+ const GuideUtils = services.GuideUtils;
709
+ options.mainAction = 'enable-autocomplete';
710
+
711
+ const autocompleteCheckboxSelector = GuideUtils.getGuideElementSelector('autocompleteCheckbox');
712
+ return [
713
+ {
714
+ guideBlockName: 'click-main-menu',
715
+ options: angular.extend({}, {
716
+ menu: 'autocomplete',
717
+ showIntro: true
718
+ }, options)
719
+ }, {
720
+ guideBlockName: 'clickable-element',
721
+ options: angular.extend({}, {
722
+ content: 'guide.step_plugin.enable-autocomplete.content',
723
+ url: '/autocomplete',
724
+ elementSelector: autocompleteCheckboxSelector,
725
+ // Disable default behavior of service when element is clicked.
726
+ advanceOn: undefined,
727
+ show: (guide) => () => {
728
+ // Added listener to the element.
729
+ $(autocompleteCheckboxSelector)
730
+ .on('mouseup.autocompleteCheckboxClick', function () {
731
+ // If autocomplete is enabled go to the next step.
732
+ GuideUtils.deferredShow(20)()
733
+ .then(() => {
734
+ if (GuideUtils.isGuideElementChecked('autocompleteCheckbox', ' input')) {
735
+ guide.next();
736
+ }
737
+ });
738
+ });
739
+ },
740
+ onNextClick: (guide) => {
741
+ if (!GuideUtils.isGuideElementChecked('autocompleteCheckbox', ' input')) {
742
+ $(autocompleteCheckboxSelector).trigger('click');
743
+ }
744
+ guide.next();
745
+ },
746
+ hide: () => () => {
747
+ // Remove ths listener from element. It is important when step is hided.
748
+ $(autocompleteCheckboxSelector).off('mouseup.autocompleteCheckboxClick');
749
+ }
750
+ }, options)
751
+ },
752
+ {
753
+ guideBlockName: 'read-only-element',
754
+ options: angular.extend({}, {
755
+ content: 'guide.step_plugin.enable-autocomplete.status_info.content',
756
+ url: '/autocomplete',
757
+ elementSelector: GuideUtils.getGuideElementSelector('autocompleteStatus'),
758
+ canBePaused: false
759
+ }, options)
760
+ }
761
+ ];
762
+ }
763
+ }
764
+ ]);
765
+
766
+ PluginRegistry.add('guide.step', [
767
+ {
768
+ guideBlockName: 'execute-sparql-query',
769
+ getSteps: (options, services) => {
770
+ const GuideUtils = services.GuideUtils;
771
+ const toastr = services.toastr;
772
+ const $translate = services.$translate;
773
+ const $interpolate = services.$interpolate;
774
+ const $location = services.$location;
775
+ const $route = services.$route;
776
+ options.mainAction = 'execute-sparql-query';
777
+
778
+ const code = document.createElement('code');
779
+ const copy = document.createElement('button');
780
+ copy.className = 'btn btn-sm btn-secondary';
781
+ copy.innerText = $translate.instant('guide.step_plugin.execute-sparql-query.copy-to-editor.button');
782
+ copy.setAttribute('ng-click', 'copyQuery()');
783
+
784
+ const steps = [
785
+ {
786
+ guideBlockName: 'click-main-menu',
787
+ options: angular.extend({}, {
788
+ menu: 'sparql',
789
+ showIntro: true
790
+ }, options)
791
+ }
792
+ ];
793
+
794
+ const defaultQuery = 'select * where { \n\t?s ?p ?o .\n} limit 100 \n';
795
+ const queries = {};
796
+ queries[-1] = 'PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nselect * where { \n\t?s ?p ?o .\n?o rdf:type ""\n} limit 100 ';
797
+
798
+ let overwriteQuery = false;
799
+ options.queries.forEach((queryDef, index) => {
800
+ const query = queryDef.query;
801
+ queries[index] = query;
802
+ code.innerText = query;
803
+ options.queryAsHtmlCodeElement = '<div class="shepherd-code">' + code.outerHTML + copy.outerHTML + '</div>';
804
+
805
+ const queryEditorSelector = GuideUtils.getSparqlEditorSelector();
806
+ steps.push({
807
+ guideBlockName: 'input-element',
808
+ options: angular.extend({}, {
809
+ content: 'guide.step_plugin.execute-sparql-query.query-editor.content',
810
+ url: '/sparql',
811
+ elementSelector: queryEditorSelector,
812
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
813
+ GuideUtils.deferredShow(10)()
814
+ .then(() => {
815
+ GuideUtils.waitFor(queryEditorSelector, 3)
816
+ .then(() => resolve())
817
+ .catch((error) => {
818
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
819
+ reject(error);
820
+ });
821
+ });
822
+ }),
823
+ onNextValidate: () => {
824
+ const editorQuery = GuideUtils.removeWhiteSpaces(window.editor.getValue());
825
+ const stepQuery = GuideUtils.removeWhiteSpaces(query);
826
+ if (editorQuery !== stepQuery) {
827
+ if (editorQuery === 'select*where{?s?p?o.}limit100' || overwriteQuery) {
828
+ // The query is the default query OR we previously overwrote it => we can overwrite it
829
+ window.editor.setValue(query);
830
+ } else {
831
+ GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,
832
+ 'guide.step_plugin.execute-sparql-query.query-not-same.error', options);
833
+ return false;
834
+ }
835
+ }
836
+ overwriteQuery = true;
837
+ return true;
838
+ },
839
+ initPreviousStep: () => new Promise((resolve, reject) => {
840
+ if (index === 0) {
841
+ window.editor.setValue(defaultQuery);
842
+ resolve();
843
+ } else {
844
+ const haveToReload = '/sparql' !== $location.url();
845
+ GuideUtils.executeSparqlQuery($location, $route, query, haveToReload)
846
+ .then(() => resolve())
847
+ .catch((error) => reject(error));
848
+ }
849
+ }),
850
+ scrollToHandler: GuideUtils.scrollToTop,
851
+ extraContent: queryDef.queryExtraContent,
852
+ onScope: (scope) => {
853
+ scope.copyQuery = () => {
854
+ window.editor.setValue(query);
855
+ };
856
+ }
857
+ }, options)
858
+ });
859
+ steps.push({
860
+ guideBlockName: 'clickable-element',
861
+ options: angular.extend({}, {
862
+ content: 'guide.step_plugin.execute-sparql-query.run-sparql-query.content',
863
+ url: '/sparql',
864
+ elementSelector: GuideUtils.getGuideElementSelector('runSparqlQuery'),
865
+ onNextClick: (guide) => GuideUtils.clickOnGuideElement('runSparqlQuery')().then(() => guide.next()),
866
+ scrollToHandler: GuideUtils.scrollToTop,
867
+ canBePaused: false,
868
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
869
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
870
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
871
+ .then(() => {
872
+ const currentStepId = services.ShepherdService.getCurrentStepId();
873
+ // Skip expanding of node if last step is "visual-graph-expand"
874
+ if (currentStepId === stepId) {
875
+ resolve();
876
+ } else {
877
+ GuideUtils.clickOnGuideElement('runSparqlQuery')().then(() => resolve()).catch((error) => reject(error));
878
+ }
879
+ })
880
+ .catch((error) => reject(error));
881
+ })
882
+ }, options)
883
+ });
884
+ steps.push({
885
+ guideBlockName: 'read-only-element',
886
+ options: angular.extend({}, {
887
+ content: 'guide.step_plugin.execute-sparql-query.result-explain.content',
888
+ url: '/sparql',
889
+ placement: 'top',
890
+ elementSelector: GuideUtils.getSparqlResultsSelector(),
891
+ fileName: options.fileName,
892
+ scrollToHandler: GuideUtils.scrollToTop,
893
+ extraContent: queryDef.resultExtraContent,
894
+ canBePaused: false,
895
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
896
+ if ('/sparql' !== $location.url()) {
897
+ GuideUtils.executeSparqlQuery($location, $route, query, true)
898
+ .then(() => resolve())
899
+ .catch((error) => reject(error));
900
+ } else {
901
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
902
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
903
+ .then(() => {
904
+ window.editor.setValue(query);
905
+ resolve();
906
+ })
907
+ .catch((error) => reject(error));
908
+ }
909
+ })
910
+ }, options)
911
+ });
912
+ });
913
+
914
+ return steps;
915
+ }
916
+ }
917
+ ]);
918
+
919
+ PluginRegistry.add('guide.step', [
920
+ {
921
+ guideBlockName: 'import-rdf-file',
922
+ getSteps: (options, services) => {
923
+ const GuideUtils = services.GuideUtils;
924
+ const toastr = services.toastr;
925
+ const $translate = services.$translate;
926
+ const $interpolate = services.$interpolate;
927
+ options.mainAction = 'import-file';
928
+
929
+ const steps = [
930
+ {
931
+ guideBlockName: 'click-main-menu',
932
+ options: angular.extend({}, {
933
+ menu: 'import',
934
+ showIntro: true
935
+ }, options)
936
+ }
937
+ ];
938
+
939
+ if (options.resourcePath) {
940
+ steps.push(
941
+ {
942
+ guideBlockName: 'download-guide-resource',
943
+ options: angular.extend({}, {
944
+ title: ''
945
+ }, options)
946
+ }
947
+ );
948
+ }
949
+
950
+ const importSettingsButtonSelector = GuideUtils.getGuideElementSelector('import-settings-import-button');
951
+ steps.push(...[
952
+ {
953
+ guideBlockName: 'clickable-element',
954
+ options: angular.extend({}, {
955
+ content: 'guide.step_plugin.import_rdf_file.content',
956
+ url: '/import',
957
+ elementSelector: GuideUtils.getGuideElementSelector('uploadRdfFileButton'),
958
+ // Disable default behavior of service when element is clicked.
959
+ advanceOn: undefined,
960
+ show: (guide) => () => {
961
+ // Add "change" listener to the file upload input, it will be triggered when a file is selected.
962
+ $('#ngf-wb-import-uploadFile')
963
+ .on('change.importRdfFile', function () {
964
+ // Check if expected file is selected, then process to the next step.
965
+ GuideUtils.waitFor(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile), 2)
966
+ .then(() => guide.next());
967
+ });
968
+ },
969
+ hide: () => () => {
970
+ // Remove ths listener from element. It is important when step is hided.
971
+ $('#ngf-wb-import-uploadFile').off('change.importRdfFile');
972
+ },
973
+ onNextValidate: () => {
974
+ if (!$(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile)).length) {
975
+ GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,
976
+ 'guide.step_plugin.import_rdf_file.file-must-be-uploaded', options);
977
+ return false;
978
+ } else {
979
+ return true;
980
+ }
981
+ }
982
+ }, options)
983
+ },
984
+ {
985
+ guideBlockName: 'clickable-element',
986
+ options: angular.extend({}, {
987
+ content: 'guide.step_plugin.import_rdf_file.import-file.button.content',
988
+ elementSelector: GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile),
989
+ url: '/import',
990
+ placement: 'left',
991
+ onNextClick: () => GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()
992
+ }, options)
993
+ },
994
+ {
995
+ guideBlockName: 'clickable-element',
996
+ options: angular.extend({}, {
997
+ content: 'guide.step_plugin.import_rdf_file.import-settings.import.button.content',
998
+ elementSelector: importSettingsButtonSelector,
999
+ placement: 'top',
1000
+ onPreviousClick: () => new Promise(function (resolve) {
1001
+ GuideUtils.clickOnGuideElement('import-settings-cancel-button')()
1002
+ .then(() => resolve());
1003
+ }),
1004
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
1005
+ services.GuideUtils.deferredShow(300)()
1006
+ .then(() => {
1007
+ services.GuideUtils.waitFor(importSettingsButtonSelector, 3)
1008
+ .then(() => {
1009
+ resolve();
1010
+ })
1011
+ .catch((error) => {
1012
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
1013
+ reject(error);
1014
+ });
1015
+ });
1016
+ }),
1017
+ onNextClick: () => GuideUtils.clickOnGuideElement('import-settings-import-button')(),
1018
+ canBePaused: false
1019
+ }, options)
1020
+ },
1021
+ {
1022
+ guideBlockName: 'read-only-element',
1023
+ options: angular.extend({}, {
1024
+ content: 'guide.step_plugin.import_status_info.content',
1025
+ url: '/import',
1026
+ elementSelector: GuideUtils.getGuideElementSelector('import-status-info'),
1027
+ onPreviousClick: () => new Promise(function (resolve) {
1028
+ GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()
1029
+ .then(() => resolve());
1030
+ })
1031
+ }, options)
1032
+ }
1033
+ ]);
1034
+
1035
+ return steps;
1036
+ }
1037
+ }
1038
+ ]);
1039
+
1040
+ PluginRegistry.add('guide.step', [
1041
+ {
1042
+ guideBlockName: 'click-main-menu',
1043
+ getSteps: (options, services) => {
1044
+ const GuideUtils = services.GuideUtils;
1045
+ const steps = [];
1046
+
1047
+ let menuSelector;
1048
+ let menuTitle;
1049
+ let submenuSelector;
1050
+ let submenuTitle;
1051
+ let viewName;
1052
+ let helpInfo;
1053
+
1054
+ switch (options.menu) {
1055
+ case "repositories":
1056
+ menuSelector = 'menu-setup';
1057
+ menuTitle = 'menu.setup.label';
1058
+ submenuSelector = 'sub-menu-repositories';
1059
+ submenuTitle = 'menu.repositories.label';
1060
+ viewName = 'menu.repositories.label';
1061
+ helpInfo = 'view.repositories.helpInfo';
1062
+
1063
+ break;
1064
+ case "import":
1065
+ menuSelector = 'menu-import';
1066
+ menuTitle = 'common.import';
1067
+ viewName = 'common.import';
1068
+ helpInfo = 'view.import.helpInfo';
1069
+
1070
+ break;
1071
+ case "autocomplete":
1072
+ menuSelector = 'menu-setup';
1073
+ menuTitle = 'menu.setup.label';
1074
+ submenuSelector = 'sub-menu-autocomplete';
1075
+ submenuTitle = 'menu.autocomplete.label';
1076
+ viewName = 'view.autocomplete.title';
1077
+ helpInfo = 'view.autocomplete.helpInfo';
1078
+
1079
+ break;
1080
+ case "visual-graph":
1081
+ menuSelector = 'menu-explore';
1082
+ menuTitle = 'menu.explore.label';
1083
+ submenuSelector = 'sub-menu-visual-graph';
1084
+ submenuTitle = 'visual.graph.label';
1085
+ viewName = 'visual.graph.label';
1086
+ helpInfo = 'view.visual.graph.helpInfo';
1087
+
1088
+ break;
1089
+ case "sparql":
1090
+ menuSelector = 'menu-sparql';
1091
+ menuTitle = 'menu.sparql.label';
1092
+ viewName = 'view.sparql.title';
1093
+ helpInfo = 'view.sparql.helpInfo';
1094
+
1095
+ break;
1096
+ case "class-hierarchy":
1097
+ menuSelector = 'menu-explore';
1098
+ menuTitle = 'menu.explore.label';
1099
+ submenuSelector = 'menu-class-hierarchy';
1100
+ submenuTitle = 'menu.class.hierarchy.label';
1101
+ viewName = 'view.class.hierarchy.title';
1102
+ helpInfo = 'view.class.hierarchy.helpInfo';
1103
+
1104
+ break;
1105
+ }
1106
+
1107
+ const mainMenuClickElementPostSelector = submenuSelector ? ' div' : ' a';
1108
+ options.viewName = viewName;
1109
+
1110
+ // View intro element
1111
+ if (options.showIntro && options.mainAction) {
1112
+ steps.push({
1113
+ guideBlockName: 'info-message',
1114
+ options: angular.extend({}, {
1115
+ content: 'guide.step-intro.' + options.mainAction,
1116
+ extraContent: helpInfo,
1117
+ extraContentClass: 'alert alert-help text-left',
1118
+ skipPoint: true
1119
+ }, options)
1120
+ });
1121
+ }
1122
+
1123
+ // Main menu element
1124
+ steps.push({
1125
+ guideBlockName: 'clickable-element',
1126
+ options: angular.extend({}, {
1127
+ content: 'guide.step-menu.click-menu',
1128
+ menuLabelKey: menuTitle,
1129
+ elementSelector: GuideUtils.getGuideElementSelector(menuSelector),
1130
+ showOn: () => {
1131
+ // If submenu is visible this mean that we have to close menu.
1132
+ if (!!submenuSelector && GuideUtils.isGuideElementVisible(submenuSelector)) {
1133
+ GuideUtils.clickOnGuideElement(menuSelector, mainMenuClickElementPostSelector)();
1134
+ }
1135
+ return true;
1136
+ },
1137
+ onNextClick: (guide) =>
1138
+ GuideUtils.clickOnGuideElement(menuSelector, mainMenuClickElementPostSelector)()
1139
+ .then(() => {
1140
+ if (!submenuSelector) {
1141
+ guide.next();
1142
+ }
1143
+ }),
1144
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1145
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1146
+ if (previousStep) {
1147
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
1148
+ .then(() => resolve())
1149
+ .catch((error) => reject(error));
1150
+ } else {
1151
+ resolve();
1152
+ }
1153
+ })
1154
+ }, options)
1155
+ });
1156
+
1157
+ if (submenuSelector) {
1158
+ steps.push({
1159
+ guideBlockName: 'clickable-element',
1160
+ options: angular.extend({}, {
1161
+ content: 'guide.step-menu.click-menu',
1162
+ menuLabelKey: submenuTitle,
1163
+ elementSelector: GuideUtils.getGuideElementSelector(submenuSelector),
1164
+ placement: 'right',
1165
+ canBePaused: false,
1166
+ showOn: () => {
1167
+ // If submenu is visible this mean that we have to close menu.
1168
+ if (!GuideUtils.isGuideElementVisible(submenuSelector)) {
1169
+ GuideUtils.clickOnGuideElement(menuSelector, ' div')();
1170
+ }
1171
+ return true;
1172
+ },
1173
+ onNextClick: (guide) => GuideUtils.clickOnGuideElement(submenuSelector, ' a')().then(() => guide.next()),
1174
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1175
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1176
+ if (previousStep) {
1177
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
1178
+ .then(() => resolve())
1179
+ .catch((error) => reject(error));
1180
+ } else {
1181
+ resolve();
1182
+ }
1183
+ })
1184
+ }, options)
1185
+ });
1186
+ }
1187
+ return steps;
1188
+ }
1189
+ }
1190
+ ]);
1191
+
1192
+ const getRepositoryName = (services, options) => {
1193
+ return services.$repositories.getRepositories().find((repo) => repo.id === options.repositoryId) ? options.repositoryId : options.repositoryIdBase;
1194
+ };
1195
+
1196
+ const getRepositoryElementSelector = (services, options) => {
1197
+ return services.GuideUtils.getGuideElementSelector(`repository-${getRepositoryName(services, options)}-button`);
1198
+ };
1199
+
1200
+ PluginRegistry.add('guide.step', [
1201
+ {
1202
+ guideBlockName: 'select-repository-dropdown',
1203
+ getSteps: (options, services) => {
1204
+ const GuideUtils = services.GuideUtils;
1205
+ options.mainAction = 'select-repository';
1206
+ options.getRepositoryId = () => getRepositoryName(services, options);
1207
+
1208
+ return [{
1209
+ guideBlockName: 'clickable-element',
1210
+ options: angular.extend({}, {
1211
+ skipPoint: true,
1212
+ content: 'guide.step_plugin.choose-repository.content',
1213
+ elementSelector: GuideUtils.getGuideElementSelector('repositoriesGroupButton'),
1214
+ onNextClick: (guide) => GuideUtils.clickOnGuideElement('repositoriesGroupButton')().then(() => guide.next())
1215
+ }, options)
1216
+ }, {
1217
+ guideBlockName: 'clickable-element',
1218
+ options: angular.extend({}, {
1219
+ content: 'guide.step_plugin.select-repository.content',
1220
+ elementSelector: () => {
1221
+ return getRepositoryElementSelector(services, options);
1222
+ },
1223
+ advanceOn: undefined,
1224
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
1225
+ services.GuideUtils.waitFor(getRepositoryElementSelector(services, options), 1)
1226
+ .then(() => resolve())
1227
+ .catch((error) => {
1228
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
1229
+ reject(error);
1230
+ });
1231
+ }),
1232
+ show: (guide) => () => {
1233
+ $('#repositorySelectDropdown').addClass('autoCloseOff');
1234
+ // Added listener to the element.
1235
+ $(getRepositoryElementSelector(services, options))
1236
+ .on('mouseup.selectRepositoryButtonClick', function () {
1237
+ guide.next();
1238
+ });
1239
+ },
1240
+ onNextClick: (guide) => {
1241
+ $(getRepositoryElementSelector(services, options)).off('mouseup.selectRepositoryButtonClick');
1242
+ $('#repositorySelectDropdown').removeClass('autoCloseOff');
1243
+ GuideUtils.clickOnElement(getRepositoryElementSelector(services, options))().then(() => guide.next());
1244
+ },
1245
+ hide: () => () => {
1246
+ $('#repositorySelectDropdown').removeClass('autoCloseOff');
1247
+ // Remove ths listener from element. It is important when step is hided.
1248
+ $(getRepositoryElementSelector(services, options)).off('mouseup.selectRepositoryButtonClick');
1249
+ },
1250
+ canBePaused: false
1251
+ }, options)
1252
+ }
1253
+ ];
1254
+ }
1255
+ },
1256
+ {
1257
+ guideBlockName: 'select-repository-plug',
1258
+ getSteps: (options, services) => {
1259
+ const GuideUtils = services.GuideUtils;
1260
+ return [{
1261
+ guideBlockName: 'clickable-element',
1262
+ options: angular.extend({}, {
1263
+ content: 'guide.step_plugin.select-repository-plug.content',
1264
+ elementSelector: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`),
1265
+ onNextClick: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`)
1266
+ }, options)
1267
+ }
1268
+ ];
1269
+ }
1270
+ }
1271
+ ]);
1272
+
1273
+ PluginRegistry.add('guide.step', [
1274
+ {
1275
+ guideBlockName: 'table-graph-explore',
1276
+ getSteps: (options, services) => {
1277
+ const GuideUtils = services.GuideUtils;
1278
+ const $location = services.$location;
1279
+ const $route = services.$route;
1280
+ options.mainAction = 'table-graph';
1281
+
1282
+ const steps = [
1283
+ {
1284
+ guideBlockName: 'clickable-element',
1285
+ options: angular.extend({}, {
1286
+ content: 'guide.step-intro.table-graph',
1287
+ scrollToHandler: GuideUtils.scrollToTop,
1288
+ elementSelector: GuideUtils.getSparqlResultsSelectorForIri(options.iri),
1289
+ onNextClick: (guide, step) => {
1290
+ GuideUtils.waitFor(step.elementSelector, 3)
1291
+ .then(() => $(step.elementSelector).trigger('click'))
1292
+ .then(() => guide.next());
1293
+ },
1294
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1295
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1296
+ if (currentStepId === stepId) {
1297
+ resolve();
1298
+ } else {
1299
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1300
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
1301
+ .then(() => {
1302
+ resolve();
1303
+ })
1304
+ .catch((error) => {
1305
+ reject(error);
1306
+ });
1307
+ }
1308
+ })
1309
+ }, options)
1310
+ }, {
1311
+ guideBlockName: 'read-only-element',
1312
+ options: angular.extend({}, {
1313
+ content: 'guide.step_plugin.table-graph-overview',
1314
+ scrollToHandler: GuideUtils.scrollToTop,
1315
+ elementSelector: GuideUtils.getSparqlResultsSelector() + ' tbody',
1316
+ placement: 'top',
1317
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1318
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1319
+ if (currentStepId === stepId) {
1320
+ GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
1321
+ } else {
1322
+ const url = `/resource?uri=${options.iri}&role=subject`;
1323
+ if (url !== decodeURIComponent($location.url())) {
1324
+ $location.url(url);
1325
+ $route.reload();
1326
+ GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
1327
+ .then(() => resolve())
1328
+ .catch((error) => reject(error));
1329
+ } else {
1330
+ resolve();
1331
+ }
1332
+ }
1333
+ })
1334
+ }, options)
1335
+ }
1336
+ ];
1337
+
1338
+ if (angular.isArray(options.subSteps)) {
1339
+ options.subSteps.forEach((subStep) => {
1340
+
1341
+ switch (subStep.type) {
1342
+ case 'link':
1343
+ steps.push({
1344
+ guideBlockName: 'clickable-element',
1345
+ options: angular.extend({}, {
1346
+ content: 'guide.step_plugin.table-graph-link',
1347
+ elementSelector: GuideUtils.getSparqlResultsSelectorForIri(subStep.iri),
1348
+ onNextClick: (guide, step) => {
1349
+ GuideUtils.waitFor(step.elementSelector, 3)
1350
+ .then(() => $(step.elementSelector).trigger('click'))
1351
+ .then(() => guide.next());
1352
+ },
1353
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1354
+ const linkUrl = `/resource?uri=${subStep.iri}&role=subject`;
1355
+ const tableGraphLinkUrl = `/resource?uri=${options.iri}&role=subject`;
1356
+ const url = decodeURIComponent($location.url());
1357
+
1358
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1359
+
1360
+ if (currentStepId === stepId && tableGraphLinkUrl === url) {
1361
+ // this case is first link in the sequence before click the link, so we have to resolve it.
1362
+ resolve();
1363
+ } else if (currentStepId !== stepId && linkUrl === url) {
1364
+ // this case is first link in the sequence after click the link, so we have to call previous step.
1365
+ GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
1366
+ } else {
1367
+ // this case is from second link we have to reload
1368
+ $location.url(linkUrl);
1369
+ $route.reload();
1370
+ GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
1371
+ .then(() => resolve())
1372
+ .catch((error) => reject(error));
1373
+ }
1374
+ })
1375
+ }, angular.extend({}, options, subStep))
1376
+ });
1377
+ break;
1378
+ case 'role':
1379
+ steps.push({
1380
+ guideBlockName: 'clickable-element',
1381
+ options: angular.extend({}, {
1382
+ content: 'guide.step_plugin.table-graph-role',
1383
+ elementSelector: GuideUtils.getGuideElementSelector('role-' + subStep.role),
1384
+ onNextClick: (guide, step) => {
1385
+ GuideUtils.waitFor(step.elementSelector, 3)
1386
+ .then(() => $(step.elementSelector).trigger('click'))
1387
+ .then(() => guide.next());
1388
+ },
1389
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1390
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1391
+ if (currentStepId === stepId) {
1392
+ resolve();
1393
+ } else {
1394
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1395
+ previousStep.options.initPreviousStep(services, previousStep.options.id)
1396
+ .then(() => {
1397
+ let url = $location.url();
1398
+ url = url.substring(0, url.indexOf('role=') + 5);
1399
+ url += subStep.role;
1400
+ $location.url(url);
1401
+ $route.reload();
1402
+ GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
1403
+ .then(() => resolve())
1404
+ .catch((error) => reject(error));
1405
+ })
1406
+ .catch((error) => {
1407
+ reject(error);
1408
+ });
1409
+ }
1410
+ })
1411
+ }, angular.extend({}, options, subStep))
1412
+ });
1413
+ break;
1414
+ case 'visual':
1415
+ steps.push({
1416
+ guideBlockName: 'clickable-element',
1417
+ options: angular.extend({}, {
1418
+ content: 'guide.step_plugin.table-graph-visual',
1419
+ elementSelector: GuideUtils.getGuideElementSelector('explore-visual'),
1420
+ onNextClick: (guide, step) => {
1421
+ GuideUtils.waitFor(step.elementSelector, 3)
1422
+ .then(() => $(step.elementSelector).trigger('click'));
1423
+ },
1424
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1425
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1426
+
1427
+ if (currentStepId === stepId) {
1428
+ resolve();
1429
+ } else {
1430
+ GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
1431
+ }
1432
+ })
1433
+ }, angular.extend({}, options, subStep))
1434
+ });
1435
+ steps.push({
1436
+ guideBlockName: 'read-only-element',
1437
+ options: angular.extend({}, {
1438
+ content: 'guide.step_plugin.visual_graph_intro.content',
1439
+ extraContent: subStep.extraContentVisualIntro,
1440
+ url: '/graphs-visualizations',
1441
+ elementSelector: '.graph-visualization',
1442
+ placement: 'left',
1443
+ canBePaused: false,
1444
+ forceReload: true,
1445
+ onNextClick: (guide) => {
1446
+ window.history.back();
1447
+ guide.next();
1448
+ }
1449
+ }, angular.extend({}, options, subStep))
1450
+ });
1451
+ break;
1452
+ case 'row':
1453
+ steps.push({
1454
+ guideBlockName: 'read-only-element',
1455
+ options: angular.extend({}, {
1456
+ elementSelector: GuideUtils.getSparqlResultsSelectorForRow(subStep.row)
1457
+ }, angular.extend({}, options, subStep))
1458
+ });
1459
+ break;
1460
+ case 'table':
1461
+ steps.push({
1462
+ guideBlockName: 'read-only-element',
1463
+ options: angular.extend({}, {
1464
+ elementSelector: GuideUtils.getSparqlResultsSelector() + ' tbody'
1465
+ }, angular.extend({}, options, subStep))
1466
+ });
1467
+ break;
1468
+ }
1469
+ });
1470
+ }
1471
+
1472
+ return steps;
1473
+ }
1474
+ }
1475
+ ]);
1476
+
1477
+ const disableAllNodes = () => () => {
1478
+ $('.node-wrapper').addClass('disable-visual-graph-node');
1479
+ };
1480
+
1481
+ const enableAllNodes = () => () => {
1482
+ $('.node-wrapper').removeClass('disable-visual-graph-node');
1483
+ };
1484
+
1485
+ PluginRegistry.add('guide.step', [
1486
+ {
1487
+ guideBlockName: 'visual-graph',
1488
+ getSteps: (options, services) => {
1489
+ const GuideUtils = services.GuideUtils;
1490
+ const $location = services.$location;
1491
+ const $route = services.$route;
1492
+ options.mainAction = 'visual-graph';
1493
+
1494
+ return [
1495
+ {
1496
+ guideBlockName: 'click-main-menu',
1497
+ options: angular.extend({}, {
1498
+ menu: 'visual-graph',
1499
+ showIntro: true
1500
+ }, options)
1501
+ }, {
1502
+ guideBlockName: 'input-element',
1503
+ options: angular.extend({}, {
1504
+ content: 'guide.step_plugin.visual_graph_input_IRI.content',
1505
+ forceReload: true,
1506
+ url: '/graphs-visualizations',
1507
+ elementSelector: GuideUtils.getGuideElementSelector('graphVisualisationSearchInputNotConfigured', ' input'),
1508
+ onNextValidate: (step) => GuideUtils.validateTextInput(step.elementSelector, step.easyGraphInputText)
1509
+ }, options)
1510
+ }, {
1511
+ guideBlockName: 'clickable-element',
1512
+ options: angular.extend({}, {
1513
+ content: 'guide.step_plugin.visual_graph_show_autocomplete.content',
1514
+ url: '/graphs-visualizations',
1515
+ elementSelector: GuideUtils.getGuideElementSelector(`autocomplete-${options.iri}`),
1516
+ onNextClick: (guide, step) => GuideUtils.waitFor(step.elementSelector, 3).then(() => $(step.elementSelector).trigger('click')),
1517
+ canBePaused: false,
1518
+ forceReload: true
1519
+ }, options)
1520
+ }, {
1521
+ guideBlockName: 'read-only-element',
1522
+ options: angular.extend({}, {
1523
+ content: 'guide.step_plugin.visual_graph_intro.content',
1524
+ url: '/graphs-visualizations',
1525
+ elementSelector: '.graph-visualization',
1526
+ placement: 'left',
1527
+ onPreviousClick: () => new Promise(function (resolve, reject) {
1528
+ $location.url('/graphs-visualizations');
1529
+ $route.reload();
1530
+ const searchInputSelector = GuideUtils.getGuideElementSelector('graphVisualisationSearchInputNotConfigured', ' input');
1531
+ GuideUtils.waitFor(searchInputSelector, 3)
1532
+ .then(() => {
1533
+ GuideUtils.validateTextInput(searchInputSelector, options.easyGraphInputText);
1534
+ resolve();
1535
+ })
1536
+ .catch((error) => reject(error));
1537
+ }),
1538
+ initPreviousStep: () => new Promise(function (resolve, reject) {
1539
+ const url = '/graphs-visualizations?uri=' + options.iri;
1540
+ if (url !== decodeURIComponent($location.url())) {
1541
+ $location.url(url);
1542
+ $route.reload();
1543
+ GuideUtils.waitFor(`.node-wrapper[id^="${options.iri}"] circle`, 3)
1544
+ .then(() => resolve())
1545
+ .catch((error) => reject(error));
1546
+ } else {
1547
+ resolve();
1548
+ }
1549
+ }),
1550
+ canBePaused: false,
1551
+ forceReload: true
1552
+ }, options)
1553
+ }
1554
+ ];
1555
+ }
1556
+ },
1557
+ {
1558
+ guideBlockName: 'visual-graph-expand',
1559
+ getSteps: (options, services) => {
1560
+ const GuideUtils = services.GuideUtils;
1561
+ const $rootScope = services.$rootScope;
1562
+ const $route = services.$route;
1563
+ const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
1564
+
1565
+ // Expands visual graph when a node is double-clicked.
1566
+ const dblClickFunction = (guide) => () => {
1567
+ GuideUtils.graphVizExpandNode(elementSelector);
1568
+ guide.getCurrentStep().hide();
1569
+ GuideUtils.awaitAlphaDropD3(null, $rootScope)()
1570
+ .then(() => {
1571
+ guide.next();
1572
+ });
1573
+ };
1574
+
1575
+ return [
1576
+ {
1577
+ guideBlockName: 'clickable-element',
1578
+ options: angular.extend({}, {
1579
+ title: 'guide.step_plugin.visual-graph-expand.title',
1580
+ content: 'guide.step_plugin.visual-graph-expand.content',
1581
+ url: '/graphs-visualizations',
1582
+ canBePaused: false,
1583
+ elementSelector,
1584
+ // Disable default behavior of service when element is clicked.
1585
+ advanceOn: undefined,
1586
+ onNextClick: (guide) => {
1587
+ GuideUtils.graphVizExpandNode(elementSelector);
1588
+ guide.getCurrentStep().hide();
1589
+ GuideUtils.awaitAlphaDropD3(null, $rootScope)()
1590
+ .then(() => {
1591
+ guide.next();
1592
+ });
1593
+ },
1594
+ show: (guide) => () => {
1595
+ // Add "dblclick" listener to the element. Processing of double-click event is disabled for the visual graph when guide is started.
1596
+ // So we have expanded the graph manually when a selected node is double-clicked.
1597
+ $(elementSelector).on('dblclick.onNodeDbClicked', dblClickFunction(guide));
1598
+ },
1599
+ hide: () => () => {
1600
+ // Remove the "dblclick" listener of element. It is important when step is hided.
1601
+ $(elementSelector).off('dblclick.onNodeDbClicked');
1602
+ },
1603
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
1604
+ $route.reload();
1605
+ GuideUtils.deferredShow(50)()
1606
+ .then(() => {
1607
+ GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)()
1608
+ .then(() => resolve())
1609
+ .catch((error) => reject(error));
1610
+ });
1611
+ }),
1612
+ initPreviousStep: (services, stepId) => new Promise(function (resolve, reject) {
1613
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1614
+ previousStep.options.initPreviousStep(services, previousStep.id)
1615
+ .then(() => {
1616
+ const currentStepId = services.ShepherdService.getCurrentStepId();
1617
+ // Skip expanding of node if last step is "visual-graph-expand"
1618
+ if (currentStepId === stepId) {
1619
+ resolve();
1620
+ } else {
1621
+ GuideUtils.graphVizExpandNode(elementSelector);
1622
+ GuideUtils.deferredShow(50)()
1623
+ .then(() => {
1624
+ GuideUtils.awaitAlphaDropD3(null, $rootScope)()
1625
+ .then(() => resolve())
1626
+ .catch((error) => reject(error));
1627
+ });
1628
+ }
1629
+ })
1630
+ .catch((error) => reject(error));
1631
+ })
1632
+ }, options)
1633
+ }
1634
+ ];
1635
+ }
1636
+ },
1637
+ {
1638
+ guideBlockName: 'visual-graph-properties',
1639
+ getSteps: (options, services) => {
1640
+ const GuideUtils = services.GuideUtils;
1641
+ const $rootScope = services.$rootScope;
1642
+ const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
1643
+
1644
+ let mouseClickTimeStamp;
1645
+ let mouseEventTimer;
1646
+
1647
+ // Expands Node info sidebar panel when a node is clicked.
1648
+ const onClick = (services, guide) => (event) => {
1649
+ if (mouseEventTimer) {
1650
+ // Cancels expansion of the sidebar panel if user double-clicked.
1651
+ if (event.timeStamp - mouseClickTimeStamp < 400) {
1652
+ services.$timeout.cancel(mouseEventTimer);
1653
+ mouseEventTimer = null;
1654
+ }
1655
+ } else {
1656
+ mouseClickTimeStamp = event.timeStamp;
1657
+ mouseEventTimer = services.$timeout(function () {
1658
+ GuideUtils.graphVizShowNodeInfo(elementSelector);
1659
+ mouseEventTimer = null;
1660
+ guide.next();
1661
+ }, 500);
1662
+ }
1663
+ };
1664
+
1665
+ const steps = [
1666
+ {
1667
+ guideBlockName: 'clickable-element',
1668
+ options: angular.extend({}, {
1669
+ title: 'guide.step_plugin.visual-graph-properties.title',
1670
+ content: 'guide.step_plugin.visual-graph-properties.content',
1671
+ url: '/graphs-visualizations',
1672
+ elementSelector,
1673
+ canBePaused: false,
1674
+ // Disable default behavior of service when element is clicked.
1675
+ advanceOn: undefined,
1676
+ show: (guide) => () => {
1677
+ // Add "click" listener to the element. Processing of click event is disabled for the visual graph when guide is started.
1678
+ // So we have to open side panel info manually when a selected node is clicked.
1679
+ $(elementSelector).on('click.onNodeClicked', onClick(services, guide));
1680
+ },
1681
+ hide: () => () => {
1682
+ // Remove the "click" listener of element. It is important when step is hided.
1683
+ $(elementSelector).off('click.onNodeClicked');
1684
+ },
1685
+ onNextClick: (guide, step) => {
1686
+ GuideUtils.graphVizShowNodeInfo(step.elementSelector);
1687
+ guide.next();
1688
+ },
1689
+ beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)
1690
+ }, options)
1691
+ },
1692
+ {
1693
+ guideBlockName: 'read-only-element',
1694
+ options: angular.extend({}, {
1695
+ title: 'guide.step_plugin.visual-graph-properties-side-panel.title',
1696
+ content: 'guide.step_plugin.visual-graph-properties-side-panel.content',
1697
+ url: '/graphs-visualizations',
1698
+ elementSelector: '.rdf-side-panel-content',
1699
+ canBePaused: false,
1700
+ placement: 'left',
1701
+ beforeShowPromise: GuideUtils.deferredShow(500),
1702
+ onPreviousClick: () => new Promise(function (resolve) {
1703
+ GuideUtils.waitFor(closeButtonSelector, 3)
1704
+ .then(() => {
1705
+ $(closeButtonSelector).trigger('click');
1706
+ resolve();
1707
+ }).catch(() => resolve());
1708
+ })
1709
+ }, options)
1710
+ }
1711
+ ];
1712
+
1713
+ if (angular.isArray(options.focusProperties)) {
1714
+ options.focusProperties.forEach((focusProperty) => {
1715
+ if (!angular.isObject(focusProperty)) {
1716
+ focusProperty = {
1717
+ property: focusProperty
1718
+ };
1719
+ }
1720
+ const translationIdSuffix = focusProperty.property === 'types' ? '-types' : '-property';
1721
+ const content = focusProperty.skipGenericMessage && focusProperty.message ?
1722
+ null : 'guide.step_plugin.visual-graph-properties-focus' + translationIdSuffix + '.content';
1723
+ steps.push({
1724
+ guideBlockName: 'read-only-element',
1725
+ options: angular.extend({}, {
1726
+ title: 'guide.step_plugin.visual-graph-properties-focus' + translationIdSuffix + '.title',
1727
+ content: content,
1728
+ url: '/graphs-visualizations',
1729
+ canBePaused: false,
1730
+ placement: 'left',
1731
+ elementSelector: GuideUtils.getGuideElementSelector('graph-visualization-node-info-' + focusProperty.property),
1732
+ focusProperty: focusProperty.property,
1733
+ extraContent: focusProperty.message
1734
+ }, options)
1735
+ });
1736
+ });
1737
+ }
1738
+
1739
+ const closeButtonSelector = GuideUtils.getGuideElementSelector('close-info-panel');
1740
+ steps.push({
1741
+ guideBlockName: 'clickable-element',
1742
+ options: angular.extend({}, {
1743
+ title: 'guide.step_plugin.visual-graph-properties-side-panel-close.title',
1744
+ content: 'guide.step_plugin.visual-graph-properties-side-panel-close.content',
1745
+ url: '/graphs-visualizations',
1746
+ canBePaused: false,
1747
+ placement: 'left',
1748
+ elementSelector: closeButtonSelector,
1749
+ advanceOn: {
1750
+ selector: closeButtonSelector,
1751
+ event: 'click'
1752
+ },
1753
+ beforeShowPromise: () => new Promise(function (resolve) {
1754
+ // We have to be sure that node info sidebar is open. It is needed when this step is loaded when next step "Previous"
1755
+ // button is clicked.
1756
+ GuideUtils.graphVizShowNodeInfo(elementSelector);
1757
+ GuideUtils.deferredShow(500)()
1758
+ .then(() => resolve());
1759
+ }),
1760
+ onNextClick: () => GuideUtils.waitFor(closeButtonSelector, 3).then(() => $(closeButtonSelector).trigger('click'))
1761
+ }, options)
1762
+ });
1763
+
1764
+ return steps;
1765
+ }
1766
+ },
1767
+ {
1768
+ guideBlockName: 'visual-graph-link-focus',
1769
+ getSteps: (options, services) => {
1770
+ const GuideUtils = services.GuideUtils;
1771
+ const $rootScope = services.$rootScope;
1772
+ const elementSelector = `.link-wrapper[id^="${options.fromIri}>${options.toIri}"]`;
1773
+ return [
1774
+ {
1775
+ guideBlockName: 'read-only-element',
1776
+ options: angular.extend({}, {
1777
+ title: 'guide.step_plugin.visual-graph-link-focus.title',
1778
+ content: 'guide.step_plugin.visual-graph-link-focus.content',
1779
+ url: '/graphs-visualizations',
1780
+ canBePaused: false,
1781
+ extraPadding: 40,
1782
+ elementSelector,
1783
+ show: disableAllNodes,
1784
+ hide: enableAllNodes,
1785
+ beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)
1786
+ }, options)
1787
+ }
1788
+ ];
1789
+ }
1790
+ },
1791
+ {
1792
+ guideBlockName: 'visual-graph-node-focus',
1793
+ getSteps: (options, services) => {
1794
+ const GuideUtils = services.GuideUtils;
1795
+ const $rootScope = services.$rootScope;
1796
+ const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
1797
+ return [
1798
+ {
1799
+ guideBlockName: 'read-only-element',
1800
+ options: angular.extend({}, {
1801
+ title: 'guide.step_plugin.visual-graph-node-focus.title',
1802
+ content: 'guide.step_plugin.visual-graph-node-focus.content',
1803
+ url: '/graphs-visualizations',
1804
+ canBePaused: false,
1805
+ extraPadding: 10,
1806
+ elementSelector,
1807
+ show: disableAllNodes,
1808
+ hide: enableAllNodes,
1809
+ beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope),
1810
+ initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
1811
+ if (GuideUtils.isVisible(elementSelector)) {
1812
+ resolve();
1813
+ } else {
1814
+ const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
1815
+ previousStep.options.initPreviousStep(services, previousStep.id)
1816
+ .then(() => resolve())
1817
+ .catch((error) => reject(error));
1818
+ }
1819
+ })
1820
+ }, options)
1821
+ }
1822
+ ];
1823
+ }
1824
+ }
1825
+ ]);
1826
+
1827
+ PluginRegistry.add('guide.step', [
1828
+ {
1829
+ guideBlockName: 'welcome',
1830
+ getSteps: (options, services) => {
1831
+ const GuideUtils = services.GuideUtils;
1832
+ const $translate = services.$translate;
1833
+ const $interpolate = services.$interpolate;
1834
+
1835
+ return [
1836
+ {
1837
+ guideBlockName: 'info-message',
1838
+ options: {
1839
+ title: 'guide.step_plugin.welcome.title',
1840
+ content: 'guide.step_plugin.welcome.content',
1841
+ infoIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.info-icon-hint', options),
1842
+ mouseIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.mouse-icon-hint', options),
1843
+ inputIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.input-icon-hint', options)
1844
+ }
1845
+ },
1846
+ {
1847
+ guideBlockName: 'info-message',
1848
+ options: {
1849
+ title: 'guide.step_plugin.welcome.title',
1850
+ content: 'guide.step_plugin.welcome-what.content'
1851
+ }
1852
+ }
1853
+ ];
1854
+ }
1855
+ }
1856
+ ]);
1857
+
1858
+
1859
+ const BASIC_STEP = {
1860
+ title: '',
1861
+ content: '',
1862
+ elementSelector: undefined,
1863
+ placement: 'bottom',
1864
+ url: undefined,
1865
+ type: 'read-only-element',
1866
+ maxWaitTime: 3,
1867
+ canBePaused: true,
1868
+ onNextClick: undefined,
1869
+ onNextValidate: undefined,
1870
+ onPreviousClick: undefined,
1871
+ skipPoint: false
1872
+ };
1873
+
1874
+ /**
1875
+ * This function will be called before show a step. Step will be shown after promise is resolve. It waits element of step to be visible on the page.
1876
+ * @param {*} services
1877
+ * @param {string} elementSelector
1878
+ * @param {number} maxWaitTime
1879
+ * @return {function(): *}
1880
+ */
1881
+ const beforeShowPromise = (services, elementSelector, maxWaitTime) => {
1882
+ return () => {
1883
+ return services.GuideUtils.waitFor(elementSelector, maxWaitTime)
1884
+ .catch((error) => {
1885
+ // error is caught just to show notification in generic way.
1886
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
1887
+ // throw the error, otherwise guide will continue with the next step.
1888
+ throw error;
1889
+ });
1890
+ };
1891
+ };
1892
+
1893
+ PluginRegistry.add('guide.step', [
1894
+ {
1895
+ guideBlockName: 'clickable-element',
1896
+ getStep: (options, services) => {
1897
+ const notOverridable = {
1898
+ type: 'clickable'
1899
+ };
1900
+
1901
+ const stepDescription = angular.extend({}, BASIC_STEP, {
1902
+ advanceOn: {
1903
+ selector: options.elementSelector,
1904
+ event: 'click'
1905
+ },
1906
+ initPreviousStep: services.GuideUtils.defaultInitPreviousStep
1907
+ }, options, notOverridable);
1908
+
1909
+ if (!stepDescription.beforeShowPromise) {
1910
+ stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
1911
+ }
1912
+ return stepDescription;
1913
+ }
1914
+ },
1915
+ {
1916
+ guideBlockName: 'read-only-element',
1917
+ getStep: (options, services) => {
1918
+ const notOverridable = {
1919
+ type: 'readonly'
1920
+ };
1921
+ const stepDescription = angular.extend({}, BASIC_STEP, {
1922
+ initPreviousStep: services.GuideUtils.defaultInitPreviousStep
1923
+ },
1924
+ options, notOverridable);
1925
+ if (!stepDescription.beforeShowPromise) {
1926
+ stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
1927
+ }
1928
+ return stepDescription;
1929
+ }
1930
+ },
1931
+ {
1932
+ guideBlockName: 'input-element',
1933
+ getStep: (options, services) => {
1934
+ const notOverridable = {
1935
+ type: 'input'
1936
+ };
1937
+ const stepDescription = angular.extend({}, BASIC_STEP, {
1938
+ initPreviousStep: services.GuideUtils.defaultInitPreviousStep
1939
+ }, options, notOverridable);
1940
+ if (!stepDescription.beforeShowPromise) {
1941
+ stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
1942
+ }
1943
+ return stepDescription;
1944
+ }
1945
+ },
1946
+ {
1947
+ guideBlockName: 'info-message',
1948
+ getStep: (options, services) => {
1949
+ const notOverridable = {
1950
+ type: 'readonly'
1951
+ };
1952
+ return angular.extend({}, BASIC_STEP, {
1953
+ initPreviousStep: services.GuideUtils.defaultInitPreviousStep
1954
+ }, options, notOverridable);
1955
+ }
1956
+ },
1957
+ {
1958
+ guideBlockName: 'guide-end',
1959
+ getStep: (options, services) => {
1960
+ const notOverridable = {
1961
+ type: 'readonly',
1962
+ title: 'guide.step_plugin.guide-ended.title',
1963
+ content: 'guide.step_plugin.guide-ended.content',
1964
+ show: (guide) => () => {
1965
+ guide.options.confirmCancel = false;
1966
+ },
1967
+ hide: (guide) => () => {
1968
+ guide.options.confirmCancel = true;
1969
+ }
1970
+ };
1971
+ return angular.extend({}, BASIC_STEP, {
1972
+ initPreviousStep: services.GuideUtils.defaultInitPreviousStep
1973
+ }, options, notOverridable);
1974
+ }
1975
+ }
1976
+ ]);
1977
+
245
1978
  PluginRegistry.add('route', {
246
1979
  'url': '/import',
247
1980
  'module': 'graphdb.framework.impex.import',
@@ -262,21 +1995,22 @@ PluginRegistry.add('main.menu', {
262
1995
  href: 'import',
263
1996
  order: 0,
264
1997
  role: 'IS_AUTHENTICATED_FULLY',
265
- icon: 'icon-import'
1998
+ icon: 'icon-import',
1999
+ guideSelector: 'menu-import'
266
2000
  }
267
2001
  ]
268
2002
  });
269
2003
 
270
2004
  PluginRegistry.add('route', [
271
2005
  {
272
- 'url': '/jdbc',
273
- 'module': 'graphdb.framework.jdbc',
274
- 'path': 'jdbc/app',
275
- 'chunk': 'jdbc',
276
- 'controller': 'JdbcListCtrl',
277
- 'templateUrl': 'pages/jdbc.html',
278
- 'title': 'view.jdbc.title',
279
- 'helpInfo': 'view.jdbc.helpInfo'
2006
+ 'url': '/jdbc',
2007
+ 'module': 'graphdb.framework.jdbc',
2008
+ 'path': 'jdbc/app',
2009
+ 'chunk': 'jdbc',
2010
+ 'controller': 'JdbcListCtrl',
2011
+ 'templateUrl': 'pages/jdbc.html',
2012
+ 'title': 'view.jdbc.title',
2013
+ 'helpInfo': 'view.jdbc.helpInfo'
280
2014
  },
281
2015
  {
282
2016
  'url': '/jdbc/configuration/create',
@@ -288,12 +2022,12 @@ PluginRegistry.add('route', [
288
2022
  'title': 'view.jdbc.create.title',
289
2023
  'helpInfo': 'view.jdbc.create.helpInfo'
290
2024
  }
291
- ]);
2025
+ ]);
292
2026
 
293
2027
  PluginRegistry.add('main.menu', {
294
2028
  'items': [
295
- {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
296
- {label: 'JDBC', labelKey: 'menu.jdbc.label', href: 'jdbc', order: 50, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
2029
+ {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
2030
+ {label: 'JDBC', labelKey: 'menu.jdbc.label', href: 'jdbc', order: 50, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-jdbs'}
297
2031
  ]
298
2032
  });
299
2033
 
@@ -316,13 +2050,15 @@ PluginRegistry.add('main.menu', {
316
2050
  href: '#',
317
2051
  order: 5,
318
2052
  role: 'IS_AUTHENTICATED_FULLY',
319
- icon: "icon-settings"
2053
+ icon: "icon-settings",
2054
+ guideSelector: 'menu-setup'
320
2055
  }, {
321
2056
  label: 'Namespaces',
322
2057
  labelKey: 'menu.namespaces.label',
323
2058
  href: 'namespaces',
324
2059
  order: 30,
325
- parent: 'Setup'
2060
+ parent: 'Setup',
2061
+ guideSelector: 'sub-menu-namespaces'
326
2062
  }
327
2063
  ]
328
2064
  });
@@ -355,7 +2091,8 @@ PluginRegistry.add('main.menu', {
355
2091
  href: '#',
356
2092
  order: 5,
357
2093
  role: 'IS_AUTHENTICATED_FULLY',
358
- icon: "icon-settings"
2094
+ icon: "icon-settings",
2095
+ guideSelector: 'menu-setup'
359
2096
  },
360
2097
  {
361
2098
  label: 'Plugins',
@@ -363,7 +2100,8 @@ PluginRegistry.add('main.menu', {
363
2100
  href: 'plugins',
364
2101
  order: 25,
365
2102
  parent: 'Setup',
366
- role: "IS_AUTHENTICATED_FULLY"
2103
+ role: "IS_AUTHENTICATED_FULLY",
2104
+ guideSelector: 'sub-menu-plugins'
367
2105
  }
368
2106
  ]
369
2107
  });
@@ -388,13 +2126,15 @@ PluginRegistry.add('main.menu', {
388
2126
  order: 3,
389
2127
  // Changed to role user as now users can monitor their own queries
390
2128
  role: 'ROLE_USER',
391
- icon: 'icon-monitoring'
2129
+ icon: 'icon-monitoring',
2130
+ guideSelector: 'menu-monitor'
392
2131
  }, {
393
2132
  label: 'Queries and Updates',
394
2133
  labelKey: 'menu.queries.and.updates.label',
395
2134
  href: 'monitor/queries',
396
2135
  order: 1,
397
- parent: 'Monitor'
2136
+ parent: 'Monitor',
2137
+ guideSelector: 'sub-menu-queries-and-updates'
398
2138
  }
399
2139
  ]
400
2140
  });
@@ -418,7 +2158,8 @@ PluginRegistry.add('main.menu', {
418
2158
  href: '#',
419
2159
  order: 5,
420
2160
  role: 'IS_AUTHENTICATED_FULLY',
421
- icon: 'icon-settings'
2161
+ icon: 'icon-settings',
2162
+ guideSelector: 'menu-setup'
422
2163
  },
423
2164
  {
424
2165
  label: 'RDF Rank',
@@ -426,7 +2167,8 @@ PluginRegistry.add('main.menu', {
426
2167
  href: 'rdfrank',
427
2168
  order: 45,
428
2169
  parent: 'Setup',
429
- role: 'IS_AUTHENTICATED_FULLY'
2170
+ role: 'IS_AUTHENTICATED_FULLY',
2171
+ guideSelector: 'sub-menu-rdf-rank'
430
2172
  }
431
2173
  ]
432
2174
  });
@@ -476,7 +2218,8 @@ PluginRegistry.add('main.menu', {
476
2218
  href: '#',
477
2219
  order: 5,
478
2220
  role: 'IS_AUTHENTICATED_FULLY',
479
- icon: 'icon-settings'
2221
+ icon: 'icon-settings',
2222
+ guideSelector: 'menu-setup'
480
2223
  },
481
2224
  {
482
2225
  label: 'Repositories',
@@ -488,20 +2231,22 @@ PluginRegistry.add('main.menu', {
488
2231
  children: [{
489
2232
  href: 'repository/create',
490
2233
  children: []
491
- }]
2234
+ }],
2235
+ guideSelector: 'sub-menu-repositories'
492
2236
  }
493
2237
  ]
494
2238
  });
495
2239
 
496
2240
  PluginRegistry.add('route', {
497
- 'url': '/monitor/resources',
2241
+ 'url': '/monitor/system',
498
2242
  'module': 'graphdb.framework.jmx.resources',
499
2243
  'path': 'resources/app',
500
2244
  'chunk': 'resources',
501
2245
  'controller': 'ResourcesCtrl',
502
2246
  'templateUrl': 'pages/monitor/resources.html',
503
2247
  'title': 'view.resource.monitoring.title',
504
- 'helpInfo': 'view.resource.monitoring.helpInfo'
2248
+ 'helpInfo': 'view.resource.monitoring.helpInfo',
2249
+ 'reloadOnSearch': false
505
2250
  });
506
2251
 
507
2252
  PluginRegistry.add('main.menu', {
@@ -512,15 +2257,17 @@ PluginRegistry.add('main.menu', {
512
2257
  href: '#',
513
2258
  order: 3,
514
2259
  role: 'ROLE_MONITORING',
515
- icon: 'icon-monitoring'
2260
+ icon: 'icon-monitoring',
2261
+ guideSelector: 'menu-monitor'
516
2262
  }, {
517
2263
  label: 'Resources',
518
2264
  labelKey: 'menu.resources.label',
519
- href: 'monitor/resources',
2265
+ href: 'monitor/system',
520
2266
  // Added role requirement here to assert that users cannot see Resources menu item
521
2267
  role: 'ROLE_MONITORING',
522
- order: 2,
523
- parent: 'Monitor'
2268
+ order: 3,
2269
+ parent: 'Monitor',
2270
+ guideSelector: 'sub-menu-resources'
524
2271
  }
525
2272
  ]
526
2273
  });
@@ -579,6 +2326,16 @@ PluginRegistry.add('route', [
579
2326
  'controller': 'RolesMappingController',
580
2327
  'templateUrl': 'js/angular/security/templates/roles.html',
581
2328
  'title': 'view.roles.mapping.title'
2329
+ }, {
2330
+ 'url': '/ux-test1',
2331
+ 'templateUrl': 'pages/ux-test1.html',
2332
+ 'controller': 'uxTestCtrl',
2333
+ 'title': 'UX Test'
2334
+ }, {
2335
+ 'url': '/ux-test2',
2336
+ 'templateUrl': 'pages/ux-test2.html',
2337
+ 'controller': 'uxTestCtrl',
2338
+ 'title': 'UX Test'
582
2339
  }
583
2340
  ]);
584
2341
 
@@ -590,14 +2347,16 @@ PluginRegistry.add('main.menu', {
590
2347
  href: '#',
591
2348
  order: 5,
592
2349
  role: 'IS_AUTHENTICATED_FULLY',
593
- icon: 'icon-settings'
2350
+ icon: 'icon-settings',
2351
+ guideSelector: 'menu-setup'
594
2352
  },
595
2353
  {
596
2354
  label: 'Users and Access', labelKey: 'menu.users.and.access.label', href: 'users', order: 2, parent: 'Setup', role: 'ROLE_ADMIN',
597
2355
  children: [{
598
2356
  href: 'user/create',
599
2357
  children: []
600
- }]
2358
+ }],
2359
+ guideSelector: 'sub-menu-user-and-access'
601
2360
  },
602
2361
  {
603
2362
  label: 'My Settings',
@@ -605,7 +2364,8 @@ PluginRegistry.add('main.menu', {
605
2364
  href: 'settings',
606
2365
  order: 6,
607
2366
  parent: 'Setup',
608
- role: 'ROLE_USER'
2367
+ role: 'ROLE_USER',
2368
+ guideSelector: 'sub-menu-my-settings'
609
2369
  }
610
2370
  ]
611
2371
  });
@@ -639,7 +2399,8 @@ PluginRegistry.add('main.menu', {
639
2399
  href: 'license',
640
2400
  order: 100,
641
2401
  role: 'ROLE_ADMIN',
642
- parent: 'Setup'
2402
+ parent: 'Setup',
2403
+ guideSelector: 'sub-menu-license'
643
2404
  }]
644
2405
  });
645
2406
 
@@ -673,7 +2434,8 @@ PluginRegistry.add('main.menu', {
673
2434
  href: '#',
674
2435
  order: 5,
675
2436
  role: 'IS_AUTHENTICATED_FULLY',
676
- icon: 'icon-settings'
2437
+ icon: 'icon-settings',
2438
+ guideSelector: 'sub-menu-setup'
677
2439
  },
678
2440
  {
679
2441
  label: 'Similarity',
@@ -685,7 +2447,8 @@ PluginRegistry.add('main.menu', {
685
2447
  children: [{
686
2448
  href: 'similarity/index/create',
687
2449
  children: []
688
- }]
2450
+ }],
2451
+ guideSelector: 'sub-menu-similarity'
689
2452
  }
690
2453
  ]
691
2454
  });
@@ -715,8 +2478,8 @@ PluginRegistry.add('route', [
715
2478
 
716
2479
  PluginRegistry.add('main.menu', {
717
2480
  'items': [
718
- {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
719
- {label: 'SPARQL Templates', labelKey: 'menu.sparql.template.label', href: 'sparql-templates', order: 51, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
2481
+ {label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
2482
+ {label: 'SPARQL Templates', labelKey: 'menu.sparql.template.label', href: 'sparql-templates', order: 51, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-sparql-templates'}
720
2483
  ]
721
2484
  });
722
2485
 
@@ -728,7 +2491,8 @@ PluginRegistry.add('route', {
728
2491
  'controller': 'QueryEditorCtrl',
729
2492
  'templateUrl': 'pages/sparql.html',
730
2493
  'title': 'view.sparql.title',
731
- 'helpInfo': 'view.sparql.helpInfo'
2494
+ 'helpInfo': 'view.sparql.helpInfo',
2495
+ 'reloadOnSearch': false,
732
2496
  });
733
2497
 
734
2498
  PluginRegistry.add('main.menu', {
@@ -739,7 +2503,8 @@ PluginRegistry.add('main.menu', {
739
2503
  href: 'sparql',
740
2504
  order: 2,
741
2505
  role: 'IS_AUTHENTICATED_FULLY',
742
- icon: "icon-sparql"
2506
+ icon: "icon-sparql",
2507
+ guideSelector: 'menu-sparql'
743
2508
  }
744
2509
  ]
745
2510
  });
@@ -772,26 +2537,30 @@ PluginRegistry.add('main.menu', {
772
2537
  href: '#',
773
2538
  order: 7,
774
2539
  role: 'IS_AUTHENTICATED_FULLY',
775
- icon: 'icon-settings'
2540
+ icon: 'icon-settings',
2541
+ guideSelector: 'menu-setup'
776
2542
  }, {
777
2543
  label: 'Help',
778
2544
  labelKey: 'menu.help.label',
779
2545
  href: '#',
780
2546
  order: 8,
781
- icon: 'icon-help'
2547
+ icon: 'icon-help',
2548
+ guideSelector: 'menu-help'
782
2549
  }, {
783
2550
  label: 'System information',
784
2551
  labelKey: 'menu.system.information.label',
785
2552
  href: 'sysinfo',
786
2553
  order: 50,
787
2554
  parent: 'Help',
788
- role: 'ROLE_ADMIN'
2555
+ role: 'ROLE_ADMIN',
2556
+ guideSelector: 'sub-menu-system-information'
789
2557
  }, {
790
2558
  label: 'REST API',
791
2559
  labelKey: 'menu.rest.api.label',
792
2560
  href: 'webapi',
793
2561
  order: 1,
794
- parent: 'Help'
2562
+ parent: 'Help',
2563
+ guideSelector: 'sub-menu-rest-api'
795
2564
  }, {
796
2565
  label: 'Documentation',
797
2566
  labelKey: 'menu.documentation.label',
@@ -799,23 +2568,19 @@ PluginRegistry.add('main.menu', {
799
2568
  parent: 'Help',
800
2569
  icon: 'icon-external',
801
2570
  hrefFun: function (productInfo) {
802
- if (productInfo.productType) {
803
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/' + productInfo.productType + '/';
804
- }
805
- return DOCUMENTATION_URL;
806
- }
2571
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/';
2572
+ },
2573
+ guideSelector: 'sub-menu-documentation'
807
2574
  }, {
808
- label: 'Developer Hub',
809
- labelKey: 'menu.developer.hub.label',
2575
+ label: 'Tutorials',
2576
+ labelKey: 'menu.tutorials.label',
810
2577
  order: 3,
811
2578
  parent: 'Help',
812
2579
  icon: 'icon-external',
813
2580
  hrefFun: function (productInfo) {
814
- if (productInfo.productType) {
815
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/' + productInfo.productType + '/devhub/';
816
- }
817
- return DOCUMENTATION_URL + 'free/devhub/';
818
- }
2581
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/tutorials.html';
2582
+ },
2583
+ guideSelector: 'sub-menu-developer-hub'
819
2584
  }, {
820
2585
  label: 'Support',
821
2586
  labelKey: 'menu.support.label',
@@ -823,11 +2588,129 @@ PluginRegistry.add('main.menu', {
823
2588
  parent: 'Help',
824
2589
  icon: 'icon-external',
825
2590
  hrefFun: function (productInfo) {
826
- if (productInfo.productType) {
827
- return DOCUMENTATION_URL + productInfo.productShortVersion + '/' + productInfo.productType + '/support.html';
828
- }
829
- return DOCUMENTATION_URL + 'free/support.html';
830
- }
2591
+ return DOCUMENTATION_URL + productInfo.productShortVersion + '/support.html';
2592
+ },
2593
+ guideSelector: 'sub-menu-support'
831
2594
  }
832
2595
  ]
833
2596
  });
2597
+
2598
+ PluginRegistry.add('themes', {
2599
+ // The name of the theme. Must contain only lowercase letters, hyphen, underscore. This is the differentiator
2600
+ // property for all registered themes.
2601
+ 'name': 'default-theme',
2602
+ // The theme label or a key for a label from i18n resource bundle.
2603
+ 'label': 'security.workbench.settings.theme.default-theme',
2604
+ // CSS variables, "foo: bar" becomes "--foo: bar"
2605
+ 'variables': {
2606
+ // Primary color, like a main brand color. This is in a HSL format composed by three values below
2607
+ 'primary-color-hue': '13.4',
2608
+ 'primary-color-saturation': '87.9%',
2609
+ 'primary-color-lightness': '33%',
2610
+ // Secondary color, like a contrast main brand color. This is in a HSL format composed by three values below
2611
+ 'secondary-color-hue': '207.3',
2612
+ 'secondary-color-saturation': '100%',
2613
+ 'secondary-color-lightness': '19.4%',
2614
+ // Tertiary color, like a complimentary color. This is in a HSL format composed by three values below
2615
+ 'tertiary-color-hue': '174.6',
2616
+ 'tertiary-color-saturation': '97.7%',
2617
+ 'tertiary-color-lightness': '33.5%',
2618
+ // A color used for the font/svg icons when placed on a primary color background.
2619
+ 'icon-on-primary-color': 'rgba(255, 255, 255, 0.8)',
2620
+ 'gray-color': '#97999C',
2621
+ 'gray-color-dark': '#575757',
2622
+ // Colors for the toastr notifications, the tag-xxx and the text-xxx classes in any of their four states
2623
+ // (i.e. dark colored things)
2624
+ 'color-danger-dark': 'hsl(353, 78%, 36%)',
2625
+ 'color-success-dark': 'hsl(var(--tertiary-color-hue), var(--tertiary-color-saturation), calc(var(--tertiary-color-lightness)*0.5))',
2626
+ 'color-warning-dark': 'var(--primary-color-dark)',
2627
+ 'color-info-dark': 'var(--secondary-color-light)',
2628
+ // Colors for the alert boxes (i.e. light colored things).
2629
+ // Success and info are the same color since we don't use success much if at all
2630
+ 'color-danger-light': '#a4142433',
2631
+ 'color-success-light': 'hsla(var(--tertiary-color-hsl), 0.15)',
2632
+ 'color-warning-light': 'hsla(var(--primary-color-hsl), 0.07)',
2633
+ 'color-info-light': 'hsla(var(--tertiary-color-hsl), 0.15)',
2634
+ 'color-help-light': 'hsla(var(--secondary-color-hsl), 0.1)',
2635
+ // Colors for fading danger/warning buttons, these are intermediate in intensity between dark and light,
2636
+ // and they should not use alpha channel because that doesn't play nice with border color
2637
+ 'color-danger-medium': 'hsl(353, 78%, 83%)',
2638
+ 'color-warning-medium': 'hsl(var(--primary-color-hue), var(--primary-color-saturation), 83%)',
2639
+ // Colors for the logo - logo proper, text in logo, logo background
2640
+ 'logo-color': 'var(--primary-color-light)',
2641
+ 'logo-text-color': 'white',
2642
+ 'logo-background-color': 'var(--secondary-color-dark)'
2643
+ },
2644
+ // Dark theme
2645
+ 'dark': {
2646
+ 'variables': {
2647
+ // Dark definition variables that affect things at a global scale
2648
+ 'body-filter': 'invert(95%) hue-rotate(180deg)',
2649
+ 'html-background': '#0d0d0d',
2650
+ 'media-filter': 'invert(100%) hue-rotate(180deg)',
2651
+ 'alert-filter': 'contrast(2)',
2652
+ 'checkbox-filter': 'invert(100%) hue-rotate(180deg)',
2653
+ 'toast-filter': 'invert(95%) hue-rotate(180deg) contrast(1.2)',
2654
+ // Slightly different colors that work better in dark mode
2655
+ 'primary-color-lightness': '60%',
2656
+ 'secondary-color-saturation': '70%',
2657
+ 'color-warning-light': 'hsla(var(--primary-color-hsl), 0.15)',
2658
+ 'logo-color': 'var(--primary-color-dark)'
2659
+ },
2660
+ // CSS properties, "foo: bar" becomes "foo: bar"
2661
+ 'properties': {
2662
+ // Notify browser that we support dark theme, makes checkboxes look better
2663
+ 'color-scheme': 'light dark'
2664
+ }
2665
+ }
2666
+ });
2667
+
2668
+ PluginRegistry.add('themes', {
2669
+ 'name': 'onto-original-theme',
2670
+ 'label': 'security.workbench.settings.theme.onto-original-theme',
2671
+ 'variables': {
2672
+ 'primary-color-hue': '17',
2673
+ 'primary-color-saturation': '87.9%',
2674
+ 'primary-color-lightness': '49%',
2675
+ 'secondary-color-hue': '207.3',
2676
+ 'secondary-color-saturation': '100%',
2677
+ 'secondary-color-lightness': '19.4%',
2678
+ 'tertiary-color-hue': '174.6',
2679
+ 'tertiary-color-saturation': '97.7%',
2680
+ 'tertiary-color-lightness': '33.5%',
2681
+ 'icon-on-primary-color': 'rgba(255, 255, 255, 0.8)',
2682
+ 'gray-color': '#97999C',
2683
+ 'gray-color-dark': '#575757',
2684
+ 'color-danger-dark': '#bd362f',
2685
+ 'color-success-dark': '#51a351',
2686
+ 'color-warning-dark': '#f89406',
2687
+ 'color-info-dark': '#2f96b4',
2688
+ 'color-danger-light': 'rgba(242, 222, 222, 0.7)',
2689
+ 'color-success-light': 'rgba(219, 252, 202, 0.7)',
2690
+ 'color-warning-light': 'rgba(252, 248, 227, 0.7)',
2691
+ 'color-info-light': 'rgba(203, 238, 234, 0.7)',
2692
+ 'color-help-light': '#e8f5fe',
2693
+ 'color-danger-medium': 'hsl(353, 78%, 83%)',
2694
+ 'color-warning-medium': 'hsl(var(--primary-color-hue), var(--primary-color-saturation), 83%)',
2695
+ 'logo-color': '#E84E0F;',
2696
+ 'logo-text-color': '#FFFFFF',
2697
+ 'logo-background-color': 'var(--secondary-color)'
2698
+ },
2699
+ 'dark': {
2700
+ 'variables': {
2701
+ 'body-filter': 'invert(95%) hue-rotate(180deg)',
2702
+ 'html-background': '#0d0d0d',
2703
+ 'media-filter': 'invert(100%) hue-rotate(180deg)',
2704
+ 'alert-filter': 'brightness(0.8)',
2705
+ 'checkbox-filter': 'invert(100%) hue-rotate(180deg)',
2706
+ 'toast-filter': 'invert(90%) hue-rotate(180deg) contrast(1.2)',
2707
+
2708
+ 'primary-color-hue': '14',
2709
+ 'primary-color-saturation': '78%',
2710
+ 'primary-color-lightness': '64%'
2711
+ },
2712
+ 'properties': {
2713
+ 'color-scheme': 'light dark'
2714
+ }
2715
+ }
2716
+ });