graphdb-workbench 3.2.0-TR2 → 3.2.0-TR3

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 (220) hide show
  1. package/dist/12358.4be185f89eebea9c35bf.bundle.js +3 -0
  2. package/dist/12358.4be185f89eebea9c35bf.bundle.js.map +1 -0
  3. package/dist/{12396.9a7f2862146b6f9adcb1.bundle.js → 12396.07e90b6c97623a9fd754.bundle.js} +2 -2
  4. package/dist/{12396.9a7f2862146b6f9adcb1.bundle.js.map → 12396.07e90b6c97623a9fd754.bundle.js.map} +1 -1
  5. package/dist/{15535.7b170e17ee0a58970ab6.bundle.js → 15535.12490e9b6d305e7bd827.bundle.js} +2 -2
  6. package/dist/{15535.7b170e17ee0a58970ab6.bundle.js.map → 15535.12490e9b6d305e7bd827.bundle.js.map} +1 -1
  7. package/dist/{16162.67e7c1f5f313481b1e80.bundle.js → 16162.58804ed92b5b3ae97510.bundle.js} +2 -2
  8. package/dist/{16162.67e7c1f5f313481b1e80.bundle.js.map → 16162.58804ed92b5b3ae97510.bundle.js.map} +1 -1
  9. package/dist/19402.7f6ea977348338acc824.bundle.js +2 -0
  10. package/dist/19402.7f6ea977348338acc824.bundle.js.map +1 -0
  11. package/dist/{20287.dd5bc263fe26adf34965.bundle.js → 20287.3ce3542c50f41b8b85a3.bundle.js} +2 -2
  12. package/dist/{20287.dd5bc263fe26adf34965.bundle.js.map → 20287.3ce3542c50f41b8b85a3.bundle.js.map} +1 -1
  13. package/dist/{21136.b7efcb40fb956ff1109c.bundle.js → 21136.c6d780b6f550c0df2d2a.bundle.js} +2 -2
  14. package/dist/{21136.b7efcb40fb956ff1109c.bundle.js.map → 21136.c6d780b6f550c0df2d2a.bundle.js.map} +1 -1
  15. package/dist/21142.b48a4c497617cb2df01f.bundle.js +2 -0
  16. package/dist/21142.b48a4c497617cb2df01f.bundle.js.map +1 -0
  17. package/dist/{21170.7832554eab9eaade6ffb.bundle.js → 21170.6079e1b218a1eea085f5.bundle.js} +2 -2
  18. package/dist/{21170.7832554eab9eaade6ffb.bundle.js.map → 21170.6079e1b218a1eea085f5.bundle.js.map} +1 -1
  19. package/dist/21195.152b932628044855ef83.bundle.js +2 -0
  20. package/dist/21195.152b932628044855ef83.bundle.js.map +1 -0
  21. package/dist/{25747.c01110e23b922cdd3d9e.bundle.js → 25747.117e03f9f9ae52f13606.bundle.js} +2 -2
  22. package/dist/{25747.c01110e23b922cdd3d9e.bundle.js.map → 25747.117e03f9f9ae52f13606.bundle.js.map} +1 -1
  23. package/dist/{27580.5a421770ab66d2dedc37.bundle.js → 27580.dc966117bc0ee9eecd70.bundle.js} +2 -2
  24. package/dist/{27580.5a421770ab66d2dedc37.bundle.js.map → 27580.dc966117bc0ee9eecd70.bundle.js.map} +1 -1
  25. package/dist/29350.d2791feedf54d2e4b7b6.bundle.js +2 -0
  26. package/dist/29350.d2791feedf54d2e4b7b6.bundle.js.map +1 -0
  27. package/dist/{31636.54e2817f8ae3998a34b3.bundle.js → 31636.95fa5e5c2a521d1effd5.bundle.js} +2 -2
  28. package/dist/{31636.54e2817f8ae3998a34b3.bundle.js.map → 31636.95fa5e5c2a521d1effd5.bundle.js.map} +1 -1
  29. package/dist/{32489.f7a2dc39cd61c2cd8874.bundle.js → 32489.c5d26d5023f0e0583408.bundle.js} +2 -2
  30. package/dist/{32489.f7a2dc39cd61c2cd8874.bundle.js.map → 32489.c5d26d5023f0e0583408.bundle.js.map} +1 -1
  31. package/dist/{34495.be67c06c39909114bbe4.bundle.js → 34495.2a7b45477194d52af3e5.bundle.js} +2 -2
  32. package/dist/{34495.be67c06c39909114bbe4.bundle.js.map → 34495.2a7b45477194d52af3e5.bundle.js.map} +1 -1
  33. package/dist/36633.eba4270db7fdcf1aad4c.bundle.js +2 -0
  34. package/dist/36633.eba4270db7fdcf1aad4c.bundle.js.map +1 -0
  35. package/dist/36665.19388ed0db6a1d64ad65.bundle.js +2 -0
  36. package/dist/36665.19388ed0db6a1d64ad65.bundle.js.map +1 -0
  37. package/dist/{38360.efec913bb97c3b8588a4.bundle.js → 38360.23a88f346d3a1d92dbb1.bundle.js} +2 -2
  38. package/dist/{38360.efec913bb97c3b8588a4.bundle.js.map → 38360.23a88f346d3a1d92dbb1.bundle.js.map} +1 -1
  39. package/dist/{38644.800252af49cd67310834.bundle.js → 38644.6682aa9acc813134b85a.bundle.js} +2 -2
  40. package/dist/{38644.800252af49cd67310834.bundle.js.map → 38644.6682aa9acc813134b85a.bundle.js.map} +1 -1
  41. package/dist/{38843.29e34a5e5293cee51566.bundle.js → 38843.7cf0aca4cc512c447e29.bundle.js} +2 -2
  42. package/dist/{38843.29e34a5e5293cee51566.bundle.js.map → 38843.7cf0aca4cc512c447e29.bundle.js.map} +1 -1
  43. package/dist/{39518.0ca97879b92271d7c5e2.bundle.js → 39518.cbb394dbd1fb5c717e82.bundle.js} +2 -2
  44. package/dist/{39518.0ca97879b92271d7c5e2.bundle.js.map → 39518.cbb394dbd1fb5c717e82.bundle.js.map} +1 -1
  45. package/dist/{39539.7cea6717cc3a5ba91617.bundle.js → 39539.63178d205aa9af450438.bundle.js} +2 -2
  46. package/dist/{39539.7cea6717cc3a5ba91617.bundle.js.map → 39539.63178d205aa9af450438.bundle.js.map} +1 -1
  47. package/dist/40516.3cfaf1ff4704c038f944.bundle.js +2 -0
  48. package/dist/40516.3cfaf1ff4704c038f944.bundle.js.map +1 -0
  49. package/dist/{41453.4ae219d972a187c36bfc.bundle.js → 41453.3a71e125d59ca56c3e48.bundle.js} +2 -2
  50. package/dist/{41453.4ae219d972a187c36bfc.bundle.js.map → 41453.3a71e125d59ca56c3e48.bundle.js.map} +1 -1
  51. package/dist/{42129.0314e45b4b818b01b71f.bundle.js → 42129.6bbb7e9d5f3be5d0cb47.bundle.js} +2 -2
  52. package/dist/{42129.0314e45b4b818b01b71f.bundle.js.map → 42129.6bbb7e9d5f3be5d0cb47.bundle.js.map} +1 -1
  53. package/dist/{44444.02026ff20e2a843dc05b.bundle.js → 44444.f65e3b550875b4b6e1a8.bundle.js} +2 -2
  54. package/dist/{44444.02026ff20e2a843dc05b.bundle.js.map → 44444.f65e3b550875b4b6e1a8.bundle.js.map} +1 -1
  55. package/dist/44874.b16be286176dfe4aa766.bundle.js +2 -0
  56. package/dist/44874.b16be286176dfe4aa766.bundle.js.map +1 -0
  57. package/dist/49539.63984d5b37bc8b9a7244.bundle.js +2 -0
  58. package/dist/49539.63984d5b37bc8b9a7244.bundle.js.map +1 -0
  59. package/dist/{51087.b072d1c0e53403535283.bundle.js → 51087.1e118e7fe32a8c09d6cb.bundle.js} +2 -2
  60. package/dist/51087.1e118e7fe32a8c09d6cb.bundle.js.map +1 -0
  61. package/dist/{55862.5e8602827fbf72e60cc2.bundle.js → 55862.81278272f7885ce93baf.bundle.js} +2 -2
  62. package/dist/{55862.5e8602827fbf72e60cc2.bundle.js.map → 55862.81278272f7885ce93baf.bundle.js.map} +1 -1
  63. package/dist/{58306.94b9336f68d11bdd72f0.bundle.js → 58306.061bfe57a80e266022a1.bundle.js} +2 -2
  64. package/dist/{58306.94b9336f68d11bdd72f0.bundle.js.map → 58306.061bfe57a80e266022a1.bundle.js.map} +1 -1
  65. package/dist/60039.5f9e955234f5eaf33372.bundle.js +2 -0
  66. package/dist/60039.5f9e955234f5eaf33372.bundle.js.map +1 -0
  67. package/dist/63415.7a4dfa072b5665c5995b.bundle.js +2 -0
  68. package/dist/63415.7a4dfa072b5665c5995b.bundle.js.map +1 -0
  69. package/dist/64118.edc8ed6671017d09ff4e.bundle.js +2 -0
  70. package/dist/64118.edc8ed6671017d09ff4e.bundle.js.map +1 -0
  71. package/dist/{67888.772326168aed83cbad9c.bundle.js → 67888.6a4fedd47a2764fdb04b.bundle.js} +2 -2
  72. package/dist/{67888.772326168aed83cbad9c.bundle.js.map → 67888.6a4fedd47a2764fdb04b.bundle.js.map} +1 -1
  73. package/dist/71920.c171884910616d02e2c6.bundle.js +2 -0
  74. package/dist/71920.c171884910616d02e2c6.bundle.js.map +1 -0
  75. package/dist/{72379.8a3290df05f18f8c65bd.bundle.js → 72379.d82f665d3a8b231008a3.bundle.js} +2 -2
  76. package/dist/{72379.8a3290df05f18f8c65bd.bundle.js.map → 72379.d82f665d3a8b231008a3.bundle.js.map} +1 -1
  77. package/dist/{73667.52fdbdadddafe9e9559b.bundle.js → 73667.5a32fae13853f9158d8b.bundle.js} +2 -2
  78. package/dist/{73667.52fdbdadddafe9e9559b.bundle.js.map → 73667.5a32fae13853f9158d8b.bundle.js.map} +1 -1
  79. package/dist/{73793.7e812bab1754ddd5efb5.bundle.js → 73793.88917a280c5cbacfd4c5.bundle.js} +2 -2
  80. package/dist/{73793.7e812bab1754ddd5efb5.bundle.js.map → 73793.88917a280c5cbacfd4c5.bundle.js.map} +1 -1
  81. package/dist/73964.7a3038b5726d50c1a051.bundle.js +2 -0
  82. package/dist/73964.7a3038b5726d50c1a051.bundle.js.map +1 -0
  83. package/dist/{75282.2f97d3a7d7f3fdd7aebf.bundle.js → 75282.865c935a564591b19c85.bundle.js} +2 -2
  84. package/dist/{75282.2f97d3a7d7f3fdd7aebf.bundle.js.map → 75282.865c935a564591b19c85.bundle.js.map} +1 -1
  85. package/dist/75849.d9fcfe95fed333bad2d0.bundle.js +2 -0
  86. package/dist/75849.d9fcfe95fed333bad2d0.bundle.js.map +1 -0
  87. package/dist/{78250.73e3013c5b2ebdddbf38.bundle.js → 78250.c266986c29f5c73eb46a.bundle.js} +2 -2
  88. package/dist/{78250.73e3013c5b2ebdddbf38.bundle.js.map → 78250.c266986c29f5c73eb46a.bundle.js.map} +1 -1
  89. package/dist/7928.9ab4b363abb28bfc6bd5.bundle.js +2 -0
  90. package/dist/7928.9ab4b363abb28bfc6bd5.bundle.js.map +1 -0
  91. package/dist/{79329.3d912887ba7e96090fb4.bundle.js → 79329.8d230cc14746653003ee.bundle.js} +2 -2
  92. package/dist/{79329.3d912887ba7e96090fb4.bundle.js.map → 79329.8d230cc14746653003ee.bundle.js.map} +1 -1
  93. package/dist/{82926.93a59d42bf8d49aaac8e.bundle.js → 82926.0cb2c4faf483e67f5e7f.bundle.js} +2 -2
  94. package/dist/{82926.93a59d42bf8d49aaac8e.bundle.js.map → 82926.0cb2c4faf483e67f5e7f.bundle.js.map} +1 -1
  95. package/dist/85609.68438b4955212d5fcb84.bundle.js +2 -0
  96. package/dist/85609.68438b4955212d5fcb84.bundle.js.map +1 -0
  97. package/dist/85788.501c7244b890d519f8cf.bundle.js +2 -0
  98. package/dist/85788.501c7244b890d519f8cf.bundle.js.map +1 -0
  99. package/dist/{89695.4ee87c52d4088115c51e.bundle.js → 89695.b7e90a123bc2875ccae4.bundle.js} +2 -2
  100. package/dist/89695.b7e90a123bc2875ccae4.bundle.js.map +1 -0
  101. package/dist/{9062.3541de664710a36fdac7.bundle.js → 9062.9bb14aa1e3d51036c7fe.bundle.js} +2 -2
  102. package/dist/{9062.3541de664710a36fdac7.bundle.js.map → 9062.9bb14aa1e3d51036c7fe.bundle.js.map} +1 -1
  103. package/dist/96089.4317e132ef8cc0033f83.bundle.js +2 -0
  104. package/dist/96089.4317e132ef8cc0033f83.bundle.js.map +1 -0
  105. package/dist/{99448.384b74c734331e5f8909.bundle.js → 99448.2ecdf14415bcd9299354.bundle.js} +2 -2
  106. package/dist/{99448.384b74c734331e5f8909.bundle.js.map → 99448.2ecdf14415bcd9299354.bundle.js.map} +1 -1
  107. package/dist/css/ttyg/chat-item-details.css +1 -1
  108. package/dist/css/ttyg/chat-panel.css +1 -1
  109. package/dist/i18n/locale-en.json +3 -0
  110. package/dist/i18n/locale-fr.json +3 -0
  111. package/dist/index.html +8 -8
  112. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  113. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  114. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  115. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  116. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  117. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  118. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  119. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  120. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  121. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  122. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  123. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  124. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  125. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  126. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  127. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  128. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  129. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  130. package/dist/js/angular/security/templates/user.html +2 -2
  131. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  132. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  133. package/dist/js/angular/ttyg/templates/chat-item-detail.html +5 -5
  134. package/dist/js/angular/ttyg/templates/chat-list.html +2 -2
  135. package/dist/js/angular/ttyg/templates/chat-panel.html +12 -7
  136. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  137. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +2 -2
  138. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  139. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  140. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  141. package/dist/{legacyWorkbench.2bd696723af2573e8bb7.js → legacyWorkbench.ffd119cc335034d736cc.js} +3 -3
  142. package/dist/{legacyWorkbench.2bd696723af2573e8bb7.js.map → legacyWorkbench.ffd119cc335034d736cc.js.map} +1 -1
  143. package/dist/pages/aclmanagement.html +2 -2
  144. package/dist/pages/autocomplete.html +1 -1
  145. package/dist/pages/choose-repository-type.html +1 -1
  146. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  147. package/dist/pages/create-index.html +1 -1
  148. package/dist/pages/dependencies.html +1 -1
  149. package/dist/pages/domainRangeInfo.html +2 -2
  150. package/dist/pages/edit.html +1 -1
  151. package/dist/pages/explore.html +1 -1
  152. package/dist/pages/export.html +1 -1
  153. package/dist/pages/find.html +1 -1
  154. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  155. package/dist/pages/graphs-visualizations.html +7 -7
  156. package/dist/pages/guides.html +1 -1
  157. package/dist/pages/import.html +2 -2
  158. package/dist/pages/jdbc-create.html +1 -1
  159. package/dist/pages/login.html +1 -1
  160. package/dist/pages/monitor/backup-and-restore.html +1 -1
  161. package/dist/pages/monitor/queries.html +1 -1
  162. package/dist/pages/monitor/resources.html +1 -1
  163. package/dist/pages/namespaces.html +2 -2
  164. package/dist/pages/plugins.html +1 -1
  165. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  166. package/dist/pages/rdfrank.html +2 -2
  167. package/dist/pages/repositories.html +1 -1
  168. package/dist/pages/repository.html +1 -1
  169. package/dist/pages/similarity-indexes.html +1 -1
  170. package/dist/pages/sparql-editor.html +1 -1
  171. package/dist/pages/sparql-template-create.html +1 -1
  172. package/dist/pages/ux-test1.html +2 -2
  173. package/dist/pages/webapi.html +2 -2
  174. package/dist/plugins.js +1 -1
  175. package/dist/res/swagger5/index.html +11 -11
  176. package/package.json +1 -1
  177. package/dist/12358.2061f29dc113149946a3.bundle.js +0 -3
  178. package/dist/12358.2061f29dc113149946a3.bundle.js.map +0 -1
  179. package/dist/19402.07424b4b7c9dd775d860.bundle.js +0 -2
  180. package/dist/19402.07424b4b7c9dd775d860.bundle.js.map +0 -1
  181. package/dist/21142.ec45fad4d52b36961d17.bundle.js +0 -2
  182. package/dist/21142.ec45fad4d52b36961d17.bundle.js.map +0 -1
  183. package/dist/21195.caae6cc33d755ad52df4.bundle.js +0 -2
  184. package/dist/21195.caae6cc33d755ad52df4.bundle.js.map +0 -1
  185. package/dist/29350.9976c09d5cdaa48ecb19.bundle.js +0 -2
  186. package/dist/29350.9976c09d5cdaa48ecb19.bundle.js.map +0 -1
  187. package/dist/36633.bd17a2028ef302870ec4.bundle.js +0 -2
  188. package/dist/36633.bd17a2028ef302870ec4.bundle.js.map +0 -1
  189. package/dist/36665.eda6cfdf545f2608a6c7.bundle.js +0 -2
  190. package/dist/36665.eda6cfdf545f2608a6c7.bundle.js.map +0 -1
  191. package/dist/40516.734b24eead67142c4045.bundle.js +0 -2
  192. package/dist/40516.734b24eead67142c4045.bundle.js.map +0 -1
  193. package/dist/44874.5854c207bbe2c4f2438e.bundle.js +0 -2
  194. package/dist/44874.5854c207bbe2c4f2438e.bundle.js.map +0 -1
  195. package/dist/49539.d253a79e8b9710776e48.bundle.js +0 -2
  196. package/dist/49539.d253a79e8b9710776e48.bundle.js.map +0 -1
  197. package/dist/51087.b072d1c0e53403535283.bundle.js.map +0 -1
  198. package/dist/60039.cb9262af0bc63b635c76.bundle.js +0 -2
  199. package/dist/60039.cb9262af0bc63b635c76.bundle.js.map +0 -1
  200. package/dist/63415.81af22cc29be1144e07f.bundle.js +0 -2
  201. package/dist/63415.81af22cc29be1144e07f.bundle.js.map +0 -1
  202. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js +0 -2
  203. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js.map +0 -1
  204. package/dist/71920.46e7b0ec1d22adcd8e55.bundle.js +0 -2
  205. package/dist/71920.46e7b0ec1d22adcd8e55.bundle.js.map +0 -1
  206. package/dist/73964.fd1ad5e7aa228ad4cbbb.bundle.js +0 -2
  207. package/dist/73964.fd1ad5e7aa228ad4cbbb.bundle.js.map +0 -1
  208. package/dist/75849.bd0bdefa903741034a71.bundle.js +0 -2
  209. package/dist/75849.bd0bdefa903741034a71.bundle.js.map +0 -1
  210. package/dist/7928.7900a3911c83495d74dd.bundle.js +0 -2
  211. package/dist/7928.7900a3911c83495d74dd.bundle.js.map +0 -1
  212. package/dist/85609.680b755726c66ea1de34.bundle.js +0 -2
  213. package/dist/85609.680b755726c66ea1de34.bundle.js.map +0 -1
  214. package/dist/85788.4e0818c48b6f29153db4.bundle.js +0 -2
  215. package/dist/85788.4e0818c48b6f29153db4.bundle.js.map +0 -1
  216. package/dist/89695.4ee87c52d4088115c51e.bundle.js.map +0 -1
  217. package/dist/96089.7e28823f34c450de1f7e.bundle.js +0 -2
  218. package/dist/96089.7e28823f34c450de1f7e.bundle.js.map +0 -1
  219. /package/dist/{12358.2061f29dc113149946a3.bundle.js.LICENSE.txt → 12358.4be185f89eebea9c35bf.bundle.js.LICENSE.txt} +0 -0
  220. /package/dist/{legacyWorkbench.2bd696723af2573e8bb7.js.LICENSE.txt → legacyWorkbench.ffd119cc335034d736cc.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=89695;export const __webpack_ids__=[89695];export const __webpack_modules__={89695:()=>{const e="ontologyGraph",t="sparqlQuery",l="guide.step-action.sparql-search-method";PluginRegistry.add("guide.step",[{guideBlockName:"ttyg-sparql-method-enable",getSteps:(e,t)=>{const o=t.GuideUtils,a=o.getGuideElementSelector("query-method-sparql_search-input");return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.enable-toggle",...e.mainAction?{}:{title:l},class:"toggle-sparql-search",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("query-method-sparql_search"),clickableElementSelector:a,onNextValidate:()=>Promise.resolve(o.isChecked(a))}}]}},{guideBlockName:"ttyg-sparql-method-disable",getSteps:(e,t)=>{const o=t.GuideUtils,a=o.getGuideElementSelector("query-method-sparql_search-input");return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.disable-toggle",...e.mainAction?{}:{title:l},class:"toggle-sparql-search",...e,url:"ttyg",showOn:()=>o.isChecked(a),elementSelector:o.getGuideElementSelector("query-method-sparql_search"),clickableElementSelector:a,onNextValidate:()=>Promise.resolve(!o.isChecked(a))}}]}},{guideBlockName:"ttyg-sparql-method-ontology-select",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.enable-ontology-from-graph",class:"enable-ontology-from-graph",...e.mainAction?{}:{title:l},...e,url:"ttyg",elementSelector:o.getGuideElementSelector("sparql-ontology-graph-option"),clickableElementSelector:o.getGuideElementSelector("sparql-ontology-graph-option-input"),onNextValidate:()=>Promise.resolve(o.isChecked(o.getGuideElementSelector("sparql-ontology-graph-option-input")))}}]}},{guideBlockName:"sparql-search-method-type-graph-name",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"input-element",options:{content:"guide.step_plugin.sparql-search-method.type-ontology-graph-name",...e.mainAction?{}:{title:l},class:"input-ontology-graph-name",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("sparql-ontology-graph-input"),onNextValidate:()=>Promise.resolve(o.validateTextInput(o.getGuideElementSelector("sparql-ontology-graph-input"),e.ontologyGraph,!1))}}]}},{guideBlockName:"ttyg-sparql-method-sparql-query-select",getSteps:(e,t)=>{const l=t.GuideUtils;return[{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.sparql-search-method.enable-sparql-query",class:"enable-sparql-query",url:"ttyg",elementSelector:l.getGuideElementSelector("sparql-query-option"),clickableElementSelector:l.getGuideElementSelector("sparql-query-option-input"),onNextValidate:()=>Promise.resolve(l.isChecked(l.getGuideElementSelector("sparql-query-option-input")))},e)}]}},{guideBlockName:"ttyg-sparql-copy-query-text",getSteps:(e,t)=>{const l=t.GuideUtils;return[{guideBlockName:"copy-text-element",options:{elementSelector:l.getGuideElementSelector("sparql-query-input"),text:e.sparqlQuery,...e,onNextValidate:()=>Promise.resolve(l.validateTextInput(l.getGuideElementSelector("sparql-query-input"),e.sparqlQuery,!1))}}]}},{guideBlockName:"ttyg-sparql-click-add-namespaces",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.add-missing-namespaces",...e.mainAction?{}:{title:l},class:"enable-sparql-query",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("add-missing-namespaces-option"),onNextValidate:()=>Promise.resolve(o.isChecked(o.getGuideElementSelector("add-missing-namespaces-input")))}}]}},{guideBlockName:"ttyg-enabling-sparql-info-message",getSteps:(e,t)=>[{guideBlockName:"info-message",options:{content:"guide.step_plugin.sparql-search-method.content",...e.mainAction?{}:{title:l},class:"info-sparql-search",...e,url:"ttyg"}}]},{guideBlockName:"sparql-search-method-enable-ontology-graph",getSteps:(e,t)=>{const l=[{guideBlockName:"ttyg-sparql-method-ontology-select",options:{...e}},{guideBlockName:"sparql-search-method-type-graph-name",options:{...e}}];return e.addMissingNamespaces&&l.push({guideBlockName:"ttyg-sparql-click-add-namespaces",options:{...e}}),l}},{guideBlockName:"sparql-search-method-enable-sparql-query",getSteps:(e,t)=>{const l=[{guideBlockName:"ttyg-sparql-method-sparql-query-select",options:{...e}},{guideBlockName:"ttyg-sparql-copy-query-text",options:{...e}}];return e.addMissingNamespaces&&l.push({guideBlockName:"ttyg-sparql-click-add-namespaces",options:{...e}}),l}},{guideBlockName:"sparql-search-method",getSteps:(l,o)=>{l.mainAction="sparql-search-method";const a=l.disable;let s;if(l.ontologyGraph?s=e:l.sparqlQuery&&(s=t),a)return[{guideBlockName:"ttyg-sparql-method-disable",options:{...l}}];const n=[{guideBlockName:"ttyg-enabling-sparql-info-message",options:{...l}},{guideBlockName:"ttyg-sparql-method-enable",options:{...l}}];return s===e?n.push({guideBlockName:"sparql-search-method-enable-ontology-graph",options:{...l}}):s===t&&n.push({guideBlockName:"sparql-search-method-enable-sparql-query",options:{...l}}),n}}])}};
2
- //# sourceMappingURL=89695.4ee87c52d4088115c51e.bundle.js.map
1
+ export const __webpack_id__=89695;export const __webpack_ids__=[89695];export const __webpack_modules__={89695:()=>{const e="ontologyGraph",t="sparqlQuery",l="guide.step-action.sparql-search-method";PluginRegistry.add("guide.step",[{guideBlockName:"ttyg-sparql-method-enable",getSteps:(e,t)=>{const o=t.GuideUtils,a=o.getGuideElementSelector("query-method-sparql_search-input");return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.enable-toggle",...e.mainAction?{}:{title:l},class:"toggle-sparql-search",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("query-method-sparql_search"),clickableElementSelector:a,onNextValidate:()=>Promise.resolve(o.isChecked(a))}}]}},{guideBlockName:"ttyg-sparql-method-disable",getSteps:(e,t)=>{const o=t.GuideUtils,a=o.getGuideElementSelector("query-method-sparql_search-input");return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.disable-toggle",...e.mainAction?{}:{title:l},class:"toggle-sparql-search",...e,url:"ttyg",showOn:()=>o.isChecked(a),elementSelector:o.getGuideElementSelector("query-method-sparql_search"),clickableElementSelector:a,onNextValidate:()=>Promise.resolve(!o.isChecked(a))}}]}},{guideBlockName:"ttyg-sparql-method-ontology-select",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.enable-ontology-from-graph",class:"enable-ontology-from-graph",...e.mainAction?{}:{title:l},...e,url:"ttyg",elementSelector:o.getGuideElementSelector("sparql-ontology-graph-option"),clickableElementSelector:o.getGuideElementSelector("sparql-ontology-graph-option-input"),onNextValidate:()=>Promise.resolve(o.isChecked(o.getGuideElementSelector("sparql-ontology-graph-option-input")))}}]}},{guideBlockName:"sparql-search-method-type-graph-name",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"input-element",options:{content:"guide.step_plugin.sparql-search-method.type-ontology-graph-name",...e.mainAction?{}:{title:l},class:"input-ontology-graph-name",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("sparql-ontology-graph-input"),onNextValidate:()=>Promise.resolve(o.validateTextInput(o.getGuideElementSelector("sparql-ontology-graph-input"),e.ontologyGraph,!1))}}]}},{guideBlockName:"ttyg-sparql-method-sparql-query-select",getSteps:(e,t)=>{const l=t.GuideUtils;return[{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.sparql-search-method.enable-sparql-query",class:"enable-sparql-query",url:"ttyg",elementSelector:l.getGuideElementSelector("sparql-query-option"),clickableElementSelector:l.getGuideElementSelector("sparql-query-option-input"),onNextValidate:()=>Promise.resolve(l.isChecked(l.getGuideElementSelector("sparql-query-option-input")))},e)}]}},{guideBlockName:"ttyg-sparql-copy-query-text",getSteps:(e,t)=>{const l=t.GuideUtils;return[{guideBlockName:"copy-text-element",options:{elementSelector:l.getGuideElementSelector("sparql-query-input"),text:e.sparqlQuery,...e,onNextValidate:()=>Promise.resolve(l.validateTextInput(l.getGuideElementSelector("sparql-query-input"),e.sparqlQuery,!1))}}]}},{guideBlockName:"ttyg-sparql-click-add-namespaces",getSteps:(e,t)=>{const o=t.GuideUtils,a=o.getGuideElementSelector("add-missing-namespaces-input");return[{guideBlockName:"clickable-element",options:{content:"guide.step_plugin.sparql-search-method.add-missing-namespaces",...e.mainAction?{}:{title:l},class:"enable-sparql-query",...e,url:"ttyg",elementSelector:o.getGuideElementSelector("add-missing-namespaces-option"),clickableElementSelector:a,onNextValidate:()=>Promise.resolve(o.isChecked(a))}}]}},{guideBlockName:"ttyg-enabling-sparql-info-message",getSteps:(e,t)=>[{guideBlockName:"info-message",options:{content:"guide.step_plugin.sparql-search-method.content",...e.mainAction?{}:{title:l},class:"info-sparql-search",...e,url:"ttyg"}}]},{guideBlockName:"sparql-search-method-enable-ontology-graph",getSteps:(e,t)=>{const l=[{guideBlockName:"ttyg-sparql-method-ontology-select",options:{...e}},{guideBlockName:"sparql-search-method-type-graph-name",options:{...e}}];return e.addMissingNamespaces&&l.push({guideBlockName:"ttyg-sparql-click-add-namespaces",options:{...e}}),l}},{guideBlockName:"sparql-search-method-enable-sparql-query",getSteps:(e,t)=>{const l=[{guideBlockName:"ttyg-sparql-method-sparql-query-select",options:{...e}},{guideBlockName:"ttyg-sparql-copy-query-text",options:{...e}}];return e.addMissingNamespaces&&l.push({guideBlockName:"ttyg-sparql-click-add-namespaces",options:{...e}}),l}},{guideBlockName:"sparql-search-method",getSteps:(l,o)=>{l.mainAction="sparql-search-method";const a=l.disable;let s;if(l.ontologyGraph?s=e:l.sparqlQuery&&(s=t),a)return[{guideBlockName:"ttyg-sparql-method-disable",options:{...l}}];const n=[{guideBlockName:"ttyg-enabling-sparql-info-message",options:{...l}},{guideBlockName:"ttyg-sparql-method-enable",options:{...l}}];return s===e?n.push({guideBlockName:"sparql-search-method-enable-ontology-graph",options:{...l}}):s===t&&n.push({guideBlockName:"sparql-search-method-enable-sparql-query",options:{...l}}),n}}])}};
2
+ //# sourceMappingURL=89695.b7e90a123bc2875ccae4.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"89695.b7e90a123bc2875ccae4.bundle.js","mappings":"oHAAA,MAAMA,EAAsC,gBACtCC,EAAoC,cACpCC,EAA0C,yCAEhDC,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,4BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WACtBC,EAAiBD,EAAWE,wBAAwB,oCAC1D,MAAO,CACH,CACIN,eAAgB,oBAChBE,QAAS,CACLK,QAAS,0DAELL,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,GACtCa,MAAO,0BACJR,EACHS,IAAK,OACLC,gBAAiBR,EAAWE,wBAAwB,8BACpDO,yBAA0BR,EAC1BS,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWa,UAAUZ,SAM/E,CACIL,eAAgB,6BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WACtBC,EAAiBD,EAAWE,wBAAwB,oCAE1D,MAAO,CACH,CACIN,eAAgB,oBAChBE,QAAS,CACLK,QAAS,2DAELL,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,GACtCa,MAAO,0BACJR,EACHS,IAAK,OACLO,OAAQA,IAAMd,EAAWa,UAAUZ,GACnCO,gBAAiBR,EAAWE,wBAAwB,8BACpDO,yBAA0BR,EAC1BS,eAAgBA,IAAMC,QAAQC,SAASZ,EAAWa,UAAUZ,SAMhF,CACIL,eAAgB,qCAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAE5B,MAAO,CACH,CACIJ,eAAgB,oBAChBE,QAAS,CACLK,QAAS,oEACTG,MAAO,gCAEHR,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,MACnCK,EACHS,IAAK,OACLC,gBAAiBR,EAAWE,wBAAwB,gCACpDO,yBAA0BT,EAAWE,wBAAwB,sCAC7DQ,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWa,UAAUb,EAAWE,wBAAwB,6CAMlH,CACIN,eAAgB,uCAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAE5B,MAAO,CACH,CACIJ,eAAgB,gBAChBE,QAAS,CACLK,QAAS,qEAELL,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,GACtCa,MAAO,+BACJR,EACHS,IAAK,OACLC,gBAAiBR,EAAWE,wBAAwB,+BACpDQ,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWe,kBAAkBf,EAAWE,wBAAwB,+BAAgCJ,EAAQkB,eAAe,SAMjL,CACIpB,eAAgB,yCAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAE5B,MAAO,CACH,CACIJ,eAAgB,oBAChBE,QAASmB,QAAQC,OAAO,CAAC,EAAG,CACxBf,QAAS,6DACTG,MAAO,sBACPC,IAAK,OACLC,gBAAiBR,EAAWE,wBAAwB,uBACpDO,yBAA0BT,EAAWE,wBAAwB,6BAC7DQ,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWa,UAAUb,EAAWE,wBAAwB,gCAC/FJ,OAKnB,CACIF,eAAgB,8BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAE5B,MAAO,CACH,CACIJ,eAAgB,oBAChBE,QAAS,CACLU,gBAAiBR,EAAWE,wBAAwB,sBACpDiB,KAAMrB,EAAQsB,eACXtB,EACHY,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWe,kBAAkBf,EAAWE,wBAAwB,sBAAuBJ,EAAQsB,aAAa,SAMtK,CACExB,eAAgB,mCAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WACtBqB,EAAqBrB,EAAWE,wBAAwB,gCAE9D,MAAO,CACH,CACIN,eAAgB,oBAChBE,QAAS,CACLK,QAAS,mEAELL,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,GACtCa,MAAO,yBACJR,EACHS,IAAK,OACLC,gBAAiBR,EAAWE,wBAAwB,iCACpDO,yBAA0BY,EAC1BX,eAAgBA,IAAMC,QAAQC,QAAQZ,EAAWa,UAAUQ,SAM7E,CACEzB,eAAgB,oCAChBC,SAAUA,CAACC,EAASC,IACT,CACH,CACIH,eAAgB,eAChBE,QAAS,CACLK,QAAS,oDAELL,EAAQM,WAAa,CAAC,EAAI,CAACC,MAAOZ,GACtCa,MAAO,wBACJR,EACHS,IAAK,WAMvB,CACIX,eAAgB,6CAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMuB,EAAQ,CACV,CACI1B,eAAgB,qCAAsCE,QAAS,IAAIA,IAEvE,CACIF,eAAgB,uCAAwCE,QAAS,IAAIA,KAU7E,OANIA,EAAQyB,sBACRD,EAAME,KAAK,CACP5B,eAAgB,mCAAoCE,QAAS,IAAIA,KAIlEwB,IAGf,CACI1B,eAAgB,2CAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMuB,EAAQ,CACV,CACI1B,eAAgB,yCAA0CE,QAAS,IAAIA,IAE3E,CACIF,eAAgB,8BAA+BE,QAAS,IAAIA,KAUpE,OANIA,EAAQyB,sBACRD,EAAME,KAAK,CACP5B,eAAgB,mCAAoCE,QAAS,IAAIA,KAIlEwB,IAGf,CACI1B,eAAgB,uBAChBC,SAAUA,CAACC,EAASC,KAChBD,EAAQM,WAAa,uBAErB,MAAMqB,EAAkB3B,EAAQ4B,QAEhC,IAAIC,EAOJ,GANI7B,EAAQkB,cACRW,EAAsBpC,EACfO,EAAQsB,cACfO,EAAsBnC,GAGtBiC,EACA,MAAO,CAAC,CACJ7B,eAAgB,6BAA8BE,QAAS,IAAIA,KAInE,MAAMwB,EAAQ,CACV,CACI1B,eAAgB,oCAAqCE,QAAS,IAAIA,IAEtE,CACIF,eAAgB,4BAA6BE,QAAS,IAAIA,KAgBlE,OAZI6B,IAAwBpC,EACxB+B,EAAME,KAAK,CACP5B,eAAgB,6CAChBE,QAAS,IAAIA,KAEV6B,IAAwBnC,GAC/B8B,EAAME,KAAK,CACP5B,eAAgB,2CAChBE,QAAS,IAAIA,KAIdwB,K","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/ttyg/common/sparql-search-method/plugin.js"],"sourcesContent":["const CONFIGURATION_OPTION_ONTOLOGY_GRAPH = 'ontologyGraph';\nconst CONFIGURATION_OPTION_SPARQL_QUERY = 'sparqlQuery';\nconst TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE = 'guide.step-action.sparql-search-method';\n\nPluginRegistry.add('guide.step', [\n {\n guideBlockName: 'ttyg-sparql-method-enable',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n const toggleSelector = GuideUtils.getGuideElementSelector('query-method-sparql_search-input');\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.sparql-search-method.enable-toggle',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n class: 'toggle-sparql-search',\n ...options,\n url: 'ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('query-method-sparql_search'),\n clickableElementSelector: toggleSelector,\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(toggleSelector)),\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'ttyg-sparql-method-disable',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n const toggleSelector = GuideUtils.getGuideElementSelector('query-method-sparql_search-input');\n\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.sparql-search-method.disable-toggle',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n class: 'toggle-sparql-search',\n ...options,\n url: 'ttyg',\n showOn: () => GuideUtils.isChecked(toggleSelector),\n elementSelector: GuideUtils.getGuideElementSelector('query-method-sparql_search'),\n clickableElementSelector: toggleSelector,\n onNextValidate: () => Promise.resolve(!GuideUtils.isChecked(toggleSelector)),\n },\n },\n ];\n },\n },\n {\n guideBlockName: \"ttyg-sparql-method-ontology-select\",\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.sparql-search-method.enable-ontology-from-graph',\n class: 'enable-ontology-from-graph',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n ...options,\n url: 'ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('sparql-ontology-graph-option'),\n clickableElementSelector: GuideUtils.getGuideElementSelector('sparql-ontology-graph-option-input'),\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(GuideUtils.getGuideElementSelector('sparql-ontology-graph-option-input'))),\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'sparql-search-method-type-graph-name',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n\n return [\n {\n guideBlockName: 'input-element',\n options: {\n content: `guide.step_plugin.sparql-search-method.type-ontology-graph-name`,\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n class: 'input-ontology-graph-name',\n ...options,\n url: 'ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('sparql-ontology-graph-input'),\n onNextValidate: () => Promise.resolve(GuideUtils.validateTextInput(GuideUtils.getGuideElementSelector('sparql-ontology-graph-input'), options.ontologyGraph, false)),\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'ttyg-sparql-method-sparql-query-select',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n\n return [\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.sparql-search-method.enable-sparql-query',\n class: 'enable-sparql-query',\n url: 'ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('sparql-query-option'),\n clickableElementSelector: GuideUtils.getGuideElementSelector('sparql-query-option-input'),\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(GuideUtils.getGuideElementSelector('sparql-query-option-input'))),\n }, options),\n },\n ];\n },\n },\n {\n guideBlockName: \"ttyg-sparql-copy-query-text\",\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n\n return [\n {\n guideBlockName: 'copy-text-element',\n options: {\n elementSelector: GuideUtils.getGuideElementSelector('sparql-query-input'),\n text: options.sparqlQuery,\n ...options,\n onNextValidate: () => Promise.resolve(GuideUtils.validateTextInput(GuideUtils.getGuideElementSelector('sparql-query-input'), options.sparqlQuery, false)),\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'ttyg-sparql-click-add-namespaces',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n const namespacesCheckbox = GuideUtils.getGuideElementSelector('add-missing-namespaces-input');\n\n return [\n {\n guideBlockName: 'clickable-element',\n options: {\n content: 'guide.step_plugin.sparql-search-method.add-missing-namespaces',\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n class: 'enable-sparql-query',\n ...options,\n url: 'ttyg',\n elementSelector: GuideUtils.getGuideElementSelector('add-missing-namespaces-option'),\n clickableElementSelector: namespacesCheckbox,\n onNextValidate: () => Promise.resolve(GuideUtils.isChecked(namespacesCheckbox)),\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'ttyg-enabling-sparql-info-message',\n getSteps: (options, services) => {\n return [\n {\n guideBlockName: 'info-message',\n options: {\n content: `guide.step_plugin.sparql-search-method.content`,\n // If mainAction is set the title will be set automatically\n ...(options.mainAction ? {} : {title: TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE}),\n class: 'info-sparql-search',\n ...options,\n url: 'ttyg',\n },\n },\n ];\n },\n },\n {\n guideBlockName: 'sparql-search-method-enable-ontology-graph',\n getSteps: (options, services) => {\n const steps = [\n {\n guideBlockName: 'ttyg-sparql-method-ontology-select', options: {...options},\n },\n {\n guideBlockName: 'sparql-search-method-type-graph-name', options: {...options},\n },\n ];\n\n if (options.addMissingNamespaces) {\n steps.push({\n guideBlockName: 'ttyg-sparql-click-add-namespaces', options: {...options},\n });\n }\n\n return steps;\n },\n },\n {\n guideBlockName: 'sparql-search-method-enable-sparql-query',\n getSteps: (options, services) => {\n const steps = [\n {\n guideBlockName: 'ttyg-sparql-method-sparql-query-select', options: {...options},\n },\n {\n guideBlockName: 'ttyg-sparql-copy-query-text', options: {...options},\n },\n ];\n\n if (options.addMissingNamespaces) {\n steps.push({\n guideBlockName: 'ttyg-sparql-click-add-namespaces', options: {...options},\n });\n }\n\n return steps;\n },\n },\n {\n guideBlockName: 'sparql-search-method',\n getSteps: (options, services) => {\n options.mainAction = 'sparql-search-method';\n\n const shouldToggleOff = options.disable;\n\n let configurationOption;\n if (options.ontologyGraph) {\n configurationOption = CONFIGURATION_OPTION_ONTOLOGY_GRAPH;\n } else if (options.sparqlQuery) {\n configurationOption = CONFIGURATION_OPTION_SPARQL_QUERY;\n }\n\n if (shouldToggleOff) {\n return [{\n guideBlockName: 'ttyg-sparql-method-disable', options: {...options},\n }];\n }\n\n const steps = [\n {\n guideBlockName: 'ttyg-enabling-sparql-info-message', options: {...options},\n },\n {\n guideBlockName: 'ttyg-sparql-method-enable', options: {...options},\n },\n ];\n\n if (configurationOption === CONFIGURATION_OPTION_ONTOLOGY_GRAPH) {\n steps.push({\n guideBlockName: 'sparql-search-method-enable-ontology-graph',\n options: {...options},\n });\n } else if (configurationOption === CONFIGURATION_OPTION_SPARQL_QUERY) {\n steps.push({\n guideBlockName: 'sparql-search-method-enable-sparql-query',\n options: {...options},\n });\n }\n\n return steps;\n },\n },\n]);\n"],"names":["CONFIGURATION_OPTION_ONTOLOGY_GRAPH","CONFIGURATION_OPTION_SPARQL_QUERY","TTYG_SPARQL_SEARCH_METHOD_DEFAULT_TITLE","PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","toggleSelector","getGuideElementSelector","content","mainAction","title","class","url","elementSelector","clickableElementSelector","onNextValidate","Promise","resolve","isChecked","showOn","validateTextInput","ontologyGraph","angular","extend","text","sparqlQuery","namespacesCheckbox","steps","addMissingNamespaces","push","shouldToggleOff","disable","configurationOption"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=9062;export const __webpack_ids__=[9062];export const __webpack_modules__={9062:(t,e,n)=>{n.r(e),n.d(e,{default:()=>a});const a='<link href="css/ttyg/agent-list.css?v=3.2.0-TR2" rel="stylesheet"/> <div class="agent-list-component"> <div class="agents-filter-dropdown btn-group" uib-dropdown> <button type="button" uib-dropdown-toggle class="btn btn-outline-primary dropdown-toggle"> <i class="fa-kit fa-gdb-repo-graphdb mr-1"></i> <span class="selected-filter">{{selectedAgentsFilter.label}}</span> <i class="fa fa-filter" gdb-tooltip="{{\'ttyg.agent.btn.filter.tooltip\' | translate}}"></i> </button> <ul class="dropdown-menu" role="menu"> <li ng-repeat="filterModel in agentListFilterModel"> <button type="button" class="dropdown-item" ng-click="onAgentsFilterChange(filterModel)" data-value="{{filterModel.label}}"> {{filterModel.label}} </button> </li> </ul> </div> <div class="agent-list"> <div ng-if="!agentList.agents.length" class="alert alert-warning"> {{\'ttyg.agent.messages.no_agents\' | translate}} </div> <div ng-repeat="agent in agentList.filterableAgents"> <div ng-if="!deletingAgent || deletingAgent.agentId !== agent.id" class="agent-item" ng-class="{\'selected\': agent.id === selectedAgent.id}"> <div class="agent-info" ng-attr-gdb-tooltip="{{!agent.isCompatible ? (\'ttyg.agent.incompatible_agent\' | translate) : undefined}}"> <div class="agent-name" ng-class="{\'incompatible-agent\': !agent.isCompatible}"> <i ng-if="!agent.isCompatible" class="fa fa-triangle-exclamation text-warning"> </i> {{agent.name}} </div> <div class="btn-group"> <button class="btn btn-link secondary btn-sm open-agent-actions-btn" data-toggle="dropdown" aria-expanded="false" ng-if="true" ng-click="openAgentActionMenu()" ng-disabled="false"> <i class="fa fa-ellipsis"></i> </button> <div class="dropdown-menu dropdown-menu-right agent-actions-menu"> <button ng-if="agent.isCompatible" class="dropdown-item edit-agent-btn" type="button" ng-click="onEditAgent(agent)"> <i class="fa fa-gear"></i> <span>{{\'ttyg.agent.btn.edit_agent.label\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item ext-integration-agent-btn" type="button" ng-click="onExternalIntegration(agent)"> <i class="fa-regular fa-plug-circle-plus"></i> <span>{{\'ttyg.agent.btn.external_integration\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item clone-agent-btn" type="button" ng-click="onCloneAgent(agent)"> <i class="fa fa-clone"></i> <span>{{\'ttyg.agent.btn.clone_agent.label\' | translate}}</span> </button> <div ng-if="agent.isCompatible" class="dropdown-divider"></div> <button class="dropdown-item delete-agent-btn" type="button" ng-click="onDeleteAgent(agent)"> <i class="fa fa-trash-can"></i> <span>{{\'ttyg.agent.btn.delete_agent.label\' | translate}}</span> </button> </div> </div> </div> <div class="repository-model-group"> <div class="related-repository"> <i ng-if="!agent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="agent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> {{agent.repositoryId}} </div> <div class="model-name">{{agent.model}}</div> </div> </div> <div class="deleting-agent-loader" ng-if="deletingAgent.agentId === agent.id && deletingAgent.inProgress" onto-loader-fancy message="{{\'ttyg.agent.deleting_agent\' | translate}}" size="25"></div> </div> </div> </div> '}};
2
- //# sourceMappingURL=9062.3541de664710a36fdac7.bundle.js.map
1
+ export const __webpack_id__=9062;export const __webpack_ids__=[9062];export const __webpack_modules__={9062:(t,e,n)=>{n.r(e),n.d(e,{default:()=>a});const a='<link href="css/ttyg/agent-list.css?v=3.2.0-TR3" rel="stylesheet"/> <div class="agent-list-component"> <div class="agents-filter-dropdown btn-group" uib-dropdown> <button type="button" uib-dropdown-toggle class="btn btn-outline-primary dropdown-toggle"> <i class="fa-kit fa-gdb-repo-graphdb mr-1"></i> <span class="selected-filter">{{selectedAgentsFilter.label}}</span> <i class="fa fa-filter" gdb-tooltip="{{\'ttyg.agent.btn.filter.tooltip\' | translate}}"></i> </button> <ul class="dropdown-menu" role="menu"> <li ng-repeat="filterModel in agentListFilterModel"> <button type="button" class="dropdown-item" ng-click="onAgentsFilterChange(filterModel)" data-value="{{filterModel.label}}"> {{filterModel.label}} </button> </li> </ul> </div> <div class="agent-list"> <div ng-if="!agentList.agents.length" class="alert alert-warning"> {{\'ttyg.agent.messages.no_agents\' | translate}} </div> <div ng-repeat="agent in agentList.filterableAgents"> <div ng-if="!deletingAgent || deletingAgent.agentId !== agent.id" class="agent-item" ng-class="{\'selected\': agent.id === selectedAgent.id}"> <div class="agent-info" ng-attr-gdb-tooltip="{{!agent.isCompatible ? (\'ttyg.agent.incompatible_agent\' | translate) : undefined}}"> <div class="agent-name" ng-class="{\'incompatible-agent\': !agent.isCompatible}"> <i ng-if="!agent.isCompatible" class="fa fa-triangle-exclamation text-warning"> </i> {{agent.name}} </div> <div class="btn-group"> <button class="btn btn-link secondary btn-sm open-agent-actions-btn" data-toggle="dropdown" aria-expanded="false" ng-if="true" ng-click="openAgentActionMenu()" ng-disabled="false"> <i class="fa fa-ellipsis"></i> </button> <div class="dropdown-menu dropdown-menu-right agent-actions-menu"> <button ng-if="agent.isCompatible" class="dropdown-item edit-agent-btn" type="button" ng-click="onEditAgent(agent)"> <i class="fa fa-gear"></i> <span>{{\'ttyg.agent.btn.edit_agent.label\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item ext-integration-agent-btn" type="button" ng-click="onExternalIntegration(agent)"> <i class="fa-regular fa-plug-circle-plus"></i> <span>{{\'ttyg.agent.btn.external_integration\' | translate}}</span> </button> <button ng-if="agent.isCompatible" class="dropdown-item clone-agent-btn" type="button" ng-click="onCloneAgent(agent)"> <i class="fa fa-clone"></i> <span>{{\'ttyg.agent.btn.clone_agent.label\' | translate}}</span> </button> <div ng-if="agent.isCompatible" class="dropdown-divider"></div> <button class="dropdown-item delete-agent-btn" type="button" ng-click="onDeleteAgent(agent)"> <i class="fa fa-trash-can"></i> <span>{{\'ttyg.agent.btn.delete_agent.label\' | translate}}</span> </button> </div> </div> </div> <div class="repository-model-group"> <div class="related-repository"> <i ng-if="!agent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="agent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> {{agent.repositoryId}} </div> <div class="model-name">{{agent.model}}</div> </div> </div> <div class="deleting-agent-loader" ng-if="deletingAgent.agentId === agent.id && deletingAgent.inProgress" onto-loader-fancy message="{{\'ttyg.agent.deleting_agent\' | translate}}" size="25"></div> </div> </div> </div> '}};
2
+ //# sourceMappingURL=9062.9bb14aa1e3d51036c7fe.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"9062.3541de664710a36fdac7.bundle.js","mappings":"oJAGA,QAFW,+xG","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/templates/agent-list.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/ttyg/agent-list.css?v=3.2.0-TR2\" rel=\"stylesheet\"/> <div class=\"agent-list-component\"> <div class=\"agents-filter-dropdown btn-group\" uib-dropdown> <button type=\"button\" uib-dropdown-toggle class=\"btn btn-outline-primary dropdown-toggle\"> <i class=\"fa-kit fa-gdb-repo-graphdb mr-1\"></i> <span class=\"selected-filter\">{{selectedAgentsFilter.label}}</span> <i class=\"fa fa-filter\" gdb-tooltip=\"{{'ttyg.agent.btn.filter.tooltip' | translate}}\"></i> </button> <ul class=\"dropdown-menu\" role=\"menu\"> <li ng-repeat=\"filterModel in agentListFilterModel\"> <button type=\"button\" class=\"dropdown-item\" ng-click=\"onAgentsFilterChange(filterModel)\" data-value=\"{{filterModel.label}}\"> {{filterModel.label}} </button> </li> </ul> </div> <div class=\"agent-list\"> <div ng-if=\"!agentList.agents.length\" class=\"alert alert-warning\"> {{'ttyg.agent.messages.no_agents' | translate}} </div> <div ng-repeat=\"agent in agentList.filterableAgents\"> <div ng-if=\"!deletingAgent || deletingAgent.agentId !== agent.id\" class=\"agent-item\" ng-class=\"{'selected': agent.id === selectedAgent.id}\"> <div class=\"agent-info\" ng-attr-gdb-tooltip=\"{{!agent.isCompatible ? ('ttyg.agent.incompatible_agent' | translate) : undefined}}\"> <div class=\"agent-name\" ng-class=\"{'incompatible-agent': !agent.isCompatible}\"> <i ng-if=\"!agent.isCompatible\" class=\"fa fa-triangle-exclamation text-warning\"> </i> {{agent.name}} </div> <div class=\"btn-group\"> <button class=\"btn btn-link secondary btn-sm open-agent-actions-btn\" data-toggle=\"dropdown\" aria-expanded=\"false\" ng-if=\"true\" ng-click=\"openAgentActionMenu()\" ng-disabled=\"false\"> <i class=\"fa fa-ellipsis\"></i> </button> <div class=\"dropdown-menu dropdown-menu-right agent-actions-menu\"> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item edit-agent-btn\" type=\"button\" ng-click=\"onEditAgent(agent)\"> <i class=\"fa fa-gear\"></i> <span>{{'ttyg.agent.btn.edit_agent.label' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item ext-integration-agent-btn\" type=\"button\" ng-click=\"onExternalIntegration(agent)\"> <i class=\"fa-regular fa-plug-circle-plus\"></i> <span>{{'ttyg.agent.btn.external_integration' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item clone-agent-btn\" type=\"button\" ng-click=\"onCloneAgent(agent)\"> <i class=\"fa fa-clone\"></i> <span>{{'ttyg.agent.btn.clone_agent.label' | translate}}</span> </button> <div ng-if=\"agent.isCompatible\" class=\"dropdown-divider\"></div> <button class=\"dropdown-item delete-agent-btn\" type=\"button\" ng-click=\"onDeleteAgent(agent)\"> <i class=\"fa fa-trash-can\"></i> <span>{{'ttyg.agent.btn.delete_agent.label' | translate}}</span> </button> </div> </div> </div> <div class=\"repository-model-group\"> <div class=\"related-repository\"> <i ng-if=\"!agent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"agent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> {{agent.repositoryId}} </div> <div class=\"model-name\">{{agent.model}}</div> </div> </div> <div class=\"deleting-agent-loader\" ng-if=\"deletingAgent.agentId === agent.id && deletingAgent.inProgress\" onto-loader-fancy message=\"{{'ttyg.agent.deleting_agent' | translate}}\" size=\"25\"></div> </div> </div> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"9062.9bb14aa1e3d51036c7fe.bundle.js","mappings":"oJAGA,QAFW,+xG","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/templates/agent-list.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/ttyg/agent-list.css?v=3.2.0-TR3\" rel=\"stylesheet\"/> <div class=\"agent-list-component\"> <div class=\"agents-filter-dropdown btn-group\" uib-dropdown> <button type=\"button\" uib-dropdown-toggle class=\"btn btn-outline-primary dropdown-toggle\"> <i class=\"fa-kit fa-gdb-repo-graphdb mr-1\"></i> <span class=\"selected-filter\">{{selectedAgentsFilter.label}}</span> <i class=\"fa fa-filter\" gdb-tooltip=\"{{'ttyg.agent.btn.filter.tooltip' | translate}}\"></i> </button> <ul class=\"dropdown-menu\" role=\"menu\"> <li ng-repeat=\"filterModel in agentListFilterModel\"> <button type=\"button\" class=\"dropdown-item\" ng-click=\"onAgentsFilterChange(filterModel)\" data-value=\"{{filterModel.label}}\"> {{filterModel.label}} </button> </li> </ul> </div> <div class=\"agent-list\"> <div ng-if=\"!agentList.agents.length\" class=\"alert alert-warning\"> {{'ttyg.agent.messages.no_agents' | translate}} </div> <div ng-repeat=\"agent in agentList.filterableAgents\"> <div ng-if=\"!deletingAgent || deletingAgent.agentId !== agent.id\" class=\"agent-item\" ng-class=\"{'selected': agent.id === selectedAgent.id}\"> <div class=\"agent-info\" ng-attr-gdb-tooltip=\"{{!agent.isCompatible ? ('ttyg.agent.incompatible_agent' | translate) : undefined}}\"> <div class=\"agent-name\" ng-class=\"{'incompatible-agent': !agent.isCompatible}\"> <i ng-if=\"!agent.isCompatible\" class=\"fa fa-triangle-exclamation text-warning\"> </i> {{agent.name}} </div> <div class=\"btn-group\"> <button class=\"btn btn-link secondary btn-sm open-agent-actions-btn\" data-toggle=\"dropdown\" aria-expanded=\"false\" ng-if=\"true\" ng-click=\"openAgentActionMenu()\" ng-disabled=\"false\"> <i class=\"fa fa-ellipsis\"></i> </button> <div class=\"dropdown-menu dropdown-menu-right agent-actions-menu\"> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item edit-agent-btn\" type=\"button\" ng-click=\"onEditAgent(agent)\"> <i class=\"fa fa-gear\"></i> <span>{{'ttyg.agent.btn.edit_agent.label' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item ext-integration-agent-btn\" type=\"button\" ng-click=\"onExternalIntegration(agent)\"> <i class=\"fa-regular fa-plug-circle-plus\"></i> <span>{{'ttyg.agent.btn.external_integration' | translate}}</span> </button> <button ng-if=\"agent.isCompatible\" class=\"dropdown-item clone-agent-btn\" type=\"button\" ng-click=\"onCloneAgent(agent)\"> <i class=\"fa fa-clone\"></i> <span>{{'ttyg.agent.btn.clone_agent.label' | translate}}</span> </button> <div ng-if=\"agent.isCompatible\" class=\"dropdown-divider\"></div> <button class=\"dropdown-item delete-agent-btn\" type=\"button\" ng-click=\"onDeleteAgent(agent)\"> <i class=\"fa fa-trash-can\"></i> <span>{{'ttyg.agent.btn.delete_agent.label' | translate}}</span> </button> </div> </div> </div> <div class=\"repository-model-group\"> <div class=\"related-repository\"> <i ng-if=\"!agent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"agent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> {{agent.repositoryId}} </div> <div class=\"model-name\">{{agent.model}}</div> </div> </div> <div class=\"deleting-agent-loader\" ng-if=\"deletingAgent.agentId === agent.id && deletingAgent.inProgress\" onto-loader-fancy message=\"{{'ttyg.agent.deleting_agent' | translate}}\" size=\"25\"></div> </div> </div> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_id__=96089;export const __webpack_ids__=[96089];export const __webpack_modules__={96089:(e,t,n)=>{n.r(t);var o=n(73964);angular.module("graphdb.framework.rest.ttyg.service",[]).factory("TTYGRestService",c),c.$inject=["$http"];const s="rest/chat/conversations",a="rest/chat/agents",r=`${s}/explain`,i="rest/chat/chats",g=!1;function c(e){const t=new o.TtygRestServiceFakeBackend;return{createChat:n=>g?t.createChat():e.post(i,n),getConversation:n=>g?t.getConversation(n):e.get(`${s}/${n}`),renameConversation:(n,o)=>g?t.renameConversation(n,o):e.put(`${s}/${n}`,o),exportConversation:n=>g?t.exportConversation(n):e.get(`${s}/export/${n}`,{responseType:"blob"}),askQuestion:n=>g?t.askQuestion(n):e.post(`${i}/question`,n),continueChatRun:n=>g?t.continueChatRun(n):e.post(`${s}/continue`,n),getConversations:()=>g?t.getConversations():e.get(s),deleteConversation:n=>g?t.deleteConversation(n):e.delete(`${s}/${n}`),createConversation:(n={})=>g?t.createConversation(n):e.post(s,n),cancelPendingQuestion:n=>g?t.cancelPendingQuestion(!1):e.post(`${i}/${n}/cancel`),getAgents:()=>g?t.getAgents():e.get(a),getAgent:n=>g?t.getAgent(n):e.get(`${a}/${n}`),createAgent:n=>g?t.createAgent(n):e.post(a,n),editAgent:n=>g?t.editAgent(n):e.put(`${a}`,n),deleteAgent:n=>g?t.deleteAgent(n):e.delete(`${a}/${n}`),explainResponse:(n={})=>g?t.explainResponse(n):e.post(r,n),getAgentDefaultValues:()=>g?t.getAgentDefaultValues():e.get(`${a}/default`),explainAgentSettings:n=>g?t.explainAgentSettings():e.post(`${a}/explain`,n)}}}};
2
+ //# sourceMappingURL=96089.4317e132ef8cc0033f83.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"96089.4317e132ef8cc0033f83.bundle.js","mappings":"+IAEAA,QACKC,OAAO,sCAAuC,IAC9CC,QAAQ,kBAAmBC,GAEhCA,EAAgBC,QAAU,CAAC,SAE3B,MAAMC,EAAyB,0BACzBC,EAAkB,mBAClBC,EAA4B,GAAGF,YAC/BG,EAAiB,kBAEjBC,GAAc,EAEpB,SAASN,EAAgBO,GACrB,MAAMC,EAAe,IAAIC,EAAAA,2BA8NzB,MAAO,CACHC,WAxNgBC,GACZL,EACOE,EAAaE,aAEjBH,EAAMK,KAAKP,EAAgBM,GAqNlCE,gBAtMqBC,GACjBR,EACOE,EAAaK,gBAAgBC,GAEjCP,EAAMQ,IAAI,GAAGb,KAA0BY,KAmM9CE,mBAvLuBA,CAACF,EAAIH,IACxBL,EACOE,EAAaQ,mBAAmBF,EAAIH,GAExCJ,EAAMU,IAAI,GAAGf,KAA0BY,IAAMH,GAoLpDO,mBA5KwBJ,GACpBR,EACOE,EAAaU,mBAAmBJ,GAEpCP,EAAMQ,IAAI,GAAGb,YAAiCY,IAAM,CAACK,aAAc,SAyK1EC,YAjKiBT,GACbL,EACOE,EAAaY,YAAYT,GAE7BJ,EAAMK,KAAK,GAAGP,aAA2BM,GA8JhDU,gBAtJqBV,GACjBL,EACOE,EAAaa,gBAAgBV,GAEjCJ,EAAMK,KAAK,GAAGV,aAAmCS,GAmJxDW,iBAvNqBA,IACjBhB,EACOE,EAAac,mBAEjBf,EAAMQ,IAAIb,GAoNjBqB,mBA5IwBT,GACpBR,EACOE,EAAae,mBAAmBT,GAEpCP,EAAMiB,OAAO,GAAGtB,KAA0BY,KAyIjDW,mBAjIuBA,CAACd,EAAO,CAAC,IAC5BL,EACOE,EAAaiB,mBAAmBd,GAEpCJ,EAAMK,KAAKV,EAAwBS,GA8H1Ce,sBApH2BC,GACvBrB,EACOE,EAAakB,uBAAsB,GAEvCnB,EAAMK,KAAK,GAAGP,KAAkBsB,YAiHvCC,UA1GcA,IACVtB,EAEOE,EAAaoB,YAKjBrB,EAAMQ,IAAIZ,GAmGjB0B,SA3Fcf,GACVR,EACOE,EAAaqB,SAASf,GAE1BP,EAAMQ,IAAI,GAAGZ,KAAmBW,KAwFvCgB,YAhFiBC,GACbzB,EACOE,EAAasB,YAAYC,GAE7BxB,EAAMK,KAAKT,EAAiB4B,GA6EnCC,UArEeD,GACXzB,EACOE,EAAawB,UAAUD,GAE3BxB,EAAMU,IAAI,GAAGd,IAAmB4B,GAkEvCE,YA1DiBnB,GACbR,EACOE,EAAayB,YAAYnB,GAE7BP,EAAMiB,OAAO,GAAGrB,KAAmBW,KAuD1CoB,gBA/CoBA,CAACvB,EAAO,CAAC,IACzBL,EACOE,EAAa0B,gBAAgBvB,GAEjCJ,EAAMK,KAAKR,EAA2BO,GA4C7CwB,sBArC0BA,IACtB7B,EACOE,EAAa2B,wBAEjB5B,EAAMQ,IAAI,GAAGZ,aAkCpBiC,qBA1B0BzB,GACtBL,EACOE,EAAa4B,uBAEjB7B,EAAMK,KAAK,GAAGT,YAA2BQ,GAwBxD,C","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/ttyg.rest.service.js"],"sourcesContent":["import {TtygRestServiceFakeBackend} from './ttyg.rest.service.fake.backend';\n\nangular\n .module('graphdb.framework.rest.ttyg.service', [])\n .factory('TTYGRestService', TTYGRestService);\n\nTTYGRestService.$inject = ['$http'];\n\nconst CONVERSATIONS_ENDPOINT = 'rest/chat/conversations';\nconst AGENTS_ENDPOINT = 'rest/chat/agents';\nconst EXPLAIN_RESPONSE_ENDPOINT = `${CONVERSATIONS_ENDPOINT}/explain`;\nconst CHATS_ENDPOINT = 'rest/chat/chats';\n\nconst DEVELOPMENT = false;\n\nfunction TTYGRestService($http) {\n const _fakeBackend = new TtygRestServiceFakeBackend();\n\n /**\n * Creates a new chat.\n * @param {*} data the payload\n * @returns {Promise<string>} A promise that resolves with the newly created chat ID.\n */\n const createChat = (data) => {\n if (DEVELOPMENT) {\n return _fakeBackend.createChat();\n }\n return $http.post(CHATS_ENDPOINT, data);\n };\n\n const getConversations = () => {\n if (DEVELOPMENT) {\n return _fakeBackend.getConversations();\n }\n return $http.get(CONVERSATIONS_ENDPOINT);\n };\n\n /**\n * Loads a conversation by its ID.\n * @param {string} id\n * @return {Promise<*>}\n */\n const getConversation = (id) => {\n if (DEVELOPMENT) {\n return _fakeBackend.getConversation(id);\n }\n return $http.get(`${CONVERSATIONS_ENDPOINT}/${id}`);\n };\n\n /**\n * Calls the REST API to rename the conversation.\n *\n * Bear in mind that the backend doesn't return the whole conversation object, but only the name and the ID.\n *\n * @param {string} id - the conversation ID\n * @param {{name: string}} data - request payload containing the new name\n * @return {Promise<{name: string, id: string}>}\n */\n const renameConversation = (id, data) => {\n if (DEVELOPMENT) {\n return _fakeBackend.renameConversation(id, data);\n }\n return $http.put(`${CONVERSATIONS_ENDPOINT}/${id}`, data);\n };\n\n /**\n * Exports a conversation by its ID.\n * @param {string} id\n * @return {Promise<{Blob}>} Returns the conversation as a Blob\n */\n const exportConversation = (id) => {\n if (DEVELOPMENT) {\n return _fakeBackend.exportConversation(id);\n }\n return $http.get(`${CONVERSATIONS_ENDPOINT}/export/${id}`, {responseType: 'blob'});\n };\n\n /**\n * Calls the REST API to ask a question.\n * @param {*} data the payload\n * @return {*}\n */\n const askQuestion = (data) => {\n if (DEVELOPMENT) {\n return _fakeBackend.askQuestion(data);\n }\n return $http.post(`${CHATS_ENDPOINT}/question`, data);\n };\n\n /**\n * Calls the REST API to continue a chat run.\n * @param {*} data\n * @return {*}\n */\n const continueChatRun = (data) => {\n if (DEVELOPMENT) {\n return _fakeBackend.continueChatRun(data);\n }\n return $http.post(`${CONVERSATIONS_ENDPOINT}/continue`, data);\n };\n\n /**\n * Deletes a conversation by its ID.\n * @param {string} id\n * @return {Promise<void>}\n */\n const deleteConversation = (id) => {\n if (DEVELOPMENT) {\n return _fakeBackend.deleteConversation(id);\n }\n return $http.delete(`${CONVERSATIONS_ENDPOINT}/${id}`);\n };\n\n /**\n * Creates a new conversation.\n * @param {*} data - the data to be sent to the backend\n * @return {Promise<*>}\n */\n const createConversation = (data = {}) => {\n if (DEVELOPMENT) {\n return _fakeBackend.createConversation(data);\n }\n return $http.post(CONVERSATIONS_ENDPOINT, data);\n };\n\n /**\n * Cancels a pending question within a chat.\n *\n * @param {string|number} chatId - The unique identifier of the chat containing the pending question to be canceled.\n * @returns {Promise} A promise that resolves when the pending question has been successfully canceled,\n * or rejects with an error.\n */\n const cancelPendingQuestion = (chatId) => {\n if (DEVELOPMENT) {\n return _fakeBackend.cancelPendingQuestion(false);\n }\n return $http.post(`${CHATS_ENDPOINT}/${chatId}/cancel`);\n };\n\n /**\n * Fetches agents from the backend.\n * @return {Promise<*>|*}\n */\n const getAgents = () => {\n if (DEVELOPMENT) {\n // return _fakeBackend.simulateHttpError();\n return _fakeBackend.getAgents();\n // return new Promise((resolve) => {\n // setTimeout(() => resolve(_fakeBackend.getAgents()), 3000);\n // });\n }\n return $http.get(AGENTS_ENDPOINT);\n };\n\n /**\n * Fetches an agent by its ID from the backend.\n * @param {string} id\n * @return {Promise<Awaited<{data: T}>>|*}\n */\n const getAgent = (id) => {\n if (DEVELOPMENT) {\n return _fakeBackend.getAgent(id);\n }\n return $http.get(`${AGENTS_ENDPOINT}/${id}`);\n };\n\n /**\n * Creates a new agent in the backend.\n * @param {*} agent\n * @return {Promise<AgentModel>}\n */\n const createAgent = (agent) => {\n if (DEVELOPMENT) {\n return _fakeBackend.createAgent(agent);\n }\n return $http.post(AGENTS_ENDPOINT, agent);\n };\n\n /**\n * Updates the specified <code>agent</code>.\n * @param {AgentModel} agent - The agent to be updated.\n * @return {Promise<AgentModel>} A promise that resolves the updated agent.\n */\n const editAgent = (agent) => {\n if (DEVELOPMENT) {\n return _fakeBackend.editAgent(agent);\n }\n return $http.put(`${AGENTS_ENDPOINT}`, agent);\n };\n\n /**\n * Deletes an agent by its ID from the backend.\n * @param {string} id\n * @return {Promise<void>}\n */\n const deleteAgent = (id) => {\n if (DEVELOPMENT) {\n return _fakeBackend.deleteAgent(id);\n }\n return $http.delete(`${AGENTS_ENDPOINT}/${id}`);\n };\n\n /**\n * Calls backend server to fetch an explanation of how the answer was generated.\n * @param {*} data\n * @return {Promise}\n */\n const explainResponse = (data = {}) => {\n if (DEVELOPMENT) {\n return _fakeBackend.explainResponse(data);\n }\n return $http.post(EXPLAIN_RESPONSE_ENDPOINT, data);\n };\n\n /**\n * Calls the backend server to fetch the default values for an agent.\n * @return {Promise}\n */\n const getAgentDefaultValues = () => {\n if (DEVELOPMENT) {\n return _fakeBackend.getAgentDefaultValues();\n }\n return $http.get(`${AGENTS_ENDPOINT}/default`);\n };\n\n /**\n * Calls the backend server to fetch an explanation of how the agent settings were generated.\n * @param {*} data\n * @return {Promise}\n */\n const explainAgentSettings = (data) => {\n if (DEVELOPMENT) {\n return _fakeBackend.explainAgentSettings();\n }\n return $http.post(`${AGENTS_ENDPOINT}/explain`, data);\n };\n\n\n return {\n createChat,\n getConversation,\n renameConversation,\n exportConversation,\n askQuestion,\n continueChatRun,\n getConversations,\n deleteConversation,\n createConversation,\n cancelPendingQuestion,\n getAgents,\n getAgent,\n createAgent,\n editAgent,\n deleteAgent,\n explainResponse,\n getAgentDefaultValues,\n explainAgentSettings,\n };\n}\n"],"names":["angular","module","factory","TTYGRestService","$inject","CONVERSATIONS_ENDPOINT","AGENTS_ENDPOINT","EXPLAIN_RESPONSE_ENDPOINT","CHATS_ENDPOINT","DEVELOPMENT","$http","_fakeBackend","TtygRestServiceFakeBackend","createChat","data","post","getConversation","id","get","renameConversation","put","exportConversation","responseType","askQuestion","continueChatRun","getConversations","deleteConversation","delete","createConversation","cancelPendingQuestion","chatId","getAgents","getAgent","createAgent","agent","editAgent","deleteAgent","explainResponse","getAgentDefaultValues","explainAgentSettings"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=99448;export const __webpack_ids__=[99448];export const __webpack_modules__={64088:(e,t,n)=>{n.d(t,{A:()=>r});var a=a||{};a.SingleChild={addPlaceholders:function e(t,n){if(t.children){for(var a=0;a<t.children.length;a++)e(t.children[a]);if(1===t.children.length){var r=1.2*t.size;n&&(r=.1*t.children[0].size),t.children.push({name:"placeholder",size:r})}}},removePlaceholders:function e(t){for(var n=t.length-1;n>=0;n--){var a=t[n];"placeholder"===a.data.name?t.splice(n,1):a.children&&e(a.children)}},centerNodes:function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.children&&1===n.children.length){var a=n.x-n.children[0].x;n.children[0].x+=a,r(n.children[0],a)}}function r(e,t){if(e.children)for(var n=0;n<e.children.length;n++)e.children[n].x+=t,r(e.children[n],t)}},makePositionsRelativeToZero:function(e){for(var t=e[0].x,n=e[0].y,a=0;a<e.length;a++){var r=e[a];r.x-=t,r.y-=n}}};const r=a},88141:(e,t,n)=>{n.d(t,{A:()=>i}),n(62979);const a={selectAll:n(93462).selectAll};var r=r||{};r.Export={getCSSRules:function(e){const t=$('link[href="'+e+'"]')[0].sheet.rules;let n="";return _.each(t,function(e){n+=e.cssText}),n},generateBase64ImageSource:function(e){e||(e="svg");const t=a.selectAll(e).attr("version","1.1").attr("xmlns","http://www.w3.org/2000/svg").node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(t)))}};const i=r},99448:(e,t,n)=>{n.r(t);var a=n(75468),r=n(64088),i=n(19935),s=n(93462),c=n(88141);function l(e,t,n,l,o,d,h,u,f,p,g,v,x){return{restrict:"AE",template:'<div id="classChart"></div>',scope:{classHierarchyData:"=",flattenedClassNames:"=",selectedClass:"=",currentSliderValue:"=",showClassInfoPanel:"=",showExternalElements:"=",hidePrefixes:"=",currentBrowserLimit:"="},link:function(h,m,y){!function(h){let m=!1;var y,A,S=s.pack().size([780,780]),C=s.scaleLinear().domain([0,4]).range(["hsl(19, 70%, 90%)","hsl(19, 70%, 50%)"]).interpolate(s.interpolateHcl),R=s.select("#classChart").insert("svg:svg","h2").attr("viewBox","0 0 800 800").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null);function E(){return R.append("svg:g").attrs({id:"main-group",transform:"translate(400,400)"})}function P(){return"true"===g.get(v.CLASS_HIERARCHY_HIDE_PREFIXES)}function w(){var e=c.A.Export.getCSSRules("css/rdf-class-hierarchy-labels.css?v=3.2.0-TR2");s.selectAll("#main-group").append("defs"),$("defs").append('<style type="text/css"><![CDATA['+e+"]]></style>"),s.selectAll("g").style("opacity",1);var t=c.A.Export.generateBase64ImageSource("#classChart svg");s.select(this).attrs({href:t,download:"class-hierarchy-"+d.getActiveRepository()+".svg"})}h.hidePrefixes=P();var H,I,T=E();if(!h.classHierarchyData.classCount&&d.getActiveRepository()&&!d.isSystemRepository()){e.loader=!0,e.hierarchyError=!1;const t=g.get(`classHierarchy-selectedGraph-${d.getActiveRepository()}`);n.getClassHierarchyData(null!==t?t.contextID.uri:"").success(function(t,n,a){e.loader=!1,207===n&&u.warning(x.instant("graphexplore.update.diagram"),x.instant("graphexplore.repository.data.changed")),h.classHierarchyData=t,s.select("#download-svg").on("mouseover",w)}).error(function(t){e.loader=!1,e.hierarchyError=getError(t),u.error(x.instant("graphexplore.error.request.failed",{name:p,error:getError(t)}))})}var L,D,k,N,b,F,z,O={};function U(n,c,d,u){D&&D(),k&&k(),s.selectAll("#main-group").remove(),T=E(),r.A.SingleChild.addPlaceholders(n,!0),(A=s.hierarchy(n)).sum(function(e){return e.size}),L=d||A,S(A);var g,v=A.descendants();L.isInFocusTransitive=!0,r.A.SingleChild.removePlaceholders(v),r.A.SingleChild.centerNodes(v),r.A.SingleChild.makePositionsRelativeToZero(v),y||(y=(0,a.A)().attr("class","d3-tip").customPosition(function(e,t){return{top:"inherit",bottom:l.innerHeight-t.clientY+"px",right:l.innerWidth-t.clientX+"px"}}).html(function(e){return e.data.name}),R.call(y));var x=T.selectAll("circle").data(v).enter().append("g");c.doFade&&x.each(function(e){i.A.Transition.fadeIn(s.select(this),550)});var P,w=[],N=x.append("circle").attr("class",function(e){return e.data.role}).attr("guide-selector",function(e){return"class-"+e.data.name}).style("fill",function(e){return e.children?C(e.depth):"#E0D0D0"}).each(function(e){if(e.circle=s.select(this),e.data.name!==p){var t=e.data.name;w.push({name:t}),O[[t]]=e,e.circle.classed("rdf-class",!0),e.circle.on("mouseover",function(t){c.noPrefixes||e.textHidden?y.show(e,t):y.hide(e)}),e.circle.on("mouseout",y.hide)}}).on("gdb-focus",(e,t)=>I(t)).on("gdb-zoom",(e,t)=>Z(t));function b(e){s.selectAll(".selected").classed("selected",e.selected=!1),e.circle.classed("selected",e.selected=!0),P=e}function $(){h.showClassInfoPanel=!1}w&&(w=_.uniqBy(w,"name"),h.flattenedClassNames=w);var F=i.A.Click.delayDblClick();s.selectAll(".parent, .topLevelParent, .child, .root").call(F),I=function(e){Z(e),e.data.name===p?($(),s.selectAll(".selected").classed("selected",!1)):(b(e),m||(h.selectedClass=P,h.showClassInfoPanel=!0),h.$on("sidePanelClosed",function(t){s.selectAll(".selected").classed("selected",e.selected=!1)}))},F.on("click",function(e,t){t.data.id&&l.history.pushState({id:t.data.id},"classHierarchyPage"+t.data.id,"hierarchy#"+t.data.id),y.hide(),I(t)}),F.on("dblclick",function(t,a){a!==n&&(y.hide(),b(a),e.$broadcast("goToDomainRangeGraphView",P,L),t.stopPropagation())});var z=0;R.on("wheel",function(e){y.hide(),e.preventDefault(),e.stopPropagation();var t=(new Date).getTime();if(t-z>100){z=t;var n="";e.deltaY<=-1?n="in":e.deltaY>=1&&(n="out");var a=e.target.__data__;if(a||(a=L),"in"===n){if(a!==L){for(;a.parent&&!a.parent.isInFocusTransitive;)a=a.parent;a.depth<L.depth&&(a=L)}if(a===L&&a.children){for(var r=a.children[0],i=1;i<a.children.length;i++)a.children[i].sortingRank>r.sortingRank&&(r=a.children[i]);r.children&&(a=r)}else a.children||(a=a.parent);Z(a,!0)}else"out"===n&&(a=L.parent)&&Z(a,!0);L.data.name===p&&l.history.replaceState({id:1},"classHierarchyPage1","hierarchy#1"),Y()}});var U=T.selectAll("text").data(v).enter().append("text").attr("class",function(e){return e.children&&e.children.length?"label":"label child-label"}).each(function(e){e.textSel=s.select(this)});c.noPrefixes?(U.each(function(e){var t=e.data.name.indexOf(":");e.data.name.indexOf("http://")>-1?e.noPrefixName=e.data.name:t>-1&&(e.noPrefixName=e.data.name.substring(t+1))}),U.style("font-size",function(e){return i.A.Text.calcFontSize(e.noPrefixName,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r/3)})):U.style("font-size",function(e){return i.A.Text.calcFontSize(e.data.name,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r/3)}),U.style("display",function(e){return e.parent&&e.parent.data===L.data?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,null):(e.textHidden=!0,"none")}),c.doFade&&!c.keepPrevState&&U.each(function(e){i.A.Transition.fadeIn(s.select(this),550)}),H=function(){function e(e){e&&N.each(function(t){+e===t.data.id&&I(t)})}var n=t.hash();l.onpopstate=function(t){t.state&&e(t.state.id)},e(n)};var B=T.selectAll("circle, text");function V(e,t){var n=800/e[2];g=e,B.attr("transform",function(t){return"translate("+(t.x-e[0])*n+","+(t.y-e[1])*n+")"}),N.attr("r",function(e){return e.r*n}),t&&U.each(function(e){e.data.fullName!==L.data.topLevelParentUri&&L.data.topLevelParentUri!==p||(e.textSel.style("display","none"),L.children&&L.children.length?_.each(L.children,function(e){e.textSel.style("display","inline")}):L.textSel.style("display","inline"),L.parent&&_.each(L.parent.children,function(e){e.data.name!==L.data.name&&e.textSel.style("display","inline")}))}),U.style("font-size",function(e){return c.noPrefixes?i.A.Text.calcFontSize(e.noPrefixName,e.r*n):i.A.Text.calcFontSize(e.data.name,e.r*n)}).text(function(e){return c.noPrefixes?i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r*n/3):i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r*n/3)})}function M(e){var t=2*e+20;return 2*e/t<.3&&(t=2*e+2),t}function W(e){!e.isInFocusTransitive&&e.parent&&e.parent.isInFocusTransitive?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,this.style.display=""):(e.textHidden=!0,this.style.display="none")}function Z(e,t){if(o(function(){h.showExternalElements=e.data.name===p}),L!==e&&(e.data.id&&l.history.replaceState({id:e.data.id},"classHierarchyPage"+e.data.id,"hierarchy#"+e.data.id),e.children||(e=e.parent,L!==e))){if(t&&($(),s.selectAll(".selected").classed("selected",!1)),L.parent)for(var n=L;n;)n.isInFocusTransitive=!1,n=n.parent;for(n=e;n;)n.isInFocusTransitive=!!n.children,n=n.parent;2*(L=e).r/(2*L.r+20)<.3||h.currentSliderValue>h.currentBrowserLimit?(V([L.x,L.y,M(L.r)]),U.each(function(e){W.call(this,e)})):s.transition().duration(f).tween("zoom",function(e){var t=s.interpolateZoom(g,[L.x,L.y,M(L.r)]);return function(e){V(t(e))}}).selectAll("text").each(W)}}V([L.x,L.y,M(L.r)],u),D=h.$on("rootFocus",function(){l.history.pushState({id:1},"classHierarchyPage1","hierarchy#1"),I(A)}),k=h.$on("classSearch",function(e){I(e)})}function Y(){const t=h.classHierarchyData.classCount;let n=g.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);(!n||n>t)&&(n=t,g.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,n)),e.$broadcast("classCount",t,n)}window.addEventListener("resize",Y),window.addEventListener("beforeunload",function e(){window.removeEventListener("resize",Y),window.removeEventListener("beforeunload",e)}),h.$watch("classHierarchyData",function(){N&&N(),b&&b(),F&&F(),z&&z();var e=P();if(h.classHierarchyData.classCount){Y();var t=_.cloneDeep(h.classHierarchyData);var n,a,r=s.hierarchy(t).descendants().sort(function(e,t){return e.data.sortingRank>t.data.sortingRank?-1:e.data.sortingRank<t.data.sortingRank||e.data.depth>t.data.depth?1:e.data.depth<t.data.depth?-1:0});function d(e,t){const r={keepPrevState:!0,noPrefixes:P()};a=r.noPrefixes,U(n||e,r,L,!0),o(()=>{g.set(v.CLASS_HIERARCHY_SWITCH_PREFIXES,t),H(),m=!1},70)}function u(e,r,i){if(!e)return;g.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,e),n={name:p,children:[]};const s=new Set;for(let t=1;t<=e;t++)s.add(r[t].data.id),r[t].parent===r[0]&&n.children.push(r[t].data);(function e(t){if(!t.children)return;const n=[];for(const e of t.children)s.has(e.id)&&n.push($.extend({},e));t.children=n;for(const n of t.children)e(n)})(n),i?(a=angular.isUndefined(a)?P():a,U(n,{noPrefixes:a})):d(t)}var i,c=g.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);if(c)u(c,r);else{var l={doFade:!0,keepPrevState:!0,noPrefixes:P()};U(t,l),H()}N=h.$watch("hidePrefixes",function(n){angular.isUndefined(n)||e?e=void 0:o(function(){m=!0,function(e){angular.isUndefined(e)||g.set(v.CLASS_HIERARCHY_HIDE_PREFIXES,e)}(n),d(t,!0)},50)},!0),b=h.$watch("currentSliderValue",function(e){u(e,r,!0)},!0),z=h.$on("onEnterKeypressSearchAction",function(e){i&&I(i)}),F=h.$on("searchedClass",function(e,t){(i=O[t.name])&&I(i)})}},!0)}(h)}}}n(32150),angular.module("graphdb.framework.graphexplore.directives.class",["graphdb.framework.graphexplore.controllers.class","graphdb.framework.utils.localstorageadapter"]).constant("ZOOM_DURATION",500).constant("ROOT_OBJ_NAME","RDF Class Hierarchy").directive("rdfClassHierarchy",l),l.$inject=["$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","$licenseService","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate"]}};
2
- //# sourceMappingURL=99448.384b74c734331e5f8909.bundle.js.map
1
+ export const __webpack_id__=99448;export const __webpack_ids__=[99448];export const __webpack_modules__={64088:(e,t,n)=>{n.d(t,{A:()=>r});var a=a||{};a.SingleChild={addPlaceholders:function e(t,n){if(t.children){for(var a=0;a<t.children.length;a++)e(t.children[a]);if(1===t.children.length){var r=1.2*t.size;n&&(r=.1*t.children[0].size),t.children.push({name:"placeholder",size:r})}}},removePlaceholders:function e(t){for(var n=t.length-1;n>=0;n--){var a=t[n];"placeholder"===a.data.name?t.splice(n,1):a.children&&e(a.children)}},centerNodes:function(e){for(var t=0;t<e.length;t++){var n=e[t];if(n.children&&1===n.children.length){var a=n.x-n.children[0].x;n.children[0].x+=a,r(n.children[0],a)}}function r(e,t){if(e.children)for(var n=0;n<e.children.length;n++)e.children[n].x+=t,r(e.children[n],t)}},makePositionsRelativeToZero:function(e){for(var t=e[0].x,n=e[0].y,a=0;a<e.length;a++){var r=e[a];r.x-=t,r.y-=n}}};const r=a},88141:(e,t,n)=>{n.d(t,{A:()=>i}),n(62979);const a={selectAll:n(93462).selectAll};var r=r||{};r.Export={getCSSRules:function(e){const t=$('link[href="'+e+'"]')[0].sheet.rules;let n="";return _.each(t,function(e){n+=e.cssText}),n},generateBase64ImageSource:function(e){e||(e="svg");const t=a.selectAll(e).attr("version","1.1").attr("xmlns","http://www.w3.org/2000/svg").node().parentNode.innerHTML;return"data:image/svg+xml;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(t)))}};const i=r},99448:(e,t,n)=>{n.r(t);var a=n(75468),r=n(64088),i=n(19935),s=n(93462),c=n(88141);function l(e,t,n,l,o,d,h,u,f,p,g,v,x){return{restrict:"AE",template:'<div id="classChart"></div>',scope:{classHierarchyData:"=",flattenedClassNames:"=",selectedClass:"=",currentSliderValue:"=",showClassInfoPanel:"=",showExternalElements:"=",hidePrefixes:"=",currentBrowserLimit:"="},link:function(h,m,y){!function(h){let m=!1;var y,A,S=s.pack().size([780,780]),C=s.scaleLinear().domain([0,4]).range(["hsl(19, 70%, 90%)","hsl(19, 70%, 50%)"]).interpolate(s.interpolateHcl),R=s.select("#classChart").insert("svg:svg","h2").attr("viewBox","0 0 800 800").attr("preserveAspectRatio","xMidYMid meet").on("dblclick.zoom",null);function E(){return R.append("svg:g").attrs({id:"main-group",transform:"translate(400,400)"})}function P(){return"true"===g.get(v.CLASS_HIERARCHY_HIDE_PREFIXES)}function w(){var e=c.A.Export.getCSSRules("css/rdf-class-hierarchy-labels.css?v=3.2.0-TR3");s.selectAll("#main-group").append("defs"),$("defs").append('<style type="text/css"><![CDATA['+e+"]]></style>"),s.selectAll("g").style("opacity",1);var t=c.A.Export.generateBase64ImageSource("#classChart svg");s.select(this).attrs({href:t,download:"class-hierarchy-"+d.getActiveRepository()+".svg"})}h.hidePrefixes=P();var H,I,T=E();if(!h.classHierarchyData.classCount&&d.getActiveRepository()&&!d.isSystemRepository()){e.loader=!0,e.hierarchyError=!1;const t=g.get(`classHierarchy-selectedGraph-${d.getActiveRepository()}`);n.getClassHierarchyData(null!==t?t.contextID.uri:"").success(function(t,n,a){e.loader=!1,207===n&&u.warning(x.instant("graphexplore.update.diagram"),x.instant("graphexplore.repository.data.changed")),h.classHierarchyData=t,s.select("#download-svg").on("mouseover",w)}).error(function(t){e.loader=!1,e.hierarchyError=getError(t),u.error(x.instant("graphexplore.error.request.failed",{name:p,error:getError(t)}))})}var L,D,k,N,b,F,z,O={};function U(n,c,d,u){D&&D(),k&&k(),s.selectAll("#main-group").remove(),T=E(),r.A.SingleChild.addPlaceholders(n,!0),(A=s.hierarchy(n)).sum(function(e){return e.size}),L=d||A,S(A);var g,v=A.descendants();L.isInFocusTransitive=!0,r.A.SingleChild.removePlaceholders(v),r.A.SingleChild.centerNodes(v),r.A.SingleChild.makePositionsRelativeToZero(v),y||(y=(0,a.A)().attr("class","d3-tip").customPosition(function(e,t){return{top:"inherit",bottom:l.innerHeight-t.clientY+"px",right:l.innerWidth-t.clientX+"px"}}).html(function(e){return e.data.name}),R.call(y));var x=T.selectAll("circle").data(v).enter().append("g");c.doFade&&x.each(function(e){i.A.Transition.fadeIn(s.select(this),550)});var P,w=[],N=x.append("circle").attr("class",function(e){return e.data.role}).attr("guide-selector",function(e){return"class-"+e.data.name}).style("fill",function(e){return e.children?C(e.depth):"#E0D0D0"}).each(function(e){if(e.circle=s.select(this),e.data.name!==p){var t=e.data.name;w.push({name:t}),O[[t]]=e,e.circle.classed("rdf-class",!0),e.circle.on("mouseover",function(t){c.noPrefixes||e.textHidden?y.show(e,t):y.hide(e)}),e.circle.on("mouseout",y.hide)}}).on("gdb-focus",(e,t)=>I(t)).on("gdb-zoom",(e,t)=>Z(t));function b(e){s.selectAll(".selected").classed("selected",e.selected=!1),e.circle.classed("selected",e.selected=!0),P=e}function $(){h.showClassInfoPanel=!1}w&&(w=_.uniqBy(w,"name"),h.flattenedClassNames=w);var F=i.A.Click.delayDblClick();s.selectAll(".parent, .topLevelParent, .child, .root").call(F),I=function(e){Z(e),e.data.name===p?($(),s.selectAll(".selected").classed("selected",!1)):(b(e),m||(h.selectedClass=P,h.showClassInfoPanel=!0),h.$on("sidePanelClosed",function(t){s.selectAll(".selected").classed("selected",e.selected=!1)}))},F.on("click",function(e,t){t.data.id&&l.history.pushState({id:t.data.id},"classHierarchyPage"+t.data.id,"hierarchy#"+t.data.id),y.hide(),I(t)}),F.on("dblclick",function(t,a){a!==n&&(y.hide(),b(a),e.$broadcast("goToDomainRangeGraphView",P,L),t.stopPropagation())});var z=0;R.on("wheel",function(e){y.hide(),e.preventDefault(),e.stopPropagation();var t=(new Date).getTime();if(t-z>100){z=t;var n="";e.deltaY<=-1?n="in":e.deltaY>=1&&(n="out");var a=e.target.__data__;if(a||(a=L),"in"===n){if(a!==L){for(;a.parent&&!a.parent.isInFocusTransitive;)a=a.parent;a.depth<L.depth&&(a=L)}if(a===L&&a.children){for(var r=a.children[0],i=1;i<a.children.length;i++)a.children[i].sortingRank>r.sortingRank&&(r=a.children[i]);r.children&&(a=r)}else a.children||(a=a.parent);Z(a,!0)}else"out"===n&&(a=L.parent)&&Z(a,!0);L.data.name===p&&l.history.replaceState({id:1},"classHierarchyPage1","hierarchy#1"),Y()}});var U=T.selectAll("text").data(v).enter().append("text").attr("class",function(e){return e.children&&e.children.length?"label":"label child-label"}).each(function(e){e.textSel=s.select(this)});c.noPrefixes?(U.each(function(e){var t=e.data.name.indexOf(":");e.data.name.indexOf("http://")>-1?e.noPrefixName=e.data.name:t>-1&&(e.noPrefixName=e.data.name.substring(t+1))}),U.style("font-size",function(e){return i.A.Text.calcFontSize(e.noPrefixName,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r/3)})):U.style("font-size",function(e){return i.A.Text.calcFontSize(e.data.name,e.r)}).text(function(e){return i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r/3)}),U.style("display",function(e){return e.parent&&e.parent.data===L.data?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,null):(e.textHidden=!0,"none")}),c.doFade&&!c.keepPrevState&&U.each(function(e){i.A.Transition.fadeIn(s.select(this),550)}),H=function(){function e(e){e&&N.each(function(t){+e===t.data.id&&I(t)})}var n=t.hash();l.onpopstate=function(t){t.state&&e(t.state.id)},e(n)};var B=T.selectAll("circle, text");function V(e,t){var n=800/e[2];g=e,B.attr("transform",function(t){return"translate("+(t.x-e[0])*n+","+(t.y-e[1])*n+")"}),N.attr("r",function(e){return e.r*n}),t&&U.each(function(e){e.data.fullName!==L.data.topLevelParentUri&&L.data.topLevelParentUri!==p||(e.textSel.style("display","none"),L.children&&L.children.length?_.each(L.children,function(e){e.textSel.style("display","inline")}):L.textSel.style("display","inline"),L.parent&&_.each(L.parent.children,function(e){e.data.name!==L.data.name&&e.textSel.style("display","inline")}))}),U.style("font-size",function(e){return c.noPrefixes?i.A.Text.calcFontSize(e.noPrefixName,e.r*n):i.A.Text.calcFontSize(e.data.name,e.r*n)}).text(function(e){return c.noPrefixes?i.A.Text.getTextWithElipsisIfNeeded(e.noPrefixName,e.r*n/3):i.A.Text.getTextWithElipsisIfNeeded(e.data.name,e.r*n/3)})}function M(e){var t=2*e+20;return 2*e/t<.3&&(t=2*e+2),t}function W(e){!e.isInFocusTransitive&&e.parent&&e.parent.isInFocusTransitive?(e.textHidden=this.textContent.indexOf("...")+3===this.textContent.length,this.style.display=""):(e.textHidden=!0,this.style.display="none")}function Z(e,t){if(o(function(){h.showExternalElements=e.data.name===p}),L!==e&&(e.data.id&&l.history.replaceState({id:e.data.id},"classHierarchyPage"+e.data.id,"hierarchy#"+e.data.id),e.children||(e=e.parent,L!==e))){if(t&&($(),s.selectAll(".selected").classed("selected",!1)),L.parent)for(var n=L;n;)n.isInFocusTransitive=!1,n=n.parent;for(n=e;n;)n.isInFocusTransitive=!!n.children,n=n.parent;2*(L=e).r/(2*L.r+20)<.3||h.currentSliderValue>h.currentBrowserLimit?(V([L.x,L.y,M(L.r)]),U.each(function(e){W.call(this,e)})):s.transition().duration(f).tween("zoom",function(e){var t=s.interpolateZoom(g,[L.x,L.y,M(L.r)]);return function(e){V(t(e))}}).selectAll("text").each(W)}}V([L.x,L.y,M(L.r)],u),D=h.$on("rootFocus",function(){l.history.pushState({id:1},"classHierarchyPage1","hierarchy#1"),I(A)}),k=h.$on("classSearch",function(e){I(e)})}function Y(){const t=h.classHierarchyData.classCount;let n=g.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);(!n||n>t)&&(n=t,g.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,n)),e.$broadcast("classCount",t,n)}window.addEventListener("resize",Y),window.addEventListener("beforeunload",function e(){window.removeEventListener("resize",Y),window.removeEventListener("beforeunload",e)}),h.$watch("classHierarchyData",function(){N&&N(),b&&b(),F&&F(),z&&z();var e=P();if(h.classHierarchyData.classCount){Y();var t=_.cloneDeep(h.classHierarchyData);var n,a,r=s.hierarchy(t).descendants().sort(function(e,t){return e.data.sortingRank>t.data.sortingRank?-1:e.data.sortingRank<t.data.sortingRank||e.data.depth>t.data.depth?1:e.data.depth<t.data.depth?-1:0});function d(e,t){const r={keepPrevState:!0,noPrefixes:P()};a=r.noPrefixes,U(n||e,r,L,!0),o(()=>{g.set(v.CLASS_HIERARCHY_SWITCH_PREFIXES,t),H(),m=!1},70)}function u(e,r,i){if(!e)return;g.set(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE,e),n={name:p,children:[]};const s=new Set;for(let t=1;t<=e;t++)s.add(r[t].data.id),r[t].parent===r[0]&&n.children.push(r[t].data);(function e(t){if(!t.children)return;const n=[];for(const e of t.children)s.has(e.id)&&n.push($.extend({},e));t.children=n;for(const n of t.children)e(n)})(n),i?(a=angular.isUndefined(a)?P():a,U(n,{noPrefixes:a})):d(t)}var i,c=g.get(v.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);if(c)u(c,r);else{var l={doFade:!0,keepPrevState:!0,noPrefixes:P()};U(t,l),H()}N=h.$watch("hidePrefixes",function(n){angular.isUndefined(n)||e?e=void 0:o(function(){m=!0,function(e){angular.isUndefined(e)||g.set(v.CLASS_HIERARCHY_HIDE_PREFIXES,e)}(n),d(t,!0)},50)},!0),b=h.$watch("currentSliderValue",function(e){u(e,r,!0)},!0),z=h.$on("onEnterKeypressSearchAction",function(e){i&&I(i)}),F=h.$on("searchedClass",function(e,t){(i=O[t.name])&&I(i)})}},!0)}(h)}}}n(32150),angular.module("graphdb.framework.graphexplore.directives.class",["graphdb.framework.graphexplore.controllers.class","graphdb.framework.utils.localstorageadapter"]).constant("ZOOM_DURATION",500).constant("ROOT_OBJ_NAME","RDF Class Hierarchy").directive("rdfClassHierarchy",l),l.$inject=["$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","$licenseService","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate"]}};
2
+ //# sourceMappingURL=99448.2ecdf14415bcd9299354.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"99448.384b74c734331e5f8909.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/lib/common/circle-packing.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/common/svg-export.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/rdf-class-hierarchy.directive.js"],"sourcesContent":["var CirclePacking = CirclePacking || {};\n\nCirclePacking.SingleChild = function () {\n /*\n Functions that enable single child circles to display properly, see\n http://stackoverflow.com/questions/22307486/d3-js-packed-circle-layout-how-to-adjust-child-radius\n */\n function addPlaceholders(node, first) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n addPlaceholders(child);\n }\n\n if (node.children.length === 1) {\n var placeholderSize = node.size * 1.2;\n if (first) {\n placeholderSize = node.children[0].size * 0.1;\n }\n node.children.push({\n name: 'placeholder', size: placeholderSize,\n // children: []\n });\n }\n }\n }\n\n function removePlaceholders(nodes) {\n for (var i = nodes.length - 1; i >= 0; i--) {\n var node = nodes[i];\n\n if (node.data.name === 'placeholder') {\n nodes.splice(i, 1);\n } else {\n if (node.children) {\n removePlaceholders(node.children);\n }\n }\n }\n }\n\n function centerNodes(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (node.children) {\n if (node.children.length === 1) {\n var offset = node.x - node.children[0].x;\n node.children[0].x += offset;\n reposition(node.children[0], offset);\n }\n }\n }\n\n function reposition(node, offset) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n node.children[i].x += offset;\n reposition(node.children[i], offset);\n }\n }\n }\n }\n\n function makePositionsRelativeToZero(nodes) {\n //use this to have vis centered at 0,0,0 (easier for positioning)\n var offsetX = nodes[0].x;\n var offsetY = nodes[0].y;\n\n for (var i = 0; i < nodes.length; i++) {\n\n var node = nodes[i];\n\n node.x -= offsetX;\n node.y -= offsetY;\n }\n }\n\n return {\n addPlaceholders: addPlaceholders,\n removePlaceholders: removePlaceholders,\n centerNodes: centerNodes,\n makePositionsRelativeToZero: makePositionsRelativeToZero\n }\n}();\n\nexport default CirclePacking;\n","import 'lib/d3.patch.js'\nimport {selectAll} from 'd3';\n\nconst d3 = {selectAll};\nvar SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n const cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n let cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource(svgSelectorClass) {\n if (!svgSelectorClass) {\n svgSelectorClass = \"svg\";\n }\n // add needed xml namespace\n const exportSvg = d3.selectAll(svgSelectorClass)\n .attr(\"version\", \"1.1\")\n .attr(\"xmlns\", \"http://www.w3.org/2000/svg\")\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import d3tip from 'lib/d3-tip/d3-tip-patch';\nimport CirclePacking from 'lib/common/circle-packing';\nimport D3 from 'lib/common/d3-utils';\nimport * as d3 from 'd3';\nimport SVG from 'lib/common/svg-export';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.class', [\n 'graphdb.framework.graphexplore.controllers.class',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant(\"ZOOM_DURATION\", 500)\n .constant(\"ROOT_OBJ_NAME\", \"RDF Class Hierarchy\")\n .directive('rdfClassHierarchy', classHierarchyDirective);\n\nclassHierarchyDirective.$inject = ['$rootScope', '$location', 'GraphDataRestService', '$window', '$timeout', '$repositories', '$licenseService', 'toastr', 'ZOOM_DURATION', 'ROOT_OBJ_NAME', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction classHierarchyDirective($rootScope, $location, GraphDataRestService, $window, $timeout, $repositories, $licenseService, toastr, ZOOM_DURATION, ROOT_OBJ_NAME, LocalStorageAdapter, LSKeys, $translate) {\n return {\n restrict: 'AE',\n template: '<div id=\"classChart\"></div>',\n scope: {\n classHierarchyData: '=',\n flattenedClassNames: '=',\n selectedClass: '=',\n currentSliderValue: '=',\n showClassInfoPanel: '=',\n showExternalElements: '=',\n hidePrefixes: '=',\n currentBrowserLimit: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope, element, attrs) {\n renderCirclePacking(scope, element);\n }\n\n function renderCirclePacking(scope, element) {\n /**\n * A boolean flag that determines whether the opening of the side info panel\n * should be suppressed when focusing on the chart while a class is selected.\n */\n let suppressPanelOpen = false;\n\n var width = 800,\n height = 800,\n diameter = height,\n margin = 20,\n tip,\n rootHierarchy;\n\n var packLayout = d3.pack()\n .size([diameter - margin, diameter - margin]);\n\n var color = d3.scaleLinear()\n .domain([0, 4])\n .range([\"hsl(19, 70%, 90%)\", \"hsl(19, 70%, 50%)\"])\n .interpolate(d3.interpolateHcl);\n\n var svg = d3.select(\"#classChart\")\n .insert(\"svg:svg\", \"h2\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n function appendMainGroup() {\n return svg.append(\"svg:g\")\n .attrs({\n id: \"main-group\",\n transform: \"translate(\" + width / 2 + \",\" + height / 2 + \")\"\n });\n }\n\n function savePrefixesState(hidePrefixes) {\n if (!angular.isUndefined(hidePrefixes)) {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES, hidePrefixes);\n }\n }\n\n function getPrefixesState() {\n return LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES) === \"true\";\n }\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/rdf-class-hierarchy-labels.css?v=3.2.0-TR2\");\n // inline css rules in a defs tag\n d3.selectAll(\"#main-group\")\n .append(\"defs\");\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // switch opacity to visible\n d3.selectAll(\"g\")\n .style(\"opacity\", 1);\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource(\"#classChart svg\");\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attrs({\n href: imgSrc,\n download: \"class-hierarchy-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n scope.hidePrefixes = getPrefixesState();\n\n var g = appendMainGroup();\n\n if (!scope.classHierarchyData.classCount && $repositories.getActiveRepository() && !$repositories.isSystemRepository()) {\n $rootScope.loader = true;\n $rootScope.hierarchyError = false;\n const selGraphFromCache = LocalStorageAdapter.get(`classHierarchy-selectedGraph-${$repositories.getActiveRepository()}`);\n GraphDataRestService.getClassHierarchyData(selGraphFromCache !== null ? selGraphFromCache.contextID.uri : \"\")\n .success(function (response, status, headers) {\n $rootScope.loader = false;\n if (status === 207) {\n toastr.warning($translate.instant('graphexplore.update.diagram'), $translate.instant('graphexplore.repository.data.changed'));\n }\n scope.classHierarchyData = response;\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n }).error(function (response) {\n $rootScope.loader = false;\n $rootScope.hierarchyError = getError(response);\n toastr.error($translate.instant('graphexplore.error.request.failed', {name: ROOT_OBJ_NAME, error: getError(response)}));\n });\n }\n\n\n var autoZoomToPreviousState,\n doFocus;\n\n var focus,\n rootFocusEvent,\n classSearchEvent,\n flattenedClassData = {};\n\n function drawDiagram(root, config, newFocus, switchPrefixes) {\n if (rootFocusEvent) rootFocusEvent();\n if (classSearchEvent) classSearchEvent();\n // remove old group tag containing the diagram\n d3.selectAll(\"#main-group\").remove();\n\n // append new empty group tag in order to rerender new diagram\n g = appendMainGroup();\n\n // fix for single child classes\n CirclePacking.SingleChild.addPlaceholders(root, true);\n\n rootHierarchy = d3.hierarchy(root);\n rootHierarchy.sum(function (d) {\n return d.size;\n })\n focus = newFocus ? newFocus : rootHierarchy;\n\n packLayout(rootHierarchy)\n\n var nodes = rootHierarchy.descendants(),\n view;\n\n focus.isInFocusTransitive = true;\n\n // fixes for single child classes\n CirclePacking.SingleChild.removePlaceholders(nodes);\n CirclePacking.SingleChild.centerNodes(nodes);\n CirclePacking.SingleChild.makePositionsRelativeToZero(nodes);\n\n if (!tip) {\n tip = d3tip()\n .attr('class', 'd3-tip')\n .customPosition(function (d, event) {\n return {\n top: 'inherit',\n bottom: ($window.innerHeight - event.clientY) + 'px',\n right: ($window.innerWidth - event.clientX) + 'px'\n };\n })\n .html(function (d) {\n return d.data.name;\n });\n svg.call(tip);\n }\n\n var circleGroup = g.selectAll(\"circle\")\n .data(nodes)\n .enter().append(\"g\");\n\n if (config.doFade) {\n circleGroup.each(function (d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n var flattenedClassNames = [];\n\n var circle = circleGroup\n .append(\"circle\")\n .attr(\"class\", function (d) {\n return d.data.role;\n })\n .attr(\"guide-selector\", function (d) {\n return \"class-\" + d.data.name;\n })\n .style(\"fill\", function (d) {\n //return colors[d.depth % 6];\n return d.children ? color(d.depth) : \"#E0D0D0\";\n })\n .each(function (d) {\n d.circle = d3.select(this);\n if (d.data.name !== ROOT_OBJ_NAME) {\n var key = d.data.name;\n flattenedClassNames.push({name: key});\n flattenedClassData[[key]] = d;\n\n d.circle.classed(\"rdf-class\", true);\n d.circle.on('mouseover', function (event) {\n if (config.noPrefixes) {\n tip.show(d, event);\n } else if (!d.textHidden) {\n tip.hide(d);\n } else {\n tip.show(d, event);\n }\n });\n d.circle.on('mouseout', tip.hide);\n }\n })\n // custom event used when user is following a guide\n .on(\"gdb-focus\", (event, d) => doFocus(d))\n .on(\"gdb-zoom\", (event, d) => zoom(d));\n\n\n if (flattenedClassNames) {\n flattenedClassNames = _.uniqBy(flattenedClassNames, 'name');\n scope.flattenedClassNames = flattenedClassNames;\n }\n\n var selectedClass;\n\n function getCurrentClassDataAndMarkSelected(obj) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n obj.circle.classed(\"selected\", obj.selected = true);\n selectedClass = obj;\n }\n\n function showClassInfoPanel() {\n scope.selectedClass = selectedClass;\n scope.showClassInfoPanel = true;\n }\n\n function closeClassInfoPanel() {\n scope.showClassInfoPanel = false;\n }\n\n function goToDomainRangeGraphView() {\n $rootScope.$broadcast('goToDomainRangeGraphView', selectedClass, focus);\n }\n\n var clickCancel = D3.Click.delayDblClick();\n d3.selectAll(\".parent, .topLevelParent, .child, .root\")\n .call(clickCancel);\n\n doFocus = function (obj) {\n zoom(obj);\n\n if (obj.data.name === ROOT_OBJ_NAME) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n } else {\n getCurrentClassDataAndMarkSelected(obj);\n if (!suppressPanelOpen) {\n showClassInfoPanel();\n }\n\n // FIXME: is it ok to bind this event handler every time and not just once?\n scope.$on('sidePanelClosed', function (event) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n });\n }\n\n\n //do not stop event propagation here\n };\n\n clickCancel.on(\"click\", function (event, obj) {\n // add clicked class to browser history\n if (obj.data.id) {\n $window.history.pushState({id: obj.data.id}, \"classHierarchyPage\" + obj.data.id, \"hierarchy#\" + obj.data.id);\n }\n\n //hide current d3-tip tooltip\n tip.hide();\n\n doFocus(obj);\n });\n\n clickCancel.on(\"dblclick\", function (event, obj) {\n if (obj === root) {\n return;\n }\n // hide current d3-tip tooltip in order not to appear in the next view\n tip.hide();\n getCurrentClassDataAndMarkSelected(obj);\n goToDomainRangeGraphView();\n\n event.stopPropagation();\n });\n\n var lastTimeWheel = 0;\n svg.on('wheel', function (event) {\n // hide current d3-tip tooltip\n tip.hide();\n\n event.preventDefault();\n event.stopPropagation();\n\n // at least 100ms must have passed since last time we updated\n var now = new Date().getTime();\n if (now - lastTimeWheel > 100) {\n lastTimeWheel = now;\n } else {\n return;\n }\n\n var direction = '';\n if (event.deltaY <= -1) {\n direction = 'in';\n } else if (event.deltaY >= 1) {\n direction = 'out';\n }\n\n var obj = event.target.__data__;\n\n if (!obj) {\n // scroll outside the big circle\n obj = focus;\n }\n\n if (direction === 'in') {\n // determine object to zoom to\n\n if (obj !== focus) {\n // consider the object on which the scroll event occurred\n // and find the furthest parent that has no focused children\n while (obj.parent && !obj.parent.isInFocusTransitive) {\n obj = obj.parent;\n }\n if (obj.depth < focus.depth) {\n // however if that parent is of lower depth than the focus we ignore it\n obj = focus;\n }\n }\n\n if (obj === focus && obj.children) {\n // if object is in focus and it has children we zoom to its biggest child\n // TODO: sort children on backend\n var newobj = obj.children[0];\n for (var i = 1; i < obj.children.length; i++) {\n if (obj.children[i].sortingRank > newobj.sortingRank) {\n newobj = obj.children[i];\n }\n }\n if (newobj.children) {\n // Use the child only if it has children\n obj = newobj;\n }\n } else if (!obj.children) {\n // If node has no children use its parent instead\n obj = obj.parent;\n }\n\n zoom(obj, true);\n } else if (direction === 'out') {\n // zooming out simply goes one parent up\n obj = focus.parent;\n if (obj) {\n zoom(obj, true);\n }\n }\n\n if (focus.data.name === ROOT_OBJ_NAME) {\n $window.history.replaceState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n }\n\n // redraw slider on zoom out\n sendSliderData();\n });\n\n var text = g.selectAll(\"text\")\n .data(nodes)\n .enter().append(\"text\")\n .attr(\"class\", function (d) {\n return d.children && d.children.length ? \"label\" : \"label child-label\";\n })\n .each(function (d) {\n d.textSel = d3.select(this);\n });\n\n function trimPrefixes(d) {\n var idx = d.data.name.indexOf(\":\");\n var absUriIdx = d.data.name.indexOf(\"http://\");\n if (absUriIdx > -1) {\n // if we have no prefix available ignore\n d.noPrefixName = d.data.name;\n } else if (idx > -1) {\n d.noPrefixName = d.data.name.substring(idx + 1);\n }\n }\n\n if (config.noPrefixes) {\n text.each(trimPrefixes);\n text\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r);\n })\n .text(function (d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r / 3);\n });\n } else {\n text\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(d.data.name, d.r);\n })\n .text(function (d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r / 3);\n })\n }\n\n // TODO: make this use the full version (same as zoom)\n text.style(\"display\", function (d) {\n if (d.parent && d.parent.data === focus.data) {\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n return null;\n } else {\n d.textHidden = true;\n return \"none\";\n }\n });\n\n if (config.doFade && !config.keepPrevState) {\n text.each(function (d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n autoZoomToPreviousState = function () {\n function focusOnCurrentClass(focusHistoryId) {\n if (focusHistoryId) {\n circle.each(function (d) {\n if (+focusHistoryId === d.data.id) {\n doFocus(d);\n }\n });\n }\n }\n\n var focusHistoryId = $location.hash();\n\n $window.onpopstate = function (event) {\n if (event.state) {\n var focusHistoryId = event.state.id;\n focusOnCurrentClass(focusHistoryId);\n }\n };\n\n focusOnCurrentClass(focusHistoryId);\n };\n\n var node = g.selectAll(\"circle, text\");\n\n function zoomTo(v, switchPrefixes) {\n var k = diameter / v[2];\n view = v;\n\n node.attr(\"transform\", function (d) {\n return \"translate(\" + (d.x - v[0]) * k + \",\" + (d.y - v[1]) * k + \")\";\n });\n\n circle.attr(\"r\", function (d) {\n return d.r * k;\n });\n\n function switchPrefixesInPlace(d) {\n // if uris match with the topLevelParentUri of the focused element\n // or your focus is a top level parent hide its label and if it is not\n // a child element show all of its child labels. If it is a child element\n // only show its label.\n if (d.data.fullName === focus.data.topLevelParentUri || focus.data.topLevelParentUri === ROOT_OBJ_NAME) {\n d.textSel.style(\"display\", \"none\");\n if (focus.children && focus.children.length) {\n _.each(focus.children, function (c) {\n c.textSel.style(\"display\", \"inline\");\n });\n } else {\n focus.textSel.style(\"display\", \"inline\");\n }\n\n // in order to show prefixes of siblings check if the focused\n // element has a parent and show all of its children except\n // for the name of the focused element because you need to see\n // its children\n if (focus.parent) {\n _.each(focus.parent.children, function (c) {\n if (c.data.name !== focus.data.name) {\n c.textSel.style(\"display\", \"inline\");\n }\n });\n }\n }\n }\n\n if (switchPrefixes) {\n text.each(switchPrefixesInPlace);\n }\n\n text\n .style(\"font-size\", function (d) {\n if (config.noPrefixes) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r * k);\n }\n return D3.Text.calcFontSize(d.data.name, d.r * k);\n })\n .text(function (d) {\n if (config.noPrefixes) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r * k / 3);\n }\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r * k / 3);\n });\n }\n\n\n function adjustRadius(r) {\n var newr = r * 2 + margin;\n if (r * 2 / newr < 0.3) {\n // for very small circles we need to adjust\n newr = r * 2 + 2;\n }\n return newr;\n }\n\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)], switchPrefixes);\n\n function textUpdate(d) {\n if (d.isInFocusTransitive || !(d.parent && d.parent.isInFocusTransitive)) {\n // hide labels of classes that are in focus (including children) OR whose parents aren't in focus\n d.textHidden = true;\n this.style.display = \"none\";\n } else {\n // show all other labels\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n this.style.display = \"\";\n }\n }\n\n function zoom(d, shouldClosePanel) {\n // use empty timeout to force the following code to be executed on the next $digest cycle\n // in order to avoid '$digest in progress' error\n $timeout(function () {\n scope.showExternalElements = (d.data.name === ROOT_OBJ_NAME);\n });\n\n if (focus === d) {\n // Node is already zoomed to\n // Important to return before we modify the history, otherwise we choke the browser\n return;\n }\n\n if (d.data.id) {\n $window.history.replaceState({id: d.data.id}, \"classHierarchyPage\" + d.data.id, \"hierarchy#\" + d.data.id);\n }\n\n if (!d.children) {\n // No children - zoom to parent instead\n d = d.parent;\n if (focus === d) {\n // Parent is already zoomed to\n return;\n }\n }\n\n if (shouldClosePanel) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n }\n\n if (focus.parent) {\n var p = focus;\n while (p) {\n p.isInFocusTransitive = false;\n p = p.parent;\n }\n }\n\n var p = d;\n while (p) {\n p.isInFocusTransitive = !!p.children;\n p = p.parent;\n }\n\n focus = d;\n\n var isVerySmallCircle = focus.r * 2 / (focus.r * 2 + margin) < 0.3;\n\n if (isVerySmallCircle || scope.currentSliderValue > scope.currentBrowserLimit) {\n // no fancy animation for slower browsers if above the limit or if zooming to a very small circle\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)]);\n\n text.each(function (d) {\n textUpdate.call(this, d)\n });\n } else {\n // the fancy version for faster browsers\n var transition = d3.transition()\n .duration(ZOOM_DURATION)\n .tween(\"zoom\", function (d) {\n var i = d3.interpolateZoom(view, [focus.x, focus.y, adjustRadius(focus.r)]);\n return function (t) {\n zoomTo(i(t));\n };\n });\n\n transition.selectAll(\"text\")\n // Experimental: hide texts to be hidden on \"start\", show texts to be shown on \"end\"\n .each(textUpdate)\n }\n }\n\n rootFocusEvent = scope.$on('rootFocus', function () {\n $window.history.pushState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n doFocus(rootHierarchy);\n });\n\n classSearchEvent = scope.$on('classSearch', function (selectedClass) {\n doFocus(selectedClass);\n });\n }\n\n function sendSliderData() {\n const currentClassCount = scope.classHierarchyData.classCount;\n let currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n\n if (!currentSliderValue || currentSliderValue > currentClassCount) {\n currentSliderValue = currentClassCount;\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n }\n\n $rootScope.$broadcast(\"classCount\", currentClassCount, currentSliderValue);\n }\n\n window.addEventListener('resize', sendSliderData);\n\n window.addEventListener('beforeunload', removeResizeListener);\n\n function removeResizeListener() {\n window.removeEventListener('resize', sendSliderData);\n window.removeEventListener('beforeunload', removeResizeListener);\n }\n\n var prefixesWatch,\n currentClassCountWatch,\n searchedClassBroadcast,\n onEnterClassSearchBroadcast;\n\n scope.$watch('classHierarchyData', function () {\n // when data changes unregister watchers by calling them\n if (prefixesWatch) prefixesWatch();\n if (currentClassCountWatch) currentClassCountWatch();\n if (searchedClassBroadcast) searchedClassBroadcast();\n if (onEnterClassSearchBroadcast) onEnterClassSearchBroadcast();\n\n // get initial state of prefixes (hidden or not) when changing repositories\n // in order to avoid triggering an unwanted prefixes watch\n var initialPrefixesState = getPrefixesState();\n\n if (scope.classHierarchyData.classCount) {\n sendSliderData();\n\n var rootData = _.cloneDeep(scope.classHierarchyData);\n\n var root = d3.hierarchy(rootData);\n\n function sortRoot(root) {\n // add all classes to a flat array, add parent information\n // and sort according to instancesCount DESC, depth ASC\n\n return root.descendants()\n .sort(function (a, b) {\n if (a.data.sortingRank > b.data.sortingRank) {\n return -1;\n } else if (a.data.sortingRank < b.data.sortingRank) {\n return 1;\n } else if (a.data.depth > b.data.depth) {\n return 1;\n } else if (a.data.depth < b.data.depth) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n var sortedChildren = sortRoot(root);\n\n // we start with an empty new rootData\n var filteredRootData;\n var noPrefixesGlobal;\n\n\n function restoreDiagramState(currentRootData, switchPrefixes) {\n const prefixesConfig = {\n keepPrevState: true,\n noPrefixes: getPrefixesState()\n };\n\n // get noPrefixes flag from drawDiagram configuration params\n noPrefixesGlobal = prefixesConfig.noPrefixes;\n\n if (filteredRootData) {\n drawDiagram(filteredRootData, prefixesConfig, focus, true);\n } else {\n drawDiagram(currentRootData, prefixesConfig, focus, true);\n }\n\n $timeout(() => {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_SWITCH_PREFIXES, switchPrefixes);\n autoZoomToPreviousState();\n // Need to set this to false to enable the info panel to work when selecting a class.\n // The panel opening will be suppressed only when the prefixes are toggled.\n suppressPanelOpen = false;\n }, 70);\n }\n\n function redrawFilteredDiagram(currentSliderValue, sortedChildrenArray, useSlider) {\n if (!currentSliderValue) {\n return;\n }\n\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n\n filteredRootData = {\n name: ROOT_OBJ_NAME,\n children: []\n };\n\n // walk through the given count of (sortedChildrenArray) classes\n // - record the id of each class we've seen\n // - add the rootData level classes to the new rootData\n const addedIds = new Set();\n for (let k = 1; k <= currentSliderValue; k++) {\n addedIds.add(sortedChildrenArray[k].data.id);\n if (sortedChildrenArray[k].parent === sortedChildrenArray[0]) { // i.e. the parent is the \"class hierarchy\"\n filteredRootData.children.push(sortedChildrenArray[k].data);\n }\n }\n\n // walk through all the classes in the new rootData and only keep those that have an \"added id\"\n // we create separate copies of the arrays in order not to contaminate the original data\n // we also copy each class's object ($.extend ...) for the same reason\n function fixChildren(node) {\n if (!node.children) {\n return;\n }\n const newChildren = [];\n for (const child of node.children) {\n if (addedIds.has(child.id)) {\n newChildren.push($.extend({}, child));\n }\n }\n node.children = newChildren;\n for (const child of node.children) {\n fixChildren(child);\n }\n }\n\n fixChildren(filteredRootData);\n\n if (useSlider) {\n // redraw diagram when slider value changes and persist current state\n // in local storage\n noPrefixesGlobal = angular.isUndefined(noPrefixesGlobal) ? getPrefixesState() : noPrefixesGlobal;\n const redrawConfig = {\n noPrefixes: noPrefixesGlobal\n };\n drawDiagram(filteredRootData, redrawConfig);\n } else {\n // if the user returns to the diagram with back browser button\n // read the saved state (show/hide prefixes, current slider value)\n // from local storage and render the diagram according to the saved metrics\n restoreDiagramState(rootData);\n }\n }\n\n var currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n if (currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren);\n } else {\n var basicConfig = {\n doFade: true,\n keepPrevState: true,\n noPrefixes: getPrefixesState()\n };\n drawDiagram(rootData, basicConfig);\n autoZoomToPreviousState();\n }\n\n prefixesWatch = scope.$watch('hidePrefixes', function (hidePrefixes) {\n if (angular.isUndefined(hidePrefixes) || initialPrefixesState) {\n initialPrefixesState = undefined;\n return;\n }\n // if digest overflows a possible fix might be wrapping this in $timeout\n $timeout(function () {\n suppressPanelOpen = true;\n savePrefixesState(hidePrefixes);\n restoreDiagramState(rootData, true);\n }, 50);\n }, true);\n\n currentClassCountWatch = scope.$watch('currentSliderValue', function (currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren, true);\n }, true);\n\n // we handle this event for the cases where we already have searched for a given class and\n // hit enter again on the already selected class in order again react and zoom to it again\n // if we are not at the moment\n var currentSearchedClass;\n onEnterClassSearchBroadcast = scope.$on('onEnterKeypressSearchAction', function (event) {\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n\n searchedClassBroadcast = scope.$on('searchedClass', function (event, searchedClass) {\n currentSearchedClass = flattenedClassData[searchedClass.name];\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n }\n }, true);\n }\n}\n"],"names":["CirclePacking","SingleChild","addPlaceholders","node","first","children","i","length","placeholderSize","size","push","name","removePlaceholders","nodes","data","splice","centerNodes","offset","x","reposition","makePositionsRelativeToZero","offsetX","offsetY","y","d3","selectAll","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","svgSelectorClass","exportSvg","attr","parentNode","innerHTML","btoa","unescape","encodeURIComponent","classHierarchyDirective","$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","$licenseService","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate","restrict","template","scope","classHierarchyData","flattenedClassNames","selectedClass","currentSliderValue","showClassInfoPanel","showExternalElements","hidePrefixes","currentBrowserLimit","link","element","attrs","suppressPanelOpen","tip","rootHierarchy","packLayout","diameter","color","domain","range","interpolate","svg","insert","on","appendMainGroup","append","id","transform","getPrefixesState","get","CLASS_HIERARCHY_HIDE_PREFIXES","prepareForSVGImageExport","style","imgSrc","this","href","download","getActiveRepository","autoZoomToPreviousState","doFocus","g","classCount","isSystemRepository","loader","hierarchyError","selGraphFromCache","getClassHierarchyData","contextID","uri","success","response","status","headers","warning","instant","error","getError","focus","rootFocusEvent","classSearchEvent","prefixesWatch","currentClassCountWatch","searchedClassBroadcast","onEnterClassSearchBroadcast","flattenedClassData","drawDiagram","root","config","newFocus","switchPrefixes","remove","sum","d","view","descendants","isInFocusTransitive","d3tip","customPosition","event","top","bottom","innerHeight","clientY","right","innerWidth","clientX","html","call","circleGroup","enter","doFade","D3","Transition","fadeIn","circle","role","depth","key","classed","noPrefixes","textHidden","show","hide","zoom","getCurrentClassDataAndMarkSelected","obj","selected","closeClassInfoPanel","uniqBy","clickCancel","Click","delayDblClick","$on","history","pushState","$broadcast","stopPropagation","lastTimeWheel","preventDefault","now","Date","getTime","direction","deltaY","target","__data__","parent","newobj","sortingRank","replaceState","sendSliderData","text","textSel","idx","indexOf","noPrefixName","substring","Text","calcFontSize","r","getTextWithElipsisIfNeeded","textContent","keepPrevState","focusOnCurrentClass","focusHistoryId","hash","onpopstate","state","zoomTo","v","k","fullName","topLevelParentUri","c","adjustRadius","newr","textUpdate","display","shouldClosePanel","p","duration","tween","t","currentClassCount","CLASS_HIERARCHY_CURRENT_SLIDER_VALUE","set","window","addEventListener","removeResizeListener","removeEventListener","$watch","initialPrefixesState","rootData","cloneDeep","filteredRootData","noPrefixesGlobal","sortedChildren","sort","a","b","restoreDiagramState","currentRootData","prefixesConfig","CLASS_HIERARCHY_SWITCH_PREFIXES","redrawFilteredDiagram","sortedChildrenArray","useSlider","addedIds","Set","add","fixChildren","newChildren","child","has","extend","angular","isUndefined","currentSearchedClass","basicConfig","undefined","savePrefixesState","searchedClass","renderCirclePacking","module","constant","directive","$inject"],"sourceRoot":""}
1
+ {"version":3,"file":"99448.2ecdf14415bcd9299354.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/lib/common/circle-packing.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/common/svg-export.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/rdf-class-hierarchy.directive.js"],"sourcesContent":["var CirclePacking = CirclePacking || {};\n\nCirclePacking.SingleChild = function () {\n /*\n Functions that enable single child circles to display properly, see\n http://stackoverflow.com/questions/22307486/d3-js-packed-circle-layout-how-to-adjust-child-radius\n */\n function addPlaceholders(node, first) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n var child = node.children[i];\n addPlaceholders(child);\n }\n\n if (node.children.length === 1) {\n var placeholderSize = node.size * 1.2;\n if (first) {\n placeholderSize = node.children[0].size * 0.1;\n }\n node.children.push({\n name: 'placeholder', size: placeholderSize,\n // children: []\n });\n }\n }\n }\n\n function removePlaceholders(nodes) {\n for (var i = nodes.length - 1; i >= 0; i--) {\n var node = nodes[i];\n\n if (node.data.name === 'placeholder') {\n nodes.splice(i, 1);\n } else {\n if (node.children) {\n removePlaceholders(node.children);\n }\n }\n }\n }\n\n function centerNodes(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (node.children) {\n if (node.children.length === 1) {\n var offset = node.x - node.children[0].x;\n node.children[0].x += offset;\n reposition(node.children[0], offset);\n }\n }\n }\n\n function reposition(node, offset) {\n if (node.children) {\n for (var i = 0; i < node.children.length; i++) {\n node.children[i].x += offset;\n reposition(node.children[i], offset);\n }\n }\n }\n }\n\n function makePositionsRelativeToZero(nodes) {\n //use this to have vis centered at 0,0,0 (easier for positioning)\n var offsetX = nodes[0].x;\n var offsetY = nodes[0].y;\n\n for (var i = 0; i < nodes.length; i++) {\n\n var node = nodes[i];\n\n node.x -= offsetX;\n node.y -= offsetY;\n }\n }\n\n return {\n addPlaceholders: addPlaceholders,\n removePlaceholders: removePlaceholders,\n centerNodes: centerNodes,\n makePositionsRelativeToZero: makePositionsRelativeToZero\n }\n}();\n\nexport default CirclePacking;\n","import 'lib/d3.patch.js'\nimport {selectAll} from 'd3';\n\nconst d3 = {selectAll};\nvar SVG = SVG || {};\n\nSVG.Export = function () {\n function getCSSRules(cssSourceFilePath) {\n const cssRules = $('link[href=\"' + cssSourceFilePath + '\"]')[0].sheet.rules;\n let cssStr = \"\";\n _.each(cssRules, function (value) {\n cssStr += value.cssText;\n });\n return cssStr;\n }\n\n function generateBase64ImageSource(svgSelectorClass) {\n if (!svgSelectorClass) {\n svgSelectorClass = \"svg\";\n }\n // add needed xml namespace\n const exportSvg = d3.selectAll(svgSelectorClass)\n .attr(\"version\", \"1.1\")\n .attr(\"xmlns\", \"http://www.w3.org/2000/svg\")\n .node().parentNode.innerHTML;\n\n // convert selected html to base64\n return \"data:image/svg+xml;charset=utf-8;base64,\" + btoa(unescape(encodeURIComponent(exportSvg)));\n }\n\n return {\n getCSSRules: getCSSRules,\n generateBase64ImageSource: generateBase64ImageSource\n };\n}();\n\nexport default SVG;\n","import d3tip from 'lib/d3-tip/d3-tip-patch';\nimport CirclePacking from 'lib/common/circle-packing';\nimport D3 from 'lib/common/d3-utils';\nimport * as d3 from 'd3';\nimport SVG from 'lib/common/svg-export';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.directives.class', [\n 'graphdb.framework.graphexplore.controllers.class',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .constant(\"ZOOM_DURATION\", 500)\n .constant(\"ROOT_OBJ_NAME\", \"RDF Class Hierarchy\")\n .directive('rdfClassHierarchy', classHierarchyDirective);\n\nclassHierarchyDirective.$inject = ['$rootScope', '$location', 'GraphDataRestService', '$window', '$timeout', '$repositories', '$licenseService', 'toastr', 'ZOOM_DURATION', 'ROOT_OBJ_NAME', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction classHierarchyDirective($rootScope, $location, GraphDataRestService, $window, $timeout, $repositories, $licenseService, toastr, ZOOM_DURATION, ROOT_OBJ_NAME, LocalStorageAdapter, LSKeys, $translate) {\n return {\n restrict: 'AE',\n template: '<div id=\"classChart\"></div>',\n scope: {\n classHierarchyData: '=',\n flattenedClassNames: '=',\n selectedClass: '=',\n currentSliderValue: '=',\n showClassInfoPanel: '=',\n showExternalElements: '=',\n hidePrefixes: '=',\n currentBrowserLimit: '='\n },\n link: linkFunc\n };\n\n function linkFunc(scope, element, attrs) {\n renderCirclePacking(scope, element);\n }\n\n function renderCirclePacking(scope, element) {\n /**\n * A boolean flag that determines whether the opening of the side info panel\n * should be suppressed when focusing on the chart while a class is selected.\n */\n let suppressPanelOpen = false;\n\n var width = 800,\n height = 800,\n diameter = height,\n margin = 20,\n tip,\n rootHierarchy;\n\n var packLayout = d3.pack()\n .size([diameter - margin, diameter - margin]);\n\n var color = d3.scaleLinear()\n .domain([0, 4])\n .range([\"hsl(19, 70%, 90%)\", \"hsl(19, 70%, 50%)\"])\n .interpolate(d3.interpolateHcl);\n\n var svg = d3.select(\"#classChart\")\n .insert(\"svg:svg\", \"h2\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .on(\"dblclick.zoom\", null);\n\n function appendMainGroup() {\n return svg.append(\"svg:g\")\n .attrs({\n id: \"main-group\",\n transform: \"translate(\" + width / 2 + \",\" + height / 2 + \")\"\n });\n }\n\n function savePrefixesState(hidePrefixes) {\n if (!angular.isUndefined(hidePrefixes)) {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES, hidePrefixes);\n }\n }\n\n function getPrefixesState() {\n return LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_HIDE_PREFIXES) === \"true\";\n }\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // get css rules for the diagram\n var cssRules = SVG.Export.getCSSRules(\"css/rdf-class-hierarchy-labels.css?v=3.2.0-TR3\");\n // inline css rules in a defs tag\n d3.selectAll(\"#main-group\")\n .append(\"defs\");\n $(\"defs\").append('<style type=\"text/css\"><![CDATA[' + cssRules + ']]></style>');\n\n // switch opacity to visible\n d3.selectAll(\"g\")\n .style(\"opacity\", 1);\n\n // convert selected html to base64\n var imgSrc = SVG.Export.generateBase64ImageSource(\"#classChart svg\");\n\n // set the binary image and a name for the downloadable file on the export button\n d3.select(this).attrs({\n href: imgSrc,\n download: \"class-hierarchy-\" + $repositories.getActiveRepository() + \".svg\"\n });\n }\n\n scope.hidePrefixes = getPrefixesState();\n\n var g = appendMainGroup();\n\n if (!scope.classHierarchyData.classCount && $repositories.getActiveRepository() && !$repositories.isSystemRepository()) {\n $rootScope.loader = true;\n $rootScope.hierarchyError = false;\n const selGraphFromCache = LocalStorageAdapter.get(`classHierarchy-selectedGraph-${$repositories.getActiveRepository()}`);\n GraphDataRestService.getClassHierarchyData(selGraphFromCache !== null ? selGraphFromCache.contextID.uri : \"\")\n .success(function (response, status, headers) {\n $rootScope.loader = false;\n if (status === 207) {\n toastr.warning($translate.instant('graphexplore.update.diagram'), $translate.instant('graphexplore.repository.data.changed'));\n }\n scope.classHierarchyData = response;\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n\n }).error(function (response) {\n $rootScope.loader = false;\n $rootScope.hierarchyError = getError(response);\n toastr.error($translate.instant('graphexplore.error.request.failed', {name: ROOT_OBJ_NAME, error: getError(response)}));\n });\n }\n\n\n var autoZoomToPreviousState,\n doFocus;\n\n var focus,\n rootFocusEvent,\n classSearchEvent,\n flattenedClassData = {};\n\n function drawDiagram(root, config, newFocus, switchPrefixes) {\n if (rootFocusEvent) rootFocusEvent();\n if (classSearchEvent) classSearchEvent();\n // remove old group tag containing the diagram\n d3.selectAll(\"#main-group\").remove();\n\n // append new empty group tag in order to rerender new diagram\n g = appendMainGroup();\n\n // fix for single child classes\n CirclePacking.SingleChild.addPlaceholders(root, true);\n\n rootHierarchy = d3.hierarchy(root);\n rootHierarchy.sum(function (d) {\n return d.size;\n })\n focus = newFocus ? newFocus : rootHierarchy;\n\n packLayout(rootHierarchy)\n\n var nodes = rootHierarchy.descendants(),\n view;\n\n focus.isInFocusTransitive = true;\n\n // fixes for single child classes\n CirclePacking.SingleChild.removePlaceholders(nodes);\n CirclePacking.SingleChild.centerNodes(nodes);\n CirclePacking.SingleChild.makePositionsRelativeToZero(nodes);\n\n if (!tip) {\n tip = d3tip()\n .attr('class', 'd3-tip')\n .customPosition(function (d, event) {\n return {\n top: 'inherit',\n bottom: ($window.innerHeight - event.clientY) + 'px',\n right: ($window.innerWidth - event.clientX) + 'px'\n };\n })\n .html(function (d) {\n return d.data.name;\n });\n svg.call(tip);\n }\n\n var circleGroup = g.selectAll(\"circle\")\n .data(nodes)\n .enter().append(\"g\");\n\n if (config.doFade) {\n circleGroup.each(function (d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n var flattenedClassNames = [];\n\n var circle = circleGroup\n .append(\"circle\")\n .attr(\"class\", function (d) {\n return d.data.role;\n })\n .attr(\"guide-selector\", function (d) {\n return \"class-\" + d.data.name;\n })\n .style(\"fill\", function (d) {\n //return colors[d.depth % 6];\n return d.children ? color(d.depth) : \"#E0D0D0\";\n })\n .each(function (d) {\n d.circle = d3.select(this);\n if (d.data.name !== ROOT_OBJ_NAME) {\n var key = d.data.name;\n flattenedClassNames.push({name: key});\n flattenedClassData[[key]] = d;\n\n d.circle.classed(\"rdf-class\", true);\n d.circle.on('mouseover', function (event) {\n if (config.noPrefixes) {\n tip.show(d, event);\n } else if (!d.textHidden) {\n tip.hide(d);\n } else {\n tip.show(d, event);\n }\n });\n d.circle.on('mouseout', tip.hide);\n }\n })\n // custom event used when user is following a guide\n .on(\"gdb-focus\", (event, d) => doFocus(d))\n .on(\"gdb-zoom\", (event, d) => zoom(d));\n\n\n if (flattenedClassNames) {\n flattenedClassNames = _.uniqBy(flattenedClassNames, 'name');\n scope.flattenedClassNames = flattenedClassNames;\n }\n\n var selectedClass;\n\n function getCurrentClassDataAndMarkSelected(obj) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n obj.circle.classed(\"selected\", obj.selected = true);\n selectedClass = obj;\n }\n\n function showClassInfoPanel() {\n scope.selectedClass = selectedClass;\n scope.showClassInfoPanel = true;\n }\n\n function closeClassInfoPanel() {\n scope.showClassInfoPanel = false;\n }\n\n function goToDomainRangeGraphView() {\n $rootScope.$broadcast('goToDomainRangeGraphView', selectedClass, focus);\n }\n\n var clickCancel = D3.Click.delayDblClick();\n d3.selectAll(\".parent, .topLevelParent, .child, .root\")\n .call(clickCancel);\n\n doFocus = function (obj) {\n zoom(obj);\n\n if (obj.data.name === ROOT_OBJ_NAME) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n } else {\n getCurrentClassDataAndMarkSelected(obj);\n if (!suppressPanelOpen) {\n showClassInfoPanel();\n }\n\n // FIXME: is it ok to bind this event handler every time and not just once?\n scope.$on('sidePanelClosed', function (event) {\n d3.selectAll(\".selected\").classed(\"selected\", obj.selected = false);\n });\n }\n\n\n //do not stop event propagation here\n };\n\n clickCancel.on(\"click\", function (event, obj) {\n // add clicked class to browser history\n if (obj.data.id) {\n $window.history.pushState({id: obj.data.id}, \"classHierarchyPage\" + obj.data.id, \"hierarchy#\" + obj.data.id);\n }\n\n //hide current d3-tip tooltip\n tip.hide();\n\n doFocus(obj);\n });\n\n clickCancel.on(\"dblclick\", function (event, obj) {\n if (obj === root) {\n return;\n }\n // hide current d3-tip tooltip in order not to appear in the next view\n tip.hide();\n getCurrentClassDataAndMarkSelected(obj);\n goToDomainRangeGraphView();\n\n event.stopPropagation();\n });\n\n var lastTimeWheel = 0;\n svg.on('wheel', function (event) {\n // hide current d3-tip tooltip\n tip.hide();\n\n event.preventDefault();\n event.stopPropagation();\n\n // at least 100ms must have passed since last time we updated\n var now = new Date().getTime();\n if (now - lastTimeWheel > 100) {\n lastTimeWheel = now;\n } else {\n return;\n }\n\n var direction = '';\n if (event.deltaY <= -1) {\n direction = 'in';\n } else if (event.deltaY >= 1) {\n direction = 'out';\n }\n\n var obj = event.target.__data__;\n\n if (!obj) {\n // scroll outside the big circle\n obj = focus;\n }\n\n if (direction === 'in') {\n // determine object to zoom to\n\n if (obj !== focus) {\n // consider the object on which the scroll event occurred\n // and find the furthest parent that has no focused children\n while (obj.parent && !obj.parent.isInFocusTransitive) {\n obj = obj.parent;\n }\n if (obj.depth < focus.depth) {\n // however if that parent is of lower depth than the focus we ignore it\n obj = focus;\n }\n }\n\n if (obj === focus && obj.children) {\n // if object is in focus and it has children we zoom to its biggest child\n // TODO: sort children on backend\n var newobj = obj.children[0];\n for (var i = 1; i < obj.children.length; i++) {\n if (obj.children[i].sortingRank > newobj.sortingRank) {\n newobj = obj.children[i];\n }\n }\n if (newobj.children) {\n // Use the child only if it has children\n obj = newobj;\n }\n } else if (!obj.children) {\n // If node has no children use its parent instead\n obj = obj.parent;\n }\n\n zoom(obj, true);\n } else if (direction === 'out') {\n // zooming out simply goes one parent up\n obj = focus.parent;\n if (obj) {\n zoom(obj, true);\n }\n }\n\n if (focus.data.name === ROOT_OBJ_NAME) {\n $window.history.replaceState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n }\n\n // redraw slider on zoom out\n sendSliderData();\n });\n\n var text = g.selectAll(\"text\")\n .data(nodes)\n .enter().append(\"text\")\n .attr(\"class\", function (d) {\n return d.children && d.children.length ? \"label\" : \"label child-label\";\n })\n .each(function (d) {\n d.textSel = d3.select(this);\n });\n\n function trimPrefixes(d) {\n var idx = d.data.name.indexOf(\":\");\n var absUriIdx = d.data.name.indexOf(\"http://\");\n if (absUriIdx > -1) {\n // if we have no prefix available ignore\n d.noPrefixName = d.data.name;\n } else if (idx > -1) {\n d.noPrefixName = d.data.name.substring(idx + 1);\n }\n }\n\n if (config.noPrefixes) {\n text.each(trimPrefixes);\n text\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r);\n })\n .text(function (d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r / 3);\n });\n } else {\n text\n .style(\"font-size\", function (d) {\n return D3.Text.calcFontSize(d.data.name, d.r);\n })\n .text(function (d) {\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r / 3);\n })\n }\n\n // TODO: make this use the full version (same as zoom)\n text.style(\"display\", function (d) {\n if (d.parent && d.parent.data === focus.data) {\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n return null;\n } else {\n d.textHidden = true;\n return \"none\";\n }\n });\n\n if (config.doFade && !config.keepPrevState) {\n text.each(function (d) {\n D3.Transition.fadeIn(d3.select(this), 550);\n });\n }\n\n autoZoomToPreviousState = function () {\n function focusOnCurrentClass(focusHistoryId) {\n if (focusHistoryId) {\n circle.each(function (d) {\n if (+focusHistoryId === d.data.id) {\n doFocus(d);\n }\n });\n }\n }\n\n var focusHistoryId = $location.hash();\n\n $window.onpopstate = function (event) {\n if (event.state) {\n var focusHistoryId = event.state.id;\n focusOnCurrentClass(focusHistoryId);\n }\n };\n\n focusOnCurrentClass(focusHistoryId);\n };\n\n var node = g.selectAll(\"circle, text\");\n\n function zoomTo(v, switchPrefixes) {\n var k = diameter / v[2];\n view = v;\n\n node.attr(\"transform\", function (d) {\n return \"translate(\" + (d.x - v[0]) * k + \",\" + (d.y - v[1]) * k + \")\";\n });\n\n circle.attr(\"r\", function (d) {\n return d.r * k;\n });\n\n function switchPrefixesInPlace(d) {\n // if uris match with the topLevelParentUri of the focused element\n // or your focus is a top level parent hide its label and if it is not\n // a child element show all of its child labels. If it is a child element\n // only show its label.\n if (d.data.fullName === focus.data.topLevelParentUri || focus.data.topLevelParentUri === ROOT_OBJ_NAME) {\n d.textSel.style(\"display\", \"none\");\n if (focus.children && focus.children.length) {\n _.each(focus.children, function (c) {\n c.textSel.style(\"display\", \"inline\");\n });\n } else {\n focus.textSel.style(\"display\", \"inline\");\n }\n\n // in order to show prefixes of siblings check if the focused\n // element has a parent and show all of its children except\n // for the name of the focused element because you need to see\n // its children\n if (focus.parent) {\n _.each(focus.parent.children, function (c) {\n if (c.data.name !== focus.data.name) {\n c.textSel.style(\"display\", \"inline\");\n }\n });\n }\n }\n }\n\n if (switchPrefixes) {\n text.each(switchPrefixesInPlace);\n }\n\n text\n .style(\"font-size\", function (d) {\n if (config.noPrefixes) {\n return D3.Text.calcFontSize(d.noPrefixName, d.r * k);\n }\n return D3.Text.calcFontSize(d.data.name, d.r * k);\n })\n .text(function (d) {\n if (config.noPrefixes) {\n return D3.Text.getTextWithElipsisIfNeeded(d.noPrefixName, d.r * k / 3);\n }\n return D3.Text.getTextWithElipsisIfNeeded(d.data.name, d.r * k / 3);\n });\n }\n\n\n function adjustRadius(r) {\n var newr = r * 2 + margin;\n if (r * 2 / newr < 0.3) {\n // for very small circles we need to adjust\n newr = r * 2 + 2;\n }\n return newr;\n }\n\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)], switchPrefixes);\n\n function textUpdate(d) {\n if (d.isInFocusTransitive || !(d.parent && d.parent.isInFocusTransitive)) {\n // hide labels of classes that are in focus (including children) OR whose parents aren't in focus\n d.textHidden = true;\n this.style.display = \"none\";\n } else {\n // show all other labels\n d.textHidden = this.textContent.indexOf(\"...\") + 3 === this.textContent.length;\n this.style.display = \"\";\n }\n }\n\n function zoom(d, shouldClosePanel) {\n // use empty timeout to force the following code to be executed on the next $digest cycle\n // in order to avoid '$digest in progress' error\n $timeout(function () {\n scope.showExternalElements = (d.data.name === ROOT_OBJ_NAME);\n });\n\n if (focus === d) {\n // Node is already zoomed to\n // Important to return before we modify the history, otherwise we choke the browser\n return;\n }\n\n if (d.data.id) {\n $window.history.replaceState({id: d.data.id}, \"classHierarchyPage\" + d.data.id, \"hierarchy#\" + d.data.id);\n }\n\n if (!d.children) {\n // No children - zoom to parent instead\n d = d.parent;\n if (focus === d) {\n // Parent is already zoomed to\n return;\n }\n }\n\n if (shouldClosePanel) {\n closeClassInfoPanel();\n d3.selectAll(\".selected\").classed(\"selected\", false);\n }\n\n if (focus.parent) {\n var p = focus;\n while (p) {\n p.isInFocusTransitive = false;\n p = p.parent;\n }\n }\n\n var p = d;\n while (p) {\n p.isInFocusTransitive = !!p.children;\n p = p.parent;\n }\n\n focus = d;\n\n var isVerySmallCircle = focus.r * 2 / (focus.r * 2 + margin) < 0.3;\n\n if (isVerySmallCircle || scope.currentSliderValue > scope.currentBrowserLimit) {\n // no fancy animation for slower browsers if above the limit or if zooming to a very small circle\n zoomTo([focus.x, focus.y, adjustRadius(focus.r)]);\n\n text.each(function (d) {\n textUpdate.call(this, d)\n });\n } else {\n // the fancy version for faster browsers\n var transition = d3.transition()\n .duration(ZOOM_DURATION)\n .tween(\"zoom\", function (d) {\n var i = d3.interpolateZoom(view, [focus.x, focus.y, adjustRadius(focus.r)]);\n return function (t) {\n zoomTo(i(t));\n };\n });\n\n transition.selectAll(\"text\")\n // Experimental: hide texts to be hidden on \"start\", show texts to be shown on \"end\"\n .each(textUpdate)\n }\n }\n\n rootFocusEvent = scope.$on('rootFocus', function () {\n $window.history.pushState({id: 1}, \"classHierarchyPage1\", \"hierarchy#1\");\n doFocus(rootHierarchy);\n });\n\n classSearchEvent = scope.$on('classSearch', function (selectedClass) {\n doFocus(selectedClass);\n });\n }\n\n function sendSliderData() {\n const currentClassCount = scope.classHierarchyData.classCount;\n let currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n\n if (!currentSliderValue || currentSliderValue > currentClassCount) {\n currentSliderValue = currentClassCount;\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n }\n\n $rootScope.$broadcast(\"classCount\", currentClassCount, currentSliderValue);\n }\n\n window.addEventListener('resize', sendSliderData);\n\n window.addEventListener('beforeunload', removeResizeListener);\n\n function removeResizeListener() {\n window.removeEventListener('resize', sendSliderData);\n window.removeEventListener('beforeunload', removeResizeListener);\n }\n\n var prefixesWatch,\n currentClassCountWatch,\n searchedClassBroadcast,\n onEnterClassSearchBroadcast;\n\n scope.$watch('classHierarchyData', function () {\n // when data changes unregister watchers by calling them\n if (prefixesWatch) prefixesWatch();\n if (currentClassCountWatch) currentClassCountWatch();\n if (searchedClassBroadcast) searchedClassBroadcast();\n if (onEnterClassSearchBroadcast) onEnterClassSearchBroadcast();\n\n // get initial state of prefixes (hidden or not) when changing repositories\n // in order to avoid triggering an unwanted prefixes watch\n var initialPrefixesState = getPrefixesState();\n\n if (scope.classHierarchyData.classCount) {\n sendSliderData();\n\n var rootData = _.cloneDeep(scope.classHierarchyData);\n\n var root = d3.hierarchy(rootData);\n\n function sortRoot(root) {\n // add all classes to a flat array, add parent information\n // and sort according to instancesCount DESC, depth ASC\n\n return root.descendants()\n .sort(function (a, b) {\n if (a.data.sortingRank > b.data.sortingRank) {\n return -1;\n } else if (a.data.sortingRank < b.data.sortingRank) {\n return 1;\n } else if (a.data.depth > b.data.depth) {\n return 1;\n } else if (a.data.depth < b.data.depth) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n\n var sortedChildren = sortRoot(root);\n\n // we start with an empty new rootData\n var filteredRootData;\n var noPrefixesGlobal;\n\n\n function restoreDiagramState(currentRootData, switchPrefixes) {\n const prefixesConfig = {\n keepPrevState: true,\n noPrefixes: getPrefixesState()\n };\n\n // get noPrefixes flag from drawDiagram configuration params\n noPrefixesGlobal = prefixesConfig.noPrefixes;\n\n if (filteredRootData) {\n drawDiagram(filteredRootData, prefixesConfig, focus, true);\n } else {\n drawDiagram(currentRootData, prefixesConfig, focus, true);\n }\n\n $timeout(() => {\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_SWITCH_PREFIXES, switchPrefixes);\n autoZoomToPreviousState();\n // Need to set this to false to enable the info panel to work when selecting a class.\n // The panel opening will be suppressed only when the prefixes are toggled.\n suppressPanelOpen = false;\n }, 70);\n }\n\n function redrawFilteredDiagram(currentSliderValue, sortedChildrenArray, useSlider) {\n if (!currentSliderValue) {\n return;\n }\n\n LocalStorageAdapter.set(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE, currentSliderValue);\n\n filteredRootData = {\n name: ROOT_OBJ_NAME,\n children: []\n };\n\n // walk through the given count of (sortedChildrenArray) classes\n // - record the id of each class we've seen\n // - add the rootData level classes to the new rootData\n const addedIds = new Set();\n for (let k = 1; k <= currentSliderValue; k++) {\n addedIds.add(sortedChildrenArray[k].data.id);\n if (sortedChildrenArray[k].parent === sortedChildrenArray[0]) { // i.e. the parent is the \"class hierarchy\"\n filteredRootData.children.push(sortedChildrenArray[k].data);\n }\n }\n\n // walk through all the classes in the new rootData and only keep those that have an \"added id\"\n // we create separate copies of the arrays in order not to contaminate the original data\n // we also copy each class's object ($.extend ...) for the same reason\n function fixChildren(node) {\n if (!node.children) {\n return;\n }\n const newChildren = [];\n for (const child of node.children) {\n if (addedIds.has(child.id)) {\n newChildren.push($.extend({}, child));\n }\n }\n node.children = newChildren;\n for (const child of node.children) {\n fixChildren(child);\n }\n }\n\n fixChildren(filteredRootData);\n\n if (useSlider) {\n // redraw diagram when slider value changes and persist current state\n // in local storage\n noPrefixesGlobal = angular.isUndefined(noPrefixesGlobal) ? getPrefixesState() : noPrefixesGlobal;\n const redrawConfig = {\n noPrefixes: noPrefixesGlobal\n };\n drawDiagram(filteredRootData, redrawConfig);\n } else {\n // if the user returns to the diagram with back browser button\n // read the saved state (show/hide prefixes, current slider value)\n // from local storage and render the diagram according to the saved metrics\n restoreDiagramState(rootData);\n }\n }\n\n var currentSliderValue = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_CURRENT_SLIDER_VALUE);\n if (currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren);\n } else {\n var basicConfig = {\n doFade: true,\n keepPrevState: true,\n noPrefixes: getPrefixesState()\n };\n drawDiagram(rootData, basicConfig);\n autoZoomToPreviousState();\n }\n\n prefixesWatch = scope.$watch('hidePrefixes', function (hidePrefixes) {\n if (angular.isUndefined(hidePrefixes) || initialPrefixesState) {\n initialPrefixesState = undefined;\n return;\n }\n // if digest overflows a possible fix might be wrapping this in $timeout\n $timeout(function () {\n suppressPanelOpen = true;\n savePrefixesState(hidePrefixes);\n restoreDiagramState(rootData, true);\n }, 50);\n }, true);\n\n currentClassCountWatch = scope.$watch('currentSliderValue', function (currentSliderValue) {\n redrawFilteredDiagram(currentSliderValue, sortedChildren, true);\n }, true);\n\n // we handle this event for the cases where we already have searched for a given class and\n // hit enter again on the already selected class in order again react and zoom to it again\n // if we are not at the moment\n var currentSearchedClass;\n onEnterClassSearchBroadcast = scope.$on('onEnterKeypressSearchAction', function (event) {\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n\n searchedClassBroadcast = scope.$on('searchedClass', function (event, searchedClass) {\n currentSearchedClass = flattenedClassData[searchedClass.name];\n if (currentSearchedClass) {\n doFocus(currentSearchedClass);\n }\n });\n }\n }, true);\n }\n}\n"],"names":["CirclePacking","SingleChild","addPlaceholders","node","first","children","i","length","placeholderSize","size","push","name","removePlaceholders","nodes","data","splice","centerNodes","offset","x","reposition","makePositionsRelativeToZero","offsetX","offsetY","y","d3","selectAll","SVG","Export","getCSSRules","cssSourceFilePath","cssRules","$","sheet","rules","cssStr","_","each","value","cssText","generateBase64ImageSource","svgSelectorClass","exportSvg","attr","parentNode","innerHTML","btoa","unescape","encodeURIComponent","classHierarchyDirective","$rootScope","$location","GraphDataRestService","$window","$timeout","$repositories","$licenseService","toastr","ZOOM_DURATION","ROOT_OBJ_NAME","LocalStorageAdapter","LSKeys","$translate","restrict","template","scope","classHierarchyData","flattenedClassNames","selectedClass","currentSliderValue","showClassInfoPanel","showExternalElements","hidePrefixes","currentBrowserLimit","link","element","attrs","suppressPanelOpen","tip","rootHierarchy","packLayout","diameter","color","domain","range","interpolate","svg","insert","on","appendMainGroup","append","id","transform","getPrefixesState","get","CLASS_HIERARCHY_HIDE_PREFIXES","prepareForSVGImageExport","style","imgSrc","this","href","download","getActiveRepository","autoZoomToPreviousState","doFocus","g","classCount","isSystemRepository","loader","hierarchyError","selGraphFromCache","getClassHierarchyData","contextID","uri","success","response","status","headers","warning","instant","error","getError","focus","rootFocusEvent","classSearchEvent","prefixesWatch","currentClassCountWatch","searchedClassBroadcast","onEnterClassSearchBroadcast","flattenedClassData","drawDiagram","root","config","newFocus","switchPrefixes","remove","sum","d","view","descendants","isInFocusTransitive","d3tip","customPosition","event","top","bottom","innerHeight","clientY","right","innerWidth","clientX","html","call","circleGroup","enter","doFade","D3","Transition","fadeIn","circle","role","depth","key","classed","noPrefixes","textHidden","show","hide","zoom","getCurrentClassDataAndMarkSelected","obj","selected","closeClassInfoPanel","uniqBy","clickCancel","Click","delayDblClick","$on","history","pushState","$broadcast","stopPropagation","lastTimeWheel","preventDefault","now","Date","getTime","direction","deltaY","target","__data__","parent","newobj","sortingRank","replaceState","sendSliderData","text","textSel","idx","indexOf","noPrefixName","substring","Text","calcFontSize","r","getTextWithElipsisIfNeeded","textContent","keepPrevState","focusOnCurrentClass","focusHistoryId","hash","onpopstate","state","zoomTo","v","k","fullName","topLevelParentUri","c","adjustRadius","newr","textUpdate","display","shouldClosePanel","p","duration","tween","t","currentClassCount","CLASS_HIERARCHY_CURRENT_SLIDER_VALUE","set","window","addEventListener","removeResizeListener","removeEventListener","$watch","initialPrefixesState","rootData","cloneDeep","filteredRootData","noPrefixesGlobal","sortedChildren","sort","a","b","restoreDiagramState","currentRootData","prefixesConfig","CLASS_HIERARCHY_SWITCH_PREFIXES","redrawFilteredDiagram","sortedChildrenArray","useSlider","addedIds","Set","add","fixChildren","newChildren","child","has","extend","angular","isUndefined","currentSearchedClass","basicConfig","undefined","savePrefixesState","searchedClass","renderCirclePacking","module","constant","directive","$inject"],"sourceRoot":""}
@@ -1 +1 @@
1
- :root{--border:1px solid #c2c1c2;--assistan-icon-weight:2.5rem;--assistant-container-gap:1rem}.chat-detail .assistant{display:flex;gap:var(--assistant-container-gap)}.chat-detail .assistant-message{display:flex;flex-direction:column;flex-grow:1;gap:1rem;width:calc(100% - var(--assistan-icon-weight) - var(--assistant-container-gap))}.chat-panel .user-message .question-text .markdown-content *{overflow-wrap:anywhere;white-space:pre-line}.chat-detail .assistant-message .answer{line-height:var(--line-height)}.chat-detail .assistant-message .answer img{height:auto;max-width:100%;vertical-align:top}.chat-detail .assistant-icon{align-items:center;display:flex;height:var(--assistan-icon-weight);justify-content:center;padding:.625rem;width:var(--assistan-icon-weight)}.chat-detail .assistant-message .hidden-actions{opacity:0}.chat-detail .assistant-message:hover .actions{opacity:1}.chat-detail .assistant-message .toggle-explain-response-icon{font-size:.6rem;transform:rotate(180deg)}.chat-detail .assistant-message .toggle-explain-response-icon.expanded{transform:rotate(0deg)}.chat-detail .assistant-message .derived-answer-hint{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:-.5rem}.chat-detail .assistant-message .deliver-answer-btn{padding:.375rem .75rem}.chat-detail .assistant-message .explain-response-wrapper{display:flex;flex-direction:column;gap:1rem}.chat-detail .assistant-message .explain-responses{display:flex;flex-direction:column;gap:1.5rem}.chat-detail .assistant-message li>p:has(+:not(p,div)),.chat-detail .assistant-message p:last-child{margin-bottom:0}.chat-detail .assistant-message pre{font-variant-ligatures:none;text-wrap:wrap}.chat-detail .explain-response{display:flex;flex-direction:column}.chat-detail .explain-response .raw-query{align-items:center;display:flex;gap:.625rem;margin:0!important;padding:0 1rem 1rem;white-space:nowrap}.chat-detail .explain-response .raw-query .copy-to-clipboard-btn,.chat-detail .explain-response .raw-query .label{flex-shrink:0}.chat-detail .explain-response .raw-query .content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-detail .explain-response .label{color:#1e293b;font-weight:400}.chat-detail .explain-response .explain-call .header{background-color:#f3f3f3;display:flex;justify-content:space-between;padding:.25rem}.chat-detail .explain-response .explain-call{border:var(--border)}.chat-detail .explain-response .explain-call .query{padding:1rem 1rem 0}.chat-detail .explain-response .error-message{margin:0 1rem 1rem}.chat-detail .explain-response .error-message .error-header{align-items:center;display:flex;gap:.625rem;justify-content:space-between;white-space:nowrap}.chat-detail .explain-response .error-content{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;max-height:4.5rem}.chat-detail .token-usage-info-btn{margin-top:2px}.token-usage-info{color:var(--text-color);font-size:1rem;line-height:1.7em;margin-left:.7em;margin-top:-1.4em;max-width:500px}.token-usage-info .description{font-weight:300;line-height:1.2em;margin-bottom:.3em}.token-info-number{color:var(--primary-color)}
1
+ :root{--border:1px solid #c2c1c2;--assistan-icon-weight:2.5rem;--assistant-container-gap:1rem}.chat-detail .assistant{display:flex;gap:var(--assistant-container-gap)}.chat-detail .assistant-message{display:flex;flex-direction:column;flex-grow:1;gap:1rem;width:calc(100% - var(--assistan-icon-weight) - var(--assistant-container-gap))}.chat-panel .user-message .question-text .markdown-content *{overflow-wrap:anywhere;white-space:pre-line}.chat-detail .assistant-message .answer{line-height:var(--line-height)}.chat-detail .assistant-message .answer img{height:auto;max-width:100%;vertical-align:top}.chat-detail .assistant-icon{align-items:center;display:flex;height:var(--assistan-icon-weight);justify-content:center;padding:.625rem;width:var(--assistan-icon-weight)}.chat-detail .assistant-message .hidden-actions{opacity:0}.chat-detail .assistant-message:hover .actions{opacity:1}.chat-detail .assistant-message .toggle-explain-response-icon{font-size:.6rem;transform:rotate(180deg)}.chat-detail .assistant-message .toggle-explain-response-icon.expanded{transform:rotate(0deg)}.chat-detail .assistant-message markdown-content.italic .markdown-content p{font-style:italic}.chat-detail .assistant-message .derived-answer-hint{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:-.5rem}.chat-detail .assistant-message .deliver-answer-btn{padding:.375rem .75rem}.chat-detail .assistant-message .explain-response-wrapper{display:flex;flex-direction:column;gap:1rem}.chat-detail .assistant-message .explain-responses{display:flex;flex-direction:column;gap:1.5rem}.chat-detail .assistant-message li>p:has(+:not(p,div)),.chat-detail .assistant-message p:last-child{margin-bottom:0}.chat-detail .assistant-message pre{font-variant-ligatures:none;text-wrap:wrap}.chat-detail .explain-response{display:flex;flex-direction:column}.chat-detail .explain-response .raw-query{align-items:center;display:flex;gap:.625rem;margin:0!important;padding:0 1rem 1rem;white-space:nowrap}.chat-detail .explain-response .raw-query .copy-to-clipboard-btn,.chat-detail .explain-response .raw-query .label{flex-shrink:0}.chat-detail .explain-response .raw-query .content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-detail .explain-response .label{color:#1e293b;font-weight:400}.chat-detail .explain-response .explain-call .header{background-color:#f3f3f3;display:flex;justify-content:space-between;padding:.25rem}.chat-detail .explain-response .explain-call{border:var(--border)}.chat-detail .explain-response .explain-call .query{padding:1rem 1rem 0}.chat-detail .explain-response .error-message{margin:0 1rem 1rem}.chat-detail .explain-response .error-message .error-header{align-items:center;display:flex;gap:.625rem;justify-content:space-between;white-space:nowrap}.chat-detail .explain-response .error-content{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;max-height:4.5rem}.chat-detail .token-usage-info-btn{margin-top:2px}.token-usage-info{color:var(--text-color);font-size:1rem;line-height:1.7em;margin-left:.7em;margin-top:-1.4em;max-width:500px}.token-usage-info .description{font-weight:300;line-height:1.2em;margin-bottom:.3em}.token-info-number{color:var(--primary-color)}
@@ -1 +1 @@
1
- :root{--text-color:#000;--line-height:1.6}.chat-panel{color:var(--text-color);display:flex;flex-direction:column;justify-content:space-between;clip:rect(0,auto,auto,0)}.chat-panel.no-content{align-items:center;height:inherit!important;justify-content:center}.chat-panel .chat-details{display:flex;flex-direction:column;gap:var(--message-gap);overflow-y:hidden;padding-left:1rem;padding-right:1rem;scrollbar-gutter:stable}.chat-panel:hover .chat-details{overflow-y:auto}.chat-panel .chat-details>div:last-child{padding-bottom:3rem}.chat-panel .chat-detail{display:flex;flex-direction:column;gap:var(--message-gap)}.chat-panel .user-message{color:var(--text-color);display:flex;flex-direction:row;justify-content:flex-end}.chat-panel .actions{display:flex;gap:.625rem}.chat-panel .user-message .question{color:var(--text-color);max-width:70%;padding-left:.5rem;padding-right:.5rem;padding-top:1rem}.chat-panel .messages-hint{padding-top:1rem;text-align:center}.chat-panel .messages-hint .hint1{font-size:2rem;transform:scaleY(.8)}.chat-panel .messages-hint .hint1 .graph,.chat-panel .messages-hint .hint1 .wise{animation-delay:1s;animation-duration:3s;animation-iteration-count:infinite;animation-timing-function:ease-out}.chat-panel .messages-hint .hint1 .graph{animation-name:change-color-graph;font-weight:500}.chat-panel .messages-hint .hint1 .wise{animation-name:change-color-wise}.chat-panel .messages-hint .hint1 .thrives{font-size:.425em;font-weight:400}@keyframes change-color-graph{0%{color:var(--graphwise-blue-color)}40%{color:inherit}to{color:inherit}}@keyframes change-color-wise{0%{color:inherit}40%{color:var(--graphwise-pink-color)}80%{color:inherit}to{color:inherit}}.chat-panel .messages-hint .hint2{font-size:1.5rem}.chat-panel .new-question{padding-left:1rem;width:100%}.chat-panel .new-question .form-control{display:flex;flex-direction:column;gap:.5rem}.chat-panel .new-question .new-question-actions{display:flex;flex-direction:row;justify-content:space-between;width:100%}.chat-panel .new-question .question-input{width:100%}.chat-panel .chat-loading{margin:auto}.chat-panel .text-warning{font-weight:300}
1
+ :root{--text-color:#000;--line-height:1.6}.chat-panel{color:var(--text-color);display:flex;flex-direction:column;justify-content:space-between;clip:rect(0,auto,auto,0)}.chat-panel.no-content{align-items:center;height:inherit!important;justify-content:center}.chat-panel .chat-details{display:flex;flex-direction:column;gap:var(--message-gap);overflow-y:hidden;padding-left:1rem;padding-right:1rem;scrollbar-gutter:stable}.chat-panel:hover .chat-details{overflow-y:auto}.chat-panel .chat-details>div:last-child{padding-bottom:3rem}.chat-panel .chat-detail{display:flex;flex-direction:column;gap:var(--message-gap)}.chat-panel .user-message{color:var(--text-color);display:flex;flex-direction:row;justify-content:flex-end}.chat-panel .actions{display:flex;gap:.625rem}.chat-panel .cancel-ask-button{align-items:center;display:flex;justify-content:center;width:1rem}.chat-panel .user-message .question{color:var(--text-color);max-width:70%;padding-left:1rem;padding-right:1rem;padding-top:.5rem}.chat-panel .messages-hint{padding-top:1rem;text-align:center}.chat-panel .messages-hint .hint1{font-size:2rem;transform:scaleY(.8)}.chat-panel .messages-hint .hint1 .graph,.chat-panel .messages-hint .hint1 .wise{animation-delay:1s;animation-duration:3s;animation-iteration-count:infinite;animation-timing-function:ease-out}.chat-panel .messages-hint .hint1 .graph{animation-name:change-color-graph;font-weight:500}.chat-panel .messages-hint .hint1 .wise{animation-name:change-color-wise}.chat-panel .messages-hint .hint1 .thrives{font-size:.425em;font-weight:400}@keyframes change-color-graph{0%{color:var(--graphwise-blue-color)}40%{color:inherit}to{color:inherit}}@keyframes change-color-wise{0%{color:inherit}40%{color:var(--graphwise-pink-color)}80%{color:inherit}to{color:inherit}}.chat-panel .messages-hint .hint2{font-size:1.5rem}.chat-panel .new-question{padding-left:1rem;width:100%}.chat-panel .new-question .form-control{display:flex;flex-direction:column;gap:.5rem}.chat-panel .new-question .new-question-actions{display:flex;flex-direction:row;justify-content:space-between;width:100%}.chat-panel .new-question .question-input{width:100%}.chat-panel .chat-loading{margin:auto}.chat-panel .text-warning{font-weight:300}
@@ -350,6 +350,9 @@
350
350
  "ask": {
351
351
  "label": "Ask"
352
352
  },
353
+ "stop_generation": {
354
+ "tooltip": "Stop generating"
355
+ },
353
356
  "regenerate": {
354
357
  "tooltip": "Regenerate"
355
358
  },
@@ -349,6 +349,9 @@
349
349
  "ask": {
350
350
  "label": "Demander"
351
351
  },
352
+ "stop_generation": {
353
+ "tooltip": "Arrêter de générer"
354
+ },
352
355
  "regenerate": {
353
356
  "tooltip": "Régénérer"
354
357
  },