graphdb-workbench 1.11.2 → 1.11.3-TR1
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/dist/10.94e753e068396d6b6ec9.bundle.js +2 -0
- package/dist/10.94e753e068396d6b6ec9.bundle.js.map +1 -0
- package/dist/11.043e8d20764e39c10e31.bundle.js +2 -0
- package/dist/11.043e8d20764e39c10e31.bundle.js.map +1 -0
- package/dist/111.73819c3722ceee587ce7.bundle.js +2 -0
- package/dist/111.73819c3722ceee587ce7.bundle.js.map +1 -0
- package/dist/112.b48a6ea437c1c3ddd7b5.bundle.js +2 -0
- package/dist/112.b48a6ea437c1c3ddd7b5.bundle.js.map +1 -0
- package/dist/113.09a0a17c31bfc387c352.bundle.js +2 -0
- package/dist/113.09a0a17c31bfc387c352.bundle.js.map +1 -0
- package/dist/{114.edebb3161ce52d4ca2e1.bundle.js → 114.dcc909bf7059e08fad2a.bundle.js} +2 -2
- package/dist/{114.edebb3161ce52d4ca2e1.bundle.js.map → 114.dcc909bf7059e08fad2a.bundle.js.map} +1 -1
- package/dist/119.08aed6d34851afdefac5.bundle.js +2 -0
- package/dist/119.08aed6d34851afdefac5.bundle.js.map +1 -0
- package/dist/12.bb55709d82da219afedf.bundle.js +2 -0
- package/dist/12.bb55709d82da219afedf.bundle.js.map +1 -0
- package/dist/121.574db48a413271cafc2e.bundle.js +2 -0
- package/dist/121.574db48a413271cafc2e.bundle.js.map +1 -0
- package/dist/123.9ba8fea15f3fcddc734d.bundle.js +2 -0
- package/dist/123.9ba8fea15f3fcddc734d.bundle.js.map +1 -0
- package/dist/125.4ffda62ed511df3132f6.bundle.js +2 -0
- package/dist/125.4ffda62ed511df3132f6.bundle.js.map +1 -0
- package/dist/126.c5fd3ba65878ffcc3c03.bundle.js +2 -0
- package/dist/126.c5fd3ba65878ffcc3c03.bundle.js.map +1 -0
- package/dist/129.5d023d0fbbb2c517932c.bundle.js +2 -0
- package/dist/129.5d023d0fbbb2c517932c.bundle.js.map +1 -0
- package/dist/131.e7a34e7f2b2e5898249d.bundle.js +2 -0
- package/dist/131.e7a34e7f2b2e5898249d.bundle.js.map +1 -0
- package/dist/132.b98cc245bf2c668b2ffd.bundle.js +2 -0
- package/dist/132.b98cc245bf2c668b2ffd.bundle.js.map +1 -0
- package/dist/134.72b76429fe72a9fc5119.bundle.js +2 -0
- package/dist/134.72b76429fe72a9fc5119.bundle.js.map +1 -0
- package/dist/136.991f41ef4565f68c31a7.bundle.js +2 -0
- package/dist/136.991f41ef4565f68c31a7.bundle.js.map +1 -0
- package/dist/137.b62f0afcb15c29764c04.bundle.js +2 -0
- package/dist/137.b62f0afcb15c29764c04.bundle.js.map +1 -0
- package/dist/138.fba22be7b3b98750e0c3.bundle.js +2 -0
- package/dist/138.fba22be7b3b98750e0c3.bundle.js.map +1 -0
- package/dist/{14.0c709b039159410b0b91.bundle.js → 14.6f8b993e972dee32e159.bundle.js} +2 -2
- package/dist/14.6f8b993e972dee32e159.bundle.js.map +1 -0
- package/dist/140.b4777706146b1ac867ed.bundle.js +2 -0
- package/dist/140.b4777706146b1ac867ed.bundle.js.map +1 -0
- package/dist/141.4464fb26b1893e0dbc7a.bundle.js +2 -0
- package/dist/141.4464fb26b1893e0dbc7a.bundle.js.map +1 -0
- package/dist/142.4d4fdae663dbeb2df310.bundle.js +2 -0
- package/dist/142.4d4fdae663dbeb2df310.bundle.js.map +1 -0
- package/dist/145.c9ab7d2a56005326406c.bundle.js +2 -0
- package/dist/145.c9ab7d2a56005326406c.bundle.js.map +1 -0
- package/dist/146.f5efcb8ef74bf52d3daf.bundle.js +2 -0
- package/dist/146.f5efcb8ef74bf52d3daf.bundle.js.map +1 -0
- package/dist/{147.0798c61ee5472e70b552.bundle.js → 147.fa44265c07ea2c3c5615.bundle.js} +2 -2
- package/dist/{147.0798c61ee5472e70b552.bundle.js.map → 147.fa44265c07ea2c3c5615.bundle.js.map} +1 -1
- package/dist/148.8b1e910543c6c25b2f0b.bundle.js +2 -0
- package/dist/148.8b1e910543c6c25b2f0b.bundle.js.map +1 -0
- package/dist/15.eb562ad073aa0fcd725f.bundle.js +2 -0
- package/dist/15.eb562ad073aa0fcd725f.bundle.js.map +1 -0
- package/dist/16.0a3c03f05a4bbdfe83ef.bundle.js +2 -0
- package/dist/16.0a3c03f05a4bbdfe83ef.bundle.js.map +1 -0
- package/dist/18.c3e44ed00a2532402729.bundle.js +3 -0
- package/dist/18.c3e44ed00a2532402729.bundle.js.map +1 -0
- package/dist/20.264daf29beccbf7de84a.bundle.js +2 -0
- package/dist/20.264daf29beccbf7de84a.bundle.js.map +1 -0
- package/dist/22.e85ffde858c596437b7a.bundle.js +1 -1
- package/dist/22.e85ffde858c596437b7a.bundle.js.map +1 -1
- package/dist/23.c58eff831306fad29d42.bundle.js +2 -0
- package/dist/23.c58eff831306fad29d42.bundle.js.map +1 -0
- package/dist/25.8c10d875bf32c8648157.bundle.js +2 -0
- package/dist/25.8c10d875bf32c8648157.bundle.js.map +1 -0
- package/dist/{26.57526f30f6b3c581334d.bundle.js → 26.c59631eb4bc0bf8d26b2.bundle.js} +2 -2
- package/dist/26.c59631eb4bc0bf8d26b2.bundle.js.map +1 -0
- package/dist/27.ed9e0cc8aaa3a12c1fa2.bundle.js +2 -0
- package/dist/27.ed9e0cc8aaa3a12c1fa2.bundle.js.map +1 -0
- package/dist/28.8f5d9fc8ee46db2a6357.bundle.js +2 -0
- package/dist/28.8f5d9fc8ee46db2a6357.bundle.js.map +1 -0
- package/dist/30.d341c7532759bc79f41a.bundle.js +1 -1
- package/dist/30.d341c7532759bc79f41a.bundle.js.map +1 -1
- package/dist/{32.ba5b5ca3e4b7dcf5bd15.bundle.js → 32.1059e272ed99ba3db699.bundle.js} +2 -2
- package/dist/32.1059e272ed99ba3db699.bundle.js.map +1 -0
- package/dist/{35.b8c8d16a8707c20a1fcb.bundle.js → 35.1f53c71368afc468cc10.bundle.js} +2 -2
- package/dist/35.1f53c71368afc468cc10.bundle.js.map +1 -0
- package/dist/{36.d96e6ee811e8340ae320.bundle.js → 36.aced0c9768c16e4d29ef.bundle.js} +2 -2
- package/dist/36.aced0c9768c16e4d29ef.bundle.js.map +1 -0
- package/dist/37.dcbe2e4e1f86ca2da209.bundle.js +1 -1
- package/dist/37.dcbe2e4e1f86ca2da209.bundle.js.map +1 -1
- package/dist/38.171aa543e807777b4f29.bundle.js +1 -1
- package/dist/38.171aa543e807777b4f29.bundle.js.map +1 -1
- package/dist/40.f660048c67e9b6d478dc.bundle.js +2 -0
- package/dist/40.f660048c67e9b6d478dc.bundle.js.map +1 -0
- package/dist/{42.190f8880ee8f3a97a042.bundle.js → 42.9bbccd6cb2c263d7b873.bundle.js} +2 -2
- package/dist/42.9bbccd6cb2c263d7b873.bundle.js.map +1 -0
- package/dist/{43.899bf21ce1de203ace21.bundle.js → 43.6f609ec150488009b166.bundle.js} +2 -2
- package/dist/43.6f609ec150488009b166.bundle.js.map +1 -0
- package/dist/{44.c649782fa0755b53a62c.bundle.js → 44.8be8b582a97146d3ad6f.bundle.js} +2 -2
- package/dist/44.8be8b582a97146d3ad6f.bundle.js.map +1 -0
- package/dist/47.b94dca10f70c70009f46.bundle.js +2 -0
- package/dist/47.b94dca10f70c70009f46.bundle.js.map +1 -0
- package/dist/{48.52c5b13ab244c45a8c43.bundle.js → 48.10699147cdbee9af3c2b.bundle.js} +2 -2
- package/dist/48.10699147cdbee9af3c2b.bundle.js.map +1 -0
- package/dist/{5.21d2da4b4bc2b26e2534.bundle.js → 5.275d1f74283aff0821f2.bundle.js} +2 -2
- package/dist/5.275d1f74283aff0821f2.bundle.js.map +1 -0
- package/dist/{56.ce399f5788c0f5fe937b.bundle.js → 56.dae3cb719fcb013d7a06.bundle.js} +2 -2
- package/dist/56.dae3cb719fcb013d7a06.bundle.js.map +1 -0
- package/dist/68.5fa639981e7ce624fb73.bundle.js +2 -0
- package/dist/68.5fa639981e7ce624fb73.bundle.js.map +1 -0
- package/dist/{7.a0f5ec224bebd08058f4.bundle.js → 7.9946929545b7635857ac.bundle.js} +2 -2
- package/dist/7.9946929545b7635857ac.bundle.js.map +1 -0
- package/dist/75.3dd1e0c0ad0cf40ed6a1.bundle.js +2 -0
- package/dist/75.3dd1e0c0ad0cf40ed6a1.bundle.js.map +1 -0
- package/dist/78.6caec59329b53bb098ee.bundle.js +2 -0
- package/dist/78.6caec59329b53bb098ee.bundle.js.map +1 -0
- package/dist/{79.f4a2c3ec71bed08d61b9.bundle.js → 79.0f7567cb18c210d45806.bundle.js} +2 -2
- package/dist/79.0f7567cb18c210d45806.bundle.js.map +1 -0
- package/dist/{9.c9fc88a79b7990e29e04.bundle.js → 9.c4b55fc1e3fc858be626.bundle.js} +2 -2
- package/dist/9.c4b55fc1e3fc858be626.bundle.js.map +1 -0
- package/dist/{94.3efcd047d4d4e506cbd7.bundle.js → 94.afe4c166f07dbf1bc30f.bundle.js} +2 -2
- package/dist/94.afe4c166f07dbf1bc30f.bundle.js.map +1 -0
- package/dist/{96.754454264340bc9d9a70.bundle.js → 96.f7d3f181e8860ce2bd8b.bundle.js} +2 -2
- package/dist/96.f7d3f181e8860ce2bd8b.bundle.js.map +1 -0
- package/dist/bundle.48ae48a008439cff2323.bundle.js +79 -0
- package/dist/bundle.48ae48a008439cff2323.bundle.js.map +1 -0
- package/dist/index.html +7 -7
- package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +18 -18
- package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +1 -1
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +3 -3
- package/dist/js/angular/core/templates/core-errors.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +3 -3
- package/dist/js/angular/externalsync/templates/deleteConnector.html +1 -1
- package/dist/js/angular/graphexplore/templates/modal/save-graph.html +1 -1
- package/dist/js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html +3 -3
- package/dist/js/angular/graphexplore/templates/searchIconInputTemplate.html +3 -3
- package/dist/js/angular/import/templates/filesTable.html +12 -12
- package/dist/js/angular/import/templates/settingsModal.html +19 -19
- package/dist/js/angular/import/templates/textSnippet.html +4 -4
- package/dist/js/angular/import/templates/urlImport.html +4 -4
- package/dist/js/angular/repositories/templates/fedx-repo.html +28 -19
- package/dist/js/angular/repositories/templates/ontop-repo.html +8 -8
- package/dist/js/angular/security/templates/modal/default-authorities.html +3 -3
- package/dist/js/angular/security/templates/user.html +12 -12
- package/dist/js/angular/security/templates/users.html +11 -11
- package/dist/js/angular/settings/modal/location-settings.html +5 -5
- package/dist/js/angular/templates/modal/add-location.html +3 -3
- package/dist/js/angular/templates/modal/edit-location.html +3 -3
- package/dist/js/angular/templates/modal/editRepoFile.html +1 -1
- package/dist/js/angular/templates/modal/upload-repository-config.html +2 -2
- package/dist/pages/autocomplete.html +8 -8
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/clusterInfo.html +2 -2
- package/dist/pages/connectorsInfo.html +5 -5
- package/dist/pages/create-index.html +16 -16
- package/dist/pages/createConnector.html +22 -22
- package/dist/pages/dependencies.html +12 -12
- package/dist/pages/domainRangeInfo.html +4 -4
- package/dist/pages/edit.html +7 -7
- package/dist/pages/explore.html +10 -10
- package/dist/pages/export.html +14 -14
- package/dist/pages/find.html +2 -2
- package/dist/pages/graph-config/saveGraphConfig.html +28 -40
- package/dist/pages/graphs-visualizations.html +46 -46
- package/dist/pages/home.html +10 -10
- package/dist/pages/import.html +7 -7
- package/dist/pages/info.html +16 -16
- package/dist/pages/jdbc-create.html +20 -20
- package/dist/pages/jdbc.html +3 -3
- package/dist/pages/licenseInfo.html +1 -1
- package/dist/pages/login.html +2 -2
- package/dist/pages/monitor/queries.html +6 -6
- package/dist/pages/monitor/resources.html +3 -3
- package/dist/pages/namespaces.html +14 -14
- package/dist/pages/ontorefine.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +16 -16
- package/dist/pages/rdfrank.html +17 -17
- package/dist/pages/registerLicenseInfo.html +3 -3
- package/dist/pages/repositories.html +22 -22
- package/dist/pages/repository.html +28 -28
- package/dist/pages/similarity-indexes.html +15 -15
- package/dist/pages/sparql-template-create.html +9 -9
- package/dist/pages/sparql-templates.html +3 -3
- package/dist/pages/sparql.html +8 -8
- package/dist/pages/webapi.html +3 -3
- package/dist/res/swagger/index.html +25 -25
- package/package.json +5 -4
- package/dist/10.f0277e5092cea150b5a8.bundle.js +0 -2
- package/dist/10.f0277e5092cea150b5a8.bundle.js.map +0 -1
- package/dist/11.bdd794940dcfd5daa9a1.bundle.js +0 -2
- package/dist/11.bdd794940dcfd5daa9a1.bundle.js.map +0 -1
- package/dist/111.056eb71072bfd8f6551b.bundle.js +0 -2
- package/dist/111.056eb71072bfd8f6551b.bundle.js.map +0 -1
- package/dist/112.50fd62c66c6594e055a3.bundle.js +0 -2
- package/dist/112.50fd62c66c6594e055a3.bundle.js.map +0 -1
- package/dist/113.2c059fa7d06fd04149eb.bundle.js +0 -2
- package/dist/113.2c059fa7d06fd04149eb.bundle.js.map +0 -1
- package/dist/119.dfdf8b9afa2c31b90232.bundle.js +0 -2
- package/dist/119.dfdf8b9afa2c31b90232.bundle.js.map +0 -1
- package/dist/12.a3762f9fba854a28c1cb.bundle.js +0 -2
- package/dist/12.a3762f9fba854a28c1cb.bundle.js.map +0 -1
- package/dist/121.aa10886f87136602a6cf.bundle.js +0 -2
- package/dist/121.aa10886f87136602a6cf.bundle.js.map +0 -1
- package/dist/123.318a247a0939300080aa.bundle.js +0 -2
- package/dist/123.318a247a0939300080aa.bundle.js.map +0 -1
- package/dist/125.4978d60a14b65499a047.bundle.js +0 -2
- package/dist/125.4978d60a14b65499a047.bundle.js.map +0 -1
- package/dist/126.4a830f0d18f079b1dca7.bundle.js +0 -2
- package/dist/126.4a830f0d18f079b1dca7.bundle.js.map +0 -1
- package/dist/129.7ca4a0a32cacb6feb225.bundle.js +0 -2
- package/dist/129.7ca4a0a32cacb6feb225.bundle.js.map +0 -1
- package/dist/131.087611adf6562e7e1b00.bundle.js +0 -2
- package/dist/131.087611adf6562e7e1b00.bundle.js.map +0 -1
- package/dist/132.b1ed3e4c9238c5b6303b.bundle.js +0 -2
- package/dist/132.b1ed3e4c9238c5b6303b.bundle.js.map +0 -1
- package/dist/134.653804476f9803033cbe.bundle.js +0 -2
- package/dist/134.653804476f9803033cbe.bundle.js.map +0 -1
- package/dist/136.5d60eb9d8d66581003ce.bundle.js +0 -2
- package/dist/136.5d60eb9d8d66581003ce.bundle.js.map +0 -1
- package/dist/137.0cfdd5934c6a400ab990.bundle.js +0 -2
- package/dist/137.0cfdd5934c6a400ab990.bundle.js.map +0 -1
- package/dist/138.611df35cbfdfec860909.bundle.js +0 -2
- package/dist/138.611df35cbfdfec860909.bundle.js.map +0 -1
- package/dist/14.0c709b039159410b0b91.bundle.js.map +0 -1
- package/dist/140.b0310ba39e9c3237f48a.bundle.js +0 -2
- package/dist/140.b0310ba39e9c3237f48a.bundle.js.map +0 -1
- package/dist/141.5d76be84a3151e69fc9d.bundle.js +0 -2
- package/dist/141.5d76be84a3151e69fc9d.bundle.js.map +0 -1
- package/dist/142.a4094b510036aaf72b0b.bundle.js +0 -2
- package/dist/142.a4094b510036aaf72b0b.bundle.js.map +0 -1
- package/dist/145.6536295098a4f2e030e3.bundle.js +0 -2
- package/dist/145.6536295098a4f2e030e3.bundle.js.map +0 -1
- package/dist/146.ee9db0da29c25ec7fbf9.bundle.js +0 -2
- package/dist/146.ee9db0da29c25ec7fbf9.bundle.js.map +0 -1
- package/dist/148.0ce4968734a80e71b2b9.bundle.js +0 -2
- package/dist/148.0ce4968734a80e71b2b9.bundle.js.map +0 -1
- package/dist/15.fc7c799455b5aec64393.bundle.js +0 -2
- package/dist/15.fc7c799455b5aec64393.bundle.js.map +0 -1
- package/dist/16.005766c64d76f95231b1.bundle.js +0 -2
- package/dist/16.005766c64d76f95231b1.bundle.js.map +0 -1
- package/dist/18.2ddbba81e5b663db1894.bundle.js +0 -3
- package/dist/18.2ddbba81e5b663db1894.bundle.js.map +0 -1
- package/dist/20.a35d80fb5e80ae3874ce.bundle.js +0 -2
- package/dist/20.a35d80fb5e80ae3874ce.bundle.js.map +0 -1
- package/dist/23.102a20601f717ba91551.bundle.js +0 -2
- package/dist/23.102a20601f717ba91551.bundle.js.map +0 -1
- package/dist/25.bd69d5c4040e1547800b.bundle.js +0 -2
- package/dist/25.bd69d5c4040e1547800b.bundle.js.map +0 -1
- package/dist/26.57526f30f6b3c581334d.bundle.js.map +0 -1
- package/dist/27.ab75434b1389b977291c.bundle.js +0 -2
- package/dist/27.ab75434b1389b977291c.bundle.js.map +0 -1
- package/dist/28.b2180a7cba95d9328e1a.bundle.js +0 -2
- package/dist/28.b2180a7cba95d9328e1a.bundle.js.map +0 -1
- package/dist/32.ba5b5ca3e4b7dcf5bd15.bundle.js.map +0 -1
- package/dist/35.b8c8d16a8707c20a1fcb.bundle.js.map +0 -1
- package/dist/36.d96e6ee811e8340ae320.bundle.js.map +0 -1
- package/dist/40.c754ab2b3b35c2acb854.bundle.js +0 -2
- package/dist/40.c754ab2b3b35c2acb854.bundle.js.map +0 -1
- package/dist/42.190f8880ee8f3a97a042.bundle.js.map +0 -1
- package/dist/43.899bf21ce1de203ace21.bundle.js.map +0 -1
- package/dist/44.c649782fa0755b53a62c.bundle.js.map +0 -1
- package/dist/47.421938875d2461427ae3.bundle.js +0 -2
- package/dist/47.421938875d2461427ae3.bundle.js.map +0 -1
- package/dist/48.52c5b13ab244c45a8c43.bundle.js.map +0 -1
- package/dist/5.21d2da4b4bc2b26e2534.bundle.js.map +0 -1
- package/dist/56.ce399f5788c0f5fe937b.bundle.js.map +0 -1
- package/dist/68.6b887fe6160e5bd8742b.bundle.js +0 -2
- package/dist/68.6b887fe6160e5bd8742b.bundle.js.map +0 -1
- package/dist/7.a0f5ec224bebd08058f4.bundle.js.map +0 -1
- package/dist/75.dbd9915663de96056138.bundle.js +0 -2
- package/dist/75.dbd9915663de96056138.bundle.js.map +0 -1
- package/dist/78.608f8074bef29a89d68b.bundle.js +0 -2
- package/dist/78.608f8074bef29a89d68b.bundle.js.map +0 -1
- package/dist/79.f4a2c3ec71bed08d61b9.bundle.js.map +0 -1
- package/dist/9.c9fc88a79b7990e29e04.bundle.js.map +0 -1
- package/dist/94.3efcd047d4d4e506cbd7.bundle.js.map +0 -1
- package/dist/96.754454264340bc9d9a70.bundle.js.map +0 -1
- package/dist/bundle.ac70985c70f7da448f2d.bundle.js +0 -79
- package/dist/bundle.ac70985c70f7da448f2d.bundle.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/utils/uri-utils.js","webpack:///./src/js/angular/import/controllers.js"],"names":["iriRegExp","angular","module","factory","isValidIri","iri","undefined","match","validateRdfUri","value","hasAngleBrackets","indexOf","noAngleBrackets","lastIndexOf","validProtocol","test","validPath","schemaSlashesIdx","substring","length","RegExp","e","FILE_STATUS","importCtrl","controller","$scope","$http","toastr","$interval","$repositories","$uibModal","$filter","$jwtAuth","$location","LicenseRestService","files","fileChecked","checkAll","popoverTemplateUrl","fileQuery","getAppData","getInfo","success","data","appData","properties","i","key","source","maxUploadFileSizeMB","error","msg","getError","fileFormats","gzs","_","map","f","basics","fileFormatsExtended","reduce","union","el","all","fileFormatsHuman","textFileFormatsHuman","filter","updateListHttp","force","method","url","getBaseUrl","forEach","type","defaultType","rebatch","remoteStatus","find","matches","name","status","assign","viewType","showClearStatuses","file","savedSettings","mapKeys","loader","warning","$watch","$","tabId","is","hash","updateList","canWriteActiveRepo","init","setRestricted","isRestricted","getSettings","$on","pullList","timer","updating","cancel","getVisibleFiles","getTypeFilter","showItems","selectAllFiles","importable","getSettingsFor","fileName","withDefaultSettings","isEmpty","copy","defaultSettings","setSettingsFor","settingsFor","settings","open","templateUrl","resolve","hasParserSettings","isLocalLocation","isMultiple","size","result","then","importSelected","importFile","updateImport","stopImport","params","hasImportable","showTable","switchBatch","batch","newFileChecked","each","getSelectedFiles","overrideSettings","selectedFileNames","importNext","shift","resetStatusOrRemoveEntry","names","remove","headers","resetStatus","resetStatusSelected","removeEntry","removeEntrySelected","location","getActiveLocation","local","filterSettings","filtered","omitBy","isNull","omit","keys","viewUrl","getActiveRepository","pritifySettings","JSON","stringify","toTitleCase","s","upperFirst","toLowerCase","$controller","extend","this","importServerFiles","importSettings","fileNames","Upload","currentFiles","fileSelected","$files","$file","$newFiles","$duplicateFiles","$invalidFiles","Math","floor","$watchCollection","substr","fileIdx","splice","uniqBy","startImport","nextCallback","fileIndex","findIndex","format","message","finally","jsonBlob","upload","progress","evt","progressPercentage","parseInt","loaded","total","updateTextImport","pastedDataIdx","formattedDate","date","Date","getFullYear","padStart","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","pasteData","text","unshift","rdfDataFromURL","scope","existing","$uibModalInstance","importFormat","dismiss","ok","close","dataUrl","importFormats","rdfText","setFormat","isCollapsed","changeHelpTemplate","templateFile","commonUrl","UriUtils","hasError","input","o","context","target","enableReplace","replaceGraphs","fixSettings","settingsForm","replaceGraph","$setValidity","$valid","reset","addReplaceGraph","graph","valid","$setTouched","push","checkEnterReplaceGraph","event","keyCode","preventDefault","showAdvancedSettings","switchParserSettings"],"mappings":"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","file":"11.043e8d20764e39c10e31.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.utils.uriutils', [])\n .factory('UriUtils', UriUtils);\n\nlet iriRegExp;\ntry {\n // Real validation but it requires a relatively new browser\n iriRegExp = new RegExp(\"^[a-z](?:[-a-z0-9\\\\+\\\\.])*:(?:\\\\/\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:])*@)?(?:\\\\[(?:(?:(?:[0-9a-f]{1,4}:){6}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|::(?:[0-9a-f]{1,4}:){5}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:[0-9a-f]{1,4}:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3})|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|v[0-9a-f]+[-a-z0-9\\\\._~!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:]+)\\\\]|(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(?:\\\\.(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}|(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=@])*)(?::[0-9]*)?(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*|\\\\/(?:(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))+)(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*)?|(?:(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))+)(?:\\\\/(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@]))*)*|(?!(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])))(?:\\\\?(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])|[\\\\u{E000}-\\\\u{F8FF}\\\\u{F0000}-\\\\u{FFFFD}\\\\u{100000}-\\\\u{10FFFD}\\\\/\\\\?])*)?(?:#(?:(?:%[0-9a-f][0-9a-f]|[-a-z0-9\\\\._~\\\\u{A0}-\\\\u{D7FF}\\\\u{F900}-\\\\u{FDCF}\\\\u{FDF0}-\\\\u{FFEF}\\\\u{10000}-\\\\u{1FFFD}\\\\u{20000}-\\\\u{2FFFD}\\\\u{30000}-\\\\u{3FFFD}\\\\u{40000}-\\\\u{4FFFD}\\\\u{50000}-\\\\u{5FFFD}\\\\u{60000}-\\\\u{6FFFD}\\\\u{70000}-\\\\u{7FFFD}\\\\u{80000}-\\\\u{8FFFD}\\\\u{90000}-\\\\u{9FFFD}\\\\u{A0000}-\\\\u{AFFFD}\\\\u{B0000}-\\\\u{BFFFD}\\\\u{C0000}-\\\\u{CFFFD}\\\\u{D0000}-\\\\u{DFFFD}\\\\u{E1000}-\\\\u{EFFFD}!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=:@])|[\\\\/\\\\?])*)?$\", \"ui\");\n} catch (e) {\n // Fallback to simple validation, works in all browsers\n iriRegExp = new RegExp(\"^[a-z](?:[-a-z0-9\\\\+\\\\.])*:\", \"i\");\n}\n\nfunction UriUtils() {\n function validateRdfUri(value) {\n const hasAngleBrackets = value.indexOf(\"<\") >= 0 && value.indexOf(\">\") >= 0;\n const noAngleBrackets = value.indexOf(\"<\") === -1 && value.lastIndexOf(\">\") === -1;\n const validProtocol = /^<?(http|urn).*>?/.test(value) && (hasAngleBrackets || noAngleBrackets);\n let validPath = false;\n if (validProtocol) {\n if (value.indexOf(\"http\") >= 0) {\n const schemaSlashesIdx = value.indexOf('//');\n validPath = schemaSlashesIdx > 4\n && value.substring(schemaSlashesIdx + 2).length > 0;\n } else if (value.indexOf(\"urn\") >= 0) {\n validPath = value.substring(4).length > 0;\n }\n }\n return validProtocol && validPath;\n }\n\n function isValidIri(iri) {\n return iri !== undefined && !!iri.match(iriRegExp);\n }\n\n return {\n isValidIri: isValidIri,\n validateRdfUri: validateRdfUri\n };\n}\n","import 'angular/core/services';\nimport 'angular/utils/uri-utils';\n\nconst FILE_STATUS = {\n 'UPLOADING': 'UPLOADING',\n 'PENDING': 'PENDING',\n 'ERROR': 'ERROR',\n 'DONE': 'DONE',\n 'NONE': 'NONE'\n};\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.uriutils'\n];\n\nconst importCtrl = angular.module('graphdb.framework.impex.import.controllers', modules);\n\nimportCtrl.controller('CommonCtrl', ['$scope', '$http', 'toastr', '$interval', '$repositories', '$uibModal', '$filter', '$jwtAuth', '$location', 'LicenseRestService',\n function ($scope, $http, toastr, $interval, $repositories, $uibModal, $filter, $jwtAuth, $location, LicenseRestService) {\n $scope.files = [];\n $scope.fileChecked = {};\n $scope.checkAll = false;\n $scope.popoverTemplateUrl = 'settingsPopoverTemplate.html';\n $scope.fileQuery = '';\n\n $scope.getAppData = function () {\n LicenseRestService.getInfo().success(function (data) {\n $scope.appData = {};\n\n $scope.appData.properties = {};\n\n for (let i = 0; i < data.length; i++) {\n $scope.appData.properties[data[i].key] = {\n source: data[i].source,\n value: data[i].value\n };\n }\n $scope.maxUploadFileSizeMB = $scope.appData.properties['graphdb.workbench.maxUploadSize'].value / (1024 * 1024);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n };\n\n $scope.getAppData();\n\n $scope.fileFormats = ['ttl', 'ttls', 'rdf', 'rj', 'n3', 'nt', 'nq', 'trig', 'trigs', 'trix', 'brf', 'owl', 'jsonld'];\n\n {\n const gzs = _.map($scope.fileFormats, function (f) {\n return '.' + f + '.gz';\n });\n const basics = _.map($scope.fileFormats, function (f) {\n return '.' + f;\n });\n $scope.fileFormatsExtended = _.reduce(_.union(gzs, basics, ['.zip']), function (el, all) {\n return el + ', ' + all;\n });\n $scope.fileFormatsHuman = _.reduce(basics, function (el, all) {\n return el + ' ' + all;\n }) + ', as well as their .gz versions and .zip archives';\n $scope.textFileFormatsHuman = _.reduce(_.filter(basics, function (el) {\n return el !== '.brf';\n }),\n function (el, all) {\n return el + ' ' + all;\n });\n }\n\n $scope.updateListHttp = function (force) {\n $http({\n method: 'GET',\n url: $scope.getBaseUrl()\n }).success(function (data) {\n if ($scope.files.length === 0 || force) {\n $scope.files = data;\n _.forEach($scope.files, function (f) {\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n $scope.rebatch();\n } else {\n $scope.files.forEach(function (f) {\n const remoteStatus = _.find(data, _.matches({'name': f.name}));\n if (f.status && remoteStatus) {\n _.assign(f, remoteStatus);\n }\n if (!f.type) {\n f.type = $scope.defaultType;\n }\n });\n }\n // Need new status here\n if (force && 'user' === $scope.viewType) {\n $scope.files = _.filter($scope.files, function (f) {\n return f.status !== undefined;\n });\n }\n $scope.showClearStatuses = _.filter($scope.files, function (file) {\n return file.status === FILE_STATUS.DONE || file.status === FILE_STATUS.ERROR;\n }).length > 0;\n\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n\n $scope.loader = false;\n }).error(function (data) {\n toastr.warning('Could not get files; ' + getError(data));\n $scope.loader = false;\n });\n };\n\n // update the list instantly when the tab is changed\n $scope.$watch(function () {\n return $($scope.tabId).is(':visible');\n }, function () {\n if ($($scope.tabId).is(':visible')) {\n $scope.updateListHttp(false);\n $location.hash($scope.viewType);\n }\n });\n\n $scope.updateList = function (force) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n if (!$($scope.tabId).is(':visible')) {\n return;\n }\n $scope.updateListHttp(force);\n };\n\n $scope.init = function () {\n // Update restricted on repositoryIsSet\n $scope.setRestricted();\n if ($scope.isRestricted) {\n return;\n }\n $scope.updateList(true);\n $scope.getSettings();\n };\n\n $scope.$on('repositoryIsSet', $scope.init);\n\n $scope.pullList = function () {\n const timer = $interval(function () {\n // Skip iteration if we are updating something\n if (!$scope.updating) {\n $scope.updateList(false);\n }\n }, 4000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n $scope.getVisibleFiles = function () {\n return $filter('filter')($scope.files, {name: $scope.fileQuery, type: $scope.getTypeFilter()});\n };\n\n $scope.getTypeFilter = function () {\n if ($scope.viewType === 'server' && ($scope.showItems === 'file' || $scope.showItems === 'directory')) {\n return $scope.showItems;\n } else {\n return '';\n }\n };\n\n $scope.selectAllFiles = function () {\n $scope.getVisibleFiles().forEach(function (file) {\n $scope.fileChecked[file.name] = $scope.checkAll && $scope.importable(file);\n });\n };\n\n $scope.getSettingsFor = function (fileName, withDefaultSettings) {\n if (!withDefaultSettings && !_.isEmpty(fileName) && !_.isEmpty($scope.savedSettings[fileName])) {\n return $scope.savedSettings[fileName];\n } else {\n return angular.copy($scope.defaultSettings);\n }\n };\n\n $scope.setSettingsFor = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/settingsModal.html',\n controller: 'SettingsModalCtrl',\n resolve: {\n settings: function () {\n return angular.copy($scope.settings);\n },\n hasParserSettings: $scope.isLocalLocation,\n defaultSettings: function () {\n return $scope.defaultSettings;\n },\n isMultiple: function () {\n return !fileName;\n }\n },\n size: 'lg'\n });\n\n\n modalInstance.result.then(function (settings) {\n $scope.settings = settings;\n if ($scope.settingsFor === '') {\n $scope.importSelected();\n } else {\n $scope.importFile($scope.settingsFor, true);\n }\n\n }, function (settings) {\n $scope.settings = settings;\n });\n };\n\n $scope.updateImport = function (fileName, withDefaultSettings) {\n $scope.settingsFor = fileName;\n $scope.settings = $scope.getSettingsFor(fileName, withDefaultSettings);\n\n $scope.importFile(fileName, false);\n };\n\n $scope.stopImport = function (file) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl(),\n params: {name: file.name, type: file.type}\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.warning('Could not stop import; ' + getError(data));\n });\n };\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.hasImportable = function () {\n return _.filter($scope.files, function (f) {\n return $scope.importable(f);\n }).length > 0;\n };\n\n $scope.showTable = function () {\n const showTable = $scope.files.length > 0 && ('user' === $scope.viewType || 'server' === $scope.viewType);\n if ($scope.checkAll) {\n $scope.switchBatch(true);\n }\n return showTable;\n };\n\n $scope.switchBatch = function (all) {\n if (all) {\n $scope.selectAllFiles();\n } else {\n if ($scope.checkAll) {\n $scope.checkAll = false;\n }\n }\n $scope.batch = _.map(_.filter($scope.files, function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name').length > 0;\n };\n\n $scope.rebatch = function () {\n const newFileChecked = {};\n $scope.batch = false;\n _.each($scope.files, function (file) {\n newFileChecked[file.name] = $scope.fileChecked[file.name];\n $scope.batch |= $scope.fileChecked[file.name];\n });\n if (!$scope.batch) {\n $scope.checkAll = false;\n }\n $scope.fileChecked = newFileChecked;\n };\n\n $scope.getSelectedFiles = function () {\n return _.map(_.filter($scope.getVisibleFiles(), function (f) {\n return $scope.fileChecked[f.name] && $scope.importable(f);\n }), 'name');\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n\n // Calls the REST API sequentially for the selected files\n const importNext = function () {\n const fileName = selectedFileNames.shift();\n if (fileName) {\n if (overrideSettings) {\n $scope.settings = $scope.getSettingsFor(fileName);\n }\n $scope.importFile(fileName, true, importNext);\n }\n };\n\n importNext();\n };\n\n const resetStatusOrRemoveEntry = function (names, remove) {\n $http({\n method: 'DELETE',\n url: $scope.getBaseUrl() + '/status',\n params: {remove: remove},\n data: names,\n headers: {'Content-type': 'application/json;charset=utf-8'}\n }).success(function () {\n $scope.updateList(true);\n }).error(function (data) {\n toastr.warning('Could not clear status; ' + getError(data));\n });\n };\n\n $scope.resetStatus = function (names) {\n resetStatusOrRemoveEntry(names, false);\n };\n\n $scope.resetStatusSelected = function () {\n $scope.resetStatus($scope.getSelectedFiles());\n };\n\n $scope.removeEntry = function (names) {\n resetStatusOrRemoveEntry(names, true);\n };\n\n $scope.removeEntrySelected = function () {\n $scope.removeEntry($scope.getSelectedFiles());\n };\n\n $scope.isLocalLocation = function () {\n const location = $repositories.getActiveLocation();\n return location && location.local;\n };\n // Settings\n\n $scope.filterSettings = function (fileName) {\n let filtered = _.omitBy($scope.savedSettings[fileName], _.isNull);\n filtered = _.omit(filtered, ['repoLocationHash', 'status', 'message', 'name', 'data', 'type', 'format', 'fileNames', '$$hashKey']);\n return _.map(_.keys(filtered), function (key) {\n return [key, filtered[key]];\n });\n };\n\n $scope.getSettings = function () {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'GET',\n url: 'rest/data/import/settings/default'\n }).success(function (data) {\n $scope.defaultSettings = data;\n }).error(function (data) {\n toastr.warning('Could not get default settings; ' + getError(data));\n });\n };\n\n $scope.getBaseUrl = function () {\n return 'rest/data/import/' + $scope.viewUrl + '/' + $repositories.getActiveRepository();\n };\n\n $scope.pritifySettings = function (settings) {\n return JSON.stringify(settings, null, ' ');\n };\n\n $scope.toTitleCase = function (s) {\n if (!s) {\n return s;\n }\n return _.upperFirst(s.toLowerCase());\n };\n }]);\n\nimportCtrl.controller('ImportCtrl', ['$scope', '$http', 'toastr', '$controller', function ($scope, $http, toastr, $controller) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'server';\n $scope.defaultType = 'server';\n $scope.tabId = '#import-server';\n $scope.showItems = 'all';\n\n $scope.pullList();\n\n const importServerFiles = function (selectedFileNames, overrideSettings) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n\n $http({\n method: 'POST',\n url: $scope.getBaseUrl(),\n data: {importSettings: overrideSettings ? null : $scope.settings, fileNames: selectedFileNames}\n }).success(function () {\n $scope.updateList();\n $scope.batch = false;\n $scope.fileChecked = {};\n }).error(function (data) {\n toastr.error('Could not send file for import; ' + getError(data));\n });\n };\n\n $scope.importSelected = function (overrideSettings) {\n const selectedFileNames = $scope.getSelectedFiles();\n importServerFiles(selectedFileNames, overrideSettings);\n };\n\n $scope.importFile = function (fileName) {\n importServerFiles([fileName]);\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UploadCtrl', ['$scope', 'Upload', '$http', 'toastr', '$controller', '$uibModal', function ($scope, Upload, $http, toastr, $controller, $uibModal) {\n $scope.loader = true;\n angular.extend(this, $controller('CommonCtrl', {$scope: $scope}));\n $scope.viewUrl = 'upload';\n $scope.defaultType = 'file';\n $scope.tabId = '#import-user';\n\n $scope.pullList();\n\n $scope.currentFiles = [];\n\n $scope.importable = function () {\n return true;\n };\n\n $scope.fileSelected = function ($files, $file, $newFiles, $duplicateFiles, $invalidFiles) {\n if ($invalidFiles.length > 0) {\n $invalidFiles.forEach(function (f) {\n toastr.warning('File ' + f.name + ' too big ' + Math.floor(f.size / (1024 * 1024)) + ' MB. Use Server Files import.');\n });\n }\n };\n\n $scope.$watchCollection('currentFiles', function () {\n function disallowBZip2Files() {\n $scope.currentFiles.forEach(function (f) {\n if (f.name.substr(f.name.lastIndexOf('.') + 1) === 'bz2') {\n const fileIdx = $scope.currentFiles.indexOf(f);\n if (fileIdx > -1) {\n $scope.currentFiles.splice(fileIdx, 1);\n }\n toastr.error('Could not upload file ' + f.name + '. BZip2 archives are not supported.');\n }\n });\n }\n\n if ($scope.currentFiles) {\n // RDF4J does not support decompressing .bz2 files so we want to reject importing them\n disallowBZip2Files();\n }\n $scope.files = _.uniqBy(\n _.union(\n _.map($scope.currentFiles, function (file) {\n return {name: file.name, type: 'file', file: file}\n }),\n $scope.files\n ),\n function (file) {\n return file.name;\n }\n );\n $scope.savedSettings = _.mapKeys(_.filter($scope.files, 'parserSettings'), 'name');\n _.each($scope.currentFiles, function (file) {\n $scope.updateImport(file.name);\n });\n });\n\n $scope.importFile = function (fileName, startImport, nextCallback) {\n const fileIndex = _.findIndex($scope.files, {name: fileName});\n if (fileIndex < 0) {\n toastr.warning('No such file; ' + fileName);\n } else {\n const file = $scope.files[fileIndex];\n if (file.type === 'text') {\n // Import text snippet\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/text',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not send data for import; ' + getError(data));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n } else if (file.type === 'url') {\n // Submit URL\n $scope.settings.name = file.name;\n $scope.settings.type = file.type;\n $scope.settings.data = file.data;\n $scope.settings.format = file.format;\n file.status = FILE_STATUS.PENDING;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/url',\n data: $scope.settings\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not send url for import; ' + getError(data));\n }).finally(nextCallback || function () {\n });\n } else {\n // Upload real file\n $scope.settings.name = file.name;\n let data;\n if (file.file) {\n data = {file: file.file, importSettings: Upload.jsonBlob($scope.settings)};\n } else {\n data = {importSettings: Upload.jsonBlob($scope.settings)};\n }\n Upload.upload({\n url: $scope.getBaseUrl() + (startImport ? '' : '/update') + '/file',\n data: data\n }).progress(function (evt) {\n if (file.file) {\n file.file = null;\n file.status = FILE_STATUS.UPLOADING;\n } else if (file.status !== FILE_STATUS.UPLOADING) {\n file.status = FILE_STATUS.PENDING;\n }\n\n if (file.status === FILE_STATUS.UPLOADING) {\n const progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n file.message = progressPercentage + '% uploaded';\n }\n }).success(function () {\n $scope.updateList();\n }).error(function (data) {\n toastr.error('Could not upload file; ' + getError(data));\n file.status = FILE_STATUS.ERROR;\n file.message = getError(data);\n }).finally(nextCallback || function () {\n });\n }\n }\n };\n\n $scope.updateTextImport = function (settings) {\n $scope.updating = true;\n $http({\n method: 'POST',\n url: $scope.getBaseUrl() + '/update/text',\n data: settings\n }).success(function (data) {\n }).error(function (data) {\n toastr.error('Could not update text import; ' + getError(data));\n }).finally(function () {\n $scope.updating = false;\n });\n };\n\n $scope.pastedDataIdx = 1;\n\n const formattedDate = function () {\n const date = new Date();\n return date.getFullYear() + '-' + _.padStart(date.getMonth() + 1, 2, '0') + '-' + _.padStart(date.getDate(), 2, '0')\n + ' ' + _.padStart(date.getHours(), 2, '0') + ':' + _.padStart(date.getMinutes(), 2, '0') + ':' + _.padStart(date.getSeconds(), 2, '0')\n + '.' + _.padStart(date.getMilliseconds(), 3, '0');\n };\n\n $scope.pasteData = function (file) {\n const scope = {};\n if (file) {\n scope.rdfText = file.data;\n }\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/textSnippet.html',\n controller: 'TextCtrl',\n resolve: {\n text: function () {\n return file ? file.data : '';\n },\n format: function () {\n return file ? file.format : 'text/turtle';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n if (file) {\n if ((file.data !== data.text || file.format !== data.format) && file.status !== FILE_STATUS.NONE) {\n file.status = FILE_STATUS.NONE;\n file.message = 'Text snippet was edited but has not been imported again.';\n }\n file.data = data.text;\n file.format = data.format;\n $scope.updateTextImport(file);\n } else {\n file = {type: 'text', name: 'Text snippet ' + formattedDate(), format: data.format, data: data.text};\n $scope.files.unshift(file);\n $scope.updateImport(file.name);\n }\n if (data.startImport) {\n $scope.setSettingsFor(file.name);\n }\n });\n };\n\n $scope.rdfDataFromURL = function () {\n const modalInstance = $uibModal.open({\n templateUrl: 'js/angular/import/templates/urlImport.html',\n controller: 'UrlCtrl',\n scope: $scope\n });\n\n modalInstance.result.then(function (data) {\n // URL may already exist\n const existing = _.find($scope.files, {type: 'url', name: data.url});\n if (existing) {\n existing.format = data.format;\n } else {\n $scope.files.unshift({type: 'url', name: data.url, format: data.format, data: data.url});\n }\n $scope.updateImport(data.url, true);\n if (data.startImport) {\n $scope.setSettingsFor(data.url, true);\n }\n });\n };\n\n $scope.init();\n}]);\n\nimportCtrl.controller('UrlCtrl', ['$scope', '$uibModalInstance', 'toastr', function ($scope, $uibModalInstance) {\n $scope.importFormat = {name: 'Auto', type: ''};\n $scope.startImport = true;\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $uibModalInstance.close({\n url: $scope.dataUrl,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TextCtrl', ['$scope', '$uibModalInstance', 'text', 'format', function ($scope, $uibModalInstance, text, format) {\n $scope.importFormats = [\n {name: 'RDF/JSON', type: 'application/rdf+json'},\n {name: 'JSON-LD', type: 'application/ld+json'},\n {name: 'RDF/XML', type: 'application/rdf+xml'},\n {name: 'N3', type: 'text/rdf+n3'},\n {name: 'N-Triples', type: 'text/plain'},\n {name: 'N-Quads', type: 'text/x-nquads'},\n {name: 'Turtle', type: 'text/turtle'},\n {name: 'Turtle*', type: 'application/x-turtlestar'},\n {name: 'TriX', type: 'application/trix'},\n {name: 'TriG', type: 'application/x-trig'},\n {name: 'TriG*', type: 'application/x-trigstar'},\n ];\n\n $scope.rdfText = text;\n $scope.importFormat = _.find($scope.importFormats, {type: format});\n $scope.startImport = true;\n\n $scope.setFormat = function (format) {\n $scope.importFormat = format;\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n $scope.ok = function () {\n $uibModalInstance.close({\n text: $scope.rdfText,\n format: $scope.importFormat.type,\n startImport: $scope.startImport\n });\n };\n}]);\n\nimportCtrl.controller('TabCtrl', ['$scope', '$location', function ($scope, $location) {\n $scope.viewType = $location.hash();\n if ($scope.viewType !== 'user' && $scope.viewType !== 'server') {\n $scope.viewType = 'user';\n }\n $scope.isCollapsed = false;\n if ($scope.viewType === 'user') {\n $scope.templateUrl = 'js/angular/import/templates/uploadInfo.html';\n } else {\n $scope.templateUrl = 'js/angular/import/templates/importInfo.html';\n }\n $scope.changeHelpTemplate = function (templateFile) {\n $scope.templateUrl = 'js/angular/import/templates/' + templateFile;\n };\n $scope.commonUrl = 'js/angular/import/templates/commonInfo.html';\n}]);\n\nimportCtrl.controller('SettingsModalCtrl', ['$scope', '$uibModalInstance', 'toastr', 'UriUtils', 'settings', 'hasParserSettings', 'defaultSettings', 'isMultiple',\n function ($scope, $uibModalInstance, toastr, UriUtils, settings, hasParserSettings, defaultSettings, isMultiple) {\n $scope.hasError = function (error, input) {\n return _.find(error, function (o) {\n return input === o['$name'];\n });\n };\n\n $scope.settings = settings;\n $scope.hasParserSettings = hasParserSettings;\n if ($scope.settings.context) {\n if ($scope.settings.context === 'default') {\n $scope.target = 'default';\n $scope.settings.context = '';\n } else {\n $scope.target = 'named';\n }\n } else {\n $scope.target = 'data';\n }\n $scope.isMultiple = isMultiple;\n $scope.enableReplace = !!($scope.settings.replaceGraphs && $scope.settings.replaceGraphs.length);\n\n const fixSettings = function () {\n if ($scope.target === 'default') {\n $scope.settings.context = 'default';\n } else if ($scope.target === 'data') {\n $scope.settings.context = '';\n }\n if ($scope.enableReplace) {\n if ($scope.target === 'default' || $scope.target === 'named') {\n $scope.settings.replaceGraphs = [$scope.settings.context];\n }\n } else {\n $scope.settings.replaceGraphs = [];\n }\n };\n\n $scope.ok = function () {\n // resets the validity of a field only used for temporary things\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', true);\n\n if ($scope.settingsForm.$valid) {\n fixSettings();\n $uibModalInstance.close($scope.settings);\n }\n };\n\n $scope.cancel = function () {\n fixSettings();\n $uibModalInstance.dismiss($scope.settings);\n };\n\n $scope.reset = function () {\n $scope.settings = angular.copy(defaultSettings);\n $scope.target = 'data';\n };\n\n $scope.addReplaceGraph = function (graph) {\n let valid = true;\n if (graph !== 'default') {\n valid = UriUtils.isValidIri(graph);\n }\n $scope.settingsForm.replaceGraph.$setTouched();\n $scope.settingsForm.replaceGraph.$setValidity('replaceGraph', valid);\n\n if ($scope.settingsForm.replaceGraph.$valid) {\n $scope.settings.replaceGraphs = $scope.settings.replaceGraphs || [];\n if (_.indexOf($scope.settings.replaceGraphs, graph) === -1) {\n $scope.replaceGraph = '';\n $scope.settings.replaceGraphs.push(graph);\n } else {\n toastr.warning('This graph is already in the list.');\n }\n }\n };\n\n $scope.checkEnterReplaceGraph = function (event, graph) {\n if (event.keyCode === 13) {\n event.preventDefault();\n\n $scope.addReplaceGraph(graph);\n }\n };\n\n $scope.showAdvancedSettings = false;\n $scope.switchParserSettings = function () {\n $scope.showAdvancedSettings = !$scope.showAdvancedSettings;\n };\n}]);\n"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{164: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 uib-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 uib-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 uib-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 uib-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()" uib-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()" uib-tooltip="Delete query" tooltip-trigger="mouseenter" href="#" class="fa fa-trash-o fa-1x deleteSampleQuery" ng-click="deleteQuery(query.name)"></i>\n <i uib-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 uib-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 uib-tooltip="Show saved queries"\n tooltip-append-to-body="true"\n tooltip-trigger="mouseenter"\n uib-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 uib-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 uib-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 uib-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 uib-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 <uib-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 </uib-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 uib-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" uib-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=111.73819c3722ceee587ce7.bundle.js.map
|
|
@@ -0,0 +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,o+fAGP,OAAOA","file":"111.73819c3722ceee587ce7.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 uib-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 uib-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 uib-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 uib-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()\" uib-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()\" uib-tooltip=\"Delete query\" tooltip-trigger=\"mouseenter\" href=\"#\" class=\"fa fa-trash-o fa-1x deleteSampleQuery\" ng-click=\"deleteQuery(query.name)\"></i>\\n <i uib-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 uib-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 uib-tooltip=\"Show saved queries\"\\n tooltip-append-to-body=\"true\"\\n tooltip-trigger=\"mouseenter\"\\n uib-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 uib-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 uib-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 uib-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 uib-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 <uib-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 </uib-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 uib-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\" uib-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":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{165:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='\x3c!-- Start QuerySample modal --\x3e\n\n<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<form novalidate ng-submit="ok()" name="form" class="save-query-form">\n <div class="modal-body">\n <input id="wb-sparql-sampleName" required type="text" ng-model="query.name" class="form-control"\n ng-change="queryExists = false"\n placeholder="Enter Title"/>\n <label for="share-query"\n uib-tooltip="If checked other users will be able to see the query but not delete or edit it.">\n <input id="share-query" type="checkbox" ng-model="query.shared">\n Share query with other users\n </label>\n <input style="height: 0; border: 0; padding: 0; margin: 0;" autofocus/>\n <br>\n <textarea id="wb-sparql-sampleValue" required rows="8" class="form-control" ng-model="query.body"\n placeholder="Create your Sample Query" ng-blur="errorMsg = \'\'"></textarea>\n <div class="saved-query-errors">\n <div ng-show="form.$error.required.length" >\n <div ng-hide="query.name" class="alert alert-danger empty-query-name-err" style="margin-top: 5px;">\n Name cannot be empty!\n </div>\n <div ng-hide="query.body" class="alert alert-danger empty-query-err" style="margin-top: 5px;">\n Query cannot be empty!\n </div>\n </div>\n <div ng-hide="form.$error.required.length" ng-if="queryExists" class="alert alert-danger query-exists-error"\n style="margin-top: 5px;">\n Query with name <strong>'{{query.name}}'</strong> already exists!\n </div>\n </div>\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary cancel-btn" ng-click="cancel()">Cancel</button>\n <button id="wb-sparql-submit" class="btn btn-primary create-btn" ng-click="ok()" type="submit">\n {{okButtonText}}\n </button>\n </div>\n</form>\n\n\x3c!-- End QuerySample modal --\x3e\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=112.b48a6ea437c1c3ddd7b5.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/core/directives/queryeditor/templates/query-sample.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,yqEAGP,OAAOA","file":"112.b48a6ea437c1c3ddd7b5.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<!-- Start QuerySample modal -->\\n\\n<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">{{title}}</h3>\\n</div>\\n<form novalidate ng-submit=\"ok()\" name=\"form\" class=\"save-query-form\">\\n <div class=\"modal-body\">\\n <input id=\"wb-sparql-sampleName\" required type=\"text\" ng-model=\"query.name\" class=\"form-control\"\\n ng-change=\"queryExists = false\"\\n placeholder=\"Enter Title\"/>\\n <label for=\"share-query\"\\n uib-tooltip=\"If checked other users will be able to see the query but not delete or edit it.\">\\n <input id=\"share-query\" type=\"checkbox\" ng-model=\"query.shared\">\\n Share query with other users\\n </label>\\n <input style=\"height: 0; border: 0; padding: 0; margin: 0;\" autofocus/>\\n <br>\\n <textarea id=\"wb-sparql-sampleValue\" required rows=\"8\" class=\"form-control\" ng-model=\"query.body\"\\n placeholder=\"Create your Sample Query\" ng-blur=\"errorMsg = \\'\\'\"></textarea>\\n <div class=\"saved-query-errors\">\\n <div ng-show=\"form.$error.required.length\" >\\n <div ng-hide=\"query.name\" class=\"alert alert-danger empty-query-name-err\" style=\"margin-top: 5px;\">\\n Name cannot be empty!\\n </div>\\n <div ng-hide=\"query.body\" class=\"alert alert-danger empty-query-err\" style=\"margin-top: 5px;\">\\n Query cannot be empty!\\n </div>\\n </div>\\n <div ng-hide=\"form.$error.required.length\" ng-if=\"queryExists\" class=\"alert alert-danger query-exists-error\"\\n style=\"margin-top: 5px;\">\\n Query with name <strong>'{{query.name}}'</strong> already exists!\\n </div>\\n </div>\\n </div>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary cancel-btn\" ng-click=\"cancel()\">Cancel</button>\\n <button id=\"wb-sparql-submit\" class=\"btn btn-primary create-btn\" ng-click=\"ok()\" type=\"submit\">\\n {{okButtonText}}\\n </button>\\n </div>\\n</form>\\n\\n<!-- End QuerySample modal -->\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{166:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<link href="css/rdf-resource-search.css?v=1.11.3-TR1" 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 uib-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 uib-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
|
+
//# sourceMappingURL=113.09a0a17c31bfc387c352.bundle.js.map
|
|
@@ -0,0 +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,07CAGP,OAAOA","file":"113.09a0a17c31bfc387c352.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<link href=\"css/rdf-resource-search.css?v=1.11.3-TR1\" 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 uib-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 uib-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([[114],{167:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="mb-2 row" ng-hide="getActiveRepository() && !isRestricted">\n <div role="alert">\n <div class="mb-1 mt-1 ml-1 mr-1">\n <div class="card repository-errors">\n <div class="alert alert-warning lead">\n <div ng-if="!getActiveRepository()" >Some functionalities are not available because you are not connected to any repository.</div>\n <div id="restrictedDiv" ng-if="getActiveRepository() && isRestricted">Some functionalities are not available because\n <span ng-if="isSecurityEnabled() && !canWriteActiveRepo()">you have no write permission to repository </span>\n <strong ng-if="isActiveRepoOntopType()">{{getActiveRepository()}}</strong>\n <span ng-if="canWriteActiveRepo() && isActiveRepoOntopType()"> is read-only Virtual Repository</span>\n <span ng-if="canWriteActiveRepo() && isActiveRepoFedXType()"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\n <small>\n <span ng-if="getAccessibleRepositories().length">\n Click one of the repositories below to connect to it<span ng-if="canManageRepositories()"> or create a new repository</span>.\n </span>\n\n <span ng-hide="getAccessibleRepositories().length">\n There are no accessible <span ng-if="isRestricted">writable </span>repositories<span ng-if="canManageRepositories()">. You can create a new repository</span>.\n </span>\n </small>\n </div>\n\n <ul class="list-group limit-height clearfix two-columns repos" ng-mouseleave="hidePopoverForRepo($event)">\n <li ng-repeat="repository in getAccessibleRepositories() | orderBy: [\'type === \\\'system\\\'\', \'id\']"\n ng-if="repository.id !== getActiveRepository()"\n class="list-group-item list-group-item-action repository"\n ng-mouseenter="showPopoverForRepo($event, repository)" ngx-mouseleave="setPopoverForRepo($event, repository, false)">\n <div class="lead ellipsis-block" ng-click="setRepository(repository.id)">\n <span class="popover-anchor"\n popover-popup-delay="500"\n popover-trigger="show" popover-placement="{{$index % 2 === 0 ? \'bottom-right\' : \'left-bottom\'}}"\n popover-template="popoverTemplate" popover-title="Repository {{repository.id}}">\n <em class="icon-lg" ng-class="\'icon-repo-\' + repository.type"></em>\n <strong>{{repository.id}}</strong></span><small ng-show="repository.title"><span class="small"> · {{repository.title}}</span></small>\n </div>\n </li>\n </ul>\n\n <div class="pull-right" ng-if="canManageRepositories()">\n <button class="btn btn-link px-0 create-repository-btn" ng-click="goToAddRepo()">\n <span class="icon-plus"></span> Create new repository\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n';return __p}}}]);
|
|
2
|
-
//# sourceMappingURL=114.
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{167:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="mb-2 row" ng-hide="getActiveRepository() && !isRestricted">\n <div role="alert">\n <div class="mb-1 mt-1 ml-1 mr-1">\n <div class="card repository-errors">\n <div class="alert alert-warning lead">\n <div ng-if="!getActiveRepository()" >Some functionalities are not available because you are not connected to any repository.</div>\n <div id="restrictedDiv" ng-if="getActiveRepository() && isRestricted">Some functionalities are not available because\n <span ng-if="isSecurityEnabled() && !canWriteActiveRepo()">you have no write permission to repository </span>\n <strong ng-if="isActiveRepoOntopType()">{{getActiveRepository()}}</strong>\n <span ng-if="canWriteActiveRepo() && isActiveRepoOntopType()"> is read-only Virtual Repository</span>\n <span ng-if="canWriteActiveRepo() && isActiveRepoFedXType()"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\n <small>\n <span ng-if="getAccessibleRepositories().length">\n Click one of the repositories below to connect to it<span ng-if="canManageRepositories()"> or create a new repository</span>.\n </span>\n\n <span ng-hide="getAccessibleRepositories().length">\n There are no accessible <span ng-if="isRestricted">writable </span>repositories<span ng-if="canManageRepositories()">. You can create a new repository</span>.\n </span>\n </small>\n </div>\n\n <ul class="list-group limit-height clearfix two-columns repos" ng-mouseleave="hidePopoverForRepo($event)">\n <li ng-repeat="repository in getAccessibleRepositories() | orderBy: [\'type === \\\'system\\\'\', \'id\']"\n ng-if="repository.id !== getActiveRepository()"\n class="list-group-item list-group-item-action repository"\n ng-mouseenter="showPopoverForRepo($event, repository)" ngx-mouseleave="setPopoverForRepo($event, repository, false)">\n <div class="lead ellipsis-block" ng-click="setRepository(repository.id)">\n <span class="popover-anchor"\n popover-popup-delay="500"\n popover-trigger="show" popover-placement="{{$index % 2 === 0 ? \'bottom-right\' : \'left-bottom\'}}"\n uib-popover-template="popoverTemplate" popover-title="Repository {{repository.id}}">\n <em class="icon-lg" ng-class="\'icon-repo-\' + repository.type"></em>\n <strong>{{repository.id}}</strong></span><small ng-show="repository.title"><span class="small"> · {{repository.title}}</span></small>\n </div>\n </li>\n </ul>\n\n <div class="pull-right" ng-if="canManageRepositories()">\n <button class="btn btn-link px-0 create-repository-btn" ng-click="goToAddRepo()">\n <span class="icon-plus"></span> Create new repository\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=114.dcc909bf7059e08fad2a.bundle.js.map
|
package/dist/{114.edebb3161ce52d4ca2e1.bundle.js.map → 114.dcc909bf7059e08fad2a.bundle.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/core/templates/core-errors.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/core/templates/core-errors.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,+3GAGP,OAAOA","file":"114.dcc909bf7059e08fad2a.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"mb-2 row\" ng-hide=\"getActiveRepository() && !isRestricted\">\\n <div role=\"alert\">\\n <div class=\"mb-1 mt-1 ml-1 mr-1\">\\n <div class=\"card repository-errors\">\\n <div class=\"alert alert-warning lead\">\\n <div ng-if=\"!getActiveRepository()\" >Some functionalities are not available because you are not connected to any repository.</div>\\n <div id=\"restrictedDiv\" ng-if=\"getActiveRepository() && isRestricted\">Some functionalities are not available because\\n <span ng-if=\"isSecurityEnabled() && !canWriteActiveRepo()\">you have no write permission to repository </span>\\n <strong ng-if=\"isActiveRepoOntopType()\">{{getActiveRepository()}}</strong>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoOntopType()\"> is read-only Virtual Repository</span>\\n <span ng-if=\"canWriteActiveRepo() && isActiveRepoFedXType()\"> <b>{{title}}</b> view is not supported by FedX Repository</span>.</div>\\n <small>\\n <span ng-if=\"getAccessibleRepositories().length\">\\n Click one of the repositories below to connect to it<span ng-if=\"canManageRepositories()\"> or create a new repository</span>.\\n </span>\\n\\n <span ng-hide=\"getAccessibleRepositories().length\">\\n There are no accessible <span ng-if=\"isRestricted\">writable </span>repositories<span ng-if=\"canManageRepositories()\">. You can create a new repository</span>.\\n </span>\\n </small>\\n </div>\\n\\n <ul class=\"list-group limit-height clearfix two-columns repos\" ng-mouseleave=\"hidePopoverForRepo($event)\">\\n <li ng-repeat=\"repository in getAccessibleRepositories() | orderBy: [\\'type === \\\\\\'system\\\\\\'\\', \\'id\\']\"\\n ng-if=\"repository.id !== getActiveRepository()\"\\n class=\"list-group-item list-group-item-action repository\"\\n ng-mouseenter=\"showPopoverForRepo($event, repository)\" ngx-mouseleave=\"setPopoverForRepo($event, repository, false)\">\\n <div class=\"lead ellipsis-block\" ng-click=\"setRepository(repository.id)\">\\n <span class=\"popover-anchor\"\\n popover-popup-delay=\"500\"\\n popover-trigger=\"show\" popover-placement=\"{{$index % 2 === 0 ? \\'bottom-right\\' : \\'left-bottom\\'}}\"\\n uib-popover-template=\"popoverTemplate\" popover-title=\"Repository {{repository.id}}\">\\n <em class=\"icon-lg\" ng-class=\"\\'icon-repo-\\' + repository.type\"></em>\\n <strong>{{repository.id}}</strong></span><small ng-show=\"repository.title\"><span class=\"small\"> · {{repository.title}}</span></small>\\n </div>\\n </li>\\n </ul>\\n\\n <div class=\"pull-right\" ng-if=\"canManageRepositories()\">\\n <button class=\"btn btn-link px-0 create-repository-btn\" ng-click=\"goToAddRepo()\">\\n <span class=\"icon-plus\"></span> Create new repository\\n </button>\\n </div>\\n </div>\\n </div>\\n </div>\\n</div>\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{172:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div id="search-resource-box" class="input-group btn-group" ng-class="{\'input-group-lg\': !radioButtons}" style="white-space: nowrap">\n <input type="text" class="form-control view-res-input" placeholder="{{placeholder}}" ng-model="searchInput"\n ng-change="onChange()"\n ng-keydown="onKeyDown($event)">\n <button ng-if="clearInputIcon && showClearInputIcon" class="btn btn-link clear-icon"\n uib-tooltip="Clear" tooltip-placement="bottom" tooltip-trigger="mouseenter">\n <i class="icon-close" aria-hidden="true" ng-click="clearInput()"></i>\n </button>\n <span ng-if="!radioButtons" class="input-group-btn">\n <button ng-if="textButton !== \'\'" type="button" class="btn btn-primary autocomplete-text-btn" ng-click="checkIfValidAndSearchText()">\n {{textButtonLabel}}\n </button>\n </span>\n <span ng-if="!radioButtons" class="input-group-btn show-btn">\n <button ng-if="visualButton !== \'\'" type="button" class="btn btn-primary autocomplete-visual-btn" ng-click="checkIfValidAndSearchVisual()">\n {{visualButtonLabel}}\n </button>\n </span>\n <span ng-if="radioButtons" class="input-group-btn">\n <button class="btn btn-secondary display-type-table-btn" ng-model="searchType" uib-btn-radio="searchDisplayType.table" ng-click="changeSearchType(searchDisplayType.table)">\n {{textButtonLabel}}\n </button>\n <button class="btn btn-secondary display-type-visual-btn" ng-model="searchType" uib-btn-radio="searchDisplayType.visual" ng-click="changeSearchType(searchDisplayType.visual)">\n {{visualButtonLabel}}\n </button>\n </span>\n</div>\n<span class="autocomplete-hint">Hint: "ab c" matches "abC*", "ab c*" and "ab-c*"</span>\n<div id="auto-complete-results-wrapper">\n <div ng-repeat="autoCompleteUriResult in autoCompleteUriResults track by $index"\n id="{{\'auto_\' + $index}}"\n ng-click="searchRdfResourceByEvent(autoCompleteUriResult, $event)"\n ng-class="{active: activeSearchElm === $index, selected: selectedElementIndex === $index}"\n ng-mousemove="setActiveClassOnMouseMove($index)"\n class="result-item">\n <p ng-bind-html="getResultItemHtml(autoCompleteUriResult)"></p>\n </div>\n</div>\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=119.08aed6d34851afdefac5.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/core/templates/search-resource-input.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,oxEAGP,OAAOA","file":"119.08aed6d34851afdefac5.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div id=\"search-resource-box\" class=\"input-group btn-group\" ng-class=\"{\\'input-group-lg\\': !radioButtons}\" style=\"white-space: nowrap\">\\n <input type=\"text\" class=\"form-control view-res-input\" placeholder=\"{{placeholder}}\" ng-model=\"searchInput\"\\n ng-change=\"onChange()\"\\n ng-keydown=\"onKeyDown($event)\">\\n <button ng-if=\"clearInputIcon && showClearInputIcon\" class=\"btn btn-link clear-icon\"\\n uib-tooltip=\"Clear\" tooltip-placement=\"bottom\" tooltip-trigger=\"mouseenter\">\\n <i class=\"icon-close\" aria-hidden=\"true\" ng-click=\"clearInput()\"></i>\\n </button>\\n <span ng-if=\"!radioButtons\" class=\"input-group-btn\">\\n <button ng-if=\"textButton !== \\'\\'\" type=\"button\" class=\"btn btn-primary autocomplete-text-btn\" ng-click=\"checkIfValidAndSearchText()\">\\n {{textButtonLabel}}\\n </button>\\n </span>\\n <span ng-if=\"!radioButtons\" class=\"input-group-btn show-btn\">\\n <button ng-if=\"visualButton !== \\'\\'\" type=\"button\" class=\"btn btn-primary autocomplete-visual-btn\" ng-click=\"checkIfValidAndSearchVisual()\">\\n {{visualButtonLabel}}\\n </button>\\n </span>\\n <span ng-if=\"radioButtons\" class=\"input-group-btn\">\\n <button class=\"btn btn-secondary display-type-table-btn\" ng-model=\"searchType\" uib-btn-radio=\"searchDisplayType.table\" ng-click=\"changeSearchType(searchDisplayType.table)\">\\n {{textButtonLabel}}\\n </button>\\n <button class=\"btn btn-secondary display-type-visual-btn\" ng-model=\"searchType\" uib-btn-radio=\"searchDisplayType.visual\" ng-click=\"changeSearchType(searchDisplayType.visual)\">\\n {{visualButtonLabel}}\\n </button>\\n </span>\\n</div>\\n<span class=\"autocomplete-hint\">Hint: \"ab c\" matches \"abC*\", \"ab c*\" and \"ab-c*\"</span>\\n<div id=\"auto-complete-results-wrapper\">\\n <div ng-repeat=\"autoCompleteUriResult in autoCompleteUriResults track by $index\"\\n id=\"{{\\'auto_\\' + $index}}\"\\n ng-click=\"searchRdfResourceByEvent(autoCompleteUriResult, $event)\"\\n ng-class=\"{active: activeSearchElm === $index, selected: selectedElementIndex === $index}\"\\n ng-mousemove=\"setActiveClassOnMouseMove($index)\"\\n class=\"result-item\">\\n <p ng-bind-html=\"getResultItemHtml(autoCompleteUriResult)\"></p>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -0,0 +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","$location","$rootScope",function(e,r,t,s,o,n,i){e.username="",e.password="",e.loginWithOpenID=function(){s.loginOpenID()},n.search().noaccess?t.error("User has no access rights or configuration error.","Login error"):n.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(){return r({method:"POST",url:"rest/login/"+encodeURIComponent(e.username),headers:{"X-GraphDB-Password":e.password}}).success((function(e,r,t){s.authenticate(e,t("Authorization")).then(()=>{i.returnToUrl?n.url(i.returnToUrl):n.path("/")})})).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","$uibModal","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","$uibModalInstance","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","$uibModalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
|
|
2
|
+
//# sourceMappingURL=12.bb55709d82da219afedf.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","$location","$rootScope","username","password","loginWithOpenID","loginOpenID","search","noaccess","error","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","encodeURIComponent","headers","success","data","status","authenticate","then","returnToUrl","path","wrongCredentials","msg","getError","$uibModal","$window","$timeout","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","$on","toggleSecurity","timer","location","reload","cancel","toggleFreeAccess","updateFreeAccess","getFreeAccess","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","id","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","warning","deleteUser","name","$uibModalInstance","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.bb55709d82da219afedf.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', '$location', '$rootScope',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $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 return $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 .then(() => {\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 });\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\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$uibModal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService',\n function ($scope, $uibModal, 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 = $uibModal.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', '$uibModalInstance', 'data', '$rootScope',\n function ($scope, $http, $uibModalInstance, 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 $uibModalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function () {\n $uibModalInstance.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', '$uibModalInstance', 'username', function ($scope, $uibModalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function () {\n $uibModalInstance.close();\n };\n\n $scope.cancel = function () {\n $uibModalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{174:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">Confirm delete</h3>\n</div>\n<div class="modal-body">\n <p>Are you sure you want to delete this connector?</p>\n <span uib-popover="Force delete will remove the connector even if part of the operation fails. Use it if normal delete does not work.{{ isExternal ? (\' Note that you may have to drop the index manually from \' + type + \'.\') : \'\' }}"\n popover-trigger="mouseenter"\n popover-placement="bottom">\n <input id="force-delete" type="checkbox" ng-model="force"><label for="force-delete"> Force delete</label>\n </span>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" ng-click="cancel()">Cancel</button>\n <button type="submit" class="btn btn-primary delete-connector-btn" ng-click="ok()">Delete</button>\n </div>\n</div>\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=121.574db48a413271cafc2e.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/externalsync/templates/deleteConnector.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,u7BAGP,OAAOA","file":"121.574db48a413271cafc2e.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">Confirm delete</h3>\\n</div>\\n<div class=\"modal-body\">\\n <p>Are you sure you want to delete this connector?</p>\\n <span uib-popover=\"Force delete will remove the connector even if part of the operation fails. Use it if normal delete does not work.{{ isExternal ? (\\' Note that you may have to drop the index manually from \\' + type + \\'.\\') : \\'\\' }}\"\\n popover-trigger=\"mouseenter\"\\n popover-placement=\"bottom\">\\n <input id=\"force-delete\" type=\"checkbox\" ng-model=\"force\"><label for=\"force-delete\"> Force delete</label>\\n </span>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary\" ng-click=\"cancel()\">Cancel</button>\\n <button type=\"submit\" class=\"btn btn-primary delete-connector-btn\" ng-click=\"ok()\">Delete</button>\\n </div>\\n</div>\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{176:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='\x3c!-- Start save graph modal --\x3e\n\n<div class="modal-header">\n <button type="button" class="close" ng-click="cancel()"></button>\n <h3 class="modal-title">{{title}}</h3>\n</div>\n<form novalidate ng-submit="ok()" name="form">\n <div class="modal-body">\n <input id="wb-graphviz-savegraph-name" required type="text" ng-model="graph.name" class="form-control"\n ng-change="graphExists = false"\n placeholder="Enter name" ng-maxlength="100"/>\n <label for="share-graph"\n uib-tooltip="If checked other users will be able to see the graph but not delete or edit it.">\n <input id="share-graph" type="checkbox" ng-model="graph.shared">\n Share graph with other users\n </label>\n <input style="height: 0; border: 0; padding: 0; margin: 0;" autofocus/>\n <br>\n <div ng-show="form.$error.maxlength">\n <div class="alert alert-danger" style="margin-top: 5px;">Name is too long!</div>\n </div>\n <div ng-show="form.$error.required.length">\n <div ng-hide="graph.name" class="alert alert-danger" style="margin-top: 5px;">Name cannot be empty!</div>\n </div>\n <div ng-hide="form.$error.required.length" ng-if="graphExists" class="alert alert-danger"\n style="margin-top: 5px;">Saved graph with name <strong>'{{graph.name}}'</strong> already exists!\n </div>\n \x3c!-- <div ng-if="graphExists || overwrite"><label for="override-saved">Overwrite existing saved graph <input id="override-saved" type="checkbox" ng-model="overwrite"></label></div> --\x3e\n </div>\n <div class="modal-footer">\n <button type="button" class="btn btn-secondary" ng-click="cancel()">Cancel</button>\n <button ng-if="mode == \'update\'" id="wb-graphviz-savegraph-submit2" class="btn btn-tertiary" ng-click="saveNew()" type="button">Save as new...</button>\n <button id="wb-graphviz-savegraph-submit" class="btn btn-primary" ng-click="ok()" type="submit">{{okButtonText}}</button>\n </div>\n</form>\n\n\x3c!-- End save graph modal --\x3e\n\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=123.9ba8fea15f3fcddc734d.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/graphexplore/templates/modal/save-graph.html"],"names":["module","exports","obj","__t","__p"],"mappings":"wFAAAA,OAAOC,QAAU,SAASC,KAC1BA,MAAQA,IAAM,IACd,IAAIC,IAAKC,IAAM,GACf,KAAMF,IACNE,KAAO,imEAGP,OAAOA","file":"123.9ba8fea15f3fcddc734d.bundle.js","sourcesContent":["module.exports = function(obj) {\nobj || (obj = {});\nvar __t, __p = '';\nwith (obj) {\n__p += '<!-- Start save graph modal -->\\n\\n<div class=\"modal-header\">\\n <button type=\"button\" class=\"close\" ng-click=\"cancel()\"></button>\\n <h3 class=\"modal-title\">{{title}}</h3>\\n</div>\\n<form novalidate ng-submit=\"ok()\" name=\"form\">\\n <div class=\"modal-body\">\\n <input id=\"wb-graphviz-savegraph-name\" required type=\"text\" ng-model=\"graph.name\" class=\"form-control\"\\n ng-change=\"graphExists = false\"\\n placeholder=\"Enter name\" ng-maxlength=\"100\"/>\\n <label for=\"share-graph\"\\n uib-tooltip=\"If checked other users will be able to see the graph but not delete or edit it.\">\\n <input id=\"share-graph\" type=\"checkbox\" ng-model=\"graph.shared\">\\n Share graph with other users\\n </label>\\n <input style=\"height: 0; border: 0; padding: 0; margin: 0;\" autofocus/>\\n <br>\\n <div ng-show=\"form.$error.maxlength\">\\n <div class=\"alert alert-danger\" style=\"margin-top: 5px;\">Name is too long!</div>\\n </div>\\n <div ng-show=\"form.$error.required.length\">\\n <div ng-hide=\"graph.name\" class=\"alert alert-danger\" style=\"margin-top: 5px;\">Name cannot be empty!</div>\\n </div>\\n <div ng-hide=\"form.$error.required.length\" ng-if=\"graphExists\" class=\"alert alert-danger\"\\n style=\"margin-top: 5px;\">Saved graph with name <strong>'{{graph.name}}'</strong> already exists!\\n </div>\\n <!-- <div ng-if=\"graphExists || overwrite\"><label for=\"override-saved\">Overwrite existing saved graph <input id=\"override-saved\" type=\"checkbox\" ng-model=\"overwrite\"></label></div> -->\\n </div>\\n <div class=\"modal-footer\">\\n <button type=\"button\" class=\"btn btn-secondary\" ng-click=\"cancel()\">Cancel</button>\\n <button ng-if=\"mode == \\'update\\'\" id=\"wb-graphviz-savegraph-submit2\" class=\"btn btn-tertiary\" ng-click=\"saveNew()\" type=\"button\">Save as new...</button>\\n <button id=\"wb-graphviz-savegraph-submit\" class=\"btn btn-primary\" ng-click=\"ok()\" type=\"submit\">{{okButtonText}}</button>\\n </div>\\n</form>\\n\\n<!-- End save graph modal -->\\n\\n';\n\n}\nreturn __p\n}"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{178:function(module,exports){module.exports=function(obj){obj||(obj={});var __t,__p="";with(obj)__p+='<div>\n\t<div ng-hide="rdfsLabel == undefined" class="media mb-1">\n\t\t<div class="media-left"\n\t\t\t uib-tooltip="rdfs:label"\n\t\t\t tooltip-placement="top"\n\t\t\t tooltip-trigger="mouseenter">\n\t\t\t<i class="icon-tag icon-lg" aria-hidden="true"></i>\n\t\t</div>\n\t\t<div class="media-body">\n\t\t\t{{rdfsLabel}}\n\t\t</div>\n\t</div>\n <div ng-if="rdfsComment" class="media mb-1">\n <div class="media-left"\n\t\t\tuib-tooltip="rdfs:comment"\n\t\t\ttooltip-placement="top"\n\t\t\ttooltip-trigger="mouseenter">\n\t\t\t<i class="icon-comment icon-lg" aria-hidden="true"></i>\n </div>\n <div class="media-body">\n\t\t\t<div class="rdfs-comment" ng-class="expanded ? \'expanded\' : \'not-expanded\'">\n\t\t\t\t<em class="rdfs-comment-text rdfs-text small">{{rdfsComment | limitTo: stringLimit}} {{rdfsComment.length > stringLimit ? \'...\' : \'\'}}</em>\n\t\t\t</div>\n </div>\n </div>\n <div ng-if="!alwaysExpanded && rdfsComment && !checkCommentLength()" class="clearfix">\n\t\t<button class="pull-right btn btn-link small px-0" ng-click="scrollToTop(); equalHeights(); toggleFullComment()">\n\t\t\t<span ng-show="!expanded">Show</span>\n\t\t\t<span ng-show="expanded">Hide</span> full comment\n\t\t</button>\n </div>\n</div>\n';return __p}}}]);
|
|
2
|
+
//# sourceMappingURL=125.4ffda62ed511df3132f6.bundle.js.map
|