graphdb-workbench 3.4.0-TR3 → 3.4.0-TR5

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 (152) hide show
  1. package/dist/19057.a52dd7b0e356e884a792.bundle.js +3 -0
  2. package/dist/19057.a52dd7b0e356e884a792.bundle.js.map +1 -0
  3. package/dist/23236.1490d29a6e40f437885b.bundle.js +2 -0
  4. package/dist/23236.1490d29a6e40f437885b.bundle.js.map +1 -0
  5. package/dist/24125.0fd6b7797f2630fe59c6.bundle.js +2 -0
  6. package/dist/24125.0fd6b7797f2630fe59c6.bundle.js.map +1 -0
  7. package/dist/24690.79fd696f08f3ebbb1c6f.bundle.js +2 -0
  8. package/dist/24690.79fd696f08f3ebbb1c6f.bundle.js.map +1 -0
  9. package/dist/{3395.8452312923e6a77d2ffd.bundle.js → 3395.8dfba5922c8aad6d860c.bundle.js} +2 -2
  10. package/dist/3395.8dfba5922c8aad6d860c.bundle.js.map +1 -0
  11. package/dist/34985.8ef74b317fc8bff7e8e1.bundle.js +2 -0
  12. package/dist/34985.8ef74b317fc8bff7e8e1.bundle.js.map +1 -0
  13. package/dist/50244.69475a004173b61902a8.bundle.js +2 -0
  14. package/dist/50244.69475a004173b61902a8.bundle.js.map +1 -0
  15. package/dist/60447.4fd8b4ce9b95b98deade.bundle.js +2 -0
  16. package/dist/60447.4fd8b4ce9b95b98deade.bundle.js.map +1 -0
  17. package/dist/63842.68a1c5451a236b8ede97.bundle.js +2 -0
  18. package/dist/63842.68a1c5451a236b8ede97.bundle.js.map +1 -0
  19. package/dist/{64709.9f6594f730a4b54d6fc9.bundle.js → 64709.93e616541b4b18e88892.bundle.js} +2 -2
  20. package/dist/{64709.9f6594f730a4b54d6fc9.bundle.js.map → 64709.93e616541b4b18e88892.bundle.js.map} +1 -1
  21. package/dist/{65677.038185dcd07233e07f52.bundle.js → 65677.77bf484a0da0eec48f0b.bundle.js} +2 -2
  22. package/dist/{65677.038185dcd07233e07f52.bundle.js.map → 65677.77bf484a0da0eec48f0b.bundle.js.map} +1 -1
  23. package/dist/66574.cae68c94f87ba873b322.bundle.js +2 -0
  24. package/dist/66574.cae68c94f87ba873b322.bundle.js.map +1 -0
  25. package/dist/{80933.ef5e85af9b19067ee89b.bundle.js → 80933.ddbcb2688f7d93009c04.bundle.js} +2 -2
  26. package/dist/{80933.ef5e85af9b19067ee89b.bundle.js.map → 80933.ddbcb2688f7d93009c04.bundle.js.map} +1 -1
  27. package/dist/{82917.e537e5e649be4a5a0e20.bundle.js → 82917.e234e043395ff0b7d48f.bundle.js} +2 -2
  28. package/dist/82917.e234e043395ff0b7d48f.bundle.js.map +1 -0
  29. package/dist/{86099.acb890d2b6e1d841c4c3.bundle.js → 86099.0abe4f96d87490fe332e.bundle.js} +2 -2
  30. package/dist/{86099.acb890d2b6e1d841c4c3.bundle.js.map → 86099.0abe4f96d87490fe332e.bundle.js.map} +1 -1
  31. package/dist/{90418.0a737513ff59bfee423a.bundle.js → 90418.ee1af575862a64c12457.bundle.js} +2 -2
  32. package/dist/90418.ee1af575862a64c12457.bundle.js.map +1 -0
  33. package/dist/{96972.896f91c5874df70d14bb.bundle.js → 96972.fc25a13bb1bc69ad785c.bundle.js} +2 -2
  34. package/dist/96972.fc25a13bb1bc69ad785c.bundle.js.map +1 -0
  35. package/dist/9923.74654347e1812dd0f90a.bundle.js +3 -0
  36. package/dist/9923.74654347e1812dd0f90a.bundle.js.map +1 -0
  37. package/dist/api/models/application-settings/application-settings.d.ts +8 -1
  38. package/dist/api/models/application-settings/test/application-settings.spec.d.ts +1 -0
  39. package/dist/api/ontotext-workbench-api.js +1 -1
  40. package/dist/api/ontotext-workbench-api.js.map +1 -1
  41. package/dist/api/services/application-settings/application-settings-storage.service.d.ts +6 -0
  42. package/dist/api/services/runtime-configuration/runtime-configuration-context.service.d.ts +20 -0
  43. package/dist/api/services/theme/theme.service.d.ts +14 -3
  44. package/dist/css/explore.css +1 -1
  45. package/dist/css/lib/ontotext-yasgui-web-component.css +1 -1
  46. package/dist/css/user.css +1 -1
  47. package/dist/i18n/locale-en.json +4 -1
  48. package/dist/i18n/locale-fr.json +6 -3
  49. package/dist/index.html +9 -9
  50. package/dist/js/angular/clustermanagement/templates/cluster-nodes-configuration.html +1 -1
  51. package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +1 -1
  52. package/dist/js/angular/core/directives/dynamic-form/templates/dynamic-form.html +1 -1
  53. package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +1 -1
  54. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  55. package/dist/js/angular/core/directives/shuttle-multiselect/templates/shuttle-multiselect.html +1 -1
  56. package/dist/js/angular/core/directives/yasgui-component/templates/yasgui-component.html +2 -2
  57. package/dist/js/angular/core/templates/cookie-policy/cookie-consent.html +1 -1
  58. package/dist/js/angular/core/templates/cookie-policy/cookie-policy.html +1 -1
  59. package/dist/js/angular/core/templates/editable-content/editable-content.html +1 -1
  60. package/dist/js/angular/core/templates/markdown-content/markdown-content.html +1 -1
  61. package/dist/js/angular/core/templates/search-resource-input.html +1 -1
  62. package/dist/js/angular/graphql/templates/create-graphql-endpoint.html +2 -2
  63. package/dist/js/angular/graphql/templates/graphql-endpoint-management.html +1 -1
  64. package/dist/js/angular/graphql/templates/graphql-playground.html +2 -2
  65. package/dist/js/angular/graphql/templates/modal/endpoint-configuration-modal.html +1 -1
  66. package/dist/js/angular/graphql/templates/modal/endpoint-generation-failure-result-modal.html +1 -1
  67. package/dist/js/angular/graphql/templates/modal/import-endpoint-definition-modal.html +1 -1
  68. package/dist/js/angular/security/templates/user.html +13 -16
  69. package/dist/js/angular/ttyg/templates/agent-list.html +1 -1
  70. package/dist/js/angular/ttyg/templates/agent-select-menu.html +1 -1
  71. package/dist/js/angular/ttyg/templates/chat-item-detail.html +1 -1
  72. package/dist/js/angular/ttyg/templates/chat-list.html +1 -1
  73. package/dist/js/angular/ttyg/templates/chat-panel.html +1 -1
  74. package/dist/js/angular/ttyg/templates/modal/agent-instructions-explain-modal.html +1 -1
  75. package/dist/js/angular/ttyg/templates/modal/agent-settings-modal.html +3 -3
  76. package/dist/js/angular/ttyg/templates/modal/external-integration-configuration-modal.html +1 -1
  77. package/dist/js/angular/ttyg/templates/no-agents-view.html +1 -1
  78. package/dist/js/angular/ttyg/templates/ttyg.html +1 -1
  79. package/dist/{legacyWorkbench.77dd92ce99a75c4ee674.js → legacyWorkbench.cb08fa647eed6afe60e8.js} +3 -3
  80. package/dist/{legacyWorkbench.77dd92ce99a75c4ee674.js.map → legacyWorkbench.cb08fa647eed6afe60e8.js.map} +1 -1
  81. package/dist/{main.6db145d35852092cde59.js → main.1198f08d1cc597b94cbc.js} +3 -3
  82. package/dist/main.1198f08d1cc597b94cbc.js.map +1 -0
  83. package/dist/pages/aclmanagement.html +1 -1
  84. package/dist/pages/autocomplete.html +1 -1
  85. package/dist/pages/choose-repository-type.html +1 -1
  86. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  87. package/dist/pages/create-index.html +5 -3
  88. package/dist/pages/dependencies.html +3 -3
  89. package/dist/pages/domainRangeInfo.html +2 -2
  90. package/dist/pages/edit.html +1 -1
  91. package/dist/pages/explore.html +72 -75
  92. package/dist/pages/export.html +1 -1
  93. package/dist/pages/find.html +1 -1
  94. package/dist/pages/graph-config/saveGraphConfig.html +8 -8
  95. package/dist/pages/graphs-visualizations.html +7 -7
  96. package/dist/pages/guides.html +1 -1
  97. package/dist/pages/home.html +1 -1
  98. package/dist/pages/import.html +2 -2
  99. package/dist/pages/jdbc-create.html +1 -1
  100. package/dist/pages/jdbc.html +1 -1
  101. package/dist/pages/monitor/backup-and-restore.html +1 -1
  102. package/dist/pages/monitor/queries.html +1 -1
  103. package/dist/pages/monitor/resources.html +1 -1
  104. package/dist/pages/namespaces.html +2 -2
  105. package/dist/pages/plugins.html +1 -1
  106. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  107. package/dist/pages/rdfrank.html +2 -2
  108. package/dist/pages/repositories.html +1 -1
  109. package/dist/pages/repository.html +1 -1
  110. package/dist/pages/similarity-indexes.html +1 -1
  111. package/dist/pages/sparql-editor.html +1 -1
  112. package/dist/pages/sparql-template-create.html +1 -1
  113. package/dist/pages/sparql-templates.html +1 -1
  114. package/dist/pages/ux-test1.html +2 -2
  115. package/dist/pages/webapi.html +2 -2
  116. package/dist/res/swagger5/index.html +11 -11
  117. package/dist/shared-components/cjs/onto-graph-explore-split-button.cjs.entry.js +1 -1
  118. package/dist/shared-components/collection/components/onto-graph-explore-split-button/onto-graph-explore-split-button.js +1 -1
  119. package/dist/shared-components/esm/onto-graph-explore-split-button.entry.js +1 -1
  120. package/dist/shared-components/shared-components/p-cd5cc683.entry.js +1 -0
  121. package/dist/shared-components/shared-components/shared-components.esm.js +1 -1
  122. package/package.json +1 -1
  123. package/dist/19057.c644732712725c1a6d3d.bundle.js +0 -3
  124. package/dist/19057.c644732712725c1a6d3d.bundle.js.map +0 -1
  125. package/dist/23236.36dabf6a87d61107178d.bundle.js +0 -2
  126. package/dist/23236.36dabf6a87d61107178d.bundle.js.map +0 -1
  127. package/dist/24125.fc41760fdae44b0480c8.bundle.js +0 -2
  128. package/dist/24125.fc41760fdae44b0480c8.bundle.js.map +0 -1
  129. package/dist/24690.d4ed1c24eded4eb0da85.bundle.js +0 -2
  130. package/dist/24690.d4ed1c24eded4eb0da85.bundle.js.map +0 -1
  131. package/dist/3395.8452312923e6a77d2ffd.bundle.js.map +0 -1
  132. package/dist/34985.a6b52e4b364c7efd3046.bundle.js +0 -2
  133. package/dist/34985.a6b52e4b364c7efd3046.bundle.js.map +0 -1
  134. package/dist/50244.35b37c35412261341adb.bundle.js +0 -2
  135. package/dist/50244.35b37c35412261341adb.bundle.js.map +0 -1
  136. package/dist/60447.fd8b44d92859a3481ad7.bundle.js +0 -2
  137. package/dist/60447.fd8b44d92859a3481ad7.bundle.js.map +0 -1
  138. package/dist/63842.e62b43ae192a642531c6.bundle.js +0 -2
  139. package/dist/63842.e62b43ae192a642531c6.bundle.js.map +0 -1
  140. package/dist/66574.8591bdbb6983d8d07c04.bundle.js +0 -2
  141. package/dist/66574.8591bdbb6983d8d07c04.bundle.js.map +0 -1
  142. package/dist/82917.e537e5e649be4a5a0e20.bundle.js.map +0 -1
  143. package/dist/90418.0a737513ff59bfee423a.bundle.js.map +0 -1
  144. package/dist/96972.896f91c5874df70d14bb.bundle.js.map +0 -1
  145. package/dist/9923.6963c46c47330a6ba2d0.bundle.js +0 -3
  146. package/dist/9923.6963c46c47330a6ba2d0.bundle.js.map +0 -1
  147. package/dist/main.6db145d35852092cde59.js.map +0 -1
  148. package/dist/shared-components/shared-components/p-1b143527.entry.js +0 -1
  149. /package/dist/{19057.c644732712725c1a6d3d.bundle.js.LICENSE.txt → 19057.a52dd7b0e356e884a792.bundle.js.LICENSE.txt} +0 -0
  150. /package/dist/{9923.6963c46c47330a6ba2d0.bundle.js.LICENSE.txt → 9923.74654347e1812dd0f90a.bundle.js.LICENSE.txt} +0 -0
  151. /package/dist/{legacyWorkbench.77dd92ce99a75c4ee674.js.LICENSE.txt → legacyWorkbench.cb08fa647eed6afe60e8.js.LICENSE.txt} +0 -0
  152. /package/dist/{main.6db145d35852092cde59.js.LICENSE.txt → main.1198f08d1cc597b94cbc.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"9923.74654347e1812dd0f90a.bundle.js","mappings":"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","sources":["webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/app.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/controllers/dependencies-chord.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/controllers/domain-range-graph.controller.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/dependencies-chord.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/list-items-search-filter.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/rdfs-comment-label.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/search-icon-input.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/directives/system-repo-warning.directive.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/services/rdfs-label-comment.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/graphexplore/services/ui-scroll.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/graph-config.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/graph-data.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/angular/rest/saved-graphs.rest.service.js","webpack://root-config/./packages/legacy-workbench/src/js/lib/angucomplete-alt/angucomplete-alt.js"],"sourcesContent":["import 'angular/core/services';\nimport 'angular/core/controllers';\nimport 'angular/core/directives';\nimport 'angular/core/services/repositories.service';\nimport 'angular-ui-scroll/dist/ui-scroll.min';\nimport 'angular-ui-scroll/dist/ui-scroll-jqlite.min';\nimport 'lib/d3.patch.js';\nimport 'lib/d3-tip/d3-tip-patch';\nimport 'angular-pageslide-directive/dist/angular-pageslide-directive';\nimport 'angularjs-slider/dist/rzslider.min';\nimport 'lib/angucomplete-alt/angucomplete-alt';\nimport 'ng-tags-input/build/ng-tags-input.min';\nimport 'lib/common/d3-utils';\nimport 'lib/common/circle-packing';\nimport 'lib/common/svg-export';\nimport 'angular/rest/graph-data.rest.service';\nimport 'angular/graphexplore/services/ui-scroll.service';\nimport 'angular/graphexplore/services/rdfs-label-comment.service';\nimport 'angular/rest/saved-graphs.rest.service';\nimport 'angular/rest/graph-config.rest.service';\nimport 'angular/graphexplore/controllers/rdf-class-hierarchy.controller';\nimport 'angular/graphexplore/controllers/domain-range-graph.controller';\nimport 'angular/graphexplore/controllers/dependencies-chord.controller';\nimport 'angular/graphexplore/controllers/graphs-visualizations.controller';\nimport 'angular/graphexplore/controllers/graphs-config.controller';\nimport 'angular/graphexplore/directives/rdf-class-hierarchy.directive';\nimport 'angular/graphexplore/directives/domain-range-graph.directive';\nimport 'angular/graphexplore/directives/system-repo-warning.directive';\nimport 'angular/graphexplore/directives/rdfs-comment-label.directive';\nimport 'angular/graphexplore/directives/dependencies-chord.directive';\nimport 'angular/graphexplore/directives/list-items-search-filter.directive';\nimport 'angular/graphexplore/directives/search-icon-input.directive';\nimport 'angular/core/directives/yasgui-component/yasgui-component.directive';\n\nangular.module('graphdb.framework.graphexplore', [\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.rest.graphexplore.data.service',\n 'graphdb.framework.graphexplore.services.uiscroll',\n 'graphdb.framework.graphexplore.services.rdfsdetails',\n 'graphdb.framework.rest.graphexplore.savedgraphs.service',\n 'graphdb.framework.rest.graphconfig.service',\n 'graphdb.framework.graphexplore.controllers.class',\n 'graphdb.framework.graphexplore.controllers.domainrange',\n 'graphdb.framework.graphexplore.controllers.dependencies',\n 'graphdb.framework.graphexplore.controllers.graphviz',\n 'graphdb.framework.graphexplore.controllers.graphviz.config',\n 'graphdb.framework.graphexplore.directives.sysrepo',\n 'graphdb.framework.graphexplore.directives.rdfsdetails',\n 'graphdb.framework.graphexplore.directives.searchfilter',\n 'graphdb.framework.graphexplore.directives.class',\n 'graphdb.framework.graphexplore.directives.domainrange',\n 'graphdb.framework.graphexplore.directives.dependencies',\n 'graphdb.framework.graphexplore.directives.searchcontrols',\n 'graphdb.framework.core.directives.yasgui-component'\n]);\n","import {NumberUtils} from \"../../utils/number-utils\";\nimport {service, RepositoryContextService} from '@ontotext/workbench-api';\n\nimport {select} from 'd3';\n\nconst d3 = {\n select,\n};\n\nconst STATUS = {\n 'WAIT': 'WAIT',\n 'NO_REPO': 'NO_REPO',\n 'READY': 'READY',\n 'IN_PROGRESS': 'IN_PROGRESS',\n 'ERROR': 'ERROR',\n};\n\nconst modules = [\n 'ui.scroll.jqlite',\n 'ui.scroll',\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n];\nconst allGraphs = {\n contextID: {\n type: \"all\",\n value: \"all.graphs.label\",\n uri: \"\",\n },\n};\nObject.defineProperty(global, 'allGraphs', {\n get: () => {\n return allGraphs;\n },\n});\n\nangular\n .module('graphdb.framework.graphexplore.controllers.dependencies', modules)\n .controller('DependenciesChordCtrl', DependenciesChordCtrl)\n .config(['$uibTooltipProvider', function($uibTooltipProvider) {\n $uibTooltipProvider.options({appendToBody: true});\n }])\n .filter('humanize', function() {\n return humanize;\n });\n\nfunction humanize(number) {\n if (number < 1000) {\n return number;\n }\n const si = ['K', 'M', 'G', 'T', 'P', 'H'];\n const exp = Math.floor(Math.log(number) / Math.log(1000));\n let result = number / Math.pow(1000, exp);\n result = (result % 1 > (1 / Math.pow(1000, exp - 1))) ? result.toFixed(2) : result.toFixed(0);\n return result + si[exp - 1];\n}\n\nDependenciesChordCtrl.$inject = ['$scope', '$rootScope', '$repositories', 'toastr', '$timeout', '$interval', 'GraphDataRestService', 'UiScrollService', 'ModalService', 'LocalStorageAdapter', 'RDF4JRepositoriesRestService', '$translate'];\n\nfunction DependenciesChordCtrl($scope, $rootScope, $repositories, toastr, $timeout, $interval, GraphDataRestService, UiScrollService, ModalService, LocalStorageAdapter, RDF4JRepositoriesRestService, $translate) {\n const repositoryContextService = service(RepositoryContextService);\n\n let timer = null;\n\n /**\n * Defines the maximum number of graphs to be loaded in the view.\n *\n * The view becomes too heavy when displaying all graphs, which can impact performance.\n * This constant limits the number of graphs that will be loaded to ensure smooth rendering.\n */\n const MAX_LOADED_GRAPHS = 1000;\n $scope.hasMoreGraphs = false;\n\n $scope.status = repositoryContextService.getSelectedRepository()?.id ? STATUS.WAIT : STATUS.NO_REPO;\n\n $scope.graphsDropdownToggled = (isOpen) => {\n if ($scope.hasMoreGraphs && isOpen) {\n toastr.warning($translate.instant('dependencies.graphs.too.many.warning', {graphsLimit: NumberUtils.formatNumberToLocaleString(MAX_LOADED_GRAPHS, $translate.use())}));\n }\n };\n\n //allGraphs is used to include all graphs in the chosen repository and represent the Class Relationships diagram and table,\n // while graphsInRepo is sliced to 1000 if there are more than 1000 graphs in the repository, and they are present\n // in the drop-down menu otherwise browsers crash.\n let selectedGraph = allGraphs;\n\n const initView = function() {\n // Try to load one more file than the maximum limit.\n // This allows us to check if there is at least one additional file beyond the set max limit.\n RDF4JRepositoriesRestService.resolveGraphs(repositoryContextService.getSelectedRepository()?.id, MAX_LOADED_GRAPHS + 1)\n .success(function(graphsInRepo) {\n $scope.graphsInRepo = graphsInRepo.results.bindings;\n // Determines if there are more files than the specified limit.\n // We increase the limit in the check because:\n // - One extra file is added before the request is sent.\n // - Another file (the default graph) is added by the service when the response is received.\n $scope.hasMoreGraphs = $scope.graphsInRepo.length > MAX_LOADED_GRAPHS + 2;\n setSelectedGraphFromCache();\n if (!$scope.isSystemRepository()) {\n $scope.status = 'WAIT';\n getRelationshipsStatus(true);\n } else if ($scope.status !== \"READY\") {\n getRelationshipsStatus();\n }\n }).error(function(data) {\n $scope.repositoryError = getError(data);\n toastr.error(getError(data), $translate.instant('graphexplore.error.getting.graph'));\n });\n };\n\n const setSelectedGraphFromCache = function() {\n const selGraphFromCache = LocalStorageAdapter.get(`dependencies-selectedGraph-${repositoryContextService.getSelectedRepository()?.id}`);\n if (selGraphFromCache !== null && $scope.graphsInRepo.some((graph) => graph.contextID.uri === selGraphFromCache.contextID.uri)) {\n selectedGraph = selGraphFromCache;\n } else {\n LocalStorageAdapter.set(`dependencies-selectedGraph-${repositoryContextService.getSelectedRepository()?.id}`, selectedGraph);\n }\n };\n\n const getRelationshipsData = function(selectedClasses) {\n d3.select('#dependencies-chord').html('');\n\n $scope.status = STATUS.WAIT;\n\n GraphDataRestService.getRelationshipsData(selectedClasses, $scope.direction, selectedGraph.contextID.uri)\n .success(function(matrixData) {\n // Check classes empty\n $scope.dependenciesData = {\n matrix: matrixData.right,\n nodes: matrixData.left,\n hasLinks: _.sum(_.map(matrixData.right, function(arr) {\n return _.sum(arr);\n })) > 0,\n direction: $scope.direction,\n };\n $scope.status = STATUS.READY;\n }).error(function(data) {\n $scope.status = STATUS.READY;\n toastr.error(getError(data), $translate.instant('graphexplore.error.dependencies.count'));\n });\n };\n\n const getRelationshipsClasses = function() {\n GraphDataRestService.getRelationshipsClasses($scope.direction, selectedGraph.contextID.uri)\n .success(function(classesData, status) {\n $scope.allClasses.items = _.filter(classesData, classFilterFunc);\n $scope.allNotFilteredClasses = classesData;\n $scope.selectedClasses = undefined;\n if (angular.isUndefined($scope.selectedClasses)) {\n $scope.selectedClasses = classesData.slice(0, 10);\n }\n getRelationshipsData($scope.selectedClasses);\n if (status === 207) {\n toastr.warning($translate.instant('graphexplore.update.diagram'), $translate.instant('graphexplore.repository.data.changed'));\n }\n });\n };\n\n const getRelationshipsStatus = function(force) {\n if ($scope.status === STATUS.READY && !force) {\n return;\n }\n $scope.status = STATUS.WAIT;\n GraphDataRestService.getRelationshipsStatus(selectedGraph.contextID.uri)\n .success(function(data) {\n $scope.status = data;\n if ($scope.status === STATUS.IN_PROGRESS) {\n if (timer !== null) {\n return;\n } else {\n timer = $interval(() => getRelationshipsStatus(), 2000);\n }\n }\n if ($scope.status === STATUS.READY) {\n if (timer !== null) {\n $interval.cancel(timer);\n timer = null;\n }\n getRelationshipsClasses();\n }\n if ($scope.status.indexOf('ERROR;') === 0) {\n $scope.status = STATUS.ERROR;\n if (timer !== null) {\n $interval.cancel(timer);\n timer = null;\n }\n toastr.error($translate.instant('graphexplore.error.dependencies.calc', {error:$scope.status.substring('ERROR;'.length)}));\n }\n })\n .error(function(data) {\n $scope.status = STATUS.ERROR;\n toastr.error(getError(data), $translate.instant('graphexplore.error.dependencies.count.status'));\n });\n };\n\n $scope.allClasses = {};\n $scope.allClasses.items = [];\n $scope.allNotFilteredClasses = [];\n $scope.direction = 'all';\n\n const datasource = {};\n let position = 0;\n let current = 0;\n $rootScope.key = '';\n\n datasource.get = function(index, count, success) {\n UiScrollService.initLazyList(index, count, success, position, $scope.allClasses.items);\n };\n\n $rootScope.$watch(function() {\n return $rootScope.key;\n }, function() {\n position = 0;\n _.each($scope.allClasses.items, function(item) {\n if ($rootScope.key > item) position++;\n });\n current++;\n });\n\n datasource.revision = function() {\n return current;\n };\n\n $scope.datasource = datasource;\n\n // adapter implementation for ui-scroll directive\n // reload\n $scope.adapterContainer = {adapter: {remain: true}};\n\n $scope.classQuery = {};\n $scope.classQuery.query = '';\n $scope.classFilterFunc = classFilterFunc;\n\n function classFilterFunc(c) {\n return c.name\n .toLowerCase()\n .indexOf($scope.classQuery.query.toLowerCase()) !== -1;\n }\n\n $scope.$watch('allClasses.items', function() {\n if ($scope.allClasses.items.length > 0) {\n $timeout(function() {\n $scope.adapterContainer.adapter.reload();\n }, 30);\n }\n });\n\n $scope.$watch('direction', function() {\n const activeRepository = repositoryContextService.getSelectedRepository();\n if (!activeRepository || $scope.isSystemRepository() || activeRepository.isFedx()) {\n return;\n }\n initView();\n });\n\n $scope.$on('$destroy', function() {\n $interval.cancel(timer);\n repositoryChangedSubscription();\n });\n\n $scope.isLoading = function() {\n return $scope.status === STATUS.IN_PROGRESS || $scope.status === STATUS.WAIT;\n };\n\n $scope.confirmCalculateDependencies = function() {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.operation'),\n message: $translate.instant('graphexplore.calculating.relationships'),\n warning: true,\n }).result\n .then(function() {\n $scope.calculateDependencies();\n });\n };\n\n $scope.calculateDependencies = function() {\n $scope.status = STATUS.WAIT;\n $scope.selectedClasses = undefined;\n GraphDataRestService.calculateRelationships(selectedGraph.contextID.uri)\n .success(function(data) {\n if (data.indexOf('ERROR;') === 0) {\n toastr.error($translate.instant('graphexplore.error.dependencies.calc', {error:$scope.status.substring('ERROR;'.length)}));\n } else {\n getRelationshipsStatus();\n }\n })\n .error(function(data) {\n toastr.error($translate.instant('graphexplore.error.could.not.force.count', {error: getError(data)}));\n });\n };\n\n $scope.addClass = function(clazz) {\n $scope.selectedClasses.push(clazz);\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.removeClass = function(clazz) {\n _.remove($scope.selectedClasses, function(c) {\n return c.name === clazz.name;\n });\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.showClass = function(clazz) {\n $scope.classToShow = clazz;\n };\n\n $scope.isClassByNameShown = function(name) {\n return _.find($scope.selectedClasses, {name: name}) !== undefined;\n };\n\n $scope.addClassByName = function(name) {\n $scope.selectedClasses.push(_.find($scope.allClasses.items, {name: name}));\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.removeClassByName = function(name) {\n _.remove($scope.selectedClasses, function(c) {\n return c.name === name;\n });\n getRelationshipsData($scope.selectedClasses);\n };\n\n\n $scope.removeAllClasses = function() {\n $scope.selectedClasses = [];\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.isSystemRepository = function() {\n return repositoryContextService.getSelectedRepository()?.id === 'SYSTEM';\n };\n\n function onRepositoryIsSet() {\n // clear class search on changing the repository\n $scope.classQuery = {};\n $scope.classQuery.query = '';\n $scope.repositoryError = null;\n selectedGraph = allGraphs;\n const activeRepository = repositoryContextService.getSelectedRepository();\n if (!activeRepository || activeRepository.isFedx()) {\n $scope.status = STATUS.NO_REPO;\n return;\n }\n initView();\n }\n\n\n const repositoryChangedSubscription = repositoryContextService.onSelectedRepositoryChanged(() => onRepositoryIsSet());\n\n $scope.selectGraph = function(graph) {\n selectedGraph = graph;\n getRelationshipsStatus(true);\n LocalStorageAdapter.set(`dependencies-selectedGraph-${repositoryContextService.getSelectedRepository()?.id}`, selectedGraph);\n };\n\n $scope.getSelectedGraphValue = function() {\n return selectedGraph.contextID.value;\n };\n\n $scope.isAllGraphsSelected = function() {\n return $scope.getSelectedGraphValue() === 'all.graphs.label';\n };\n}\n","import 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.graphexplore.controllers.domainrange', [\n 'ui.scroll.jqlite',\n 'ui.scroll',\n 'ngSanitize',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .controller('DomainRangeGraphCtlr', DomainRangeGraphCtlr);\n\nDomainRangeGraphCtlr.$inject = ['$scope', '$location', '$rootScope', '$timeout', '$repositories', '$window', 'LocalStorageAdapter', 'LSKeys', 'GraphDataRestService', 'UiScrollService', 'ModalService', 'toastr', '$translate'];\n\nfunction DomainRangeGraphCtlr($scope, $location, $rootScope, $timeout, $repositories, $window, LocalStorageAdapter, LSKeys, GraphDataRestService, UiScrollService, ModalService, toastr, $translate) {\n $scope.predicatesObj = {};\n $scope.predicatesQueryObj = {};\n $scope.predicatesObj.items = [];\n $scope.predicatesQueryObj.query = '';\n $scope.predicatesListNotFiltered = [];\n $scope.predicatesSearchPlaceholder = 'Search predicates';\n\n // Handle pageslide directive callbacks which incidentally appeared to be present in the angular's\n // scope, so we need to define our's and pass them to pageslide, otherwise it throws an error.\n $scope.onopen = $scope.onclose = () => angular.noop();\n\n // creating datasource for predicates data\n const datasource = {};\n let position = 0;\n let current = 0;\n $rootScope.key = '';\n datasource.get = function (index, count, success) {\n return UiScrollService.initLazyList(index, count, success, position, $scope.predicatesObj.items);\n };\n $rootScope.$watch(function () {\n return $rootScope.key;\n }, function () {\n position = 0;\n _.each($scope.predicatesObj.items, function (item) {\n if ($rootScope.key > item) position++;\n });\n current++;\n });\n\n datasource.revision = function () {\n return current;\n };\n\n // adapter implementation for ui-scroll directive\n $scope.adapterContainer = {adapter: {remain: true}};\n\n\n const doCollapseEdges = LocalStorageAdapter.get(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES);\n if (doCollapseEdges === null) {\n $scope.collapseEdges = true;\n } else {\n $scope.collapseEdges = doCollapseEdges === 'true';\n }\n\n $scope.datasource = datasource;\n\n $scope.$on('reloadDomainRangeGraphView', reloadDomainRangeGraphView);\n $scope.$on('switchEdgeMode', switchEdgeMode);\n $scope.$on('repositoryIsSet', onRepositoryIsSet);\n $scope.$on('changeCollapsedEdgesState', function (event, collapsed) {\n $scope.collapseEdges = !collapsed;\n LocalStorageAdapter.set(LSKeys.DOMAIN_RANGE_COLLAPSE_EDGES, $scope.collapseEdges);\n });\n\n $scope.goToClassHierarchyView = goToClassHierarchyView;\n $scope.copyToClipboard = copyToClipboard;\n $scope.toggleCollapseEdgesState = toggleCollapseEdgesState;\n $scope.predicatesListFilterFunc = predicatesListFilterFunc;\n\n $scope.$watch('predicatesObj.items', function () {\n if ($scope.predicatesObj.items > 0) {\n $timeout(function () {\n $scope.adapterContainer.adapter.reload();\n }, 30);\n }\n });\n\n $scope.$watch('selectedPredicate', function () {\n if ($scope.showPredicatesInfoPanel) {\n prepareDataForPredicatesInfoSidePanel($scope.selectedPredicate);\n }\n });\n\n function predicatesListFilterFunc(pred) {\n return pred.resolvedUri\n .toLowerCase()\n .indexOf($scope.predicatesQueryObj.query.toLowerCase()) >= 0;\n }\n\n function prepareDataForPredicatesInfoSidePanel(selectedPredicate) {\n const targetNode = selectedPredicate.target;\n const sourceNode = selectedPredicate.source;\n\n $scope.encodedUri = encodeURIComponent(selectedPredicate.uri);\n\n $scope.sourceTargetObjectNodeUri = targetNode.objectPropClassUri\n ? targetNode.objectPropClassUri\n : sourceNode.objectPropClassUri;\n\n $scope.encodedSourceTargetObjectNodeUri = encodeURIComponent($scope.sourceTargetObjectNodeUri);\n\n $scope.sourceTargetObjectNodeName = targetNode.objectPropClassName\n ? targetNode.objectPropClassName\n : sourceNode.objectPropClassName\n ? sourceNode.objectPropClassName\n : '<i>Literal</i>';\n\n if ($scope.sourceTargetObjectNodeName.indexOf('Literal') === -1) {\n GraphDataRestService.getRdfsLabelAndComment($scope.sourceTargetObjectNodeUri)\n .success(function (response) {\n $scope.rdfsLabel = response.label;\n $scope.rdfsComment = response.comment;\n })\n .error(function () {\n toastr.error($translate.instant('domain.range.error.get.label.comment'));\n });\n } else {\n $scope.rdfsComment = undefined;\n $scope.rdfsLabel = undefined;\n }\n\n $scope.predicatesObj.items = [];\n\n // clear predicates search input field when changing edges\n $scope.predicatesQueryObj.query = '';\n\n // if target node of selected predicate has no edges then it is a left edge and edges should\n // come from the source node\n const allEdges = targetNode.allEdges\n ? targetNode.allEdges\n : sourceNode.allEdges;\n\n _.each(allEdges, function (pred) {\n const obj = {};\n obj.absUri = encodeURIComponent(pred.uri);\n obj.absUriNonEncoded = pred.uri;\n obj.resolvedUri = pred.name;\n obj.isImplicit = pred.implicit;\n $scope.predicatesObj.items.push(obj);\n });\n $scope.predicatesListNotFiltered = $scope.predicatesObj.items;\n }\n\n\n // Hack needed to force hide collapsed-mode toggle tooltip in order not be\n // visible after icon is switched\n $(document).ready(function () {\n $('.compact-mode-toggle').click(function () {\n $('.tooltip').hide();\n });\n });\n\n function reloadDomainRangeGraphView(event, selectedClass) {\n const uri = selectedClass.objectPropClassUri;\n const name = selectedClass.objectPropClassName;\n\n $location\n .path('domain-range-graph')\n .search('uri', uri)\n .search('name', name);\n }\n\n function switchEdgeMode(event, selectedClass) {\n $location\n .path('domain-range-graph')\n .search('uri', selectedClass.uri)\n .search('name', selectedClass.name)\n .search('collapsed', selectedClass.collapsed);\n }\n\n function goToClassHierarchyView() {\n const lastSelectedClass = LocalStorageAdapter.get(LSKeys.CLASS_HIERARCHY_LAST_SELECTED_CLASS);\n\n $location\n .search('')\n .hash(lastSelectedClass)\n .path('hierarchy');\n }\n\n function toggleCollapseEdgesState() {\n $scope.collapseEdges = !$scope.collapseEdges;\n $window.history.pushState({collapsed: $scope.collapseEdges}, 'domainRangePage', null);\n }\n\n function copyToClipboard(uri) {\n ModalService.openCopyToClipboardModal(uri);\n }\n\n\n let currentActiveRepository = $repositories.getActiveRepository();\n\n function onRepositoryIsSet() {\n if (currentActiveRepository === $repositories.getActiveRepository()) {\n return;\n } else {\n currentActiveRepository = $repositories.getActiveRepository();\n }\n goToClassHierarchyView();\n }\n}\n","import SVG from 'lib/common/svg-export';\nimport 'angular/rest/graph-data.rest.service';\nimport * as d3 from 'd3';\n\nangular\n .module('graphdb.framework.graphexplore.directives.dependencies', [\n 'graphdb.framework.graphexplore.controllers.dependencies',\n 'graphdb.framework.rest.graphexplore.data.service',\n ])\n .directive('dependenciesChord', dependenciesChordDirective);\n\ndependenciesChordDirective.$inject = ['$repositories', 'GraphDataRestService'];\n\n/**\n * Checks if all values of the returned matrix are zero\n * @returns false if non zero value is found, true otherwise\n */\nfunction isZeroMatrix(matrix) {\n for (const arr of matrix) {\n if (arr.some((item) => item !== 0)) {\n return false;\n }\n }\n return true;\n}\nfunction dependenciesChordDirective($repositories, GraphDataRestService) {\n return {\n restrict: 'A',\n template: '<div id=\"dependencies-chord\"></div>',\n scope: {\n dependenciesData: '=',\n },\n link: linkFunc,\n };\n function linkFunc(scope) {\n // Used http://bost.ocks.org/mike/uberdata/\n\n const drawChord = function(matrix, nodes) {\n // Don't try to draw chord for zero matrix\n if (isZeroMatrix(matrix)) {\n return;\n }\n\n const fill = d3.scaleOrdinal(d3.schemeCategory10);\n\n const tooltip = d3.select(\"body\").append(\"div\")\n .attr(\"class\", \"tooltip\")\n .style(\"opacity\", 0);\n d3.select(\"body\").on(\"click\", function() {\n tooltip.style(\"opacity\", 0);\n });\n\n const width = 800;\n const height = 800;\n const outerRadius = Math.min(width, height) / 2.8;\n const innerRadius = outerRadius - 24;\n\n const arc = d3.arc()\n .innerRadius(innerRadius)\n .outerRadius(outerRadius);\n\n const chordGraph = d3.chord()\n .padAngle(.04)\n .sortSubgroups(d3.descending)\n .sortChords(d3.ascending);\n\n const path = d3.ribbon()\n .radius(innerRadius);\n const container = d3.select('#dependencies-chord');\n container.select('svg').remove();\n\n const svg = d3.select(\"#dependencies-chord\").append(\"svg\")\n .attr(\"viewBox\", \"0 0 \" + width + \" \" + height)\n .attr(\"preserveAspectRatio\", \"xMidYMid meet\")\n .style(\"font\", \"10px sans-serif\")\n .append(\"g\")\n .attr(\"id\", \"circle\")\n .attr(\"transform\", \"translate(\" + width / 2 + \",\" + height / 2 + \")\");\n\n svg.append(\"circle\")\n .attr(\"r\", outerRadius)\n .style(\"fill\", \"none\");\n\n // Compute the chord layout.\n const layout = chordGraph(matrix);\n\n // Add a group per neighborhood.\n const group = svg.selectAll(\".group\")\n .data(layout.groups)\n .enter().append(\"g\")\n .attr(\"class\", \"group\")\n .on(\"mouseover\", mouseover);\n\n // Add a mouseover title.\n group.append(\"title\").text(function(d, i) {\n return nodes[i];\n });\n\n // Add the group arc.\n group.append(\"path\")\n .attr(\"id\", function(d, i) {\n return \"group\" + i;\n })\n .attr(\"d\", arc)\n .style(\"fill\", function(d, i) {\n return fill(i);\n });\n\n group.append(\"text\")\n .each(function(d) {\n d.angle = (d.startAngle + d.endAngle) / 2;\n })\n .attr(\"class\", \"dependencies-chord-label\")\n .attr(\"dy\", \".35em\")\n .attr(\"transform\", function(d) {\n return \"rotate(\" + (d.angle * 180 / Math.PI - 90) + \")\"\n + \"translate(\" + (innerRadius + 26) + \")\"\n + (d.angle > Math.PI ? \"rotate(180)\" : \"\");\n })\n .style(\"text-anchor\", function(d) {\n return d.angle > Math.PI ? \"end\" : null;\n })\n .text(function(d) {\n return nodes[d.index];\n });\n\n // Add the chords.\n const chord = svg.selectAll(\".chord\")\n .data(layout)\n .enter().append(\"path\")\n .attr(\"class\", \"chord\")\n .style(\"fill\", function(d) {\n return fill(d.target.index);\n })\n .style(\"fill-opacity\", \".67\")\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", \".25px\")\n .style(\"cursor\", \"pointer\")\n .attr(\"d\", path);\n\n chord.on(\"mouseover\", function() {\n // eslint-disable-next-line no-invalid-this\n d3.select(this).style(\"fill-opacity\", \"1\");\n });\n\n chord.on(\"mouseout\", function() {\n // eslint-disable-next-line no-invalid-this\n d3.select(this).style(\"fill-opacity\", \".67\");\n });\n\n chord.on(\"click\", function(event, d) {\n const sourceClass = nodes[d.source.index];\n const destinationClass = nodes[d.target.index];\n const px = event.pageX;\n const py = event.pageY;\n\n GraphDataRestService.getPredicates(sourceClass, destinationClass, scope.selectedGraph && scope.selectedGraph.contextID.uri)\n .success(function(predicatesData) {\n const directionIcon = \" <i class='ri-arrow-left-right-line'></i> \";\n const header = \"<div class='row'>\" + sourceClass + directionIcon + destinationClass + \"</div>\";\n const predicatesList = _.map(predicatesData.slice(0, 10), function(p) {\n const icon = \" <i class='ri-arrow-\" + (p.direction === \"out\" ? \"right\" : \"left\") + \"-long-line'></i>\";\n return \"<div class='row'>\" + p.predicate + \" : \" + p.weight + icon + \" </div>\";\n }).join(\"\");\n\n let tooltipContent = \"<div class='dependencies-tooltip'>\" + header + predicatesList;\n if (predicatesData.length > 10) {\n tooltipContent = tooltipContent + \"<div class='pull-right'>And \" + (predicatesData.length - 10).toString() + \" more...</div></div>\";\n } else {\n tooltipContent = tooltipContent + \"</div>\";\n }\n tooltip.html(tooltipContent)\n .style(\"left\", (px) + \"px\").style(\"top\", (py) + \"px\");\n });\n\n tooltip.transition()\n .duration(200)\n .style(\"opacity\", 1);\n });\n\n function mouseover() {\n const nodes = group.nodes();\n // eslint-disable-next-line no-invalid-this\n const i = nodes.indexOf(this);\n chord.classed(\"fade\", function(p) {\n return p.source.index !== i\n && p.target.index !== i;\n });\n }\n\n d3.select(\"#circle\").on(\"mouseleave\", function() {\n svg.selectAll(\".chord\").classed(\"fade\", false);\n });\n\n /*\n * Prepares SVG document image export by adding xml namespaces and\n * additional style information\n */\n function prepareForSVGImageExport() {\n // convert selected html to base64\n const imgSrc = SVG.Export.generateBase64ImageSource('.dependencies-chord svg');\n // set the binary image and a name for the downloadable file on the export button\n // eslint-disable-next-line no-invalid-this\n d3.select(this).attrs({\n href: imgSrc,\n download: \"dependencies-\" + $repositories.getActiveRepository() + \".svg\",\n });\n }\n\n d3.select(\"#download-svg\")\n .on(\"mouseover\", prepareForSVGImageExport);\n };\n\n scope.$watch('dependenciesData', function() {\n if (scope.dependenciesData) {\n const data = scope.dependenciesData;\n drawChord(data.matrix, data.nodes, data.direction);\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.graphexplore.directives.searchfilter', [])\n .directive('listItemsSearchFilter', listItemsSearchFilterDirective);\n\nlistItemsSearchFilterDirective.$inject = [];\n\nfunction listItemsSearchFilterDirective() {\n return {\n restrict: 'AE',\n scope: {\n filterQueryObj: '=',\n filterFunction: '&',\n listItemsObj: '=',\n listItemsNotFiltered: '=',\n searchPlaceholder: '@'\n },\n templateUrl: 'js/angular/graphexplore/templates/listItemsSearchFilterTemplate.html',\n link: function (scope) {\n\n function filter(searchQuery, data, nonFilteredData, customFilter) {\n if (searchQuery.length > 0) {\n return _.filter(nonFilteredData, customFilter);\n } else if (data.length !== nonFilteredData.length) {\n return nonFilteredData;\n }\n return data;\n }\n\n // unwrap callback filter function\n scope.filterFunction = scope.filterFunction();\n\n scope.$watch('filterQueryObj.query', function () {\n scope.listItemsObj.items = filter(\n scope.filterQueryObj.query,\n scope.listItemsObj.items,\n scope.listItemsNotFiltered,\n scope.filterFunction);\n });\n }\n };\n}\n","angular\n .module('graphdb.framework.graphexplore.directives.rdfsdetails', [])\n .directive('rdfsCommentLabel', rdfsCommentLabelDirective)\n .constant('SHORT_COMMENT_LENGTH', 100);\n\nrdfsCommentLabelDirective.$inject = ['SHORT_COMMENT_LENGTH'];\n\nfunction rdfsCommentLabelDirective(SHORT_COMMENT_LENGTH) {\n return {\n restrict: 'AE',\n scope: {\n rdfsLabel: '=',\n rdfsComment: '=',\n expanded: '=',\n alwaysExpanded: '='\n },\n templateUrl: 'js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html',\n link: function (scope, element) {\n scope.stringLimit = SHORT_COMMENT_LENGTH;\n scope.scrollToTop = function () {\n element[0].getElementsByClassName('rdfs-comment')[0].scrollTop = 0;\n };\n\n scope.checkCommentLength = function () {\n const commentLength = element[0].getElementsByClassName('rdfs-comment-text')[0].innerText.length;\n return commentLength < SHORT_COMMENT_LENGTH;\n };\n\n scope.equalHeights = function () {\n const commentHeight = element[0].getElementsByClassName('rdfs-comment-text')[0].innerHeight;\n if (commentHeight < 250 && scope.expanded) {\n element[0].getElementsByClassName('rdfs-comment')[0].innerHeight = commentHeight;\n }\n };\n\n scope.toggleFullComment = function () {\n scope.expanded = !scope.expanded;\n };\n\n scope.$watch('expanded || alwaysExpanded', function (value) {\n if (value) {\n scope.stringLimit = scope.rdfsComment.length;\n } else {\n scope.stringLimit = SHORT_COMMENT_LENGTH;\n }\n });\n }\n };\n}\n","angular\n .module('graphdb.framework.graphexplore.directives.searchcontrols', [])\n .directive('searchIconInput', searchIconInputDirective);\n\nsearchIconInputDirective.$inject = ['$rootScope', '$timeout'];\n\nfunction searchIconInputDirective($rootScope, $timeout) {\n return {\n restrict: 'AE',\n scope: {\n searchData: '=',\n searchFields: '@',\n titleField: '@',\n searchPlaceholder: '@',\n initialValue: '=',\n searchedObjCallback: '&'\n },\n templateUrl: 'js/angular/graphexplore/templates/searchIconInputTemplate.html',\n link: function (scope, element) {\n scope.searchedObjCallback = scope.searchedObjCallback();\n\n scope.performSearchActionOnEnter = function () {\n $rootScope.$broadcast('onEnterKeypressSearchAction');\n };\n\n scope.showInput = function () {\n $('#selectGraphDropdown').hide();\n element.find('#search_input #search_input_value')[0].value = '';\n element.find('.search-icon')\n .addClass('animated bounceOut')\n .css('z-index', '-1');\n element.find('#search_input .angucomplete-holder')\n .css('display', 'block');\n $timeout(function () {\n element.find('#search_input .angucomplete-holder')\n .css('width', '250px')\n .css('left', '-215px');\n $timeout(function () {\n element.find('.close-icon')\n .css('display', 'block')\n .addClass('animated bounceIn')\n .css('z-index', '3');\n element.find('#search_input #search_input_value')\n .focus();\n }, 200);\n }, 1);\n };\n\n scope.hideInput = function () {\n element.find('#search_input #search_input_value')[0].value = '';\n element.find('#search_input .angucomplete-holder')\n .css('width', '0px')\n .css('left', '35px');\n $timeout(function () {\n element.find('#search_input .angucomplete-holder')\n .css('display', 'none');\n $('#selectGraphDropdown').show();\n }, 250);\n element.find('.close-icon')\n .addClass('animated bounceOut')\n .removeClass('bounceOut')\n .css('z-index', '-1')\n .css('display', 'none')\n // Hack needed to force close close-button tooltip in order not be\n // visible after icon is switched\n .click(function () {\n $('.tooltip').hide();\n });\n $timeout(function () {\n element.find('.search-icon')\n .css('display', 'inline-block')\n .removeClass('bounceOut')\n .addClass('bounceIn')\n .css('z-index', '3');\n }, 200);\n };\n }\n };\n}\n","angular\n .module('graphdb.framework.graphexplore.directives.sysrepo', ['graphdb.framework.graphexplore.controllers.class'])\n .directive('systemRepoWarning', systemRepoWarningDirective);\n\nsystemRepoWarningDirective.$inject = ['$repositories', '$rootScope'];\n\nfunction systemRepoWarningDirective($repositories, $rootScope) {\n return {\n restrict: 'A',\n scope: {},\n templateUrl: 'js/angular/graphexplore/templates/systemRepoWarningTemplate.html',\n link: function (scope) {\n scope.isSystemRepository = function () {\n return $repositories.getActiveRepository() === 'SYSTEM';\n };\n\n scope.hasPermission = function () {\n return $rootScope.hasPermission();\n };\n }\n };\n}\n","angular\n .module('graphdb.framework.graphexplore.services.rdfsdetails', [])\n .factory('RdfsLabelCommentService', RdfsLabelCommentService);\n\nfunction RdfsLabelCommentService() {\n return {\n processAndFilterLabelAndComment: processAndFilterLabelAndComment\n };\n\n function processAndFilterLabelAndComment(response) {\n function processKeysWithColon(obj) {\n const newObj = {};\n for (let k in obj) {\n if (obj.hasOwnProperty(k)) {\n let origKey = k;\n if (k.indexOf(':') > -1) {\n origKey = k;\n k = k.split(':')[1].toLowerCase();\n }\n newObj[k] = obj[origKey];\n }\n }\n return newObj;\n }\n\n const results = response.results.bindings;\n const labels = [];\n const comments = [];\n _.each(results, function (value) {\n let processedObj;\n if (!angular.isUndefined(value.label)) {\n processedObj = processKeysWithColon(value.label);\n labels.push(processedObj);\n }\n\n if (!angular.isUndefined(value.comment)) {\n processedObj = processKeysWithColon(value.comment);\n comments.push(processedObj);\n }\n });\n\n const langFilter = function (item) {\n return item.lang === 'en' || item.lang === 'de';\n };\n\n const filteredRdfsLabel = $.grep(labels, langFilter)[0];\n const filteredRdfsComment = $.grep(comments, langFilter)[0];\n\n const rdfsLabel = !angular.isUndefined(filteredRdfsLabel)\n ? filteredRdfsLabel.value\n : labels.length > 0\n ? labels[0].value\n : undefined;\n\n const rdfsComment = !angular.isUndefined(filteredRdfsComment)\n ? filteredRdfsComment.value\n : comments.length > 0\n ? comments[0].value\n : undefined;\n\n return {\n rdfsLabel: rdfsLabel,\n rdfsComment: rdfsComment\n };\n }\n}\n","angular\n .module('graphdb.framework.graphexplore.services.uiscroll', [])\n .factory('UiScrollService', UiScrollService);\n\nUiScrollService.$inject = ['$timeout'];\n\nfunction UiScrollService($timeout) {\n return {\n initLazyList: initLazyList\n };\n\n function initLazyList(index, count, success, position, data) {\n return $timeout(function () {\n const actualIndex = index + position - 1;\n const start = Math.max(0 - position, actualIndex);\n const end = Math.min(actualIndex + count - 1, data.length);\n if (start > end) {\n success([]);\n } else if ($.isArray(data)) {\n success(data.slice(start, end + 1));\n }\n }, 100, true);\n }\n}\n","import {mapGraphsConfigResponseToModel} from \"./mappers/graphs-config-mapper\";\n\nangular\n .module('graphdb.framework.rest.graphconfig.service', [])\n .factory('GraphConfigRestService', GraphConfigRestService);\n\nconst EXPLORE_GRAPH_ENDPOINT = 'rest/explore-graph';\nconst EXPLORE_GRAPH_CONFIG_ENDPOINT = `${EXPLORE_GRAPH_ENDPOINT}/config`;\n\nGraphConfigRestService.$inject = ['$http'];\n\nfunction GraphConfigRestService($http) {\n return {\n getGraphConfigs,\n getGraphConfigSamples,\n loadGraphForConfig,\n getConfig,\n createGraphConfig,\n updateGraphConfig,\n deleteGraphConfig,\n validateQuery\n };\n\n function getGraphConfigs() {\n return $http.get(EXPLORE_GRAPH_CONFIG_ENDPOINT);\n }\n\n function getGraphConfigSamples() {\n return $http.get(`${EXPLORE_GRAPH_ENDPOINT}/samples`);\n }\n\n function loadGraphForConfig(config, includeInferred, linksLimit, startQuerySameAs) {\n return $http.get(`${EXPLORE_GRAPH_CONFIG_ENDPOINT}/graph/${encodeURIComponent(config.id)}?includeInferred=${includeInferred}&linksLimit=${linksLimit}&sameAsState=${startQuerySameAs}`);\n }\n\n function getConfig(id) {\n return $http.get(`${EXPLORE_GRAPH_CONFIG_ENDPOINT}/${encodeURIComponent(id)}`)\n .then((response) => mapGraphsConfigResponseToModel(response.data));\n }\n\n /**\n * Creates a new graph config.\n * @param {GraphsConfig} config\n * @return {Promise} A Promise which resolves with the result of the saved graph config.\n */\n function createGraphConfig(config) {\n return $http.post(EXPLORE_GRAPH_CONFIG_ENDPOINT, config);\n }\n\n /**\n * Updates an existing graph config.\n * @param {GraphsConfig} config\n * @return {Promise} A Promise which resolves with the result of the updated graph config.\n */\n function updateGraphConfig(config) {\n return $http.put(`${EXPLORE_GRAPH_CONFIG_ENDPOINT}/${encodeURIComponent(config.id)}`, config);\n }\n\n function deleteGraphConfig(config) {\n return $http.delete(`${EXPLORE_GRAPH_CONFIG_ENDPOINT}/${encodeURIComponent(config.id)}`);\n }\n\n function validateQuery(query, queryType, params, all, oneOf) {\n return $http({\n method: 'POST',\n url: `${EXPLORE_GRAPH_ENDPOINT}/validate`,\n data: {\n query,\n queryType,\n params,\n all,\n oneOf\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.rest.graphexplore.data.service', [])\n .factory('GraphDataRestService', GraphDataRestService);\n\nGraphDataRestService.$inject = ['$http'];\n\nconst CLASS_HIERARCHY_ENDPOINT = 'rest/class-hierarchy';\nconst DOMAIN_RANGE_ENDPOINT = 'rest/domain-range';\nconst DEPENDENCIES_ENDPOINT = 'rest/dependencies';\nconst EXPORE_GRAPH_ENDPOINT = 'rest/explore-graph';\n\nfunction GraphDataRestService($http) {\n return {\n // class hierarchy\n getClassHierarchyData,\n reloadClassHierarchy,\n getClassInstances,\n\n // domain-range graph\n getDomainRangeData,\n checkDomainRangeData,\n\n // class relationships\n getRelationshipsData,\n getRelationshipsClasses,\n getRelationshipsStatus,\n calculateRelationships,\n getPredicates,\n\n // instances graph\n getInstanceNode,\n getInstanceNodeLinks,\n getProperties,\n\n updateGraph,\n\n // common\n getRdfsLabelAndComment\n };\n\n function getClassHierarchyData(graphURI) {\n return $http.get(CLASS_HIERARCHY_ENDPOINT, {\n params: {\n graphURI: graphURI\n }\n });\n }\n\n function reloadClassHierarchy(graphURI) {\n return $http.get(CLASS_HIERARCHY_ENDPOINT, {\n params: {\n doReload: true,\n graphURI: graphURI\n }\n });\n }\n\n function getClassInstances(targetUri) {\n return $http.get(`${CLASS_HIERARCHY_ENDPOINT}/class-instances`, {\n params: {\n targetUri\n }\n });\n }\n\n function checkDomainRangeData(targetUri) {\n return $http.head(DOMAIN_RANGE_ENDPOINT, {\n params: {\n targetUri\n }\n });\n }\n\n function getDomainRangeData(targetUri, collapsed) {\n return $http.get(DOMAIN_RANGE_ENDPOINT, {\n params: {\n targetUri,\n collapsed\n }\n });\n }\n\n function getRelationshipsData(selectedClasses, direction, graphURI) {\n return $http.get(`${DEPENDENCIES_ENDPOINT}/matrix`, {\n params: {\n 'mode': direction,\n 'classes': _.map(selectedClasses, function (c) {\n return c.name;\n }),\n 'graphURI': graphURI\n }\n });\n }\n\n function getRelationshipsClasses(direction, graphURI) {\n return $http.get(`${DEPENDENCIES_ENDPOINT}/classes`, {\n params: {\n 'mode': direction,\n 'graphURI': graphURI\n }\n });\n }\n\n function getRelationshipsStatus(graphURI) {\n return $http.get(`${DEPENDENCIES_ENDPOINT}/status`, {\n params: {\n graphURI: graphURI\n }\n });\n }\n\n function calculateRelationships(graphURI) {\n return $http.get(`${DEPENDENCIES_ENDPOINT}/update`, {\n params: {\n graphURI: graphURI\n }\n });\n }\n\n function getPredicates(sourceClass, destinationClass, graphURI) {\n return $http.get(`${DEPENDENCIES_ENDPOINT}/predicates`, {\n params: {\n 'from': sourceClass,\n 'to': destinationClass,\n 'mode': 'all',\n 'graphURI': graphURI\n }\n });\n }\n\n function getInstanceNode(params) {\n return $http.get(`${EXPORE_GRAPH_ENDPOINT}/node`, {\n params: params\n });\n }\n\n function getInstanceNodeLinks(params) {\n return $http.get(`${EXPORE_GRAPH_ENDPOINT}/links`, {\n params: params\n });\n }\n\n function getProperties(params) {\n return $http.get(`${EXPORE_GRAPH_ENDPOINT}/properties`, {\n params: params\n });\n }\n\n function updateGraph(payload) {\n let data = {\n headers: {\n 'Content-Type': 'application/json'\n }\n };\n data = Object.assign(data, payload);\n return $http.post(`${EXPORE_GRAPH_ENDPOINT}/graph`, data);\n }\n\n function getRdfsLabelAndComment(targetUri, languages, extraParams) {\n const requestParams = extraParams || {};\n return $http({\n url: 'rest/explore/details',\n method: 'GET',\n params: _.extend(requestParams, {uri: targetUri, languages}),\n headers: {\n 'Accept': 'application/json'\n }\n });\n }\n}\n","angular\n .module('graphdb.framework.rest.graphexplore.savedgraphs.service', [])\n .factory('SavedGraphsRestService', SavedGraphsRestService);\n\nSavedGraphsRestService.$inject = ['$http'];\n\nconst SAVED_GRAPHS_ENDPOINT = 'rest/explore-graph/saved';\n\nfunction SavedGraphsRestService($http) {\n return {\n getSavedGraphs,\n getSavedGraph,\n editSavedGraph,\n deleteSavedGraph,\n addNewSavedGraph\n };\n\n function getSavedGraphs() {\n return $http.get(SAVED_GRAPHS_ENDPOINT);\n }\n\n function getSavedGraph(id) {\n return $http.get(`${SAVED_GRAPHS_ENDPOINT}/${encodeURIComponent(id)}`);\n }\n\n function editSavedGraph(graph) {\n return $http.put(`${SAVED_GRAPHS_ENDPOINT}/${encodeURIComponent(graph.id)}`, graph);\n }\n\n function deleteSavedGraph(graph) {\n return $http.delete(`${SAVED_GRAPHS_ENDPOINT}/${encodeURIComponent(graph.id)}`);\n }\n\n function addNewSavedGraph(graph) {\n return $http.post(SAVED_GRAPHS_ENDPOINT, graph);\n }\n}\n","/*\n * angucomplete-alt\n * Autocomplete directive for AngularJS\n * This is a fork of Daryl Rowland's angucomplete with some extra features.\n * By Hidenari Nozaki\n */\n\n/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */\n\n(function (root, factory) {\n 'use strict';\n // if (typeof module !== 'undefined' && module.exports) {\n // CommonJS\n // module.exports = factory(require('angular'));\n // } else if (typeof define === 'function' && define.amd) {\n // AMD\n // define(['angular'], factory);\n // } else {\n // Global Variables\n factory(root.angular);\n // }\n}(window, function (angular) {\n 'use strict';\n\n angular.module('angucomplete-alt', []).directive('angucompleteAlt', ['$q', '$parse', '$http', '$sce', '$timeout', '$templateCache', '$interpolate', function ($q, $parse, $http, $sce, $timeout, $templateCache, $interpolate) {\n // keyboard events\n var KEY_DW = 40;\n var KEY_RT = 39;\n var KEY_UP = 38;\n var KEY_LF = 37;\n var KEY_ES = 27;\n var KEY_EN = 13;\n var KEY_TAB = 9;\n\n var MIN_LENGTH = 3;\n var MAX_LENGTH = 524288; // the default max length per the html maxlength attribute\n var PAUSE = 500;\n var BLUR_TIMEOUT = 200;\n\n // string constants\n var REQUIRED_CLASS = 'autocomplete-required';\n var TEXT_SEARCHING = 'Searching...';\n var TEXT_NORESULTS = 'No results found';\n var TEMPLATE_URL = '/angucomplete-alt/index.html';\n\n // Set the default template for this directive\n $templateCache.put(TEMPLATE_URL,\n '<div class=\"angucomplete-holder\" ng-class=\"{\\'angucomplete-dropdown-visible\\': showDropdown}\">' +\n ' <input id=\"{{id}}_value\" name=\"{{inputName}}\" tabindex=\"{{fieldTabindex}}\" ng-class=\"{\\'angucomplete-input-not-empty\\': notEmpty}\" ng-model=\"searchStr\" ng-disabled=\"disableInput\" type=\"{{inputType}}\" placeholder=\"{{placeholder}}\" maxlength=\"{{maxlength}}\" ng-focus=\"onFocusHandler()\" class=\"{{inputClass}}\" ng-focus=\"resetHideResults()\" ng-blur=\"hideResults($event)\" autocapitalize=\"off\" autocorrect=\"off\" autocomplete=\"off\" ng-change=\"inputChangeHandler(searchStr)\"/>' +\n ' <div id=\"{{id}}_dropdown\" class=\"angucomplete-dropdown\" ng-show=\"showDropdown\">' +\n ' <div class=\"angucomplete-searching\" ng-show=\"searching\" ng-bind=\"textSearching\"></div>' +\n ' <div class=\"angucomplete-searching\" ng-show=\"!searching && (!results || results.length == 0)\" ng-bind=\"textNoResults\"></div>' +\n ' <div class=\"angucomplete-row\" ng-repeat=\"result in results\" ng-click=\"selectResult(result)\" ng-mouseenter=\"hoverRow($index)\" ng-class=\"{\\'angucomplete-selected-row\\': $index == currentIndex}\">' +\n ' <div ng-if=\"imageField\" class=\"angucomplete-image-holder\">' +\n ' <img ng-if=\"result.image && result.image != \\'\\'\" ng-src=\"{{result.image}}\" class=\"angucomplete-image\"/>' +\n ' <div ng-if=\"!result.image && result.image != \\'\\'\" class=\"angucomplete-image-default\"></div>' +\n ' </div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"matchClass\" ng-bind-html=\"result.title\"></div>' +\n ' <div class=\"angucomplete-title\" ng-if=\"!matchClass\">{{ result.title }}</div>' +\n ' <div ng-if=\"matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\" ng-bind-html=\"result.description\"></div>' +\n ' <div ng-if=\"!matchClass && result.description && result.description != \\'\\'\" class=\"angucomplete-description\">{{result.description}}</div>' +\n ' </div>' +\n ' </div>' +\n '</div>'\n );\n\n function link(scope, elem, attrs, ctrl) {\n var inputField = elem.find('input');\n var minlength = MIN_LENGTH;\n var searchTimer = null;\n var hideTimer;\n var requiredClassName = REQUIRED_CLASS;\n var responseFormatter;\n var validState = null;\n var httpCanceller = null;\n var dd = elem[0].querySelector('.angucomplete-dropdown');\n var isScrollOn = false;\n var mousedownOn = null;\n var unbindInitialValue;\n var displaySearching;\n var displayNoResults;\n\n elem.on('mousedown', function (event) {\n if (event.target.id) {\n mousedownOn = event.target.id;\n if (mousedownOn === scope.id + '_dropdown') {\n document.body.addEventListener('click', clickoutHandlerForDropdown);\n }\n }\n else {\n mousedownOn = event.target.className;\n }\n });\n\n scope.currentIndex = scope.focusFirst ? 0 : null;\n scope.searching = false;\n unbindInitialValue = scope.$watch('initialValue', function (newval) {\n if (newval) {\n // remove scope listener\n unbindInitialValue();\n // change input\n handleInputChange(newval, true);\n }\n });\n\n scope.$watch('fieldRequired', function (newval, oldval) {\n if (newval !== oldval) {\n if (!newval) {\n ctrl[scope.inputName].$setValidity(requiredClassName, true);\n }\n else if (!validState || scope.currentIndex === -1) {\n handleRequired(false);\n }\n else {\n handleRequired(true);\n }\n }\n });\n\n scope.$on('angucomplete-alt:clearInput', function (event, elementId) {\n if (!elementId || elementId === scope.id) {\n scope.searchStr = null;\n callOrAssign();\n handleRequired(false);\n clearResults();\n }\n });\n\n scope.$on('angucomplete-alt:changeInput', function (event, elementId, newval) {\n if (!!elementId && elementId === scope.id) {\n handleInputChange(newval);\n }\n });\n\n function handleInputChange(newval, initial) {\n if (newval) {\n if (typeof newval === 'object') {\n scope.searchStr = extractTitle(newval);\n callOrAssign({originalObject: newval});\n } else if (typeof newval === 'string' && newval.length > 0) {\n scope.searchStr = newval;\n } else {\n if (console && console.error) {\n console.error('Tried to set ' + (!!initial ? 'initial' : '') + ' value of angucomplete to', newval, 'which is an invalid value');\n }\n }\n\n handleRequired(true);\n }\n }\n\n // #194 dropdown list not consistent in collapsing (bug).\n function clickoutHandlerForDropdown(event) {\n mousedownOn = null;\n scope.hideResults(event);\n document.body.removeEventListener('click', clickoutHandlerForDropdown);\n }\n\n // for IE8 quirkiness about event.which\n function ie8EventNormalizer(event) {\n return event.which ? event.which : event.keyCode;\n }\n\n function callOrAssign(value) {\n if (typeof scope.selectedObject === 'function') {\n scope.selectedObject(value, scope.selectedObjectData);\n }\n else {\n scope.selectedObject = value;\n }\n\n if (value) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n function callFunctionOrIdentity(fn) {\n return function (data) {\n return scope[fn] ? scope[fn](data) : data;\n };\n }\n\n function setInputString(str) {\n callOrAssign({originalObject: str});\n\n if (scope.clearSelected) {\n scope.searchStr = null;\n }\n clearResults();\n }\n\n function extractTitle(data) {\n // split title fields and run extractValue for each and join with ' '\n return scope.titleField.split(',')\n .map(function (field) {\n return extractValue(data, field);\n })\n .join(' ');\n }\n\n function extractValue(obj, key) {\n var keys, result;\n if (key) {\n keys = key.split('.');\n result = obj;\n for (var i = 0; i < keys.length; i++) {\n result = result[keys[i]];\n }\n }\n else {\n result = obj;\n }\n return result;\n }\n\n function findMatchString(target, str) {\n var result, matches, re;\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n // Escape user input to be treated as a literal string within a regular expression\n re = new RegExp(str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'i');\n if (!target) {\n return;\n }\n if (!target.match || !target.replace) {\n target = target.toString();\n }\n matches = target.match(re);\n if (matches) {\n result = target.replace(re,\n '<span class=\"' + scope.matchClass + '\">' + matches[0] + '</span>');\n }\n else {\n result = target;\n }\n return $sce.trustAsHtml(result);\n }\n\n function handleRequired(valid) {\n scope.notEmpty = valid;\n validState = scope.searchStr;\n if (scope.fieldRequired && ctrl && scope.inputName) {\n ctrl[scope.inputName].$setValidity(requiredClassName, valid);\n }\n }\n\n function keyupHandler(event) {\n var which = ie8EventNormalizer(event);\n if (which === KEY_LF || which === KEY_RT) {\n // do nothing\n return;\n }\n\n if (which === KEY_UP || which === KEY_EN) {\n event.preventDefault();\n }\n else if (which === KEY_DW) {\n event.preventDefault();\n if (!scope.showDropdown && scope.searchStr && scope.searchStr.length >= minlength) {\n initResults();\n scope.searching = true;\n searchTimerComplete(scope.searchStr);\n }\n }\n else if (which === KEY_ES) {\n clearResults();\n scope.$apply(function () {\n inputField.val(scope.searchStr);\n });\n }\n else {\n if (minlength === 0 && !scope.searchStr) {\n return;\n }\n\n if (!scope.searchStr || scope.searchStr === '') {\n scope.showDropdown = false;\n } else if (scope.searchStr.length >= minlength) {\n initResults();\n\n if (searchTimer) {\n $timeout.cancel(searchTimer);\n }\n\n scope.searching = true;\n\n searchTimer = $timeout(function () {\n searchTimerComplete(scope.searchStr);\n }, scope.pause);\n }\n\n if (validState && validState !== scope.searchStr && !scope.clearSelected) {\n scope.$apply(function () {\n callOrAssign();\n });\n }\n }\n }\n\n function handleOverrideSuggestions(event) {\n if (scope.overrideSuggestions && !(scope.selectedObject && scope.selectedObject.originalObject === scope.searchStr)) {\n if (event) {\n event.preventDefault();\n }\n\n // cancel search timer\n $timeout.cancel(searchTimer);\n // cancel http request\n cancelHttpRequest();\n\n setInputString(scope.searchStr);\n }\n }\n\n function dropdownRowOffsetHeight(row) {\n var css = getComputedStyle(row);\n return row.offsetHeight +\n parseInt(css.marginTop, 10) + parseInt(css.marginBottom, 10);\n }\n\n function dropdownHeight() {\n return dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).maxHeight, 10);\n }\n\n function dropdownRow() {\n return elem[0].querySelectorAll('.angucomplete-row')[scope.currentIndex];\n }\n\n function dropdownRowTop() {\n return dropdownRow().getBoundingClientRect().top -\n (dd.getBoundingClientRect().top +\n parseInt(getComputedStyle(dd).paddingTop, 10));\n }\n\n function dropdownScrollTopTo(offset) {\n dd.scrollTop = dd.scrollTop + offset;\n }\n\n function updateInputField() {\n var current = scope.results[scope.currentIndex];\n if (scope.matchClass) {\n inputField.val(extractTitle(current.originalObject));\n }\n else {\n inputField.val(current.title);\n }\n }\n\n function keydownHandler(event) {\n var which = ie8EventNormalizer(event);\n var row = null;\n var rowTop = null;\n\n if (which === KEY_EN && scope.results) {\n if (scope.currentIndex >= 0 && scope.currentIndex < scope.results.length) {\n event.preventDefault();\n scope.selectResult(scope.results[scope.currentIndex]);\n } else {\n handleOverrideSuggestions(event);\n clearResults();\n }\n scope.$apply();\n } else if (which === KEY_DW && scope.results) {\n event.preventDefault();\n if ((scope.currentIndex + 1) < scope.results.length && scope.showDropdown) {\n scope.$apply(function () {\n scope.currentIndex++;\n updateInputField();\n });\n\n if (isScrollOn) {\n row = dropdownRow();\n if (dropdownHeight() < row.getBoundingClientRect().bottom) {\n dropdownScrollTopTo(dropdownRowOffsetHeight(row));\n }\n }\n }\n } else if (which === KEY_UP && scope.results) {\n event.preventDefault();\n if (scope.currentIndex >= 1) {\n scope.$apply(function () {\n scope.currentIndex--;\n updateInputField();\n });\n\n if (isScrollOn) {\n rowTop = dropdownRowTop();\n if (rowTop < 0) {\n dropdownScrollTopTo(rowTop - 1);\n }\n }\n }\n else if (scope.currentIndex === 0) {\n scope.$apply(function () {\n scope.currentIndex = -1;\n inputField.val(scope.searchStr);\n });\n }\n } else if (which === KEY_TAB) {\n if (scope.results && scope.results.length > 0 && scope.showDropdown) {\n if (scope.currentIndex === -1 && scope.overrideSuggestions) {\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n handleOverrideSuggestions();\n }\n else {\n if (scope.currentIndex === -1) {\n scope.currentIndex = 0;\n }\n scope.selectResult(scope.results[scope.currentIndex]);\n scope.$digest();\n }\n }\n else {\n // no results\n // intentionally not sending event so that it does not\n // prevent default tab behavior\n if (scope.searchStr && scope.searchStr.length > 0) {\n handleOverrideSuggestions();\n }\n }\n } else if (which === KEY_ES) {\n // This is very specific to IE10/11 #272\n // without this, IE clears the input text\n event.preventDefault();\n }\n }\n\n function httpSuccessCallbackGen(str) {\n return function (responseData, status, headers, config) {\n // normalize return obejct from promise\n if (!status && !headers && !config && responseData.data) {\n responseData = responseData.data;\n }\n scope.searching = false;\n processResults(\n extractValue(responseFormatter(responseData), scope.remoteUrlDataField),\n str);\n };\n }\n\n function httpErrorCallback(errorRes, status, headers, config) {\n scope.searching = false;\n\n // cancelled/aborted\n if (status === 0 || status === -1) {\n return;\n }\n\n // normalize return obejct from promise\n if (!status && !headers && !config) {\n status = errorRes.status;\n }\n if (scope.remoteUrlErrorCallback) {\n scope.remoteUrlErrorCallback(errorRes, status, headers, config);\n }\n else {\n if (console && console.error) {\n console.error('http error');\n }\n }\n }\n\n function cancelHttpRequest() {\n if (httpCanceller) {\n httpCanceller.resolve();\n }\n }\n\n function getRemoteResults(str) {\n var params = {},\n url = scope.remoteUrl + encodeURIComponent(str);\n if (scope.remoteUrlRequestFormatter) {\n params = {params: scope.remoteUrlRequestFormatter(str)};\n url = scope.remoteUrl;\n }\n if (!!scope.remoteUrlRequestWithCredentials) {\n params.withCredentials = true;\n }\n cancelHttpRequest();\n httpCanceller = $q.defer();\n params.timeout = httpCanceller.promise;\n $http.get(url, params)\n .success(httpSuccessCallbackGen(str))\n .error(httpErrorCallback);\n }\n\n function getRemoteResultsWithCustomHandler(str) {\n cancelHttpRequest();\n\n httpCanceller = $q.defer();\n\n scope.remoteApiHandler(str, httpCanceller.promise)\n .then(httpSuccessCallbackGen(str))\n .catch(httpErrorCallback);\n\n /* IE8 compatible\n scope.remoteApiHandler(str, httpCanceller.promise)\n ['then'](httpSuccessCallbackGen(str))\n ['catch'](httpErrorCallback);\n */\n }\n\n function clearResults() {\n scope.showDropdown = false;\n scope.results = [];\n if (dd) {\n dd.scrollTop = 0;\n }\n }\n\n function initResults() {\n scope.showDropdown = displaySearching;\n scope.currentIndex = scope.focusFirst ? 0 : -1;\n scope.results = [];\n }\n\n function getLocalResults(str) {\n var i, match, s, value,\n searchFields = scope.searchFields.split(','),\n matches = [];\n if (typeof scope.parseInput() !== 'undefined') {\n str = scope.parseInput()(str);\n }\n for (i = 0; i < scope.localData.length; i++) {\n match = false;\n\n for (s = 0; s < searchFields.length; s++) {\n value = extractValue(scope.localData[i], searchFields[s]) || '';\n match = match || (value.toString().toLowerCase().indexOf(str.toString().toLowerCase()) >= 0);\n }\n\n if (match) {\n matches[matches.length] = scope.localData[i];\n }\n }\n return matches;\n }\n\n function checkExactMatch(result, obj, str) {\n if (!str) {\n return false;\n }\n for (var key in obj) {\n if (obj[key].toLowerCase() === str.toLowerCase()) {\n scope.selectResult(result);\n return true;\n }\n }\n return false;\n }\n\n function searchTimerComplete(str) {\n // Begin the search\n if (!str || str.length < minlength) {\n return;\n }\n if (scope.localData) {\n scope.$apply(function () {\n var matches;\n if (typeof scope.localSearch() !== 'undefined') {\n matches = scope.localSearch()(str, scope.localData);\n } else {\n matches = getLocalResults(str);\n }\n scope.searching = false;\n processResults(matches, str);\n });\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler(str);\n } else {\n getRemoteResults(str);\n }\n }\n\n function processResults(responseData, str) {\n var i, description, image, text, formattedText, formattedDesc;\n\n if (responseData && responseData.length > 0) {\n scope.results = [];\n\n for (i = 0; i < responseData.length; i++) {\n if (scope.titleField && scope.titleField !== '') {\n text = formattedText = extractTitle(responseData[i]);\n }\n\n description = '';\n if (scope.descriptionField) {\n description = formattedDesc = extractValue(responseData[i], scope.descriptionField);\n }\n\n image = '';\n if (scope.imageField) {\n image = extractValue(responseData[i], scope.imageField);\n }\n\n if (scope.matchClass) {\n formattedText = findMatchString(text, str);\n formattedDesc = findMatchString(description, str);\n }\n\n scope.results[scope.results.length] = {\n title: formattedText,\n description: formattedDesc,\n image: image,\n originalObject: responseData[i]\n };\n }\n\n } else {\n scope.results = [];\n }\n\n if (scope.autoMatch && scope.results.length === 1 &&\n checkExactMatch(scope.results[0],\n {title: text, desc: description || ''}, scope.searchStr)) {\n scope.showDropdown = false;\n } else if (scope.results.length === 0 && !displayNoResults) {\n scope.showDropdown = false;\n } else {\n scope.showDropdown = true;\n }\n }\n\n function showAll() {\n if (scope.localData) {\n processResults(scope.localData, '');\n }\n else if (scope.remoteApiHandler) {\n getRemoteResultsWithCustomHandler('');\n }\n else {\n getRemoteResults('');\n }\n }\n\n scope.onFocusHandler = function () {\n if (scope.focusIn) {\n scope.focusIn();\n }\n if (minlength === 0 && (!scope.searchStr || scope.searchStr.length === 0)) {\n scope.currentIndex = scope.focusFirst ? 0 : scope.currentIndex;\n scope.showDropdown = true;\n showAll();\n }\n };\n\n scope.hideResults = function () {\n if (mousedownOn &&\n (mousedownOn === scope.id + '_dropdown' ||\n mousedownOn.indexOf('angucomplete') >= 0)) {\n mousedownOn = null;\n }\n else {\n hideTimer = $timeout(function () {\n clearResults();\n scope.$apply(function () {\n if (scope.searchStr && scope.searchStr.length > 0) {\n inputField.val(scope.searchStr);\n }\n });\n }, BLUR_TIMEOUT);\n cancelHttpRequest();\n\n if (scope.focusOut) {\n scope.focusOut();\n }\n\n if (scope.overrideSuggestions) {\n if (scope.searchStr && scope.searchStr.length > 0 && scope.currentIndex === -1) {\n handleOverrideSuggestions();\n }\n }\n }\n };\n\n scope.resetHideResults = function () {\n if (hideTimer) {\n $timeout.cancel(hideTimer);\n }\n };\n\n scope.hoverRow = function (index) {\n scope.currentIndex = index;\n };\n\n scope.selectResult = function (result) {\n // Restore original values\n if (scope.matchClass) {\n result.title = extractTitle(result.originalObject);\n result.description = extractValue(result.originalObject, scope.descriptionField);\n }\n\n if (scope.clearSelected) {\n scope.searchStr = null;\n }\n else {\n scope.searchStr = result.title;\n }\n callOrAssign(result);\n clearResults();\n };\n\n scope.inputChangeHandler = function (str) {\n if (str.length < minlength) {\n cancelHttpRequest();\n clearResults();\n }\n else if (str.length === 0 && minlength === 0) {\n scope.searching = false;\n showAll();\n }\n\n if (scope.inputChanged) {\n str = scope.inputChanged(str);\n }\n return str;\n };\n\n // check required\n if (scope.fieldRequiredClass && scope.fieldRequiredClass !== '') {\n requiredClassName = scope.fieldRequiredClass;\n }\n\n // check min length\n if (scope.minlength && scope.minlength !== '') {\n minlength = parseInt(scope.minlength, 10);\n }\n\n // check pause time\n if (!scope.pause) {\n scope.pause = PAUSE;\n }\n\n // check clearSelected\n if (!scope.clearSelected) {\n scope.clearSelected = false;\n }\n\n // check override suggestions\n if (!scope.overrideSuggestions) {\n scope.overrideSuggestions = false;\n }\n\n // check required field\n if (scope.fieldRequired && ctrl) {\n // check initial value, if given, set validitity to true\n if (scope.initialValue) {\n handleRequired(true);\n }\n else {\n handleRequired(false);\n }\n }\n\n scope.inputType = attrs.type ? attrs.type : 'text';\n\n // set strings for \"Searching...\" and \"No results\"\n scope.textSearching = attrs.textSearching ? attrs.textSearching : TEXT_SEARCHING;\n scope.textNoResults = attrs.textNoResults ? attrs.textNoResults : TEXT_NORESULTS;\n displaySearching = scope.textSearching === 'false' ? false : true;\n displayNoResults = scope.textNoResults === 'false' ? false : true;\n\n // set max length (default to maxlength deault from html\n scope.maxlength = attrs.maxlength ? attrs.maxlength : MAX_LENGTH;\n\n // register events\n inputField.on('keydown', keydownHandler);\n inputField.on('keyup', keyupHandler);\n\n // set response formatter\n responseFormatter = callFunctionOrIdentity('remoteUrlResponseFormatter');\n\n // set isScrollOn\n $timeout(function () {\n var css = getComputedStyle(dd);\n isScrollOn = css.maxHeight && css.overflowY === 'auto';\n });\n }\n\n return {\n restrict: 'EA',\n require: '^?form',\n scope: {\n selectedObject: '=',\n selectedObjectData: '=',\n disableInput: '=',\n initialValue: '=',\n localData: '=',\n localSearch: '&',\n remoteUrlRequestFormatter: '=',\n remoteUrlRequestWithCredentials: '@',\n remoteUrlResponseFormatter: '=',\n remoteUrlErrorCallback: '=',\n remoteApiHandler: '=',\n id: '@',\n type: '@',\n placeholder: '@',\n textSearching: '@',\n textNoResults: '@',\n remoteUrl: '@',\n remoteUrlDataField: '@',\n titleField: '@',\n descriptionField: '@',\n imageField: '@',\n inputClass: '@',\n pause: '@',\n searchFields: '@',\n minlength: '@',\n matchClass: '@',\n clearSelected: '@',\n overrideSuggestions: '@',\n fieldRequired: '=',\n fieldRequiredClass: '@',\n inputChanged: '=',\n autoMatch: '@',\n focusOut: '&',\n focusIn: '&',\n fieldTabindex: '@',\n inputName: '@',\n focusFirst: '@',\n parseInput: '&'\n },\n templateUrl: function (element, attrs) {\n return attrs.templateUrl || TEMPLATE_URL;\n },\n compile: function (tElement) {\n var startSym = $interpolate.startSymbol();\n var endSym = $interpolate.endSymbol();\n if (!(startSym === '{{' && endSym === '}}')) {\n var interpolatedHtml = tElement.html()\n .replace(/\\{\\{/g, startSym)\n .replace(/\\}\\}/g, endSym);\n tElement.html(interpolatedHtml);\n }\n return link;\n }\n };\n }]);\n\n}));\n"],"names":["angular","module","d3","select","STATUS","allGraphs","contextID","type","value","uri","humanize","number","exp","Math","floor","log","result","pow","toFixed","DependenciesChordCtrl","$scope","$rootScope","$repositories","toastr","$timeout","$interval","GraphDataRestService","UiScrollService","ModalService","LocalStorageAdapter","RDF4JRepositoriesRestService","$translate","repositoryContextService","service","RepositoryContextService","timer","hasMoreGraphs","status","getSelectedRepository","id","graphsDropdownToggled","isOpen","warning","instant","graphsLimit","NumberUtils","formatNumberToLocaleString","use","selectedGraph","initView","resolveGraphs","MAX_LOADED_GRAPHS","success","graphsInRepo","results","bindings","length","setSelectedGraphFromCache","isSystemRepository","getRelationshipsStatus","error","data","repositoryError","getError","selGraphFromCache","get","some","graph","set","getRelationshipsData","selectedClasses","html","direction","matrixData","dependenciesData","matrix","right","nodes","left","hasLinks","_","sum","map","arr","force","cancel","getRelationshipsClasses","classesData","allClasses","items","filter","classFilterFunc","allNotFilteredClasses","undefined","isUndefined","slice","indexOf","substring","datasource","position","current","c","name","toLowerCase","classQuery","query","key","index","count","initLazyList","$watch","each","item","revision","adapterContainer","adapter","remain","reload","activeRepository","isFedx","$on","repositoryChangedSubscription","isLoading","confirmCalculateDependencies","openSimpleModal","title","message","then","calculateDependencies","calculateRelationships","addClass","clazz","push","removeClass","remove","showClass","classToShow","isClassByNameShown","find","addClassByName","removeClassByName","removeAllClasses","onSelectedRepositoryChanged","onRepositoryIsSet","selectGraph","getSelectedGraphValue","isAllGraphsSelected","Object","defineProperty","global","controller","config","$uibTooltipProvider","options","appendToBody","$inject","DomainRangeGraphCtlr","$location","$window","LSKeys","predicatesObj","predicatesQueryObj","predicatesListNotFiltered","predicatesSearchPlaceholder","onopen","onclose","noop","doCollapseEdges","DOMAIN_RANGE_COLLAPSE_EDGES","goToClassHierarchyView","lastSelectedClass","CLASS_HIERARCHY_LAST_SELECTED_CLASS","search","hash","path","collapseEdges","event","selectedClass","objectPropClassUri","objectPropClassName","collapsed","currentActiveRepository","getActiveRepository","copyToClipboard","openCopyToClipboardModal","toggleCollapseEdgesState","history","pushState","predicatesListFilterFunc","pred","resolvedUri","showPredicatesInfoPanel","selectedPredicate","targetNode","target","sourceNode","source","encodedUri","encodeURIComponent","sourceTargetObjectNodeUri","encodedSourceTargetObjectNodeUri","sourceTargetObjectNodeName","getRdfsLabelAndComment","response","rdfsLabel","label","rdfsComment","comment","allEdges","obj","absUri","absUriNonEncoded","isImplicit","implicit","prepareDataForPredicatesInfoSidePanel","$","document","ready","click","hide","dependenciesChordDirective","restrict","template","scope","link","isZeroMatrix","fill","tooltip","append","attr","style","on","outerRadius","min","innerRadius","arc","chordGraph","padAngle","sortSubgroups","sortChords","radius","svg","layout","group","selectAll","groups","enter","i","this","chord","classed","p","text","d","angle","startAngle","endAngle","PI","sourceClass","destinationClass","px","pageX","py","pageY","getPredicates","predicatesData","tooltipContent","icon","predicate","weight","join","toString","transition","duration","imgSrc","SVG","Export","generateBase64ImageSource","attrs","href","download","drawChord","directive","listItemsSearchFilterDirective","filterQueryObj","filterFunction","listItemsObj","listItemsNotFiltered","searchPlaceholder","templateUrl","searchQuery","nonFilteredData","customFilter","rdfsCommentLabelDirective","SHORT_COMMENT_LENGTH","expanded","alwaysExpanded","element","stringLimit","scrollToTop","getElementsByClassName","scrollTop","checkCommentLength","innerText","equalHeights","commentHeight","innerHeight","toggleFullComment","constant","searchIconInputDirective","searchData","searchFields","titleField","initialValue","searchedObjCallback","performSearchActionOnEnter","$broadcast","showInput","css","focus","hideInput","show","systemRepoWarningDirective","hasPermission","factory","processAndFilterLabelAndComment","processKeysWithColon","newObj","k","hasOwnProperty","origKey","split","labels","comments","processedObj","langFilter","lang","filteredRdfsLabel","grep","filteredRdfsComment","actualIndex","start","max","end","isArray","GraphConfigRestService","EXPLORE_GRAPH_ENDPOINT","EXPLORE_GRAPH_CONFIG_ENDPOINT","$http","getGraphConfigs","getGraphConfigSamples","loadGraphForConfig","includeInferred","linksLimit","startQuerySameAs","getConfig","mapGraphsConfigResponseToModel","createGraphConfig","post","updateGraphConfig","put","deleteGraphConfig","delete","validateQuery","queryType","params","all","oneOf","method","url","CLASS_HIERARCHY_ENDPOINT","DOMAIN_RANGE_ENDPOINT","DEPENDENCIES_ENDPOINT","EXPORE_GRAPH_ENDPOINT","getClassHierarchyData","graphURI","reloadClassHierarchy","doReload","getClassInstances","targetUri","getDomainRangeData","checkDomainRangeData","head","getInstanceNode","getInstanceNodeLinks","getProperties","updateGraph","payload","headers","assign","languages","extraParams","requestParams","extend","SavedGraphsRestService","SAVED_GRAPHS_ENDPOINT","getSavedGraphs","getSavedGraph","editSavedGraph","deleteSavedGraph","addNewSavedGraph","window","$q","$parse","$sce","$templateCache","$interpolate","TEMPLATE_URL","elem","ctrl","hideTimer","responseFormatter","unbindInitialValue","displaySearching","displayNoResults","fn","inputField","minlength","searchTimer","requiredClassName","validState","httpCanceller","dd","querySelector","isScrollOn","mousedownOn","handleInputChange","newval","initial","searchStr","extractTitle","callOrAssign","originalObject","console","handleRequired","clickoutHandlerForDropdown","hideResults","body","removeEventListener","ie8EventNormalizer","which","keyCode","selectedObject","selectedObjectData","field","extractValue","keys","findMatchString","str","matches","re","RegExp","replace","match","matchClass","trustAsHtml","valid","notEmpty","fieldRequired","inputName","$setValidity","handleOverrideSuggestions","overrideSuggestions","preventDefault","cancelHttpRequest","clearSelected","clearResults","dropdownRow","querySelectorAll","currentIndex","dropdownScrollTopTo","offset","updateInputField","val","httpSuccessCallbackGen","responseData","searching","processResults","remoteUrlDataField","httpErrorCallback","errorRes","remoteUrlErrorCallback","resolve","getRemoteResults","remoteUrl","remoteUrlRequestFormatter","remoteUrlRequestWithCredentials","withCredentials","defer","timeout","promise","getRemoteResultsWithCustomHandler","remoteApiHandler","catch","showDropdown","initResults","focusFirst","searchTimerComplete","localData","$apply","localSearch","s","parseInput","getLocalResults","description","image","formattedText","formattedDesc","descriptionField","imageField","autoMatch","selectResult","checkExactMatch","desc","showAll","addEventListener","className","oldval","elementId","onFocusHandler","focusIn","focusOut","resetHideResults","hoverRow","inputChangeHandler","inputChanged","fieldRequiredClass","parseInt","pause","inputType","textSearching","textNoResults","maxlength","row","rowTop","getBoundingClientRect","top","getComputedStyle","maxHeight","bottom","offsetHeight","marginTop","marginBottom","dropdownRowOffsetHeight","paddingTop","$digest","overflowY","require","disableInput","remoteUrlResponseFormatter","placeholder","inputClass","fieldTabindex","compile","tElement","startSym","startSymbol","endSym","endSymbol","interpolatedHtml"],"sourceRoot":""}
@@ -1,6 +1,7 @@
1
1
  export declare enum ThemeMode {
2
2
  'light' = "light",
3
- 'dark' = "dark"
3
+ 'dark' = "dark",
4
+ 'system' = "system"
4
5
  }
5
6
  /**
6
7
  * Interface for legacy settings format
@@ -23,5 +24,11 @@ export declare class ApplicationSettings {
23
24
  */
24
25
  themeMode: ThemeMode;
25
26
  constructor(data?: Partial<ApplicationSettings>);
27
+ /**
28
+ * Checks if the application theme is set to system mode.
29
+ *
30
+ * @returns true if the theme mode is set to system, false otherwise.
31
+ */
32
+ isSystemMode(): boolean;
26
33
  toString(): string;
27
34
  }