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/angular/core/directives/queryeditor/query-editor.controller.js"],"names":["QueryEditorCtrl","$scope","$timeout","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","$window","$jwtAuth","RDF4JRepositoriesRestService","MonitoringRestService","LocalStorageAdapter","LSKeys","$translate","defaultTabConfig","id","name","query","inference","sameAs","checkQueryIntervalId","principal","getPrincipal","initTabs","scope","appSettings","DEFAULT_INFERENCE","DEFAULT_SAMEAS","skipCountQuery","EXECUTE_COUNT","ignoreSharedQueries","IGNORE_SHARED_QUERIES","tabsData","tabs","get","TABS_STATE","$watchCollection","newVal","oldVal","saveQueryToLocal","currentQuery","$on","deleteCachedSparqlResults","currentQueryTab","isActiveRepoOntopType","sameAsBtn","document","getElementById","disabled","removeAttribute","shouldDisableSameAs","forEach","tab","index","set","setLoader","isRunning","progressMessage","extraMessage","noTimer","yasrInnerContainer","angular","element","queryIsRunning","queryStartTime","Date","now","countTimeouted","noLoaderTimer","addClass","currentTrackAlias","abortRequested","removeClass","$$phase","$apply","fixSizesOnHorizontalViewModeSwitch","verticalView","visibleWindowHeight","window","innerHeight","documentElement","clientHeight","body","orientationViewMode","viewMode","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","editor","timer","cancel","yasr","container","resize","showHideEditor","foo","params","newRepo","item","yasrData","undefined","queryType","resultsCount","allResultsCount","sizeDelta","errorMessage","repositoryError","selectTab","$","runQuery","changePage","explain","executedQueryTab","getQueryType","warning","instant","explainRequested","currentTabConfig","resetCurrentTabConfig","lastRunQueryMode","getQueryMode","toggleSampleQueries","showSampleQueries","getSavedQueries","success","data","sampleQueries","collapse","width","error","msg","getError","getExistingTabId","existingTabId","showModal","modalSelector","shared","savedQuery","getValue","modal","findTabIndexByID","i","length","currentScope","this","hint","createElement","innerHTML","fontSize","color","backgroundColor","position","zIndex","$watch","newValue","elRect","appendChild","top","left","right","offsetWidth","parentNode","removeChild","pageSize","page","queryExists","saveTab","idx","loadTab","setValue","updateDownloadDropdown","$broadcast","options","output","outputType","customError","results","getException","setYasrResponse","textStatus","jqXhrOrErrorString","hasClass","click","TABS_STATE_CURRENT_ID","offset","allResultsCountExact","timeFinished","timeTook","customUpdateMessage","warningMessage","css","setInterval","showOrHideSaveAsDropDown","isOntop","isFedX","isActiveRepoFedXType","inferenceBtn","handleSameAsAndInferenceBtns","nocount","overrideSameAsInferenceAndNoCountIfNeeded","addNewTab","callback","tabName","isTabChangeOk","maxID","newID","newTab","push","TABS_STATE_MAXID","callbackArgs","Array","prototype","slice","call","arguments","apply","abortCurrentQuery","abortQueryByAlias","editQuery","open","templateUrl","controller","resolve","title","edit","okButtonText","result","then","queryModal","addNewSavedQuery","deleteQueryHttp","editSavedQuery","getNamespaces","namespacesLoading","getRepositoryNamespaces","usedPrefixes","bindings","e","prefix","value","namespace","namespaces","finally","changePagination","addKnownPrefixes","JSON","stringify","isDefined","querySelected","tabId","highlightNextTabChange","deleteQuery","savedQueryName","openSimpleModal","message","deleteSavedQuery","saveQuery","existingQueryErrMsg","saveQueryHttp","getLoaderMessage","timeSeconds","timeHuman","getHumanReadableSeconds","changeViewMode","VIEW_MODE","focusQueryEditor","find","is","focus","getActiveRepository","getActiveRepositoryNoError","onbeforeunload","clearInterval","mouseup","event","target","has","getQueryID","attr","$saveAsDropDown","queryValid","header","remove","isNew","info","tabEvent","relatedTarget","colors","times","highlightFun","editQueryModal","deleteQueryModal","saveQueryModal","getResultsDescription","desc","currentPageEnd","Math","min","getUpdateDescription","abs","getStaleWarningMessage","secondsAgo","round","bind","unbind","QuerySampleModalCtrl","$modalInstance","$sce","copy","trustAsHtml","ok","form","$valid","close","dismiss","module","$inject"],"mappings":"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","file":"48.d1b4cfee2f0e084c1d73.bundle.js","sourcesContent":["import 'angular/utils/local-storage-adapter';\nimport 'angular/rest/sparql.rest.service';\nimport {decodeHTML} from \"../../../../../app\";\n\nangular\n .module('graphdb.framework.core.directives.queryeditor.controllers', [\n 'graphdb.framework.utils.localstorageadapter',\n 'graphdb.framework.rest.sparql.service'\n ])\n .controller('QueryEditorCtrl', QueryEditorCtrl)\n .controller('QuerySampleModalCtrl', QuerySampleModalCtrl);\n\nQueryEditorCtrl.$inject = ['$scope', '$timeout', 'toastr', '$repositories', '$modal', 'ModalService', 'SparqlRestService', '$filter', '$window', '$jwtAuth', 'RDF4JRepositoriesRestService', 'MonitoringRestService', 'LocalStorageAdapter', 'LSKeys', '$translate'];\n\nfunction QueryEditorCtrl($scope, $timeout, toastr, $repositories, $modal, ModalService, SparqlRestService, $filter, $window, $jwtAuth, RDF4JRepositoriesRestService, MonitoringRestService, LocalStorageAdapter, LSKeys, $translate) {\n const defaultTabConfig = {\n id: \"1\",\n name: '',\n query: 'select * where { \\n' +\n '\\t?s ?p ?o .\\n' +\n '} limit 100 \\n',\n inference: true,\n sameAs: true\n };\n\n let principal = $jwtAuth.getPrincipal();\n let checkQueryIntervalId;\n if (principal) {\n initTabs($scope, principal);\n // principal is not yet set, wait for its initialization\n } else {\n $scope.$on('securityInit', function (scope) {\n principal = $jwtAuth.getPrincipal();\n initTabs(scope.currentScope, principal);\n });\n }\n\n function initTabs(scope, principal) {\n defaultTabConfig.inference = principal.appSettings.DEFAULT_INFERENCE;\n defaultTabConfig.sameAs = principal.appSettings.DEFAULT_SAMEAS;\n\n scope.skipCountQuery = !principal.appSettings.EXECUTE_COUNT;\n scope.ignoreSharedQueries = principal.appSettings.IGNORE_SHARED_QUERIES;\n scope.tabsData = scope.tabs = LocalStorageAdapter.get(LSKeys.TABS_STATE) || [defaultTabConfig];\n\n scope.$watchCollection('[currentQuery.inference, currentQuery.sameAs]', function (newVal, oldVal, scope) {\n saveQueryToLocal(scope.currentQuery);\n });\n\n scope.$on('repositoryIsSet', deleteCachedSparqlResults);\n }\n\n this.hint = document.createElement(\"span\");\n this.hint.innerHTML = $translate.instant('query.editor.autocomplete.hint');\n this.hint.style.fontSize = \"12px\";\n this.hint.style.color = \"gray\";\n this.hint.style.backgroundColor = \"white\";\n this.hint.style.position = \"absolute\";\n this.hint.style.zIndex = \"3\";\n this.hint.style.paddingLeft = 12 + \"px\";\n\n $scope.$watch(function() {\n return angular.element('.CodeMirror-hints').length;\n }, (newValue) => {\n if (newValue) {\n const elRect = angular.element('.CodeMirror-hints')[0].getBoundingClientRect();\n document.body.appendChild(this.hint);\n this.hint.style.top = elRect.top - 20 + \"px\";\n this.hint.style.left = elRect.right - this.hint.offsetWidth - 12 + \"px\";\n } else {\n this.hint && this.hint.parentNode && this.hint.parentNode.removeChild(this.hint);\n }\n });\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 1000,\n page: 1,\n allResultsCount: 0,\n resultsCount: 0\n };\n };\n\n $scope.queryExists = false;\n\n $scope.resetCurrentTabConfig();\n\n // query tab operations\n $scope.saveTab = saveTab;\n $scope.loadTab = loadTab;\n $scope.addNewTab = addNewTab;\n $scope.isTabChangeOk = isTabChangeOk;\n\n // query operations\n $scope.runQuery = runQuery;\n $scope.abortCurrentQuery = abortCurrentQuery;\n $scope.editQuery = editQuery;\n $scope.getNamespaces = getNamespaces;\n $scope.changePagination = changePagination;\n $scope.toggleSampleQueries = toggleSampleQueries;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.getExistingTabId = getExistingTabId;\n $scope.querySelected = querySelected;\n $scope.deleteQuery = deleteQuery;\n $scope.deleteQueryHttp = deleteQueryHttp;\n $scope.saveQuery = saveQuery;\n $scope.saveQueryHttp = saveQueryHttp;\n $scope.saveQueryToLocal = saveQueryToLocal;\n\n $scope.setLoader = setLoader;\n $scope.getLoaderMessage = getLoaderMessage;\n\n // query editor and results orientation\n $scope.fixSizesOnHorizontalViewModeSwitch = fixSizesOnHorizontalViewModeSwitch;\n $scope.changeViewMode = changeViewMode;\n $scope.showHideEditor = showHideEditor;\n $scope.focusQueryEditor = focusQueryEditor;\n $scope.orientationViewMode = LocalStorageAdapter.get(LSKeys.VIEW_MODE) ? LocalStorageAdapter.get(LSKeys.VIEW_MODE) === \"true\" : true;\n $scope.viewMode = 'none';\n\n // start of repository actions\n // FIXME: do we need this??\n // $scope.getActiveRepository();\n $scope.getActiveRepository = function () {\n // same as getActiveRepository() but takes into account repo errors\n return $repositories.getActiveRepository();\n };\n\n $scope.getActiveRepositoryNoError = function () {\n if (!$scope.repositoryError) {\n return $repositories.getActiveRepository();\n }\n };\n\n function saveQueryToLocal(currentQueryTab) {\n shouldDisableSameAs();\n $scope.tabs.forEach(function (tab, index) {\n if (tab.id === currentQueryTab.id) {\n $scope.tabs[index].query = currentQueryTab.query;\n // Don't store inference and sameAs values for Ontop repository,\n // because they are overridden afterwards to true\n if (!$repositories.isActiveRepoOntopType()) {\n $scope.tabs[index].inference = currentQueryTab.inference;\n $scope.tabs[index].sameAs = currentQueryTab.sameAs;\n }\n }\n });\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n }\n\n function setLoader(isRunning, progressMessage, extraMessage, noTimer) {\n const yasrInnerContainer = angular.element(document.getElementById(\"yasr-inner\"));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n $scope.noLoaderTimer = noTimer;\n yasrInnerContainer.addClass(\"hide\");\n } else {\n $scope.progressMessage = \"\";\n $scope.extraMessage = \"\";\n $scope.noLoaderTimer = false;\n $scope.currentTrackAlias = null;\n $scope.abortRequested = false;\n yasrInnerContainer.removeClass(\"hide\");\n }\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function getLoaderMessage() {\n const timeSeconds = (Date.now() - $scope.queryStartTime) / 1000;\n let timeHuman = \"\";\n let message = \"\";\n\n if (!$scope.noLoaderTimer) {\n timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n }\n\n if ($scope.progressMessage) {\n message = $translate.instant('query.editor.progress.msg', {progressMessage: $scope.progressMessage, timeHuman: timeHuman});\n } else {\n message = $translate.instant('common.running.operation', {timeHuman: timeHuman});\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += $translate.instant('query.editor.extra.msg', {extraMessage: $scope.extraMessage});\n }\n\n return message;\n }\n\n // start of query editor results orientation operations\n function fixSizesOnHorizontalViewModeSwitch(verticalView) {\n function visibleWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;\n }\n\n if (!$scope.orientationViewMode) {\n $scope.noPadding = {paddingRight: 15, paddingLeft: 0};\n\n // window.editor is undefined if no repo is selected\n if (window.editor && document.querySelector('.CodeMirror-wrap')) {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n document.getElementById('yasr').style.minHeight = newHeight + 'px';\n //window.editor.refresh();\n } else {\n let timer;\n if (verticalView) {\n timer = $timeout(function () {\n $scope.fixSizesOnHorizontalViewModeSwitch(verticalView);\n }, 100);\n } else {\n timer = $timeout($scope.fixSizesOnHorizontalViewModeSwitch, 100);\n }\n\n $scope.$on(\"$destroy\", function () {\n $timeout.cancel(timer);\n });\n }\n } else {\n if ($scope.viewMode === 'yasr') {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n //window.editor.refresh();\n } else {\n $scope.noPadding = {};\n document.querySelector('.CodeMirror-wrap').style.height = '';\n //window.editor.refresh();\n }\n document.getElementById('yasr').style.minHeight = '';\n }\n if (window.yasr && window.yasr.container) {\n $timeout(function () {\n window.yasr.container.resize();\n }, 100);\n }\n }\n\n if (!$scope.orientationViewMode) {\n showHideEditor();\n }\n\n function changeViewMode() {\n $scope.viewMode = 'none';\n $scope.orientationViewMode = !$scope.orientationViewMode;\n LocalStorageAdapter.set(LSKeys.VIEW_MODE, $scope.orientationViewMode);\n fixSizesOnHorizontalViewModeSwitch();\n }\n\n function showHideEditor() {\n fixSizesOnHorizontalViewModeSwitch(true);\n }\n\n function focusQueryEditor() {\n if (!angular.element(document).find('.editable-input').is(\":focus\")) {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n }\n\n // end of query editor results orientation operations\n\n function deleteCachedSparqlResults(foo, params) {\n if (params.newRepo) {\n $scope.tabsData = LocalStorageAdapter.get(LSKeys.TABS_STATE);\n $scope.tabsData.forEach(function (item) {\n item.yasrData = undefined;\n item.queryType = undefined;\n item.resultsCount = 0;\n item.allResultsCount = 0;\n item.sizeDelta = undefined;\n });\n\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabsData);\n $scope.tabs = $scope.tabsData;\n\n // The repository is changed. Remove error messages as well, if any\n $scope.currentQuery = {};\n $scope.errorMessage = null;\n $scope.repositoryError = null;\n }\n }\n\n function selectTab(id) {\n $timeout(function () {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }, 0);\n }\n\n window.onbeforeunload = function () {\n if ($scope.currentQuery) {\n $scope.saveTab($scope.currentQuery.id);\n }\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n };\n\n $scope.$on('$destroy', function () {\n if ($scope.currentQuery) {\n $scope.saveTab($scope.currentQuery.id);\n }\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n clearInterval(checkQueryIntervalId);\n });\n\n // start of query operations\n function runQuery(changePage, explain) {\n $scope.executedQueryTab = $scope.currentQuery ;\n if (explain) {\n if (!(window.editor.getQueryType() === 'SELECT' || window.editor.getQueryType() === 'CONSTRUCT')) {\n toastr.warning($translate.instant('query.editor.warning.msg'));\n return;\n }\n\n if ($repositories.isActiveRepoOntopType()) {\n toastr.warning($translate.instant('query.editor.virtual.repo.warning.msg'));\n return;\n }\n }\n\n $scope.explainRequested = explain;\n if (!$scope.queryIsRunning) {\n if (changePage) {\n $scope.currentTabConfig.resultsCount = 0;\n } else {\n $scope.resetCurrentTabConfig();\n }\n\n $scope.lastRunQueryMode = window.editor.getQueryMode();\n\n if ($scope.lastRunQueryMode === 'update' && $repositories.isActiveRepoOntopType()) {\n toastr.warning($translate.instant('query.editor.virtual.repo.update.warning.msg'));\n return;\n }\n\n setLoader(true, $scope.lastRunQueryMode === 'update' ? $translate.instant('query.editor.executing.update') : $translate.instant('query.editor.evaluating.query'));\n if ($scope.viewMode !== 'none') {\n $scope.viewMode = 'none';\n if ($scope.orientationViewMode) {\n $scope.fixSizesOnHorizontalViewModeSwitch();\n }\n const timer = $timeout(window.editor.query, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n } else {\n window.editor.query();\n }\n }\n }\n\n function abortCurrentQuery() {\n MonitoringRestService.abortQueryByAlias($scope.currentTrackAlias)\n .success(function () {\n $scope.abortRequested = true;\n });\n }\n\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, $translate.instant('common.refreshing.namespaces'), $translate.instant('common.extra.message'));\n $scope.namespacesLoading = true;\n\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n $scope.namespacesLoading = false;\n });\n }\n\n function changePagination() {\n runQuery(true, $scope.explainRequested);\n }\n\n $scope.$on(\"$destroy\", function () {\n clearInterval(checkQueryIntervalId);\n window.editor = null;\n window.yasr = null;\n });\n\n function toggleSampleQueries() {\n $scope.showSampleQueries = !$scope.showSampleQueries;\n if ($scope.showSampleQueries) {\n SparqlRestService.getSavedQueries()\n .success(function (data) {\n $scope.sampleQueries = data;\n $('#sampleQueriesCollapse').collapse('show').width('300px');\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('query.editor.get.saved.queries.error'));\n });\n } else {\n $('#sampleQueriesCollapse').collapse('hide');\n }\n }\n\n // Hide the sample queries when the user clicks somewhere else in the UI.\n $(document).mouseup(function (event) {\n const container = $('#sampleQueriesCollapse');\n if (!container.is(event.target) // if the target of the click isn't the container..\n && container.has(event.target).length === 0 //... nor a descendant of the container\n && $scope.showSampleQueries) {\n toggleSampleQueries();\n }\n });\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.add.known.prefixes.error'));\n return true;\n });\n }\n\n function querySelected(query) {\n const tabId = getExistingTabId(query);\n $scope.toggleSampleQueries();\n\n if ($scope.isTabChangeOk(false)) {\n $scope.highlightNextTabChange = true;\n if (!angular.isDefined(tabId)) {\n $scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n }\n\n function getExistingTabId(query) {\n let existingTabId = undefined;\n $scope.tabsData.forEach(function (item) {\n if (item.name === query.name && item.query === query.body) {\n existingTabId = item.id;\n return item;\n }\n });\n return existingTabId;\n }\n\n function editQuery(query) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/core/directives/queryeditor/templates/query-sample.html',\n controller: 'QuerySampleModalCtrl',\n resolve: {\n data: function () {\n return {\n title: $translate.instant('query.editor.edit.saved.query', {name: query.name}),\n query: query,\n edit: true,\n okButtonText: $translate.instant('common.save.btn')\n };\n }\n }\n });\n\n modalInstance.result.then(function (queryModal) {\n const data = {\n name: queryModal.name,\n body: queryModal.body,\n shared: queryModal.shared\n };\n if (query.name !== queryModal.name) {\n SparqlRestService.addNewSavedQuery(data)\n .success(function () {\n $scope.deleteQueryHttp(query.name, true);\n })\n .error(function (error) {\n const msg = getError(error);\n toastr.error(msg, $translate.instant('query.editor.edit.saved.query.error'));\n });\n } else {\n SparqlRestService.editSavedQuery(data)\n .success(function () {\n $('#editQueryContainer').modal('hide');\n $scope.toggleSampleQueries();\n toastr.success($translate.instant('query.editor.edit.saved.query.success.msg', {name: query.name}));\n })\n .error(function (error) {\n const msg = getError(error);\n toastr.error(msg, $translate.instant('query.editor.edit.saved.query.error'));\n });\n }\n });\n }\n\n function deleteQueryHttp(savedQueryName, edit) {\n SparqlRestService.deleteSavedQuery(savedQueryName)\n .success(function () {\n $scope.toggleSampleQueries();\n if (!edit) {\n toastr.success($translate.instant('query.editor.delete.saved.query.success.msg', {savedQueryName: savedQueryName}));\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('query.editor.delete.saved.query.error'));\n });\n }\n\n function deleteQuery(savedQueryName) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm'),\n message: $translate.instant('query.editor.delete.saved.query.warning.msg', {savedQueryName: savedQueryName}),\n warning: true\n }).result\n .then(function () {\n $scope.deleteQueryHttp(savedQueryName);\n });\n }\n\n function saveQueryHttp(query) {\n SparqlRestService.addNewSavedQuery(query)\n .success(function () {\n toastr.success($translate.instant('query.editor.save.saved.query.success.msg', {name: query.name}));\n })\n .error(function (data) {\n let msg = getError(data);\n toastr.error(msg, $translate.instant('query.editor.create.saved.query.error'));\n // TODO: This condition will always be true\n if (msg = \"Query '\" + query.name + \"' already exists!\") {\n query.query = query.body;\n const queryExists = true;\n $scope.saveQuery(query, queryExists);\n }\n });\n }\n\n function saveQuery(query, queryExists) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/core/directives/queryeditor/templates/query-sample.html',\n controller: 'QuerySampleModalCtrl',\n resolve: {\n data: function () {\n return {\n title: $translate.instant('query.editor.create.saved.query.msg'),\n query: {name: query.name, body: query.query, shared: query.shared},\n edit: false,\n okButtonText: $translate.instant('common.create.btn'),\n queryExists: queryExists,\n existingQueryErrMsg: decodeHTML($translate.instant('query.sample.existing.query.warning', {name: query.name}))\n };\n }\n }\n });\n\n modalInstance.result.then(function (query) {\n $scope.saveQueryHttp(query);\n }, function () {\n });\n }\n\n // end of query operations\n\n function showModal(modalSelector) {\n return function (name, query, shared) {\n $scope.savedQuery = {\n name: name,\n query: query || window.editor.getValue(),\n shared: shared\n };\n $(modalSelector).modal('show');\n };\n }\n\n\n // start of query tab operations\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabsData.length; i++) {\n const tab = $scope.tabsData[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n function saveTab(id) {\n const idx = findTabIndexByID(id);\n // Tab was deleted, don't try to save it's state\n if (idx === undefined) {\n return {};\n }\n const tab = $scope.tabsData[idx];\n //tab.query = window.editor.getValue();\n $scope.saveQueryToLocal(tab);\n return tab;\n }\n\n let maxID = LocalStorageAdapter.get(LSKeys.TABS_STATE_MAXID) || 1;\n\n function addNewTab(callback, tabName, savedQuery) { // optional callback to call after tab has been added\n if (!isTabChangeOk(true)) {\n return;\n }\n let defaultTabConfig;\n if (tabName || savedQuery) {\n defaultTabConfig = {\n id: \"1\",\n name: tabName,\n query: savedQuery,\n inference: principal.appSettings.DEFAULT_INFERENCE,\n sameAs: principal.appSettings.DEFAULT_SAMEAS\n };\n } else {\n defaultTabConfig = {\n id: \"1\",\n name: '',\n query: 'select * where { \\n' +\n '\\t?s ?p ?o .\\n' +\n '} limit 100 \\n',\n inference: principal.appSettings.DEFAULT_INFERENCE,\n sameAs: principal.appSettings.DEFAULT_SAMEAS\n };\n }\n\n maxID++;\n const newID = '' + maxID;\n $scope.tabsData = $scope.tabs;\n\n const newTab = defaultTabConfig;\n newTab.id = newID;\n\n $scope.tabsData.push(newTab);\n\n LocalStorageAdapter.set(LSKeys.TABS_STATE_MAXID, maxID);\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabsData);\n const callbackArgs = Array.prototype.slice.call(arguments, 1); // skip one argument, i.e. the callback itself\n $timeout(function () {\n $scope.$apply();\n selectTab(newID);\n if (callback) {\n callback.apply(this, callbackArgs);\n }\n }, 0);\n $scope.tabs = $scope.tabsData;\n }\n\n function loadTab(id) {\n $scope.tabsData = LocalStorageAdapter.get(LSKeys.TABS_STATE) || [defaultTabConfig];\n\n // find available tab\n const idx = findTabIndexByID(id);\n const tab = $scope.tabsData[idx];\n\n if (tab.yasrData) {\n setLoader(true, $translate.instant('query.editor.render.results.msg'), null, true);\n }\n\n // set query in editor available on the current tab\n $timeout(function () {\n if ($scope.currentQuery.query === '') {\n $scope.currentQuery.query = \" \";\n }\n $timeout(function () {\n window.editor.setValue($scope.currentQuery.query);\n $scope.yasr.updateDownloadDropdown();\n $scope.$broadcast('tabLoaded', $scope.currentQuery.id);\n\n // set query results in query results sections after\n // previous query execution. Yasr response rendering depends on the\n // query type of window.editor!\n $scope.yasr.options.output = tab.outputType; // this may be undefined, that's fine!\n if (tab.yasrData) {\n if (tab.yasrData.customError) {\n // Our injected custom (not real HTTP) error\n $scope.yasr.results = {\n getException: function () {\n return tab.yasrData.customError;\n }\n };\n setLoader(false);\n } else {\n // Real YASR result\n $timeout(function () {\n $scope.setYasrResponse(tab.yasrData, tab.textStatus, tab.jqXhrOrErrorString);\n setLoader(false);\n if ($('.yasr_btnGroup li:nth-child(2)').hasClass(\"active\")) {\n $timeout(function () {\n $('.yasr_btnGroup li:nth-child(2) a').get(0).click();\n }, 0);\n }\n }, 0);\n }\n }\n }, 0);\n }, 0);\n\n\n // persist current tab id in local storage\n LocalStorageAdapter.set(LSKeys.TABS_STATE_CURRENT_ID, id);\n\n $scope.currentQuery = tab;\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.allResultsCountExact = tab.allResultsCountExact;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.currentTabConfig.customUpdateMessage = tab.customUpdateMessage;\n $scope.currentTabConfig.errorMessage = tab.errorMessage;\n $scope.currentTabConfig.warningMessage = tab.warningMessage;\n\n $scope.$apply();\n }, 0);\n\n //Remove paddign of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n\n if (!checkQueryIntervalId) {\n checkQueryIntervalId = setInterval(showOrHideSaveAsDropDown, 200);\n }\n overrideSameAsInferenceAndNoCountIfNeeded();\n }\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n function showOrHideSaveAsDropDown() {\n // If selected tab has results and query in editor controller is invalid save as\n // dropdown menu will be removed and on fixing query latter will be added\n if ($scope.currentTabConfig.resultsCount >= 0) {\n const $saveAsDropDown = $('.saveAsDropDown');\n if ($saveAsDropDown.length > 0 && !window.editor.queryValid) {\n yasr.header.find('.saveAsDropDown').remove();\n } else if ($saveAsDropDown.length === 0 && window.editor.queryValid) {\n yasr.updateDownloadDropdown();\n }\n }\n }\n\n function isTabChangeOk(isNew) {\n if ($scope.queryIsRunning && !$scope.namespacesLoading) {\n if (isNew) {\n toastr.info($translate.instant('query.editor.new.tab.running.query.warning.msg'));\n } else {\n toastr.info($translate.instant('query.editor.tab.switching.running.query.warning.msg'));\n }\n\n return false;\n }\n\n return true;\n }\n\n // Raise this flag to provide visual feedback to the user the next time a tab changes\n // (either manually or by the system). See GDB-1983.\n $scope.highlightNextTabChange = false;\n $scope.$on('tabAction', function (e, tabEvent) {\n if (tabEvent.relatedTarget) {\n // Cancel any highlight timer that might have been left by the last highlight\n $timeout.cancel(tabEvent.relatedTarget.timer);\n $(tabEvent.relatedTarget).css('color', '');\n\n $scope.saveTab(getQueryID(tabEvent.relatedTarget));\n }\n\n $scope.loadTab(getQueryID(tabEvent.target));\n\n // These arrays define how the tab change will be visually enhanced.\n // colors contains the colors to set to the tab name,\n // while times defines the times in milliseconds to keep each color.\n // Once we cycle through the arrays we restore the default color.\n const colors = ['var(--onto-orange)', '', 'var(--onto-orange)'];\n const times = [400, 400, 400];\n if ($scope.highlightNextTabChange) {\n $scope.highlightNextTabChange = false;\n let index = 0;\n $(tabEvent.target).css('color', colors[index]);\n const highlightFun = function () {\n index++;\n if (index < colors.length) {\n $(tabEvent.target).css('color', colors[index]);\n tabEvent.target.timer = $timeout(highlightFun, times[index]);\n } else {\n $(tabEvent.target).css('color', '');\n }\n };\n $timeout(highlightFun, times[index]);\n }\n });\n\n $scope.$on('deleteAllexeptSelected', function (e, tabs) {\n $scope.tabsData = tabs;\n $scope.tabs = tabs;\n });\n // end of query tab operations\n\n $scope.currentQuery = {};\n // $scope.state = {};\n $scope.showSampleQueries = false;\n $scope.savedQuery = {};\n $scope.sampleQueries = {};\n $scope.editQueryModal = showModal('#editQueryContainer');\n $scope.deleteQueryModal = showModal('#confirmDeleteContainer');\n $scope.saveQueryModal = showModal('#saveQueryContainer');\n\n $scope.getResultsDescription = function () {\n let desc;\n if ($scope.currentTabConfig.resultsCount === 0) {\n desc = \"No results.\";\n } else {\n const currentPageEnd = ($scope.currentTabConfig.page - 1) * $scope.currentTabConfig.pageSize\n + Math.min($scope.currentTabConfig.resultsCount, $scope.currentTabConfig.pageSize);\n desc = $translate.instant('query.editor.showing.results.from.msg') + $filter('currency')($scope.currentTabConfig.offset, '', 0)\n + $translate.instant('query.editor.to') + $filter('currency')(currentPageEnd, '', 0);\n if ($scope.currentTabConfig.allResultsCount > 0) {\n // Unsure total results count \"of at least\" happens if counting timed out or\n // counting was disabled and we got at least $pageSize + 1 results for the current page.\n // It may reset become exact when we navigate and reach the end of results.\n desc += $translate.instant(($scope.currentTabConfig.allResultsCountExact\n ? 'query.editor.of' : 'query.editor.of.at.least'));\n desc += $filter('currency')($scope.currentTabConfig.allResultsCount, '', 0);\n }\n desc += \".\";\n }\n\n return desc;\n };\n\n $scope.getUpdateDescription = function () {\n if ($scope.currentTabConfig.customUpdateMessage) {\n return $translate.instant($scope.currentTabConfig.customUpdateMessage.msg, {name: $scope.currentTabConfig.customUpdateMessage.name});\n } else if ($scope.currentTabConfig.sizeDelta === undefined) {\n return '';\n } else if ($scope.currentTabConfig.sizeDelta < 0) {\n return $translate.instant('yasr.removed.statements.result.msg', {sizeDelta: Math.abs($scope.currentTabConfig.sizeDelta)});\n } else if ($scope.currentTabConfig.sizeDelta > 0) {\n return $translate.instant('yasr.added.statements.result.msg', {sizeDelta: $scope.currentTabConfig.sizeDelta});\n } else {\n return $translate.instant('yasr.statements.no.change.msg');\n }\n };\n\n $scope.getStaleWarningMessage = function () {\n const secondsAgo = Math.round((Date.now() - $scope.currentTabConfig.timeFinished) / 60000) * 60;\n if (secondsAgo >= 3600) { // must be at least an hour\n return $translate.instant('yasr.stale.result.msg', {secondsAgo: $scope.getHumanReadableSeconds(secondsAgo)});\n }\n };\n\n const resize = function () {\n // $scope.fixSizesOnHorizontalViewModeSwitch();\n };\n\n angular.element($window).bind('resize', resize);\n\n $scope.$on('$destroy', function () {\n angular.element($window).unbind('resize', resize);\n });\n\n /**\n * In case of Ontop repository, sameAs, inference and nocount are\n * overridden to true and #sameAs and #inference buttons are disabled, In case of FedX repo nocount is overridden\n */\n function overrideSameAsInferenceAndNoCountIfNeeded() {\n const isOntop = $repositories.isActiveRepoOntopType();\n const isFedX = $repositories.isActiveRepoFedXType();\n handleSameAsAndInferenceBtns(isOntop);\n\n $scope.nocount = (isOntop || isFedX) ? true : !principal.appSettings.EXECUTE_COUNT;\n if (isOntop) {\n $scope.currentQuery.inference = true;\n $scope.currentQuery.sameAs = true;\n }\n }\n\n function handleSameAsAndInferenceBtns(isOntop) {\n const sameAsBtn = document.getElementById('sameAs');\n const inferenceBtn = document.getElementById('inference');\n\n if (sameAsBtn) {\n sameAsBtn.disabled = !!isOntop;\n }\n\n if (inferenceBtn) {\n inferenceBtn.disabled = !!isOntop;\n }\n }\n\n // The sameAs is meaningless without inference.\n // Set its value to false and disable button\n function shouldDisableSameAs() {\n // don't try to override sameAs if repository is Ontop type\n if ($repositories.isActiveRepoOntopType()) {\n return;\n }\n const sameAsBtn = document.getElementById('sameAs');\n if (sameAsBtn && !$scope.currentQuery.inference && !sameAsBtn.disabled) {\n sameAsBtn.disabled = true;\n $scope.currentQuery.sameAs = false;\n } else if ($scope.currentQuery.inference && sameAsBtn.disabled) {\n sameAsBtn.removeAttribute('disabled');\n $scope.currentQuery.sameAs = principal.appSettings.DEFAULT_SAMEAS;\n }\n }\n}\n\nQuerySampleModalCtrl.$inject = ['$scope', '$modalInstance', 'data', '$sce'];\n\nfunction QuerySampleModalCtrl($scope, $modalInstance, data, $sce) {\n if (data.queryExists) {\n $scope.queryExists = true;\n }\n $scope.query = angular.copy(data.query);\n $scope.title = data.title;\n $scope.edit = data.edit;\n $scope.okButtonText = data.okButtonText;\n $scope.existingQueryErrMsg = $sce.trustAsHtml(data.existingQueryErrMsg);\n $scope.ok = function () {\n if ($scope.form.$valid) {\n $modalInstance.close($scope.query);\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[5,84],{42:function(e,o,t){"use strict";t.r(o),t.d(o,"STATIC_RULESETS",(function(){return i})),t.d(o,"REPOSITORY_TYPES",(function(){return n})),t.d(o,"FILENAME_PATTERN",(function(){return r})),t.d(o,"NUMBER_PATTERN",(function(){return a}));const i=[{id:"empty",name:"No inference"},{id:"rdfs-optimized",name:"RDFS (Optimized)"},{id:"rdfs",name:"RDFS"},{id:"rdfsplus-optimized",name:"RDFS-Plus (Optimized)"},{id:"owl-horst-optimized",name:"OWL-Horst (Optimized)"},{id:"owl-horst",name:"OWL-Horst"},{id:"owl2-ql-optimized",name:"OWL2-QL (Optimized)"},{id:"owl2-ql",name:"OWL2-QL"},{id:"owl-max-optimized",name:"OWL-Max (Optimized)"},{id:"owl-max",name:"OWL-Max"},{id:"owl2-rl-optimized",name:"OWL2-RL (Optimized)"},{id:"owl2-rl",name:"OWL2-RL"}],n={graphdbRepo:"graphdb",free:"free",eeWorker:"worker",eeMaster:"master",ontop:"ontop",se:"se",fedx:"fedx"},r=new RegExp("^[a-zA-Z0-9-_]+$"),a=new RegExp("^[0-9]+$")},48:function(e,o,t){"use strict";t.r(o),t.d(o,"getFileName",(function(){return r}));var i=t(42),n=t(0);const r=function(e){let o=e.lastIndexOf("/");-1===o&&(o=e.lastIndexOf("\\"));let t=e;return-1!==o&&(t=t.substring(o+1)),t},a=function(e){e&&(e.queryTimeout&&(e.queryTimeout.value=parseInt(e.queryTimeout.value)),e.queryLimitResults&&e.validationResultsLimitTotal&&e.validationResultsLimitPerConstraint?(e.queryLimitResults.value=parseInt(e.queryLimitResults.value),e.validationResultsLimitTotal.value=parseInt(e.validationResultsLimitTotal.value),e.validationResultsLimitPerConstraint.value=parseInt(e.validationResultsLimitPerConstraint.value)):e.leftJoinWorkerThreads&&e.boundJoinBlockSize&&e.joinWorkerThreads&&e.unionWorkerThreads&&(e.leftJoinWorkerThreads.value=parseInt(e.leftJoinWorkerThreads.value),e.boundJoinBlockSize.value=parseInt(e.boundJoinBlockSize.value),e.joinWorkerThreads.value=parseInt(e.joinWorkerThreads.value),e.unionWorkerThreads.value=parseInt(e.unionWorkerThreads.value)))},s=function(e){e&&e.member&&(e.member.value=[])},l=function(){const e=document.getElementById("shaclOptions");if(e){const o=e.getAttribute("aria-expanded");if(o&&"true"===o)return"fa fa-angle-down"}return"fa fa-angle-right"},c=function(e,o){e.queryTimeout&&(o.isInvalidQueryTimeout=!i.NUMBER_PATTERN.test(e.queryTimeout.value)),e.validationResultsLimitTotal&&e.validationResultsLimitPerConstraint&&e.queryLimitResults?(o.isInvalidValidationResultsLimitTotal=!i.NUMBER_PATTERN.test(e.validationResultsLimitTotal.value),o.isInvalidValidationResultsLimitPerConstraint=!i.NUMBER_PATTERN.test(e.validationResultsLimitPerConstraint.value),o.isInvalidQueryLimit=!i.NUMBER_PATTERN.test(e.queryLimitResults.value)):e.leftJoinWorkerThreads&&e.boundJoinBlockSize&&e.joinWorkerThreads&&e.unionWorkerThreads&&(o.isInvalidLeftJoinWorkerThreads=!i.NUMBER_PATTERN.test(e.leftJoinWorkerThreads.value),o.isInvalidBoundJoinBlockSize=!i.NUMBER_PATTERN.test(e.boundJoinBlockSize.value),o.isInvalidJoinWorkerThreads=!i.NUMBER_PATTERN.test(e.joinWorkerThreads.value),o.isInvalidUnionWorkerThreads=!i.NUMBER_PATTERN.test(e.unionWorkerThreads.value))},d=function(e,o){return"isInvalidQueryLimit"===e?o.instant("invalid.query.limit"):"isInvalidQueryTimeout"===e?o.instant("invalid.query.timeout"):"isInvalidValidationResultsLimitTotal"===e?o.instant("invalid.validation.results.limit.total"):"isInvalidValidationResultsLimitPerConstraint"===e?o.instant("invalid.validation.results.limit.per.constraint"):"isInvalidJoinWorkerThreads"===e?o.instant("invalid.join.worker.threads"):"isInvalidLeftJoinWorkerThreads"===e?o.instant("invalid.left.join.worker.threads"):"isInvalidUnionWorkerThreads"===e?o.instant("invalid.union.worker.threads"):"isInvalidBoundJoinBlockSize"===e?o.instant("invalid.bound.join.block.size"):void 0},u=function(e,o){const t=Object.keys(e),i=Object.values(e);for(let e=0;e<t.length;e++)if(i[e])return d(t[e],o);return""},p=function(e){return`https://graphdb.ontotext.com/documentation/${e.productShortVersion}/${e.productType}`},f=function(e){return e.getLocations().then(e=>(function(e){return e.filter(e=>!e.errorMsg&&!e.degradedReason)})(e))};function m(e,o,t,r,a,s,l,c,d,u){e.loader=!0,e.isLocationInactive=function(o){return!o.active||!e.hasActiveLocation()},r.getLocations().then(o=>{e.locations=o}).finally(()=>e.loader=!1),e.hasActiveLocation=function(){return r.hasActiveLocation()},e.getActiveLocation=function(){return r.getActiveLocation()},e.getLocationError=function(){return r.getLocationError()},e.getDegradedReason=function(){return r.getDegradedReason()},e.getRepositories=function(){return r.getRepositories()},e.isRepoActive=function(e){return r.isRepoActive(e)},e.deleteLocation=function(o){a.openSimpleModal({title:u.instant("location.confirm.detach"),message:u.instant("location.confirm.detach.warning",{uri:o}),warning:!0}).result.then((function(){e.loader=!0,r.deleteLocation(o).finally(()=>e.loader=!1)}))},e.addLocationHttp=function(o){e.loader=!0,l.addLocation(o).success((function(o){e.locations=o,r.init()})).error((function(e){const o=getError(e);t.error(o,u.instant("common.error"))})).finally(()=>e.loader=!1)},e.addLocation=function(){o.open({templateUrl:"js/angular/templates/modal/add-location.html",windowClass:"addLocationDialog",controller:"AddLocationCtrl"}).result.then((function(o){e.addLocationHttp(o)}))},e.editLocationHttp=function(o){e.loader=!0,l.editLocation(o).success((function(o){e.locations=o,r.init()})).error((function(e){const o=getError(e);t.error(o,u.instant("common.error"))})).finally(()=>e.loader=!1)},e.editLocation=function(t){o.open({templateUrl:"js/angular/templates/modal/edit-location.html",controller:"EditLocationCtrl",resolve:{location:function(){return t}}}).result.then((function(o){e.editLocationHttp(o)}),(function(){}))},e.setRepository=function(e){r.setRepository(e)},e.deleteRepository=function(o){a.openSimpleModal({title:u.instant("common.confirm.delete"),message:Object(n.decodeHTML)(u.instant("delete.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then((function(){e.loader=!0,r.deleteRepository(o).finally(()=>e.loader=!1),function(e){const o=`dependencies-selectedGraph-${e.id}`,t=`classHierarchy-selectedGraph-${e.id}`;angular.forEach(c.keys(),(function(e){(e.startsWith(t)||e.startsWith(o))&&c.remove(e)}))}(o)}))},e.restartRepository=function(o){a.openSimpleModal({title:u.instant("confirm.restart.repo"),message:Object(n.decodeHTML)(u.instant("confirm.restart.repo.warning.msg",{repositoryId:o.id})),warning:!0}).result.then((function(){e.loader=!0,r.restartRepository(o).finally(()=>e.loader=!1)}))},e.toggleDefaultRepository=function(o){e.getDefaultRepository()===o?r.setDefaultRepository(null):r.setDefaultRepository(o)},e.getDefaultRepository=function(){return r.getDefaultRepository()},e.getRepositoryDownloadLink=function(e){let o=`rest/repositories/${e.id}${e.type===i.REPOSITORY_TYPES.ontop?"/download-zip":"/download-ttl"}?location=${e.location}`;const t=s.getAuthToken();return t&&(o=`${o}&authToken=${encodeURIComponent(t)}`),o},e.copyToClipboard=function(e){a.openCopyToClipboardModal(e)},e.fromFile=function(){o.open({templateUrl:"js/angular/templates/modal/upload-repository-config.html",controller:"UploadRepositoryConfigCtrl"}).result.then((function(){r.init()}))},e.openActiveLocationSettings=function(){o.open({templateUrl:"js/angular/settings/modal/location-settings.html",controller:"ActiveLocationSettingsCtrl"})};const p=d((function(){r.initQuick()}),5e3);e.$on("$destroy",(function(){d.cancel(p)})),e.getRepositoriesFromLocation=function(e){return r.getRepositoriesFromLocation(e)}}function v(e,o,t,i,n){e.upload=function(o){o&&o.length&&(e.uploadFile=o[0])},e.ok=function(){e.uploadFile&&(e.uploadFileLoader=!0,t.upload({url:"rest/repositories",method:"POST",data:{config:e.uploadFile}}).success((function(){e.uploadFileLoader=!1,o.close()})).error((function(o){const t=getError(o);i.error(t,n.instant("common.error")),e.uploadFileLoader=!1})))},e.cancel=function(){o.dismiss("cancel")}}function y(e,o,t,i,n){e.newLocation={uri:"",authType:"none",username:"",password:"",active:!1},e.docBase=p(i),e.isValidLocation=function(){return(e.newLocation.uri.length<6||0===e.newLocation.uri.indexOf("http:")||0===e.newLocation.uri.indexOf("https:"))&&e.newLocation.uri.indexOf("/repositories")<=-1},e.ok=function(){e.newLocation?o.close(e.newLocation):t.error(n.instant("location.cannot.be.empty.error"))},e.cancel=function(){o.dismiss("cancel")}}function R(e,o,t,i){e.editedLocation=angular.copy(t),e.docBase=p(i),e.ok=function(){o.close(e.editedLocation)},e.cancel=function(){o.dismiss("cancel")}}function T(e,o){e.repositoryTypes=i.REPOSITORY_TYPES,e.chooseRepositoryType=function(e){o.path(`${o.path()}/${e}`)}}function g(e,o,t,n,r,d,p,m,v){var y;e.rulesets=i.STATIC_RULESETS.slice(),e.repositoryTypes=i.REPOSITORY_TYPES,e.params=p,e.repositoryType=p.repositoryType,e.enable=!0,e.loader=!0,e.pageTitle=v.instant("view.create.repo.title"),e.repositoryInfo={id:"",params:{},title:"",type:"",location:""},e.invalidValues={isInvalidQueryTimeout:!1,isInvalidQueryLimit:!1,isInvalidLeftJoinWorkerThreads:!1,isInvalidBoundJoinBlockSize:!1,isInvalidJoinWorkerThreads:!1,isInvalidUnionWorkerThreads:!1,isInvalidValidationResultsLimitPerConstraint:!1,isInvalidValidationResultsLimitTotal:!1},f(t).then(o=>{e.locations=o}),e.changedLocation=function(){e.$broadcast("changedLocation")},e.getConfig=function(t){m.getRepositoryConfiguration(t).success((function(o){e.repositoryInfo.params=o.params,e.repositoryInfo.type=o.type,a(e.repositoryInfo.params),s(e.repositoryInfo.params),e.loader=!1,r((function(){angular.element(document).find("#id").focus()}),50)})).error((function(t){const i=getError(t);o.error(i,v.instant("common.error")),e.loader=!1}))},e.repositoryType&&(function(o){return e.isEnterprise()&&o===i.REPOSITORY_TYPES.graphdbRepo}(y=e.repositoryType)||function(o){return!e.isFreeEdition()&&!e.isEnterprise()&&o===i.REPOSITORY_TYPES.graphdbRepo}(y)||function(o){return e.isFreeEdition()&&o===i.REPOSITORY_TYPES.graphdbRepo}(y)||function(e){return e===i.REPOSITORY_TYPES.ontop}(y)||function(e){return e===i.REPOSITORY_TYPES.fedx}(y))?(e.repositoryInfo.type=e.repositoryType,e.getConfig(e.repositoryType),function(o){switch(o){case i.REPOSITORY_TYPES.graphdbRepo:e.pageTitle=v.instant("view.create.repo.title",{repoType:"GraphDB"});break;case i.REPOSITORY_TYPES.ontop:e.pageTitle=v.instant("view.create.repo.title",{repoType:"Ontop Virtual SPARQL"});break;case i.REPOSITORY_TYPES.fedx:e.pageTitle=v.instant("view.create.repo.title",{repoType:"FedX Virtual SPARQL"})}}(e.repositoryType)):n.path("/repository/create"),e.hasActiveLocation=function(){return t.hasActiveLocation()},e.activeLocation=function(){return t.getActiveLocation()};let R=!1;e.uploadRuleset=function(t){t&&t.length&&(e.uploadFile=t[0],e.uploadFileLoader=!0,d.upload({url:"rest/repositories/ruleset/upload",data:{ruleset:e.uploadFile,location:e.repositoryInfo.location}}).progress((function(e){})).success((function(t){if(t.success){const o=e.uploadFile.name,i={id:t.fileLocation,name:"Custom: "+o};e.rulesetPie?e.rulesets[0]=i:e.rulesets.unshift(i),e.rulesetPie=t.fileLocation,e.rulesetPieFile=o,e.repositoryInfo.params.ruleset.value=e.rulesetPie}else o.error(t.errorMessage),R=!0;e.uploadFileLoader=!1})).error((function(t){const i=getError(t);o.error(i,v.instant("common.error")),e.uploadFile="",e.uploadFileLoader=!1})))},e.noMembersError=function(){o.error(v.instant("fedx.create.repo.no.members.warning"))},e.goBackToPreviousLocation=function(){angular.isDefined(p.previous)?(delete n.$$search.previous,n.path("/")):n.path("/repository")},e.createRepoHttp=function(){e.loader=!0,m.createRepository(e.repositoryInfo).success((function(){o.success(v.instant("created.repo.success.msg",{repoId:e.repositoryInfo.id})),t.init(e.goBackToPreviousLocation)})).error((function(t){const i=getError(t);o.error(i,v.instant("common.error")),e.loader=!1}))},e.createRepo=function(){if(!e.repositoryInfo.id)return void o.error(v.instant("empty.repoid.warning"));e.isInvalidRepoName=!i.FILENAME_PATTERN.test(e.repositoryInfo.id),c(e.repositoryInfo.params,e.invalidValues);const t=u(e.invalidValues,v);R?o.error(v.instant("invalid.ruleset.file.error")):e.isInvalidRepoName?o.error(v.instant("wrong.repo.name.error")):"fedx"===e.repositoryType&&0===e.repositoryInfo.params.member.value.length?e.noMembersError():t?o.error(t):e.createRepoHttp()},e.rulesetWarning=function(){const o=e.repositoryInfo.params;return void 0===o||void 0===o.ruleset||void 0===o.disableSameAs?"":0===o.ruleset.value.indexOf("owl")&&"true"===o.disableSameAs.value?v.instant("repoTooltips.rulesetWarnings.needsSameAs"):0===o.ruleset.value.indexOf("rdfs")&&"false"===o.disableSameAs.value?v.instant("repoTooltips.rulesetWarnings.doesntNeedSameAs"):o.ruleset.value===e.rulesetPie?v.instant("repoTooltips.rulesetWarnings.customRuleset"):""},e.validateNumberInput=function(){c(e.repositoryInfo.params,e.invalidValues)},e.getShaclOptionsClass=function(){return l()},e.autofocusId="autofocus"}function I(e,o,t,i,n,r){i&&t.getRepositoryFileContent(i).success((function(o){e.fileContent=o})).error((function(e){const o=getError(e);n.error(o,r.instant("common.error"))})),e.ok=function(){o.close({content:e.fileContent,fileLocation:i})},e.cancel=function(){o.dismiss("cancel")}}function L(e,o,t,s,d,p,m,v){e.rulesets=i.STATIC_RULESETS.slice(),e.repositoryTypes=i.REPOSITORY_TYPES,e.editRepoPage=!0,e.canEditRepoId=!1,e.params=o,e.loader=!0,e.repositoryInfo={},e.repositoryInfo.id=e.params.repositoryId,e.repositoryInfo.location=e.params.location,e.repositoryInfo.restartRequested=!1,e.repositoryType="",e.saveRepoId=e.params.repositoryId,e.pageTitle=v.instant("view.edit.repo.title",{repositoryId:e.params.repositoryId}),e.invalidValues={isInvalidQueryTimeout:!1,isInvalidQueryLimit:!1,isInvalidLeftJoinWorkerThreads:!1,isInvalidBoundJoinBlockSize:!1,isInvalidJoinWorkerThreads:!1,isInvalidUnionWorkerThreads:!1,isInvalidValidationResultsLimitPerConstraint:!1,isInvalidValidationResultsLimitTotal:!1},e.hasActiveLocation=function(){return s.hasActiveLocation()},e.$watch(e.hasActiveLocation,(function(){e.hasActiveLocation&&f(s).then(o=>(e.locations=o,m.getRepository(e.repositoryInfo))).then((function(o){const t=o.data;if(angular.isDefined(t.params.ruleset)){let o=!1;if(angular.forEach(e.rulesets,(function(e){e.id===t.params.ruleset.value&&(o=!0)})),t.params.ruleset&&!o){const o=r(t.params.ruleset.value);e.rulesets.unshift({id:t.params.ruleset.value,name:"Custom: "+o})}}e.repositoryInfo=t,e.setRepositoryType(t.type),a(e.repositoryInfo.params),e.repositoryInfo.saveId=e.saveRepoId,e.loader=!1})).catch((function(i){const r=i.data,a=i.status,s=o.repositoryId;let l;l=404===a&&"system"!==s?Object(n.decodeHTML)(v.instant("edit.repo.error.not.exists",{repositoryId:s})):404===a&&"system"===s?Object(n.decodeHTML)(v.instant("edit.system.repo.warning")):getError(r),t.error(l,v.instant("common.error"),{allowHtml:!0}),404===a?setTimeout((function(){e.loader=!1,d.path("repository")}),1e3):e.loader=!1}))})),e.setRepositoryType=function(o){e.repositoryType=o},e.noMembersError=function(){t.error(v.instant("fedx.create.repo.no.members.warning"))},e.editRepoHttp=function(){e.loader=!0,m.editRepository(e.repositoryInfo.saveId,e.repositoryInfo).success((function(){t.success(v.instant("edit.repo.success.msg",{saveId:e.repositoryInfo.saveId})),s.init(e.goBackToPreviousLocation),e.repositoryInfo.saveId===e.repositoryInfo.id&&e.repositoryInfo.restartRequested&&s.restartRepository(e.repositoryInfo.id)})).error((function(o){const i=getError(o);t.error(i,v.instant("common.error")),e.loader=!1}))},e.editRepository=function(){e.isInvalidRepoName=!i.FILENAME_PATTERN.test(e.repositoryInfo.id),c(e.repositoryInfo.params,e.invalidValues);const o=u(e.invalidValues,v);let r=Object(n.decodeHTML)(v.instant("edit.repo.save.changes.msg",{repoId:e.repositoryInfo.id}));e.repositoryInfo.saveId!==e.repositoryInfo.id?r+=Object(n.decodeHTML)(v.instant("edit.repo.rename.changes.msg")):e.repositoryInfo.restartRequested?r+=Object(n.decodeHTML)(v.instant("edit.repo.restart.requested.msg")):r+=Object(n.decodeHTML)(v.instant("edit.repo.restart.needed.msg")),e.isInvalidRepoName?t.error(v.instant("wrong.repo.name.error")):"fedx"===e.repositoryType&&0===e.repositoryInfo.params.member.value.length?e.noMembersError():o?t.error(o):p.openSimpleModal({title:v.instant("common.confirm.save"),message:r,warning:!0}).result.then((function(){e.editRepoHttp()}))},e.editRepositoryId=function(){let o=Object(n.decodeHTML)(v.instant("edit.repo.id.warning.msg"));e.isEnterprise()&&(o+=Object(n.decodeHTML)(v.instant("edit.repo.id.cluster.warning.msg"))),p.openSimpleModal({title:v.instant("confirm.enable.edit"),message:o,warning:!0}).result.then((function(){e.canEditRepoId=!0}))},e.goBackToPreviousLocation=function(){angular.isDefined(o.previous)?(delete d.$$search.previous,d.path("/")):d.path("/repository")},e.validateNumberInput=function(){c(e.repositoryInfo.params,e.invalidValues)},e.getShaclOptionsClass=function(){return l()}}angular.module("graphdb.framework.repositories.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.utils.localstorageadapter","toastr","ngFileUpload"]).controller("LocationsAndRepositoriesCtrl",m).controller("AddLocationCtrl",y).controller("EditLocationCtrl",R).controller("ChooseRepositoryCtrl",T).controller("AddRepositoryCtrl",g).controller("EditRepositoryCtrl",L).controller("EditRepositoryFileCtrl",I).controller("UploadRepositoryConfigCtrl",v),m.$inject=["$scope","$modal","toastr","$repositories","ModalService","$jwtAuth","LocationsRestService","LocalStorageAdapter","$interval","$translate"],v.$inject=["$scope","$modalInstance","Upload","toastr","$translate"],y.$inject=["$scope","$modalInstance","toastr","productInfo","$translate"],R.$inject=["$scope","$modalInstance","location","productInfo"],T.$inject=["$scope","$location"],g.$inject=["$scope","toastr","$repositories","$location","$timeout","Upload","$routeParams","RepositoriesRestService","$translate"],I.$inject=["$scope","$modalInstance","RepositoriesRestService","file","toastr","$translate"],L.$inject=["$scope","$routeParams","toastr","$repositories","$location","ModalService","RepositoriesRestService","$translate"]}}]);
2
- //# sourceMappingURL=5.e112b0d6e101e0766cda.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/repositories/repository.constants.js","webpack:///./src/js/angular/repositories/controllers.js"],"names":["STATIC_RULESETS","id","name","REPOSITORY_TYPES","graphdbRepo","free","eeWorker","eeMaster","ontop","se","fedx","FILENAME_PATTERN","RegExp","NUMBER_PATTERN","getFileName","path","lastIdx","lastIndexOf","substring","parseNumberParamsIfNeeded","params","queryTimeout","value","parseInt","queryLimitResults","validationResultsLimitTotal","validationResultsLimitPerConstraint","leftJoinWorkerThreads","boundJoinBlockSize","joinWorkerThreads","unionWorkerThreads","parseMemberParamIfNeeded","param","member","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","validateNumberFields","invalidValues","isInvalidQueryTimeout","test","isInvalidValidationResultsLimitTotal","isInvalidValidationResultsLimitPerConstraint","isInvalidQueryLimit","isInvalidLeftJoinWorkerThreads","isInvalidBoundJoinBlockSize","isInvalidJoinWorkerThreads","isInvalidUnionWorkerThreads","getInvalidParameterErrorMessage","$translate","instant","checkInvalidValues","invalidValuesKeys","Object","keys","invalidValuesVal","values","i","length","getDocBase","productInfo","productShortVersion","productType","getFilteredLocations","$repositories","getLocations","then","locations","result","filter","location","errorMsg","degradedReason","filterLocations","LocationsAndRepositoriesCtrl","$scope","$modal","toastr","ModalService","$jwtAuth","LocationsRestService","LocalStorageAdapter","$interval","loader","isLocationInactive","active","hasActiveLocation","finally","getActiveLocation","getLocationError","getDegradedReason","getRepositories","isRepoActive","repo","deleteLocation","uri","openSimpleModal","title","message","warning","addLocationHttp","dataAddLocation","addLocation","success","data","init","error","msg","getError","open","templateUrl","windowClass","controller","editLocationHttp","dataEditLocation","editLocation","resolve","setRepository","deleteRepository","repository","repositoryId","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","angular","forEach","key","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","url","type","token","getAuthToken","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","initQuick","$on","cancel","getRepositoriesFromLocation","locationId","UploadRepositoryConfigCtrl","$modalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","copy","ChooseRepositoryCtrl","$location","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","repositoryType","rulesets","slice","enable","pageTitle","repositoryInfo","changedLocation","$broadcast","getConfig","getRepositoryConfiguration","element","find","focus","isEnterprise","isValidEERepository","isFreeEdition","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","setPageTitle","activeLocation","isInvalidPieFile","uploadRuleset","ruleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","isDefined","previous","$$search","createRepoHttp","createRepository","repoId","createRepo","isInvalidRepoName","rulesetWarning","pp","undefined","disableSameAs","validateNumberInput","autofocusId","EditRepositoryFileCtrl","file","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","editRepoPage","canEditRepoId","restartRequested","saveRepoId","$watch","getRepository","response","ifRulesetExists","item","setRepositoryType","saveId","catch","status","toastrMsg","allowHtml","setTimeout","editRepoHttp","editRepository","modalMsg","editRepositoryId","module","$inject"],"mappings":"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","file":"5.e112b0d6e101e0766cda.bundle.js","sourcesContent":["export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {graphdbRepo: 'graphdb', free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPOSITORY_TYPES,\n STATIC_RULESETS\n} from \"./repository.constants\";\nimport {decodeHTML} from \"../../../app\";\n\nexport const getFileName = function (path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function (params) {\n if (params) {\n if (params.queryTimeout) {\n params.queryTimeout.value = parseInt(params.queryTimeout.value);\n }\n if (params.queryLimitResults && params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint) {\n // Parse parameters properly to number\n params.queryLimitResults.value = parseInt(params.queryLimitResults.value);\n params.validationResultsLimitTotal.value = parseInt(params.validationResultsLimitTotal.value);\n params.validationResultsLimitPerConstraint.value = parseInt(params.validationResultsLimitPerConstraint.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads && params.unionWorkerThreads) {\n params.leftJoinWorkerThreads.value = parseInt(params.leftJoinWorkerThreads.value);\n params.boundJoinBlockSize.value = parseInt(params.boundJoinBlockSize.value);\n params.joinWorkerThreads.value = parseInt(params.joinWorkerThreads.value);\n params.unionWorkerThreads.value = parseInt(params.unionWorkerThreads.value);\n }\n }\n};\n\nconst parseMemberParamIfNeeded = function (param) {\n if (param && param.member) {\n param.member.value = [];\n }\n};\n\nconst getShaclOptionsClass = function () {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n};\n\nconst validateNumberFields = function (params, invalidValues) {\n if (params.queryTimeout) {\n invalidValues.isInvalidQueryTimeout = !NUMBER_PATTERN.test(params.queryTimeout.value);\n }\n if (params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint && params.queryLimitResults) {\n invalidValues.isInvalidValidationResultsLimitTotal = !NUMBER_PATTERN.test(params.validationResultsLimitTotal.value);\n invalidValues.isInvalidValidationResultsLimitPerConstraint = !NUMBER_PATTERN.test(params.validationResultsLimitPerConstraint.value);\n invalidValues.isInvalidQueryLimit = !NUMBER_PATTERN.test(params.queryLimitResults.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads\n && params.unionWorkerThreads) {\n invalidValues.isInvalidLeftJoinWorkerThreads = !NUMBER_PATTERN.test(params.leftJoinWorkerThreads.value);\n invalidValues.isInvalidBoundJoinBlockSize = !NUMBER_PATTERN.test(params.boundJoinBlockSize.value);\n invalidValues.isInvalidJoinWorkerThreads = !NUMBER_PATTERN.test(params.joinWorkerThreads.value);\n invalidValues.isInvalidUnionWorkerThreads = !NUMBER_PATTERN.test(params.unionWorkerThreads.value);\n }\n};\n\nconst getInvalidParameterErrorMessage = function (param, $translate) {\n if (param === \"isInvalidQueryLimit\") {\n return $translate.instant('invalid.query.limit');\n } else if (param === \"isInvalidQueryTimeout\") {\n return $translate.instant('invalid.query.timeout');\n } else if (param === \"isInvalidValidationResultsLimitTotal\") {\n return $translate.instant('invalid.validation.results.limit.total');\n } else if (param === \"isInvalidValidationResultsLimitPerConstraint\") {\n return $translate.instant('invalid.validation.results.limit.per.constraint');\n } else if (param === \"isInvalidJoinWorkerThreads\") {\n return $translate.instant('invalid.join.worker.threads');\n } else if (param === \"isInvalidLeftJoinWorkerThreads\") {\n return $translate.instant('invalid.left.join.worker.threads');\n } else if (param === \"isInvalidUnionWorkerThreads\") {\n return $translate.instant('invalid.union.worker.threads');\n } else if (param === \"isInvalidBoundJoinBlockSize\") {\n return $translate.instant('invalid.bound.join.block.size');\n }\n};\n\nconst checkInvalidValues = function (invalidValues, $translate) {\n const invalidValuesKeys = Object.keys(invalidValues);\n const invalidValuesVal = Object.values(invalidValues);\n\n for (let i = 0; i < invalidValuesKeys.length; i++) {\n if (invalidValuesVal[i]) {\n return getInvalidParameterErrorMessage(invalidValuesKeys[i], $translate);\n }\n }\n return '';\n};\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}/${productInfo.productType}`;\n};\nconst filterLocations = function (result) {\n return result.filter((location) => !location.errorMsg && !location.degradedReason);\n};\n\n/**\n * Gets the remote locations that are error free and without degraded reason\n * @param {*} $repositories the repositories service\n * @return {[] | Promise} returns the locations as array or a promise of the array\n */\nconst getFilteredLocations = function ($repositories) {\n // Don't allow the user to create repository on location with error or degradeded reason\n return $repositories.getLocations().then((locations) => filterLocations(locations));\n};\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload'\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$modal', 'toastr', '$repositories', 'ModalService', '$jwtAuth', 'LocationsRestService',\n 'LocalStorageAdapter', '$interval', '$translate'];\n\nfunction LocationsAndRepositoriesCtrl($scope, $modal, toastr, $repositories, ModalService, $jwtAuth, LocationsRestService,\n LocalStorageAdapter, $interval, $translate) {\n $scope.loader = true;\n\n\n $scope.isLocationInactive = function (location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n //Get locations\n $repositories.getLocations()\n .then((locations) => {\n $scope.locations = locations;\n })\n .finally(() => $scope.loader = false);\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function () {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function () {\n return $repositories.getRepositories();\n };\n\n $scope.isRepoActive = function (repo) {\n return $repositories.isRepoActive(repo);\n };\n\n //Delete location\n $scope.deleteLocation = function (uri) {\n ModalService.openSimpleModal({\n title: $translate.instant('location.confirm.detach'),\n message: $translate.instant('location.confirm.detach.warning', {uri: uri}),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteLocation(uri).finally(() => $scope.loader = false);\n });\n };\n\n //Add new location\n\n $scope.addLocationHttp = function (dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function (data) {\n $scope.locations = data;\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => $scope.loader = false);\n };\n\n $scope.addLocation = function () {\n $modal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationCtrl'\n }).result\n .then(function (dataAddLocation) {\n $scope.addLocationHttp(dataAddLocation);\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function (dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function (data) {\n $scope.locations = data;\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => $scope.loader = false);\n };\n\n $scope.editLocation = function (location) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/edit-location.html',\n controller: 'EditLocationCtrl',\n resolve: {\n location: function () {\n return location;\n }\n }\n });\n\n modalInstance.result.then(function (dataEditLocation) {\n $scope.editLocationHttp(dataEditLocation);\n }, function () {\n });\n };\n\n //Change repository\n $scope.setRepository = function (repo) {\n $repositories.setRepository(repo);\n };\n\n //Delete repository\n $scope.deleteRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: decodeHTML($translate.instant('delete.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteRepository(repository).finally(() => $scope.loader = false);\n removeCachedGraphsOnDelete(repository);\n });\n };\n\n $scope.restartRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.restart.repo'),\n message: decodeHTML($translate.instant('confirm.restart.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.restartRepository(repository).finally(() => $scope.loader = false);\n });\n };\n\n $scope.toggleDefaultRepository = function (repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function () {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function (repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/download-zip'\n : '/download-ttl')}?location=${repository.location}`;\n const token = $jwtAuth.getAuthToken();\n if (token) {\n url = `${url}&authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl'\n });\n modalInstance.result.then(function () {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function () {\n $modal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl'\n });\n };\n\n const timer = $interval(function () {\n // Update repositories state\n $repositories.initQuick();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n function removeCachedGraphsOnDelete(repo) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repo.id}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repo.id}`;\n angular.forEach(LocalStorageAdapter.keys(), function (key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n $scope.getRepositoriesFromLocation = function (locationId) {\n return $repositories.getRepositoriesFromLocation(locationId);\n };\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$modalInstance', 'Upload', 'toastr', '$translate'];\n\nfunction UploadRepositoryConfigCtrl($scope, $modalInstance, Upload, toastr, $translate) {\n $scope.upload = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function () {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile}\n })\n .success(function () {\n $scope.uploadFileLoader = false;\n $modalInstance.close();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$modalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationCtrl($scope, $modalInstance, toastr, productInfo, $translate) {\n\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $modalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$modalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $modalInstance, location, productInfo) {\n\n $scope.editedLocation = angular.copy(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function () {\n $modalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location'];\n\nfunction ChooseRepositoryCtrl($scope, $location) {\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.chooseRepositoryType = function (repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', '$routeParams',\n 'RepositoriesRestService', '$translate'];\n\nfunction AddRepositoryCtrl($scope, toastr, $repositories, $location, $timeout, Upload, $routeParams, RepositoriesRestService, $translate) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n\n $scope.loader = true;\n $scope.pageTitle = $translate.instant('view.create.repo.title');\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: '',\n location: ''\n };\n\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n\n getFilteredLocations($repositories)\n .then((locations) => {\n $scope.locations = locations;\n });\n\n $scope.changedLocation = function () {\n $scope.$broadcast('changedLocation');\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise() && (repositoryType === REPOSITORY_TYPES.graphdbRepo);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition() && !$scope.isEnterprise() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.graphdbRepo:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'GraphDB'});\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'Ontop Virtual SPARQL'});\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'FedX Virtual SPARQL'});\n break;\n }\n }\n\n $scope.getConfig = function (repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).success(function (data) {\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function () {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\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 if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/ruleset/upload',\n data: {ruleset: $scope.uploadFile, location: $scope.repositoryInfo.location}\n }).progress(function (evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n } else {\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo).success(function () {\n toastr.success($translate.instant('created.repo.success.msg', {repoId: $scope.repositoryInfo.id}));\n $repositories.init($scope.goBackToPreviousLocation);\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 $scope.createRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n\n if (isInvalidPieFile) {\n toastr.error($translate.instant('invalid.ruleset.file.error'));\n } else if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function () {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return $translate.instant('repoTooltips.rulesetWarnings.needsSameAs');\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return $translate.instant('repoTooltips.rulesetWarnings.doesntNeedSameAs');\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return $translate.instant('repoTooltips.rulesetWarnings.customRuleset');\n } else {\n return '';\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$modalInstance', 'RepositoriesRestService', 'file', 'toastr', '$translate'];\n\nfunction EditRepositoryFileCtrl($scope, $modalInstance, RepositoriesRestService, file, toastr, $translate) {\n\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file).success(function (data) {\n $scope.fileContent = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n $scope.ok = function () {\n $modalInstance.close({\n content: $scope.fileContent,\n fileLocation: file\n });\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'RepositoriesRestService',\n '$translate'];\n\nfunction EditRepositoryCtrl($scope, $routeParams, toastr, $repositories, $location, ModalService, RepositoriesRestService, $translate) {\n\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.location = $scope.params.location;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.$watch($scope.hasActiveLocation, function () {\n if ($scope.hasActiveLocation) {\n // Should get locations before getting repository info\n getFilteredLocations($repositories).then((locations) => {\n $scope.locations = locations;\n return RepositoriesRestService.getRepository($scope.repositoryInfo);\n })\n .then(function (response) {\n const data = response.data;\n if (angular.isDefined(data.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function (item) {\n if (item.id === data.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (data.params.ruleset && !ifRulesetExists) {\n const name = getFileName(data.params.ruleset.value);\n $scope.rulesets.unshift({id: data.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = data;\n $scope.setRepositoryType(data.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n })\n .catch(function (response) {\n const data = response.data;\n const status = response.status;\n const repositoryId = $routeParams.repositoryId;\n let toastrMsg;\n\n if (status === 404 && repositoryId !== 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.repo.error.not.exists', {repositoryId}));\n } else if (status === 404 && repositoryId === 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.system.repo.warning'));\n } else {\n toastrMsg = getError(data);\n }\n\n toastr.error(toastrMsg, $translate.instant('common.error'), {allowHtml: true});\n\n if (status === 404) {\n setTimeout(function () {\n $scope.loader = false;\n $location.path('repository');\n }, 1000);\n } else {\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function (type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.editRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function () {\n toastr.success($translate.instant('edit.repo.success.msg', {saveId: $scope.repositoryInfo.saveId}));\n $repositories.init($scope.goBackToPreviousLocation);\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo.id);\n }\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 $scope.editRepository = function () {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n let modalMsg = decodeHTML($translate.instant('edit.repo.save.changes.msg', {repoId: $scope.repositoryInfo.id}));\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += decodeHTML($translate.instant('edit.repo.rename.changes.msg'));\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.requested.msg'));\n } else {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.needed.msg'));\n }\n if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.save'),\n message: modalMsg,\n warning: true\n }).result\n .then(function () {\n $scope.editRepoHttp();\n });\n }\n };\n\n $scope.editRepositoryId = function () {\n let msg = decodeHTML($translate.instant('edit.repo.id.warning.msg'));\n if ($scope.isEnterprise()) {\n msg += decodeHTML($translate.instant('edit.repo.id.cluster.warning.msg'));\n }\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.enable.edit'),\n message: msg,\n warning: true\n }).result.then(function () {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[67],{73:function(t,e,n){"use strict";n.r(e);n(3),n(11);const r="UPLOADING",a="PENDING",i="ERROR",s="DONE",o="NONE",l=angular.module("graphdb.framework.impex.import.controllers",["ui.bootstrap","toastr","graphdb.framework.core.services.repositories","graphdb.framework.utils.uriutils"]);l.controller("CommonCtrl",["$scope","$http","toastr","$interval","$repositories","$modal","$filter","$jwtAuth","$location","$translate","LicenseRestService",function(t,e,n,r,a,o,l,c,u,p,f){t.files=[],t.fileChecked={},t.checkAll=!1,t.popoverTemplateUrl="settingsPopoverTemplate.html",t.fileQuery="",t.getAppData=function(){f.getInfo().success((function(e){t.appData={},t.appData.properties={};for(let n=0;n<e.length;n++)t.appData.properties[e[n].key]={source:e[n].source,value:e[n].value};t.maxUploadFileSizeMB=t.appData.properties["graphdb.workbench.maxUploadSize"].value/1048576})).error((function(t){const e=getError(t);n.error(e,p.instant("common.error"))}))},t.getAppData(),t.fileFormats=["ttl","ttls","rdf","rj","n3","nt","nq","trig","trigs","trix","brf","owl","jsonld"];{const e=_.map(t.fileFormats,(function(t){return"."+t+".gz"})),n=_.map(t.fileFormats,(function(t){return"."+t}));t.fileFormatsExtended=_.reduce(_.union(e,n,[".zip"]),(function(t,e){return t+", "+e})),t.fileFormatsHuman=_.reduce(n,(function(t,e){return t+" "+e}))+p.instant("import.gz.zip"),t.textFileFormatsHuman=_.reduce(_.filter(n,(function(t){return".brf"!==t})),(function(t,e){return t+" "+e}))}t.updateListHttp=function(r){e({method:"GET",url:t.getBaseUrl()}).success((function(e){0===t.files.length||r?(t.files=e,_.forEach(t.files,(function(e){e.type||(e.type=t.defaultType)})),t.rebatch()):t.files.forEach((function(n){const r=_.find(e,_.matches({name:n.name}));n.status&&r&&_.assign(n,r),n.type||(n.type=t.defaultType)})),r&&"user"===t.viewType&&(t.files=_.filter(t.files,(function(t){return void 0!==t.status}))),t.showClearStatuses=_.filter(t.files,(function(t){return t.status===s||t.status===i})).length>0,t.savedSettings=_.mapKeys(_.filter(t.files,"parserSettings"),"name"),t.loader=!1})).error((function(e){n.warning(p.instant("import.error.could.not.get.files",{data:getError(e)})),t.loader=!1}))},t.$watch((function(){return $(t.tabId).is(":visible")}),(function(){$(t.tabId).is(":visible")&&(t.updateListHttp(!1),u.hash(t.viewType))})),t.updateList=function(e){t.canWriteActiveRepo()&&$(t.tabId).is(":visible")&&t.updateListHttp(e)},t.init=function(){t.setRestricted(),t.isRestricted||(t.updateList(!0),t.getSettings())},t.$on("repositoryIsSet",t.init),t.pullList=function(){const e=r((function(){t.updating||t.updateList(!1)}),4e3);t.$on("$destroy",(function(){r.cancel(e)}))},t.getVisibleFiles=function(){return l("filter")(t.files,{name:t.fileQuery,type:t.getTypeFilter()})},t.getTypeFilter=function(){return"server"!==t.viewType||"file"!==t.showItems&&"directory"!==t.showItems?"":t.showItems},t.selectAllFiles=function(){t.getVisibleFiles().forEach((function(e){t.fileChecked[e.name]=t.checkAll&&t.importable(e)}))},t.getSettingsFor=function(e,n){return n||_.isEmpty(e)||_.isEmpty(t.savedSettings[e])?angular.copy(t.defaultSettings):t.savedSettings[e]},t.setSettingsFor=function(e,n){t.settingsFor=e,t.settings=t.getSettingsFor(e,n),o.open({templateUrl:"js/angular/import/templates/settingsModal.html",controller:"SettingsModalCtrl",resolve:{settings:function(){return angular.copy(t.settings)},hasParserSettings:t.isLocalLocation,defaultSettings:function(){return t.defaultSettings},isMultiple:function(){return!e}},size:"lg"}).result.then((function(e){t.settings=e,""===t.settingsFor?t.importSelected():t.importFile(t.settingsFor,!0)}),(function(e){t.settings=e}))},t.updateImport=function(e,n){t.settingsFor=e,t.settings=t.getSettingsFor(e,n),t.importFile(e,!1)},t.stopImport=function(r){e({method:"DELETE",url:t.getBaseUrl(),params:{name:r.name,type:r.type}}).success((function(){t.updateList()})).error((function(t){n.warning(p.instant("import.error.could.not.stop",{data:getError(t)}))}))},t.importable=function(){return!0},t.hasImportable=function(){return _.filter(t.files,(function(e){return t.importable(e)})).length>0},t.showTable=function(){const e=t.files.length>0&&("user"===t.viewType||"server"===t.viewType);return t.checkAll&&t.switchBatch(!0),e},t.switchBatch=function(e){e?t.selectAllFiles():t.checkAll&&(t.checkAll=!1),t.batch=_.map(_.filter(t.files,(function(e){return t.fileChecked[e.name]&&t.importable(e)})),"name").length>0},t.rebatch=function(){const e={};t.batch=!1,_.each(t.files,(function(n){e[n.name]=t.fileChecked[n.name],t.batch|=t.fileChecked[n.name]})),t.batch||(t.checkAll=!1),t.fileChecked=e},t.getSelectedFiles=function(){return _.map(_.filter(t.getVisibleFiles(),(function(e){return t.fileChecked[e.name]&&t.importable(e)})),"name")},t.importSelected=function(e){const n=t.getSelectedFiles(),r=function(){const a=n.shift();a&&(e&&(t.settings=t.getSettingsFor(a)),t.importFile(a,!0,r))};r()};const m=function(r,a){e({method:"DELETE",url:t.getBaseUrl()+"/status",params:{remove:a},data:r,headers:{"Content-type":"application/json;charset=utf-8"}}).success((function(){t.updateList(!0)})).error((function(t){n.warning(p.instant("import.error.could.not.clear",{data:getError(t)}))}))};t.resetStatus=function(t){m(t,!1)},t.resetStatusSelected=function(){t.resetStatus(t.getSelectedFiles())},t.removeEntry=function(t){m(t,!0)},t.removeEntrySelected=function(){t.removeEntry(t.getSelectedFiles())},t.isLocalLocation=function(){const t=a.getActiveLocation();return t&&t.local},t.filterSettings=function(e){let n=_.omitBy(t.savedSettings[e],_.isNull);return n=_.omit(n,["repoLocationHash","status","message","name","data","type","format","fileNames","$$hashKey"]),_.map(_.keys(n),(function(t){return[t,n[t]]}))},t.getSettings=function(){t.canWriteActiveRepo()&&e({method:"GET",url:"rest/repositories/"+a.getActiveRepository()+"/import/settings/default"}).success((function(e){t.defaultSettings=e})).error((function(t){n.warning(p.instant("import.error.default.settings",{data:getError(t)}))}))},t.getBaseUrl=function(){return"rest/repositories/"+a.getActiveRepository()+"/import/"+t.viewUrl},t.pritifySettings=function(t){return JSON.stringify(t,null," ")},t.toTitleCase=function(t){return t?_.upperFirst(t.toLowerCase()):t}}]),l.controller("ImportCtrl",["$scope","$http","toastr","$controller",function(t,e,n,r){t.loader=!0,angular.extend(this,r("CommonCtrl",{$scope:t})),t.viewUrl="server",t.defaultType="server",t.tabId="#import-server",t.showItems="all",t.pullList();const a=function(r,a){t.canWriteActiveRepo()&&e({method:"POST",url:t.getBaseUrl(),data:{importSettings:a?null:t.settings,fileNames:r}}).success((function(){t.updateList(),t.batch=!1,t.fileChecked={}})).error((function(t){n.error($translate.instant("import.could.not.send.file",{data:getError(t)}))}))};t.importSelected=function(e){const n=t.getSelectedFiles();a(n,e)},t.importFile=function(t){a([t])},t.init()}]),l.controller("UploadCtrl",["$scope","Upload","$http","toastr","$controller","$modal",function(t,e,n,s,l,c){t.loader=!0,angular.extend(this,l("CommonCtrl",{$scope:t})),t.viewUrl="upload",t.defaultType="file",t.tabId="#import-user",t.pullList(),t.currentFiles=[],t.importable=function(){return!0},t.fileSelected=function(t,e,n,r,a){a.length>0&&a.forEach((function(t){s.warning($translate.instant("import.large.file",{name:t.name,size:Math.floor(t.size/1048576)}))}))},t.$watchCollection("currentFiles",(function(){t.currentFiles&&t.currentFiles.forEach((function(e){if("bz2"===e.name.substr(e.name.lastIndexOf(".")+1)){const n=t.currentFiles.indexOf(e);n>-1&&t.currentFiles.splice(n,1),s.error($translate.instant("import.could.not.upload",{name:e.name}))}})),t.files=_.uniqBy(_.union(_.map(t.currentFiles,(function(t){return{name:t.name,type:"file",file:t}})),t.files),(function(t){return t.name})),t.savedSettings=_.mapKeys(_.filter(t.files,"parserSettings"),"name"),_.each(t.currentFiles,(function(e){t.updateImport(e.name)}))})),t.importFile=function(o,l,c){const u=_.findIndex(t.files,{name:o});if(u<0)s.warning($translate.instant("import.no.such.file",{name:o}));else{const o=t.files[u];if("text"===o.type)t.settings.name=o.name,t.settings.type=o.type,t.settings.data=o.data,t.settings.format=o.format,o.status=a,n({method:"POST",url:t.getBaseUrl()+(l?"":"/update")+"/text",data:t.settings}).success((function(){t.updateList()})).error((function(t){s.error($translate.instant("import.could.not.send.data",{data:getError(t)})),o.status=i,o.message=getError(t)})).finally(c||function(){});else if("url"===o.type)t.settings.name=o.name,t.settings.type=o.type,t.settings.data=o.data,t.settings.format=o.format,o.status=a,n({method:"POST",url:t.getBaseUrl()+(l?"":"/update")+"/url",data:t.settings}).success((function(){t.updateList()})).error((function(t){s.error($translate.instant("import.could.not.send.url",{data:getError(t)}))})).finally(c||function(){});else{let n;t.settings.name=o.name,n=o.file?{file:o.file,importSettings:e.jsonBlob(t.settings)}:{importSettings:e.jsonBlob(t.settings)},e.upload({url:t.getBaseUrl()+(l?"":"/update")+"/file",data:n}).progress((function(t){if(o.file?(o.file=null,o.status=r):o.status!==r&&(o.status=a),o.status===r){const e=parseInt(100*t.loaded/t.total);o.message=e+"% uploaded"}})).success((function(){t.updateList()})).error((function(t){s.error($translate.instant("import.could.not.upload.file",{data:getError(t)})),o.status=i,o.message=getError(t)})).finally(c||function(){})}}},t.updateTextImport=function(e){t.updating=!0,n({method:"POST",url:t.getBaseUrl()+"/update/text",data:e}).success((function(t){})).error((function(t){s.error($translate.instant("import.could.not.update.text",{data:getError(t)}))})).finally((function(){t.updating=!1}))},t.pastedDataIdx=1;const u=function(){const t=new Date;return t.getFullYear()+"-"+_.padStart(t.getMonth()+1,2,"0")+"-"+_.padStart(t.getDate(),2,"0")+" "+_.padStart(t.getHours(),2,"0")+":"+_.padStart(t.getMinutes(),2,"0")+":"+_.padStart(t.getSeconds(),2,"0")+"."+_.padStart(t.getMilliseconds(),3,"0")};t.pasteData=function(e){e&&e.data,c.open({templateUrl:"js/angular/import/templates/textSnippet.html",controller:"TextCtrl",resolve:{text:function(){return e?e.data:""},format:function(){return e?e.format:"text/turtle"}}}).result.then((function(n){e?(e.data===n.text&&e.format===n.format||e.status===o||(e.status=o,e.message=$translate.instant("import.text.snippet.not.imported")),e.data=n.text,e.format=n.format,t.updateTextImport(e)):(e={type:"text",name:"Text snippet "+u(),format:n.format,data:n.text},t.files.unshift(e),t.updateImport(e.name)),n.startImport&&t.setSettingsFor(e.name)}))},t.rdfDataFromURL=function(){c.open({templateUrl:"js/angular/import/templates/urlImport.html",controller:"UrlCtrl",scope:t}).result.then((function(e){const n=_.find(t.files,{type:"url",name:e.url});n?n.format=e.format:t.files.unshift({type:"url",name:e.url,format:e.format,data:e.url}),t.updateImport(e.url,!0),e.startImport&&t.setSettingsFor(e.url,!0)}))},t.init()}]),l.controller("UrlCtrl",["$scope","$modalInstance","toastr",function(t,e){t.importFormat={name:"Auto",type:""},t.startImport=!0,t.cancel=function(){e.dismiss()},t.ok=function(){e.close({url:t.dataUrl,format:t.importFormat.type,startImport:t.startImport})}}]),l.controller("TextCtrl",["$scope","$modalInstance","text","format",function(t,e,n,r){t.importFormats=[{name:"RDF/JSON",type:"application/rdf+json"},{name:"JSON-LD",type:"application/ld+json"},{name:"RDF/XML",type:"application/rdf+xml"},{name:"N3",type:"text/rdf+n3"},{name:"N-Triples",type:"text/plain"},{name:"N-Quads",type:"text/x-nquads"},{name:"Turtle",type:"text/turtle"},{name:"Turtle*",type:"application/x-turtlestar"},{name:"TriX",type:"application/trix"},{name:"TriG",type:"application/x-trig"},{name:"TriG*",type:"application/x-trigstar"}],t.rdfText=n,t.importFormat=_.find(t.importFormats,{type:r}),t.startImport=!0,t.setFormat=function(e){t.importFormat=e},t.cancel=function(){e.dismiss()},t.ok=function(){e.close({text:t.rdfText,format:t.importFormat.type,startImport:t.startImport})}}]),l.controller("TabCtrl",["$scope","$location",function(t,e){t.viewType=e.hash(),"user"!==t.viewType&&"server"!==t.viewType&&(t.viewType="user"),t.isCollapsed=!1,"user"===t.viewType?t.templateUrl="js/angular/import/templates/uploadInfo.html":t.templateUrl="js/angular/import/templates/importInfo.html",t.changeHelpTemplate=function(e){t.templateUrl="js/angular/import/templates/"+e},t.commonUrl="js/angular/import/templates/commonInfo.html"}]),l.controller("SettingsModalCtrl",["$scope","$modalInstance","toastr","UriUtils","settings","hasParserSettings","defaultSettings","isMultiple",function(t,e,n,r,a,i,s,o){t.hasError=function(t,e){return _.find(t,(function(t){return e===t.$name}))},t.settings=a,t.hasParserSettings=i,t.settings.context?"default"===t.settings.context?(t.target="default",t.settings.context=""):t.target="named":t.target="data",t.isMultiple=o,t.enableReplace=!(!t.settings.replaceGraphs||!t.settings.replaceGraphs.length);const l=function(){"default"===t.target?t.settings.context="default":"data"===t.target&&(t.settings.context=""),t.enableReplace?"default"!==t.target&&"named"!==t.target||(t.settings.replaceGraphs=[t.settings.context]):t.settings.replaceGraphs=[]};t.ok=function(){t.settingsForm.replaceGraph.$setValidity("replaceGraph",!0),t.settingsForm.$valid&&(l(),e.close(t.settings))},t.cancel=function(){l(),e.dismiss(t.settings)},t.reset=function(){t.settings=angular.copy(s),t.target="data"},t.addReplaceGraph=function(e){let a=!0;"default"!==e&&(a=r.isValidIri(e)),t.settingsForm.replaceGraph.$setTouched(),t.settingsForm.replaceGraph.$setValidity("replaceGraph",a),t.settingsForm.replaceGraph.$valid&&(t.settings.replaceGraphs=t.settings.replaceGraphs||[],-1===_.indexOf(t.settings.replaceGraphs,e)?(t.replaceGraph="",t.settings.replaceGraphs.push(e)):n.warning($translate.instant("import.graph.already.in.list")))},t.checkEnterReplaceGraph=function(e,n){13===e.keyCode&&(e.preventDefault(),t.addReplaceGraph(n))},t.showAdvancedSettings=!1,t.switchParserSettings=function(){t.showAdvancedSettings=!t.showAdvancedSettings}}])}}]);
2
- //# sourceMappingURL=67.62375b1b4925fff2fe7c.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/import/controllers.js"],"names":["FILE_STATUS","importCtrl","angular","module","controller","$scope","$http","toastr","$interval","$repositories","$modal","$filter","$jwtAuth","$location","$translate","LicenseRestService","files","fileChecked","checkAll","popoverTemplateUrl","fileQuery","getAppData","getInfo","success","data","appData","properties","i","length","key","source","value","maxUploadFileSizeMB","error","msg","getError","instant","fileFormats","gzs","_","map","f","basics","fileFormatsExtended","reduce","union","el","all","fileFormatsHuman","textFileFormatsHuman","filter","updateListHttp","force","method","url","getBaseUrl","forEach","type","defaultType","rebatch","remoteStatus","find","matches","name","status","assign","viewType","undefined","showClearStatuses","file","savedSettings","mapKeys","loader","warning","$watch","$","tabId","is","hash","updateList","canWriteActiveRepo","init","setRestricted","isRestricted","getSettings","$on","pullList","timer","updating","cancel","getVisibleFiles","getTypeFilter","showItems","selectAllFiles","importable","getSettingsFor","fileName","withDefaultSettings","isEmpty","copy","defaultSettings","setSettingsFor","settingsFor","settings","open","templateUrl","resolve","hasParserSettings","isLocalLocation","isMultiple","size","result","then","importSelected","importFile","updateImport","stopImport","params","hasImportable","showTable","switchBatch","batch","newFileChecked","each","getSelectedFiles","overrideSettings","selectedFileNames","importNext","shift","resetStatusOrRemoveEntry","names","remove","headers","resetStatus","resetStatusSelected","removeEntry","removeEntrySelected","location","getActiveLocation","local","filterSettings","filtered","omitBy","isNull","omit","keys","getActiveRepository","viewUrl","pritifySettings","JSON","stringify","toTitleCase","s","upperFirst","toLowerCase","$controller","extend","this","importServerFiles","importSettings","fileNames","Upload","currentFiles","fileSelected","$files","$file","$newFiles","$duplicateFiles","$invalidFiles","Math","floor","$watchCollection","substr","lastIndexOf","fileIdx","indexOf","splice","uniqBy","startImport","nextCallback","fileIndex","findIndex","format","message","finally","jsonBlob","upload","progress","evt","progressPercentage","parseInt","loaded","total","updateTextImport","pastedDataIdx","formattedDate","date","Date","getFullYear","padStart","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","pasteData","text","unshift","rdfDataFromURL","scope","existing","$modalInstance","importFormat","dismiss","ok","close","dataUrl","importFormats","rdfText","setFormat","isCollapsed","changeHelpTemplate","templateFile","commonUrl","UriUtils","hasError","input","o","context","target","enableReplace","replaceGraphs","fixSettings","settingsForm","replaceGraph","$setValidity","$valid","reset","addReplaceGraph","graph","valid","isValidIri","$setTouched","push","checkEnterReplaceGraph","event","keyCode","preventDefault","showAdvancedSettings","switchParserSettings"],"mappings":"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","file":"67.62375b1b4925fff2fe7c.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst FILE_STATUS = {\n 'UPLOADING': 'UPLOADING',\n 'PENDING': 'PENDING',\n 'ERROR': 'ERROR',\n 'DONE': 'DONE',\n 'NONE': 'NONE'\n};\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.uriutils'\n];\n\nconst importCtrl = angular.module('graphdb.framework.impex.import.controllers', modules);\n\nimportCtrl.controller('CommonCtrl', ['$scope', '$http', 'toastr', '$interval', '$repositories', '$modal', '$filter', '$jwtAuth', '$location', '$translate', 'LicenseRestService',\n function ($scope, $http, toastr, $interval, $repositories, $modal, $filter, $jwtAuth, $location, $translate, LicenseRestService) {\n $scope.files = [];\n $scope.fileChecked = {};\n $scope.checkAll = false;\n $scope.popoverTemplateUrl = 'settingsPopoverTemplate.html';\n $scope.fileQuery = '';\n\n $scope.getAppData = function () {\n LicenseRestService.getInfo().success(function (data) {\n $scope.appData = {};\n\n $scope.appData.properties = {};\n\n for (let i = 0; i < data.length; i++) {\n $scope.appData.properties[data[i].key] = {\n source: data[i].source,\n value: data[i].value\n };\n }\n $scope.maxUploadFileSizeMB = $scope.appData.properties['graphdb.workbench.maxUploadSize'].value / (1024 * 1024);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.getAppData();\n\n $scope.fileFormats = ['ttl', 'ttls', 'rdf', 'rj', 'n3', 'nt', 'nq', 'trig', 'trigs', 'trix', 'brf', 'owl', 'jsonld'];\n\n {\n const gzs = _.map($scope.fileFormats, function (f) {\n return '.' + f + '.gz';\n });\n const basics = _.map($scope.fileFormats, function (f) {\n return '.' + f;\n });\n $scope.fileFormatsExtended = _.reduce(_.union(gzs, basics, ['.zip']), function (el, all) {\n return el + ', ' + all;\n });\n $scope.fileFormatsHuman = _.reduce(basics, function (el, all) {\n return el + ' ' + all;\n }) + $translate.instant('import.gz.zip');\n $scope.textFileFormatsHuman = _.reduce(_.filter(basics, function (el) {\n return el !== '.brf';\n }),\n function (el, all) {\n return el + ' ' + all;\n });\n }\n\n $scope.updateListHttp = function (force) {\n $http({\n method: 'GET',\n url: $scope.getBaseUrl()\n }).success(function (data) {\n if ($scope.files.length === 0 || force) {\n $scope.files = data;\n _.forEach($scope.files, function (f) {\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n $scope.rebatch();\n } else {\n $scope.files.forEach(function (f) {\n const remoteStatus = _.find(data, _.matches({'name': f.name}));\n if (f.status && remoteStatus) {\n _.assign(f, remoteStatus);\n }\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n }\n // Need new status here\n if (force && 'user' === $scope.viewType) {\n $scope.files = _.filter($scope.files, function (f) {\n return f.status !== undefined;\n });\n }\n $scope.showClearStatuses = _.filter($scope.files, function (file) {\n return file.status === FILE_STATUS.DONE || file.status === FILE_STATUS.ERROR;\n }).length > 0;\n\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n\n $scope.loader = false;\n }).error(function (data) {\n toastr.warning($translate.instant('import.error.could.not.get.files', {data: getError(data)}));\n $scope.loader = false;\n });\n };\n\n // update the list instantly when the tab is changed\n $scope.$watch(function () {\n return $($scope.tabId).is(':visible');\n }, function () {\n if ($($scope.tabId).is(':visible')) {\n $scope.updateListHttp(false);\n $location.hash($scope.viewType);\n }\n });\n\n $scope.updateList = function (force) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n if (!$($scope.tabId).is(':visible')) {\n return;\n }\n $scope.updateListHttp(force);\n };\n\n $scope.init = function () {\n // Update restricted on repositoryIsSet\n $scope.setRestricted();\n if ($scope.isRestricted) {\n return;\n }\n $scope.updateList(true);\n $scope.getSettings();\n };\n\n $scope.$on('repositoryIsSet', $scope.init);\n\n $scope.pullList = function () {\n const timer = $interval(function () {\n // Skip iteration if we are updating something\n if (!$scope.updating) {\n $scope.updateList(false);\n }\n }, 4000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n $scope.getVisibleFiles = function () {\n return $filter('filter')($scope.files, {name: $scope.fileQuery, type: $scope.getTypeFilter()});\n };\n\n $scope.getTypeFilter = function () {\n if ($scope.viewType === 'server' && ($scope.showItems === 'file' || $scope.showItems === 'directory')) {\n return $scope.showItems;\n } else {\n return '';\n }\n };\n\n $scope.selectAllFiles = function () {\n $scope.getVisibleFiles().forEach(function (file) {\n $scope.fileChecked[file.name] = $scope.checkAll && $scope.importable(file);\n });\n };\n\n $scope.getSettingsFor = function (fileName, withDefaultSettings) {\n if (!withDefaultSettings && !_.isEmpty(fileName) && !_.isEmpty($scope.savedSettings[fileName])) {\n return $scope.savedSettings[fileName];\n } else {\n return angular.copy($scope.defaultSettings);\n }\n };\n\n $scope.setSettingsFor = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/import/templates/settingsModal.html',\n controller: 'SettingsModalCtrl',\n resolve: {\n settings: function () {\n return angular.copy($scope.settings);\n },\n hasParserSettings: $scope.isLocalLocation,\n defaultSettings: function () {\n return $scope.defaultSettings;\n },\n isMultiple: function () {\n return !fileName;\n }\n },\n size: 'lg'\n });\n\n\n modalInstance.result.then(function (settings) {\n $scope.settings = settings;\n if ($scope.settingsFor === '') {\n $scope.importSelected();\n } else {\n $scope.importFile($scope.settingsFor, true);\n }\n\n }, function (settings) {\n $scope.settings = settings;\n });\n };\n\n $scope.updateImport = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n $scope.importFile(fileName, false);\n };\n\n $scope.stopImport = function (file) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl(),\n params: {name: file.name, type: file.type}\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.warning($translate.instant('import.error.could.not.stop', {data: getError(data)}));\n });\n };\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.hasImportable = function () {\n return _.filter($scope.files, function (f) {\n return $scope.importable(f);\n }).length > 0;\n };\n\n $scope.showTable = function () {\n const showTable = $scope.files.length > 0 && ('user' === $scope.viewType || 'server' === $scope.viewType);\n if ($scope.checkAll) {\n $scope.switchBatch(true);\n }\n return showTable;\n };\n\n $scope.switchBatch = function (all) {\n if (all) {\n $scope.selectAllFiles();\n } else {\n if ($scope.checkAll) {\n $scope.checkAll = false;\n }\n }\n $scope.batch = _.map(_.filter($scope.files, function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name').length > 0;\n };\n\n $scope.rebatch = function () {\n const newFileChecked = {};\n $scope.batch = false;\n _.each($scope.files, function (file) {\n newFileChecked[file.name] = $scope.fileChecked[file.name];\n $scope.batch |= $scope.fileChecked[file.name];\n });\n if (!$scope.batch) {\n $scope.checkAll = false;\n }\n $scope.fileChecked = newFileChecked;\n };\n\n $scope.getSelectedFiles = function () {\n return _.map(_.filter($scope.getVisibleFiles(), function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name');\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n\n // Calls the REST API sequentially for the selected files\n const importNext = function () {\n const fileName = selectedFileNames.shift();\n if (fileName) {\n if (overrideSettings) {\n $scope.settings = $scope.getSettingsFor(fileName);\n }\n $scope.importFile(fileName, true, importNext);\n }\n };\n\n importNext();\n };\n\n const resetStatusOrRemoveEntry = function (names, remove) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl() + '/status',\n params: {remove: remove},\n data: names,\n headers: {'Content-type': 'application/json;charset=utf-8'}\n }).success(function () {\n $scope.updateList(true);\n }).error(function (data) {\n toastr.warning($translate.instant('import.error.could.not.clear', {data: getError(data)}));\n });\n };\n\n $scope.resetStatus = function (names) {\n resetStatusOrRemoveEntry(names, false);\n };\n\n $scope.resetStatusSelected = function () {\n $scope.resetStatus($scope.getSelectedFiles());\n };\n\n $scope.removeEntry = function (names) {\n resetStatusOrRemoveEntry(names, true);\n };\n\n $scope.removeEntrySelected = function () {\n $scope.removeEntry($scope.getSelectedFiles());\n };\n\n $scope.isLocalLocation = function () {\n const location = $repositories.getActiveLocation();\n return location && location.local;\n };\n // Settings\n\n $scope.filterSettings = function (fileName) {\n let filtered = _.omitBy($scope.savedSettings[fileName], _.isNull);\n filtered = _.omit(filtered, ['repoLocationHash', 'status', 'message', 'name', 'data', 'type', 'format', 'fileNames', '$$hashKey']);\n return _.map(_.keys(filtered), function (key) {\n return [key, filtered[key]];\n });\n };\n\n $scope.getSettings = function () {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'GET',\n url: 'rest/repositories/' + $repositories.getActiveRepository() + '/import/settings/default'\n }).success(function (data) {\n $scope.defaultSettings = data;\n }).error(function (data) {\n toastr.warning($translate.instant('import.error.default.settings', {data: getError(data)}));\n });\n };\n\n $scope.getBaseUrl = function () {\n return 'rest/repositories/' + $repositories.getActiveRepository() + '/import/' + $scope.viewUrl;\n };\n\n $scope.pritifySettings = function (settings) {\n return JSON.stringify(settings, null, ' ');\n };\n\n $scope.toTitleCase = function (s) {\n if (!s) {\n return s;\n }\n return _.upperFirst(s.toLowerCase());\n };\n }]);\n\nimportCtrl.controller('ImportCtrl', ['$scope', '$http', 'toastr', '$controller', function ($scope, $http, toastr, $controller) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'server';\n $scope.defaultType = 'server';\n $scope.tabId = '#import-server';\n $scope.showItems = 'all';\n\n $scope.pullList();\n\n const importServerFiles = function (selectedFileNames, overrideSettings) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'POST',\n url: $scope.getBaseUrl(),\n data: {importSettings: overrideSettings ? null : $scope.settings, fileNames: selectedFileNames}\n }).success(function () {\n $scope.updateList();\n $scope.batch = false;\n $scope.fileChecked = {};\n }).error(function (data) {\n toastr.error($translate.instant('import.could.not.send.file', {data: getError(data)}));\n });\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n importServerFiles(selectedFileNames, overrideSettings);\n };\n\n $scope.importFile = function (fileName) {\n importServerFiles([fileName]);\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UploadCtrl', ['$scope', 'Upload', '$http', 'toastr', '$controller', '$modal', function ($scope, Upload, $http, toastr, $controller, $modal) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'upload';\n $scope.defaultType = 'file';\n $scope.tabId = '#import-user';\n\n $scope.pullList();\n\n $scope.currentFiles = [];\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.fileSelected = function ($files, $file, $newFiles, $duplicateFiles, $invalidFiles) {\n if ($invalidFiles.length > 0) {\n $invalidFiles.forEach(function (f) {\n toastr.warning($translate.instant('import.large.file', {name: f.name, size: Math.floor(f.size / (1024 * 1024))}));\n });\n }\n };\n\n $scope.$watchCollection('currentFiles', function () {\n function disallowBZip2Files() {\n $scope.currentFiles.forEach(function (f) {\n if (f.name.substr(f.name.lastIndexOf('.') + 1) === 'bz2') {\n const fileIdx = $scope.currentFiles.indexOf(f);\n if (fileIdx > -1) {\n $scope.currentFiles.splice(fileIdx, 1);\n }\n toastr.error($translate.instant('import.could.not.upload', {name: f.name}));\n }\n });\n }\n\n if ($scope.currentFiles) {\n // RDF4J does not support decompressing .bz2 files so we want to reject importing them\n disallowBZip2Files();\n }\n $scope.files = _.uniqBy(\n _.union(\n _.map($scope.currentFiles, function (file) {\n return {name: file.name, type: 'file', file: file}\n }),\n $scope.files\n ),\n function (file) {\n return file.name;\n }\n );\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n _.each($scope.currentFiles, function (file) {\n $scope.updateImport(file.name);\n });\n });\n\n $scope.importFile = function (fileName, startImport, nextCallback) {\n const fileIndex = _.findIndex($scope.files, {name: fileName});\n if (fileIndex < 0) {\n toastr.warning($translate.instant('import.no.such.file', {name: fileName}));\n } else {\n const file = $scope.files[fileIndex];\n if (file.type === 'text') {\n // Import text snippet\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/text',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error($translate.instant('import.could.not.send.data', {data: getError(data)}));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n } else if (file.type === 'url') {\n // Submit URL\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/url',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error($translate.instant('import.could.not.send.url', {data: getError(data)}));\n }).finally(nextCallback || function () {\n });\n } else {\n // Upload real file\n $scope.settings.name = file.name;\n let data;\n if (file.file) {\n data = {file: file.file, importSettings: Upload.jsonBlob($scope.settings)};\n } else {\n data = {importSettings: Upload.jsonBlob($scope.settings)};\n }\n Upload.upload({\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/file',\n data: data\n }).progress(function (evt) {\n if (file.file) {\n file.file = null;\n file.status = FILE_STATUS.UPLOADING;\n } else if (file.status !== FILE_STATUS.UPLOADING) {\n file.status = FILE_STATUS.PENDING;\n }\n\n if (file.status === FILE_STATUS.UPLOADING) {\n const progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n file.message = progressPercentage + '% uploaded';\n }\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error($translate.instant('import.could.not.upload.file', {data: getError(data)}));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n }\n }\n };\n\n $scope.updateTextImport = function (settings) {\n $scope.updating = true;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + '/update/text',\n data: settings\n }).success(function (data) {\n }).error(function (data) {\n toastr.error($translate.instant('import.could.not.update.text', {data: getError(data)}));\n }).finally(function () {\n $scope.updating = false;\n });\n };\n\n $scope.pastedDataIdx = 1;\n\n const formattedDate = function () {\n const date = new Date();\n return date.getFullYear() + '-' + _.padStart(date.getMonth() + 1, 2, '0') + '-' + _.padStart(date.getDate(), 2, '0')\n + ' ' + _.padStart(date.getHours(), 2, '0') + ':' + _.padStart(date.getMinutes(), 2, '0') + ':' + _.padStart(date.getSeconds(), 2, '0')\n + '.' + _.padStart(date.getMilliseconds(), 3, '0');\n };\n\n $scope.pasteData = function (file) {\n const scope = {};\n if (file) {\n scope.rdfText = file.data;\n }\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/import/templates/textSnippet.html',\n controller: 'TextCtrl',\n resolve: {\n text: function () {\n return file ? file.data : '';\n },\n format: function () {\n return file ? file.format : 'text/turtle';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n if (file) {\n if ((file.data !== data.text || file.format !== data.format) && file.status !== FILE_STATUS.NONE) {\n file.status = FILE_STATUS.NONE;\n file.message = $translate.instant('import.text.snippet.not.imported');\n }\n file.data = data.text;\n file.format = data.format;\n $scope.updateTextImport(file);\n } else {\n file = {type: 'text', name: 'Text snippet ' + formattedDate(), format: data.format, data: data.text};\n $scope.files.unshift(file);\n $scope.updateImport(file.name);\n }\n if (data.startImport) {\n $scope.setSettingsFor(file.name);\n }\n });\n };\n\n $scope.rdfDataFromURL = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/import/templates/urlImport.html',\n controller: 'UrlCtrl',\n scope: $scope\n });\n\n modalInstance.result.then(function (data) {\n // URL may already exist\n const existing = _.find($scope.files, {type: 'url', name: data.url});\n if (existing) {\n existing.format = data.format;\n } else {\n $scope.files.unshift({type: 'url', name: data.url, format: data.format, data: data.url});\n }\n $scope.updateImport(data.url, true);\n if (data.startImport) {\n $scope.setSettingsFor(data.url, true);\n }\n });\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UrlCtrl', ['$scope', '$modalInstance', 'toastr', function ($scope, $modalInstance) {\n $scope.importFormat = {name: 'Auto', type: ''};\n $scope.startImport = true;\n\n $scope.cancel = function () {\n $modalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $modalInstance.close({\n url: $scope.dataUrl,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TextCtrl', ['$scope', '$modalInstance', 'text', 'format', function ($scope, $modalInstance, text, format) {\n $scope.importFormats = [\n {name: 'RDF/JSON', type: 'application/rdf+json'},\n {name: 'JSON-LD', type: 'application/ld+json'},\n {name: 'RDF/XML', type: 'application/rdf+xml'},\n {name: 'N3', type: 'text/rdf+n3'},\n {name: 'N-Triples', type: 'text/plain'},\n {name: 'N-Quads', type: 'text/x-nquads'},\n {name: 'Turtle', type: 'text/turtle'},\n {name: 'Turtle*', type: 'application/x-turtlestar'},\n {name: 'TriX', type: 'application/trix'},\n {name: 'TriG', type: 'application/x-trig'},\n {name: 'TriG*', type: 'application/x-trigstar'},\n ];\n\n $scope.rdfText = text;\n $scope.importFormat = _.find($scope.importFormats, {type: format});\n $scope.startImport = true;\n\n $scope.setFormat = function (format) {\n $scope.importFormat = format;\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $modalInstance.close({\n text: $scope.rdfText,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TabCtrl', ['$scope', '$location', function ($scope, $location) {\n $scope.viewType = $location.hash();\n if ($scope.viewType !== 'user' && $scope.viewType !== 'server') {\n $scope.viewType = 'user';\n }\n $scope.isCollapsed = false;\n if ($scope.viewType === 'user') {\n $scope.templateUrl = 'js/angular/import/templates/uploadInfo.html';\n } else {\n $scope.templateUrl = 'js/angular/import/templates/importInfo.html';\n }\n $scope.changeHelpTemplate = function (templateFile) {\n $scope.templateUrl = 'js/angular/import/templates/' + templateFile;\n };\n $scope.commonUrl = 'js/angular/import/templates/commonInfo.html';\n}]);\n\nimportCtrl.controller('SettingsModalCtrl', ['$scope', '$modalInstance', 'toastr', 'UriUtils', 'settings', 'hasParserSettings', 'defaultSettings', 'isMultiple',\n function ($scope, $modalInstance, toastr, UriUtils, settings, hasParserSettings, defaultSettings, isMultiple) {\n $scope.hasError = function (error, input) {\n return _.find(error, function (o) {\n return input === o['$name'];\n });\n };\n\n $scope.settings = settings;\n $scope.hasParserSettings = hasParserSettings;\n if ($scope.settings.context) {\n if ($scope.settings.context === 'default') {\n $scope.target = 'default';\n $scope.settings.context = '';\n } else {\n $scope.target = 'named';\n }\n } else {\n $scope.target = 'data';\n }\n $scope.isMultiple = isMultiple;\n $scope.enableReplace = !!($scope.settings.replaceGraphs && $scope.settings.replaceGraphs.length);\n\n const fixSettings = function () {\n if ($scope.target === 'default') {\n $scope.settings.context = 'default';\n } else if ($scope.target === 'data') {\n $scope.settings.context = '';\n }\n if ($scope.enableReplace) {\n if ($scope.target === 'default' || $scope.target === 'named') {\n $scope.settings.replaceGraphs = [$scope.settings.context];\n }\n } else {\n $scope.settings.replaceGraphs = [];\n }\n };\n\n $scope.ok = function () {\n // resets the validity of a field only used for temporary things\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', true);\n\n if ($scope.settingsForm.$valid) {\n fixSettings();\n $modalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n fixSettings();\n $modalInstance.dismiss($scope.settings);\n };\n\n $scope.reset = function () {\n $scope.settings = angular.copy(defaultSettings);\n $scope.target = 'data';\n };\n\n $scope.addReplaceGraph = function (graph) {\n let valid = true;\n if (graph !== 'default') {\n valid = UriUtils.isValidIri(graph);\n }\n $scope.settingsForm.replaceGraph.$setTouched();\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', valid);\n\n if ($scope.settingsForm.replaceGraph.$valid) {\n $scope.settings.replaceGraphs = $scope.settings.replaceGraphs || [];\n if (_.indexOf($scope.settings.replaceGraphs, graph) === -1) {\n $scope.replaceGraph = '';\n $scope.settings.replaceGraphs.push(graph);\n } else {\n toastr.warning($translate.instant('import.graph.already.in.list'));\n }\n }\n };\n\n $scope.checkEnterReplaceGraph = function (event, graph) {\n if (event.keyCode === 13) {\n event.preventDefault();\n\n $scope.addReplaceGraph(graph);\n }\n };\n\n $scope.showAdvancedSettings = false;\n $scope.switchParserSettings = function () {\n $scope.showAdvancedSettings = !$scope.showAdvancedSettings;\n };\n}]);\n"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[8,106],{225:function(e,t,n){var r,o=o||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o=e.webkitRequestFileSystem,i=e.requestFileSystem||o||e.mozRequestFileSystem,a=function(t){(e.setImmediate||e.setTimeout)((function(){throw t}),0)},s=0,c=function(t){var r=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?r():setTimeout(r,500)},l=function(e,t,n){for(var r=(t=[].concat(t)).length;r--;){var o=e["on"+t[r]];if("function"==typeof o)try{o.call(e,n||e)}catch(e){a(e)}}},u=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},p=function(t,a){t=u(t);var p,d,f,m=this,g=t.type,x=!1,h=function(){l(m,"writestart progress write writeend".split(" "))},w=function(){(!x&&p||(p=n().createObjectURL(t)),d)?d.location.href=p:null==e.open(p,"_blank")&&"undefined"!=typeof safari&&(e.location.href=p);m.readyState=m.DONE,h(),c(p)},y=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},v={create:!0,exclusive:!1};if(m.readyState=m.INIT,a||(a="download"),r)return p=n().createObjectURL(t),r.href=p,r.download=a,void setTimeout((function(){var e,t;e=r,t=new MouseEvent("click"),e.dispatchEvent(t),h(),c(p),m.readyState=m.DONE}));e.chrome&&g&&"application/octet-stream"!==g&&(f=t.slice||t.webkitSlice,t=f.call(t,0,t.size,"application/octet-stream"),x=!0),o&&"download"!==a&&(a+=".download"),("application/octet-stream"===g||o)&&(d=e),i?(s+=t.size,i(e.TEMPORARY,s,y((function(e){e.root.getDirectory("saved",v,y((function(e){var n=function(){e.getFile(a,v,y((function(e){e.createWriter(y((function(n){n.onwriteend=function(t){d.location.href=e.toURL(),m.readyState=m.DONE,l(m,"writeend",t),c(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&w()},"writestart progress write abort".split(" ").forEach((function(e){n["on"+e]=m["on"+e]})),n.write(t),m.abort=function(){n.abort(),m.readyState=m.DONE},m.readyState=m.WRITING})),w)})),w)};e.getFile(a,{create:!1},y((function(e){e.remove(),n()})),y((function(e){e.code===e.NOT_FOUND_ERR?n():w()})))})),w)})),w)):w()},d=p.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t){return navigator.msSaveOrOpenBlob(u(e),t)}:(d.abort=function(){this.readyState=this.DONE,l(this,"abort")},d.readyState=d.INIT=0,d.WRITING=1,d.DONE=2,d.error=d.onwritestart=d.onprogress=d.onwrite=d.onabort=d.onerror=d.onwriteend=null,function(e,t){return new p(e,t)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);
2
- /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */e.exports?e.exports.saveAs=o:null!==n(226)&&null!=n(227)&&(void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r))},226:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}},227:function(e,t){(function(t){e.exports=t}).call(this,{})},41:function(e,t){angular.module("graphdb.workbench.utils.filetypes",[]).value("FileTypes",[{name:"JSON",type:"application/rdf+json",extension:".json"},{name:"JSON-LD",type:"application/ld+json",extension:".jsonld"},{name:"RDF-XML",type:"application/rdf+xml",extension:".rdf"},{name:"N3",type:"text/rdf+n3",extension:".n3"},{name:"N-Triples",type:"text/plain",extension:".nt"},{name:"N-Quads",type:"text/x-nquads",extension:".nq"},{name:"Turtle",type:"text/turtle",extension:".ttl"},{name:"Turtle*",type:"application/x-turtlestar",extension:".ttls"},{name:"TriX",type:"application/trix",extension:".trix"},{name:"TriG",type:"application/x-trig",extension:".trig"},{name:"TriG*",type:"application/x-trigstar",extension:".trigs"},{name:"Binary RDF",type:"application/x-binary-rdf",extension:".brf"}])},90:function(e,t,n){"use strict";n.r(t);n(41);var r=n(223),o=n.n(r),i=n(225),a=n(0);function s(e,t,n,r,a,s,c,l,u,p,d,f,m){const g=d.getPrincipal();let x;e.loading=!1,e.getActiveRepository=function(){return s.getActiveRepository()},e.isTripleResource=function(){return!!e.tripleParam},e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getRdfStarLocalNames=function(e){let t=e.slice();return e.replace(/[<>]+/g,"").split(" ").forEach(e=>{t=t.replace(e,c.getLocalName(e))}),t},e.role=n.search().role?n.search().role:"subject",e.inferenceNamed="explicit",e.inferences=[{id:"all",title:"explore.explicit.implicit"},{id:"explicit",title:"explore.explicit"},{id:"implicit",title:"explore.implicit"}],e.context="",e.getLocalName=function(e){return c.getLocalName(e)},e.blanks=!0,e.inference=g.appSettings.DEFAULT_INFERENCE?"all":"explicit",e.sameAs=g.appSettings.DEFAULT_INFERENCE&&g.appSettings.DEFAULT_SAMEAS,e.formats=p,window.editor={},window.editor.getQueryType=function(){return"RESOURCE"},e.$watch((function(){return s.getActiveRepository()}),(function(){e.getActiveRepository()&&(e.usedPrefixes?e.loadResource():u.getNamespaces(e.getActiveRepository()).success((function(t){e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),x=o()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0,locale:m.getLanguage()}),e.loadResource()})).error((function(e){r.error(f.instant("get.namespaces.error.msg",{error:getError(e)}))})))})),e.loadResource=function(){a.prefix&&a.localName&&e.usedPrefixes[a.prefix]?e.uriParam=e.usedPrefixes[a.prefix]+a.localName:n.search().uri?e.uriParam=n.search().uri+(n.hash()?"#"+n.hash():""):n.search().triple?e.tripleParam=n.search().triple+(n.hash()?"#"+n.hash():""):e.uriParam=n.absUrl(),null!=a.context&&(e.context=a.context),e.uriParam=e.uriParam&&e.uriParam.replace(/<|>/g,""),t({url:"rest/explore/details",method:"GET",params:{uri:e.uriParam,triple:e.tripleParam,context:e.context},headers:{Accept:"application/json"}}).success((function(t){e.details=t,e.context=e.details.context,"object"!==e.details.uri&&(e.details.encodeURI=encodeURIComponent(e.details.uri))})).error((function(e){r.error(f.instant("explore.error.resource.details",{data:getError(e)}))})),e.exploreResource()},e.isContextAvailable=function(){return null!==e.context&&"http://rdf4j.org/schema/rdf4j#SHACLShapeGraph"===e.context},e.goToGraphsViz=function(){n.path("graphs-visualizations").search("uri",e.uriParam)};const h=function(t){const n=angular.element(document.getElementById("yasr-inner")),r=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,n.addClass("opacity-hide"),r.removeClass("opacity-hide")):(e.loading=!1,n.removeClass("opacity-hide"),r.addClass("opacity-hide"))};e.exploreResource=function(){h(!0),null!=a.context&&(e.context=a.context);$.ajax({method:"GET",url:"rest/explore/graph",data:{uri:e.uriParam,triple:e.tripleParam,inference:e.inference,role:e.role,bnodes:e.blanks,sameAs:e.sameAs,context:e.context},headers:{Accept:"application/x-graphdb-table-results+json"}}).done((function(e,t,n){h(!1),x.setResponse(n,t)})).fail((function(e){r.error(f.instant("explore.error.resource",{data:getError(e)})),h(!1)}))},e.downloadExport=function(n){let o,a;e.uriParam?(o="uri=",a=encodeURIComponent(e.uriParam)):(o="triple=",a=encodeURIComponent(e.tripleParam)),t({method:"GET",url:"rest/explore/graph?"+o+a+"&role="+e.role+"&inference="+e.inference+"&bnodes="+e.blanks+"&sameAs="+e.sameAs+(e.context?"&context="+encodeURIComponent(e.context):""),headers:{Accept:n.type}}).success((function(e){let t=e;n.type.indexOf("json")>-1&&(t=JSON.stringify(t));const r=navigator.userAgent.toLowerCase();if(-1!==r.indexOf("safari")&&-1===r.indexOf("chrome"))window.open('data:attachment/csv;filename="statements.'+n.extension+'",'+encodeURIComponent(t),"statements."+n.extension);else{const e=new Blob([t],{type:n.type});Object(i.saveAs)(e,"statements"+n.extension)}})).error((function(e){const t=getError(e);r.error(t,f.instant("common.error"))}))},e.changeRole=function(t){e.role=t,e.exploreResource()},e.changeInference=function(t){e.inference=t,e.exploreResource()},e.copyToClipboardResult=function(e){l.openCopyToClipboardModal(e)},e.$on("language-changed",(function(e,t){x&&x.options&&(x.options.locale=t.locale,x.changeLanguage(t.locale))}))}function c(e,t,n,r,o,i,s,c,l,u,p,d){function f(){c.checkAutocompleteStatus().success((function(t){if(!t){const e=Object(a.decodeHTML)(d.instant("explore.autocomplete.warning.msg"));s.warning("",`<div class="autocomplete-toast"><a href="autocomplete">${e}</a></div>`,{allowHtml:!0})}e.autocompleteEnabled=t})).error((function(){s.error(d.instant("explore.error.autocomplete"))}))}function m(){p.getNamespaces(r.getActiveRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);s.error(n,d.instant("common.error")),e.loader=!1}))}function g(e){const t=e.indexOf("<")>=0&&e.lastIndexOf(">")===e.length-1,n=-1===e.indexOf("<")&&-1===e.lastIndexOf(">"),r=/^<?[http|urn].*>?$/.test(e)&&(t||n);let o=!1;if(r)if(e.indexOf("http")>=0){const t=e.indexOf("//");o=t>4&&e.substring(t+2).length>0}else e.indexOf("urn")>=0&&(o=e.substring(4).length>0);return r&&o}let x,h;function w(t){function r(t){i((function(){e.form&&(e.form.$dirty=t)}))}t||(t=document.getElementById("resources_finder_value").value),t&&g(t)?(r(!1),n.path("resource").search("uri",t)):(r(!0),t&&s.error(d.instant("explore.error.invalid.input")))}e.submit=w,e.getAutocompleteSuggestions=function(t){if(!/<|>/.test(t)&&":"===t.slice(-1)){const n=l.getNamespaceUriForPrefix(e.namespaces,t.slice(0,-1));h=n!==h?n:h,h&&$("#resources_finder_value").val(h)}let n;if(e.autocompleteEnabled){const e=t.replace(h,h+";");n=c.getAutocompleteSuggestions(e)}else n=o.when(e.autocompleteEnabled);return n},e.inputChangedFn=function(){x=document.getElementById("resources_finder_value").value,e.form.$dirty=!(x&&g(x))},e.selectedUriCallback=function(t){e.selectedUri={name:t.title},w(e.selectedUri.name)},e.selectedUri={name:""},e.autocompleteEnabled=!1,angular.isDefined(u.search)&&i((function(){$("#resources_finder_value").val(u.search),$(".search-button").click()}),500),e.getActiveRepository()&&(f(),m()),e.$on("repositoryIsSet",(function(){f(),m()}))}function l(e,t,n,r,o,i,a,s,c,l,u){e.uriParam=n.search().uri,e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newResource=!1,e.datatypeOptions=c.getDatatypeOptions(),e.activeRepository=function(){return o.getActiveRepository()},e.getClassInstancesDetails=function(){l.getNamespaces(e.activeRepository()).success((function(t){e.namespaces=t.results.bindings.map((function(e){return{prefix:e.prefix.value,uri:e.namespace.value}})),e.loader=!1})).error((function(t){const n=getError(t);r.error(n,u.instant("common.error")),e.loader=!1})),s.getDetails(e.uriParam).success((function(t){e.details=t,e.details.encodeURI=encodeURIComponent(e.details.uri)})).error((function(e){r.error(u.instant("explore.error.resource.details",{data:getError(e)}))})),s.getGraph(e.uriParam).then((function(t){const n=c.buildStatements(t,e.uriParam);e.statements=n,e.newResource=!n.length}))},e.addStatement=function(){e.newRowPredicate.$setSubmitted(),e.newRowObject.$setSubmitted(),e.newRowContext.$setSubmitted(),e.newRowPredicate.$valid&&e.newRowObject.$valid&&e.newRowContext.$valid&&(e.statements.push(angular.copy(e.newRow)),e.newRow={subject:e.uriParam,object:{type:"uri",datatype:""}},e.newRowPredicate.$setPristine(),e.newRowPredicate.$setUntouched(),e.newRowObject.$setPristine(),e.newRowObject.$setUntouched(),e.newRowContext.$setPristine(),e.newRowContext.$setUntouched())},e.removeStatement=function(t){e.statements.splice(t,1)},e.getLocalName=function(e){return s.getLocalName(e)},e.checkValid=function(e){if(!angular.isUndefined(e))return!0;return u.instant("explore.validation")},e.validEditRow=function(){return e.rowform.$valid},e.viewTrig=function(){i.open({templateUrl:"js/angular/explore/templates/viewTrig.html",controller:"ViewTrigCtrl",size:"lg",resolve:{data:function(){return c.transformToTrig(e.statements)}}})},e.save=function(){const o=e.newResource?"POST":"PUT";t({method:o,url:"rest/resource?uri="+encodeURIComponent(e.uriParam),headers:{"Content-Type":"application/x-trig"},data:c.transformToTrig(e.statements)}).success((function(){r.success(u.instant("explore.resource.saved"));const t=a((function(){n.path("resource").search("uri",e.uriParam)}),500);e.$on("$destroy",(function(){a.cancel(t)}))})).error((function(e){r.error(getError(e))}))},e.$watch((function(){return o.getActiveRepository()}),(function(){e.activeRepository()&&e.getClassInstancesDetails()})),e.validateUri=function(t){let n=!0;const r=t||"";if(-1===r.indexOf(":"))n=!1;else{const t=r.substring(0,r.indexOf(":"));if(""===s.getNamespaceUriForPrefix(e.namespaces,t)){!1===/^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/.test(r)&&(n=!1);const e=r.match(/\//g);(void 0===e||e.length<3)&&(n=!1)}else{r.substring(r.indexOf(":")+1).trim().length<1&&(n=!1)}}return n}}function u(e,t,n){e.trig=n,e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.explore.controllers",["ngCookies","ngRoute","ui.bootstrap","toastr","graphdb.framework.core","graphdb.framework.core.services.repositories","graphdb.framework.explore.services","graphdb.workbench.utils.filetypes"]).controller("FindResourceCtrl",c).controller("ExploreCtrl",s).controller("EditResourceCtrl",l).controller("ViewTrigCtrl",u),s.$inject=["$scope","$http","$location","toastr","$routeParams","$repositories","ClassInstanceDetailsService","ModalService","RDF4JRepositoriesRestService","FileTypes","$jwtAuth","$translate","$languageService"],c.$inject=["$scope","$http","$location","$repositories","$q","$timeout","toastr","AutocompleteRestService","ClassInstanceDetailsService","$routeParams","RDF4JRepositoriesRestService","$translate"],l.$inject=["$scope","$http","$location","toastr","$repositories","$modal","$timeout","ClassInstanceDetailsService","StatementsService","RDF4JRepositoriesRestService","$translate"],u.$inject=["$scope","$modalInstance","data"]}}]);
3
- //# sourceMappingURL=8.7f3059d43e0db8ff7dd5.bundle.js.map