graphdb-workbench 2.1.0-RC1 → 2.1.0-RC2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/11.7d07164f552bc27c327e.bundle.js +1 -1
  2. package/dist/11.7d07164f552bc27c327e.bundle.js.map +1 -1
  3. package/dist/134.674fc334ea03aadba240.bundle.js +1 -1
  4. package/dist/134.674fc334ea03aadba240.bundle.js.map +1 -1
  5. package/dist/18.b39247b09bf69883801d.bundle.js +1 -1
  6. package/dist/18.b39247b09bf69883801d.bundle.js.map +1 -1
  7. package/dist/25.e39c618ca1d1636339cf.bundle.js +1 -1
  8. package/dist/25.e39c618ca1d1636339cf.bundle.js.map +1 -1
  9. package/dist/30.aa58eb05e16cb046b2bc.bundle.js +1 -1
  10. package/dist/30.aa58eb05e16cb046b2bc.bundle.js.map +1 -1
  11. package/dist/31.27bb6cb77874c106bdf3.bundle.js +1 -1
  12. package/dist/31.27bb6cb77874c106bdf3.bundle.js.map +1 -1
  13. package/dist/{5.53c0a20d56d6828fa504.bundle.js → 5.e6ebc1c858a5b922c8fb.bundle.js} +2 -2
  14. package/dist/5.e6ebc1c858a5b922c8fb.bundle.js.map +1 -0
  15. package/dist/73.86adae641bf117fce3fe.bundle.js +2 -0
  16. package/dist/73.86adae641bf117fce3fe.bundle.js.map +1 -0
  17. package/dist/75.9923d34e550b5358194c.bundle.js +2 -0
  18. package/dist/75.9923d34e550b5358194c.bundle.js.map +1 -0
  19. package/dist/77.4e84abd9b025b1812617.bundle.js +2 -0
  20. package/dist/77.4e84abd9b025b1812617.bundle.js.map +1 -0
  21. package/dist/78.b8fa389df60b30d1df18.bundle.js +2 -0
  22. package/dist/78.b8fa389df60b30d1df18.bundle.js.map +1 -0
  23. package/dist/82.5546d65e41f31a410b86.bundle.js +1 -1
  24. package/dist/82.5546d65e41f31a410b86.bundle.js.map +1 -1
  25. package/dist/{bundle.cca41098c7f6b7b6d221.bundle.js → bundle.49773f8bd1b7acd52299.bundle.js} +18 -18
  26. package/dist/bundle.49773f8bd1b7acd52299.bundle.js.map +1 -0
  27. package/dist/i18n/locale-en.json +8 -6
  28. package/dist/i18n/locale-fr.json +7 -6
  29. package/dist/index.html +3 -3
  30. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  31. package/dist/pages/autocomplete.html +1 -1
  32. package/dist/pages/choose-repository-type.html +1 -1
  33. package/dist/pages/cluster-management/clusterInfo.html +3 -3
  34. package/dist/pages/create-index.html +4 -4
  35. package/dist/pages/dependencies.html +1 -1
  36. package/dist/pages/domainRangeInfo.html +2 -2
  37. package/dist/pages/edit.html +1 -1
  38. package/dist/pages/explore.html +1 -1
  39. package/dist/pages/export.html +1 -1
  40. package/dist/pages/find.html +1 -1
  41. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  42. package/dist/pages/graphs-visualizations.html +7 -7
  43. package/dist/pages/guides.html +1 -1
  44. package/dist/pages/import.html +1 -1
  45. package/dist/pages/jdbc-create.html +5 -5
  46. package/dist/pages/monitor/queries.html +1 -1
  47. package/dist/pages/monitor/resources.html +2 -2
  48. package/dist/pages/namespaces.html +2 -2
  49. package/dist/pages/plugins.html +1 -1
  50. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  51. package/dist/pages/rdfrank.html +2 -2
  52. package/dist/pages/repositories.html +2 -2
  53. package/dist/pages/repository.html +3 -3
  54. package/dist/pages/similarity-indexes.html +1 -1
  55. package/dist/pages/sparql-template-create.html +5 -5
  56. package/dist/pages/sparql.html +3 -3
  57. package/dist/pages/webapi.html +2 -2
  58. package/dist/plugins.js +44 -17
  59. package/dist/res/swagger/index.html +27 -27
  60. package/package.json +1 -1
  61. package/dist/5.53c0a20d56d6828fa504.bundle.js.map +0 -1
  62. package/dist/73.cc31681a2d4d7c0fe2ba.bundle.js +0 -2
  63. package/dist/73.cc31681a2d4d7c0fe2ba.bundle.js.map +0 -1
  64. package/dist/75.f3535bf8818b4fe6d4ba.bundle.js +0 -2
  65. package/dist/75.f3535bf8818b4fe6d4ba.bundle.js.map +0 -1
  66. package/dist/77.4c80919e2b84b3b99cb9.bundle.js +0 -2
  67. package/dist/77.4c80919e2b84b3b99cb9.bundle.js.map +0 -1
  68. package/dist/78.be1f229c9fa413560a77.bundle.js +0 -2
  69. package/dist/78.be1f229c9fa413560a77.bundle.js.map +0 -1
  70. package/dist/bundle.cca41098c7f6b7b6d221.bundle.js.map +0 -1
package/dist/plugins.js CHANGED
@@ -551,6 +551,9 @@ PluginRegistry.add('guide.step', [
551
551
  guideBlockName: 'enable-autocomplete',
552
552
  getSteps: (options, services) => {
553
553
  const GuideUtils = services.GuideUtils;
554
+ const toastr = services.toastr;
555
+ const $translate = services.$translate;
556
+ const $interpolate = services.$interpolate;
554
557
  options.mainAction = 'enable-autocomplete';
555
558
 
556
559
  return [
@@ -566,14 +569,14 @@ PluginRegistry.add('guide.step', [
566
569
  content: 'guide.step_plugin.enable-autocomplete.content',
567
570
  url: '/autocomplete',
568
571
  elementSelector: GuideUtils.getGuideElementSelector('autocompleteCheckbox'),
569
- onNextClick: (guide) => {
570
- GuideUtils.waitFor(GuideUtils.getGuideElementSelector('autocompleteCheckbox', ' input'), 3, false)
571
- .then(autocompleteCheckbox => {
572
- if (!autocompleteCheckbox.is(':checked')) {
573
- GuideUtils.clickOnGuideElement('autocompleteCheckbox')();
574
- }
575
- });
576
- guide.next();
572
+ onNextValidate: (step) => {
573
+
574
+ if (!GuideUtils.isVisible()) {
575
+ GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,
576
+ 'guide.step_plugin.enable-autocomplete.error', options);
577
+ return false;
578
+ }
579
+ return true;
577
580
  }
578
581
  }, options)
579
582
  },
@@ -582,7 +585,8 @@ PluginRegistry.add('guide.step', [
582
585
  options: angular.extend({}, {
583
586
  content: 'guide.step_plugin.enable-autocomplete.status_info.content',
584
587
  url: '/autocomplete',
585
- elementSelector: GuideUtils.getGuideElementSelector('autocompleteStatus')
588
+ elementSelector: GuideUtils.getGuideElementSelector('autocompleteStatus'),
589
+ canBePaused: false
586
590
  }, options)
587
591
  }
588
592
  ]
@@ -760,6 +764,7 @@ PluginRegistry.add('guide.step', [
760
764
  );
761
765
  }
762
766
 
767
+ const importSettingsButtonSelector = GuideUtils.getGuideElementSelector('import-settings-import-button');
763
768
  steps.push(...[
764
769
  {
765
770
  guideBlockName: 'clickable-element',
@@ -792,12 +797,25 @@ PluginRegistry.add('guide.step', [
792
797
  guideBlockName: 'clickable-element',
793
798
  options: angular.extend({}, {
794
799
  content: 'guide.step_plugin.import_rdf_file.import-settings.import.button.content',
795
- elementSelector: GuideUtils.getGuideElementSelector('import-settings-import-button'),
800
+ elementSelector: importSettingsButtonSelector,
796
801
  placement: 'top',
797
- onPreviousClick: (guide) => new Promise(function (resolve) {
802
+ onPreviousClick: () => new Promise(function (resolve) {
798
803
  GuideUtils.clickOnGuideElement('import-settings-cancel-button')()
799
804
  .then(() => resolve());
800
805
  }),
806
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
807
+ services.GuideUtils.deferredShow(300)()
808
+ .then(() => {
809
+ services.GuideUtils.waitFor(importSettingsButtonSelector, 3)
810
+ .then(() => {
811
+ resolve();
812
+ })
813
+ .catch((error) => {
814
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
815
+ reject(error);
816
+ });
817
+ });
818
+ }),
801
819
  onNextClick: () => GuideUtils.clickOnGuideElement('import-settings-import-button')(),
802
820
  canBePaused: false
803
821
  }, options)
@@ -808,10 +826,10 @@ PluginRegistry.add('guide.step', [
808
826
  content: 'guide.step_plugin.import_status_info.content',
809
827
  url: '/import',
810
828
  elementSelector: GuideUtils.getGuideElementSelector('import-status-info'),
811
- onPreviousClick: (guide) => new Promise(function (resolve) {
829
+ onPreviousClick: () => new Promise(function (resolve) {
812
830
  GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()
813
- .then(() => resolve())
814
- }),
831
+ .then(() => resolve());
832
+ })
815
833
  }, options)
816
834
  }
817
835
  ]);
@@ -960,6 +978,7 @@ PluginRegistry.add('guide.step', [
960
978
  const GuideUtils = services.GuideUtils;
961
979
  options.mainAction = 'select-repository';
962
980
 
981
+ let repositoryButtonSelector = GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-button`);
963
982
  return [{
964
983
  guideBlockName: 'clickable-element',
965
984
  options: angular.extend({}, {
@@ -972,8 +991,17 @@ PluginRegistry.add('guide.step', [
972
991
  guideBlockName: 'clickable-element',
973
992
  options: angular.extend({}, {
974
993
  content: 'guide.step_plugin.select-repository.content',
975
- elementSelector: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-button`),
976
- onNextClick: (guide) => GuideUtils.clickOnGuideElement(`repository-${options.repositoryId}-button`)().then(() => guide.next())
994
+ elementSelector: repositoryButtonSelector,
995
+ beforeShowPromise: () => new Promise(function (resolve, reject) {
996
+ services.GuideUtils.waitFor(repositoryButtonSelector, 1)
997
+ .then(() => resolve())
998
+ .catch((error) => {
999
+ services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
1000
+ reject(error);
1001
+ });
1002
+ }),
1003
+ onNextClick: (guide) => GuideUtils.clickOnGuideElement(`repository-${options.repositoryId}-button`)().then(() => guide.next()),
1004
+ canBePaused: false
977
1005
  }, options)
978
1006
  }
979
1007
  ];
@@ -1008,7 +1036,6 @@ PluginRegistry.add('guide.step', [
1008
1036
  guideBlockName: 'clickable-element',
1009
1037
  options: angular.extend({}, {
1010
1038
  content: 'guide.step-intro.table-graph',
1011
- skipPoint: true,
1012
1039
  scrollToHandler: GuideUtils.scrollToTop,
1013
1040
  elementSelector: GuideUtils.getSparqlResultsSelectorForIri(options.iri),
1014
1041
  onNextClick: (guide, step) => {
@@ -3,37 +3,37 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <title>Swagger UI</title>
6
- <link rel="icon" type="image/png" href="images/favicon-32x32.png?v=2.1.0-RC1" sizes="32x32"/>
7
- <link rel="icon" type="image/png" href="images/favicon-16x16.png?v=2.1.0-RC1" sizes="16x16"/>
8
- <link href='../../css/common.css?v=2.1.0-RC1' media='screen' rel='stylesheet' type='text/css'/>
9
- <link href='css/reset.css?v=2.1.0-RC1' media='screen' rel='stylesheet' type='text/css'/>
10
- <link href='css/screen.css?v=2.1.0-RC1' media='screen' rel='stylesheet' type='text/css'/>
11
- <link href='css/onto-theme.css?v=2.1.0-RC1' media='screen' rel='stylesheet' type='text/css'/>
12
- <link href='css/reset.css?v=2.1.0-RC1' media='print' rel='stylesheet' type='text/css'/>
13
- <link href='css/print.css?v=2.1.0-RC1' media='print' rel='stylesheet' type='text/css'/>
14
- <link href='css/onto-theme.css?v=2.1.0-RC1' media='print' rel='stylesheet' type='text/css'/>
6
+ <link rel="icon" type="image/png" href="images/favicon-32x32.png?v=2.1.0-RC2" sizes="32x32"/>
7
+ <link rel="icon" type="image/png" href="images/favicon-16x16.png?v=2.1.0-RC2" sizes="16x16"/>
8
+ <link href='../../css/common.css?v=2.1.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
9
+ <link href='css/reset.css?v=2.1.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
10
+ <link href='css/screen.css?v=2.1.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
11
+ <link href='css/onto-theme.css?v=2.1.0-RC2' media='screen' rel='stylesheet' type='text/css'/>
12
+ <link href='css/reset.css?v=2.1.0-RC2' media='print' rel='stylesheet' type='text/css'/>
13
+ <link href='css/print.css?v=2.1.0-RC2' media='print' rel='stylesheet' type='text/css'/>
14
+ <link href='css/onto-theme.css?v=2.1.0-RC2' media='print' rel='stylesheet' type='text/css'/>
15
15
 
16
- <script src='lib/object-assign-pollyfill.js?v=2.1.0-RC1' type='text/javascript'></script>
17
- <script src='lib/jquery-3.4.1.min.js?v=2.1.0-RC1' type='text/javascript'></script>
18
- <script src='lib/jquery.slideto.min.js?v=2.1.0-RC1' type='text/javascript'></script>
19
- <script src='lib/jquery.wiggle.min.js?v=2.1.0-RC1' type='text/javascript'></script>
16
+ <script src='lib/object-assign-pollyfill.js?v=2.1.0-RC2' type='text/javascript'></script>
17
+ <script src='lib/jquery-3.4.1.min.js?v=2.1.0-RC2' type='text/javascript'></script>
18
+ <script src='lib/jquery.slideto.min.js?v=2.1.0-RC2' type='text/javascript'></script>
19
+ <script src='lib/jquery.wiggle.min.js?v=2.1.0-RC2' type='text/javascript'></script>
20
20
 
21
- <script src="lib/jquery-migrate-1.4.1.min.js?v=2.1.0-RC1"></script>
22
- <script src='lib/jquery.ba-bbq.min.js?v=2.1.0-RC1' type='text/javascript'></script>
23
- <script src='lib/handlebars.min-v4.7.3.js?v=2.1.0-RC1' type='text/javascript'></script>
24
- <script src='lib/lodash.min.js?v=2.1.0-RC1' type='text/javascript'></script>
25
- <script src='lib/backbone-min.js?v=2.1.0-RC1' type='text/javascript'></script>
26
- <script src='swagger-ui.js?v=2.1.0-RC1' type='text/javascript'></script>
27
- <script src='lib/highlight.9.1.0.pack.js?v=2.1.0-RC1' type='text/javascript'></script>
28
- <script src='lib/highlight.9.1.0.pack_extended.js?v=2.1.0-RC1' type='text/javascript'></script>
29
- <script src='lib/jsoneditor.min.js?v=2.1.0-RC1' type='text/javascript'></script>
30
- <script src='lib/marked.js?v=2.1.0-RC1' type='text/javascript'></script>
31
- <script src='lib/swagger-oauth.js?v=2.1.0-RC1' type='text/javascript'></script>
21
+ <script src="lib/jquery-migrate-1.4.1.min.js?v=2.1.0-RC2"></script>
22
+ <script src='lib/jquery.ba-bbq.min.js?v=2.1.0-RC2' type='text/javascript'></script>
23
+ <script src='lib/handlebars.min-v4.7.3.js?v=2.1.0-RC2' type='text/javascript'></script>
24
+ <script src='lib/lodash.min.js?v=2.1.0-RC2' type='text/javascript'></script>
25
+ <script src='lib/backbone-min.js?v=2.1.0-RC2' type='text/javascript'></script>
26
+ <script src='swagger-ui.js?v=2.1.0-RC2' type='text/javascript'></script>
27
+ <script src='lib/highlight.9.1.0.pack.js?v=2.1.0-RC2' type='text/javascript'></script>
28
+ <script src='lib/highlight.9.1.0.pack_extended.js?v=2.1.0-RC2' type='text/javascript'></script>
29
+ <script src='lib/jsoneditor.min.js?v=2.1.0-RC2' type='text/javascript'></script>
30
+ <script src='lib/marked.js?v=2.1.0-RC2' type='text/javascript'></script>
31
+ <script src='lib/swagger-oauth.js?v=2.1.0-RC2' type='text/javascript'></script>
32
32
 
33
33
  <!-- Some basic translations -->
34
- <!-- <script src='lang/translator.js?v=2.1.0-RC1' type='text/javascript'></script> -->
35
- <!-- <script src='lang/ru.js?v=2.1.0-RC1' type='text/javascript'></script> -->
36
- <!-- <script src='lang/en.js?v=2.1.0-RC1' type='text/javascript'></script> -->
34
+ <!-- <script src='lang/translator.js?v=2.1.0-RC2' type='text/javascript'></script> -->
35
+ <!-- <script src='lang/ru.js?v=2.1.0-RC2' type='text/javascript'></script> -->
36
+ <!-- <script src='lang/en.js?v=2.1.0-RC2' type='text/javascript'></script> -->
37
37
 
38
38
  <script type="text/javascript">
39
39
  $(function () {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphdb-workbench",
3
- "version": "2.1.0-RC1",
3
+ "version": "2.1.0-RC2",
4
4
  "description": "The web application for GraphDB APIs",
5
5
  "scripts": {
6
6
  "build": "webpack --config=webpack.config.prod.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/repositories/repository.constants.js","webpack:///./src/js/angular/repositories/controllers.js"],"names":["STATIC_RULESETS","id","name","REPOSITORY_TYPES","graphdbRepo","free","eeWorker","eeMaster","ontop","se","fedx","FILENAME_PATTERN","RegExp","NUMBER_PATTERN","getFileName","path","lastIdx","lastIndexOf","substring","parseNumberParamsIfNeeded","params","queryTimeout","value","parseInt","queryLimitResults","validationResultsLimitTotal","validationResultsLimitPerConstraint","leftJoinWorkerThreads","boundJoinBlockSize","joinWorkerThreads","unionWorkerThreads","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","validateNumberFields","invalidValues","isInvalidQueryTimeout","test","isInvalidValidationResultsLimitTotal","isInvalidValidationResultsLimitPerConstraint","isInvalidQueryLimit","isInvalidLeftJoinWorkerThreads","isInvalidBoundJoinBlockSize","isInvalidJoinWorkerThreads","isInvalidUnionWorkerThreads","getInvalidParameterErrorMessage","param","$translate","instant","checkInvalidValues","invalidValuesKeys","Object","keys","invalidValuesVal","values","i","length","getDocBase","productInfo","productShortVersion","getFilteredLocations","$repositories","getLocations","then","locations","filter","location","errorMsg","degradedReason","LocationsAndRepositoriesCtrl","$scope","$rootScope","$modal","toastr","ModalService","$jwtAuth","LocationsRestService","LocalStorageAdapter","$interval","$q","GuidesService","loader","isLocationInactive","active","hasActiveLocation","getLocationsAbortRequestPromise","defer","finally","getActiveLocation","getLocationError","getDegradedReason","getRepositories","isRepoActive","repo","deleteLocation","uri","openSimpleModal","title","message","warning","result","addLocationHttp","dataAddLocation","addLocation","success","init","error","data","msg","getError","open","templateUrl","windowClass","controller","editLocationHttp","dataEditLocation","editLocation","resolve","setRepository","deleteRepository","repository","repositoryId","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","angular","forEach","key","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","url","type","token","getAuthToken","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","isActive","guidePaused","initQuick","$on","cancel","getRepositoriesFromLocation","locationId","UploadRepositoryConfigCtrl","$modalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","copy","ChooseRepositoryCtrl","$location","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","repositoryType","rulesets","slice","enable","pageTitle","repositoryInfo","changedLocation","$broadcast","getConfig","getRepositoryConfiguration","member","element","find","focus","isEnterprise","isValidEERepository","isFreeEdition","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","setPageTitle","activeLocation","isInvalidPieFile","uploadRuleset","ruleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","isDefined","previous","$$search","createRepoHttp","createRepository","repoId","catch","createRepo","isInvalidRepoName","rulesetWarning","pp","undefined","disableSameAs","validateNumberInput","autofocusId","EditRepositoryFileCtrl","file","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","editRepoPage","canEditRepoId","restartRequested","saveRepoId","$watch","getRepository","response","ifRulesetExists","item","setRepositoryType","saveId","status","toastrMsg","allowHtml","setTimeout","editRepoHttp","editRepository","modalMsg","editRepositoryId","module","$inject"],"mappings":"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","file":"5.53c0a20d56d6828fa504.bundle.js","sourcesContent":["export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {graphdbRepo: 'graphdb', free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPOSITORY_TYPES,\n STATIC_RULESETS\n} from \"./repository.constants\";\nimport {decodeHTML} from \"../../../app\";\n\nexport const getFileName = function (path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function (params) {\n if (params) {\n if (params.queryTimeout) {\n params.queryTimeout.value = parseInt(params.queryTimeout.value);\n }\n if (params.queryLimitResults && params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint) {\n // Parse parameters properly to number\n params.queryLimitResults.value = parseInt(params.queryLimitResults.value);\n params.validationResultsLimitTotal.value = parseInt(params.validationResultsLimitTotal.value);\n params.validationResultsLimitPerConstraint.value = parseInt(params.validationResultsLimitPerConstraint.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads && params.unionWorkerThreads) {\n params.leftJoinWorkerThreads.value = parseInt(params.leftJoinWorkerThreads.value);\n params.boundJoinBlockSize.value = parseInt(params.boundJoinBlockSize.value);\n params.joinWorkerThreads.value = parseInt(params.joinWorkerThreads.value);\n params.unionWorkerThreads.value = parseInt(params.unionWorkerThreads.value);\n }\n }\n};\n\nconst parseMemberParamIfNeeded = function (param) {\n if (param && param.member) {\n param.member.value = [];\n }\n};\n\nconst getShaclOptionsClass = function () {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n};\n\nconst validateNumberFields = function (params, invalidValues) {\n if (params.queryTimeout) {\n invalidValues.isInvalidQueryTimeout = !NUMBER_PATTERN.test(params.queryTimeout.value);\n }\n if (params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint && params.queryLimitResults) {\n invalidValues.isInvalidValidationResultsLimitTotal = !NUMBER_PATTERN.test(params.validationResultsLimitTotal.value);\n invalidValues.isInvalidValidationResultsLimitPerConstraint = !NUMBER_PATTERN.test(params.validationResultsLimitPerConstraint.value);\n invalidValues.isInvalidQueryLimit = !NUMBER_PATTERN.test(params.queryLimitResults.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads\n && params.unionWorkerThreads) {\n invalidValues.isInvalidLeftJoinWorkerThreads = !NUMBER_PATTERN.test(params.leftJoinWorkerThreads.value);\n invalidValues.isInvalidBoundJoinBlockSize = !NUMBER_PATTERN.test(params.boundJoinBlockSize.value);\n invalidValues.isInvalidJoinWorkerThreads = !NUMBER_PATTERN.test(params.joinWorkerThreads.value);\n invalidValues.isInvalidUnionWorkerThreads = !NUMBER_PATTERN.test(params.unionWorkerThreads.value);\n }\n};\n\nconst getInvalidParameterErrorMessage = function (param, $translate) {\n if (param === \"isInvalidQueryLimit\") {\n return $translate.instant('invalid.query.limit');\n } else if (param === \"isInvalidQueryTimeout\") {\n return $translate.instant('invalid.query.timeout');\n } else if (param === \"isInvalidValidationResultsLimitTotal\") {\n return $translate.instant('invalid.validation.results.limit.total');\n } else if (param === \"isInvalidValidationResultsLimitPerConstraint\") {\n return $translate.instant('invalid.validation.results.limit.per.constraint');\n } else if (param === \"isInvalidJoinWorkerThreads\") {\n return $translate.instant('invalid.join.worker.threads');\n } else if (param === \"isInvalidLeftJoinWorkerThreads\") {\n return $translate.instant('invalid.left.join.worker.threads');\n } else if (param === \"isInvalidUnionWorkerThreads\") {\n return $translate.instant('invalid.union.worker.threads');\n } else if (param === \"isInvalidBoundJoinBlockSize\") {\n return $translate.instant('invalid.bound.join.block.size');\n }\n};\n\nconst checkInvalidValues = function (invalidValues, $translate) {\n const invalidValuesKeys = Object.keys(invalidValues);\n const invalidValuesVal = Object.values(invalidValues);\n\n for (let i = 0; i < invalidValuesKeys.length; i++) {\n if (invalidValuesVal[i]) {\n return getInvalidParameterErrorMessage(invalidValuesKeys[i], $translate);\n }\n }\n return '';\n};\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}`;\n};\nconst filterLocations = function (result) {\n return result.filter((location) => !location.errorMsg && !location.degradedReason);\n};\n\n/**\n * Gets the remote locations that are error free and without degraded reason\n * @param {*} $repositories the repositories service\n * @return {[] | Promise} returns the locations as array or a promise of the array\n */\nconst getFilteredLocations = function ($repositories) {\n // Don't allow the user to create repository on location with error or degradeded reason\n return $repositories.getLocations().then((locations) => filterLocations(locations));\n};\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload'\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$rootScope', '$modal', 'toastr', '$repositories', 'ModalService', '$jwtAuth', 'LocationsRestService',\n 'LocalStorageAdapter', '$interval', '$translate', '$q', 'GuidesService'];\n\nfunction LocationsAndRepositoriesCtrl($scope, $rootScope, $modal, toastr, $repositories, ModalService, $jwtAuth, LocationsRestService,\n LocalStorageAdapter, $interval, $translate, $q, GuidesService) {\n $scope.loader = true;\n\n $scope.isLocationInactive = function (location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n const getLocationsAbortRequestPromise = $q.defer();\n //Get locations\n function getLocations() {\n return $repositories.getLocations(getLocationsAbortRequestPromise)\n .then((locations) => {\n $scope.locations = locations;\n })\n .finally(() => $scope.loader = false);\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function () {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function () {\n return $repositories.getRepositories();\n };\n\n $scope.isRepoActive = function (repo) {\n return $repositories.isRepoActive(repo);\n };\n\n //Delete location\n $scope.deleteLocation = function (uri) {\n ModalService.openSimpleModal({\n title: $translate.instant('location.confirm.detach'),\n message: $translate.instant('location.confirm.detach.warning', {uri: uri}),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteLocation(uri).finally(() => getLocations());\n });\n };\n\n //Add new location\n\n $scope.addLocationHttp = function (dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function () {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.addLocation = function () {\n $modal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationCtrl'\n }).result\n .then(function (dataAddLocation) {\n $scope.addLocationHttp(dataAddLocation);\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function (dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function () {\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => getLocations());\n };\n\n $scope.editLocation = function (location) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/edit-location.html',\n controller: 'EditLocationCtrl',\n resolve: {\n location: function () {\n return location;\n }\n }\n });\n\n modalInstance.result.then(function (dataEditLocation) {\n $scope.editLocationHttp(dataEditLocation);\n }, function () {\n });\n };\n\n //Change repository\n $scope.setRepository = function (repo) {\n $repositories.setRepository(repo);\n };\n\n //Delete repository\n $scope.deleteRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: decodeHTML($translate.instant('delete.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteRepository(repository).finally(() => {\n getLocations();\n });\n removeCachedGraphsOnDelete(repository);\n });\n };\n\n $scope.restartRepository = function (repository) {\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.restart.repo'),\n message: decodeHTML($translate.instant('confirm.restart.repo.warning.msg', {repositoryId: repository.id})),\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.restartRepository(repository).finally(() => getLocations());\n });\n };\n\n $scope.toggleDefaultRepository = function (repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function () {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function (repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/download-zip'\n : '/download-ttl')}?location=${repository.location}`;\n const token = $jwtAuth.getAuthToken();\n if (token) {\n url = `${url}&authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl'\n });\n modalInstance.result.then(function () {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function () {\n $modal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl'\n });\n };\n\n getLocations();\n const timer = $interval(function () {\n if (GuidesService.isActive() && !$rootScope.guidePaused) {\n // Don't refresh list while a guide is active\n return;\n }\n\n // Update repositories state\n $repositories.initQuick();\n getLocations();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n // If there is a getLocations request in progress, abort it so the service can properly clear flags\n if (getLocationsAbortRequestPromise) {\n getLocationsAbortRequestPromise.resolve();\n }\n });\n\n function removeCachedGraphsOnDelete(repo) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repo.id}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repo.id}`;\n angular.forEach(LocalStorageAdapter.keys(), function (key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n $scope.getRepositoriesFromLocation = function (locationId) {\n return $repositories.getRepositoriesFromLocation(locationId);\n };\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$modalInstance', 'Upload', 'toastr', '$translate'];\n\nfunction UploadRepositoryConfigCtrl($scope, $modalInstance, Upload, toastr, $translate) {\n $scope.upload = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function () {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile}\n })\n .success(function () {\n $scope.uploadFileLoader = false;\n $modalInstance.close();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$modalInstance', 'toastr', 'productInfo', '$translate'];\n\nfunction AddLocationCtrl($scope, $modalInstance, toastr, productInfo, $translate) {\n\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error($translate.instant('location.cannot.be.empty.error'));\n return;\n }\n $modalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$modalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $modalInstance, location, productInfo) {\n\n $scope.editedLocation = angular.copy(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function () {\n $modalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location'];\n\nfunction ChooseRepositoryCtrl($scope, $location) {\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.chooseRepositoryType = function (repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', '$routeParams',\n 'RepositoriesRestService', '$translate'];\n\nfunction AddRepositoryCtrl($scope, toastr, $repositories, $location, $timeout, Upload, $routeParams, RepositoriesRestService, $translate) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n\n $scope.loader = true;\n $scope.pageTitle = $translate.instant('view.create.repo.title');\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: '',\n location: ''\n };\n\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n\n getFilteredLocations($repositories)\n .then((locations) => {\n $scope.locations = locations;\n });\n\n $scope.changedLocation = function () {\n $scope.$broadcast('changedLocation');\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise() && (repositoryType === REPOSITORY_TYPES.graphdbRepo);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition() && !$scope.isEnterprise() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition() && repositoryType === REPOSITORY_TYPES.graphdbRepo;\n }\n\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.graphdbRepo:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'GraphDB'});\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'Ontop Virtual SPARQL'});\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = $translate.instant('view.create.repo.title', {repoType: 'FedX Virtual SPARQL'});\n break;\n }\n }\n\n $scope.getConfig = function (repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).success(function (data) {\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function () {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/ruleset/upload',\n data: {ruleset: $scope.uploadFile, location: $scope.repositoryInfo.location}\n }).progress(function (evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n } else {\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo)\n .then(function () {\n toastr.success($translate.instant('created.repo.success.msg', {repoId: $scope.repositoryInfo.id}));\n $repositories.init().finally(() => $scope.goBackToPreviousLocation());\n })\n .catch(function (error) {\n const msg = getError(error.data);\n toastr.error(msg, $translate.instant('common.error'));\n })\n .finally(() => $scope.loader = false);\n };\n\n $scope.createRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error($translate.instant('empty.repoid.warning'));\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n\n if (isInvalidPieFile) {\n toastr.error($translate.instant('invalid.ruleset.file.error'));\n } else if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function () {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return $translate.instant('repoTooltips.rulesetWarnings.needsSameAs');\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return $translate.instant('repoTooltips.rulesetWarnings.doesntNeedSameAs');\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return $translate.instant('repoTooltips.rulesetWarnings.customRuleset');\n } else {\n return '';\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$modalInstance', 'RepositoriesRestService', 'file', 'toastr', '$translate'];\n\nfunction EditRepositoryFileCtrl($scope, $modalInstance, RepositoriesRestService, file, toastr, $translate) {\n\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file).success(function (data) {\n $scope.fileContent = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n }\n\n $scope.ok = function () {\n $modalInstance.close({\n content: $scope.fileContent,\n fileLocation: file\n });\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'RepositoriesRestService',\n '$translate'];\n\nfunction EditRepositoryCtrl($scope, $routeParams, toastr, $repositories, $location, ModalService, RepositoriesRestService, $translate) {\n\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.location = $scope.params.location;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = $translate.instant('view.edit.repo.title', {repositoryId: $scope.params.repositoryId});\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads: false,\n isInvalidUnionWorkerThreads: false,\n isInvalidValidationResultsLimitPerConstraint: false,\n isInvalidValidationResultsLimitTotal: false\n };\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.$watch($scope.hasActiveLocation, function () {\n if ($scope.hasActiveLocation) {\n // Should get locations before getting repository info\n getFilteredLocations($repositories).then((locations) => {\n $scope.locations = locations;\n return RepositoriesRestService.getRepository($scope.repositoryInfo);\n })\n .then(function (response) {\n const data = response.data;\n if (angular.isDefined(data.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function (item) {\n if (item.id === data.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (data.params.ruleset && !ifRulesetExists) {\n const name = getFileName(data.params.ruleset.value);\n $scope.rulesets.unshift({id: data.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = data;\n $scope.setRepositoryType(data.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n })\n .catch(function (response) {\n const data = response.data;\n const status = response.status;\n const repositoryId = $routeParams.repositoryId;\n let toastrMsg;\n\n if (status === 404 && repositoryId !== 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.repo.error.not.exists', {repositoryId}));\n } else if (status === 404 && repositoryId === 'system') {\n toastrMsg = decodeHTML($translate.instant('edit.system.repo.warning'));\n } else {\n toastrMsg = getError(data);\n }\n\n toastr.error(toastrMsg, $translate.instant('common.error'), {allowHtml: true});\n\n if (status === 404) {\n setTimeout(function () {\n $scope.loader = false;\n $location.path('repository');\n }, 1000);\n } else {\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function (type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function () {\n toastr.error($translate.instant('fedx.create.repo.no.members.warning'));\n };\n\n $scope.editRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function () {\n toastr.success($translate.instant('edit.repo.success.msg', {saveId: $scope.repositoryInfo.saveId}));\n $repositories.init().finally(() => $scope.goBackToPreviousLocation());\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo.id);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n\n $scope.editRepository = function () {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues, $translate);\n let modalMsg = decodeHTML($translate.instant('edit.repo.save.changes.msg', {repoId: $scope.repositoryInfo.id}));\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += decodeHTML($translate.instant('edit.repo.rename.changes.msg'));\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.requested.msg'));\n } else {\n modalMsg += decodeHTML($translate.instant('edit.repo.restart.needed.msg'));\n }\n if ($scope.isInvalidRepoName) {\n toastr.error($translate.instant('wrong.repo.name.error'));\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.save'),\n message: modalMsg,\n warning: true\n }).result\n .then(function () {\n $scope.editRepoHttp();\n });\n }\n };\n\n $scope.editRepositoryId = function () {\n let msg = decodeHTML($translate.instant('edit.repo.id.warning.msg'));\n if ($scope.isEnterprise()) {\n msg += decodeHTML($translate.instant('edit.repo.id.cluster.warning.msg'));\n }\n ModalService.openSimpleModal({\n title: $translate.instant('confirm.enable.edit'),\n message: msg,\n warning: true\n }).result.then(function () {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n };\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n };\n}\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[73],{114:function(e,t){PluginRegistry.add("guide.step",[{guideBlockName:"enable-autocomplete",getSteps:(e,t)=>{const o=t.GuideUtils;return e.mainAction="enable-autocomplete",[{guideBlockName:"click-main-menu",options:angular.extend({},{menu:"autocomplete",showIntro:!0},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.enable-autocomplete.content",url:"/autocomplete",elementSelector:o.getGuideElementSelector("autocompleteCheckbox"),onNextClick:e=>{o.waitFor(o.getGuideElementSelector("autocompleteCheckbox"," input"),3,!1).then(e=>{e.is(":checked")||o.clickOnGuideElement("autocompleteCheckbox")()}),e.next()}},e)},{guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.enable-autocomplete.status_info.content",url:"/autocomplete",elementSelector:o.getGuideElementSelector("autocompleteStatus")},e)}]}}])}}]);
2
- //# sourceMappingURL=73.cc31681a2d4d7c0fe2ba.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/guides/steps/complex/enable-autocomplete/plugin.js"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","mainAction","angular","extend","menu","showIntro","content","url","elementSelector","getGuideElementSelector","onNextClick","guide","waitFor","then","autocompleteCheckbox","is","clickOnGuideElement","next"],"mappings":"4EAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,sBAChBC,SAAU,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAG5B,OAFAF,EAAQG,WAAa,sBAEd,CACH,CACIL,eAAgB,kBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBC,KAAM,eACNC,WAAW,GACZP,IACJ,CACHF,eAAgB,oBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBG,QAAS,gDACTC,IAAK,gBACLC,gBAAiBR,EAAWS,wBAAwB,wBACpDC,YAAcC,IACVX,EAAWY,QAAQZ,EAAWS,wBAAwB,uBAAwB,UAAW,GAAG,GACvFI,KAAKC,IACGA,EAAqBC,GAAG,aACzBf,EAAWgB,oBAAoB,uBAA/BhB,KAGZW,EAAMM,SAEXnB,IAEH,CACIF,eAAgB,oBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBG,QAAS,4DACTC,IAAK,gBACLC,gBAAiBR,EAAWS,wBAAwB,uBACrDX","file":"73.cc31681a2d4d7c0fe2ba.bundle.js","sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'enable-autocomplete',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'enable-autocomplete';\n\n return [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'autocomplete',\n showIntro: true\n }, options)\n }, {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.enable-autocomplete.content',\n url: '/autocomplete',\n elementSelector: GuideUtils.getGuideElementSelector('autocompleteCheckbox'),\n onNextClick: (guide) => {\n GuideUtils.waitFor(GuideUtils.getGuideElementSelector('autocompleteCheckbox', ' input'), 3, false)\n .then(autocompleteCheckbox => {\n if (!autocompleteCheckbox.is(':checked')) {\n GuideUtils.clickOnGuideElement('autocompleteCheckbox')();\n }\n });\n guide.next();\n }\n }, options)\n },\n {\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.enable-autocomplete.status_info.content',\n url: '/autocomplete',\n elementSelector: GuideUtils.getGuideElementSelector('autocompleteStatus')\n }, options)\n }\n ]\n }\n }\n]);\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[75],{116:function(e,t){PluginRegistry.add("guide.step",[{guideBlockName:"import-rdf-file",getSteps:(e,t)=>{const i=t.GuideUtils,n=t.toastr,o=t.$translate,l=t.$interpolate;e.mainAction="import-file";const r=[{guideBlockName:"click-main-menu",options:angular.extend({},{menu:"import",showIntro:!0},e)}];return e.resourcePath&&r.push({guideBlockName:"download-guide-resource",options:angular.extend({},{title:""},e)}),r.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.content",url:"/import",elementSelector:i.getGuideElementSelector("uploadRdfFileButton"),onNextValidate:()=>!!$(i.getGuideElementSelector("import-file-"+e.resourceFile)).length||(i.noNextErrorToast(n,o,l,"guide.step_plugin.import_rdf_file.file-must-be-uploaded",e),!1)},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.import-file.button.content",elementSelector:i.getGuideElementSelector("import-file-"+e.resourceFile),url:"/import",placement:"left",onNextClick:()=>i.clickOnGuideElement("import-file-"+e.resourceFile)()},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.import_rdf_file.import-settings.import.button.content",elementSelector:i.getGuideElementSelector("import-settings-import-button"),placement:"top",onPreviousClick:e=>new Promise((function(e){i.clickOnGuideElement("import-settings-cancel-button")().then(()=>e())})),onNextClick:()=>i.clickOnGuideElement("import-settings-import-button")(),canBePaused:!1},e)},{guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.import_status_info.content",url:"/import",elementSelector:i.getGuideElementSelector("import-status-info"),onPreviousClick:t=>new Promise((function(t){i.clickOnGuideElement("import-file-"+e.resourceFile)().then(()=>t())}))},e)}),r}}])}}]);
2
- //# sourceMappingURL=75.f3535bf8818b4fe6d4ba.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/guides/steps/complex/import-rdf-file/plugin.js"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","toastr","$translate","$interpolate","mainAction","steps","angular","extend","menu","showIntro","resourcePath","push","title","content","url","elementSelector","getGuideElementSelector","onNextValidate","$","resourceFile","length","noNextErrorToast","placement","onNextClick","clickOnGuideElement","onPreviousClick","guide","Promise","resolve","then","canBePaused"],"mappings":"4EAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,kBAChBC,SAAU,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WACtBC,EAASF,EAASE,OAClBC,EAAaH,EAASG,WACtBC,EAAeJ,EAASI,aAC9BL,EAAQM,WAAa,cAErB,MAAMC,EAAQ,CACV,CACIT,eAAgB,kBAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBC,KAAM,SACNC,WAAW,GACZX,KAuEX,OAnEIA,EAAQY,cACRL,EAAMM,KACF,CACIf,eAAgB,0BAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBK,MAAO,IACRd,KAKfO,EAAMM,KACF,CACIf,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBM,QAAS,4CACTC,IAAK,UACLC,gBAAiBf,EAAWgB,wBAAwB,uBACpDC,eAAgB,MACPC,EAAElB,EAAWgB,wBAAwB,eAAiBlB,EAAQqB,eAAeC,SAC9EpB,EAAWqB,iBAAiBpB,EAAQC,EAAYC,EAC5C,0DAA2DL,IACxD,IAKhBA,IAEP,CACIF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBM,QAAS,+DACTE,gBAAiBf,EAAWgB,wBAAwB,eAAiBlB,EAAQqB,cAC7EL,IAAK,UACLQ,UAAW,OACXC,YAAa,IAAMvB,EAAWwB,oBAAoB,eAAiB1B,EAAQqB,aAAxDnB,IACpBF,IAEP,CACIF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBM,QAAS,0EACTE,gBAAiBf,EAAWgB,wBAAwB,iCACpDM,UAAW,MACXG,gBAAkBC,GAAU,IAAIC,SAAQ,SAAUC,GAC9C5B,EAAWwB,oBAAoB,gCAA/BxB,GACK6B,KAAK,IAAMD,QAEpBL,YAAa,IAAMvB,EAAWwB,oBAAoB,gCAA/BxB,GACnB8B,aAAa,GACdhC,IAEP,CACIF,eAAgB,oBAChBE,QAASQ,QAAQC,OAAO,GAAI,CACxBM,QAAS,+CACTC,IAAK,UACLC,gBAAiBf,EAAWgB,wBAAwB,sBACpDS,gBAAkBC,GAAU,IAAIC,SAAQ,SAAUC,GAC9C5B,EAAWwB,oBAAoB,eAAiB1B,EAAQqB,aAAxDnB,GACK6B,KAAK,IAAMD,SAErB9B,KAIJO","file":"75.f3535bf8818b4fe6d4ba.bundle.js","sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'import-rdf-file',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n const toastr = services.toastr;\n const $translate = services.$translate;\n const $interpolate = services.$interpolate;\n options.mainAction = 'import-file';\n\n const steps = [\n {\n guideBlockName: 'click-main-menu',\n options: angular.extend({}, {\n menu: 'import',\n showIntro: true\n }, options)\n }\n ];\n\n if (options.resourcePath) {\n steps.push(\n {\n guideBlockName: 'download-guide-resource',\n options: angular.extend({}, {\n title: ''\n }, options)\n }\n );\n }\n\n steps.push(...[\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.content',\n url: '/import',\n elementSelector: GuideUtils.getGuideElementSelector('uploadRdfFileButton'),\n onNextValidate: () => {\n if (!$(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile)).length) {\n GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,\n 'guide.step_plugin.import_rdf_file.file-must-be-uploaded', options);\n return false;\n } else {\n return true;\n }\n }\n }, options)\n },\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.import-file.button.content',\n elementSelector: GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile),\n url: '/import',\n placement: 'left',\n onNextClick: () => GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()\n }, options)\n },\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_rdf_file.import-settings.import.button.content',\n elementSelector: GuideUtils.getGuideElementSelector('import-settings-import-button'),\n placement: 'top',\n onPreviousClick: (guide) => new Promise(function (resolve) {\n GuideUtils.clickOnGuideElement('import-settings-cancel-button')()\n .then(() => resolve());\n }),\n onNextClick: () => GuideUtils.clickOnGuideElement('import-settings-import-button')(),\n canBePaused: false\n }, options)\n },\n {\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.import_status_info.content',\n url: '/import',\n elementSelector: GuideUtils.getGuideElementSelector('import-status-info'),\n onPreviousClick: (guide) => new Promise(function (resolve) {\n GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()\n .then(() => resolve())\n }),\n }, options)\n }\n ]);\n\n return steps;\n }\n }\n]);\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[77],{118:function(e,t){PluginRegistry.add("guide.step",[{guideBlockName:"select-repository-dropdown",getSteps:(e,t)=>{const o=t.GuideUtils;return e.mainAction="select-repository",[{guideBlockName:"clickable-element",options:angular.extend({},{skipPoint:!0,content:"guide.step_plugin.choose-repository.content",elementSelector:o.getGuideElementSelector("repositoriesGroupButton"),onNextClick:e=>o.clickOnGuideElement("repositoriesGroupButton")().then(()=>e.next())},e)},{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.select-repository.content",elementSelector:o.getGuideElementSelector(`repository-${e.repositoryId}-button`),onNextClick:t=>o.clickOnGuideElement(`repository-${e.repositoryId}-button`)().then(()=>t.next())},e)}]}},{guideBlockName:"select-repository-plug",getSteps:(e,t)=>{const o=t.GuideUtils;return[{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.select-repository-plug.content",elementSelector:o.getGuideElementSelector(`repository-${e.repositoryId}-plug`),onNextClick:o.getGuideElementSelector(`repository-${e.repositoryId}-plug`)},e)}]}}])}}]);
2
- //# sourceMappingURL=77.4c80919e2b84b3b99cb9.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/guides/steps/complex/select-repository/plugin.js"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","mainAction","angular","extend","skipPoint","content","elementSelector","getGuideElementSelector","onNextClick","guide","clickOnGuideElement","then","next","repositoryId"],"mappings":"4EAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,6BAChBC,SAAU,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAG5B,OAFAF,EAAQG,WAAa,oBAEd,CAAC,CACJL,eAAgB,oBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBC,WAAW,EACXC,QAAS,8CACTC,gBAAiBN,EAAWO,wBAAwB,2BACpDC,YAAcC,GAAUT,EAAWU,oBAAoB,0BAA/BV,GAA4DW,KAAK,IAAMF,EAAMG,SACtGd,IACJ,CACCF,eAAgB,oBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBE,QAAS,8CACTC,gBAAiBN,EAAWO,wBAAwB,cAAcT,EAAQe,uBAC1EL,YAAcC,GAAUT,EAAWU,oBAAoB,cAAcZ,EAAQe,sBAArDb,GAA8EW,KAAK,IAAMF,EAAMG,SACxHd,OAKf,CACIF,eAAgB,yBAChBC,SAAU,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5B,MAAO,CAAC,CACJJ,eAAgB,oBAChBE,QAASI,QAAQC,OAAO,GAAI,CACxBE,QAAS,mDACTC,gBAAiBN,EAAWO,wBAAwB,cAAcT,EAAQe,qBAC1EL,YAAaR,EAAWO,wBAAwB,cAAcT,EAAQe,sBACvEf","file":"77.4c80919e2b84b3b99cb9.bundle.js","sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'select-repository-dropdown',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'select-repository';\n\n return [{\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n skipPoint: true,\n content: 'guide.step_plugin.choose-repository.content',\n elementSelector: GuideUtils.getGuideElementSelector('repositoriesGroupButton'),\n onNextClick: (guide) => GuideUtils.clickOnGuideElement('repositoriesGroupButton')().then(() => guide.next())\n }, options)\n }, {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.select-repository.content',\n elementSelector: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-button`),\n onNextClick: (guide) => GuideUtils.clickOnGuideElement(`repository-${options.repositoryId}-button`)().then(() => guide.next())\n }, options)\n }\n ];\n }\n },\n {\n guideBlockName: 'select-repository-plug',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n return [{\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.select-repository-plug.content',\n elementSelector: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`),\n onNextClick: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`)\n }, options)\n }\n ];\n }\n }\n]);\n"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[78],{119:function(e,t){PluginRegistry.add("guide.step",[{guideBlockName:"table-graph-explore",getSteps:(e,t)=>{const l=t.GuideUtils;e.mainAction="table-graph";const n=[{guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step-intro.table-graph",skipPoint:!0,scrollToHandler:l.scrollToTop,elementSelector:l.getSparqlResultsSelectorForIri(e.iri),onNextClick:(e,t)=>{l.waitFor(t.elementSelector,3).then(()=>$(t.elementSelector).trigger("click")).then(()=>e.next())}},e)},{guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.table-graph-overview",scrollToHandler:l.scrollToTop,elementSelector:l.getSparqlResultsSelector(),placement:"top"},e)}];return angular.isArray(e.subSteps)&&e.subSteps.forEach(t=>{"link"===t.type?n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.table-graph-link",elementSelector:l.getSparqlResultsSelectorForIri(t.iri),onNextClick:(e,t)=>{l.waitFor(t.elementSelector,3).then(()=>$(t.elementSelector).trigger("click")).then(()=>e.next())}},angular.extend({},e,t))}):"role"===t.type?n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.table-graph-role",elementSelector:l.getGuideElementSelector("role-"+t.role),onNextClick:(e,t)=>{l.waitFor(t.elementSelector,3).then(()=>$(t.elementSelector).trigger("click")).then(()=>e.next())}},angular.extend({},e,t))}):"visual"===t.type?(n.push({guideBlockName:"clickable-element",options:angular.extend({},{content:"guide.step_plugin.table-graph-visual",elementSelector:l.getGuideElementSelector("explore-visual"),onNextClick:(e,t)=>{l.waitFor(t.elementSelector,3).then(()=>$(t.elementSelector).trigger("click"))}},angular.extend({},e,t))}),n.push({guideBlockName:"read-only-element",options:angular.extend({},{content:"guide.step_plugin.visual_graph_intro.content",extraContent:t.extraContentVisualIntro,url:"/graphs-visualizations",elementSelector:".graph-visualization",placement:"left",canBePaused:!1,forceReload:!0,onNextClick:(e,t)=>{window.history.back(),e.next()}},angular.extend({},e,t))})):"row"===t.type?n.push({guideBlockName:"read-only-element",options:angular.extend({},{elementSelector:l.getSparqlResultsSelectorForRow(t.row)},angular.extend({},e,t))}):"table"===t.type&&n.push({guideBlockName:"read-only-element",options:angular.extend({},{elementSelector:l.getSparqlResultsSelector()},angular.extend({},e,t))})}),n}}])}}]);
2
- //# sourceMappingURL=78.be1f229c9fa413560a77.bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/guides/steps/complex/table-graph/plugin.js"],"names":["PluginRegistry","add","guideBlockName","getSteps","options","services","GuideUtils","mainAction","steps","angular","extend","content","skipPoint","scrollToHandler","scrollToTop","elementSelector","getSparqlResultsSelectorForIri","iri","onNextClick","guide","step","waitFor","then","$","trigger","next","getSparqlResultsSelector","placement","isArray","subSteps","forEach","subStep","type","push","getGuideElementSelector","role","extraContent","extraContentVisualIntro","url","canBePaused","forceReload","window","history","back","getSparqlResultsSelectorForRow","row"],"mappings":"4EAAAA,eAAeC,IAAI,aAAc,CAC7B,CACIC,eAAgB,sBAChBC,SAAU,CAACC,EAASC,KAChB,MAAMC,EAAaD,EAASC,WAC5BF,EAAQG,WAAa,cAErB,MAAMC,EAAQ,CACV,CACIN,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,+BACTC,WAAW,EACXC,gBAAiBP,EAAWQ,YAC5BC,gBAAiBT,EAAWU,+BAA+BZ,EAAQa,KACnEC,YAAa,CAACC,EAAOC,KACjBd,EAAWe,QAAQD,EAAKL,gBAAiB,GACpCO,KAAK,IAAMC,EAAEH,EAAKL,iBAAiBS,QAAQ,UAC3CF,KAAK,IAAMH,EAAMM,UAE3BrB,IACJ,CACCF,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,yCACTE,gBAAiBP,EAAWQ,YAC5BC,gBAAiBT,EAAWoB,2BAC5BC,UAAW,OACZvB,KA8EX,OA1EIK,QAAQmB,QAAQxB,EAAQyB,WACxBzB,EAAQyB,SAASC,QAASC,IACD,SAAjBA,EAAQC,KACRxB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,qCACTI,gBAAiBT,EAAWU,+BAA+Be,EAAQd,KACnEC,YAAa,CAACC,EAAOC,KACjBd,EAAWe,QAAQD,EAAKL,gBAAiB,GACpCO,KAAK,IAAMC,EAAEH,EAAKL,iBAAiBS,QAAQ,UAC3CF,KAAK,IAAMH,EAAMM,UAE3BhB,QAAQC,OAAO,GAAIN,EAAS2B,MAEX,SAAjBA,EAAQC,KACfxB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,qCACTI,gBAAiBT,EAAW4B,wBAAwB,QAAUH,EAAQI,MACtEjB,YAAa,CAACC,EAAOC,KACjBd,EAAWe,QAAQD,EAAKL,gBAAiB,GACpCO,KAAK,IAAMC,EAAEH,EAAKL,iBAAiBS,QAAQ,UAC3CF,KAAK,IAAMH,EAAMM,UAE3BhB,QAAQC,OAAO,GAAIN,EAAS2B,MAEX,WAAjBA,EAAQC,MACfxB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,uCACTI,gBAAiBT,EAAW4B,wBAAwB,kBACpDhB,YAAa,CAACC,EAAOC,KACjBd,EAAWe,QAAQD,EAAKL,gBAAiB,GACpCO,KAAK,IAAMC,EAAEH,EAAKL,iBAAiBS,QAAQ,YAErDf,QAAQC,OAAO,GAAIN,EAAS2B,MAEnCvB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBC,QAAS,+CACTyB,aAAcL,EAAQM,wBACtBC,IAAK,yBACLvB,gBAAiB,uBACjBY,UAAW,OACXY,aAAa,EACbC,aAAa,EACbtB,YAAa,CAACC,EAAOC,KACjBqB,OAAOC,QAAQC,OACfxB,EAAMM,SAEXhB,QAAQC,OAAO,GAAIN,EAAS2B,OAEX,QAAjBA,EAAQC,KACfxB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBK,gBAAiBT,EAAWsC,+BAA+Bb,EAAQc,MACpEpC,QAAQC,OAAO,GAAIN,EAAS2B,MAEX,UAAjBA,EAAQC,MACfxB,EAAMyB,KAAK,CACP/B,eAAgB,oBAChBE,QAASK,QAAQC,OAAO,GAAI,CACxBK,gBAAiBT,EAAWoB,4BAC7BjB,QAAQC,OAAO,GAAIN,EAAS2B,QAMxCvB","file":"78.be1f229c9fa413560a77.bundle.js","sourcesContent":["PluginRegistry.add('guide.step', [\n {\n guideBlockName: 'table-graph-explore',\n getSteps: (options, services) => {\n const GuideUtils = services.GuideUtils;\n options.mainAction = 'table-graph';\n\n const steps = [\n {\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step-intro.table-graph',\n skipPoint: true,\n scrollToHandler: GuideUtils.scrollToTop,\n elementSelector: GuideUtils.getSparqlResultsSelectorForIri(options.iri),\n onNextClick: (guide, step) => {\n GuideUtils.waitFor(step.elementSelector, 3)\n .then(() => $(step.elementSelector).trigger('click'))\n .then(() => guide.next());\n }\n }, options)\n }, {\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.table-graph-overview',\n scrollToHandler: GuideUtils.scrollToTop,\n elementSelector: GuideUtils.getSparqlResultsSelector(),\n placement: 'top'\n }, options)\n }\n ];\n\n if (angular.isArray(options.subSteps)) {\n options.subSteps.forEach((subStep) => {\n if (subStep.type === 'link') {\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.table-graph-link',\n elementSelector: GuideUtils.getSparqlResultsSelectorForIri(subStep.iri),\n onNextClick: (guide, step) => {\n GuideUtils.waitFor(step.elementSelector, 3)\n .then(() => $(step.elementSelector).trigger('click'))\n .then(() => guide.next());\n }\n }, angular.extend({}, options, subStep))\n });\n } else if (subStep.type === 'role') {\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.table-graph-role',\n elementSelector: GuideUtils.getGuideElementSelector('role-' + subStep.role),\n onNextClick: (guide, step) => {\n GuideUtils.waitFor(step.elementSelector, 3)\n .then(() => $(step.elementSelector).trigger('click'))\n .then(() => guide.next());\n }\n }, angular.extend({}, options, subStep))\n });\n } else if (subStep.type === 'visual') {\n steps.push({\n guideBlockName: 'clickable-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.table-graph-visual',\n elementSelector: GuideUtils.getGuideElementSelector('explore-visual'),\n onNextClick: (guide, step) => {\n GuideUtils.waitFor(step.elementSelector, 3)\n .then(() => $(step.elementSelector).trigger('click'));\n }\n }, angular.extend({}, options, subStep))\n });\n steps.push({\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n content: 'guide.step_plugin.visual_graph_intro.content',\n extraContent: subStep.extraContentVisualIntro,\n url: '/graphs-visualizations',\n elementSelector: '.graph-visualization',\n placement: 'left',\n canBePaused: false,\n forceReload: true,\n onNextClick: (guide, step) => {\n window.history.back();\n guide.next();\n }\n }, angular.extend({}, options, subStep))\n });\n } else if (subStep.type === 'row') {\n steps.push({\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n elementSelector: GuideUtils.getSparqlResultsSelectorForRow(subStep.row)\n }, angular.extend({}, options, subStep))\n });\n } else if (subStep.type === 'table') {\n steps.push({\n guideBlockName: 'read-only-element',\n options: angular.extend({}, {\n elementSelector: GuideUtils.getSparqlResultsSelector()\n }, angular.extend({}, options, subStep))\n });\n }\n });\n }\n\n return steps;\n }\n }\n]);\n"],"sourceRoot":""}