graphdb-workbench 3.1.0-TR7 → 3.1.0-TR9

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 (229) hide show
  1. package/dist/10142.50847c485a7f78a9840b.bundle.js +2 -0
  2. package/dist/10142.50847c485a7f78a9840b.bundle.js.map +1 -0
  3. package/dist/{12396.75b93ca806a447ab1996.bundle.js → 12396.cbd351b8adc2b5af44ae.bundle.js} +2 -2
  4. package/dist/{12396.75b93ca806a447ab1996.bundle.js.map → 12396.cbd351b8adc2b5af44ae.bundle.js.map} +1 -1
  5. package/dist/{15535.19ce46b0a4b36dd0f96b.bundle.js → 15535.4f979f5a7dbe8a2658e4.bundle.js} +2 -2
  6. package/dist/{15535.19ce46b0a4b36dd0f96b.bundle.js.map → 15535.4f979f5a7dbe8a2658e4.bundle.js.map} +1 -1
  7. package/dist/{16162.a3441017ce868475ef7c.bundle.js → 16162.e14694e038f17d230885.bundle.js} +2 -2
  8. package/dist/{16162.a3441017ce868475ef7c.bundle.js.map → 16162.e14694e038f17d230885.bundle.js.map} +1 -1
  9. package/dist/{20287.ea17646466c254199b21.bundle.js → 20287.1e9afb2423c3fe873e36.bundle.js} +2 -2
  10. package/dist/{20287.ea17646466c254199b21.bundle.js.map → 20287.1e9afb2423c3fe873e36.bundle.js.map} +1 -1
  11. package/dist/{21136.8ef598aef32fdc172c2c.bundle.js → 21136.5a1250377772cb3195a3.bundle.js} +2 -2
  12. package/dist/{21136.8ef598aef32fdc172c2c.bundle.js.map → 21136.5a1250377772cb3195a3.bundle.js.map} +1 -1
  13. package/dist/{21142.f1544ad2137f8de986d3.bundle.js → 21142.9dcd7e03e12facac1086.bundle.js} +2 -2
  14. package/dist/{21142.f1544ad2137f8de986d3.bundle.js.map → 21142.9dcd7e03e12facac1086.bundle.js.map} +1 -1
  15. package/dist/{21170.c0de17dbd2943fd44ce4.bundle.js → 21170.d94a531bf4739c9b8605.bundle.js} +2 -2
  16. package/dist/{21170.c0de17dbd2943fd44ce4.bundle.js.map → 21170.d94a531bf4739c9b8605.bundle.js.map} +1 -1
  17. package/dist/{21195.7800fd930cfbe20d39d9.bundle.js → 21195.49a6f9b0fdea13e4fa1a.bundle.js} +2 -2
  18. package/dist/{21195.7800fd930cfbe20d39d9.bundle.js.map → 21195.49a6f9b0fdea13e4fa1a.bundle.js.map} +1 -1
  19. package/dist/{25747.c589e0dddaf47030673f.bundle.js → 25747.56693e59322edce9791b.bundle.js} +2 -2
  20. package/dist/{25747.c589e0dddaf47030673f.bundle.js.map → 25747.56693e59322edce9791b.bundle.js.map} +1 -1
  21. package/dist/{27580.7dc5844c4afaabfeaae7.bundle.js → 27580.46e0085c4f0549e4bb9f.bundle.js} +2 -2
  22. package/dist/{27580.7dc5844c4afaabfeaae7.bundle.js.map → 27580.46e0085c4f0549e4bb9f.bundle.js.map} +1 -1
  23. package/dist/{31636.f50ca2ade67b87d63f12.bundle.js → 31636.825216a6a817aea7c2e5.bundle.js} +2 -2
  24. package/dist/{31636.f50ca2ade67b87d63f12.bundle.js.map → 31636.825216a6a817aea7c2e5.bundle.js.map} +1 -1
  25. package/dist/{32489.9307b8976b5b3187223e.bundle.js → 32489.ff95b720e4c6b3fb21d6.bundle.js} +2 -2
  26. package/dist/{32489.9307b8976b5b3187223e.bundle.js.map → 32489.ff95b720e4c6b3fb21d6.bundle.js.map} +1 -1
  27. package/dist/{33524.10558ac848ce64b2b722.bundle.js → 33524.35fe079bcb99a78babaf.bundle.js} +2 -2
  28. package/dist/33524.35fe079bcb99a78babaf.bundle.js.map +1 -0
  29. package/dist/36644.b8ead0ab81253aa03ade.bundle.js +2 -0
  30. package/dist/36644.b8ead0ab81253aa03ade.bundle.js.map +1 -0
  31. package/dist/{38360.53936cc1df95e7a1b39d.bundle.js → 38360.d06f8ac25d4347b8c94a.bundle.js} +2 -2
  32. package/dist/{38360.53936cc1df95e7a1b39d.bundle.js.map → 38360.d06f8ac25d4347b8c94a.bundle.js.map} +1 -1
  33. package/dist/{38644.e8d7a8ff0b538f59f6c3.bundle.js → 38644.1370edd16031835a57fc.bundle.js} +2 -2
  34. package/dist/{38644.e8d7a8ff0b538f59f6c3.bundle.js.map → 38644.1370edd16031835a57fc.bundle.js.map} +1 -1
  35. package/dist/{38843.9124577a5f2e542b8135.bundle.js → 38843.1b8dad7984c1368e0f26.bundle.js} +2 -2
  36. package/dist/{38843.9124577a5f2e542b8135.bundle.js.map → 38843.1b8dad7984c1368e0f26.bundle.js.map} +1 -1
  37. package/dist/{39518.506568d61f094739e414.bundle.js → 39518.460c8138d3b1479470eb.bundle.js} +2 -2
  38. package/dist/{39518.506568d61f094739e414.bundle.js.map → 39518.460c8138d3b1479470eb.bundle.js.map} +1 -1
  39. package/dist/{39539.bf87d8eda9342eba37cf.bundle.js → 39539.e69068aea8046d154307.bundle.js} +2 -2
  40. package/dist/{39539.bf87d8eda9342eba37cf.bundle.js.map → 39539.e69068aea8046d154307.bundle.js.map} +1 -1
  41. package/dist/39874.6ca23ead080b52dc1bc6.bundle.js +2 -0
  42. package/dist/39874.6ca23ead080b52dc1bc6.bundle.js.map +1 -0
  43. package/dist/{41453.cbb85e8825e15d9875dc.bundle.js → 41453.f2e20c7c42ea9e9ca281.bundle.js} +2 -2
  44. package/dist/{41453.cbb85e8825e15d9875dc.bundle.js.map → 41453.f2e20c7c42ea9e9ca281.bundle.js.map} +1 -1
  45. package/dist/{42129.5369407e5c39404263ed.bundle.js → 42129.8894dd599262ed62f5f9.bundle.js} +2 -2
  46. package/dist/{42129.5369407e5c39404263ed.bundle.js.map → 42129.8894dd599262ed62f5f9.bundle.js.map} +1 -1
  47. package/dist/{44444.8b07608bcd9f51e6ce1c.bundle.js → 44444.751ec83bdd2a4fd15395.bundle.js} +2 -2
  48. package/dist/{44444.8b07608bcd9f51e6ce1c.bundle.js.map → 44444.751ec83bdd2a4fd15395.bundle.js.map} +1 -1
  49. package/dist/{5470.27701a523ebe9e973fc2.bundle.js → 5470.7c17c7d3b58c8c0d0786.bundle.js} +2 -2
  50. package/dist/5470.7c17c7d3b58c8c0d0786.bundle.js.map +1 -0
  51. package/dist/{55862.f9264ede1f9e8641e979.bundle.js → 55862.4ff9c451d6d5b20139aa.bundle.js} +2 -2
  52. package/dist/{55862.f9264ede1f9e8641e979.bundle.js.map → 55862.4ff9c451d6d5b20139aa.bundle.js.map} +1 -1
  53. package/dist/{58306.afb4bed817c836e63e58.bundle.js → 58306.448be402acad05bbb584.bundle.js} +2 -2
  54. package/dist/{58306.afb4bed817c836e63e58.bundle.js.map → 58306.448be402acad05bbb584.bundle.js.map} +1 -1
  55. package/dist/{66014.5e25419235a79d858595.bundle.js → 66014.336bc4291da2fbc96cd1.bundle.js} +2 -2
  56. package/dist/66014.336bc4291da2fbc96cd1.bundle.js.map +1 -0
  57. package/dist/{67888.859075c676ffe04298bf.bundle.js → 67888.17384107edbc72dadc2d.bundle.js} +2 -2
  58. package/dist/{67888.859075c676ffe04298bf.bundle.js.map → 67888.17384107edbc72dadc2d.bundle.js.map} +1 -1
  59. package/dist/{72379.86c189a27a254f8ad22b.bundle.js → 72379.275ae82f8396d9088028.bundle.js} +2 -2
  60. package/dist/{72379.86c189a27a254f8ad22b.bundle.js.map → 72379.275ae82f8396d9088028.bundle.js.map} +1 -1
  61. package/dist/{73667.350239676e59334fff54.bundle.js → 73667.e746a61fe0db60bf2b6a.bundle.js} +2 -2
  62. package/dist/{73667.350239676e59334fff54.bundle.js.map → 73667.e746a61fe0db60bf2b6a.bundle.js.map} +1 -1
  63. package/dist/{73793.fcde01f064aa64e84b9c.bundle.js → 73793.05e78e0c3ccbe1ad5f09.bundle.js} +2 -2
  64. package/dist/{73793.fcde01f064aa64e84b9c.bundle.js.map → 73793.05e78e0c3ccbe1ad5f09.bundle.js.map} +1 -1
  65. package/dist/{75282.5094de293638333c7097.bundle.js → 75282.4033542c93f0fda84c66.bundle.js} +2 -2
  66. package/dist/{75282.5094de293638333c7097.bundle.js.map → 75282.4033542c93f0fda84c66.bundle.js.map} +1 -1
  67. package/dist/{75849.d329e1cb6909ad19ab6e.bundle.js → 75849.fca2b927fc8d73fd31ee.bundle.js} +2 -2
  68. package/dist/{75849.d329e1cb6909ad19ab6e.bundle.js.map → 75849.fca2b927fc8d73fd31ee.bundle.js.map} +1 -1
  69. package/dist/{78250.a137ba2afa4989250f69.bundle.js → 78250.9032061f1de28529cc5b.bundle.js} +2 -2
  70. package/dist/{78250.a137ba2afa4989250f69.bundle.js.map → 78250.9032061f1de28529cc5b.bundle.js.map} +1 -1
  71. package/dist/79329.5e745025419b44e7a2f6.bundle.js +2 -0
  72. package/dist/79329.5e745025419b44e7a2f6.bundle.js.map +1 -0
  73. package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js +2 -0
  74. package/dist/82206.b3b37c3e0cc1aa18148c.bundle.js.map +1 -0
  75. package/dist/{82926.f01799164b6cc7a909a5.bundle.js → 82926.c948b5ffd52a13d07e9a.bundle.js} +2 -2
  76. package/dist/{82926.f01799164b6cc7a909a5.bundle.js.map → 82926.c948b5ffd52a13d07e9a.bundle.js.map} +1 -1
  77. package/dist/{86287.2a9cda65f67eb0a277d5.bundle.js → 86287.c47005c01ccbdfb1dc23.bundle.js} +2 -2
  78. package/dist/{86287.2a9cda65f67eb0a277d5.bundle.js.map → 86287.c47005c01ccbdfb1dc23.bundle.js.map} +1 -1
  79. package/dist/{9062.6f9de79a28c9bd48ec14.bundle.js → 9062.1ed9bc6c2668d65d1cfd.bundle.js} +2 -2
  80. package/dist/{9062.6f9de79a28c9bd48ec14.bundle.js.map → 9062.1ed9bc6c2668d65d1cfd.bundle.js.map} +1 -1
  81. package/dist/{95953.04709fa59d2ed50632d3.bundle.js → 95953.55471092942564b75541.bundle.js} +2 -2
  82. package/dist/95953.55471092942564b75541.bundle.js.map +1 -0
  83. package/dist/{99448.08fbd142db866ed20f97.bundle.js → 99448.c6f1cb6efb46d34452fa.bundle.js} +2 -2
  84. package/dist/{99448.08fbd142db866ed20f97.bundle.js.map → 99448.c6f1cb6efb46d34452fa.bundle.js.map} +1 -1
  85. package/dist/api/ontotext-workbench-api.d.ts +1 -0
  86. package/dist/api/ontotext-workbench-api.js +1 -1
  87. package/dist/api/ontotext-workbench-api.js.map +1 -1
  88. package/dist/api/services/security/authentication-storage.service.d.ts +3 -0
  89. package/dist/api/services/window/index.d.ts +1 -0
  90. package/dist/api/services/window/window.service.d.ts +4 -10
  91. package/dist/i18n/locale-en.json +5 -1
  92. package/dist/i18n/locale-fr.json +5 -1
  93. package/dist/index.html +8 -8
  94. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  95. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  96. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  97. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  98. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  99. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  100. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +1 -1
  101. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  102. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  103. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  104. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  105. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  106. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  107. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  108. package/dist/js/angular/graphql/templates/graphql-playground.html +1 -1
  109. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  110. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  111. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  112. package/dist/js/angular/security/templates/user.html +2 -2
  113. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  114. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  115. package/dist/js/angular/ttyg/templates/autocomplete-iri-discovery-search.html +1 -1
  116. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  117. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  118. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  119. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  120. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +4 -4
  121. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  122. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  123. package/dist/legacyWorkbench.5ed5aeadc238c6ce65fa.js +3 -0
  124. package/dist/{legacyWorkbench.cbccad23cea068ec41a9.js.map → legacyWorkbench.5ed5aeadc238c6ce65fa.js.map} +1 -1
  125. package/dist/{main.224d2a416195ee7c3d4a.js → main.95051b60e5b08481a1ff.js} +3 -3
  126. package/dist/main.95051b60e5b08481a1ff.js.map +1 -0
  127. package/dist/pages/aclmanagement.html +2 -2
  128. package/dist/pages/autocomplete.html +1 -1
  129. package/dist/pages/choose-repository-type.html +1 -1
  130. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  131. package/dist/pages/create-index.html +1 -1
  132. package/dist/pages/dependencies.html +1 -1
  133. package/dist/pages/domainRangeInfo.html +2 -2
  134. package/dist/pages/edit.html +1 -1
  135. package/dist/pages/explore.html +1 -1
  136. package/dist/pages/export.html +1 -1
  137. package/dist/pages/find.html +1 -1
  138. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  139. package/dist/pages/graphs-visualizations.html +7 -7
  140. package/dist/pages/guides.html +1 -1
  141. package/dist/pages/import.html +2 -2
  142. package/dist/pages/jdbc-create.html +1 -1
  143. package/dist/pages/login.html +1 -1
  144. package/dist/pages/monitor/backup-and-restore.html +1 -1
  145. package/dist/pages/monitor/queries.html +1 -1
  146. package/dist/pages/monitor/resources.html +1 -1
  147. package/dist/pages/namespaces.html +2 -2
  148. package/dist/pages/plugins.html +1 -1
  149. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  150. package/dist/pages/rdfrank.html +2 -2
  151. package/dist/pages/repositories.html +1 -1
  152. package/dist/pages/repository.html +1 -1
  153. package/dist/pages/similarity-indexes.html +1 -1
  154. package/dist/pages/sparql-editor.html +1 -1
  155. package/dist/pages/sparql-template-create.html +1 -1
  156. package/dist/pages/ux-test1.html +2 -2
  157. package/dist/pages/webapi.html +2 -2
  158. package/dist/plugins.js +1 -1
  159. package/dist/res/swagger5/index.html +11 -11
  160. package/dist/shared-components/cjs/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.cjs.js.map +1 -1
  161. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js +1 -1
  162. package/dist/shared-components/cjs/onto-footer_6.cjs.entry.js.map +1 -1
  163. package/dist/shared-components/cjs/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.cjs.js.map +1 -1
  164. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js +1 -1
  165. package/dist/shared-components/cjs/onto-language-selector_9.cjs.entry.js.map +1 -1
  166. package/dist/shared-components/cjs/onto-layout.cjs.entry.js +1 -1
  167. package/dist/shared-components/cjs/onto-layout.cjs.entry.js.map +1 -1
  168. package/dist/shared-components/cjs/onto-layout.entry.cjs.js.map +1 -1
  169. package/dist/shared-components/collection/components/onto-footer/onto-footer.js +1 -1
  170. package/dist/shared-components/collection/components/onto-footer/onto-footer.js.map +1 -1
  171. package/dist/shared-components/collection/components/onto-header/onto-header.js +1 -1
  172. package/dist/shared-components/collection/components/onto-header/onto-header.js.map +1 -1
  173. package/dist/shared-components/collection/components/onto-layout/onto-layout.js +1 -1
  174. package/dist/shared-components/collection/components/onto-layout/onto-layout.js.map +1 -1
  175. package/dist/shared-components/collection/components/onto-license-alert/onto-license-alert.js +1 -1
  176. package/dist/shared-components/collection/components/onto-license-alert/onto-license-alert.js.map +1 -1
  177. package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js +1 -1
  178. package/dist/shared-components/collection/components/onto-operations-notification/onto-operations-notification.js.map +1 -1
  179. package/dist/shared-components/collection/components/onto-toastr/onto-toastr.js +1 -1
  180. package/dist/shared-components/collection/components/onto-toastr/onto-toastr.js.map +1 -1
  181. package/dist/shared-components/collection/components/onto-user-login/onto-user-login.js +1 -1
  182. package/dist/shared-components/collection/components/onto-user-login/onto-user-login.js.map +1 -1
  183. package/dist/shared-components/esm/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.js.map +1 -1
  184. package/dist/shared-components/esm/onto-footer_6.entry.js +1 -1
  185. package/dist/shared-components/esm/onto-footer_6.entry.js.map +1 -1
  186. package/dist/shared-components/esm/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.js.map +1 -1
  187. package/dist/shared-components/esm/onto-language-selector_9.entry.js +1 -1
  188. package/dist/shared-components/esm/onto-language-selector_9.entry.js.map +1 -1
  189. package/dist/shared-components/esm/onto-layout.entry.js +1 -1
  190. package/dist/shared-components/esm/onto-layout.entry.js.map +1 -1
  191. package/dist/shared-components/shared-components/onto-footer.onto-header.onto-navbar.onto-permission-banner.onto-toastr.onto-tooltip.entry.esm.js.map +1 -1
  192. package/dist/shared-components/shared-components/onto-language-selector.onto-license-alert.onto-operations-notification.onto-rdf-search.onto-repository-selector.onto-search-icon.onto-search-resource-input.onto-user-login.onto-user-menu.entry.esm.js.map +1 -1
  193. package/dist/shared-components/shared-components/onto-layout.entry.esm.js.map +1 -1
  194. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js +1 -0
  195. package/dist/shared-components/shared-components/p-28a4ce8f.entry.js.map +1 -0
  196. package/dist/shared-components/shared-components/p-b2cc3f1e.entry.js +1 -0
  197. package/dist/shared-components/shared-components/p-b2cc3f1e.entry.js.map +1 -0
  198. package/dist/shared-components/shared-components/p-fa30a30a.entry.js +1 -0
  199. package/dist/shared-components/shared-components/p-fa30a30a.entry.js.map +1 -0
  200. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  201. package/dist/shared-components/types/components/onto-license-alert/onto-license-alert.d.ts +0 -1
  202. package/dist/shared-components/types/components/onto-operations-notification/onto-operations-notification.d.ts +0 -1
  203. package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/window/index.d.ts +1 -0
  204. package/dist/shared-components/types/home/ubuntu/workspace/PRO/GraphDB UI Jobs/graphdb-workbench-release/packages/shared-components/.stencil/api/src/services/window/window.service.d.ts +11 -0
  205. package/package.json +1 -1
  206. package/dist/10142.aeee60d794f7a5458f7e.bundle.js +0 -2
  207. package/dist/10142.aeee60d794f7a5458f7e.bundle.js.map +0 -1
  208. package/dist/33524.10558ac848ce64b2b722.bundle.js.map +0 -1
  209. package/dist/36644.836e5d041e0d9261c165.bundle.js +0 -2
  210. package/dist/36644.836e5d041e0d9261c165.bundle.js.map +0 -1
  211. package/dist/39874.d024d8dcc51bd55a9c59.bundle.js +0 -2
  212. package/dist/39874.d024d8dcc51bd55a9c59.bundle.js.map +0 -1
  213. package/dist/5470.27701a523ebe9e973fc2.bundle.js.map +0 -1
  214. package/dist/66014.5e25419235a79d858595.bundle.js.map +0 -1
  215. package/dist/79329.dd73d019c61e2414ed51.bundle.js +0 -2
  216. package/dist/79329.dd73d019c61e2414ed51.bundle.js.map +0 -1
  217. package/dist/82206.c251c5be920eed354934.bundle.js +0 -2
  218. package/dist/82206.c251c5be920eed354934.bundle.js.map +0 -1
  219. package/dist/95953.04709fa59d2ed50632d3.bundle.js.map +0 -1
  220. package/dist/legacyWorkbench.cbccad23cea068ec41a9.js +0 -3
  221. package/dist/main.224d2a416195ee7c3d4a.js.map +0 -1
  222. package/dist/shared-components/shared-components/p-ca82e5cb.entry.js +0 -1
  223. package/dist/shared-components/shared-components/p-ca82e5cb.entry.js.map +0 -1
  224. package/dist/shared-components/shared-components/p-d37f4d40.entry.js +0 -1
  225. package/dist/shared-components/shared-components/p-d37f4d40.entry.js.map +0 -1
  226. package/dist/shared-components/shared-components/p-e101f18e.entry.js +0 -1
  227. package/dist/shared-components/shared-components/p-e101f18e.entry.js.map +0 -1
  228. /package/dist/{legacyWorkbench.cbccad23cea068ec41a9.js.LICENSE.txt → legacyWorkbench.5ed5aeadc238c6ce65fa.js.LICENSE.txt} +0 -0
  229. /package/dist/{main.224d2a416195ee7c3d4a.js.LICENSE.txt → main.95051b60e5b08481a1ff.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=27580;export const __webpack_ids__=[27580];export const __webpack_modules__={27580:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});const o='<link href="css/cluster-nodes-configuration.css?v=3.1.0-TR7" rel="stylesheet"/> <div onto-loader-new ng-if="loader" class="create-cluster-loader" message="getLoaderMessage" size="100"></div> <div class="add-node-wrapper pull-right mb-1"> <button ng-click="addNode()" ng-disabled="editedNodeIndex !== undefined" class="btn btn-primary add-node-btn" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip\' | translate}}"> <i class="fa fa-plus"></i> {{\'cluster_management.update_cluster_group_dialog.actions.add_node\' | translate}} </button> </div> <div class="table-responsive"> <form name="form" id="updateClusterGroupForm"> <table class="cluster-group table table-striped table-hover cluster-group-table" aria-describedby="cluster group table"> <thead> <tr class="labels-row"> <th scope="col" class="index-column"> {{\'cluster_management.update_cluster_group_dialog.column.index\' | translate}} </th> <th scope="col" class="location-column"> {{\'cluster_management.update_cluster_group_dialog.column.location\' | translate}} </th> <th scope="col" class="info-column"> {{\'cluster_management.update_cluster_group_dialog.column.info\' | translate}} </th> <th scope="col" class="status-column"> {{\'cluster_management.update_cluster_group_dialog.column.status\' | translate}} </th> <th scope="col" class="empty-column"></th> <th scope="col" class="actions-column"></th> </tr> </thead> <tbody> <tr ng-if="!viewModel.length"> <td colspan="5" class="no-data"> {{\'cluster_management.update_cluster_group_dialog.messages.no_cluster\' | translate}} </td> </tr> <tr ng-repeat-start="node in viewModel track by $index" ng-if="0"></tr> <tr ng-if="$index !== editedNodeIndex" class="node preview-node-row" data-endpoint="{{node.endpoint}}" capture-height="$index" ng-class="{\'selected\': $index === selectedNode || $index === editedNodeIndex}"> <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td> <td class="location-cell data" ng-class="{\'deleting\': node.isDeleted, \'adding\': !node.item.address}"> <div class="location-item" id="endpoint-{{::node.index}}"> <span class="text-only">{{node.item.endpoint}}</span> <copy-to-clipboard text-to-copy="{{node.item.endpoint}}" custom-tooltip-style="true" ng-attr-target-selector="#endpoint-{{::node.index}}" custom-tooltip-text="{{\'cluster_management.update_cluster_group_dialog.copy_to_clipboard.copied.tooltip\' | translate}}"></copy-to-clipboard> </div> </td> <td class="info-cell data"> <span ng-if="node.isLocal"> {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span> </span> <span ng-if="node.item.nodeState"> {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class="status-cell data"> <div ng-if="!node.item.address" class="adding"> <i class="fa fa-circle-check status-icon"></i> {{\'cluster_management.update_cluster_group_dialog.new_node\' | translate}} </div> <div ng-if="node.isDeleted" class="deleting"> <i class="fa fa-xmark status-icon"></i> {{\'cluster_management.update_cluster_group_dialog.deleted_node\' | translate}} </div> </td> <td class="empty-cell"></td> <td class="actions-cell"> <div ng-if="editedNodeIndex === undefined && !node.isDeleted" class="actions-group"> <button ng-click="deleteNode($index, node)" ng-disabled="(hasCluster && !canDeleteNode) || (!hasCluster && node.isLocal)" class="btn btn-link delete-node-btn secondary" gdb-tooltip="{{ (hasCluster && canDeleteNode) || (!hasCluster && !node.isLocal) ?\n (\'cluster_management.update_cluster_group_dialog.actions.delete_node\' | translate) :\n (\'cluster_management.update_cluster_group_dialog.actions.cannot_delete_node\' | translate) }}" title-class="delete-node-tooltip"> <i class="fa fa-xmark"></i> </button> <button ng-click="replaceNode($index, node)" class="btn btn-link replace-node-btn" ng-disabled="!hasCluster && node.isLocal" gdb-tooltip="{{hasCluster || !node.isLocal ?\n (\'cluster_management.update_cluster_group_dialog.actions.replace_node\' | translate) :\n (\'cluster_management.update_cluster_group_dialog.actions.cannot_replace_node\' | translate) }}"> <i class="fa fa-arrow-right-arrow-left"></i> </button> </div> <div ng-if="editedNodeIndex === undefined && node.isDeleted" class="actions-group"> <button ng-click="restoreNode(node)" class="btn btn-link restore-node-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.restore_node\' | translate}}"> <i class="fa fa-rotate-left"></i> </button> </div> </td> </tr> <tr ng-if="$index === editedNodeIndex" class="node edit-node-row" data-endpoint="{{node.endpoint}}" style="" ng-class="{\'selected table-info\': $index === editedNodeIndex}"> <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td> <td class="data location-cell"> <div class="autocomplete-container"> <input type="text" name="location" required ng-model="node.endpoint" ng-change="filterSuggestions(node)" ng-blur="hideSuggestions(node)" ng-click="filterSuggestions(node)" auto-grow validate-url exclude="/repositories" exclude-protocol="ftp,ftps" validate-duplicate-url excluded-urls="clusterNodesEndpoints" allow-empty="false" class="form-control form-control-sm textarea-edit" uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}" tooltip-placement="top" placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}"> <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown"> <li ng-repeat="suggestion in suggestions" ng-mouseup="selectSuggestion(node, suggestion)"> {{ suggestion }} </li> </ul> </div> </td> <td class="info-cell data"> <span ng-if="node.isLocal"> {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span> </span> <span ng-if="node.item.nodeState"> {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class="status-cell"></td> <td class="empty-cell"></td> <td class="actions-cell"> <div class="crud-actions-group"> <button ng-click="cancel()" class="btn btn-link cancel-node-replace-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}"> <i class="fa fa-xmark"></i> </button> <button ng-click="saveNode(node.endpoint)" class="btn btn-link save-rule-btn" ng-disabled="!form.location.$valid" gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}"> <i class="fa fa-check"></i> </button> </div> </td> </tr> <tr ng-repeat-end ng-if="0"></tr> <tr ng-if="addNewLocation" class="node edit-node-row"> <td class="index-cell"></td> <td class="data location-cell"> <div class="autocomplete-container"> <input type="text" name="location" required ng-model="newLocation.endpoint" ng-change="filterSuggestions(newLocation)" ng-blur="hideSuggestions(newLocation)" ng-click="filterSuggestions(newLocation)" auto-grow validate-url exclude="/repositories" exclude-protocol="ftp,ftps" validate-duplicate-url excluded-urls="clusterNodesEndpoints" allow-empty="false" class="form-control form-control-sm textarea-edit" uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}" tooltip-placement="top" placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}"> <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown"> <li ng-repeat="suggestion in suggestions" ng-mouseup="selectSuggestion(newLocation, suggestion)"> {{ suggestion }} </li> </ul> </div> </td> <td class="info-cell data"></td> <td class="status-cell"></td> <td class="empty-cell"></td> <td class="actions-cell"> <div class="crud-actions-group"> <button ng-click="cancel()" class="btn btn-link cancel-node-replace-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}"> <i class="fa fa-xmark"></i> </button> <button ng-click="saveNode(newLocation.endpoint)" class="btn btn-link save-rule-btn" ng-disabled="!form.location.$valid" gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}"> <i class="fa fa-check"></i> </button> </div> </td> </tr> </tbody> </table> <div class="errors"> <div class="error-message" ng-show="form.location.$error.validUrl && !form.location.$pristine"> * {{\'valid.remote.location.warning\' | translate}} http://server.example.com:7200/. </div> <div class="error-message" ng-show="form.location.$error.duplicateUrl && !form.location.$pristine"> * {{\'duplicate.remote.location.warning\' | translate}} </div> <div ng-repeat="error in errors" class="error-message"> {{error}} </div> </div> <div class="form-horizontal" ng-if="!hasCluster"> <div class="form-group"> <div class="indented-div"> <span class="padding-label wrapper-div" gdb-tooltip="{{\'cluster_management.cluster_page.advanced_options_tooltip\' | translate}}"> <button type="button" class="text-btn advanced-options-btn text-left" data-toggle="collapse" data-target="#advancedOptions"> <i class="{{getAdvancedOptionsClass()}} advanced-options-toggle" aria-hidden="true"></i> {{\'cluster_management.cluster_page.advanced_options\' | translate}} </button> </span> </div> <div id="advancedOptions" class="collapse pb-1 pl-2"> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.electionMinTimeout.$invalid}"> <label for="election-minimum-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_min_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.electionMinTimeout" required id="election-minimum-timeout" min="0" pattern="[0-9]+" name="electionMinTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionMinTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionMinTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.electionRangeTimeout.$invalid}"> <label for="election-range-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_range_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.electionRangeTimeout" required id="election-range-timeout" min="0" pattern="[0-9]+" name="electionRangeTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionRangeTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionRangeTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.heartbeatInterval.$invalid}"> <label for="heartbeat-interval" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.heartbeat_interval\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.heartbeatInterval" required id="heartbeat-interval" min="0" pattern="[0-9]+" name="heartbeatInterval"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.heartbeatInterval.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.heartbeatInterval.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.messageSizeKB.$invalid}"> <label for="message-size" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.message_size_kb\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.message_size_kb_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.messageSizeKB" required id="message-size" min="0" pattern="[0-9]+" name="messageSizeKB"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.messageSizeKB.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.messageSizeKB.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.verificationTimeout.$invalid}"> <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.verification_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.verification_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.verificationTimeout" required id="verification-timeout" min="0" pattern="[0-9]+" name="verificationTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.verificationTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.verificationTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.transactionLogMaximumSizeGB.$invalid}"> <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.transactionLogMaximumSizeGB" required id="transaction-log-maximum-size-gb" pattern="-?[1-9][0-9]*(\\.[0-9]+)?" name="transaction_log_maximum_size_gb"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.pattern"> {{\'cluster_management.cluster_page.errors.small_transaction_log_max_size\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.batchUpdateInterval.$invalid}"> <label for="batch-update-interval" class="col-xs-4 col-form-label"> {{\'cluster_management.cluster_configuration_properties.batch_update_interval\' | translate}}* </label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.batchUpdateInterval" required id="batch-update-interval" min="0" name="batchUpdateInterval"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.batchUpdateInterval.$error.required"> {{\'required.field\' | translate}} </div> </div> </div> </div> </div> </div> </div> </form> </div> '}};
2
- //# sourceMappingURL=27580.7dc5844c4afaabfeaae7.bundle.js.map
1
+ export const __webpack_id__=27580;export const __webpack_ids__=[27580];export const __webpack_modules__={27580:(e,t,a)=>{a.r(t),a.d(t,{default:()=>o});const o='<link href="css/cluster-nodes-configuration.css?v=3.1.0-TR9" rel="stylesheet"/> <div onto-loader-new ng-if="loader" class="create-cluster-loader" message="getLoaderMessage" size="100"></div> <div class="add-node-wrapper pull-right mb-1"> <button ng-click="addNode()" ng-disabled="editedNodeIndex !== undefined" class="btn btn-primary add-node-btn" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip\' | translate}}"> <i class="fa fa-plus"></i> {{\'cluster_management.update_cluster_group_dialog.actions.add_node\' | translate}} </button> </div> <div class="table-responsive"> <form name="form" id="updateClusterGroupForm"> <table class="cluster-group table table-striped table-hover cluster-group-table" aria-describedby="cluster group table"> <thead> <tr class="labels-row"> <th scope="col" class="index-column"> {{\'cluster_management.update_cluster_group_dialog.column.index\' | translate}} </th> <th scope="col" class="location-column"> {{\'cluster_management.update_cluster_group_dialog.column.location\' | translate}} </th> <th scope="col" class="info-column"> {{\'cluster_management.update_cluster_group_dialog.column.info\' | translate}} </th> <th scope="col" class="status-column"> {{\'cluster_management.update_cluster_group_dialog.column.status\' | translate}} </th> <th scope="col" class="empty-column"></th> <th scope="col" class="actions-column"></th> </tr> </thead> <tbody> <tr ng-if="!viewModel.length"> <td colspan="5" class="no-data"> {{\'cluster_management.update_cluster_group_dialog.messages.no_cluster\' | translate}} </td> </tr> <tr ng-repeat-start="node in viewModel track by $index" ng-if="0"></tr> <tr ng-if="$index !== editedNodeIndex" class="node preview-node-row" data-endpoint="{{node.endpoint}}" capture-height="$index" ng-class="{\'selected\': $index === selectedNode || $index === editedNodeIndex}"> <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td> <td class="location-cell data" ng-class="{\'deleting\': node.isDeleted, \'adding\': !node.item.address}"> <div class="location-item" id="endpoint-{{::node.index}}"> <span class="text-only">{{node.item.endpoint}}</span> <copy-to-clipboard text-to-copy="{{node.item.endpoint}}" custom-tooltip-style="true" ng-attr-target-selector="#endpoint-{{::node.index}}" custom-tooltip-text="{{\'cluster_management.update_cluster_group_dialog.copy_to_clipboard.copied.tooltip\' | translate}}"></copy-to-clipboard> </div> </td> <td class="info-cell data"> <span ng-if="node.isLocal"> {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span> </span> <span ng-if="node.item.nodeState"> {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class="status-cell data"> <div ng-if="!node.item.address" class="adding"> <i class="fa fa-circle-check status-icon"></i> {{\'cluster_management.update_cluster_group_dialog.new_node\' | translate}} </div> <div ng-if="node.isDeleted" class="deleting"> <i class="fa fa-xmark status-icon"></i> {{\'cluster_management.update_cluster_group_dialog.deleted_node\' | translate}} </div> </td> <td class="empty-cell"></td> <td class="actions-cell"> <div ng-if="editedNodeIndex === undefined && !node.isDeleted" class="actions-group"> <button ng-click="deleteNode($index, node)" ng-disabled="(hasCluster && !canDeleteNode) || (!hasCluster && node.isLocal)" class="btn btn-link delete-node-btn secondary" gdb-tooltip="{{ (hasCluster && canDeleteNode) || (!hasCluster && !node.isLocal) ?\n (\'cluster_management.update_cluster_group_dialog.actions.delete_node\' | translate) :\n (\'cluster_management.update_cluster_group_dialog.actions.cannot_delete_node\' | translate) }}" title-class="delete-node-tooltip"> <i class="fa fa-xmark"></i> </button> <button ng-click="replaceNode($index, node)" class="btn btn-link replace-node-btn" ng-disabled="!hasCluster && node.isLocal" gdb-tooltip="{{hasCluster || !node.isLocal ?\n (\'cluster_management.update_cluster_group_dialog.actions.replace_node\' | translate) :\n (\'cluster_management.update_cluster_group_dialog.actions.cannot_replace_node\' | translate) }}"> <i class="fa fa-arrow-right-arrow-left"></i> </button> </div> <div ng-if="editedNodeIndex === undefined && node.isDeleted" class="actions-group"> <button ng-click="restoreNode(node)" class="btn btn-link restore-node-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.restore_node\' | translate}}"> <i class="fa fa-rotate-left"></i> </button> </div> </td> </tr> <tr ng-if="$index === editedNodeIndex" class="node edit-node-row" data-endpoint="{{node.endpoint}}" style="" ng-class="{\'selected table-info\': $index === editedNodeIndex}"> <td class="index-cell"><span ng-if="!node.isDeleted">{{node.index + 1}}</span></td> <td class="data location-cell"> <div class="autocomplete-container"> <input type="text" name="location" required ng-model="node.endpoint" ng-change="filterSuggestions(node)" ng-blur="hideSuggestions(node)" ng-click="filterSuggestions(node)" auto-grow validate-url exclude="/repositories" exclude-protocol="ftp,ftps" validate-duplicate-url excluded-urls="clusterNodesEndpoints" allow-empty="false" class="form-control form-control-sm textarea-edit" uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}" tooltip-placement="top" placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}"> <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown"> <li ng-repeat="suggestion in suggestions" ng-mouseup="selectSuggestion(node, suggestion)"> {{ suggestion }} </li> </ul> </div> </td> <td class="info-cell data"> <span ng-if="node.isLocal"> {{\'cluster_management.update_cluster_group_dialog.current_node\' | translate}}<span ng-if="node.item.nodeState">, </span> </span> <span ng-if="node.item.nodeState"> {{ (\'cluster_management.update_cluster_group_dialog.\' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class="status-cell"></td> <td class="empty-cell"></td> <td class="actions-cell"> <div class="crud-actions-group"> <button ng-click="cancel()" class="btn btn-link cancel-node-replace-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}"> <i class="fa fa-xmark"></i> </button> <button ng-click="saveNode(node.endpoint)" class="btn btn-link save-rule-btn" ng-disabled="!form.location.$valid" gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}"> <i class="fa fa-check"></i> </button> </div> </td> </tr> <tr ng-repeat-end ng-if="0"></tr> <tr ng-if="addNewLocation" class="node edit-node-row"> <td class="index-cell"></td> <td class="data location-cell"> <div class="autocomplete-container"> <input type="text" name="location" required ng-model="newLocation.endpoint" ng-change="filterSuggestions(newLocation)" ng-blur="hideSuggestions(newLocation)" ng-click="filterSuggestions(newLocation)" auto-grow validate-url exclude="/repositories" exclude-protocol="ftp,ftps" validate-duplicate-url excluded-urls="clusterNodesEndpoints" allow-empty="false" class="form-control form-control-sm textarea-edit" uib-tooltip="{{\'remote.location.enter.url.msg\' | translate}}" tooltip-placement="top" placeholder="{{\'cluster_management.update_cluster_group_dialog.field_placeholders.location\' | translate}}"> <ul ng-show="suggestions.length > 0 && showDropdown" class="autocomplete-dropdown"> <li ng-repeat="suggestion in suggestions" ng-mouseup="selectSuggestion(newLocation, suggestion)"> {{ suggestion }} </li> </ul> </div> </td> <td class="info-cell data"></td> <td class="status-cell"></td> <td class="empty-cell"></td> <td class="actions-cell"> <div class="crud-actions-group"> <button ng-click="cancel()" class="btn btn-link cancel-node-replace-btn secondary" gdb-tooltip="{{\'cluster_management.update_cluster_group_dialog.actions.cancel\' | translate}}"> <i class="fa fa-xmark"></i> </button> <button ng-click="saveNode(newLocation.endpoint)" class="btn btn-link save-rule-btn" ng-disabled="!form.location.$valid" gdb-tooltip="{{form.location.$valid ? \'cluster_management.update_cluster_group_dialog.actions.add_node\' : \'cluster_management.update_cluster_group_dialog.messages.invalid_form\' | translate}}"> <i class="fa fa-check"></i> </button> </div> </td> </tr> </tbody> </table> <div class="errors"> <div class="error-message" ng-show="form.location.$error.validUrl && !form.location.$pristine"> * {{\'valid.remote.location.warning\' | translate}} http://server.example.com:7200/. </div> <div class="error-message" ng-show="form.location.$error.duplicateUrl && !form.location.$pristine"> * {{\'duplicate.remote.location.warning\' | translate}} </div> <div ng-repeat="error in errors" class="error-message"> {{error}} </div> </div> <div class="form-horizontal" ng-if="!hasCluster"> <div class="form-group"> <div class="indented-div"> <span class="padding-label wrapper-div" gdb-tooltip="{{\'cluster_management.cluster_page.advanced_options_tooltip\' | translate}}"> <button type="button" class="text-btn advanced-options-btn text-left" data-toggle="collapse" data-target="#advancedOptions"> <i class="{{getAdvancedOptionsClass()}} advanced-options-toggle" aria-hidden="true"></i> {{\'cluster_management.cluster_page.advanced_options\' | translate}} </button> </span> </div> <div id="advancedOptions" class="collapse pb-1 pl-2"> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.electionMinTimeout.$invalid}"> <label for="election-minimum-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_min_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.electionMinTimeout" required id="election-minimum-timeout" min="0" pattern="[0-9]+" name="electionMinTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionMinTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionMinTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.electionRangeTimeout.$invalid}"> <label for="election-range-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.election_range_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.electionRangeTimeout" required id="election-range-timeout" min="0" pattern="[0-9]+" name="electionRangeTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionRangeTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.electionRangeTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.heartbeatInterval.$invalid}"> <label for="heartbeat-interval" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.heartbeat_interval\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.heartbeatInterval" required id="heartbeat-interval" min="0" pattern="[0-9]+" name="heartbeatInterval"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.heartbeatInterval.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.heartbeatInterval.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.messageSizeKB.$invalid}"> <label for="message-size" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.message_size_kb\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.message_size_kb_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.messageSizeKB" required id="message-size" min="0" pattern="[0-9]+" name="messageSizeKB"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.messageSizeKB.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.messageSizeKB.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.verificationTimeout.$invalid}"> <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.verification_timeout\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.verification_timeout_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.verificationTimeout" required id="verification-timeout" min="0" pattern="[0-9]+" name="verificationTimeout"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.verificationTimeout.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.verificationTimeout.$error.pattern"> {{\'cluster_management.cluster_page.errors.only_positive_integers\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.transactionLogMaximumSizeGB.$invalid}"> <label for="verification-timeout" class="col-xs-4 col-form-label">{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb\' | translate}}*</label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.transactionLogMaximumSizeGB" required id="transaction-log-maximum-size-gb" pattern="-?[1-9][0-9]*(\\.[0-9]+)?" name="transaction_log_maximum_size_gb"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.required"> {{\'required.field\' | translate}} </div> <div class="form-control-feedback" ng-show="clusterConfigurationForm.transactionLogMaximumSizeGB.$error.pattern"> {{\'cluster_management.cluster_page.errors.small_transaction_log_max_size\' | translate}} </div> </div> </div> </div> <div class="form-group"> <div class="input-group" ng-class="{\'has-danger\': clusterConfigurationForm.batchUpdateInterval.$invalid}"> <label for="batch-update-interval" class="col-xs-4 col-form-label"> {{\'cluster_management.cluster_configuration_properties.batch_update_interval\' | translate}}* </label> <div class="col-xs-8" gdb-tooltip="{{\'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip\' | translate}}"> <input class="form-control" placeholder="{{\'required.field\' | translate}}" type="number" ng-model="clusterConfiguration.batchUpdateInterval" required id="batch-update-interval" min="0" name="batchUpdateInterval"> <div class="form-control-feedback" ng-show="clusterConfigurationForm.batchUpdateInterval.$error.required"> {{\'required.field\' | translate}} </div> </div> </div> </div> </div> </div> </div> </form> </div> '}};
2
+ //# sourceMappingURL=27580.46e0085c4f0549e4bb9f.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"27580.7dc5844c4afaabfeaae7.bundle.js","mappings":"uJAOA,QANW,i9gB","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/clustermanagement/templates/cluster-nodes-configuration.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/cluster-nodes-configuration.css?v=3.1.0-TR7\" rel=\"stylesheet\"/> <div onto-loader-new ng-if=\"loader\" class=\"create-cluster-loader\" message=\"getLoaderMessage\" size=\"100\"></div> <div class=\"add-node-wrapper pull-right mb-1\"> <button ng-click=\"addNode()\" ng-disabled=\"editedNodeIndex !== undefined\" class=\"btn btn-primary add-node-btn\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip' | translate}}\"> <i class=\"fa fa-plus\"></i> {{'cluster_management.update_cluster_group_dialog.actions.add_node' | translate}} </button> </div> <div class=\"table-responsive\"> <form name=\"form\" id=\"updateClusterGroupForm\"> <table class=\"cluster-group table table-striped table-hover cluster-group-table\" aria-describedby=\"cluster group table\"> <thead> <tr class=\"labels-row\"> <th scope=\"col\" class=\"index-column\"> {{'cluster_management.update_cluster_group_dialog.column.index' | translate}} </th> <th scope=\"col\" class=\"location-column\"> {{'cluster_management.update_cluster_group_dialog.column.location' | translate}} </th> <th scope=\"col\" class=\"info-column\"> {{'cluster_management.update_cluster_group_dialog.column.info' | translate}} </th> <th scope=\"col\" class=\"status-column\"> {{'cluster_management.update_cluster_group_dialog.column.status' | translate}} </th> <th scope=\"col\" class=\"empty-column\"></th> <th scope=\"col\" class=\"actions-column\"></th> </tr> </thead> <tbody> <tr ng-if=\"!viewModel.length\"> <td colspan=\"5\" class=\"no-data\"> {{'cluster_management.update_cluster_group_dialog.messages.no_cluster' | translate}} </td> </tr> <tr ng-repeat-start=\"node in viewModel track by \\$index\" ng-if=\"0\"></tr> <tr ng-if=\"\\$index !== editedNodeIndex\" class=\"node preview-node-row\" data-endpoint=\"{{node.endpoint}}\" capture-height=\"\\$index\" ng-class=\"{'selected': \\$index === selectedNode || \\$index === editedNodeIndex}\"> <td class=\"index-cell\"><span ng-if=\"!node.isDeleted\">{{node.index + 1}}</span></td> <td class=\"location-cell data\" ng-class=\"{'deleting': node.isDeleted, 'adding': !node.item.address}\"> <div class=\"location-item\" id=\"endpoint-{{::node.index}}\"> <span class=\"text-only\">{{node.item.endpoint}}</span> <copy-to-clipboard text-to-copy=\"{{node.item.endpoint}}\" custom-tooltip-style=\"true\" ng-attr-target-selector=\"#endpoint-{{::node.index}}\" custom-tooltip-text=\"{{'cluster_management.update_cluster_group_dialog.copy_to_clipboard.copied.tooltip' | translate}}\"></copy-to-clipboard> </div> </td> <td class=\"info-cell data\"> <span ng-if=\"node.isLocal\"> {{'cluster_management.update_cluster_group_dialog.current_node' | translate}}<span ng-if=\"node.item.nodeState\">, </span> </span> <span ng-if=\"node.item.nodeState\"> {{ ('cluster_management.update_cluster_group_dialog.' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class=\"status-cell data\"> <div ng-if=\"!node.item.address\" class=\"adding\"> <i class=\"fa fa-circle-check status-icon\"></i> {{'cluster_management.update_cluster_group_dialog.new_node' | translate}} </div> <div ng-if=\"node.isDeleted\" class=\"deleting\"> <i class=\"fa fa-xmark status-icon\"></i> {{'cluster_management.update_cluster_group_dialog.deleted_node' | translate}} </div> </td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div ng-if=\"editedNodeIndex === undefined && !node.isDeleted\" class=\"actions-group\"> <button ng-click=\"deleteNode(\\$index, node)\" ng-disabled=\"(hasCluster && !canDeleteNode) || (!hasCluster && node.isLocal)\" class=\"btn btn-link delete-node-btn secondary\" gdb-tooltip=\"{{ (hasCluster && canDeleteNode) || (!hasCluster && !node.isLocal) ?\n ('cluster_management.update_cluster_group_dialog.actions.delete_node' | translate) :\n ('cluster_management.update_cluster_group_dialog.actions.cannot_delete_node' | translate) }}\" title-class=\"delete-node-tooltip\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"replaceNode(\\$index, node)\" class=\"btn btn-link replace-node-btn\" ng-disabled=\"!hasCluster && node.isLocal\" gdb-tooltip=\"{{hasCluster || !node.isLocal ?\n ('cluster_management.update_cluster_group_dialog.actions.replace_node' | translate) :\n ('cluster_management.update_cluster_group_dialog.actions.cannot_replace_node' | translate) }}\"> <i class=\"fa fa-arrow-right-arrow-left\"></i> </button> </div> <div ng-if=\"editedNodeIndex === undefined && node.isDeleted\" class=\"actions-group\"> <button ng-click=\"restoreNode(node)\" class=\"btn btn-link restore-node-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.restore_node' | translate}}\"> <i class=\"fa fa-rotate-left\"></i> </button> </div> </td> </tr> <tr ng-if=\"\\$index === editedNodeIndex\" class=\"node edit-node-row\" data-endpoint=\"{{node.endpoint}}\" style=\"\" ng-class=\"{'selected table-info': \\$index === editedNodeIndex}\"> <td class=\"index-cell\"><span ng-if=\"!node.isDeleted\">{{node.index + 1}}</span></td> <td class=\"data location-cell\"> <div class=\"autocomplete-container\"> <input type=\"text\" name=\"location\" required ng-model=\"node.endpoint\" ng-change=\"filterSuggestions(node)\" ng-blur=\"hideSuggestions(node)\" ng-click=\"filterSuggestions(node)\" auto-grow validate-url exclude=\"/repositories\" exclude-protocol=\"ftp,ftps\" validate-duplicate-url excluded-urls=\"clusterNodesEndpoints\" allow-empty=\"false\" class=\"form-control form-control-sm textarea-edit\" uib-tooltip=\"{{'remote.location.enter.url.msg' | translate}}\" tooltip-placement=\"top\" placeholder=\"{{'cluster_management.update_cluster_group_dialog.field_placeholders.location' | translate}}\"> <ul ng-show=\"suggestions.length > 0 && showDropdown\" class=\"autocomplete-dropdown\"> <li ng-repeat=\"suggestion in suggestions\" ng-mouseup=\"selectSuggestion(node, suggestion)\"> {{ suggestion }} </li> </ul> </div> </td> <td class=\"info-cell data\"> <span ng-if=\"node.isLocal\"> {{'cluster_management.update_cluster_group_dialog.current_node' | translate}}<span ng-if=\"node.item.nodeState\">, </span> </span> <span ng-if=\"node.item.nodeState\"> {{ ('cluster_management.update_cluster_group_dialog.' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class=\"status-cell\"></td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div class=\"crud-actions-group\"> <button ng-click=\"cancel()\" class=\"btn btn-link cancel-node-replace-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.cancel' | translate}}\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"saveNode(node.endpoint)\" class=\"btn btn-link save-rule-btn\" ng-disabled=\"!form.location.\\$valid\" gdb-tooltip=\"{{form.location.\\$valid ? 'cluster_management.update_cluster_group_dialog.actions.add_node' : 'cluster_management.update_cluster_group_dialog.messages.invalid_form' | translate}}\"> <i class=\"fa fa-check\"></i> </button> </div> </td> </tr> <tr ng-repeat-end ng-if=\"0\"></tr> <tr ng-if=\"addNewLocation\" class=\"node edit-node-row\"> <td class=\"index-cell\"></td> <td class=\"data location-cell\"> <div class=\"autocomplete-container\"> <input type=\"text\" name=\"location\" required ng-model=\"newLocation.endpoint\" ng-change=\"filterSuggestions(newLocation)\" ng-blur=\"hideSuggestions(newLocation)\" ng-click=\"filterSuggestions(newLocation)\" auto-grow validate-url exclude=\"/repositories\" exclude-protocol=\"ftp,ftps\" validate-duplicate-url excluded-urls=\"clusterNodesEndpoints\" allow-empty=\"false\" class=\"form-control form-control-sm textarea-edit\" uib-tooltip=\"{{'remote.location.enter.url.msg' | translate}}\" tooltip-placement=\"top\" placeholder=\"{{'cluster_management.update_cluster_group_dialog.field_placeholders.location' | translate}}\"> <ul ng-show=\"suggestions.length > 0 && showDropdown\" class=\"autocomplete-dropdown\"> <li ng-repeat=\"suggestion in suggestions\" ng-mouseup=\"selectSuggestion(newLocation, suggestion)\"> {{ suggestion }} </li> </ul> </div> </td> <td class=\"info-cell data\"></td> <td class=\"status-cell\"></td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div class=\"crud-actions-group\"> <button ng-click=\"cancel()\" class=\"btn btn-link cancel-node-replace-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.cancel' | translate}}\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"saveNode(newLocation.endpoint)\" class=\"btn btn-link save-rule-btn\" ng-disabled=\"!form.location.\\$valid\" gdb-tooltip=\"{{form.location.\\$valid ? 'cluster_management.update_cluster_group_dialog.actions.add_node' : 'cluster_management.update_cluster_group_dialog.messages.invalid_form' | translate}}\"> <i class=\"fa fa-check\"></i> </button> </div> </td> </tr> </tbody> </table> <div class=\"errors\"> <div class=\"error-message\" ng-show=\"form.location.\\$error.validUrl && !form.location.\\$pristine\"> * {{'valid.remote.location.warning' | translate}} http://server.example.com:7200/. </div> <div class=\"error-message\" ng-show=\"form.location.\\$error.duplicateUrl && !form.location.\\$pristine\"> * {{'duplicate.remote.location.warning' | translate}} </div> <div ng-repeat=\"error in errors\" class=\"error-message\"> {{error}} </div> </div> <div class=\"form-horizontal\" ng-if=\"!hasCluster\"> <div class=\"form-group\"> <div class=\"indented-div\"> <span class=\"padding-label wrapper-div\" gdb-tooltip=\"{{'cluster_management.cluster_page.advanced_options_tooltip' | translate}}\"> <button type=\"button\" class=\"text-btn advanced-options-btn text-left\" data-toggle=\"collapse\" data-target=\"#advancedOptions\"> <i class=\"{{getAdvancedOptionsClass()}} advanced-options-toggle\" aria-hidden=\"true\"></i> {{'cluster_management.cluster_page.advanced_options' | translate}} </button> </span> </div> <div id=\"advancedOptions\" class=\"collapse pb-1 pl-2\"> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.electionMinTimeout.\\$invalid}\"> <label for=\"election-minimum-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.election_min_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.electionMinTimeout\" required id=\"election-minimum-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"electionMinTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionMinTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionMinTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.electionRangeTimeout.\\$invalid}\"> <label for=\"election-range-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.election_range_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.electionRangeTimeout\" required id=\"election-range-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"electionRangeTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionRangeTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionRangeTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.heartbeatInterval.\\$invalid}\"> <label for=\"heartbeat-interval\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.heartbeat_interval' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.heartbeatInterval\" required id=\"heartbeat-interval\" min=\"0\" pattern=\"[0-9]+\" name=\"heartbeatInterval\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.heartbeatInterval.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.heartbeatInterval.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.messageSizeKB.\\$invalid}\"> <label for=\"message-size\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.message_size_kb' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.message_size_kb_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.messageSizeKB\" required id=\"message-size\" min=\"0\" pattern=\"[0-9]+\" name=\"messageSizeKB\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.messageSizeKB.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.messageSizeKB.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.verificationTimeout.\\$invalid}\"> <label for=\"verification-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.verification_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.verification_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.verificationTimeout\" required id=\"verification-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"verificationTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.verificationTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.verificationTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.transactionLogMaximumSizeGB.\\$invalid}\"> <label for=\"verification-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.transactionLogMaximumSizeGB\" required id=\"transaction-log-maximum-size-gb\" pattern=\"-?[1-9][0-9]*(\\\\.[0-9]+)?\" name=\"transaction_log_maximum_size_gb\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.transactionLogMaximumSizeGB.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.transactionLogMaximumSizeGB.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.small_transaction_log_max_size' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.batchUpdateInterval.\\$invalid}\"> <label for=\"batch-update-interval\" class=\"col-xs-4 col-form-label\"> {{'cluster_management.cluster_configuration_properties.batch_update_interval' | translate}}* </label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.batchUpdateInterval\" required id=\"batch-update-interval\" min=\"0\" name=\"batchUpdateInterval\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.batchUpdateInterval.\\$error.required\"> {{'required.field' | translate}} </div> </div> </div> </div> </div> </div> </div> </form> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"27580.46e0085c4f0549e4bb9f.bundle.js","mappings":"uJAOA,QANW,i9gB","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/clustermanagement/templates/cluster-nodes-configuration.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/cluster-nodes-configuration.css?v=3.1.0-TR9\" rel=\"stylesheet\"/> <div onto-loader-new ng-if=\"loader\" class=\"create-cluster-loader\" message=\"getLoaderMessage\" size=\"100\"></div> <div class=\"add-node-wrapper pull-right mb-1\"> <button ng-click=\"addNode()\" ng-disabled=\"editedNodeIndex !== undefined\" class=\"btn btn-primary add-node-btn\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.add_node_tooltip' | translate}}\"> <i class=\"fa fa-plus\"></i> {{'cluster_management.update_cluster_group_dialog.actions.add_node' | translate}} </button> </div> <div class=\"table-responsive\"> <form name=\"form\" id=\"updateClusterGroupForm\"> <table class=\"cluster-group table table-striped table-hover cluster-group-table\" aria-describedby=\"cluster group table\"> <thead> <tr class=\"labels-row\"> <th scope=\"col\" class=\"index-column\"> {{'cluster_management.update_cluster_group_dialog.column.index' | translate}} </th> <th scope=\"col\" class=\"location-column\"> {{'cluster_management.update_cluster_group_dialog.column.location' | translate}} </th> <th scope=\"col\" class=\"info-column\"> {{'cluster_management.update_cluster_group_dialog.column.info' | translate}} </th> <th scope=\"col\" class=\"status-column\"> {{'cluster_management.update_cluster_group_dialog.column.status' | translate}} </th> <th scope=\"col\" class=\"empty-column\"></th> <th scope=\"col\" class=\"actions-column\"></th> </tr> </thead> <tbody> <tr ng-if=\"!viewModel.length\"> <td colspan=\"5\" class=\"no-data\"> {{'cluster_management.update_cluster_group_dialog.messages.no_cluster' | translate}} </td> </tr> <tr ng-repeat-start=\"node in viewModel track by \\$index\" ng-if=\"0\"></tr> <tr ng-if=\"\\$index !== editedNodeIndex\" class=\"node preview-node-row\" data-endpoint=\"{{node.endpoint}}\" capture-height=\"\\$index\" ng-class=\"{'selected': \\$index === selectedNode || \\$index === editedNodeIndex}\"> <td class=\"index-cell\"><span ng-if=\"!node.isDeleted\">{{node.index + 1}}</span></td> <td class=\"location-cell data\" ng-class=\"{'deleting': node.isDeleted, 'adding': !node.item.address}\"> <div class=\"location-item\" id=\"endpoint-{{::node.index}}\"> <span class=\"text-only\">{{node.item.endpoint}}</span> <copy-to-clipboard text-to-copy=\"{{node.item.endpoint}}\" custom-tooltip-style=\"true\" ng-attr-target-selector=\"#endpoint-{{::node.index}}\" custom-tooltip-text=\"{{'cluster_management.update_cluster_group_dialog.copy_to_clipboard.copied.tooltip' | translate}}\"></copy-to-clipboard> </div> </td> <td class=\"info-cell data\"> <span ng-if=\"node.isLocal\"> {{'cluster_management.update_cluster_group_dialog.current_node' | translate}}<span ng-if=\"node.item.nodeState\">, </span> </span> <span ng-if=\"node.item.nodeState\"> {{ ('cluster_management.update_cluster_group_dialog.' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class=\"status-cell data\"> <div ng-if=\"!node.item.address\" class=\"adding\"> <i class=\"fa fa-circle-check status-icon\"></i> {{'cluster_management.update_cluster_group_dialog.new_node' | translate}} </div> <div ng-if=\"node.isDeleted\" class=\"deleting\"> <i class=\"fa fa-xmark status-icon\"></i> {{'cluster_management.update_cluster_group_dialog.deleted_node' | translate}} </div> </td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div ng-if=\"editedNodeIndex === undefined && !node.isDeleted\" class=\"actions-group\"> <button ng-click=\"deleteNode(\\$index, node)\" ng-disabled=\"(hasCluster && !canDeleteNode) || (!hasCluster && node.isLocal)\" class=\"btn btn-link delete-node-btn secondary\" gdb-tooltip=\"{{ (hasCluster && canDeleteNode) || (!hasCluster && !node.isLocal) ?\n ('cluster_management.update_cluster_group_dialog.actions.delete_node' | translate) :\n ('cluster_management.update_cluster_group_dialog.actions.cannot_delete_node' | translate) }}\" title-class=\"delete-node-tooltip\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"replaceNode(\\$index, node)\" class=\"btn btn-link replace-node-btn\" ng-disabled=\"!hasCluster && node.isLocal\" gdb-tooltip=\"{{hasCluster || !node.isLocal ?\n ('cluster_management.update_cluster_group_dialog.actions.replace_node' | translate) :\n ('cluster_management.update_cluster_group_dialog.actions.cannot_replace_node' | translate) }}\"> <i class=\"fa fa-arrow-right-arrow-left\"></i> </button> </div> <div ng-if=\"editedNodeIndex === undefined && node.isDeleted\" class=\"actions-group\"> <button ng-click=\"restoreNode(node)\" class=\"btn btn-link restore-node-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.restore_node' | translate}}\"> <i class=\"fa fa-rotate-left\"></i> </button> </div> </td> </tr> <tr ng-if=\"\\$index === editedNodeIndex\" class=\"node edit-node-row\" data-endpoint=\"{{node.endpoint}}\" style=\"\" ng-class=\"{'selected table-info': \\$index === editedNodeIndex}\"> <td class=\"index-cell\"><span ng-if=\"!node.isDeleted\">{{node.index + 1}}</span></td> <td class=\"data location-cell\"> <div class=\"autocomplete-container\"> <input type=\"text\" name=\"location\" required ng-model=\"node.endpoint\" ng-change=\"filterSuggestions(node)\" ng-blur=\"hideSuggestions(node)\" ng-click=\"filterSuggestions(node)\" auto-grow validate-url exclude=\"/repositories\" exclude-protocol=\"ftp,ftps\" validate-duplicate-url excluded-urls=\"clusterNodesEndpoints\" allow-empty=\"false\" class=\"form-control form-control-sm textarea-edit\" uib-tooltip=\"{{'remote.location.enter.url.msg' | translate}}\" tooltip-placement=\"top\" placeholder=\"{{'cluster_management.update_cluster_group_dialog.field_placeholders.location' | translate}}\"> <ul ng-show=\"suggestions.length > 0 && showDropdown\" class=\"autocomplete-dropdown\"> <li ng-repeat=\"suggestion in suggestions\" ng-mouseup=\"selectSuggestion(node, suggestion)\"> {{ suggestion }} </li> </ul> </div> </td> <td class=\"info-cell data\"> <span ng-if=\"node.isLocal\"> {{'cluster_management.update_cluster_group_dialog.current_node' | translate}}<span ng-if=\"node.item.nodeState\">, </span> </span> <span ng-if=\"node.item.nodeState\"> {{ ('cluster_management.update_cluster_group_dialog.' + node.item.nodeState.toLowerCase()) | translate }} </span> </td> <td class=\"status-cell\"></td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div class=\"crud-actions-group\"> <button ng-click=\"cancel()\" class=\"btn btn-link cancel-node-replace-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.cancel' | translate}}\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"saveNode(node.endpoint)\" class=\"btn btn-link save-rule-btn\" ng-disabled=\"!form.location.\\$valid\" gdb-tooltip=\"{{form.location.\\$valid ? 'cluster_management.update_cluster_group_dialog.actions.add_node' : 'cluster_management.update_cluster_group_dialog.messages.invalid_form' | translate}}\"> <i class=\"fa fa-check\"></i> </button> </div> </td> </tr> <tr ng-repeat-end ng-if=\"0\"></tr> <tr ng-if=\"addNewLocation\" class=\"node edit-node-row\"> <td class=\"index-cell\"></td> <td class=\"data location-cell\"> <div class=\"autocomplete-container\"> <input type=\"text\" name=\"location\" required ng-model=\"newLocation.endpoint\" ng-change=\"filterSuggestions(newLocation)\" ng-blur=\"hideSuggestions(newLocation)\" ng-click=\"filterSuggestions(newLocation)\" auto-grow validate-url exclude=\"/repositories\" exclude-protocol=\"ftp,ftps\" validate-duplicate-url excluded-urls=\"clusterNodesEndpoints\" allow-empty=\"false\" class=\"form-control form-control-sm textarea-edit\" uib-tooltip=\"{{'remote.location.enter.url.msg' | translate}}\" tooltip-placement=\"top\" placeholder=\"{{'cluster_management.update_cluster_group_dialog.field_placeholders.location' | translate}}\"> <ul ng-show=\"suggestions.length > 0 && showDropdown\" class=\"autocomplete-dropdown\"> <li ng-repeat=\"suggestion in suggestions\" ng-mouseup=\"selectSuggestion(newLocation, suggestion)\"> {{ suggestion }} </li> </ul> </div> </td> <td class=\"info-cell data\"></td> <td class=\"status-cell\"></td> <td class=\"empty-cell\"></td> <td class=\"actions-cell\"> <div class=\"crud-actions-group\"> <button ng-click=\"cancel()\" class=\"btn btn-link cancel-node-replace-btn secondary\" gdb-tooltip=\"{{'cluster_management.update_cluster_group_dialog.actions.cancel' | translate}}\"> <i class=\"fa fa-xmark\"></i> </button> <button ng-click=\"saveNode(newLocation.endpoint)\" class=\"btn btn-link save-rule-btn\" ng-disabled=\"!form.location.\\$valid\" gdb-tooltip=\"{{form.location.\\$valid ? 'cluster_management.update_cluster_group_dialog.actions.add_node' : 'cluster_management.update_cluster_group_dialog.messages.invalid_form' | translate}}\"> <i class=\"fa fa-check\"></i> </button> </div> </td> </tr> </tbody> </table> <div class=\"errors\"> <div class=\"error-message\" ng-show=\"form.location.\\$error.validUrl && !form.location.\\$pristine\"> * {{'valid.remote.location.warning' | translate}} http://server.example.com:7200/. </div> <div class=\"error-message\" ng-show=\"form.location.\\$error.duplicateUrl && !form.location.\\$pristine\"> * {{'duplicate.remote.location.warning' | translate}} </div> <div ng-repeat=\"error in errors\" class=\"error-message\"> {{error}} </div> </div> <div class=\"form-horizontal\" ng-if=\"!hasCluster\"> <div class=\"form-group\"> <div class=\"indented-div\"> <span class=\"padding-label wrapper-div\" gdb-tooltip=\"{{'cluster_management.cluster_page.advanced_options_tooltip' | translate}}\"> <button type=\"button\" class=\"text-btn advanced-options-btn text-left\" data-toggle=\"collapse\" data-target=\"#advancedOptions\"> <i class=\"{{getAdvancedOptionsClass()}} advanced-options-toggle\" aria-hidden=\"true\"></i> {{'cluster_management.cluster_page.advanced_options' | translate}} </button> </span> </div> <div id=\"advancedOptions\" class=\"collapse pb-1 pl-2\"> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.electionMinTimeout.\\$invalid}\"> <label for=\"election-minimum-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.election_min_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.election_min_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.electionMinTimeout\" required id=\"election-minimum-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"electionMinTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionMinTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionMinTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.electionRangeTimeout.\\$invalid}\"> <label for=\"election-range-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.election_range_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.election_range_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.electionRangeTimeout\" required id=\"election-range-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"electionRangeTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionRangeTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.electionRangeTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.heartbeatInterval.\\$invalid}\"> <label for=\"heartbeat-interval\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.heartbeat_interval' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.heartbeat_interval_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.heartbeatInterval\" required id=\"heartbeat-interval\" min=\"0\" pattern=\"[0-9]+\" name=\"heartbeatInterval\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.heartbeatInterval.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.heartbeatInterval.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.messageSizeKB.\\$invalid}\"> <label for=\"message-size\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.message_size_kb' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.message_size_kb_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.messageSizeKB\" required id=\"message-size\" min=\"0\" pattern=\"[0-9]+\" name=\"messageSizeKB\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.messageSizeKB.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.messageSizeKB.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.verificationTimeout.\\$invalid}\"> <label for=\"verification-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.verification_timeout' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.verification_timeout_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.verificationTimeout\" required id=\"verification-timeout\" min=\"0\" pattern=\"[0-9]+\" name=\"verificationTimeout\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.verificationTimeout.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.verificationTimeout.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.only_positive_integers' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.transactionLogMaximumSizeGB.\\$invalid}\"> <label for=\"verification-timeout\" class=\"col-xs-4 col-form-label\">{{'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb' | translate}}*</label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.transaction_log_maximum_size_gb_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.transactionLogMaximumSizeGB\" required id=\"transaction-log-maximum-size-gb\" pattern=\"-?[1-9][0-9]*(\\\\.[0-9]+)?\" name=\"transaction_log_maximum_size_gb\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.transactionLogMaximumSizeGB.\\$error.required\"> {{'required.field' | translate}} </div> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.transactionLogMaximumSizeGB.\\$error.pattern\"> {{'cluster_management.cluster_page.errors.small_transaction_log_max_size' | translate}} </div> </div> </div> </div> <div class=\"form-group\"> <div class=\"input-group\" ng-class=\"{'has-danger': clusterConfigurationForm.batchUpdateInterval.\\$invalid}\"> <label for=\"batch-update-interval\" class=\"col-xs-4 col-form-label\"> {{'cluster_management.cluster_configuration_properties.batch_update_interval' | translate}}* </label> <div class=\"col-xs-8\" gdb-tooltip=\"{{'cluster_management.cluster_configuration_properties.batch_update_interval_tooltip' | translate}}\"> <input class=\"form-control\" placeholder=\"{{'required.field' | translate}}\" type=\"number\" ng-model=\"clusterConfiguration.batchUpdateInterval\" required id=\"batch-update-interval\" min=\"0\" name=\"batchUpdateInterval\"> <div class=\"form-control-feedback\" ng-show=\"clusterConfigurationForm.batchUpdateInterval.\\$error.required\"> {{'required.field' | translate}} </div> </div> </div> </div> </div> </div> </div> </form> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=31636;export const __webpack_ids__=[31636];export const __webpack_modules__={31636:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});const a='<link href="css/ttyg/agent-select-menu.css?v=3.1.0-TR7" rel="stylesheet"/> <div class="btn-group agent-select-menu" uib-dropdown guide-selector="select-agent-dropdown"> <button type="button" class="btn dropdown-toggle-btn" uib-dropdown-toggle guide-selector="select-agent-dropdown-toggle" ng-attr-title="{{selectedAgent && !selectedAgent.isDeleted ? (selectedAgent.name + \' &middot; \' + selectedAgent.repositoryId) : null}}"> <span ng-if="!selectedAgent">{{\'ttyg.agent.agent_select_menu.no_selection_label\' | translate}}</span> <div ng-if="selectedAgent && !selectedAgent.isDeleted" class="selected-agent-option"> <span class="agent-name" guide-selector="selected-agent">{{selectedAgent.name}}</span> &middot; <i ng-if="!selectedAgent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="selectedAgent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> <span class="repository-id">{{selectedAgent.repositoryId}}</span> <span class="model-name">{{selectedAgent.model}}</span> </div> <span ng-if="selectedAgent && selectedAgent.isDeleted" class="text-warning"> <i class="fa fa-triangle-exclamation"></i> {{\'ttyg.agent.agent_select_menu.deleted_agent\' | translate}} </span> <span class="caret"></span> </button> <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button" guide-selector="select-agent-panel"> <li ng-repeat="agentOption in agentOptionsList" role="menuitem" class="agent-menu-item" ng-class="{\'selected\': agentOption.selected, \'incompatible-agent\': !agentOption.data.agent.isCompatible}" ng-attr-title="{{!agentOption.data.agent.isCompatible ? (\'ttyg.agent.incompatible_agent\' | translate) : agentOption.label + \' · \' + agentOption.data.agent.repositoryId}}"> <a href="#" class="agent-option" ng-click="onAgentSelected($event, agentOption.data.agent)"> <i ng-if="!agentOption.data.agent.isCompatible" class="fa fa-triangle-exclamation text-warning"> </i> <span class="agent-name">{{agentOption.label}}</span> &middot; <i ng-if="!agentOption.data.agent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="agentOption.data.agent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> <span class="repository-id">{{agentOption.data.agent.repositoryId}}</span> </a> <span class="model-name">{{agentOption.data.agent.model}}</span> </li> </ul> </div> '}};
2
- //# sourceMappingURL=31636.f50ca2ade67b87d63f12.bundle.js.map
1
+ export const __webpack_id__=31636;export const __webpack_ids__=[31636];export const __webpack_modules__={31636:(e,t,n)=>{n.r(t),n.d(t,{default:()=>a});const a='<link href="css/ttyg/agent-select-menu.css?v=3.1.0-TR9" rel="stylesheet"/> <div class="btn-group agent-select-menu" uib-dropdown guide-selector="select-agent-dropdown"> <button type="button" class="btn dropdown-toggle-btn" uib-dropdown-toggle guide-selector="select-agent-dropdown-toggle" ng-attr-title="{{selectedAgent && !selectedAgent.isDeleted ? (selectedAgent.name + \' &middot; \' + selectedAgent.repositoryId) : null}}"> <span ng-if="!selectedAgent">{{\'ttyg.agent.agent_select_menu.no_selection_label\' | translate}}</span> <div ng-if="selectedAgent && !selectedAgent.isDeleted" class="selected-agent-option"> <span class="agent-name" guide-selector="selected-agent">{{selectedAgent.name}}</span> &middot; <i ng-if="!selectedAgent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="selectedAgent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> <span class="repository-id">{{selectedAgent.repositoryId}}</span> <span class="model-name">{{selectedAgent.model}}</span> </div> <span ng-if="selectedAgent && selectedAgent.isDeleted" class="text-warning"> <i class="fa fa-triangle-exclamation"></i> {{\'ttyg.agent.agent_select_menu.deleted_agent\' | translate}} </span> <span class="caret"></span> </button> <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button" guide-selector="select-agent-panel"> <li ng-repeat="agentOption in agentOptionsList" role="menuitem" class="agent-menu-item" ng-class="{\'selected\': agentOption.selected, \'incompatible-agent\': !agentOption.data.agent.isCompatible}" ng-attr-title="{{!agentOption.data.agent.isCompatible ? (\'ttyg.agent.incompatible_agent\' | translate) : agentOption.label + \' · \' + agentOption.data.agent.repositoryId}}"> <a href="#" class="agent-option" ng-click="onAgentSelected($event, agentOption.data.agent)"> <i ng-if="!agentOption.data.agent.isCompatible" class="fa fa-triangle-exclamation text-warning"> </i> <span class="agent-name">{{agentOption.label}}</span> &middot; <i ng-if="!agentOption.data.agent.isRepositoryDeleted" class="fa-kit fa-gdb-repo-graphdb"></i> <i ng-if="agentOption.data.agent.isRepositoryDeleted" class="fa fa-triangle-exclamation text-warning agent-with-deleted-repository" gdb-tooltip="{{\'ttyg.agent.deleted_repository\' | translate}}"> </i> <span class="repository-id">{{agentOption.data.agent.repositoryId}}</span> </a> <span class="model-name">{{agentOption.data.agent.model}}</span> </li> </ul> </div> '}};
2
+ //# sourceMappingURL=31636.825216a6a817aea7c2e5.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"31636.f50ca2ade67b87d63f12.bundle.js","mappings":"uJAGA,QAFW,2gF","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/templates/agent-select-menu.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/ttyg/agent-select-menu.css?v=3.1.0-TR7\" rel=\"stylesheet\"/> <div class=\"btn-group agent-select-menu\" uib-dropdown guide-selector=\"select-agent-dropdown\"> <button type=\"button\" class=\"btn dropdown-toggle-btn\" uib-dropdown-toggle guide-selector=\"select-agent-dropdown-toggle\" ng-attr-title=\"{{selectedAgent && !selectedAgent.isDeleted ? (selectedAgent.name + ' &middot; ' + selectedAgent.repositoryId) : null}}\"> <span ng-if=\"!selectedAgent\">{{'ttyg.agent.agent_select_menu.no_selection_label' | translate}}</span> <div ng-if=\"selectedAgent && !selectedAgent.isDeleted\" class=\"selected-agent-option\"> <span class=\"agent-name\" guide-selector=\"selected-agent\">{{selectedAgent.name}}</span> &middot; <i ng-if=\"!selectedAgent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"selectedAgent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> <span class=\"repository-id\">{{selectedAgent.repositoryId}}</span> <span class=\"model-name\">{{selectedAgent.model}}</span> </div> <span ng-if=\"selectedAgent && selectedAgent.isDeleted\" class=\"text-warning\"> <i class=\"fa fa-triangle-exclamation\"></i> {{'ttyg.agent.agent_select_menu.deleted_agent' | translate}} </span> <span class=\"caret\"></span> </button> <ul class=\"dropdown-menu\" uib-dropdown-menu role=\"menu\" aria-labelledby=\"single-button\" guide-selector=\"select-agent-panel\"> <li ng-repeat=\"agentOption in agentOptionsList\" role=\"menuitem\" class=\"agent-menu-item\" ng-class=\"{'selected': agentOption.selected, 'incompatible-agent': !agentOption.data.agent.isCompatible}\" ng-attr-title=\"{{!agentOption.data.agent.isCompatible ? ('ttyg.agent.incompatible_agent' | translate) : agentOption.label + ' · ' + agentOption.data.agent.repositoryId}}\"> <a href=\"#\" class=\"agent-option\" ng-click=\"onAgentSelected(\\$event, agentOption.data.agent)\"> <i ng-if=\"!agentOption.data.agent.isCompatible\" class=\"fa fa-triangle-exclamation text-warning\"> </i> <span class=\"agent-name\">{{agentOption.label}}</span> &middot; <i ng-if=\"!agentOption.data.agent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"agentOption.data.agent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> <span class=\"repository-id\">{{agentOption.data.agent.repositoryId}}</span> </a> <span class=\"model-name\">{{agentOption.data.agent.model}}</span> </li> </ul> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"31636.825216a6a817aea7c2e5.bundle.js","mappings":"uJAGA,QAFW,2gF","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/ttyg/templates/agent-select-menu.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/ttyg/agent-select-menu.css?v=3.1.0-TR9\" rel=\"stylesheet\"/> <div class=\"btn-group agent-select-menu\" uib-dropdown guide-selector=\"select-agent-dropdown\"> <button type=\"button\" class=\"btn dropdown-toggle-btn\" uib-dropdown-toggle guide-selector=\"select-agent-dropdown-toggle\" ng-attr-title=\"{{selectedAgent && !selectedAgent.isDeleted ? (selectedAgent.name + ' &middot; ' + selectedAgent.repositoryId) : null}}\"> <span ng-if=\"!selectedAgent\">{{'ttyg.agent.agent_select_menu.no_selection_label' | translate}}</span> <div ng-if=\"selectedAgent && !selectedAgent.isDeleted\" class=\"selected-agent-option\"> <span class=\"agent-name\" guide-selector=\"selected-agent\">{{selectedAgent.name}}</span> &middot; <i ng-if=\"!selectedAgent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"selectedAgent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> <span class=\"repository-id\">{{selectedAgent.repositoryId}}</span> <span class=\"model-name\">{{selectedAgent.model}}</span> </div> <span ng-if=\"selectedAgent && selectedAgent.isDeleted\" class=\"text-warning\"> <i class=\"fa fa-triangle-exclamation\"></i> {{'ttyg.agent.agent_select_menu.deleted_agent' | translate}} </span> <span class=\"caret\"></span> </button> <ul class=\"dropdown-menu\" uib-dropdown-menu role=\"menu\" aria-labelledby=\"single-button\" guide-selector=\"select-agent-panel\"> <li ng-repeat=\"agentOption in agentOptionsList\" role=\"menuitem\" class=\"agent-menu-item\" ng-class=\"{'selected': agentOption.selected, 'incompatible-agent': !agentOption.data.agent.isCompatible}\" ng-attr-title=\"{{!agentOption.data.agent.isCompatible ? ('ttyg.agent.incompatible_agent' | translate) : agentOption.label + ' · ' + agentOption.data.agent.repositoryId}}\"> <a href=\"#\" class=\"agent-option\" ng-click=\"onAgentSelected(\\$event, agentOption.data.agent)\"> <i ng-if=\"!agentOption.data.agent.isCompatible\" class=\"fa fa-triangle-exclamation text-warning\"> </i> <span class=\"agent-name\">{{agentOption.label}}</span> &middot; <i ng-if=\"!agentOption.data.agent.isRepositoryDeleted\" class=\"fa-kit fa-gdb-repo-graphdb\"></i> <i ng-if=\"agentOption.data.agent.isRepositoryDeleted\" class=\"fa fa-triangle-exclamation text-warning agent-with-deleted-repository\" gdb-tooltip=\"{{'ttyg.agent.deleted_repository' | translate}}\"> </i> <span class=\"repository-id\">{{agentOption.data.agent.repositoryId}}</span> </a> <span class=\"model-name\">{{agentOption.data.agent.model}}</span> </li> </ul> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=32489;export const __webpack_ids__=[32489];export const __webpack_modules__={32489:(t,n,a)=>{a.r(n),a.d(n,{default:()=>o});const o='<link href="css/operations-statuses-monitor.css?v=3.1.0-TR7" rel="stylesheet"/> <div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0" class="operations-statuses btn-group"> <button type="button" class="btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown" ng-if="operationsSummary && operationsSummary.length > 0" ng-class="{\n \'btn-fade-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'btn-fade-warning\': OPERATION_STATUS.WARNING === activeOperations.status\n }"> <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary"> <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationGroup.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationGroup.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationGroup.status}"> </div> <span ng-if="operationGroup.runningOperations" class="running-operation-count"> <sup class="tag-info">{{operationGroup.runningOperations}}</sup> </span> </div> <span class="caret"></span> </button> <ul role="menu" class="dropdown-menu dropdown-menu-right"> <div class="operations-statuses-content"> <li ng-repeat="operationStatus in activeOperations.operations"> <a class="operation-status-content btn btn-secondary row" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}" ng-class="{\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationStatus.status\n }"> <div class="operation-icon col-sm-1" ng-style="noPadding"> <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}"> </div> </div> <div class="col-sm-8 operation-status-label"> {{ \'global.operations_statuses.\' + operationStatus.titleLabelKey + \'.title\' | translate }} </div> <div class="operation-number col-sm-3"> <div ng-if="operationStatus.runningOperationCount" class="operation-status-running-operation-count tag-info"> {{operationStatus.runningOperationCount}} </div> </div> </a> </li> </div> </ul> </div> '}};
2
- //# sourceMappingURL=32489.9307b8976b5b3187223e.bundle.js.map
1
+ export const __webpack_id__=32489;export const __webpack_ids__=[32489];export const __webpack_modules__={32489:(t,n,a)=>{a.r(n),a.d(n,{default:()=>o});const o='<link href="css/operations-statuses-monitor.css?v=3.1.0-TR9" rel="stylesheet"/> <div ng-if="activeOperations && activeOperations.operations && activeOperations.operations.length > 0" class="operations-statuses btn-group"> <button type="button" class="btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle" data-toggle="dropdown" ng-if="operationsSummary && operationsSummary.length > 0" ng-class="{\n \'btn-fade-danger\': OPERATION_STATUS.CRITICAL === activeOperations.status,\n \'btn-fade-warning\': OPERATION_STATUS.WARNING === activeOperations.status\n }"> <div class="operation-status-header" ng-repeat="operationGroup in operationsSummary"> <div ng-class="{\n \'icon-import\': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n \'icon-exchange\': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n \'fa fa-archive\': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n \'fa fa-sitemap\': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationGroup.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationGroup.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationGroup.status}"> </div> <span ng-if="operationGroup.runningOperations" class="running-operation-count"> <sup class="tag-info">{{operationGroup.runningOperations}}</sup> </span> </div> <span class="caret"></span> </button> <ul role="menu" class="dropdown-menu dropdown-menu-right"> <div class="operations-statuses-content"> <li ng-repeat="operationStatus in activeOperations.operations"> <a class="operation-status-content btn btn-secondary row" target="_blank" ng-attr-href="{{operationStatus.monitoringViewUrl}}" ng-class="{\n \'status-critical\': OPERATION_STATUS.CRITICAL === operationStatus.status,\n \'status-information\': OPERATION_STATUS.INFORMATION === operationStatus.status,\n \'status-warning\': OPERATION_STATUS.WARNING === operationStatus.status\n }"> <div class="operation-icon col-sm-1" ng-style="noPadding"> <div ng-class="{\n \'icon-import\': OPERATION_TYPE.IMPORTS === operationStatus.type,\n \'icon-exchange\': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n \'fa fa-archive\': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n \'fa fa-sitemap\': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}"> </div> </div> <div class="col-sm-8 operation-status-label"> {{ \'global.operations_statuses.\' + operationStatus.titleLabelKey + \'.title\' | translate }} </div> <div class="operation-number col-sm-3"> <div ng-if="operationStatus.runningOperationCount" class="operation-status-running-operation-count tag-info"> {{operationStatus.runningOperationCount}} </div> </div> </a> </li> </div> </ul> </div> '}};
2
+ //# sourceMappingURL=32489.ff95b720e4c6b3fb21d6.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"32489.9307b8976b5b3187223e.bundle.js","mappings":"uJAqBA,QApBW,8hG","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/operations-statuses-monitor.css?v=3.1.0-TR7\" rel=\"stylesheet\"/> <div ng-if=\"activeOperations && activeOperations.operations && activeOperations.operations.length > 0\" class=\"operations-statuses btn-group\"> <button type=\"button\" class=\"btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle\" data-toggle=\"dropdown\" ng-if=\"operationsSummary && operationsSummary.length > 0\" ng-class=\"{\n 'btn-fade-danger': OPERATION_STATUS.CRITICAL === activeOperations.status,\n 'btn-fade-warning': OPERATION_STATUS.WARNING === activeOperations.status\n }\"> <div class=\"operation-status-header\" ng-repeat=\"operationGroup in operationsSummary\"> <div ng-class=\"{\n 'icon-import': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n 'icon-exchange': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n 'fa fa-archive': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n 'fa fa-sitemap': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n 'status-critical': OPERATION_STATUS.CRITICAL === operationGroup.status,\n 'status-information': OPERATION_STATUS.INFORMATION === operationGroup.status,\n 'status-warning': OPERATION_STATUS.WARNING === operationGroup.status}\"> </div> <span ng-if=\"operationGroup.runningOperations\" class=\"running-operation-count\"> <sup class=\"tag-info\">{{operationGroup.runningOperations}}</sup> </span> </div> <span class=\"caret\"></span> </button> <ul role=\"menu\" class=\"dropdown-menu dropdown-menu-right\"> <div class=\"operations-statuses-content\"> <li ng-repeat=\"operationStatus in activeOperations.operations\"> <a class=\"operation-status-content btn btn-secondary row\" target=\"_blank\" ng-attr-href=\"{{operationStatus.monitoringViewUrl}}\" ng-class=\"{\n 'status-critical': OPERATION_STATUS.CRITICAL === operationStatus.status,\n 'status-information': OPERATION_STATUS.INFORMATION === operationStatus.status,\n 'status-warning': OPERATION_STATUS.WARNING === operationStatus.status\n }\"> <div class=\"operation-icon col-sm-1\" ng-style=\"noPadding\"> <div ng-class=\"{\n 'icon-import': OPERATION_TYPE.IMPORTS === operationStatus.type,\n 'icon-exchange': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n 'fa fa-archive': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n 'fa fa-sitemap': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}\"> </div> </div> <div class=\"col-sm-8 operation-status-label\"> {{ 'global.operations_statuses.' + operationStatus.titleLabelKey + '.title' | translate }} </div> <div class=\"operation-number col-sm-3\"> <div ng-if=\"operationStatus.runningOperationCount\" class=\"operation-status-running-operation-count tag-info\"> {{operationStatus.runningOperationCount}} </div> </div> </a> </li> </div> </ul> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"32489.ff95b720e4c6b3fb21d6.bundle.js","mappings":"uJAqBA,QApBW,8hG","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/operations-statuses-monitor.css?v=3.1.0-TR9\" rel=\"stylesheet\"/> <div ng-if=\"activeOperations && activeOperations.operations && activeOperations.operations.length > 0\" class=\"operations-statuses btn-group\"> <button type=\"button\" class=\"btn btn-secondary operations-statuses-dropdown-toggle dropdown-toggle\" data-toggle=\"dropdown\" ng-if=\"operationsSummary && operationsSummary.length > 0\" ng-class=\"{\n 'btn-fade-danger': OPERATION_STATUS.CRITICAL === activeOperations.status,\n 'btn-fade-warning': OPERATION_STATUS.WARNING === activeOperations.status\n }\"> <div class=\"operation-status-header\" ng-repeat=\"operationGroup in operationsSummary\"> <div ng-class=\"{\n 'icon-import': OPERATION_GROUP_TYPE.IMPORT_OPERATION === operationGroup.type,\n 'icon-exchange': OPERATION_GROUP_TYPE.QUERIES_OPERATION === operationGroup.type,\n 'fa fa-archive': OPERATION_GROUP_TYPE.BACKUP_AND_RESTORE_OPERATION === operationGroup.type,\n 'fa fa-sitemap': OPERATION_GROUP_TYPE.CLUSTER_OPERATION === operationGroup.type,\n 'status-critical': OPERATION_STATUS.CRITICAL === operationGroup.status,\n 'status-information': OPERATION_STATUS.INFORMATION === operationGroup.status,\n 'status-warning': OPERATION_STATUS.WARNING === operationGroup.status}\"> </div> <span ng-if=\"operationGroup.runningOperations\" class=\"running-operation-count\"> <sup class=\"tag-info\">{{operationGroup.runningOperations}}</sup> </span> </div> <span class=\"caret\"></span> </button> <ul role=\"menu\" class=\"dropdown-menu dropdown-menu-right\"> <div class=\"operations-statuses-content\"> <li ng-repeat=\"operationStatus in activeOperations.operations\"> <a class=\"operation-status-content btn btn-secondary row\" target=\"_blank\" ng-attr-href=\"{{operationStatus.monitoringViewUrl}}\" ng-class=\"{\n 'status-critical': OPERATION_STATUS.CRITICAL === operationStatus.status,\n 'status-information': OPERATION_STATUS.INFORMATION === operationStatus.status,\n 'status-warning': OPERATION_STATUS.WARNING === operationStatus.status\n }\"> <div class=\"operation-icon col-sm-1\" ng-style=\"noPadding\"> <div ng-class=\"{\n 'icon-import': OPERATION_TYPE.IMPORTS === operationStatus.type,\n 'icon-exchange': OPERATION_TYPE.QUERIES === operationStatus.type || OPERATION_TYPE.UPDATES === operationStatus.type,\n 'fa fa-archive': OPERATION_TYPE.BACKUP_RESTORE === operationStatus.type,\n 'fa fa-sitemap': OPERATION_TYPE.CLUSTER_STATUS === operationStatus.type}\"> </div> </div> <div class=\"col-sm-8 operation-status-label\"> {{ 'global.operations_statuses.' + operationStatus.titleLabelKey + '.title' | translate }} </div> <div class=\"operation-number col-sm-3\"> <div ng-if=\"operationStatus.runningOperationCount\" class=\"operation-status-running-operation-count tag-info\"> {{operationStatus.runningOperationCount}} </div> </div> </a> </li> </div> </ul> </div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=33524;export const __webpack_ids__=[15435,33524,42826,56139,56413,66014,71156,83610,84923];export const __webpack_modules__={15435:(e,n,t)=>{t.r(n),t.d(n,{RenderingMode:()=>o});const o={YASGUI:"mode-yasgui",YASQE:"mode-yasqe",YASR:"mode-yasr"}},33524:(e,n,t)=>{t.r(n),t(82493),t(5687),t(25222),t(76933),t(66014),t(42826),t(93098),angular.module("graphdb.framework.jdbc",["toastr","ui.bootstrap","graphdb.framework.jdbc.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives","graphdb.framework.rest.jdbc.service","graphdb.framework.core.directives.yasgui-component"])},42826:()=>{angular.module("graphdb.framework.rest.jdbc.service",[]).factory("JdbcRestService",n),n.$inject=["$http","$repositories","$translate"];const e="rest/sql-views";function n(n,t){return{getJdbcConfigurations:function(){return n.get(`${e}/tables`)},getJdbcConfiguration:function(t){return n.get(`${e}/tables/${t}`)},createNewJdbcConfiguration:function(e){return o("POST","",e)},updateJdbcConfiguration:function(e){return o("PUT",e.name,e)},deleteJdbcConfiguration:function(t){return n.delete(`${e}/tables/${t}`)},getColumnNames:function(t){return n.post(`${e}/columns`,t,{headers:{Accept:"application/json","Content-Type":"text/plain"}})},getColumnsTypeSuggestion:function(o,i){if(!Array.isArray(i))throw new Error(t.instant("jdbc.column.names.constraint"));return n({method:"POST",url:`${e}/types`,data:{query:o,column_names:i}})},getExistingSqlTablePreview:function(e,t){return n({method:"GET",url:`rest/sql-views/preview/${e}`,params:{limit:t}})},getNewSqlTablePreview:function(e,t){return n({method:"POST",url:"rest/sql-views/preview",contentType:"application/json; charset=utf-8",dataType:"json",data:e,params:{limit:t},headers:{Accept:"application/sparql-results+json"}})}};function o(t,o,i){return n({method:t,url:o?`${e}/tables/${o}`:`${e}/tables`,noCancelOnRouteChange:!0,data:{name:i.name,query:i.query,columns:i.columns||[]}})}}},56139:()=>{function e(e,n){return{showToastMessageWithDelay:function(t){return new Promise(o=>{e.success(n.instant(t)),setTimeout(o,300)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",e),e.$inject=["toastr","$translate"]},56413:(e,n,t)=>{t.r(n),t.d(n,{DEFAULT_SPARQL_QUERY:()=>o,JdbcConfigurationInfo:()=>i});const o="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n# Selects two variables to use as columns\nSELECT ?id ?label {\n ?id rdfs:label ?label\n # The following placeholder must be present in the query\n #!filter\n}";class i{constructor(e=o,n=!0,t=void 0){this.query=e,this.jdbcConfigurationName=t,this.isNewJdbcConfiguration=n,this.isValidQuery=!0,this.isValidQueryType=!0,this.hasUndefinedColumns=!1,this.isColumnsEmpty=!1,this.columns=[]}}},66014:(e,n,t)=>{t.r(n),t(76933),t(83351),t(56139),t(82493),t(81655);var o=t(56413),i=t(71156),r=t(84923),s=t(15435),a=t(83610),c=t(85727),u=t(69937),l=t(57154);function d(e,n,t,o,i,r){e.getSqlConfigurations=function(){!n.getActiveRepository()||n.isActiveRepoOntopType()||n.isActiveRepoFedXType()?e.jdbcConfigurations=[]:t.getJdbcConfigurations().success(function(n){e.jdbcConfigurations=n}).error(function(e){const n=getError(e);o.error(n,r.instant("jdbc.not.get.SQL.msg"))})},e.$watch(function(){return n.getActiveRepository()},function(){e.getSqlConfigurations()}),e.deleteConfiguration=function(n){i.openSimpleModal({title:r.instant("common.warning"),message:r.instant("jdbc.delete.sql.table.warning.msg",{name:n}),warning:!0}).result.then(function(){t.deleteJdbcConfiguration(n).success(function(){e.getSqlConfigurations()}).error(function(e){o.error(getError(e),r.instant("jdbc.not.delete.sql.msg"))})})}}function g(e,n,t,d,g,f,m,p,b,y,C,h,j,w,v,q){n.emptySparqlResponse='{"head": {"vars": []},"results": {"bindings": []}}',n.getSuggestionSqlType="",n.sqlTypes=[],n.activeTab=1,n.jdbcConfigurationInfo=new o.JdbcConfigurationInfo,n.jdbcConfigurationInfo.jdbcConfigurationName=d.search().name||"",n.saveOrUpdateExecuted=!1,n.jdbcConfigurationInfo.isNewJdbcConfiguration=!n.jdbcConfigurationInfo.jdbcConfigurationName,n.language=v.getLanguage(),n.isDirty=!1,n.prefixes=[],n.loadingControllerResources=!1,n.isQueryRunning=!1,n.canEditActiveRepo=!1;let S=!0,R=!0;n.saveJdbcConfiguration=()=>{if(n.saveOrUpdateExecuted=!0,!n.jdbcConfigurationInfo.jdbcConfigurationName)return;if(!n.isDirty)return void F();const e=n.jdbcConfigurationInfo.isNewJdbcConfiguration?_:$;N(n.jdbcConfigurationInfo).then(P).then(Q).then(M).then(e).catch(e=>{if(!(e instanceof r.JdbcConfigurationError)){const n=getError(e);g.error(n,w.instant("jdbc.not.saved.configuration"))}})},n.getPreview=()=>{n.activeTab=1,n.isQueryRunning=!0,N(n.jdbcConfigurationInfo).then(P).then(Q).then(M).then(e=>(A({render:s.RenderingMode.YASQE,initialQuery:e.query}),e)).then(E).then(([e,n])=>{const t=e&&e.results.bindings&&e.results.bindings.length>0;let o=s.RenderingMode.YASGUI;t||(o=s.RenderingMode.YASQE,g.info(w.instant("jdbc.table.definition"),w.instant("jdbc.preview.sql"))),A({render:o,sparqlResponse:e,initialQuery:n.query})}).catch(e=>{e instanceof r.JdbcConfigurationError?e.jdbcConfigurationInfo&&(e.jdbcConfigurationInfo.isColumnsEmpty||e.jdbcConfigurationInfo.hasUndefinedColumns)&&(D(),n.activeTab=2):g.error(getError(e,0,100),w.instant("jdbc.not.show.preview"))}).finally(()=>{n.isQueryRunning=!1})},n.setActiveTab=e=>{n.activeTab=e;const t=n.jdbcConfigurationInfo.columns;2!==n.activeTab||t&&0!==t.length||N(n.jdbcConfigurationInfo).then(P).then(()=>{n.getColumnsSuggestions()})},n.setDirty=()=>{n.isDirty=!0},n.getTypeLabel=e=>{switch(e){case"iri":return"VARCHAR: IRI";case"string":return"VARCHAR: String";default:return e.indexOf(" ")>0?e:e.toUpperCase()}},n.selectColumnType=(e,t)=>{n.setDirty();const o=n.jdbcConfigurationInfo.columns.find(n=>n.column_name===e);o.column_type===n.getSuggestionSqlType&&M(n.jdbcConfigurationInfo).then(n=>y.getColumnsTypeSuggestion(n.query,[e])).then(e=>e.data).then(e=>{(0,a.updateColumn)(o,e),T(o.column_type,t)}).catch(e=>{g.error(getError(e),w.instant("jdbc.not.suggest.column.type"))})},n.deleteColumn=function(e,t){j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.delete.column.msg",{columnName:e}),warning:!0}).result.then(function(){n.jdbcConfigurationInfo.columns.splice(t,1),n.setDirty()})},n.getColumnsSuggestions=()=>{n.jdbcConfigurationInfo.columns&&n.jdbcConfigurationInfo.columns.length>0?j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.column.type.msg"),warning:!0}).result.then(function(){D()}):D()},n.hasPrecision=e=>"iri"===e||"string"===e||"decimal"===e,n.containsColumnsWithPrecision=e=>e&&e.some(e=>n.hasPrecision(e.column_type)),n.containsColumnsWithScale=e=>e&&e.some(e=>U(e.column_type)),n.isLiteral=e=>"iri"!==e&&"unknown"!==e,n.containsNonLiteralColumnsOnly=e=>e&&e.every(e=>!n.isLiteral(e.column_type));const E=e=>{if(n.canWriteActiveRepo){const t=JSON.stringify({name:n.jdbcConfigurationInfo.jdbcConfigurationName,query:n.jdbcConfigurationInfo.query,columns:n.jdbcConfigurationInfo.columns||[]});return Promise.all([y.getNewSqlTablePreview(t).then(e=>e.data),Promise.resolve(e)])}return Promise.all([y.getExistingSqlTablePreview(n.jdbcConfigurationInfo.jdbcConfigurationName).then(e=>e.data),Promise.resolve(e)])},T=(e,n)=>{e===n?g.info((0,u.Gz)(w.instant("jdbc.same.suggested.sql.type",{type:e})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0}):g.success((0,u.Gz)(w.instant("jdbc.suggested.sql.type",{type:e})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0})},I=(e,t=new o.JdbcConfigurationInfo)=>{n.jdbcConfigurationInfo.columns=t.columns,n.jdbcConfigurationInfo.query=t.query,n.jdbcConfigurationInfo.jdbcConfigurationName=d.search().name||"",n.jdbcConfigurationInfo.isNewJdbcConfiguration=!n.jdbcConfigurationInfo.jdbcConfigurationName,n.prefixes=e,A(),V()},_=e=>{const t={name:e.jdbcConfigurationName,query:e.query,columns:e.columns};return y.createNewJdbcConfiguration(t).then(()=>{n.isDirty=!1,n.jdbcConfigurationInfo.isNewConfiguration=!1,g.success(w.instant("jdbc.saved.configuration")),W()})},$=e=>{const t={name:e.jdbcConfigurationName,query:e.query,columns:e.columns};return y.updateJdbcConfiguration(t).then(()=>{n.isDirty=!1,n.jdbcConfigurationInfo.isNewConfiguration=!1,g.success(w.instant("jdbc.configuration.updated")),W()})},A=(e={})=>{const t={};angular.extend(t,n.yasguiConfig||J(),e),n.yasguiConfig=t},J=()=>({showEditorTabs:!1,showToolbar:!1,showResultTabs:!1,showQueryButton:!1,showResultInfo:!1,downloadAsOn:!1,showYasqeResizer:!1,initialQuery:n.jdbcConfigurationInfo.query,componentId:"jdbc-component",prefixes:n.prefixes,maxPersistentResponseSize:0,render:s.RenderingMode.YASQE,getCellContent:L,sparqlResponse:n.emptySparqlResponse,yasqeActionButtons:c.DISABLE_YASQE_BUTTONS_CONFIGURATION,yasqeMode:n.canEditActiveRepo?i.YasqeMode.WRITE:i.YasqeMode.READ}),N=e=>O().getQueryType().then(n=>(e.isValidQueryType="SELECT"===n,e.isValidQueryType?e:Promise.reject(new r.JdbcConfigurationError("Query type is not valid.")))),P=e=>O().isQueryValid().then(n=>(e.isValidQuery=n,e.isValidQuery?e:Promise.reject(new r.JdbcConfigurationError("Invalid query.")))),Q=e=>e.columns&&0!==e.columns.length?n.jdbcConfigurationInfo.columns&&n.jdbcConfigurationInfo.columns.find(e=>"unknown"===e.column_type)?(e.hasUndefinedColumns=!0,Promise.reject(new r.JdbcConfigurationError("There are columns without defined type.",e))):Promise.resolve(e):(e.isColumnsEmpty=!0,g.error(w.instant("jdbc.warning.one.column.msg")),Promise.reject(new r.JdbcConfigurationError("There are not defined columns.",e))),D=()=>{N(n.jdbcConfigurationInfo).then(P).then(M).then(x).then(k).then(e=>n.jdbcConfigurationInfo=e).catch(e=>{console.log(e)})},x=e=>y.getColumnNames(e.query).then(n=>[e,n.data]).catch(function(e){g.error(getError(e),w.instant("jdbc.not.suggest.column.names"))}),k=([e,t])=>y.getColumnsTypeSuggestion(e.query,t).then(function(o){return e.columns=(0,a.toJDBCColumns)(t,o.data),e.isColumnsEmpty=e.columns.length,n.setDirty(),e}).catch(function(e){g.error(getError(e),w.instant("jdbc.not.suggest.column.types"))}),O=()=>c.YasguiComponentDirectiveUtil.getOntotextYasguiElement("#query-editor"),M=e=>O().getQuery().then(n=>(e.query=n,e)),U=e=>"decimal"===e,L=(e,n)=>{let t=e.value;return t=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"<div class = 'literal-cell'><p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>"+t+"</p></div>"},Y=(e,n,t,o)=>{j.openSimpleModal({title:e,message:n,warning:!0}).result.then(function(){angular.isFunction(t)&&t()},function(){angular.isFunction(o)&&o()})},V=()=>{n.getSuggestionSqlType=w.instant("view.jdbc.create.get_suggestion_sql_type"),n.sqlTypes=["string","iri","boolean","byte","short","int","long","float","double","decimal","date","time","timestamp",n.getSuggestionSqlType]},W=()=>{setTimeout(function(){F()},1e3)},F=()=>{d.url("/jdbc")},B=e=>{n.isDirty&&(e.returnValue=!0)},G=()=>{window.removeEventListener("beforeunload",B),z.forEach(e=>e())},z=[],H=l.ServiceProvider.get(l.RepositoryContextService).onSelectedRepositoryChanged(e=>{console.log(e),e&&(R?R=!1:O().abortQuery().then(F))},()=>new Promise(function(e){if(n.jdbcConfigurationInfo.isNewJdbcConfiguration)return void e(!0);const t=()=>{n.isDirty=!1,e(!0)};if(n.isDirty){const n=()=>{e(!1)},o=w.instant("common.confirm"),i=w.instant("jdbc.warning.unsaved.changes");Y(o,i,t,n)}else t()}));z.push(H),z.push(t.$on("$translateChangeSuccess",()=>{n.language=v.getLanguage(),V()})),z.push(n.$on("$locationChangeStart",(e,t)=>{if(n.isDirty){e.preventDefault();const n=w.instant("common.confirm"),o=w.instant("jdbc.warning.unsaved.changes");Y(n,o,()=>{G();const e=d.absUrl().length-d.url().length,n=t.substring(e);d.path(n)})}else G()})),z.push(n.$on("$destroy",G)),window.addEventListener("beforeunload",B),z.push(n.$watch(n.getActiveRepositoryObject,e=>{e&&(n.canEditActiveRepo=n.canWriteActiveRepo(),S?((()=>{n.loadingControllerResources=!0;const e=f.getActiveRepository();n.jdbcConfigurationInfo.jdbcConfigurationName?Promise.all([f.getPrefixes(e),y.getJdbcConfiguration(n.jdbcConfigurationInfo.jdbcConfigurationName)]).then(([e,n])=>{I(e,n.data)}).finally(()=>n.loadingControllerResources=!1):f.getPrefixes(e).then(e=>I(e)).finally(()=>n.loadingControllerResources=!1)})(),S=!1):O().abortQuery().then(F))}))}angular.module("graphdb.framework.jdbc.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("JdbcListCtrl",d).controller("JdbcCreateCtrl",g),d.$inject=["$scope","$repositories","JdbcRestService","toastr","ModalService","$translate"],g.$inject=["$q","$scope","$rootScope","$location","toastr","$repositories","$window","$timeout","$interval","JdbcRestService","RDF4JRepositoriesRestService","SparqlRestService","ModalService","$translate","$languageService","EventEmitterService"]},71156:(e,n,t)=>{t.r(n),t.d(n,{YasqeMode:()=>o});const o={WRITE:"WRITE",READ:"READ",PROTECTED:"PROTECTED"}},83610:(e,n,t)=>{t.r(n),t.d(n,{JdbcColumn:()=>o,toJDBCColumns:()=>i,updateColumn:()=>r});class o{constructor(){this.column_name="",this.column_type="",this.sparql_type="",this.nullable=!0}}const i=(e=[],n)=>e.map(e=>({column_name:e,column_type:n[e].column_type,nullable:!0,sparql_type:n[e].sparql_type})),r=(e,n)=>{e.column_type=n[e.column_name].column_type,e.sparql_type=n[e.column_name].sparql_type}},84923:(e,n,t)=>{t.r(n),t.d(n,{JdbcConfigurationError:()=>o});class o extends Error{constructor(e,n){super(e),this.jdbcConfigurationInfo=n}}}};
2
- //# sourceMappingURL=33524.10558ac848ce64b2b722.bundle.js.map
1
+ export const __webpack_id__=33524;export const __webpack_ids__=[15435,33524,42826,56139,56413,66014,71156,83610,84923];export const __webpack_modules__={15435:(e,n,t)=>{t.r(n),t.d(n,{RenderingMode:()=>o});const o={YASGUI:"mode-yasgui",YASQE:"mode-yasqe",YASR:"mode-yasr"}},33524:(e,n,t)=>{t.r(n),t(82493),t(5687),t(25222),t(76933),t(66014),t(42826),t(93098),angular.module("graphdb.framework.jdbc",["toastr","ui.bootstrap","graphdb.framework.jdbc.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives","graphdb.framework.rest.jdbc.service","graphdb.framework.core.directives.yasgui-component"])},42826:()=>{angular.module("graphdb.framework.rest.jdbc.service",[]).factory("JdbcRestService",n),n.$inject=["$http","$repositories","$translate"];const e="rest/sql-views";function n(n,t){return{getJdbcConfigurations:function(){return n.get(`${e}/tables`)},getJdbcConfiguration:function(t){return n.get(`${e}/tables/${t}`)},createNewJdbcConfiguration:function(e){return o("POST","",e)},updateJdbcConfiguration:function(e){return o("PUT",e.name,e)},deleteJdbcConfiguration:function(t){return n.delete(`${e}/tables/${t}`)},getColumnNames:function(t){return n.post(`${e}/columns`,t,{headers:{Accept:"application/json","Content-Type":"text/plain"}})},getColumnsTypeSuggestion:function(o,i){if(!Array.isArray(i))throw new Error(t.instant("jdbc.column.names.constraint"));return n({method:"POST",url:`${e}/types`,data:{query:o,column_names:i}})},getExistingSqlTablePreview:function(e,t){return n({method:"GET",url:`rest/sql-views/preview/${e}`,params:{limit:t}})},getNewSqlTablePreview:function(e,t){return n({method:"POST",url:"rest/sql-views/preview",contentType:"application/json; charset=utf-8",dataType:"json",data:e,params:{limit:t},headers:{Accept:"application/sparql-results+json"}})}};function o(t,o,i){return n({method:t,url:o?`${e}/tables/${o}`:`${e}/tables`,noCancelOnRouteChange:!0,data:{name:i.name,query:i.query,columns:i.columns||[]}})}}},56139:()=>{function e(e,n){return{showToastMessageWithDelay:function(t){return new Promise(o=>{e.success(n.instant(t)),setTimeout(o,300)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",e),e.$inject=["toastr","$translate"]},56413:(e,n,t)=>{t.r(n),t.d(n,{DEFAULT_SPARQL_QUERY:()=>o,JdbcConfigurationInfo:()=>i});const o="PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n\n# Selects two variables to use as columns\nSELECT ?id ?label {\n ?id rdfs:label ?label\n # The following placeholder must be present in the query\n #!filter\n}";class i{constructor(e=o,n=!0,t=void 0){this.query=e,this.jdbcConfigurationName=t,this.isNewJdbcConfiguration=n,this.isValidQuery=!0,this.isValidQueryType=!0,this.hasUndefinedColumns=!1,this.isColumnsEmpty=!1,this.columns=[]}}},66014:(e,n,t)=>{t.r(n),t(76933),t(83351),t(56139),t(82493),t(81655);var o=t(56413),i=t(71156),r=t(84923),s=t(15435),a=t(83610),c=t(85727),u=t(69937),l=t(57154);function d(e,n,t,o,i,r){e.getSqlConfigurations=function(){!n.getActiveRepository()||n.isActiveRepoOntopType()||n.isActiveRepoFedXType()?e.jdbcConfigurations=[]:t.getJdbcConfigurations().success(function(n){e.jdbcConfigurations=n}).error(function(e){const n=getError(e);o.error(n,r.instant("jdbc.not.get.SQL.msg"))})},e.$watch(function(){return n.getActiveRepository()},function(){e.getSqlConfigurations()}),e.deleteConfiguration=function(n){i.openSimpleModal({title:r.instant("common.warning"),message:r.instant("jdbc.delete.sql.table.warning.msg",{name:n}),warning:!0}).result.then(function(){t.deleteJdbcConfiguration(n).success(function(){e.getSqlConfigurations()}).error(function(e){o.error(getError(e),r.instant("jdbc.not.delete.sql.msg"))})})}}function g(e,n,t,d,g,f,m,p,b,y,C,h,j,w,v,q){n.emptySparqlResponse='{"head": {"vars": []},"results": {"bindings": []}}',n.getSuggestionSqlType="",n.sqlTypes=[],n.activeTab=1,n.jdbcConfigurationInfo=new o.JdbcConfigurationInfo,n.jdbcConfigurationInfo.jdbcConfigurationName=d.search().name||"",n.saveOrUpdateExecuted=!1,n.jdbcConfigurationInfo.isNewJdbcConfiguration=!n.jdbcConfigurationInfo.jdbcConfigurationName,n.language=v.getLanguage(),n.isDirty=!1,n.prefixes=[],n.loadingControllerResources=!1,n.isQueryRunning=!1,n.canEditActiveRepo=!1;let S=!0,R=!0;n.saveJdbcConfiguration=()=>{if(n.saveOrUpdateExecuted=!0,!n.jdbcConfigurationInfo.jdbcConfigurationName)return;if(!n.isDirty)return void F();const e=n.jdbcConfigurationInfo.isNewJdbcConfiguration?_:$;N(n.jdbcConfigurationInfo).then(P).then(Q).then(M).then(e).catch(e=>{if(!(e instanceof r.JdbcConfigurationError)){const n=getError(e);g.error(n,w.instant("jdbc.not.saved.configuration"))}})},n.getPreview=()=>{n.activeTab=1,n.isQueryRunning=!0,N(n.jdbcConfigurationInfo).then(P).then(Q).then(M).then(e=>(A({render:s.RenderingMode.YASQE,initialQuery:e.query}),e)).then(E).then(([e,n])=>{const t=e&&e.results.bindings&&e.results.bindings.length>0;let o=s.RenderingMode.YASGUI;t||(o=s.RenderingMode.YASQE,g.info(w.instant("jdbc.table.definition"),w.instant("jdbc.preview.sql"))),A({render:o,sparqlResponse:e,initialQuery:n.query})}).catch(e=>{e instanceof r.JdbcConfigurationError?e.jdbcConfigurationInfo&&(e.jdbcConfigurationInfo.isColumnsEmpty||e.jdbcConfigurationInfo.hasUndefinedColumns)&&(D(),n.activeTab=2):g.error(getError(e,0,100),w.instant("jdbc.not.show.preview"))}).finally(()=>{n.isQueryRunning=!1})},n.setActiveTab=e=>{n.activeTab=e;const t=n.jdbcConfigurationInfo.columns;2!==n.activeTab||t&&0!==t.length||N(n.jdbcConfigurationInfo).then(P).then(()=>{n.getColumnsSuggestions()})},n.setDirty=()=>{n.isDirty=!0},n.getTypeLabel=e=>{switch(e){case"iri":return"VARCHAR: IRI";case"string":return"VARCHAR: String";default:return e.indexOf(" ")>0?e:e.toUpperCase()}},n.selectColumnType=(e,t)=>{n.setDirty();const o=n.jdbcConfigurationInfo.columns.find(n=>n.column_name===e);o.column_type===n.getSuggestionSqlType&&M(n.jdbcConfigurationInfo).then(n=>y.getColumnsTypeSuggestion(n.query,[e])).then(e=>e.data).then(e=>{(0,a.updateColumn)(o,e),T(o.column_type,t)}).catch(e=>{g.error(getError(e),w.instant("jdbc.not.suggest.column.type"))})},n.deleteColumn=function(e,t){j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.delete.column.msg",{columnName:e}),warning:!0}).result.then(function(){n.jdbcConfigurationInfo.columns.splice(t,1),n.setDirty()})},n.getColumnsSuggestions=()=>{n.jdbcConfigurationInfo.columns&&n.jdbcConfigurationInfo.columns.length>0?j.openSimpleModal({title:w.instant("common.warning"),message:w.instant("jdbc.warning.column.type.msg"),warning:!0}).result.then(function(){D()}):D()},n.hasPrecision=e=>"iri"===e||"string"===e||"decimal"===e,n.containsColumnsWithPrecision=e=>e&&e.some(e=>n.hasPrecision(e.column_type)),n.containsColumnsWithScale=e=>e&&e.some(e=>U(e.column_type)),n.isLiteral=e=>"iri"!==e&&"unknown"!==e,n.containsNonLiteralColumnsOnly=e=>e&&e.every(e=>!n.isLiteral(e.column_type));const E=e=>{if(n.canWriteActiveRepo){const t=JSON.stringify({name:n.jdbcConfigurationInfo.jdbcConfigurationName,query:n.jdbcConfigurationInfo.query,columns:n.jdbcConfigurationInfo.columns||[]});return Promise.all([y.getNewSqlTablePreview(t).then(e=>e.data),Promise.resolve(e)])}return Promise.all([y.getExistingSqlTablePreview(n.jdbcConfigurationInfo.jdbcConfigurationName).then(e=>e.data),Promise.resolve(e)])},T=(e,n)=>{e===n?g.info((0,u.Gz)(w.instant("jdbc.same.suggested.sql.type",{type:e})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0}):g.success((0,u.Gz)(w.instant("jdbc.suggested.sql.type",{type:e})),w.instant("jdbc.suggest.sql.type"),{allowHtml:!0})},I=(e,t=new o.JdbcConfigurationInfo)=>{n.jdbcConfigurationInfo.columns=t.columns,n.jdbcConfigurationInfo.query=t.query,n.jdbcConfigurationInfo.jdbcConfigurationName=d.search().name||"",n.jdbcConfigurationInfo.isNewJdbcConfiguration=!n.jdbcConfigurationInfo.jdbcConfigurationName,n.prefixes=e,A(),V()},_=e=>{const t={name:e.jdbcConfigurationName,query:e.query,columns:e.columns};return y.createNewJdbcConfiguration(t).then(()=>{n.isDirty=!1,n.jdbcConfigurationInfo.isNewConfiguration=!1,g.success(w.instant("jdbc.saved.configuration")),W()})},$=e=>{const t={name:e.jdbcConfigurationName,query:e.query,columns:e.columns};return y.updateJdbcConfiguration(t).then(()=>{n.isDirty=!1,n.jdbcConfigurationInfo.isNewConfiguration=!1,g.success(w.instant("jdbc.configuration.updated")),W()})},A=(e={})=>{const t={};angular.extend(t,n.yasguiConfig||J(),e),n.yasguiConfig=t},J=()=>({showEditorTabs:!1,showToolbar:!1,showResultTabs:!1,showQueryButton:!1,showResultInfo:!1,downloadAsOn:!1,showYasqeResizer:!1,initialQuery:n.jdbcConfigurationInfo.query,componentId:"jdbc-component",prefixes:n.prefixes,maxPersistentResponseSize:0,render:s.RenderingMode.YASQE,getCellContent:L,sparqlResponse:n.emptySparqlResponse,yasqeActionButtons:c.DISABLE_YASQE_BUTTONS_CONFIGURATION,yasqeMode:n.canEditActiveRepo?i.YasqeMode.WRITE:i.YasqeMode.READ}),N=e=>O().getQueryType().then(n=>(e.isValidQueryType="SELECT"===n,e.isValidQueryType?e:Promise.reject(new r.JdbcConfigurationError("Query type is not valid.")))),P=e=>O().isQueryValid().then(n=>(e.isValidQuery=n,e.isValidQuery?e:Promise.reject(new r.JdbcConfigurationError("Invalid query.")))),Q=e=>e.columns&&0!==e.columns.length?n.jdbcConfigurationInfo.columns&&n.jdbcConfigurationInfo.columns.find(e=>"unknown"===e.column_type)?(e.hasUndefinedColumns=!0,Promise.reject(new r.JdbcConfigurationError("There are columns without defined type.",e))):Promise.resolve(e):(e.isColumnsEmpty=!0,g.error(w.instant("jdbc.warning.one.column.msg")),Promise.reject(new r.JdbcConfigurationError("There are not defined columns.",e))),D=()=>{N(n.jdbcConfigurationInfo).then(P).then(M).then(x).then(k).then(e=>n.jdbcConfigurationInfo=e).catch(e=>{console.log(e)})},x=e=>y.getColumnNames(e.query).then(n=>[e,n.data]).catch(function(e){g.error(getError(e),w.instant("jdbc.not.suggest.column.names"))}),k=([e,t])=>y.getColumnsTypeSuggestion(e.query,t).then(function(o){return e.columns=(0,a.toJDBCColumns)(t,o.data),e.isColumnsEmpty=e.columns.length,n.setDirty(),e}).catch(function(e){g.error(getError(e),w.instant("jdbc.not.suggest.column.types"))}),O=()=>c.YasguiComponentDirectiveUtil.getOntotextYasguiElement("#query-editor"),M=e=>O().getQuery().then(n=>(e.query=n,e)),U=e=>"decimal"===e,L=(e,n)=>{let t=e.value;return t=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),"<div class = 'literal-cell'><p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>"+t+"</p></div>"},Y=(e,n,t,o)=>{j.openSimpleModal({title:e,message:n,warning:!0}).result.then(function(){angular.isFunction(t)&&t()},function(){angular.isFunction(o)&&o()})},V=()=>{n.getSuggestionSqlType=w.instant("view.jdbc.create.get_suggestion_sql_type"),n.sqlTypes=["string","iri","boolean","byte","short","int","long","float","double","decimal","date","time","timestamp",n.getSuggestionSqlType]},W=()=>{setTimeout(function(){F()},1e3)},F=()=>{d.url("/jdbc")},B=e=>{n.isDirty&&(e.returnValue=!0)},G=()=>{window.removeEventListener("beforeunload",B),z.forEach(e=>e())},z=[],H=l.ServiceProvider.get(l.RepositoryContextService).onSelectedRepositoryChanged(e=>{e&&(R?R=!1:O().abortQuery().then(F))},()=>new Promise(function(e){if(n.jdbcConfigurationInfo.isNewJdbcConfiguration)return void e(!0);const t=()=>{n.isDirty=!1,e(!0)};if(n.isDirty){const n=()=>{e(!1)},o=w.instant("common.confirm"),i=w.instant("jdbc.warning.unsaved.changes");Y(o,i,t,n)}else t()}));z.push(H),z.push(t.$on("$translateChangeSuccess",()=>{n.language=v.getLanguage(),V()})),z.push(n.$on("$locationChangeStart",(e,t)=>{if(n.isDirty){e.preventDefault();const n=w.instant("common.confirm"),o=w.instant("jdbc.warning.unsaved.changes");Y(n,o,()=>{G();const e=d.absUrl().length-d.url().length,n=t.substring(e);d.path(n)})}else G()})),z.push(n.$on("$destroy",G)),window.addEventListener("beforeunload",B),z.push(n.$watch(n.getActiveRepositoryObject,e=>{e&&(n.canEditActiveRepo=n.canWriteActiveRepo(),S?((()=>{n.loadingControllerResources=!0;const e=f.getActiveRepository();n.jdbcConfigurationInfo.jdbcConfigurationName?Promise.all([f.getPrefixes(e),y.getJdbcConfiguration(n.jdbcConfigurationInfo.jdbcConfigurationName)]).then(([e,n])=>{I(e,n.data)}).finally(()=>n.loadingControllerResources=!1):f.getPrefixes(e).then(e=>I(e)).finally(()=>n.loadingControllerResources=!1)})(),S=!1):O().abortQuery().then(F))}))}angular.module("graphdb.framework.jdbc.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("JdbcListCtrl",d).controller("JdbcCreateCtrl",g),d.$inject=["$scope","$repositories","JdbcRestService","toastr","ModalService","$translate"],g.$inject=["$q","$scope","$rootScope","$location","toastr","$repositories","$window","$timeout","$interval","JdbcRestService","RDF4JRepositoriesRestService","SparqlRestService","ModalService","$translate","$languageService","EventEmitterService"]},71156:(e,n,t)=>{t.r(n),t.d(n,{YasqeMode:()=>o});const o={WRITE:"WRITE",READ:"READ",PROTECTED:"PROTECTED"}},83610:(e,n,t)=>{t.r(n),t.d(n,{JdbcColumn:()=>o,toJDBCColumns:()=>i,updateColumn:()=>r});class o{constructor(){this.column_name="",this.column_type="",this.sparql_type="",this.nullable=!0}}const i=(e=[],n)=>e.map(e=>({column_name:e,column_type:n[e].column_type,nullable:!0,sparql_type:n[e].sparql_type})),r=(e,n)=>{e.column_type=n[e.column_name].column_type,e.sparql_type=n[e.column_name].sparql_type}},84923:(e,n,t)=>{t.r(n),t.d(n,{JdbcConfigurationError:()=>o});class o extends Error{constructor(e,n){super(e),this.jdbcConfigurationInfo=n}}}};
2
+ //# sourceMappingURL=33524.35fe079bcb99a78babaf.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"33524.35fe079bcb99a78babaf.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontotext-yasgui/rendering-mode.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/jdbc/app.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/jdbc.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/utils/notifications.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/jdbc/jdbc-configuration-info.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/jdbc/controllers.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/ontotext-yasgui/yasqe-mode.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/jdbc/jdbc-column.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/models/jdbc/jdbc-configuration-error.js"],"sourcesContent":["export const RenderingMode = {\n YASGUI: 'mode-yasgui',\n YASQE: 'mode-yasqe',\n YASR: 'mode-yasr'\n};\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/resources/controllers';\nimport 'angular/core/services/repositories.service';\nimport 'angular/jdbc/controllers';\nimport 'angular/rest/jdbc.rest.service';\nimport 'angular/core/directives/yasgui-component/yasgui-component.directive';\n\nconst modules = [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.jdbc.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.rest.jdbc.service',\n 'graphdb.framework.core.directives.yasgui-component'\n];\n\nangular.module('graphdb.framework.jdbc', modules);\n\n","angular\n .module('graphdb.framework.rest.jdbc.service', [])\n .factory('JdbcRestService', JdbcRestService);\n\nJdbcRestService.$inject = ['$http', '$repositories', '$translate'];\n\nconst JDBC_ENDPOINT = 'rest/sql-views';\n\nfunction JdbcRestService($http, $translate) {\n\n return {\n getJdbcConfigurations,\n getJdbcConfiguration,\n createNewJdbcConfiguration,\n updateJdbcConfiguration,\n deleteJdbcConfiguration,\n getColumnNames,\n getColumnsTypeSuggestion,\n getExistingSqlTablePreview,\n getNewSqlTablePreview\n };\n\n function getJdbcConfigurations() {\n return $http.get(`${JDBC_ENDPOINT}/tables`);\n }\n\n function getJdbcConfiguration(configuration) {\n return $http.get(`${JDBC_ENDPOINT}/tables/${configuration}`);\n }\n\n function createConfiguration(method, table, configuration) {\n const url = table ? `${JDBC_ENDPOINT}/tables/${table}` : `${JDBC_ENDPOINT}/tables`;\n return $http({\n method,\n url: url,\n noCancelOnRouteChange: true,\n data: {\n name: configuration.name,\n query: configuration.query,\n columns: configuration.columns || []\n }\n }\n );\n }\n\n function createNewJdbcConfiguration(configuration) {\n return createConfiguration('POST', '', configuration);\n }\n\n function updateJdbcConfiguration(configuration) {\n return createConfiguration('PUT', configuration.name, configuration);\n }\n\n function deleteJdbcConfiguration(name) {\n return $http.delete(`${JDBC_ENDPOINT}/tables/${name}`);\n }\n\n function getColumnNames(query) {\n const headers = {\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'text/plain'\n }\n };\n\n return $http.post(`${JDBC_ENDPOINT}/columns`, query, headers);\n }\n\n function getColumnsTypeSuggestion(query, columns) {\n if (!Array.isArray(columns)) {\n throw new Error($translate.instant('jdbc.column.names.constraint'));\n }\n\n return $http({\n method: 'POST',\n url: `${JDBC_ENDPOINT}/types`,\n data: {\n query: query,\n column_names: columns\n }\n }\n );\n }\n function getExistingSqlTablePreview(name, limit) {\n // Limit in preview is optional. On backend default value is set to 100\n return $http({\n method: 'GET',\n url: `rest/sql-views/preview/${name}`,\n params: {\n limit\n }\n });\n }\n\n function getNewSqlTablePreview(sqlView, limit) {\n // Limit in preview is optional. On backend default value is set to 100\n return $http({\n method: 'POST',\n url: \"rest/sql-views/preview\",\n contentType: \"application/json; charset=utf-8\",\n dataType: 'json',\n data: sqlView,\n params: {\n limit\n },\n headers: {Accept: 'application/sparql-results+json'}\n });\n }\n}\n","angular\n .module('graphdb.framework.utils.notifications', [])\n .factory('Notifications', Notifications);\n\nNotifications.$inject = ['toastr', '$translate'];\n\nfunction Notifications(toastr, $translate) {\n return {\n showToastMessageWithDelay\n };\n\n /**\n * This method will show message with tiny delay and only after completion\n * of latter redirection to \"graphs-visualizations\" page will happen.\n * @param {string} message The message to be displayed.\n * @return {Promise<any>}\n */\n function showToastMessageWithDelay(message) {\n return new Promise((r) => {\n toastr.success($translate.instant(message));\n setTimeout(r, 300);\n });\n }\n}\n","export const DEFAULT_SPARQL_QUERY = 'PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\\n' +\n '\\n' +\n '# Selects two variables to use as columns\\n' +\n 'SELECT ?id ?label {\\n' +\n ' ?id rdfs:label ?label\\n' +\n ' # The following placeholder must be present in the query\\n' +\n ' #!filter\\n' +\n '}';\n\nexport class JdbcConfigurationInfo {\n constructor(query = DEFAULT_SPARQL_QUERY, isNewJdbcConfiguration = true, jdbcConfigurationName = undefined) {\n this.query = query;\n this.jdbcConfigurationName = jdbcConfigurationName;\n this.isNewJdbcConfiguration = isNewJdbcConfiguration;\n this.isValidQuery = true;\n this.isValidQueryType = true;\n this.hasUndefinedColumns = false;\n this.isColumnsEmpty = false;\n this.columns = [];\n }\n}\n","import 'angular/core/services/repositories.service';\nimport 'angular/rest/monitoring.rest.service';\nimport 'angular/utils/notifications';\nimport 'angular/core/services';\nimport 'angular/core/services/event-emitter-service';\nimport {JdbcConfigurationInfo} from \"../models/jdbc/jdbc-configuration-info\";\nimport {YasqeMode} from \"../models/ontotext-yasgui/yasqe-mode\";\nimport {JdbcConfigurationError} from \"../models/jdbc/jdbc-configuration-error\";\nimport {RenderingMode} from \"../models/ontotext-yasgui/rendering-mode\";\nimport {toJDBCColumns, updateColumn} from \"../models/jdbc/jdbc-column\";\nimport {DISABLE_YASQE_BUTTONS_CONFIGURATION, YasguiComponentDirectiveUtil} from \"../core/directives/yasgui-component/yasgui-component-directive.util\";\nimport {decodeHTML} from \"../../../app\";\nimport {RepositoryContextService, ServiceProvider} from \"@ontotext/workbench-api\";\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.monitoring.service',\n 'toastr',\n 'graphdb.framework.utils.event-emitter-service'\n];\n\nangular.module('graphdb.framework.jdbc.controllers', modules, [\n 'graphdb.framework.utils.notifications'\n])\n .controller('JdbcListCtrl', JdbcListCtrl)\n .controller('JdbcCreateCtrl', JdbcCreateCtrl);\n\nJdbcListCtrl.$inject = ['$scope', '$repositories', 'JdbcRestService', 'toastr', 'ModalService', '$translate'];\n\nfunction JdbcListCtrl($scope, $repositories, JdbcRestService, toastr, ModalService, $translate) {\n\n $scope.getSqlConfigurations = function () {\n // Only do this if there is an active repo that isn't an Ontop or FedX repo.\n // Ontop and FedX repos don't support JDBC.\n if ($repositories.getActiveRepository()\n && !$repositories.isActiveRepoOntopType()\n && !$repositories.isActiveRepoFedXType()) {\n JdbcRestService.getJdbcConfigurations().success(function (data) {\n $scope.jdbcConfigurations = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.get.SQL.msg'));\n });\n } else {\n $scope.jdbcConfigurations = [];\n }\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n $scope.getSqlConfigurations();\n });\n\n $scope.deleteConfiguration = function (name) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.warning'),\n message: $translate.instant('jdbc.delete.sql.table.warning.msg', {name: name}),\n warning: true\n }).result\n .then(function () {\n JdbcRestService.deleteJdbcConfiguration(name).success(function () {\n $scope.getSqlConfigurations();\n }).error(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.delete.sql.msg'));\n });\n });\n };\n}\n\nJdbcCreateCtrl.$inject = [\n '$q',\n '$scope',\n '$rootScope',\n '$location',\n 'toastr',\n '$repositories',\n '$window',\n '$timeout',\n '$interval',\n 'JdbcRestService',\n 'RDF4JRepositoriesRestService',\n 'SparqlRestService',\n 'ModalService',\n '$translate',\n '$languageService',\n 'EventEmitterService'];\n\nfunction JdbcCreateCtrl(\n $q,\n $scope,\n $rootScope,\n $location,\n toastr,\n $repositories,\n $window,\n $timeout,\n $interval,\n JdbcRestService,\n RDF4JRepositoriesRestService,\n SparqlRestService,\n ModalService,\n $translate,\n $languageService,\n EventEmitterService) {\n\n $scope.emptySparqlResponse = \"{\\\"head\\\": {\\\"vars\\\": []},\\\"results\\\": {\\\"bindings\\\": []}}\";\n $scope.getSuggestionSqlType = '';\n $scope.sqlTypes = [];\n $scope.activeTab = 1;\n $scope.jdbcConfigurationInfo = new JdbcConfigurationInfo();\n $scope.jdbcConfigurationInfo.jdbcConfigurationName = $location.search().name || '';\n $scope.saveOrUpdateExecuted = false;\n $scope.jdbcConfigurationInfo.isNewJdbcConfiguration = !$scope.jdbcConfigurationInfo.jdbcConfigurationName;\n $scope.language = $languageService.getLanguage();\n $scope.isDirty = false;\n $scope.prefixes = [];\n $scope.loadingControllerResources = false;\n $scope.isQueryRunning = false;\n $scope.canEditActiveRepo = false;\n\n // This flag is used to prevent loading of the yasgui on consecutive repository change events after\n // the first.\n let initialRepoInitialization = true;\n\n // This flag is used to prevent triggering the repository change event listener on initial subscription.\n let initialRepoChangeTrigger = true;\n\n // =========================\n // Public functions\n // =========================\n\n $scope.saveJdbcConfiguration = () => {\n $scope.saveOrUpdateExecuted = true;\n\n if (!$scope.jdbcConfigurationInfo.jdbcConfigurationName) {\n return;\n }\n\n if (!$scope.isDirty) {\n goToJdbcView();\n return;\n }\n\n const saveOrUpdate = $scope.jdbcConfigurationInfo.isNewJdbcConfiguration ? createConfiguration : updateConfiguration;\n\n validateQueryType($scope.jdbcConfigurationInfo)\n .then(validateQuery)\n .then(validateColumns)\n .then(updateJdbcConfigurationQuery)\n .then(saveOrUpdate)\n .catch((error) => {\n if (!(error instanceof JdbcConfigurationError)) {\n const msg = getError(error);\n toastr.error(msg, $translate.instant('jdbc.not.saved.configuration'));\n }\n });\n };\n\n $scope.getPreview = () => {\n $scope.activeTab = 1;\n\n $scope.isQueryRunning = true;\n validateQueryType($scope.jdbcConfigurationInfo)\n .then(validateQuery)\n .then(validateColumns)\n .then(updateJdbcConfigurationQuery)\n .then((jdbcConfigurationInfo) => {\n updateYasguiConfiguration({render: RenderingMode.YASQE, initialQuery: jdbcConfigurationInfo.query});\n return jdbcConfigurationInfo;\n })\n .then(getSqlTablePreview)\n .then(([tablePreviewResults, jdbcConfigurationInfo]) => {\n const hasResult = tablePreviewResults && tablePreviewResults.results.bindings && tablePreviewResults.results.bindings.length > 0;\n let render = RenderingMode.YASGUI;\n if (!hasResult) {\n render = RenderingMode.YASQE;\n toastr.info($translate.instant('jdbc.table.definition'), $translate.instant('jdbc.preview.sql'));\n }\n updateYasguiConfiguration({\n render,\n sparqlResponse: tablePreviewResults,\n initialQuery: jdbcConfigurationInfo.query\n });\n })\n .catch((error) => {\n if (!(error instanceof JdbcConfigurationError)) {\n toastr.error(getError(error, 0, 100), $translate.instant('jdbc.not.show.preview'));\n } else {\n if (error.jdbcConfigurationInfo && (error.jdbcConfigurationInfo.isColumnsEmpty || error.jdbcConfigurationInfo.hasUndefinedColumns)) {\n getSuggestions();\n $scope.activeTab = 2;\n }\n }\n })\n .finally(() => {\n $scope.isQueryRunning = false;\n });\n };\n\n $scope.setActiveTab = (tabIndex) => {\n $scope.activeTab = tabIndex;\n const columns = $scope.jdbcConfigurationInfo.columns;\n if ($scope.activeTab === 2 && (!columns || columns.length === 0)) {\n validateQueryType($scope.jdbcConfigurationInfo)\n .then(validateQuery)\n .then(() => {\n $scope.getColumnsSuggestions();\n });\n }\n };\n\n $scope.setDirty = () => {\n $scope.isDirty = true;\n };\n\n $scope.getTypeLabel = (type) => {\n switch (type) {\n case 'iri':\n return 'VARCHAR: IRI';\n case 'string':\n return 'VARCHAR: String';\n default:\n return type.indexOf(' ') > 0 ? type : type.toUpperCase();\n }\n };\n\n $scope.selectColumnType = (columnName, prevColumnType) => {\n $scope.setDirty();\n const column = $scope.jdbcConfigurationInfo.columns.find((column) => column.column_name === columnName);\n\n if (column.column_type === $scope.getSuggestionSqlType) {\n updateJdbcConfigurationQuery($scope.jdbcConfigurationInfo)\n .then((jdbcConfigurationInfo) => JdbcRestService.getColumnsTypeSuggestion(jdbcConfigurationInfo.query, [columnName]))\n .then((response) => response.data)\n .then((columnSuggestion) => {\n updateColumn(column, columnSuggestion);\n notifyColumnTypeChanged(column.column_type, prevColumnType);\n })\n .catch((error) => {\n toastr.error(getError(error), $translate.instant('jdbc.not.suggest.column.type'));\n });\n }\n };\n\n $scope.deleteColumn = function (columnName, index) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.warning'),\n message: $translate.instant('jdbc.warning.delete.column.msg', {columnName: columnName}),\n warning: true\n }).result\n .then(function () {\n $scope.jdbcConfigurationInfo.columns.splice(index, 1);\n $scope.setDirty();\n });\n };\n\n $scope.getColumnsSuggestions = () => {\n if ($scope.jdbcConfigurationInfo.columns && $scope.jdbcConfigurationInfo.columns.length > 0) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.warning'),\n message: $translate.instant('jdbc.warning.column.type.msg'),\n warning: true\n }).result\n .then(function () {\n getSuggestions();\n });\n } else {\n getSuggestions();\n }\n };\n\n $scope.hasPrecision = (columnType) => {\n return columnType === 'iri' || columnType === 'string' || columnType === 'decimal';\n };\n\n $scope.containsColumnsWithPrecision = (columns) => {\n return columns && columns.some((el) => $scope.hasPrecision(el.column_type));\n };\n\n $scope.containsColumnsWithScale = (columns) => {\n return columns && columns.some((el) => hasScale(el.column_type));\n };\n\n $scope.isLiteral = (columnType) => {\n return columnType !== 'iri' && columnType !== 'unknown';\n };\n\n $scope.containsNonLiteralColumnsOnly = (columns) => {\n return columns && columns.every((el) => !$scope.isLiteral(el.column_type));\n };\n\n // =========================\n // Private functions\n // =========================\n\n const getSqlTablePreview = (jdbcConfigurationInfo) => {\n if ($scope.canWriteActiveRepo) {\n const sqlView = JSON.stringify({\n name: $scope.jdbcConfigurationInfo.jdbcConfigurationName,\n query: $scope.jdbcConfigurationInfo.query,\n columns: $scope.jdbcConfigurationInfo.columns || []\n });\n return Promise.all([JdbcRestService.getNewSqlTablePreview(sqlView).then((response) => response.data), Promise.resolve(jdbcConfigurationInfo)]);\n } else {\n return Promise.all([JdbcRestService.getExistingSqlTablePreview($scope.jdbcConfigurationInfo.jdbcConfigurationName).then((response) => response.data), Promise.resolve(jdbcConfigurationInfo)]);\n }\n };\n\n const notifyColumnTypeChanged = (currentColumnType, prevColumnType) => {\n if (currentColumnType === prevColumnType) {\n toastr.info(decodeHTML($translate.instant('jdbc.same.suggested.sql.type', {type: currentColumnType})),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n } else {\n toastr.success(decodeHTML($translate.instant('jdbc.suggested.sql.type', {type: currentColumnType})),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n }\n };\n\n const init = (prefixes, jdbcConfiguration = new JdbcConfigurationInfo()) => {\n $scope.jdbcConfigurationInfo.columns = jdbcConfiguration.columns;\n $scope.jdbcConfigurationInfo.query = jdbcConfiguration.query;\n $scope.jdbcConfigurationInfo.jdbcConfigurationName = $location.search().name || '';\n $scope.jdbcConfigurationInfo.isNewJdbcConfiguration = !$scope.jdbcConfigurationInfo.jdbcConfigurationName;\n $scope.prefixes = prefixes;\n updateYasguiConfiguration();\n updateSqlTypes();\n };\n\n const createConfiguration = (jdbcConfigurationInfo) => {\n const configuration = {\n name: jdbcConfigurationInfo.jdbcConfigurationName,\n query: jdbcConfigurationInfo.query,\n columns: jdbcConfigurationInfo.columns\n };\n\n return JdbcRestService.createNewJdbcConfiguration(configuration)\n .then(() => {\n $scope.isDirty = false;\n $scope.jdbcConfigurationInfo.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.saved.configuration'));\n goBack();\n });\n };\n\n const updateConfiguration = (jdbcConfigurationInfo) => {\n const configuration = {\n name: jdbcConfigurationInfo.jdbcConfigurationName,\n query: jdbcConfigurationInfo.query,\n columns: jdbcConfigurationInfo.columns\n };\n return JdbcRestService.updateJdbcConfiguration(configuration)\n .then(() => {\n $scope.isDirty = false;\n $scope.jdbcConfigurationInfo.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.configuration.updated'));\n goBack();\n });\n };\n\n\n const updateYasguiConfiguration = (additionalConfiguration = {}) => {\n const config = {};\n angular.extend(config, $scope.yasguiConfig || getDefaultYasguiConfiguration(), additionalConfiguration);\n $scope.yasguiConfig = config;\n };\n\n const getDefaultYasguiConfiguration = () => {\n return {\n showEditorTabs: false,\n showToolbar: false,\n showResultTabs: false,\n showQueryButton: false,\n showResultInfo: false,\n downloadAsOn: false,\n showYasqeResizer: false,\n initialQuery: $scope.jdbcConfigurationInfo.query,\n componentId: 'jdbc-component',\n prefixes: $scope.prefixes,\n maxPersistentResponseSize: 0,\n render: RenderingMode.YASQE,\n getCellContent: getCellContent,\n sparqlResponse: $scope.emptySparqlResponse,\n yasqeActionButtons: DISABLE_YASQE_BUTTONS_CONFIGURATION,\n yasqeMode: $scope.canEditActiveRepo ? YasqeMode.WRITE : YasqeMode.READ\n };\n };\n\n /**\n * Checks if query mode is valid. The mode have to be \"select\".\n * @param {JdbcConfigurationInfo} jdbcConfiguration - holds information about jdbc configuration.\n * @return {Promise<JdbcConfigurationInfo>}\n */\n const validateQueryType = (jdbcConfiguration) => {\n return getOntotextYasgui().getQueryType()\n .then((queryType) => {\n jdbcConfiguration.isValidQueryType = 'SELECT' === queryType;\n if (!jdbcConfiguration.isValidQueryType) {\n return Promise.reject(new JdbcConfigurationError('Query type is not valid.'));\n }\n return jdbcConfiguration;\n });\n };\n\n /**\n * Checks if query is valid.\n * @param {JdbcConfigurationInfo} jdbcConfigurationInfo - holds information about jdbc configuration.\n * @return {Promise<JdbcConfigurationInfo>}\n */\n const validateQuery = (jdbcConfigurationInfo) => {\n return getOntotextYasgui().isQueryValid()\n .then((valid) => {\n jdbcConfigurationInfo.isValidQuery = valid;\n if (!jdbcConfigurationInfo.isValidQuery) {\n return Promise.reject(new JdbcConfigurationError('Invalid query.'));\n }\n return jdbcConfigurationInfo;\n });\n };\n\n /**\n * Checks if jdbc configuration has columns without defined type.\n * @param {JdbcConfigurationInfo} jdbcConfiguration - holds information about jdbc configuration.\n * @return {Promise<JdbcConfigurationInfo>}\n */\n const validateColumns = (jdbcConfiguration) => {\n if (!jdbcConfiguration.columns || jdbcConfiguration.columns.length === 0) {\n jdbcConfiguration.isColumnsEmpty = true;\n toastr.error($translate.instant('jdbc.warning.one.column.msg'));\n return Promise.reject(new JdbcConfigurationError('There are not defined columns.', jdbcConfiguration));\n }\n const unknownColumn = $scope.jdbcConfigurationInfo.columns && $scope.jdbcConfigurationInfo.columns\n .find((el) => el.column_type === 'unknown');\n if (unknownColumn) {\n jdbcConfiguration.hasUndefinedColumns = true;\n return Promise.reject(new JdbcConfigurationError('There are columns without defined type.', jdbcConfiguration));\n }\n return Promise.resolve(jdbcConfiguration);\n };\n\n const getSuggestions = () => {\n validateQueryType($scope.jdbcConfigurationInfo)\n .then(validateQuery)\n .then(updateJdbcConfigurationQuery)\n .then(getColumnNames)\n .then(getColumnsTypeSuggestion)\n .then((jdbcConfigurationInfo) => $scope.jdbcConfigurationInfo = jdbcConfigurationInfo)\n .catch((error) => {\n console.log(error);\n });\n };\n\n const getColumnNames = (jdbcConfigurationInfo) => {\n return JdbcRestService.getColumnNames(jdbcConfigurationInfo.query)\n .then((response) => [jdbcConfigurationInfo, response.data])\n .catch(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.names'));\n });\n };\n\n const getColumnsTypeSuggestion = ([jdbcConfigurationInfo, columns]) => {\n return JdbcRestService.getColumnsTypeSuggestion(jdbcConfigurationInfo.query, columns)\n .then(function (response) {\n jdbcConfigurationInfo.columns = toJDBCColumns(columns, response.data);\n jdbcConfigurationInfo.isColumnsEmpty = jdbcConfigurationInfo.columns.length;\n $scope.setDirty();\n return jdbcConfigurationInfo;\n }).catch(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.types'));\n });\n };\n\n const getOntotextYasgui = () => {\n return YasguiComponentDirectiveUtil.getOntotextYasguiElement('#query-editor');\n };\n\n const updateJdbcConfigurationQuery = (jdbcConfigurationInfo) => {\n return getOntotextYasgui().getQuery()\n .then((query) => {\n jdbcConfigurationInfo.query = query;\n return jdbcConfigurationInfo;\n });\n };\n\n const hasScale = (columnType) => {\n return columnType === 'decimal';\n };\n\n const getCellContent = (bindings, _prefixes) => {\n let value = bindings.value;\n value = value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n const entityHtml = \"<p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>\"\n + value + \"</p>\";\n return \"<div class = 'literal-cell'>\" + entityHtml + \"</div>\";\n };\n\n const openConfirmDialog = (title, message, onConfirm, onCancel) => {\n ModalService.openSimpleModal({\n title,\n message,\n warning: true\n }).result.then(function () {\n if (angular.isFunction(onConfirm)) {\n onConfirm();\n }\n }, function () {\n if (angular.isFunction(onCancel)) {\n onCancel();\n }\n });\n };\n\n /**\n * Starts loading of needed data and process the view.\n */\n const loadOntotextYasgui = () => {\n $scope.loadingControllerResources = true;\n const activeRepository = $repositories.getActiveRepository();\n if ($scope.jdbcConfigurationInfo.jdbcConfigurationName) {\n Promise.all([$repositories.getPrefixes(activeRepository), JdbcRestService.getJdbcConfiguration($scope.jdbcConfigurationInfo.jdbcConfigurationName)])\n .then(([prefixes, templateContent]) => {\n init(prefixes, templateContent.data);\n })\n .finally(() => $scope.loadingControllerResources = false);\n } else {\n $repositories.getPrefixes(activeRepository)\n .then((prefixes) => init(prefixes))\n .finally(() => $scope.loadingControllerResources = false);\n }\n };\n\n /**\n * Translates \"Get suggestion...\" sql type option and updates sql type options with it.\n */\n const updateSqlTypes = () => {\n $scope.getSuggestionSqlType = $translate.instant('view.jdbc.create.get_suggestion_sql_type');\n $scope.sqlTypes = ['string', 'iri', 'boolean', 'byte', 'short', 'int', 'long', 'float', 'double', 'decimal', 'date', 'time', 'timestamp', $scope.getSuggestionSqlType];\n };\n\n /**\n * go to jdbc configurations page.\n */\n const goBack = () => {\n // Added timeout a success message to be shown.\n setTimeout(function () {\n goToJdbcView();\n }, 1000);\n };\n\n const goToJdbcView = () => {\n $location.url('/jdbc');\n };\n\n // =========================\n // Subscriptions handlers\n // =========================\n const languageChangedHandler = () => {\n $scope.language = $languageService.getLanguage();\n updateSqlTypes();\n };\n\n const repositoryWillChangeHandler = () => {\n return new Promise(function (resolve) {\n\n if ($scope.jdbcConfigurationInfo.isNewJdbcConfiguration) {\n resolve(true);\n return;\n }\n\n const onConfirm = () => {\n $scope.isDirty = false;\n resolve(true);\n };\n\n if ($scope.isDirty) {\n const onCancel = () => {\n resolve(false);\n };\n const title = $translate.instant('common.confirm');\n const message = $translate.instant('jdbc.warning.unsaved.changes');\n openConfirmDialog(title, message, onConfirm, onCancel);\n } else {\n onConfirm();\n }\n });\n };\n\n const locationChangedHandler = (event, newPath) => {\n if ($scope.isDirty) {\n event.preventDefault();\n const title = $translate.instant('common.confirm');\n const message = $translate.instant('jdbc.warning.unsaved.changes');\n const onConfirm = () => {\n removeAllListeners();\n const baseLen = $location.absUrl().length - $location.url().length;\n const path = newPath.substring(baseLen);\n $location.path(path);\n };\n openConfirmDialog(title, message, onConfirm);\n } else {\n removeAllListeners();\n }\n };\n\n const beforeunloadHandler = (event) => {\n if ($scope.isDirty) {\n event.returnValue = true;\n }\n };\n\n const removeAllListeners = () => {\n window.removeEventListener('beforeunload', beforeunloadHandler);\n subscriptions.forEach((subscription) => subscription());\n };\n\n const repositoryChangedHandler = (repository) => {\n if (!repository) {\n return;\n }\n if (initialRepoChangeTrigger) {\n initialRepoChangeTrigger = false;\n } else {\n getOntotextYasgui().abortQuery().then(goToJdbcView);\n }\n };\n\n const activeRepositoryHandler = (activeRepo) => {\n if (activeRepo) {\n $scope.canEditActiveRepo = $scope.canWriteActiveRepo();\n if (initialRepoInitialization) {\n loadOntotextYasgui();\n initialRepoInitialization = false;\n } else {\n getOntotextYasgui().abortQuery().then(goToJdbcView);\n }\n }\n };\n\n // =========================\n // Subscriptions\n // =========================\n const subscriptions = [];\n\n const repositoryContextService = ServiceProvider.get(RepositoryContextService);\n const repositoryChangeSubscription = repositoryContextService.onSelectedRepositoryChanged(repositoryChangedHandler, repositoryWillChangeHandler)\n\n subscriptions.push(repositoryChangeSubscription);\n subscriptions.push($rootScope.$on('$translateChangeSuccess', languageChangedHandler));\n subscriptions.push($scope.$on('$locationChangeStart', locationChangedHandler));\n subscriptions.push($scope.$on('$destroy', removeAllListeners));\n // Prevent go out of the current page? check\n window.addEventListener('beforeunload', beforeunloadHandler);\n\n\n // Wait until the active repository object is set, otherwise \"canWriteActiveRepo()\" may return a wrong result and the \"ontotext-yasgui\"\n // readOnly configuration may be incorrect.\n subscriptions.push($scope.$watch($scope.getActiveRepositoryObject, activeRepositoryHandler));\n}\n","export const YasqeMode = {\n /**\n * The query can be edited.\n */\n WRITE: 'WRITE',\n\n /**\n * The editor is read-only, but the query can be copied.\n */\n READ: 'READ',\n\n /**\n * The editor is read-only and the query can't be copied.\n */\n PROTECTED: 'PROTECTED'\n};\n","/**\n * DTO\n */\nexport class JdbcColumn {\n constructor() {\n this.column_name = '';\n this.column_type = '';\n this.sparql_type = '';\n this.nullable = true;\n }\n}\n\n/**\n * Constructs an array with {@link JdbcColumn} objects for everyone column of <code>columnNames</code>.\n *\n * @param {string[]} columnNames - array with column names.\n * @param {Object} columnTypes - objects that holds key-value pair. The key is column id, the value is {@link JdbcColumnType} object.\n * @return {JdbcColumn[]} the array with jdbc columns.\n */\nexport const toJDBCColumns = (columnNames = [], columnTypes) => {\n return columnNames.map((columnName) => {\n return {\n column_name: columnName,\n column_type: columnTypes[columnName].column_type,\n nullable: true,\n sparql_type: columnTypes[columnName].sparql_type\n };\n });\n};\n\nexport const updateColumn = (column, columnSuggestion) => {\n column.column_type = columnSuggestion[column.column_name].column_type;\n column.sparql_type = columnSuggestion[column.column_name].sparql_type;\n};\n","export class JdbcConfigurationError extends Error {\n\n constructor(message, jdbcConfigurationInfo) {\n super(message);\n this.jdbcConfigurationInfo = jdbcConfigurationInfo;\n }\n}\n"],"names":["RenderingMode","YASGUI","YASQE","YASR","angular","module","factory","JdbcRestService","$inject","JDBC_ENDPOINT","$http","$translate","getJdbcConfigurations","get","getJdbcConfiguration","configuration","createNewJdbcConfiguration","createConfiguration","updateJdbcConfiguration","name","deleteJdbcConfiguration","delete","getColumnNames","query","post","headers","getColumnsTypeSuggestion","columns","Array","isArray","Error","instant","method","url","data","column_names","getExistingSqlTablePreview","limit","params","getNewSqlTablePreview","sqlView","contentType","dataType","Accept","table","noCancelOnRouteChange","Notifications","toastr","showToastMessageWithDelay","message","Promise","r","success","setTimeout","DEFAULT_SPARQL_QUERY","JdbcConfigurationInfo","constructor","isNewJdbcConfiguration","jdbcConfigurationName","undefined","this","isValidQuery","isValidQueryType","hasUndefinedColumns","isColumnsEmpty","JdbcListCtrl","$scope","$repositories","ModalService","getSqlConfigurations","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","jdbcConfigurations","error","msg","getError","$watch","deleteConfiguration","openSimpleModal","title","warning","result","then","e","JdbcCreateCtrl","$q","$rootScope","$location","$window","$timeout","$interval","RDF4JRepositoriesRestService","SparqlRestService","$languageService","EventEmitterService","emptySparqlResponse","getSuggestionSqlType","sqlTypes","activeTab","jdbcConfigurationInfo","search","saveOrUpdateExecuted","language","getLanguage","isDirty","prefixes","loadingControllerResources","isQueryRunning","canEditActiveRepo","initialRepoInitialization","initialRepoChangeTrigger","saveJdbcConfiguration","goToJdbcView","saveOrUpdate","updateConfiguration","validateQueryType","validateQuery","validateColumns","updateJdbcConfigurationQuery","catch","JdbcConfigurationError","getPreview","updateYasguiConfiguration","render","initialQuery","getSqlTablePreview","tablePreviewResults","hasResult","results","bindings","length","info","sparqlResponse","getSuggestions","finally","setActiveTab","tabIndex","getColumnsSuggestions","setDirty","getTypeLabel","type","indexOf","toUpperCase","selectColumnType","columnName","prevColumnType","column","find","column_name","column_type","response","columnSuggestion","updateColumn","notifyColumnTypeChanged","deleteColumn","index","splice","hasPrecision","columnType","containsColumnsWithPrecision","some","el","containsColumnsWithScale","hasScale","isLiteral","containsNonLiteralColumnsOnly","every","canWriteActiveRepo","JSON","stringify","all","resolve","currentColumnType","decodeHTML","allowHtml","init","jdbcConfiguration","updateSqlTypes","isNewConfiguration","goBack","additionalConfiguration","config","extend","yasguiConfig","getDefaultYasguiConfiguration","showEditorTabs","showToolbar","showResultTabs","showQueryButton","showResultInfo","downloadAsOn","showYasqeResizer","componentId","maxPersistentResponseSize","getCellContent","yasqeActionButtons","DISABLE_YASQE_BUTTONS_CONFIGURATION","yasqeMode","YasqeMode","WRITE","READ","getOntotextYasgui","getQueryType","queryType","reject","isQueryValid","valid","console","log","toJDBCColumns","YasguiComponentDirectiveUtil","getOntotextYasguiElement","getQuery","_prefixes","value","replace","openConfirmDialog","onConfirm","onCancel","isFunction","beforeunloadHandler","event","returnValue","removeAllListeners","window","removeEventListener","subscriptions","forEach","subscription","repositoryChangeSubscription","ServiceProvider","RepositoryContextService","onSelectedRepositoryChanged","repository","abortQuery","repositoryWillChangeHandler","push","$on","languageChangedHandler","locationChangedHandler","newPath","preventDefault","baseLen","absUrl","path","substring","addEventListener","getActiveRepositoryObject","activeRepo","loadOntotextYasgui","activeRepository","getPrefixes","templateContent","controller","PROTECTED","JdbcColumn","sparql_type","nullable","columnNames","columnTypes","map","super"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_id__=36644;export const __webpack_ids__=[36644];export const __webpack_modules__={36644:()=>{PluginRegistry.add("guide.step",[{guideBlockName:"download-guide-resource",getSteps:(e,o)=>{const t=`guide-${e.repositoryId}-download-resource-link`;let d,i=((e,o,t)=>d=>{d.preventDefault(),t.GuidesService.downloadGuidesFile(e,o)})(e.resourcePath,e.resourceFile,o);return{guideBlockName:"info-message",options:angular.extend({},{title:"guide.step_plugin.download-guide-resource.title",content:"guide.step_plugin.download-guide-resource.content",canBePaused:!0,forceReload:!0,downloadButtonClass:t,show:e=>()=>{d=e.currentStep.el.querySelector(`.${t}`),d.addEventListener("click",i)},hide:()=>()=>{d&&d.removeEventListener("click",i)}},e)}}}])}};
2
+ //# sourceMappingURL=36644.b8ead0ab81253aa03ade.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"36644.b8ead0ab81253aa03ade.bundle.js","mappings":"oHAOAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,0BAChBC,SAAUA,CAACC,EAASC,KAChB,MAAMC,EAAsB,SAASF,EAAQG,sCAC7C,IACIC,EADAC,EAZmBC,EAACC,EAAcC,EAAcP,IACpDQ,IACJA,EAAMC,iBACNT,EAASU,cAAcC,mBAAmBL,EAAcC,IASrBF,CAA2BN,EAAQO,aAAcP,EAAQQ,aAAcP,GAEtG,MAAO,CACHH,eAAgB,eAChBE,QAASa,QAAQC,OAAO,CAAC,EAAG,CACxBC,MAAO,kDACPC,QAAS,oDACTC,aAAa,EACbC,aAAa,EACbhB,sBACAiB,KAAOC,GAAU,KACbhB,EAAkBgB,EAAMC,YAAYC,GAAGC,cAAc,IAAIrB,KACzDE,EAAgBoB,iBAAiB,QAASnB,IAE9CoB,KAAMA,IAAM,KACJrB,GACAA,EAAgBsB,oBAAoB,QAASrB,KAGtDL,O","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/guides/steps/complex/download-guide-resource/plugin.js"],"sourcesContent":["const createDownloadClickHandler = (resourcePath, resourceFile, services) => {\n return (event) => {\n event.preventDefault();\n services.GuidesService.downloadGuidesFile(resourcePath, resourceFile);\n }\n}\n\nPluginRegistry.add('guide.step', [\n {\n guideBlockName: 'download-guide-resource',\n getSteps: (options, services) => {\n const downloadButtonClass = `guide-${options.repositoryId}-download-resource-link`;\n let downloadResourceListener = createDownloadClickHandler(options.resourcePath, options.resourceFile, services);\n let stepHTMLElement;\n return {\n guideBlockName: 'info-message',\n options: angular.extend({}, {\n title: 'guide.step_plugin.download-guide-resource.title',\n content: 'guide.step_plugin.download-guide-resource.content',\n canBePaused: true,\n forceReload: true,\n downloadButtonClass,\n show: (guide) => () => {\n stepHTMLElement = guide.currentStep.el.querySelector(`.${downloadButtonClass}`);\n stepHTMLElement.addEventListener('click', downloadResourceListener);\n },\n hide: () => () => {\n if (stepHTMLElement) {\n stepHTMLElement.removeEventListener('click', downloadResourceListener);\n }\n }\n }, options)\n };\n }\n }]\n);\n"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","downloadButtonClass","repositoryId","stepHTMLElement","downloadResourceListener","createDownloadClickHandler","resourcePath","resourceFile","event","preventDefault","GuidesService","downloadGuidesFile","angular","extend","title","content","canBePaused","forceReload","show","guide","currentStep","el","querySelector","addEventListener","hide","removeEventListener"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- export const __webpack_id__=38360;export const __webpack_ids__=[38360];export const __webpack_modules__={38360:(t,e,n)=>{n.r(e),n.d(e,{default:()=>_});const _='<link href="css/markdown-content.css?v=3.1.0-TR7" rel="stylesheet"/> <div class="markdown-content" ng-bind-html="markdownContent"></div> '}};
2
- //# sourceMappingURL=38360.53936cc1df95e7a1b39d.bundle.js.map
1
+ export const __webpack_id__=38360;export const __webpack_ids__=[38360];export const __webpack_modules__={38360:(t,e,n)=>{n.r(e),n.d(e,{default:()=>_});const _='<link href="css/markdown-content.css?v=3.1.0-TR9" rel="stylesheet"/> <div class="markdown-content" ng-bind-html="markdownContent"></div> '}};
2
+ //# sourceMappingURL=38360.d06f8ac25d4347b8c94a.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"38360.53936cc1df95e7a1b39d.bundle.js","mappings":"uJAGA,QAFW,2I","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/templates/markdown-content/markdown-content.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/markdown-content.css?v=3.1.0-TR7\" rel=\"stylesheet\"/> <div class=\"markdown-content\" ng-bind-html=\"markdownContent\"></div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"38360.d06f8ac25d4347b8c94a.bundle.js","mappings":"uJAGA,QAFW,2I","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/core/templates/markdown-content/markdown-content.html"],"sourcesContent":["// Module\nvar code = `<link href=\"css/markdown-content.css?v=3.1.0-TR9\" rel=\"stylesheet\"/> <div class=\"markdown-content\" ng-bind-html=\"markdownContent\"></div> `;\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}