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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/repositories/repository.constants.js","webpack:///./src/js/angular/repositories/controllers.js"],"names":["STATIC_RULESETS","id","name","REPOSITORY_TYPES","free","eeWorker","eeMaster","ontop","se","fedx","FILENAME_PATTERN","RegExp","NUMBER_PATTERN","REPO_TOOLTIPS","title","readOnly","ruleset","rulesetWarnings","needsSameAs","doesntNeedSameAs","customRuleset","disableSameAs","checkForInconsistencies","isShacl","shaclOptions","cacheSelectNodes","undefinedTargetValidatesAllSubjects","logValidationPlans","logValidationViolations","parallelValidation","globalLogValidationExecution","performanceLogging","eclipseRdf4jShaclExtensions","dashDataShapes","entityIdSize","enableContextIndex","enablePredicateList","queryTimeout","throwQueryEvaluationExceptionOnTimeout","queryLimitResults","nonInterpretablePredicates","driverType","propertiesFile","hostName","port","portIfRequired","databaseName","userName","password","driverClass","driverClassWarning","url","obdaFile","owlFile","constraintFile","dbMetadataFile","testConn","repositoryNotExistWarning","localReposInstructions","withLogQueries","withDebugQueryPlan","enforceMaxQueryTime","withIncludeInferredDefault","withBoundJoinBlockSize","withJoinWorkerThreads","withLeftJoinWorkerThreads","unionWorkerThreads","withLogQueryPlan","withEnableServiceAsBoundJoin","withSourceSelectionCacheSpec","removeMember","editRepository","setAsWritable","getFileName","path","lastIdx","lastIndexOf","substring","parseNumberParamsIfNeeded","params","value","parseInt","validationResultsLimitTotal","validationResultsLimitPerConstraint","leftJoinWorkerThreads","boundJoinBlockSize","joinWorkerThreads","parseMemberParamIfNeeded","param","member","getShaclOptionsClass","optionsModule","document","getElementById","isAriaExpanded","getAttribute","validateNumberFields","invalidValues","isInvalidQueryTimeout","test","isInvalidValidationResultsLimitTotal","isInvalidValidationResultsLimitPerConstraint","isInvalidQueryLimit","isInvalidLeftJoinWorkerThreads","isInvalidBoundJoinBlockSize","isInvalidJoinWorkerThreads","isInvalidUnionWorkerThreads","checkInvalidValues","invalidValuesKeys","Object","keys","invalidValuesVal","values","i","length","getDocBase","productInfo","productShortVersion","productType","LocationsAndRepositoriesCtrl","$scope","$modal","toastr","$repositories","ModalService","$jwtAuth","LocationsRestService","LocalStorageAdapter","$interval","loader","isLocationInactive","location","active","hasActiveLocation","getLocations","getActiveLocation","getLocationError","getDegradedReason","getRepositories","deleteLocation","uri","openSimpleModal","message","warning","result","then","addLocationHttp","dataAddLocation","addLocation","success","data","locations","init","error","msg","getError","open","templateUrl","windowClass","controller","editLocationHttp","dataEditLocation","editLocation","resolve","activateLocationRequest","enableLocation","setRepository","$$hashKey","checked","activateLocation","deleteRepository","repositoryId","repoId","cashedDependenciesGraphPrefix","cashedClassHierarchyGraphPrefix","angular","forEach","key","startsWith","remove","removeCachedGraphsOnDelete","restartRepository","toggleDefaultRepository","getDefaultRepository","setDefaultRepository","getRepositoryDownloadLink","repository","type","token","getAuthToken","encodeURIComponent","copyToClipboard","openCopyToClipboardModal","fromFile","openActiveLocationSettings","timer","initQuick","$on","cancel","UploadRepositoryConfigCtrl","$modalInstance","Upload","upload","files","uploadFile","ok","uploadFileLoader","method","config","close","dismiss","AddLocationCtrl","newLocation","docBase","isValidLocation","indexOf","EditLocationCtrl","editedLocation","copy","ChooseRepositoryCtrl","$location","isEnterprise","isFreeEdition","pageTitle","repositoryTypes","chooseRepositoryType","repoType","AddRepositoryCtrl","$timeout","$routeParams","RepositoriesRestService","repositoryType","rulesets","slice","repoTooltips","enable","repositoryInfo","getConfig","getRepositoryConfiguration","element","find","focus","isValidEERepository","isValidSERepository","isValidFRRepository","isValidOntopRepository","isValidFedXRepository","setPageTitle","activeLocation","isInvalidPieFile","uploadRuleset","progress","evt","fileName","newValue","fileLocation","rulesetPie","unshift","rulesetPieFile","errorMessage","noMembersError","goBackToPreviousLocation","isDefined","previous","$$search","createRepoHttp","createRepository","createRepo","isInvalidRepoName","rulesetWarning","pp","undefined","validateNumberInput","autofocusId","EditRepositoryFileCtrl","file","getRepositoryFileContent","fileContent","content","EditRepositoryCtrl","editRepoPage","canEditRepoId","restartRequested","saveRepoId","$watch","getRepository","ifRulesetExists","item","setRepositoryType","saveId","status","allowHtml","editRepoHttp","modalMsg","editRepositoryId","module","$inject"],"mappings":"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","file":"5.21d2da4b4bc2b26e2534.bundle.js","sourcesContent":["export const STATIC_RULESETS = [\n {id: 'empty', name: 'No inference'},\n {id: 'rdfs-optimized', name: 'RDFS (Optimized)'},\n {id: 'rdfs', name: 'RDFS'},\n {id: 'rdfsplus-optimized', name: 'RDFS-Plus (Optimized)'},\n {id: 'owl-horst-optimized', name: 'OWL-Horst (Optimized)'},\n {id: 'owl-horst', name: 'OWL-Horst'},\n {id: 'owl2-ql-optimized', name: 'OWL2-QL (Optimized)'},\n {id: 'owl2-ql', name: 'OWL2-QL'},\n {id: 'owl-max-optimized', name: 'OWL-Max (Optimized)'},\n {id: 'owl-max', name: 'OWL-Max'},\n {id: 'owl2-rl-optimized', name: 'OWL2-RL (Optimized)'},\n {id: 'owl2-rl', name: 'OWL2-RL'},\n\n];\n\nexport const REPOSITORY_TYPES = {free: 'free', eeWorker: 'worker', eeMaster: 'master', ontop: 'ontop', se: 'se', fedx: 'fedx'};\nexport const FILENAME_PATTERN = new RegExp('^[a-zA-Z0-9-_]+$');\nexport const NUMBER_PATTERN = new RegExp('^[0-9]+$');\n\nexport const REPO_TOOLTIPS = {\n id: \"Unique identifier for the repository. The ID must contain only letters (a-z, A-Z), numbers (0-9), '-' and '_'.\",\n title: \"Human readable description of the repository.\",\n readOnly: \"Protects the repository against any changes.\",\n ruleset: \"Sets of axiomatic triples, consistency checks and entailment rules, \" +\n \"which determine the applied semantics with a PIE file.\",\n rulesetWarnings: {\n needsSameAs: \"Disabling owl:sameAs for this ruleset may cause incomplete inference with owl:sameAs statements.\",\n doesntNeedSameAs: \"This ruleset does not need owl:sameAs, consider disabling it.\",\n customRuleset: \"If the custom ruleset does not use owl:sameAs, consider disabling it. <br>\" +\n \"If the ruleset uses owl:sameAs, disabling it may cause incomplete inference with owl:sameAs statements.\"\n },\n disableSameAs: \"GraphDB uses a non-rule implementation of owl:sameAs, \" +\n \"which can be enabled or disabled independently of the ruleset.\",\n checkForInconsistencies: \"Enables the consistency checks from the ruleset.\",\n isShacl: \"Enables support for SHACL validation.\",\n shaclOptions: {\n cacheSelectNodes: \"The SHACL implementation retrieves a lot of its relevant data through running \" +\n \"SPARQL Select queries against the repository and against the changes in the transaction. \" +\n \"This is usually good for performance, but while validating large amounts of data disabling this cache will use less memory.\",\n undefinedTargetValidatesAllSubjects: \"If no target is defined for a NodeShape, that NodeShape will be ignored. \" +\n \"Enabling this will make such NodeShapes wildcard shapes and validate all subjects. \" +\n \"Equivalent to setting sh:targetClass to owl:Thing or rdfs:Resource in an environment with a reasoner.\",\n logValidationPlans: \"Log (INFO) the executed validation plans as GraphViz DOT. \" +\n \"It is recommended to disable parallel validation when this is enabled.\",\n logValidationViolations: \"Log (INFO) a list of violations and the triples that caused the violations. \" +\n \"It is recommended to disable parallel validation when this is enabled.\",\n parallelValidation: \"Run SHACL validation in parallel.\",\n globalLogValidationExecution: \"Log (INFO) every execution step of the SHACL validation. \" +\n \"This is fairly costly and should not be used in production. \" +\n \"It is recommended to disable parallel validation when this is enabled.\",\n performanceLogging: \"Log (INFO) the execution time per shape. \" +\n \"It is recommended to disable parallel validation and caching of select nodes when this is enabled.\",\n eclipseRdf4jShaclExtensions: \"Activates RDF4J's SHACL extensions that provide additional functionality (experimental).\",\n dashDataShapes: \"Activates DASH Data Shapes extensions that provide additional functionality (experimental).\"\n },\n entityIdSize: \"Defines the bit size of internal IDs used to index entities (URIs, blank nodes, literals, and RDF* embedded triples).\" +\n \"<br>Use 40 bit ID only if you expect more than 2 billion unique RDF values.\",\n enableContextIndex: \"Builds an additional Context-Predicate-Subject-Object index to boost the \" +\n \"SPARQL query performance of queries with GRAPH/FROM/FROM NAMED clauses.\",\n enablePredicateList: \"Enables the mappings from an entity (subject or object) to its predicates; \" +\n \"enabling it can significantly speed up queries that use wildcard predicate patterns.\",\n queryTimeout: \"Sets the number of seconds after which the evaluation of a query will be terminated; \" +\n \"values less than or equal to zero mean no limit.\",\n throwQueryEvaluationExceptionOnTimeout: \"Repository throws QueryEvaluationException when the duration of a query execution \" +\n \"exceeds the timeout parameter.\",\n queryLimitResults: \"Sets the maximum number of results returned from a query after which the evaluation of \" +\n \"a query will be terminated; values less than or equal to zero mean no limit.\",\n nonInterpretablePredicates: \"Semicolon-delimited list of predicates (full URIs) that GraphDB will not try to process \" +\n \"with the registered GraphDB plugins.\",\n ontop: {\n driverType: \"Determines the type of SQL database to connect to.\",\n propertiesFile: \"Describes the JDBC configuration such as hostname and database name to connect to.\",\n hostName: 'The JDBC hostname to connect to.',\n port: \"The JDBC port to connect to if different from the default for the chosen JDBC driver.\",\n portIfRequired: \"The JDBC port to connect to.\",\n databaseName: 'The database name to connect to.',\n userName: 'The username to use for the JDBC connection.',\n password: 'The password to use for the JDBC connection.',\n driverClass: 'Classname of the chosen JDBC driver. It must be on the classpath (in the lib directory).',\n driverClassWarning: \"JDBC driver not found in the classpath, please save it in the lib directory and restart GraphDB\",\n url: 'The JDBC URL that will be used. It is constructed using the supplied hostname, port and database name.',\n obdaFile: \"Describes the mapping from SQL to RDF in either the OBDA or the R2RML format.\",\n owlFile: \"Specifies relations between the classes and properties in the cosntructed RDF graph. \" +\n \"It can be in any supported RDF format.\",\n constraintFile: \"Specifies override of SQL primary and foreign keys.\",\n dbMetadataFile: \"Specifies metadata for the SQL database.\",\n testConn: \"Attempts to establish a connection to the SQL database to test if the supplied configuration is correct.\"\n },\n fedx: {\n repositoryNotExistWarning: 'The repository member has been removed from the local repositories',\n localReposInstructions: 'Click on a repo to add a local repository as a member',\n withLogQueries: 'Set whether to log queries',\n withDebugQueryPlan: 'Whether to print the optimized query execution plan to stdout',\n enforceMaxQueryTime: 'Max query time in seconds, 0 to disable',\n withIncludeInferredDefault: 'Set whether to include inferred statements or not',\n withBoundJoinBlockSize: 'Set the block size for bound joins',\n withJoinWorkerThreads: 'Set the number of join worker threads for parallelization',\n withLeftJoinWorkerThreads: 'Set the number of left join worker threads',\n unionWorkerThreads: 'Set the number of union worker threads for parallelization',\n withLogQueryPlan: 'Whether to log the query plan',\n withEnableServiceAsBoundJoin: 'Whether external SERVICE clauses are evaluated using bound join',\n withSourceSelectionCacheSpec: 'The cache specification for the SourceSelectionMemoryCache',\n removeMember: 'Remove repository as a FedX member',\n editRepository: 'Edit repository',\n setAsWritable: 'Set repository as writable'\n }\n};\n","import {\n FILENAME_PATTERN,\n NUMBER_PATTERN,\n REPO_TOOLTIPS,\n REPOSITORY_TYPES,\n STATIC_RULESETS\n} from \"./repository.constants\";\n\nexport const getFileName = function(path) {\n let lastIdx = path.lastIndexOf('/');\n if (lastIdx === -1) {\n lastIdx = path.lastIndexOf('\\\\');\n }\n let name = path;\n if (lastIdx !== -1) {\n name = name.substring(lastIdx + 1);\n }\n return name;\n};\n\nconst parseNumberParamsIfNeeded = function (params) {\n if (params) {\n if (params.queryTimeout) {\n params.queryTimeout.value = parseInt(params.queryTimeout.value);\n }\n if (params.queryLimitResults && params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint) {\n // Parse parameters properly to number\n params.queryLimitResults.value = parseInt(params.queryLimitResults.value);\n params.validationResultsLimitTotal.value = parseInt(params.validationResultsLimitTotal.value);\n params.validationResultsLimitPerConstraint.value = parseInt(params.validationResultsLimitPerConstraint.value);\n } else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads && params.unionWorkerThreads) {\n params.leftJoinWorkerThreads.value = parseInt(params.leftJoinWorkerThreads.value);\n params.boundJoinBlockSize.value = parseInt(params.boundJoinBlockSize.value);\n params.joinWorkerThreads.value = parseInt(params.joinWorkerThreads.value);\n params.unionWorkerThreads.value = parseInt(params.unionWorkerThreads.value);\n }\n }\n}\n\nconst parseMemberParamIfNeeded = function(param) {\n if (param && param.member) {\n param.member.value = [];\n }\n}\n\nconst getShaclOptionsClass = function () {\n const optionsModule = document.getElementById('shaclOptions');\n\n if (optionsModule) {\n const isAriaExpanded = optionsModule.getAttribute('aria-expanded');\n if (isAriaExpanded && isAriaExpanded === 'true') {\n return 'fa fa-angle-down';\n }\n }\n return 'fa fa-angle-right';\n}\n\nconst validateNumberFields = function (params, invalidValues) {\n if (params.queryTimeout) {\n invalidValues.isInvalidQueryTimeout = !NUMBER_PATTERN.test(params.queryTimeout.value);\n }\n if (params.validationResultsLimitTotal && params.validationResultsLimitPerConstraint && params.queryLimitResults) {\n invalidValues.isInvalidValidationResultsLimitTotal = !NUMBER_PATTERN.test(params.validationResultsLimitTotal.value);\n invalidValues.isInvalidValidationResultsLimitPerConstraint = !NUMBER_PATTERN.test(params.validationResultsLimitPerConstraint.value);\n invalidValues.isInvalidQueryLimit = !NUMBER_PATTERN.test(params.queryLimitResults.value);\n }\n else if (params.leftJoinWorkerThreads && params.boundJoinBlockSize && params.joinWorkerThreads\n && params.unionWorkerThreads) {\n invalidValues.isInvalidLeftJoinWorkerThreads = !NUMBER_PATTERN.test(params.leftJoinWorkerThreads.value);\n invalidValues.isInvalidBoundJoinBlockSize = !NUMBER_PATTERN.test(params.boundJoinBlockSize.value);\n invalidValues.isInvalidJoinWorkerThreads = !NUMBER_PATTERN.test(params.joinWorkerThreads.value);\n invalidValues.isInvalidUnionWorkerThreads = !NUMBER_PATTERN.test(params.unionWorkerThreads.value);\n }\n}\n\nconst getInvalidParameterErrorMessage = function(param) {\n if(param === \"isInvalidQueryLimit\") {\n return 'Invalid parameter query limit';\n } else if (param === \"isInvalidQueryTimeout\") {\n return 'Invalid parameter query timeout';\n } else if (param === \"isInvalidValidationResultsLimitTotal\") {\n return 'Invalid parameter validation results limit total';\n } else if (param === \"isInvalidValidationResultsLimitPerConstraint\") {\n return 'Invalid parameter validation results limit per constraint';\n } else if (param === \"isInvalidJoinWorkerThreads\") {\n return 'Invalid parameter join worker threads';\n } else if (param === \"isInvalidLeftJoinWorkerThreads\") {\n return 'Invalid parameter left join worker threads';\n } else if (param === \"isInvalidUnionWorkerThreads\") {\n return 'Invalid parameter union worker threads';\n } else if (param === \"isInvalidBoundJoinBlockSize\") {\n return 'Invalid parameter bound join block size';\n }\n}\n\nconst checkInvalidValues = function(invalidValues) {\n let invalidValuesKeys = Object.keys(invalidValues);\n let invalidValuesVal = Object.values(invalidValues);\n\n for (let i = 0; i < invalidValuesKeys.length; i++) {\n if (invalidValuesVal[i]) {\n return getInvalidParameterErrorMessage(invalidValuesKeys[i]);\n }\n }\n return '';\n}\n\nconst getDocBase = function (productInfo) {\n return `https://graphdb.ontotext.com/documentation/${productInfo.productShortVersion}/${productInfo.productType}`;\n}\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr',\n 'ngFileUpload'\n];\n\nangular.module('graphdb.framework.repositories.controllers', modules)\n .controller('LocationsAndRepositoriesCtrl', LocationsAndRepositoriesCtrl)\n .controller('AddLocationCtrl', AddLocationCtrl)\n .controller('EditLocationCtrl', EditLocationCtrl)\n .controller('ChooseRepositoryCtrl', ChooseRepositoryCtrl)\n .controller('AddRepositoryCtrl', AddRepositoryCtrl)\n .controller('EditRepositoryCtrl', EditRepositoryCtrl)\n .controller('EditRepositoryFileCtrl', EditRepositoryFileCtrl)\n .controller('UploadRepositoryConfigCtrl', UploadRepositoryConfigCtrl);\n\nLocationsAndRepositoriesCtrl.$inject = ['$scope', '$modal', 'toastr', '$repositories', 'ModalService', '$jwtAuth', 'LocationsRestService', 'LocalStorageAdapter', '$interval'];\nfunction LocationsAndRepositoriesCtrl($scope, $modal, toastr, $repositories, ModalService, $jwtAuth, LocationsRestService, LocalStorageAdapter, $interval) {\n $scope.loader = true;\n\n $scope.isLocationInactive = function (location) {\n return !location.active || !$scope.hasActiveLocation();\n };\n\n //Get locations //TODO\n $scope.getLocations = function () {\n return $repositories.getLocations();\n };\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.getActiveLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n $scope.getLocationError = function () {\n return $repositories.getLocationError();\n };\n\n $scope.getDegradedReason = function () {\n return $repositories.getDegradedReason();\n };\n\n $scope.getRepositories = function () {\n return $repositories.getRepositories();\n };\n\n //Delete location\n $scope.deleteLocation = function (uri) {\n ModalService.openSimpleModal({\n title: 'Confirm detach',\n message: 'Are you sure you want to detach the location \\'' + uri + '\\'?',\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteLocation(uri);\n });\n };\n\n //Add new location\n\n $scope.addLocationHttp = function (dataAddLocation) {\n $scope.loader = true;\n LocationsRestService.addLocation(dataAddLocation)\n .success(function (data) {\n $scope.locations = data;\n //Reload locations and repositories\n $repositories.init();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\n };\n\n $scope.addLocation = function () {\n $modal.open({\n templateUrl: 'js/angular/templates/modal/add-location.html',\n windowClass: 'addLocationDialog',\n controller: 'AddLocationCtrl'\n }).result\n .then(function (dataAddLocation) {\n $scope.addLocationHttp(dataAddLocation);\n });\n };\n\n //Edit location\n $scope.editLocationHttp = function (dataEditLocation) {\n $scope.loader = true;\n LocationsRestService.editLocation(dataEditLocation)\n .success(function (data) {\n $scope.locations = data;\n //Reload locations and repositories\n $repositories.init();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\n };\n\n $scope.editLocation = function (location) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/edit-location.html',\n controller: 'EditLocationCtrl',\n resolve: {\n location: function () {\n return location;\n }\n }\n });\n\n modalInstance.result.then(function (dataEditLocation) {\n $scope.editLocationHttp(dataEditLocation);\n }, function () {\n });\n };\n\n $scope.activateLocationRequest = function (location) {\n $scope.loader = true;\n const data = {\n 'uri': location.uri\n };\n LocationsRestService.enableLocation(data)\n .success(function () {\n $repositories.setRepository('');\n $repositories.init();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n document.getElementById('switch-' + location.$$hashKey).checked = false;\n });\n };\n\n //Activate location\n $scope.activateLocation = function (location) {\n //This has to be fixed\n // if (document.getElementById('switch-' + location.$$hashKey).checked == true) {\n // return;\n // }\n if ($scope.hasActiveLocation()) {\n ModalService.openSimpleModal({\n title: 'Confirm location change',\n message: 'Are you sure you want to change the location?',\n warning: true\n }).result\n .then(function () {\n $scope.activateLocationRequest(location);\n }, function () {\n document.getElementById('switch-' + location.$$hashKey).checked = false;\n });\n } else {\n $scope.activateLocationRequest(location);\n }\n };\n\n //Change repository\n $scope.setRepository = function (id) {\n $repositories.setRepository(id);\n };\n\n //Delete repository\n $scope.deleteRepository = function (repositoryId) {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: `<p>Are you sure you want to delete the repository <strong>${repositoryId}</strong>?</p>\n <p><span class=\"icon-2x icon-warning\" style=\"color: #d54a33\"/>\n All data in the repository will be lost.</p>`,\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.deleteRepository(repositoryId);\n removeCachedGraphsOnDelete(repositoryId);\n });\n };\n\n $scope.restartRepository = function (repositoryId) {\n ModalService.openSimpleModal({\n title: 'Confirm restart',\n message: `<p>Are you sure you want to restart the repository <strong>${repositoryId}</strong>?</p>\n <p><span class=\"icon-2x icon-warning\" style=\"color: #d54a33\"/>\n The repository will be shut down immediately and all running queries\n and updates will be cancelled.</p>`,\n warning: true\n }).result\n .then(function () {\n $scope.loader = true;\n $repositories.restartRepository(repositoryId);\n });\n }\n\n $scope.toggleDefaultRepository = function (repositoryId) {\n if ($scope.getDefaultRepository() === repositoryId) {\n // unset\n $repositories.setDefaultRepository(null);\n } else {\n // set\n $repositories.setDefaultRepository(repositoryId);\n }\n };\n\n $scope.getDefaultRepository = function () {\n return $repositories.getDefaultRepository();\n };\n\n /* Unused, data urls don't behave well in all browsers, avoid them when possible\n $scope.getRepoTurtleConfig = function (repository) {\n function downloadRepoConfig(repoTurtleConfig, repository) {\n $('.download-turtle-config')\n .mouseup(function () {\n $(this)\n .attr('href', repoTurtleConfig)\n .attr('download', repository.id + '-config.ttl')\n });\n }\n\n $repositories.getRepositoryTurtleConfig(repository)\n .success(function (response) {\n var repoTurtleConfigDownload = 'data:application/octet-stream;charset=utf-8;base64,'\n + btoa(unescape(encodeURIComponent(response)));\n downloadRepoConfig(repoTurtleConfigDownload, repository);\n })\n .error(function () {\n toastr.error('Error getting repository configuration for '' + repository.id + ''');\n });\n };\n */\n\n $scope.getRepositoryDownloadLink = function (repository) {\n let url = `rest/repositories/${repository.id}${(repository.type === REPOSITORY_TYPES.ontop ? '/downloadZip': '/download')}`;\n const token = $jwtAuth.getAuthToken();\n if (token) {\n url = `${url}?authToken=${encodeURIComponent(token)}`;\n }\n return url;\n };\n\n ///Copy to clipboard popover options\n $scope.copyToClipboard = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.fromFile = function () {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/upload-repository-config.html',\n controller: 'UploadRepositoryConfigCtrl'\n });\n modalInstance.result.then(function () {\n $repositories.init();\n });\n };\n\n //Delete repository\n $scope.openActiveLocationSettings = function () {\n $modal.open({\n templateUrl: 'js/angular/settings/modal/location-settings.html',\n controller: 'ActiveLocationSettingsCtrl'\n });\n };\n\n const timer = $interval(function () {\n // Update repositories state\n $repositories.initQuick();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n function removeCachedGraphsOnDelete(repoId) {\n const cashedDependenciesGraphPrefix = `dependencies-selectedGraph-${repoId}`;\n const cashedClassHierarchyGraphPrefix = `classHierarchy-selectedGraph-${repoId}`;\n angular.forEach(LocalStorageAdapter.keys(), function (key) {\n // remove everything but the hide prefixes setting, it should always persist\n if (key.startsWith(cashedClassHierarchyGraphPrefix) || key.startsWith(cashedDependenciesGraphPrefix)) {\n LocalStorageAdapter.remove(key);\n }\n });\n }\n\n}\n\nUploadRepositoryConfigCtrl.$inject = ['$scope', '$modalInstance', 'Upload', 'toastr'];\n\nfunction UploadRepositoryConfigCtrl($scope, $modalInstance, Upload, toastr) {\n $scope.upload = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n }\n };\n $scope.ok = function () {\n if ($scope.uploadFile) {\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories',\n method: 'POST',\n data: {config: $scope.uploadFile}\n })\n .success(function () {\n $scope.uploadFileLoader = false;\n $modalInstance.close();\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.uploadFileLoader = false;\n });\n }\n };\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nAddLocationCtrl.$inject = ['$scope', '$modalInstance', 'toastr', 'productInfo'];\n\nfunction AddLocationCtrl($scope, $modalInstance, toastr, productInfo) {\n\n $scope.newLocation = {\n 'uri': '',\n 'authType': 'none',\n 'username': '',\n 'password': '',\n 'active': false\n };\n $scope.docBase = getDocBase(productInfo);\n\n $scope.isValidLocation = function () {\n return ($scope.newLocation.uri.length < 6 ||\n $scope.newLocation.uri.indexOf('http:') === 0 || $scope.newLocation.uri.indexOf('https:') === 0)\n && $scope.newLocation.uri.indexOf('/repositories') <= -1;\n };\n\n $scope.ok = function () {\n if (!$scope.newLocation) {\n toastr.error('Location cannot be empty');\n return;\n }\n $modalInstance.close($scope.newLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditLocationCtrl.$inject = ['$scope', '$modalInstance', 'location', 'productInfo'];\n\nfunction EditLocationCtrl($scope, $modalInstance, location, productInfo) {\n\n $scope.editedLocation = angular.copy(location);\n $scope.docBase = getDocBase(productInfo);\n\n $scope.ok = function () {\n $modalInstance.close($scope.editedLocation);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nChooseRepositoryCtrl.$inject = ['$scope', '$location', 'isEnterprise', 'isFreeEdition'];\nfunction ChooseRepositoryCtrl($scope, $location, isEnterprise, isFreeEdition) {\n $scope.pageTitle = 'Select repository type';\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.isEnterprise = isEnterprise;\n $scope.isFreeEdition = isFreeEdition;\n $scope.chooseRepositoryType = function (repoType) {\n $location.path(`${$location.path()}/${repoType}`);\n };\n}\n\nAddRepositoryCtrl.$inject = ['$scope', 'toastr', '$repositories', '$location', '$timeout', 'Upload', 'isEnterprise', 'isFreeEdition', '$routeParams', 'RepositoriesRestService'];\n\nfunction AddRepositoryCtrl($scope, toastr, $repositories, $location, $timeout, Upload, isEnterprise, isFreeEdition, $routeParams, RepositoriesRestService) {\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.repoTooltips = REPO_TOOLTIPS;\n $scope.params = $routeParams;\n $scope.repositoryType = $routeParams.repositoryType;\n $scope.enable = true;\n\n $scope.loader = true;\n $scope.pageTitle = 'Create Repository';\n $scope.repositoryInfo = {\n id: '',\n params: {},\n title: '',\n type: ''\n };\n\n $scope.isEnterprise = isEnterprise;\n $scope.isFreeEdition = isFreeEdition;\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads : false,\n isInvalidUnionWorkerThreads : false,\n isInvalidValidationResultsLimitPerConstraint : false,\n isInvalidValidationResultsLimitTotal : false\n };\n\n function isValidEERepository(repositoryType) {\n return $scope.isEnterprise && (repositoryType === REPOSITORY_TYPES.eeMaster\n || repositoryType === REPOSITORY_TYPES.eeWorker);\n }\n\n function isValidSERepository(repositoryType) {\n return !$scope.isFreeEdition && !$scope.isEnterprise && repositoryType === REPOSITORY_TYPES.se;\n }\n\n function isValidFRRepository(repositoryType) {\n return $scope.isFreeEdition && repositoryType === REPOSITORY_TYPES.free;\n }\n function isValidOntopRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.ontop;\n }\n\n function isValidFedXRepository(repositoryType) {\n return repositoryType === REPOSITORY_TYPES.fedx;\n }\n\n function isRepositoryTypeValid(repositoryType) {\n return isValidEERepository(repositoryType) || isValidSERepository(repositoryType)\n || isValidFRRepository(repositoryType) || isValidOntopRepository(repositoryType)\n || isValidFedXRepository(repositoryType);\n }\n\n function setPageTitle(repositoryType) {\n switch (repositoryType) {\n case REPOSITORY_TYPES.free:\n $scope.pageTitle = 'Create GraphDB Free repository';\n break;\n case REPOSITORY_TYPES.eeWorker:\n $scope.pageTitle = 'Create GraphDB EE Worker repository';\n break;\n case REPOSITORY_TYPES.eeMaster:\n $scope.pageTitle = 'Create GraphDB EE Master repository';\n break;\n case REPOSITORY_TYPES.se:\n $scope.pageTitle = 'Create GraphDB SE repository';\n break;\n case REPOSITORY_TYPES.ontop:\n $scope.pageTitle = 'Create Ontop Virtual SPARQL repository';\n break;\n case REPOSITORY_TYPES.fedx:\n $scope.pageTitle = 'Create FedX Virtual SPARQL repository';\n break;\n }\n }\n\n $scope.getConfig = function (repoType) {\n RepositoriesRestService.getRepositoryConfiguration(repoType).success(function (data) {\n $scope.repositoryInfo.params = data.params;\n $scope.repositoryInfo.type = data.type;\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n parseMemberParamIfNeeded($scope.repositoryInfo.params);\n $scope.loader = false;\n // The clean way is the \"autofocus\" attribute and we use it but it doesn't seem to\n // work in all browsers because of the way dynamic content is handled so give it another\n // try here.\n $timeout(function() {\n // Focus the ID field\n angular.element(document).find('#id').focus();\n }, 50);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n };\n\n if ($scope.repositoryType && isRepositoryTypeValid($scope.repositoryType)) {\n $scope.repositoryInfo.type = $scope.repositoryType;\n $scope.getConfig($scope.repositoryType);\n setPageTitle($scope.repositoryType);\n } else {\n $location.path('/repository/create');\n }\n\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.activeLocation = function () {\n return $repositories.getActiveLocation();\n };\n\n let isInvalidPieFile = false;\n $scope.uploadRuleset = function (files) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/uploadRuleSet',\n data: {ruleset: $scope.uploadFile}\n }).progress(function (evt) {\n /*\t\t\t\t\t\tvar progressPercentage = parseInt(100.0 * evt.loaded / evt.total);\n console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);*/\n }).success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n isInvalidPieFile = true;\n } else {\n const fileName = $scope.uploadFile.name;\n const newValue = {id: data.fileLocation, name: 'Custom: ' + fileName};\n if ($scope.rulesetPie) {\n // file was previously uploaded\n $scope.rulesets[0] = newValue;\n } else {\n // file uploaded for the first time\n $scope.rulesets.unshift(newValue);\n }\n $scope.rulesetPie = data.fileLocation;\n $scope.rulesetPieFile = fileName;\n $scope.repositoryInfo.params.ruleset.value = $scope.rulesetPie;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n };\n\n $scope.noMembersError = function () {\n toastr.error('FedX repository should be created with at least one member!');\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.createRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.createRepository($scope.repositoryInfo).success(function () {\n toastr.success('The repository ' + $scope.repositoryInfo.id + ' has been created.');\n $repositories.init($scope.goBackToPreviousLocation);\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n };\n\n $scope.createRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error('Repository ID cannot be empty');\n return;\n }\n\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues);\n\n if (isInvalidPieFile) {\n toastr.error('Invalid rule-set file. Please upload a valid one.');\n } else if ($scope.isInvalidRepoName) {\n toastr.error('Wrong repo name');\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if (invalidValues) {\n toastr.error(invalidValues);\n } else {\n $scope.createRepoHttp();\n }\n };\n\n $scope.rulesetWarning = function () {\n const pp = $scope.repositoryInfo.params;\n if (pp === undefined || pp.ruleset === undefined || pp.disableSameAs === undefined) {\n return '';\n }\n\n if (pp.ruleset.value.indexOf('owl') === 0 && pp.disableSameAs.value === 'true') {\n return REPO_TOOLTIPS.rulesetWarnings.needsSameAs;\n } else if (pp.ruleset.value.indexOf('rdfs') === 0 && pp.disableSameAs.value === 'false') {\n return REPO_TOOLTIPS.rulesetWarnings.doesntNeedSameAs;\n } else if (pp.ruleset.value === $scope.rulesetPie) {\n return REPO_TOOLTIPS.rulesetWarnings.customRuleset;\n } else {\n return '';\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n }\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n }\n //TODO - check if repositoryID exist\n\n // Request auto-focus of the ID input when creating a repo (but not when editing)\n $scope.autofocusId = 'autofocus';\n}\n\nEditRepositoryFileCtrl.$inject = ['$scope', '$modalInstance', 'RepositoriesRestService', 'file', 'toastr'];\n\nfunction EditRepositoryFileCtrl($scope, $modalInstance, RepositoriesRestService, file, toastr) {\n\n if (file) {\n RepositoriesRestService.getRepositoryFileContent(file).success(function (data) {\n $scope.fileContent = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n });\n }\n\n $scope.ok = function () {\n $modalInstance.close({\n content: $scope.fileContent,\n fileLocation: file\n });\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nEditRepositoryCtrl.$inject = ['$scope', '$routeParams', 'toastr', '$repositories', '$location', 'ModalService', 'isEnterprise', 'isFreeEdition', 'RepositoriesRestService'];\n\nfunction EditRepositoryCtrl($scope, $routeParams, toastr, $repositories, $location, ModalService, isEnterprise, isFreeEdition, RepositoriesRestService) {\n\n $scope.rulesets = STATIC_RULESETS.slice();\n $scope.repositoryTypes = REPOSITORY_TYPES;\n $scope.repoTooltips = REPO_TOOLTIPS;\n\n //TODO\n $scope.editRepoPage = true;\n $scope.canEditRepoId = false;\n $scope.params = $routeParams;\n $scope.loader = true;\n $scope.isEnterprise = isEnterprise;\n $scope.isFreeEdition = isFreeEdition;\n $scope.repositoryInfo = {};\n $scope.repositoryInfo.id = $scope.params.repositoryId;\n $scope.repositoryInfo.restartRequested = false;\n $scope.repositoryType = '';\n $scope.saveRepoId = $scope.params.repositoryId;\n $scope.pageTitle = 'Edit Repository: ' + $scope.params.repositoryId;\n $scope.invalidValues = {\n isInvalidQueryTimeout: false,\n isInvalidQueryLimit: false,\n isInvalidLeftJoinWorkerThreads: false,\n isInvalidBoundJoinBlockSize: false,\n isInvalidJoinWorkerThreads : false,\n isInvalidUnionWorkerThreads : false,\n isInvalidValidationResultsLimitPerConstraint : false,\n isInvalidValidationResultsLimitTotal : false\n };\n $scope.hasActiveLocation = function () {\n return $repositories.hasActiveLocation();\n };\n\n $scope.$watch($scope.hasActiveLocation, function () {\n if ($scope.hasActiveLocation) {\n RepositoriesRestService.getRepository($scope.repositoryInfo.id)\n .success(function (data) {\n if (angular.isDefined(data.params.ruleset)) {\n let ifRulesetExists = false;\n angular.forEach($scope.rulesets, function (item) {\n if (item.id === data.params.ruleset.value) {\n ifRulesetExists = true;\n }\n });\n if (data.params.ruleset && !ifRulesetExists) {\n let name = getFileName(data.params.ruleset.value);\n $scope.rulesets.unshift({id: data.params.ruleset.value, name: 'Custom: ' + name});\n }\n }\n $scope.repositoryInfo = data;\n $scope.setRepositoryType(data.type);\n parseNumberParamsIfNeeded($scope.repositoryInfo.params);\n $scope.repositoryInfo.saveId = $scope.saveRepoId;\n $scope.loader = false;\n })\n .error(function (data, status) {\n if (status === 404 && $routeParams.repositoryId !== 'system') {\n toastr.error('Repo with name ' + '<b>' + $routeParams.repositoryId + '</b>' + ' doesn\\'t exists', 'Error', {allowHtml: true});\n $scope.loader = false;\n $location.path('repository');\n } else if (status === 404 && $routeParams.repositoryId === 'system') {\n toastr.error('<b>System</b> repository can\\'t be edited', 'Error', {allowHtml: true});\n $scope.loader = false;\n $location.path('repository');\n } else {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n }\n });\n }\n });\n\n $scope.setRepositoryType = function (type) {\n $scope.repositoryType = type;\n };\n\n $scope.noMembersError = function () {\n toastr.error('FedX repository should be created with at least one member!');\n };\n\n $scope.editRepoHttp = function () {\n $scope.loader = true;\n RepositoriesRestService.editRepository($scope.repositoryInfo.saveId, $scope.repositoryInfo)\n .success(function () {\n toastr.success('The repository ' + $scope.repositoryInfo.saveId + ' has been edited.');\n $repositories.init($scope.goBackToPreviousLocation);\n if ($scope.repositoryInfo.saveId === $scope.repositoryInfo.id && $scope.repositoryInfo.restartRequested) {\n $repositories.restartRepository($scope.repositoryInfo.id);\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n };\n\n $scope.editRepository = function () {\n $scope.isInvalidRepoName = !FILENAME_PATTERN.test($scope.repositoryInfo.id);\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n const invalidValues = checkInvalidValues($scope.invalidValues);\n let modalMsg = `Save changes to repository <strong>${$scope.repositoryInfo.id}</strong>?<br><br>`;\n if ($scope.repositoryInfo.saveId !== $scope.repositoryInfo.id) {\n modalMsg += `<span class=\"icon-2x icon-warning\" style=\"color: #d54a33\"/>\n The repository will be stopped and renamed.`;\n } else if ($scope.repositoryInfo.restartRequested) {\n modalMsg += `<span class=\"icon-2x icon-warning\" style=\"color: #d54a33\"/>\n The repository will be restarted.`;\n } else {\n modalMsg += `<span class=\"icon-2x icon-warning\" style=\"color: #d54a33\"/>\n Repository restart required for changes to take effect.`;\n }\n if ($scope.isInvalidRepoName) {\n toastr.error('Wrong repo name');\n } else if ($scope.repositoryType === \"fedx\" && $scope.repositoryInfo.params.member.value.length === 0) {\n $scope.noMembersError();\n } else if(invalidValues) {\n toastr.error(invalidValues);\n } else {\n ModalService.openSimpleModal({\n title: 'Confirm save',\n message: modalMsg,\n warning: true\n }).result\n .then(function () {\n $scope.editRepoHttp();\n });\n }\n }\n\n $scope.editRepositoryId = function () {\n let msg = '<p>Changing the repository ID is a dangerous operation since it renames the repository folder and enforces repository shutdown.</p>';\n if ($scope.isEnterprise) {\n msg += '<p>If your repository is in a cluster, it is your responsibility to update the cluster after renaming.</p>';\n }\n ModalService.openSimpleModal({\n title: 'Confirm enable edit',\n message: msg,\n warning: true\n }).result.then(function () {\n $scope.canEditRepoId = true;\n });\n };\n\n $scope.goBackToPreviousLocation = function () {\n if (angular.isDefined($routeParams.previous)) {\n delete $location.$$search.previous;\n $location.path('/');\n } else {\n $location.path('/repository');\n }\n };\n\n $scope.validateNumberInput = function () {\n validateNumberFields($scope.repositoryInfo.params, $scope.invalidValues);\n }\n\n $scope.getShaclOptionsClass = function () {\n return getShaclOptionsClass();\n }\n}\n"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/graphexplore/controllers/dependencies-chord.controller.js"],"names":["allGraphs","contextID","type","value","uri","humanize","number","exp","Math","floor","log","result","pow","toFixed","DependenciesChordCtrl","$scope","$rootScope","$repositories","toastr","$timeout","GraphDataRestService","UiScrollService","ModalService","LocalStorageAdapter","RDF4JRepositoriesRestService","timer","status","getActiveRepository","STATUS","WAIT","NO_REPO","selectedGraph","initView","resolveGraphs","success","graphsInRepo","results","bindings","setSelectedGraphFromCache","isSystemRepository","getRelationshipsStatus","error","data","repositoryError","getError","selGraphFromCache","get","some","graph","set","getRelationshipsData","selectedClasses","d3","select","html","direction","matrixData","dependenciesData","matrix","right","nodes","left","hasLinks","_","sum","map","arr","READY","force","IN_PROGRESS","cancel","getRelationshipsClasses","classesData","allClasses","items","filter","classFilterFunc","allNotFilteredClasses","undefined","angular","isUndefined","slice","warning","indexOf","ERROR","substring","length","datasource","position","current","c","name","toLowerCase","classQuery","query","key","index","count","initLazyList","$watch","each","item","revision","adapterContainer","adapter","remain","reload","isActiveRepoFedXType","$on","isLoading","confirmCalculateDependencies","openSimpleModal","title","message","then","calculateDependencies","calculateRelationships","addClass","clazz","push","removeClass","remove","showClass","classToShow","isClassByNameShown","find","addClassByName","removeClassByName","removeAllClasses","repoIsSetListener","window","addEventListener","removeRepoIsSetListener","removeEventListener","selectGraph","getSelectedGraphValue","isAllGraphsSelected","Object","defineProperty","global","module","controller","config","$tooltipProvider","options","appendToBody","$inject"],"mappings":"8EAAA,qBACI,KAAQ,OACR,QAAW,UACX,MAAS,QACT,YAAe,cACf,MAAS,SAWPA,EAAY,CACdC,UAAW,CACPC,KAAM,MACNC,MAAO,aACPC,IAAK,KAiBb,SAASC,EAASC,GACd,GAAIA,EAAS,IACT,OAAOA,EAEX,MACMC,EAAMC,KAAKC,MAAMD,KAAKE,IAAIJ,GAAUE,KAAKE,IAAI,MACnD,IAAIC,EAASL,EAASE,KAAKI,IAAI,IAAML,GAErC,OADAI,EAAUA,EAAS,EAAK,EAAIH,KAAKI,IAAI,IAAML,EAAM,GAAOI,EAAOE,QAAQ,GAAKF,EAAOE,QAAQ,GACpFF,EAJI,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAIlBJ,EAAM,GAK7B,SAASO,EAAsBC,EAAQC,EAAYC,EAAeC,EAAQC,EAAUC,EAAsBC,EAAiBC,EAAcC,EAAqBC,GAE1J,IAAIC,EAAQ,KAEZV,EAAOW,OAAUT,EAAcU,sBAAyCC,EAAOC,KAAxBD,EAAOE,QAE9D,IAAIC,EAAgB/B,EAEpB,MAAMgC,EAAW,WACbR,EAA6BS,gBACxBC,SAAQ,SAAUC,GACfpB,EAAOoB,aAAeA,EAAaC,QAAQC,SAC3CC,IACKvB,EAAOwB,qBAGiB,UAAlBxB,EAAOW,QACdc,KAHAzB,EAAOW,OAAS,OAChBc,GAAuB,OAI5BC,OAAM,SAAUC,GACnB3B,EAAO4B,gBAAkBC,SAASF,GAClCxB,EAAOuB,MAAMG,SAASF,GAAO,4BAI/BJ,EAA4B,WAC9B,MAAMO,EAAoBtB,EAAoBuB,IAAI,8BAA8B7B,EAAcU,yBACpE,OAAtBkB,GAA8B9B,EAAOoB,aAAaY,KAAKC,GAASA,EAAM/C,UAAUG,MAAQyC,EAAkB5C,UAAUG,KACpH2B,EAAgBc,EAEhBtB,EAAoB0B,IAAI,8BAA8BhC,EAAcU,wBAAyBI,IAI/FmB,EAAuB,SAAUC,GACnCC,GAAGC,OAAO,uBAAuBC,KAAK,IAEtCvC,EAAOW,OAASE,EAAOC,KAEvBT,EAAqB8B,qBAAqBC,EAAiBpC,EAAOwC,UAAWxB,EAAc9B,UAAUG,KAChG8B,SAAQ,SAAUsB,GAEfzC,EAAO0C,iBAAmB,CACtBC,OAAQF,EAAWG,MACnBC,MAAOJ,EAAWK,KAClBC,SAAUC,EAAEC,IAAID,EAAEE,IAAIT,EAAWG,OAAO,SAAUO,GAC9C,OAAOH,EAAEC,IAAIE,OACX,EACNX,UAAWxC,EAAOwC,WAEtBxC,EAAOW,OAASE,EAAOuC,SACxB1B,OAAM,SAAUC,GACnB3B,EAAOW,OAASE,EAAOuC,MACvBjD,EAAOuB,MAAMG,SAASF,GAAO,wCAoB/BF,EAAyB,SAAU4B,IACjCrD,EAAOW,SAAWE,EAAOuC,OAAUC,KAGvCrD,EAAOW,OAASE,EAAOC,KACvBT,EAAqBoB,uBAAuBT,EAAc9B,UAAUG,KAC/D8B,SAAQ,SAAUQ,GAEf,GADA3B,EAAOW,OAASgB,EACZ3B,EAAOW,SAAWE,EAAOyC,YAAa,CACtC,GAAc,OAAV5C,EACA,OAEAA,EAAQN,EAASqB,EAAwB,KAG7CzB,EAAOW,SAAWE,EAAOuC,QACX,OAAV1C,IACAN,EAASmD,OAAO7C,GAChBA,EAAQ,MAjCxBL,EAAqBmD,wBAAwBxD,EAAOwC,UAAWxB,EAAc9B,UAAUG,KAClF8B,SAAQ,SAAUsC,EAAa9C,GAC5BX,EAAO0D,WAAWC,MAAQX,EAAEY,OAAOH,EAAaI,GAChD7D,EAAO8D,sBAAwBL,EAC/BzD,EAAOoC,qBAAkB2B,EACrBC,QAAQC,YAAYjE,EAAOoC,mBAC3BpC,EAAOoC,gBAAkBqB,EAAYS,MAAM,EAAG,KAElD/B,EAAqBnC,EAAOoC,iBACb,MAAXzB,GACAR,EAAOgE,QAAQ,4DAA6D,mCA2BxC,IAApCnE,EAAOW,OAAOyD,QAAQ,YACtBpE,EAAOW,OAASE,EAAOwD,MACvBlE,EAAOuB,MAAM,sDAAwD1B,EAAOW,OAAO2D,UAAU,SAASC,aAG7G7C,OAAM,SAAUC,GACb3B,EAAOW,OAASE,EAAOwD,MACvBlE,EAAOuB,MAAMG,SAASF,GAAO,iDAIzC3B,EAAO0D,WAAa,GACpB1D,EAAO0D,WAAWC,MAAQ,GAC1B3D,EAAO8D,sBAAwB,GAC/B9D,EAAOwC,UAAY,MAEnB,MAAMgC,EAAa,GACnB,IAAIC,EAAW,EACXC,EAAU,EA+Bd,SAASb,EAAgBc,GACrB,OAEyD,IAFlDA,EAAEC,KACJC,cACAT,QAAQpE,EAAO8E,WAAWC,MAAMF,eAjCzC5E,EAAW+E,IAAM,GAEjBR,EAAWzC,IAAM,SAAUkD,EAAOC,EAAO/D,GACrC,OAAOb,EAAgB6E,aAAaF,EAAOC,EAAO/D,EAASsD,EAAUzE,EAAO0D,WAAWC,QAG3F1D,EAAWmF,QAAO,WACd,OAAOnF,EAAW+E,OACnB,WACCP,EAAW,EACXzB,EAAEqC,KAAKrF,EAAO0D,WAAWC,OAAO,SAAU2B,GAClCrF,EAAW+E,IAAMM,GAAMb,OAE/BC,OAGJF,EAAWe,SAAW,WAClB,OAAOb,GAGX1E,EAAOwE,WAAaA,EAIpBxE,EAAOwF,iBAAmB,CAACC,QAAS,CAACC,QAAQ,IAE7C1F,EAAO8E,WAAa,GACpB9E,EAAO8E,WAAWC,MAAQ,GAC1B/E,EAAO6D,gBAAkBA,EAQzB7D,EAAOoF,OAAO,oBAAoB,WAC1BpF,EAAO0D,WAAWC,MAAMY,OAAS,GACjCnE,GAAS,WACLJ,EAAOwF,iBAAiBC,QAAQE,WACjC,OAIX3F,EAAOoF,OAAO,aAAa,YAClBlF,EAAcU,uBACXZ,EAAOwB,sBAAwBtB,EAAc0F,wBAGrD3E,OAGJjB,EAAO6F,IAAI,YAAY,WACnBzF,EAASmD,OAAO7C,MAGpBV,EAAO8F,UAAY,WACf,OAAO9F,EAAOW,SAAWE,EAAOyC,aAAetD,EAAOW,SAAWE,EAAOC,MAG5Ed,EAAO+F,6BAA+B,WAClCxF,EAAayF,gBAAgB,CACzBC,MAAO,oBACPC,QAAS,mEACT/B,SAAS,IACVvE,OACEuG,MAAK,WACFnG,EAAOoG,4BAInBpG,EAAOoG,sBAAwB,WAC3BpG,EAAOW,OAASE,EAAOC,KACvBd,EAAOoC,qBAAkB2B,EACzB1D,EAAqBgG,uBAAuBrF,EAAc9B,UAAUG,KAC/D8B,SAAQ,SAAUQ,GACgB,IAA3BA,EAAKyC,QAAQ,UACbjE,EAAOuB,MAAM,sDAAwDC,EAAK2C,UAAU,SAASC,SAE7F9C,OAGPC,OAAM,SAAUC,GACbxB,EAAOuB,MAAM,qCAAuCG,SAASF,QAIzE3B,EAAOsG,SAAW,SAAUC,GACxBvG,EAAOoC,gBAAgBoE,KAAKD,GAC5BpE,EAAqBnC,EAAOoC,kBAGhCpC,EAAOyG,YAAc,SAAUF,GAC3BvD,EAAE0D,OAAO1G,EAAOoC,iBAAiB,SAAUuC,GACvC,OAAOA,EAAEC,OAAS2B,EAAM3B,QAE5BzC,EAAqBnC,EAAOoC,kBAGhCpC,EAAO2G,UAAY,SAAUJ,GACzBvG,EAAO4G,YAAcL,GAGzBvG,EAAO6G,mBAAqB,SAAUjC,GAClC,YAAwDb,IAAjDf,EAAE8D,KAAK9G,EAAOoC,gBAAiB,CAACwC,KAAMA,KAGjD5E,EAAO+G,eAAiB,SAAUnC,GAC9B5E,EAAOoC,gBAAgBoE,KAAKxD,EAAE8D,KAAK9G,EAAO0D,WAAWC,MAAO,CAACiB,KAAMA,KACnEzC,EAAqBnC,EAAOoC,kBAGhCpC,EAAOgH,kBAAoB,SAAUpC,GACjC5B,EAAE0D,OAAO1G,EAAOoC,iBAAiB,SAAUuC,GACvC,OAAOA,EAAEC,OAASA,KAEtBzC,EAAqBnC,EAAOoC,kBAIhCpC,EAAOiH,iBAAmB,WACtBjH,EAAOoC,gBAAkB,GACzBD,EAAqBnC,EAAOoC,kBAGhCpC,EAAOwB,mBAAqB,WACxB,MAA+C,WAAxCtB,EAAcU,uBAgBzB,MAAMsG,EAAoBlH,EAAO6F,IAAI,mBAbrC,WAEI7F,EAAO8E,WAAa,GACpB9E,EAAO8E,WAAWC,MAAQ,GAC1B/E,EAAO4B,gBAAkB,KACzBZ,EAAgB/B,EACXiB,EAAcU,wBAAyBV,EAAc0F,uBAI1D3E,IAHIjB,EAAOW,OAASE,EAAOE,WAQ/BoG,OAAOC,iBAAiB,gBAExB,SAASC,IACLH,IACAC,OAAOG,oBAAoB,eAAgBD,MAG/CrH,EAAOuH,YAAc,SAAUtF,GAC3BjB,EAAgBiB,EAChBR,GAAuB,GACvBjB,EAAoB0B,IAAI,8BAA8BhC,EAAcU,wBAAyBI,IAGjGhB,EAAOwH,sBAAwB,WAC3B,OAAOxG,EAAc9B,UAAUE,OAGnCY,EAAOyH,oBAAsB,WACzB,MAA0C,eAAnCzH,EAAOwH,yBA/StBE,OAAOC,eAAeC,EAAQ,YAAa,CACvC7F,IAAK,IAAc9C,IAGvB+E,QACK6D,OAAO,0DApBI,CACZ,mBACA,YACA,SACA,eACA,+CACA,gDAeCC,WAAW,wBAAyB/H,GACpCgI,OAAO,CAAC,mBAAoB,SAAUC,GACnCA,EAAiBC,QAAQ,CAACC,cAAc,OAE3CtE,OAAO,YAAY,WAChB,OAAOtE,KAcfS,EAAsBoI,QAAU,CAAC,SAAU,aAAc,gBAAiB,SAAU,WAAY,uBAAwB,kBAAmB,eAAgB,sBAAuB,kC","file":"56.ce399f5788c0f5fe937b.bundle.js","sourcesContent":["const STATUS = {\n 'WAIT': 'WAIT',\n 'NO_REPO': 'NO_REPO',\n 'READY': 'READY',\n 'IN_PROGRESS': 'IN_PROGRESS',\n 'ERROR': 'ERROR'\n};\n\nconst modules = [\n 'ui.scroll.jqlite',\n 'ui.scroll',\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.utils.localstorageadapter'\n];\nconst allGraphs = {\n contextID: {\n type: \"all\",\n value: \"All graphs\",\n uri: \"\"\n }\n};\nObject.defineProperty(global, 'allGraphs', {\n get: () => {return allGraphs;}\n});\n\nangular\n .module('graphdb.framework.graphexplore.controllers.dependencies', modules)\n .controller('DependenciesChordCtrl', DependenciesChordCtrl)\n .config(['$tooltipProvider', function ($tooltipProvider) {\n $tooltipProvider.options({appendToBody: true});\n }])\n .filter('humanize', function () {\n return humanize;\n });\n\nfunction humanize(number) {\n if (number < 1000) {\n return number;\n }\n const si = ['K', 'M', 'G', 'T', 'P', 'H'];\n const exp = Math.floor(Math.log(number) / Math.log(1000));\n let result = number / Math.pow(1000, exp);\n result = (result % 1 > (1 / Math.pow(1000, exp - 1))) ? result.toFixed(2) : result.toFixed(0);\n return result + si[exp - 1];\n}\n\nDependenciesChordCtrl.$inject = ['$scope', '$rootScope', '$repositories', 'toastr', '$timeout', 'GraphDataRestService', 'UiScrollService', 'ModalService', 'LocalStorageAdapter', 'RDF4JRepositoriesRestService'];\n\nfunction DependenciesChordCtrl($scope, $rootScope, $repositories, toastr, $timeout, GraphDataRestService, UiScrollService, ModalService, LocalStorageAdapter, RDF4JRepositoriesRestService) {\n\n let timer = null;\n\n $scope.status = !$repositories.getActiveRepository() ? STATUS.NO_REPO : STATUS.WAIT;\n\n let selectedGraph = allGraphs;\n\n const initView = function () {\n RDF4JRepositoriesRestService.resolveGraphs()\n .success(function (graphsInRepo) {\n $scope.graphsInRepo = graphsInRepo.results.bindings;\n setSelectedGraphFromCache();\n if (!$scope.isSystemRepository()) {\n $scope.status = 'WAIT';\n getRelationshipsStatus(true);\n } else if ($scope.status !== \"READY\") {\n getRelationshipsStatus();\n }\n }).error(function (data) {\n $scope.repositoryError = getError(data);\n toastr.error(getError(data), 'Error getting graphs');\n });\n };\n\n const setSelectedGraphFromCache = function () {\n const selGraphFromCache = LocalStorageAdapter.get(`dependencies-selectedGraph-${$repositories.getActiveRepository()}`);\n if (selGraphFromCache !== null && $scope.graphsInRepo.some(graph => graph.contextID.uri === selGraphFromCache.contextID.uri)) {\n selectedGraph = selGraphFromCache;\n } else {\n LocalStorageAdapter.set(`dependencies-selectedGraph-${$repositories.getActiveRepository()}`, selectedGraph);\n }\n };\n\n const getRelationshipsData = function (selectedClasses) {\n d3.select('#dependencies-chord').html('');\n\n $scope.status = STATUS.WAIT;\n\n GraphDataRestService.getRelationshipsData(selectedClasses, $scope.direction, selectedGraph.contextID.uri)\n .success(function (matrixData) {\n // Check classes empty\n $scope.dependenciesData = {\n matrix: matrixData.right,\n nodes: matrixData.left,\n hasLinks: _.sum(_.map(matrixData.right, function (arr) {\n return _.sum(arr);\n })) > 0,\n direction: $scope.direction\n };\n $scope.status = STATUS.READY;\n }).error(function (data) {\n $scope.status = STATUS.READY;\n toastr.error(getError(data), 'Could not get dependencies count');\n });\n };\n\n const getRelationshipsClasses = function () {\n GraphDataRestService.getRelationshipsClasses($scope.direction, selectedGraph.contextID.uri)\n .success(function (classesData, status) {\n $scope.allClasses.items = _.filter(classesData, classFilterFunc);\n $scope.allNotFilteredClasses = classesData;\n $scope.selectedClasses = undefined;\n if (angular.isUndefined($scope.selectedClasses)) {\n $scope.selectedClasses = classesData.slice(0, 10);\n }\n getRelationshipsData($scope.selectedClasses);\n if (status === 207) {\n toastr.warning('You can update the diagram by pressing the reload button.', 'Repository data has changed');\n }\n });\n };\n\n const getRelationshipsStatus = function (force) {\n if ($scope.status === STATUS.READY && !force) {\n return;\n }\n $scope.status = STATUS.WAIT;\n GraphDataRestService.getRelationshipsStatus(selectedGraph.contextID.uri)\n .success(function (data) {\n $scope.status = data;\n if ($scope.status === STATUS.IN_PROGRESS) {\n if (timer !== null) {\n return;\n } else {\n timer = $timeout(getRelationshipsStatus, 2000);\n }\n }\n if ($scope.status === STATUS.READY) {\n if (timer !== null) {\n $timeout.cancel(timer);\n timer = null;\n }\n getRelationshipsClasses();\n }\n if ($scope.status.indexOf('ERROR;') === 0) {\n $scope.status = STATUS.ERROR;\n toastr.error('There was an error while calculating dependencies: ' + $scope.status.substring('ERROR;'.length));\n }\n })\n .error(function (data) {\n $scope.status = STATUS.ERROR;\n toastr.error(getError(data), 'Could not get dependencies count status!');\n });\n };\n\n $scope.allClasses = {};\n $scope.allClasses.items = [];\n $scope.allNotFilteredClasses = [];\n $scope.direction = 'all';\n\n const datasource = {};\n let position = 0;\n let current = 0;\n $rootScope.key = '';\n\n datasource.get = function (index, count, success) {\n return UiScrollService.initLazyList(index, count, success, position, $scope.allClasses.items);\n };\n\n $rootScope.$watch(function () {\n return $rootScope.key;\n }, function () {\n position = 0;\n _.each($scope.allClasses.items, function (item) {\n if ($rootScope.key > item) position++;\n });\n current++;\n });\n\n datasource.revision = function () {\n return current;\n };\n\n $scope.datasource = datasource;\n\n // adapter implementation for ui-scroll directive\n // reload\n $scope.adapterContainer = {adapter: {remain: true}};\n\n $scope.classQuery = {};\n $scope.classQuery.query = '';\n $scope.classFilterFunc = classFilterFunc;\n\n function classFilterFunc(c) {\n return c.name\n .toLowerCase()\n .indexOf($scope.classQuery.query.toLowerCase()) !== -1;\n }\n\n $scope.$watch('allClasses.items', function () {\n if ($scope.allClasses.items.length > 0) {\n $timeout(function () {\n $scope.adapterContainer.adapter.reload();\n }, 30);\n }\n });\n\n $scope.$watch('direction', function () {\n if (!$repositories.getActiveRepository() ||\n $scope.isSystemRepository() || $repositories.isActiveRepoFedXType()) {\n return;\n }\n initView();\n });\n\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n\n $scope.isLoading = function () {\n return $scope.status === STATUS.IN_PROGRESS || $scope.status === STATUS.WAIT;\n };\n\n $scope.confirmCalculateDependencies = function () {\n ModalService.openSimpleModal({\n title: 'Confirm operation',\n message: 'Calculating relationships data may take some time. Are you sure?',\n warning: true\n }).result\n .then(function () {\n $scope.calculateDependencies();\n });\n };\n\n $scope.calculateDependencies = function () {\n $scope.status = STATUS.WAIT;\n $scope.selectedClasses = undefined;\n GraphDataRestService.calculateRelationships(selectedGraph.contextID.uri)\n .success(function (data) {\n if (data.indexOf('ERROR;') === 0) {\n toastr.error('There was an error while calculating dependencies: ' + data.substring('ERROR;'.length));\n } else {\n getRelationshipsStatus();\n }\n })\n .error(function (data) {\n toastr.error('Could not force dependencies count' + getError(data));\n });\n };\n\n $scope.addClass = function (clazz) {\n $scope.selectedClasses.push(clazz);\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.removeClass = function (clazz) {\n _.remove($scope.selectedClasses, function (c) {\n return c.name === clazz.name;\n });\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.showClass = function (clazz) {\n $scope.classToShow = clazz;\n };\n\n $scope.isClassByNameShown = function (name) {\n return _.find($scope.selectedClasses, {name: name}) !== undefined;\n };\n\n $scope.addClassByName = function (name) {\n $scope.selectedClasses.push(_.find($scope.allClasses.items, {name: name}));\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.removeClassByName = function (name) {\n _.remove($scope.selectedClasses, function (c) {\n return c.name === name;\n });\n getRelationshipsData($scope.selectedClasses);\n };\n\n\n $scope.removeAllClasses = function () {\n $scope.selectedClasses = [];\n getRelationshipsData($scope.selectedClasses);\n };\n\n $scope.isSystemRepository = function () {\n return $repositories.getActiveRepository() === 'SYSTEM';\n };\n\n function onRepositoryIsSet() {\n // clear class search on changing the repository\n $scope.classQuery = {};\n $scope.classQuery.query = '';\n $scope.repositoryError = null;\n selectedGraph = allGraphs;\n if (!$repositories.getActiveRepository() || $repositories.isActiveRepoFedXType()) {\n $scope.status = STATUS.NO_REPO;\n return;\n }\n initView();\n }\n\n const repoIsSetListener = $scope.$on('repositoryIsSet', onRepositoryIsSet);\n\n window.addEventListener('beforeunload', removeRepoIsSetListener);\n\n function removeRepoIsSetListener() {\n repoIsSetListener();\n window.removeEventListener('beforeunload', removeRepoIsSetListener);\n }\n\n $scope.selectGraph = function (graph) {\n selectedGraph = graph;\n getRelationshipsStatus(true);\n LocalStorageAdapter.set(`dependencies-selectedGraph-${$repositories.getActiveRepository()}`, selectedGraph);\n };\n\n $scope.getSelectedGraphValue = function () {\n return selectedGraph.contextID.value;\n };\n\n $scope.isAllGraphsSelected = function () {\n return $scope.getSelectedGraphValue() === 'All graphs'\n }\n}\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{69:function(e,a,s){"use strict";s.r(a);s(2),s(9),s(8),s(10);const c=angular.module("graphdb.framework.namespaces.controllers",["ui.bootstrap","graphdb.framework.core.services.repositories","graphdb.framework.core.services.jwtauth","graphdb.framework.rest.repositories.service","graphdb.framework.rest.rdf4j.repositories.service","toastr"]),n=function(){const e="[A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-]|[-]|[⁰-]|[Ⰰ-]|[、-]|[豈-﷏]|[ﷰ-�]",a="[A-Z]|[a-z]|[À-Ö]|[Ø-ö]|[ø-˿]|[Ͱ-ͽ]|[Ϳ-]|[-]|[⁰-]|[Ⰰ-]|[、-]|[豈-﷏]|[ﷰ-�]|_|-|[0-9]|·|[̀-ͯ]|[‿-⁀]";return new RegExp("^(?:"+e+")(?:(?:"+a+"|\\.)*(?:"+a+"))?$")}();c.controller("NamespacesCtrl",["$scope","$http","$repositories","toastr","$modal","ModalService","RepositoriesRestService","RDF4JRepositoriesRestService",function(e,a,s,c,t,r,o,i){function p(a,n){let t;t="object"==typeof a?a.prefix:a,i.deleteNamespacePrefix(s.getActiveRepository(),t).success((function(){n&&n.length>0?p(a=n.shift(),n):(e.selectedAll=!1,e.namespace={},e.getNamespaces(),e.searchNamespaces="",e.haveSelected=!1,e.loader=!1,e.displayedNamespaces=[],void 0===n?c.success("Namespace with prefix '"+t+"' was deleted successfully.",""):c.success("Selected namespaces were deleted successfully.",""))})).error((function(a){const s=getError(a);c.error(s,"Error"),e.loader=!1}))}function l(e,a){return function(e){return""===e||e.match(n)}(e)?!angular.isUndefined(a)&&""!==a||(c.error("Please provide namespace.","Error"),!1):(c.error("Invalid prefix: "+e,"Error"),!1)}e.namespaces={},e.namespace={},e.loader=!1,e.haveSelected=!1,e.pageSizeOptions=[10,20,50,100],e.page=1,e.pageSize=e.pageSizeOptions[0],e.displayedNamespaces=[],e.getNamespaces=function(){s.getActiveRepository()&&(e.loader=!0,e.namespaces={},i.getNamespaces(s.getActiveRepository()).success((function(a){e.namespaces=a.results.bindings.map((function(e){return{prefix:e.prefix.value,namespace:e.namespace.value}})),e.namespaces.length>0&&(e.namespaces.sort((function(e,a){const s=e.prefix.toUpperCase(),c=a.prefix.toUpperCase();return s<c?-1:s>c?1:0})),e.matchedElements=e.namespaces,e.changePagination()),0===e.namespaces.length&&(e.loader=!1)})).error((function(a){const s=getError(a);c.error(s),e.loader=!1})))},e.changePagination=function(){angular.isDefined(e.namespaces)&&(e.displayedNamespaces=e.namespaces.slice(e.pageSize*(e.page-1),e.pageSize*e.page))},e.changePageSize=function(a){$(".ot-graph-page-size").removeClass("active"),e.page=1,e.searchNamespaces="",a&&(e.getNamespaces(),e.pageSize=a)},e.$watch("matchedElements",(function(){angular.isDefined(e.matchedElements)&&(e.displayedNamespaces=e.matchedElements.slice(e.pageSize*(e.page-1),e.pageSize*e.page))})),e.$watch((function(){return s.getActiveRepository()}),(function(){e.searchNamespaces="",e.getNamespaces(),e.selectedAll=!1})),e.onNamespaceSearch=function(){e.haveSelected=!1,e.selectedAll=!1,e.matchedElements=[],e.deselectAll(),e.filterResults()},e.filterResults=function(){angular.forEach(e.namespaces,(function(a){-1===a.namespace.indexOf(e.searchNamespaces)&&-1===a.prefix.indexOf(e.searchNamespaces)||e.matchedElements.push(a)}))},e.saveNamespace=function(a,n){return e.loader=!0,i.updateNamespacePrefix(s.getActiveRepository(),n,a).success((function(){e.getNamespaces(),e.loader=!1})).error((function(a){const s=getError(a);c.error(s,"Error"),e.loader=!1}))},e.editPrefix=function(a,n){e.loader=!0,o.getPrefix(s.getActiveRepository(),{from:a,to:n}).success((function(){e.getNamespaces(),e.loader=!1})).error((function(a){const s=getError(a);c.error(s,"Error"),e.loader=!1}))},e.confirmReplace=function(e,a){r.openSimpleModal({title:"Confirm replace",message:"This namespace prefix already exists. Do you want to replace it?",warning:!0}).result.then(e,a)},e.editPrefixAndNamespace=function(a,s,c){if(angular.isUndefined(a)&&(a=""),!l(a,s))return"";let n=!1;const t=c.prefix;angular.forEach(e.namespaces,(function(e){e.prefix===a&&t!==a&&(n=!0)})),n?e.confirmReplace((function(){e.saveNamespace(t,s).then((function(){t!==a&&e.editPrefix(t,a)}))}),(function(){e.getNamespaces()})):angular.isDefined(n)&&e.saveNamespace(t,s).then((function(){t!==a&&e.editPrefix(t,a)}))},e.addNamespace=function(){if(angular.isUndefined(e.namespace.prefix)&&(e.namespace.prefix=""),!l(e.namespace.prefix,e.namespace.namespace))return;e.selectedAll=!1;let a=!1;for(let s=0;s<e.namespaces.length;s++)e.namespaces[s].prefix===e.namespace.prefix&&(a=!0);a?e.confirmReplace((function(){e.saveNamespace(e.namespace.prefix,e.namespace.namespace),e.namespace={}})):(e.saveNamespace(e.namespace.prefix,e.namespace.namespace),e.namespace={})},e.removeNamespace=function(e){r.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the namespace '"+e.prefix+"'?",warning:!0}).result.then((function(){p(e)}))},e.checkAll=function(){angular.forEach(e.displayedNamespaces,(function(a){a.selected=e.selectedAll}))},e.deleteSelected=function(){let a=!1;angular.forEach(e.displayedNamespaces,(function(s){a||s.selected&&(a=!0,r.openSimpleModal({title:"Confirm delete",message:"Are you sure you want to delete the selected namespace(s)?",warning:!0}).result.then((function(){e.loader=!0;const a=[];angular.forEach(e.displayedNamespaces,(function(e){e.selected&&a.push(e)})),p(a.shift(),a),e.selectedAll=!1}),(function(){e.getNamespaces(),e.selectedAll=!1,e.searchNamespaces=""})))}))},e.checkIfSelectedNamespace=function(){e.haveSelected=!1,angular.forEach(e.namespaces,(function(a){a.selected&&(e.haveSelected=!0)}))},e.deselectAll=function(){angular.forEach(e.namespaces,(function(e){e.selected=!1}))}}]),c.controller("StandartModalCtrl",["$scope","$modalInstance",function(e,a){e.ok=function(){a.close(!0)},e.cancel=function(){a.dismiss("cancel")}}])}}]);
|
|
2
|
-
//# sourceMappingURL=68.6b887fe6160e5bd8742b.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/namespaces/controllers.js"],"names":["namespaces","angular","module","pnPrefixRe","pnCharsBase","pnChars","pnCharsU","RegExp","controller","$scope","$http","$repositories","toastr","$modal","ModalService","RepositoriesRestService","RDF4JRepositoriesRestService","deleteNamespace","namespace","prefix","deleteNamespacePrefix","getActiveRepository","success","length","shift","selectedAll","getNamespaces","searchNamespaces","haveSelected","loader","displayedNamespaces","undefined","error","data","msg","getError","validatePrefixAndNamespace","match","validatePrefix","isUndefined","pageSizeOptions","page","pageSize","results","bindings","map","e","value","sort","a","b","prefixA","toUpperCase","prefixB","matchedElements","changePagination","isDefined","slice","changePageSize","size","$","removeClass","$watch","onNamespaceSearch","deselectAll","filterResults","forEach","item","indexOf","push","saveNamespace","updateNamespacePrefix","editPrefix","oldPrefix","newPrefix","getPrefix","from","to","confirmReplace","okCallback","cancelCallback","openSimpleModal","title","message","warning","result","then","editPrefixAndNamespace","namespaceObject","prefixExist","elem","addNamespace","i","removeNamespace","checkAll","selected","deleteSelected","modalInstanceOpened","checkIfSelectedNamespace","$modalInstance","ok","close","cancel","dismiss"],"mappings":"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","file":"68.6b887fe6160e5bd8742b.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/repositories.service';\nimport 'angular/rest/rdf4j.repositories.rest.service';\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.rest.repositories.service',\n 'graphdb.framework.rest.rdf4j.repositories.service',\n 'toastr'\n];\n\nconst namespaces = angular.module('graphdb.framework.namespaces.controllers', modules);\n\n// A regular expression that validates a prefix according to the SPARQL 1.1 specification.\n// XXX: Technically this should include Unicode chars > 0xFFFF but those aren't fully supported in JavaScript\nconst pnPrefixRe = function () {\n const pnCharsBase = '[A-Z]|[a-z]|[\\u00C0-\\u00D6]|[\\u00D8-\\u00F6]|[\\u00F8-\\u02FF]|[\\u0370-\\u037D]'\n + '|[\\u037F-\\u1FFF]|[\\u200C-\\u200D]|[\\u2070-\\u218F]|[\\u2C00-\\u2FEF]|[\\u3001-\\uD7FF]'\n + '|[\\uF900-\\uFDCF]|[\\uFDF0-\\uFFFD]';\n const pnCharsU = pnCharsBase + '|_';\n const pnChars = pnCharsU + '|-|[0-9]|\\u00B7|[\\u0300-\\u036F]|[\\u203F-\\u2040]';\n\n return new RegExp('^(?:' + pnCharsBase + ')(?:(?:' + pnChars + '|\\\\.)*(?:' + pnChars + '))?$');\n}();\n\nfunction validatePrefix(prefix) {\n return prefix === '' || prefix.match(pnPrefixRe);\n}\n\nnamespaces.controller('NamespacesCtrl', ['$scope', '$http', '$repositories', 'toastr', '$modal', 'ModalService', 'RepositoriesRestService', 'RDF4JRepositoriesRestService',\n function ($scope, $http, $repositories, toastr, $modal, ModalService, RepositoriesRestService, RDF4JRepositoriesRestService) {\n $scope.namespaces = {};\n $scope.namespace = {};\n $scope.loader = false;\n $scope.haveSelected = false;\n $scope.pageSizeOptions = [10, 20, 50, 100];\n $scope.page = 1;\n $scope.pageSize = $scope.pageSizeOptions[0];\n $scope.displayedNamespaces = [];\n\n $scope.getNamespaces = function () {\n if (!$repositories.getActiveRepository()) {\n return;\n }\n\n $scope.loader = true;\n $scope.namespaces = {};\n RDF4JRepositoriesRestService.getNamespaces($repositories.getActiveRepository())\n .success(function (data) {\n $scope.namespaces = data.results.bindings.map(function (e) {\n return {\n prefix: e.prefix.value,\n namespace: e.namespace.value\n };\n });\n if ($scope.namespaces.length > 0) {\n $scope.namespaces.sort(function (a, b) {\n const prefixA = a.prefix.toUpperCase(); // ignore upper and lowercase\n const prefixB = b.prefix.toUpperCase(); // ignore upper and lowercase\n if (prefixA < prefixB) {\n return -1;\n }\n if (prefixA > prefixB) {\n return 1;\n }\n return 0;\n });\n $scope.matchedElements = $scope.namespaces;\n $scope.changePagination();\n }\n if ($scope.namespaces.length === 0) {\n // Remove the loader ourselves\n $scope.loader = false;\n } // else let the loaderPostRepeatDirective do it\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg);\n $scope.loader = false;\n });\n };\n\n $scope.changePagination = function () {\n if (angular.isDefined($scope.namespaces)) {\n $scope.displayedNamespaces = $scope.namespaces.slice($scope.pageSize * ($scope.page - 1), $scope.pageSize * $scope.page);\n }\n };\n\n $scope.changePageSize = function (size) {\n $('.ot-graph-page-size').removeClass('active');\n $scope.page = 1;\n $scope.searchNamespaces = '';\n if (size) {\n $scope.getNamespaces();\n $scope.pageSize = size;\n }\n };\n\n $scope.$watch('matchedElements', function () {\n if (angular.isDefined($scope.matchedElements)) {\n $scope.displayedNamespaces = $scope.matchedElements.slice($scope.pageSize * ($scope.page - 1), $scope.pageSize * $scope.page);\n }\n });\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n $scope.searchNamespaces = '';\n $scope.getNamespaces();\n $scope.selectedAll = false;\n });\n\n $scope.onNamespaceSearch = function() {\n $scope.haveSelected = false;\n $scope.selectedAll = false;\n $scope.matchedElements = [];\n $scope.deselectAll();\n $scope.filterResults();\n };\n\n $scope.filterResults = function() {\n angular.forEach($scope.namespaces, function (item) {\n if (item.namespace.indexOf($scope.searchNamespaces) !== -1 || item.prefix.indexOf($scope.searchNamespaces) !== -1) {\n $scope.matchedElements.push(item);\n }\n });\n };\n\n $scope.saveNamespace = function (prefix, namespace) {\n $scope.loader = true;\n return RDF4JRepositoriesRestService.updateNamespacePrefix($repositories.getActiveRepository(), namespace, prefix)\n .success(function () {\n $scope.getNamespaces();\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\n $scope.editPrefix = function (oldPrefix, newPrefix) {\n $scope.loader = true;\n RepositoriesRestService.getPrefix($repositories.getActiveRepository(), {from: oldPrefix, to: newPrefix})\n .success(function () {\n $scope.getNamespaces();\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\n $scope.confirmReplace = function (okCallback, cancelCallback) {\n ModalService.openSimpleModal({\n title: 'Confirm replace',\n message: 'This namespace prefix already exists. Do you want to replace it?',\n warning: true\n }).result.then(okCallback, cancelCallback);\n };\n\n $scope.editPrefixAndNamespace = function (prefix, namespace, namespaceObject) {\n if (angular.isUndefined(prefix)) {\n prefix = '';\n }\n\n if (!validatePrefixAndNamespace(prefix, namespace)) {\n return '';\n }\n\n let prefixExist = false;\n const oldPrefix = namespaceObject.prefix;\n angular.forEach($scope.namespaces, function (elem) {\n if (elem.prefix === prefix && oldPrefix !== prefix) {\n prefixExist = true;\n }\n });\n if (prefixExist) {\n $scope.confirmReplace(function () {\n $scope.saveNamespace(oldPrefix, namespace).then(function () {\n if (oldPrefix !== prefix) {\n $scope.editPrefix(oldPrefix, prefix);\n }\n });\n }, function () {\n $scope.getNamespaces();\n });\n } else if (angular.isDefined(prefixExist)) {\n $scope.saveNamespace(oldPrefix, namespace).then(function () {\n if (oldPrefix !== prefix) {\n $scope.editPrefix(oldPrefix, prefix);\n }\n });\n }\n };\n\n $scope.addNamespace = function () {\n if (angular.isUndefined($scope.namespace.prefix)) {\n $scope.namespace.prefix = '';\n }\n\n if (!validatePrefixAndNamespace($scope.namespace.prefix, $scope.namespace.namespace)) {\n return;\n }\n\n $scope.selectedAll = false;\n let prefixExist = false;\n for (let i = 0; i < $scope.namespaces.length; i++) {\n if ($scope.namespaces[i].prefix === $scope.namespace.prefix) {\n prefixExist = true;\n }\n }\n if (prefixExist) {\n $scope.confirmReplace(function () {\n $scope.saveNamespace($scope.namespace.prefix, $scope.namespace.namespace);\n $scope.namespace = {};\n });\n } else {\n $scope.saveNamespace($scope.namespace.prefix, $scope.namespace.namespace);\n $scope.namespace = {};\n }\n };\n\n $scope.removeNamespace = function (namespace) {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: 'Are you sure you want to delete the namespace \\'' + namespace.prefix + '\\'?',\n warning: true\n }).result.then(function () {\n deleteNamespace(namespace);\n });\n };\n\n $scope.checkAll = function () {\n angular.forEach($scope.displayedNamespaces, function (item) {\n item.selected = $scope.selectedAll;\n });\n };\n\n $scope.deleteSelected = function () {\n const openModalInstance = function () {\n ModalService.openSimpleModal({\n title: 'Confirm delete',\n message: 'Are you sure you want to delete the selected namespace(s)?',\n warning: true\n }).result.then(function () {\n $scope.loader = true;\n const namespaces = [];\n angular.forEach($scope.displayedNamespaces, function (namespace) {\n if (namespace.selected) {\n namespaces.push(namespace);\n }\n });\n deleteNamespace(namespaces.shift(), namespaces);\n $scope.selectedAll = false;\n }, function () {\n $scope.getNamespaces();\n $scope.selectedAll = false;\n $scope.searchNamespaces = '';\n });\n };\n\n let modalInstanceOpened = false;\n angular.forEach($scope.displayedNamespaces, function (namespace) {\n if (!modalInstanceOpened) {\n if (namespace.selected) {\n modalInstanceOpened = true;\n openModalInstance();\n }\n }\n });\n };\n\n function deleteNamespace(namespace, namespaces) {\n let prefix;\n if (typeof namespace === 'object') {\n prefix = namespace.prefix;\n } else {\n prefix = namespace;\n }\n RDF4JRepositoriesRestService.deleteNamespacePrefix($repositories.getActiveRepository(), prefix)\n .success(function () {\n if (namespaces && namespaces.length > 0) {\n namespace = namespaces.shift();\n deleteNamespace(namespace, namespaces);\n } else {\n $scope.selectedAll = false;\n $scope.namespace = {};\n $scope.getNamespaces();\n $scope.searchNamespaces = '';\n $scope.haveSelected = false;\n $scope.loader = false;\n $scope.displayedNamespaces = [];\n if (namespaces === undefined) {\n toastr.success('Namespace with prefix \\'' + prefix + '\\' was deleted successfully.', '');\n } else {\n toastr.success('Selected namespaces were deleted successfully.', '');\n }\n }\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n $scope.loader = false;\n });\n }\n\n $scope.checkIfSelectedNamespace = function () {\n $scope.haveSelected = false;\n angular.forEach($scope.namespaces, function (item) {\n if (item.selected) {\n $scope.haveSelected = true;\n }\n });\n };\n\n $scope.deselectAll = function () {\n angular.forEach($scope.namespaces, function (item) {\n item.selected = false;\n });\n };\n\n function validatePrefixAndNamespace(prefix, namespace) {\n if (!validatePrefix(prefix)) {\n toastr.error('Invalid prefix: ' + prefix, 'Error');\n return false;\n }\n\n if (angular.isUndefined(namespace) || namespace === '') {\n toastr.error('Please provide namespace.', 'Error');\n return false;\n }\n\n return true;\n }\n }]);\n\nnamespaces.controller('StandartModalCtrl', ['$scope', '$modalInstance', function ($scope, $modalInstance) {\n\n $scope.ok = function () {\n const result = true;\n $modalInstance.close(result);\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/rest/cluster.rest.service.js","webpack:///./src/js/angular/clustermanagement/controllers.js"],"names":["angular","module","factory","ClusterRestService","$inject","CLUSTER_MASTERS_ENDPOINT","$http","getMaster","masterRepositoryID","data","get","configureMaster","master","location","url","encodeURIComponent","method","cloneRepository","post","cloningNodeLocation","currentNodeLocation","cloningNodeRepositoryID","selectedNodeName","newNodeRepositoryID","repositoryID","newNodeLocation","locationUri","newNodeTitle","repositoryTitle","connectWorker","masterLocation","workerLocation","workerURL","disconnectWorker","params","dataType","disconnectNodes","connectNodes","getLocation","node","local","split","ClusterManagementCtrl","$scope","$q","toastr","$repositories","$modal","$sce","$window","$interval","ModalService","$timeout","RepositoriesRestService","setLoader","loader","message","cancel","loaderTimeout","loaderMessage","getLoaderMessage","success","masterInformation","setMasterAttribute","attribute","value","attrData","getLabel","attributeChange","refreshMastersIcons","error","getError","finally","hasInfo","isWorker","locations","getLocations","showCloneModal","clone","selectedNode","name","open","templateUrl","controller","resolve","result","then","cloneCurrentRepository","uri","getNodes","indexOf","substring","source","target","onSuccess","worker","disabledReason","repositoryType","workers","timestamp","Date","now","cluster","push","addOrUpdateLink","peers","connectMasters","disconnectLinkConfirm","d","openSimpleModal","title","warning","disconnectLink","overrideDisabled","$","param","deleteLink","filter","x","masterNodeID","nodeID","peerLocation","peerRepositoryID","peerNodeID","selectNode","$apply","first","second","bidirectional","firstConfigs","secondConfigs","status","key","link","linksHash","reverseKey","reverseLink","links","needsToRestart","updateWarnings","deleteReverse","splice","console","log","needsToRefresh","updateMasterNode","isUpdate","isRandomLink","hasWorkers","masterData","averageReadTime","completedReads","completedWrites","failedReads","failedWrites","pendingWrites","runningReads","runningWrites","readonly","mode","length","forEach","peer","urlToNode","artificiallyAdded","workerNode","fingerprint","averageTaskTime","failedTasks","completedTasks","runningTasks","lastError","trustAsHtml","Math","floor","random","catch","nodes","clusters","getCluster","hasNodes","reduce","type","clusterIdx","mastersData","Object","keys","sort","k1","k2","map","all","_","sortBy","render","trackAddedOrRemovedNodes","uri2tempNode","i","updateClusterIfNeeded","checkNodes","updating","processUpdate","restart","updateStatuses","updateColors","promises","setMode","setReadonly","timerCounter","timer","$on","w","element","resize","bind","unbind","CloneRepositoryCtrl","$modalInstance","copy","ok","patt","RegExp","isInvalidRepoName","test","close","dismiss"],"mappings":"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","file":"7.a0f5ec224bebd08058f4.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.rest.cluster.service', [])\n .factory('ClusterRestService', ClusterRestService);\n\nClusterRestService.$inject = ['$http'];\n\nconst CLUSTER_MASTERS_ENDPOINT = 'rest/cluster/masters';\n\nfunction ClusterRestService($http) {\n return {\n getMaster,\n configureMaster,\n cloneRepository,\n connectWorker,\n disconnectWorker,\n disconnectNodes,\n connectNodes\n };\n\n function getMaster(masterRepositoryID, data = {}) {\n return $http.get(`${CLUSTER_MASTERS_ENDPOINT}/${masterRepositoryID}`, data);\n }\n\n function configureMaster(master, location, data) {\n return $http({\n url: `${CLUSTER_MASTERS_ENDPOINT}/${master}?masterLocation=${encodeURIComponent(location)}`,\n method: 'POST',\n data\n });\n }\n\n function cloneRepository(data) {\n return $http.post('rest/cluster/nodes/clone', {\n cloningNodeLocation: data.currentNodeLocation,\n cloningNodeRepositoryID: data.selectedNodeName,\n newNodeRepositoryID: data.repositoryID,\n newNodeLocation: data.locationUri,\n newNodeTitle: data.repositoryTitle\n })\n }\n\n function connectWorker(master, masterLocation, workerLocation) {\n return $http({\n url: `${CLUSTER_MASTERS_ENDPOINT}/${master}/workers/`,\n method: 'POST',\n data: {\n workerURL: workerLocation,\n masterLocation: masterLocation\n }\n })\n }\n\n function disconnectWorker(master, params) {\n return $http({\n url: `${CLUSTER_MASTERS_ENDPOINT}/${master}/workers?${params}`,\n method: 'DELETE',\n dataType: 'text'\n });\n }\n\n function disconnectNodes(master, params) {\n return $http({\n url: `${CLUSTER_MASTERS_ENDPOINT}/${master}/peers?${params}`,\n method: 'DELETE',\n dataType: 'text'\n });\n }\n\n function connectNodes(master, data) {\n return $http({\n url: `${CLUSTER_MASTERS_ENDPOINT}/${master}/peers`,\n method: 'POST',\n data\n });\n }\n}\n","import 'angular/core/services';\nimport 'angular/rest/cluster.rest.service';\n\nconst modules = [\n 'ui.bootstrap',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.rest.repositories.service',\n 'graphdb.framework.rest.cluster.service',\n 'toastr'\n];\n\nangular\n .module('graphdb.framework.clustermanagement.controllers', modules)\n .controller('ClusterManagementCtrl', ClusterManagementCtrl)\n .controller('CloneRepositoryCtrl', CloneRepositoryCtrl);\n\nfunction getLocation(node) {\n if (node.local) {\n return 'local';\n }\n return node.location.split('/repositories/')[0];\n}\n\nClusterManagementCtrl.$inject = ['$scope', '$http', '$q', 'toastr', '$repositories', '$modal', '$sce',\n '$window', '$interval', 'ModalService', '$timeout', 'ClusterRestService', 'RepositoriesRestService'];\n\nfunction ClusterManagementCtrl($scope, $http, $q, toastr, $repositories, $modal, $sce,\n $window, $interval, ModalService, $timeout, ClusterRestService,\n RepositoriesRestService) {\n // TODO: Similar function is declared multiple times in different components. Find out how to avoid it!\n $scope.setLoader = function (loader, message) {\n $timeout.cancel($scope.loaderTimeout);\n if (loader) {\n $scope.loaderTimeout = $timeout(function () {\n $scope.loader = loader;\n $scope.loaderMessage = message;\n }, 300);\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.getLoaderMessage = function () {\n return $scope.loaderMessage || 'Loading...';\n };\n\n $scope.getMaster = function (masterRepositoryID) {\n ClusterRestService.getMaster(masterRepositoryID)\n .success(function (data) {\n $scope.masterInformation = data;\n });\n };\n\n $scope.setMasterAttribute = function (master, attribute, value) {\n const attrData = {};\n attrData[attribute] = value;\n\n $scope.setLoader(true, 'Setting attribute...');\n ClusterRestService.configureMaster($scope.getLabel(master.location), getLocation(master), attrData)\n .success(function () {\n $scope.attributeChange = false;\n toastr.success(\"Set \" + attribute + \" to \" + value + \".\", \"\");\n $scope.refreshMastersIcons();\n return true;\n }).error(function (data) {\n $scope.attributeChange = false;\n toastr.error(getError(data), \"Error setting attribute \" + attribute);\n return true;\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.hasInfo = function (node) {\n if (node == null) {\n return true;\n }\n if ($scope.isWorker(node)) {\n return 'fingerprint' in node;\n } else {\n return 'failedReads' in node;\n }\n };\n\n $scope.locations = function () {\n return $repositories.getLocations();\n };\n\n $scope.showCloneModal = function () {\n $scope.clone.locations = $scope.locations();\n $scope.clone.repositoryID = $scope.selectedNode.name;\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/clustermanagement/templates/modal/clone-modal.html',\n controller: 'CloneRepositoryCtrl',\n resolve: {\n clone: function () {\n return $scope.clone;\n }\n }\n });\n modalInstance.result.then(function (clone) {\n $scope.clone = clone;\n $scope.cloneCurrentRepository();\n }, function () {\n $scope.selectedNode = null;\n });\n };\n\n $scope.cloneCurrentRepository = function () {\n const currentNodeLocation = getLocation($scope.selectedNode);\n\n $scope.setLoader(true, 'Cloning worker...');\n\n ClusterRestService.cloneRepository({\n currentNodeLocation: currentNodeLocation,\n selectedNodeName: $scope.selectedNode.name,\n repositoryID: $scope.clone.repositoryID,\n locationUri: $scope.clone.location.uri,\n repositoryTitle: $scope.clone.repositoryTitle\n }).success(function () {\n toastr.success('Cloned node into ' + $scope.clone.location);\n $scope.getNodes();\n }).error(function (data) {\n toastr.error(getError(data), \"Error cloning node\");\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.getLabel = function (url) {\n if (url.indexOf(\"http\") !== 0) {\n return name;\n }\n return url.substring(url.indexOf('/repositories') + 14);\n };\n\n /**\n * Creates a link between two nodes. That this function abstracts away\n * if firstNode is a master or it's secondNode\n */\n $scope.connectNodes = function (source, target, onSuccess) {\n let master;\n let worker;\n\n if ('disabledReason' in source) {\n toastr.error(source.disabledReason, \"Error\");\n return;\n }\n\n if ('disabledReason' in target) {\n toastr.error(target.disabledReason, \"Error\");\n return;\n }\n\n if (source.repositoryType === 'master' && target.repositoryType === 'master') {\n if (source.location in target.peers && target.location in source.peers) {\n toastr.error(\"Masters already connected\", \"Error\");\n } else if (source.location in target.peers) {\n $scope.connectMasters(source, target, false, onSuccess);\n } else if (target.location in source.peers) {\n $scope.connectMasters(target, source, false, onSuccess);\n } else {\n $scope.connectMasters(source, target, true, onSuccess);\n }\n return;\n } else if (source.repositoryType === 'master') {\n master = source;\n worker = target;\n } else if (target.repositoryType === 'master') {\n master = target;\n worker = source;\n } else {\n toastr.error(\"You cannot connect two workers\", \"Error\");\n return;\n }\n\n if (worker.location in master.workers) {\n toastr.error(\"Worker already connected to that master\", \"Error\");\n return;\n }\n\n $scope.setLoader(true, 'Connecting nodes...');\n\n ClusterRestService.connectWorker($scope.getLabel(master.location), getLocation(master), worker.location)\n .success(function () {\n const timestamp = Date.now();\n\n worker.cluster = worker.cluster || [];\n worker.cluster.push(master.cluster);\n\n $scope.addOrUpdateLink(master, worker, '', timestamp);\n\n master.workers[worker.location] = 1;\n\n onSuccess();\n\n toastr.success(\"Connected worker to master.\", \"\");\n }).error(function (data) {\n toastr.error(getError(data), \"Error connecting worker\");\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.disconnectLinkConfirm = function (d, onSuccess) {\n ModalService.openSimpleModal({\n title: 'Confirm disconnect',\n message: 'Are you sure you want to disconnect the nodes?',\n warning: true\n }).result\n .then(function () {\n $scope.disconnectLink(d, onSuccess);\n });\n };\n\n function disconnectWorker(d, master, worker, onSuccess) {\n ClusterRestService.disconnectWorker($scope.getLabel(master.location), $.param({\n workerURL: worker.location,\n masterLocation: getLocation(master)\n })).success(function () {\n $scope.deleteLink(d);\n\n worker.cluster = worker.cluster.filter(function (x) {\n return x !== master.cluster;\n });\n\n delete master.workers[worker.location];\n\n onSuccess();\n\n toastr.success(\"Disconnected worker from master.\", \"\");\n }).error(function (data) {\n toastr.error(getError(data), \"Error disconnecting worker\");\n }).finally(function () {\n $scope.setLoader(false);\n });\n }\n\n function disconnectNodes(d, master, worker, onSuccess) {\n ClusterRestService.disconnectNodes($scope.getLabel(master.location), $.param({\n masterLocation: getLocation(master),\n masterNodeID: master.nodeID,\n peerLocation: getLocation(worker),\n peerRepositoryID: $scope.getLabel(worker.location),\n peerNodeID: worker.nodeID\n })).success(function (data) {\n $scope.deleteLink(d, true);\n\n delete worker.peers[master.location];\n delete master.peers[worker.location];\n\n onSuccess();\n\n toastr.success(data, \"\");\n }).error(function (data) {\n toastr.error(getError(data), \"Error disconnecting masters\");\n }).finally(function () {\n $scope.setLoader(false);\n });\n }\n\n $scope.disconnectLink = function (d, onSuccess, overrideDisabled) {\n let master = {};\n let worker = {};\n if (d.source.repositoryType === 'master') {\n master = d.source;\n worker = d.target;\n } else if (d.target.repositoryType === 'master') {\n master = d.target;\n worker = d.source;\n }\n\n if (!overrideDisabled && ('disabledReason' in master || worker.repositoryType === 'master' && 'disabledReason' in worker)) {\n ModalService.openSimpleModal({\n title: 'Confirm disconnect',\n message: 'One of the masters is currently unreachable and will be disconnected only at the reachable master.'\n + '<br><br>Proceed only if you know what you are doing.',\n warning: true\n }).result\n .then(function () {\n $scope.disconnectLink(d, onSuccess, true);\n });\n\n return;\n }\n\n $scope.setLoader(true, 'Disconnecting nodes...');\n\n if (worker.repositoryType === 'worker') {\n disconnectWorker(d, master, worker, onSuccess);\n } else {\n // Both are masters, despite the var name worker\n disconnectNodes(d, master, worker, onSuccess);\n }\n };\n\n // Called directives so we include scope apply here\n $scope.selectNode = function (node) {\n if ($scope.selectedNode !== node) {\n $scope.selectedNode = node;\n } else {\n $scope.selectedNode = null;\n }\n $scope.$apply();\n };\n\n $scope.isWorker = function (node) {\n return node !== undefined && node !== null && node.repositoryType === 'worker';\n };\n\n $scope.connectMasters = function (first, second, bidirectional, onSuccess) {\n const firstConfigs = first.location.split('/repositories/');\n const secondConfigs = second.location.split('/repositories/');\n\n $scope.setLoader(true, 'Connecting nodes...');\n\n ClusterRestService.connectNodes(firstConfigs[1], {\n masterLocation: first.local ? 'local' : firstConfigs[0],\n masterNodeID: first.nodeID,\n peerLocation: second.local ? 'local' : secondConfigs[0],\n peerRepositoryID: secondConfigs[1],\n peerNodeID: second.nodeID,\n bidirectional: bidirectional\n }).success(function (data) {\n // FIXME?? is there a proper connection between the masters. We don't know so we use 'ON'\n const timestamp = Date.now();\n\n $scope.addOrUpdateLink(first, second, 'ON', timestamp);\n first.peers[second.location] = 1;\n\n if (bidirectional) {\n second.peers[first.location] = 1;\n $scope.addOrUpdateLink(second, first, 'ON', timestamp);\n }\n\n onSuccess();\n\n toastr.success(data, \"\");\n }).error(function (data) {\n toastr.error(getError(data), \"Error connecting masters\");\n }).finally(function () {\n $scope.setLoader(false);\n });\n };\n\n $scope.addOrUpdateLink = function (source, target, status, timestamp) {\n const key = source.location + '|' + target.location;\n let link = $scope.linksHash[key];\n const reverseKey = target.location + '|' + source.location;\n const reverseLink = $scope.linksHash[reverseKey];\n if (!link) {\n // adding a new link\n link = {};\n $scope.linksHash[key] = link;\n $scope.links.push(link);\n link['source'] = source;\n link['target'] = target;\n $scope.needsToRestart = true;\n } else {\n // updating, check if status changed\n // no-op at the moment\n }\n link['status'] = status;\n link['timestamp'] = timestamp;\n\n link['reversePeerMissing'] = source.repositoryType === 'master' && target.repositoryType === 'master' && !reverseLink;\n if (reverseLink && reverseLink['reversePeerMissing']) {\n reverseLink['reversePeerMissing'] = false;\n }\n $scope.linksHash[key] = link;\n\n if ($scope.updateWarnings) { // function isn't defined before render() is called\n $scope.updateWarnings();\n }\n\n return link;\n };\n\n $scope.deleteLink = function (link, deleteReverse) {\n $scope.links.splice($scope.links.indexOf(link), 1);\n const key = link.source.location + '|' + link.target.location;\n delete $scope.linksHash[key];\n if (link.source.disabledReason || link.target.disabledReason) {\n // removing a link to a funky node triggers a refresh to get rid of that node\n console.log(\"link to funky node removed, refresh\");\n $scope.needsToRefresh = true;\n }\n\n if (deleteReverse) {\n const reverseKey = link.target.location + '|' + link.source.location;\n const reverseLink = $scope.linksHash[reverseKey];\n if (reverseLink) {\n $scope.deleteLink(reverseLink, false);\n }\n }\n };\n\n $scope.updateMasterNode = function (node, timestamp, isUpdate, isRandomLink) {\n return ClusterRestService.getMaster(node.name, {\n params: {\n masterLocation: getLocation(node)\n }\n })\n .error(function (data) {\n const newDisabledReason = \"The location is unreachable.\";\n\n if (node.disabledReason !== newDisabledReason) {\n // show toast only once per disabled reason\n toastr.error(getError(data), \"Error accessing master \" + node.name);\n\n node.disabledReason = newDisabledReason;\n\n // Disabled, we don't know these so reset them to sane empty defaults\n node.peers = {};\n node.workers = {};\n node.hasWorkers = false;\n }\n\n node.timestamp = timestamp;\n\n return true;\n })\n .success(function (masterData) {\n node.averageReadTime = masterData.averageReadTime;\n node.completedReads = masterData.completedReads;\n node.completedWrites = masterData.completedWrites;\n node.failedReads = masterData.failedReads;\n node.failedWrites = masterData.failedWrites;\n node.pendingWrites = masterData.pendingWrites;\n node.runningReads = masterData.runningReads;\n node.runningWrites = masterData.runningWrites;\n node.readonly = masterData.readonly;\n node.mode = masterData.mode;\n node.nodeID = masterData.nodeID;\n node.peers = {};\n node.workers = {};\n node.timestamp = timestamp;\n node.hasWorkers = masterData.workers.length > 0;\n\n masterData.peers.forEach(function (peer) {\n node.peers[peer.location] = 1;\n if (!(peer.location in $scope.urlToNode)) {\n // either someone added a repository behind our back or it's a repository we don't have in our locations\n if (isUpdate) {\n console.log('master disappeared, refreshing');\n $scope.needsToRefresh = true;\n } else {\n // TODO: Test this properly. Nodes shouldn't get events, should look disabled properly\n $scope.urlToNode[peer.location] = {\n name: $scope.getLabel(peer.location),\n disabledReason: \"You are not connected to this master's location or the master was deleted\",\n location: peer.location,\n nodeID: peer.nodeID,\n repositoryType: 'master',\n artificiallyAdded: true\n };\n }\n }\n\n // FIXME?? is there a proper connection between the masters\n $scope.addOrUpdateLink(node, $scope.urlToNode[peer.location], 'ON', timestamp);\n });\n\n masterData.workers.forEach(function (worker) {\n node.workers[worker.location] = 1;\n let workerNode = {};\n if (worker.location in $scope.urlToNode) {\n workerNode = $scope.urlToNode[worker.location];\n } else {\n // either someone added a repository behind our back or it's a repository we don't have in our locations\n if (isUpdate) {\n console.log('worker disappeared, refreshing');\n $scope.needsToRefresh = true;\n return;\n } else {\n workerNode = $scope.urlToNode[worker.location] = {\n name: $scope.getLabel(worker.location),\n location: worker.location,\n repositoryType: 'worker',\n artificiallyAdded: true\n };\n }\n }\n\n workerNode.fingerprint = worker.fingerprint;\n workerNode.averageTaskTime = worker.averageTaskTime;\n workerNode.failedTasks = worker.failedTasks;\n workerNode.completedTasks = worker.completedTasks;\n workerNode.runningTasks = worker.runningTasks;\n workerNode.timestamp = timestamp;\n\n if (workerNode.artificiallyAdded) {\n workerNode.disabledReason = \"You are not connected to this worker's location.\";\n if (worker.lastError) {\n workerNode.disabledReason += '<br>' + worker.lastError;\n }\n } else if (worker.lastError) {\n workerNode.disabledReason = worker.lastError;\n } else {\n delete workerNode.disabledReason;\n }\n\n if (workerNode.disabledReason) {\n workerNode.disabledReason = $sce.trustAsHtml(workerNode.disabledReason);\n }\n\n workerNode.cluster = workerNode.cluster || [];\n if (workerNode.cluster.indexOf(node.cluster) === -1) {\n workerNode.cluster.push(node.cluster);\n }\n\n let status = worker.status;\n\n // debug stuff\n if (isRandomLink) {\n status = ['UNINITIALIZED', 'ON', 'OFF', 'REPLICATION_SERVER', 'REPLICATION_CLIENT',\n 'OUT_OF_SYNC', 'OUT_OF_SYNC_FORCED', 'WAITING_WRITE', 'WRITING'][Math.floor(Math.random() * 9)]; // NOSONAR\n }\n // end of debug stuff\n\n $scope.addOrUpdateLink(node, $scope.urlToNode[worker.location], status, timestamp);\n });\n }).catch(function () {\n return true;\n });\n };\n\n $scope.getNodes = function () {\n // Reset all of these, just in case\n $scope.nodes = [];\n $scope.links = [];\n $scope.linksHash = {};\n $scope.clone = {};\n $scope.selectedNode = null;\n $scope.clusters = [];\n\n $scope.setLoader(true);\n\n return RepositoriesRestService.getCluster()\n .success(function (data) {\n $scope.hasNodes = data.length > 0;\n $scope.links = [];\n $scope.linksHash = {};\n $scope.clusters = [];\n\n const timestamp = Date.now();\n\n $scope.urlToNode = data.reduce(function (result, node) {\n if (node.type === \"master\" || node.type === \"worker\") {\n result[node.uri] = {\n name: $scope.getLabel(node.uri),\n local: node.local,\n location: node.uri,\n repositoryType: node.type,\n timestamp: timestamp\n };\n }\n return result;\n }, {});\n\n let clusterIdx = 0;\n\n const mastersData = Object.keys($scope.urlToNode).filter(function (key) {\n return $scope.urlToNode[key].repositoryType === 'master';\n }).sort(function (k1, k2) {\n if (k1 < k2) {\n return -1;\n } else if (k1 > k2) {\n return 1;\n }\n\n return 0;\n }).map(function (key) {\n const node = $scope.urlToNode[key];\n\n node.cluster = clusterIdx;\n $scope.clusters.push(node);\n clusterIdx++;\n return $scope.updateMasterNode(node, timestamp);\n });\n\n return $q.all(mastersData).finally(function () {\n $scope.nodes = _.sortBy(\n Object.keys($scope.urlToNode).map(function (key) {\n return $scope.urlToNode[key];\n }),\n ['name']\n );\n\n $scope.render();\n\n $scope.setLoader(false);\n });\n\n })\n .error(function (data) {\n $scope.hasNodes = false;\n toastr.error(getError(data), \"Error getting nodes\");\n $scope.setLoader(false);\n })\n .finally(function () {\n $scope.needsToRefresh = false;\n });\n };\n\n $scope.trackAddedOrRemovedNodes = function (timestamp) {\n return RepositoriesRestService.getCluster()\n .success(function (data) {\n const uri2tempNode = data.reduce(function (result, node) {\n if (node.type === \"master\" || node.type === \"worker\") {\n result[node.uri] = {\n location: node.uri,\n repositoryType: node.type\n };\n }\n return result;\n }, {});\n\n for (let i = 0; i < $scope.nodes.length; i++) {\n const node = $scope.nodes[i];\n if (node.location in uri2tempNode) {\n if (!node.artificiallyAdded) {\n // old node exists in new list, update timestamp and delete from new list\n node.timestamp = timestamp;\n delete uri2tempNode[node.location];\n }\n } else if (!node.artificiallyAdded) {\n // old node disappeared and it's not disabled, force refresh\n console.log(\"old node disappeared, refresh\");\n $scope.needsToRefresh = true;\n return true;\n }\n }\n\n if (Object.keys(uri2tempNode).length > 0) {\n // there are still nodes in the new list, which means someone added a repo, force refresh\n console.log(\"new nodes appeared, refresh\");\n $scope.needsToRefresh = true;\n }\n })\n .error(function (data) {\n toastr.error(getError(data), \"Error getting nodes\");\n });\n };\n\n $scope.updateClusterIfNeeded = function (checkNodes) {\n // raise flag to prevent calling this more than once before one invocation completes\n $scope.updating = true;\n\n const timestamp = Date.now();\n\n const processUpdate = function () {\n if (!$scope.needsToRefresh) {\n // check for nodes disconnected behind our back, or nodes entirely removed\n for (let i = 0; i < $scope.links.length; i++) {\n const link = $scope.links[i];\n if (link['timestamp'] !== timestamp) {\n console.log('nodes disconnected, removing link');\n // In reality if a user disconnects the bidirectional peer-to-peer link\n // between masters in only one direction we'd still have a single link\n // in the cluster manager. This is tricky and we can't do much about it for now.\n $scope.deleteLink(link, false);\n }\n }\n }\n\n if ($scope.needsToRefresh) {\n // major changes, we need to refresh\n console.log('refresh requested');\n $scope.getNodes();\n } else if ($scope.needsToRestart) {\n // only statuses changed, just restart the graph\n console.log('only links changed, restarting');\n $scope.restart();\n } else {\n // updates the statuses (colours of links)\n $scope.updateStatuses();\n // update colours for multimaster workers\n $scope.updateColors();\n // update warnings for missing bidi links\n $scope.updateWarnings();\n // updating done (when we refresh, restart() will do that instead)\n $scope.updating = false;\n }\n };\n\n if (checkNodes) {\n $scope.trackAddedOrRemovedNodes(timestamp).then(function () {\n if (!$scope.needsToRefresh) {\n const promises = [];\n for (let i = 0; i < $scope.nodes.length; i++) {\n const node = $scope.nodes[i];\n if (node.repositoryType === 'master') {\n promises.push($scope.updateMasterNode(node, timestamp, true));\n }\n }\n $q.all(promises).finally(processUpdate);\n } else {\n processUpdate();\n }\n });\n } else {\n const promises = [];\n for (let i = 0; i < $scope.nodes.length; i++) {\n const node = $scope.nodes[i];\n if (node.repositoryType === 'master') {\n promises.push($scope.updateMasterNode(node, timestamp, true));\n }\n }\n $q.all(promises).finally(processUpdate);\n }\n };\n\n $scope.getNodes();\n\n $scope.setMode = function (mode) {\n $scope.attributeChange = true;\n $scope.setMasterAttribute($scope.selectedNode, 'Mode', mode);\n };\n\n $scope.setReadonly = function (readonly) {\n $scope.attributeChange = true;\n $scope.selectedNode.readonly = readonly;\n $scope.setMasterAttribute($scope.selectedNode, 'ReadOnly', readonly);\n };\n\n let timerCounter = 0;\n const timer = $interval(function () {\n // check for update only if not in the middle of set attribute operation\n if (!$scope.attributeChange && !$scope.updating) {\n timerCounter++;\n // every third iteration also checks for added/removed nodes\n $scope.updateClusterIfNeeded(timerCounter % 3 === 0);\n }\n }, 2000);\n\n $scope.$on(\"$destroy\", function () {\n $interval.cancel(timer);\n });\n\n $scope.attributeChange = false;\n $scope.updating = false;\n\n // track window resizing\n const w = angular.element($window);\n const resize = function () {\n $scope.resize();\n };\n w.bind('resize', resize);\n $scope.$on('$destroy', function () {\n w.unbind('resize', resize);\n });\n\n // track collapsing the nav bar\n $scope.$on('onToggleNavWidth', function () {\n $scope.resize();\n });\n}\n\nCloneRepositoryCtrl.$inject = ['$scope', '$modalInstance', 'clone'];\n\nfunction CloneRepositoryCtrl($scope, $modalInstance, clone) {\n\n $scope.clone = angular.copy(clone);\n $scope.ok = function () {\n const patt = new RegExp('^[a-zA-Z0-9-_]+$');\n $scope.isInvalidRepoName = !patt.test($scope.clone.repositoryID);\n if (!$scope.isInvalidRepoName) {\n $modalInstance.close($scope.clone);\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{71:function(e,o,n){"use strict";n.r(o);n(2),n(11);const t=angular.module("graphdb.framework.jmx.queries.controllers",["ui.bootstrap","toastr","graphdb.framework.rest.monitoring.service"]);t.controller("QueriesCtrl",["$scope","$modal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService",function(e,o,n,t,r,i,s,u){e.loader=!0,e.stringLimit=500,e.expanded={},e.jolokiaError="";const c=document.createElement("a");e.parseNode=function(e){if(null==e)return null;let o="local";if(e.indexOf("://localhost:")<0&&e.indexOf("://localhost/")<0){c.href=e;let n=c.hostname;(function(e){const o=e.split(".");for(let e=0,n=0;e<o.length;e++)if(parseInt(o[e],10)>=0&&parseInt(o[e],10)<=255?n++:n=0,4===n)return!0;return!1})(c.hostname)||(n=c.hostname.split(".")[0]),o=n+":"+c.port}const n=e.match(/\/repositories\/([^\/]+)#(\d+)/);return[n[2],o,n[1]]},e.getQueries=function(){e.getQueriesRunning||e.paused||e.jolokiaError||!r.getActiveRepository()||(e.getQueriesRunning=!0,u.monitorQuery().success((function(o){const n=o;e.noQueries=0===n.length,e.queries={};for(let o=0;o<n.length;o++)n[o].parsedNode=e.parseNode(n[o].node),e.queries[n[o].trackId]=n[o];e.noActiveRepository=!1,e.loader=!1,e.getQueriesRunning=!1})).error((function(o){e.jolokiaError=getError(o),e.loader=!1,e.getQueriesRunning=!1})))};const a=t((function(){r.isActiveRepoOntopType()||e.getQueries()}),1e3);e.$on("$destroy",(function(){t.cancel(a)})),e.deleteQueryHttp=function(o){e.loader=!0,u.deleteQuery(o).success((function(){n.success("Abort request sent."),e.loader=!1})).error((function(o){const t=getError(o);n.error(t,"Error"),e.loader=!1}))},e.abortQuery=function(o){s.openSimpleModal({title:"Confirm abort",message:"Are you sure you want to abort the query?",warning:!0}).result.then((function(){e.deleteQueryHttp(o)}))},e.downloadQuery=function(e){const o="query_"+e+".rq";let n="rest/monitor/query/download?queryId="+encodeURIComponent(e)+"&repository="+encodeURIComponent(r.getActiveRepository())+"&filename="+encodeURIComponent(o);i.isAuthenticated()&&(n=n+"&authToken="+encodeURIComponent(i.getAuthToken())),window.open(n,"_blank")},e.toggleQueryExpanded=function(o){e.expanded[o]=!e.expanded[o]}}]),t.controller("DeleteQueryCtrl",["$scope","$modalInstance",function(e,o){e.ok=function(){o.close()},e.cancel=function(){o.dismiss("cancel")}}])}}]);
|
|
2
|
-
//# sourceMappingURL=75.dbd9915663de96056138.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/queries/controllers.js"],"names":["queriesCtrl","angular","module","controller","$scope","$modal","toastr","$interval","$repositories","$jwtAuth","ModalService","MonitoringRestService","loader","stringLimit","expanded","jolokiaError","parser","document","createElement","parseNode","node","shortUrl","indexOf","href","hostname","ip","blocks","split","i","sequence","length","parseInt","containsIPV4","port","match","getQueries","getQueriesRunning","paused","getActiveRepository","monitorQuery","success","data","newQueries","noQueries","queries","parsedNode","trackId","noActiveRepository","error","getError","timer","isActiveRepoOntopType","$on","cancel","deleteQueryHttp","queryId","deleteQuery","msg","abortQuery","openSimpleModal","title","message","warning","result","then","downloadQuery","filename","link","encodeURIComponent","isAuthenticated","getAuthToken","window","open","toggleQueryExpanded","$modalInstance","ok","close","dismiss"],"mappings":"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","file":"75.dbd9915663de96056138.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/rest/monitoring.rest.service';\n\nconst queriesCtrl = angular.module('graphdb.framework.jmx.queries.controllers', [\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.rest.monitoring.service'\n]);\n\nqueriesCtrl.controller('QueriesCtrl', ['$scope', '$modal', 'toastr', '$interval', '$repositories', '$jwtAuth', 'ModalService', 'MonitoringRestService',\n function ($scope, $modal, toastr, $interval, $repositories, $jwtAuth, ModalService, MonitoringRestService) {\n\n $scope.loader = true;\n $scope.stringLimit = 500;\n $scope.expanded = {};\n $scope.jolokiaError = '';\n\n function containsIPV4(ip) {\n const blocks = ip.split('.');\n for (let i = 0, sequence = 0; i < blocks.length; i++) {\n if (parseInt(blocks[i], 10) >= 0 && parseInt(blocks[i], 10) <= 255) {\n sequence++;\n } else {\n sequence = 0;\n }\n if (sequence === 4) {\n return true;\n }\n }\n return false;\n }\n\n const parser = document.createElement('a');\n\n // Parses a node of the kind http://host.example.com:7200/repositories/repo#NN,\n // where NN is the track ID into an array [NN, host:7200, repo].\n $scope.parseNode = function (node) {\n if (node == null) {\n return null;\n }\n\n let shortUrl = 'local';\n if (node.indexOf('://localhost:') < 0 && node.indexOf('://localhost/') < 0) {\n parser.href = node;\n let hostname = parser.hostname;\n if (!containsIPV4(parser.hostname)) {\n hostname = parser.hostname.split('.')[0];\n }\n shortUrl = hostname + ':' + parser.port;\n }\n const match = node.match(/\\/repositories\\/([^\\/]+)#(\\d+)/); // eslint-disable-line no-useless-escape\n\n return [match[2], shortUrl, match[1]];\n };\n\n $scope.getQueries = function () {\n // Skip execution if already getting from previous call, if paused, if jolokia returned an error,\n // or if no repository is available\n if ($scope.getQueriesRunning || $scope.paused || $scope.jolokiaError || !$repositories.getActiveRepository()) {\n return;\n }\n\n $scope.getQueriesRunning = true;\n MonitoringRestService.monitorQuery().success(function (data) {\n const newQueries = data;\n $scope.noQueries = newQueries.length === 0;\n\n // Converts array to object. Angular seems to handle updates on objects better, i.e.\n // it doesn't recreate DOM elements for queries that are already displayed.\n $scope.queries = {};\n for (let i = 0; i < newQueries.length; i++) {\n newQueries[i].parsedNode = $scope.parseNode(newQueries[i].node);\n $scope.queries[newQueries[i].trackId] = newQueries[i];\n }\n\n $scope.noActiveRepository = false;\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n }).error(function (data) {\n $scope.jolokiaError = getError(data);\n $scope.loader = false;\n $scope.getQueriesRunning = false;\n });\n };\n\n const timer = $interval(function () {\n // Don't call getQueries for Ontop type repository\n if ($repositories.isActiveRepoOntopType()) {\n return;\n }\n $scope.getQueries();\n }, 1000);\n\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n\n $scope.deleteQueryHttp = function (queryId) {\n\n $scope.loader = true;\n MonitoringRestService.deleteQuery(queryId).success(function () {\n toastr.success('Abort request sent.');\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error');\n\n $scope.loader = false;\n });\n };\n\n $scope.abortQuery = function (queryId) {\n ModalService.openSimpleModal({\n title: 'Confirm abort',\n message: 'Are you sure you want to abort the query?',\n warning: true\n }).result.then(function () {\n $scope.deleteQueryHttp(queryId);\n });\n };\n\n $scope.downloadQuery = function (queryId) {\n const filename = 'query_' + queryId + '.rq';\n let link = 'rest/monitor/query/download?queryId=' + encodeURIComponent(queryId)\n + '&repository=' + encodeURIComponent($repositories.getActiveRepository())\n + '&filename=' + encodeURIComponent(filename);\n if ($jwtAuth.isAuthenticated()) {\n link = link + '&authToken=' + encodeURIComponent($jwtAuth.getAuthToken());\n }\n\n window.open(link, '_blank');\n };\n\n $scope.toggleQueryExpanded = function (queryId) {\n $scope.expanded[queryId] = !$scope.expanded[queryId];\n };\n }]);\n\n\nqueriesCtrl.controller('DeleteQueryCtrl', ['$scope', '$modalInstance', function ($scope, $modalInstance) {\n\n $scope.ok = function () {\n $modalInstance.close();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{74:function(e,o){function r(e,o,r,t,s){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/fedx-repo.html",link:function(t){const i="ResolvableRepository";function n(){for(const e of t.fedxMembers)t.knownRepos=t.knownRepos.filter((function(o){return e.repositoryServer?o.id!==e.repositoryName||o.location!==e.repositoryServer:o.id!==e.repositoryName||!o.local}))}function a(){return o.getRepositories().success((function(e){t.allLocalRepos=e.slice()})).error((function(e){const o=getError(e);r.error(o,"Error")})).then((function(){s.getLocations().success((function(e){t.locations=e.slice()})).error((function(e){const o=getError(e);r.error(o,"Error")})).then((function(){t.locations.forEach(e=>(function(e){return o.getRepositoriesFromKnownLocation(e).success((function(e){t.knownRepos=t.allLocalRepos.filter(e=>-1!==t.knownRepos.indexOf(e));for(const o of e)t.allAttachedRepos=t.allAttachedRepos.filter(e=>e.id!==o.id||e.location!==o.location);t.allAttachedRepos=t.allAttachedRepos.concat(e.slice()),t.knownRepos=t.knownRepos.concat(t.allAttachedRepos)})).error((function(e){const o=getError(e);r.error(o,"Error")}))})(e.uri).then((function(){t.editRepoPage&&(t.fedxMembers=t.repositoryInfo.params.member.value.slice()),n()})))}))}))}t.fedxMembers=[],t.knownRepos=[],t.allLocalRepos=[],t.allAttachedRepos=[],t.locations=[],t.setWritableRepo=function(e){let o=t.fedxMembers.find(e=>"true"===e.writable);o&&((o.store!==i||e.store===i&&o.repositoryName===e.repositoryName)&&("RemoteRepository"!==o.store||"RemoteRepository"===e.store&&o.repositoryName===e.repositoryName&&o.repositoryServer===e.repositoryServer)||(o.writable="false")),e.writable=JSON.stringify("false"===e.writable)},t.getActiveClass=function(e){return"true"===e.writable?" active":""},t.checkIfRepoExist=function(e){return e.store===i?t.allLocalRepos.find(o=>o.id===e.repositoryName):"RemoteRepository"!==e.store||(o=e,!t.locations.find(e=>e.uri===o.repositoryServer))||t.allAttachedRepos.find(o=>o.id===e.repositoryName&&o.location===e.repositoryServer);var o},t.getRepositoryServer=function(e){return e.local?"Local":e.location};const p=setInterval((function(){a()}),5e3);function l(e){t.fedxMembers.push(e),t.repositoryInfo.params.member.value=t.fedxMembers}function d(e){return"/"===e.slice(-1)?e.slice(0,-1):e}function m(){return t.editRepoPage&&!t.editRepoPage||!t.model.editMode}t.$on("$destroy",(function(){clearInterval(p)})),t.addMember=function(e){if("Local"===t.getRepositoryServer(e))t.addLocalMember(e);else{let o={store:"RemoteRepository",repositoryName:e.id,repositoryServer:e.location,username:"",password:"",supportsASKQueries:"true",writable:"false"};t.knownRepos=t.knownRepos.filter((function(e){return o.repositoryServer?e.id!==o.repositoryName||e.location!==o.repositoryServer:e.id!==o.repositoryName||!e.local})),l(o)}},t.addLocalMember=function(e){let o={store:i,repositoryName:e.id,repoType:e.type,respectRights:"true",writable:"false"};t.knownRepos=t.knownRepos.filter((function(e){return o.repositoryServer?e.id!==o.repositoryName||e.location!==o.repositoryServer:e.id!==o.repositoryName||!e.local})),l(o)},t.removeMember=function(e){e.store&&e.store===i?(t.fedxMembers=t.fedxMembers.filter(o=>o.repositoryName!==e.repositoryName||o.store!==e.store),t.allLocalRepos=[],a()):e.store&&"SPARQLEndpoint"===e.store?t.fedxMembers=t.fedxMembers.filter(o=>o.endpoint!==e.endpoint):e.store&&"NativeStore"===e.store?t.fedxMembers=t.fedxMembers.filter(o=>o.repositoryLocation!==e.repositoryLocation):e.store&&"RemoteRepository"===e.store&&(t.fedxMembers=t.fedxMembers.filter(o=>o.repositoryName!==e.repositoryName||o.repositoryServer!==e.repositoryServer||o.store!==e.store),t.allAttachedRepos=[],a()),t.repositoryInfo.params.member.value=t.fedxMembers},t.addRemoteMember=function(){t.mode="remote",t.model={editMode:!1,store:"RemoteRepository",repositoryName:"",repositoryServer:"",sparqlEndpoint:"",username:"",password:"",supportsASKQueries:"true",writable:"false"},t.$modalInstance=e.open({templateUrl:"js/angular/templates/modal/add-fedx-remote-repo.html",scope:t})},t.getMemberIcon=function(e){return e.repoType?"icon-repo-"+e.repoType:"NativeStore"===e.store?"icon-warning":"icon-link"},t.editFedXRepository=function(o){o.store===i?(t.mode="local",t.model={editMode:!0,store:o.store,respectRights:o.respectRights,repositoryName:o.repositoryName,repoType:o.repoType,writable:o.writable}):(t.mode="remote",t.model={editMode:!0,store:o.store,repositoryName:o.repositoryName,repositoryServer:o.repositoryServer,sparqlEndpoint:"SPARQLEndpoint"===o.store?o.endpoint:o.repositoryLocation,username:o.username,password:o.password,supportsASKQueries:o.supportsASKQueries,writable:o.writable}),t.$modalInstance=e.open({templateUrl:"js/angular/templates/modal/add-fedx-remote-repo.html",scope:t})},t.resolveName=function(e){switch(e.store){case i:return e.repositoryName;case"RemoteRepository":return e.repositoryName+"@"+e.repositoryServer;case"SPARQLEndpoint":return e.endpoint;case"NativeStore":return e.repositoryLocation;default:return""}},t.cancel=function(){t.$modalInstance.dismiss("cancel")},t.ok=function(){let e;if(t.model.repositoryName&&t.model.store===i)e={store:i,repositoryName:t.model.repositoryName,repoType:t.model.repoType,respectRights:t.model.respectRights,writable:t.model.writable},t.fedxMembers=t.fedxMembers.filter(o=>o.repositoryName!==e.repositoryName||o.store!==e.store);else if(t.model.repositoryName&&"RemoteRepository"===t.model.store){if(e={store:"RemoteRepository",repositoryName:t.model.repositoryName,repositoryServer:d(t.model.repositoryServer),username:t.model.username,password:t.model.password,writable:t.model.writable},m()&&t.fedxMembers.find(o=>o.repositoryName===e.repositoryName&&o.repositoryServer===e.repositoryServer)){let o=t.resolveName(e);return r.error(`Repository ${o} already added as a FedX member`),void t.$modalInstance.close()}t.fedxMembers=t.fedxMembers.filter(o=>o.repositoryName!==e.repositoryName||o.repositoryServer!==e.repositoryServer)}else{if(e={store:"SPARQLEndpoint",endpoint:d(t.model.sparqlEndpoint),username:t.model.username,password:t.model.password,supportsASKQueries:t.model.supportsASKQueries,writable:t.model.writable},m()&&t.fedxMembers.find(o=>o.endpoint===e.endpoint)){let o=t.resolveName(e);return r.error(`SPARQL endpoint ${o} already added as a FedX member`),void t.$modalInstance.close()}t.fedxMembers=t.fedxMembers.filter(o=>o.endpoint!==e.endpoint)}l(e),n(),t.$modalInstance.close()},a()}}}angular.module("graphdb.framework.repositories.fedx-repo.directive",[]).directive("fedxRepo",r),r.$inject=["$modal","RepositoriesRestService","toastr","$timeout","LocationsRestService"]}}]);
|
|
2
|
-
//# sourceMappingURL=78.608f8074bef29a89d68b.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/repositories/fedx-repo.directive.js"],"names":["fedxRepoDirective","$modal","RepositoriesRestService","toastr","$timeout","LocationsRestService","restrict","scope","templateUrl","link","$scope","LOCAL_REPO_STORE","populateKnownRepos","member","fedxMembers","knownRepos","filter","repo","repositoryServer","id","repositoryName","location","local","getKnownRepos","getRepositories","success","response","allLocalRepos","slice","error","msg","getError","then","getLocations","locations","forEach","l","getRepositoriesFromKnownLocation","el","indexOf","allAttachedRepos","concat","getRepositoriesFromLocation","uri","editRepoPage","repositoryInfo","params","value","setWritableRepo","currentWritable","find","writable","store","JSON","stringify","getActiveClass","checkIfRepoExist","getRepositoryServer","localReposTimer","setInterval","updateMembers","push","removeEndingSlash","url","checkEditMode","model","editMode","$on","clearInterval","addMember","repository","addLocalMember","username","password","supportsASKQueries","repoType","type","respectRights","removeMember","endpoint","repositoryLocation","addRemoteMember","mode","sparqlEndpoint","$modalInstance","open","getMemberIcon","editFedXRepository","resolveName","cancel","dismiss","ok","resolvedName","close","angular","module","directive","$inject"],"mappings":"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","file":"78.608f8074bef29a89d68b.bundle.js","sourcesContent":["angular\n .module('graphdb.framework.repositories.fedx-repo.directive', [])\n .directive('fedxRepo', fedxRepoDirective);\n\nfedxRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', '$timeout', 'LocationsRestService'];\n\nfunction fedxRepoDirective($modal, RepositoriesRestService, toastr, $timeout, LocationsRestService) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/fedx-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n const LOCAL_REPO_STORE = 'ResolvableRepository';\n const REMOTE_REPO_STORE = 'RemoteRepository';\n const SPARQL_ENDPOINT_STORE = 'SPARQLEndpoint';\n const NATIVE_STORE = 'NativeStore';\n\n $scope.fedxMembers = [];\n $scope.knownRepos = [];\n $scope.allLocalRepos = [];\n $scope.allAttachedRepos = [];\n $scope.locations = [];\n\n function getRepositories() {\n return RepositoriesRestService.getRepositories()\n .success(function (response) {\n $scope.allLocalRepos = response.slice();\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, 'Error');\n });\n }\n\n function getRepositoriesFromLocation(location) {\n return RepositoriesRestService.getRepositoriesFromKnownLocation(location)\n .success(function (response) {\n $scope.knownRepos = $scope.allLocalRepos.filter(el => $scope.knownRepos.indexOf(el) !== -1);\n for (const member of response) {\n $scope.allAttachedRepos = $scope.allAttachedRepos.filter(repo => repo.id !== member.id || repo.location !== member.location);\n }\n $scope.allAttachedRepos = $scope.allAttachedRepos.concat(response.slice());\n $scope.knownRepos = $scope.knownRepos.concat($scope.allAttachedRepos);\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, 'Error');\n });\n }\n\n function populateKnownRepos() {\n for (const member of $scope.fedxMembers) {\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n // if the member is a remote attached member\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n // if the member is a local one\n return repo.id !== member.repositoryName || !repo.local;\n }\n });\n }\n }\n\n $scope.setWritableRepo = function (member) {\n let currentWritable = getWritableRepo();\n if (currentWritable) {\n if (currentWritable.store === LOCAL_REPO_STORE && (member.store !== LOCAL_REPO_STORE || currentWritable.repositoryName !== member.repositoryName) ) {\n currentWritable.writable = 'false';\n } else if (currentWritable.store === REMOTE_REPO_STORE && (member.store !== REMOTE_REPO_STORE || currentWritable.repositoryName !== member.repositoryName || currentWritable.repositoryServer !== member.repositoryServer)) {\n currentWritable.writable = 'false';\n }\n }\n member.writable = JSON.stringify(member.writable === 'false');\n }\n\n $scope.getActiveClass = function (member) {\n return member.writable === 'true' ? ' active' : '';\n }\n\n function getWritableRepo() {\n return $scope.fedxMembers.find(member => member.writable === \"true\");\n }\n\n function getKnownRepos() {\n return getRepositories()\n .then(function () {\n getAttachedRepositories();\n });\n }\n\n function getLocations() {\n return LocationsRestService.getLocations()\n .success(function(response) {\n $scope.locations = response.slice();\n }).error(function (response) {\n const msg = getError(response);\n toastr.error(msg, 'Error');\n });\n }\n\n function getAttachedRepositories() {\n return getLocations()\n .then(function() {\n $scope.locations.forEach(l => getRepositoriesFromLocation(l.uri)\n .then(function () {\n if ($scope.editRepoPage) {\n $scope.fedxMembers = $scope.repositoryInfo.params.member.value.slice();\n }\n populateKnownRepos();\n }))\n });\n }\n\n $scope.checkIfRepoExist = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n return $scope.allLocalRepos.find(repo => repo.id === member.repositoryName);\n } else if (member.store === REMOTE_REPO_STORE && checkIfLocationIsAttached(member)) {\n return $scope.allAttachedRepos.find(repo => repo.id === member.repositoryName && repo.location === member.repositoryServer);\n } else {\n return true;\n }\n }\n\n function checkIfLocationIsAttached(repo) {\n return $scope.locations.find(el => el.uri === repo.repositoryServer);\n }\n\n $scope.getRepositoryServer = function (repo) {\n if (repo.local) {\n return \"Local\";\n } else {\n return repo.location;\n }\n }\n\n const localReposTimer = setInterval(function () {\n getKnownRepos();\n }, 5000);\n\n $scope.$on('$destroy', function () {\n clearInterval(localReposTimer);\n });\n\n $scope.addMember = function(repository) {\n if ($scope.getRepositoryServer(repository) === \"Local\") {\n $scope.addLocalMember(repository);\n } else {\n let member = {\n store: REMOTE_REPO_STORE,\n repositoryName: repository.id,\n repositoryServer: repository.location,\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n return repo.id !== member.repositoryName || !repo.local;\n }\n });\n updateMembers(member);\n }\n }\n\n $scope.addLocalMember = function (repository) {\n let member = {\n store: LOCAL_REPO_STORE,\n repositoryName: repository.id,\n repoType: repository.type,\n respectRights: \"true\",\n writable: \"false\"\n };\n\n $scope.knownRepos = $scope.knownRepos.filter(function (repo) {\n if (member.repositoryServer) {\n return repo.id !== member.repositoryName || repo.location !== member.repositoryServer;\n } else {\n return repo.id !== member.repositoryName || !repo.local;\n }\n }); updateMembers(member);\n }\n\n $scope.removeMember = function (member) {\n if (member.store && member.store === LOCAL_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store);\n $scope.allLocalRepos = [];\n getKnownRepos();\n } else if (member.store && member.store === SPARQL_ENDPOINT_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n } else if (member.store && member.store === NATIVE_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryLocation !== member.repositoryLocation);\n } else if (member.store && member.store === REMOTE_REPO_STORE) {\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer || el.store !== member.store);\n $scope.allAttachedRepos = []\n getKnownRepos();\n }\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n $scope.addRemoteMember = function () {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: false,\n store: REMOTE_REPO_STORE,\n repositoryName: '',\n repositoryServer: '',\n sparqlEndpoint: '',\n username: '',\n password: '',\n supportsASKQueries: \"true\",\n writable: \"false\"\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope,\n });\n };\n\n $scope.getMemberIcon = function (member) {\n if (member.repoType) {\n return 'icon-repo-' + member.repoType;\n } else if (member.store === NATIVE_STORE) {\n return 'icon-warning';\n } else {\n return 'icon-link';\n }\n }\n\n $scope.editFedXRepository = function (member) {\n if (member.store === LOCAL_REPO_STORE) {\n $scope.mode = 'local';\n $scope.model = {\n editMode: true,\n store: member.store,\n respectRights: member.respectRights,\n repositoryName: member.repositoryName,\n repoType: member.repoType,\n writable: member.writable\n }\n } else {\n $scope.mode = 'remote';\n $scope.model = {\n editMode: true,\n store: member.store,\n repositoryName: member.repositoryName,\n repositoryServer: member.repositoryServer,\n sparqlEndpoint: member.store === SPARQL_ENDPOINT_STORE ? member.endpoint : member.repositoryLocation,\n username: member.username,\n password: member.password,\n supportsASKQueries: member.supportsASKQueries,\n writable: member.writable\n }\n }\n\n $scope.$modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/add-fedx-remote-repo.html',\n scope: $scope\n });\n };\n\n $scope.resolveName = function (member) {\n switch (member.store) {\n case LOCAL_REPO_STORE : {\n return member.repositoryName;\n }\n case REMOTE_REPO_STORE : {\n return member.repositoryName + '@' + member.repositoryServer;\n }\n case SPARQL_ENDPOINT_STORE : {\n return member.endpoint;\n }\n case NATIVE_STORE : {\n return member.repositoryLocation;\n }\n default :\n return \"\";\n }\n }\n\n $scope.cancel = function () {\n $scope.$modalInstance.dismiss('cancel');\n };\n\n function updateMembers(member) {\n $scope.fedxMembers.push(member);\n $scope.repositoryInfo.params['member'].value = $scope.fedxMembers;\n }\n\n function removeEndingSlash(url) {\n return url.slice(-1) === '/' ? url.slice(0, -1) : url\n }\n\n function checkEditMode() {\n return $scope.editRepoPage && !$scope.editRepoPage || !$scope.model.editMode;\n }\n\n $scope.ok = function () {\n let member;\n if ($scope.model.repositoryName && $scope.model.store === LOCAL_REPO_STORE) {\n member = {\n store: LOCAL_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repoType: $scope.model.repoType,\n respectRights: $scope.model.respectRights,\n writable: $scope.model.writable\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName || el.store !== member.store );\n } else if ($scope.model.repositoryName && $scope.model.store === REMOTE_REPO_STORE) {\n member = {\n store: REMOTE_REPO_STORE,\n repositoryName: $scope.model.repositoryName,\n repositoryServer: removeEndingSlash($scope.model.repositoryServer),\n username: $scope.model.username,\n password: $scope.model.password,\n writable: $scope.model.writable\n };\n if (checkEditMode() && $scope.fedxMembers.find(el => el.repositoryName === member.repositoryName\n && el.repositoryServer === member.repositoryServer)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error(`Repository ${resolvedName} already added as a FedX member`);\n $scope.$modalInstance.close();\n return;\n }\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.repositoryName !== member.repositoryName\n || el.repositoryServer !== member.repositoryServer);\n } else {\n member = {\n store: SPARQL_ENDPOINT_STORE,\n endpoint: removeEndingSlash($scope.model.sparqlEndpoint),\n username: $scope.model.username,\n password: $scope.model.password,\n supportsASKQueries: $scope.model.supportsASKQueries,\n writable: $scope.model.writable\n };\n\n if (checkEditMode() && $scope.fedxMembers.find(el => el.endpoint === member.endpoint)) {\n let resolvedName = $scope.resolveName(member);\n toastr.error(`SPARQL endpoint ${resolvedName} already added as a FedX member`);\n $scope.$modalInstance.close();\n return;\n }\n\n $scope.fedxMembers = $scope.fedxMembers.filter(el => el.endpoint !== member.endpoint);\n }\n\n updateMembers(member);\n populateKnownRepos();\n $scope.$modalInstance.close();\n };\n\n getKnownRepos();\n }\n}\n"],"sourceRoot":""}
|