graphdb-workbench 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/11.3957302d7a301df30dd1.bundle.js +1 -1
  2. package/dist/11.3957302d7a301df30dd1.bundle.js.map +1 -1
  3. package/dist/120.80843604737b7c260788.bundle.js +1 -1
  4. package/dist/120.80843604737b7c260788.bundle.js.map +1 -1
  5. package/dist/18.44723ea06155c72f46ae.bundle.js +1 -1
  6. package/dist/18.44723ea06155c72f46ae.bundle.js.map +1 -1
  7. package/dist/25.9e0925889b3a3f79c7fe.bundle.js +1 -1
  8. package/dist/25.9e0925889b3a3f79c7fe.bundle.js.map +1 -1
  9. package/dist/29.9bdb27c21d6eacac1341.bundle.js +1 -1
  10. package/dist/29.9bdb27c21d6eacac1341.bundle.js.map +1 -1
  11. package/dist/30.34b74ada583b1b0af913.bundle.js +1 -1
  12. package/dist/30.34b74ada583b1b0af913.bundle.js.map +1 -1
  13. package/dist/68.e25480b7770a679a9654.bundle.js +1 -1
  14. package/dist/68.e25480b7770a679a9654.bundle.js.map +1 -1
  15. package/dist/{bundle.a8677c75aad1ad7b3b6a.bundle.js → bundle.deea1d235ad6ebbd617a.bundle.js} +3 -3
  16. package/dist/bundle.deea1d235ad6ebbd617a.bundle.js.map +1 -0
  17. package/dist/index.html +3 -3
  18. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  19. package/dist/pages/autocomplete.html +1 -1
  20. package/dist/pages/choose-repository-type.html +1 -1
  21. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  22. package/dist/pages/create-index.html +4 -4
  23. package/dist/pages/dependencies.html +1 -1
  24. package/dist/pages/domainRangeInfo.html +2 -2
  25. package/dist/pages/edit.html +1 -1
  26. package/dist/pages/explore.html +1 -1
  27. package/dist/pages/export.html +1 -1
  28. package/dist/pages/find.html +1 -1
  29. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  30. package/dist/pages/graphs-visualizations.html +7 -7
  31. package/dist/pages/import.html +1 -1
  32. package/dist/pages/jdbc-create.html +5 -5
  33. package/dist/pages/monitor/queries.html +1 -1
  34. package/dist/pages/monitor/resources.html +2 -2
  35. package/dist/pages/namespaces.html +2 -2
  36. package/dist/pages/plugins.html +1 -1
  37. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  38. package/dist/pages/rdfrank.html +2 -2
  39. package/dist/pages/repositories.html +2 -2
  40. package/dist/pages/repository.html +2 -2
  41. package/dist/pages/similarity-indexes.html +1 -1
  42. package/dist/pages/sparql-template-create.html +5 -5
  43. package/dist/pages/sparql.html +3 -3
  44. package/dist/pages/webapi.html +2 -2
  45. package/dist/res/swagger/index.html +27 -27
  46. package/package.json +1 -1
  47. package/dist/bundle.a8677c75aad1ad7b3b6a.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.0\">{{\\'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.0.1\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\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.0">{{\'common.loading\' | translate}}</object>')}))}}}))}}]);
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">{{\'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.0\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}
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\">{{\\'common.loading\\' | translate}}</object>');\n }\n }\n });\n }\n };\n});\n"],"sourceRoot":""}