graphdb-workbench 2.2.4-TR1 → 2.2.4-TR2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/{102.7141102a059ef5eba1ea.bundle.js → 102.d52dc777ce7b5de1a30a.bundle.js} +2 -2
  2. package/dist/{102.7141102a059ef5eba1ea.bundle.js.map → 102.d52dc777ce7b5de1a30a.bundle.js.map} +1 -1
  3. package/dist/{104.ecd04b9cba294e159ca5.bundle.js → 104.09c8b5802e53cd9dced9.bundle.js} +2 -2
  4. package/dist/{104.ecd04b9cba294e159ca5.bundle.js.map → 104.09c8b5802e53cd9dced9.bundle.js.map} +1 -1
  5. package/dist/{107.5972b71755d2f24f6f44.bundle.js → 107.481f84627ac231f49e56.bundle.js} +2 -2
  6. package/dist/{107.5972b71755d2f24f6f44.bundle.js.map → 107.481f84627ac231f49e56.bundle.js.map} +1 -1
  7. package/dist/108.d61b0e4a54e1d0e6550d.bundle.js +2 -0
  8. package/dist/{108.162ea156d1fc4ad2525f.bundle.js.map → 108.d61b0e4a54e1d0e6550d.bundle.js.map} +1 -1
  9. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js → 11.89d3de4f2e80e373ecf2.bundle.js} +3 -3
  10. package/dist/{11.f7cb87be309f6bd00aa5.bundle.js.map → 11.89d3de4f2e80e373ecf2.bundle.js.map} +1 -1
  11. package/dist/{115.abb22e52d5886ed645c1.bundle.js → 115.36a12f5a0804f33cb569.bundle.js} +2 -2
  12. package/dist/{115.abb22e52d5886ed645c1.bundle.js.map → 115.36a12f5a0804f33cb569.bundle.js.map} +1 -1
  13. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js → 117.9c58e6155d7467c45284.bundle.js} +2 -2
  14. package/dist/{117.ed07ffe3ff3bead9b43b.bundle.js.map → 117.9c58e6155d7467c45284.bundle.js.map} +1 -1
  15. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js → 118.7cdbf2a7be83e4cdc7e2.bundle.js} +2 -2
  16. package/dist/{118.57c922b04fbcf0d65d1c.bundle.js.map → 118.7cdbf2a7be83e4cdc7e2.bundle.js.map} +1 -1
  17. package/dist/{119.7b75484ef37c16039937.bundle.js → 119.f7c106efa2582220baa7.bundle.js} +2 -2
  18. package/dist/{119.7b75484ef37c16039937.bundle.js.map → 119.f7c106efa2582220baa7.bundle.js.map} +1 -1
  19. package/dist/{12.eb41e4af80fee51d893c.bundle.js → 12.b4ac6d1ff3d669d3e63f.bundle.js} +2 -2
  20. package/dist/{12.eb41e4af80fee51d893c.bundle.js.map → 12.b4ac6d1ff3d669d3e63f.bundle.js.map} +1 -1
  21. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js → 120.d20d9e20e2d3c5476f8d.bundle.js} +2 -2
  22. package/dist/{120.0f42d5a0967c1f4636ca.bundle.js.map → 120.d20d9e20e2d3c5476f8d.bundle.js.map} +1 -1
  23. package/dist/{121.f85253eb7e057efdb05d.bundle.js → 121.dc96efcaf4dc5e63f58d.bundle.js} +2 -2
  24. package/dist/{121.f85253eb7e057efdb05d.bundle.js.map → 121.dc96efcaf4dc5e63f58d.bundle.js.map} +1 -1
  25. package/dist/{126.349ebcea493c77fecf7e.bundle.js → 126.4c2fb40676d2508bbc65.bundle.js} +2 -2
  26. package/dist/{126.349ebcea493c77fecf7e.bundle.js.map → 126.4c2fb40676d2508bbc65.bundle.js.map} +1 -1
  27. package/dist/{13.bc3607638ad1e2068125.bundle.js → 13.f6b8f9a2288e2485ee20.bundle.js} +2 -2
  28. package/dist/{13.bc3607638ad1e2068125.bundle.js.map → 13.f6b8f9a2288e2485ee20.bundle.js.map} +1 -1
  29. package/dist/148.45985ae23de642595544.bundle.js +1 -1
  30. package/dist/148.45985ae23de642595544.bundle.js.map +1 -1
  31. package/dist/16.2ca98f5bec0fae221cef.bundle.js +3 -0
  32. package/dist/{16.cd06772f9e031d37db03.bundle.js.map → 16.2ca98f5bec0fae221cef.bundle.js.map} +1 -1
  33. package/dist/{17.45b5c34f6c73bde1113d.bundle.js → 17.b19a2d3870590d21e8e9.bundle.js} +2 -2
  34. package/dist/{17.45b5c34f6c73bde1113d.bundle.js.map → 17.b19a2d3870590d21e8e9.bundle.js.map} +1 -1
  35. package/dist/{19.92f27dd146df127e8d6e.bundle.js → 19.34c180252e48207f01b4.bundle.js} +3 -3
  36. package/dist/{19.92f27dd146df127e8d6e.bundle.js.map → 19.34c180252e48207f01b4.bundle.js.map} +1 -1
  37. package/dist/{20.4eb25ede434dc329ecf1.bundle.js → 20.9e9e388a98851c65f8f7.bundle.js} +2 -2
  38. package/dist/{20.4eb25ede434dc329ecf1.bundle.js.map → 20.9e9e388a98851c65f8f7.bundle.js.map} +1 -1
  39. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js +2 -0
  40. package/dist/21.8434e1ecb6fcfa06e1f1.bundle.js.map +1 -0
  41. package/dist/{23.16fc17b0a8983ce3d809.bundle.js → 23.22e3720d741ee87c8108.bundle.js} +2 -2
  42. package/dist/{23.16fc17b0a8983ce3d809.bundle.js.map → 23.22e3720d741ee87c8108.bundle.js.map} +1 -1
  43. package/dist/{24.04d84edbd8f93d036633.bundle.js → 24.63acd0fc451fc797ff79.bundle.js} +2 -2
  44. package/dist/{24.04d84edbd8f93d036633.bundle.js.map → 24.63acd0fc451fc797ff79.bundle.js.map} +1 -1
  45. package/dist/{26.3a642e64c7803f3b32f1.bundle.js → 26.194b2d09daa679b7e09c.bundle.js} +2 -2
  46. package/dist/{26.3a642e64c7803f3b32f1.bundle.js.map → 26.194b2d09daa679b7e09c.bundle.js.map} +1 -1
  47. package/dist/{27.fef157d9275358c9f1a0.bundle.js → 27.35fe33bb9622c2e29c43.bundle.js} +2 -2
  48. package/dist/{27.fef157d9275358c9f1a0.bundle.js.map → 27.35fe33bb9622c2e29c43.bundle.js.map} +1 -1
  49. package/dist/{29.a1b30610d7960a86b1cb.bundle.js → 29.e4eadb676659c5d6e44b.bundle.js} +3 -3
  50. package/dist/{29.a1b30610d7960a86b1cb.bundle.js.map → 29.e4eadb676659c5d6e44b.bundle.js.map} +1 -1
  51. package/dist/{30.3a05504ff287ca6df711.bundle.js → 30.0fb90b3cdf78fcde6251.bundle.js} +2 -2
  52. package/dist/{30.3a05504ff287ca6df711.bundle.js.map → 30.0fb90b3cdf78fcde6251.bundle.js.map} +1 -1
  53. package/dist/{31.13d5a8e9834cd5db589c.bundle.js → 31.8dd9fe71d36bd04a0433.bundle.js} +2 -2
  54. package/dist/{31.13d5a8e9834cd5db589c.bundle.js.map → 31.8dd9fe71d36bd04a0433.bundle.js.map} +1 -1
  55. package/dist/{32.59a7369287d15e8b9ab6.bundle.js → 32.8e1c25a47debdf5145d8.bundle.js} +2 -2
  56. package/dist/{32.59a7369287d15e8b9ab6.bundle.js.map → 32.8e1c25a47debdf5145d8.bundle.js.map} +1 -1
  57. package/dist/{33.fde8076c81c87c25c367.bundle.js → 33.89b51420b48880728b96.bundle.js} +2 -2
  58. package/dist/{33.fde8076c81c87c25c367.bundle.js.map → 33.89b51420b48880728b96.bundle.js.map} +1 -1
  59. package/dist/{35.fe688fc32270724c391d.bundle.js → 35.a9846fba95e98a294957.bundle.js} +2 -2
  60. package/dist/{35.fe688fc32270724c391d.bundle.js.map → 35.a9846fba95e98a294957.bundle.js.map} +1 -1
  61. package/dist/{36.7da22f08c8e850885cc5.bundle.js → 36.4dbd0f9007404b0adbe2.bundle.js} +2 -2
  62. package/dist/{36.7da22f08c8e850885cc5.bundle.js.map → 36.4dbd0f9007404b0adbe2.bundle.js.map} +1 -1
  63. package/dist/37.ac99eb00fe71266c5bff.bundle.js +2 -0
  64. package/dist/{37.8a9855206d5ae5eba9be.bundle.js.map → 37.ac99eb00fe71266c5bff.bundle.js.map} +1 -1
  65. package/dist/{39.0eebc4b972cff879c1c9.bundle.js → 39.8f8ae5c232bd2f023e7c.bundle.js} +2 -2
  66. package/dist/{39.0eebc4b972cff879c1c9.bundle.js.map → 39.8f8ae5c232bd2f023e7c.bundle.js.map} +1 -1
  67. package/dist/4.5391679fa01c55e842cc.bundle.js +2 -0
  68. package/dist/4.5391679fa01c55e842cc.bundle.js.map +1 -0
  69. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js → 40.50f010a0a0ce99da5092.bundle.js} +2 -2
  70. package/dist/{40.10f42e3f6d8d87bd3221.bundle.js.map → 40.50f010a0a0ce99da5092.bundle.js.map} +1 -1
  71. package/dist/{41.368780c518c3f6cab4b7.bundle.js → 41.d09e0f01eac3492e3376.bundle.js} +2 -2
  72. package/dist/{41.368780c518c3f6cab4b7.bundle.js.map → 41.d09e0f01eac3492e3376.bundle.js.map} +1 -1
  73. package/dist/{42.1a48ae582180fa6374f9.bundle.js → 42.9561ff9cd77df0f86a91.bundle.js} +2 -2
  74. package/dist/{42.1a48ae582180fa6374f9.bundle.js.map → 42.9561ff9cd77df0f86a91.bundle.js.map} +1 -1
  75. package/dist/{43.64268be8880acd392fee.bundle.js → 43.0400aae23dac518b78ec.bundle.js} +2 -2
  76. package/dist/{43.64268be8880acd392fee.bundle.js.map → 43.0400aae23dac518b78ec.bundle.js.map} +1 -1
  77. package/dist/{53.58a23efc22865c67d57d.bundle.js → 53.54b20545d5504efa8958.bundle.js} +2 -2
  78. package/dist/{53.58a23efc22865c67d57d.bundle.js.map → 53.54b20545d5504efa8958.bundle.js.map} +1 -1
  79. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js → 54.81f97307e31f5eabb5f0.bundle.js} +2 -2
  80. package/dist/{54.1e2e99cd8cdf20b99a4f.bundle.js.map → 54.81f97307e31f5eabb5f0.bundle.js.map} +1 -1
  81. package/dist/{55.693c1a0dd775181e1e29.bundle.js → 55.e8df33b84ca578a9a633.bundle.js} +2 -2
  82. package/dist/{55.693c1a0dd775181e1e29.bundle.js.map → 55.e8df33b84ca578a9a633.bundle.js.map} +1 -1
  83. package/dist/{56.62459de7af529d956b75.bundle.js → 56.d765faad673f618d41b0.bundle.js} +2 -2
  84. package/dist/{56.62459de7af529d956b75.bundle.js.map → 56.d765faad673f618d41b0.bundle.js.map} +1 -1
  85. package/dist/{60.2cb24e628b92cb3e0210.bundle.js → 60.f13766507ec5f29fde78.bundle.js} +2 -2
  86. package/dist/{60.2cb24e628b92cb3e0210.bundle.js.map → 60.f13766507ec5f29fde78.bundle.js.map} +1 -1
  87. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js → 65.aa9736b7aad2582ca7ea.bundle.js} +2 -2
  88. package/dist/{65.6c12c48ac0d6f57a5079.bundle.js.map → 65.aa9736b7aad2582ca7ea.bundle.js.map} +1 -1
  89. package/dist/{67.5ae0610f77a1455ce92b.bundle.js → 67.e7bd652fadf93be1fbae.bundle.js} +2 -2
  90. package/dist/{67.5ae0610f77a1455ce92b.bundle.js.map → 67.e7bd652fadf93be1fbae.bundle.js.map} +1 -1
  91. package/dist/{69.90776e70cb361d1ac6d5.bundle.js → 69.6b915e6a7a9c36a78e2b.bundle.js} +2 -2
  92. package/dist/{69.90776e70cb361d1ac6d5.bundle.js.map → 69.6b915e6a7a9c36a78e2b.bundle.js.map} +1 -1
  93. package/dist/{71.3e927496e6e4175a3127.bundle.js → 71.624ca936339bf337e46a.bundle.js} +2 -2
  94. package/dist/{71.3e927496e6e4175a3127.bundle.js.map → 71.624ca936339bf337e46a.bundle.js.map} +1 -1
  95. package/dist/{72.bc99fbec188b4e49aa53.bundle.js → 72.3a5620a182219e9ea05d.bundle.js} +2 -2
  96. package/dist/{72.bc99fbec188b4e49aa53.bundle.js.map → 72.3a5620a182219e9ea05d.bundle.js.map} +1 -1
  97. package/dist/{73.40b5cbae08c7f3a58438.bundle.js → 73.f162e544378754078826.bundle.js} +2 -2
  98. package/dist/{73.40b5cbae08c7f3a58438.bundle.js.map → 73.f162e544378754078826.bundle.js.map} +1 -1
  99. package/dist/{74.cc42a1dcef7e9b830354.bundle.js → 74.7595755907badb1a99b8.bundle.js} +2 -2
  100. package/dist/{74.cc42a1dcef7e9b830354.bundle.js.map → 74.7595755907badb1a99b8.bundle.js.map} +1 -1
  101. package/dist/{75.31d1a4766c80c90b2afc.bundle.js → 75.4cc7ff534d56a05c578a.bundle.js} +2 -2
  102. package/dist/{75.31d1a4766c80c90b2afc.bundle.js.map → 75.4cc7ff534d56a05c578a.bundle.js.map} +1 -1
  103. package/dist/{76.89d209ce08efa7429e87.bundle.js → 76.cd0cfea4c96e88230dbe.bundle.js} +2 -2
  104. package/dist/{76.89d209ce08efa7429e87.bundle.js.map → 76.cd0cfea4c96e88230dbe.bundle.js.map} +1 -1
  105. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js → 77.df7767b1a0a3a0efa202.bundle.js} +2 -2
  106. package/dist/{77.64c49e9e99b0ae3fbbca.bundle.js.map → 77.df7767b1a0a3a0efa202.bundle.js.map} +1 -1
  107. package/dist/{79.0fbaedffc1f583a6064f.bundle.js → 79.4d64b377b0308809136f.bundle.js} +2 -2
  108. package/dist/{79.0fbaedffc1f583a6064f.bundle.js.map → 79.4d64b377b0308809136f.bundle.js.map} +1 -1
  109. package/dist/{80.6d489af9482e358c8dd8.bundle.js → 80.36e424031127d1743f20.bundle.js} +2 -2
  110. package/dist/{80.6d489af9482e358c8dd8.bundle.js.map → 80.36e424031127d1743f20.bundle.js.map} +1 -1
  111. package/dist/{94.94158487a9024ff3a623.bundle.js → 94.b1ccdd207229ae57569f.bundle.js} +2 -2
  112. package/dist/{94.94158487a9024ff3a623.bundle.js.map → 94.b1ccdd207229ae57569f.bundle.js.map} +1 -1
  113. package/dist/{97.48e14b67906b4d61a1b1.bundle.js → 97.951e03ffd2d5a10f868d.bundle.js} +2 -2
  114. package/dist/{97.48e14b67906b4d61a1b1.bundle.js.map → 97.951e03ffd2d5a10f868d.bundle.js.map} +1 -1
  115. package/dist/{98.cc7086155b76601af017.bundle.js → 98.745b4c457214d4189d7a.bundle.js} +2 -2
  116. package/dist/{98.cc7086155b76601af017.bundle.js.map → 98.745b4c457214d4189d7a.bundle.js.map} +1 -1
  117. package/dist/{bundle.afb7b0e2052d21766bfe.bundle.js → bundle.651116fe2383a66f32c9.bundle.js} +21 -21
  118. package/dist/{bundle.afb7b0e2052d21766bfe.bundle.js.map → bundle.651116fe2383a66f32c9.bundle.js.map} +1 -1
  119. package/dist/index.html +3 -3
  120. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  121. package/dist/pages/autocomplete.html +1 -1
  122. package/dist/pages/choose-repository-type.html +1 -1
  123. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  124. package/dist/pages/create-index.html +4 -4
  125. package/dist/pages/dependencies.html +1 -1
  126. package/dist/pages/domainRangeInfo.html +2 -2
  127. package/dist/pages/edit.html +1 -1
  128. package/dist/pages/explore.html +1 -1
  129. package/dist/pages/export.html +1 -1
  130. package/dist/pages/find.html +1 -1
  131. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  132. package/dist/pages/graphs-visualizations.html +7 -7
  133. package/dist/pages/guides.html +1 -1
  134. package/dist/pages/import.html +1 -1
  135. package/dist/pages/jdbc-create.html +5 -5
  136. package/dist/pages/monitor/queries.html +1 -1
  137. package/dist/pages/monitor/resources.html +2 -2
  138. package/dist/pages/namespaces.html +2 -2
  139. package/dist/pages/plugins.html +1 -1
  140. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  141. package/dist/pages/rdfrank.html +2 -2
  142. package/dist/pages/repositories.html +2 -2
  143. package/dist/pages/repository.html +2 -2
  144. package/dist/pages/similarity-indexes.html +1 -1
  145. package/dist/pages/sparql-template-create.html +5 -5
  146. package/dist/pages/sparql.html +3 -3
  147. package/dist/pages/webapi.html +2 -2
  148. package/dist/res/swagger/index.html +27 -27
  149. package/package.json +1 -1
  150. package/dist/108.162ea156d1fc4ad2525f.bundle.js +0 -2
  151. package/dist/16.cd06772f9e031d37db03.bundle.js +0 -3
  152. package/dist/21.5586732af2e5cec0d05a.bundle.js +0 -2
  153. package/dist/21.5586732af2e5cec0d05a.bundle.js.map +0 -1
  154. package/dist/37.8a9855206d5ae5eba9be.bundle.js +0 -2
  155. package/dist/4.112f94be76eae8c6eea6.bundle.js +0 -2
  156. package/dist/4.112f94be76eae8c6eea6.bundle.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/rest/cluster.rest.service.js","webpack:///./src/js/angular/clustermanagement/controllers.js"],"names":["angular","module","factory","ClusterRestService","$inject","$http","getClusterConfig","get","createCluster","groupConfiguration","post","updateCluster","nodes","patch","deleteCluster","forceDelete","data","$","param","force","delete","addNodesToCluster","nodesArray","removeNodesFromCluster","headers","getClusterStatus","getNodeStatus","controller","ClusterManagementCtrl","CreateClusterCtrl","DeleteClusterCtrl","EditClusterCtrl","AddLocationFromClusterCtrl","AddNodesDialogCtrl","RemoveNodesDialogCtrl","RemoteLocationsService","NodeState","LEADER","FOLLOWER","CANDIDATE","OUT_OF_SYNC","NO_CONNECTION","READ_ONLY","RESTRICTED","NO_CLUSTER","LinkState","IN_SYNC","SYNCING","$scope","$q","toastr","$repositories","$uibModal","$sce","$window","$interval","ModalService","$timeout","$location","$translate","$rootScope","loader","isLeader","currentNode","clusterModel","leaderChanged","currentLeader","childContext","shouldShowClusterSettingsPanel","updateRequest","then","clusterConfiguration","getClusterConfiguration","getCurrentNodeStatus","finally","redraw","getLocationsWithRpcAddresses","locations","localNode","find","location","isLocal","endpoint","rpcAddress","address","onAddRemoveSuccess","message","success","handleErrors","status","title","failMessage","Array","isArray","reduce","acc","error","Object","keys","key","allowHtml","onopen","onclose","noop","toggleSidePanel","toggleLegend","setLoader","cancel","loaderTimeout","loaderMessage","selectNode","node","selectedNode","$apply","getLoaderMessage","instant","response","catch","slice","leader","nodeState","newLeader","links","syncStatus","forEach","push","id","source","target","hasCluster","showCreateClusterDialog","open","templateUrl","size","resolve","result","showDeleteDialog","values","every","resultMsg","successMessage","failedNodesList","warning","$broadcast","showEditConfigurationDialog","showAddNodeToClusterDialog","nodesRpcAddress","map","failMessageTitle","showRemoveNodesFromClusterDialog","timer","$on","w","element","resize","bind","mousedown","event","nodeTooltipElement","document","getElementById","contains","unbind","getAdvancedOptionsClass","optionsModule","isAriaExpanded","getAttribute","$uibModalInstance","pageTitle","autofocusId","errors","electionMinTimeout","electionRangeTimeout","heartbeatInterval","messageSizeKB","verificationTimeout","filter","selectedLocations","close","preconditionErrors","splice","isClusterConfigurationValid","isFormValid","clusterConfigurationForm","$invalid","nodesListValid","length","addNodeToList","loc","removeNodeFromList","index","addLocation","newLocation","ok","dismiss","LocationsRestService","windowClass","dataAddLocation","uri","locationData","msg","getError","locationAdded","addLocationHttp","getLocations","local","errorMsg","locationsArray","rpcAddressFetchers","getLocationRpcAddress","isAvailable","Promise","allSettled","getRemoteLocationsRpcAddresses","productInfo","docBase","getDocBase","isValidLocation","indexOf","copy","productShortVersion","clusterNodes","includes","isNew","shouldRemove","nodesToRemoveCount","leftNodesLessThanTwo","toggleNode","nodesToRemove"],"mappings":"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","file":"4.5391679fa01c55e842cc.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.cluster.service', [])\n .factory('ClusterRestService', ClusterRestService);\n\nClusterRestService.$inject = ['$http'];\n\nconst CLUSTER_GROUP_ENDPOINT = 'rest/cluster';\n\nfunction ClusterRestService($http) {\n return {\n getClusterConfig,\n createCluster,\n updateCluster,\n deleteCluster,\n addNodesToCluster,\n removeNodesFromCluster,\n getClusterStatus,\n getNodeStatus\n };\n\n function getClusterConfig() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/config`);\n }\n\n function createCluster(groupConfiguration) {\n return $http.post(`${CLUSTER_GROUP_ENDPOINT}/config`, groupConfiguration);\n }\n\n function updateCluster(groupConfiguration) {\n if (groupConfiguration.nodes) {\n delete groupConfiguration.nodes;\n }\n return $http.patch(`${CLUSTER_GROUP_ENDPOINT}/config`, groupConfiguration);\n }\n\n function deleteCluster(forceDelete) {\n const data = $.param({\n force: forceDelete\n });\n return $http.delete(`${CLUSTER_GROUP_ENDPOINT}/config?${data}`);\n }\n\n function addNodesToCluster(nodesArray) {\n return $http.post(`${CLUSTER_GROUP_ENDPOINT}/config/node`, {nodes: nodesArray});\n }\n\n function removeNodesFromCluster(nodesArray) {\n return $http.delete(`${CLUSTER_GROUP_ENDPOINT}/config/node`, {data: {nodes: nodesArray}, headers: {'Content-Type': 'application/json'}});\n }\n\n function getClusterStatus() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/group/status`);\n }\n\n function getNodeStatus() {\n return $http.get(`${CLUSTER_GROUP_ENDPOINT}/node/status`);\n }\n}\n","import 'angular/core/services';\nimport 'angular/rest/cluster.rest.service';\nimport {isString} from \"lodash\";\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.repositories.service',\n 'graphdb.framework.rest.cluster.service',\n 'toastr',\n 'pageslide-directive'\n];\n\nangular\n .module('graphdb.framework.clustermanagement.controllers', modules)\n .controller('ClusterManagementCtrl', ClusterManagementCtrl)\n .controller('CreateClusterCtrl', CreateClusterCtrl)\n .controller('DeleteClusterCtrl', DeleteClusterCtrl)\n .controller('EditClusterCtrl', EditClusterCtrl)\n .controller('AddLocationFromClusterCtrl', AddLocationFromClusterCtrl)\n .controller('AddNodesDialogCtrl', AddNodesDialogCtrl)\n .controller('RemoveNodesDialogCtrl', RemoveNodesDialogCtrl)\n .factory('RemoteLocationsService', RemoteLocationsService);\n\nexport const NodeState = {\n LEADER: 'LEADER',\n FOLLOWER: 'FOLLOWER',\n CANDIDATE: 'CANDIDATE',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n NO_CONNECTION: 'NO_CONNECTION',\n READ_ONLY: 'READ_ONLY',\n RESTRICTED: 'RESTRICTED',\n NO_CLUSTER: 'NO_CLUSTER'\n};\nexport const LinkState = {\n IN_SYNC: 'IN_SYNC',\n OUT_OF_SYNC: 'OUT_OF_SYNC',\n SYNCING: 'SYNCING',\n NO_CONNECTION: 'NO_CONNECTION'\n};\n\nClusterManagementCtrl.$inject = ['$scope', '$http', '$q', 'toastr', '$repositories', '$uibModal', '$sce',\n '$window', '$interval', 'ModalService', '$timeout', 'ClusterRestService', '$location', '$translate', 'RemoteLocationsService', '$rootScope'];\n\nfunction ClusterManagementCtrl($scope, $http, $q, toastr, $repositories, $uibModal, $sce,\n $window, $interval, ModalService, $timeout, ClusterRestService, $location, $translate, RemoteLocationsService, $rootScope) {\n $scope.loader = true;\n $scope.isLeader = false;\n $scope.currentNode = null;\n $scope.clusterModel = {};\n $scope.NodeState = NodeState;\n $scope.leaderChanged = false;\n $scope.currentLeader = null;\n\n // Holds child context\n $scope.childContext = {};\n\n $scope.shouldShowClusterSettingsPanel = false;\n const DELETED_ON_NODE_MESSAGE = 'Cluster was deleted on this node.';\n $scope.onopen = $scope.onclose = () => angular.noop();\n\n $scope.toggleSidePanel = () => {\n $scope.shouldShowClusterSettingsPanel = !$scope.shouldShowClusterSettingsPanel;\n };\n\n $scope.toggleLegend = () => {\n if ($scope.childContext.toggleLegend) {\n $scope.childContext.toggleLegend();\n }\n };\n\n // TODO: Similar function is declared multiple times in different components. Find out how to avoid it!\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderMessage = message;\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n }, 50);\n } else {\n $scope.loader = false;\n }\n };\n\n function selectNode(node) {\n if ($scope.selectedNode !== node) {\n $scope.selectedNode = node;\n } else {\n $scope.selectedNode = null;\n }\n $scope.$apply();\n }\n\n $scope.childContext.selectNode = selectNode;\n\n function initialize() {\n $scope.loader = true;\n\n return $scope.getCurrentNodeStatus()\n .then(() => {\n return $scope.getClusterConfiguration();\n })\n .then(() => {\n return $scope.getClusterStatus();\n })\n .finally(() => {\n $scope.setLoader(false);\n });\n }\n\n let updateRequest;\n function updateCluster(force) {\n if (updateRequest) {\n return;\n }\n\n updateRequest = $scope.getClusterStatus()\n .then(() => {\n if (force || !$scope.clusterConfiguration) {\n return $scope.getClusterConfiguration();\n }\n })\n .then(() => {\n if (!$scope.currentNode || $scope.leaderChanged) {\n return $scope.getCurrentNodeStatus();\n }\n })\n .finally(() => {\n updateRequest = null;\n $scope.childContext.redraw();\n });\n }\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.getClusterConfiguration = () => {\n return ClusterRestService.getClusterConfig()\n .then((response) => {\n $scope.clusterConfiguration = response.data;\n if (!$scope.currentNode) {\n return $scope.getCurrentNodeStatus();\n }\n })\n .catch(() => {\n $scope.clusterConfiguration = null;\n });\n };\n\n function isLeaderChanged(currentLeader, newLeader) {\n if (!newLeader) {\n // If election is in place and there is no leader yet, consider it as leader change\n return true;\n }\n return !currentLeader || currentLeader.address !== newLeader.address;\n }\n\n $scope.getClusterStatus = function () {\n return ClusterRestService.getClusterStatus()\n .then(function (response) {\n const nodes = response.data.slice();\n const leader = nodes.find((node) => node.nodeState === NodeState.LEADER);\n\n if (isLeaderChanged($scope.currentLeader, leader)) {\n $scope.currentLeader = leader;\n $scope.leaderChanged = true;\n }\n $scope.currentNode = nodes.find((node) => node.address === $scope.currentNode.address);\n\n const links = [];\n if (leader) {\n Object.keys(leader.syncStatus).forEach((node) => {\n const status = leader.syncStatus[node];\n if (status !== LinkState.NO_CONNECTION) {\n links.push({\n id: `${leader.address}-${node}`,\n source: leader.address,\n target: node,\n status\n });\n }\n });\n }\n $scope.clusterModel.hasCluster = true;\n $scope.clusterModel.nodes = nodes;\n $scope.clusterModel.links = links;\n })\n .catch(function (error) {\n if (error.status === 404) {\n $scope.clusterModel.hasCluster = false;\n $scope.clusterModel.nodes = [];\n $scope.clusterModel.links = [];\n $scope.clusterConfiguration = null;\n }\n });\n };\n\n $scope.showCreateClusterDialog = function () {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-create-dialog.html',\n controller: 'CreateClusterCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel\n };\n }\n }\n });\n\n modalInstance.result.finally(function () {\n getLocationsWithRpcAddresses();\n updateCluster(true);\n });\n };\n\n $scope.showDeleteDialog = () => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html',\n controller: 'DeleteClusterCtrl'\n });\n\n modalInstance.result.then(function (forceDelete) {\n const loaderMessage = $translate.instant('cluster_management.delete_cluster_dialog.loader_message');\n $scope.setLoader(true, loaderMessage);\n ClusterRestService.deleteCluster(forceDelete)\n .then((response) => {\n const allNodesDeleted = Object.values(response.data).every((resultMsg) => resultMsg === DELETED_ON_NODE_MESSAGE);\n if (allNodesDeleted) {\n const successMessage = $translate.instant('cluster_management.delete_cluster_dialog.notifications.success_delete');\n toastr.success(successMessage);\n } else {\n const successMessage = $translate.instant(\n 'cluster_management.delete_cluster_dialog.notifications.success_delete_partial');\n const failedNodesList = Object.keys(response.data)\n .reduce((message, key) => message += `<div>${key} - ${response.data[key]}</div>`, '');\n toastr.warning(failedNodesList, successMessage, {allowHtml: true});\n }\n $scope.getClusterConfiguration();\n })\n .catch((error) => {\n const failMessage = $translate.instant('cluster_management.delete_cluster_dialog.notifications.fail_delete');\n handleErrors(error.data, error.status, failMessage);\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n $rootScope.$broadcast('reloadLocations');\n });\n });\n };\n\n $scope.showEditConfigurationDialog = () => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html',\n controller: 'EditClusterCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterConfiguration: $scope.clusterConfiguration\n };\n }\n }\n });\n\n modalInstance.result.finally(function () {\n updateCluster(true);\n });\n };\n\n $scope.getCurrentNodeStatus = () => {\n return ClusterRestService.getNodeStatus()\n .then((response) => {\n $scope.leaderChanged = false;\n $scope.currentNode = response.data;\n })\n .catch((error) => {\n $scope.currentNode = error.data;\n $scope.clusterModel.hasCluster = false;\n })\n .then(() => getLocationsWithRpcAddresses());\n };\n\n function getLocationsWithRpcAddresses() {\n return RemoteLocationsService.getLocationsWithRpcAddresses()\n .then((locations) => {\n const localNode = locations.find((location) => location.isLocal);\n if (localNode) {\n localNode.endpoint = $scope.currentNode.endpoint;\n localNode.rpcAddress = $scope.currentNode.address;\n }\n $scope.clusterModel.locations = locations;\n });\n }\n\n $scope.showAddNodeToClusterDialog = () => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/add-nodes-dialog.html',\n controller: 'AddNodesDialogCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel,\n clusterConfiguration: $scope.clusterConfiguration\n };\n }\n }\n });\n\n modalInstance.result.then(function (nodes) {\n const loaderMessage = $translate.instant('cluster_management.cluster_page.add_nodes_loader');\n $scope.setLoader(true, loaderMessage);\n\n const nodesRpcAddress = nodes.map((node) => node.rpcAddress);\n ClusterRestService.addNodesToCluster(nodesRpcAddress)\n .then(() => {\n const successMessage = $translate.instant(\n 'cluster_management.cluster_page.notifications.add_nodes_success');\n onAddRemoveSuccess(successMessage);\n })\n .catch((error) => {\n const failMessageTitle = $translate.instant('cluster_management.cluster_page.notifications.add_nodes_fail');\n handleErrors(error.data, error.status, failMessageTitle);\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n });\n })\n .finally(() => getLocationsWithRpcAddresses());\n };\n\n $scope.showRemoveNodesFromClusterDialog = () => {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html',\n controller: 'RemoveNodesDialogCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return {\n clusterModel: $scope.clusterModel\n };\n }\n }\n });\n\n modalInstance.result.then(function (nodes) {\n const loaderMessage = $translate.instant('cluster_management.cluster_page.remove_nodes_loader');\n $scope.setLoader(true, loaderMessage);\n\n const nodesRpcAddress = nodes.map((node) => node.address);\n ClusterRestService.removeNodesFromCluster(nodesRpcAddress)\n .then(() => {\n const successMessage = $translate.instant('cluster_management.cluster_page.notifications.remove_nodes_success');\n onAddRemoveSuccess(successMessage);\n })\n .catch((error) => {\n const failMessageTitle = $translate.instant('cluster_management.cluster_page.notifications.remove_nodes_fail');\n handleErrors(error.data, error.status, failMessageTitle);\n })\n .finally(() => {\n $scope.setLoader(false);\n updateCluster(true);\n });\n });\n };\n\n function onAddRemoveSuccess(message) {\n toastr.success(message);\n $scope.getClusterConfiguration();\n }\n\n function handleErrors(data, status, title) {\n let failMessage = data.message || data;\n\n if (status === 400 && Array.isArray(data)) {\n failMessage = data.reduce((acc, error) => acc += `<div>${error}</div>`, '');\n } else if (status === 412 && !isString(data)) {\n failMessage = Object.keys(data)\n .reduce((message, key) => message += `<div>${key} - ${data[key]}</div>`, '');\n }\n toastr.error(failMessage, title, {allowHtml: true});\n }\n\n initialize()\n .finally(() => {\n const timer = $interval(function () {\n updateCluster();\n }, 1000);\n\n $scope.$on(\"$destroy\", function () {\n $interval.cancel(timer);\n });\n });\n\n // track window resizing and window mousedown\n const w = angular.element($window);\n const resize = function () {\n $scope.childContext.resize();\n };\n w.bind('resize', resize);\n\n const mousedown = function (event) {\n const target = event.target;\n const nodeTooltipElement = document.getElementById('nodeTooltip');\n if ($scope.selectedNode && nodeTooltipElement !== target && !nodeTooltipElement.contains(target)) {\n $scope.childContext.selectNode(null);\n }\n };\n w.bind('mousedown', mousedown);\n $scope.$on('$destroy', function () {\n w.unbind('resize', resize);\n w.unbind('mousedown', mousedown);\n });\n}\n\nconst getAdvancedOptionsClass = function () {\n const optionsModule = document.getElementById('advancedOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n};\n\nCreateClusterCtrl.$inject = ['$scope', '$uibModalInstance', '$timeout', 'ClusterRestService', 'toastr', '$translate', 'data', '$uibModal',\n 'RemoteLocationsService', '$rootScope'];\n\nfunction CreateClusterCtrl($scope, $uibModalInstance, $timeout, ClusterRestService, toastr, $translate, data, $uibModal, RemoteLocationsService, $rootScope) {\n $scope.pageTitle = $translate.instant('cluster_management.cluster_page.create_page_title');\n $scope.autofocusId = 'autofocus';\n $scope.errors = [];\n $scope.clusterConfiguration = {\n electionMinTimeout: 8000,\n electionRangeTimeout: 6000,\n heartbeatInterval: 2000,\n messageSizeKB: 64,\n verificationTimeout: 1500,\n nodes: []\n };\n\n $scope.locations = data.clusterModel.locations.filter((location) => !location.isLocal);\n $scope.selectedLocations = data.clusterModel.locations.filter((location) => location.isLocal);\n\n $scope.loader = false;\n\n $scope.getAdvancedOptionsClass = getAdvancedOptionsClass;\n\n $scope.createCluster = function () {\n $scope.setLoader(true, $translate.instant('cluster_management.cluster_page.creating_cluster_loader'));\n $scope.clusterConfiguration.nodes = $scope.selectedLocations.map((node) => node.rpcAddress);\n return ClusterRestService.createCluster($scope.clusterConfiguration)\n .then(() => {\n toastr.success($translate.instant('cluster_management.cluster_page.notifications.create_success'));\n $uibModalInstance.close();\n })\n .catch(function (error) {\n handleErrors(error.data, error.status);\n })\n .finally(() => {\n $scope.setLoader(false);\n $rootScope.$broadcast('reloadLocations');\n });\n };\n\n function handleErrors(data, status) {\n delete $scope.preconditionErrors;\n toastr.error($translate.instant('cluster_management.cluster_page.notifications.create_failed'));\n $scope.errors.splice(0);\n if (status === 412) {\n $scope.preconditionErrors = Object.keys(data).map((key) => `${key} - ${data[key]}`);\n } else if (status === 400) {\n $scope.errors.push(...data);\n } else if (status === 409) {\n $scope.errors.push(data);\n }\n }\n\n $scope.isClusterConfigurationValid = () => {\n const isFormValid = !$scope.clusterConfigurationForm.$invalid;\n const nodesListValid = $scope.selectedLocations && $scope.selectedLocations.length >= 2;\n return isFormValid && nodesListValid;\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.addNodeToList = function (location) {\n if (!location.rpcAddress) {\n return;\n }\n $scope.selectedLocations.push(location);\n $scope.locations = $scope.locations.filter((loc) => loc.endpoint !== location.endpoint);\n };\n\n $scope.removeNodeFromList = function (index, node) {\n if (node.isLocal) {\n return;\n }\n $scope.selectedLocations.splice(index, 1);\n $scope.locations.push(node);\n };\n\n $scope.addLocation = function () {\n RemoteLocationsService.addLocation()\n .then((newLocation) => {\n if (newLocation) {\n $scope.locations.push(newLocation);\n }\n });\n };\n\n $scope.ok = function () {\n if (!$scope.isClusterConfigurationValid()) {\n toastr.warning($translate.instant('cluster_management.cluster_page.notifications.form_invalid'));\n return;\n }\n $scope.createCluster();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nDeleteClusterCtrl.$inject = ['$scope', '$uibModalInstance'];\n\nfunction DeleteClusterCtrl($scope, $uibModalInstance) {\n $scope.forceDelete = false;\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.forceDelete);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nRemoteLocationsService.$inject = ['$http', 'toastr', '$uibModal', 'LocationsRestService', '$translate'];\n\nfunction RemoteLocationsService($http, toastr, $uibModal, LocationsRestService, $translate) {\n return {\n addLocation: addLocation,\n getLocationsWithRpcAddresses: getLocationsWithRpcAddresses\n };\n\n function getLocationsWithRpcAddresses() {\n return getLocations()\n .then((locations) => {\n if (locations) {\n return getRemoteLocationsRpcAddresses(locations);\n }\n });\n }\n\n /**\n * Sets multiple remote locations' rpc addresses. Skips local location and locations with errors\n * @param {any[]} locationsArray\n * @return {Promise<[]>} locationArray with filled rpc addresses\n */\n function getRemoteLocationsRpcAddresses(locationsArray) {\n const rpcAddressFetchers = locationsArray.filter((location) => !location.isLocal && !location.error).map((location) => {\n return getLocationRpcAddress(location)\n .then((response) => {\n location.rpcAddress = response.data;\n location.isAvailable = true;\n return location;\n })\n .catch((error) => {\n location.isAvailable = false;\n location.error = getError(error.data, error.status);\n });\n });\n return Promise.allSettled(rpcAddressFetchers).then(() => locationsArray);\n }\n\n /**\n * Fetch locations and map them to a location model\n *\n * @return {*} all remote locations mapped to a location model\n */\n function getLocations() {\n return LocationsRestService.getLocations()\n .then(function (response) {\n return response.data.map((loc) => {\n return {\n isLocal: loc.local,\n endpoint: loc.uri,\n rpcAddress: loc.rpcAddress || '',\n error: loc.errorMsg\n };\n });\n })\n .catch(function (error) {\n const msg = getError(error.data, error.status);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n /**\n * Fetch rpc address of a remote location\n * @param {*} location the remote location\n * @return {Promise<String>} the rpc address of the location\n */\n function getLocationRpcAddress(location) {\n return LocationsRestService.getLocationRpcAddress(location.endpoint);\n\n }\n\n function addLocation() {\n let newLocation;\n return $uibModal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationFromClusterCtrl'\n }).result\n .then((dataAddLocation) => {\n newLocation = dataAddLocation;\n newLocation.isLocal = false;\n newLocation.endpoint = newLocation.uri;\n return addLocationHttp(newLocation);\n });\n }\n\n function addLocationHttp(locationData) {\n let newLocation;\n return LocationsRestService.addLocation(locationData)\n .catch((error) => {\n const msg = getError(error.data, error.status);\n toastr.error(msg, $translate.instant('common.error'));\n return false;\n })\n .then((locationAdded) => {\n if (locationAdded) {\n return getLocationsWithRpcAddresses();\n }\n return false;\n })\n .then((locations) => {\n if (locations === false) {\n return;\n }\n newLocation = locations.find((location) => location.endpoint === locationData.uri);\n return newLocation;\n });\n }\n}\n\nAddLocationFromClusterCtrl.$inject = ['$scope', '$uibModalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationFromClusterCtrl($scope, $uibModalInstance, toastr, productInfo, $translate) {\n //TODO: This, along with the view are duplicated from repositories page. Must be extracted for re-usability.\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'signature',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $uibModalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nEditClusterCtrl.$inject = ['$scope', '$uibModalInstance', '$timeout', 'ClusterRestService', 'toastr', '$translate', 'data'];\n\nfunction EditClusterCtrl($scope, $uibModalInstance, $timeout, ClusterRestService, toastr, $translate, data) {\n $scope.pageTitle = $translate.instant('cluster_management.cluster_page.edit_page_title');\n $scope.errors = [];\n $scope.clusterConfiguration = angular.copy(data.clusterConfiguration);\n $scope.loader = false;\n\n $scope.updateCluster = function () {\n $scope.setLoader(true, $translate.instant('cluster_management.cluster_page.updating_cluster_loader'));\n return ClusterRestService.updateCluster($scope.clusterConfiguration)\n .then(() => {\n toastr.success($translate.instant('cluster_management.cluster_page.notifications.update_success'));\n $uibModalInstance.close();\n })\n .catch(function (response) {\n handleErrors(response.data, response.status);\n })\n .finally(() => $scope.setLoader(false));\n };\n\n function handleErrors(data, status) {\n delete $scope.preconditionErrors;\n toastr.error($translate.instant('cluster_management.cluster_page.notifications.update_failed'));\n $scope.errors.splice(0);\n\n if (status === 409 || typeof data === 'string') {\n $scope.errors.push(data);\n } else if (status === 412) {\n $scope.preconditionErrors = Object.keys(data).map((key) => `${key} - ${data[key]}`);\n } else if (status === 400) {\n $scope.errors.push(...data);\n }\n }\n\n $scope.isClusterConfigurationValid = () => {\n return !$scope.clusterConfigurationForm.$invalid;\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.ok = function () {\n if (!$scope.isClusterConfigurationValid()) {\n toastr.warning($translate.instant('cluster_management.cluster_page.notifications.form_invalid'));\n return;\n }\n $scope.updateCluster();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\n\nAddNodesDialogCtrl.$inject = ['$scope', '$uibModalInstance', 'data', '$uibModal', 'RemoteLocationsService'];\n\nfunction AddNodesDialogCtrl($scope, $uibModalInstance, data, $uibModal, RemoteLocationsService) {\n const clusterConfiguration = angular.copy(data.clusterConfiguration);\n const clusterModel = angular.copy(data.clusterModel);\n $scope.nodes = [];\n\n $scope.clusterNodes = clusterModel.nodes.map((node) => ({rpcAddress: node.address, endpoint: node.endpoint}));\n $scope.locations = clusterModel.locations.filter((location) => !clusterConfiguration.nodes.includes(location.rpcAddress));\n $scope.locations.forEach((location) => location.isNew = true);\n\n $scope.addNodeToList = function (location) {\n if (!location.rpcAddress) {\n return;\n }\n $scope.nodes.push(location);\n $scope.locations = $scope.locations.filter((loc) => loc.endpoint !== location.endpoint);\n };\n\n $scope.removeNodeFromList = function (index, node) {\n $scope.nodes.splice(index, 1);\n $scope.locations.push(node);\n };\n\n $scope.addLocation = function () {\n RemoteLocationsService.addLocation()\n .then((newLocation) => {\n if (newLocation) {\n $scope.locations.push(newLocation);\n }\n });\n };\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.nodes);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nRemoveNodesDialogCtrl.$inject = ['$scope', '$uibModalInstance', 'data'];\n\nfunction RemoveNodesDialogCtrl($scope, $uibModalInstance, data) {\n const clusterModel = angular.copy(data.clusterModel);\n\n $scope.clusterNodes = clusterModel.nodes;\n $scope.clusterNodes.forEach((node) => node.shouldRemove = false);\n $scope.nodesToRemoveCount = 0;\n $scope.leftNodesLessThanTwo = false;\n\n $scope.toggleNode = function (index, node) {\n node.shouldRemove = !node.shouldRemove;\n if (node.shouldRemove) {\n $scope.nodesToRemoveCount++;\n } else {\n $scope.nodesToRemoveCount--;\n }\n $scope.leftNodesLessThanTwo = $scope.clusterNodes.length - $scope.nodesToRemoveCount < 2;\n };\n\n $scope.ok = function () {\n const nodesToRemove = $scope.clusterNodes.filter((node) => node.shouldRemove);\n $uibModalInstance.close(nodesToRemove);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[40,94],{137:function(e,r,t){"use strict";t.r(r);t(4),t(11),t(109),t(91),t(10),t(35),t(36);angular.module("graphdb.framework.impex.import",["toastr","ngRoute","ngFileUpload","ui.bootstrap","graphdb.framework.impex.import.directives","graphdb.framework.impex.import.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives"])},91:function(e,r,t){"use strict";t.r(r);t(4),t(14);const i=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);i.directive("validateUri",["UriUtils",function(e){return{restrict:"A",require:"ngModel",link:function(r,t,i,a){a.$parsers.unshift((function(t){let i=!0;return"named"===r.target&&(i=e.isValidIri(t)),a.$setValidity("validateUri",i),t}))}}}]),i.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),i.directive("filesOntoLoader",(function(){return{link:function(e,r,t){e.$watch("file.status",(function(){"IMPORTING"!==e.file.status&&"UPLOADING"!==e.file.status||!$(r).has("object").length>0&&$(r).append('<object width="'+t.size+'" height="'+t.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.2.4-TR1">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
2
- //# sourceMappingURL=40.10f42e3f6d8d87bd3221.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[40,94],{137:function(e,r,t){"use strict";t.r(r);t(4),t(11),t(109),t(92),t(10),t(35),t(36);angular.module("graphdb.framework.impex.import",["toastr","ngRoute","ngFileUpload","ui.bootstrap","graphdb.framework.impex.import.directives","graphdb.framework.impex.import.controllers","graphdb.framework.core.services.repositories","graphdb.framework.core.directives"])},92:function(e,r,t){"use strict";t.r(r);t(4),t(14);const i=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);i.directive("validateUri",["UriUtils",function(e){return{restrict:"A",require:"ngModel",link:function(r,t,i,a){a.$parsers.unshift((function(t){let i=!0;return"named"===r.target&&(i=e.isValidIri(t)),a.$setValidity("validateUri",i),t}))}}}]),i.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),i.directive("filesOntoLoader",(function(){return{link:function(e,r,t){e.$watch("file.status",(function(){"IMPORTING"!==e.file.status&&"UPLOADING"!==e.file.status||!$(r).has("object").length>0&&$(r).append('<object width="'+t.size+'" height="'+t.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.2.4-TR2">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
2
+ //# sourceMappingURL=40.50f010a0a0ce99da5092.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/import/app.js","webpack:///./src/js/angular/import/directives.js"],"names":["angular","module","importDirectives","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"8FAAA,iDAmBAA,QAAQC,OAAO,iCAXC,CACZ,SACA,UACA,eACA,eACA,4CACA,6CACA,+CACA,uC,gCChBJ,kBAGA,MAAMC,EAAmBF,QAAQC,OAAO,4CAA6C,CACjF,qCAGJC,EAAiBC,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBZ,EAAiBC,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBjB,EAAiBC,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"40.10f42e3f6d8d87bd3221.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.2.4-TR1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/import/app.js","webpack:///./src/js/angular/import/directives.js"],"names":["angular","module","importDirectives","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"8FAAA,iDAmBAA,QAAQC,OAAO,iCAXC,CACZ,SACA,UACA,eACA,eACA,4CACA,6CACA,+CACA,uC,gCChBJ,kBAGA,MAAMC,EAAmBF,QAAQC,OAAO,4CAA6C,CACjF,qCAGJC,EAAiBC,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBZ,EAAiBC,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBjB,EAAiBC,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"40.50f010a0a0ce99da5092.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.2.4-TR2\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[41,134],{40:function(n,e){function t(n,e){return{showToastMessageWithDelay:function(t){return new Promise(r=>{n.success(e.instant(t)),setTimeout(r,200)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",t),t.$inject=["toastr","$translate"]},92:function(n,e,t){"use strict";t.r(e);t(4),t(10),t(13),t(40);function r(n,e,t,r,o,i){n.getSqlConfigurations=function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()?n.jdbcConfigurations=[]:t.getJdbcConfigurations().success((function(e){n.jdbcConfigurations=e})).error((function(n){const e=getError(n);r.error(e,i.instant("jdbc.not.get.SQL.msg"))}))},n.$watch((function(){return e.getActiveRepository()}),(function(){n.getSqlConfigurations()})),n.deleteConfiguration=function(e){o.openSimpleModal({title:i.instant("common.warning"),message:i.instant("jdbc.delete.sql.table.warning.msg",{name:e}),warning:!0}).result.then((function(){t.deleteJdbcConfiguration(e).success((function(){n.getSqlConfigurations()})).error((function(n){r.error(getError(n),i.instant("jdbc.not.delete.sql.msg"))}))}))}}function o(n,e,t,r,o,i,s,u,c,a,l){n.name=e.search().name||"",n.getNamespaces=function(){y(!0,l.instant("common.refreshing.namespaces"),l.instant("common.extra.message")),u.getRepositoryNamespaces().success((function(e){const t={};e.results.bindings.forEach((function(n){t[n.prefix.value]=n.namespace.value})),n.namespaces=t})).error((function(e){n.repositoryError=getError(e)})).finally((function(){y(!1),w()}))},n.setLoader=y,n.addKnownPrefixes=C,n.page=1,n.noPadding={paddingRight:0,paddingLeft:0},n.sqlTypes=["string","iri","boolean","byte","short","int","long","float","double","decimal","date","time","timestamp","Get suggestion..."],n.currentTabConfig={},n.orientationViewMode=!0,n.currentQuery={},n.$watch((function(){return r.getActiveRepository()}),(function(n,t){n!==t&&e.path("jdbc")}));let g=null;n.goBack=function(){g=i((function(){o.history.back()}),1e3)};const f=n.$on("$locationChangeStart",(function(e){!function(e){n.currentQuery.isPristine||(confirm(l.instant("jdbc.warning.unsaved.changes"))?(window.removeEventListener("beforeunload",d),f(),i.cancel(g)):e.preventDefault())}(e)}));function d(e){n.currentQuery.isPristine||(e.returnValue=!0)}window.addEventListener("beforeunload",d),n.$on("$destroy",(function(n){window.removeEventListener("beforeunload",d),f(),i.cancel(g)}));const m={id:"1",name:"",query:"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}",inference:!0,sameAs:!0,isNewConfiguration:!0,isPristine:!0};var p;function y(e,t,r){const o=angular.element(document.getElementById("yasr-inner"));n.queryIsRunning=e,e?(n.queryStartTime=Date.now(),n.countTimeouted=!1,n.progressMessage=t,n.extraMessage=r,o.addClass("hide")):(n.progressMessage="",n.extraMessage="",o.removeClass("hide")),null===n.$$phase&&n.$apply()}function w(){n.tabsData=[n.currentQuery];const e=n.currentQuery;n.currentQuery.query?window.editor.setValue(n.currentQuery.query):window.editor.setValue(" "),i((function(){n.currentTabConfig={},n.currentTabConfig.queryType=e.queryType,n.currentTabConfig.resultsCount=e.resultsCount,n.currentTabConfig.offset=e.offset,n.currentTabConfig.allResultsCount=e.allResultsCount,n.currentTabConfig.page=e.page,n.currentTabConfig.pageSize=e.pageSize,n.currentTabConfig.timeFinished=e.timeFinished,n.currentTabConfig.timeTook=e.timeTook,n.currentTabConfig.sizeDelta=e.sizeDelta,n.$apply()}),0),n.canWriteActiveRepo()||(window.editor.options.readOnly=!0)}function b(){n.tabsData=n.tabs=[m],n.currentQuery=angular.copy(m),h(),window.editor&&(n.setQuery(n.currentQuery.query),w()),n.$watch((function(){return n.currentQuery.query}),(function(e,t){e!==t&&n.setDirty()}))}function C(){c.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(n){angular.isDefined(window.editor)&&angular.isDefined(n)&&n!==window.editor.getValue()&&window.editor.setValue(n)})).error((function(n){const e=getError(n);return t.error(e,l.instant("common.add.known.prefixes.error")),!0}))}function v(){j()&&s.getColumnNames(n.currentQuery.query).success((function(e){s.getColumnsTypeSuggestion(n.currentQuery.query,e).success((function(t){const r=[];_.forEach(e,(function(n){r.push({column_name:n,column_type:t[n].column_type,nullable:!0,sparql_type:t[n].sparql_type})})),n.currentQuery.columns=r,n.setDirty()})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.types"))}))})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.names"))}))}function h(){2===n.page?n.viewMode="editor":n.viewMode="none"}function Q(n,e,t,r,o){let i=t[r].value;i=i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return"<div class = 'literal-cell'>"+("<p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>"+i+"</p>")+"</div>"}function T(){return window.editor&&"SELECT"===window.editor.getQueryType()}function q(){return j()&&function(){if(!n.currentQuery.columns||!n.currentQuery.columns.length)return t.error(l.instant("jdbc.warning.one.column.msg"),l.instant("jdbc.invalid.columns")),!1;if(n.containsUnknownColumns())return t.error(l.instant("jdbc.warning.all.column.msg"),l.instant("jdbc.invalid.columns")),!1;return!0}()}function j(){return!!T()||(t.error(l.instant("jdbc.warning.invalid.query"),l.instant("jdbc.invalid.query)")),!1)}n.resetCurrentTabConfig=function(){n.currentTabConfig={pageSize:100,page:1,allResultsCount:0,resultsCount:0,queryType:""}},n.saveTab=function(){},n.setQuery=function(n){window.editor.setValue(n||" ")},n.name?(p=n.name,s.getJdbcConfiguration(p).success((function(n){m.query=n.query,m.name=n.name,m.columns=n.columns,m.isNewConfiguration=!n.name,b()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.get.sql.msg2"))}))):b(),n.goToPage=function(e){n.page=e;const t=n.currentQuery.columns;2!==e||t&&0!==t.length||!T()||n.getColumnsSuggestions(),h()},n.save=function(){q()&&(n.currentQuery.name?n.currentQuery.isNewConfiguration?s.createNewJdbcConfiguration(n.currentQuery).success((function(){n.currentQuery.isPristine=!0,n.currentQuery.isNewConfiguration=!1,t.success(l.instant("jdbc.saved.configuration")),n.goBack()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.saved.configuration"))})):s.updateJdbcConfiguration(n.currentQuery).success((function(){n.currentQuery.isPristine=!0,n.currentQuery.isNewConfiguration=!1,t.success(l.instant("jdbc.configuration.updated")),n.goBack()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.saved.configuration"))})):t.error(l.instant("jdbc.required.configuration.name")))},n.hasPrecision=function(n){return"iri"===n||"string"===n||"decimal"===n},n.containsColumnsWithPrecision=function(e){return e&&e.some(e=>n.hasPrecision(e.column_type))},n.hasScale=function(n){return"decimal"===n},n.containsColumnsWithScale=function(e){return e&&e.some(e=>n.hasScale(e.column_type))},n.isLiteral=function(n){return"iri"!==n&&"unknown"!==n},n.containsNonLiteralColumnsOnly=function(e){return e&&e.every(e=>!n.isLiteral(e.column_type))},n.containsUnknownColumns=function(){return n.currentQuery.columns&&n.currentQuery.columns.find(n=>"unknown"===n.column_type)},$("textarea").on("paste",(function(){i((function(){C()}),0)})),n.selectColumnType=function(e,r){const o=_.find(n.currentQuery.columns,(function(n){return n.column_name===e}));"Get suggestion..."===o.column_type&&s.getColumnsTypeSuggestion(n.currentQuery.query,[e]).success((function(n){o.column_type=n[e].column_type,o.column_type===r?t.info(l.instant("jdbc.same.suggested.sql.type",{type:o.column_type}),l.instant("jdbc.suggest.sql.type"),{allowHtml:!0}):t.success(l.instant("jdbc.suggested.sql.type",{type:o.column_type}),l.instant("jdbc.suggest.sql.type"),{allowHtml:!0}),o.sparql_type=n[e].sparql_type})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.type"))})),n.setDirty()},n.getColumnsSuggestions=function(){n.currentQuery.columns&&n.currentQuery.columns.length>0?a.openSimpleModal({title:l.instant("common.warning"),message:l.instant("jdbc.warning.column.type.msg"),warning:!0}).result.then((function(){v()})):v()},n.deleteColumn=function(e,t){a.openSimpleModal({title:l.instant("common.warning"),message:l.instant("jdbc.warning.delete.column.msg",{columnName:e}),warning:!0}).result.then((function(){n.currentQuery.columns.splice(t,1),n.setDirty()}))},n.getPreview=function(){if(q()&&(n.executedQueryTab=n.currentQuery,!n.queryIsRunning)){n.currentQuery.outputType="table",n.resetCurrentTabConfig(),y(!0,l.instant("jdbc.preview.first.rows",{name:n.name}),l.instant("common.extra.message"));const e=function(e,r,o){!function(e,r,o){e.results&&e.results.bindings&&e.results.bindings.length?(window.yasr.plugins.table.options.getCellContent=Q,n.currentTabConfig.queryType="SELECT",window.yasr.setResponse(r,o,null)):t.info(l.instant("jdbc.table.definition"),l.instant("jdbc.preview.sql"))}(e,o,r),y(!1)},r=function(n){y(!1),t.error(getError(n,0,100),l.instant("jdbc.not.show.preview"))};if(n.canWriteActiveRepo()){const t=JSON.stringify({name:n.currentQuery.name,query:n.currentQuery.query,columns:n.currentQuery.columns||[]});s.getNewSqlTablePreview(t).done(e).fail(r)}else s.getExistingSqlTablePreview(n.currentQuery.name).done(e).fail(r)}},n.setDirty=function(){n.currentQuery.isPristine=!1},n.getTypeLabel=function(n){switch(n){case"iri":return"VARCHAR: IRI";case"string":return"VARCHAR: String";default:return n.indexOf(" ")>0?n:n.toUpperCase()}}}angular.module("graphdb.framework.jdbc.controllers",["ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.rest.monitoring.service","toastr"],["graphdb.framework.utils.notifications"]).controller("JdbcListCtrl",r).controller("JdbcCreateCtrl",o),r.$inject=["$scope","$repositories","JdbcRestService","toastr","ModalService","$translate"],o.$inject=["$scope","$location","toastr","$repositories","$window","$timeout","JdbcRestService","RDF4JRepositoriesRestService","SparqlRestService","ModalService","$translate"]}}]);
2
- //# sourceMappingURL=41.368780c518c3f6cab4b7.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[41,134],{40:function(n,e){function t(n,e){return{showToastMessageWithDelay:function(t){return new Promise(r=>{n.success(e.instant(t)),setTimeout(r,200)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",t),t.$inject=["toastr","$translate"]},93:function(n,e,t){"use strict";t.r(e);t(4),t(10),t(13),t(40);function r(n,e,t,r,o,i){n.getSqlConfigurations=function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()?n.jdbcConfigurations=[]:t.getJdbcConfigurations().success((function(e){n.jdbcConfigurations=e})).error((function(n){const e=getError(n);r.error(e,i.instant("jdbc.not.get.SQL.msg"))}))},n.$watch((function(){return e.getActiveRepository()}),(function(){n.getSqlConfigurations()})),n.deleteConfiguration=function(e){o.openSimpleModal({title:i.instant("common.warning"),message:i.instant("jdbc.delete.sql.table.warning.msg",{name:e}),warning:!0}).result.then((function(){t.deleteJdbcConfiguration(e).success((function(){n.getSqlConfigurations()})).error((function(n){r.error(getError(n),i.instant("jdbc.not.delete.sql.msg"))}))}))}}function o(n,e,t,r,o,i,s,u,c,a,l){n.name=e.search().name||"",n.getNamespaces=function(){y(!0,l.instant("common.refreshing.namespaces"),l.instant("common.extra.message")),u.getRepositoryNamespaces().success((function(e){const t={};e.results.bindings.forEach((function(n){t[n.prefix.value]=n.namespace.value})),n.namespaces=t})).error((function(e){n.repositoryError=getError(e)})).finally((function(){y(!1),w()}))},n.setLoader=y,n.addKnownPrefixes=C,n.page=1,n.noPadding={paddingRight:0,paddingLeft:0},n.sqlTypes=["string","iri","boolean","byte","short","int","long","float","double","decimal","date","time","timestamp","Get suggestion..."],n.currentTabConfig={},n.orientationViewMode=!0,n.currentQuery={},n.$watch((function(){return r.getActiveRepository()}),(function(n,t){n!==t&&e.path("jdbc")}));let g=null;n.goBack=function(){g=i((function(){o.history.back()}),1e3)};const f=n.$on("$locationChangeStart",(function(e){!function(e){n.currentQuery.isPristine||(confirm(l.instant("jdbc.warning.unsaved.changes"))?(window.removeEventListener("beforeunload",d),f(),i.cancel(g)):e.preventDefault())}(e)}));function d(e){n.currentQuery.isPristine||(e.returnValue=!0)}window.addEventListener("beforeunload",d),n.$on("$destroy",(function(n){window.removeEventListener("beforeunload",d),f(),i.cancel(g)}));const m={id:"1",name:"",query:"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}",inference:!0,sameAs:!0,isNewConfiguration:!0,isPristine:!0};var p;function y(e,t,r){const o=angular.element(document.getElementById("yasr-inner"));n.queryIsRunning=e,e?(n.queryStartTime=Date.now(),n.countTimeouted=!1,n.progressMessage=t,n.extraMessage=r,o.addClass("hide")):(n.progressMessage="",n.extraMessage="",o.removeClass("hide")),null===n.$$phase&&n.$apply()}function w(){n.tabsData=[n.currentQuery];const e=n.currentQuery;n.currentQuery.query?window.editor.setValue(n.currentQuery.query):window.editor.setValue(" "),i((function(){n.currentTabConfig={},n.currentTabConfig.queryType=e.queryType,n.currentTabConfig.resultsCount=e.resultsCount,n.currentTabConfig.offset=e.offset,n.currentTabConfig.allResultsCount=e.allResultsCount,n.currentTabConfig.page=e.page,n.currentTabConfig.pageSize=e.pageSize,n.currentTabConfig.timeFinished=e.timeFinished,n.currentTabConfig.timeTook=e.timeTook,n.currentTabConfig.sizeDelta=e.sizeDelta,n.$apply()}),0),n.canWriteActiveRepo()||(window.editor.options.readOnly=!0)}function b(){n.tabsData=n.tabs=[m],n.currentQuery=angular.copy(m),h(),window.editor&&(n.setQuery(n.currentQuery.query),w()),n.$watch((function(){return n.currentQuery.query}),(function(e,t){e!==t&&n.setDirty()}))}function C(){c.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(n){angular.isDefined(window.editor)&&angular.isDefined(n)&&n!==window.editor.getValue()&&window.editor.setValue(n)})).error((function(n){const e=getError(n);return t.error(e,l.instant("common.add.known.prefixes.error")),!0}))}function v(){j()&&s.getColumnNames(n.currentQuery.query).success((function(e){s.getColumnsTypeSuggestion(n.currentQuery.query,e).success((function(t){const r=[];_.forEach(e,(function(n){r.push({column_name:n,column_type:t[n].column_type,nullable:!0,sparql_type:t[n].sparql_type})})),n.currentQuery.columns=r,n.setDirty()})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.types"))}))})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.names"))}))}function h(){2===n.page?n.viewMode="editor":n.viewMode="none"}function Q(n,e,t,r,o){let i=t[r].value;i=i.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return"<div class = 'literal-cell'>"+("<p class='nonUri' style='border: none; background-color: transparent; padding: 0; margin: 0'>"+i+"</p>")+"</div>"}function T(){return window.editor&&"SELECT"===window.editor.getQueryType()}function q(){return j()&&function(){if(!n.currentQuery.columns||!n.currentQuery.columns.length)return t.error(l.instant("jdbc.warning.one.column.msg"),l.instant("jdbc.invalid.columns")),!1;if(n.containsUnknownColumns())return t.error(l.instant("jdbc.warning.all.column.msg"),l.instant("jdbc.invalid.columns")),!1;return!0}()}function j(){return!!T()||(t.error(l.instant("jdbc.warning.invalid.query"),l.instant("jdbc.invalid.query)")),!1)}n.resetCurrentTabConfig=function(){n.currentTabConfig={pageSize:100,page:1,allResultsCount:0,resultsCount:0,queryType:""}},n.saveTab=function(){},n.setQuery=function(n){window.editor.setValue(n||" ")},n.name?(p=n.name,s.getJdbcConfiguration(p).success((function(n){m.query=n.query,m.name=n.name,m.columns=n.columns,m.isNewConfiguration=!n.name,b()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.get.sql.msg2"))}))):b(),n.goToPage=function(e){n.page=e;const t=n.currentQuery.columns;2!==e||t&&0!==t.length||!T()||n.getColumnsSuggestions(),h()},n.save=function(){q()&&(n.currentQuery.name?n.currentQuery.isNewConfiguration?s.createNewJdbcConfiguration(n.currentQuery).success((function(){n.currentQuery.isPristine=!0,n.currentQuery.isNewConfiguration=!1,t.success(l.instant("jdbc.saved.configuration")),n.goBack()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.saved.configuration"))})):s.updateJdbcConfiguration(n.currentQuery).success((function(){n.currentQuery.isPristine=!0,n.currentQuery.isNewConfiguration=!1,t.success(l.instant("jdbc.configuration.updated")),n.goBack()})).error((function(n){const e=getError(n);t.error(e,l.instant("jdbc.not.saved.configuration"))})):t.error(l.instant("jdbc.required.configuration.name")))},n.hasPrecision=function(n){return"iri"===n||"string"===n||"decimal"===n},n.containsColumnsWithPrecision=function(e){return e&&e.some(e=>n.hasPrecision(e.column_type))},n.hasScale=function(n){return"decimal"===n},n.containsColumnsWithScale=function(e){return e&&e.some(e=>n.hasScale(e.column_type))},n.isLiteral=function(n){return"iri"!==n&&"unknown"!==n},n.containsNonLiteralColumnsOnly=function(e){return e&&e.every(e=>!n.isLiteral(e.column_type))},n.containsUnknownColumns=function(){return n.currentQuery.columns&&n.currentQuery.columns.find(n=>"unknown"===n.column_type)},$("textarea").on("paste",(function(){i((function(){C()}),0)})),n.selectColumnType=function(e,r){const o=_.find(n.currentQuery.columns,(function(n){return n.column_name===e}));"Get suggestion..."===o.column_type&&s.getColumnsTypeSuggestion(n.currentQuery.query,[e]).success((function(n){o.column_type=n[e].column_type,o.column_type===r?t.info(l.instant("jdbc.same.suggested.sql.type",{type:o.column_type}),l.instant("jdbc.suggest.sql.type"),{allowHtml:!0}):t.success(l.instant("jdbc.suggested.sql.type",{type:o.column_type}),l.instant("jdbc.suggest.sql.type"),{allowHtml:!0}),o.sparql_type=n[e].sparql_type})).error((function(n){t.error(getError(n),l.instant("jdbc.not.suggest.column.type"))})),n.setDirty()},n.getColumnsSuggestions=function(){n.currentQuery.columns&&n.currentQuery.columns.length>0?a.openSimpleModal({title:l.instant("common.warning"),message:l.instant("jdbc.warning.column.type.msg"),warning:!0}).result.then((function(){v()})):v()},n.deleteColumn=function(e,t){a.openSimpleModal({title:l.instant("common.warning"),message:l.instant("jdbc.warning.delete.column.msg",{columnName:e}),warning:!0}).result.then((function(){n.currentQuery.columns.splice(t,1),n.setDirty()}))},n.getPreview=function(){if(q()&&(n.executedQueryTab=n.currentQuery,!n.queryIsRunning)){n.currentQuery.outputType="table",n.resetCurrentTabConfig(),y(!0,l.instant("jdbc.preview.first.rows",{name:n.name}),l.instant("common.extra.message"));const e=function(e,r,o){!function(e,r,o){e.results&&e.results.bindings&&e.results.bindings.length?(window.yasr.plugins.table.options.getCellContent=Q,n.currentTabConfig.queryType="SELECT",window.yasr.setResponse(r,o,null)):t.info(l.instant("jdbc.table.definition"),l.instant("jdbc.preview.sql"))}(e,o,r),y(!1)},r=function(n){y(!1),t.error(getError(n,0,100),l.instant("jdbc.not.show.preview"))};if(n.canWriteActiveRepo()){const t=JSON.stringify({name:n.currentQuery.name,query:n.currentQuery.query,columns:n.currentQuery.columns||[]});s.getNewSqlTablePreview(t).done(e).fail(r)}else s.getExistingSqlTablePreview(n.currentQuery.name).done(e).fail(r)}},n.setDirty=function(){n.currentQuery.isPristine=!1},n.getTypeLabel=function(n){switch(n){case"iri":return"VARCHAR: IRI";case"string":return"VARCHAR: String";default:return n.indexOf(" ")>0?n:n.toUpperCase()}}}angular.module("graphdb.framework.jdbc.controllers",["ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.rest.monitoring.service","toastr"],["graphdb.framework.utils.notifications"]).controller("JdbcListCtrl",r).controller("JdbcCreateCtrl",o),r.$inject=["$scope","$repositories","JdbcRestService","toastr","ModalService","$translate"],o.$inject=["$scope","$location","toastr","$repositories","$window","$timeout","JdbcRestService","RDF4JRepositoriesRestService","SparqlRestService","ModalService","$translate"]}}]);
2
+ //# sourceMappingURL=41.d09e0f01eac3492e3376.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/utils/notifications.js","webpack:///./src/js/angular/jdbc/controllers.js"],"names":["Notifications","toastr","$translate","showToastMessageWithDelay","message","Promise","r","success","instant","setTimeout","angular","module","factory","$inject","JdbcListCtrl","$scope","$repositories","JdbcRestService","ModalService","getSqlConfigurations","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","jdbcConfigurations","getJdbcConfigurations","data","error","msg","getError","$watch","deleteConfiguration","name","openSimpleModal","title","warning","result","then","deleteJdbcConfiguration","e","JdbcCreateCtrl","$location","$window","$timeout","RDF4JRepositoriesRestService","SparqlRestService","search","getNamespaces","setLoader","getRepositoryNamespaces","usedPrefixes","results","bindings","forEach","prefix","value","namespace","namespaces","repositoryError","finally","loadTab","addKnownPrefixes","page","noPadding","paddingRight","paddingLeft","sqlTypes","currentTabConfig","orientationViewMode","currentQuery","newValue","oldValue","path","timer","goBack","history","back","locationChangeListener","$on","event","isPristine","confirm","window","removeEventListener","showBeforeunloadMessage","cancel","preventDefault","confirmExit","returnValue","addEventListener","defaultTabConfig","id","query","inference","sameAs","isNewConfiguration","isRunning","progressMessage","extraMessage","yasrInnerContainer","element","document","getElementById","queryIsRunning","queryStartTime","Date","now","countTimeouted","addClass","removeClass","$$phase","$apply","tabsData","tab","editor","setValue","queryType","resultsCount","offset","allResultsCount","pageSize","timeFinished","timeTook","sizeDelta","canWriteActiveRepo","options","readOnly","setQueryFromTabConfig","tabs","copy","resetYasqeYasr","setQuery","setDirty","JSON","stringify","getValue","isDefined","getSuggestions","validateQuery","getColumnNames","columns","getColumnsTypeSuggestion","columnTypes","suggestedColumns","_","columnName","push","column_name","column_type","nullable","sparql_type","viewMode","getCellContentSQL","yasr","plugin","sparqlVar","context","replace","hasValidQuery","getQueryType","validateDefinition","length","containsUnknownColumns","validateColumns","resetCurrentTabConfig","saveTab","getJdbcConfiguration","config","goToPage","getColumnsSuggestions","save","createNewJdbcConfiguration","updateJdbcConfiguration","hasPrecision","columnType","containsColumnsWithPrecision","some","el","hasScale","containsColumnsWithScale","isLiteral","containsNonLiteralColumnsOnly","every","find","$","on","selectColumnType","prevColumnType","column","columnSuggestion","info","type","allowHtml","deleteColumn","index","splice","getPreview","executedQueryTab","outputType","successCallback","textStatus","jqXhr","plugins","table","getCellContent","setResponse","setPreviewResult","failCallback","sqlView","getNewSqlTablePreview","done","fail","getExistingSqlTablePreview","getTypeLabel","indexOf","toUpperCase","controller"],"mappings":"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","file":"41.368780c518c3f6cab4b7.bundle.js","sourcesContent":["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, 200);\n });\n }\n}\n","import 'angular/core/services';\nimport 'angular/core/services/repositories.service';\nimport 'angular/rest/monitoring.rest.service';\nimport 'angular/utils/notifications';\n\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.monitoring.service',\n 'toastr'\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 = ['$scope', '$location', 'toastr', '$repositories', '$window', '$timeout', 'JdbcRestService', 'RDF4JRepositoriesRestService', 'SparqlRestService', 'ModalService', '$translate'];\n\nfunction JdbcCreateCtrl($scope, $location, toastr, $repositories, $window, $timeout, JdbcRestService, RDF4JRepositoriesRestService, SparqlRestService, ModalService, $translate) {\n\n $scope.name = $location.search().name || '';\n $scope.getNamespaces = getNamespaces;\n $scope.setLoader = setLoader;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.page = 1;\n $scope.noPadding = {paddingRight: 0, paddingLeft: 0};\n $scope.sqlTypes = ['string', 'iri', 'boolean', 'byte', 'short', 'int', 'long', 'float', 'double', 'decimal', 'date', 'time', 'timestamp', 'Get suggestion...'];\n $scope.currentTabConfig = {};\n // This property is obligatory in order to show YASQUE and YASR properly\n $scope.orientationViewMode = true;\n $scope.currentQuery = {};\n\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $location.path('jdbc');\n }\n });\n\n let timer = null;\n $scope.goBack = function () {\n timer = $timeout(function () {\n $window.history.back();\n }, 1000);\n };\n\n const locationChangeListener = $scope.$on('$locationChangeStart', function (event) {\n confirmExit(event);\n });\n\n window.addEventListener('beforeunload', showBeforeunloadMessage);\n\n function showBeforeunloadMessage(event) {\n if (!$scope.currentQuery.isPristine) {\n event.returnValue = true;\n }\n }\n\n function confirmExit(event) {\n if (!$scope.currentQuery.isPristine) {\n if (!confirm($translate.instant('jdbc.warning.unsaved.changes'))) {\n event.preventDefault();\n } else {\n window.removeEventListener('beforeunload', showBeforeunloadMessage);\n locationChangeListener();\n $timeout.cancel(timer);\n }\n }\n }\n\n $scope.$on('$destroy', function (event) {\n window.removeEventListener('beforeunload', showBeforeunloadMessage);\n locationChangeListener();\n $timeout.cancel(timer);\n });\n\n const defaultTabConfig = {\n id: '1',\n name: '',\n 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 inference: true,\n sameAs: true,\n isNewConfiguration: true,\n isPristine: true\n };\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 100, // page limit 100 as this is only used for preview\n page: 1,\n allResultsCount: 0,\n resultsCount: 0,\n // Hide YASR by default, show on success in callback when needed\n queryType: ''\n };\n };\n\n $scope.saveTab = function () {\n };\n\n // Called when user clicks on a sample query\n $scope.setQuery = function (query) {\n // Hack for YASQE bug\n window.editor.setValue(query ? query : ' ');\n };\n\n if ($scope.name) {\n getJdbcConfiguration($scope.name);\n } else {\n setQueryFromTabConfig();\n }\n\n // FIXME: this is copy-pasted in graphs-config.controller.js and query-editor.controller.js. Find a way to avoid duplications\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, $translate.instant('common.refreshing.namespaces'), $translate.instant('common.extra.message'));\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n loadTab();\n });\n }\n\n function setLoader(isRunning, progressMessage, extraMessage) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n yasrInnerContainer.addClass('hide');\n } else {\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n yasrInnerContainer.removeClass('hide');\n }\n\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function loadTab() {\n $scope.tabsData = [$scope.currentQuery];\n\n const tab = $scope.currentQuery;\n\n if (!$scope.currentQuery.query) {\n // hack for YASQE bug\n window.editor.setValue(' ');\n } else {\n window.editor.setValue($scope.currentQuery.query);\n }\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.$apply();\n }, 0);\n\n if (!$scope.canWriteActiveRepo()) {\n window.editor.options.readOnly = true;\n }\n }\n\n $scope.goToPage = function (page) {\n $scope.page = page;\n const columns = $scope.currentQuery.columns;\n if (page === 2 && (!columns || columns.length === 0) && hasValidQuery()) {\n $scope.getColumnsSuggestions();\n }\n resetYasqeYasr();\n };\n\n function getJdbcConfiguration(name) {\n JdbcRestService.getJdbcConfiguration(name).success(function (config) {\n defaultTabConfig.query = config.query;\n defaultTabConfig.name = config.name;\n defaultTabConfig.columns = config.columns;\n\n defaultTabConfig.isNewConfiguration = !config.name;\n\n setQueryFromTabConfig();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.get.sql.msg2'));\n });\n }\n\n function setQueryFromTabConfig() {\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n $scope.currentQuery = angular.copy(defaultTabConfig);\n\n resetYasqeYasr();\n\n if (window.editor) {\n $scope.setQuery($scope.currentQuery.query);\n loadTab();\n }\n\n $scope.$watch(function () {\n return $scope.currentQuery.query;\n }, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $scope.setDirty();\n }\n });\n }\n\n $scope.save = function () {\n if (!validateDefinition()) {\n return;\n }\n\n if (!$scope.currentQuery.name) {\n toastr.error($translate.instant('jdbc.required.configuration.name'));\n return;\n }\n\n if ($scope.currentQuery.isNewConfiguration) {\n JdbcRestService.createNewJdbcConfiguration($scope.currentQuery).success(function () {\n $scope.currentQuery.isPristine = true;\n $scope.currentQuery.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.saved.configuration'));\n $scope.goBack();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.saved.configuration'));\n });\n } else {\n JdbcRestService.updateJdbcConfiguration($scope.currentQuery).success(function () {\n $scope.currentQuery.isPristine = true;\n $scope.currentQuery.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.configuration.updated'));\n $scope.goBack();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.saved.configuration'));\n });\n }\n };\n\n $scope.hasPrecision = function (columnType) {\n return columnType === 'iri' || columnType === 'string' || columnType === 'decimal';\n };\n\n $scope.containsColumnsWithPrecision = function (columns) {\n return columns && columns.some((el) => $scope.hasPrecision(el.column_type));\n };\n\n $scope.hasScale = function (columnType) {\n return columnType === 'decimal';\n };\n\n $scope.containsColumnsWithScale = function (columns) {\n return columns && columns.some((el) => $scope.hasScale(el.column_type));\n };\n\n $scope.isLiteral = function (columnType) {\n return columnType !== 'iri' && columnType !== 'unknown';\n };\n\n $scope.containsNonLiteralColumnsOnly = function (columns) {\n return columns && columns.every((el) => !$scope.isLiteral(el.column_type));\n };\n\n $scope.containsUnknownColumns = function () {\n return $scope.currentQuery.columns && $scope.currentQuery.columns\n .find((el) => el.column_type === 'unknown');\n };\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.add.known.prefixes.error'));\n return true;\n });\n }\n\n $('textarea').on('paste', function () {\n $timeout(function () {\n addKnownPrefixes();\n }, 0);\n });\n\n $scope.selectColumnType = function (columnName, prevColumnType) {\n const column = _.find($scope.currentQuery.columns, function (column) {\n return column.column_name === columnName;\n });\n\n if (column.column_type === 'Get suggestion...') {\n JdbcRestService.getColumnsTypeSuggestion($scope.currentQuery.query, [columnName]).success(function (columnSuggestion) {\n column.column_type = columnSuggestion[columnName].column_type;\n if (column.column_type === prevColumnType) {\n toastr.info($translate.instant('jdbc.same.suggested.sql.type', {type: column.column_type}),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n } else {\n toastr.success($translate.instant('jdbc.suggested.sql.type', {type: column.column_type}),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n }\n column.sparql_type = columnSuggestion[columnName].sparql_type;\n }).error(function(e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.type'));\n });\n }\n $scope.setDirty();\n };\n\n $scope.getColumnsSuggestions = function () {\n if ($scope.currentQuery.columns && $scope.currentQuery.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 function getSuggestions() {\n if (!validateQuery()) {\n return;\n }\n\n JdbcRestService.getColumnNames($scope.currentQuery.query).success(function (columns) {\n JdbcRestService.getColumnsTypeSuggestion($scope.currentQuery.query, columns).success(function (columnTypes) {\n const suggestedColumns = [];\n _.forEach(columns, function (columnName) {\n suggestedColumns.push({\n column_name: columnName,\n column_type: columnTypes[columnName].column_type,\n nullable: true,\n sparql_type: columnTypes[columnName].sparql_type\n });\n });\n $scope.currentQuery.columns = suggestedColumns;\n $scope.setDirty();\n }).error(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.types'));\n });\n }).error(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.names'));\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.currentQuery.columns.splice(index, 1);\n $scope.setDirty();\n });\n };\n\n $scope.getPreview = function () {\n if (!validateDefinition()) {\n return;\n }\n\n $scope.executedQueryTab = $scope.currentQuery;\n\n if (!$scope.queryIsRunning) {\n $scope.currentQuery.outputType = 'table';\n $scope.resetCurrentTabConfig();\n\n setLoader(true, $translate.instant('jdbc.preview.first.rows', {name: $scope.name}),\n $translate.instant('common.extra.message'));\n\n const successCallback = function (data, textStatus, jqXhr) {\n setPreviewResult(data, jqXhr, textStatus);\n setLoader(false);\n };\n\n const failCallback = function (data) {\n setLoader(false);\n toastr.error(getError(data, 0, 100), $translate.instant('jdbc.not.show.preview'));\n };\n\n if ($scope.canWriteActiveRepo()) {\n const sqlView = JSON.stringify({\n name: $scope.currentQuery.name,\n query: $scope.currentQuery.query,\n columns: $scope.currentQuery.columns || []\n });\n JdbcRestService.getNewSqlTablePreview(sqlView)\n .done(successCallback).fail(failCallback);\n } else {\n JdbcRestService.getExistingSqlTablePreview($scope.currentQuery.name)\n .done(successCallback).fail(failCallback);\n }\n }\n };\n\n $scope.setDirty = function () {\n $scope.currentQuery.isPristine = false;\n };\n\n $scope.getTypeLabel = function (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 function resetYasqeYasr() {\n if ($scope.page === 2) {\n $scope.viewMode = 'editor';\n } else {\n $scope.viewMode = 'none';\n }\n }\n\n function getCellContentSQL(yasr, plugin, bindings, sparqlVar, context) {\n let value = bindings[sparqlVar].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\n function setPreviewResult(data, jqXhr, textStatus) {\n if (!data.results || !data.results.bindings || !data.results.bindings.length) {\n // Hides YASR as it may contain previous results\n toastr.info($translate.instant('jdbc.table.definition'), $translate.instant('jdbc.preview.sql'));\n } else {\n // Custom content extractor that won't insert \" in SQL values (since we treat them as fake literals)\n window.yasr.plugins.table.options.getCellContent = getCellContentSQL;\n\n // Set query type so YASR shows the results\n $scope.currentTabConfig.queryType = 'SELECT';\n window.yasr.setResponse(jqXhr, textStatus, null);\n }\n }\n\n function hasValidQuery() {\n return window.editor && window.editor.getQueryType() === 'SELECT';\n }\n\n function validateDefinition() {\n return validateQuery() && validateColumns();\n }\n\n function validateQuery() {\n if (!hasValidQuery()) {\n toastr.error($translate.instant('jdbc.warning.invalid.query'), $translate.instant('jdbc.invalid.query)'));\n return false;\n }\n\n return true;\n }\n\n function validateColumns() {\n if (!$scope.currentQuery.columns || !$scope.currentQuery.columns.length) {\n toastr.error($translate.instant('jdbc.warning.one.column.msg'), $translate.instant('jdbc.invalid.columns'));\n return false;\n }\n\n if ($scope.containsUnknownColumns()) {\n toastr.error($translate.instant('jdbc.warning.all.column.msg'), $translate.instant('jdbc.invalid.columns'));\n return false;\n }\n\n return true;\n }\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/utils/notifications.js","webpack:///./src/js/angular/jdbc/controllers.js"],"names":["Notifications","toastr","$translate","showToastMessageWithDelay","message","Promise","r","success","instant","setTimeout","angular","module","factory","$inject","JdbcListCtrl","$scope","$repositories","JdbcRestService","ModalService","getSqlConfigurations","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","jdbcConfigurations","getJdbcConfigurations","data","error","msg","getError","$watch","deleteConfiguration","name","openSimpleModal","title","warning","result","then","deleteJdbcConfiguration","e","JdbcCreateCtrl","$location","$window","$timeout","RDF4JRepositoriesRestService","SparqlRestService","search","getNamespaces","setLoader","getRepositoryNamespaces","usedPrefixes","results","bindings","forEach","prefix","value","namespace","namespaces","repositoryError","finally","loadTab","addKnownPrefixes","page","noPadding","paddingRight","paddingLeft","sqlTypes","currentTabConfig","orientationViewMode","currentQuery","newValue","oldValue","path","timer","goBack","history","back","locationChangeListener","$on","event","isPristine","confirm","window","removeEventListener","showBeforeunloadMessage","cancel","preventDefault","confirmExit","returnValue","addEventListener","defaultTabConfig","id","query","inference","sameAs","isNewConfiguration","isRunning","progressMessage","extraMessage","yasrInnerContainer","element","document","getElementById","queryIsRunning","queryStartTime","Date","now","countTimeouted","addClass","removeClass","$$phase","$apply","tabsData","tab","editor","setValue","queryType","resultsCount","offset","allResultsCount","pageSize","timeFinished","timeTook","sizeDelta","canWriteActiveRepo","options","readOnly","setQueryFromTabConfig","tabs","copy","resetYasqeYasr","setQuery","setDirty","JSON","stringify","getValue","isDefined","getSuggestions","validateQuery","getColumnNames","columns","getColumnsTypeSuggestion","columnTypes","suggestedColumns","_","columnName","push","column_name","column_type","nullable","sparql_type","viewMode","getCellContentSQL","yasr","plugin","sparqlVar","context","replace","hasValidQuery","getQueryType","validateDefinition","length","containsUnknownColumns","validateColumns","resetCurrentTabConfig","saveTab","getJdbcConfiguration","config","goToPage","getColumnsSuggestions","save","createNewJdbcConfiguration","updateJdbcConfiguration","hasPrecision","columnType","containsColumnsWithPrecision","some","el","hasScale","containsColumnsWithScale","isLiteral","containsNonLiteralColumnsOnly","every","find","$","on","selectColumnType","prevColumnType","column","columnSuggestion","info","type","allowHtml","deleteColumn","index","splice","getPreview","executedQueryTab","outputType","successCallback","textStatus","jqXhr","plugins","table","getCellContent","setResponse","setPreviewResult","failCallback","sqlView","getNewSqlTablePreview","done","fail","getExistingSqlTablePreview","getTypeLabel","indexOf","toUpperCase","controller"],"mappings":"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","file":"41.d09e0f01eac3492e3376.bundle.js","sourcesContent":["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, 200);\n });\n }\n}\n","import 'angular/core/services';\nimport 'angular/core/services/repositories.service';\nimport 'angular/rest/monitoring.rest.service';\nimport 'angular/utils/notifications';\n\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.monitoring.service',\n 'toastr'\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 = ['$scope', '$location', 'toastr', '$repositories', '$window', '$timeout', 'JdbcRestService', 'RDF4JRepositoriesRestService', 'SparqlRestService', 'ModalService', '$translate'];\n\nfunction JdbcCreateCtrl($scope, $location, toastr, $repositories, $window, $timeout, JdbcRestService, RDF4JRepositoriesRestService, SparqlRestService, ModalService, $translate) {\n\n $scope.name = $location.search().name || '';\n $scope.getNamespaces = getNamespaces;\n $scope.setLoader = setLoader;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.page = 1;\n $scope.noPadding = {paddingRight: 0, paddingLeft: 0};\n $scope.sqlTypes = ['string', 'iri', 'boolean', 'byte', 'short', 'int', 'long', 'float', 'double', 'decimal', 'date', 'time', 'timestamp', 'Get suggestion...'];\n $scope.currentTabConfig = {};\n // This property is obligatory in order to show YASQUE and YASR properly\n $scope.orientationViewMode = true;\n $scope.currentQuery = {};\n\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $location.path('jdbc');\n }\n });\n\n let timer = null;\n $scope.goBack = function () {\n timer = $timeout(function () {\n $window.history.back();\n }, 1000);\n };\n\n const locationChangeListener = $scope.$on('$locationChangeStart', function (event) {\n confirmExit(event);\n });\n\n window.addEventListener('beforeunload', showBeforeunloadMessage);\n\n function showBeforeunloadMessage(event) {\n if (!$scope.currentQuery.isPristine) {\n event.returnValue = true;\n }\n }\n\n function confirmExit(event) {\n if (!$scope.currentQuery.isPristine) {\n if (!confirm($translate.instant('jdbc.warning.unsaved.changes'))) {\n event.preventDefault();\n } else {\n window.removeEventListener('beforeunload', showBeforeunloadMessage);\n locationChangeListener();\n $timeout.cancel(timer);\n }\n }\n }\n\n $scope.$on('$destroy', function (event) {\n window.removeEventListener('beforeunload', showBeforeunloadMessage);\n locationChangeListener();\n $timeout.cancel(timer);\n });\n\n const defaultTabConfig = {\n id: '1',\n name: '',\n 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 inference: true,\n sameAs: true,\n isNewConfiguration: true,\n isPristine: true\n };\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 100, // page limit 100 as this is only used for preview\n page: 1,\n allResultsCount: 0,\n resultsCount: 0,\n // Hide YASR by default, show on success in callback when needed\n queryType: ''\n };\n };\n\n $scope.saveTab = function () {\n };\n\n // Called when user clicks on a sample query\n $scope.setQuery = function (query) {\n // Hack for YASQE bug\n window.editor.setValue(query ? query : ' ');\n };\n\n if ($scope.name) {\n getJdbcConfiguration($scope.name);\n } else {\n setQueryFromTabConfig();\n }\n\n // FIXME: this is copy-pasted in graphs-config.controller.js and query-editor.controller.js. Find a way to avoid duplications\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, $translate.instant('common.refreshing.namespaces'), $translate.instant('common.extra.message'));\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n loadTab();\n });\n }\n\n function setLoader(isRunning, progressMessage, extraMessage) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n yasrInnerContainer.addClass('hide');\n } else {\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n yasrInnerContainer.removeClass('hide');\n }\n\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function loadTab() {\n $scope.tabsData = [$scope.currentQuery];\n\n const tab = $scope.currentQuery;\n\n if (!$scope.currentQuery.query) {\n // hack for YASQE bug\n window.editor.setValue(' ');\n } else {\n window.editor.setValue($scope.currentQuery.query);\n }\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.$apply();\n }, 0);\n\n if (!$scope.canWriteActiveRepo()) {\n window.editor.options.readOnly = true;\n }\n }\n\n $scope.goToPage = function (page) {\n $scope.page = page;\n const columns = $scope.currentQuery.columns;\n if (page === 2 && (!columns || columns.length === 0) && hasValidQuery()) {\n $scope.getColumnsSuggestions();\n }\n resetYasqeYasr();\n };\n\n function getJdbcConfiguration(name) {\n JdbcRestService.getJdbcConfiguration(name).success(function (config) {\n defaultTabConfig.query = config.query;\n defaultTabConfig.name = config.name;\n defaultTabConfig.columns = config.columns;\n\n defaultTabConfig.isNewConfiguration = !config.name;\n\n setQueryFromTabConfig();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.get.sql.msg2'));\n });\n }\n\n function setQueryFromTabConfig() {\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n $scope.currentQuery = angular.copy(defaultTabConfig);\n\n resetYasqeYasr();\n\n if (window.editor) {\n $scope.setQuery($scope.currentQuery.query);\n loadTab();\n }\n\n $scope.$watch(function () {\n return $scope.currentQuery.query;\n }, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n $scope.setDirty();\n }\n });\n }\n\n $scope.save = function () {\n if (!validateDefinition()) {\n return;\n }\n\n if (!$scope.currentQuery.name) {\n toastr.error($translate.instant('jdbc.required.configuration.name'));\n return;\n }\n\n if ($scope.currentQuery.isNewConfiguration) {\n JdbcRestService.createNewJdbcConfiguration($scope.currentQuery).success(function () {\n $scope.currentQuery.isPristine = true;\n $scope.currentQuery.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.saved.configuration'));\n $scope.goBack();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.saved.configuration'));\n });\n } else {\n JdbcRestService.updateJdbcConfiguration($scope.currentQuery).success(function () {\n $scope.currentQuery.isPristine = true;\n $scope.currentQuery.isNewConfiguration = false;\n toastr.success($translate.instant('jdbc.configuration.updated'));\n $scope.goBack();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('jdbc.not.saved.configuration'));\n });\n }\n };\n\n $scope.hasPrecision = function (columnType) {\n return columnType === 'iri' || columnType === 'string' || columnType === 'decimal';\n };\n\n $scope.containsColumnsWithPrecision = function (columns) {\n return columns && columns.some((el) => $scope.hasPrecision(el.column_type));\n };\n\n $scope.hasScale = function (columnType) {\n return columnType === 'decimal';\n };\n\n $scope.containsColumnsWithScale = function (columns) {\n return columns && columns.some((el) => $scope.hasScale(el.column_type));\n };\n\n $scope.isLiteral = function (columnType) {\n return columnType !== 'iri' && columnType !== 'unknown';\n };\n\n $scope.containsNonLiteralColumnsOnly = function (columns) {\n return columns && columns.every((el) => !$scope.isLiteral(el.column_type));\n };\n\n $scope.containsUnknownColumns = function () {\n return $scope.currentQuery.columns && $scope.currentQuery.columns\n .find((el) => el.column_type === 'unknown');\n };\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.add.known.prefixes.error'));\n return true;\n });\n }\n\n $('textarea').on('paste', function () {\n $timeout(function () {\n addKnownPrefixes();\n }, 0);\n });\n\n $scope.selectColumnType = function (columnName, prevColumnType) {\n const column = _.find($scope.currentQuery.columns, function (column) {\n return column.column_name === columnName;\n });\n\n if (column.column_type === 'Get suggestion...') {\n JdbcRestService.getColumnsTypeSuggestion($scope.currentQuery.query, [columnName]).success(function (columnSuggestion) {\n column.column_type = columnSuggestion[columnName].column_type;\n if (column.column_type === prevColumnType) {\n toastr.info($translate.instant('jdbc.same.suggested.sql.type', {type: column.column_type}),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n } else {\n toastr.success($translate.instant('jdbc.suggested.sql.type', {type: column.column_type}),\n $translate.instant('jdbc.suggest.sql.type'), {allowHtml: true});\n }\n column.sparql_type = columnSuggestion[columnName].sparql_type;\n }).error(function(e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.type'));\n });\n }\n $scope.setDirty();\n };\n\n $scope.getColumnsSuggestions = function () {\n if ($scope.currentQuery.columns && $scope.currentQuery.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 function getSuggestions() {\n if (!validateQuery()) {\n return;\n }\n\n JdbcRestService.getColumnNames($scope.currentQuery.query).success(function (columns) {\n JdbcRestService.getColumnsTypeSuggestion($scope.currentQuery.query, columns).success(function (columnTypes) {\n const suggestedColumns = [];\n _.forEach(columns, function (columnName) {\n suggestedColumns.push({\n column_name: columnName,\n column_type: columnTypes[columnName].column_type,\n nullable: true,\n sparql_type: columnTypes[columnName].sparql_type\n });\n });\n $scope.currentQuery.columns = suggestedColumns;\n $scope.setDirty();\n }).error(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.types'));\n });\n }).error(function (e) {\n toastr.error(getError(e), $translate.instant('jdbc.not.suggest.column.names'));\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.currentQuery.columns.splice(index, 1);\n $scope.setDirty();\n });\n };\n\n $scope.getPreview = function () {\n if (!validateDefinition()) {\n return;\n }\n\n $scope.executedQueryTab = $scope.currentQuery;\n\n if (!$scope.queryIsRunning) {\n $scope.currentQuery.outputType = 'table';\n $scope.resetCurrentTabConfig();\n\n setLoader(true, $translate.instant('jdbc.preview.first.rows', {name: $scope.name}),\n $translate.instant('common.extra.message'));\n\n const successCallback = function (data, textStatus, jqXhr) {\n setPreviewResult(data, jqXhr, textStatus);\n setLoader(false);\n };\n\n const failCallback = function (data) {\n setLoader(false);\n toastr.error(getError(data, 0, 100), $translate.instant('jdbc.not.show.preview'));\n };\n\n if ($scope.canWriteActiveRepo()) {\n const sqlView = JSON.stringify({\n name: $scope.currentQuery.name,\n query: $scope.currentQuery.query,\n columns: $scope.currentQuery.columns || []\n });\n JdbcRestService.getNewSqlTablePreview(sqlView)\n .done(successCallback).fail(failCallback);\n } else {\n JdbcRestService.getExistingSqlTablePreview($scope.currentQuery.name)\n .done(successCallback).fail(failCallback);\n }\n }\n };\n\n $scope.setDirty = function () {\n $scope.currentQuery.isPristine = false;\n };\n\n $scope.getTypeLabel = function (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 function resetYasqeYasr() {\n if ($scope.page === 2) {\n $scope.viewMode = 'editor';\n } else {\n $scope.viewMode = 'none';\n }\n }\n\n function getCellContentSQL(yasr, plugin, bindings, sparqlVar, context) {\n let value = bindings[sparqlVar].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\n function setPreviewResult(data, jqXhr, textStatus) {\n if (!data.results || !data.results.bindings || !data.results.bindings.length) {\n // Hides YASR as it may contain previous results\n toastr.info($translate.instant('jdbc.table.definition'), $translate.instant('jdbc.preview.sql'));\n } else {\n // Custom content extractor that won't insert \" in SQL values (since we treat them as fake literals)\n window.yasr.plugins.table.options.getCellContent = getCellContentSQL;\n\n // Set query type so YASR shows the results\n $scope.currentTabConfig.queryType = 'SELECT';\n window.yasr.setResponse(jqXhr, textStatus, null);\n }\n }\n\n function hasValidQuery() {\n return window.editor && window.editor.getQueryType() === 'SELECT';\n }\n\n function validateDefinition() {\n return validateQuery() && validateColumns();\n }\n\n function validateQuery() {\n if (!hasValidQuery()) {\n toastr.error($translate.instant('jdbc.warning.invalid.query'), $translate.instant('jdbc.invalid.query)'));\n return false;\n }\n\n return true;\n }\n\n function validateColumns() {\n if (!$scope.currentQuery.columns || !$scope.currentQuery.columns.length) {\n toastr.error($translate.instant('jdbc.warning.one.column.msg'), $translate.instant('jdbc.invalid.columns'));\n return false;\n }\n\n if ($scope.containsUnknownColumns()) {\n toastr.error($translate.instant('jdbc.warning.all.column.msg'), $translate.instant('jdbc.invalid.columns'));\n return false;\n }\n\n return true;\n }\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[42,102],{145:function(n,e,i){"use strict";i.r(e);i(96);angular.module("graphdb.framework.plugins",["ngRoute","graphdb.framework.plugins.controllers"])},96:function(n,e,i){"use strict";i.r(e);i(19);function t(n,e,i,t,r,o,s,l){let u;const a=function(){n.clear(),r.isLicenseValid()&&t.getActiveRepository()&&!t.isActiveRepoOntopType()&&!t.isActiveRepoFedXType()&&c()};n.clear=function(){n.searchPluginsTerm="",n.plugins=[],n.displayedPlugins=[]};const c=function(){g(),u=e((function(){g()}),5e3)},g=function(){s.getPlugins(n.getActiveRepository()).success((function(e){n.plugins=n.buildPluginsArray(e.results.bindings)})).error((function(n){i.error(getError(n))})).finally((function(){n.filterResults(),n.setLoader(!1)}))};n.buildPluginsArray=function(n){return n.map(n=>({name:n.s.value,enabled:"true"===n.o.value})).filter((function(n){return"plugincontrol"!==n.name&&"literals-index"!==n.name})).sort((function(n,e){const i=n.name.toLowerCase(),t=e.name.toLowerCase();return i<t?-1:i>t?1:0}))},n.filterResults=function(){const e=n.plugins.filter(e=>-1!==e.name.indexOf(n.searchPluginsTerm));f(e)&&n.updateDisplayedPlugins(e)};const f=function(e){if(!n.displayedPlugins||n.displayedPlugins.length!==e.length)return!0;for(const i in e)if(!n.displayedPlugins.find(n=>angular.equals(n,e[i])))return!0;return!1};function d(){u&&e.cancel(u)}n.updateDisplayedPlugins=function(e){n.displayedPlugins=e,setTimeout((function(){n.applyRowStyles()}),0)},n.setLoader=function(e,i){o.cancel(n.loaderTimeout),e?n.loaderTimeout=o((function(){n.loader=e,n.loaderMessage=i}),300):n.loader=!1},n.$on("repositoryIsSet",(function(){d(),a()})),n.$on("$destroy",(function(){d(),$(window).off("resize.plugin")})),$(window).on("resize.plugin",(function(){n.applyRowStyles()})),n.applyRowStyles=function(){const e=$("#wb-plugins-pluginInPlugins").width(),i=$("tr").width(),t=Math.floor(e/i);$(".wb-plugins-row").toArray().forEach((e,i)=>{n.isGreyBackground(t,i)?$(e).addClass("grey-row"):$(e).removeClass("grey-row")})},n.isGreyBackground=function(n,e){const i=(Math.floor(e/n)+1)%2!=1,t=e%2!=0;if(n%2!=0){if(i&&!t||!i&&!t)return!0;if(i&&t||!i&&t)return!1}else{if(i&&!t||!i&&t)return!1;if(i&&t||!i&&!t)return!0}},n.togglePlugin=function(e,t){const r=n.getActiveRepository(),o=t?l.instant("deactivating.plugin",{pluginName:e}):l.instant("activating.plugin",{pluginName:e});n.setLoader(!0,o),s.togglePlugin(r,t,e).error((function(n){i.error(getError(n))})).finally((function(){g(),n.setLoader(!1)}))},n.getLoaderMessage=function(){return n.loaderMessage||l.instant("common.loading")},n.onSearchTermChanged=function(){n.filterResults()},a()}angular.module("graphdb.framework.plugins.controllers",["graphdb.framework.rest.plugins.service"]).controller("PluginsCtrl",t),t.$inject=["$scope","$interval","toastr","$repositories","$licenseService","$timeout","PluginsRestService","$translate"]}}]);
2
- //# sourceMappingURL=42.1a48ae582180fa6374f9.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[42,102],{145:function(n,e,i){"use strict";i.r(e);i(97);angular.module("graphdb.framework.plugins",["ngRoute","graphdb.framework.plugins.controllers"])},97:function(n,e,i){"use strict";i.r(e);i(19);function t(n,e,i,t,r,o,s,l){let u;const a=function(){n.clear(),r.isLicenseValid()&&t.getActiveRepository()&&!t.isActiveRepoOntopType()&&!t.isActiveRepoFedXType()&&c()};n.clear=function(){n.searchPluginsTerm="",n.plugins=[],n.displayedPlugins=[]};const c=function(){g(),u=e((function(){g()}),5e3)},g=function(){s.getPlugins(n.getActiveRepository()).success((function(e){n.plugins=n.buildPluginsArray(e.results.bindings)})).error((function(n){i.error(getError(n))})).finally((function(){n.filterResults(),n.setLoader(!1)}))};n.buildPluginsArray=function(n){return n.map(n=>({name:n.s.value,enabled:"true"===n.o.value})).filter((function(n){return"plugincontrol"!==n.name&&"literals-index"!==n.name})).sort((function(n,e){const i=n.name.toLowerCase(),t=e.name.toLowerCase();return i<t?-1:i>t?1:0}))},n.filterResults=function(){const e=n.plugins.filter(e=>-1!==e.name.indexOf(n.searchPluginsTerm));f(e)&&n.updateDisplayedPlugins(e)};const f=function(e){if(!n.displayedPlugins||n.displayedPlugins.length!==e.length)return!0;for(const i in e)if(!n.displayedPlugins.find(n=>angular.equals(n,e[i])))return!0;return!1};function d(){u&&e.cancel(u)}n.updateDisplayedPlugins=function(e){n.displayedPlugins=e,setTimeout((function(){n.applyRowStyles()}),0)},n.setLoader=function(e,i){o.cancel(n.loaderTimeout),e?n.loaderTimeout=o((function(){n.loader=e,n.loaderMessage=i}),300):n.loader=!1},n.$on("repositoryIsSet",(function(){d(),a()})),n.$on("$destroy",(function(){d(),$(window).off("resize.plugin")})),$(window).on("resize.plugin",(function(){n.applyRowStyles()})),n.applyRowStyles=function(){const e=$("#wb-plugins-pluginInPlugins").width(),i=$("tr").width(),t=Math.floor(e/i);$(".wb-plugins-row").toArray().forEach((e,i)=>{n.isGreyBackground(t,i)?$(e).addClass("grey-row"):$(e).removeClass("grey-row")})},n.isGreyBackground=function(n,e){const i=(Math.floor(e/n)+1)%2!=1,t=e%2!=0;if(n%2!=0){if(i&&!t||!i&&!t)return!0;if(i&&t||!i&&t)return!1}else{if(i&&!t||!i&&t)return!1;if(i&&t||!i&&!t)return!0}},n.togglePlugin=function(e,t){const r=n.getActiveRepository(),o=t?l.instant("deactivating.plugin",{pluginName:e}):l.instant("activating.plugin",{pluginName:e});n.setLoader(!0,o),s.togglePlugin(r,t,e).error((function(n){i.error(getError(n))})).finally((function(){g(),n.setLoader(!1)}))},n.getLoaderMessage=function(){return n.loaderMessage||l.instant("common.loading")},n.onSearchTermChanged=function(){n.filterResults()},a()}angular.module("graphdb.framework.plugins.controllers",["graphdb.framework.rest.plugins.service"]).controller("PluginsCtrl",t),t.$inject=["$scope","$interval","toastr","$repositories","$licenseService","$timeout","PluginsRestService","$translate"]}}]);
2
+ //# sourceMappingURL=42.9561ff9cd77df0f86a91.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/plugins/app.js","webpack:///./src/js/angular/plugins/controllers.js"],"names":["angular","module","PluginsCtrl","$scope","$interval","toastr","$repositories","$licenseService","$timeout","PluginsRestService","$translate","timer","init","clear","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","getPlugins","searchPluginsTerm","plugins","displayedPlugins","initPlugins","success","data","buildPluginsArray","results","bindings","error","getError","finally","filterResults","setLoader","map","plugin","name","s","value","enabled","o","filter","sort","a","b","textA","toLowerCase","textB","matchedPlugins","indexOf","displayedPluginsChanged","updateDisplayedPlugins","length","find","element","equals","cancelTimer","cancel","setTimeout","applyRowStyles","loader","message","loaderTimeout","loaderMessage","$on","$","window","off","on","tableWidth","width","rowWidth","columnPerRow","Math","floor","toArray","forEach","index","isGreyBackground","addClass","removeClass","oddRow","evenElement","togglePlugin","pluginName","repoId","instant","getLoaderMessage","onSearchTermChanged","controller","$inject"],"mappings":"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","file":"42.1a48ae582180fa6374f9.bundle.js","sourcesContent":["import 'angular/plugins/controllers';\n\nconst modules = [\n 'ngRoute',\n 'graphdb.framework.plugins.controllers'\n];\n\nangular.module('graphdb.framework.plugins', modules);\n","import 'angular/rest/plugins.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.plugins.service'\n];\n\nangular\n .module('graphdb.framework.plugins.controllers', modules)\n .controller('PluginsCtrl', PluginsCtrl);\n\nPluginsCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$timeout', 'PluginsRestService', '$translate'];\n\nfunction PluginsCtrl($scope, $interval, toastr, $repositories, $licenseService, $timeout, PluginsRestService, $translate) {\n\n let timer;\n\n const init = function () {\n $scope.clear();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n getPlugins();\n };\n\n $scope.clear = function () {\n $scope.searchPluginsTerm = '';\n $scope.plugins = [];\n $scope.displayedPlugins = [];\n };\n\n const getPlugins = function () {\n initPlugins();\n timer = $interval(function () {\n initPlugins();\n }, 5000);\n };\n\n const initPlugins = function () {\n PluginsRestService.getPlugins($scope.getActiveRepository())\n .success(function (data) {\n $scope.plugins = $scope.buildPluginsArray(data.results.bindings);\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.filterResults();\n $scope.setLoader(false);\n });\n };\n\n $scope.buildPluginsArray = function (plugins) {\n return plugins.map((plugin) => ({\n name: plugin.s.value,\n enabled: plugin.o.value === 'true'\n })).filter(function (plugin) {\n return plugin.name !== 'plugincontrol' && plugin.name !== 'literals-index';\n }).sort(function (a, b) {\n const textA = a.name.toLowerCase();\n const textB = b.name.toLowerCase();\n return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;\n });\n };\n\n $scope.filterResults = function () {\n const matchedPlugins = $scope.plugins.filter((plugin) => plugin.name.indexOf($scope.searchPluginsTerm) !== -1);\n if (displayedPluginsChanged(matchedPlugins)) {\n $scope.updateDisplayedPlugins(matchedPlugins);\n }\n };\n\n /**\n * Checks if displayed plugins in the view are different than <code>plugins</code>.\n * @param {*} plugins - plugins to be checked.\n * @return {boolean} returns true if <code>plugins</code> are different from those which are shown in the view.\n */\n const displayedPluginsChanged = function (plugins) {\n if (!$scope.displayedPlugins || $scope.displayedPlugins.length !== plugins.length) {\n return true;\n }\n\n for (const plugin in plugins) {\n if (!$scope.displayedPlugins.find((element) => angular.equals(element, plugins[plugin]))) {\n return true;\n }\n }\n\n return false;\n };\n\n $scope.updateDisplayedPlugins = function (plugins) {\n $scope.displayedPlugins = plugins;\n setTimeout(function () {\n $scope.applyRowStyles();\n }, 0);\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n // this is used when repository is changed from the upper menu to refresh the plugins for it.\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n init();\n });\n\n $scope.$on('$destroy', function () {\n cancelTimer();\n $(window).off('resize.plugin');\n });\n\n $(window).on('resize.plugin', function () {\n $scope.applyRowStyles();\n });\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.applyRowStyles = function () {\n const tableWidth = $('#wb-plugins-pluginInPlugins').width();\n const rowWidth = $('tr').width();\n const columnPerRow = Math.floor(tableWidth / rowWidth);\n $('.wb-plugins-row').toArray().forEach((value, index) => {\n if ($scope.isGreyBackground(columnPerRow, index)) {\n $(value).addClass('grey-row');\n } else {\n $(value).removeClass('grey-row');\n }\n });\n };\n\n $scope.isGreyBackground = function (columnPerRow, index) {\n const row = Math.floor(index / columnPerRow) + 1;\n const oddRow = row % 2 !== 1;\n const evenElement = index % 2 !== 0;\n const evenColumns = columnPerRow % 2 !== 0;\n\n if (evenColumns) {\n if (oddRow && !evenElement || !oddRow && !evenElement) {\n return true;\n }\n if (oddRow && evenElement || !oddRow && evenElement) {\n return false;\n }\n } else {\n if (oddRow && !evenElement || !oddRow && evenElement) {\n return false;\n }\n if (oddRow && evenElement || !oddRow && !evenElement) {\n return true;\n }\n }\n };\n\n $scope.togglePlugin = function (pluginName, enabled) {\n const repoId = $scope.getActiveRepository();\n const message = enabled ? $translate.instant('deactivating.plugin', {pluginName: pluginName}) : $translate.instant('activating.plugin', {pluginName: pluginName});\n $scope.setLoader(true, message);\n PluginsRestService.togglePlugin(repoId, enabled, pluginName)\n .error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n initPlugins();\n $scope.setLoader(false);\n });\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.onSearchTermChanged = function () {\n $scope.filterResults();\n };\n\n init();\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/plugins/app.js","webpack:///./src/js/angular/plugins/controllers.js"],"names":["angular","module","PluginsCtrl","$scope","$interval","toastr","$repositories","$licenseService","$timeout","PluginsRestService","$translate","timer","init","clear","isLicenseValid","getActiveRepository","isActiveRepoOntopType","isActiveRepoFedXType","getPlugins","searchPluginsTerm","plugins","displayedPlugins","initPlugins","success","data","buildPluginsArray","results","bindings","error","getError","finally","filterResults","setLoader","map","plugin","name","s","value","enabled","o","filter","sort","a","b","textA","toLowerCase","textB","matchedPlugins","indexOf","displayedPluginsChanged","updateDisplayedPlugins","length","find","element","equals","cancelTimer","cancel","setTimeout","applyRowStyles","loader","message","loaderTimeout","loaderMessage","$on","$","window","off","on","tableWidth","width","rowWidth","columnPerRow","Math","floor","toArray","forEach","index","isGreyBackground","addClass","removeClass","oddRow","evenElement","togglePlugin","pluginName","repoId","instant","getLoaderMessage","onSearchTermChanged","controller","$inject"],"mappings":"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","file":"42.9561ff9cd77df0f86a91.bundle.js","sourcesContent":["import 'angular/plugins/controllers';\n\nconst modules = [\n 'ngRoute',\n 'graphdb.framework.plugins.controllers'\n];\n\nangular.module('graphdb.framework.plugins', modules);\n","import 'angular/rest/plugins.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.plugins.service'\n];\n\nangular\n .module('graphdb.framework.plugins.controllers', modules)\n .controller('PluginsCtrl', PluginsCtrl);\n\nPluginsCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', '$licenseService', '$timeout', 'PluginsRestService', '$translate'];\n\nfunction PluginsCtrl($scope, $interval, toastr, $repositories, $licenseService, $timeout, PluginsRestService, $translate) {\n\n let timer;\n\n const init = function () {\n $scope.clear();\n if (!$licenseService.isLicenseValid() ||\n !$repositories.getActiveRepository() ||\n $repositories.isActiveRepoOntopType() ||\n $repositories.isActiveRepoFedXType()) {\n return;\n }\n getPlugins();\n };\n\n $scope.clear = function () {\n $scope.searchPluginsTerm = '';\n $scope.plugins = [];\n $scope.displayedPlugins = [];\n };\n\n const getPlugins = function () {\n initPlugins();\n timer = $interval(function () {\n initPlugins();\n }, 5000);\n };\n\n const initPlugins = function () {\n PluginsRestService.getPlugins($scope.getActiveRepository())\n .success(function (data) {\n $scope.plugins = $scope.buildPluginsArray(data.results.bindings);\n }).error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n $scope.filterResults();\n $scope.setLoader(false);\n });\n };\n\n $scope.buildPluginsArray = function (plugins) {\n return plugins.map((plugin) => ({\n name: plugin.s.value,\n enabled: plugin.o.value === 'true'\n })).filter(function (plugin) {\n return plugin.name !== 'plugincontrol' && plugin.name !== 'literals-index';\n }).sort(function (a, b) {\n const textA = a.name.toLowerCase();\n const textB = b.name.toLowerCase();\n return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;\n });\n };\n\n $scope.filterResults = function () {\n const matchedPlugins = $scope.plugins.filter((plugin) => plugin.name.indexOf($scope.searchPluginsTerm) !== -1);\n if (displayedPluginsChanged(matchedPlugins)) {\n $scope.updateDisplayedPlugins(matchedPlugins);\n }\n };\n\n /**\n * Checks if displayed plugins in the view are different than <code>plugins</code>.\n * @param {*} plugins - plugins to be checked.\n * @return {boolean} returns true if <code>plugins</code> are different from those which are shown in the view.\n */\n const displayedPluginsChanged = function (plugins) {\n if (!$scope.displayedPlugins || $scope.displayedPlugins.length !== plugins.length) {\n return true;\n }\n\n for (const plugin in plugins) {\n if (!$scope.displayedPlugins.find((element) => angular.equals(element, plugins[plugin]))) {\n return true;\n }\n }\n\n return false;\n };\n\n $scope.updateDisplayedPlugins = function (plugins) {\n $scope.displayedPlugins = plugins;\n setTimeout(function () {\n $scope.applyRowStyles();\n }, 0);\n };\n\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n // this is used when repository is changed from the upper menu to refresh the plugins for it.\n $scope.$on('repositoryIsSet', function () {\n cancelTimer();\n init();\n });\n\n $scope.$on('$destroy', function () {\n cancelTimer();\n $(window).off('resize.plugin');\n });\n\n $(window).on('resize.plugin', function () {\n $scope.applyRowStyles();\n });\n\n function cancelTimer() {\n if (timer) {\n $interval.cancel(timer);\n }\n }\n\n $scope.applyRowStyles = function () {\n const tableWidth = $('#wb-plugins-pluginInPlugins').width();\n const rowWidth = $('tr').width();\n const columnPerRow = Math.floor(tableWidth / rowWidth);\n $('.wb-plugins-row').toArray().forEach((value, index) => {\n if ($scope.isGreyBackground(columnPerRow, index)) {\n $(value).addClass('grey-row');\n } else {\n $(value).removeClass('grey-row');\n }\n });\n };\n\n $scope.isGreyBackground = function (columnPerRow, index) {\n const row = Math.floor(index / columnPerRow) + 1;\n const oddRow = row % 2 !== 1;\n const evenElement = index % 2 !== 0;\n const evenColumns = columnPerRow % 2 !== 0;\n\n if (evenColumns) {\n if (oddRow && !evenElement || !oddRow && !evenElement) {\n return true;\n }\n if (oddRow && evenElement || !oddRow && evenElement) {\n return false;\n }\n } else {\n if (oddRow && !evenElement || !oddRow && evenElement) {\n return false;\n }\n if (oddRow && evenElement || !oddRow && !evenElement) {\n return true;\n }\n }\n };\n\n $scope.togglePlugin = function (pluginName, enabled) {\n const repoId = $scope.getActiveRepository();\n const message = enabled ? $translate.instant('deactivating.plugin', {pluginName: pluginName}) : $translate.instant('activating.plugin', {pluginName: pluginName});\n $scope.setLoader(true, message);\n PluginsRestService.togglePlugin(repoId, enabled, pluginName)\n .error(function (data) {\n toastr.error(getError(data));\n }).finally(function () {\n initPlugins();\n $scope.setLoader(false);\n });\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || $translate.instant('common.loading');\n };\n\n $scope.onSearchTermChanged = function () {\n $scope.filterResults();\n };\n\n init();\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[43,104],{147:function(e,t,o){"use strict";o.r(t);o(4),o(11),o(97);angular.module("graphdb.framework.jmx.queries",["toastr","ui.bootstrap","graphdb.framework.jmx.queries.controllers","graphdb.framework.core.directives"])},97:function(e,t,o){"use strict";o.r(t);o(4),o(13);const n=angular.module("graphdb.framework.jmx.queries.controllers",["ui.bootstrap","toastr","graphdb.framework.rest.monitoring.service"]);n.controller("QueriesCtrl",["$scope","$uibModal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate",function(e,t,o,n,r,i,s,u,a){e.loader=!0,e.stringLimit=500,e.expanded={},e.error="",e.paused=!1;const c=document.createElement("a");e.parseNode=function(e){if(null==e)return null;let t="local";if(e.indexOf("://localhost:")<0&&e.indexOf("://localhost/")<0){c.href=e;let o=c.hostname;(function(e){const t=e.split(".");for(let e=0,o=0;e<t.length;e++)if(parseInt(t[e],10)>=0&&parseInt(t[e],10)<=255?o++:o=0,4===o)return!0;return!1})(c.hostname)||(o=c.hostname.split(".")[0]),t=o+":"+c.port}const o=e.match(/\/repositories\/([^\/]+)#(\d+)/);return[o[2],t,o[1]]},e.togglePause=function(){e.paused=!e.paused},e.getQueries=function(){e.getQueriesRunning||e.paused||e.error||!r.getActiveRepository()||(e.getQueriesRunning=!0,u.monitorQuery(r.getActiveRepository()).success((function(t){const o=t;e.noQueries=0===o.length,e.queries={};for(let t=0;t<o.length;t++)o[t].parsedNode=e.parseNode(o[t].node),e.queries[o[t].trackId]=o[t];e.noActiveRepository=!1,e.loader=!1,e.getQueriesRunning=!1})).error((function(t){e.error=getError(t),e.loader=!1,e.getQueriesRunning=!1})))};const l=n((function(){r.isActiveRepoOntopType()||e.getQueries()}),1e3);e.$on("$destroy",(function(){n.cancel(l)})),e.deleteQueryHttp=function(t){e.loader=!0,u.deleteQuery(t,r.getActiveRepository()).success((function(){o.success(a.instant("abort.request.sent.msg")),e.loader=!1})).error((function(t){const n=getError(t);o.error(n,a.instant("common.error")),e.loader=!1}))},e.abortQuery=function(t){s.openSimpleModal({title:a.instant("confirm.abort"),message:a.instant("confirm.abort.warning.msg"),warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.downloadQuery=function(e){const t="query_"+e+".rq";let o="/rest/monitor/repository/"+r.getActiveRepository()+"/query/download?query="+encodeURIComponent(e)+"&filename="+encodeURIComponent(t);i.isAuthenticated()&&(o=o+"&authToken="+encodeURIComponent(i.getAuthToken())),window.open(o,"_blank")},e.toggleQueryExpanded=function(t){e.expanded[t]=!e.expanded[t]}}]),n.controller("DeleteQueryCtrl",["$scope","$uibModalInstance",function(e,t){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")}}])}}]);
2
- //# sourceMappingURL=43.64268be8880acd392fee.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[43,104],{147:function(e,t,o){"use strict";o.r(t);o(4),o(11),o(98);angular.module("graphdb.framework.jmx.queries",["toastr","ui.bootstrap","graphdb.framework.jmx.queries.controllers","graphdb.framework.core.directives"])},98:function(e,t,o){"use strict";o.r(t);o(4),o(13);const n=angular.module("graphdb.framework.jmx.queries.controllers",["ui.bootstrap","toastr","graphdb.framework.rest.monitoring.service"]);n.controller("QueriesCtrl",["$scope","$uibModal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate",function(e,t,o,n,r,i,s,u,a){e.loader=!0,e.stringLimit=500,e.expanded={},e.error="",e.paused=!1;const c=document.createElement("a");e.parseNode=function(e){if(null==e)return null;let t="local";if(e.indexOf("://localhost:")<0&&e.indexOf("://localhost/")<0){c.href=e;let o=c.hostname;(function(e){const t=e.split(".");for(let e=0,o=0;e<t.length;e++)if(parseInt(t[e],10)>=0&&parseInt(t[e],10)<=255?o++:o=0,4===o)return!0;return!1})(c.hostname)||(o=c.hostname.split(".")[0]),t=o+":"+c.port}const o=e.match(/\/repositories\/([^\/]+)#(\d+)/);return[o[2],t,o[1]]},e.togglePause=function(){e.paused=!e.paused},e.getQueries=function(){e.getQueriesRunning||e.paused||e.error||!r.getActiveRepository()||(e.getQueriesRunning=!0,u.monitorQuery(r.getActiveRepository()).success((function(t){const o=t;e.noQueries=0===o.length,e.queries={};for(let t=0;t<o.length;t++)o[t].parsedNode=e.parseNode(o[t].node),e.queries[o[t].trackId]=o[t];e.noActiveRepository=!1,e.loader=!1,e.getQueriesRunning=!1})).error((function(t){e.error=getError(t),e.loader=!1,e.getQueriesRunning=!1})))};const l=n((function(){r.isActiveRepoOntopType()||e.getQueries()}),1e3);e.$on("$destroy",(function(){n.cancel(l)})),e.deleteQueryHttp=function(t){e.loader=!0,u.deleteQuery(t,r.getActiveRepository()).success((function(){o.success(a.instant("abort.request.sent.msg")),e.loader=!1})).error((function(t){const n=getError(t);o.error(n,a.instant("common.error")),e.loader=!1}))},e.abortQuery=function(t){s.openSimpleModal({title:a.instant("confirm.abort"),message:a.instant("confirm.abort.warning.msg"),warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.downloadQuery=function(e){const t="query_"+e+".rq";let o="/rest/monitor/repository/"+r.getActiveRepository()+"/query/download?query="+encodeURIComponent(e)+"&filename="+encodeURIComponent(t);i.isAuthenticated()&&(o=o+"&authToken="+encodeURIComponent(i.getAuthToken())),window.open(o,"_blank")},e.toggleQueryExpanded=function(t){e.expanded[t]=!e.expanded[t]}}]),n.controller("DeleteQueryCtrl",["$scope","$uibModalInstance",function(e,t){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")}}])}}]);
2
+ //# sourceMappingURL=43.0400aae23dac518b78ec.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/queries/app.js","webpack:///./src/js/angular/queries/controllers.js"],"names":["angular","module","queriesCtrl","controller","$scope","$uibModal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate","loader","stringLimit","expanded","error","paused","parser","document","createElement","parseNode","node","shortUrl","indexOf","href","hostname","ip","blocks","split","i","sequence","length","parseInt","containsIPV4","port","match","togglePause","getQueries","getQueriesRunning","getActiveRepository","monitorQuery","success","data","newQueries","noQueries","queries","parsedNode","trackId","noActiveRepository","getError","timer","isActiveRepoOntopType","$on","cancel","deleteQueryHttp","queryId","deleteQuery","instant","msg","abortQuery","openSimpleModal","title","message","warning","result","then","downloadQuery","filename","link","encodeURIComponent","isAuthenticated","getAuthToken","window","open","toggleQueryExpanded","$uibModalInstance","ok","close","dismiss"],"mappings":"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","file":"43.64268be8880acd392fee.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/queries/controllers';\n\nconst modules = [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.jmx.queries.controllers',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.jmx.queries', modules);\n","import 'angular/core/services';\nimport 'angular/rest/monitoring.rest.service';\n\nconst queriesCtrl = angular.module('graphdb.framework.jmx.queries.controllers', [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.rest.monitoring.service'\n]);\n\nqueriesCtrl.controller('QueriesCtrl', ['$scope', '$uibModal', 'toastr', '$interval', '$repositories', '$jwtAuth', 'ModalService', 'MonitoringRestService', '$translate',\n function ($scope, $uibModal, toastr, $interval, $repositories, $jwtAuth, ModalService, MonitoringRestService, $translate) {\n\n $scope.loader = true;\n $scope.stringLimit = 500;\n $scope.expanded = {};\n $scope.error = '';\n $scope.paused = false;\n\n function containsIPV4(ip) {\n const blocks = ip.split('.');\n for (let i = 0, sequence = 0; i < blocks.length; i++) {\n if (parseInt(blocks[i], 10) >= 0 && parseInt(blocks[i], 10) <= 255) {\n sequence++;\n } else {\n sequence = 0;\n }\n if (sequence === 4) {\n return true;\n }\n }\n return false;\n }\n\n const parser = document.createElement('a');\n\n // Parses a node of the kind http://host.example.com:7200/repositories/repo#NN,\n // where NN is the track ID into an array [NN, host:7200, repo].\n $scope.parseNode = function (node) {\n if (node == null) {\n return null;\n }\n\n let shortUrl = 'local';\n if (node.indexOf('://localhost:') < 0 && node.indexOf('://localhost/') < 0) {\n parser.href = node;\n let hostname = parser.hostname;\n if (!containsIPV4(parser.hostname)) {\n hostname = parser.hostname.split('.')[0];\n }\n shortUrl = hostname + ':' + parser.port;\n }\n const match = node.match(/\\/repositories\\/([^\\/]+)#(\\d+)/); // eslint-disable-line no-useless-escape\n\n return [match[2], shortUrl, match[1]];\n };\n\n $scope.togglePause = function () {\n $scope.paused = !$scope.paused;\n }\n\n $scope.getQueries = function () {\n // Skip execution if already getting from previous call, if paused, if jolokia returned an error,\n // or if no repository is available\n if ($scope.getQueriesRunning || $scope.paused || $scope.error || !$repositories.getActiveRepository()) {\n return;\n }\n\n $scope.getQueriesRunning = true;\n MonitoringRestService.monitorQuery($repositories.getActiveRepository()).success(function (data) {\n const newQueries = data;\n $scope.noQueries = newQueries.length === 0;\n\n // Converts array to object. Angular seems to handle updates on objects better, i.e.\n // it doesn't recreate DOM elements for queries that are already displayed.\n $scope.queries = {};\n for (let i = 0; i < newQueries.length; i++) {\n newQueries[i].parsedNode = $scope.parseNode(newQueries[i].node);\n $scope.queries[newQueries[i].trackId] = newQueries[i];\n }\n\n $scope.noActiveRepository = false;\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n }).error(function (data) {\n $scope.error = getError(data);\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n });\n };\n\n const timer = $interval(function () {\n // Don't call getQueries for Ontop type repository\n if ($repositories.isActiveRepoOntopType()) {\n return;\n }\n $scope.getQueries();\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n $scope.deleteQueryHttp = function (queryId) {\n\n $scope.loader = true;\n MonitoringRestService.deleteQuery(queryId, $repositories.getActiveRepository()).success(function () {\n toastr.success($translate.instant('abort.request.sent.msg'));\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n\n $scope.loader = false;\n });\n };\n\n $scope.abortQuery = function (queryId) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.abort'),\n message: $translate.instant('confirm.abort.warning.msg'),\n warning: true\n }).result.then(function () {\n $scope.deleteQueryHttp(queryId);\n });\n };\n\n $scope.downloadQuery = function (queryId) {\n const filename = 'query_' + queryId + '.rq';\n let link = '/rest/monitor/repository/' + $repositories.getActiveRepository()\n + '/query/download?query=' + encodeURIComponent(queryId)\n + '&filename=' + encodeURIComponent(filename);\n if ($jwtAuth.isAuthenticated()) {\n link = link + '&authToken=' + encodeURIComponent($jwtAuth.getAuthToken());\n }\n\n window.open(link, '_blank');\n };\n\n $scope.toggleQueryExpanded = function (queryId) {\n $scope.expanded[queryId] = !$scope.expanded[queryId];\n };\n }]);\n\n\nqueriesCtrl.controller('DeleteQueryCtrl', ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/queries/app.js","webpack:///./src/js/angular/queries/controllers.js"],"names":["angular","module","queriesCtrl","controller","$scope","$uibModal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","$translate","loader","stringLimit","expanded","error","paused","parser","document","createElement","parseNode","node","shortUrl","indexOf","href","hostname","ip","blocks","split","i","sequence","length","parseInt","containsIPV4","port","match","togglePause","getQueries","getQueriesRunning","getActiveRepository","monitorQuery","success","data","newQueries","noQueries","queries","parsedNode","trackId","noActiveRepository","getError","timer","isActiveRepoOntopType","$on","cancel","deleteQueryHttp","queryId","deleteQuery","instant","msg","abortQuery","openSimpleModal","title","message","warning","result","then","downloadQuery","filename","link","encodeURIComponent","isAuthenticated","getAuthToken","window","open","toggleQueryExpanded","$uibModalInstance","ok","close","dismiss"],"mappings":"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","file":"43.0400aae23dac518b78ec.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/queries/controllers';\n\nconst modules = [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.jmx.queries.controllers',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.jmx.queries', modules);\n","import 'angular/core/services';\nimport 'angular/rest/monitoring.rest.service';\n\nconst queriesCtrl = angular.module('graphdb.framework.jmx.queries.controllers', [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.rest.monitoring.service'\n]);\n\nqueriesCtrl.controller('QueriesCtrl', ['$scope', '$uibModal', 'toastr', '$interval', '$repositories', '$jwtAuth', 'ModalService', 'MonitoringRestService', '$translate',\n function ($scope, $uibModal, toastr, $interval, $repositories, $jwtAuth, ModalService, MonitoringRestService, $translate) {\n\n $scope.loader = true;\n $scope.stringLimit = 500;\n $scope.expanded = {};\n $scope.error = '';\n $scope.paused = false;\n\n function containsIPV4(ip) {\n const blocks = ip.split('.');\n for (let i = 0, sequence = 0; i < blocks.length; i++) {\n if (parseInt(blocks[i], 10) >= 0 && parseInt(blocks[i], 10) <= 255) {\n sequence++;\n } else {\n sequence = 0;\n }\n if (sequence === 4) {\n return true;\n }\n }\n return false;\n }\n\n const parser = document.createElement('a');\n\n // Parses a node of the kind http://host.example.com:7200/repositories/repo#NN,\n // where NN is the track ID into an array [NN, host:7200, repo].\n $scope.parseNode = function (node) {\n if (node == null) {\n return null;\n }\n\n let shortUrl = 'local';\n if (node.indexOf('://localhost:') < 0 && node.indexOf('://localhost/') < 0) {\n parser.href = node;\n let hostname = parser.hostname;\n if (!containsIPV4(parser.hostname)) {\n hostname = parser.hostname.split('.')[0];\n }\n shortUrl = hostname + ':' + parser.port;\n }\n const match = node.match(/\\/repositories\\/([^\\/]+)#(\\d+)/); // eslint-disable-line no-useless-escape\n\n return [match[2], shortUrl, match[1]];\n };\n\n $scope.togglePause = function () {\n $scope.paused = !$scope.paused;\n }\n\n $scope.getQueries = function () {\n // Skip execution if already getting from previous call, if paused, if jolokia returned an error,\n // or if no repository is available\n if ($scope.getQueriesRunning || $scope.paused || $scope.error || !$repositories.getActiveRepository()) {\n return;\n }\n\n $scope.getQueriesRunning = true;\n MonitoringRestService.monitorQuery($repositories.getActiveRepository()).success(function (data) {\n const newQueries = data;\n $scope.noQueries = newQueries.length === 0;\n\n // Converts array to object. Angular seems to handle updates on objects better, i.e.\n // it doesn't recreate DOM elements for queries that are already displayed.\n $scope.queries = {};\n for (let i = 0; i < newQueries.length; i++) {\n newQueries[i].parsedNode = $scope.parseNode(newQueries[i].node);\n $scope.queries[newQueries[i].trackId] = newQueries[i];\n }\n\n $scope.noActiveRepository = false;\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n }).error(function (data) {\n $scope.error = getError(data);\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n });\n };\n\n const timer = $interval(function () {\n // Don't call getQueries for Ontop type repository\n if ($repositories.isActiveRepoOntopType()) {\n return;\n }\n $scope.getQueries();\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n $scope.deleteQueryHttp = function (queryId) {\n\n $scope.loader = true;\n MonitoringRestService.deleteQuery(queryId, $repositories.getActiveRepository()).success(function () {\n toastr.success($translate.instant('abort.request.sent.msg'));\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n\n $scope.loader = false;\n });\n };\n\n $scope.abortQuery = function (queryId) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.abort'),\n message: $translate.instant('confirm.abort.warning.msg'),\n warning: true\n }).result.then(function () {\n $scope.deleteQueryHttp(queryId);\n });\n };\n\n $scope.downloadQuery = function (queryId) {\n const filename = 'query_' + queryId + '.rq';\n let link = '/rest/monitor/repository/' + $repositories.getActiveRepository()\n + '/query/download?query=' + encodeURIComponent(queryId)\n + '&filename=' + encodeURIComponent(filename);\n if ($jwtAuth.isAuthenticated()) {\n link = link + '&authToken=' + encodeURIComponent($jwtAuth.getAuthToken());\n }\n\n window.open(link, '_blank');\n };\n\n $scope.toggleQueryExpanded = function (queryId) {\n $scope.expanded[queryId] = !$scope.expanded[queryId];\n };\n }]);\n\n\nqueriesCtrl.controller('DeleteQueryCtrl', ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[53,124],{101:function(e,t,n){"use strict";n.r(t);n(4),n(11),n(8),n(65),n(21),n(12),n(35),n(36);function s(e){e.interceptors.push("$unauthorizedInterceptor")}function i(e,t,n){e.$on("$locationChangeStart",(function(){n.isLicenseHardcoded&&"/license/register"===t.url()&&t.path("license")}))}angular.module("graphdb.framework.settings",["toastr","ui.bootstrap","graphdb.framework.rest.license.service","graphdb.framework.settings.controllers","graphdb.framework.core.interceptors.unauthorized","graphdb.framework.core.services.jwtauth"]).config(s).run(i),s.$inject=["$httpProvider","$routeProvider"],i.$inject=["$rootScope","$location","$licenseService"]},65:function(e,t,n){"use strict";n.r(t);n(4),n(12);function s(e,t,n,s,i){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,i.instant("error.getting.settings"))}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success(i.instant("saving.settings.success"))}),(function(e){const n=getError(e.data);t.error(n,i.instant("saving.settings.error"))}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s,i,r,o){e.loadingLicense=function(){return n.loadingLicense},n.checkLicenseStatus(),e.revertToFree=function(){r.openSimpleModal({title:o.instant("confirm.operation"),message:o.instant("revert.to.free.warning.msg"),warning:!0}).result.then((function(){t.unregisterLicense().success((function(){n.checkLicenseStatus()}))}))}}function r(e,t,n,s,i,r,o,c){e.$on("securityInit",(function(){o.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=l;const a=$(".license-textarea");function l(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(a.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",size:"lg",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=a.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){r.history.back()})).error((function(){i.error(c.instant("license.register.error"))}))}else i.error(c.instant("no.license.code.error"))}(n)}))}(n,e)):(a.val(""),i.error(n.message))})).error((function(){i.error(c.instant("invalid.license"))}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){l(e)})).error((function(){i.error(c.instant("could.not.upload.file.error"))}))}})),e.getBackToPreviousPage=function(){r.history.back()}}function o(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function c(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",o).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",r).controller("LoaderSamplesCtrl",c),s.$inject=["$scope","toastr","$uibModalInstance","LicenseRestService","$translate"],i.$inject=["$scope","LicenseRestService","$licenseService","toastr","$rootScope","ModalService","$translate"],r.$inject=["$scope","LicenseRestService","$location","$uibModal","toastr","$window","$jwtAuth","$translate"],o.$inject=["$scope","$uibModalInstance","license"],c.$inject=["$scope"]}}]);
2
- //# sourceMappingURL=53.58a23efc22865c67d57d.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[53,124],{102:function(e,t,n){"use strict";n.r(t);n(4),n(11),n(8),n(65),n(21),n(12),n(35),n(36);function s(e){e.interceptors.push("$unauthorizedInterceptor")}function i(e,t,n){e.$on("$locationChangeStart",(function(){n.isLicenseHardcoded&&"/license/register"===t.url()&&t.path("license")}))}angular.module("graphdb.framework.settings",["toastr","ui.bootstrap","graphdb.framework.rest.license.service","graphdb.framework.settings.controllers","graphdb.framework.core.interceptors.unauthorized","graphdb.framework.core.services.jwtauth"]).config(s).run(i),s.$inject=["$httpProvider","$routeProvider"],i.$inject=["$rootScope","$location","$licenseService"]},65:function(e,t,n){"use strict";n.r(t);n(4),n(12);function s(e,t,n,s,i){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,s.getStatistics().then((function(t){e.settings.statistics="true"===t.data,e.supportsStatistics=!0}),(function(n){if(404===n.status)e.supportsStatistics=!1;else{const e=getError(n.data);t.error(e,i.instant("error.getting.settings"))}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,s.toggleStatistics(e.settings.statistics).then((function(){n.close(),t.success(i.instant("saving.settings.success"))}),(function(e){const n=getError(e.data);t.error(n,i.instant("saving.settings.error"))}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){n.dismiss("cancel")}}function i(e,t,n,s,i,r,o){e.loadingLicense=function(){return n.loadingLicense},n.checkLicenseStatus(),e.revertToFree=function(){r.openSimpleModal({title:o.instant("confirm.operation"),message:o.instant("revert.to.free.warning.msg"),warning:!0}).result.then((function(){t.unregisterLicense().success((function(){n.checkLicenseStatus()}))}))}}function r(e,t,n,s,i,r,o,c){e.$on("securityInit",(function(){o.isAdmin()||n.path("/license")})),e.sendLicenseToValidateAndActivate=l;const a=$(".license-textarea");function l(e){t.sendLicenseToValidate(e).success((function(n){"Invalid"!==n.licensee?(a.val(e),function(e,n){s.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",size:"lg",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=a.val());if(e){const n=atob(e.replace(/\s/g,""));t.registerLicense(n).success((function(){r.history.back()})).error((function(){i.error(c.instant("license.register.error"))}))}else i.error(c.instant("no.license.code.error"))}(n)}))}(n,e)):(a.val(""),i.error(n.message))})).error((function(){i.error(c.instant("invalid.license"))}))}e.$watch("currentFile",(function(){if(e.currentFile){const n=e.currentFile;t.extractFromLicenseFile(n).success((function(e){l(e)})).error((function(){i.error(c.instant("could.not.upload.file.error"))}))}})),e.getBackToPreviousPage=function(){r.history.back()}}function o(e,t,n){e.ok=function(){t.close()},e.cancel=function(){t.dismiss("cancel")},e.license=n}function c(e){e.loader=!0,e.setLoader=function(t){e.loader=t}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",s).controller("ValidateLicenseModalCtrl",o).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",r).controller("LoaderSamplesCtrl",c),s.$inject=["$scope","toastr","$uibModalInstance","LicenseRestService","$translate"],i.$inject=["$scope","LicenseRestService","$licenseService","toastr","$rootScope","ModalService","$translate"],r.$inject=["$scope","LicenseRestService","$location","$uibModal","toastr","$window","$jwtAuth","$translate"],o.$inject=["$scope","$uibModalInstance","license"],c.$inject=["$scope"]}}]);
2
+ //# sourceMappingURL=53.54b20545d5504efa8958.bundle.js.map