graphdb-workbench 2.0.0-TR7 → 2.0.0-TR8

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 (102) hide show
  1. package/dist/{0.21974a2453b9a92dec33.bundle.js → 0.965871b861f4dddbba56.bundle.js} +3 -3
  2. package/dist/0.965871b861f4dddbba56.bundle.js.map +1 -0
  3. package/dist/{112.b871480dd961ac3c18b6.bundle.js → 112.0c1bdd906ac321ffbf5f.bundle.js} +2 -2
  4. package/dist/{112.b871480dd961ac3c18b6.bundle.js.map → 112.0c1bdd906ac321ffbf5f.bundle.js.map} +1 -1
  5. package/dist/114.282a327015f8ae87918b.bundle.js +1 -1
  6. package/dist/114.282a327015f8ae87918b.bundle.js.map +1 -1
  7. package/dist/{12.449fb5148a68a44ba324.bundle.js → 12.60db051e76264d3f95b2.bundle.js} +2 -2
  8. package/dist/12.60db051e76264d3f95b2.bundle.js.map +1 -0
  9. package/dist/{13.3a06e05fd28f858e14cd.bundle.js → 13.1419a81a33174950a34c.bundle.js} +2 -2
  10. package/dist/13.1419a81a33174950a34c.bundle.js.map +1 -0
  11. package/dist/14.7e9059b5c9c57d952e47.bundle.js +2 -0
  12. package/dist/14.7e9059b5c9c57d952e47.bundle.js.map +1 -0
  13. package/dist/15.02ad5872995df6d6692a.bundle.js +2 -0
  14. package/dist/15.02ad5872995df6d6692a.bundle.js.map +1 -0
  15. package/dist/{17.4b048ae019a8d2fd5b46.bundle.js → 17.8bfbe7d08efa149bdb00.bundle.js} +2 -2
  16. package/dist/17.8bfbe7d08efa149bdb00.bundle.js.map +1 -0
  17. package/dist/21.e75213686a349ae7df89.bundle.js +1 -1
  18. package/dist/21.e75213686a349ae7df89.bundle.js.map +1 -1
  19. package/dist/25.cbe8e59c80330ff6e706.bundle.js +2 -0
  20. package/dist/25.cbe8e59c80330ff6e706.bundle.js.map +1 -0
  21. package/dist/26.67154910989ca1f563ec.bundle.js +2 -0
  22. package/dist/26.67154910989ca1f563ec.bundle.js.map +1 -0
  23. package/dist/27.61bd08d0e926fe471a91.bundle.js +2 -0
  24. package/dist/27.61bd08d0e926fe471a91.bundle.js.map +1 -0
  25. package/dist/29.66259b8a21bbb5431a06.bundle.js +1 -1
  26. package/dist/29.66259b8a21bbb5431a06.bundle.js.map +1 -1
  27. package/dist/{30.4d469715c2f2d1028b4b.bundle.js → 30.3592aaa1063719853218.bundle.js} +2 -2
  28. package/dist/30.3592aaa1063719853218.bundle.js.map +1 -0
  29. package/dist/{33.ea3b66016bbeff928fc3.bundle.js → 33.c670eeb3a325251e141f.bundle.js} +2 -2
  30. package/dist/33.c670eeb3a325251e141f.bundle.js.map +1 -0
  31. package/dist/34.22a096bd891109c927f5.bundle.js +2 -0
  32. package/dist/34.22a096bd891109c927f5.bundle.js.map +1 -0
  33. package/dist/36.d444f7ad7724d126da1c.bundle.js +1 -1
  34. package/dist/36.d444f7ad7724d126da1c.bundle.js.map +1 -1
  35. package/dist/37.e82ed70c9f1ccac1fa36.bundle.js +1 -1
  36. package/dist/37.e82ed70c9f1ccac1fa36.bundle.js.map +1 -1
  37. package/dist/49.80591a5efda019de6e4a.bundle.js +2 -0
  38. package/dist/49.80591a5efda019de6e4a.bundle.js.map +1 -0
  39. package/dist/7.0d2811d01a379d8b75fb.bundle.js +3 -0
  40. package/dist/7.0d2811d01a379d8b75fb.bundle.js.map +1 -0
  41. package/dist/8.66013fc0c58811b51903.bundle.js +2 -0
  42. package/dist/8.66013fc0c58811b51903.bundle.js.map +1 -0
  43. package/dist/{bundle.7c8c6b17e3aea0099e3e.bundle.js → bundle.e787556c9b592367c35c.bundle.js} +4 -4
  44. package/dist/bundle.e787556c9b592367c35c.bundle.js.map +1 -0
  45. package/dist/css/lib/yasr.css +1 -0
  46. package/dist/css/yasr.custom.css +9 -0
  47. package/dist/index.html +4 -4
  48. package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +1 -0
  49. package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
  50. package/dist/{main.ea86ac1b6d636ab25dc7.css → main.db108895fbac32ad7e7b.css} +1 -1
  51. package/dist/pages/autocomplete.html +1 -1
  52. package/dist/pages/choose-repository-type.html +1 -1
  53. package/dist/pages/clusterInfo.html +1 -1
  54. package/dist/pages/create-index.html +4 -4
  55. package/dist/pages/dependencies.html +1 -1
  56. package/dist/pages/domainRangeInfo.html +2 -2
  57. package/dist/pages/edit.html +1 -1
  58. package/dist/pages/explore.html +1 -1
  59. package/dist/pages/export.html +1 -1
  60. package/dist/pages/find.html +1 -1
  61. package/dist/pages/graph-config/saveGraphConfig.html +11 -11
  62. package/dist/pages/graphs-visualizations.html +7 -7
  63. package/dist/pages/import.html +1 -1
  64. package/dist/pages/jdbc-create.html +5 -5
  65. package/dist/pages/monitor/queries.html +1 -1
  66. package/dist/pages/monitor/resources.html +2 -2
  67. package/dist/pages/namespaces.html +2 -2
  68. package/dist/pages/rdfClassHierarchyInfo.html +7 -7
  69. package/dist/pages/rdfrank.html +2 -2
  70. package/dist/pages/repositories.html +2 -2
  71. package/dist/pages/repository.html +2 -2
  72. package/dist/pages/similarity-indexes.html +1 -1
  73. package/dist/pages/sparql-template-create.html +5 -5
  74. package/dist/pages/sparql.html +3 -3
  75. package/dist/pages/webapi.html +2 -2
  76. package/dist/res/swagger/index.html +25 -25
  77. package/package.json +1 -1
  78. package/dist/0.21974a2453b9a92dec33.bundle.js.map +0 -1
  79. package/dist/12.449fb5148a68a44ba324.bundle.js.map +0 -1
  80. package/dist/13.3a06e05fd28f858e14cd.bundle.js.map +0 -1
  81. package/dist/14.a1d84445382b665e13e0.bundle.js +0 -2
  82. package/dist/14.a1d84445382b665e13e0.bundle.js.map +0 -1
  83. package/dist/15.73ffeb044255abbac7bf.bundle.js +0 -2
  84. package/dist/15.73ffeb044255abbac7bf.bundle.js.map +0 -1
  85. package/dist/17.4b048ae019a8d2fd5b46.bundle.js.map +0 -1
  86. package/dist/25.34da4f496fc62f2dae9b.bundle.js +0 -2
  87. package/dist/25.34da4f496fc62f2dae9b.bundle.js.map +0 -1
  88. package/dist/26.02814d2ed726f5a71d4e.bundle.js +0 -2
  89. package/dist/26.02814d2ed726f5a71d4e.bundle.js.map +0 -1
  90. package/dist/27.44948497dc4fac6010a8.bundle.js +0 -2
  91. package/dist/27.44948497dc4fac6010a8.bundle.js.map +0 -1
  92. package/dist/30.4d469715c2f2d1028b4b.bundle.js.map +0 -1
  93. package/dist/33.ea3b66016bbeff928fc3.bundle.js.map +0 -1
  94. package/dist/34.620159c2b04af0a88d1b.bundle.js +0 -2
  95. package/dist/34.620159c2b04af0a88d1b.bundle.js.map +0 -1
  96. package/dist/49.71f6e0f6f3284bf63cab.bundle.js +0 -2
  97. package/dist/49.71f6e0f6f3284bf63cab.bundle.js.map +0 -1
  98. package/dist/7.036cd4322fa473fb187a.bundle.js +0 -3
  99. package/dist/7.036cd4322fa473fb187a.bundle.js.map +0 -1
  100. package/dist/8.46db359ed59a04d3799b.bundle.js +0 -2
  101. package/dist/8.46db359ed59a04d3799b.bundle.js.map +0 -1
  102. package/dist/bundle.7c8c6b17e3aea0099e3e.bundle.js.map +0 -1
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[112],{166:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="sparql-content">\n <div ng-hide="viewMode == \'editor\'"\n ng-class="orientationViewMode ? \'row\' : viewMode == \'yasr\' ? \'col-xs-12\' : \'col-xs-6\'" ng-style="noPadding">\n <div class="col-xs-12 mb-1" ng-style="noPadding">\n\n <ul class="nav nav-tabs">\n <li ng-hide="notabs" role="presentation" ng-repeat="tab in tabs" ng-click="focusQueryEditor()"\n class="nav-item sparql-tab">\n <sparql-tab\n data-id="{{tab.id}}"\n class="nav-link">\n </sparql-tab>\n </li>\n <li ng-hide="notabs" role="presentation" ng-click="focusQueryEditor()" class="nav-item">\n <span id="wb-sparql-addNewTab" ng-click="addNewTab()" class="nav-link">\n \t<button class="btn btn-link btn-sm secondary"><span class="icon-plus"></span></button>\n </span>\n </li>\n </ul>\n\n <script type="text/ng-template" id="sampleQueriesPopoverTemplate.html">\n <ul id="wb-sparql-queryInSampleQueries" class="list-unstyled">\n <li ng-repeat="query in sampleQueries" ng-hide="ignoreSharedQueries && query.owner != principal().username" class="hovered-parent saved-query">\n <a href ng-click="querySelected(query)">{{query.name}}</a>\n &nbsp;\n <em class="icon-warning" ng-show="query.owner != principal().username && isUser()"\n popover="Query shared by another user. You may not edit or delete it."\n popover-trigger="mouseenter"></em>\n <span class="actions-bar hovered-item">\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n popover="Edit query" popover-trigger="mouseenter"\n ng-click="editQuery(query)">\n\t\t\t\t\t\t\t\t<span class="icon-edit"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n popover="Delete query" popover-trigger="mouseenter"\n ng-click="deleteQuery(query.name)">\n\t\t\t\t\t\t\t\t<span class="icon-trash"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n popover="Get URL to query" popover-trigger="mouseenter"\n ng-click="copyToClipboardQuery(query.name, query.owner)">\n\t\t\t\t\t\t\t\t<span class="icon-link"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</span>\n </li>\n </ul>\n <\/script>\n\n \x3c!--\n <div class="collapse width pull-right well" id="sampleQueriesCollapse">\n <div class="list-group-item-heading">Select saved query from the list</div>\n <ul id="wb-sparql-queryInSampleQueries" class="queries list-unstyled">\n <li ng-repeat="query in sampleQueries">\n\n <a href="#" ng-click="querySelected(query.body)"><i class="fa fa-1x fa-caret-right"></i>{{query.name}}</a>\n <span>\n <i ng-show="canWriteActiveRepo()" tooltip="Edit query" tooltip-trigger="mouseenter" href="#" class="fa fa-pencil-square-o fa-1x editSampleQuery" ng-click="editQuery(query)"></i>\n <i ng-show="canWriteActiveRepo()" tooltip="Delete query" tooltip-trigger="mouseenter" href="#" class="fa fa-trash-o fa-1x deleteSampleQuery" ng-click="deleteQuery(query.name)"></i>\n <i tooltip="Get URL to query" tooltip-trigger="mouseenter" href="#" class="fa fa-link fa-1x" ng-click="copyToClipboardQuery(query.name)"></i>\n </span>\n </li>\n </ul>\n </div>\n --\x3e\n\n <div id="queryEditor">\n <textarea ng-model="query" id="query" rows="16" cols="100"></textarea>\n\n <div id="yasqe_buttons_mocked" style="display: none"></div>\n <div id="yasqe_buttons" ng-hide="notoolbar">\n <div id="buttons">\n <button class="btn btn-link" id="wb-sparql-saveQuery"\n ng-show="!notoolbarSaved && isUser()"\n ng-click="saveTab(currentQuery.id); saveQuery(currentQuery);"\n data-container="#queryEditor"\n tooltip="Create saved query"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter">\n <em class="icon-save icon-2-5x"></em>\n </button>\n \x3c!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex --\x3e\n <a tabindex="0" class="btn btn-link" id="wb-sparql-toggleSampleQueries"\n ng-hide="notoolbarSaved"\n ng-click="toggleSampleQueries()"\n data-container="#queryEditor"\n tooltip="Show saved queries"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter"\n popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true">\n \x3c!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) --\x3e\n <span class="icon-folder icon-2-5x"\n popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true"></span>\n </a>\n <button class="btn btn-link" id="wb-sparql-copyToClipboardQuery"\n ng-hide="notoolbarCopy"\n ng-click="copyToClipboardQuery()"\n tooltip="Get URL to current query"\n tooltip-append-to-body="true">\n <span class="icon-link icon-2-5x"></span>\n </button>\n <button class="btn btn-link" id="inference"\n ng-hide="notoolbarInference"\n ng-click="currentQuery.inference = !currentQuery.inference"\n tooltip="Include inferred data in results: {{currentQuery.inference ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n ng-class="{\'icon-inferred-on\':currentQuery.inference, \'icon-inferred-off\':!currentQuery.inference}"></span>\n </button>\n <button class="btn btn-link" id="sameAs"\n ng-hide="notoolbarSameAs"\n ng-click="currentQuery.sameAs = !currentQuery.sameAs"\n tooltip="Expand results over owl:sameAs: {{currentQuery.sameAs ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n ng-class="{\'icon-sameas-on\':currentQuery.sameAs, \'icon-sameas-off\':!currentQuery.sameAs}"></span>\n </button>\n </div>\n </div>\n <div id="runButton" ng-hide="norun">\n <button id="wb-sparql-runQuery" class="btn btn-primary" ng-disabled="queryIsRunning"\n ng-click="runQuery(false, $event.shiftKey)">\n {{runButtonName}}\n </button>\n </div>\n <div>\n <keyboard-shortcuts template-url="res/sparql/keyboard-shortcuts.html"></keyboard-shortcuts>\n </div>\n \x3c!--\n <div id="checkboxes">\n --\x3e\n \x3c!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\n <input id="sameAs" ng-model="currentQuery.sameAs" data-label="disable sameAs" name="equivalent" value="http://www.ontotext.com/disable-sameAs" type="checkbox"/> --\x3e\n \x3c!--\n <label>\n <input id="inference" ng-model="currentQuery.inference" type="checkbox" value="true" />\n Include inferred\n </label>\n </div>\n --\x3e\n </div>\n \x3c!--<div id="separator" ng-if="!orientationViewMode" ng-mousedown="onDragStart($event)" draggable="true" ondragend="angular.element(this).scope().onDragEnd(event)"></div>--\x3e\n </div>\n\n </div>\n\n <div class="clearfix mb-2" ng-hide="viewMode === \'yasr\'" id="yasr"\n ng-class="orientationViewMode ? \'col-xs-12 col-lg-12\' : viewMode == \'editor\' ? \'col-xs-12 vertical\' : \'col-xs-6 vertical\'">\n <pagination\n class="nav navbar-right"\n ng-show="currentTabConfig.queryType != \'UPDATE\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize"\n total-items="currentTabConfig.allResultsCount"\n items-per-page="currentTabConfig.pageSize"\n ng-model="currentTabConfig.page"\n ng-change="changePagination()"\n direction-links="true"\n boundary-l\n max-size="5"\n rotate="true"\n previous-text="&lsaquo;"\n next-text="&rsaquo;"\n first-text="&laquo;"\n last-text="&raquo;">\n </pagination>\n\n <div class="yasr" id="yasr-inner">\n <div ng-hide="nostatus || currentTabConfig.queryType || queryIsRunning"\n class="alert alert-info no-icon no-query-run">No results from previous run.\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\n </div>\n \x3c!--ng-show="!queryIsRunning">--\x3e\n <div class=\'yasr_header mb-1 clearfix\'\n ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && currentTabConfig.queryType != \'ASK\' && !queryIsRunning">\n <div class="resultsVisualButton btn-group pull-right">\n <button class="btn btn-primary btn-sm" ng-show="!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \'CONSTRUCT\' || currentTabConfig.queryType == \'DESCRIBE\')"\n ng-click="goToVisual()">\n Visual\n </button>\n </div>\n </div>\n <h6 class="alert alert-danger no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.errorMessage">Error: {{currentTabConfig.errorMessage}}</h6>\n <h6 class="alert alert-warning no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.warningMessage">Warning: {{currentTabConfig.warningMessage}}</h6>\n <div class="alert alert-info no-icon results-info"\n ng-show="!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning">\n <div class="text-xs-right">\n <span class="icon-warning icon-lg"\n ng-show="getStaleWarningMessage()"\n tooltip="{{getStaleWarningMessage()}}" tooltip-trigger="mouseenter"\n tooltip-append-to-body="true"></span>\n <span ng-show="currentTabConfig.queryType != \'ASK\'" class="results-description">\n {{getResultsDescription()}}\n </span>\n <span ng-show="currentTabConfig.timeTook" class="query-duration">\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n </div>\n <div class=\'alert alert-info no-icon update-info\'\n ng-show="!nostatus && currentTabConfig.queryType == \'UPDATE\' && !queryIsRunning">\n {{getUpdateDescription()}}\n <span ng-show="currentTabConfig.timeTook">\n {{currentTabConfig.customUpdateMessage ? \'Operation\' : \'Update\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n <div class="alert alert-danger no-icon results-info update-info" ng-show="currentTabConfig.queryType == \'ERROR\'">\n <div>\n <div class="pull-right" ng-show="currentTabConfig.timeTook">\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </div>\n <h6>Error<span ng-show="yasr.results.getException().status > 0"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\n </div>\n\n <div class="plaintext">{{yasr.results.getException().responseText}}</div>\n </div>\n <div class=\'yasr_results\' ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning"></div>\n </div>\n\n <div ng-show="queryIsRunning && currentTrackAlias" class="qe-aborter">\n <div disabled-wrapper class="d-inline-block" popover="{{abortRequested ? (lastRunQueryMode === \'update\' ? \'Update was requested to abort and will be terminated if possible\' : \'Query was requested to abort and will be terminated on the first I/O operation\') : (lastRunQueryMode === \'update\' ? \'Click to abort update\' : \'Click to abort query\')}}"\n popover-trigger="mouseenter"\n popover-placement="left">\n <div ng-class="abortRequested ? \'disabled\' : \'\'"> \x3c!-- Keep this div --\x3e\n <button ng-disabled="abortRequested" class="btn btn-xs btn-primary"\n ng-click="abortCurrentQuery()" ng-hide="!isUserLoggedIn() && isSecurityEnabled()">\n {{abortRequested ? \'Stop has been requested\' : (lastRunQueryMode === \'update\' ? \'Abort update\' : \'Abort query\')}}\n </button>\n </div>\n </div>\n </div>\n\n <div onto-loader-new\n ng-if="queryIsRunning"\n ng-show="queryIsRunning"\n class="sparql-loader"\n size="75"\n message="getLoaderMessage"\n timeout="[1]">\n </div>\n </div>\n</div>\n';return __p}}}]);
2
- //# sourceMappingURL=112.b871480dd961ac3c18b6.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[112],{166:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="sparql-content">\n <div ng-hide="viewMode == \'editor\'"\n ng-class="orientationViewMode ? \'row\' : viewMode == \'yasr\' ? \'col-xs-12\' : \'col-xs-6\'" ng-style="noPadding">\n <div class="col-xs-12 mb-1" ng-style="noPadding">\n\n <ul class="nav nav-tabs">\n <li ng-hide="notabs" role="presentation" ng-repeat="tab in tabs" ng-click="focusQueryEditor()"\n class="nav-item sparql-tab">\n <sparql-tab\n data-id="{{tab.id}}"\n class="nav-link">\n </sparql-tab>\n </li>\n <li ng-hide="notabs" role="presentation" ng-click="focusQueryEditor()" class="nav-item">\n <span id="wb-sparql-addNewTab" ng-click="addNewTab()" class="nav-link">\n \t<button class="btn btn-link btn-sm secondary"><span class="icon-plus"></span></button>\n </span>\n </li>\n </ul>\n\n <script type="text/ng-template" id="sampleQueriesPopoverTemplate.html">\n <ul id="wb-sparql-queryInSampleQueries" class="list-unstyled">\n <li ng-repeat="query in sampleQueries" ng-hide="ignoreSharedQueries && query.owner != principal().username" class="hovered-parent saved-query">\n <a href ng-click="querySelected(query)">{{query.name}}</a>\n &nbsp;\n <em class="icon-warning" ng-show="query.owner != principal().username && isUser()"\n popover="Query shared by another user. You may not edit or delete it."\n popover-trigger="mouseenter"></em>\n <span class="actions-bar hovered-item">\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n popover="Edit query" popover-trigger="mouseenter"\n ng-click="editQuery(query)">\n\t\t\t\t\t\t\t\t<span class="icon-edit"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n ng-show="query.owner == principal().username && isUser()"\n popover="Delete query" popover-trigger="mouseenter"\n ng-click="deleteQuery(query.name)">\n\t\t\t\t\t\t\t\t<span class="icon-trash"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button class="btn btn-link btn-sm"\n popover="Get URL to query" popover-trigger="mouseenter"\n ng-click="copyToClipboardQuery(query.name, query.owner)">\n\t\t\t\t\t\t\t\t<span class="icon-link"></span>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</span>\n </li>\n </ul>\n <\/script>\n\n \x3c!--\n <div class="collapse width pull-right well" id="sampleQueriesCollapse">\n <div class="list-group-item-heading">Select saved query from the list</div>\n <ul id="wb-sparql-queryInSampleQueries" class="queries list-unstyled">\n <li ng-repeat="query in sampleQueries">\n\n <a href="#" ng-click="querySelected(query.body)"><i class="fa fa-1x fa-caret-right"></i>{{query.name}}</a>\n <span>\n <i ng-show="canWriteActiveRepo()" tooltip="Edit query" tooltip-trigger="mouseenter" href="#" class="fa fa-pencil-square-o fa-1x editSampleQuery" ng-click="editQuery(query)"></i>\n <i ng-show="canWriteActiveRepo()" tooltip="Delete query" tooltip-trigger="mouseenter" href="#" class="fa fa-trash-o fa-1x deleteSampleQuery" ng-click="deleteQuery(query.name)"></i>\n <i tooltip="Get URL to query" tooltip-trigger="mouseenter" href="#" class="fa fa-link fa-1x" ng-click="copyToClipboardQuery(query.name)"></i>\n </span>\n </li>\n </ul>\n </div>\n --\x3e\n\n <div id="queryEditor">\n <textarea ng-model="query" id="query" rows="16" cols="100"></textarea>\n\n <div id="yasqe_buttons_mocked" style="display: none"></div>\n <div id="yasqe_buttons" ng-hide="notoolbar">\n <div id="buttons">\n <button class="btn btn-link" id="wb-sparql-saveQuery"\n ng-show="!notoolbarSaved && isUser()"\n ng-click="saveTab(currentQuery.id); saveQuery(currentQuery);"\n data-container="#queryEditor"\n tooltip="Create saved query"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter">\n <em class="icon-save icon-2-5x"></em>\n </button>\n \x3c!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex --\x3e\n <a tabindex="0" class="btn btn-link" id="wb-sparql-toggleSampleQueries"\n ng-hide="notoolbarSaved"\n ng-click="toggleSampleQueries()"\n data-container="#queryEditor"\n tooltip="Show saved queries"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter"\n popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true">\n \x3c!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) --\x3e\n <span class="icon-folder icon-2-5x"\n popover-template="\'sampleQueriesPopoverTemplate.html\'"\n popover-trigger="focus"\n popover-placement="left"\n popover-append-to-body="true"></span>\n </a>\n <button class="btn btn-link" id="wb-sparql-copyToClipboardQuery"\n ng-hide="notoolbarCopy"\n ng-click="copyToClipboardQuery()"\n tooltip="Get URL to current query"\n tooltip-append-to-body="true">\n <span class="icon-link icon-2-5x"></span>\n </button>\n <button class="btn btn-link" id="inference"\n ng-hide="notoolbarInference"\n ng-click="currentQuery.inference = !currentQuery.inference"\n tooltip="Include inferred data in results: {{currentQuery.inference ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n ng-class="{\'icon-inferred-on\':currentQuery.inference, \'icon-inferred-off\':!currentQuery.inference}"></span>\n </button>\n <button class="btn btn-link" id="sameAs"\n ng-hide="notoolbarSameAs"\n ng-click="currentQuery.sameAs = !currentQuery.sameAs"\n tooltip="Expand results over owl:sameAs: {{currentQuery.sameAs ? \'ON\' : \'OFF\'}}"\n tooltip-append-to-body="true">\n <span class="icon-2-5x"\n tooltip="{{!currentQuery.inference ? \'Requires \\\'Include Inferred\\\'!\' : \'\'}}"\n ng-class="{\'icon-sameas-on\':currentQuery.sameAs, \'icon-sameas-off\':!currentQuery.sameAs}"></span>\n </button>\n </div>\n </div>\n <div id="runButton" ng-hide="norun">\n <button id="wb-sparql-runQuery" class="btn btn-primary" ng-disabled="queryIsRunning"\n ng-click="runQuery(false, $event.shiftKey)">\n {{runButtonName}}\n </button>\n </div>\n <div>\n <keyboard-shortcuts template-url="res/sparql/keyboard-shortcuts.html"></keyboard-shortcuts>\n </div>\n \x3c!--\n <div id="checkboxes">\n --\x3e\n \x3c!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\n <input id="sameAs" ng-model="currentQuery.sameAs" data-label="disable sameAs" name="equivalent" value="http://www.ontotext.com/disable-sameAs" type="checkbox"/> --\x3e\n \x3c!--\n <label>\n <input id="inference" ng-model="currentQuery.inference" type="checkbox" value="true" />\n Include inferred\n </label>\n </div>\n --\x3e\n </div>\n \x3c!--<div id="separator" ng-if="!orientationViewMode" ng-mousedown="onDragStart($event)" draggable="true" ondragend="angular.element(this).scope().onDragEnd(event)"></div>--\x3e\n </div>\n\n </div>\n\n <div class="clearfix mb-2" ng-hide="viewMode === \'yasr\'" id="yasr"\n ng-class="orientationViewMode ? \'col-xs-12 col-lg-12\' : viewMode == \'editor\' ? \'col-xs-12 vertical\' : \'col-xs-6 vertical\'">\n <pagination\n class="nav navbar-right"\n ng-show="currentTabConfig.queryType != \'UPDATE\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize"\n total-items="currentTabConfig.allResultsCount"\n items-per-page="currentTabConfig.pageSize"\n ng-model="currentTabConfig.page"\n ng-change="changePagination()"\n direction-links="true"\n boundary-l\n max-size="5"\n rotate="true"\n previous-text="&lsaquo;"\n next-text="&rsaquo;"\n first-text="&laquo;"\n last-text="&raquo;">\n </pagination>\n\n <div class="yasr" id="yasr-inner">\n <div ng-hide="nostatus || currentTabConfig.queryType || queryIsRunning"\n class="alert alert-info no-icon no-query-run">No results from previous run.\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\n </div>\n \x3c!--ng-show="!queryIsRunning">--\x3e\n <div class=\'yasr_header mb-1 clearfix\'\n ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && currentTabConfig.queryType != \'ASK\' && !queryIsRunning">\n <div class="resultsVisualButton btn-group pull-right">\n <button class="btn btn-primary btn-sm" ng-show="!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \'CONSTRUCT\' || currentTabConfig.queryType == \'DESCRIBE\')"\n ng-click="goToVisual()">\n Visual\n </button>\n </div>\n </div>\n <h6 class="alert alert-danger no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.errorMessage">Error: {{currentTabConfig.errorMessage}}</h6>\n <h6 class="alert alert-warning no-icon additional" ng-show="!queryIsRunning && !nostatus && currentTabConfig.warningMessage">Warning: {{currentTabConfig.warningMessage}}</h6>\n <div class="alert alert-info no-icon results-info"\n ng-show="!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning">\n <div class="text-xs-right">\n <span class="icon-warning icon-lg"\n ng-show="getStaleWarningMessage()"\n tooltip="{{getStaleWarningMessage()}}" tooltip-trigger="mouseenter"\n tooltip-append-to-body="true"></span>\n <span ng-show="currentTabConfig.queryType != \'ASK\'" class="results-description">\n {{getResultsDescription()}}\n </span>\n <span ng-show="currentTabConfig.timeTook" class="query-duration">\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n </div>\n <div class=\'alert alert-info no-icon update-info\'\n ng-show="!nostatus && currentTabConfig.queryType == \'UPDATE\' && !queryIsRunning">\n {{getUpdateDescription()}}\n <span ng-show="currentTabConfig.timeTook">\n {{currentTabConfig.customUpdateMessage ? \'Operation\' : \'Update\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </span>\n </div>\n <div class="alert alert-danger no-icon results-info update-info" ng-show="currentTabConfig.queryType == \'ERROR\'">\n <div>\n <div class="pull-right" ng-show="currentTabConfig.timeTook">\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\n </div>\n <h6>Error<span ng-show="yasr.results.getException().status > 0"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\n </div>\n\n <div class="plaintext">{{yasr.results.getException().responseText}}</div>\n </div>\n <div class=\'yasr_results\' ng-show="currentTabConfig.queryType && currentTabConfig.queryType != \'UPDATE\' && currentTabConfig.queryType != \'ERROR\' && !queryIsRunning"></div>\n </div>\n\n <div ng-show="queryIsRunning && currentTrackAlias" class="qe-aborter">\n <div disabled-wrapper class="d-inline-block" popover="{{abortRequested ? (lastRunQueryMode === \'update\' ? \'Update was requested to abort and will be terminated if possible\' : \'Query was requested to abort and will be terminated on the first I/O operation\') : (lastRunQueryMode === \'update\' ? \'Click to abort update\' : \'Click to abort query\')}}"\n popover-trigger="mouseenter"\n popover-placement="left">\n <div ng-class="abortRequested ? \'disabled\' : \'\'"> \x3c!-- Keep this div --\x3e\n <button ng-disabled="abortRequested" class="btn btn-xs btn-primary"\n ng-click="abortCurrentQuery()" ng-hide="!isUserLoggedIn() && isSecurityEnabled()">\n {{abortRequested ? \'Stop has been requested\' : (lastRunQueryMode === \'update\' ? \'Abort update\' : \'Abort query\')}}\n </button>\n </div>\n </div>\n </div>\n\n <div onto-loader-new\n ng-if="queryIsRunning"\n ng-show="queryIsRunning"\n class="sparql-loader"\n size="75"\n message="getLoaderMessage"\n timeout="[1]">\n </div>\n </div>\n</div>\n';return __p}}}]);
2
+ //# sourceMappingURL=112.0c1bdd906ac321ffbf5f.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/templates/query-editor.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,myfAGP,OAAOA","file":"112.b871480dd961ac3c18b6.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"sparql-content\">\\n <div ng-hide=\"viewMode == \\'editor\\'\"\\n ng-class=\"orientationViewMode ? \\'row\\' : viewMode == \\'yasr\\' ? \\'col-xs-12\\' : \\'col-xs-6\\'\" ng-style=\"noPadding\">\\n <div class=\"col-xs-12 mb-1\" ng-style=\"noPadding\">\\n\\n <ul class=\"nav nav-tabs\">\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-repeat=\"tab in tabs\" ng-click=\"focusQueryEditor()\"\\n class=\"nav-item sparql-tab\">\\n <sparql-tab\\n data-id=\"{{tab.id}}\"\\n class=\"nav-link\">\\n </sparql-tab>\\n </li>\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-click=\"focusQueryEditor()\" class=\"nav-item\">\\n <span id=\"wb-sparql-addNewTab\" ng-click=\"addNewTab()\" class=\"nav-link\">\\n \t<button class=\"btn btn-link btn-sm secondary\"><span class=\"icon-plus\"></span></button>\\n </span>\\n </li>\\n </ul>\\n\\n <script type=\"text/ng-template\" id=\"sampleQueriesPopoverTemplate.html\">\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\" ng-hide=\"ignoreSharedQueries && query.owner != principal().username\" class=\"hovered-parent saved-query\">\\n <a href ng-click=\"querySelected(query)\">{{query.name}}</a>\\n &nbsp;\\n <em class=\"icon-warning\" ng-show=\"query.owner != principal().username && isUser()\"\\n popover=\"Query shared by another user. You may not edit or delete it.\"\\n popover-trigger=\"mouseenter\"></em>\\n <span class=\"actions-bar hovered-item\">\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n popover=\"Edit query\" popover-trigger=\"mouseenter\"\\n ng-click=\"editQuery(query)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-edit\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n popover=\"Delete query\" popover-trigger=\"mouseenter\"\\n ng-click=\"deleteQuery(query.name)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-trash\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n popover=\"Get URL to query\" popover-trigger=\"mouseenter\"\\n ng-click=\"copyToClipboardQuery(query.name, query.owner)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-link\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t</span>\\n </li>\\n </ul>\\n </script>\\n\\n <!--\\n <div class=\"collapse width pull-right well\" id=\"sampleQueriesCollapse\">\\n <div class=\"list-group-item-heading\">Select saved query from the list</div>\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"queries list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\">\\n\\n <a href=\"#\" ng-click=\"querySelected(query.body)\"><i class=\"fa fa-1x fa-caret-right\"></i>{{query.name}}</a>\\n <span>\\n <i ng-show=\"canWriteActiveRepo()\" tooltip=\"Edit query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-pencil-square-o fa-1x editSampleQuery\" ng-click=\"editQuery(query)\"></i>\\n <i ng-show=\"canWriteActiveRepo()\" tooltip=\"Delete query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-trash-o fa-1x deleteSampleQuery\" ng-click=\"deleteQuery(query.name)\"></i>\\n <i tooltip=\"Get URL to query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-link fa-1x\" ng-click=\"copyToClipboardQuery(query.name)\"></i>\\n </span>\\n </li>\\n </ul>\\n </div>\\n -->\\n\\n <div id=\"queryEditor\">\\n <textarea ng-model=\"query\" id=\"query\" rows=\"16\" cols=\"100\"></textarea>\\n\\n <div id=\"yasqe_buttons_mocked\" style=\"display: none\"></div>\\n <div id=\"yasqe_buttons\" ng-hide=\"notoolbar\">\\n <div id=\"buttons\">\\n <button class=\"btn btn-link\" id=\"wb-sparql-saveQuery\"\\n ng-show=\"!notoolbarSaved && isUser()\"\\n ng-click=\"saveTab(currentQuery.id); saveQuery(currentQuery);\"\\n data-container=\"#queryEditor\"\\n tooltip=\"Create saved query\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\">\\n <em class=\"icon-save icon-2-5x\"></em>\\n </button>\\n <!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex -->\\n <a tabindex=\"0\" class=\"btn btn-link\" id=\"wb-sparql-toggleSampleQueries\"\\n ng-hide=\"notoolbarSaved\"\\n ng-click=\"toggleSampleQueries()\"\\n data-container=\"#queryEditor\"\\n tooltip=\"Show saved queries\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\"\\n popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\">\\n <!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) -->\\n <span class=\"icon-folder icon-2-5x\"\\n popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\"></span>\\n </a>\\n <button class=\"btn btn-link\" id=\"wb-sparql-copyToClipboardQuery\"\\n ng-hide=\"notoolbarCopy\"\\n ng-click=\"copyToClipboardQuery()\"\\n tooltip=\"Get URL to current query\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-link icon-2-5x\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"inference\"\\n ng-hide=\"notoolbarInference\"\\n ng-click=\"currentQuery.inference = !currentQuery.inference\"\\n tooltip=\"Include inferred data in results: {{currentQuery.inference ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n ng-class=\"{\\'icon-inferred-on\\':currentQuery.inference, \\'icon-inferred-off\\':!currentQuery.inference}\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"sameAs\"\\n ng-hide=\"notoolbarSameAs\"\\n ng-click=\"currentQuery.sameAs = !currentQuery.sameAs\"\\n tooltip=\"Expand results over owl:sameAs: {{currentQuery.sameAs ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n ng-class=\"{\\'icon-sameas-on\\':currentQuery.sameAs, \\'icon-sameas-off\\':!currentQuery.sameAs}\"></span>\\n </button>\\n </div>\\n </div>\\n <div id=\"runButton\" ng-hide=\"norun\">\\n <button id=\"wb-sparql-runQuery\" class=\"btn btn-primary\" ng-disabled=\"queryIsRunning\"\\n ng-click=\"runQuery(false, $event.shiftKey)\">\\n {{runButtonName}}\\n </button>\\n </div>\\n <div>\\n <keyboard-shortcuts template-url=\"res/sparql/keyboard-shortcuts.html\"></keyboard-shortcuts>\\n </div>\\n <!--\\n <div id=\"checkboxes\">\\n -->\\n <!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\\n <input id=\"sameAs\" ng-model=\"currentQuery.sameAs\" data-label=\"disable sameAs\" name=\"equivalent\" value=\"http://www.ontotext.com/disable-sameAs\" type=\"checkbox\"/> -->\\n <!--\\n <label>\\n <input id=\"inference\" ng-model=\"currentQuery.inference\" type=\"checkbox\" value=\"true\" />\\n Include inferred\\n </label>\\n </div>\\n -->\\n </div>\\n <!--<div id=\"separator\" ng-if=\"!orientationViewMode\" ng-mousedown=\"onDragStart($event)\" draggable=\"true\" ondragend=\"angular.element(this).scope().onDragEnd(event)\"></div>-->\\n </div>\\n\\n </div>\\n\\n <div class=\"clearfix mb-2\" ng-hide=\"viewMode === \\'yasr\\'\" id=\"yasr\"\\n ng-class=\"orientationViewMode ? \\'col-xs-12 col-lg-12\\' : viewMode == \\'editor\\' ? \\'col-xs-12 vertical\\' : \\'col-xs-6 vertical\\'\">\\n <pagination\\n class=\"nav navbar-right\"\\n ng-show=\"currentTabConfig.queryType != \\'UPDATE\\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize\"\\n total-items=\"currentTabConfig.allResultsCount\"\\n items-per-page=\"currentTabConfig.pageSize\"\\n ng-model=\"currentTabConfig.page\"\\n ng-change=\"changePagination()\"\\n direction-links=\"true\"\\n boundary-l\\n max-size=\"5\"\\n rotate=\"true\"\\n previous-text=\"&lsaquo;\"\\n next-text=\"&rsaquo;\"\\n first-text=\"&laquo;\"\\n last-text=\"&raquo;\">\\n </pagination>\\n\\n <div class=\"yasr\" id=\"yasr-inner\">\\n <div ng-hide=\"nostatus || currentTabConfig.queryType || queryIsRunning\"\\n class=\"alert alert-info no-icon no-query-run\">No results from previous run.\\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\\n </div>\\n <!--ng-show=\"!queryIsRunning\">-->\\n <div class=\\'yasr_header mb-1 clearfix\\'\\n ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && currentTabConfig.queryType != \\'ASK\\' && !queryIsRunning\">\\n <div class=\"resultsVisualButton btn-group pull-right\">\\n <button class=\"btn btn-primary btn-sm\" ng-show=\"!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \\'CONSTRUCT\\' || currentTabConfig.queryType == \\'DESCRIBE\\')\"\\n ng-click=\"goToVisual()\">\\n Visual\\n </button>\\n </div>\\n </div>\\n <h6 class=\"alert alert-danger no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.errorMessage\">Error: {{currentTabConfig.errorMessage}}</h6>\\n <h6 class=\"alert alert-warning no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.warningMessage\">Warning: {{currentTabConfig.warningMessage}}</h6>\\n <div class=\"alert alert-info no-icon results-info\"\\n ng-show=\"!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\">\\n <div class=\"text-xs-right\">\\n <span class=\"icon-warning icon-lg\"\\n ng-show=\"getStaleWarningMessage()\"\\n tooltip=\"{{getStaleWarningMessage()}}\" tooltip-trigger=\"mouseenter\"\\n tooltip-append-to-body=\"true\"></span>\\n <span ng-show=\"currentTabConfig.queryType != \\'ASK\\'\" class=\"results-description\">\\n {{getResultsDescription()}}\\n </span>\\n <span ng-show=\"currentTabConfig.timeTook\" class=\"query-duration\">\\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n </div>\\n <div class=\\'alert alert-info no-icon update-info\\'\\n ng-show=\"!nostatus && currentTabConfig.queryType == \\'UPDATE\\' && !queryIsRunning\">\\n {{getUpdateDescription()}}\\n <span ng-show=\"currentTabConfig.timeTook\">\\n {{currentTabConfig.customUpdateMessage ? \\'Operation\\' : \\'Update\\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n <div class=\"alert alert-danger no-icon results-info update-info\" ng-show=\"currentTabConfig.queryType == \\'ERROR\\'\">\\n <div>\\n <div class=\"pull-right\" ng-show=\"currentTabConfig.timeTook\">\\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </div>\\n <h6>Error<span ng-show=\"yasr.results.getException().status > 0\"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\\n </div>\\n\\n <div class=\"plaintext\">{{yasr.results.getException().responseText}}</div>\\n </div>\\n <div class=\\'yasr_results\\' ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\"></div>\\n </div>\\n\\n <div ng-show=\"queryIsRunning && currentTrackAlias\" class=\"qe-aborter\">\\n <div disabled-wrapper class=\"d-inline-block\" popover=\"{{abortRequested ? (lastRunQueryMode === \\'update\\' ? \\'Update was requested to abort and will be terminated if possible\\' : \\'Query was requested to abort and will be terminated on the first I/O operation\\') : (lastRunQueryMode === \\'update\\' ? \\'Click to abort update\\' : \\'Click to abort query\\')}}\"\\n popover-trigger=\"mouseenter\"\\n popover-placement=\"left\">\\n <div ng-class=\"abortRequested ? \\'disabled\\' : \\'\\'\"> <!-- Keep this div -->\\n <button ng-disabled=\"abortRequested\" class=\"btn btn-xs btn-primary\"\\n ng-click=\"abortCurrentQuery()\" ng-hide=\"!isUserLoggedIn() && isSecurityEnabled()\">\\n {{abortRequested ? \\'Stop has been requested\\' : (lastRunQueryMode === \\'update\\' ? \\'Abort update\\' : \\'Abort query\\')}}\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div onto-loader-new\\n ng-if=\"queryIsRunning\"\\n ng-show=\"queryIsRunning\"\\n class=\"sparql-loader\"\\n size=\"75\"\\n message=\"getLoaderMessage\"\\n timeout=\"[1]\">\\n </div>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/templates/query-editor.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,45fAGP,OAAOA","file":"112.0c1bdd906ac321ffbf5f.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"sparql-content\">\\n <div ng-hide=\"viewMode == \\'editor\\'\"\\n ng-class=\"orientationViewMode ? \\'row\\' : viewMode == \\'yasr\\' ? \\'col-xs-12\\' : \\'col-xs-6\\'\" ng-style=\"noPadding\">\\n <div class=\"col-xs-12 mb-1\" ng-style=\"noPadding\">\\n\\n <ul class=\"nav nav-tabs\">\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-repeat=\"tab in tabs\" ng-click=\"focusQueryEditor()\"\\n class=\"nav-item sparql-tab\">\\n <sparql-tab\\n data-id=\"{{tab.id}}\"\\n class=\"nav-link\">\\n </sparql-tab>\\n </li>\\n <li ng-hide=\"notabs\" role=\"presentation\" ng-click=\"focusQueryEditor()\" class=\"nav-item\">\\n <span id=\"wb-sparql-addNewTab\" ng-click=\"addNewTab()\" class=\"nav-link\">\\n \t<button class=\"btn btn-link btn-sm secondary\"><span class=\"icon-plus\"></span></button>\\n </span>\\n </li>\\n </ul>\\n\\n <script type=\"text/ng-template\" id=\"sampleQueriesPopoverTemplate.html\">\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\" ng-hide=\"ignoreSharedQueries && query.owner != principal().username\" class=\"hovered-parent saved-query\">\\n <a href ng-click=\"querySelected(query)\">{{query.name}}</a>\\n &nbsp;\\n <em class=\"icon-warning\" ng-show=\"query.owner != principal().username && isUser()\"\\n popover=\"Query shared by another user. You may not edit or delete it.\"\\n popover-trigger=\"mouseenter\"></em>\\n <span class=\"actions-bar hovered-item\">\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n popover=\"Edit query\" popover-trigger=\"mouseenter\"\\n ng-click=\"editQuery(query)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-edit\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n ng-show=\"query.owner == principal().username && isUser()\"\\n popover=\"Delete query\" popover-trigger=\"mouseenter\"\\n ng-click=\"deleteQuery(query.name)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-trash\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t\t<button class=\"btn btn-link btn-sm\"\\n popover=\"Get URL to query\" popover-trigger=\"mouseenter\"\\n ng-click=\"copyToClipboardQuery(query.name, query.owner)\">\\n\t\t\t\t\t\t\t\t<span class=\"icon-link\"></span>\\n\t\t\t\t\t\t\t</button>\\n\t\t\t\t\t\t</span>\\n </li>\\n </ul>\\n </script>\\n\\n <!--\\n <div class=\"collapse width pull-right well\" id=\"sampleQueriesCollapse\">\\n <div class=\"list-group-item-heading\">Select saved query from the list</div>\\n <ul id=\"wb-sparql-queryInSampleQueries\" class=\"queries list-unstyled\">\\n <li ng-repeat=\"query in sampleQueries\">\\n\\n <a href=\"#\" ng-click=\"querySelected(query.body)\"><i class=\"fa fa-1x fa-caret-right\"></i>{{query.name}}</a>\\n <span>\\n <i ng-show=\"canWriteActiveRepo()\" tooltip=\"Edit query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-pencil-square-o fa-1x editSampleQuery\" ng-click=\"editQuery(query)\"></i>\\n <i ng-show=\"canWriteActiveRepo()\" tooltip=\"Delete query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-trash-o fa-1x deleteSampleQuery\" ng-click=\"deleteQuery(query.name)\"></i>\\n <i tooltip=\"Get URL to query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-link fa-1x\" ng-click=\"copyToClipboardQuery(query.name)\"></i>\\n </span>\\n </li>\\n </ul>\\n </div>\\n -->\\n\\n <div id=\"queryEditor\">\\n <textarea ng-model=\"query\" id=\"query\" rows=\"16\" cols=\"100\"></textarea>\\n\\n <div id=\"yasqe_buttons_mocked\" style=\"display: none\"></div>\\n <div id=\"yasqe_buttons\" ng-hide=\"notoolbar\">\\n <div id=\"buttons\">\\n <button class=\"btn btn-link\" id=\"wb-sparql-saveQuery\"\\n ng-show=\"!notoolbarSaved && isUser()\"\\n ng-click=\"saveTab(currentQuery.id); saveQuery(currentQuery);\"\\n data-container=\"#queryEditor\"\\n tooltip=\"Create saved query\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\">\\n <em class=\"icon-save icon-2-5x\"></em>\\n </button>\\n <!-- Popover with focus trigger on Safari 7+ needs an <a> with tabindex -->\\n <a tabindex=\"0\" class=\"btn btn-link\" id=\"wb-sparql-toggleSampleQueries\"\\n ng-hide=\"notoolbarSaved\"\\n ng-click=\"toggleSampleQueries()\"\\n data-container=\"#queryEditor\"\\n tooltip=\"Show saved queries\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\"\\n popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\">\\n <!-- This popover has to be on the both elements (<a> and inner <span>) so it can be shown in all browsers (Chrome, IE11, Edge, Firefox) -->\\n <span class=\"icon-folder icon-2-5x\"\\n popover-template=\"\\'sampleQueriesPopoverTemplate.html\\'\"\\n popover-trigger=\"focus\"\\n popover-placement=\"left\"\\n popover-append-to-body=\"true\"></span>\\n </a>\\n <button class=\"btn btn-link\" id=\"wb-sparql-copyToClipboardQuery\"\\n ng-hide=\"notoolbarCopy\"\\n ng-click=\"copyToClipboardQuery()\"\\n tooltip=\"Get URL to current query\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-link icon-2-5x\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"inference\"\\n ng-hide=\"notoolbarInference\"\\n ng-click=\"currentQuery.inference = !currentQuery.inference\"\\n tooltip=\"Include inferred data in results: {{currentQuery.inference ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n ng-class=\"{\\'icon-inferred-on\\':currentQuery.inference, \\'icon-inferred-off\\':!currentQuery.inference}\"></span>\\n </button>\\n <button class=\"btn btn-link\" id=\"sameAs\"\\n ng-hide=\"notoolbarSameAs\"\\n ng-click=\"currentQuery.sameAs = !currentQuery.sameAs\"\\n tooltip=\"Expand results over owl:sameAs: {{currentQuery.sameAs ? \\'ON\\' : \\'OFF\\'}}\"\\n tooltip-append-to-body=\"true\">\\n <span class=\"icon-2-5x\"\\n tooltip=\"{{!currentQuery.inference ? \\'Requires \\\\\\'Include Inferred\\\\\\'!\\' : \\'\\'}}\"\\n ng-class=\"{\\'icon-sameas-on\\':currentQuery.sameAs, \\'icon-sameas-off\\':!currentQuery.sameAs}\"></span>\\n </button>\\n </div>\\n </div>\\n <div id=\"runButton\" ng-hide=\"norun\">\\n <button id=\"wb-sparql-runQuery\" class=\"btn btn-primary\" ng-disabled=\"queryIsRunning\"\\n ng-click=\"runQuery(false, $event.shiftKey)\">\\n {{runButtonName}}\\n </button>\\n </div>\\n <div>\\n <keyboard-shortcuts template-url=\"res/sparql/keyboard-shortcuts.html\"></keyboard-shortcuts>\\n </div>\\n <!--\\n <div id=\"checkboxes\">\\n -->\\n <!-- TODO: Disable this for now, because it is causing bigger bugs/problems https://jira.ontotext.com/browse/OWLIM-2081\\n <input id=\"sameAs\" ng-model=\"currentQuery.sameAs\" data-label=\"disable sameAs\" name=\"equivalent\" value=\"http://www.ontotext.com/disable-sameAs\" type=\"checkbox\"/> -->\\n <!--\\n <label>\\n <input id=\"inference\" ng-model=\"currentQuery.inference\" type=\"checkbox\" value=\"true\" />\\n Include inferred\\n </label>\\n </div>\\n -->\\n </div>\\n <!--<div id=\"separator\" ng-if=\"!orientationViewMode\" ng-mousedown=\"onDragStart($event)\" draggable=\"true\" ondragend=\"angular.element(this).scope().onDragEnd(event)\"></div>-->\\n </div>\\n\\n </div>\\n\\n <div class=\"clearfix mb-2\" ng-hide=\"viewMode === \\'yasr\\'\" id=\"yasr\"\\n ng-class=\"orientationViewMode ? \\'col-xs-12 col-lg-12\\' : viewMode == \\'editor\\' ? \\'col-xs-12 vertical\\' : \\'col-xs-6 vertical\\'\">\\n <pagination\\n class=\"nav navbar-right\"\\n ng-show=\"currentTabConfig.queryType != \\'UPDATE\\' && !queryIsRunning && currentTabConfig.allResultsCount > currentTabConfig.pageSize\"\\n total-items=\"currentTabConfig.allResultsCount\"\\n items-per-page=\"currentTabConfig.pageSize\"\\n ng-model=\"currentTabConfig.page\"\\n ng-change=\"changePagination()\"\\n direction-links=\"true\"\\n boundary-l\\n max-size=\"5\"\\n rotate=\"true\"\\n previous-text=\"&lsaquo;\"\\n next-text=\"&rsaquo;\"\\n first-text=\"&laquo;\"\\n last-text=\"&raquo;\">\\n </pagination>\\n\\n <div class=\"yasr\" id=\"yasr-inner\">\\n <div ng-hide=\"nostatus || currentTabConfig.queryType || queryIsRunning\"\\n class=\"alert alert-info no-icon no-query-run\">No results from previous run.\\n Click Run or press Ctrl/Cmd-Enter to execute the current query or update.\\n </div>\\n <!--ng-show=\"!queryIsRunning\">-->\\n <div class=\\'yasr_header mb-1 clearfix\\'\\n ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && currentTabConfig.queryType != \\'ASK\\' && !queryIsRunning\">\\n <div class=\"resultsVisualButton btn-group pull-right\">\\n <button class=\"btn btn-primary btn-sm\" ng-show=\"!queryIsRunning && currentTabConfig.queryType && (currentTabConfig.queryType == \\'CONSTRUCT\\' || currentTabConfig.queryType == \\'DESCRIBE\\')\"\\n ng-click=\"goToVisual()\">\\n Visual\\n </button>\\n </div>\\n </div>\\n <h6 class=\"alert alert-danger no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.errorMessage\">Error: {{currentTabConfig.errorMessage}}</h6>\\n <h6 class=\"alert alert-warning no-icon additional\" ng-show=\"!queryIsRunning && !nostatus && currentTabConfig.warningMessage\">Warning: {{currentTabConfig.warningMessage}}</h6>\\n <div class=\"alert alert-info no-icon results-info\"\\n ng-show=\"!nostatus && currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\">\\n <div class=\"text-xs-right\">\\n <span class=\"icon-warning icon-lg\"\\n ng-show=\"getStaleWarningMessage()\"\\n tooltip=\"{{getStaleWarningMessage()}}\" tooltip-trigger=\"mouseenter\"\\n tooltip-append-to-body=\"true\"></span>\\n <span ng-show=\"currentTabConfig.queryType != \\'ASK\\'\" class=\"results-description\">\\n {{getResultsDescription()}}\\n </span>\\n <span ng-show=\"currentTabConfig.timeTook\" class=\"query-duration\">\\n Query took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n </div>\\n <div class=\\'alert alert-info no-icon update-info\\'\\n ng-show=\"!nostatus && currentTabConfig.queryType == \\'UPDATE\\' && !queryIsRunning\">\\n {{getUpdateDescription()}}\\n <span ng-show=\"currentTabConfig.timeTook\">\\n {{currentTabConfig.customUpdateMessage ? \\'Operation\\' : \\'Update\\'}} took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </span>\\n </div>\\n <div class=\"alert alert-danger no-icon results-info update-info\" ng-show=\"currentTabConfig.queryType == \\'ERROR\\'\">\\n <div>\\n <div class=\"pull-right\" ng-show=\"currentTabConfig.timeTook\">\\n Operation took {{getHumanReadableSeconds(currentTabConfig.timeTook, true)}}, {{ getHumanReadableTimestamp(currentTabConfig.timeFinished) }}.\\n </div>\\n <h6>Error<span ng-show=\"yasr.results.getException().status > 0\"> {{yasr.results.getException().status}}: {{yasr.results.getException().statusText}}</span></h6>\\n </div>\\n\\n <div class=\"plaintext\">{{yasr.results.getException().responseText}}</div>\\n </div>\\n <div class=\\'yasr_results\\' ng-show=\"currentTabConfig.queryType && currentTabConfig.queryType != \\'UPDATE\\' && currentTabConfig.queryType != \\'ERROR\\' && !queryIsRunning\"></div>\\n </div>\\n\\n <div ng-show=\"queryIsRunning && currentTrackAlias\" class=\"qe-aborter\">\\n <div disabled-wrapper class=\"d-inline-block\" popover=\"{{abortRequested ? (lastRunQueryMode === \\'update\\' ? \\'Update was requested to abort and will be terminated if possible\\' : \\'Query was requested to abort and will be terminated on the first I/O operation\\') : (lastRunQueryMode === \\'update\\' ? \\'Click to abort update\\' : \\'Click to abort query\\')}}\"\\n popover-trigger=\"mouseenter\"\\n popover-placement=\"left\">\\n <div ng-class=\"abortRequested ? \\'disabled\\' : \\'\\'\"> <!-- Keep this div -->\\n <button ng-disabled=\"abortRequested\" class=\"btn btn-xs btn-primary\"\\n ng-click=\"abortCurrentQuery()\" ng-hide=\"!isUserLoggedIn() && isSecurityEnabled()\">\\n {{abortRequested ? \\'Stop has been requested\\' : (lastRunQueryMode === \\'update\\' ? \\'Abort update\\' : \\'Abort query\\')}}\\n </button>\\n </div>\\n </div>\\n </div>\\n\\n <div onto-loader-new\\n ng-if=\"queryIsRunning\"\\n ng-show=\"queryIsRunning\"\\n class=\"sparql-loader\"\\n size=\"75\"\\n message=\"getLoaderMessage\"\\n timeout=\"[1]\">\\n </div>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[114],{168:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.0.0-TR7" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n tooltip="Close search" tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n tooltip="Search RDF resources"\n tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[114],{168:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=2.0.0-TR8" rel="stylesheet"/>\n\n<div ng-if="getActiveRepository() && hasActiveLocation() && isNotLoading()" ng-cloak>\n <div id="search-box" class="card search-rdf-input" ng-keydown="onKeyDown($event)" ng-if="!isHomePage()">\n <div class="card-block">\n <search-resource-input namespacespromise="getNamespacesPromise"\n autocompletepromisestatus="getAutocompletePromise"\n empty="empty"\n open-in-new-tab="true"\n preserve-search="true"\n radio-buttons="true"\n clear-input-icon="true">\n </search-resource-input>\n <button class="btn btn-link close-rdf-search-btn"\n tooltip="Close search" tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="hideInput()">\n <i class="icon-close icon-2x" aria-hidden="true"></i>\n </button>\n </div>\n </div>\n <button class="btn btn-link search-rdf-btn"\n tooltip="Search RDF resources"\n tooltip-placement="bottom"\n tooltip-trigger="mouseenter"\n ng-click="showInput()">\n <i class="icon-search icon-2x" aria-hidden="true"></i>\n </button>\n</div>\n';return __p}}}]);
2
2
  //# sourceMappingURL=114.282a327015f8ae87918b.bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///./src/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,k7CAGP,OAAOA","file":"114.282a327015f8ae87918b.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=2.0.0-TR7\" rel=\"stylesheet\"/>\\n\\n<div ng-if=\"getActiveRepository() && hasActiveLocation() && isNotLoading()\" ng-cloak>\\n <div id=\"search-box\" class=\"card search-rdf-input\" ng-keydown=\"onKeyDown($event)\" ng-if=\"!isHomePage()\">\\n <div class=\"card-block\">\\n <search-resource-input namespacespromise=\"getNamespacesPromise\"\\n autocompletepromisestatus=\"getAutocompletePromise\"\\n empty=\"empty\"\\n open-in-new-tab=\"true\"\\n preserve-search=\"true\"\\n radio-buttons=\"true\"\\n clear-input-icon=\"true\">\\n </search-resource-input>\\n <button class=\"btn btn-link close-rdf-search-btn\"\\n tooltip=\"Close search\" tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"hideInput()\">\\n <i class=\"icon-close icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n </div>\\n </div>\\n <button class=\"btn btn-link search-rdf-btn\"\\n tooltip=\"Search RDF resources\"\\n tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"showInput()\">\\n <i class=\"icon-search icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///./src/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,k7CAGP,OAAOA","file":"114.282a327015f8ae87918b.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=2.0.0-TR8\" rel=\"stylesheet\"/>\\n\\n<div ng-if=\"getActiveRepository() && hasActiveLocation() && isNotLoading()\" ng-cloak>\\n <div id=\"search-box\" class=\"card search-rdf-input\" ng-keydown=\"onKeyDown($event)\" ng-if=\"!isHomePage()\">\\n <div class=\"card-block\">\\n <search-resource-input namespacespromise=\"getNamespacesPromise\"\\n autocompletepromisestatus=\"getAutocompletePromise\"\\n empty=\"empty\"\\n open-in-new-tab=\"true\"\\n preserve-search=\"true\"\\n radio-buttons=\"true\"\\n clear-input-icon=\"true\">\\n </search-resource-input>\\n <button class=\"btn btn-link close-rdf-search-btn\"\\n tooltip=\"Close search\" tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"hideInput()\">\\n <i class=\"icon-close icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n </div>\\n </div>\\n <button class=\"btn btn-link search-rdf-btn\"\\n tooltip=\"Search RDF resources\"\\n tooltip-placement=\"bottom\"\\n tooltip-trigger=\"mouseenter\"\\n ng-click=\"showInput()\">\\n <i class=\"icon-search icon-2x\" aria-hidden=\"true\"></i>\\n </button>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (window.webpackJsonp=window.webpackJsonp||[]).push([[12],{85:function(e,r,t){"use strict";t.r(r);t(2),t(9),t(17),t(18);var s=t(0);const o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","toastr"]),n=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},o={};for(let n=0;n<e.length;n++){const i=e[n];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,o[s]=o[s]||{},"READ_REPO"===r?o[s].read=!0:"WRITE_REPO"===r&&(o[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:o}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope",function(e,r,t,s,o,n,i,a){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},i.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):i.search().expired&&t.error("Your authentication token has expired. Please login again.","Login error"),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(r,t,o){s.authenticate(r,o("Authorization"));const u=n((function(){a.returnToUrl?i.url(a.returnToUrl):i.path("/")}),500);e.$on("$destroy",(function(){n.cancel(u)}))})).error((function(r,s){if(401===s)t.error("Wrong credentials!","Error"),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$modal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService",function(e,r,t,s,o,i,a,u){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){u.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=n(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=i((function(){s.location.reload()}),500);e.$on("$destroy",(function(){i.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?u.getFreeAccess().then((function(s){let n=s.data.authorities,i=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return e.id}));return _.each(n,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:i}}}}).result.then((function(e){n=e.authorities,i=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),n,i,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){a.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the user '"+r+"'?",warning:!0}).result.then((function(){e.loader=!0,u.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$modalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")}}]),o.controller("CommonUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth",function(e,r,t,o,n,i,a){e.isAdmin=function(){return a.hasRole(s.UserRole.ROLE_ADMIN)},e.hasExternalAuth=function(){return a.hasExternalAuth()},e.hasEditRestrictions=function(){return e.user&&e.user.username===s.UserType.ADMIN},e.isOverrideAuth=function(){return a.isDefaultAuthEnabled()},e.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(e)},e.hasReadPermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.READ_REPO[r]||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&(e.grantedAuthorities.READ_REPO["*"]||e.grantedAuthorities.WRITE_REPO["*"])},e.hasWritePermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&e.grantedAuthorities.WRITE_REPO["*"]},e.readCheckDisabled=function(r){return e.hasWritePermission(r)||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.READ_REPO["*"]||e.hasEditRestrictions()},e.writeCheckDisabled=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.WRITE_REPO["*"]||e.hasEditRestrictions()},e.userType=s.UserType.USER,e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},e.validatePassword=function(){return e.noPassword?(e.passwordError="",e.confirmPasswordError="",!0):e.user.password!==e.user.confirmpassword?(e.user.password?(e.passwordError="",e.confirmPasswordError="Confirm password!"):(e.passwordError="Enter password!",e.confirmPasswordError=""),!1):(e.passwordError="",e.confirmPasswordError="",!0)},e.isLocalAuthentication=function(){return"Local"===a.getAuthImplementation()},e.updateUser=function(){if(!e.validateForm())return!1;e.isLocalAuthentication()&&e.setGrantedAuthorities(),e.repositoryCheckError||e.updateUserHttp()},e.setNoPassword=function(){e.noPassword&&(e.user.password="",e.user.confirmpassword="",e.passwordError="",e.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,s,o,n,i,a,u){angular.extend(this,a("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=o((function(){s.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.pageTitle="Create new user",e.passwordPlaceholder="Password",e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.createUser()},e.createUserHttp=function(){e.loader=!0,u.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" has been created.");const r=o((function(){e.loader=!1,s.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError="Enter username!",r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError="Enter password!",r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError="Confirm password!",r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,o,i,a,u,c,p,d){angular.extend(this,p("CommonUserCtrl",{$scope:e})),e.mode="edit",e.saveButtonText="Save",e.goBack=function(){const r=a((function(){o.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=i,e.pageTitle="Edit user: "+e.params.userId,e.passwordPlaceholder="New password",e.userType=s.UserType.USER;const E={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){d.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||E,e.userType=s.UserType.USER;const t=n(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,"Error")}))},e.getUserData(),e.submit=function(){e.updateUser()},e.updateUserHttp=function(){e.loader=!0,d.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" was updated.");const r=a((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),e.user.username===c.getPrincipal().username&&(c.getPrincipal().appSettings=e.user.appSettings)})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService",function(e,r,t){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService",function(e,r,t,s,o,i,a,u){angular.extend(this,a("CommonUserCtrl",{$scope:e})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText="Save",e.goBack=function(){const r=s((function(){t.history.back()}),100);e.$on("$destroy",(function(){s.cancel(r)}))},e.currentUserData=function(){return o.getPrincipal()},e.updateCurrentUserData=function(){_.assign(o.getPrincipal(),e.userData)},e.redirectAdmin=function(){e.currentUserData()||i.redirectToLogin()},e.pageTitle="Settings",e.passwordPlaceholder="New password",e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const c=function(r){r.userData=angular.copy(r.currentUserData()),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=n(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.currentUserData()?c(e):e.$on("securityInit",(function(e){e.currentScope.redirectAdmin(),c(e.currentScope)})),e.loader=!1,e.submit=function(){e.updateUser()},e.updateUserHttp=function(){e.loader=!0,u.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success("The user "+e.user.username+" was updated.");const o=s((function(){e.loader=!1,t.history.back()}),2e3);e.$on("$destroy",(function(){s.cancel(o)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()}}]),o.controller("DeleteUserCtrl",["$scope","$modalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
2
- //# sourceMappingURL=12.449fb5148a68a44ba324.bundle.js.map
1
+ (window.webpackJsonp=window.webpackJsonp||[]).push([[12],{85:function(e,r,t){"use strict";t.r(r);t(2),t(9),t(17),t(18);var s=t(0);const o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","toastr"]),n=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},o={};for(let n=0;n<e.length;n++){const i=e[n];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,o[s]=o[s]||{},"READ_REPO"===r?o[s].read=!0:"WRITE_REPO"===r&&(o[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:o}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope",function(e,r,t,s,o,n,i,a){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},i.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):i.search().expired&&t.error("Your authentication token has expired. Please login again.","Login error"),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(r,t,o){s.authenticate(r,o("Authorization"));const u=n((function(){a.returnToUrl?i.url(a.returnToUrl):i.path("/")}),500);e.$on("$destroy",(function(){n.cancel(u)}))})).error((function(r,s){if(401===s)t.error("Wrong credentials!","Error"),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$modal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService",function(e,r,t,s,o,i,a,u){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){u.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=n(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=i((function(){s.location.reload()}),500);e.$on("$destroy",(function(){i.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?u.getFreeAccess().then((function(s){let n=s.data.authorities,i=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return e.id}));return _.each(n,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:i}}}}).result.then((function(e){n=e.authorities,i=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),n,i,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){a.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the user '"+r+"'?",warning:!0}).result.then((function(){e.loader=!0,u.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,"Error"),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$modalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")}}]),o.controller("CommonUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth",function(e,r,t,o,n,i,a){e.isAdmin=function(){return a.hasRole(s.UserRole.ROLE_ADMIN)},e.hasExternalAuth=function(){return a.hasExternalAuth()},e.hasEditRestrictions=function(){return e.user&&e.user.username===s.UserType.ADMIN},e.isOverrideAuth=function(){return a.isDefaultAuthEnabled()},e.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(e)},e.hasReadPermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.READ_REPO[r]||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&(e.grantedAuthorities.READ_REPO["*"]||e.grantedAuthorities.WRITE_REPO["*"])},e.hasWritePermission=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||e.grantedAuthorities.WRITE_REPO[r]||"SYSTEM"!==r&&e.grantedAuthorities.WRITE_REPO["*"]},e.readCheckDisabled=function(r){return e.hasWritePermission(r)||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.READ_REPO["*"]||e.hasEditRestrictions()},e.writeCheckDisabled=function(r){return e.userType===s.UserType.ADMIN||e.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==r&&"*"!==r&&e.grantedAuthorities.WRITE_REPO["*"]||e.hasEditRestrictions()},e.userType=s.UserType.USER,e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},e.validatePassword=function(){return e.noPassword?(e.passwordError="",e.confirmPasswordError="",!0):e.user.password!==e.user.confirmpassword?(e.user.password?(e.passwordError="",e.confirmPasswordError="Confirm password!"):(e.passwordError="Enter password!",e.confirmPasswordError=""),!1):(e.passwordError="",e.confirmPasswordError="",!0)},e.isLocalAuthentication=function(){return"Local"===a.getAuthImplementation()},e.updateUser=function(){if(!e.validateForm())return!1;e.isLocalAuthentication()&&e.setGrantedAuthorities(),e.repositoryCheckError||e.updateUserHttp()},e.setNoPassword=function(){e.noPassword&&(e.user.password="",e.user.confirmpassword="",e.passwordError="",e.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,s,o,n,i,a,u){angular.extend(this,a("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=o((function(){s.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.pageTitle="Create new user",e.passwordPlaceholder="Password",e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.createUser()},e.createUserHttp=function(){e.loader=!0,u.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" has been created.");const r=o((function(){e.loader=!1,s.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError="Enter username!",r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError="Enter password!",r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError="Confirm password!",r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService",function(e,r,t,o,i,a,u,c,p,d){angular.extend(this,p("CommonUserCtrl",{$scope:e})),e.mode="edit",e.saveButtonText="Save",e.goBack=function(){const r=a((function(){o.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=i,e.pageTitle="Edit user: "+e.params.userId,e.passwordPlaceholder="New password",e.userType=s.UserType.USER;const l={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){d.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||l,e.userType=s.UserType.USER;const t=n(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,"Error")}))},e.getUserData(),e.submit=function(){e.updateUser()},e.updateUserHttp=function(){e.loader=!0,d.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success("The user "+e.user.username+" was updated.");const r=a((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),e.user.username===c.getPrincipal().username&&(c.getPrincipal().appSettings=e.user.appSettings)})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,"Error")}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService",function(e,r,t){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService","ModalService",function(e,r,t,o,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText="Save",e.goBack=function(){const r=o((function(){t.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.currentUserData=function(){return i.getPrincipal()},e.updateCurrentUserData=function(){_.assign(i.getPrincipal(),e.userData)},e.redirectAdmin=function(){e.currentUserData()||a.redirectToLogin()},e.pageTitle="Settings",e.passwordPlaceholder="New password",e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const d=function(r){r.userData=angular.copy(r.currentUserData()),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=n(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.currentUserData()?d(e):e.$on("securityInit",(function(e){e.currentScope.redirectAdmin(),d(e.currentScope)})),e.loader=!1,e.submit=function(){const r=n(e.userData.authorities);e.userType=r.userType,e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Save user settings",message:"If you unset the password and then enable security, that user will not be able to log into GraphDB through the workbench. Are you sure that you want to continue?",warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,c.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success("The user "+e.user.username+" was updated.");const s=o((function(){e.loader=!1,t.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(s)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,"Error")}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()}}]),o.controller("DeleteUserCtrl",["$scope","$modalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
2
+ //# sourceMappingURL=12.60db051e76264d3f95b2.bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/js/angular/security/controllers.js"],"names":["securityCtrl","angular","module","parseAuthorities","authorities","userType","USER","grantedAuthorities","repositories","i","length","role","ROLE_ADMIN","ADMIN","ROLE_REPO_MANAGER","REPO_MANAGER","ROLE_USER","indexOf","index","op","substr","repo","read","write","userTypeDescription","getUserRoleName","controller","$scope","$http","toastr","$jwtAuth","$openIDAuth","$timeout","$location","$rootScope","username","password","loginWithOpenID","loginOpenID","search","noaccess","error","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","encodeURIComponent","headers","success","data","status","authenticate","timer","returnToUrl","path","$on","cancel","wrongCredentials","msg","getError","$modal","$window","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","toggleSecurity","location","reload","toggleFreeAccess","updateFreeAccess","getFreeAccess","then","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","id","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","warning","deleteUser","name","$modalInstance","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","WRITE_REPO","push","READ_REPO","close","dismiss","isAdmin","hasRole","hasEditRestrictions","user","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","arguments","authority","hasReadPermission","repositoryId","hasWritePermission","readCheckDisabled","writeCheckDisabled","validatePassword","noPassword","passwordError","confirmPasswordError","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","$controller","extend","this","mode","saveButtonText","goBack","history","back","pageTitle","passwordPlaceholder","submit","createUser","createUserHttp","pass","usernameError","$routeParams","params","userId","defaultUserSettings","getUserData","getUser","userData","external","undefined","getPrincipal","debugMapping","mapping","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","map","filter","reverse","orderBy","p","currentUserData","updateCurrentUserData","assign","redirectAdmin","redirectToLogin","initUserData","scope","copy","currentScope","updateUserData"],"mappings":"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","file":"12.60db051e76264d3f95b2.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/openid-auth.service';\nimport 'angular/rest/security.rest.service';\nimport {UserUtils, UserRole, UserType} from 'angular/utils/user-utils';\n\nconst SYSTEM_REPO = 'SYSTEM';\nconst READ_REPO = 'READ_REPO';\nconst READ_REPO_PREFIX = 'READ_REPO_';\nconst WRITE_REPO = 'WRITE_REPO';\nconst WRITE_REPO_PREFIX = 'WRITE_REPO_';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.openIDService',\n 'graphdb.framework.rest.security.service',\n 'toastr'\n];\n\nconst securityCtrl = angular.module('graphdb.framework.security.controllers', modules);\n\nconst setGrantedAuthorities = function ($scope) {\n function pushAuthority() {\n for (let i = 0; i < arguments.length; i++) {\n const authority = arguments[i];\n if (_.indexOf($scope.user.grantedAuthorities, authority) < 0) {\n $scope.user.grantedAuthorities.push(authority);\n }\n }\n }\n\n $scope.user.grantedAuthorities = [];\n\n $scope.repositoryCheckError = true;\n if ($scope.userType === UserType.ADMIN) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_ADMIN);\n } else if ($scope.userType === UserType.REPO_MANAGER) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_REPO_MANAGER);\n } else {\n pushAuthority(UserRole.ROLE_USER);\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(WRITE_REPO_PREFIX + index, READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(READ_REPO_PREFIX + index);\n }\n }\n }\n};\n\nconst parseAuthorities = function (authorities) {\n let userType = UserType.USER;\n const grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n const repositories = {};\n for (let i = 0; i < authorities.length; i++) {\n const role = authorities[i];\n if (role === UserRole.ROLE_ADMIN) {\n userType = UserType.ADMIN;\n } else if (role === UserRole.ROLE_REPO_MANAGER) {\n if (userType !== UserType.ADMIN) {\n userType = UserType.REPO_MANAGER;\n }\n } else if (role === UserRole.ROLE_USER) {\n userType = UserType.USER;\n } else if (role.indexOf('ROLE_') !== 0) {\n const index = role.indexOf('_', role.indexOf('_') + 1);\n const op = role.substr(0, index);\n const repo = role.substr(index + 1);\n grantedAuthorities[op][repo] = true;\n repositories[repo] = repositories[repo] || {};\n if (op === READ_REPO) {\n repositories[repo].read = true;\n } else if (op === WRITE_REPO) {\n repositories[repo].write = true;\n }\n }\n }\n\n return {\n userType: userType,\n userTypeDescription: UserUtils.getUserRoleName(userType),\n grantedAuthorities: grantedAuthorities,\n repositories: repositories\n };\n};\n\nsecurityCtrl.controller('LoginCtrl', ['$scope', '$http', 'toastr', '$jwtAuth', '$openIDAuth', '$timeout', '$location', '$rootScope',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $timeout, $location, $rootScope) {\n $scope.username = '';\n $scope.password = '';\n\n $scope.loginWithOpenID = function() {\n $jwtAuth.loginOpenID();\n };\n\n if ($location.search().noaccess) {\n toastr.error('User has no access rights or configuration error.', 'Login error');\n } else if ($location.search().expired) {\n toastr.error('Your authentication token has expired. Please login again.', 'Login error');\n }\n\n $scope.isGDBLoginEnabled = function() {\n return $jwtAuth.passwordLoginEnabled;\n };\n\n $scope.isOpenIDEnabled = function() {\n return $jwtAuth.openIDEnabled;\n };\n\n $scope.login = function () {\n $http({\n method: 'POST',\n url: 'rest/login/' + encodeURIComponent($scope.username),\n headers: {\n 'X-GraphDB-Password': $scope.password\n }\n }).success(function (data, status, headers) {\n $jwtAuth.authenticate(data, headers('Authorization'));\n const timer = $timeout(function () {\n if ($rootScope.returnToUrl) {\n // go back to remembered url\n $location.url($rootScope.returnToUrl);\n } else {\n // no remembered url, go to home\n $location.path('/');\n }\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data, status) {\n if (status === 401) {\n toastr.error('Wrong credentials!', 'Error');\n $scope.wrongCredentials = true;\n $scope.username = '';\n $scope.password = '';\n } else {\n const msg = getError(data);\n toastr.error(msg, status);\n }\n\n });\n };\n }]);\n\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$modal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService',\n function ($scope, $modal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityRestService) {\n\n $scope.loader = true;\n $scope.securityEnabled = function () {\n return $jwtAuth.isSecurityEnabled();\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n $scope.getAuthImplementation = function () {\n return $jwtAuth.getAuthImplementation();\n };\n $scope.freeAccessEnabled = function () {\n return $jwtAuth.isFreeAccessEnabled();\n };\n $scope.getUsers = function () {\n SecurityRestService.getUsers()\n .success(function (data) {\n $scope.users = data;\n for (let i = 0; i < $scope.users.length; i++) {\n const pa = parseAuthorities($scope.users[i].grantedAuthorities);\n $scope.users[i].userType = pa.userType;\n $scope.users[i].userTypeDescription = pa.userTypeDescription;\n $scope.users[i].repositories = pa.repositories;\n }\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n };\n $scope.getUsers();\n\n $scope.$on('repositoryIsSet', function () {\n $scope.getUsers();\n });\n\n $scope.toggleSecurity = function () {\n $jwtAuth.toggleSecurity(!$jwtAuth.isSecurityEnabled());\n if ($jwtAuth.isSecurityEnabled()) {\n const timer = $timeout(function () {\n $window.location.reload();\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n };\n\n $scope.toggleFreeAccess = function (updateFreeAccess) {\n if (!$jwtAuth.isFreeAccessEnabled() || ($jwtAuth.isFreeAccessEnabled() && updateFreeAccess)) {\n SecurityRestService.getFreeAccess().then(function (res) {\n let authorities = res.data.authorities;\n let appSettings = res.data.appSettings || {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/security/templates/modal/default-authorities.html',\n controller: 'DefaultAuthoritiesCtrl',\n resolve: {\n data: function () {\n return {\n // converts the array rights to hash ones. why, oh, why do we have both formats?\n defaultAuthorities: function () {\n const defaultAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n // We might have old (no longer existing) repositories so we have to check that\n const repoIds = _.mapKeys($scope.getRepositories(), function (r) {\n return r.id;\n });\n _.each(authorities, function (a) {\n // indexOf works in IE 11, startsWith doesn't\n if (a.indexOf(WRITE_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(11))) {\n defaultAuthorities[WRITE_REPO][a.substr(11)] = true;\n }\n } else if (a.indexOf(READ_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(10))) {\n defaultAuthorities[READ_REPO][a.substr(10)] = true;\n }\n }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings\n };\n }\n }\n });\n modalInstance.result.then(function (data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n $jwtAuth.toggleFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), authorities, appSettings, updateFreeAccess);\n });\n });\n } else {\n $jwtAuth.toggleFreeAccess(!$jwtAuth.isFreeAccessEnabled(), []);\n }\n };\n\n $scope.editFreeAccess = function () {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function (username) {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: 'Are you sure you want to delete the user \\'' + username + '\\'?',\n warning: true\n }).result.then(function () {\n $scope.loader = true;\n SecurityRestService.deleteUser(username).success(function () {\n $scope.getUsers();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\n\n });\n };\n\n // Should be able to send the original username to $routeParams\n $scope.encodeURIComponent = function (name) {\n return encodeURIComponent(name);\n };\n }]);\n\nsecurityCtrl.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$modalInstance', 'data', '$rootScope',\n function ($scope, $http, $modalInstance, data, $rootScope) {\n $scope.grantedAuthorities = data.defaultAuthorities();\n $scope.appSettings = data.appSettings;\n\n $scope.hasActiveLocation = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return !_.isEmpty($rootScope.globalLocation);\n };\n\n $scope.getRepositories = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return $rootScope.globalRepositories;\n };\n\n $scope.ok = function () {\n const auth = [];\n $scope.repositoryCheckError = true;\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n auth.push(WRITE_REPO_PREFIX + index);\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index] && auth.indexOf(READ_REPO_PREFIX + index) === -1) {\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n if (!$scope.repositoryCheckError) {\n $modalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n }]);\n\nsecurityCtrl.controller('CommonUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth) {\n\n $scope.isAdmin = function () {\n return $jwtAuth.hasRole(UserRole.ROLE_ADMIN);\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n\n $scope.hasEditRestrictions = function () {\n return $scope.user && $scope.user.username === UserType.ADMIN;\n };\n\n $scope.isOverrideAuth = function () {\n return $jwtAuth.isDefaultAuthEnabled();\n };\n\n $scope.setGrantedAuthorities = function () {\n setGrantedAuthorities($scope);\n };\n\n $scope.hasReadPermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.READ_REPO[repositoryId]\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO\n && ($scope.grantedAuthorities.READ_REPO['*'] || $scope.grantedAuthorities.WRITE_REPO['*']);\n };\n\n $scope.hasWritePermission = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || $scope.grantedAuthorities.WRITE_REPO[repositoryId]\n || repositoryId !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*'];\n };\n\n $scope.readCheckDisabled = function (repositoryId) {\n return $scope.hasWritePermission(repositoryId)\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function (repositoryId) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repositoryId !== SYSTEM_REPO && repositoryId !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n $scope.validatePassword = function() {\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n return true;\n }\n if ($scope.user.password !== $scope.user.confirmpassword) {\n if (!$scope.user.password) {\n $scope.passwordError = 'Enter password!';\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = 'Confirm password!';\n }\n return false;\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n return true;\n };\n\n $scope.isLocalAuthentication = function() {\n return $jwtAuth.getAuthImplementation() === 'Local';\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n if ($scope.isLocalAuthentication()) {\n $scope.setGrantedAuthorities();\n }\n\n if (!$scope.repositoryCheckError) {\n $scope.updateUserHttp();\n }\n };\n\n $scope.setNoPassword = function() {\n if ($scope.noPassword) {\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n }\n }]);\n\nsecurityCtrl.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'add';\n $scope.saveButtonText = 'Create';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.pageTitle = 'Create new user';\n $scope.passwordPlaceholder = 'Password';\n\n $scope.user = {\n 'username': '',\n 'password': '',\n 'confirmpassword': '',\n 'grantedAuthorities': [],\n 'appSettings': {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n }\n };\n\n $scope.submit = function () {\n $scope.createUser();\n };\n\n $scope.createUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.createUser({\n username: $scope.user.username,\n pass: $scope.user.password,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' has been created.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.createUser = function () {\n if ($scope.validateForm()) {\n $scope.setGrantedAuthorities();\n\n if (!$scope.repositoryCheckError) {\n $scope.createUserHttp();\n }\n }\n };\n\n $scope.validateForm = function () {\n let result = true;\n if (!$scope.user.username) {\n $scope.usernameError = 'Enter username!';\n result = false;\n } else {\n $scope.usernameError = '';\n }\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n } else {\n if (!$scope.user.password) {\n $scope.passwordError = 'Enter password!';\n result = false;\n } else {\n $scope.passwordError = '';\n }\n if (!$scope.user.confirmpassword || $scope.user.password !== $scope.user.confirmpassword) {\n $scope.confirmPasswordError = 'Confirm password!';\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityCtrl.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'edit';\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.params = $routeParams;\n $scope.pageTitle = 'Edit user: ' + $scope.params.userId;\n $scope.passwordPlaceholder = 'New password';\n $scope.userType = UserType.USER;\n const defaultUserSettings = {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n\n if (!$jwtAuth.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function () {\n SecurityRestService.getUser($scope.params.userId).success(function (data) {\n $scope.userData = data;\n $scope.user = {username: $scope.userData.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = $scope.userData.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = UserType.USER;\n const pa = parseAuthorities(data.grantedAuthorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.getUserData();\n\n $scope.submit = function () {\n $scope.updateUser();\n };\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUser({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success('The user ' + $scope.user.username + ' was updated.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n // if we update the settings of the currently logged user, update the principal\n if ($scope.user.username === $jwtAuth.getPrincipal().username) {\n $jwtAuth.getPrincipal().appSettings = $scope.user.appSettings;\n }\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityRestService',\n function ($scope, toastr, SecurityRestService) {\n\n $scope.debugMapping = function (role, mapping) {\n const method = mapping.split(':');\n SecurityRestService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0]\n });\n };\n\n const loadRoles = function () {\n SecurityRestService.getRoles()\n .success(function (data) {\n $scope.roleMappings = data;\n $scope.roles = _.keys($scope.roleMappings);\n $scope.mappings = _.keys($scope.roleMappings[$scope.roles[0]]);\n const permissionsCount = _.map($scope.roles, function (role) {\n return [role, _.filter($scope.roleMappings[role]).length];\n });\n $scope.roles = _.reverse(_.map(_.orderBy(permissionsCount, function (p) {\n return p[1];\n }), function (p) {\n return p[0];\n }));\n })\n .error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.$on('repositoryIsSet', function () {\n loadRoles();\n });\n}]);\n\nsecurityCtrl.controller('ChangeUserPasswordSettingsCtrl', ['$scope', 'toastr', '$window', '$timeout', '$jwtAuth', '$rootScope', '$controller', 'SecurityRestService', 'ModalService',\n function ($scope, toastr, $window, $timeout, $jwtAuth, $rootScope, $controller, SecurityRestService, ModalService) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope}));\n\n $scope.mode = 'settings';\n $scope.hasEditRestrictions = function () {\n return true;\n };\n $scope.saveButtonText = 'Save';\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.currentUserData = function () {\n return $jwtAuth.getPrincipal();\n };\n\n $scope.updateCurrentUserData = function () {\n _.assign($jwtAuth.getPrincipal(), $scope.userData);\n };\n\n //call it as a function so I can make test on it\n $scope.redirectAdmin = function () {\n if (!$scope.currentUserData()) {\n $rootScope.redirectToLogin();\n }\n };\n\n $scope.pageTitle = 'Settings';\n $scope.passwordPlaceholder = 'New password';\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n const initUserData = function (scope) {\n // Copy needed so that Cancel would work correctly, need to call updateCurrentUserData on OK\n scope.userData = angular.copy(scope.currentUserData());\n scope.user = {username: scope.userData.username};\n scope.user.password = '';\n scope.user.confirmpassword = '';\n scope.user.external = scope.userData.external;\n scope.user.appSettings = scope.userData.appSettings;\n // For backward compatibility\n if (scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] === undefined) {\n scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] = true;\n }\n\n const pa = parseAuthorities(scope.userData.authorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n };\n\n if ($scope.currentUserData()) {\n initUserData($scope);\n } else {\n $scope.$on('securityInit', function (scope) {\n scope.currentScope.redirectAdmin();\n initUserData(scope.currentScope);\n });\n }\n\n $scope.loader = false;\n\n $scope.submit = function () {\n const pa = parseAuthorities($scope.userData.authorities);\n $scope.userType = pa.userType;\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save user settings',\n message: 'If you unset the password and then enable security, that user will not be ' +\n 'able to log into GraphDB through the workbench. Are you sure that you want to continue?',\n warning: true\n }).result.then(function () {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n }\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUserData({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings\n }).success(function () {\n $scope.updateCurrentUserData();\n toastr.success('The user ' + $scope.user.username + ' was updated.');\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n $scope.updateUserHttp();\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('DeleteUserCtrl', ['$scope', '$modalInstance', 'username', function ($scope, $modalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function () {\n $modalInstance.close();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}