graphdb-workbench 3.2.0-TR1 → 3.2.0-TR2

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 (345) hide show
  1. package/dist/10142.dae0223e0a1d85ad72fe.bundle.js +2 -0
  2. package/dist/10142.dae0223e0a1d85ad72fe.bundle.js.map +1 -0
  3. package/dist/{10376.e89fa63ff898d45f45fd.bundle.js → 10376.2723c52982b51c64bffb.bundle.js} +2 -2
  4. package/dist/10376.2723c52982b51c64bffb.bundle.js.map +1 -0
  5. package/dist/{12396.4c26c8da50c790b0f39a.bundle.js → 12396.9a7f2862146b6f9adcb1.bundle.js} +2 -2
  6. package/dist/{12396.4c26c8da50c790b0f39a.bundle.js.map → 12396.9a7f2862146b6f9adcb1.bundle.js.map} +1 -1
  7. package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js +2 -0
  8. package/dist/12940.7a45ae43d5f3ba6e7d83.bundle.js.map +1 -0
  9. package/dist/14824.a3bc164c5bf4313f5276.bundle.js +2 -0
  10. package/dist/14824.a3bc164c5bf4313f5276.bundle.js.map +1 -0
  11. package/dist/{15535.ce8d657c04f3401b9539.bundle.js → 15535.7b170e17ee0a58970ab6.bundle.js} +2 -2
  12. package/dist/{15535.ce8d657c04f3401b9539.bundle.js.map → 15535.7b170e17ee0a58970ab6.bundle.js.map} +1 -1
  13. package/dist/{16162.8f482628d1b34d41d496.bundle.js → 16162.67e7c1f5f313481b1e80.bundle.js} +2 -2
  14. package/dist/{16162.8f482628d1b34d41d496.bundle.js.map → 16162.67e7c1f5f313481b1e80.bundle.js.map} +1 -1
  15. package/dist/18961.5e34171366c281038fe5.bundle.js +2 -0
  16. package/dist/18961.5e34171366c281038fe5.bundle.js.map +1 -0
  17. package/dist/20227.a9333aa1320edea7264b.bundle.js +2 -0
  18. package/dist/20227.a9333aa1320edea7264b.bundle.js.map +1 -0
  19. package/dist/{20287.c42f9d1d913c36e46931.bundle.js → 20287.dd5bc263fe26adf34965.bundle.js} +2 -2
  20. package/dist/{20287.c42f9d1d913c36e46931.bundle.js.map → 20287.dd5bc263fe26adf34965.bundle.js.map} +1 -1
  21. package/dist/{21136.199caea09a1c9ad90393.bundle.js → 21136.b7efcb40fb956ff1109c.bundle.js} +2 -2
  22. package/dist/{21136.199caea09a1c9ad90393.bundle.js.map → 21136.b7efcb40fb956ff1109c.bundle.js.map} +1 -1
  23. package/dist/{21142.b690e00c8884fddb2bb3.bundle.js → 21142.ec45fad4d52b36961d17.bundle.js} +2 -2
  24. package/dist/{21142.b690e00c8884fddb2bb3.bundle.js.map → 21142.ec45fad4d52b36961d17.bundle.js.map} +1 -1
  25. package/dist/{21170.d5e3041241741d21080c.bundle.js → 21170.7832554eab9eaade6ffb.bundle.js} +2 -2
  26. package/dist/{21170.d5e3041241741d21080c.bundle.js.map → 21170.7832554eab9eaade6ffb.bundle.js.map} +1 -1
  27. package/dist/{21195.267abc9d42b711d0f17a.bundle.js → 21195.caae6cc33d755ad52df4.bundle.js} +2 -2
  28. package/dist/{21195.267abc9d42b711d0f17a.bundle.js.map → 21195.caae6cc33d755ad52df4.bundle.js.map} +1 -1
  29. package/dist/{25747.4e00941ec221c4d6ce8f.bundle.js → 25747.c01110e23b922cdd3d9e.bundle.js} +2 -2
  30. package/dist/{25747.4e00941ec221c4d6ce8f.bundle.js.map → 25747.c01110e23b922cdd3d9e.bundle.js.map} +1 -1
  31. package/dist/{27580.f71ebbc69dd1c7785ef3.bundle.js → 27580.5a421770ab66d2dedc37.bundle.js} +2 -2
  32. package/dist/{27580.f71ebbc69dd1c7785ef3.bundle.js.map → 27580.5a421770ab66d2dedc37.bundle.js.map} +1 -1
  33. package/dist/{28050.8ca1fa760c892bfc5466.bundle.js → 28050.6960a4a0961a07a94743.bundle.js} +2 -2
  34. package/dist/28050.6960a4a0961a07a94743.bundle.js.map +1 -0
  35. package/dist/{31636.e34ccc2d6f2dec577446.bundle.js → 31636.54e2817f8ae3998a34b3.bundle.js} +2 -2
  36. package/dist/{31636.e34ccc2d6f2dec577446.bundle.js.map → 31636.54e2817f8ae3998a34b3.bundle.js.map} +1 -1
  37. package/dist/{32489.97fac2c3daa49b143d13.bundle.js → 32489.f7a2dc39cd61c2cd8874.bundle.js} +2 -2
  38. package/dist/{32489.97fac2c3daa49b143d13.bundle.js.map → 32489.f7a2dc39cd61c2cd8874.bundle.js.map} +1 -1
  39. package/dist/33524.79f7e98ef89a46d4aa58.bundle.js +2 -0
  40. package/dist/33524.79f7e98ef89a46d4aa58.bundle.js.map +1 -0
  41. package/dist/{34495.cfa15bda8009fa37c6ff.bundle.js → 34495.be67c06c39909114bbe4.bundle.js} +2 -2
  42. package/dist/{34495.cfa15bda8009fa37c6ff.bundle.js.map → 34495.be67c06c39909114bbe4.bundle.js.map} +1 -1
  43. package/dist/{38360.0a90e77042876c86b279.bundle.js → 38360.efec913bb97c3b8588a4.bundle.js} +2 -2
  44. package/dist/{38360.0a90e77042876c86b279.bundle.js.map → 38360.efec913bb97c3b8588a4.bundle.js.map} +1 -1
  45. package/dist/{38644.3a0954c798ec413a3810.bundle.js → 38644.800252af49cd67310834.bundle.js} +2 -2
  46. package/dist/{38644.3a0954c798ec413a3810.bundle.js.map → 38644.800252af49cd67310834.bundle.js.map} +1 -1
  47. package/dist/{38843.5ef7a063337524ce3bb2.bundle.js → 38843.29e34a5e5293cee51566.bundle.js} +2 -2
  48. package/dist/{38843.5ef7a063337524ce3bb2.bundle.js.map → 38843.29e34a5e5293cee51566.bundle.js.map} +1 -1
  49. package/dist/{39518.4199684f3273d29d9105.bundle.js → 39518.0ca97879b92271d7c5e2.bundle.js} +2 -2
  50. package/dist/{39518.4199684f3273d29d9105.bundle.js.map → 39518.0ca97879b92271d7c5e2.bundle.js.map} +1 -1
  51. package/dist/{39539.c23e4878044d73f2505b.bundle.js → 39539.7cea6717cc3a5ba91617.bundle.js} +2 -2
  52. package/dist/{39539.c23e4878044d73f2505b.bundle.js.map → 39539.7cea6717cc3a5ba91617.bundle.js.map} +1 -1
  53. package/dist/{41453.8bb4c783da2c5077a6e9.bundle.js → 41453.4ae219d972a187c36bfc.bundle.js} +2 -2
  54. package/dist/{41453.8bb4c783da2c5077a6e9.bundle.js.map → 41453.4ae219d972a187c36bfc.bundle.js.map} +1 -1
  55. package/dist/41621.624ba3d867bc05b5c3cc.bundle.js +2 -0
  56. package/dist/41621.624ba3d867bc05b5c3cc.bundle.js.map +1 -0
  57. package/dist/{42129.f44b7b20f9cd376c6e59.bundle.js → 42129.0314e45b4b818b01b71f.bundle.js} +2 -2
  58. package/dist/{42129.f44b7b20f9cd376c6e59.bundle.js.map → 42129.0314e45b4b818b01b71f.bundle.js.map} +1 -1
  59. package/dist/{44444.ad66c8256bc5b653de1a.bundle.js → 44444.02026ff20e2a843dc05b.bundle.js} +2 -2
  60. package/dist/{44444.ad66c8256bc5b653de1a.bundle.js.map → 44444.02026ff20e2a843dc05b.bundle.js.map} +1 -1
  61. package/dist/45069.82993bf600a550fac275.bundle.js +2 -0
  62. package/dist/45069.82993bf600a550fac275.bundle.js.map +1 -0
  63. package/dist/{456.6118cb99d130f4c0410c.bundle.js → 456.634597f220a97bfbeab8.bundle.js} +2 -2
  64. package/dist/456.634597f220a97bfbeab8.bundle.js.map +1 -0
  65. package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js +2 -0
  66. package/dist/45758.9ffd8e7d5f99e2c394a2.bundle.js.map +1 -0
  67. package/dist/{52264.99261393a7f6e631da3b.bundle.js → 52264.4cf2f1a18d16484f0af1.bundle.js} +2 -2
  68. package/dist/52264.4cf2f1a18d16484f0af1.bundle.js.map +1 -0
  69. package/dist/54419.aec242a64c27ceda6e02.bundle.js +2 -0
  70. package/dist/54419.aec242a64c27ceda6e02.bundle.js.map +1 -0
  71. package/dist/5470.58e107e4c61ae7c22d48.bundle.js +2 -0
  72. package/dist/5470.58e107e4c61ae7c22d48.bundle.js.map +1 -0
  73. package/dist/{55862.1fb5abd075ba11a7e93c.bundle.js → 55862.5e8602827fbf72e60cc2.bundle.js} +2 -2
  74. package/dist/{55862.1fb5abd075ba11a7e93c.bundle.js.map → 55862.5e8602827fbf72e60cc2.bundle.js.map} +1 -1
  75. package/dist/{58306.ba9545cbaee021ebcbce.bundle.js → 58306.94b9336f68d11bdd72f0.bundle.js} +2 -2
  76. package/dist/{58306.ba9545cbaee021ebcbce.bundle.js.map → 58306.94b9336f68d11bdd72f0.bundle.js.map} +1 -1
  77. package/dist/58334.8a2bdb0560e0ce23f792.bundle.js +2 -0
  78. package/dist/58334.8a2bdb0560e0ce23f792.bundle.js.map +1 -0
  79. package/dist/60560.2ef51d3e2d9674450419.bundle.js +2 -0
  80. package/dist/60560.2ef51d3e2d9674450419.bundle.js.map +1 -0
  81. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js +2 -0
  82. package/dist/64118.fb6952c8ef6fc9117f35.bundle.js.map +1 -0
  83. package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js +2 -0
  84. package/dist/66014.d9f7b86d6829ebfe9d0e.bundle.js.map +1 -0
  85. package/dist/{67888.7d4966e0a22ba655f1b8.bundle.js → 67888.772326168aed83cbad9c.bundle.js} +2 -2
  86. package/dist/67888.772326168aed83cbad9c.bundle.js.map +1 -0
  87. package/dist/69724.56df2d5b2ba312cb8118.bundle.js +2 -0
  88. package/dist/69724.56df2d5b2ba312cb8118.bundle.js.map +1 -0
  89. package/dist/{72379.bac50d0011665a85b6cd.bundle.js → 72379.8a3290df05f18f8c65bd.bundle.js} +2 -2
  90. package/dist/{72379.bac50d0011665a85b6cd.bundle.js.map → 72379.8a3290df05f18f8c65bd.bundle.js.map} +1 -1
  91. package/dist/{73667.3dd4f377e7ef54fd8758.bundle.js → 73667.52fdbdadddafe9e9559b.bundle.js} +2 -2
  92. package/dist/{73667.3dd4f377e7ef54fd8758.bundle.js.map → 73667.52fdbdadddafe9e9559b.bundle.js.map} +1 -1
  93. package/dist/{73793.6d80d47c26ed60a587fd.bundle.js → 73793.7e812bab1754ddd5efb5.bundle.js} +2 -2
  94. package/dist/{73793.6d80d47c26ed60a587fd.bundle.js.map → 73793.7e812bab1754ddd5efb5.bundle.js.map} +1 -1
  95. package/dist/{75282.88819e851ed18720b275.bundle.js → 75282.2f97d3a7d7f3fdd7aebf.bundle.js} +2 -2
  96. package/dist/{75282.88819e851ed18720b275.bundle.js.map → 75282.2f97d3a7d7f3fdd7aebf.bundle.js.map} +1 -1
  97. package/dist/{75849.51ade15bf0074eab76f3.bundle.js → 75849.bd0bdefa903741034a71.bundle.js} +2 -2
  98. package/dist/{75849.51ade15bf0074eab76f3.bundle.js.map → 75849.bd0bdefa903741034a71.bundle.js.map} +1 -1
  99. package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js +2 -0
  100. package/dist/77143.e0cb9ab61d798d7b5e0b.bundle.js.map +1 -0
  101. package/dist/78070.21b221881c2b49603eb9.bundle.js +2 -0
  102. package/dist/78070.21b221881c2b49603eb9.bundle.js.map +1 -0
  103. package/dist/{78250.6db42146a120459280e4.bundle.js → 78250.73e3013c5b2ebdddbf38.bundle.js} +2 -2
  104. package/dist/{78250.6db42146a120459280e4.bundle.js.map → 78250.73e3013c5b2ebdddbf38.bundle.js.map} +1 -1
  105. package/dist/78681.7b1c9100e03c2346550a.bundle.js +2 -0
  106. package/dist/78681.7b1c9100e03c2346550a.bundle.js.map +1 -0
  107. package/dist/{79329.5a5cbfa466d1c62af915.bundle.js → 79329.3d912887ba7e96090fb4.bundle.js} +2 -2
  108. package/dist/{79329.5a5cbfa466d1c62af915.bundle.js.map → 79329.3d912887ba7e96090fb4.bundle.js.map} +1 -1
  109. package/dist/81837.a989b5e255a0ce6176b2.bundle.js +2 -0
  110. package/dist/81837.a989b5e255a0ce6176b2.bundle.js.map +1 -0
  111. package/dist/82206.fd868720394b9dc2adac.bundle.js +2 -0
  112. package/dist/82206.fd868720394b9dc2adac.bundle.js.map +1 -0
  113. package/dist/82293.5e41c8378272aabf99f6.bundle.js +2 -0
  114. package/dist/82293.5e41c8378272aabf99f6.bundle.js.map +1 -0
  115. package/dist/82896.4787d205b19befaf263a.bundle.js +2 -0
  116. package/dist/82896.4787d205b19befaf263a.bundle.js.map +1 -0
  117. package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js → 82926.93a59d42bf8d49aaac8e.bundle.js} +2 -2
  118. package/dist/{82926.93dbf44f2bcccba34e9b.bundle.js.map → 82926.93a59d42bf8d49aaac8e.bundle.js.map} +1 -1
  119. package/dist/{83136.56d692623cbc60048e03.bundle.js → 83136.4941a19a85eb34ca370a.bundle.js} +2 -2
  120. package/dist/83136.4941a19a85eb34ca370a.bundle.js.map +1 -0
  121. package/dist/{84727.b93b2f9857352d39b241.bundle.js → 84727.2e3214ad60bd59f435e2.bundle.js} +2 -2
  122. package/dist/84727.2e3214ad60bd59f435e2.bundle.js.map +1 -0
  123. package/dist/85281.76d06e1c26137bb4b417.bundle.js +2 -0
  124. package/dist/85281.76d06e1c26137bb4b417.bundle.js.map +1 -0
  125. package/dist/{86639.ab85108411ef0f006e10.bundle.js → 86639.d28da26b8f138f5eb19b.bundle.js} +2 -2
  126. package/dist/86639.d28da26b8f138f5eb19b.bundle.js.map +1 -0
  127. package/dist/89647.219c4eb306757647ae1c.bundle.js +2 -0
  128. package/dist/89647.219c4eb306757647ae1c.bundle.js.map +1 -0
  129. package/dist/{9062.d9049833d076191d3e1a.bundle.js → 9062.3541de664710a36fdac7.bundle.js} +2 -2
  130. package/dist/{9062.d9049833d076191d3e1a.bundle.js.map → 9062.3541de664710a36fdac7.bundle.js.map} +1 -1
  131. package/dist/95953.44049d81dd4879f745f9.bundle.js +2 -0
  132. package/dist/95953.44049d81dd4879f745f9.bundle.js.map +1 -0
  133. package/dist/96248.83e4f0c66a9f58161a66.bundle.js +2 -0
  134. package/dist/96248.83e4f0c66a9f58161a66.bundle.js.map +1 -0
  135. package/dist/98494.969124a68766ebbdee3c.bundle.js +3 -0
  136. package/dist/98494.969124a68766ebbdee3c.bundle.js.map +1 -0
  137. package/dist/99379.1b108abf4421ccee2973.bundle.js +2 -0
  138. package/dist/99379.1b108abf4421ccee2973.bundle.js.map +1 -0
  139. package/dist/{99448.314018d0afb1af150ddf.bundle.js → 99448.384b74c734331e5f8909.bundle.js} +2 -2
  140. package/dist/{99448.314018d0afb1af150ddf.bundle.js.map → 99448.384b74c734331e5f8909.bundle.js.map} +1 -1
  141. package/dist/99893.6ac254ca3f59996b2a52.bundle.js +2 -0
  142. package/dist/99893.6ac254ca3f59996b2a52.bundle.js.map +1 -0
  143. package/dist/api/models/configuration/configuration.d.ts +5 -0
  144. package/dist/api/models/logging/log-level.d.ts +7 -0
  145. package/dist/api/models/logging/logger-config.d.ts +19 -0
  146. package/dist/api/models/logging/logger-definitions.d.ts +7 -0
  147. package/dist/api/models/logging/logger-type.d.ts +3 -0
  148. package/dist/api/models/logging/logger.d.ts +15 -0
  149. package/dist/api/models/storage/storage-data.d.ts +1 -0
  150. package/dist/api/ontotext-workbench-api.d.ts +1 -0
  151. package/dist/api/ontotext-workbench-api.js +1 -1
  152. package/dist/api/ontotext-workbench-api.js.map +1 -1
  153. package/dist/api/services/logging/console/console-logger.service.d.ts +19 -0
  154. package/dist/api/services/logging/index.d.ts +2 -0
  155. package/dist/api/services/logging/logger-provider.d.ts +11 -0
  156. package/dist/api/services/logging/logger-service.d.ts +63 -0
  157. package/dist/api/services/logging/loggers.d.ts +15 -0
  158. package/dist/api/services/logging/test/loggers.spec.d.ts +1 -0
  159. package/dist/api/services/plugins/plugins-rest.service.d.ts +1 -0
  160. package/dist/api/services/plugins/plugins.service.d.ts +1 -0
  161. package/dist/api/services/repository/repository-storage.service.d.ts +1 -0
  162. package/dist/api/services/storage/local-storage-subscription-handler.service.d.ts +1 -0
  163. package/dist/api/services/utils/routing-utils.d.ts +1 -1
  164. package/dist/assets/configuration.default.json +5 -1
  165. package/dist/index.html +10 -8
  166. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  167. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  168. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  169. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  170. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  171. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  172. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  173. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  174. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  175. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  176. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  177. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  178. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  179. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  180. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  181. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  182. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  183. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  184. package/dist/js/angular/security/templates/user.html +2 -2
  185. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  186. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  187. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  188. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  189. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  190. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  191. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +2 -2
  192. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  193. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  194. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  195. package/dist/legacyWorkbench.2bd696723af2573e8bb7.js +3 -0
  196. package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.map → legacyWorkbench.2bd696723af2573e8bb7.js.map} +1 -1
  197. package/dist/{main.b9a83da68ffc43c91de0.js → main.be51ba05166a17f051a0.js} +3 -3
  198. package/dist/main.be51ba05166a17f051a0.js.map +1 -0
  199. package/dist/pages/aclmanagement.html +2 -2
  200. package/dist/pages/autocomplete.html +1 -1
  201. package/dist/pages/choose-repository-type.html +1 -1
  202. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  203. package/dist/pages/create-index.html +1 -1
  204. package/dist/pages/dependencies.html +1 -1
  205. package/dist/pages/domainRangeInfo.html +2 -2
  206. package/dist/pages/edit.html +1 -1
  207. package/dist/pages/explore.html +1 -1
  208. package/dist/pages/export.html +1 -1
  209. package/dist/pages/find.html +1 -1
  210. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  211. package/dist/pages/graphs-visualizations.html +7 -7
  212. package/dist/pages/guides.html +1 -1
  213. package/dist/pages/import.html +2 -2
  214. package/dist/pages/jdbc-create.html +1 -1
  215. package/dist/pages/login.html +1 -1
  216. package/dist/pages/monitor/backup-and-restore.html +1 -1
  217. package/dist/pages/monitor/queries.html +1 -1
  218. package/dist/pages/monitor/resources.html +1 -1
  219. package/dist/pages/namespaces.html +2 -2
  220. package/dist/pages/plugins.html +1 -1
  221. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  222. package/dist/pages/rdfrank.html +2 -2
  223. package/dist/pages/repositories.html +1 -1
  224. package/dist/pages/repository.html +1 -1
  225. package/dist/pages/similarity-indexes.html +1 -1
  226. package/dist/pages/sparql-editor.html +1 -1
  227. package/dist/pages/sparql-template-create.html +1 -1
  228. package/dist/pages/ux-test1.html +2 -2
  229. package/dist/pages/webapi.html +2 -2
  230. package/dist/plugins.js +1 -1
  231. package/dist/res/swagger5/index.html +11 -11
  232. package/dist/shared-components/cjs/onto-cookie-consent_2.cjs.entry.js +1 -1
  233. package/dist/shared-components/cjs/onto-dialog_2.cjs.entry.js +1 -1
  234. package/dist/shared-components/cjs/onto-dropdown.cjs.entry.js +1 -1
  235. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js +1 -1
  236. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
  237. package/dist/shared-components/cjs/translate-label.cjs.entry.js +1 -1
  238. package/dist/shared-components/cjs/translation.service-CC6jY4U-.js +1 -0
  239. package/dist/shared-components/collection/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.js +1 -1
  240. package/dist/shared-components/collection/components/onto-dropdown/onto-dropdown.js +1 -1
  241. package/dist/shared-components/collection/components/onto-navbar/navbar-service.js +1 -1
  242. package/dist/shared-components/collection/services/logger-provider.js +1 -0
  243. package/dist/shared-components/collection/services/translation.service.js +1 -1
  244. package/dist/shared-components/esm/onto-cookie-consent_2.entry.js +1 -1
  245. package/dist/shared-components/esm/onto-dialog_2.entry.js +1 -1
  246. package/dist/shared-components/esm/onto-dropdown.entry.js +1 -1
  247. package/dist/shared-components/esm/onto-footer_6.entry.js +1 -1
  248. package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
  249. package/dist/shared-components/esm/translate-label.entry.js +1 -1
  250. package/dist/shared-components/esm/translation.service-nljGIprK.js +1 -0
  251. package/dist/shared-components/shared-components/p-09a97d11.entry.js +1 -0
  252. package/dist/shared-components/shared-components/p-21b82a97.entry.js +1 -0
  253. package/dist/shared-components/shared-components/p-8d20ae56.entry.js +1 -0
  254. package/dist/shared-components/shared-components/{p-91ad7f7f.entry.js → p-9131b137.entry.js} +1 -1
  255. package/dist/shared-components/shared-components/{p-1bc2ac8e.entry.js → p-e454ffc9.entry.js} +1 -1
  256. package/dist/shared-components/shared-components/{p-17bac1e3.entry.js → p-f9aa2123.entry.js} +1 -1
  257. package/dist/shared-components/shared-components/p-nljGIprK.js +1 -0
  258. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  259. package/dist/shared-components/types/components/dialogs/onto-cookie-policy-dialog/onto-cookie-policy-dialog.d.ts +1 -0
  260. package/dist/shared-components/types/components/onto-dropdown/onto-dropdown.d.ts +1 -0
  261. package/dist/shared-components/types/services/logger-provider.d.ts +11 -0
  262. package/dist/shared-components/types/services/translation.service.d.ts +1 -0
  263. package/dist/styleguide.9451f25d197464f4079c.js +2 -0
  264. package/dist/styleguide.9451f25d197464f4079c.js.map +1 -0
  265. package/dist/workbench/workbench/workbenchApp.js +1 -1
  266. package/package.json +1 -1
  267. package/dist/10142.f47cd2aec05492fce7ce.bundle.js +0 -2
  268. package/dist/10142.f47cd2aec05492fce7ce.bundle.js.map +0 -1
  269. package/dist/10376.e89fa63ff898d45f45fd.bundle.js.map +0 -1
  270. package/dist/12940.5b35c2cf5958d8769c0a.bundle.js +0 -2
  271. package/dist/12940.5b35c2cf5958d8769c0a.bundle.js.map +0 -1
  272. package/dist/14824.5d5041c05fca4c0373fa.bundle.js +0 -2
  273. package/dist/14824.5d5041c05fca4c0373fa.bundle.js.map +0 -1
  274. package/dist/18961.c6505525fb0491b48f8b.bundle.js +0 -2
  275. package/dist/18961.c6505525fb0491b48f8b.bundle.js.map +0 -1
  276. package/dist/19968.fdb823f9a12e11a633ec.bundle.js +0 -2
  277. package/dist/19968.fdb823f9a12e11a633ec.bundle.js.map +0 -1
  278. package/dist/20227.ab5dfaab392dbb16ba31.bundle.js +0 -2
  279. package/dist/20227.ab5dfaab392dbb16ba31.bundle.js.map +0 -1
  280. package/dist/28050.8ca1fa760c892bfc5466.bundle.js.map +0 -1
  281. package/dist/33524.35fe079bcb99a78babaf.bundle.js +0 -2
  282. package/dist/33524.35fe079bcb99a78babaf.bundle.js.map +0 -1
  283. package/dist/41621.68c5ebc2104a62e2b41d.bundle.js +0 -2
  284. package/dist/41621.68c5ebc2104a62e2b41d.bundle.js.map +0 -1
  285. package/dist/456.6118cb99d130f4c0410c.bundle.js.map +0 -1
  286. package/dist/45758.6ceb731cbe0576149f31.bundle.js +0 -2
  287. package/dist/45758.6ceb731cbe0576149f31.bundle.js.map +0 -1
  288. package/dist/52264.99261393a7f6e631da3b.bundle.js.map +0 -1
  289. package/dist/54419.f09240da9349be115ab3.bundle.js +0 -2
  290. package/dist/54419.f09240da9349be115ab3.bundle.js.map +0 -1
  291. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js +0 -2
  292. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js.map +0 -1
  293. package/dist/58334.6fdc74532b5f755916d8.bundle.js +0 -2
  294. package/dist/58334.6fdc74532b5f755916d8.bundle.js.map +0 -1
  295. package/dist/60560.37740d97b418899a5d21.bundle.js +0 -2
  296. package/dist/60560.37740d97b418899a5d21.bundle.js.map +0 -1
  297. package/dist/64118.9841bd3b9724868b8a63.bundle.js +0 -2
  298. package/dist/64118.9841bd3b9724868b8a63.bundle.js.map +0 -1
  299. package/dist/66014.336bc4291da2fbc96cd1.bundle.js +0 -2
  300. package/dist/66014.336bc4291da2fbc96cd1.bundle.js.map +0 -1
  301. package/dist/67888.7d4966e0a22ba655f1b8.bundle.js.map +0 -1
  302. package/dist/69724.1a97fa707ee1379409e9.bundle.js +0 -2
  303. package/dist/69724.1a97fa707ee1379409e9.bundle.js.map +0 -1
  304. package/dist/77143.f23d8a7fa51df083741c.bundle.js +0 -2
  305. package/dist/77143.f23d8a7fa51df083741c.bundle.js.map +0 -1
  306. package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js +0 -2
  307. package/dist/78070.b5e22ffae27cc3ca7a6f.bundle.js.map +0 -1
  308. package/dist/78681.39694d37c0f75ea04df6.bundle.js +0 -2
  309. package/dist/78681.39694d37c0f75ea04df6.bundle.js.map +0 -1
  310. package/dist/81837.f10e22eaf72a0642b50e.bundle.js +0 -2
  311. package/dist/81837.f10e22eaf72a0642b50e.bundle.js.map +0 -1
  312. package/dist/82206.8ec983edcf675cfd4531.bundle.js +0 -2
  313. package/dist/82206.8ec983edcf675cfd4531.bundle.js.map +0 -1
  314. package/dist/82293.a9bb9cd640c007cc1e91.bundle.js +0 -2
  315. package/dist/82293.a9bb9cd640c007cc1e91.bundle.js.map +0 -1
  316. package/dist/82896.9aed45baf67510717c6f.bundle.js +0 -2
  317. package/dist/82896.9aed45baf67510717c6f.bundle.js.map +0 -1
  318. package/dist/83136.56d692623cbc60048e03.bundle.js.map +0 -1
  319. package/dist/84727.b93b2f9857352d39b241.bundle.js.map +0 -1
  320. package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js +0 -2
  321. package/dist/85281.27b5a1eb8e7ac2cf8459.bundle.js.map +0 -1
  322. package/dist/86639.ab85108411ef0f006e10.bundle.js.map +0 -1
  323. package/dist/89647.b1a4e522d685f0b5d60f.bundle.js +0 -2
  324. package/dist/89647.b1a4e522d685f0b5d60f.bundle.js.map +0 -1
  325. package/dist/95953.4ea6a7c68a22779ba299.bundle.js +0 -2
  326. package/dist/95953.4ea6a7c68a22779ba299.bundle.js.map +0 -1
  327. package/dist/96248.1b85f989b0a7852c9b7b.bundle.js +0 -2
  328. package/dist/96248.1b85f989b0a7852c9b7b.bundle.js.map +0 -1
  329. package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js +0 -3
  330. package/dist/98494.a2cdb2a1c5d32d0094f3.bundle.js.map +0 -1
  331. package/dist/99379.be6c85ef305af6667dc1.bundle.js +0 -2
  332. package/dist/99379.be6c85ef305af6667dc1.bundle.js.map +0 -1
  333. package/dist/99893.2537d77ee1f4df0c846b.bundle.js +0 -2
  334. package/dist/99893.2537d77ee1f4df0c846b.bundle.js.map +0 -1
  335. package/dist/legacyWorkbench.57fc12c172f6350ac4c5.js +0 -3
  336. package/dist/main.b9a83da68ffc43c91de0.js.map +0 -1
  337. package/dist/shared-components/cjs/translation.service-DjdwDpXN.js +0 -1
  338. package/dist/shared-components/esm/translation.service-Hf6024E7.js +0 -1
  339. package/dist/shared-components/shared-components/p-2433b25f.entry.js +0 -1
  340. package/dist/shared-components/shared-components/p-25fa0ee5.entry.js +0 -1
  341. package/dist/shared-components/shared-components/p-6266be98.entry.js +0 -1
  342. package/dist/shared-components/shared-components/p-Hf6024E7.js +0 -1
  343. /package/dist/{98494.a2cdb2a1c5d32d0094f3.bundle.js.LICENSE.txt → 98494.969124a68766ebbdee3c.bundle.js.LICENSE.txt} +0 -0
  344. /package/dist/{legacyWorkbench.57fc12c172f6350ac4c5.js.LICENSE.txt → legacyWorkbench.2bd696723af2573e8bb7.js.LICENSE.txt} +0 -0
  345. /package/dist/{main.b9a83da68ffc43c91de0.js.LICENSE.txt → main.be51ba05166a17f051a0.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"99379.1b108abf4421ccee2973.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/shuttle-multiselect/shuttle-multiselect.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/directives/generate-endpoint.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/directives/select-schema-sources.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/controllers/endpoint-generation-failure-result-modal.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/directives/configure-endpoint.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphql/controllers/create-graphql-endpoint-view.controller.js"],"sourcesContent":["import {cloneDeep} from \"lodash\";\n\nangular\n .module('graphdb.framework.core.directives.shuttle-multiselect', [])\n .directive('shuttleMultiselect', ShuttleMultiselect);\n\nShuttleMultiselect.$inject = [];\n\nfunction ShuttleMultiselect() {\n return {\n restrict: 'E',\n scope: {\n /**\n * The list of options to be displayed in the shuttle.\n * @type {{label: string, id: string}[]}\n */\n options: '=',\n /**\n * The list of selected options.\n * @type {{label: string, id: string}[]}\n */\n selected: '=',\n /**\n * availableOptionsTitle\n * availableOptionsFilter\n * selectedOptionsTitle\n * selectedOptionsCount\n * selectTooltip\n * selectAllLabel\n * selectAllTooltip\n * deselectTooltip\n * deselectAllLabel\n * deselectAllTooltip\n */\n labels: '='\n },\n templateUrl: 'js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html',\n link: function ($scope) {\n\n // =========================\n // Private variables\n // =========================\n\n const subscriptions = [];\n\n // =========================\n // Public variables\n // =========================\n\n $scope.searchLeft = '';\n $scope.availableOptions = [];\n $scope.selectedOptions = [];\n\n // =========================\n // Public functions\n // =========================\n\n $scope.selectOption = (option) => {\n $scope.selectedOptions.push(option);\n $scope.availableOptions = $scope.availableOptions.filter((opt) => opt !== option);\n updateSelected();\n };\n\n $scope.selectAll = () => {\n $scope.selectedOptions = $scope.selectedOptions.concat($scope.availableOptions);\n $scope.availableOptions = [];\n updateSelected();\n };\n\n $scope.deselectOption = (option) => {\n $scope.availableOptions.push(option);\n $scope.selectedOptions = $scope.selectedOptions.filter((opt) => opt !== option);\n updateSelected();\n };\n\n $scope.deselectAll = () => {\n $scope.availableOptions = $scope.availableOptions.concat($scope.selectedOptions);\n $scope.selectedOptions = [];\n updateSelected();\n };\n\n // =========================\n // Private functions\n // =========================\n\n const updateSelected = () => {\n $scope.selected = [...$scope.selectedOptions];\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const removeAllSubscribers = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n // Deregister the watcher when the scope/directive is destroyed\n $scope.$on('$destroy', removeAllSubscribers);\n\n const onInit = () => {\n $scope.selectedOptions = cloneDeep($scope.selected);\n // If there are selected options, filter them out from the available options\n if ($scope.selectedOptions.length) {\n $scope.availableOptions = $scope.options\n .filter(\n (option) => !$scope.selectedOptions\n .find((selectedOption) => selectedOption.id === option.id));\n } else {\n $scope.availableOptions = cloneDeep($scope.options);\n }\n }\n onInit();\n }\n };\n}\n","import {GraphqlEventName} from \"../services/graphql-context.service\";\nimport '../controllers/endpoint-generation-failure-result-modal.controller';\nimport {endpointUrl} from \"../models/endpoints\";\n\nangular\n .module('graphdb.framework.graphql.directives.generate-endpoint', [\n 'graphdb.framework.graphql.controllers.endpoint-generation-failure-result-modal'\n ])\n .directive('generateEndpoint', GenerateEndpointComponent);\n\nGenerateEndpointComponent.$inject = ['ModalService', '$uibModal', '$translate', '$repositories', 'GraphqlService', 'GraphqlContextService'];\n\nfunction GenerateEndpointComponent(ModalService, $uibModal, $translate, $repositories, GraphqlService, GraphqlContextService) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/graphql/templates/step-generate-endpoint.html',\n scope: {\n stepDefinition: '='\n },\n link: ($scope) => {\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * The endpoint configuration model.\n * @type {GraphqlEndpointConfiguration|undefined}\n */\n $scope.endpointConfiguration = undefined;\n\n /**\n * The count of the endpoints that will be generated.\n * @type {number}\n */\n $scope.endpointsCountToGenerate = 0;\n\n /**\n * A model with the overview of the endpoints to be generated.\n * @type {GraphqlEndpointOverviewList|undefined}\n */\n $scope.endpointsOverview = undefined;\n\n /**\n * The active repository.\n */\n $scope.activeRepository = $repositories.getActiveRepository();\n\n /**\n * A flag indicating if the endpoint will be generated from the GraphQL schema shapes.\n * @type {boolean}\n */\n $scope.generateFromGraphqlSchemaShapes = false;\n\n /**\n * A flag indicating if the endpoint generation is in progress.\n * @type {boolean}\n */\n $scope.generatingEndpoint = false;\n\n /**\n * The endpoint generation report.\n * @type {EndpointGenerationReportList|undefined}\n */\n $scope.generationReport = undefined;\n\n /**\n * Exposes the graphql module view URL constants for use in the template.\n * @type {{string?: string}}\n */\n $scope.endpointUrl = endpointUrl;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the transition to the previous step in the create endpoint wizard.\n */\n $scope.back = () => {\n GraphqlContextService.previousEndpointCreationStep();\n };\n\n /**\n * Handles the termination of the create endpoint wizard.\n */\n $scope.cancel = () => {\n const title = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.title');\n const confirmDeleteMessage = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.body');\n ModalService.openConfirmation(title, confirmDeleteMessage, () => {\n GraphqlContextService.cancelEndpointCreation();\n });\n };\n\n /**\n * Handles the creation of the GraphQL endpoint.\n */\n $scope.generateEndpoint = () => {\n $scope.generatingEndpoint = true;\n $scope.generationReport = undefined;\n GraphqlContextService.generateEndpoint();\n };\n\n /**\n * Handles the completion of the endpoint generation workflow.\n */\n $scope.finishGenerationWorkflow = () => {\n GraphqlContextService.finishGenerationWorkflow();\n };\n\n /**\n * Triggers an event to open the endpoint generation report modal.\n * @param {EndpointGenerationReport} endpointReport The endpoint generation report.\n */\n $scope.showEndpointReport = (endpointReport) => {\n GraphqlContextService.openEndpointGenerationReport(endpointReport);\n }\n\n /**\n * Opens the endpoint in the playground in a new browser tab.\n * @param {EndpointGenerationReport} endpointReport The endpoint generation report.\n */\n $scope.exploreInPlayground = (endpointReport) => {\n GraphqlContextService.exploreEndpointInPlayground(endpointReport);\n }\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Handles the completion of the endpoint generation.\n * @param {EndpointGenerationReportList} generationReport The endpoint generation report.\n */\n const onEndpointGenerated = (generationReport) => {\n $scope.generatingEndpoint = false;\n $scope.generationReport = generationReport;\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.ENDPOINT_GENERATED, onEndpointGenerated));\n\n $scope.$on('$destroy', onDestroy);\n\n const onInit = () => {\n $scope.endpointConfiguration = GraphqlContextService.getNewEndpoint();\n $scope.generateFromGraphqlSchemaShapes = $scope.endpointConfiguration.hasSelectedGraphqlSchemaShapes();\n $scope.endpointsCountToGenerate = GraphqlService.getEndpointsCountToGenerate($scope.endpointConfiguration);\n $scope.endpointsOverview = GraphqlService.getGenerateEndpointsOverview($scope.endpointConfiguration);\n }\n onInit();\n }\n };\n}\n","import 'angular/core/directives/shuttle-multiselect/shuttle-multiselect.directive';\nimport {GraphListOptions} from \"../../models/graphs/graph-list-options\";\nimport {GraphqlEventName} from \"../services/graphql-context.service\";\nimport {OntologyShaclShapeSource, SchemaSourceType} from \"../../models/graphql/create-endpoint-wizard-steps\";\nimport {LoggerProvider} from \"../../core/services/logger-provider\";\n\nconst logger = LoggerProvider.logger;\n\nconst modules = [\n 'graphdb.framework.core.directives.shuttle-multiselect',\n];\n\nangular\n .module('graphdb.framework.graphql.directives.select-schema-sources', modules)\n .directive('selectSchemaSources', SelectSchemaSourcesComponent);\n\nSelectSchemaSourcesComponent.$inject = ['$q', 'ModalService', '$translate', 'toastr', '$repositories', 'GraphqlContextService', 'GraphqlService', 'RDF4JRepositoriesService'];\n\nfunction SelectSchemaSourcesComponent($q, ModalService, $translate, toastr, $repositories, GraphqlContextService, GraphqlService, RDF4JRepositoriesService) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/graphql/templates/step-select-schema-sources.html',\n scope: {\n stepDefinition: '=',\n },\n link: ($scope, element) => {\n // =========================\n // Private variables\n // =========================\n\n const subscriptions = [];\n\n // =========================\n // Public variables\n // =========================\n\n $scope.schemaSourceType = SchemaSourceType;\n $scope.ontologyShaclShapeSource = OntologyShaclShapeSource;\n\n /**\n * The label keys for the shacl shapes multiselect component.\n */\n $scope.shapesMultiselectLabels = {\n availableOptionsTitle: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.available_options.title',\n availableOptionsFilter: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.available_options.filter_placeholder',\n selectedOptionsTitle: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.selected_options.title',\n selectedOptionsCount: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.selected_options.count',\n selectTooltip: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.add.tooltip',\n selectAllLabel: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.add_all.label',\n selectAllTooltip: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.add_all.tooltip',\n deselectTooltip: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.remove.tooltip',\n deselectAllLabel: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.remove_all.label',\n deselectAllTooltip: 'graphql.create_endpoint.wizard_steps.shapes_multiselect.actions.remove_all.tooltip',\n };\n\n /**\n * The label keys for the graphs multiselect component.\n */\n $scope.graphsMultiselectLabels = {\n availableOptionsTitle: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.available_options.title',\n availableOptionsFilter: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.available_options.filter_placeholder',\n selectedOptionsTitle: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.selected_options.title',\n selectedOptionsCount: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.selected_options.count',\n selectTooltip: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.add.tooltip',\n selectAllLabel: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.add_all.label',\n selectAllTooltip: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.add_all.tooltip',\n deselectTooltip: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.remove.tooltip',\n deselectAllLabel: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.remove_all.label',\n deselectAllTooltip: 'graphql.create_endpoint.wizard_steps.graphs_multiselect.actions.remove_all.tooltip',\n };\n\n /**\n * The endpoint configuration model.\n * @type {GraphqlEndpointConfiguration|undefined}\n */\n $scope.endpointConfiguration = undefined;\n\n /**\n * A list of prefixes available for the endpoint\n * @type {SelectMenuOptionsModel[]}\n */\n $scope.prefixList = [];\n\n /**\n * Flag indicating whether the prefixes are being loaded.\n * @type {boolean}\n */\n $scope.loadingPrefixes = false;\n\n /**\n * The list of graphs in the repository.\n * @type {GraphListOptions|undefined}\n */\n $scope.graphs = undefined;\n\n /**\n * The list of SHACL shape graphs in the repository.\n * @type {GraphListOptions|undefined}\n */\n $scope.shaclShapeGraphs = undefined;\n\n /**\n * The list of GraphQL schema shapes in the repository. The graphql shapes multiselect component uses this\n * list.\n * @type {GraphqlSchemaShapes|undefined}\n */\n $scope.graphqlSchemaShapes = undefined;\n\n /**\n * The list of all graphs in the repository. The graphs multiselect component uses this list.\n * @type {GraphListOptions|undefined}\n */\n $scope.allGraphs = undefined;\n\n /**\n * Flag indicating whether the graphs are being loaded.\n * @type {boolean}\n */\n $scope.loadingGraphs = false;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the termination of the create endpoint wizard.\n */\n $scope.cancel = () => {\n const title = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.title');\n const confirmDeleteMessage = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.body');\n ModalService.openConfirmation(title, confirmDeleteMessage, () => {\n GraphqlContextService.cancelEndpointCreation();\n });\n };\n\n /**\n * Handles the transition to the next step in the create endpoint wizard.\n */\n $scope.next = () => {\n GraphqlContextService.nextEndpointCreationStep();\n };\n\n /**\n * Handles the switch between schema source types in the UI. Switching schema source types renders different\n * UI components for selecting the schema source and uses different data models.\n */\n $scope.onSchemaSourceTypeChange = () => {\n $scope.endpointConfiguration.schemaSourceType = $scope.stepDefinition.schemaSourceType;\n if ($scope.endpointConfiguration.generateFromShaclShapes()) {\n if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.USE_ALL_GRAPHS) {\n $scope.endpointConfiguration.selectedGraphs = $scope.allGraphs;\n } else if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.USE_SHACL_SHAPE_GRAPH) {\n $scope.endpointConfiguration.selectedGraphs = $scope.shaclShapeGraphs;\n } else if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.PICK_GRAPHS) {\n $scope.endpointConfiguration.selectedGraphs = new GraphListOptions();\n }\n }\n };\n\n /**\n * Handles the switch between ontology and SHACL shape sources in the UI. Switching between sources changes\n * the list of graphs available for selection.\n */\n $scope.onOntologyShaclShapeSourceChange = () => {\n $scope.endpointConfiguration.owlOrShaclSourceType = $scope.stepDefinition.ontotlogyShaclShapeSource;\n if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.USE_ALL_GRAPHS) {\n $scope.endpointConfiguration.selectedGraphs = $scope.allGraphs;\n } else if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.USE_SHACL_SHAPE_GRAPH) {\n $scope.endpointConfiguration.selectedGraphs = $scope.shaclShapeGraphs;\n } else if ($scope.stepDefinition.ontotlogyShaclShapeSource === OntologyShaclShapeSource.PICK_GRAPHS) {\n $scope.endpointConfiguration.selectedGraphs = new GraphListOptions();\n }\n };\n\n /**\n * Handles the transition to the next step in the create endpoint wizard.\n * @returns {boolean}\n */\n $scope.canProceed = () => {\n let canProceed = false;\n if ($scope.endpointConfiguration) {\n const hasSelectedShapes = $scope.endpointConfiguration.hasSelectedGraphqlSchemaShapes();\n const hasValidEndpointParameters = $scope.endpointParamsForm.$valid;\n // The first option (radiobutton) allows the user to select graphql shapes.\n if ($scope.stepDefinition.schemaSourceType === SchemaSourceType.GRAPHQL_SCHEMA_SHAPES && hasSelectedShapes) {\n canProceed = true;\n // The second option (radiobutton) allows the user to select graphs: all graphs, shacl shape graph or\n // manually pick graphs.\n // Here the user must also fill in the endpoint parameters form.\n } else if ($scope.stepDefinition.schemaSourceType === SchemaSourceType.SHACL_SHAPES && hasValidEndpointParameters) {\n // In case the user selects all graphs, we don't care how many graphs are there. We use all\n // the data in the repository. Also, it's possible that there are no other graphs in the\n // repository than the default one.\n if ($scope.endpointConfiguration.owlOrShaclSourceType === OntologyShaclShapeSource.USE_ALL_GRAPHS) {\n canProceed = true;\n } else {\n // In all the other cases there must be at least one graph selected.\n canProceed = $scope.endpointConfiguration.hasSelectedGraphs();\n }\n }\n }\n return canProceed;\n };\n\n // =========================\n // Private functions\n // =========================\n\n /**\n * Loads prefixes available in the source repository.\n * @returns {Promise<void>}\n */\n const loadPrefixes = () => {\n $scope.loadingPrefixes = true;\n return GraphqlService.getPrefixListAsSelectOptions(GraphqlContextService.getSourceRepository())\n .catch((error) => {\n logger.error('Error loading prefixes', error);\n toastr.error(getError(error));\n })\n .finally(() => {\n $scope.loadingPrefixes = false;\n });\n };\n\n /**\n * Loads all graphs available in the source repository.\n * @returns {Promise<GraphListOptions>}\n */\n const loadAllGraphs = () => {\n $scope.loadingGraphs = true;\n return RDF4JRepositoriesService.getGraphs(GraphqlContextService.getSourceRepository())\n .catch((error) => {\n logger.error('Error loading graphs', error);\n toastr.error(getError(error));\n })\n .finally(() => {\n $scope.loadingGraphs = false;\n });\n };\n\n /**\n * Loads the GraphQL schema shapes from the source repository.\n * @returns {Promise<GraphqlSchemaShapes>}\n */\n const loadGraphqlSchemaShapes = () => {\n return GraphqlService.getGraphqlSchemaShapes(GraphqlContextService.getSourceRepository())\n .catch((error) => {\n logger.error('Error loading GraphQL schema shapes', error);\n toastr.error(getError(error));\n });\n };\n\n /**\n * Loads the SHACL shape graphs from the source repository.\n * @returns {Promise<GraphListOptions>}\n */\n const loadShaclShapeGraphs = () => {\n return GraphqlService.getShaclShapeGraphs(GraphqlContextService.getSourceRepository())\n .catch((error) => {\n logger.error('Error loading SHACL shape graphs', error);\n toastr.error(getError(error));\n });\n };\n\n /**\n * Handles the update of the endpoint configuration model.\n * @param {GraphqlEndpointConfiguration} endpointConfiguration The updated endpoint configuration model.\n */\n const loadData = (endpointConfiguration) => {\n $scope.loadingData = true;\n $q.all([loadPrefixes(), loadAllGraphs(), loadGraphqlSchemaShapes(), loadShaclShapeGraphs()])\n .then(([prefixes, graphs, graphqlShapes, shaclShapeGraphs]) => {\n $scope.graphqlSchemaShapes = graphqlShapes;\n $scope.graphs = graphs;\n $scope.shaclShapeGraphs = shaclShapeGraphs;\n $scope.allGraphs = new GraphListOptions([...graphs.graphList, ...shaclShapeGraphs.graphList]);\n $scope.prefixList = prefixes;\n $scope.endpointConfiguration = endpointConfiguration;\n })\n .finally(() => {\n $scope.loadingData = false;\n });\n };\n\n /**\n * Handles the update of the source repository.\n */\n const onSourceRepositoryUpdated = () => {\n loadData(GraphqlContextService.getNewEndpoint());\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n const subscribeToEvents = () => {\n $scope.$on('$destroy', onDestroy);\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.SOURCE_REPOSITORY_UPDATED, onSourceRepositoryUpdated));\n const newEndpoint = GraphqlContextService.getNewEndpoint();\n if (!newEndpoint) {\n subscriptions.push(GraphqlContextService.onEndpointConfigCreated(loadData));\n } else {\n loadData(newEndpoint);\n }\n };\n\n const onInit = () => {\n subscribeToEvents();\n };\n onInit();\n },\n };\n}\n","import '../../core/services/graphql.service';\nimport 'angular/core/directives/dynamic-form/dynamic-form.directive';\nimport 'angular/core/directives/multiselect-dropdown/multiselect-dropdown.directive';\n\nconst modules = [\n 'graphdb.framework.core.services.graphql-service',\n];\n\nangular\n .module('graphdb.framework.graphql.controllers.endpoint-generation-failure-result-modal', modules)\n .controller('EndpointGenerationResultFailureModalController', EndpointGenerationResultFailureModalController);\n\nEndpointGenerationResultFailureModalController.$inject = ['$scope', '$uibModalInstance', 'data', 'GraphqlContextService'];\n\nfunction EndpointGenerationResultFailureModalController($scope, $uibModalInstance, data, GraphqlContextService) {\n // =========================\n // Private variables\n // =========================\n\n const REPORT_FILE_NAME = 'generation-report.json';\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * The generation report model.\n * @type {EndpointGenerationReport|undefined}\n */\n $scope.endpointReport = undefined;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the download report button click.\n */\n $scope.downloadReport = () => {\n const reportData = JSON.stringify($scope.endpointReport.toJSON(), null, 2);\n const blob = new Blob([reportData], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = $scope.endpointReport.endpointId ? `${$scope.endpointReport.endpointId}-${REPORT_FILE_NAME}` : REPORT_FILE_NAME;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n\n /**\n * Deletes generation report and dismisses the modal.\n */\n $scope.deleteReport = () => {\n GraphqlContextService.deleteEndpointGenerationReport($scope.endpointReport);\n $scope.close();\n }\n\n /**\n * Cancels the operation and dismisses the modal.\n */\n $scope.close = () => {\n $uibModalInstance.dismiss('cancel')\n };\n\n // =========================\n // Private functions\n // =========================\n\n const init = () => {\n $scope.endpointReport = data.endpointReport;\n };\n\n // =========================\n // Initialization\n // =========================\n init();\n}\n","import {LoggerProvider} from \"../../core/services/logger-provider\";\n\nconst logger = LoggerProvider.logger;\n\nangular\n .module('graphdb.framework.graphql.directives.configure-endpoint', [])\n .directive('configureEndpoint', ConfigureEndpointComponent);\n\nConfigureEndpointComponent.$inject = ['$q', 'ModalService', '$translate', 'GraphqlService', 'GraphqlContextService', 'toastr'];\n\nfunction ConfigureEndpointComponent($q, ModalService, $translate, GraphqlService, GraphqlContextService, toastr) {\n return {\n restrict: 'E',\n templateUrl: 'js/angular/graphql/templates/step-configure-endpoint.html',\n scope: {\n stepDefinition: '=',\n selectedSourceRepository: '=',\n },\n link: ($scope) => {\n // =========================\n // Public variables\n // =========================\n\n /**\n * The endpoint configuration model.\n * @type {GraphqlEndpointConfiguration|undefined}\n */\n $scope.endpointConfiguration = undefined;\n\n /**\n * The dynamic form model containing the generation settings.\n * @type {GraphqlEndpointConfigurationSettings|undefined}\n */\n $scope.generationSettings = undefined;\n\n /**\n * Flag indicating if the generation settings in the form are valid.\n * @type {boolean}\n */\n $scope.generationSettingsValid = false;\n\n /**\n * Flag controlling the visibility of the advanced settings section. Advanced settings are hidden by default\n * in the settings model.\n * @type {boolean}\n */\n $scope.showAdvancedSettings = false;\n\n // =========================\n // Public functions\n // =========================\n\n /**\n * Handles the validity change of the generation settings form.\n * @param {boolean} isValid The new validity state of the form.\n */\n $scope.handleValidityChange = (isValid) => {\n $scope.endpointConfigurationSettingsValid = isValid;\n };\n\n /**\n * Handles the transition to the next step in the create endpoint wizard.\n */\n $scope.next = () => {\n GraphqlContextService.nextEndpointCreationStep();\n };\n\n /**\n * Handles the transition to the previous step in the create endpoint wizard.\n */\n $scope.back = () => {\n GraphqlContextService.previousEndpointCreationStep();\n };\n\n /**\n * Handles the termination of the create endpoint wizard.\n */\n $scope.cancel = () => {\n const title = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.title');\n const confirmDeleteMessage = $translate.instant('graphql.create_endpoint.wizard_steps.actions.cancel.confirmation.body');\n ModalService.openConfirmation(title, confirmDeleteMessage, () => {\n GraphqlContextService.cancelEndpointCreation();\n });\n };\n\n /**\n * Toggles the visibility of the advanced settings. Advanced settings are hidden by default.\n */\n $scope.toggleAdvancedSettings = () => {\n $scope.showAdvancedSettings = !$scope.showAdvancedSettings;\n };\n\n // =========================\n // Private functions\n // =========================\n\n const loadGenerationSettings = () => {\n return GraphqlService.getGraphqlGenerationSettings($scope.selectedSourceRepository.id)\n .catch((error) => {\n logger.error('Error loading generation settings', error);\n toastr.error(getError(error));\n });\n };\n\n const loadData = () => {\n $scope.loadingData = true;\n $q.all([loadGenerationSettings()])\n .then(([generationSettings]) => {\n $scope.endpointConfiguration.settings = generationSettings;\n })\n .finally(() => {\n $scope.loadingData = false;\n });\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n const subscriptions = [];\n\n const onDestroy = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n $scope.$on('$destroy', onDestroy);\n\n const onInit = () => {\n $scope.endpointConfiguration = GraphqlContextService.getNewEndpoint();\n // Reload generation settings only if they are not already loaded. We need them to stay in the\n // endpoint configuration object during the whole endpoint creation process.\n if (!$scope.endpointConfiguration.settings) {\n loadData($scope.endpointConfiguration);\n }\n };\n onInit();\n },\n };\n}\n","import '../../core/services/graphql.service';\nimport '../services/graphql-context.service';\nimport {\n ConfigureEndpointStep,\n GenerateEndpointStep, SchemaSourceType,\n SelectSchemaSourceStep,\n} from \"../../models/graphql/create-endpoint-wizard-steps\";\nimport {endpointUrl} from \"../models/endpoints\";\nimport {Wizard} from \"../../models/graphql/wizard\";\nimport 'angular/graphql/directives/select-schema-sources.directive';\nimport 'angular/graphql/directives/configure-endpoint.directive';\nimport 'angular/graphql/directives/generate-endpoint.directive';\nimport {GraphqlEventName} from \"../services/graphql-context.service\";\nimport {resolvePlaygroundUrlWithEndpoint} from \"../services/endpoint-utils\";\n\nconst modules = [\n 'graphdb.framework.core.services.graphql-service',\n 'graphdb.framework.graphql.services.graphql-context',\n 'graphdb.framework.graphql.directives.select-schema-sources',\n 'graphdb.framework.graphql.directives.configure-endpoint',\n 'graphdb.framework.graphql.directives.generate-endpoint',\n];\n\nangular\n .module('graphdb.framework.graphql.controllers.create-graphql-endpoint-view', modules)\n .controller('CreateGraphqlEndpointViewCtrl', CreateGraphqlEndpointViewCtrl);\n\nCreateGraphqlEndpointViewCtrl.$inject = ['$scope', '$location', '$repositories', '$translate', '$uibModal', 'ModalService', 'toastr', 'GraphqlService', 'GraphqlContextService'];\n\nfunction CreateGraphqlEndpointViewCtrl($scope, $location, $repositories, $translate, $uibModal, ModalService, toastr, GraphqlService, GraphqlContextService) {\n // =========================\n // Private variables\n // =========================\n\n const subscriptions = [];\n\n // =========================\n // Public variables\n // =========================\n\n /**\n * The source repositories select menu model.\n * @type {SelectMenuOptionsModel[]}\n */\n $scope.sourceRepositories = [];\n\n /**\n * The selected source repository.\n * @type {SelectMenuOptionsModel|undefined}\n */\n $scope.selectedSourceRepository = undefined;\n\n /**\n * The previous selected source repository is same as the selected source repository when the view is initialized.\n * It is used to restore the selected source repository when the user cancels the source repository change.\n * @type {SelectMenuOptionsModel|undefined}\n */\n $scope.previousSelectedSourceRepository = undefined;\n\n /**\n * The create endpoint wizard model.\n * @type {Wizard|undefined}\n */\n $scope.wizardModel = undefined;\n\n /**\n * Current wizard step model.\n * @type {WizardStep|undefined}\n */\n $scope.currentStep = undefined;\n\n /**\n * A flag indicating if the endpoint generation is in progress. This allows to disable some UI elements during the\n * generation process.\n * @type {boolean}\n */\n $scope.generatingEndpoint = false;\n\n // =========================\n // Public methods\n // =========================\n\n /**\n * Handles the change of the selected source repository.\n * @param {SelectMenuOptionsModel} selectedRepository The selected source repository.\n */\n $scope.onSelectedSourceRepositoryChange = (selectedRepository) => {\n ModalService.openConfirmationModal({\n title: $translate.instant('graphql.create_endpoint.messages.source_repository_changed.title'),\n message: $translate.instant('graphql.create_endpoint.messages.source_repository_changed.body'),\n confirmButtonKey: 'common.confirm',\n },\n () => {\n $scope.previousSelectedSourceRepository = $scope.selectedSourceRepository;\n GraphqlContextService.updateSourceRepository(selectedRepository.value);\n // Recreate the endpoint configuration and the wizard as the new source repository may have different data.\n GraphqlContextService.createEndpointConfig();\n setupWizard();\n },\n () => {\n $scope.selectedSourceRepository = $scope.previousSelectedSourceRepository;\n });\n };\n\n /**\n * Activates the wizard step.\n * @param {WizardStep} step\n */\n $scope.activateStep = (step) => {\n $scope.wizardModel.setStepActive(step);\n setCurrentStep(step);\n };\n\n /**\n * Handles the click on the step in the wizard. We allow only to go back to previous steps.\n * @param {WizardStep} step The step to go to.\n */\n $scope.onStepClick = (step) => {\n if ($scope.wizardModel.isAPreviousStep(step)) {\n $scope.wizardModel.setStepActive(step);\n setCurrentStep(step);\n }\n };\n\n // =========================\n // Private methods\n // =========================\n\n /**\n * Executes the generation of the GraphQL endpoint from the GraphQL schema shapes.\n * @param {GraphqlEndpointConfiguration} endpointConfiguration The endpoint configuration.\n * @returns {Promise<void>}\n */\n const generateEndpointFromGraphqlShapes = (endpointConfiguration) => {\n $scope.generatingEndpoint = true;\n const endpointCreateRequest = endpointConfiguration.toCreateEndpointFromShapesRequest($scope.selectedSourceRepository.value);\n let generationReport;\n return GraphqlService.generateEndpointFromGraphqlShapes($repositories.getActiveRepository(), endpointCreateRequest)\n .then((endpointGenerationReportList) => {\n generationReport = endpointGenerationReportList;\n })\n .catch((error) => {\n toastr.error(getError(error));\n })\n .finally(() => {\n GraphqlContextService.endpointGenerated(generationReport);\n $scope.generatingEndpoint = false;\n });\n };\n\n /**\n * Executes the generation of the GraphQL endpoint from the ontologies.\n * @param {GraphqlEndpointConfiguration} endpointConfiguration The endpoint configuration.\n * @returns {Promise<void>}\n */\n const generateEndpointFromOntologies = (endpointConfiguration) => {\n $scope.generatingEndpoint = true;\n const endpointCreateRequest = endpointConfiguration.toCreateEndpointFromOwlRequest($scope.selectedSourceRepository.value);\n let generationReport;\n return GraphqlService.generateEndpointFromOwl($repositories.getActiveRepository(), endpointCreateRequest)\n .then((endpointGenerationReport) => {\n generationReport = endpointGenerationReport;\n })\n .catch((error) => {\n toastr.error(getError(error));\n })\n .finally(() => {\n $scope.generatingEndpoint = false;\n GraphqlContextService.endpointGenerated(generationReport);\n });\n };\n\n /**\n * Handles the generation of the GraphQL endpoint. There are two options for generating the endpoint:\n * 1. Generate the endpoint from the GraphQL shacl shapes.\n * 2. Generate the endpoint from ontologies and/or shacl shapes.\n * @param {GraphqlEndpointConfiguration} endpointConfiguration The endpoint configuration.\n */\n const onGenerateEndpoint = (endpointConfiguration) => {\n const generateFromGraphqlShapes = endpointConfiguration.schemaSourceType === SchemaSourceType.GRAPHQL_SCHEMA_SHAPES;\n const generateFromOntologies = endpointConfiguration.schemaSourceType === SchemaSourceType.SHACL_SHAPES;\n if (generateFromGraphqlShapes) {\n return generateEndpointFromGraphqlShapes(endpointConfiguration);\n } else if (generateFromOntologies) {\n return generateEndpointFromOntologies(endpointConfiguration);\n }\n };\n\n /**\n * Handles the returning to the previous step in the create endpoint wizard.\n */\n const onPreviousEndpointCreationStep = () => {\n setCurrentStep($scope.wizardModel.previousStep());\n };\n\n /**\n * Handles the transition to the next step in the create endpoint wizard.\n */\n const onNextEndpointCreationStep = () => {\n setCurrentStep($scope.wizardModel.nextStep());\n };\n\n /**\n * Handles the termination of the create endpoint wizard.\n */\n const onCancelEndpointCreation = () => {\n $location.path(endpointUrl.ENDPOINT_MANAGEMENT);\n };\n\n /**\n * Handles the finish of the endpoint generation workflow by redirecting to the endpoint management view.\n */\n const onFinishEndpointGeneration = () => {\n $location.path(endpointUrl.ENDPOINT_MANAGEMENT);\n };\n\n /**\n * Opens the GraphQL Playground with the selected endpoint in a new browser tab.\n * @param {EndpointGenerationReport} endpointInfo The endpoint info.\n */\n const onExploreEndpointInPlayground = (endpointInfo) => {\n const url = resolvePlaygroundUrlWithEndpoint(endpointInfo.endpointId);\n GraphqlContextService.setSelectedEndpoint(endpointInfo);\n window.open(url, '_blank', 'noopener,noreferrer');\n };\n\n /**\n * Opens the endpoint generation report modal.\n * @param {EndpointGenerationReport} endpointReport\n * @returns {Promise<void>}\n */\n const onShowEndpointReport = (endpointReport) => {\n return $uibModal.open({\n templateUrl: 'js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html',\n controller: 'EndpointGenerationResultFailureModalController',\n windowClass: 'endpoint-generation-failure-result-modal',\n size: 'lg',\n backdrop: 'static',\n keyboard: false,\n resolve: {\n data: () => {\n return {\n endpointReport,\n };\n },\n },\n }).result;\n };\n\n /**\n * Sets the current step in the create endpoint wizard.\n * @param {WizardStep} step The current step.\n */\n const setCurrentStep = (step) => {\n $scope.currentStep = step;\n };\n\n /**\n * Handles the change of the active repository.\n * @param {object} repositoryObject\n */\n const getActiveRepositoryObjectHandler = (repositoryObject) => {\n if (repositoryObject) {\n onInit();\n }\n };\n\n /**\n * Loads all repository objects and sets the selected source repository to be the same as the active repository.\n */\n const setupSourceRepositories = () => {\n $scope.sourceRepositories = $repositories.getRepositoriesAsSelectMenuOptions(\n () => $repositories.getLocalReadableGraphdbRepositories(),\n );\n const activeRepository = $repositories.getActiveRepository();\n $scope.selectedSourceRepository = $scope.sourceRepositories\n .find((repo) => repo.value === activeRepository);\n GraphqlContextService.updateSourceRepository($scope.selectedSourceRepository.value);\n $scope.previousSelectedSourceRepository = $scope.selectedSourceRepository;\n };\n\n /**\n * Initializes the create endpoint wizard with the steps.\n */\n const setupWizard = () => {\n $scope.wizardModel = new Wizard()\n .addStep(new SelectSchemaSourceStep())\n .addStep(new ConfigureEndpointStep())\n .addStep(new GenerateEndpointStep());\n setCurrentStep($scope.wizardModel.getActiveStep());\n };\n\n /**\n * Unsubscribes all watchers.\n */\n const unsubscribeAll = () => {\n subscriptions.forEach((subscription) => subscription());\n };\n\n // =========================\n // Subscriptions\n // =========================\n\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.GENERATE_ENDPOINT, onGenerateEndpoint));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.PREVIOUS_ENDPOINT_CREATION_STEP, onPreviousEndpointCreationStep));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.NEXT_ENDPOINT_CREATION_STEP, onNextEndpointCreationStep));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.CANCEL_ENDPOINT_CREATION, onCancelEndpointCreation));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.FINISH_GENERATION_WORKFLOW, onFinishEndpointGeneration));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.EXPLORE_ENDPOINT_IN_PLAYGROUND, onExploreEndpointInPlayground));\n subscriptions.push(GraphqlContextService.subscribe(GraphqlEventName.OPEN_ENDPOINT_GENERATION_REPORT, onShowEndpointReport));\n subscriptions.push($scope.$watch($scope.getActiveRepositoryObject, getActiveRepositoryObjectHandler));\n $scope.$on('$destroy', unsubscribeAll);\n\n // =========================\n // Initialization\n // =========================\n\n const onInit = () => {\n // Reinitialize the wizard only if the source repository is not selected. From this point on, the wizard will\n // be reinitialized only when the user changes the source repository.\n if (!$scope.selectedSourceRepository) {\n GraphqlContextService.createEndpointConfig();\n setupWizard();\n setupSourceRepositories();\n }\n };\n}\n"],"names":["ShuttleMultiselect","restrict","scope","options","selected","labels","templateUrl","link","$scope","subscriptions","searchLeft","availableOptions","selectedOptions","selectOption","option","push","filter","opt","updateSelected","selectAll","concat","deselectOption","deselectAll","$on","removeAllSubscribers","forEach","subscription","cloneDeep","length","find","selectedOption","id","angular","module","directive","$inject","GenerateEndpointComponent","ModalService","$uibModal","$translate","$repositories","GraphqlService","GraphqlContextService","stepDefinition","endpointConfiguration","undefined","endpointsCountToGenerate","endpointsOverview","activeRepository","getActiveRepository","generateFromGraphqlSchemaShapes","generatingEndpoint","generationReport","endpointUrl","back","previousEndpointCreationStep","cancel","title","instant","confirmDeleteMessage","openConfirmation","cancelEndpointCreation","generateEndpoint","finishGenerationWorkflow","showEndpointReport","endpointReport","openEndpointGenerationReport","exploreInPlayground","exploreEndpointInPlayground","subscribe","GraphqlEventName","ENDPOINT_GENERATED","onDestroy","getNewEndpoint","hasSelectedGraphqlSchemaShapes","getEndpointsCountToGenerate","getGenerateEndpointsOverview","logger","LoggerProvider","SelectSchemaSourcesComponent","$q","toastr","RDF4JRepositoriesService","element","schemaSourceType","SchemaSourceType","ontologyShaclShapeSource","OntologyShaclShapeSource","shapesMultiselectLabels","availableOptionsTitle","availableOptionsFilter","selectedOptionsTitle","selectedOptionsCount","selectTooltip","selectAllLabel","selectAllTooltip","deselectTooltip","deselectAllLabel","deselectAllTooltip","graphsMultiselectLabels","prefixList","loadingPrefixes","graphs","shaclShapeGraphs","graphqlSchemaShapes","allGraphs","loadingGraphs","next","nextEndpointCreationStep","onSchemaSourceTypeChange","generateFromShaclShapes","ontotlogyShaclShapeSource","USE_ALL_GRAPHS","selectedGraphs","USE_SHACL_SHAPE_GRAPH","PICK_GRAPHS","GraphListOptions","onOntologyShaclShapeSourceChange","owlOrShaclSourceType","canProceed","hasSelectedShapes","hasValidEndpointParameters","endpointParamsForm","$valid","GRAPHQL_SCHEMA_SHAPES","SHACL_SHAPES","hasSelectedGraphs","loadData","loadingData","all","getPrefixListAsSelectOptions","getSourceRepository","catch","error","getError","finally","getGraphs","getGraphqlSchemaShapes","getShaclShapeGraphs","then","prefixes","graphqlShapes","graphList","onSourceRepositoryUpdated","subscribeToEvents","SOURCE_REPOSITORY_UPDATED","newEndpoint","onEndpointConfigCreated","EndpointGenerationResultFailureModalController","$uibModalInstance","data","REPORT_FILE_NAME","downloadReport","reportData","JSON","stringify","toJSON","blob","Blob","type","url","URL","createObjectURL","a","document","createElement","href","download","endpointId","body","appendChild","click","removeChild","revokeObjectURL","deleteReport","deleteEndpointGenerationReport","close","dismiss","controller","ConfigureEndpointComponent","selectedSourceRepository","generationSettings","generationSettingsValid","showAdvancedSettings","handleValidityChange","isValid","endpointConfigurationSettingsValid","toggleAdvancedSettings","settings","getGraphqlGenerationSettings","CreateGraphqlEndpointViewCtrl","$location","sourceRepositories","previousSelectedSourceRepository","wizardModel","currentStep","onSelectedSourceRepositoryChange","selectedRepository","openConfirmationModal","message","confirmButtonKey","updateSourceRepository","value","createEndpointConfig","setupWizard","activateStep","step","setStepActive","setCurrentStep","onStepClick","isAPreviousStep","Wizard","addStep","SelectSchemaSourceStep","ConfigureEndpointStep","GenerateEndpointStep","getActiveStep","GENERATE_ENDPOINT","generateFromGraphqlShapes","generateFromOntologies","endpointCreateRequest","toCreateEndpointFromShapesRequest","generateEndpointFromGraphqlShapes","endpointGenerationReportList","endpointGenerated","toCreateEndpointFromOwlRequest","generateEndpointFromOwl","endpointGenerationReport","generateEndpointFromOntologies","PREVIOUS_ENDPOINT_CREATION_STEP","onPreviousEndpointCreationStep","previousStep","NEXT_ENDPOINT_CREATION_STEP","onNextEndpointCreationStep","nextStep","CANCEL_ENDPOINT_CREATION","onCancelEndpointCreation","path","ENDPOINT_MANAGEMENT","FINISH_GENERATION_WORKFLOW","onFinishEndpointGeneration","EXPLORE_ENDPOINT_IN_PLAYGROUND","endpointInfo","resolvePlaygroundUrlWithEndpoint","setSelectedEndpoint","window","open","OPEN_ENDPOINT_GENERATION_REPORT","windowClass","size","backdrop","keyboard","resolve","result","$watch","getActiveRepositoryObject","repositoryObject","onInit","unsubscribeAll","setupSourceRepositories","getRepositoriesAsSelectMenuOptions","getLocalReadableGraphdbRepositories","repo"],"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-TR1");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.314018d0afb1af150ddf.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-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 +1 @@
1
- {"version":3,"file":"99448.314018d0afb1af150ddf.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-TR1\");\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.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":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_id__=99893;export const __webpack_ids__=[15204,15435,56139,71156,88864,99893];export const __webpack_modules__={15204:(e,t,r)=>{r.r(t),r.d(t,{DEFAULT_SPARQL_QUERY:()=>a,SparqlTemplateInfo:()=>s});const a="PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nPREFIX ex: <http://example.com#>\nDELETE {\n ?subject ex:myPredicate ?oldValue .\n} INSERT {\n ?subject ex:myPredicate ?newValue .\n} WHERE {\n ?id rdf:type ex:MyType .\n ?subject ex:isRelatedTo ?id .\n}\n";class s{constructor(e=a,t=!0,r=void 0){this.query=e,this.templateID=r,this.isNewTemplate=t,this.templateExist=!1,this.isValidTemplateId=!0,this.isValidQuery=!0,this.isValidQueryMode=!0}}},15435:(e,t,r)=>{r.r(t),r.d(t,{RenderingMode:()=>a});const a={YASGUI:"mode-yasgui",YASQE:"mode-yasqe",YASR:"mode-yasr"}},56139:()=>{function e(e,t){return{showToastMessageWithDelay:function(r){return new Promise(a=>{e.success(t.instant(r)),setTimeout(a,300)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",e),e.$inject=["toastr","$translate"]},71156:(e,t,r)=>{r.r(t),r.d(t,{YasqeMode:()=>a});const a={WRITE:"WRITE",READ:"READ",PROTECTED:"PROTECTED"}},88864:(e,t,r)=>{r.r(t),r.d(t,{SparqlTemplateError:()=>a});class a extends Error{}},99893:(e,t,r)=>{r.r(t),r(82493),r(76933),r(83351),r(56139),r(85369),r(81655);var a=r(69937),s=r(15204),n=r(88864),i=r(71156),o=r(15435),l=r(85727),p=r(57154);const m=r(304).LoggerProvider.logger;function c(e,t,r,a,s,n,i){e.pluginName="sparql-template",e.setPluginIsActive=function(t){e.pluginIsActive=t},e.getSparqlTemplates=function(){n.isLicenseValid()&&t.getActiveRepository()&&!t.isActiveRepoOntopType()&&!t.isActiveRepoFedXType()?r.getSparqlTemplates(t.getActiveRepository()).success(function(t){e.sparqlTemplateIds=t}).error(function(e){const t=getError(e);a.error(t,i.instant("sparql.template.get.templates.error"))}):e.sparqlTemplateIds=[]},e.deleteTemplate=function(n){s.openSimpleModal({title:i.instant("common.warning"),message:i.instant("sparql.template.delete.template.warning",{templateID:n}),warning:!0}).result.then(function(){r.deleteSparqlTemplate(n,t.getActiveRepository()).success(function(){a.success(n,i.instant("sparql.template.delete.template.success")),e.getSparqlTemplates()}).error(function(e){a.error(getError(e),i.instant("sparql.template.delete.template.failure",{templateID:n}))})})};const o=[],l=p.ServiceProvider.get(p.RepositoryContextService).onSelectedRepositoryChanged(()=>e.getSparqlTemplates());o.push(l),o.push(e.$on("$destroy",()=>{o.forEach(e=>e())}))}function u(e,t,r,c,u,d,g,T,f,q,h,y,I,v,E,S){e.initialQuery=s.DEFAULT_SPARQL_QUERY,e.sparqlTemplateInfo=new s.SparqlTemplateInfo(e.initialQuery),e.title="",e.saveOrUpdateExecuted=!1,e.isDirty=!1,e.language=S.getLanguage(),e.canEditActiveRepo=!1;let w=!0,R=!0;e.saveTemplate=function(){e.saveOrUpdateExecuted=!0,x()||L();const t=e.sparqlTemplateInfo.isNewTemplate?A:b;k(e.sparqlTemplateInfo).then(M).then(P).then(V).then(t).then(C).catch(e=>{e instanceof n.SparqlTemplateError||m.error(e)})},e.isTemplateIdValid=e=>h.isValidIri(e,e.toString()),e.markDirty=()=>{e.isDirty=!0},e.markPristine=()=>{e.isDirty=!1};const D=(t,r=s.DEFAULT_SPARQL_QUERY)=>{e.sparqlTemplateInfo.query=r,e.sparqlTemplateInfo.templateID=U(),e.sparqlTemplateInfo.isNewTemplate=!e.sparqlTemplateInfo.templateID,Y(),e.yasguiConfig={showEditorTabs:!1,showToolbar:!1,showResultTabs:!1,showYasqeActionButtons:!1,showYasqeResizer:!1,yasqeActionButtons:l.DISABLE_YASQE_BUTTONS_CONFIGURATION,showQueryButton:!1,initialQuery:e.sparqlTemplateInfo.query,componentId:"sparql-template",prefixes:t,render:o.RenderingMode.YASQE,maxPersistentResponseSize:0,yasqeMode:e.canEditActiveRepo?i.YasqeMode.WRITE:i.YasqeMode.READ}},A=e=>$(e).then(_).then(Q),$=t=>f.getSparqlTemplates(u.getActiveRepository()).then(function(r){return t.templateExist=r.data.find(t=>t===e.sparqlTemplateInfo.templateID),t}).catch(function(e){const t=getError(e);return c.error(t,I.instant("sparql.template.get.templates.error")),Promise.reject(new n.SparqlTemplateError("Failed to retrieve sparql templates."))}),P=e=>N().isQueryValid().then(t=>(e.isValidQuery=t,e.isValidQuery?e:Promise.reject(new n.SparqlTemplateError("Invalid query.")))),x=()=>e.sparqlTemplateInfo.isNewTemplate||e.isDirty,_=e=>new Promise((t,r)=>{if(e.templateExist){const s=(0,a.Gz)(I.instant("sparql.template.existing.template.error",{templateID:e.templateID})),i=I.instant("common.confirm.save");j(i,s,()=>t(e),()=>r(new n.SparqlTemplateError("Save not confirmed.")))}else t(e)});function Q(t){return f.createSparqlTemplate(t,u.getActiveRepository()).then(function(){return t.isNewTemplate=!1,e.markPristine(),c.success(t.templateID,I.instant("save.sparql.template.success.msg")),t}).catch(function(e){const r=getError(e);return c.error(r,I.instant("save.sparql.template.failure.msg",{templateID:t.templateID})),Promise.reject(new n.SparqlTemplateError(`Failed to save the new template: ${t.templateID}`))})}const b=t=>f.updateSparqlTemplate(t,u.getActiveRepository()).then(function(){return t.isNewTemplate=!1,e.markPristine(),c.success(e.sparqlTemplateInfo.templateID,I.instant("update.sparql.template.success.msg")),t}).catch(function(e){const r=getError(e);return c.error(r,I.instant("save.sparql.template.failure.msg",{templateID:t.templateID})),Promise.reject(new n.SparqlTemplateError(`Failed to update the template: ${t.templateID}`))}),M=e=>N().getQuery().then(t=>(e.query=t,e)),V=e=>N().getQueryMode().then(t=>(e.isValidQueryMode="update"===t,e.isValidQueryMode?e:Promise.reject(new n.SparqlTemplateError("Query mode is not valid.")))),k=t=>new Promise((r,a)=>{t.templateID?(t.isValidTemplateId=e.isTemplateIdValid(t.templateID),t.isValidTemplateId?r(t):a(new n.SparqlTemplateError("Template identifier is not valid."))):a(new n.SparqlTemplateError("A required template identifier is missing."))}),C=()=>{setTimeout(function(){L()},1e3)},U=()=>{const e=r.hash()||"";return(r.search().templateID||"")+(e?`#${e}`:"")},Y=()=>{e.title=(e.sparqlTemplateInfo.templateID?I.instant("edit"):I.instant("common.create.btn"))+" "+I.instant("view.sparql.template.title")},L=()=>{r.url("/sparql-templates")},F=(t,r)=>{e.queryIsRunning=t,e.loaderMessage=e.queryIsRunning?r:""},N=()=>l.YasguiComponentDirectiveUtil.getOntotextYasguiElement("#query-editor"),j=(e,t,r,a)=>{y.openSimpleModal({title:e,message:t,warning:!0}).result.then(function(){angular.isFunction(r)&&r()},function(){angular.isFunction(a)&&a()})},O=()=>{window.removeEventListener("beforeunload",W),B.forEach(e=>e())},W=t=>{e.isDirty&&(t.returnValue=!0)},B=[],z=p.ServiceProvider.get(p.RepositoryContextService).onSelectedRepositoryChanged(e=>{e&&(R?R=!1:L())},()=>new Promise(function(t){if(e.sparqlTemplateInfo.isNewTemplate)return void t(!0);const r=()=>{e.isDirty=!1,t(!0)};if(e.isDirty){const e=()=>{t(!1)},a=I.instant("common.confirm"),s=I.instant("common.unsaved.changes");j(a,s,r,e)}else r()}));B.push(z),B.push(e.$on("queryChanged",(t,r)=>{r.dirty?e.markDirty():e.markPristine()})),B.push(t.$on("$translateChangeSuccess",()=>{e.language=S.getLanguage(),Y()})),B.push(e.$on("$locationChangeStart",(t,a)=>{if(e.isDirty){t.preventDefault();const e=I.instant("common.confirm"),s=I.instant("common.unsaved.changes");j(e,s,()=>{O();const e=r.absUrl().length-r.url().length,t=a.substring(e);r.path(t)})}else O()})),B.push(e.$on("$destroy",O)),window.addEventListener("beforeunload",W);B.push(e.$watch(e.getActiveRepositoryObject,t=>{t&&(e.canEditActiveRepo=e.canWriteActiveRepo(),w&&((()=>{const t=`${I.instant("common.refreshing.namespaces")}. ${I.instant("common.extra.message")}`;F(!0,t),e.sparqlTemplateInfo.templateID=U();const r=u.getActiveRepository();e.sparqlTemplateInfo.templateID?Promise.all([u.getPrefixes(r),f.getSparqlTemplate(e.sparqlTemplateInfo.templateID,r)]).then(([e,t])=>D(e,t.data)).finally(()=>F(!1)):u.getPrefixes(r).then(e=>D(e)).finally(()=>F(!1))})(),w=!1))}))}angular.module("graphdb.framework.sparql-template.controllers",["ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.rest.monitoring.service","toastr","graphdb.framework.utils.event-emitter-service"],["graphdb.framework.utils.notifications"]).controller("SparqlTemplatesCtrl",c).controller("SparqlTemplateCreateCtrl",u),c.$inject=["$scope","$repositories","SparqlTemplatesRestService","toastr","ModalService","$licenseService","$translate"],u.$inject=["$scope","$rootScope","$location","toastr","$repositories","$window","$timeout","$interval","SparqlTemplatesRestService","RDF4JRepositoriesRestService","UriUtils","ModalService","$translate","$q","EventEmitterService","$languageService"]}};
2
+ //# sourceMappingURL=99893.6ac254ca3f59996b2a52.bundle.js.map