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
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[26,38,69,114],{119:function(n,e,t){"use strict";t.r(e);t(4),t(11),t(16),t(45),t(73);angular.module("graphdb.framework.externalsync",["graphdb.framework.core.controllers","graphdb.framework.externalsync.controllers","graphdb.framework.externalsync.directives","graphdb.framework.core.directives"]).filter("singular",(function(){return function(n){return angular.isUndefined(n)?n:n.replace(/ies$/,"y").replace(/s$/,"")}}))},42:function(n,e){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",t),t.$inject=["$http"];function t(n){return{getConnectors:function(){return n.get("rest/connectors")},initConnector:function(e){return n.get("rest/connectors/options?prefix="+e)},hasConnector:function(e){return n.get("rest/connectors/existing?prefix="+e)},checkConnector:function(e){return n.post("rest/connectors/check",e,{headers:{"Content-Type":"text/plain"}})}}}},45:function(n,e,t){"use strict";t.r(e);t(15),t(42);function o(n){const e=[];return Object.keys(n).forEach((function(t){e.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]))})),e.join("&")}function r(n,e){return _.reduce(n,(function(n,t){if(""===t.key&&""===t.value);else{if(""===t.key)throw new Error(e.instant("externalsync.empty.value.key.error",{value:t.value}));if(n.hasOwnProperty(t.key))throw new Error(e.instant("externalsync.duplicate.key.error",{key:t.key}));n[t.key]=t.value}return n}),{})}function i(n,e){for(let o=0;o<e.length;o++){const r=e[o];if("StringArray"===r.__type)n[r.__name]||(n[r.__name]=[""]);else if("OptionArray"===r.__type)if(n[r.__name])for(let e=0;e<r.__childOptions.length;e++){const t=r.__childOptions[e];if("Boolean"===t.__type)for(let e=0;e<n[r.__name].length;e++){const o=n[r.__name][e];!o.hasOwnProperty([t.__name])&&angular.isDefined(t.__defaultValue)&&(o[t.__name]=t.__defaultValue)}}else{n[r.__name]=[];const e={};for(let n=0;n<r.__childOptions.length;n++){const t=r.__childOptions[n];"StringArray"===t.__type?e[t.__name]=[""]:e[t.__name]=angular.isUndefined(t.__defaultValue)?"":t.__defaultValue}n[r.__name].push(e)}else"Map"===r.__type?n[r.__name]?n[r.__name]=(t=n[r.__name],_.map(t,(function(n,e){return{key:e,value:n}}))):n[r.__name]=[]:"JsonString"===r.__type?!n[r.__name]||n[r.__name]instanceof String||"string"==typeof n[r.__name]||(n[r.__name]=angular.toJson(n[r.__name],2)):angular.isUndefined(n[r.__name])&&(n[r.__name]=angular.isUndefined(r.__defaultValue)?"":r.__defaultValue)}var t;return n}function a(n,e,t){return n.post("repositories/"+e,o({query:t}),{headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/sparql-results+json","X-GraphDB-Local-Consistency":"updating"}})}function c(n){return n.substring(0,n.length-1)+"/instance#"}function s(n,e,t,o,i){const a=function n(e,t){const o={};return _.each(t,(function(t){angular.isDefined(e[t.__name])&&("OptionArray"===t.__type?(o[t.__name]=[],_.each(e[t.__name],(function(e){o[t.__name].push(n(e,t.__childOptions))}))):o[t.__name]=angular.copy(e[t.__name]))})),o}(t,o);for(let n=0;n<o.length;n++)try{"Map"===o[n].__type?a[o[n].__name]=r(a[o[n].__name],$translate):"JsonString"===o[n].__type&&(a[o[n].__name]=angular.fromJson(a[o[n].__name]))}catch(e){return i(o[n].__label,e.message),null}!function n(e){Array.isArray(e)&&(e=_.filter(e,(function(n){return null!==n&&(!n.trim||""!==n.trim())})));return Object.keys(e).forEach((function(t){""!==e[t]&&null!=e[t]||!1===e[t]?"object"==typeof e[t]&&(e[t]=n(e[t])):delete e[t]})),e}(a);let s="";s+="PREFIX :<"+e+">\n";return s+="PREFIX inst:<"+c(e)+">\n",s+="INSERT DATA {\n",s+="\tinst:"+n+" :createConnector '''\n",s+=angular.toJson(a,2),s+="\n''' .\n}\n",s=s.replace(/\\/g,"\\\\\\"),s}function l(n,e,t,r,l,u,f,p,g,d){function m(e){n.beingBuiltConnector={percentDone:0,status:{processedEntities:0,estimatedEntities:0,indexedEntities:0,entitiesPerSecond:0},actionName:e?d.instant("externalsync.repairing"):d.instant("externalsync.creating"),waitOnRepairStartOnce:!!e,eta:"-",inline:!1,iri:null}}function y(e,t,o){return m(o),$.extend(n.beingBuiltConnector,{iri:c(e)+t,name:t,inline:!1,doneCallback:function(){n.beingBuiltConnector.modalInstance.dismiss("cancel")}}),n.beingBuiltConnector.modalInstance=r.open({templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",size:"lg",backdrop:"static",scope:n}),n.beingBuiltConnector.modalInstance}function C(e,r,i){const a=y(e.value,r.name,!1);p.addStatements(t.getActiveRepository(),o({update:r.query})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))})),l.success(d.instant("created.connector",{name:r.name}))}),(function(n){l.error(getError(n)),i()})).finally((function(){a.dismiss("cancel")}))}n.loader=!1,n.controllers=[],n.existing={},n.definitions={},n.getLoaderMessage=function(){const e=(Date.now()-n.loaderStartTime)/1e3,t=n.getHumanReadableSeconds(e);let o="";return o=n.progressMessage?n.progressMessage+"... "+t:d.instant("common.running.operation",{timeHuman:t}),n.extraMessage&&e>10&&(o+="\n"+n.extraMessage),o},n.setLoader=function(e,t,o){e?(n.loader=!0,n.loaderStartTime=Date.now(),n.progressMessage=t,n.extraMessage=o):(n.loader=!1,n.progressMessage="",n.extraMessage="")},n.initConnector=function(e){return g.initConnector(encodeURIComponent(e.value)).then((function(t){return n.definitions[e.key]=t.data,g.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))}))},n.getConnectors=function(){n.isLicenseValid()&&n.canWriteActiveRepo()&&(n.setLoader(!0,d.instant("externalsync.fetching.connectors"),d.instant("common.extra.message")),g.getConnectors().then((function(o){n.connectors=Object.keys(o.data).map((function(n){return{key:n,value:o.data[n]}})),f.all(_.map(n.connectors,(function(e){return n.initConnector(e)}))).finally((function(){m();const o=function(n){const e=_.map(n,(function(n){return"<"+n.value+"connectorStatus>"})).join("|");return e?"SELECT ?connector ?status { ?connector "+e+" ?status }":null}(n.connectors);o?function(n){return a(e,t.getActiveRepository(),n)}(o).then((function(e){const t=function(n){if(n.bindings)for(let e=0;e<n.bindings.length;e++)try{const t=JSON.parse(n.bindings[e].status.value);if("BUILDING"===t.status)return{connector:n.bindings[e].connector.value,status:t}}catch(n){console.error(n)}return{}}(e.data.results);if(t.connector){const e=t.connector.split(/#/);e[0]=e[0].replace(/\/instance$/,"#"),o=e[0],r=e[1],m(),$.extend(n.beingBuiltConnector,{iri:c(o)+r,name:r,inline:!0,doneCallback:function(){n.beingBuiltConnector.inline=!1}})}var o,r})).finally((function(){n.setLoader(!1)})):n.setLoader(!1)}))})).catch((function(e){n.setLoader(!1),l.error(getError(e),d.instant("externalsync.could.not.get.connectors.error"))})),n.existing={})},n.getOptions=function(e){return n.definitions[e.key]},n.isEmpty=function(n){return angular.isObject(n)&&0===Object.keys(n).length},n.toPrettyJson=function(n){return angular.toJson(n,2)},n.$watch((function(){return t.getActiveRepository()}),n.getConnectors),n.$watch((function(){return t.getActiveLocation()}),n.getConnectors),n.copyConnector=function(e,t){let o;angular.isUndefined(t)||(o=angular.copy(t),o.name=o.name+"-copy");r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(o)?{name:"",values:{}}:o},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.newConnector=function(e,t){r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(t)?{name:"",values:{}}:t},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.repair=function(e,r){u.openSimpleModal({title:d.instant("externalsync.confirm.repair"),message:d.instant("externalsync.repair.warning.msg"),warning:!0}).result.then((function(){const i=y(r.value,e.name,!0),a=(s=e.name,"PREFIX prefix:<"+(u=r.value)+">\nINSERT DATA {\n\t<"+c(u)+s+'> prefix:repairConnector ""\n}');var s,u;p.addStatements(t.getActiveRepository(),o({update:a})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(r.value)).then((function(e){n.existing[r.key]=e.data}))})),l.success(d.instant("externalsync.repair.success.msg",{name:e.name}))}),(function(n){l.error(getError(n))})).finally((function(){i.dismiss("cancel")}))}))},n.delete=function(e,i){const a=i.key.indexOf("Elastic")>=0||i.key.indexOf("Solr")>=0;r.open({templateUrl:"js/angular/externalsync/templates/deleteConnector.html",controller:"DeleteConnectorCtrl",resolve:{popoverMsg:function(){return a?d.instant("delete.connector.conditional",{type:i.key}):""}}}).result.then((function(r){n.setLoader(!0,d.instant("externalsync.delete.progress.msg",{name:e.name}),d.instant("externalsync.extra.message.warning"));const c=function(n,e,t){const o=e.substring(0,e.length-1)+"/instance#";return"PREFIX prefix:<"+e+">\nINSERT DATA {\n\t<"+o+n+'> prefix:dropConnector "'+(t?"force":"")+'"\n}'}(e.name,i.value,r);p.addStatements(t.getActiveRepository(),o({update:c})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(i.value)).then((function(e){n.existing[i.key]=e.data}))})),r?(l.success(d.instant("externalsync.delete.force.success.msg",{name:e.name})),a&&l.warning(d.instant("externalsync.delete.remote.warning",{key:i.key}))):l.success(d.instant("externalsync.delete.success.msg",{name:e.name}))}),(function(n){l.error(getError(n))})).finally((function(){n.setLoader(!1)}))}))},n.viewQuery=function(e,t){r.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){const o=n.getOptions(e);return s(t.name,e.value,i(t.values,o),o)}}})}}function u(n,e,t){n.force=!1,n.popoverMsg=t,n.ok=function(){e.close(n.force)},n.cancel=function(){e.dismiss()}}function f(n,e,t,o,r){function i(){return s(n.name,t.value,n.values,n.options,(function(n,e){r.error(e,n)}))}n.connector=t,n.addField=function(e,t){const o=angular.copy(n.defaultValues[t][0]);n.values[t].splice(e+1,0,o)},n.addOption=function(n,e){e.splice(n+1,0,"")},n.deleteOption=function(n,e){e.splice(n,1)},n.addMapOption=function(n,e){e.splice(n+1,0,{key:"",value:""})},n.deleteMapOption=function(n,e){e.splice(n,1)},n.ok=function(){if(n.form.$valid){const t=i();t&&e.close({name:n.name,values:n.values,options:n.options,query:t})}},n.viewQuery=function(){const n=i();n&&o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return n}}})},n.cancel=function(){e.dismiss("cancel")}}function p(n,e,t,o,r,a,c,s){angular.extend(this,e("ExtendNewConnectorCtrl",{$scope:n,$uibModalInstance:o,connector:r,$uibModal:a})),n.values=c.values,n.options=s,n.name=c.name,c.skipConversion||(n.values=i(n.values,n.options)),n.defaultValues=angular.copy(n.values)}function g(n,e,t,o,r){function i(){const i=function(n){const e=n.replace(/\/instance#.+$/,"#connectorStatus");let t="";return t+="SELECT ?status {\n",t+="\t<"+n+"> <"+e+"> ?status",t+="\n}",t}(n.beingBuiltConnector.iri);n.beingBuiltConnector.iri=null,n.progressInterval=e((function(){(function(n){return a(t,o.getActiveRepository(),n)})(i).then((function(t){const o=function(n){if(n.bindings&&n.bindings.length>0)try{return JSON.parse(n.bindings[0].status.value)}catch(n){console.error(n)}return{}}(t.data.results);"BUILDING"===o.status?(n.beingBuiltConnector.status=o,n.beingBuiltConnector.percentDone=(100*o.processedEntities/o.estimatedEntities).toFixed(0),n.beingBuiltConnector.eta=n.getHumanReadableSeconds(o.etaSeconds),n.beingBuiltConnector.actionName=o.repair?r.instant("externalsync.repairing"):r.instant("externalsync.creating"),n.beingBuiltConnector.waitOnRepairStartOnce=!1):"BUILT"!==o.status||n.beingBuiltConnector.waitOnRepairStartOnce||(e.cancel(n.progressInterval),n.beingBuiltConnector.doneCallback&&n.beingBuiltConnector.doneCallback())}))}),1e3),n.$on("$destroy",(function(){e.cancel(n.progressInterval)}))}n.beingBuiltConnector=n.beingBuiltConnector||{},!n.beingBuiltConnector.inline&&n.beingBuiltConnector.iri&&i(),n.$watch("beingBuiltConnector.iri",(function(e){n.beingBuiltConnector.inline&&e&&i()}))}angular.module("graphdb.framework.externalsync.controllers",["graphdb.framework.rest.rdf4j.repositories.service","graphdb.framework.rest.connectors.service"]).controller("ConnectorsCtrl",l).controller("ExtendNewConnectorCtrl",f).controller("CreateConnectorCtrl",p).controller("CreateProgressCtrl",g).controller("DeleteConnectorCtrl",u).filter("ceil",(function(){return function(n){return Math.ceil(n)}})),l.$inject=["$scope","$http","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","ConnectorsRestService","$translate"],u.$inject=["$scope","$uibModalInstance","popoverMsg"],f.$inject=["$scope","$uibModalInstance","connector","$uibModal","toastr"],p.$inject=["$scope","$controller","$http","$uibModalInstance","connector","$uibModal","values","options"],g.$inject=["$scope","$interval","$http","$repositories","$translate"]},73:function(n,e,t){"use strict";t.r(e);t(4);angular.module("graphdb.framework.externalsync.directives",[]).directive("createProgress",(function(){return{templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",restrict:"EA"}}))}}]);
2
- //# sourceMappingURL=26.3a642e64c7803f3b32f1.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[26,38,69,114],{119:function(n,e,t){"use strict";t.r(e);t(4),t(11),t(16),t(45),t(74);angular.module("graphdb.framework.externalsync",["graphdb.framework.core.controllers","graphdb.framework.externalsync.controllers","graphdb.framework.externalsync.directives","graphdb.framework.core.directives"]).filter("singular",(function(){return function(n){return angular.isUndefined(n)?n:n.replace(/ies$/,"y").replace(/s$/,"")}}))},42:function(n,e){angular.module("graphdb.framework.rest.connectors.service",[]).factory("ConnectorsRestService",t),t.$inject=["$http"];function t(n){return{getConnectors:function(){return n.get("rest/connectors")},initConnector:function(e){return n.get("rest/connectors/options?prefix="+e)},hasConnector:function(e){return n.get("rest/connectors/existing?prefix="+e)},checkConnector:function(e){return n.post("rest/connectors/check",e,{headers:{"Content-Type":"text/plain"}})}}}},45:function(n,e,t){"use strict";t.r(e);t(15),t(42);function o(n){const e=[];return Object.keys(n).forEach((function(t){e.push(encodeURIComponent(t)+"="+encodeURIComponent(n[t]))})),e.join("&")}function r(n,e){return _.reduce(n,(function(n,t){if(""===t.key&&""===t.value);else{if(""===t.key)throw new Error(e.instant("externalsync.empty.value.key.error",{value:t.value}));if(n.hasOwnProperty(t.key))throw new Error(e.instant("externalsync.duplicate.key.error",{key:t.key}));n[t.key]=t.value}return n}),{})}function i(n,e){for(let o=0;o<e.length;o++){const r=e[o];if("StringArray"===r.__type)n[r.__name]||(n[r.__name]=[""]);else if("OptionArray"===r.__type)if(n[r.__name])for(let e=0;e<r.__childOptions.length;e++){const t=r.__childOptions[e];if("Boolean"===t.__type)for(let e=0;e<n[r.__name].length;e++){const o=n[r.__name][e];!o.hasOwnProperty([t.__name])&&angular.isDefined(t.__defaultValue)&&(o[t.__name]=t.__defaultValue)}}else{n[r.__name]=[];const e={};for(let n=0;n<r.__childOptions.length;n++){const t=r.__childOptions[n];"StringArray"===t.__type?e[t.__name]=[""]:e[t.__name]=angular.isUndefined(t.__defaultValue)?"":t.__defaultValue}n[r.__name].push(e)}else"Map"===r.__type?n[r.__name]?n[r.__name]=(t=n[r.__name],_.map(t,(function(n,e){return{key:e,value:n}}))):n[r.__name]=[]:"JsonString"===r.__type?!n[r.__name]||n[r.__name]instanceof String||"string"==typeof n[r.__name]||(n[r.__name]=angular.toJson(n[r.__name],2)):angular.isUndefined(n[r.__name])&&(n[r.__name]=angular.isUndefined(r.__defaultValue)?"":r.__defaultValue)}var t;return n}function a(n,e,t){return n.post("repositories/"+e,o({query:t}),{headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/sparql-results+json","X-GraphDB-Local-Consistency":"updating"}})}function c(n){return n.substring(0,n.length-1)+"/instance#"}function s(n,e,t,o,i){const a=function n(e,t){const o={};return _.each(t,(function(t){angular.isDefined(e[t.__name])&&("OptionArray"===t.__type?(o[t.__name]=[],_.each(e[t.__name],(function(e){o[t.__name].push(n(e,t.__childOptions))}))):o[t.__name]=angular.copy(e[t.__name]))})),o}(t,o);for(let n=0;n<o.length;n++)try{"Map"===o[n].__type?a[o[n].__name]=r(a[o[n].__name],$translate):"JsonString"===o[n].__type&&(a[o[n].__name]=angular.fromJson(a[o[n].__name]))}catch(e){return i(o[n].__label,e.message),null}!function n(e){Array.isArray(e)&&(e=_.filter(e,(function(n){return null!==n&&(!n.trim||""!==n.trim())})));return Object.keys(e).forEach((function(t){""!==e[t]&&null!=e[t]||!1===e[t]?"object"==typeof e[t]&&(e[t]=n(e[t])):delete e[t]})),e}(a);let s="";s+="PREFIX :<"+e+">\n";return s+="PREFIX inst:<"+c(e)+">\n",s+="INSERT DATA {\n",s+="\tinst:"+n+" :createConnector '''\n",s+=angular.toJson(a,2),s+="\n''' .\n}\n",s=s.replace(/\\/g,"\\\\\\"),s}function l(n,e,t,r,l,u,f,p,g,d){function m(e){n.beingBuiltConnector={percentDone:0,status:{processedEntities:0,estimatedEntities:0,indexedEntities:0,entitiesPerSecond:0},actionName:e?d.instant("externalsync.repairing"):d.instant("externalsync.creating"),waitOnRepairStartOnce:!!e,eta:"-",inline:!1,iri:null}}function y(e,t,o){return m(o),$.extend(n.beingBuiltConnector,{iri:c(e)+t,name:t,inline:!1,doneCallback:function(){n.beingBuiltConnector.modalInstance.dismiss("cancel")}}),n.beingBuiltConnector.modalInstance=r.open({templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",size:"lg",backdrop:"static",scope:n}),n.beingBuiltConnector.modalInstance}function C(e,r,i){const a=y(e.value,r.name,!1);p.addStatements(t.getActiveRepository(),o({update:r.query})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))})),l.success(d.instant("created.connector",{name:r.name}))}),(function(n){l.error(getError(n)),i()})).finally((function(){a.dismiss("cancel")}))}n.loader=!1,n.controllers=[],n.existing={},n.definitions={},n.getLoaderMessage=function(){const e=(Date.now()-n.loaderStartTime)/1e3,t=n.getHumanReadableSeconds(e);let o="";return o=n.progressMessage?n.progressMessage+"... "+t:d.instant("common.running.operation",{timeHuman:t}),n.extraMessage&&e>10&&(o+="\n"+n.extraMessage),o},n.setLoader=function(e,t,o){e?(n.loader=!0,n.loaderStartTime=Date.now(),n.progressMessage=t,n.extraMessage=o):(n.loader=!1,n.progressMessage="",n.extraMessage="")},n.initConnector=function(e){return g.initConnector(encodeURIComponent(e.value)).then((function(t){return n.definitions[e.key]=t.data,g.hasConnector(encodeURIComponent(e.value)).then((function(t){n.existing[e.key]=t.data}))}))},n.getConnectors=function(){n.isLicenseValid()&&n.canWriteActiveRepo()&&(n.setLoader(!0,d.instant("externalsync.fetching.connectors"),d.instant("common.extra.message")),g.getConnectors().then((function(o){n.connectors=Object.keys(o.data).map((function(n){return{key:n,value:o.data[n]}})),f.all(_.map(n.connectors,(function(e){return n.initConnector(e)}))).finally((function(){m();const o=function(n){const e=_.map(n,(function(n){return"<"+n.value+"connectorStatus>"})).join("|");return e?"SELECT ?connector ?status { ?connector "+e+" ?status }":null}(n.connectors);o?function(n){return a(e,t.getActiveRepository(),n)}(o).then((function(e){const t=function(n){if(n.bindings)for(let e=0;e<n.bindings.length;e++)try{const t=JSON.parse(n.bindings[e].status.value);if("BUILDING"===t.status)return{connector:n.bindings[e].connector.value,status:t}}catch(n){console.error(n)}return{}}(e.data.results);if(t.connector){const e=t.connector.split(/#/);e[0]=e[0].replace(/\/instance$/,"#"),o=e[0],r=e[1],m(),$.extend(n.beingBuiltConnector,{iri:c(o)+r,name:r,inline:!0,doneCallback:function(){n.beingBuiltConnector.inline=!1}})}var o,r})).finally((function(){n.setLoader(!1)})):n.setLoader(!1)}))})).catch((function(e){n.setLoader(!1),l.error(getError(e),d.instant("externalsync.could.not.get.connectors.error"))})),n.existing={})},n.getOptions=function(e){return n.definitions[e.key]},n.isEmpty=function(n){return angular.isObject(n)&&0===Object.keys(n).length},n.toPrettyJson=function(n){return angular.toJson(n,2)},n.$watch((function(){return t.getActiveRepository()}),n.getConnectors),n.$watch((function(){return t.getActiveLocation()}),n.getConnectors),n.copyConnector=function(e,t){let o;angular.isUndefined(t)||(o=angular.copy(t),o.name=o.name+"-copy");r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(o)?{name:"",values:{}}:o},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.newConnector=function(e,t){r.open({templateUrl:"pages/createConnector.html",controller:"CreateConnectorCtrl",size:"lg",backdrop:"static",resolve:{connector:function(){return e},values:function(){return angular.isUndefined(t)?{name:"",values:{}}:t},options:function(){return n.getOptions(e)}}}).result.then((function(t){C(e,t,(function(){t.skipConversion=!0,n.newConnector(e,t)}))}))},n.repair=function(e,r){u.openSimpleModal({title:d.instant("externalsync.confirm.repair"),message:d.instant("externalsync.repair.warning.msg"),warning:!0}).result.then((function(){const i=y(r.value,e.name,!0),a=(s=e.name,"PREFIX prefix:<"+(u=r.value)+">\nINSERT DATA {\n\t<"+c(u)+s+'> prefix:repairConnector ""\n}');var s,u;p.addStatements(t.getActiveRepository(),o({update:a})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(r.value)).then((function(e){n.existing[r.key]=e.data}))})),l.success(d.instant("externalsync.repair.success.msg",{name:e.name}))}),(function(n){l.error(getError(n))})).finally((function(){i.dismiss("cancel")}))}))},n.delete=function(e,i){const a=i.key.indexOf("Elastic")>=0||i.key.indexOf("Solr")>=0;r.open({templateUrl:"js/angular/externalsync/templates/deleteConnector.html",controller:"DeleteConnectorCtrl",resolve:{popoverMsg:function(){return a?d.instant("delete.connector.conditional",{type:i.key}):""}}}).result.then((function(r){n.setLoader(!0,d.instant("externalsync.delete.progress.msg",{name:e.name}),d.instant("externalsync.extra.message.warning"));const c=function(n,e,t){const o=e.substring(0,e.length-1)+"/instance#";return"PREFIX prefix:<"+e+">\nINSERT DATA {\n\t<"+o+n+'> prefix:dropConnector "'+(t?"force":"")+'"\n}'}(e.name,i.value,r);p.addStatements(t.getActiveRepository(),o({update:c})).then((function(){g.getConnectors().then((function(){g.hasConnector(encodeURIComponent(i.value)).then((function(e){n.existing[i.key]=e.data}))})),r?(l.success(d.instant("externalsync.delete.force.success.msg",{name:e.name})),a&&l.warning(d.instant("externalsync.delete.remote.warning",{key:i.key}))):l.success(d.instant("externalsync.delete.success.msg",{name:e.name}))}),(function(n){l.error(getError(n))})).finally((function(){n.setLoader(!1)}))}))},n.viewQuery=function(e,t){r.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){const o=n.getOptions(e);return s(t.name,e.value,i(t.values,o),o)}}})}}function u(n,e,t){n.force=!1,n.popoverMsg=t,n.ok=function(){e.close(n.force)},n.cancel=function(){e.dismiss()}}function f(n,e,t,o,r){function i(){return s(n.name,t.value,n.values,n.options,(function(n,e){r.error(e,n)}))}n.connector=t,n.addField=function(e,t){const o=angular.copy(n.defaultValues[t][0]);n.values[t].splice(e+1,0,o)},n.addOption=function(n,e){e.splice(n+1,0,"")},n.deleteOption=function(n,e){e.splice(n,1)},n.addMapOption=function(n,e){e.splice(n+1,0,{key:"",value:""})},n.deleteMapOption=function(n,e){e.splice(n,1)},n.ok=function(){if(n.form.$valid){const t=i();t&&e.close({name:n.name,values:n.values,options:n.options,query:t})}},n.viewQuery=function(){const n=i();n&&o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return n}}})},n.cancel=function(){e.dismiss("cancel")}}function p(n,e,t,o,r,a,c,s){angular.extend(this,e("ExtendNewConnectorCtrl",{$scope:n,$uibModalInstance:o,connector:r,$uibModal:a})),n.values=c.values,n.options=s,n.name=c.name,c.skipConversion||(n.values=i(n.values,n.options)),n.defaultValues=angular.copy(n.values)}function g(n,e,t,o,r){function i(){const i=function(n){const e=n.replace(/\/instance#.+$/,"#connectorStatus");let t="";return t+="SELECT ?status {\n",t+="\t<"+n+"> <"+e+"> ?status",t+="\n}",t}(n.beingBuiltConnector.iri);n.beingBuiltConnector.iri=null,n.progressInterval=e((function(){(function(n){return a(t,o.getActiveRepository(),n)})(i).then((function(t){const o=function(n){if(n.bindings&&n.bindings.length>0)try{return JSON.parse(n.bindings[0].status.value)}catch(n){console.error(n)}return{}}(t.data.results);"BUILDING"===o.status?(n.beingBuiltConnector.status=o,n.beingBuiltConnector.percentDone=(100*o.processedEntities/o.estimatedEntities).toFixed(0),n.beingBuiltConnector.eta=n.getHumanReadableSeconds(o.etaSeconds),n.beingBuiltConnector.actionName=o.repair?r.instant("externalsync.repairing"):r.instant("externalsync.creating"),n.beingBuiltConnector.waitOnRepairStartOnce=!1):"BUILT"!==o.status||n.beingBuiltConnector.waitOnRepairStartOnce||(e.cancel(n.progressInterval),n.beingBuiltConnector.doneCallback&&n.beingBuiltConnector.doneCallback())}))}),1e3),n.$on("$destroy",(function(){e.cancel(n.progressInterval)}))}n.beingBuiltConnector=n.beingBuiltConnector||{},!n.beingBuiltConnector.inline&&n.beingBuiltConnector.iri&&i(),n.$watch("beingBuiltConnector.iri",(function(e){n.beingBuiltConnector.inline&&e&&i()}))}angular.module("graphdb.framework.externalsync.controllers",["graphdb.framework.rest.rdf4j.repositories.service","graphdb.framework.rest.connectors.service"]).controller("ConnectorsCtrl",l).controller("ExtendNewConnectorCtrl",f).controller("CreateConnectorCtrl",p).controller("CreateProgressCtrl",g).controller("DeleteConnectorCtrl",u).filter("ceil",(function(){return function(n){return Math.ceil(n)}})),l.$inject=["$scope","$http","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","ConnectorsRestService","$translate"],u.$inject=["$scope","$uibModalInstance","popoverMsg"],f.$inject=["$scope","$uibModalInstance","connector","$uibModal","toastr"],p.$inject=["$scope","$controller","$http","$uibModalInstance","connector","$uibModal","values","options"],g.$inject=["$scope","$interval","$http","$repositories","$translate"]},74:function(n,e,t){"use strict";t.r(e);t(4);angular.module("graphdb.framework.externalsync.directives",[]).directive("createProgress",(function(){return{templateUrl:"pages/connectorProgress.html",controller:"CreateProgressCtrl",restrict:"EA"}}))}}]);
2
+ //# sourceMappingURL=26.194b2d09daa679b7e09c.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/externalsync/app.js","webpack:///./src/js/angular/rest/connectors.rest.service.js","webpack:///./src/js/angular/externalsync/controllers.js","webpack:///./src/js/angular/externalsync/directives.js"],"names":["angular","module","filter","noun","isUndefined","replace","factory","ConnectorsRestService","$inject","$http","getConnectors","get","initConnector","prefix","hasConnector","checkConnector","data","post","headers","jsonToFormData","str","Object","keys","forEach","key","push","encodeURIComponent","join","fromArrayMap","arrayMap","$translate","_","reduce","acc","value","Error","instant","hasOwnProperty","mapCreateValuesToUiValues","values","options","i","length","option","__type","__name","j","__childOptions","child","k","valueK","isDefined","__defaultValue","optionEl","map","String","toJson","_evaluateSparqlQuery","http","repository","query","buildNamePrefix","substring","createConnectorQuery","name","fields","reportError","fcopy","sortObject","obj","newObject","each","childOption","copy","fromJson","e","__label","message","removeEmptyValues","Array","isArray","item","trim","finalString","ConnectorsCtrl","$scope","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","resetProgress","repair","beingBuiltConnector","percentDone","status","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","actionName","waitOnRepairStartOnce","eta","inline","iri","openProgressModal","$","extend","doneCallback","modalInstance","dismiss","open","templateUrl","controller","size","backdrop","scope","executeCreate","connector","errorCallback","modal","addStatements","getActiveRepository","update","then","res","existing","success","err","error","getError","finally","loader","controllers","definitions","getLoaderMessage","timeSeconds","Date","now","loaderStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","setLoader","isRunning","isLicenseValid","canWriteActiveRepo","connectors","all","connectorIris","createStatusQueryForAny","evaluateSparqlQuery","results","bindings","statusObject","JSON","parse","console","parseFirstBuildingResult","d","split","catch","getOptions","isEmpty","isObject","toPrettyJson","$watch","getActiveLocation","copyConnector","newValues","resolve","result","skipConversion","newConnector","inst","type","openSimpleModal","title","warning","delete","isExternal","indexOf","popoverMsg","force","namePrefix","deleteConnectorQuery","viewQuery","DeleteConnectorCtrl","$uibModalInstance","ok","close","cancel","ExtendNewConnectorCtrl","toQuery","label","addField","index","optionName","newField","defaultValues","splice","addOption","array","deleteOption","addMapOption","deleteMapOption","form","$valid","CreateConnectorCtrl","$controller","this","CreateProgressCtrl","$interval","initProgress","statusIri","createStatusQueryForIri","progressInterval","getFirstStatusFromResult","toFixed","etaSeconds","$on","input","Math","ceil","directive","restrict"],"mappings":"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","file":"26.3a642e64c7803f3b32f1.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/externalsync/controllers';\nimport 'angular/externalsync/directives';\n\nconst modules = [\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.externalsync.controllers',\n 'graphdb.framework.externalsync.directives',\n 'graphdb.framework.core.directives'\n];\n\nconst externalsync = angular.module('graphdb.framework.externalsync', modules);\n\nexternalsync.filter('singular', function () {\n return function (noun) {\n if (angular.isUndefined(noun)) {\n return noun;\n } else {\n return noun.replace(/ies$/, 'y').replace(/s$/, '');\n }\n };\n});\n","angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n function getConnectors() {\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n function hasConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n","import 'angular/rest/rdf4j.repositories.rest.service';\nimport 'angular/rest/connectors.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'graphdb.framework.rest.connectors.service'\n];\n\nangular\n .module('graphdb.framework.externalsync.controllers', modules)\n .controller('ConnectorsCtrl', ConnectorsCtrl)\n .controller('ExtendNewConnectorCtrl', ExtendNewConnectorCtrl)\n .controller('CreateConnectorCtrl', CreateConnectorCtrl)\n .controller('CreateProgressCtrl', CreateProgressCtrl)\n .controller('DeleteConnectorCtrl', DeleteConnectorCtrl)\n .filter('ceil', ceil);\n\nfunction jsonToFormData(data) {\n const str = [];\n Object.keys(data).forEach(function (key) {\n str.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n });\n return str.join('&');\n}\n\nfunction toArrayMap(map) {\n return _.map(map, function (value, key) {\n return {key: key, value: value};\n });\n}\n\nfunction fromArrayMap(arrayMap, $translate) {\n return _.reduce(arrayMap, function (acc, value) {\n if (value.key === '' && value.value === '') {\n // empty pair, skip it\n } else if (value.key === '') {\n throw new Error($translate.instant('externalsync.empty.value.key.error', {value: value.value}));\n } else if (acc.hasOwnProperty(value.key)) {\n throw new Error($translate.instant('externalsync.duplicate.key.error', {key: value.key}));\n } else {\n acc[value.key] = value.value;\n }\n return acc;\n }, {});\n}\n\nfunction mapCreateValuesToUiValues(values, options) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n if (option.__type === 'StringArray') {\n if (!values[option.__name]) {\n values[option.__name] = [''];\n }\n } else if (option.__type === 'OptionArray') {\n if (!values[option.__name]) { // values has no entry for this option\n values[option.__name] = [];\n const optionEl = {};\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'StringArray') {\n optionEl[child.__name] = [''];\n } else {\n optionEl[child.__name] = (!angular.isUndefined(child.__defaultValue) ? child.__defaultValue : '');\n }\n }\n values[option.__name].push(optionEl);\n } else { // values already has en entry for this option\n // Copies the default value for Boolean child options if no explicit value is set\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'Boolean') {\n for (let k = 0; k < values[option.__name].length; k++) {\n const valueK = values[option.__name][k];\n if (!valueK.hasOwnProperty([child.__name]) && angular.isDefined(child.__defaultValue)) {\n valueK[child.__name] = child.__defaultValue;\n }\n }\n }\n }\n }\n } else if (option.__type === 'Map') {\n if (!values[option.__name]) {\n values[option.__name] = [];\n } else {\n values[option.__name] = toArrayMap(values[option.__name]);\n }\n } else if (option.__type === 'JsonString') {\n if (values[option.__name] && !(values[option.__name] instanceof String) && typeof values[option.__name] !== 'string') {\n values[option.__name] = angular.toJson(values[option.__name], 2);\n }\n } else {\n if (angular.isUndefined(values[option.__name])) {\n values[option.__name] = (!angular.isUndefined(option.__defaultValue) ? option.__defaultValue : '');\n }\n }\n }\n\n return values;\n}\n\nfunction _evaluateSparqlQuery(http, repository, query) {\n return http.post('repositories/' + repository, jsonToFormData({query: query}),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/sparql-results+json',\n 'X-GraphDB-Local-Consistency': 'updating'\n }\n });\n}\n\nfunction buildNamePrefix(prefix) {\n return prefix.substring(0, prefix.length - 1) + '/instance#';\n}\n\nfunction createConnectorQuery(name, prefix, fields, options, reportError) {\n // Returns a copy of the parameter obj sorted according to the order in options\n function sortObject(obj, options) {\n const newObject = {};\n _.each(options, function (option) {\n if (angular.isDefined(obj[option.__name])) {\n if (option.__type === 'OptionArray') {\n newObject[option.__name] = [];\n _.each(obj[option.__name], function (childOption) {\n newObject[option.__name].push(sortObject(childOption, option.__childOptions));\n });\n } else {\n newObject[option.__name] = angular.copy(obj[option.__name]);\n }\n }\n });\n return newObject;\n }\n\n const fcopy = sortObject(fields, options);\n\n for (let i = 0; i < options.length; i++) {\n try {\n if (options[i].__type === 'Map') {\n fcopy[options[i].__name] = fromArrayMap(fcopy[options[i].__name], $translate);\n } else if (options[i].__type === 'JsonString') {\n fcopy[options[i].__name] = angular.fromJson(fcopy[options[i].__name]);\n }\n } catch (e) {\n reportError(options[i].__label, e.message);\n return null;\n }\n }\n\n removeEmptyValues(fcopy);\n //escapeValues(fields);\n let finalString = '';\n finalString += 'PREFIX :<' + prefix + '>\\n';\n const namePrefix = buildNamePrefix(prefix);\n finalString += 'PREFIX inst:<' + namePrefix + '>\\n';\n finalString += 'INSERT DATA {\\n';\n finalString += \"\\tinst:\" + name + \" :createConnector '''\\n\"; // eslint-disable-line quotes\n finalString += angular.toJson(fcopy, 2);\n finalString += \"\\n''' .\\n}\\n\"; // eslint-disable-line quotes\n finalString = finalString.replace(/\\\\/g, '\\\\\\\\\\\\');\n return finalString;\n}\n\nfunction createStatusQueryForIri(iri) {\n const statusIri = iri.replace(/\\/instance#.+$/, '#connectorStatus');\n let finalString = '';\n finalString += 'SELECT ?status {\\n';\n finalString += '\\t<' + iri + '> <' + statusIri + '> ?status';\n finalString += '\\n}';\n return finalString;\n}\n\nfunction createStatusQueryForAny(connectors) {\n const connectorIris = _.map(connectors,\n function (k) {\n return '<' + k.value + 'connectorStatus' + '>';\n }).join('|');\n\n if (connectorIris) {\n return 'SELECT ?connector ?status { ?connector ' + connectorIris + ' ?status }';\n }\n\n return null;\n}\n\nfunction repairConnectorQuery(name, prefix) {\n const namePrefix = buildNamePrefix(prefix);\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:repairConnector \"\"\\n' +\n '}';\n}\n\nfunction deleteConnectorQuery(name, prefix, force) {\n const namePrefix = prefix.substring(0, prefix.length - 1) + \"/instance#\";\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:dropConnector \"' + (force ? \"force\" : \"\") + '\"\\n' +\n '}';\n}\n\nfunction removeEmptyValues(data) {\n // remove empty values from array\n if (Array.isArray(data)) {\n data = _.filter(data, function (item) {\n return item !== null && (!item.trim || item.trim() !== '');\n });\n }\n // remove empty values from object values\n Object.keys(data).forEach(function (key) {\n if ((data[key] === '' || data[key] == null) && data[key] !== false) {\n delete data[key];\n } else if (typeof data[key] === 'object') {\n data[key] = removeEmptyValues(data[key]);\n }\n });\n return data;\n}\n\nfunction parseFirstBuildingResult(results) {\n if (results.bindings) {\n for (let i = 0; i < results.bindings.length; i++) {\n try {\n const statusObject = JSON.parse(results.bindings[i].status.value);\n if (statusObject.status === 'BUILDING') {\n return {\n connector: results.bindings[i].connector.value,\n status: statusObject\n };\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n}\n\nConnectorsCtrl.$inject = ['$scope', '$http', '$repositories', '$uibModal', 'toastr', 'ModalService', '$q', 'RDF4JRepositoriesRestService', 'ConnectorsRestService', '$translate'];\n\nfunction ConnectorsCtrl($scope, $http, $repositories, $uibModal, toastr, ModalService, $q, RDF4JRepositoriesRestService, ConnectorsRestService, $translate) {\n $scope.loader = false;\n\n $scope.controllers = [];\n\n $scope.existing = {};\n\n $scope.definitions = {};\n\n $scope.getLoaderMessage = function () {\n const timeSeconds = (Date.now() - $scope.loaderStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = $translate.instant('common.running.operation', {timeHuman: timeHuman});\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n };\n\n $scope.setLoader = function (isRunning, progressMessage, extraMessage) {\n if (isRunning) {\n $scope.loader = true;\n $scope.loaderStartTime = Date.now();\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n } else {\n $scope.loader = false;\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n }\n };\n\n $scope.initConnector = function (connector) {\n return ConnectorsRestService.initConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.definitions[connector.key] = res.data;\n\n return ConnectorsRestService.hasConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.existing[connector.key] = res.data;\n\n });\n });\n };\n\n $scope.getConnectors = function () {\n if (!$scope.isLicenseValid()) {\n return;\n }\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $scope.setLoader(true, $translate.instant('externalsync.fetching.connectors'), $translate.instant('common.extra.message'));\n\n ConnectorsRestService.getConnectors()\n .then(function (res) {\n $scope.connectors = Object.keys(res.data).map(function (key) {\n return {key: key, value: res.data[key]};\n });\n\n $q.all(_.map($scope.connectors, function (connector) {\n return $scope.initConnector(connector);\n })).finally(function () {\n resetProgress();\n\n const query = createStatusQueryForAny($scope.connectors);\n\n if (query) {\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = parseFirstBuildingResult(res.data.results);\n if (status.connector) {\n // has a building connector, open progress indicator\n const d = status.connector.split(/#/);\n d[0] = d[0].replace(/\\/instance$/, '#');\n showProgress(d[0], d[1]);\n }\n })\n .finally(function () {\n $scope.setLoader(false);\n });\n } else {\n $scope.setLoader(false);\n }\n });\n }).catch(function (e) {\n $scope.setLoader(false);\n toastr.error(getError(e), $translate.instant('externalsync.could.not.get.connectors.error'));\n });\n\n $scope.existing = {};\n };\n\n $scope.getOptions = function (connector) {\n return $scope.definitions[connector.key];\n };\n\n $scope.isEmpty = function (value) {\n return angular.isObject(value) && Object.keys(value).length === 0;\n };\n\n $scope.toPrettyJson = function (value) {\n return angular.toJson(value, 2);\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, $scope.getConnectors);\n\n $scope.$watch(function () {\n return $repositories.getActiveLocation();\n }, $scope.getConnectors);\n\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function resetProgress(repair) {\n $scope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0\n },\n actionName: repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating'),\n waitOnRepairStartOnce: !!repair,\n eta: '-',\n inline: false,\n iri: null\n };\n }\n\n function openProgressModal(prefix, name, repair) {\n resetProgress(repair);\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: false,\n doneCallback: function () {\n $scope.beingBuiltConnector.modalInstance.dismiss('cancel');\n }\n });\n\n $scope.beingBuiltConnector.modalInstance = $uibModal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: $scope\n });\n\n return $scope.beingBuiltConnector.modalInstance;\n }\n\n function showProgress(prefix, name) {\n resetProgress();\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: true,\n doneCallback: function () {\n $scope.beingBuiltConnector.inline = false;\n }\n });\n }\n\n function executeCreate(connector, obj, errorCallback) {\n const modal = openProgressModal(connector.value, obj.name, false);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: obj.query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(connector.value)).then(function (res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n toastr.success($translate.instant('created.connector', {name: obj.name}));\n }, function (err) {\n toastr.error(getError(err));\n errorCallback();\n }).finally(function () {\n modal.dismiss('cancel');\n });\n }\n\n $scope.copyConnector = function (connector, values) {\n let newValues;\n if (!angular.isUndefined(values)) {\n newValues = angular.copy(values);\n newValues.name = newValues.name + '-copy';\n }\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(newValues) ? {name: '', values: {}} : newValues;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.newConnector = function (connector, values) {\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(values) ? {name: '', values: {}} : values;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.repair = function (inst, type) {\n ModalService.openSimpleModal({\n title: $translate.instant('externalsync.confirm.repair'),\n message: $translate.instant('externalsync.repair.warning.msg'),\n warning: true\n }).result\n .then(function () {\n const modal = openProgressModal(type.value, inst.name, true);\n\n const query = repairConnectorQuery(inst.name, type.value);\n\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n toastr.success($translate.instant('externalsync.repair.success.msg', {name: inst.name}));\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function () {\n modal.dismiss('cancel');\n });\n });\n };\n\n $scope.delete = function (inst, type) {\n const isExternal = type.key.indexOf(\"Elastic\") >= 0 || type.key.indexOf(\"Solr\") >= 0;\n\n $uibModal.open({\n templateUrl: 'js/angular/externalsync/templates/deleteConnector.html',\n controller: 'DeleteConnectorCtrl',\n resolve: {\n popoverMsg: function () {\n return isExternal ? $translate.instant('delete.connector.conditional', {type: type.key}) : '';\n }\n }\n }).result\n .then(function(force) {\n $scope.setLoader(true, $translate.instant('externalsync.delete.progress.msg', {name: inst.name}),\n $translate.instant('externalsync.extra.message.warning'));\n\n const query = deleteConnectorQuery(inst.name, type.value, force);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n if (force) {\n toastr.success($translate.instant('externalsync.delete.force.success.msg', {name: inst.name}));\n if (isExternal) {\n toastr.warning($translate.instant('externalsync.delete.remote.warning', {key: type.key}));\n }\n } else {\n toastr.success($translate.instant('externalsync.delete.success.msg', {name: inst.name}));\n }\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function() {\n $scope.setLoader(false);\n });\n });\n };\n\n $scope.viewQuery = function (connector, inst) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n const options = $scope.getOptions(connector);\n return createConnectorQuery(inst.name, connector.value,\n mapCreateValuesToUiValues(inst.values, options), options);\n }\n }\n });\n };\n}\n\nDeleteConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'popoverMsg'];\nfunction DeleteConnectorCtrl($scope, $uibModalInstance, popoverMsg) {\n $scope.force = false;\n $scope.popoverMsg = popoverMsg;\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.force);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n}\n\nExtendNewConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'connector', '$uibModal', 'toastr'];\nfunction ExtendNewConnectorCtrl($scope, $uibModalInstance, connector, $uibModal, toastr) {\n\n $scope.connector = connector;\n\n $scope.addField = function (index, optionName) {\n const newField = angular.copy($scope.defaultValues[optionName][0]);\n $scope.values[optionName].splice(index + 1, 0, newField);\n };\n\n $scope.addOption = function (index, array) {\n array.splice(index + 1, 0, '');\n };\n\n $scope.deleteOption = function (index, array) {\n array.splice(index, 1);\n };\n\n $scope.addMapOption = function (index, array) {\n array.splice(index + 1, 0, {key: '', value: ''});\n };\n\n $scope.deleteMapOption = function (index, array) {\n array.splice(index, 1);\n };\n\n function toQuery() {\n return createConnectorQuery($scope.name, connector.value, $scope.values, $scope.options,\n function (label, error) {\n toastr.error(error, label);\n });\n }\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n const query = toQuery();\n\n if (query) {\n $uibModalInstance.close({name: $scope.name, values: $scope.values, options: $scope.options, query: query});\n }\n }\n };\n\n $scope.viewQuery = function () {\n const query = toQuery();\n\n if (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nCreateConnectorCtrl.$inject = ['$scope', '$controller', '$http', '$uibModalInstance', 'connector', '$uibModal', 'values', 'options'];\n\nfunction CreateConnectorCtrl($scope, $controller, $http, $uibModalInstance, connector, $uibModal, values, options) {\n angular.extend(this, $controller('ExtendNewConnectorCtrl', {\n $scope: $scope,\n $uibModalInstance: $uibModalInstance,\n connector: connector,\n $uibModal: $uibModal\n }));\n $scope.values = values.values;\n $scope.options = options;\n $scope.name = values.name;\n if (!values.skipConversion) {\n $scope.values = mapCreateValuesToUiValues($scope.values, $scope.options);\n }\n $scope.defaultValues = angular.copy($scope.values);\n}\n\n// Note that this is a fancy controller: it's used both for a modal and for a directive.\n// This means you can't rely on custom injection through resolve in the modal and the scope\n// must be shared with the main connectors controller.\nCreateProgressCtrl.$inject = ['$scope', '$interval', '$http', '$repositories', '$translate'];\n\nfunction CreateProgressCtrl($scope, $interval, $http, $repositories, $translate) {\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function initProgress() {\n const query = createStatusQueryForIri($scope.beingBuiltConnector.iri);\n\n // reset iri value so that watch will fire again when we do something with the same connector\n $scope.beingBuiltConnector.iri = null;\n\n $scope.progressInterval = $interval(function () {\n function getFirstStatusFromResult(results) {\n if (results.bindings) {\n if (results.bindings.length > 0) {\n try {\n return JSON.parse(results.bindings[0].status.value);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n }\n\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = getFirstStatusFromResult(res.data.results);\n if (status.status === 'BUILDING') {\n $scope.beingBuiltConnector.status = status;\n $scope.beingBuiltConnector.percentDone = (100 * status.processedEntities / status.estimatedEntities).toFixed(0);\n $scope.beingBuiltConnector.eta = $scope.getHumanReadableSeconds(status.etaSeconds);\n $scope.beingBuiltConnector.actionName = status.repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating');\n $scope.beingBuiltConnector.waitOnRepairStartOnce = false;\n } else if (status.status === 'BUILT' && !$scope.beingBuiltConnector.waitOnRepairStartOnce) {\n // done\n $interval.cancel($scope.progressInterval);\n if ($scope.beingBuiltConnector.doneCallback) {\n $scope.beingBuiltConnector.doneCallback();\n }\n }\n });\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel($scope.progressInterval);\n });\n }\n\n $scope.beingBuiltConnector = $scope.beingBuiltConnector || {};\n\n // for modal instance we get the iri before hand and can start progress now\n if (!$scope.beingBuiltConnector.inline && $scope.beingBuiltConnector.iri) {\n initProgress();\n }\n\n // for inline progress we need to watch for the iri value\n $scope.$watch('beingBuiltConnector.iri', function (value) {\n if ($scope.beingBuiltConnector.inline && value) {\n initProgress();\n }\n });\n}\n\nfunction ceil() {\n return function (input) {\n return Math.ceil(input);\n };\n}\n","import 'angular/core/services';\n\nangular.module('graphdb.framework.externalsync.directives', [])\n .directive('createProgress', function () {\n return {\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n restrict: 'EA'\n };\n });\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/externalsync/app.js","webpack:///./src/js/angular/rest/connectors.rest.service.js","webpack:///./src/js/angular/externalsync/controllers.js","webpack:///./src/js/angular/externalsync/directives.js"],"names":["angular","module","filter","noun","isUndefined","replace","factory","ConnectorsRestService","$inject","$http","getConnectors","get","initConnector","prefix","hasConnector","checkConnector","data","post","headers","jsonToFormData","str","Object","keys","forEach","key","push","encodeURIComponent","join","fromArrayMap","arrayMap","$translate","_","reduce","acc","value","Error","instant","hasOwnProperty","mapCreateValuesToUiValues","values","options","i","length","option","__type","__name","j","__childOptions","child","k","valueK","isDefined","__defaultValue","optionEl","map","String","toJson","_evaluateSparqlQuery","http","repository","query","buildNamePrefix","substring","createConnectorQuery","name","fields","reportError","fcopy","sortObject","obj","newObject","each","childOption","copy","fromJson","e","__label","message","removeEmptyValues","Array","isArray","item","trim","finalString","ConnectorsCtrl","$scope","$repositories","$uibModal","toastr","ModalService","$q","RDF4JRepositoriesRestService","resetProgress","repair","beingBuiltConnector","percentDone","status","processedEntities","estimatedEntities","indexedEntities","entitiesPerSecond","actionName","waitOnRepairStartOnce","eta","inline","iri","openProgressModal","$","extend","doneCallback","modalInstance","dismiss","open","templateUrl","controller","size","backdrop","scope","executeCreate","connector","errorCallback","modal","addStatements","getActiveRepository","update","then","res","existing","success","err","error","getError","finally","loader","controllers","definitions","getLoaderMessage","timeSeconds","Date","now","loaderStartTime","timeHuman","getHumanReadableSeconds","progressMessage","extraMessage","setLoader","isRunning","isLicenseValid","canWriteActiveRepo","connectors","all","connectorIris","createStatusQueryForAny","evaluateSparqlQuery","results","bindings","statusObject","JSON","parse","console","parseFirstBuildingResult","d","split","catch","getOptions","isEmpty","isObject","toPrettyJson","$watch","getActiveLocation","copyConnector","newValues","resolve","result","skipConversion","newConnector","inst","type","openSimpleModal","title","warning","delete","isExternal","indexOf","popoverMsg","force","namePrefix","deleteConnectorQuery","viewQuery","DeleteConnectorCtrl","$uibModalInstance","ok","close","cancel","ExtendNewConnectorCtrl","toQuery","label","addField","index","optionName","newField","defaultValues","splice","addOption","array","deleteOption","addMapOption","deleteMapOption","form","$valid","CreateConnectorCtrl","$controller","this","CreateProgressCtrl","$interval","initProgress","statusIri","createStatusQueryForIri","progressInterval","getFirstStatusFromResult","toFixed","etaSeconds","$on","input","Math","ceil","directive","restrict"],"mappings":"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","file":"26.194b2d09daa679b7e09c.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/externalsync/controllers';\nimport 'angular/externalsync/directives';\n\nconst modules = [\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.externalsync.controllers',\n 'graphdb.framework.externalsync.directives',\n 'graphdb.framework.core.directives'\n];\n\nconst externalsync = angular.module('graphdb.framework.externalsync', modules);\n\nexternalsync.filter('singular', function () {\n return function (noun) {\n if (angular.isUndefined(noun)) {\n return noun;\n } else {\n return noun.replace(/ies$/, 'y').replace(/s$/, '');\n }\n };\n});\n","angular\n .module('graphdb.framework.rest.connectors.service', [])\n .factory('ConnectorsRestService', ConnectorsRestService);\n\nConnectorsRestService.$inject = ['$http'];\n\nconst CONNECTORS_ENDPOINT = 'rest/connectors';\n\nfunction ConnectorsRestService($http) {\n\n return {\n getConnectors,\n initConnector,\n hasConnector,\n checkConnector\n };\n\n function getConnectors() {\n return $http.get(CONNECTORS_ENDPOINT);\n }\n\n function initConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/options?prefix=${prefix}`);\n }\n\n function hasConnector(prefix) {\n return $http.get(`${CONNECTORS_ENDPOINT}/existing?prefix=${prefix}`);\n }\n\n function checkConnector(data) {\n return $http.post(`${CONNECTORS_ENDPOINT}/check`, data, {\n headers: {\n 'Content-Type': 'text/plain'\n }\n });\n }\n}\n","import 'angular/rest/rdf4j.repositories.rest.service';\nimport 'angular/rest/connectors.rest.service';\n\nconst modules = [\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'graphdb.framework.rest.connectors.service'\n];\n\nangular\n .module('graphdb.framework.externalsync.controllers', modules)\n .controller('ConnectorsCtrl', ConnectorsCtrl)\n .controller('ExtendNewConnectorCtrl', ExtendNewConnectorCtrl)\n .controller('CreateConnectorCtrl', CreateConnectorCtrl)\n .controller('CreateProgressCtrl', CreateProgressCtrl)\n .controller('DeleteConnectorCtrl', DeleteConnectorCtrl)\n .filter('ceil', ceil);\n\nfunction jsonToFormData(data) {\n const str = [];\n Object.keys(data).forEach(function (key) {\n str.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n });\n return str.join('&');\n}\n\nfunction toArrayMap(map) {\n return _.map(map, function (value, key) {\n return {key: key, value: value};\n });\n}\n\nfunction fromArrayMap(arrayMap, $translate) {\n return _.reduce(arrayMap, function (acc, value) {\n if (value.key === '' && value.value === '') {\n // empty pair, skip it\n } else if (value.key === '') {\n throw new Error($translate.instant('externalsync.empty.value.key.error', {value: value.value}));\n } else if (acc.hasOwnProperty(value.key)) {\n throw new Error($translate.instant('externalsync.duplicate.key.error', {key: value.key}));\n } else {\n acc[value.key] = value.value;\n }\n return acc;\n }, {});\n}\n\nfunction mapCreateValuesToUiValues(values, options) {\n for (let i = 0; i < options.length; i++) {\n const option = options[i];\n if (option.__type === 'StringArray') {\n if (!values[option.__name]) {\n values[option.__name] = [''];\n }\n } else if (option.__type === 'OptionArray') {\n if (!values[option.__name]) { // values has no entry for this option\n values[option.__name] = [];\n const optionEl = {};\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'StringArray') {\n optionEl[child.__name] = [''];\n } else {\n optionEl[child.__name] = (!angular.isUndefined(child.__defaultValue) ? child.__defaultValue : '');\n }\n }\n values[option.__name].push(optionEl);\n } else { // values already has en entry for this option\n // Copies the default value for Boolean child options if no explicit value is set\n for (let j = 0; j < option.__childOptions.length; j++) {\n const child = option.__childOptions[j];\n if (child.__type === 'Boolean') {\n for (let k = 0; k < values[option.__name].length; k++) {\n const valueK = values[option.__name][k];\n if (!valueK.hasOwnProperty([child.__name]) && angular.isDefined(child.__defaultValue)) {\n valueK[child.__name] = child.__defaultValue;\n }\n }\n }\n }\n }\n } else if (option.__type === 'Map') {\n if (!values[option.__name]) {\n values[option.__name] = [];\n } else {\n values[option.__name] = toArrayMap(values[option.__name]);\n }\n } else if (option.__type === 'JsonString') {\n if (values[option.__name] && !(values[option.__name] instanceof String) && typeof values[option.__name] !== 'string') {\n values[option.__name] = angular.toJson(values[option.__name], 2);\n }\n } else {\n if (angular.isUndefined(values[option.__name])) {\n values[option.__name] = (!angular.isUndefined(option.__defaultValue) ? option.__defaultValue : '');\n }\n }\n }\n\n return values;\n}\n\nfunction _evaluateSparqlQuery(http, repository, query) {\n return http.post('repositories/' + repository, jsonToFormData({query: query}),\n {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/sparql-results+json',\n 'X-GraphDB-Local-Consistency': 'updating'\n }\n });\n}\n\nfunction buildNamePrefix(prefix) {\n return prefix.substring(0, prefix.length - 1) + '/instance#';\n}\n\nfunction createConnectorQuery(name, prefix, fields, options, reportError) {\n // Returns a copy of the parameter obj sorted according to the order in options\n function sortObject(obj, options) {\n const newObject = {};\n _.each(options, function (option) {\n if (angular.isDefined(obj[option.__name])) {\n if (option.__type === 'OptionArray') {\n newObject[option.__name] = [];\n _.each(obj[option.__name], function (childOption) {\n newObject[option.__name].push(sortObject(childOption, option.__childOptions));\n });\n } else {\n newObject[option.__name] = angular.copy(obj[option.__name]);\n }\n }\n });\n return newObject;\n }\n\n const fcopy = sortObject(fields, options);\n\n for (let i = 0; i < options.length; i++) {\n try {\n if (options[i].__type === 'Map') {\n fcopy[options[i].__name] = fromArrayMap(fcopy[options[i].__name], $translate);\n } else if (options[i].__type === 'JsonString') {\n fcopy[options[i].__name] = angular.fromJson(fcopy[options[i].__name]);\n }\n } catch (e) {\n reportError(options[i].__label, e.message);\n return null;\n }\n }\n\n removeEmptyValues(fcopy);\n //escapeValues(fields);\n let finalString = '';\n finalString += 'PREFIX :<' + prefix + '>\\n';\n const namePrefix = buildNamePrefix(prefix);\n finalString += 'PREFIX inst:<' + namePrefix + '>\\n';\n finalString += 'INSERT DATA {\\n';\n finalString += \"\\tinst:\" + name + \" :createConnector '''\\n\"; // eslint-disable-line quotes\n finalString += angular.toJson(fcopy, 2);\n finalString += \"\\n''' .\\n}\\n\"; // eslint-disable-line quotes\n finalString = finalString.replace(/\\\\/g, '\\\\\\\\\\\\');\n return finalString;\n}\n\nfunction createStatusQueryForIri(iri) {\n const statusIri = iri.replace(/\\/instance#.+$/, '#connectorStatus');\n let finalString = '';\n finalString += 'SELECT ?status {\\n';\n finalString += '\\t<' + iri + '> <' + statusIri + '> ?status';\n finalString += '\\n}';\n return finalString;\n}\n\nfunction createStatusQueryForAny(connectors) {\n const connectorIris = _.map(connectors,\n function (k) {\n return '<' + k.value + 'connectorStatus' + '>';\n }).join('|');\n\n if (connectorIris) {\n return 'SELECT ?connector ?status { ?connector ' + connectorIris + ' ?status }';\n }\n\n return null;\n}\n\nfunction repairConnectorQuery(name, prefix) {\n const namePrefix = buildNamePrefix(prefix);\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:repairConnector \"\"\\n' +\n '}';\n}\n\nfunction deleteConnectorQuery(name, prefix, force) {\n const namePrefix = prefix.substring(0, prefix.length - 1) + \"/instance#\";\n return 'PREFIX prefix:<' + prefix + '>\\n' +\n 'INSERT DATA {\\n' +\n '\\t<' + namePrefix + name + '> prefix:dropConnector \"' + (force ? \"force\" : \"\") + '\"\\n' +\n '}';\n}\n\nfunction removeEmptyValues(data) {\n // remove empty values from array\n if (Array.isArray(data)) {\n data = _.filter(data, function (item) {\n return item !== null && (!item.trim || item.trim() !== '');\n });\n }\n // remove empty values from object values\n Object.keys(data).forEach(function (key) {\n if ((data[key] === '' || data[key] == null) && data[key] !== false) {\n delete data[key];\n } else if (typeof data[key] === 'object') {\n data[key] = removeEmptyValues(data[key]);\n }\n });\n return data;\n}\n\nfunction parseFirstBuildingResult(results) {\n if (results.bindings) {\n for (let i = 0; i < results.bindings.length; i++) {\n try {\n const statusObject = JSON.parse(results.bindings[i].status.value);\n if (statusObject.status === 'BUILDING') {\n return {\n connector: results.bindings[i].connector.value,\n status: statusObject\n };\n }\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n}\n\nConnectorsCtrl.$inject = ['$scope', '$http', '$repositories', '$uibModal', 'toastr', 'ModalService', '$q', 'RDF4JRepositoriesRestService', 'ConnectorsRestService', '$translate'];\n\nfunction ConnectorsCtrl($scope, $http, $repositories, $uibModal, toastr, ModalService, $q, RDF4JRepositoriesRestService, ConnectorsRestService, $translate) {\n $scope.loader = false;\n\n $scope.controllers = [];\n\n $scope.existing = {};\n\n $scope.definitions = {};\n\n $scope.getLoaderMessage = function () {\n const timeSeconds = (Date.now() - $scope.loaderStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = $translate.instant('common.running.operation', {timeHuman: timeHuman});\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n };\n\n $scope.setLoader = function (isRunning, progressMessage, extraMessage) {\n if (isRunning) {\n $scope.loader = true;\n $scope.loaderStartTime = Date.now();\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n } else {\n $scope.loader = false;\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n }\n };\n\n $scope.initConnector = function (connector) {\n return ConnectorsRestService.initConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.definitions[connector.key] = res.data;\n\n return ConnectorsRestService.hasConnector(encodeURIComponent(connector.value))\n .then(function (res) {\n $scope.existing[connector.key] = res.data;\n\n });\n });\n };\n\n $scope.getConnectors = function () {\n if (!$scope.isLicenseValid()) {\n return;\n }\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $scope.setLoader(true, $translate.instant('externalsync.fetching.connectors'), $translate.instant('common.extra.message'));\n\n ConnectorsRestService.getConnectors()\n .then(function (res) {\n $scope.connectors = Object.keys(res.data).map(function (key) {\n return {key: key, value: res.data[key]};\n });\n\n $q.all(_.map($scope.connectors, function (connector) {\n return $scope.initConnector(connector);\n })).finally(function () {\n resetProgress();\n\n const query = createStatusQueryForAny($scope.connectors);\n\n if (query) {\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = parseFirstBuildingResult(res.data.results);\n if (status.connector) {\n // has a building connector, open progress indicator\n const d = status.connector.split(/#/);\n d[0] = d[0].replace(/\\/instance$/, '#');\n showProgress(d[0], d[1]);\n }\n })\n .finally(function () {\n $scope.setLoader(false);\n });\n } else {\n $scope.setLoader(false);\n }\n });\n }).catch(function (e) {\n $scope.setLoader(false);\n toastr.error(getError(e), $translate.instant('externalsync.could.not.get.connectors.error'));\n });\n\n $scope.existing = {};\n };\n\n $scope.getOptions = function (connector) {\n return $scope.definitions[connector.key];\n };\n\n $scope.isEmpty = function (value) {\n return angular.isObject(value) && Object.keys(value).length === 0;\n };\n\n $scope.toPrettyJson = function (value) {\n return angular.toJson(value, 2);\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, $scope.getConnectors);\n\n $scope.$watch(function () {\n return $repositories.getActiveLocation();\n }, $scope.getConnectors);\n\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function resetProgress(repair) {\n $scope.beingBuiltConnector = {\n percentDone: 0,\n status: {\n processedEntities: 0,\n estimatedEntities: 0,\n indexedEntities: 0,\n entitiesPerSecond: 0\n },\n actionName: repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating'),\n waitOnRepairStartOnce: !!repair,\n eta: '-',\n inline: false,\n iri: null\n };\n }\n\n function openProgressModal(prefix, name, repair) {\n resetProgress(repair);\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: false,\n doneCallback: function () {\n $scope.beingBuiltConnector.modalInstance.dismiss('cancel');\n }\n });\n\n $scope.beingBuiltConnector.modalInstance = $uibModal.open({\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n size: 'lg',\n backdrop: 'static',\n scope: $scope\n });\n\n return $scope.beingBuiltConnector.modalInstance;\n }\n\n function showProgress(prefix, name) {\n resetProgress();\n\n $.extend($scope.beingBuiltConnector, {\n iri: buildNamePrefix(prefix) + name,\n name: name,\n inline: true,\n doneCallback: function () {\n $scope.beingBuiltConnector.inline = false;\n }\n });\n }\n\n function executeCreate(connector, obj, errorCallback) {\n const modal = openProgressModal(connector.value, obj.name, false);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: obj.query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(connector.value)).then(function (res) {\n $scope.existing[connector.key] = res.data;\n });\n });\n toastr.success($translate.instant('created.connector', {name: obj.name}));\n }, function (err) {\n toastr.error(getError(err));\n errorCallback();\n }).finally(function () {\n modal.dismiss('cancel');\n });\n }\n\n $scope.copyConnector = function (connector, values) {\n let newValues;\n if (!angular.isUndefined(values)) {\n newValues = angular.copy(values);\n newValues.name = newValues.name + '-copy';\n }\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(newValues) ? {name: '', values: {}} : newValues;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.newConnector = function (connector, values) {\n const modal = $uibModal.open({\n templateUrl: 'pages/createConnector.html',\n controller: 'CreateConnectorCtrl',\n size: 'lg',\n backdrop: 'static',\n resolve: {\n connector: function () {\n return connector;\n },\n values: function () {\n return angular.isUndefined(values) ? {name: '', values: {}} : values;\n },\n options: function () {\n return $scope.getOptions(connector);\n }\n }\n });\n\n modal.result.then(function (obj) {\n executeCreate(connector, obj, function () {\n obj.skipConversion = true;\n $scope.newConnector(connector, obj);\n });\n });\n };\n\n $scope.repair = function (inst, type) {\n ModalService.openSimpleModal({\n title: $translate.instant('externalsync.confirm.repair'),\n message: $translate.instant('externalsync.repair.warning.msg'),\n warning: true\n }).result\n .then(function () {\n const modal = openProgressModal(type.value, inst.name, true);\n\n const query = repairConnectorQuery(inst.name, type.value);\n\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n toastr.success($translate.instant('externalsync.repair.success.msg', {name: inst.name}));\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function () {\n modal.dismiss('cancel');\n });\n });\n };\n\n $scope.delete = function (inst, type) {\n const isExternal = type.key.indexOf(\"Elastic\") >= 0 || type.key.indexOf(\"Solr\") >= 0;\n\n $uibModal.open({\n templateUrl: 'js/angular/externalsync/templates/deleteConnector.html',\n controller: 'DeleteConnectorCtrl',\n resolve: {\n popoverMsg: function () {\n return isExternal ? $translate.instant('delete.connector.conditional', {type: type.key}) : '';\n }\n }\n }).result\n .then(function(force) {\n $scope.setLoader(true, $translate.instant('externalsync.delete.progress.msg', {name: inst.name}),\n $translate.instant('externalsync.extra.message.warning'));\n\n const query = deleteConnectorQuery(inst.name, type.value, force);\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), jsonToFormData({update: query}))\n .then(function () {\n ConnectorsRestService.getConnectors().then(function () {\n ConnectorsRestService.hasConnector(encodeURIComponent(type.value)).then(function (res) {\n $scope.existing[type.key] = res.data;\n });\n });\n if (force) {\n toastr.success($translate.instant('externalsync.delete.force.success.msg', {name: inst.name}));\n if (isExternal) {\n toastr.warning($translate.instant('externalsync.delete.remote.warning', {key: type.key}));\n }\n } else {\n toastr.success($translate.instant('externalsync.delete.success.msg', {name: inst.name}));\n }\n }, function (err) {\n toastr.error(getError(err));\n }).finally(function() {\n $scope.setLoader(false);\n });\n });\n };\n\n $scope.viewQuery = function (connector, inst) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n const options = $scope.getOptions(connector);\n return createConnectorQuery(inst.name, connector.value,\n mapCreateValuesToUiValues(inst.values, options), options);\n }\n }\n });\n };\n}\n\nDeleteConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'popoverMsg'];\nfunction DeleteConnectorCtrl($scope, $uibModalInstance, popoverMsg) {\n $scope.force = false;\n $scope.popoverMsg = popoverMsg;\n\n $scope.ok = function () {\n $uibModalInstance.close($scope.force);\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n}\n\nExtendNewConnectorCtrl.$inject = ['$scope', '$uibModalInstance', 'connector', '$uibModal', 'toastr'];\nfunction ExtendNewConnectorCtrl($scope, $uibModalInstance, connector, $uibModal, toastr) {\n\n $scope.connector = connector;\n\n $scope.addField = function (index, optionName) {\n const newField = angular.copy($scope.defaultValues[optionName][0]);\n $scope.values[optionName].splice(index + 1, 0, newField);\n };\n\n $scope.addOption = function (index, array) {\n array.splice(index + 1, 0, '');\n };\n\n $scope.deleteOption = function (index, array) {\n array.splice(index, 1);\n };\n\n $scope.addMapOption = function (index, array) {\n array.splice(index + 1, 0, {key: '', value: ''});\n };\n\n $scope.deleteMapOption = function (index, array) {\n array.splice(index, 1);\n };\n\n function toQuery() {\n return createConnectorQuery($scope.name, connector.value, $scope.values, $scope.options,\n function (label, error) {\n toastr.error(error, label);\n });\n }\n\n $scope.ok = function () {\n if ($scope.form.$valid) {\n const query = toQuery();\n\n if (query) {\n $uibModalInstance.close({name: $scope.name, values: $scope.values, options: $scope.options, query: query});\n }\n }\n };\n\n $scope.viewQuery = function () {\n const query = toQuery();\n\n if (query) {\n $uibModal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}\n\nCreateConnectorCtrl.$inject = ['$scope', '$controller', '$http', '$uibModalInstance', 'connector', '$uibModal', 'values', 'options'];\n\nfunction CreateConnectorCtrl($scope, $controller, $http, $uibModalInstance, connector, $uibModal, values, options) {\n angular.extend(this, $controller('ExtendNewConnectorCtrl', {\n $scope: $scope,\n $uibModalInstance: $uibModalInstance,\n connector: connector,\n $uibModal: $uibModal\n }));\n $scope.values = values.values;\n $scope.options = options;\n $scope.name = values.name;\n if (!values.skipConversion) {\n $scope.values = mapCreateValuesToUiValues($scope.values, $scope.options);\n }\n $scope.defaultValues = angular.copy($scope.values);\n}\n\n// Note that this is a fancy controller: it's used both for a modal and for a directive.\n// This means you can't rely on custom injection through resolve in the modal and the scope\n// must be shared with the main connectors controller.\nCreateProgressCtrl.$inject = ['$scope', '$interval', '$http', '$repositories', '$translate'];\n\nfunction CreateProgressCtrl($scope, $interval, $http, $repositories, $translate) {\n function evaluateSparqlQuery(query) {\n return _evaluateSparqlQuery($http, $repositories.getActiveRepository(), query);\n }\n\n function initProgress() {\n const query = createStatusQueryForIri($scope.beingBuiltConnector.iri);\n\n // reset iri value so that watch will fire again when we do something with the same connector\n $scope.beingBuiltConnector.iri = null;\n\n $scope.progressInterval = $interval(function () {\n function getFirstStatusFromResult(results) {\n if (results.bindings) {\n if (results.bindings.length > 0) {\n try {\n return JSON.parse(results.bindings[0].status.value);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n }\n }\n }\n\n return {};\n }\n\n evaluateSparqlQuery(query)\n .then(function (res) {\n const status = getFirstStatusFromResult(res.data.results);\n if (status.status === 'BUILDING') {\n $scope.beingBuiltConnector.status = status;\n $scope.beingBuiltConnector.percentDone = (100 * status.processedEntities / status.estimatedEntities).toFixed(0);\n $scope.beingBuiltConnector.eta = $scope.getHumanReadableSeconds(status.etaSeconds);\n $scope.beingBuiltConnector.actionName = status.repair ? $translate.instant('externalsync.repairing') : $translate.instant('externalsync.creating');\n $scope.beingBuiltConnector.waitOnRepairStartOnce = false;\n } else if (status.status === 'BUILT' && !$scope.beingBuiltConnector.waitOnRepairStartOnce) {\n // done\n $interval.cancel($scope.progressInterval);\n if ($scope.beingBuiltConnector.doneCallback) {\n $scope.beingBuiltConnector.doneCallback();\n }\n }\n });\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel($scope.progressInterval);\n });\n }\n\n $scope.beingBuiltConnector = $scope.beingBuiltConnector || {};\n\n // for modal instance we get the iri before hand and can start progress now\n if (!$scope.beingBuiltConnector.inline && $scope.beingBuiltConnector.iri) {\n initProgress();\n }\n\n // for inline progress we need to watch for the iri value\n $scope.$watch('beingBuiltConnector.iri', function (value) {\n if ($scope.beingBuiltConnector.inline && value) {\n initProgress();\n }\n });\n}\n\nfunction ceil() {\n return function (input) {\n return Math.ceil(input);\n };\n}\n","import 'angular/core/services';\n\nangular.module('graphdb.framework.externalsync.directives', [])\n .directive('createProgress', function () {\n return {\n templateUrl: 'pages/connectorProgress.html',\n controller: 'CreateProgressCtrl',\n restrict: 'EA'\n };\n });\n"],"sourceRoot":""}