graphdb-workbench 2.0.2 → 2.1.0-TR1
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.
- package/dist/{0.55459f1b86b8bff8d22d.bundle.js → 0.509486bd2d198aadcb58.bundle.js} +2 -2
- package/dist/{0.55459f1b86b8bff8d22d.bundle.js.map → 0.509486bd2d198aadcb58.bundle.js.map} +1 -1
- package/dist/{11.3957302d7a301df30dd1.bundle.js → 11.3226313f4ba4bcfcab20.bundle.js} +2 -2
- package/dist/11.3226313f4ba4bcfcab20.bundle.js.map +1 -0
- package/dist/120.80843604737b7c260788.bundle.js +1 -1
- package/dist/120.80843604737b7c260788.bundle.js.map +1 -1
- package/dist/18.44723ea06155c72f46ae.bundle.js +1 -1
- package/dist/18.44723ea06155c72f46ae.bundle.js.map +1 -1
- package/dist/{2.6e340067f6eae14345cd.bundle.js → 2.06776cce6f6f06446892.bundle.js} +2 -2
- package/dist/2.06776cce6f6f06446892.bundle.js.map +1 -0
- package/dist/25.9e0925889b3a3f79c7fe.bundle.js +1 -1
- package/dist/25.9e0925889b3a3f79c7fe.bundle.js.map +1 -1
- package/dist/29.9bdb27c21d6eacac1341.bundle.js +1 -1
- package/dist/29.9bdb27c21d6eacac1341.bundle.js.map +1 -1
- package/dist/30.34b74ada583b1b0af913.bundle.js +1 -1
- package/dist/30.34b74ada583b1b0af913.bundle.js.map +1 -1
- package/dist/{48.f047a5ea62690543f8ad.bundle.js → 48.04d55156d377a26fda5b.bundle.js} +2 -2
- package/dist/48.04d55156d377a26fda5b.bundle.js.map +1 -0
- package/dist/68.e25480b7770a679a9654.bundle.js +1 -1
- package/dist/68.e25480b7770a679a9654.bundle.js.map +1 -1
- package/dist/8.d3360e2712bf75fc617a.bundle.js +3 -0
- package/dist/8.d3360e2712bf75fc617a.bundle.js.map +1 -0
- package/dist/{bundle.7d5dd8e4d7cb8ed01086.bundle.js → bundle.9458c8d0f00f7c08da89.bundle.js} +3 -3
- package/dist/bundle.9458c8d0f00f7c08da89.bundle.js.map +1 -0
- package/dist/index.html +3 -3
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +4 -4
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +3 -7
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +11 -11
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/import.html +1 -1
- package/dist/pages/jdbc-create.html +5 -5
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +2 -2
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +2 -2
- package/dist/pages/repository.html +2 -2
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-template-create.html +5 -5
- package/dist/pages/sparql.html +4 -4
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger/index.html +27 -27
- package/package.json +1 -1
- package/dist/11.3957302d7a301df30dd1.bundle.js.map +0 -1
- package/dist/2.6e340067f6eae14345cd.bundle.js.map +0 -1
- package/dist/48.f047a5ea62690543f8ad.bundle.js.map +0 -1
- package/dist/8.5abe78e9d72cdbc2607f.bundle.js +0 -3
- package/dist/8.5abe78e9d72cdbc2607f.bundle.js.map +0 -1
- package/dist/bundle.7d5dd8e4d7cb8ed01086.bundle.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/import/app.js","webpack:///./src/js/angular/import/controllers.js","webpack:///./src/js/angular/import/directives.js"],"names":["angular","module","FILE_STATUS","importCtrl","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","importDirectives","directive","restrict","require","link","element","attr","ctrl","$parsers","has","append"],"mappings":"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","file":"30.34b74ada583b1b0af913.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst 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', '$translate', function ($scope, Upload, $http, toastr, $controller, $modal, $translate) {\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', '$translate',\n function ($scope, $modalInstance, toastr, UriUtils, settings, hasParserSettings, defaultSettings, isMultiple, $translate) {\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","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.0.2\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/import/app.js","webpack:///./src/js/angular/import/controllers.js","webpack:///./src/js/angular/import/directives.js"],"names":["angular","module","FILE_STATUS","importCtrl","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","importDirectives","directive","restrict","require","link","element","attr","ctrl","$parsers","has","append"],"mappings":"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","file":"30.34b74ada583b1b0af913.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/import/controllers';\nimport 'angular/import/directives';\nimport 'angular/core/services/repositories.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'toastr',\n 'ngRoute',\n 'ngFileUpload',\n 'ui.bootstrap',\n 'graphdb.framework.impex.import.directives',\n 'graphdb.framework.impex.import.controllers',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nangular.module('graphdb.framework.impex.import', modules);\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst 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', '$translate', function ($scope, Upload, $http, toastr, $controller, $modal, $translate) {\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', '$translate',\n function ($scope, $modalInstance, toastr, UriUtils, settings, hasParserSettings, defaultSettings, isMultiple, $translate) {\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","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.1.0-TR1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{38:function(e,t,n){"use strict";n.r(t);n(4),n(15);var r=n(0);function i(e,t,n,i,o,a,s,u,c,d,l,g,y,f,p){const m={id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:!0,sameAs:!0};let h,T;function w(t){!function(){if(i.isActiveRepoOntopType())return;const t=document.getElementById("sameAs");!t||e.currentQuery.inference||t.disabled?e.currentQuery.inference&&t.disabled&&(t.removeAttribute("disabled"),e.currentQuery.sameAs=h.appSettings.DEFAULT_SAMEAS):(t.disabled=!0,e.currentQuery.sameAs=!1)}(),e.tabs.forEach((function(n,r){n.id===t.id&&(e.tabs[r].query=t.query,i.isActiveRepoOntopType()||(e.tabs[r].inference=t.inference,e.tabs[r].sameAs=t.sameAs))})),y.set(f.TABS_STATE,e.tabs)}function b(t,n,r,i){const o=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=t,t?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=n,e.extraMessage=r,e.noLoaderTimer=i,o.addClass("hide")):(e.progressMessage="",e.extraMessage="",e.noLoaderTimer=!1,e.currentTrackAlias=null,e.abortRequested=!1,o.removeClass("hide")),null===e.$$phase&&e.$apply()}function C(n){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let r;r=t(n?function(){e.fixSizesOnHorizontalViewModeSwitch(n)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){t.cancel(r)}))}window.yasr&&window.yasr.container&&t((function(){window.yasr.container.resize()}),100)}function S(){C(!0)}function q(t,n){n.newRepo&&(e.tabsData=y.get(f.TABS_STATE),e.tabsData.forEach((function(e){e.yasrData=void 0,e.queryType=void 0,e.resultsCount=0,e.allResultsCount=0,e.sizeDelta=void 0})),y.set(f.TABS_STATE,e.tabsData),e.tabs=e.tabsData,e.currentQuery={},e.errorMessage=null,e.repositoryError=null)}function E(e){t((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function v(r,o){if(e.executedQueryTab=e.currentQuery,o){if("SELECT"!==window.editor.getQueryType()&&"CONSTRUCT"!==window.editor.getQueryType())return void n.warning(p.instant("query.editor.warning.msg"));if(i.isActiveRepoOntopType())return void n.warning(p.instant("query.editor.virtual.repo.warning.msg"))}if(e.explainRequested=o,!e.queryIsRunning){if(r?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.lastRunQueryMode=window.editor.getQueryMode(),"update"===e.lastRunQueryMode&&i.isActiveRepoOntopType())return void n.warning(p.instant("query.editor.virtual.repo.update.warning.msg"));if(b(!0,"update"===e.lastRunQueryMode?p.instant("query.editor.executing.update"):p.instant("query.editor.evaluating.query")),"none"!==e.viewMode){e.viewMode="none",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch();const n=t(window.editor.query,500);e.$on("$destroy",(function(){t.cancel(n)}))}else window.editor.query()}}function Q(){e.showSampleQueries=!e.showSampleQueries,e.showSampleQueries?s.getSavedQueries().success((function(t){e.sampleQueries=t,$("#sampleQueriesCollapse").collapse("show").width("300px")})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.get.saved.queries.error"))})):$("#sampleQueriesCollapse").collapse("hide")}function M(t){let n=void 0;return e.tabsData.forEach((function(e){if(e.name===t.name&&e.query===t.body)return n=e.id,e})),n}function A(t){return function(n,r,i){e.savedQuery={name:n,query:r||window.editor.getValue(),shared:i},$(t).modal("show")}}function D(t){for(let n=0;n<e.tabsData.length;n++){if(e.tabsData[n].id===t)return n}}e.getPrincipal=function(){return d.getPrincipal().then(t=>{h=t,function(e,t){m.inference=t.appSettings.DEFAULT_INFERENCE,m.sameAs=t.appSettings.DEFAULT_SAMEAS,e.skipCountQuery=!t.appSettings.EXECUTE_COUNT,e.ignoreSharedQueries=t.appSettings.IGNORE_SHARED_QUERIES,e.tabsData=e.tabs=y.get(f.TABS_STATE)||[m],e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(e,t,n){w(n.currentQuery)})),e.$on("repositoryIsSet",q)}(e,h)})},e.getPrincipal(),this.hint=document.createElement("span"),this.hint.innerHTML=p.instant("query.editor.autocomplete.hint"),this.hint.style.fontSize="12px",this.hint.style.color="gray",this.hint.style.backgroundColor="white",this.hint.style.position="absolute",this.hint.style.zIndex="3",this.hint.style.paddingLeft="12px",e.$watch((function(){return angular.element(".CodeMirror-hints").length}),e=>{if(e){const e=angular.element(".CodeMirror-hints")[0].getBoundingClientRect();document.body.appendChild(this.hint),this.hint.style.top=e.top-20+"px",this.hint.style.left=e.right-this.hint.offsetWidth-12+"px"}else this.hint&&this.hint.parentNode&&this.hint.parentNode.removeChild(this.hint)}),e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:1e3,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.saveTab=function(t){const n=D(t);if(void 0===n)return{};const r=e.tabsData[n];return e.saveQueryToLocal(r),r},e.loadTab=function(n){e.tabsData=y.get(f.TABS_STATE)||[m];const r=D(n),o=e.tabsData[r];o.yasrData&&b(!0,p.instant("query.editor.render.results.msg"),null,!0);t((function(){""===e.currentQuery.query&&(e.currentQuery.query=" "),t((function(){window.editor.setValue(e.currentQuery.query),e.yasr.updateDownloadDropdown(),e.$broadcast("tabLoaded",e.currentQuery.id),e.yasr.options.output=o.outputType,o.yasrData&&(o.yasrData.customError?(e.yasr.results={getException:function(){return o.yasrData.customError}},b(!1)):t((function(){e.setYasrResponse(o.yasrData,o.textStatus,o.jqXhrOrErrorString),b(!1),$(".yasr_btnGroup li:nth-child(2)").hasClass("active")&&t((function(){$(".yasr_btnGroup li:nth-child(2) a").get(0).click()}),0)}),0))}),0)}),0),y.set(f.TABS_STATE_CURRENT_ID,n),e.currentQuery=o,t((function(){e.currentTabConfig={},e.currentTabConfig.queryType=o.queryType,e.currentTabConfig.resultsCount=o.resultsCount,e.currentTabConfig.offset=o.offset,e.currentTabConfig.allResultsCount=o.allResultsCount,e.currentTabConfig.allResultsCountExact=o.allResultsCountExact,e.currentTabConfig.page=o.page,e.currentTabConfig.pageSize=o.pageSize,e.currentTabConfig.timeFinished=o.timeFinished,e.currentTabConfig.timeTook=o.timeTook,e.currentTabConfig.sizeDelta=o.sizeDelta,e.currentTabConfig.customUpdateMessage=o.customUpdateMessage,e.currentTabConfig.errorMessage=o.errorMessage,e.currentTabConfig.warningMessage=o.warningMessage,e.$apply()}),0),$("#yasr").css("padding","0"),T||(T=setInterval(_,200));!function(){const t=i.isActiveRepoOntopType(),n=i.isActiveRepoFedXType();(function(e){const t=document.getElementById("sameAs"),n=document.getElementById("inference");t&&(t.disabled=!!e);n&&(n.disabled=!!e)})(t),e.nocount=!(!t&&!n)||!h.appSettings.EXECUTE_COUNT,t&&(e.currentQuery.inference=!0,e.currentQuery.sameAs=!0)}()},e.addNewTab=function(n,r,i){if(!z(!0))return;let o;o=r||i?{id:"1",name:r,query:i,inference:h.appSettings.DEFAULT_INFERENCE,sameAs:h.appSettings.DEFAULT_SAMEAS}:{id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:h.appSettings.DEFAULT_INFERENCE,sameAs:h.appSettings.DEFAULT_SAMEAS};x++;const a=""+x;e.tabsData=e.tabs;const s=o;s.id=a,e.tabsData.push(s),y.set(f.TABS_STATE_MAXID,x),y.set(f.TABS_STATE,e.tabsData);const u=Array.prototype.slice.call(arguments,1);t((function(){e.$apply(),E(a),n&&n.apply(this,u)}),0),e.tabs=e.tabsData},e.isTabChangeOk=z,e.runQuery=v,e.abortCurrentQuery=function(){g.abortQueryByAlias(e.currentTrackAlias).success((function(){e.abortRequested=!0}))},e.editQuery=function(t){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:p.instant("query.editor.edit.saved.query",{name:t.name}),query:t,edit:!0,okButtonText:p.instant("common.save.btn")}}}}).result.then((function(r){const i={name:r.name,body:r.body,shared:r.shared};t.name!==r.name?s.addNewSavedQuery(i).success((function(){e.deleteQueryHttp(t.name,!0)})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.edit.saved.query.error"))})):s.editSavedQuery(i).success((function(){$("#editQueryContainer").modal("hide"),e.toggleSampleQueries(),n.success(p.instant("query.editor.edit.saved.query.success.msg",{name:t.name}))})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.edit.saved.query.error"))}))}))},e.getNamespaces=function(){b(!0,p.instant("common.refreshing.namespaces"),p.instant("common.extra.message")),e.namespacesLoading=!0,l.getRepositoryNamespaces().success((function(t){const n={};t.results.bindings.forEach((function(e){n[e.prefix.value]=e.namespace.value})),e.namespaces=n})).error((function(t){e.repositoryError=getError(t)})).finally((function(){b(!1),e.namespacesLoading=!1}))},e.changePagination=function(){v(!0,e.explainRequested)},e.toggleSampleQueries=Q,e.addKnownPrefixes=function(){s.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){const t=getError(e);return n.error(t,p.instant("common.add.known.prefixes.error")),!0}))},e.getExistingTabId=M,e.querySelected=function(t){const n=M(t);e.toggleSampleQueries(),e.isTabChangeOk(!1)&&(e.highlightNextTabChange=!0,angular.isDefined(n)?E(n):e.addNewTab(null,t.name,t.body))},e.deleteQuery=function(t){a.openSimpleModal({title:p.instant("common.confirm"),message:p.instant("query.editor.delete.saved.query.warning.msg",{savedQueryName:t}),warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.deleteQueryHttp=function(t,r){s.deleteSavedQuery(t).success((function(){e.toggleSampleQueries(),r||n.success(p.instant("query.editor.delete.saved.query.success.msg",{savedQueryName:t}))})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.delete.saved.query.error"))}))},e.saveQuery=function(t,n){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:p.instant("query.editor.create.saved.query.msg"),query:{name:t.name,body:t.query,shared:t.shared},edit:!1,okButtonText:p.instant("common.create.btn"),queryExists:n,existingQueryErrMsg:Object(r.decodeHTML)(p.instant("query.sample.existing.query.warning",{name:t.name}))}}}}).result.then((function(t){e.saveQueryHttp(t)}),(function(){}))},e.saveQueryHttp=function(t){s.addNewSavedQuery(t).success((function(){n.success(p.instant("query.editor.save.saved.query.success.msg",{name:t.name}))})).error((function(r){let i=getError(r);if(n.error(i,p.instant("query.editor.create.saved.query.error")),i="Query '"+t.name+"' already exists!"){t.query=t.body;const n=!0;e.saveQuery(t,n)}}))},e.saveQueryToLocal=w,e.setLoader=b,e.getLoaderMessage=function(){const t=(Date.now()-e.queryStartTime)/1e3;let n="",r="";e.noLoaderTimer||(n=e.getHumanReadableSeconds(t));r=e.progressMessage?p.instant("query.editor.progress.msg",{progressMessage:e.progressMessage,timeHuman:n}):p.instant("common.running.operation",{timeHuman:n});e.extraMessage&&t>10&&(r+=p.instant("query.editor.extra.msg",{extraMessage:e.extraMessage}));return r},e.fixSizesOnHorizontalViewModeSwitch=C,e.changeViewMode=function(){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,y.set(f.VIEW_MODE,e.orientationViewMode),C()},e.showHideEditor=S,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!y.get(f.VIEW_MODE)||"true"===y.get(f.VIEW_MODE),e.viewMode="none",e.getActiveRepository=function(){return i.getActiveRepository()},e.getActiveRepositoryNoError=function(){if(!e.repositoryError)return i.getActiveRepository()},e.orientationViewMode||S(),window.onbeforeunload=function(){e.currentQuery&&e.saveTab(e.currentQuery.id),y.set(f.TABS_STATE,e.tabs)},e.$on("$destroy",(function(){e.currentQuery&&e.saveTab(e.currentQuery.id),y.set(f.TABS_STATE,e.tabs),clearInterval(T)})),e.$on("$destroy",(function(){clearInterval(T),window.editor=null,window.yasr=null})),$(document).mouseup((function(t){const n=$("#sampleQueriesCollapse");!n.is(t.target)&&0===n.has(t.target).length&&e.showSampleQueries&&Q()}));let x=y.get(f.TABS_STATE_MAXID)||1;function R(e){return $(e).attr("data-id")}function _(){if(e.currentTabConfig.resultsCount>=0){const e=$(".saveAsDropDown");e.length>0&&!window.editor.queryValid?yasr.header.find(".saveAsDropDown").remove():0===e.length&&window.editor.queryValid&&yasr.updateDownloadDropdown()}}function z(t){return!(e.queryIsRunning&&!e.namespacesLoading)||(t?n.info(p.instant("query.editor.new.tab.running.query.warning.msg")):n.info(p.instant("query.editor.tab.switching.running.query.warning.msg")),!1)}e.highlightNextTabChange=!1,e.$on("tabAction",(function(n,r){r.relatedTarget&&(t.cancel(r.relatedTarget.timer),$(r.relatedTarget).css("color",""),e.saveTab(R(r.relatedTarget))),e.loadTab(R(r.target));const i=["var(--onto-orange)","","var(--onto-orange)"],o=[400,400,400];if(e.highlightNextTabChange){e.highlightNextTabChange=!1;let n=0;$(r.target).css("color",i[n]);const a=function(){n++,n<i.length?($(r.target).css("color",i[n]),r.target.timer=t(a,o[n])):$(r.target).css("color","")};t(a,o[n])}})),e.$on("deleteAllexeptSelected",(function(t,n){e.tabsData=n,e.tabs=n})),e.currentQuery={},e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.editQueryModal=A("#editQueryContainer"),e.deleteQueryModal=A("#confirmDeleteContainer"),e.saveQueryModal=A("#saveQueryContainer"),e.getResultsDescription=function(){let t;if(0===e.currentTabConfig.resultsCount)t="No results.";else{const n=(e.currentTabConfig.page-1)*e.currentTabConfig.pageSize+Math.min(e.currentTabConfig.resultsCount,e.currentTabConfig.pageSize);t=p.instant("query.editor.showing.results.from.msg")+u("currency")(e.currentTabConfig.offset,"",0)+p.instant("query.editor.to")+u("currency")(n,"",0),e.currentTabConfig.allResultsCount>0&&(t+=p.instant(e.currentTabConfig.allResultsCountExact?"query.editor.of":"query.editor.of.at.least"),t+=u("currency")(e.currentTabConfig.allResultsCount,"",0)),t+="."}return t},e.getUpdateDescription=function(){return e.currentTabConfig.customUpdateMessage?p.instant(e.currentTabConfig.customUpdateMessage.msg,{name:e.currentTabConfig.customUpdateMessage.name}):void 0===e.currentTabConfig.sizeDelta?"":e.currentTabConfig.sizeDelta<0?p.instant("yasr.removed.statements.result.msg",{sizeDelta:Math.abs(e.currentTabConfig.sizeDelta)}):e.currentTabConfig.sizeDelta>0?p.instant("yasr.added.statements.result.msg",{sizeDelta:e.currentTabConfig.sizeDelta}):p.instant("yasr.statements.no.change.msg")},e.getStaleWarningMessage=function(){const t=60*Math.round((Date.now()-e.currentTabConfig.timeFinished)/6e4);if(t>=3600)return p.instant("yasr.stale.result.msg",{secondsAgo:e.getHumanReadableSeconds(t)})};const N=function(){};angular.element(c).bind("resize",N),e.$on("$destroy",(function(){angular.element(c).unbind("resize",N)}))}function o(e,t,n,r){n.queryExists&&(e.queryExists=!0),e.query=angular.copy(n.query),e.title=n.title,e.edit=n.edit,e.okButtonText=n.okButtonText,e.existingQueryErrMsg=r.trustAsHtml(n.existingQueryErrMsg),e.ok=function(){e.form.$valid&&t.close(e.query)},e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.core.directives.queryeditor.controllers",["graphdb.framework.utils.localstorageadapter","graphdb.framework.rest.sparql.service"]).controller("QueryEditorCtrl",i).controller("QuerySampleModalCtrl",o),i.$inject=["$scope","$timeout","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","$window","$jwtAuth","RDF4JRepositoriesRestService","MonitoringRestService","LocalStorageAdapter","LSKeys","$translate"],o.$inject=["$scope","$modalInstance","data","$sce"]}}]);
|
|
2
|
-
//# sourceMappingURL=48.
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{38:function(e,t,n){"use strict";n.r(t);n(4),n(15);var r=n(0);function i(e,t,n,i,o,a,s,u,c,d,l,g,y,f,p){const m={id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:!0,sameAs:!0};let h,T;function w(t){!function(){if(i.isActiveRepoOntopType())return;const t=document.getElementById("sameAs");!t||e.currentQuery.inference||t.disabled?e.currentQuery.inference&&t.disabled&&(t.removeAttribute("disabled"),e.currentQuery.sameAs=h.appSettings.DEFAULT_SAMEAS):(t.disabled=!0,e.currentQuery.sameAs=!1)}(),e.tabs.forEach((function(n,r){n.id===t.id&&(e.tabs[r].query=t.query,i.isActiveRepoOntopType()||(e.tabs[r].inference=t.inference,e.tabs[r].sameAs=t.sameAs))})),y.set(f.TABS_STATE,e.tabs)}function b(t,n,r,i){const o=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=t,t?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=n,e.extraMessage=r,e.noLoaderTimer=i,o.addClass("hide")):(e.progressMessage="",e.extraMessage="",e.noLoaderTimer=!1,e.currentTrackAlias=null,e.abortRequested=!1,o.removeClass("hide")),null===e.$$phase&&e.$apply()}function C(n){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let r;r=t(n?function(){e.fixSizesOnHorizontalViewModeSwitch(n)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){t.cancel(r)}))}window.yasr&&window.yasr.container&&t((function(){window.yasr.container.resize()}),100)}function S(){C(!0)}function q(t,n){n.newRepo&&(e.tabsData=y.get(f.TABS_STATE),e.tabsData.forEach((function(e){e.yasrData=void 0,e.queryType=void 0,e.resultsCount=0,e.allResultsCount=0,e.sizeDelta=void 0})),y.set(f.TABS_STATE,e.tabsData),e.tabs=e.tabsData,e.currentQuery={},e.errorMessage=null,e.repositoryError=null)}function E(e){t((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function v(r,o){if(e.executedQueryTab=e.currentQuery,o){if("SELECT"!==window.editor.getQueryType()&&"CONSTRUCT"!==window.editor.getQueryType())return void n.warning(p.instant("query.editor.warning.msg"));if(i.isActiveRepoOntopType())return void n.warning(p.instant("query.editor.virtual.repo.warning.msg"))}if(e.explainRequested=o,!e.queryIsRunning){if(r?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.lastRunQueryMode=window.editor.getQueryMode(),"update"===e.lastRunQueryMode&&i.isActiveRepoOntopType())return void n.warning(p.instant("query.editor.virtual.repo.update.warning.msg"));if(b(!0,"update"===e.lastRunQueryMode?p.instant("query.editor.executing.update"):p.instant("query.editor.evaluating.query")),"none"!==e.viewMode){e.viewMode="none",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch();const n=t(window.editor.query,500);e.$on("$destroy",(function(){t.cancel(n)}))}else window.editor.query()}}function Q(){e.showSampleQueries=!e.showSampleQueries,e.showSampleQueries?s.getSavedQueries().success((function(t){e.sampleQueries=t,$("#sampleQueriesCollapse").collapse("show").width("300px")})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.get.saved.queries.error"))})):$("#sampleQueriesCollapse").collapse("hide")}function M(t){let n=void 0;return e.tabsData.forEach((function(e){if(e.name===t.name&&e.query===t.body)return n=e.id,e})),n}function A(t){return function(n,r,i){e.savedQuery={name:n,query:r||window.editor.getValue(),shared:i},$(t).modal("show")}}function D(t){for(let n=0;n<e.tabsData.length;n++){if(e.tabsData[n].id===t)return n}}e.getPrincipal=function(){return d.getPrincipal().then(t=>{h=t,function(e,t){m.inference=t.appSettings.DEFAULT_INFERENCE,m.sameAs=t.appSettings.DEFAULT_SAMEAS,e.skipCountQuery=!t.appSettings.EXECUTE_COUNT,e.ignoreSharedQueries=t.appSettings.IGNORE_SHARED_QUERIES,e.tabsData=e.tabs=y.get(f.TABS_STATE)||[m],e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(e,t,n){w(n.currentQuery)})),e.$on("repositoryIsSet",q)}(e,h)})},e.getPrincipal(),this.hint=document.createElement("span"),this.hint.innerHTML=p.instant("query.editor.autocomplete.hint"),this.hint.style.fontSize="12px",this.hint.style.color="gray",this.hint.style.backgroundColor="white",this.hint.style.position="absolute",this.hint.style.zIndex="3",this.hint.style.paddingLeft="12px",e.$watch((function(){return angular.element(".CodeMirror-hints").length}),e=>{if(e){const e=angular.element(".CodeMirror-hints")[0].getBoundingClientRect();document.body.appendChild(this.hint),this.hint.style.top=e.top-20+"px",this.hint.style.left=e.right-this.hint.offsetWidth-12+"px"}else this.hint&&this.hint.parentNode&&this.hint.parentNode.removeChild(this.hint)}),e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:1e3,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.saveTab=function(t){const n=D(t);if(void 0===n)return{};const r=e.tabsData[n];return e.saveQueryToLocal(r),r},e.loadTab=function(n){e.tabsData=y.get(f.TABS_STATE)||[m];const r=D(n),o=e.tabsData[r];o.yasrData&&b(!0,p.instant("query.editor.render.results.msg"),null,!0);t((function(){""===e.currentQuery.query&&(e.currentQuery.query=" "),t((function(){window.editor.setValue(e.currentQuery.query),e.yasr.updateDownloadDropdown(),e.$broadcast("tabLoaded",e.currentQuery.id),e.yasr.options.output=o.outputType,o.yasrData&&(o.yasrData.customError?(e.yasr.results={getException:function(){return o.yasrData.customError}},b(!1)):t((function(){e.setYasrResponse(o.yasrData,o.textStatus,o.jqXhrOrErrorString),b(!1),$(".yasr_btnGroup li:nth-child(2)").hasClass("active")&&t((function(){$(".yasr_btnGroup li:nth-child(2) a").get(0).click()}),0)}),0))}),0)}),0),y.set(f.TABS_STATE_CURRENT_ID,n),e.currentQuery=o,t((function(){e.currentTabConfig={},e.currentTabConfig.queryType=o.queryType,e.currentTabConfig.resultsCount=o.resultsCount,e.currentTabConfig.offset=o.offset,e.currentTabConfig.allResultsCount=o.allResultsCount,e.currentTabConfig.allResultsCountExact=o.allResultsCountExact,e.currentTabConfig.page=o.page,e.currentTabConfig.pageSize=o.pageSize,e.currentTabConfig.timeFinished=o.timeFinished,e.currentTabConfig.timeTook=o.timeTook,e.currentTabConfig.sizeDelta=o.sizeDelta,e.currentTabConfig.customUpdateMessage=o.customUpdateMessage,e.currentTabConfig.errorMessage=o.errorMessage,e.currentTabConfig.warningMessage=o.warningMessage,e.$apply()}),0),$("#yasr").css("padding","0"),T||(T=setInterval(_,200));!function(){const t=i.isActiveRepoOntopType(),n=i.isActiveRepoFedXType();(function(e){const t=document.getElementById("sameAs"),n=document.getElementById("inference");t&&(t.disabled=!!e);n&&(n.disabled=!!e)})(t),e.nocount=!(!t&&!n)||!h.appSettings.EXECUTE_COUNT,t&&(e.currentQuery.inference=!0,e.currentQuery.sameAs=!0)}()},e.addNewTab=function(n,r,i){if(!z(!0))return;let o;o=r||i?{id:"1",name:r,query:i,inference:h.appSettings.DEFAULT_INFERENCE,sameAs:h.appSettings.DEFAULT_SAMEAS}:{id:"1",name:"",query:"select * where { \n\t?s ?p ?o .\n} limit 100 \n",inference:h.appSettings.DEFAULT_INFERENCE,sameAs:h.appSettings.DEFAULT_SAMEAS};R++;const a=""+R;e.tabsData=e.tabs;const s=o;s.id=a,e.tabsData.push(s),y.set(f.TABS_STATE_MAXID,R),y.set(f.TABS_STATE,e.tabsData);const u=Array.prototype.slice.call(arguments,1);t((function(){e.$apply(),E(a),n&&n.apply(this,u)}),0),e.tabs=e.tabsData},e.isTabChangeOk=z,e.runQuery=v,e.abortCurrentQuery=function(){g.abortQueryByAlias(e.currentTrackAlias).success((function(){e.abortRequested=!0}))},e.editQuery=function(t){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:p.instant("query.editor.edit.saved.query",{name:t.name}),query:t,edit:!0,okButtonText:p.instant("common.save.btn")}}}}).result.then((function(r){const i={name:r.name,body:r.body,shared:r.shared};t.name!==r.name?s.addNewSavedQuery(i).success((function(){e.deleteQueryHttp(t.name,!0)})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.edit.saved.query.error"))})):s.editSavedQuery(i).success((function(){$("#editQueryContainer").modal("hide"),e.toggleSampleQueries(),n.success(p.instant("query.editor.edit.saved.query.success.msg",{name:t.name}))})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.edit.saved.query.error"))}))}))},e.getNamespaces=function(){b(!0,p.instant("common.refreshing.namespaces"),p.instant("common.extra.message")),e.namespacesLoading=!0,l.getRepositoryNamespaces().success((function(t){const n={};t.results.bindings.forEach((function(e){n[e.prefix.value]=e.namespace.value})),e.namespaces=n})).error((function(t){e.repositoryError=getError(t)})).finally((function(){b(!1),e.namespacesLoading=!1}))},e.changePagination=function(){v(!0,e.explainRequested)},e.toggleSampleQueries=Q,e.addKnownPrefixes=function(){s.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){const t=getError(e);return n.error(t,p.instant("common.add.known.prefixes.error")),!0}))},e.getExistingTabId=M,e.querySelected=function(t){const n=M(t);e.toggleSampleQueries(),e.isTabChangeOk(!1)&&(e.highlightNextTabChange=!0,angular.isDefined(n)?E(n):e.addNewTab(null,t.name,t.body))},e.deleteQuery=function(t){a.openSimpleModal({title:p.instant("common.confirm"),message:p.instant("query.editor.delete.saved.query.warning.msg",{savedQueryName:t}),warning:!0}).result.then((function(){e.deleteQueryHttp(t)}))},e.deleteQueryHttp=function(t,r){s.deleteSavedQuery(t).success((function(){e.toggleSampleQueries(),r||n.success(p.instant("query.editor.delete.saved.query.success.msg",{savedQueryName:t}))})).error((function(e){const t=getError(e);n.error(t,p.instant("query.editor.delete.saved.query.error"))}))},e.saveQuery=function(t,n){o.open({templateUrl:"js/angular/core/directives/queryeditor/templates/query-sample.html",controller:"QuerySampleModalCtrl",resolve:{data:function(){return{title:p.instant("query.editor.create.saved.query.msg"),query:{name:t.name,body:t.query,shared:t.shared},edit:!1,okButtonText:p.instant("common.create.btn"),queryExists:n,existingQueryErrMsg:Object(r.decodeHTML)(p.instant("query.sample.existing.query.warning",{name:t.name}))}}}}).result.then((function(t){e.saveQueryHttp(t)}),(function(){}))},e.saveQueryHttp=function(t){s.addNewSavedQuery(t).success((function(){n.success(p.instant("query.editor.save.saved.query.success.msg",{name:t.name}))})).error((function(r,i){const o=getError(r);n.error(o,p.instant("query.editor.create.saved.query.error"));let a=!1;409===i&&(a=!0),t.query=t.body,e.saveQuery(t,a)}))},e.saveQueryToLocal=w,e.setLoader=b,e.getLoaderMessage=function(){const t=(Date.now()-e.queryStartTime)/1e3;let n="",r="";e.noLoaderTimer||(n=e.getHumanReadableSeconds(t));r=e.progressMessage?p.instant("query.editor.progress.msg",{progressMessage:e.progressMessage,timeHuman:n}):p.instant("common.running.operation",{timeHuman:n});e.extraMessage&&t>10&&(r+=p.instant("query.editor.extra.msg",{extraMessage:e.extraMessage}));return r},e.fixSizesOnHorizontalViewModeSwitch=C,e.changeViewMode=function(){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,y.set(f.VIEW_MODE,e.orientationViewMode),C()},e.showHideEditor=S,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!y.get(f.VIEW_MODE)||"true"===y.get(f.VIEW_MODE),e.viewMode="none",e.getActiveRepository=function(){return i.getActiveRepository()},e.getActiveRepositoryNoError=function(){if(!e.repositoryError)return i.getActiveRepository()},e.orientationViewMode||S(),window.onbeforeunload=function(){e.currentQuery&&e.saveTab(e.currentQuery.id),y.set(f.TABS_STATE,e.tabs)},e.$on("$destroy",(function(){e.currentQuery&&e.saveTab(e.currentQuery.id),y.set(f.TABS_STATE,e.tabs),clearInterval(T)})),e.$on("$destroy",(function(){clearInterval(T),window.editor=null,window.yasr=null})),$(document).mouseup((function(t){const n=$("#sampleQueriesCollapse");!n.is(t.target)&&0===n.has(t.target).length&&e.showSampleQueries&&Q()}));let R=y.get(f.TABS_STATE_MAXID)||1;function x(e){return $(e).attr("data-id")}function _(){if(e.currentTabConfig.resultsCount>=0){const e=$(".saveAsDropDown");e.length>0&&!window.editor.queryValid?yasr.header.find(".saveAsDropDown").remove():0===e.length&&window.editor.queryValid&&yasr.updateDownloadDropdown()}}function z(t){return!(e.queryIsRunning&&!e.namespacesLoading)||(t?n.info(p.instant("query.editor.new.tab.running.query.warning.msg")):n.info(p.instant("query.editor.tab.switching.running.query.warning.msg")),!1)}e.highlightNextTabChange=!1,e.$on("tabAction",(function(n,r){r.relatedTarget&&(t.cancel(r.relatedTarget.timer),$(r.relatedTarget).css("color",""),e.saveTab(x(r.relatedTarget))),e.loadTab(x(r.target));const i=["var(--onto-orange)","","var(--onto-orange)"],o=[400,400,400];if(e.highlightNextTabChange){e.highlightNextTabChange=!1;let n=0;$(r.target).css("color",i[n]);const a=function(){n++,n<i.length?($(r.target).css("color",i[n]),r.target.timer=t(a,o[n])):$(r.target).css("color","")};t(a,o[n])}})),e.$on("deleteAllexeptSelected",(function(t,n){e.tabsData=n,e.tabs=n})),e.currentQuery={},e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.editQueryModal=A("#editQueryContainer"),e.deleteQueryModal=A("#confirmDeleteContainer"),e.saveQueryModal=A("#saveQueryContainer"),e.getResultsDescription=function(){let t;if(0===e.currentTabConfig.resultsCount)t="No results.";else{const n=(e.currentTabConfig.page-1)*e.currentTabConfig.pageSize+Math.min(e.currentTabConfig.resultsCount,e.currentTabConfig.pageSize);t=p.instant("query.editor.showing.results.from.msg")+u("currency")(e.currentTabConfig.offset,"",0)+p.instant("query.editor.to")+u("currency")(n,"",0),e.currentTabConfig.allResultsCount>0&&(t+=p.instant(e.currentTabConfig.allResultsCountExact?"query.editor.of":"query.editor.of.at.least"),t+=u("currency")(e.currentTabConfig.allResultsCount,"",0)),t+="."}return t},e.getUpdateDescription=function(){return e.currentTabConfig.customUpdateMessage?p.instant(e.currentTabConfig.customUpdateMessage.msg,{name:e.currentTabConfig.customUpdateMessage.name}):void 0===e.currentTabConfig.sizeDelta?"":e.currentTabConfig.sizeDelta<0?p.instant("yasr.removed.statements.result.msg",{sizeDelta:Math.abs(e.currentTabConfig.sizeDelta)}):e.currentTabConfig.sizeDelta>0?p.instant("yasr.added.statements.result.msg",{sizeDelta:e.currentTabConfig.sizeDelta}):p.instant("yasr.statements.no.change.msg")},e.getStaleWarningMessage=function(){const t=60*Math.round((Date.now()-e.currentTabConfig.timeFinished)/6e4);if(t>=3600)return p.instant("yasr.stale.result.msg",{secondsAgo:e.getHumanReadableSeconds(t)})};const N=function(){};angular.element(c).bind("resize",N),e.$on("$destroy",(function(){angular.element(c).unbind("resize",N)}))}function o(e,t,n,r){n.queryExists&&(e.queryExists=!0),e.query=angular.copy(n.query),e.title=n.title,e.edit=n.edit,e.okButtonText=n.okButtonText,e.existingQueryErrMsg=r.trustAsHtml(n.existingQueryErrMsg),e.ok=function(){e.form.$valid&&t.close(e.query)},e.cancel=function(){t.dismiss("cancel")}}angular.module("graphdb.framework.core.directives.queryeditor.controllers",["graphdb.framework.utils.localstorageadapter","graphdb.framework.rest.sparql.service"]).controller("QueryEditorCtrl",i).controller("QuerySampleModalCtrl",o),i.$inject=["$scope","$timeout","toastr","$repositories","$modal","ModalService","SparqlRestService","$filter","$window","$jwtAuth","RDF4JRepositoriesRestService","MonitoringRestService","LocalStorageAdapter","LSKeys","$translate"],o.$inject=["$scope","$modalInstance","data","$sce"]}}]);
|
|
2
|
+
//# sourceMappingURL=48.04d55156d377a26fda5b.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","principal","checkQueryIntervalId","saveQueryToLocal","currentQueryTab","isActiveRepoOntopType","sameAsBtn","document","getElementById","currentQuery","disabled","removeAttribute","appSettings","DEFAULT_SAMEAS","shouldDisableSameAs","tabs","forEach","tab","index","set","TABS_STATE","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","$on","cancel","yasr","container","resize","showHideEditor","deleteCachedSparqlResults","foo","params","newRepo","tabsData","get","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","getPrincipal","then","response","scope","DEFAULT_INFERENCE","skipCountQuery","EXECUTE_COUNT","ignoreSharedQueries","IGNORE_SHARED_QUERIES","$watchCollection","newVal","oldVal","initTabs","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","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","status","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.04d55156d377a26fda5b.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;\n // Wrapped in function for ease of testing\n $scope.getPrincipal = function () {\n return $jwtAuth.getPrincipal()\n .then((response) => {\n principal = response;\n initTabs($scope, principal);\n });\n };\n\n $scope.getPrincipal();\n let checkQueryIntervalId;\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, status) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('query.editor.create.saved.query.error'));\n let queryExists = false;\n if (status === 409) {\n queryExists = true;\n }\n query.query = query.body;\n $scope.saveQuery(query, queryExists);\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 +1,2 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{74:function(t,e,i){"use strict";i.r(e);i(3),i(11);const r=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);r.directive("validateUri",["UriUtils",function(t){return{restrict:"A",require:"ngModel",link:function(e,i,r,a){a.$parsers.unshift((function(i){let r=!0;return"named"===e.target&&(r=t.isValidIri(i)),a.$setValidity("validateUri",r),i}))}}}]),r.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),r.directive("filesOntoLoader",(function(){return{link:function(t,e,i){t.$watch("file.status",(function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+i.size+'" height="'+i.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.0
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{74:function(t,e,i){"use strict";i.r(e);i(3),i(11);const r=angular.module("graphdb.framework.impex.import.directives",["graphdb.framework.utils.uriutils"]);r.directive("validateUri",["UriUtils",function(t){return{restrict:"A",require:"ngModel",link:function(e,i,r,a){a.$parsers.unshift((function(i){let r=!0;return"named"===e.target&&(r=t.isValidIri(i)),a.$setValidity("validateUri",r),i}))}}}]),r.directive("filesTable",(function(){return{restrict:"A",templateUrl:"js/angular/import/templates/filesTable.html"}})),r.directive("filesOntoLoader",(function(){return{link:function(t,e,i){t.$watch("file.status",(function(){"IMPORTING"!==t.file.status&&"UPLOADING"!==t.file.status||!$(e).has("object").length>0&&$(e).append('<object width="'+i.size+'" height="'+i.size+'" data="js/angular/templates/loader/ot-loader.svg?v=2.1.0-TR1">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
|
|
2
2
|
//# sourceMappingURL=68.e25480b7770a679a9654.bundle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/import/directives.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"68.e25480b7770a679a9654.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.0
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/import/directives.js"],"names":["importDirectives","angular","module","directive","UriUtils","restrict","require","link","scope","element","attr","ctrl","$parsers","unshift","value","valid","target","isValidIri","$setValidity","templateUrl","$watch","file","status","$","has","length","append","size"],"mappings":"0FAAA,kBAGA,MAAMA,EAAmBC,QAAQC,OAAO,4CAA6C,CACjF,qCAGJF,EAAiBG,UAAU,cAAe,CAAC,WAAY,SAAUC,GAC7D,MAAO,CACHC,SAAU,IACVC,QAAS,UACTC,KAAM,SAAUC,EAAOC,EAASC,EAAMC,GAClCA,EAAKC,SAASC,SAAQ,SAAUC,GAC5B,IAAIC,GAAQ,EAQZ,MANqB,UAAjBP,EAAMQ,SACND,EAAQX,EAASa,WAAWH,IAGhCH,EAAKO,aAAa,cAAeH,GAE1BD,UAMvBd,EAAiBG,UAAU,cAAc,WACrC,MAAO,CACHE,SAAU,IACVc,YAAa,kDAIrBnB,EAAiBG,UAAU,mBAAmB,WAC1C,MAAO,CACHI,KAAM,SAAUC,EAAOC,EAASC,GAC5BF,EAAMY,OAAO,eAAe,WACE,cAAtBZ,EAAMa,KAAKC,QAAgD,cAAtBd,EAAMa,KAAKC,SAC3CC,EAAEd,GAASe,IAAI,UAAUC,OAAS,GACnCF,EAAEd,GAASiB,OAAO,kBAAoBhB,EAAKiB,KAAO,aAAejB,EAAKiB,KAAO","file":"68.e25480b7770a679a9654.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst importDirectives = angular.module('graphdb.framework.impex.import.directives', [\n 'graphdb.framework.utils.uriutils'\n]);\n\nimportDirectives.directive('validateUri', ['UriUtils', function (UriUtils) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function (scope, element, attr, ctrl) {\n ctrl.$parsers.unshift(function (value) {\n let valid = true;\n\n if (scope.target === 'named') {\n valid = UriUtils.isValidIri(value);\n }\n\n ctrl.$setValidity('validateUri', valid);\n\n return value;\n });\n }\n };\n}]);\n\nimportDirectives.directive('filesTable', function () {\n return {\n restrict: 'A',\n templateUrl: 'js/angular/import/templates/filesTable.html'\n };\n});\n\nimportDirectives.directive('filesOntoLoader', function () {\n return {\n link: function (scope, element, attr) {\n scope.$watch('file.status', function () {\n if (scope.file.status === 'IMPORTING' || scope.file.status === 'UPLOADING') {\n if (!$(element).has('object').length > 0) {\n $(element).append('<object width=\"' + attr.size + '\" height=\"' + attr.size + '\" data=\"js/angular/templates/loader/ot-loader.svg?v=2.1.0-TR1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
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)},v=function(e){return function(){if(m.readyState!==m.DONE)return e.apply(this,arguments)}},y={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,v((function(e){e.root.getDirectory("saved",y,v((function(e){var n=function(){e.getFile(a,y,v((function(e){e.createWriter(v((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},v((function(e){e.remove(),n()})),v((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,g){let x;e.role=n.search().role?n.search().role:"subject",g.when(d.getPrincipal()).then(t=>{e.inference=t.appSettings.DEFAULT_INFERENCE&&"context"===!e.role?"all":"explicit",e.sameAs=t.appSettings.DEFAULT_INFERENCE&&t.appSettings.DEFAULT_SAMEAS}),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.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.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),Promise.resolve(void 0).then(()=>void $.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,"context"===e.role&&(e.inference="explicit"),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","$q"],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.d3360e2712bf75fc617a.bundle.js.map
|