graphdb-workbench 2.0.0-TR5 → 2.0.0-TR9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/dist/{0.21974a2453b9a92dec33.bundle.js → 0.965871b861f4dddbba56.bundle.js} +3 -3
- package/dist/0.965871b861f4dddbba56.bundle.js.map +1 -0
- package/dist/{112.b871480dd961ac3c18b6.bundle.js → 112.0c1bdd906ac321ffbf5f.bundle.js} +2 -2
- package/dist/{112.b871480dd961ac3c18b6.bundle.js.map → 112.0c1bdd906ac321ffbf5f.bundle.js.map} +1 -1
- package/dist/114.282a327015f8ae87918b.bundle.js +1 -1
- package/dist/114.282a327015f8ae87918b.bundle.js.map +1 -1
- package/dist/{12.449fb5148a68a44ba324.bundle.js → 12.5d4da897bdd91e8808fa.bundle.js} +2 -2
- package/dist/12.5d4da897bdd91e8808fa.bundle.js.map +1 -0
- package/dist/13.f62fa8acc6e68826e07a.bundle.js +4 -0
- package/dist/13.f62fa8acc6e68826e07a.bundle.js.map +1 -0
- package/dist/14.349458c1675f763995a5.bundle.js +2 -0
- package/dist/14.349458c1675f763995a5.bundle.js.map +1 -0
- package/dist/15.ebce70c05fd90026747b.bundle.js +2 -0
- package/dist/15.ebce70c05fd90026747b.bundle.js.map +1 -0
- package/dist/{17.4b048ae019a8d2fd5b46.bundle.js → 17.f01afdf3b3892d73a3fe.bundle.js} +2 -2
- package/dist/17.f01afdf3b3892d73a3fe.bundle.js.map +1 -0
- package/dist/{18.5514f95535bdd2a71d6e.bundle.js → 18.10f65755b64a6534289e.bundle.js} +2 -2
- package/dist/{18.5514f95535bdd2a71d6e.bundle.js.map → 18.10f65755b64a6534289e.bundle.js.map} +1 -1
- package/dist/{21.e75213686a349ae7df89.bundle.js → 21.b6bf0d54a846411501c7.bundle.js} +2 -2
- package/dist/{21.e75213686a349ae7df89.bundle.js.map → 21.b6bf0d54a846411501c7.bundle.js.map} +1 -1
- package/dist/22.e8167eba683605211409.bundle.js +2 -0
- package/dist/22.e8167eba683605211409.bundle.js.map +1 -0
- package/dist/{23.32f2701680565c5d107b.bundle.js → 23.e3ca5b7bb2cee4f9467f.bundle.js} +3 -3
- package/dist/{23.32f2701680565c5d107b.bundle.js.map → 23.e3ca5b7bb2cee4f9467f.bundle.js.map} +1 -1
- package/dist/{24.8dd957168a8be963b393.bundle.js → 24.d5ea0f435b896dc12709.bundle.js} +2 -2
- package/dist/{24.8dd957168a8be963b393.bundle.js.map → 24.d5ea0f435b896dc12709.bundle.js.map} +1 -1
- package/dist/25.5b3feb79a7be0ca1f4ad.bundle.js +2 -0
- package/dist/25.5b3feb79a7be0ca1f4ad.bundle.js.map +1 -0
- package/dist/26.c4983d9f3009f41beb11.bundle.js +2 -0
- package/dist/26.c4983d9f3009f41beb11.bundle.js.map +1 -0
- package/dist/27.04085d1d15db39ca4a36.bundle.js +2 -0
- package/dist/27.04085d1d15db39ca4a36.bundle.js.map +1 -0
- package/dist/{28.b1c15ce7633c501836c5.bundle.js → 28.57b84065ebe40bb45f72.bundle.js} +2 -2
- package/dist/{28.b1c15ce7633c501836c5.bundle.js.map → 28.57b84065ebe40bb45f72.bundle.js.map} +1 -1
- package/dist/{29.66259b8a21bbb5431a06.bundle.js → 29.959ae6b366d15d0ddea9.bundle.js} +2 -2
- package/dist/{29.66259b8a21bbb5431a06.bundle.js.map → 29.959ae6b366d15d0ddea9.bundle.js.map} +1 -1
- package/dist/{3.9eb2c7cced9d8b971c99.bundle.js → 3.26d967229917c7c5cdfb.bundle.js} +2 -2
- package/dist/{3.9eb2c7cced9d8b971c99.bundle.js.map → 3.26d967229917c7c5cdfb.bundle.js.map} +1 -1
- package/dist/{30.4d469715c2f2d1028b4b.bundle.js → 30.3592aaa1063719853218.bundle.js} +2 -2
- package/dist/30.3592aaa1063719853218.bundle.js.map +1 -0
- package/dist/{31.d810abed46d7c73ade7f.bundle.js → 31.c808da656c9ee6b7e84e.bundle.js} +2 -2
- package/dist/{31.d810abed46d7c73ade7f.bundle.js.map → 31.c808da656c9ee6b7e84e.bundle.js.map} +1 -1
- package/dist/{32.4f4c8e24d97a9d315335.bundle.js → 32.92b02260015995b4f777.bundle.js} +2 -2
- package/dist/{32.4f4c8e24d97a9d315335.bundle.js.map → 32.92b02260015995b4f777.bundle.js.map} +1 -1
- package/dist/{33.ea3b66016bbeff928fc3.bundle.js → 33.479162c943ca9a1982aa.bundle.js} +2 -2
- package/dist/33.479162c943ca9a1982aa.bundle.js.map +1 -0
- package/dist/34.22a096bd891109c927f5.bundle.js +2 -0
- package/dist/34.22a096bd891109c927f5.bundle.js.map +1 -0
- package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js → 35.9c81c96cc1621f9468aa.bundle.js} +2 -2
- package/dist/{35.b9183a8ffba2bbd8daa1.bundle.js.map → 35.9c81c96cc1621f9468aa.bundle.js.map} +1 -1
- package/dist/{36.d444f7ad7724d126da1c.bundle.js → 36.cee947247d32cdcec00e.bundle.js} +2 -2
- package/dist/{36.d444f7ad7724d126da1c.bundle.js.map → 36.cee947247d32cdcec00e.bundle.js.map} +1 -1
- package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js → 37.42e443af5752a63a28fe.bundle.js} +2 -2
- package/dist/{37.e82ed70c9f1ccac1fa36.bundle.js.map → 37.42e443af5752a63a28fe.bundle.js.map} +1 -1
- package/dist/{38.93c5a81548a3294efd9d.bundle.js → 38.5fff5c171cdd2563aad1.bundle.js} +2 -2
- package/dist/{38.93c5a81548a3294efd9d.bundle.js.map → 38.5fff5c171cdd2563aad1.bundle.js.map} +1 -1
- package/dist/{39.30dddbc6461137994eb4.bundle.js → 39.91c49550b6e2d11104fa.bundle.js} +2 -2
- package/dist/{39.30dddbc6461137994eb4.bundle.js.map → 39.91c49550b6e2d11104fa.bundle.js.map} +1 -1
- package/dist/4.786e6f1de67e5c6289a3.bundle.js +2 -0
- package/dist/4.786e6f1de67e5c6289a3.bundle.js.map +1 -0
- package/dist/{40.ae6db480b8323937451c.bundle.js → 40.a7e0220eb0c8a125abde.bundle.js} +2 -2
- package/dist/{40.ae6db480b8323937451c.bundle.js.map → 40.a7e0220eb0c8a125abde.bundle.js.map} +1 -1
- package/dist/41.1258b9502ba9383894d7.bundle.js +2 -0
- package/dist/{41.ba8cb2fb7f46ccb2ab28.bundle.js.map → 41.1258b9502ba9383894d7.bundle.js.map} +1 -1
- package/dist/{43.8d096939ee87946076e0.bundle.js → 43.86f9220f4f79feec5b27.bundle.js} +2 -2
- package/dist/{43.8d096939ee87946076e0.bundle.js.map → 43.86f9220f4f79feec5b27.bundle.js.map} +1 -1
- package/dist/{47.92a64d48c14c1ae82934.bundle.js → 47.fca0edd51becf34c06b7.bundle.js} +2 -2
- package/dist/{47.92a64d48c14c1ae82934.bundle.js.map → 47.fca0edd51becf34c06b7.bundle.js.map} +1 -1
- package/dist/{48.4b57a948edab2d3b9c55.bundle.js → 48.e495edf3c48e1b2fc052.bundle.js} +2 -2
- package/dist/{48.4b57a948edab2d3b9c55.bundle.js.map → 48.e495edf3c48e1b2fc052.bundle.js.map} +1 -1
- package/dist/49.80591a5efda019de6e4a.bundle.js +2 -0
- package/dist/49.80591a5efda019de6e4a.bundle.js.map +1 -0
- package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js → 53.c29678970b0cb8aa4b47.bundle.js} +2 -2
- package/dist/{53.4b8ed1b79c1c20cdadd4.bundle.js.map → 53.c29678970b0cb8aa4b47.bundle.js.map} +1 -1
- package/dist/{55.751acc0e54255fa3ace7.bundle.js → 55.427172af3ba7612f747a.bundle.js} +2 -2
- package/dist/{55.751acc0e54255fa3ace7.bundle.js.map → 55.427172af3ba7612f747a.bundle.js.map} +1 -1
- package/dist/{57.677c1eebf6a003639fff.bundle.js → 57.41b09f5fa3ee623aab83.bundle.js} +2 -2
- package/dist/{57.677c1eebf6a003639fff.bundle.js.map → 57.41b09f5fa3ee623aab83.bundle.js.map} +1 -1
- package/dist/{58.2c460e480eefb1a02aea.bundle.js → 58.ce5a29dded68f58c53b4.bundle.js} +2 -2
- package/dist/{58.2c460e480eefb1a02aea.bundle.js.map → 58.ce5a29dded68f58c53b4.bundle.js.map} +1 -1
- package/dist/{59.b8e9155530acba27a6fa.bundle.js → 59.10efdeff3a8ef9e5733d.bundle.js} +2 -2
- package/dist/{59.b8e9155530acba27a6fa.bundle.js.map → 59.10efdeff3a8ef9e5733d.bundle.js.map} +1 -1
- package/dist/{60.27e731a670680751538c.bundle.js → 60.97fb695857f6241ae612.bundle.js} +2 -2
- package/dist/{60.27e731a670680751538c.bundle.js.map → 60.97fb695857f6241ae612.bundle.js.map} +1 -1
- package/dist/{61.fce8a2436742c2e20032.bundle.js → 61.5d71ec3fe0cda230482b.bundle.js} +2 -2
- package/dist/{61.fce8a2436742c2e20032.bundle.js.map → 61.5d71ec3fe0cda230482b.bundle.js.map} +1 -1
- package/dist/{62.9e101a1894ee0f9a48be.bundle.js → 62.d53d104f74f9fbdacb35.bundle.js} +2 -2
- package/dist/{62.9e101a1894ee0f9a48be.bundle.js.map → 62.d53d104f74f9fbdacb35.bundle.js.map} +1 -1
- package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js → 63.46514dd9cf756bd0e831.bundle.js} +2 -2
- package/dist/{63.3ffdfd6f35fe62ea729c.bundle.js.map → 63.46514dd9cf756bd0e831.bundle.js.map} +1 -1
- package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js → 65.401f44aaddb8aec6be1e.bundle.js} +2 -2
- package/dist/{65.96a1f2f3c83a29e2c6c3.bundle.js.map → 65.401f44aaddb8aec6be1e.bundle.js.map} +1 -1
- package/dist/{66.cf37216fb6f8e53cef2b.bundle.js → 66.7a1e4093247d23b65387.bundle.js} +2 -2
- package/dist/{66.cf37216fb6f8e53cef2b.bundle.js.map → 66.7a1e4093247d23b65387.bundle.js.map} +1 -1
- package/dist/{69.60ff11762016829be80d.bundle.js → 69.1944a1afebe9115c9262.bundle.js} +2 -2
- package/dist/{69.60ff11762016829be80d.bundle.js.map → 69.1944a1afebe9115c9262.bundle.js.map} +1 -1
- package/dist/7.0d2811d01a379d8b75fb.bundle.js +3 -0
- package/dist/7.0d2811d01a379d8b75fb.bundle.js.map +1 -0
- package/dist/{70.f86421bf02a9bfda5b95.bundle.js → 70.84500509fe2b0d19ab93.bundle.js} +2 -2
- package/dist/{70.f86421bf02a9bfda5b95.bundle.js.map → 70.84500509fe2b0d19ab93.bundle.js.map} +1 -1
- package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js → 76.2fa18e115678c4e24682.bundle.js} +2 -2
- package/dist/{76.fa9e5d02f7e1367b9b29.bundle.js.map → 76.2fa18e115678c4e24682.bundle.js.map} +1 -1
- package/dist/8.7209929899c18f8a4580.bundle.js +2 -0
- package/dist/8.7209929899c18f8a4580.bundle.js.map +1 -0
- package/dist/{80.37504cf0c1e5ad897478.bundle.js → 80.83e56da7d7a69fc34eed.bundle.js} +2 -2
- package/dist/{80.37504cf0c1e5ad897478.bundle.js.map → 80.83e56da7d7a69fc34eed.bundle.js.map} +1 -1
- package/dist/{82.9b4d4dc326055aa47e04.bundle.js → 82.74d50036c210cb10b7f5.bundle.js} +2 -2
- package/dist/{82.9b4d4dc326055aa47e04.bundle.js.map → 82.74d50036c210cb10b7f5.bundle.js.map} +1 -1
- package/dist/{84.fab513b88806deb0981a.bundle.js → 84.7f42dd9d7dc01baaf465.bundle.js} +2 -2
- package/dist/{84.fab513b88806deb0981a.bundle.js.map → 84.7f42dd9d7dc01baaf465.bundle.js.map} +1 -1
- package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js → 86.581cbc54b6c6b6ea9f19.bundle.js} +2 -2
- package/dist/{86.b319a8b9fcabecd7a6c7.bundle.js.map → 86.581cbc54b6c6b6ea9f19.bundle.js.map} +1 -1
- package/dist/{87.765567c0cbe89cbdb03c.bundle.js → 87.3606797303ead8dc2879.bundle.js} +2 -2
- package/dist/{87.765567c0cbe89cbdb03c.bundle.js.map → 87.3606797303ead8dc2879.bundle.js.map} +1 -1
- package/dist/{88.50c46652774325bffad3.bundle.js → 88.f5b8f83e57c9bea3c137.bundle.js} +2 -2
- package/dist/{88.50c46652774325bffad3.bundle.js.map → 88.f5b8f83e57c9bea3c137.bundle.js.map} +1 -1
- package/dist/{89.91c58e1902b0f444b068.bundle.js → 89.f9b4c4ddff2c0b5b70f7.bundle.js} +2 -2
- package/dist/{89.91c58e1902b0f444b068.bundle.js.map → 89.f9b4c4ddff2c0b5b70f7.bundle.js.map} +1 -1
- package/dist/{9.16a945b967e9a52bf535.bundle.js → 9.6a95a5c1eec963050422.bundle.js} +2 -2
- package/dist/{9.16a945b967e9a52bf535.bundle.js.map → 9.6a95a5c1eec963050422.bundle.js.map} +1 -1
- package/dist/{90.e12e77898d6341e59d8f.bundle.js → 90.4d42ba583fbc1d63d3d2.bundle.js} +2 -2
- package/dist/{90.e12e77898d6341e59d8f.bundle.js.map → 90.4d42ba583fbc1d63d3d2.bundle.js.map} +1 -1
- package/dist/95.1f83b03f48326a6cec45.bundle.js +2 -0
- package/dist/{95.decfcd3477dee353025b.bundle.js.map → 95.1f83b03f48326a6cec45.bundle.js.map} +1 -1
- package/dist/{bundle.6ce2d745fe23f2a6d129.bundle.js → bundle.1a982e7b3e2d9d06a802.bundle.js} +5 -5
- package/dist/bundle.1a982e7b3e2d9d06a802.bundle.js.map +1 -0
- package/dist/css/graphs-vizualizations.css +9 -1
- package/dist/css/lib/yasr.css +1 -0
- package/dist/css/yasr.custom.css +9 -0
- package/dist/index.html +4 -4
- package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +1 -0
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/{main.ea86ac1b6d636ab25dc7.css → main.db108895fbac32ad7e7b.css} +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/clusterInfo.html +1 -1
- package/dist/pages/create-index.html +4 -4
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +11 -11
- package/dist/pages/graphs-visualizations.html +20 -10
- package/dist/pages/import.html +1 -1
- package/dist/pages/jdbc-create.html +5 -5
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +2 -2
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +2 -2
- package/dist/pages/repository.html +2 -2
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-template-create.html +5 -5
- package/dist/pages/sparql.html +3 -3
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger/index.html +25 -25
- package/package.json +1 -1
- package/dist/0.21974a2453b9a92dec33.bundle.js.map +0 -1
- package/dist/12.449fb5148a68a44ba324.bundle.js.map +0 -1
- package/dist/13.77a8eae45bc4cda5fae7.bundle.js +0 -4
- package/dist/13.77a8eae45bc4cda5fae7.bundle.js.map +0 -1
- package/dist/14.a1d84445382b665e13e0.bundle.js +0 -2
- package/dist/14.a1d84445382b665e13e0.bundle.js.map +0 -1
- package/dist/15.73ffeb044255abbac7bf.bundle.js +0 -2
- package/dist/15.73ffeb044255abbac7bf.bundle.js.map +0 -1
- package/dist/17.4b048ae019a8d2fd5b46.bundle.js.map +0 -1
- package/dist/22.a3b52347055f1adac9ce.bundle.js +0 -2
- package/dist/22.a3b52347055f1adac9ce.bundle.js.map +0 -1
- package/dist/25.34da4f496fc62f2dae9b.bundle.js +0 -2
- package/dist/25.34da4f496fc62f2dae9b.bundle.js.map +0 -1
- package/dist/26.02814d2ed726f5a71d4e.bundle.js +0 -2
- package/dist/26.02814d2ed726f5a71d4e.bundle.js.map +0 -1
- package/dist/27.827ef7f030a5501be29a.bundle.js +0 -2
- package/dist/27.827ef7f030a5501be29a.bundle.js.map +0 -1
- package/dist/30.4d469715c2f2d1028b4b.bundle.js.map +0 -1
- package/dist/33.ea3b66016bbeff928fc3.bundle.js.map +0 -1
- package/dist/34.620159c2b04af0a88d1b.bundle.js +0 -2
- package/dist/34.620159c2b04af0a88d1b.bundle.js.map +0 -1
- package/dist/4.6a8bdb4c9048dd910bfd.bundle.js +0 -2
- package/dist/4.6a8bdb4c9048dd910bfd.bundle.js.map +0 -1
- package/dist/41.ba8cb2fb7f46ccb2ab28.bundle.js +0 -2
- package/dist/49.71f6e0f6f3284bf63cab.bundle.js +0 -2
- package/dist/49.71f6e0f6f3284bf63cab.bundle.js.map +0 -1
- package/dist/7.036cd4322fa473fb187a.bundle.js +0 -3
- package/dist/7.036cd4322fa473fb187a.bundle.js.map +0 -1
- package/dist/8.46db359ed59a04d3799b.bundle.js +0 -2
- package/dist/8.46db359ed59a04d3799b.bundle.js.map +0 -1
- package/dist/95.decfcd3477dee353025b.bundle.js +0 -2
- package/dist/bundle.6ce2d745fe23f2a6d129.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 \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="‹"\n next-text="›"\n first-text="«"\n last-text="»">\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.
|
|
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 \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="‹"\n next-text="›"\n first-text="«"\n last-text="»">\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
|
package/dist/{112.b871480dd961ac3c18b6.bundle.js.map → 112.0c1bdd906ac321ffbf5f.bundle.js.map}
RENAMED
|
@@ -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 \\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=\"‹\"\\n next-text=\"›\"\\n first-text=\"«\"\\n last-text=\"»\">\\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 \\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=\"‹\"\\n next-text=\"›\"\\n first-text=\"«\"\\n last-text=\"»\">\\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-
|
|
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-TR9" 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-
|
|
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-TR9\" 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.
|
|
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","ModalService",function(e,r,t,o,n,i,a,u,c,p){angular.extend(this,u("CommonUserCtrl",{$scope:e})),e.mode="add",e.saveButtonText="Create",e.goBack=function(){const r=n((function(){o.history.back()}),100);e.$on("$destroy",(function(){n.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.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Create administrator",message:"If the password is unset and security is enabled, this administrator 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.createUser()})):e.createUser()},e.createUserHttp=function(){e.loader=!0,c.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=n((function(){e.loader=!1,o.history.back()}),2e3);e.$on("$destroy",(function(){n.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","ModalService",function(e,r,t,o,i,a,u,c,p,d,l){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.noPassword&&e.userType===s.UserType.ADMIN?l.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator 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,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(){e.noPassword&&e.userType===s.UserType.ADMIN?p.openSimpleModal({title:"Save administrator settings",message:"If you unset the password and then enable security, this administrator 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.5d4da897bdd91e8808fa.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.5d4da897bdd91e8808fa.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', 'ModalService',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\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 if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Create administrator',\n message: 'If the password is unset and security is enabled, this administrator 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.createUser();\n });\n } else {\n $scope.createUser();\n }\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', 'ModalService',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService) {\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 if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator 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.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 if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: 'Save administrator settings',\n message: 'If you unset the password and then enable security, this administrator 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":""}
|