graphdb-workbench 2.0.0-M3-RC3 → 2.0.0-RC2

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 (180) hide show
  1. package/dist/{10.91f8aa0494201bb12b25.bundle.js → 10.eab0a417fa2f2831905e.bundle.js} +2 -2
  2. package/dist/10.eab0a417fa2f2831905e.bundle.js.map +1 -0
  3. package/dist/{104.42f8ece72006965c902d.bundle.js → 104.7e16b2863108db706fe7.bundle.js} +2 -2
  4. package/dist/104.7e16b2863108db706fe7.bundle.js.map +1 -0
  5. package/dist/{11.32f5a72d66bb699e9e8b.bundle.js → 11.3957302d7a301df30dd1.bundle.js} +2 -2
  6. package/dist/11.3957302d7a301df30dd1.bundle.js.map +1 -0
  7. package/dist/111.ceb781497f3c5dfd1446.bundle.js +2 -0
  8. package/dist/111.ceb781497f3c5dfd1446.bundle.js.map +1 -0
  9. package/dist/112.e34c26d9d3b4b6deae17.bundle.js +2 -0
  10. package/dist/112.e34c26d9d3b4b6deae17.bundle.js.map +1 -0
  11. package/dist/113.733877f9f73d3283f528.bundle.js +2 -0
  12. package/dist/113.733877f9f73d3283f528.bundle.js.map +1 -0
  13. package/dist/114.0e270e77a2a557167988.bundle.js +2 -0
  14. package/dist/114.0e270e77a2a557167988.bundle.js.map +1 -0
  15. package/dist/115.732830fed3ff34691def.bundle.js +2 -0
  16. package/dist/115.732830fed3ff34691def.bundle.js.map +1 -0
  17. package/dist/116.7e8b202c5d712bddaaec.bundle.js +2 -0
  18. package/dist/116.7e8b202c5d712bddaaec.bundle.js.map +1 -0
  19. package/dist/119.2d6b15bc87de2533599c.bundle.js +2 -0
  20. package/dist/119.2d6b15bc87de2533599c.bundle.js.map +1 -0
  21. package/dist/120.80843604737b7c260788.bundle.js +1 -1
  22. package/dist/120.80843604737b7c260788.bundle.js.map +1 -1
  23. package/dist/123.51ad0d8338eda5a93b06.bundle.js +2 -0
  24. package/dist/123.51ad0d8338eda5a93b06.bundle.js.map +1 -0
  25. package/dist/{128.ce61f3a6925ddbc8f612.bundle.js → 128.7dae6369a26090e10276.bundle.js} +2 -2
  26. package/dist/{128.ce61f3a6925ddbc8f612.bundle.js.map → 128.7dae6369a26090e10276.bundle.js.map} +1 -1
  27. package/dist/130.ecb7509cb6324abf4071.bundle.js +2 -0
  28. package/dist/130.ecb7509cb6324abf4071.bundle.js.map +1 -0
  29. package/dist/138.5375ebd499e5c4977038.bundle.js +2 -0
  30. package/dist/138.5375ebd499e5c4977038.bundle.js.map +1 -0
  31. package/dist/149.7089a654a1902207a2c8.bundle.js +2 -0
  32. package/dist/149.7089a654a1902207a2c8.bundle.js.map +1 -0
  33. package/dist/{151.2dae840b241433fbe1d8.bundle.js → 151.2104ac0782ac43e2e7d2.bundle.js} +2 -2
  34. package/dist/{151.2dae840b241433fbe1d8.bundle.js.map → 151.2104ac0782ac43e2e7d2.bundle.js.map} +1 -1
  35. package/dist/152.78baa98e298c18358c55.bundle.js +2 -0
  36. package/dist/152.78baa98e298c18358c55.bundle.js.map +1 -0
  37. package/dist/153.fd957ea6d6ea34d3feb2.bundle.js +2 -0
  38. package/dist/153.fd957ea6d6ea34d3feb2.bundle.js.map +1 -0
  39. package/dist/18.44723ea06155c72f46ae.bundle.js +1 -1
  40. package/dist/18.44723ea06155c72f46ae.bundle.js.map +1 -1
  41. package/dist/{2.3a65d34c46b96a708181.bundle.js → 2.6e340067f6eae14345cd.bundle.js} +2 -2
  42. package/dist/2.6e340067f6eae14345cd.bundle.js.map +1 -0
  43. package/dist/21.64fbe234fee75c83dda3.bundle.js +2 -0
  44. package/dist/21.64fbe234fee75c83dda3.bundle.js.map +1 -0
  45. package/dist/{23.9d969421ffc11412b35a.bundle.js → 23.acf56e52417b0fbca9f4.bundle.js} +2 -2
  46. package/dist/23.acf56e52417b0fbca9f4.bundle.js.map +1 -0
  47. package/dist/25.9e0925889b3a3f79c7fe.bundle.js +2 -0
  48. package/dist/25.9e0925889b3a3f79c7fe.bundle.js.map +1 -0
  49. package/dist/27.a53481ccfa58fbd0c801.bundle.js +2 -0
  50. package/dist/27.a53481ccfa58fbd0c801.bundle.js.map +1 -0
  51. package/dist/29.9bdb27c21d6eacac1341.bundle.js +1 -1
  52. package/dist/29.9bdb27c21d6eacac1341.bundle.js.map +1 -1
  53. package/dist/3.a1815b0ddb1630938d40.bundle.js +2 -0
  54. package/dist/3.a1815b0ddb1630938d40.bundle.js.map +1 -0
  55. package/dist/30.34b74ada583b1b0af913.bundle.js +2 -0
  56. package/dist/30.34b74ada583b1b0af913.bundle.js.map +1 -0
  57. package/dist/{44.dbb910f04027f51eeedd.bundle.js → 44.082e83be1a2eda5f197b.bundle.js} +2 -2
  58. package/dist/44.082e83be1a2eda5f197b.bundle.js.map +1 -0
  59. package/dist/48.f047a5ea62690543f8ad.bundle.js +2 -0
  60. package/dist/48.f047a5ea62690543f8ad.bundle.js.map +1 -0
  61. package/dist/5.1e4e7e36d894360b8d8f.bundle.js +2 -0
  62. package/dist/5.1e4e7e36d894360b8d8f.bundle.js.map +1 -0
  63. package/dist/67.3f75109fb8b71d88f6c7.bundle.js +2 -0
  64. package/dist/67.3f75109fb8b71d88f6c7.bundle.js.map +1 -0
  65. package/dist/68.e25480b7770a679a9654.bundle.js +1 -1
  66. package/dist/68.e25480b7770a679a9654.bundle.js.map +1 -1
  67. package/dist/8.5abe78e9d72cdbc2607f.bundle.js +3 -0
  68. package/dist/8.5abe78e9d72cdbc2607f.bundle.js.map +1 -0
  69. package/dist/{bundle.e65c5ca8080546fe24d7.bundle.js → bundle.7e4f5efd9843ba4c4905.bundle.js} +3 -3
  70. package/dist/bundle.7e4f5efd9843ba4c4905.bundle.js.map +1 -0
  71. package/dist/css/bootstrap-graphdb-theme.css +21 -3
  72. package/dist/css/clustermanagement.css +14 -1
  73. package/dist/css/fonts/icons.eot +0 -0
  74. package/dist/css/fonts/icons.svg +1 -0
  75. package/dist/css/fonts/icons.ttf +0 -0
  76. package/dist/css/fonts/icons.woff +0 -0
  77. package/dist/font/{icons.b601f6618abd131665211ff4ec9ad6b2.eot → icons.23e96f215ba03e98233de883d2c30b60.eot} +0 -0
  78. package/dist/img/{icons.6466330b5ada72a12e1aa10044720eec.svg → icons.ab6168834b8775f511d09c8fad540b27.svg} +1 -0
  79. package/dist/index.html +5 -5
  80. package/dist/js/angular/autocomplete/templates/modal/add-label.html +9 -8
  81. package/dist/js/angular/clustermanagement/templates/modal/add-nodes-dialog.html +17 -19
  82. package/dist/js/angular/clustermanagement/templates/modal/cluster-create-dialog.html +20 -21
  83. package/dist/js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html +8 -9
  84. package/dist/js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html +9 -8
  85. package/dist/js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html +18 -19
  86. package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +10 -10
  87. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  88. package/dist/js/angular/core/templates/modal/copy-to-clipboard-modal.html +9 -10
  89. package/dist/js/angular/externalsync/templates/deleteConnector.html +4 -4
  90. package/dist/js/angular/graphexplore/templates/modal/save-graph.html +9 -10
  91. package/dist/js/angular/import/templates/settingsModal.html +231 -231
  92. package/dist/js/angular/settings/modal/location-settings.html +15 -16
  93. package/dist/js/angular/templates/modal/add-fedx-remote-repo.html +17 -15
  94. package/dist/js/angular/templates/modal/add-location.html +15 -15
  95. package/dist/js/angular/templates/modal/edit-location.html +8 -8
  96. package/dist/main.12e572893a7926387b80.css +1 -0
  97. package/dist/pages/autocomplete.html +1 -1
  98. package/dist/pages/choose-repository-type.html +1 -1
  99. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  100. package/dist/pages/create-index.html +5 -5
  101. package/dist/pages/createConnector.html +134 -137
  102. package/dist/pages/dependencies.html +1 -1
  103. package/dist/pages/domainRangeInfo.html +2 -2
  104. package/dist/pages/edit.html +1 -1
  105. package/dist/pages/explore.html +1 -1
  106. package/dist/pages/export.html +1 -1
  107. package/dist/pages/find.html +1 -1
  108. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  109. package/dist/pages/graphs-visualizations.html +7 -7
  110. package/dist/pages/home.html +1 -1
  111. package/dist/pages/import.html +1 -1
  112. package/dist/pages/jdbc-create.html +5 -5
  113. package/dist/pages/monitor/queries.html +1 -1
  114. package/dist/pages/monitor/resources.html +2 -2
  115. package/dist/pages/namespaces.html +2 -2
  116. package/dist/pages/plugins.html +1 -1
  117. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  118. package/dist/pages/rdfrank.html +2 -2
  119. package/dist/pages/repositories.html +2 -2
  120. package/dist/pages/repository.html +2 -2
  121. package/dist/pages/similarity-indexes.html +3 -3
  122. package/dist/pages/sparql-template-create.html +5 -5
  123. package/dist/pages/sparql.html +3 -3
  124. package/dist/pages/webapi.html +2 -2
  125. package/dist/plugins.js +3 -12
  126. package/dist/res/swagger/fonts/icons.woff +0 -0
  127. package/dist/res/swagger/index.html +27 -27
  128. package/package.json +1 -1
  129. package/dist/10.91f8aa0494201bb12b25.bundle.js.map +0 -1
  130. package/dist/104.42f8ece72006965c902d.bundle.js.map +0 -1
  131. package/dist/11.32f5a72d66bb699e9e8b.bundle.js.map +0 -1
  132. package/dist/111.a360abaec5e5926aae34.bundle.js +0 -2
  133. package/dist/111.a360abaec5e5926aae34.bundle.js.map +0 -1
  134. package/dist/112.83afabc13f11ea9e326e.bundle.js +0 -2
  135. package/dist/112.83afabc13f11ea9e326e.bundle.js.map +0 -1
  136. package/dist/113.9f4c896b53aa300a5f38.bundle.js +0 -2
  137. package/dist/113.9f4c896b53aa300a5f38.bundle.js.map +0 -1
  138. package/dist/114.afa49d7867c1ce3b08c2.bundle.js +0 -2
  139. package/dist/114.afa49d7867c1ce3b08c2.bundle.js.map +0 -1
  140. package/dist/115.bbf8829ee8f466f85862.bundle.js +0 -2
  141. package/dist/115.bbf8829ee8f466f85862.bundle.js.map +0 -1
  142. package/dist/116.a4460f77635888e013b1.bundle.js +0 -2
  143. package/dist/116.a4460f77635888e013b1.bundle.js.map +0 -1
  144. package/dist/119.e60f7d27cb5876b3a601.bundle.js +0 -2
  145. package/dist/119.e60f7d27cb5876b3a601.bundle.js.map +0 -1
  146. package/dist/123.207528c97d229de16991.bundle.js +0 -2
  147. package/dist/123.207528c97d229de16991.bundle.js.map +0 -1
  148. package/dist/130.c2f5c98e78bd22743ee4.bundle.js +0 -2
  149. package/dist/130.c2f5c98e78bd22743ee4.bundle.js.map +0 -1
  150. package/dist/138.84fb24a9535f4d6d8c59.bundle.js +0 -2
  151. package/dist/138.84fb24a9535f4d6d8c59.bundle.js.map +0 -1
  152. package/dist/149.8ca7b7242b61bd7a8363.bundle.js +0 -2
  153. package/dist/149.8ca7b7242b61bd7a8363.bundle.js.map +0 -1
  154. package/dist/152.bd0fd3cba70a2e267646.bundle.js +0 -2
  155. package/dist/152.bd0fd3cba70a2e267646.bundle.js.map +0 -1
  156. package/dist/153.9272a2423ac2aa6a148b.bundle.js +0 -2
  157. package/dist/153.9272a2423ac2aa6a148b.bundle.js.map +0 -1
  158. package/dist/2.3a65d34c46b96a708181.bundle.js.map +0 -1
  159. package/dist/21.111cc98aaf2436b81eea.bundle.js +0 -2
  160. package/dist/21.111cc98aaf2436b81eea.bundle.js.map +0 -1
  161. package/dist/23.9d969421ffc11412b35a.bundle.js.map +0 -1
  162. package/dist/25.fffc5233e718b047a34f.bundle.js +0 -2
  163. package/dist/25.fffc5233e718b047a34f.bundle.js.map +0 -1
  164. package/dist/27.357929bef6f5df788b8e.bundle.js +0 -2
  165. package/dist/27.357929bef6f5df788b8e.bundle.js.map +0 -1
  166. package/dist/3.36fe2e671f737648a477.bundle.js +0 -2
  167. package/dist/3.36fe2e671f737648a477.bundle.js.map +0 -1
  168. package/dist/30.e2cd19e99cf6ecdad6ac.bundle.js +0 -2
  169. package/dist/30.e2cd19e99cf6ecdad6ac.bundle.js.map +0 -1
  170. package/dist/44.dbb910f04027f51eeedd.bundle.js.map +0 -1
  171. package/dist/48.d1b4cfee2f0e084c1d73.bundle.js +0 -2
  172. package/dist/48.d1b4cfee2f0e084c1d73.bundle.js.map +0 -1
  173. package/dist/5.e112b0d6e101e0766cda.bundle.js +0 -2
  174. package/dist/5.e112b0d6e101e0766cda.bundle.js.map +0 -1
  175. package/dist/67.62375b1b4925fff2fe7c.bundle.js +0 -2
  176. package/dist/67.62375b1b4925fff2fe7c.bundle.js.map +0 -1
  177. package/dist/8.7f3059d43e0db8ff7dd5.bundle.js +0 -3
  178. package/dist/8.7f3059d43e0db8ff7dd5.bundle.js.map +0 -1
  179. package/dist/bundle.e65c5ca8080546fe24d7.bundle.js.map +0 -1
  180. package/dist/main.b9612509bb46028befd2.css +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/lib/FileSaver-patch.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/angular/utils/file-types.js","webpack:///./src/js/angular/explore/controllers.js"],"names":["saveAs","view","navigator","test","userAgent","doc","document","get_URL","URL","webkitURL","save_link","createElementNS","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","setTimeout","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","event","i","concat","length","listener","call","auto_bom","blob","type","Blob","FileSaver","name","object_url","target_view","slice","this","blob_changed","dispatch_all","split","fs_error","createObjectURL","location","href","undefined","open","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","download","node","MouseEvent","dispatchEvent","webkitSlice","size","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","error","code","ABORT_ERR","forEach","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","prototype","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","self","window","content","module","exports","Error","__webpack_amd_options__","angular","value","extension","ExploreCtrl","$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","$jwtAuth","$translate","$languageService","principal","getPrincipal","yasr","loading","getActiveRepository","isTripleResource","tripleParam","encodeURIComponent","param","getRdfStarLocalNames","triple","localNames","replace","uri","getLocalName","role","search","inferenceNamed","inferences","id","title","context","blanks","inference","appSettings","sameAs","formats","editor","getQueryType","$watch","usedPrefixes","loadResource","getNamespaces","success","data","results","bindings","e","prefix","namespace","getElementById","getUsedPrefixes","persistency","hideHeader","locale","getLanguage","instant","getError","localName","uriParam","hash","absUrl","url","method","params","headers","details","encodeURI","exploreResource","isContextAvailable","goToGraphsViz","path","toggleOntoLoader","showLoader","yasrInnerContainer","element","resultsLoader","addClass","removeClass","$","ajax","bnodes","Accept","done","textStatus","jqXhr","setResponse","fail","downloadExport","format","encodedURI","response","indexOf","JSON","stringify","ua","toLowerCase","msg","changeRole","roleVar","changeInference","copyToClipboardResult","openCopyToClipboardModal","$on","args","options","changeLanguage","FindResourceCtrl","$q","$timeout","AutocompleteRestService","checkAutocompleteStatus","warningMsg","warning","allowHtml","autocompleteEnabled","getAllNamespacesForActiveRepository","namespaces","map","loader","validateRdfUri","hasAngleBrackets","lastIndexOf","noAngleBrackets","validProtocol","validPath","schemaSlashesIdx","substring","expandedUri","submit","setFormInvalid","isDirty","form","$dirty","getAutocompleteSuggestions","str","newExpandedUri","getNamespaceUriForPrefix","val","promise","query","when","inputChangedFn","selectedUriCallback","selected","selectedUri","isDefined","click","EditResourceCtrl","$modal","StatementsService","newRow","subject","object","datatype","newResource","datatypeOptions","getDatatypeOptions","activeRepository","getClassInstancesDetails","getDetails","getGraph","then","res","statements","buildStatements","addStatement","newRowPredicate","$setSubmitted","newRowObject","newRowContext","$valid","push","copy","$setPristine","$setUntouched","removeStatement","idx","splice","checkValid","isUndefined","validEditRow","rowform","viewTrig","templateUrl","controller","resolve","transformToTrig","timer","cancel","validateUri","check","text","count","match","trim","ViewTrigCtrl","$modalInstance","trig","dismiss","$inject"],"mappings":"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","file":"8.7f3059d43e0db8ff7dd5.bundle.js","sourcesContent":["/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 2015-05-07.2\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name) {\n\t\t\tblob = auto_bom(blob);\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t//window.open('data:attachment/csv;charset=utf-8,' + object_url);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name) {\n\t\t\treturn new FileSaver(blob, name);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name) {\n\t\t\treturn navigator.msSaveOrOpenBlob(auto_bom(blob), name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","angular.module('graphdb.workbench.utils.filetypes', [])\n .value('FileTypes', [\n {name: 'JSON', type: 'application/rdf+json', extension: '.json'},\n {name: 'JSON-LD', type: 'application/ld+json', extension: '.jsonld'},\n {name: 'RDF-XML', type: 'application/rdf+xml', extension: '.rdf'},\n {name: 'N3', type: 'text/rdf+n3', extension: '.n3'},\n {name: 'N-Triples', type: 'text/plain', extension: '.nt'},\n {name: 'N-Quads', type: 'text/x-nquads', extension: '.nq'},\n {name: 'Turtle', type: 'text/turtle', extension: '.ttl'},\n {name: 'Turtle*', type: 'application/x-turtlestar', extension: '.ttls'},\n {name: 'TriX', type: 'application/trix', extension: '.trix'},\n {name: 'TriG', type: 'application/x-trig', extension: '.trig'},\n {name: 'TriG*', type: 'application/x-trigstar', extension: '.trigs'},\n {name: 'Binary RDF', type: 'application/x-binary-rdf', extension: '.brf'}\n ]);\n","import 'angular/utils/file-types';\nimport YASR from 'lib/yasr.bundled';\nimport {saveAs} from 'lib/FileSaver-patch';\nimport {decodeHTML} from \"../../../app\";\n\nconst modules = [\n 'ngCookies',\n 'ngRoute',\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.explore.services',\n 'graphdb.workbench.utils.filetypes'\n];\n\nangular\n .module('graphdb.framework.explore.controllers', modules)\n .controller('FindResourceCtrl', FindResourceCtrl)\n .controller('ExploreCtrl', ExploreCtrl)\n .controller('EditResourceCtrl', EditResourceCtrl)\n .controller('ViewTrigCtrl', ViewTrigCtrl);\n\nExploreCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$routeParams', '$repositories', 'ClassInstanceDetailsService', 'ModalService', 'RDF4JRepositoriesRestService', 'FileTypes', '$jwtAuth', '$translate', '$languageService'];\n\nfunction ExploreCtrl($scope, $http, $location, toastr, $routeParams, $repositories, ClassInstanceDetailsService, ModalService, RDF4JRepositoriesRestService, FileTypes, $jwtAuth, $translate, $languageService) {\n\n // We need to get sameAs and inference for the current user\n const principal = $jwtAuth.getPrincipal();\n $scope.loading = false;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.isTripleResource = function () {\n return !!$scope.tripleParam;\n };\n\n // TODO move this to core\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n $scope.getRdfStarLocalNames = function(triple) {\n let localNames = triple.slice();\n const trimmed = triple.replace(/[<>]+/g, '');\n trimmed.split(' ').forEach(uri => {\n localNames = localNames.replace(uri, ClassInstanceDetailsService.getLocalName(uri));\n });\n return localNames;\n };\n\n // Defaults\n $scope.role = $location.search().role ? $location.search().role : 'subject';\n // Fixed inference when we're showing the context tab and a named graph\n $scope.inferenceNamed = 'explicit';\n $scope.inferences = [\n {id: 'all', title: 'explore.explicit.implicit'},\n {id: 'explicit', title: 'explore.explicit'},\n {id: 'implicit', title: 'explore.implicit'}\n ];\n $scope.context = '';\n\n $scope.getLocalName = function (uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n };\n\n $scope.blanks = true;\n\n // Get the predefined settings for sameAs and inference per user\n $scope.inference = principal.appSettings['DEFAULT_INFERENCE'] ? 'all' : 'explicit';\n $scope.sameAs = principal.appSettings['DEFAULT_INFERENCE'] && principal.appSettings['DEFAULT_SAMEAS'];\n\n $scope.formats = FileTypes;\n\n let yasr;\n\n window.editor = {};\n window.editor.getQueryType = function () {\n return 'RESOURCE';\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.getActiveRepository()) {\n if ($scope.usedPrefixes) {\n $scope.loadResource();\n } else {\n RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true,\n locale: $languageService.getLanguage()\n });\n $scope.loadResource();\n }).error(function (data) {\n toastr.error($translate.instant('get.namespaces.error.msg', {error: getError(data)}));\n });\n }\n }\n });\n\n $scope.loadResource = function () {\n if ($routeParams.prefix && $routeParams.localName && $scope.usedPrefixes[$routeParams.prefix]) {\n // /resource/PREFIX/LOCAL -> URI = expanded PREFIX + LOCAL\n $scope.uriParam = $scope.usedPrefixes[$routeParams.prefix] + $routeParams.localName;\n } else if ($location.search().uri) {\n // uri parameter -> URI\n $scope.uriParam = $location.search().uri + ($location.hash() ? '#' + $location.hash() : '');\n } else if ($location.search().triple) {\n // uri parameter -> URI\n $scope.tripleParam = $location.search().triple + ($location.hash() ? '#' + $location.hash() : '');\n } else {\n // absolute URI -> URI\n $scope.uriParam = $location.absUrl();\n }\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n // remove angle brackets which were allowed when filling out the search input field\n // but are forbidden when passing the uri as a query parameter\n $scope.uriParam = $scope.uriParam && $scope.uriParam.replace(/<|>/g, \"\");\n\n // Get resource details\n $http({\n url: 'rest/explore/details',\n method: 'GET',\n params: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n context: $scope.context\n },\n headers: {\n 'Accept': 'application/json'\n }\n }).success(function (data) {\n $scope.details = data;\n $scope.context = $scope.details.context;\n if ($scope.details.uri !== 'object') {\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }\n }).error(function (data) {\n toastr.error($translate.instant('explore.error.resource.details', {data: getError(data)}));\n });\n\n $scope.exploreResource();\n };\n\n $scope.isContextAvailable = function () {\n return $scope.context !== null && $scope.context === \"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph\";\n };\n\n $scope.goToGraphsViz = function () {\n $location.path('graphs-visualizations').search('uri', $scope.uriParam);\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n const opacityHideClass = 'opacity-hide';\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass(opacityHideClass);\n resultsLoader.removeClass(opacityHideClass);\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass(opacityHideClass);\n resultsLoader.addClass(opacityHideClass);\n }\n };\n\n // Get resource table\n $scope.exploreResource = function () {\n toggleOntoLoader(true);\n if ($routeParams.context != null) {\n $scope.context = $routeParams.context;\n }\n const headers = {Accept: 'application/x-graphdb-table-results+json'};\n $.ajax({\n method: 'GET',\n url: 'rest/explore/graph',\n data: {\n uri: $scope.uriParam,\n triple: $scope.tripleParam,\n inference: $scope.inference,\n role: $scope.role,\n bnodes: $scope.blanks,\n sameAs: $scope.sameAs,\n context: $scope.context\n },\n headers: headers\n }).done(function (data, textStatus, jqXhr) {\n toggleOntoLoader(false);\n // Pass the xhr argument first as the yasr expects it that way. See https://ontotext.atlassian.net/browse/GDB-3939\n yasr.setResponse(jqXhr, textStatus);\n }).fail(function (data) {\n toastr.error($translate.instant('explore.error.resource', {data: getError(data)}));\n toggleOntoLoader(false);\n });\n };\n\n $scope.downloadExport = function (format) {\n let param;\n let encodedURI;\n if ($scope.uriParam) {\n param = 'uri=';\n encodedURI = encodeURIComponent($scope.uriParam);\n } else {\n param = 'triple=';\n encodedURI = encodeURIComponent($scope.tripleParam);\n }\n\n $http({\n method: 'GET',\n url: 'rest/explore/graph?' + param + encodedURI +\n \"&role=\" + $scope.role +\n \"&inference=\" + $scope.inference +\n \"&bnodes=\" + $scope.blanks +\n \"&sameAs=\" + $scope.sameAs +\n ($scope.context ? \"&context=\" + encodeURIComponent($scope.context) : \"\"),\n headers: {\n 'Accept': format.type\n }\n }).success(function (response) {\n let data = response;\n if (format.type.indexOf('json') > -1) {\n data = JSON.stringify(data);\n }\n // TODO: Use bowser library to get the browser type\n const ua = navigator.userAgent.toLowerCase();\n if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) {\n window.open('data:attachment/csv;filename=\"statements.' + format.extension + '\",' + encodeURIComponent(data), 'statements.' + format.extension);\n } else {\n const file = new Blob([data], {type: format.type});\n saveAs(file, 'statements' + format.extension);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.changeRole = function (roleVar) {\n $scope.role = roleVar;\n $scope.exploreResource();\n };\n\n $scope.changeInference = function (inference) {\n $scope.inference = inference;\n $scope.exploreResource();\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.$on('language-changed', function (event, args) {\n if (yasr && yasr.options) {\n yasr.options.locale = args.locale;\n yasr.changeLanguage(args.locale);\n }\n });\n}\n\nFindResourceCtrl.$inject = ['$scope', '$http', '$location', '$repositories', '$q', '$timeout', 'toastr', 'AutocompleteRestService', 'ClassInstanceDetailsService', '$routeParams', 'RDF4JRepositoriesRestService', '$translate'];\n\nfunction FindResourceCtrl($scope, $http, $location, $repositories, $q, $timeout, toastr, AutocompleteRestService, ClassInstanceDetailsService, $routeParams, RDF4JRepositoriesRestService, $translate) {\n $scope.submit = submit;\n $scope.getAutocompleteSuggestions = getAutocompleteSuggestions;\n $scope.inputChangedFn = inputChangedFn;\n $scope.selectedUriCallback = selectedUriCallback;\n\n $scope.selectedUri = {name: \"\"};\n\n $scope.autocompleteEnabled = false;\n\n if (angular.isDefined($routeParams.search)) {\n $timeout(function () {\n $('#resources_finder_value').val($routeParams.search);\n $('.search-button').click();\n }, 500);\n }\n\n function checkAutocompleteStatus() {\n AutocompleteRestService.checkAutocompleteStatus()\n .success(function (response) {\n if (!response) {\n const warningMsg = decodeHTML($translate.instant('explore.autocomplete.warning.msg'));\n toastr.warning('', `<div class=\"autocomplete-toast\"><a href=\"autocomplete\">${warningMsg}</a></div>`,\n {allowHtml: true});\n }\n $scope.autocompleteEnabled = response;\n })\n .error(function () {\n toastr.error($translate.instant('explore.error.autocomplete'));\n });\n }\n\n function getAllNamespacesForActiveRepository() {\n RDF4JRepositoriesRestService.getNamespaces($repositories.getActiveRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n }\n\n function validateRdfUri(value) {\n // has a pair of angle brackets and the closing one is the last char of the string\n const hasAngleBrackets = value.indexOf(\"<\") >= 0 && value.lastIndexOf(\">\") === value.length - 1;\n\n // does not have a pair of angle bracket - if only one of the is available that is incorrect\n const noAngleBrackets = value.indexOf(\"<\") === -1 && value.lastIndexOf(\">\") === -1;\n\n const validProtocol = /^<?[http|urn].*>?$/.test(value) && (hasAngleBrackets || noAngleBrackets);\n let validPath = false;\n if (validProtocol) {\n if (value.indexOf(\"http\") >= 0) {\n const schemaSlashesIdx = value.indexOf('//');\n validPath = schemaSlashesIdx > 4\n && value.substring(schemaSlashesIdx + 2).length > 0;\n } else if (value.indexOf(\"urn\") >= 0) {\n validPath = value.substring(4).length > 0;\n }\n }\n return validProtocol && validPath;\n }\n\n let uri;\n\n function submit(uri) {\n function setFormInvalid(isDirty) {\n // does not work yet\n $timeout(function () {\n if ($scope.form) {\n $scope.form.$dirty = isDirty;\n }\n });\n }\n\n if (!uri) {\n uri = document.getElementById(\"resources_finder_value\").value;\n }\n if (uri && validateRdfUri(uri)) {\n setFormInvalid(false);\n $location\n .path('resource')\n .search('uri', uri);\n } else {\n setFormInvalid(true);\n if (uri) {\n toastr.error($translate.instant('explore.error.invalid.input'));\n }\n }\n }\n\n if ($scope.getActiveRepository()) {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n }\n\n // use a global var to keep old uri in order to change it when a new one appears\n let expandedUri;\n\n function getAutocompleteSuggestions(str) {\n // expand prefix to uri only if the last character of the input is a colon and\n // there are no angle brackets because they are allowed only for absolute uris\n const ANGLE_BRACKETS_REGEX = /<|>/;\n if (!ANGLE_BRACKETS_REGEX.test(str) && str.slice(-1) === ':') {\n const newExpandedUri = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, str.slice(0, -1));\n expandedUri = (newExpandedUri !== expandedUri) ? newExpandedUri : expandedUri;\n if (expandedUri) {\n $(\"#resources_finder_value\").val(expandedUri);\n }\n }\n\n let promise;\n if ($scope.autocompleteEnabled) {\n // add semicolon after the expanded uri in order to filter only by local names for this uri\n const query = str.replace(expandedUri, expandedUri + ';');\n promise = AutocompleteRestService.getAutocompleteSuggestions(query);\n } else {\n // return empty promise\n promise = $q.when($scope.autocompleteEnabled);\n }\n return promise;\n }\n\n $scope.$on('repositoryIsSet', function () {\n checkAutocompleteStatus();\n getAllNamespacesForActiveRepository();\n });\n\n function inputChangedFn() {\n uri = document.getElementById(\"resources_finder_value\").value;\n $scope.form.$dirty = !(uri && validateRdfUri(uri));\n }\n\n function selectedUriCallback(selected) {\n $scope.selectedUri = {name: selected.title};\n submit($scope.selectedUri.name);\n }\n}\n\nEditResourceCtrl.$inject = ['$scope', '$http', '$location', 'toastr', '$repositories', '$modal', '$timeout', 'ClassInstanceDetailsService', 'StatementsService', 'RDF4JRepositoriesRestService', '$translate'];\n\nfunction EditResourceCtrl($scope, $http, $location, toastr, $repositories, $modal, $timeout, ClassInstanceDetailsService, StatementsService, RDF4JRepositoriesRestService, $translate) {\n $scope.uriParam = $location.search().uri;\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newResource = false;\n $scope.datatypeOptions = StatementsService.getDatatypeOptions();\n\n $scope.activeRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.getClassInstancesDetails = getClassInstancesDetails;\n $scope.addStatement = addStatement;\n $scope.removeStatement = removeStatement;\n $scope.getLocalName = getLocalName;\n $scope.checkValid = checkValid;\n $scope.validEditRow = validEditRow;\n $scope.viewTrig = viewTrig;\n $scope.save = save;\n\n function getClassInstancesDetails() {\n RDF4JRepositoriesRestService.getNamespaces($scope.activeRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n uri: e.namespace.value\n };\n });\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n\n ClassInstanceDetailsService.getDetails($scope.uriParam)\n .success(function (data) {\n $scope.details = data;\n $scope.details.encodeURI = encodeURIComponent($scope.details.uri);\n }).error(function (data) {\n toastr.error($translate.instant('explore.error.resource.details', {data: getError(data)}));\n });\n\n ClassInstanceDetailsService.getGraph($scope.uriParam)\n .then(function (res) {\n const statements = StatementsService.buildStatements(res, $scope.uriParam);\n $scope.statements = statements;\n $scope.newResource = !statements.length;\n });\n }\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n if ($scope.activeRepository()) {\n $scope.getClassInstancesDetails();\n }\n });\n\n $scope.validateUri = function (val) {\n let check = true;\n const text = val ? val : '';\n\n if (text.indexOf(':') === -1) {\n check = false;\n } else {\n const prefix = text.substring(0, text.indexOf(':'));\n const uriForPrefixNotAvailable = ClassInstanceDetailsService.getNamespaceUriForPrefix($scope.namespaces, prefix) === '';\n if (uriForPrefixNotAvailable) {\n // TODO: There's this reported useless escape character for this regex, but I'm not sure if and can I fix it.\n if (/^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(text) === false) {\n check = false;\n }\n\n const count = text.match(/\\//g);\n\n if (count === undefined || count.length < 3) {\n check = false;\n }\n } else {\n const restText = text.substring(text.indexOf(':') + 1).trim();\n if (restText.length < 1) {\n check = false;\n }\n }\n }\n\n return check;\n };\n\n function addStatement() {\n $scope.newRowPredicate.$setSubmitted();\n $scope.newRowObject.$setSubmitted();\n $scope.newRowContext.$setSubmitted();\n if ($scope.newRowPredicate.$valid && $scope.newRowObject.$valid && $scope.newRowContext.$valid) {\n $scope.statements.push(angular.copy($scope.newRow));\n $scope.newRow = {\n subject: $scope.uriParam,\n object: {\n type: 'uri',\n datatype: ''\n }\n };\n $scope.newRowPredicate.$setPristine();\n $scope.newRowPredicate.$setUntouched();\n $scope.newRowObject.$setPristine();\n $scope.newRowObject.$setUntouched();\n $scope.newRowContext.$setPristine();\n $scope.newRowContext.$setUntouched();\n }\n }\n\n function checkValid(data) {\n if (!angular.isUndefined(data)) {\n return true;\n }\n return $translate.instant('explore.validation');\n }\n\n function validEditRow() {\n return $scope.rowform.$valid;\n }\n\n function removeStatement(idx) {\n $scope.statements.splice(idx, 1);\n }\n\n function getLocalName(uri) {\n return ClassInstanceDetailsService.getLocalName(uri);\n }\n\n function viewTrig() {\n $modal.open({\n templateUrl: 'js/angular/explore/templates/viewTrig.html',\n controller: 'ViewTrigCtrl',\n size: 'lg',\n resolve: {\n data: function () {\n return StatementsService.transformToTrig($scope.statements);\n }\n }\n });\n }\n\n function save() {\n const method = $scope.newResource ? 'POST' : 'PUT';\n $http({\n method: method,\n url: 'rest/resource?uri=' + encodeURIComponent($scope.uriParam),\n headers: {\n 'Content-Type': 'application/x-trig'\n },\n data: StatementsService.transformToTrig($scope.statements)\n }).success(function () {\n toastr.success($translate.instant('explore.resource.saved'));\n const timer = $timeout(function () {\n $location.path('resource').search('uri', $scope.uriParam);\n }, 500);\n $scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n toastr.error(getError(data));\n });\n }\n}\n\nViewTrigCtrl.$inject = ['$scope', '$modalInstance', 'data'];\n\nfunction ViewTrigCtrl($scope, $modalInstance, data) {\n $scope.trig = data;\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}