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/lib/FileSaver-patch.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/js/angular/utils/file-types.js","webpack:///./src/js/angular/core/directives/paginations.js","webpack:///./src/js/angular/export/controllers.js","webpack:///./src/js/angular/export/app.js"],"names":["saveAs","view","navigator","test","userAgent","doc","document","get_URL","URL","webkitURL","save_link","createElementNS","webkit_req_fs","webkitRequestFileSystem","req_fs","requestFileSystem","mozRequestFileSystem","throw_outside","ex","setImmediate","setTimeout","fs_min_size","revoke","file","revoker","revokeObjectURL","remove","chrome","dispatch","filesaver","event_types","event","i","concat","length","listener","call","auto_bom","blob","type","Blob","FileSaver","name","object_url","target_view","slice","this","blob_changed","dispatch_all","split","fs_error","createObjectURL","location","href","undefined","open","safari","readyState","DONE","abortable","func","apply","arguments","create_if_not_found","create","exclusive","INIT","download","node","MouseEvent","dispatchEvent","webkitSlice","size","TEMPORARY","fs","root","getDirectory","dir","save","getFile","createWriter","writer","onwriteend","toURL","onerror","error","code","ABORT_ERR","forEach","write","abort","WRITING","NOT_FOUND_ERR","FS_proto","prototype","msSaveOrOpenBlob","onwritestart","onprogress","onwrite","onabort","self","window","content","module","exports","Error","__webpack_amd_options__","angular","value","extension","directive","template","controller","$scope","$http","$location","$timeout","ModalService","filterFilter","$repositories","toastr","RDF4JRepositoriesRestService","FileTypes","getActiveRepository","exportFormats","deleting","showExportDDTooltip","page","pageSize","pageSizeOptions","displayGraphs","exportFilter","export","exportMultipleGraphs","repoExportFormat","selectedGraphs","exportGraphs","$watch","getGraphs","selectedAll","changePageSize","isShacl","iri","loader","success","data","results","bindings","unshift","contextID","graphsByValue","Object","keys","key","binding","uri","encodeURIComponent","clearUri","exportUri","longName","graphs","filteredGraphs","copy","matchedElements","status","msg","getError","setRepository","onGraphSearch","deselectAll","filterResults","item","indexOf","push","downloadExport","downloadUrl","format","url","auth","localStorage","getItem","openExportDDTooltip","$","trigger","exportRepo","openSimpleModal","title","message","warning","result","then","startDownload","hasMultipleSelected","_","isEmpty","index","exportSelectedGraphs","contextStr","substring","element","find","valueOfFilteredGraphsButton","innerHTML","trim","valueOfFilteredGraphs","changePagination","isDefined","removeClass","checkAll","dropRepository","canWriteActiveRepo","addStatements","err","dropContext","ctx","updateResults","dropGraph","selectedGraphsForDelete","counterOfClearedGraphs","dropSelectedGraphs","config","$tooltipProvider","setTriggers"],"mappings":"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","file":"18.2ddbba81e5b663db1894.bundle.js","sourcesContent":["/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 2015-05-07.2\n *\n * By Eli Grey, http://eligrey.com\n * License: X11/MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, webkit_req_fs = view.webkitRequestFileSystem\n\t\t, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t, fs_min_size = 0\n\t\t// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and\n\t\t// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047\n\t\t// for the reasoning behind the timeout and revocation flow\n\t\t, arbitrary_revoke_timeout = 500 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (view.chrome) {\n\t\t\t\trevoker();\n\t\t\t} else {\n\t\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t\t}\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([\"\\ufeff\", blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name) {\n\t\t\tblob = auto_bom(blob);\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, blob_changed = false\n\t\t\t\t, object_url\n\t\t\t\t, target_view\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (blob_changed || !object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (target_view) {\n\t\t\t\t\t\ttarget_view.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar new_tab = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (new_tab == undefined && typeof safari !== \"undefined\") {\n\t\t\t\t\t\t\t//Apple do not allow window.open, see http://bit.ly/1kZffRI\n\t\t\t\t\t\t\tview.location.href = object_url\n\t\t\t\t\t\t} \n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t\t, abortable = function(func) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif (filesaver.readyState !== filesaver.DONE) {\n\t\t\t\t\t\t\treturn func.apply(this, arguments);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t, create_if_not_found = {create: true, exclusive: false}\n\t\t\t\t, slice\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\tif (!name) {\n\t\t\t\tname = \"download\";\n\t\t\t}\n\t\t\tif (save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t//window.open('data:attachment/csv;charset=utf-8,' + object_url);\n\t\t\t\tsave_link.href = object_url;\n\t\t\t\tsave_link.download = name;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Object and web filesystem URLs have a problem saving in Google Chrome when\n\t\t\t// viewed in a tab, so I force save with application/octet-stream\n\t\t\t// http://code.google.com/p/chromium/issues/detail?id=91158\n\t\t\t// Update: Google errantly closed 91158, I submitted it again:\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=389642\n\t\t\tif (view.chrome && type && type !== force_saveable_type) {\n\t\t\t\tslice = blob.slice || blob.webkitSlice;\n\t\t\t\tblob = slice.call(blob, 0, blob.size, force_saveable_type);\n\t\t\t\tblob_changed = true;\n\t\t\t}\n\t\t\t// Since I can't be sure that the guessed media type will trigger a download\n\t\t\t// in WebKit, I append .download to the filename.\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=65440\n\t\t\tif (webkit_req_fs && name !== \"download\") {\n\t\t\t\tname += \".download\";\n\t\t\t}\n\t\t\tif (type === force_saveable_type || webkit_req_fs) {\n\t\t\t\ttarget_view = view;\n\t\t\t}\n\t\t\tif (!req_fs) {\n\t\t\t\tfs_error();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfs_min_size += blob.size;\n\t\t\treq_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {\n\t\t\t\tfs.root.getDirectory(\"saved\", create_if_not_found, abortable(function(dir) {\n\t\t\t\t\tvar save = function() {\n\t\t\t\t\t\tdir.getFile(name, create_if_not_found, abortable(function(file) {\n\t\t\t\t\t\t\tfile.createWriter(abortable(function(writer) {\n\t\t\t\t\t\t\t\twriter.onwriteend = function(event) {\n\t\t\t\t\t\t\t\t\ttarget_view.location.href = file.toURL();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t\tdispatch(filesaver, \"writeend\", event);\n\t\t\t\t\t\t\t\t\trevoke(file);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\twriter.onerror = function() {\n\t\t\t\t\t\t\t\t\tvar error = writer.error;\n\t\t\t\t\t\t\t\t\tif (error.code !== error.ABORT_ERR) {\n\t\t\t\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\"writestart progress write abort\".split(\" \").forEach(function(event) {\n\t\t\t\t\t\t\t\t\twriter[\"on\" + event] = filesaver[\"on\" + event];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\twriter.write(blob);\n\t\t\t\t\t\t\t\tfilesaver.abort = function() {\n\t\t\t\t\t\t\t\t\twriter.abort();\n\t\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfilesaver.readyState = filesaver.WRITING;\n\t\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t\t}), fs_error);\n\t\t\t\t\t};\n\t\t\t\t\tdir.getFile(name, {create: false}, abortable(function(file) {\n\t\t\t\t\t\t// delete file if it already exists\n\t\t\t\t\t\tfile.remove();\n\t\t\t\t\t\tsave();\n\t\t\t\t\t}), abortable(function(ex) {\n\t\t\t\t\t\tif (ex.code === ex.NOT_FOUND_ERR) {\n\t\t\t\t\t\t\tsave();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfs_error();\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}), fs_error);\n\t\t\t}), fs_error);\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name) {\n\t\t\treturn new FileSaver(blob, name);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name) {\n\t\t\treturn navigator.msSaveOrOpenBlob(auto_bom(blob), name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function() {\n\t\tvar filesaver = this;\n\t\tfilesaver.readyState = filesaver.DONE;\n\t\tdispatch(filesaver, \"abort\");\n\t};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd != null)) {\n define([], function() {\n return saveAs;\n });\n}","module.exports = function() {\n\tthrow new Error(\"define cannot be used indirect\");\n};\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","angular.module('graphdb.workbench.utils.filetypes', [])\n .value('FileTypes', [\n {name: 'JSON', type: 'application/rdf+json', extension: '.json'},\n {name: 'JSON-LD', type: 'application/ld+json', extension: '.jsonld'},\n {name: 'RDF-XML', type: 'application/rdf+xml', extension: '.rdf'},\n {name: 'N3', type: 'text/rdf+n3', extension: '.n3'},\n {name: 'N-Triples', type: 'text/plain', extension: '.nt'},\n {name: 'N-Quads', type: 'text/x-nquads', extension: '.nq'},\n {name: 'Turtle', type: 'text/turtle', extension: '.ttl'},\n {name: 'Turtle*', type: 'application/x-turtlestar', extension: '.ttls'},\n {name: 'TriX', type: 'application/trix', extension: '.trix'},\n {name: 'TriG', type: 'application/x-trig', extension: '.trig'},\n {name: 'TriG*', type: 'application/x-trigstar', extension: '.trigs'},\n {name: 'Binary RDF', type: 'application/x-binary-rdf', extension: '.brf'}\n ]);\n","angular.module('graphdb.framework.core.directives.paginations', [])\n .directive('paginations', function () {\n return {\n template: '<pagination class=\"nav navbar-right\" total-items=\"matchedElements.length\" items-per-page=\"pageSize\" ng-model=\"page\" ng-change=\"changePagination()\" direction-links=\"false\" boundary-links=\"true\" max-size=\"5\" rotate=\"true\"></pagination>',\n };\n });\n","import 'angular/core/services';\nimport 'angular/core/services/repositories.service';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/utils/file-types';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'toastr',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.workbench.utils.filetypes'\n];\n\nconst exportCtrl = angular.module('graphdb.framework.impex.export.controllers', modules);\n\nexportCtrl.controller('ExportCtrl',\n ['$scope', '$http', '$location', '$timeout', 'ModalService', 'filterFilter', '$repositories', 'toastr', 'RDF4JRepositoriesRestService', 'FileTypes',\n function ($scope, $http, $location, $timeout, ModalService, filterFilter, $repositories, toastr, RDF4JRepositoriesRestService, FileTypes) {\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n $scope.exportFormats = FileTypes;\n $scope.deleting = {};\n $scope.showExportDDTooltip = true;\n $scope.page = 1;\n $scope.pageSize = 10;\n $scope.pageSizeOptions = [10, 20, 50, 100];\n $scope.displayGraphs = [];\n $scope.exportFilter = '';\n $scope.export = true;\n $scope.exportMultipleGraphs = false;\n $scope.repoExportFormat = {\n name: 'TriG',\n type: 'application/x-trig',\n extension: '.trig'\n };\n $scope.selectedGraphs = {\n exportGraphs: {}\n };\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n $scope.exportFilter = '';\n $scope.getGraphs();\n $scope.selectedAll = false;\n $timeout(function () {\n $scope.changePageSize(10);\n }, 100);\n });\n\n $scope.isShacl = function (iri) {\n return iri === \"http%3A%2F%2Frdf4j.org%2Fschema%2Frdf4j%23SHACLShapeGraph\";\n };\n\n /// <summary>Get Graphs that are part of the Active Repository.</summary>\n $scope.getGraphs = function () {\n if ($scope.getActiveRepository()) {\n $scope.loader = true;\n RDF4JRepositoriesRestService.getGraphs($scope.getActiveRepository()).success(function (data) {\n data.results.bindings.unshift({\n contextID: {\n type: 'default',\n value: 'The default graph'\n }\n });\n $scope.graphsByValue = {};\n Object.keys(data.results.bindings).forEach(function (key) {\n const binding = data.results.bindings[key];\n if (binding.contextID.type === 'bnode') {\n binding.contextID.value = '_:' + binding.contextID.value;\n } else if (binding.contextID.type === 'default') {\n binding.contextID.uri = encodeURIComponent('http://www.openrdf.org/schema/sesame#nil');\n binding.contextID.clearUri = 'DEFAULT';\n binding.contextID.exportUri = 'null';\n binding.contextID.longName = 'default graph';\n } else {\n binding.contextID.uri = encodeURIComponent(binding.contextID.value);\n binding.contextID.clearUri = 'GRAPH <' + binding.contextID.value + '>';\n binding.contextID.exportUri = encodeURIComponent('<' + binding.contextID.value + '>');\n binding.contextID.longName = 'named graph ' + binding.contextID.value;\n }\n $scope.graphsByValue[binding.contextID.value] = binding.contextID;\n });\n $scope.graphs = data.results.bindings;\n $scope.filteredGraphs = angular.copy($scope.graphs);\n $scope.displayGraphs = $scope.filteredGraphs.slice($scope.pageSize * ($scope.page - 1), $scope.pageSize * $scope.page);\n $scope.loader = false;\n $scope.selectedGraphs.exportGraphs = {};\n $scope.matchedElements = $scope.graphs;\n }).error(function (data, status) {\n const msg = getError(data, status);\n if (msg === 'There is no active location!') {\n $repositories.setRepository('');\n toastr.error(msg, 'Error');\n }\n $scope.loader = false;\n });\n } else {\n $scope.loader = false;\n }\n };\n\n $scope.onGraphSearch = function() {\n $scope.matchedElements = [];\n $scope.deselectAll();\n $scope.filterResults();\n };\n\n $scope.filterResults = function() {\n angular.forEach($scope.graphs, function (item) {\n if (item.contextID.value.indexOf($scope.exportFilter) !== -1) {\n $scope.matchedElements.push(item);\n }\n });\n };\n\n $scope.downloadExport = function (downloadUrl, format) {\n let url = downloadUrl + '&Accept=' + encodeURIComponent(format.type);\n const auth = localStorage.getItem('com.ontotext.graphdb.auth');\n if (auth) {\n url = url + '&authToken=' + encodeURIComponent(auth);\n }\n window.open(url);\n };\n\n /// <summary>Trigger the custom event for DD tooltip.</summary>\n $scope.openExportDDTooltip = function () {\n if ($scope.showExportDDTooltip) {\n $timeout(function () {\n $('#tooltipTarget').trigger('showExportDDTooltip');\n }, 0);\n $timeout(function () {\n $('#tooltipTarget').trigger('showExportDDTooltip');\n }, 3000);\n\n //Set to false so the tooltip shows only once\n $scope.showExportDDTooltip = false;\n\n }\n };\n\n /// <summary>Fill the hidden form and submit it to start download document.</summary>\n $scope.exportRepo = function (format, contextID) {\n if (format.type === 'application/rdf+xml' || format.type === 'text/plain' || format.type === 'text/turtle' || format.type === 'application/x-turtlestar' || format.type === 'text/rdf+n3') {\n ModalService.openSimpleModal({\n title: 'Warning',\n message: 'This format does not support graphs.<br>Graph information will not be available in the export.',\n warning: true\n }).result\n .then(function () {\n $scope.startDownload(format, contextID);\n });\n } else {\n $scope.startDownload(format, contextID);\n }\n };\n\n $scope.startDownload = function (format, contextID) {\n //If it's graph set the url for ?context=\n let downloadUrl;\n if (contextID) {\n downloadUrl = 'repositories/' + $scope.getActiveRepository() + '/statements?infer=false&context=' + $scope.graphsByValue[contextID.value].exportUri;\n } else {\n downloadUrl = 'repositories/' + $scope.getActiveRepository() + '/statements?infer=false';\n }\n $scope.downloadExport(downloadUrl, format);\n };\n\n $scope.hasMultipleSelected = function () {\n if (_.isEmpty($scope.selectedGraphs.exportGraphs)) {\n return !_.isEmpty($scope.selectedGraphs.exportGraphs);\n } else {\n for (const index in $scope.selectedGraphs.exportGraphs) {\n if ($scope.selectedGraphs.exportGraphs[index] === true) {\n return true;\n }\n }\n return false;\n }\n };\n\n $scope.exportSelectedGraphs = function (format) {\n let contextStr = '';\n for (const index in $scope.selectedGraphs.exportGraphs) {\n if ($scope.selectedGraphs.exportGraphs[index]) {\n contextStr += 'context=' + $scope.graphsByValue[index].exportUri + '&';\n }\n }\n\n if (contextStr) {\n const startDownload = function () {\n contextStr = contextStr.substring(0, contextStr.length - 1);\n const downloadUrl = 'repositories/' + $scope.getActiveRepository() + '/statements?infer=false&' + contextStr;\n $scope.downloadExport(downloadUrl, format);\n };\n\n if (format.type === 'application/rdf+xml' || format.type === 'text/plain' || format.type === 'text/turtle' || format.type === 'application/x-turtlestar' || format.type === 'text/rdf+n3') {\n ModalService.openSimpleModal({\n title: 'Warning',\n message: 'This format does not support graphs.<br>Graph information will not be available in the export.',\n warning: true\n }).result\n .then(function () {\n startDownload();\n });\n } else {\n startDownload();\n }\n } else {\n ModalService.openSimpleModal({\n title: 'Multiple graph export',\n message: 'Check graphs you want to export first.',\n warning: true\n });\n }\n };\n\n $scope.$watch('exportFilter', function () {\n $scope.filteredGraphs = filterFilter($scope.graphs, $scope.exportFilter);\n if ($scope.getActiveRepository() && angular.element(document).find('.btn.btn-secondary.btn-sm.dropdown-toggle span').length) {\n const valueOfFilteredGraphsButton = angular.element(document).find('.btn.btn-secondary.btn-sm.dropdown-toggle span')[0].innerHTML.trim();\n let valueOfFilteredGraphs;\n if (valueOfFilteredGraphsButton === 'All') {\n valueOfFilteredGraphs = $scope.filteredGraphs.length;\n }\n if ($scope.filteredGraphs && $scope.filteredGraphs.length > $scope.pageSize && valueOfFilteredGraphsButton !== 'All') {\n valueOfFilteredGraphs = $scope.pageSize;\n }\n $scope.changePageSize(valueOfFilteredGraphs);\n $scope.changePagination();\n }\n });\n\n $scope.changePagination = function () {\n $scope.selectedAll = false;\n if (angular.isDefined($scope.filteredGraphs)) {\n $scope.displayGraphs = $scope.filteredGraphs.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 if (size) {\n $scope.pageSize = size;\n $scope.changePagination();\n }\n if ($scope.filteredGraphs && $scope.exportFilter !== '') {\n $scope.displayGraphs = $scope.filteredGraphs;\n }\n };\n\n $scope.checkAll = function () {\n $scope.selectedAll = $scope.selectedAll || false;\n\n angular.forEach($scope.displayGraphs, function (item) {\n if (item.contextID.uri) {\n $scope.selectedGraphs.exportGraphs[item.contextID.value] = $scope.selectedAll;\n }\n });\n };\n\n $scope.deselectAll = function () {\n $scope.selectedAll = false;\n angular.forEach($scope.displayGraphs, function (item) {\n if (item.contextID.uri) {\n $scope.selectedGraphs.exportGraphs[item.contextID.value] = false;\n }\n });\n };\n\n $scope.dropRepository = function () {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n $scope.deleting['*'] = true;\n\n ModalService.openSimpleModal({\n title: 'Confirm clear repository',\n message: 'Are you sure you want to clear repository ' + $repositories.getActiveRepository() + '?',\n warning: true\n }).result\n .then(function () {\n $timeout(function () {\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), 'update=CLEAR ALL')\n .then(function () {\n $scope.deleting['*'] = false;\n toastr.success('Cleared repository ' + $repositories.getActiveRepository());\n $scope.getGraphs();\n }, function (err) {\n $scope.deleting['*'] = false;\n if (typeof err.data == \"string\" && err.data.indexOf(\"Clearing all statements in the \" +\n \"repository is incompatible with collecting history\") > -1) {\n toastr.error(err.data);\n } else {\n toastr.error('Failed to clear repository ' + $repositories.getActiveRepository(), err);\n }\n });\n }, 100);\n });\n };\n\n function dropGraph(ctx) {\n const longName = ctx.contextID.longName;\n $scope.deleting[ctx] = true;\n ModalService.openSimpleModal({\n title: 'Confirm clear graph',\n message: 'Are you sure you want to clear the ' + longName + '?',\n warning: true\n }).result\n .then(function () {\n $timeout(function () {\n const data = `update=CLEAR ${ctx.contextID.clearUri}`;\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), data)\n .then(function () {\n $scope.deleting[ctx] = false;\n toastr.success('Cleared the ' + longName);\n $scope.getGraphs();\n $scope.exportFilter = '';\n $scope.filteredGraphs.length = 0;\n $scope.updateResults();\n $scope.changePageSize($scope.pageSize);\n }, function (err) {\n $scope.deleting[ctx] = false;\n toastr.error('Failed to clear the ' + longName, getError(err, err.status));\n });\n }, 100);\n }, function () {\n $scope.deleting[ctx] = false;\n });\n }\n\n function dropSelectedGraphs(ctx) {\n const selectedGraphsForDelete = [];\n angular.forEach($scope.selectedGraphs.exportGraphs, function (value, key) {\n if (value) {\n selectedGraphsForDelete.push(key);\n }\n });\n\n if (selectedGraphsForDelete.length > 0) {\n $scope.deleting[ctx] = true;\n ModalService.openSimpleModal({\n title: 'Confirm clear graphs',\n message: 'Are you sure you want to clear the selected graphs?',\n warning: true\n }).result.then(function () {\n $timeout(function () {\n let counterOfClearedGraphs = 0;\n angular.forEach(selectedGraphsForDelete, function (contextID) {\n const data = `update=CLEAR ${$scope.graphsByValue[contextID].clearUri}`;\n RDF4JRepositoriesRestService.addStatements($repositories.getActiveRepository(), data)\n .then(function () {\n $scope.loader = true;\n $scope.selectedGraphs.exportGraphs[contextID] = false;\n delete $scope.selectedGraphs.exportGraphs[contextID];\n counterOfClearedGraphs++;\n if (selectedGraphsForDelete.length === counterOfClearedGraphs) {\n $scope.selectedAll = false;\n $scope.exportFilter = '';\n $scope.filteredGraphs.length = 0;\n $scope.getGraphs();\n $scope.updateResults();\n $scope.changePageSize($scope.pageSize);\n toastr.success('Cleared the selected graphs');\n $scope.loader = false;\n }\n }, function (err) {\n const longName = $scope.graphsByValue[contextID].longName;\n toastr.error('Failed to clear the ' + longName, getError(err, err.status));\n $scope.selectedAll = false;\n });\n });\n }, 100);\n }, function () {\n $scope.deleting[ctx] = false;\n });\n }\n }\n\n $scope.dropContext = function (ctx) {\n if (!$scope.canWriteActiveRepo()) {\n return;\n }\n if (angular.isDefined(ctx)) {\n dropGraph(ctx);\n } else {\n dropSelectedGraphs(ctx);\n }\n };\n }]);\n","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/export/controllers';\nimport 'angular/core/directives/paginations';\nimport 'angular/core/services/repositories.service';\nimport 'lib/FileSaver-patch';\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'ngRoute',\n 'ngCookies',\n 'graphdb.framework.impex.export.controllers',\n 'graphdb.framework.core.directives.paginations',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives'\n];\n\nconst exportApp = angular.module('graphdb.framework.impex.export', modules);\n\nexportApp.config(['$tooltipProvider', function ($tooltipProvider) {\n //Add custom event for Export repository DD tooltip\n $tooltipProvider.setTriggers({'showExportDDTooltip': 'showExportDDTooltip'});\n}]);\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[20,43,49,90,96,104],{117:function(e,t,r){"use strict";r.r(t);r(2),r(7),r(13),r(76),r(78),r(79),r(35),r(33),r(34);angular.module("graphdb.framework.similarity",["graphdb.framework.core.controllers","graphdb.framework.core.directives","graphdb.framework.rest.similarity.service","graphdb.framework.similarity.controllers.create","graphdb.framework.similarity.controllers.list","graphdb.framework.core.directives.queryeditor.controllers","graphdb.framework.core.directives.queryeditor.sparqltab","graphdb.framework.core.directives.queryeditor.queryeditor"])},31:function(e,t){function r(e){return{showToastMessageWithDelay:function(t){return new Promise(r=>{e.success(t),setTimeout(r,200)})}}}angular.module("graphdb.framework.utils.notifications",[]).factory("Notifications",r),r.$inject=["toastr"]},35:function(e,t,r){"use strict";r.r(t);r(4);function n(e,t,r,n){return{restrict:"AE",template:'<a class="nav-link" role="tab" data-toggle="tab" blur="submit" editable-text="tab.name" e-form="editCurrentlySelectedOnly" ng-click="selectThisTab($event)" ng-dblclick="editCurrentTab()" ><span ng-class="{\'text-muted\': !tab.name}">{{ tab.name || \'Unnamed\'}}</span><button type="button" ng-click="deleteTab($event)" class="btn btn-link btn-sm secondary delete-sparql-tab-btn" title="Delete tab"><i class="icon-close"></i></button></a>',replace:!0,controller:["$scope","$element","$rootScope","ModalService","toastr",function(e,n,i,a,o){function s(e){return $(e).attr("data-id")}function c(e){$('a[data-id = "'+e+'"]').tab("show")}e.state={},$(n).on("shown.bs.tab",(function(e){i.$broadcast("tabAction",e)})),e.deleteTab=function(u){if(u.preventDefault(),u.stopPropagation(),e.tabs.length<2)return void o.warning("Last tab must remain open.");u.shiftKey?(e.state.selectedTabId=s(n),a.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete all query tabs except selected tab?",warning:!0}).result.then((function(){var n;n=e.state.selectedTabId,e.tabs=e.tabs.filter((function(e){if(e.id===n)return e})),c(e.tabs[0].id),t.set(r.TABS_STATE,e.tabs),i.$broadcast("deleteAllexeptSelected",e.tabs)}))):(e.state.idForDelete=s(n),a.openSimpleModal({title:"Confirm",message:"Are you sure you want to close this query tab?",warning:!0}).result.then((function(){!function(t){if(angular.isUndefined(t))throw"Delete by id was called with undefined id";const r=function(t){for(let r=0;r<e.tabs.length;r++){if(e.tabs[r].id===t)return r}}(t);e.tabs.splice(r,1),t===e.currentQuery.id&&e.tabs.length>0&&c(r>0?e.tabs[r-1].id:e.tabs[0].id)}(e.state.idForDelete)})));angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.editCurrentTab=function(){if(s(n)!==e.currentQuery.id)return;e.editCurrentlySelectedOnly.$show();const t=$(".editable-buttons");t.children(".btn.btn-primary").addClass("btn-sm"),t.children(".btn.btn-default").addClass("btn-sm"),$(".editable-controls .editable-input").addClass("form-control-sm").on("change",(function(t){e.currentQuery.name=t.currentTarget.$$currentValue})),$(".editable-buttons .glyphicon.glyphicon-ok").removeClass("glyphicon glyphicon-ok").addClass("fa fa-check"),$(".editable-buttons .glyphicon.glyphicon-remove").removeClass("glyphicon glyphicon-remove").addClass("fa fa-close")},e.selectThisTab=function(t){t.preventDefault(),t.stopPropagation(),e.isTabChangeOk(!1)&&$(n).tab("show")}}]}}angular.module("graphdb.framework.core.directives.queryeditor.sparqltab",["graphdb.framework.core","graphdb.framework.utils.localstorageadapter"]).directive("sparqlTab",n),n.$inject=["$rootScope","LocalStorageAdapter","LSKeys","ModalService"]},76:function(e,t){angular.module("graphdb.framework.rest.similarity.service",[]).factory("SimilarityRestService",n),n.$inject=["$http","$repositories"];const r="rest/similarity";function n(e){return{getIndexes:function(){return e.get(r)},getSearchQueries:function(){return e.get(`${r}/config`)},rebuildIndex:function(e){return t("PUT",e.name,e.options,e.selectQuery,e.searchQuery,e.analogicalQuery,e.stopList,e.infer,e.sameAs,e.type)},deleteIndex:function(t){return e.delete(`${r}?name=${t.name}`)},createIndex:t,getSamples:function(){return e.get(`${r}/samples`)},getQuery:function(t){return e.get("rest/similarity/query",{params:{name:t.indexName,options:t.indexOptions,stopList:t.indexStopList,selectQuery:t.query,infer:t.queryInference,sameAs:t.querySameAs,type:t.viewType,analyzer:t.indexAnalyzer}})},saveSearchQuery:function(t){return e({method:"put",url:"rest/similarity/search-query",data:t})}};function t(t,n,i,a,o,s,c,u,l,d,y){return e({method:t,url:`${r}`,noCancelOnRouteChange:!0,data:{name:n,options:i,selectQuery:a,stopList:c,infer:u,sameAs:l,type:d,analyzer:y,searchQuery:o,analogicalQuery:s}})}}},78:function(e,t,r){"use strict";r.r(t);var n=r(208),i=r.n(n);function a(e,t,r,n,a,o,s,c,u,l){const d="http://www.ontotext.com/graphdb/similarity/",y="http://www.ontotext.com/graphdb/similarity/psi/",p=y+"any";e.pluginName="similarity",e.pluginIsActive=!0,e.setPluginIsActive=function(t){e.pluginIsActive=t};const g=function(e){return'"'+e+'"'},f=function(e){return void 0===e||e.startsWith("<<")&&e.endsWith(">>")?e:"<"+e+">"};function m(){return!e.getActiveRepository()||e.isActiveRepoFedXType()||e.isActiveRepoOntopType()}let h;function w(){e.getAutocompletePromise=c.checkAutocompleteStatus()}e.info=u,e.getActiveRepository=function(){return n.getActiveRepository()},m()||s.getSearchQueries().success((function(t){e.searchQueries=t})).error((function(e){const t=getError(e);r.error(t,"Could not get search queries")})),e.encodeURIComponent=function(e){return encodeURIComponent(e)},e.getSimilarityIndexes=function(){!m()&&e.pluginIsActive&&s.getIndexes().success((function(t){e.similarityIndexes=t})).error((function(e){const t=getError(e);r.error(t,"Could not get indexes")}))},e.pullList=function(){e.getSimilarityIndexes();const r=t((function(){e.$broadcast("checkIsActive"),"false"!==$("#indexes-table").attr("aria-expanded")&&e.getSimilarityIndexes()}),5e3);e.$on("$destroy",(function(){t.cancel(r)}))},e.getActiveRepository()&&e.pullList(),e.$watch((function(){return n.getActiveRepository()}),(function(){!e.getActiveRepository()||e.isActiveRepoOntopType()||e.isActiveRepoFedXType()||(e.getNamespacesPromise=l.getNamespaces(e.getActiveRepository()).success((function(t){w(),e.usedPrefixes={},t.results.bindings.forEach((function(t){e.usedPrefixes[t.prefix.value]=t.namespace.value})),h=i()(document.getElementById("yasr"),{getUsedPrefixes:e.usedPrefixes,persistency:!1,hideHeader:!0})})).error((function(e){r.error(getError(e),"Cannot get namespaces for repository. View will not work properly;")})))})),e.$on("autocompleteStatus",(function(){w()})),e.loading=!1,e.selected=void 0,e.searchType="searchTerm",e.resultType="termResult",e.$watch("searchType",(function(){e.empty=!0})),e.goToSimilarityIndex=function(t){"BUILT"!==t.status&&"OUTDATED"!==t.status&&"REBUILDING"!==t.status||(e.empty=!0,e.selected!==t&&(e.lastSearch=void 0,e.selected=t),"text"===t.type?e.searchType="searchTerm":"predication"===t.type&&(e.searchType="searchEntity"),"text"!==t.type&&"predication"!==t.type||$("#indexes-table").collapse("hide"))};const x=function(t){const r=angular.element(document.getElementById("yasr-inner")),n=angular.element(document.getElementById("results-loader"));t?(e.loading=!0,r.addClass("opacity-hide"),n.removeClass("opacity-hide")):(e.loading=!1,r.removeClass("opacity-hide"),n.addClass("opacity-hide"))};e.performSearch=function(t,i,a,o,s){x(!0);let c=i;e.lastSearch={},e.lastSearch.type=a,"searchEntityPredicate"===a&&(c=e.psiSubject,e.lastSearch.predicate=i),c="searchTerm"===a?g(c):f(c),e.lastSearch.termOrSubject=c;let u;u="searchAnalogical"===a?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const l={query:u,$index:f("http://www.ontotext.com/graphdb/similarity/instance/"+t),$query:c,$searchType:f(("text"===e.selected.type?d:y)+("searchEntityPredicate"===a?"searchEntity":a)),$resultType:f("text"===e.selected.type?d+o:y+"entityResult"),$parameters:g(s)};"searchEntityPredicate"===a&&(l.$psiPredicate=e.lastSearch.predicate?f(e.lastSearch.predicate):f(p)),"searchAnalogical"===a&&(e.searchSubject=i,l.$givenSubject=f(e.analogicalSubject),l.$givenObject=f(e.analogicalObject),l.$searchSubject=f(i)),$.ajax({method:"GET",url:"repositories/"+n.getActiveRepository(),data:l,headers:{Accept:"application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8"}}).done((function(e,t,r){x(!1),h.setResponse(e,t,r)})).fail((function(e){r.error(getError(e),"Could not get resource!"),x(!1)}))},e.viewSearchQuery=function(){let t;t="searchAnalogical"===e.lastSearch.type?e.selected.analogicalQuery?e.selected.analogicalQuery:e.searchQueries.analogical:e.selected.searchQuery?e.selected.searchQuery:e.searchQueries[e.selected.type];const r=t.replace("?index","inst:"+e.selected.name).replace("?query",e.lastSearch.termOrSubject).replace("?searchType",("text"===e.selected.type?":":"psi:")+("searchEntityPredicate"===e.lastSearch.type?"searchEntity":e.lastSearch.type)).replace("?resultType","text"===e.selected.type?":"+e.resultType:"psi:entityResult").replace("?parameters",g(e.searchParameters?e.searchParameters:"")).replace("?psiPredicate",e.lastSearch.predicate?f(e.lastSearch.predicate):f(p)).replace("?givenSubject",f(e.analogicalSubject)).replace("?givenObject",f(e.analogicalObject)).replace("?searchSubject",f(e.searchSubject));o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return r}}})},e.deleteIndex=function(t){a.openSimpleModal({title:"Confirm",message:"Are you sure you want to delete the index '"+t.name+"'?",warning:!0}).result.then((function(){s.deleteIndex(t).then((function(){e.getSimilarityIndexes()}),(function(e){r.error(getError(e))}))}))},e.viewCreateQuery=function(e){s.getQuery({indexName:e.name,indexOptions:e.options,query:e.selectQuery,indexStopList:e.stopList,queryInference:e.infer,querySameAs:e.sameAs,viewType:e.type,indexAnalyzer:e.analyzer}).success((function(e){o.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})}))},e.rebuildIndex=function(t){t.searchQuery||(t.searchQuery=t.type?e.searchQueries[t.type]:e.searchQueries.text),a.openSimpleModal({title:"Confirm",message:"Are you sure you want to rebuild the whole index '"+t.name+"'?<br>You will still be able to use the latest successful build!",warning:!0}).result.then((function(){t.status="REBUILDING",s.rebuildIndex(t).then((function(e){}),(function(e){r.error(getError(e))}))}))},e.copyToClipboardResult=function(e){a.openCopyToClipboardModal(e)},e.trimIRI=function(e){return _.trim(e,"<>")}}angular.module("graphdb.framework.similarity.controllers.list",[]).controller("SimilarityCtrl",a),a.$inject=["$scope","$interval","toastr","$repositories","ModalService","$modal","SimilarityRestService","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService"]},79:function(e,t,r){"use strict";r.r(t);r(31),r(4);function n(e,t,r,n,i,a,o,s,c,u,l,d){const y=o.search().type;void 0===y||y.startsWith("text")?e.viewType="text":e.viewType=y;e.newIndex={},e.info=s,e.page=1;const p={id:"1",name:"",query:"",inference:!0,sameAs:!0};const g=function(){var r;if(e.editSearchQuery=o.search().editSearchQuery,e.page=e.editSearchQuery?2:1,e.newIndex.name=(r=o.search().name)?1!==e.page?r:"Copy_of_"+r:"",e.newIndex.options=o.search().options?o.search().options:"text"===e.viewType?"-termweight idf":"",e.searchQueries&&(e.newIndex.searchQuery=o.search().searchQuery?o.search().searchQuery:e.searchQueries[e.viewType],"predication"===e.viewType&&(e.newIndex.analogicalQuery=o.search().analogicalQuery?o.search().analogicalQuery:e.searchQueries.analogical)),e.editSearchQuery)e.currentQuery.query=e.newIndex.searchQuery,e.notoolbarInference=!0,e.notoolbarSameAs=!0,window.editor&&e.setQuery(e.newIndex.searchQuery);else{if("text"===e.viewType&&e.allSamples){e.samples=e.allSamples.text,e.newIndex.stopList=o.search().stopList?o.search().stopList:void 0,e.newIndex.analyzer=o.search().analyzer?o.search().analyzer:"org.apache.lucene.analysis.en.EnglishAnalyzer";const t=w("-literal_index");void 0!==t&&(e.newIndex.isLiteralIndex=t),window.editor&&e.setQuery(e.samples.literals)}"predication"===e.viewType&&e.allSamples&&(i.getIndexes().success((function(t){if(e.literalIndexes=["no-index"].concat(t.filter((function(e){return"textLiteral"===e.type&&("BUILT"===e.status||"OUTDATED"===e.status)})).map((function(e){return e.name}))),void 0===e.newIndex.inputIndex){const t=w("-input_index");if(void 0!==t)for(let r=0;r<e.literalIndexes.length;r++)t===e.literalIndexes[r]&&(e.newIndex.inputIndex=e.literalIndexes[r])}void 0===e.newIndex.inputIndex&&(e.newIndex.inputIndex=e.literalIndexes[0])})).error((function(e){const r=getError(e);t.error(r,"Could not get indexes")})),e.samples=e.allSamples.predication,window.editor&&e.setQuery(e.samples.predication))}},f=new RegExp("^[a-zA-Z0-9-_]+$"),m=function(){return e.invalidIndexName=!1,e.saveQueries(),e.newIndex.name?f.test(e.newIndex.name)?e.newIndex.query?e.newIndex.searchQuery?"predication"!==e.viewType||e.newIndex.analogicalQuery?"SELECT"===window.editor.getQueryType()||void t.error("Similarity index requires SELECT queries."):(t.error("Analogical query cannot be empty."),!1):(t.error("Search query cannot be empty."),!1):(t.error("Select query cannot be empty."),!1):(e.invalidIndexName='Index name can contain only letters (a-z, A-Z), numbers (0-9), "-" and "_"',!1):(e.invalidIndexName="Index name cannot be empty",!1)},h=function(t,r){e.newIndex.options=e.newIndex.options+(""===e.newIndex.options?"":" ")+t+" "+r};function w(t){const r=e.newIndex.options.split(" ");for(let n=0;n<r.length;n++)if(r[n]===t&&n+1<r.length){const t=r[n+1];return delete r[n],delete r[n+1],e.newIndex.options=r.join(" "),t}}function x(e){}function b(t,r,n){const i=angular.element(document.getElementById("yasr-inner"));e.queryIsRunning=t,t?(e.queryStartTime=Date.now(),e.countTimeouted=!1,e.progressMessage=r,e.extraMessage=n,i.addClass("hide")):(e.progressMessage="",e.extraMessage="",i.removeClass("hide")),null===e.$$phase&&e.$apply()}function I(t){function r(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0}const i=t;if(e.orientationViewMode){if("yasr"===e.viewMode){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px"}else e.noPadding={},document.querySelector(".CodeMirror-wrap").style.height="";document.getElementById("yasr").style.minHeight=""}else if(e.noPadding={paddingRight:15,paddingLeft:0},window.editor&&document.querySelector(".CodeMirror-wrap")){let e=r()-document.querySelector(".CodeMirror-wrap").getBoundingClientRect().top;e-=40,document.querySelector(".CodeMirror-wrap").style.height=e+"px",document.getElementById("yasr").style.minHeight=e+"px"}else{let t;t=n(i?function(){e.fixSizesOnHorizontalViewModeSwitch(i)}:e.fixSizesOnHorizontalViewModeSwitch,100),e.$on("$destroy",(function(){n.cancel(t)}))}window.yasr&&window.yasr.container&&n((function(){window.yasr.container.resize()}),100)}function S(){I(!0)}function v(e){n((function(){$('a[data-id = "'+e+'"]').tab("show")}),0)}function Q(r,n){e.executedQueryTab=e.currentQuery,"SELECT"===window.editor.getQueryType()?n&&"SELECT"!==window.editor.getQueryType()?t.warning("Explain only works with SELECT queries."):"update"!==window.editor.getQueryMode()?(e.explainRequested=n,e.queryIsRunning||(r?e.currentTabConfig.resultsCount=0:e.resetCurrentTabConfig(),e.viewMode="editor",e.orientationViewMode&&e.fixSizesOnHorizontalViewModeSwitch(),b(!0,"Evaluating query"),window.editor.query())):t.warning("Cannot execute updates from this editor."):t.error("Similarity indexes work only with SELECT queries.")}function T(){b(!0,"Refreshing namespaces","Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first."),u.getRepositoryNamespaces().success((function(t){const r={};t.results.bindings.forEach((function(e){r[e.prefix.value]=e.namespace.value})),e.namespaces=r})).error((function(t){e.repositoryError=getError(t)})).finally((function(){b(!1)}))}function C(){a.addKnownPrefixes(JSON.stringify(window.editor.getValue())).success((function(e){angular.isDefined(window.editor)&&angular.isDefined(e)&&e!==window.editor.getValue()&&window.editor.setValue(e)})).error((function(e){const r=getError(e);return t.error(r,"Error! Could not add known prefixes"),!0}))}function q(t){let r=void 0;return angular.forEach(e.tabsData,(function(e){if(e.name===t.name&&e.query===t.body)return r=e.id,e})),r}function E(){e.tabsData=[e.currentQuery];const t=e.currentQuery;null===e.currentQuery.query||""===e.currentQuery.query?window.editor.setValue(" "):window.editor.setValue(e.currentQuery.query||" "),n((function(){e.currentTabConfig={},e.currentTabConfig.queryType=t.queryType,e.currentTabConfig.resultsCount=t.resultsCount,e.currentTabConfig.offset=t.offset,e.currentTabConfig.allResultsCount=t.allResultsCount,e.currentTabConfig.page=t.page,e.currentTabConfig.pageSize=t.pageSize,e.currentTabConfig.timeFinished=t.timeFinished,e.currentTabConfig.timeTook=t.timeTook,e.currentTabConfig.sizeDelta=t.sizeDelta,e.$apply()}),0),$("#yasr").css("padding","0")}function A(e){return $(e).attr("data-id")}i.getSearchQueries().success((function(t){e.searchQueries=t,i.getSamples().success((function(t){p.query=o.search().selectQuery?o.search().selectQuery:t.text.literals,p.inference=!("false"===o.search().infer),p.sameAs=!("false"===o.search().sameAs),e.tabsData=e.tabs=[p],e.currentQuery=angular.copy(p),e.allSamples=t,g()}))})).error((function(e){const r=getError(e);t.error(r,"Could not get search queries")})),e.$watch("viewType",(function(){g()})),e.helpHidden=1===l.get(d.HIDE_SIMILARITY_HELP),e.toggleHelp=function(t){void 0===t&&(t=l.get(d.HIDE_SIMILARITY_HELP)),1!==t?(l.set(d.HIDE_SIMILARITY_HELP,1),e.helpHidden=!0):(l.set(d.HIDE_SIMILARITY_HELP,0),e.helpHidden=!1)},e.viewQuery=function(){m()&&i.getQuery({indexName:e.newIndex.name,indexOptions:e.newIndex.options,query:e.currentQuery.query,indexStopList:e.newIndex.stopList,queryInference:e.currentQuery.inference,querySameAs:e.currentQuery.sameAs,viewType:e.viewType,indexAnalyzer:e.newIndex.analyzer}).success((function(e){e&&r.open({templateUrl:"pages/viewQuery.html",controller:"ViewQueryCtrl",resolve:{query:function(){return e}}})}))},e.$watch("newIndex.name",(function(){e.isInvalidIndexName=!1,e.isEmptyIndexName=!1})),e.saveQueries=function(){const t=window.editor.getValue().trim();1===e.page?e.newIndex.query=t:2===e.page?e.newIndex.searchQuery=t:3===e.page&&(e.newIndex.analogicalQuery=t)},e.goToPage=function(t){1!==t&&"yasr"!==e.viewMode&&(e.showEditor(),n((function(){2===t&&(e.currentQuery.query=e.newIndex.searchQuery),3===t&&(e.currentQuery.query=e.newIndex.analogicalQuery),window.editor.setValue(e.currentQuery.query||" ")}))),e.saveQueries(),1===t?e.currentQuery.query=e.newIndex.query:2===t?e.currentQuery.query=e.newIndex.searchQuery:3===t&&(e.currentQuery.query=e.newIndex.analogicalQuery),E(),e.notoolbar=1!==t,e.page=t},e.createIndex=function(){m()&&i.getIndexes().success((function(r){if(r.forEach((function(t){t.name===e.newIndex.name&&(e.invalidIndexName="Index with this name already exists.")})),!e.invalidIndexName){let r=e.viewType;if(void 0!==e.literalIndexes){const t=e.newIndex.inputIndex;t!==e.literalIndexes[0]&&h("-input_index",t)}"true"===e.newIndex.isLiteralIndex&&(h("-literal_index","true"),r="textLiteral"),i.createIndex("POST",e.newIndex.name,e.newIndex.options,e.newIndex.query,e.newIndex.searchQuery,e.newIndex.analogicalQuery,e.newIndex.stopList,e.currentQuery.inference,e.currentQuery.sameAs,r,e.newIndex.analyzer).error((function(e){t.error(getError(e),"Could not create index")})),o.url("similarity")}})).error((function(e){const r=getError(e);t.error(r,"Could not get indexes")}))},e.setQuery=function(e){window.editor.setValue(e||" ")},e.showEditor=function(){window.editor.xhr&&window.editor.xhr.abort(),e.viewMode="yasr"},e.showPreview=function(){e.currentQuery.outputType="table",e.runQuery()},e.resetCurrentTabConfig=function(){e.currentTabConfig={pageSize:100,page:1,allResultsCount:0,resultsCount:0}},e.queryExists=!1,e.resetCurrentTabConfig(),e.tabsData=e.tabs=[p],e.saveTab=function(t){const r=function(t){for(let r=0;r<e.tabsData.length;r++){if(e.tabsData[r].id===t)return r}}(t);if(void 0===r)return{};const n=e.tabsData[r];return e.saveQueryToLocal(n),n},e.loadTab=E,e.addNewTab=function(e,t,r){},e.runQuery=Q,e.getNamespaces=T,e.changePagination=function(){Q(!0,e.explainRequested)},e.toggleSampleQueries=function(){},e.addKnownPrefixes=C,e.getExistingTabId=q,e.querySelected=function(t){const r=q(t);e.toggleSampleQueries(),angular.isDefined(r)?v(r):e.addNewTab(null,t.name,t.body)},e.saveQueryToLocal=x,e.setLoader=b,e.getLoaderMessage=function(){const t=(Date.now()-e.queryStartTime)/1e3,r=e.getHumanReadableSeconds(t);let n="";n=e.progressMessage?e.progressMessage+"... "+r:"Running operation..."+r;e.extraMessage&&t>10&&(n+="\n"+e.extraMessage);return n},e.fixSizesOnHorizontalViewModeSwitch=I,e.changeViewMode=function(t){e.viewMode="none",e.orientationViewMode=!e.orientationViewMode,I(),$(".dataTables_filter").remove(),$(".resultsTable").remove(),n((function(){E(),v(t)}),100)},e.showHideEditor=S,e.focusQueryEditor=function(){angular.element(document).find(".editable-input").is(":focus")||angular.element(document).find(".CodeMirror textarea:first-child").focus()},e.orientationViewMode=!0,e.getActiveRepository(),e.orientationViewMode||S(),e.getActiveRepository()&&T(),e.$on("$destroy",(function(){window.editor=null,window.yasr=null})),$("textarea").on("paste",(function(){n((function(){C()}),0)})),e.$watchCollection("[currentQuery.inference, currentQuery.sameAs]",(function(){e.currentQuery})),e.$on("tabAction",(function(t,r){r.relatedTarget&&e.saveTab(A(r.relatedTarget)),e.loadTab(A(r.target))})),e.$on("deleteAllexeptSelected",(function(t,r){e.tabsData=r,e.tabs=r})),e.currentQuery=angular.copy(p),e.showSampleQueries=!1,e.savedQuery={},e.sampleQueries={},e.getResultsDescription=function(){},e.getUpdateDescription=function(){},e.getStaleWarningMessage=function(){},e.saveSearchQuery=function(){if("SELECT"!==window.editor.getQueryType())return void t.error("Similarity index requires SELECT queries.");let r={name:e.newIndex.name,changedQuery:e.currentQuery.query,isSearchQuery:2===e.page};return i.saveSearchQuery(JSON.stringify(r)).then((async function(){await c.showToastMessageWithDelay(2===e.page?"Changed search query":"Changed analogical query"),o.url("similarity")}),(function(e){t.error(getError(e),"Could not change query!")}))},e.getCloseBtnMsg=function(){return"Closes "+(e.editSearchQuery?"query edition":"index creation")+" without saving the changes."}}angular.module("graphdb.framework.similarity.controllers.create",["graphdb.framework.utils.notifications","graphdb.framework.utils.localstorageadapter"]).controller("CreateSimilarityIdxCtrl",n),n.$inject=["$scope","toastr","$modal","$timeout","SimilarityRestService","SparqlRestService","$location","productInfo","Notifications","RDF4JRepositoriesRestService","LocalStorageAdapter","LSKeys"]}}]);
|
|
2
|
-
//# sourceMappingURL=20.a35d80fb5e80ae3874ce.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/similarity/app.js","webpack:///./src/js/angular/utils/notifications.js","webpack:///./src/js/angular/core/directives/queryeditor/sparql-tab.directive.js","webpack:///./src/js/angular/rest/similarity.rest.service.js","webpack:///./src/js/angular/similarity/controllers/similarity-list.controller.js","webpack:///./src/js/angular/similarity/controllers/create-index.controller.js"],"names":["angular","module","Notifications","toastr","showToastMessageWithDelay","message","Promise","r","success","setTimeout","factory","$inject","sparqlTabDirective","$rootScope","LocalStorageAdapter","LSKeys","ModalService","restrict","template","replace","controller","$scope","$element","getQueryID","element","$","attr","selectTab","id","tab","state","on","e","$broadcast","deleteTab","preventDefault","stopPropagation","tabs","length","warning","shiftKey","selectedTabId","openSimpleModal","title","result","then","filter","obj","set","TABS_STATE","idForDelete","isUndefined","idx","i","findTabIndexByID","splice","currentQuery","deleteTabByID","document","find","focus","editCurrentTab","editCurrentlySelectedOnly","$show","$editableButtons","children","addClass","$el","name","currentTarget","$$currentValue","removeClass","selectThisTab","isTabChangeOk","directive","SimilarityRestService","SIMILARITY_ENDPOINT","$http","getIndexes","get","getSearchQueries","rebuildIndex","index","createIndex","options","selectQuery","searchQuery","analogicalQuery","stopList","infer","sameAs","type","deleteIndex","delete","getSamples","getQuery","data","params","indexName","indexOptions","indexStopList","query","queryInference","querySameAs","viewType","analyzer","indexAnalyzer","saveSearchQuery","method","url","noCancelOnRouteChange","SimilarityCtrl","$interval","$repositories","$modal","AutocompleteRestService","productInfo","RDF4JRepositoriesRestService","PREFIX","PREFIX_PREDICATION","ANY_PREDICATE","pluginName","pluginIsActive","setPluginIsActive","isPluginActive","literalForQuery","literal","iriForQuery","iri","undefined","startsWith","endsWith","shouldSkipCall","getActiveRepository","isActiveRepoFedXType","isActiveRepoOntopType","yasr","checkAutocompleteStatus","getAutocompletePromise","info","searchQueries","error","msg","getError","encodeURIComponent","param","getSimilarityIndexes","similarityIndexes","pullList","timer","$on","cancel","$watch","getNamespacesPromise","getNamespaces","usedPrefixes","results","bindings","forEach","prefix","value","namespace","getElementById","getUsedPrefixes","persistency","hideHeader","loading","selected","searchType","resultType","empty","goToSimilarityIndex","status","lastSearch","collapse","toggleOntoLoader","showLoader","yasrInnerContainer","resultsLoader","performSearch","uri","parameters","termOrSubject","psiSubject","predicate","sparqlQuery","sendData","$index","$query","$searchType","$resultType","$parameters","$psiPredicate","searchSubject","$givenSubject","analogicalSubject","$givenObject","analogicalObject","$searchSubject","ajax","headers","Accept","done","textStatus","jqXhrOrErrorString","setResponse","fail","viewSearchQuery","queryTemplate","replacedQuery","searchParameters","open","templateUrl","resolve","err","viewCreateQuery","text","res","copyToClipboardResult","openCopyToClipboardModal","trimIRI","_","trim","CreateSimilarityIdxCtrl","$timeout","SparqlRestService","$location","indexType","search","newIndex","page","defaultTabConfig","inference","initForViewType","indexNameFromLocation","editSearchQuery","notoolbarInference","notoolbarSameAs","window","editor","setQuery","allSamples","samples","isLiteralIndex","getAndRemoveOption","literalIndexes","concat","map","inputIndex","desiredIdx","j","filenamePattern","RegExp","validateIndex","invalidIndexName","saveQueries","test","getQueryType","appendOption","option","key","optArr","split","join","saveQueryToLocal","currentQueryTab","setLoader","isRunning","progressMessage","extraMessage","queryIsRunning","queryStartTime","Date","now","countTimeouted","$$phase","$apply","fixSizesOnHorizontalViewModeSwitch","verticalViewParam","visibleWindowHeight","innerHeight","documentElement","clientHeight","body","verticalView","orientationViewMode","viewMode","newHeight","querySelector","getBoundingClientRect","style","height","noPadding","minHeight","paddingRight","paddingLeft","container","resize","showHideEditor","runQuery","changePage","explain","executedQueryTab","getQueryMode","explainRequested","currentTabConfig","resultsCount","resetCurrentTabConfig","getRepositoryNamespaces","namespaces","repositoryError","finally","addKnownPrefixes","JSON","stringify","getValue","isDefined","setValue","getExistingTabId","existingTabId","tabsData","item","loadTab","queryType","offset","allResultsCount","pageSize","timeFinished","timeTook","sizeDelta","css","copy","helpHidden","HIDE_SIMILARITY_HELP","toggleHelp","viewQuery","isInvalidIndexName","isEmptyIndexName","goToPage","showEditor","notoolbar","xhr","abort","showPreview","outputType","queryExists","saveTab","addNewTab","callback","tabName","savedQuery","changePagination","toggleSampleQueries","querySelected","tabId","getLoaderMessage","timeSeconds","timeHuman","getHumanReadableSeconds","changeViewMode","tabID","remove","focusQueryEditor","is","$watchCollection","tabEvent","relatedTarget","target","showSampleQueries","sampleQueries","getResultsDescription","getUpdateDescription","getStaleWarningMessage","changedQuery","isSearchQuery","async","response","getCloseBtnMsg"],"mappings":"2GAAA,2DAUAA,QAAQC,OAAO,+BAAgC,CAC3C,qCACA,oCACA,4CACA,kDACA,gDACA,4DACA,0DACA,+D,iBCZJ,SAASC,EAAcC,GACnB,MAAO,CACHC,0BASJ,SAAmCC,GAC/B,OAAO,IAAIC,QAASC,IAChBJ,EAAOK,QAAQH,GACfI,WAAWF,EAAG,SApB1BP,QACKC,OAAO,wCAAyC,IAChDS,QAAQ,gBAAiBR,GAE9BA,EAAcS,QAAU,CAAC,W,gCCJzB,YAWA,SAASC,EAAmBC,EAAYC,EAAqBC,EAAQC,GA4HjE,MAAO,CACHC,SAAU,KAEVC,SAAU,wbACVC,SAAS,EACTC,WAhIkB,CAAC,SAAU,WAAY,aAAc,eAAgB,SAAU,SAAUC,EAAQC,EAAUT,EAAYG,EAAcb,GAGvI,SAASoB,EAAWC,GAChB,OAAOC,EAAED,GAASE,KAAK,WA4B3B,SAASC,EAAUC,GACfH,EAAE,gBAAkBG,EAAK,MAAMC,IAAI,QAhCvCR,EAAOS,MAAQ,GAefL,EAAEH,GAAUS,GAAG,gBAAgB,SAAUC,GACrCnB,EAAWoB,WAAW,YAAaD,MAGvCX,EAAOa,UAgBP,SAAmBF,GAIf,GAHAA,EAAEG,iBACFH,EAAEI,kBAEEf,EAAOgB,KAAKC,OAAS,EAErB,YADAnC,EAAOoC,QAAQ,8BAIfP,EAAEQ,UACFnB,EAAOS,MAAMW,cAAgBlB,EAAWD,GAExCN,EAAa0B,gBAAgB,CACzBC,MAAO,UACPtC,QAAS,sEACTkC,SAAS,IACVK,OAAOC,MAAK,WA2DvB,IAAqCjB,IA1DGP,EAAOS,MAAMW,cA2DjDpB,EAAOgB,KAAOhB,EAAOgB,KAAKS,QAAO,SAAUC,GACvC,GAAIA,EAAInB,KAAOA,EACX,OAAOmB,KAGfpB,EAAUN,EAAOgB,KAAK,GAAGT,IACzBd,EAAoBkC,IAAIjC,EAAOkC,WAAY5B,EAAOgB,MAClDxB,EAAWoB,WAAW,yBAA0BZ,EAAOgB,WA/DnDhB,EAAOS,MAAMoB,YAAc3B,EAAWD,GAEtCN,EAAa0B,gBAAgB,CACzBC,MAAO,UACPtC,QAAS,iDACTkC,SAAS,IACVK,OAAOC,MAAK,YA6BvB,SAAuBjB,GACnB,GAAI5B,QAAQmD,YAAYvB,GACpB,KAAM,4CAEV,MAAMwB,EAxFV,SAA0BxB,GACtB,IAAK,IAAIyB,EAAI,EAAGA,EAAIhC,EAAOgB,KAAKC,OAAQe,IAAK,CAEzC,GADYhC,EAAOgB,KAAKgB,GAChBzB,KAAOA,EACX,OAAOyB,GAoFHC,CAAiB1B,GAC7BP,EAAOgB,KAAKkB,OAAOH,EAAK,GAEpBxB,IAAOP,EAAOmC,aAAa5B,IACvBP,EAAOgB,KAAKC,OAAS,GAGjBX,EAFAyB,EAAM,EAEI/B,EAAOgB,KAAKe,EAAM,GAAGxB,GAGrBP,EAAOgB,KAAK,GAAGT,IA1C7B6B,CAAcpC,EAAOS,MAAMoB,iBAGnClD,QAAQwB,QAAQkC,UAAUC,KAAK,oCAAoCC,SA7CvEvC,EAAOwC,eAgDP,WACI,GAAItC,EAAWD,KAAcD,EAAOmC,aAAa5B,GAC7C,OAEJP,EAAOyC,0BAA0BC,QAEjC,MAAMC,EAAmBvC,EAAE,qBAC3BuC,EAAiBC,SAAS,oBAAoBC,SAAS,UACvDF,EAAiBC,SAAS,oBAAoBC,SAAS,UACvDzC,EAAE,sCAAsCyC,SAAS,mBAAmBnC,GAAG,UAAU,SAAUoC,GACvF9C,EAAOmC,aAAaY,KAAOD,EAAIE,cAAcC,kBAIjD7C,EAAE,6CACG8C,YAAY,0BACZL,SAAS,eACdzC,EAAE,iDACG8C,YAAY,8BACZL,SAAS,gBAlElB7C,EAAOmD,cAEP,SAAuBxC,GACnBA,EAAEG,iBACFH,EAAEI,kBACEf,EAAOoD,eAAc,IACrBhD,EAAEH,GAAUO,IAAI,YAtChC7B,QACKC,OAAO,0DAA2D,CAC/D,yBACA,gDAEHyE,UAAU,YAAa9D,GAE5BA,EAAmBD,QAAU,CAAC,aAAc,sBAAuB,SAAU,iB,iBCT7EX,QACKC,OAAO,4CAA6C,IACpDS,QAAQ,wBAAyBiE,GAEtCA,EAAsBhE,QAAU,CAAC,QAAS,iBAE1C,MAAMiE,EAAsB,kBAE5B,SAASD,EAAsBE,GAE3B,MAAO,CACHC,WAUJ,WACI,OAAOD,EAAME,IAAIH,IAVjBI,iBAiBJ,WACI,OAAOH,EAAME,IAAI,GAAGH,aAjBpBK,aAyCJ,SAAsBC,GAClB,OAAOC,EAAY,MAAOD,EAAMd,KAAMc,EAAME,QAASF,EAAMG,YAAaH,EAAMI,YAAaJ,EAAMK,gBAAiBL,EAAMM,SAAUN,EAAMO,MAAOP,EAAMQ,OAAQR,EAAMS,OAzCnKC,YA4CJ,SAAqBV,GACjB,OAAOL,EAAMgB,OAAO,GAAGjB,UAA4BM,EAAMd,SA5CzDe,cACAW,WASJ,WACI,OAAOjB,EAAME,IAAI,GAAGH,cATpBmB,SA6CJ,SAAkBC,GACd,OAAOnB,EAAME,IAAI,wBACb,CACIkB,OAAQ,CACJ7B,KAAM4B,EAAKE,UACXd,QAASY,EAAKG,aACdX,SAAUQ,EAAKI,cACff,YAAaW,EAAKK,MAClBZ,MAAOO,EAAKM,eACZZ,OAAQM,EAAKO,YACbZ,KAAMK,EAAKQ,SACXC,SAAUT,EAAKU,kBAvD3BC,gBA4DJ,SAAyBX,GACrB,OAAOnB,EAAM,CACT+B,OAAQ,MACRC,IAAK,+BACLb,WAjDR,SAASb,EAAYyB,EAAQxC,EAAMgB,EAASC,EAAaC,EAAaC,EAAiBC,EAAUC,EAAOC,EAAQC,EAAMc,GAClH,OAAO5B,EAAM,CACL+B,SACAC,IAAK,GAAGjC,IACRkC,uBAAuB,EACvBd,KAAM,CACF5B,OACAgB,UACAC,cACAG,WACAC,QACAC,SACAC,OACAc,WACAnB,cACAC,wB,gCChDpB,6BAQA,SAASwB,EAAe1F,EAAQ2F,EAAW7G,EAAQ8G,EAAejG,EAAckG,EAAQvC,EAAuBwC,EAAyBC,EAAaC,GAEjJ,MAAMC,EAAS,8CACTC,EAAqB,kDAErBC,EAAgBD,EAAqB,MAC3ClG,EAAOoG,WAAa,aACpBpG,EAAOqG,gBAAiB,EAExBrG,EAAOsG,kBAAoB,SAAUC,GACjCvG,EAAOqG,eAAiBE,GAG5B,MAAMC,EAAkB,SAAUC,GAC9B,MAAO,IAAMA,EAAU,KAIrBC,EAAc,SAAUC,GAE1B,YAAYC,IAARD,GAAqBA,EAAIE,WAAW,OAASF,EAAIG,SAAS,MACnDH,EAEJ,IAAMA,EAAM,KAUvB,SAASI,IACL,OAAQ/G,EAAOgH,uBACHhH,EAAOiH,wBACFjH,EAAOkH,wBAgD5B,IAAIC,EA0BJ,SAASC,IACLpH,EAAOqH,uBAAyBvB,EAAwBsB,0BArF5DpH,EAAOsH,KAAOvB,EAEd/F,EAAOgH,oBAAsB,WACzB,OAAOpB,EAAcoB,uBAUpBD,KACDzD,EAAsBK,mBAAmBxE,SAAQ,SAAUwF,GACvD3E,EAAOuH,cAAgB5C,KACxB6C,OAAM,SAAU7C,GACf,MAAM8C,EAAMC,SAAS/C,GACrB7F,EAAO0I,MAAMC,EAAK,mCAI1BzH,EAAO2H,mBAAqB,SAAUC,GAClC,OAAOD,mBAAmBC,IAI9B5H,EAAO6H,qBAAuB,YACtBd,KAAqB/G,EAAOqG,gBAGhC/C,EAAsBG,aACjBtE,SAAQ,SAAUwF,GACf3E,EAAO8H,kBAAoBnD,KAE9B6C,OAAM,SAAU7C,GACb,MAAM8C,EAAMC,SAAS/C,GACrB7F,EAAO0I,MAAMC,EAAK,6BAI9BzH,EAAO+H,SAAW,WACd/H,EAAO6H,uBACP,MAAMG,EAAQrC,GAAU,WACpB3F,EAAOY,WAAW,iBACgC,UAA9CR,EAAE,kBAAkBC,KAAK,kBACzBL,EAAO6H,yBAEZ,KACH7H,EAAOiI,IAAI,YAAY,WACnBtC,EAAUuC,OAAOF,OAIrBhI,EAAOgH,uBACPhH,EAAO+H,WAKX/H,EAAOmI,QAAO,WACV,OAAOvC,EAAcoB,yBACtB,YAEKhH,EAAOgH,uBAA0BhH,EAAOkH,yBAA4BlH,EAAOiH,yBAC3EjH,EAAOoI,qBAAuBpC,EAA6BqC,cAAcrI,EAAOgH,uBAC3E7H,SAAQ,SAAUwF,GACfyC,IACApH,EAAOsI,aAAe,GACtB3D,EAAK4D,QAAQC,SAASC,SAAQ,SAAU9H,GACpCX,EAAOsI,aAAa3H,EAAE+H,OAAOC,OAAShI,EAAEiI,UAAUD,SAEtDxB,EAAO,IAAK9E,SAASwG,eAAe,QAAS,CAEzCC,gBAAiB9I,EAAOsI,aACxBS,aAAa,EACbC,YAAY,OAEjBxB,OAAM,SAAU7C,GACf7F,EAAO0I,MAAME,SAAS/C,GAAO,6EAS7C3E,EAAOiI,IAAI,sBAAsB,WAC7Bb,OAGJpH,EAAOiJ,SAAU,EAEjBjJ,EAAOkJ,cAAWtC,EAClB5G,EAAOmJ,WAAa,aACpBnJ,EAAOoJ,WAAa,aAEpBpJ,EAAOmI,OAAO,cAAc,WACxBnI,EAAOqJ,OAAQ,KAGnBrJ,EAAOsJ,oBAAsB,SAAUzF,GAC7B,UAAYA,EAAM0F,QAAU,aAAe1F,EAAM0F,QAAU,eAAiB1F,EAAM0F,SAGxFvJ,EAAOqJ,OAAQ,EACXrJ,EAAOkJ,WAAarF,IACpB7D,EAAOwJ,gBAAa5C,EACpB5G,EAAOkJ,SAAWrF,GAEH,SAAfA,EAAMS,KACNtE,EAAOmJ,WAAa,aACE,gBAAftF,EAAMS,OACbtE,EAAOmJ,WAAa,gBAEL,SAAftF,EAAMS,MAAkC,gBAAfT,EAAMS,MAC/BlE,EAAE,kBAAkBqJ,SAAS,UAIrC,MAAMC,EAAmB,SAAUC,GAC/B,MAAMC,EAAqBjL,QAAQwB,QAAQkC,SAASwG,eAAe,eAC7DgB,EAAgBlL,QAAQwB,QAAQkC,SAASwG,eAAe,mBAE1Dc,GACA3J,EAAOiJ,SAAU,EACjBW,EAAmB/G,SAAS,gBAC5BgH,EAAc3G,YAAY,kBAE1BlD,EAAOiJ,SAAU,EACjBW,EAAmB1G,YAAY,gBAC/B2G,EAAchH,SAAS,kBAI/B7C,EAAO8J,cAAgB,SAAUjG,EAAOkG,EAAKZ,EAAYC,EAAYY,GAEjEN,GAAiB,GAGjB,IAAIO,EAAgBF,EAEpB/J,EAAOwJ,WAAa,GACpBxJ,EAAOwJ,WAAWlF,KAAO6E,EAEN,0BAAfA,IACAc,EAAgBjK,EAAOkK,WACvBlK,EAAOwJ,WAAWW,UAAYJ,GAI9BE,EADe,eAAfd,EACgB3C,EAAgByD,GAEhBvD,EAAYuD,GAGhCjK,EAAOwJ,WAAWS,cAAgBA,EAGlC,IAAIG,EAEAA,EADe,qBAAfjB,EACenJ,EAAOkJ,SAAwB,gBAAIlJ,EAAOkJ,SAAShF,gBAAkBlE,EAAOuH,cAA0B,WAEtGvH,EAAOkJ,SAAoB,YAAIlJ,EAAOkJ,SAASjF,YAAcjE,EAAOuH,cAAcvH,EAAOkJ,SAAS5E,MAErH,MAAM+F,EAAW,CACbrF,MAAOoF,EACPE,OAAQ5D,EA9LQT,uDA8LsBpC,GACtC0G,OAAQN,EACRO,YAAa9D,GAAsC,SAAzB1G,EAAOkJ,SAAS5E,KAAkB2B,EAASC,IAAsC,0BAAfiD,EAAyC,eAAiBA,IACtJsB,YAAa/D,EAAqC,SAAzB1G,EAAOkJ,SAAS5E,KAAkB2B,EAASmD,EAAalD,EAAqB,gBACtGwE,YAAalE,EAAgBwD,IAGd,0BAAfb,IACAkB,EAASM,cAAgB3K,EAAOwJ,WAAWW,UAAYzD,EAAY1G,EAAOwJ,WAAWW,WAAazD,EAAYP,IAG/F,qBAAfgD,IACAnJ,EAAO4K,cAAgBb,EACvBM,EAASQ,cAAgBnE,EAAY1G,EAAO8K,mBAC5CT,EAASU,aAAerE,EAAY1G,EAAOgL,kBAC3CX,EAASY,eAAiBvE,EAAYqD,IAG1C3J,EAAE8K,KAAK,CACH3F,OAAQ,MACRC,IAAK,gBAAkBI,EAAcoB,sBACrCrC,KAAM0F,EACNc,QA/BY,CAACC,OAAQ,6FAgCtBC,MAAK,SAAU1G,EAAM2G,EAAYC,GAChC7B,GAAiB,GACjBvC,EAAKqE,YAAY7G,EAAM2G,EAAYC,MACpCE,MAAK,SAAU9G,GACd7F,EAAO0I,MAAME,SAAS/C,GAAO,2BAC7B+E,GAAiB,OAIzB1J,EAAO0L,gBAAkB,WACrB,IAAIC,EAEAA,EAD2B,qBAA3B3L,EAAOwJ,WAAWlF,KACDtE,EAAOkJ,SAAwB,gBAAIlJ,EAAOkJ,SAAShF,gBAAkBlE,EAAOuH,cAA0B,WAEtGvH,EAAOkJ,SAAoB,YAAIlJ,EAAOkJ,SAASjF,YAAcjE,EAAOuH,cAAcvH,EAAOkJ,SAAS5E,MAEvH,MAAMsH,EAAgBD,EACjB7L,QAAQ,SAAU,QAAUE,EAAOkJ,SAASnG,MAC5CjD,QAAQ,SAAUE,EAAOwJ,WAAWS,eACpCnK,QAAQ,eAAyC,SAAzBE,EAAOkJ,SAAS5E,KAAkB,IAAM,SAAsC,0BAA3BtE,EAAOwJ,WAAWlF,KAAmC,eAAiBtE,EAAOwJ,WAAWlF,OACnKxE,QAAQ,cAAwC,SAAzBE,EAAOkJ,SAAS5E,KAAkB,IAAMtE,EAAOoJ,WAAa,oBACnFtJ,QAAQ,cAAe0G,EAAkBxG,EAAO6L,iBAAyB7L,EAAO6L,iBAAZ,KACpE/L,QAAQ,gBAAiBE,EAAOwJ,WAAWW,UAAYzD,EAAY1G,EAAOwJ,WAAWW,WAAazD,EAAYP,IAC9GrG,QAAQ,gBAAiB4G,EAAY1G,EAAO8K,oBAC5ChL,QAAQ,eAAgB4G,EAAY1G,EAAOgL,mBAC3ClL,QAAQ,iBAAkB4G,EAAY1G,EAAO4K,gBAElD/E,EAAOiG,KAAK,CACRC,YAAa,uBACbhM,WAAY,gBACZiM,QAAS,CACLhH,MAAO,WACH,OAAO4G,OAOvB5L,EAAOuE,YAAc,SAAUV,GAC3BlE,EAAa0B,gBAAgB,CACzBC,MAAO,UACPtC,QAAS,8CAAsD6E,EAAMd,KAAO,KAC5E7B,SAAS,IACVK,OACEC,MAAK,WACF8B,EAAsBiB,YAAYV,GAC7BrC,MAAK,WACFxB,EAAO6H,0BACR,SAAUoE,GACTnN,EAAO0I,MAAME,SAASuE,WAK1CjM,EAAOkM,gBAAkB,SAAUrI,GAC/BP,EAAsBoB,SAAS,CAC3BG,UAAWhB,EAAMd,KACjB+B,aAAcjB,EAAME,QACpBiB,MAAOnB,EAAMG,YACbe,cAAelB,EAAMM,SACrBc,eAAgBpB,EAAMO,MACtBc,YAAarB,EAAMQ,OACnBc,SAAUtB,EAAMS,KAChBe,cAAexB,EAAMuB,WACtBjG,SAAQ,SAAU6F,GACjBa,EAAOiG,KAAK,CACRC,YAAa,uBACbhM,WAAY,gBACZiM,QAAS,CACLhH,MAAO,WACH,OAAOA,UAO3BhF,EAAO4D,aAAe,SAAUC,GAEvBA,EAAMI,cACPJ,EAAMI,YAAcJ,EAAMS,KAAOtE,EAAOuH,cAAc1D,EAAMS,MAAQtE,EAAOuH,cAAc4E,MAE7FxM,EAAa0B,gBAAgB,CACzBC,MAAO,UACPtC,QAAS,qDAA6D6E,EAAMd,KAAO,mEACnF7B,SAAS,IACVK,OACEC,MAAK,WACFqC,EAAM0F,OAAS,aACfjG,EAAsBM,aAAaC,GAC9BrC,MAAK,SAAU4K,OACb,SAAUH,GACTnN,EAAO0I,MAAME,SAASuE,WAK1CjM,EAAOqM,sBAAwB,SAAUtC,GACrCpK,EAAa2M,yBAAyBvC,IAG1C/J,EAAOuM,QAAU,SAAU5F,GACvB,OAAO6F,EAAEC,KAAK9F,EAAK,OAtU3BhI,QACKC,OAAO,gDAAiD,IACxDmB,WAAW,iBAAkB2F,GAElCA,EAAepG,QAAU,CAAC,SAAU,YAAa,SAAU,gBAAiB,eAAgB,SAAU,wBAAyB,0BAA2B,cAAe,iC,gCCNzK,kBAYA,SAASoN,EAAwB1M,EAAQlB,EAAQ+G,EAAQ8G,EAAUrJ,EAAuBsJ,EAAmBC,EAAW9G,EAAalH,EAAemH,EAA8BvG,EAAqBC,GAEnM,MAAMoN,EAAYD,EAAUE,SAASzI,UACnBsC,IAAdkG,GAA2BA,EAAUjG,WAAW,QAChD7G,EAAOmF,SAAW,OAElBnF,EAAOmF,SAAW2H,EAKtB9M,EAAOgN,SAAW,GAElBhN,EAAOsH,KAAOvB,EACd/F,EAAOiN,KAAO,EAEd,MAAMC,EAAmB,CACrB3M,GAAI,IACJwC,KAAM,GACNiC,MAAO,GACPmI,WAAW,EACX9I,QAAQ,GAcZ,MAAM+I,EAAkB,WAXF,IAAUC,EAwB5B,GAZArN,EAAOsN,gBAAkBT,EAAUE,SAASO,gBAC5CtN,EAAOiN,KAAOjN,EAAOsN,gBAAkB,EAAI,EAC3CtN,EAAOgN,SAASjK,MAdYsK,EAcWR,EAAUE,SAAShK,MAZlC,IAAhB/C,EAAOiN,KACAI,EAEA,WAAaA,EAGrB,GAOPrN,EAAOgN,SAASjJ,QAAW8I,EAAUE,SAAShJ,QAAU8I,EAAUE,SAAShJ,QAA+B,SAApB/D,EAAOmF,SA9BtE,kBACA,GA+BnBnF,EAAOuH,gBACPvH,EAAOgN,SAAS/I,YAAc4I,EAAUE,SAAS9I,YAAc4I,EAAUE,SAAS9I,YAAcjE,EAAOuH,cAAcvH,EAAOmF,UACpG,gBAApBnF,EAAOmF,WACPnF,EAAOgN,SAAS9I,gBAAkB2I,EAAUE,SAAS7I,gBAAkB2I,EAAUE,SAAS7I,gBAAkBlE,EAAOuH,cAA0B,aAIjJvH,EAAOsN,gBAEPtN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAS/I,YAC5CjE,EAAOuN,oBAAqB,EAC5BvN,EAAOwN,iBAAkB,EACrBC,OAAOC,QACP1N,EAAO2N,SAAS3N,EAAOgN,SAAS/I,iBAEjC,CACH,GAAwB,SAApBjE,EAAOmF,UAAuBnF,EAAO4N,WAAY,CACjD5N,EAAO6N,QAAU7N,EAAO4N,WAAiB,KACzC5N,EAAOgN,SAAS7I,SAAY0I,EAAUE,SAAS5I,SAAW0I,EAAUE,SAAS5I,cAAWyC,EACxF5G,EAAOgN,SAAS5H,SAAYyH,EAAUE,SAAS3H,SAAWyH,EAAUE,SAAS3H,SAAW,gDACxF,MAAM0I,EAAiBC,EAAmB,uBACnBnH,IAAnBkH,IACA9N,EAAOgN,SAASc,eAAiBA,GAEjCL,OAAOC,QACP1N,EAAO2N,SAAS3N,EAAO6N,QAAkB,UAGzB,gBAApB7N,EAAOmF,UAA8BnF,EAAO4N,aAC5CtK,EAAsBG,aACjBtE,SAAQ,SAAUwF,GASnB,GARI3E,EAAOgO,eAAiB,CAAC,YAAYC,OAAOtJ,EACvClD,QAAO,SAAUM,GACd,MAAoB,gBAAbA,EAAIuC,OAA0C,UAAfvC,EAAIwH,QAAqC,aAAfxH,EAAIwH,WAEvE2E,KAAI,SAAUnM,GACX,OAAOA,EAAIgB,cAGY6D,IAA/B5G,EAAOgN,SAASmB,WAA0B,CAC1C,MAAMC,EAAaL,EAAmB,gBACtC,QAAmBnH,IAAfwH,EACA,IAAK,IAAIC,EAAI,EAAGA,EAAIrO,EAAOgO,eAAe/M,OAAQoN,IAC1CD,IAAepO,EAAOgO,eAAeK,KACrCrO,EAAOgN,SAASmB,WAAanO,EAAOgO,eAAeK,SAKhCzH,IAA/B5G,EAAOgN,SAASmB,aAChBnO,EAAOgN,SAASmB,WAAanO,EAAOgO,eAAe,OAG1DxG,OAAM,SAAU7C,GACb,MAAM8C,EAAMC,SAAS/C,GACrB7F,EAAO0I,MAAMC,EAAK,4BAGtBzH,EAAO6N,QAAU7N,EAAO4N,WAAwB,YAC5CH,OAAOC,QACP1N,EAAO2N,SAAS3N,EAAO6N,QAAqB,gBAMtDS,EAAkB,IAAIC,OAAO,oBAE7BC,EAAgB,WAGlB,OAFAxO,EAAOyO,kBAAmB,EAC1BzO,EAAO0O,cACF1O,EAAOgN,SAASjK,KAIhBuL,EAAgBK,KAAK3O,EAAOgN,SAASjK,MAKrC/C,EAAOgN,SAAShI,MAKhBhF,EAAOgN,SAAS/I,YAKG,gBAApBjE,EAAOmF,UAA+BnF,EAAOgN,SAAS9I,gBAKrB,WAAjCuJ,OAAOC,OAAOkB,qBACd9P,EAAO0I,MAAM,8CALb1I,EAAO0I,MAAM,sCACN,IANP1I,EAAO0I,MAAM,kCACN,IANP1I,EAAO0I,MAAM,kCACN,IANPxH,EAAOyO,iBAAmB,8EACnB,IALPzO,EAAOyO,iBAAmB,8BACnB,IA8BTI,EAAe,SAAUC,EAAQnG,GACnC3I,EAAOgN,SAASjJ,QAAU/D,EAAOgN,SAASjJ,SAAuC,KAA5B/D,EAAOgN,SAASjJ,QAAiB,GAAK,KAAO+K,EAAS,IAAMnG,GAuOrH,SAASoF,EAAmBgB,GACxB,MAAMC,EAAShP,EAAOgN,SAASjJ,QAAQkL,MAAM,KAC7C,IAAK,IAAIjN,EAAI,EAAGA,EAAIgN,EAAO/N,OAAQe,IAC/B,GAAIgN,EAAOhN,KAAO+M,GAAO/M,EAAI,EAAIgN,EAAO/N,OAAQ,CAC5C,MAAM0H,EAAQqG,EAAOhN,EAAI,GAMzB,cAJOgN,EAAOhN,UACPgN,EAAOhN,EAAI,GAClBhC,EAAOgN,SAASjJ,QAAUiL,EAAOE,KAAK,KAE/BvG,GAMnB,SAASwG,EAAiBC,IAG1B,SAASC,EAAUC,EAAWC,EAAiBC,GAC3C,MAAM5F,EAAqBjL,QAAQwB,QAAQkC,SAASwG,eAAe,eACnE7I,EAAOyP,eAAiBH,EACpBA,GACAtP,EAAO0P,eAAiBC,KAAKC,MAC7B5P,EAAO6P,gBAAiB,EACxB7P,EAAOuP,gBAAkBA,EACzBvP,EAAOwP,aAAeA,EACtB5F,EAAmB/G,SAAS,UAE5B7C,EAAOuP,gBAAkB,GACzBvP,EAAOwP,aAAe,GACtB5F,EAAmB1G,YAAY,SAGZ,OAAnBlD,EAAO8P,SACP9P,EAAO+P,SAsBf,SAASC,EAAmCC,GACxC,SAASC,IACL,OAAOzC,OAAO0C,aAAe9N,SAAS+N,gBAAgBC,cAAgBhO,SAASiO,KAAKD,cAAgB,EAGxG,MAAME,EAAeN,EACrB,GAAKjQ,EAAOwQ,oBAwBL,CACH,GAAwB,SAApBxQ,EAAOyQ,SAAqB,CAC5B,IAAIC,EAAYR,IAAyB7N,SAASsO,cAAc,oBAAoBC,wBAA2B,IAC/GF,GAAa,GACbrO,SAASsO,cAAc,oBAAoBE,MAAMC,OAASJ,EAAY,UAEtE1Q,EAAO+Q,UAAY,GACnB1O,SAASsO,cAAc,oBAAoBE,MAAMC,OAAS,GAE9DzO,SAASwG,eAAe,QAAQgI,MAAMG,UAAY,QA7BlD,GAHAhR,EAAO+Q,UAAY,CAACE,aAAc,GAAIC,YAAa,GAG/CzD,OAAOC,QAAUrL,SAASsO,cAAc,oBAAqB,CAC7D,IAAID,EAAYR,IAAyB7N,SAASsO,cAAc,oBAAoBC,wBAA2B,IAC/GF,GAAa,GACbrO,SAASsO,cAAc,oBAAoBE,MAAMC,OAASJ,EAAY,KACtErO,SAASwG,eAAe,QAAQgI,MAAMG,UAAYN,EAAY,SAE3D,CACH,IAAI1I,EAEAA,EAAQ2E,EADR4D,EACiB,WACbvQ,EAAOgQ,mCAAmCO,IAG7BvQ,EAAOgQ,mCAFrB,KAKPhQ,EAAOiI,IAAI,YAAY,WACnB0E,EAASzE,OAAOF,MAcxByF,OAAOtG,MAAQsG,OAAOtG,KAAKgK,WAC3BxE,GAAS,WACLc,OAAOtG,KAAKgK,UAAUC,WACvB,KAoBX,SAASC,IACLrB,GAAmC,GAWvC,SAAS1P,EAAUC,GACfoM,GAAS,WACLvM,EAAE,gBAAkBG,EAAK,MAAMC,IAAI,UACpC,GAIP,SAAS8Q,EAASC,EAAYC,GAC1BxR,EAAOyR,iBAAmBzR,EAAOmC,aACI,WAAjCsL,OAAOC,OAAOkB,eAId4C,GAA8C,WAAjC/D,OAAOC,OAAOkB,eAC3B9P,EAAOoC,QAAQ,2CAIkB,WAAjCuM,OAAOC,OAAOgE,gBAKlB1R,EAAO2R,iBAAmBH,EACrBxR,EAAOyP,iBACJ8B,EACAvR,EAAO4R,iBAAiBC,aAAe,EAEvC7R,EAAO8R,wBAIX9R,EAAOyQ,SAAW,SACdzQ,EAAOwQ,qBACPxQ,EAAOgQ,qCAGXX,GAAU,EAAM,oBAChB5B,OAAOC,OAAO1I,UAnBdlG,EAAOoC,QAAQ,4CATfpC,EAAO0I,MAAM,qDAiCrB,SAASa,IAELgH,GAAU,EAAM,wBAAyB,kHACzCrJ,EAA6B+L,0BACxB5S,SAAQ,SAAUwF,GACf,MAAM2D,EAAe,GACrB3D,EAAK4D,QAAQC,SAASC,SAAQ,SAAU9H,GACpC2H,EAAa3H,EAAE+H,OAAOC,OAAShI,EAAEiI,UAAUD,SAE/C3I,EAAOgS,WAAa1J,KAEvBd,OAAM,SAAU7C,GACb3E,EAAOiS,gBAAkBvK,SAAS/C,MAErCuN,SAAQ,WAEL7C,GAAU,MAqBtB,SAAS8C,IACLvF,EAAkBuF,iBAAiBC,KAAKC,UAAU5E,OAAOC,OAAO4E,aAC3DnT,SAAQ,SAAUwF,GACXhG,QAAQ4T,UAAU9E,OAAOC,SAAW/O,QAAQ4T,UAAU5N,IAASA,IAAS8I,OAAOC,OAAO4E,YACtF7E,OAAOC,OAAO8E,SAAS7N,MAG9B6C,OAAM,SAAU7C,GACb,MAAM8C,EAAMC,SAAS/C,GAErB,OADA7F,EAAO0I,MAAMC,EAAK,wCACX,KAoBnB,SAASgL,EAAiBzN,GACtB,IAAI0N,OAAgB9L,EAQpB,OAPAjI,QAAQ8J,QAAQzI,EAAO2S,UAAU,SAAUC,GACvC,GAAIA,EAAK7P,OAASiC,EAAMjC,MAAQ6P,EAAK5N,QAAUA,EAAMsL,KAEjD,OADAoC,EAAgBE,EAAKrS,GACdqS,KAIRF,EAmCX,SAASG,IACL7S,EAAO2S,SAAW,CAAC3S,EAAOmC,cAE1B,MAAM3B,EAAMR,EAAOmC,aAEe,OAA9BnC,EAAOmC,aAAa6C,OAAgD,KAA9BhF,EAAOmC,aAAa6C,MAE1DyI,OAAOC,OAAO8E,SAAS,KAEvB/E,OAAOC,OAAO8E,SAASxS,EAAOmC,aAAa6C,OAAS,KAGxD2H,GAAS,WACL3M,EAAO4R,iBAAmB,GAC1B5R,EAAO4R,iBAAiBkB,UAAYtS,EAAIsS,UACxC9S,EAAO4R,iBAAiBC,aAAerR,EAAIqR,aAE3C7R,EAAO4R,iBAAiBmB,OAASvS,EAAIuS,OACrC/S,EAAO4R,iBAAiBoB,gBAAkBxS,EAAIwS,gBAC9ChT,EAAO4R,iBAAiB3E,KAAOzM,EAAIyM,KACnCjN,EAAO4R,iBAAiBqB,SAAWzS,EAAIyS,SAEvCjT,EAAO4R,iBAAiBsB,aAAe1S,EAAI0S,aAC3ClT,EAAO4R,iBAAiBuB,SAAW3S,EAAI2S,SACvCnT,EAAO4R,iBAAiBwB,UAAY5S,EAAI4S,UACxCpT,EAAO+P,WACR,GAGH3P,EAAE,SAASiT,IAAI,UAAW,KAG9B,SAASnT,EAAWC,GAChB,OAAOC,EAAED,GAASE,KAAK,WApiB3BiD,EAAsBK,mBAAmBxE,SAAQ,SAAUwF,GACvD3E,EAAOuH,cAAgB5C,EACvBrB,EAAsBmB,aAAatF,SAAQ,SAAU0O,GACjDX,EAAiBlI,MAAQ6H,EAAUE,SAAS/I,YAAc6I,EAAUE,SAAS/I,YAAc6J,EAAc,KAAY,SACrHX,EAAiBC,YAA2C,UAA7BN,EAAUE,SAAS3I,OAClD8I,EAAiB7I,SAAyC,UAA9BwI,EAAUE,SAAS1I,QAC/CrE,EAAO2S,SAAW3S,EAAOgB,KAAO,CAACkM,GACjClN,EAAOmC,aAAexD,QAAQ2U,KAAKpG,GACnClN,EAAO4N,WAAaC,EACpBT,UAEL5F,OAAM,SAAU7C,GACf,MAAM8C,EAAMC,SAAS/C,GACrB7F,EAAO0I,MAAMC,EAAK,mCAGtBzH,EAAOmI,OAAO,YAAY,WACtBiF,OAGJpN,EAAOuT,WAAsE,IAAzD9T,EAAoBiE,IAAIhE,EAAO8T,sBACnDxT,EAAOyT,WAAa,SAAU9K,QACZ/B,IAAV+B,IACAA,EAAQlJ,EAAoBiE,IAAIhE,EAAO8T,uBAE7B,IAAV7K,GACAlJ,EAAoBkC,IAAIjC,EAAO8T,qBAAsB,GACrDxT,EAAOuT,YAAa,IAEpB9T,EAAoBkC,IAAIjC,EAAO8T,qBAAsB,GACrDxT,EAAOuT,YAAa,IAI5BvT,EAAO0T,UAAY,WACVlF,KAILlL,EAAsBoB,SAAS,CAC3BG,UAAW7E,EAAOgN,SAASjK,KAC3B+B,aAAc9E,EAAOgN,SAASjJ,QAC9BiB,MAAOhF,EAAOmC,aAAa6C,MAC3BD,cAAe/E,EAAOgN,SAAS7I,SAC/Bc,eAAgBjF,EAAOmC,aAAagL,UACpCjI,YAAalF,EAAOmC,aAAakC,OACjCc,SAAUnF,EAAOmF,SACjBE,cAAerF,EAAOgN,SAAS5H,WAChCjG,SAAQ,SAAU6F,GACbA,GACAa,EAAOiG,KAAK,CACRC,YAAa,uBACbhM,WAAY,gBACZiM,QAAS,CACLhH,MAAO,WACH,OAAOA,UAQ/BhF,EAAOmI,OAAO,iBAAiB,WAC3BnI,EAAO2T,oBAAqB,EAC5B3T,EAAO4T,kBAAmB,KAG9B5T,EAAO0O,YAAc,WAEjB,MAAM1J,EAAQyI,OAAOC,OAAO4E,WAAW7F,OACnB,IAAhBzM,EAAOiN,KACPjN,EAAOgN,SAAShI,MAAQA,EACD,IAAhBhF,EAAOiN,KACdjN,EAAOgN,SAAS/I,YAAce,EACP,IAAhBhF,EAAOiN,OACdjN,EAAOgN,SAAS9I,gBAAkBc,IAI1ChF,EAAO6T,SAAW,SAAU5G,GAEX,IAATA,GAAkC,SAApBjN,EAAOyQ,WACrBzQ,EAAO8T,aACPnH,GAAS,WACQ,IAATM,IACAjN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAS/I,aAEnC,IAATgJ,IACAjN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAS9I,iBAGhDuJ,OAAOC,OAAO8E,SAASxS,EAAOmC,aAAa6C,OAAS,SAI5DhF,EAAO0O,cAEM,IAATzB,EACAjN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAShI,MAC5B,IAATiI,EACPjN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAS/I,YAC5B,IAATgJ,IACPjN,EAAOmC,aAAa6C,MAAQhF,EAAOgN,SAAS9I,iBAGhD2O,IACA7S,EAAO+T,UAAqB,IAAT9G,EAEnBjN,EAAOiN,KAAOA,GAGlBjN,EAAO8D,YAAc,WACZ0K,KAILlL,EAAsBG,aACjBtE,SAAQ,SAAUwF,GAMf,GALAA,EAAK8D,SAAQ,SAAU5E,GACfA,EAAMd,OAAS/C,EAAOgN,SAASjK,OAC/B/C,EAAOyO,iBAAmB,4CAG7BzO,EAAOyO,iBAAkB,CAC1B,IAAI3B,EAAY9M,EAAOmF,SAEvB,QAA8ByB,IAA1B5G,EAAOgO,eAA8B,CACrC,MAAMG,EAAanO,EAAOgN,SAASmB,WAC/BA,IAAenO,EAAOgO,eAAe,IACrCa,EAAa,eAAgBV,GAGE,SAAnCnO,EAAOgN,SAASc,iBAChBe,EAAa,iBAAkB,QAC/B/B,EAAY,eAGhBxJ,EAAsBQ,YAAY,OAC9B9D,EAAOgN,SAASjK,KAChB/C,EAAOgN,SAASjJ,QAChB/D,EAAOgN,SAAShI,MAChBhF,EAAOgN,SAAS/I,YAChBjE,EAAOgN,SAAS9I,gBAChBlE,EAAOgN,SAAS7I,SAChBnE,EAAOmC,aAAagL,UACpBnN,EAAOmC,aAAakC,OACpByI,EACA9M,EAAOgN,SAAS5H,UACfoC,OAAM,SAAUyE,GACbnN,EAAO0I,MAAME,SAASuE,GAAM,6BAEpCY,EAAUrH,IAAI,kBAIrBgC,OAAM,SAAU7C,GACb,MAAM8C,EAAMC,SAAS/C,GACrB7F,EAAO0I,MAAMC,EAAK,6BAK9BzH,EAAO2N,SAAW,SAAU3I,GAExByI,OAAOC,OAAO8E,SAASxN,GAAgB,MAM3ChF,EAAO8T,WAAa,WACZrG,OAAOC,OAAOsG,KACdvG,OAAOC,OAAOsG,IAAIC,QAEtBjU,EAAOyQ,SAAW,QAGtBzQ,EAAOkU,YAAc,WAGjBlU,EAAOmC,aAAagS,WAAa,QACjCnU,EAAOsR,YAGXtR,EAAO8R,sBAAwB,WAC3B9R,EAAO4R,iBAAmB,CACtBqB,SAAU,IACVhG,KAAM,EACN+F,gBAAiB,EACjBnB,aAAc,IAItB7R,EAAOoU,aAAc,EAErBpU,EAAO8R,wBAEP9R,EAAO2S,SAAW3S,EAAOgB,KAAO,CAACkM,GAGjClN,EAAOqU,QA2SP,SAAiB9T,GACb,MAAMwB,EAdV,SAA0BxB,GACtB,IAAK,IAAIyB,EAAI,EAAGA,EAAIhC,EAAO2S,SAAS1R,OAAQe,IAAK,CAE7C,GADYhC,EAAO2S,SAAS3Q,GACpBzB,KAAOA,EACX,OAAOyB,GAUHC,CAAiB1B,GAE7B,QAAYqG,IAAR7E,EACA,MAAO,GAEX,MAAMvB,EAAMR,EAAO2S,SAAS5Q,GAG5B,OADA/B,EAAOmP,iBAAiB3O,GACjBA,GAnTXR,EAAO6S,QAAUA,EACjB7S,EAAOsU,UAqTP,SAAmBC,EAAUC,EAASC,KAlTtCzU,EAAOsR,SAAWA,EAClBtR,EAAOqI,cAAgBA,EACvBrI,EAAO0U,iBAwNP,WACIpD,GAAS,EAAMtR,EAAO2R,mBAxN1B3R,EAAO2U,oBAoOP,aAnOA3U,EAAOmS,iBAAmBA,EAC1BnS,EAAOyS,iBAAmBA,EAC1BzS,EAAO4U,cAyPP,SAAuB5P,GACnB,MAAM6P,EAAQpC,EAAiBzN,GAC/BhF,EAAO2U,sBACFhW,QAAQ4T,UAAUsC,GAGnBvU,EAAUuU,GAFV7U,EAAOsU,UAAU,KAAMtP,EAAMjC,KAAMiC,EAAMsL,OA5PjDtQ,EAAOmP,iBAAmBA,EAE1BnP,EAAOqP,UAAYA,EACnBrP,EAAO8U,iBAmDP,WACI,MAAMC,GAAepF,KAAKC,MAAQ5P,EAAO0P,gBAAkB,IACrDsF,EAAYhV,EAAOiV,wBAAwBF,GACjD,IAAI/V,EAAU,GAGVA,EADAgB,EAAOuP,gBACGvP,EAAOuP,gBAAkB,OAASyF,EAElC,uBAAyBA,EAEnChV,EAAOwP,cAAgBuF,EAAc,KACrC/V,GAAW,KAAOgB,EAAOwP,cAG7B,OAAOxQ,GA9DXgB,EAAOgQ,mCAAqCA,EAC5ChQ,EAAOkV,eAqHP,SAAwBC,GACpBnV,EAAOyQ,SAAW,OAClBzQ,EAAOwQ,qBAAuBxQ,EAAOwQ,oBACrCR,IACA5P,EAAE,sBAAsBgV,SACxBhV,EAAE,iBAAiBgV,SACnBzI,GAAS,WACLkG,IACAvS,EAAU6U,KACX,MA7HPnV,EAAOqR,eAAiBA,EACxBrR,EAAOqV,iBAmIP,WACS1W,QAAQwB,QAAQkC,UAAUC,KAAK,mBAAmBgT,GAAG,WACtD3W,QAAQwB,QAAQkC,UAAUC,KAAK,oCAAoCC,SApI3EvC,EAAOwQ,qBAAsB,EAG7BxQ,EAAOgH,sBA2GFhH,EAAOwQ,qBACRa,IA8FArR,EAAOgH,uBACPqB,IAGJrI,EAAOiI,IAAI,YAAY,WACnBwF,OAAOC,OAAS,KAChBD,OAAOtG,KAAO,QAqBlB/G,EAAE,YAAYM,GAAG,SAAS,WACtBiM,GAAS,WACLwF,MACD,MAsCPnS,EAAOuV,iBAAiB,iDAAiD,WACpDvV,EAAOmC,gBAsD5BnC,EAAOiI,IAAI,aAAa,SAAUtH,EAAG6U,GAC7BA,EAASC,eACTzV,EAAOqU,QAAQnU,EAAWsV,EAASC,gBAEvCzV,EAAO6S,QAAQ3S,EAAWsV,EAASE,YAGvC1V,EAAOiI,IAAI,0BAA0B,SAAUtH,EAAGK,GAC9ChB,EAAO2S,SAAW3R,EAClBhB,EAAOgB,KAAOA,KAIlBhB,EAAOmC,aAAexD,QAAQ2U,KAAKpG,GAEnClN,EAAO2V,mBAAoB,EAC3B3V,EAAOyU,WAAa,GACpBzU,EAAO4V,cAAgB,GAEvB5V,EAAO6V,sBAAwB,aAG/B7V,EAAO8V,qBAAuB,aAG9B9V,EAAO+V,uBAAyB,aAGhC/V,EAAOsF,gBAAkB,WAErB,GAAqC,WAAjCmI,OAAOC,OAAOkB,eAEd,YADA9P,EAAO0I,MAAM,6CAGjB,IAAI7C,EAAO,CACP5B,KAAM/C,EAAOgN,SAASjK,KACtBiT,aAAchW,EAAOmC,aAAa6C,MAClCiR,cAA+B,IAAhBjW,EAAOiN,MAG1B,OAAO3J,EAAsBgC,gBAAgB8M,KAAKC,UAAU1N,IACvDnD,MAAK0U,uBACIrX,EAAcE,0BAA0C,IAAhBiB,EAAOiN,KAAa,uBAAyB,4BAC3FJ,EAAUrH,IAAI,iBACf,SAAU2Q,GACTrX,EAAO0I,MAAME,SAASyO,GAAW,+BAI7CnW,EAAOoW,eAAiB,WACpB,MAAO,WAAapW,EAAOsN,gBAAkB,gBAAiB,kBAAoB,gCAtvB1F3O,QACKC,OAAO,kDAAmD,CACvD,wCACA,gDAEHmB,WAAW,0BAA2B2M,GAE3CA,EAAwBpN,QAAU,CAAC,SAAU,SAAU,SAAU,WAAY,wBAAyB,oBAAqB,YAAa,cAAe,gBAAiB,+BAAgC,sBAAuB","file":"20.a35d80fb5e80ae3874ce.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/rest/similarity.rest.service';\nimport 'angular/similarity/controllers/similarity-list.controller';\nimport 'angular/similarity/controllers/create-index.controller';\nimport 'angular/core/directives/queryeditor/sparql-tab.directive';\nimport 'angular/core/directives/queryeditor/query-editor.controller';\nimport 'angular/core/directives/queryeditor/query-editor.directive';\n\nangular.module('graphdb.framework.similarity', [\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.rest.similarity.service',\n 'graphdb.framework.similarity.controllers.create',\n 'graphdb.framework.similarity.controllers.list',\n 'graphdb.framework.core.directives.queryeditor.controllers',\n 'graphdb.framework.core.directives.queryeditor.sparqltab',\n 'graphdb.framework.core.directives.queryeditor.queryeditor'\n]);\n","angular\n .module('graphdb.framework.utils.notifications', [])\n .factory('Notifications', Notifications);\n\nNotifications.$inject = ['toastr'];\n\nfunction Notifications(toastr) {\n return {\n showToastMessageWithDelay\n };\n\n /**\n * This method will show message with tiny delay and only after completion\n * of latter redirection to \"graphs-visualizations\" page will happen.\n * @param {string} message The message to be displayed.\n * @return {Promise<any>}\n */\n function showToastMessageWithDelay(message) {\n return new Promise((r) => {\n toastr.success(message);\n setTimeout(r, 200);\n });\n }\n}\n","import 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.core.directives.queryeditor.sparqltab', [\n 'graphdb.framework.core',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .directive('sparqlTab', sparqlTabDirective);\n\nsparqlTabDirective.$inject = ['$rootScope', 'LocalStorageAdapter', 'LSKeys', 'ModalService'];\n\nfunction sparqlTabDirective($rootScope, LocalStorageAdapter, LSKeys, ModalService) {\n const SparqlTabCtrl = ['$scope', '$element', '$rootScope', 'ModalService', 'toastr', function ($scope, $element, $rootScope, ModalService, toastr) {\n $scope.state = {};\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabs.length; i++) {\n const tab = $scope.tabs[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n $($element).on('shown.bs.tab', function (e) {\n $rootScope.$broadcast('tabAction', e);\n });\n\n $scope.deleteTab = deleteTab;\n $scope.editCurrentTab = editCurrentTab;\n $scope.selectThisTab = selectThisTab;\n\n function selectThisTab(e) {\n e.preventDefault();\n e.stopPropagation();\n if ($scope.isTabChangeOk(false)) {\n $($element).tab('show');\n }\n }\n\n function selectTab(id) {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }\n\n function deleteTab(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if ($scope.tabs.length < 2) {\n toastr.warning('Last tab must remain open.');\n return;\n }\n\n if (e.shiftKey) {\n $scope.state.selectedTabId = getQueryID($element);\n\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to delete all query tabs except selected tab?',\n warning: true\n }).result.then(function () {\n deleteAllTabsExceptSelected($scope.state.selectedTabId);\n });\n } else {\n $scope.state.idForDelete = getQueryID($element);\n\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to close this query tab?',\n warning: true\n }).result.then(function () {\n deleteTabByID($scope.state.idForDelete);\n });\n }\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n\n function editCurrentTab() {\n if (getQueryID($element) !== $scope.currentQuery.id) {\n return;\n }\n $scope.editCurrentlySelectedOnly.$show();\n //fix for buttons for edit\n const $editableButtons = $(\".editable-buttons\");\n $editableButtons.children(\".btn.btn-primary\").addClass('btn-sm');\n $editableButtons.children(\".btn.btn-default\").addClass('btn-sm');\n $('.editable-controls .editable-input').addClass('form-control-sm').on('change', function ($el) {\n $scope.currentQuery.name = $el.currentTarget.$$currentValue;\n });\n //$('.editable-buttons').css('margin-top', '5px');\n //$('.editable-input.editable-has-buttons').css('width', '50%');\n $('.editable-buttons .glyphicon.glyphicon-ok')\n .removeClass('glyphicon glyphicon-ok')\n .addClass('fa fa-check');\n $('.editable-buttons .glyphicon.glyphicon-remove')\n .removeClass('glyphicon glyphicon-remove')\n .addClass('fa fa-close');\n }\n\n function deleteTabByID(id) {\n if (angular.isUndefined(id)) {\n throw 'Delete by id was called with undefined id';\n }\n const idx = findTabIndexByID(id);\n $scope.tabs.splice(idx, 1);\n\n if (id === $scope.currentQuery.id) {\n if ($scope.tabs.length > 0) {\n if (idx > 0) {\n // select previous tab if we deleted any but the first tab\n selectTab($scope.tabs[idx - 1].id);\n } else {\n // select first tab if we deleted the first tab\n selectTab($scope.tabs[0].id);\n }\n }\n }\n }\n\n function deleteAllTabsExceptSelected(id) {\n $scope.tabs = $scope.tabs.filter(function (obj) {\n if (obj.id === id) {\n return obj;\n }\n });\n selectTab($scope.tabs[0].id);\n LocalStorageAdapter.set(LSKeys.TABS_STATE, $scope.tabs);\n $rootScope.$broadcast('deleteAllexeptSelected', $scope.tabs);\n }\n }];\n\n return {\n restrict: 'AE',\n // for some reason when you extract this template in a file and use templateUrl it selects all tabs when editing the tab name, not only the currently selected one\n template: '<a class=\"nav-link\" role=\"tab\" data-toggle=\"tab\" blur=\"submit\" editable-text=\"tab.name\" e-form=\"editCurrentlySelectedOnly\" ng-click=\"selectThisTab($event)\" ng-dblclick=\"editCurrentTab()\" ><span ng-class=\"{\\'text-muted\\': !tab.name}\">{{ tab.name || \\'Unnamed\\'}}</span><button type=\"button\" ng-click=\"deleteTab($event)\" class=\"btn btn-link btn-sm secondary delete-sparql-tab-btn\" title=\"Delete tab\"><i class=\"icon-close\"></i></button></a>',\n replace: true,\n controller: SparqlTabCtrl\n };\n}\n","angular\n .module('graphdb.framework.rest.similarity.service', [])\n .factory('SimilarityRestService', SimilarityRestService);\n\nSimilarityRestService.$inject = ['$http', '$repositories'];\n\nconst SIMILARITY_ENDPOINT = 'rest/similarity';\n\nfunction SimilarityRestService($http) {\n\n return {\n getIndexes,\n getSearchQueries,\n rebuildIndex,\n deleteIndex,\n createIndex,\n getSamples,\n getQuery,\n saveSearchQuery\n };\n\n function getIndexes() {\n return $http.get(SIMILARITY_ENDPOINT);\n }\n\n function getSamples() {\n return $http.get(`${SIMILARITY_ENDPOINT}/samples`);\n }\n\n function getSearchQueries() {\n return $http.get(`${SIMILARITY_ENDPOINT}/config`);\n }\n\n function createIndex(method, name, options, selectQuery, searchQuery, analogicalQuery, stopList, infer, sameAs, type, analyzer) {\n return $http({\n method,\n url: `${SIMILARITY_ENDPOINT}`,\n noCancelOnRouteChange: true,\n data: {\n name,\n options,\n selectQuery,\n stopList,\n infer,\n sameAs,\n type,\n analyzer,\n searchQuery,\n analogicalQuery\n }\n }\n );\n }\n\n function rebuildIndex(index) {\n return createIndex('PUT', index.name, index.options, index.selectQuery, index.searchQuery, index.analogicalQuery, index.stopList, index.infer, index.sameAs, index.type);\n }\n\n function deleteIndex(index) {\n return $http.delete(`${SIMILARITY_ENDPOINT}?name=${index.name}`);\n }\n\n function getQuery(data) {\n return $http.get('rest/similarity/query',\n {\n params: {\n name: data.indexName,\n options: data.indexOptions,\n stopList: data.indexStopList,\n selectQuery: data.query,\n infer: data.queryInference,\n sameAs: data.querySameAs,\n type: data.viewType,\n analyzer: data.indexAnalyzer\n }\n });\n }\n\n function saveSearchQuery(data) {\n return $http({\n method: 'put',\n url: 'rest/similarity/search-query',\n data\n });\n }\n}\n","import YASR from 'lib/yasr.bundled';\n\nangular\n .module('graphdb.framework.similarity.controllers.list', [])\n .controller('SimilarityCtrl', SimilarityCtrl);\n\nSimilarityCtrl.$inject = ['$scope', '$interval', 'toastr', '$repositories', 'ModalService', '$modal', 'SimilarityRestService', 'AutocompleteRestService', 'productInfo', 'RDF4JRepositoriesRestService'];\n\nfunction SimilarityCtrl($scope, $interval, toastr, $repositories, ModalService, $modal, SimilarityRestService, AutocompleteRestService, productInfo, RDF4JRepositoriesRestService) {\n\n const PREFIX = 'http://www.ontotext.com/graphdb/similarity/';\n const PREFIX_PREDICATION = 'http://www.ontotext.com/graphdb/similarity/psi/';\n const PREFIX_INSTANCE = PREFIX + 'instance/';\n const ANY_PREDICATE = PREFIX_PREDICATION + 'any';\n $scope.pluginName = 'similarity';\n $scope.pluginIsActive = true;\n\n $scope.setPluginIsActive = function (isPluginActive) {\n $scope.pluginIsActive = isPluginActive;\n }\n\n const literalForQuery = function (literal) {\n return '\"' + literal + '\"';\n };\n\n // TODO: Fix cases when this function is called with undefined\n const iriForQuery = function (iri) {\n // Do not put brackets on nested triples\n if (iri === undefined || iri.startsWith(\"<<\") && iri.endsWith(\">>\")) {\n return iri;\n }\n return '<' + iri + '>';\n };\n\n $scope.info = productInfo;\n\n $scope.getActiveRepository = function () {\n return $repositories.getActiveRepository();\n };\n\n // Don't call functions if one of the following conditions are met\n function shouldSkipCall() {\n return !$scope.getActiveRepository() ||\n $scope.isActiveRepoFedXType() ||\n $scope.isActiveRepoOntopType();\n }\n\n if (!shouldSkipCall()) {\n SimilarityRestService.getSearchQueries().success(function (data) {\n $scope.searchQueries = data;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get search queries');\n });\n }\n\n $scope.encodeURIComponent = function (param) {\n return encodeURIComponent(param);\n };\n\n // get similarity indexes\n $scope.getSimilarityIndexes = function () {\n if (shouldSkipCall() || !$scope.pluginIsActive) {\n return;\n }\n SimilarityRestService.getIndexes()\n .success(function (data) {\n $scope.similarityIndexes = data;\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get indexes');\n });\n };\n\n $scope.pullList = function () {\n $scope.getSimilarityIndexes();\n const timer = $interval(function () {\n $scope.$broadcast('checkIsActive');\n if ($('#indexes-table').attr('aria-expanded') !== 'false') {\n $scope.getSimilarityIndexes();\n }\n }, 5000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n };\n\n if ($scope.getActiveRepository()) {\n $scope.pullList();\n }\n\n let yasr;\n\n $scope.$watch(function () {\n return $repositories.getActiveRepository();\n }, function () {\n // Don't try to get namespaces for ontop or fedx repository\n if ($scope.getActiveRepository() && !$scope.isActiveRepoOntopType() && !$scope.isActiveRepoFedXType()) {\n $scope.getNamespacesPromise = RDF4JRepositoriesRestService.getNamespaces($scope.getActiveRepository())\n .success(function (data) {\n checkAutocompleteStatus();\n $scope.usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n $scope.usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n yasr = YASR(document.getElementById('yasr'), { // eslint-disable-line new-cap\n //this way, the URLs in the results are prettified using the defined prefixes\n getUsedPrefixes: $scope.usedPrefixes,\n persistency: false,\n hideHeader: true\n });\n }).error(function (data) {\n toastr.error(getError(data), 'Cannot get namespaces for repository. View will not work properly;');\n });\n }\n });\n\n function checkAutocompleteStatus() {\n $scope.getAutocompletePromise = AutocompleteRestService.checkAutocompleteStatus();\n }\n\n $scope.$on('autocompleteStatus', function() {\n checkAutocompleteStatus();\n });\n\n $scope.loading = false;\n\n $scope.selected = undefined;\n $scope.searchType = 'searchTerm';\n $scope.resultType = 'termResult';\n\n $scope.$watch('searchType', function () {\n $scope.empty = true;\n });\n\n $scope.goToSimilarityIndex = function (index) {\n if (!('BUILT' === index.status || 'OUTDATED' === index.status || 'REBUILDING' === index.status)) {\n return;\n }\n $scope.empty = true;\n if ($scope.selected !== index) {\n $scope.lastSearch = undefined;\n $scope.selected = index;\n }\n if (index.type === 'text') {\n $scope.searchType = 'searchTerm';\n } else if (index.type === 'predication') {\n $scope.searchType = 'searchEntity';\n }\n if (index.type === 'text' || index.type === 'predication') {\n $('#indexes-table').collapse('hide');\n }\n };\n\n const toggleOntoLoader = function (showLoader) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n const resultsLoader = angular.element(document.getElementById('results-loader'));\n /* Angular b**it. For some reason the loader behaved strangely with ng-show not always showing */\n if (showLoader) {\n $scope.loading = true;\n yasrInnerContainer.addClass('opacity-hide');\n resultsLoader.removeClass('opacity-hide');\n } else {\n $scope.loading = false;\n yasrInnerContainer.removeClass('opacity-hide');\n resultsLoader.addClass('opacity-hide');\n }\n };\n\n $scope.performSearch = function (index, uri, searchType, resultType, parameters) {\n\n toggleOntoLoader(true);\n\n // this is either the search term or the iri for the subject\n let termOrSubject = uri;\n\n $scope.lastSearch = {};\n $scope.lastSearch.type = searchType;\n\n if (searchType === 'searchEntityPredicate') {\n termOrSubject = $scope.psiSubject;\n $scope.lastSearch.predicate = uri;\n }\n\n if (searchType === 'searchTerm') {\n termOrSubject = literalForQuery(termOrSubject);\n } else {\n termOrSubject = iriForQuery(termOrSubject);\n }\n\n $scope.lastSearch.termOrSubject = termOrSubject;\n\n const headers = {Accept: 'application/x-sparqlstar-results+json, application/sparql-results+json;q=0.9, */*;q=0.8'};\n let sparqlQuery;\n if (searchType === 'searchAnalogical') {\n sparqlQuery = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n sparqlQuery = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n const sendData = {\n query: sparqlQuery,\n $index: iriForQuery(PREFIX_INSTANCE + index),\n $query: termOrSubject,\n $searchType: iriForQuery(($scope.selected.type === 'text' ? PREFIX : PREFIX_PREDICATION) + (searchType === 'searchEntityPredicate' ? 'searchEntity' : searchType)),\n $resultType: iriForQuery($scope.selected.type === 'text' ? PREFIX + resultType : PREFIX_PREDICATION + 'entityResult'),\n $parameters: literalForQuery(parameters)\n };\n\n if (searchType === 'searchEntityPredicate') {\n sendData.$psiPredicate = $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE);\n }\n\n if (searchType === 'searchAnalogical') {\n $scope.searchSubject = uri;\n sendData.$givenSubject = iriForQuery($scope.analogicalSubject);\n sendData.$givenObject = iriForQuery($scope.analogicalObject);\n sendData.$searchSubject = iriForQuery(uri);\n }\n\n $.ajax({\n method: 'GET',\n url: 'repositories/' + $repositories.getActiveRepository(),\n data: sendData,\n headers: headers\n }).done(function (data, textStatus, jqXhrOrErrorString) {\n toggleOntoLoader(false);\n yasr.setResponse(data, textStatus, jqXhrOrErrorString);\n }).fail(function (data) {\n toastr.error(getError(data), 'Could not get resource!');\n toggleOntoLoader(false);\n });\n };\n\n $scope.viewSearchQuery = function () {\n let queryTemplate;\n if ($scope.lastSearch.type === 'searchAnalogical') {\n queryTemplate = ($scope.selected.analogicalQuery) ? $scope.selected.analogicalQuery : $scope.searchQueries['analogical'];\n } else {\n queryTemplate = ($scope.selected.searchQuery) ? $scope.selected.searchQuery : $scope.searchQueries[$scope.selected.type];\n }\n const replacedQuery = queryTemplate\n .replace('?index', 'inst:' + $scope.selected.name)\n .replace('?query', $scope.lastSearch.termOrSubject)\n .replace('?searchType', ($scope.selected.type === 'text' ? ':' : 'psi:') + ($scope.lastSearch.type === 'searchEntityPredicate' ? 'searchEntity' : $scope.lastSearch.type))\n .replace('?resultType', $scope.selected.type === 'text' ? ':' + $scope.resultType : 'psi:entityResult')\n .replace('?parameters', literalForQuery((!$scope.searchParameters) ? '' : $scope.searchParameters))\n .replace('?psiPredicate', $scope.lastSearch.predicate ? iriForQuery($scope.lastSearch.predicate) : iriForQuery(ANY_PREDICATE))\n .replace('?givenSubject', iriForQuery($scope.analogicalSubject))\n .replace('?givenObject', iriForQuery($scope.analogicalObject))\n .replace('?searchSubject', iriForQuery($scope.searchSubject));\n\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return replacedQuery;\n }\n }\n });\n };\n\n\n $scope.deleteIndex = function (index) {\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to delete the index ' + '\\'' + index.name + '\\'?',\n warning: true\n }).result\n .then(function () {\n SimilarityRestService.deleteIndex(index)\n .then(function () {\n $scope.getSimilarityIndexes();\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.viewCreateQuery = function (index) {\n SimilarityRestService.getQuery({\n indexName: index.name,\n indexOptions: index.options,\n query: index.selectQuery,\n indexStopList: index.stopList,\n queryInference: index.infer,\n querySameAs: index.sameAs,\n viewType: index.type,\n indexAnalyzer: index.analyzer\n }).success(function (query) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n });\n };\n\n $scope.rebuildIndex = function (index) {\n // Migration\n if (!index.searchQuery) {\n index.searchQuery = index.type ? $scope.searchQueries[index.type] : $scope.searchQueries.text;\n }\n ModalService.openSimpleModal({\n title: 'Confirm',\n message: 'Are you sure you want to rebuild the whole index ' + '\\'' + index.name + '\\'?' + '<br>You will still be able to use the latest successful build!',\n warning: true\n }).result\n .then(function () {\n index.status = 'REBUILDING';\n SimilarityRestService.rebuildIndex(index)\n .then(function (res) {\n }, function (err) {\n toastr.error(getError(err));\n });\n });\n };\n\n $scope.copyToClipboardResult = function (uri) {\n ModalService.openCopyToClipboardModal(uri);\n };\n\n $scope.trimIRI = function (iri) {\n return _.trim(iri, \"<>\");\n };\n}\n","import 'angular/utils/notifications';\nimport 'angular/utils/local-storage-adapter';\n\nangular\n .module('graphdb.framework.similarity.controllers.create', [\n 'graphdb.framework.utils.notifications',\n 'graphdb.framework.utils.localstorageadapter'\n ])\n .controller('CreateSimilarityIdxCtrl', CreateSimilarityIdxCtrl);\n\nCreateSimilarityIdxCtrl.$inject = ['$scope', 'toastr', '$modal', '$timeout', 'SimilarityRestService', 'SparqlRestService', '$location', 'productInfo', 'Notifications', 'RDF4JRepositoriesRestService', 'LocalStorageAdapter', 'LSKeys'];\n\nfunction CreateSimilarityIdxCtrl($scope, toastr, $modal, $timeout, SimilarityRestService, SparqlRestService, $location, productInfo, Notifications, RDF4JRepositoriesRestService, LocalStorageAdapter, LSKeys) {\n\n const indexType = $location.search().type;\n if (indexType === undefined || indexType.startsWith('text')) {\n $scope.viewType = 'text';\n } else {\n $scope.viewType = indexType;\n }\n\n const textDefaultOptions = '-termweight idf';\n const predDefaultOptions = '';\n $scope.newIndex = {};\n\n $scope.info = productInfo;\n $scope.page = 1;\n\n const defaultTabConfig = {\n id: '1',\n name: '',\n query: '',\n inference: true,\n sameAs: true\n };\n\n let getNewIndexName = function (indexNameFromLocation) {\n if (indexNameFromLocation) {\n if ($scope.page !== 1) {\n return indexNameFromLocation;\n } else {\n return 'Copy_of_' + indexNameFromLocation;\n }\n }\n return '';\n };\n\n const initForViewType = function () {\n $scope.editSearchQuery = $location.search().editSearchQuery;\n $scope.page = $scope.editSearchQuery ? 2 : 1;\n $scope.newIndex.name = getNewIndexName($location.search().name);\n $scope.newIndex.options = ($location.search().options ? $location.search().options : ($scope.viewType === \"text\") ? textDefaultOptions : predDefaultOptions);\n\n if ($scope.searchQueries) {\n $scope.newIndex.searchQuery = $location.search().searchQuery ? $location.search().searchQuery : $scope.searchQueries[$scope.viewType];\n if ($scope.viewType === 'predication') {\n $scope.newIndex.analogicalQuery = $location.search().analogicalQuery ? $location.search().analogicalQuery : $scope.searchQueries['analogical'];\n }\n }\n\n if ($scope.editSearchQuery) {\n // Default will be opened search query tab for edition\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n $scope.notoolbarInference = true;\n $scope.notoolbarSameAs = true;\n if (window.editor) {\n $scope.setQuery($scope.newIndex.searchQuery);\n }\n } else {\n if ($scope.viewType === 'text' && $scope.allSamples) {\n $scope.samples = $scope.allSamples['text'];\n $scope.newIndex.stopList = ($location.search().stopList ? $location.search().stopList : undefined);\n $scope.newIndex.analyzer = ($location.search().analyzer ? $location.search().analyzer : 'org.apache.lucene.analysis.en.EnglishAnalyzer');\n const isLiteralIndex = getAndRemoveOption('-literal_index');\n if (isLiteralIndex !== undefined) {\n $scope.newIndex.isLiteralIndex = isLiteralIndex;\n }\n if (window.editor) {\n $scope.setQuery($scope.samples['literals']);\n }\n }\n if ($scope.viewType === 'predication' && $scope.allSamples) {\n SimilarityRestService.getIndexes()\n .success(function (data) {\n $scope.literalIndexes = ['no-index'].concat(data\n .filter(function (idx) {\n return idx.type === 'textLiteral' && (idx.status === 'BUILT' || idx.status === 'OUTDATED')\n })\n .map(function (idx) {\n return idx.name;\n }));\n\n if ($scope.newIndex.inputIndex === undefined) {\n const desiredIdx = getAndRemoveOption('-input_index');\n if (desiredIdx !== undefined) {\n for (let j = 0; j < $scope.literalIndexes.length; j++) {\n if (desiredIdx === $scope.literalIndexes[j]) {\n $scope.newIndex.inputIndex = $scope.literalIndexes[j];\n }\n }\n }\n }\n if ($scope.newIndex.inputIndex === undefined) {\n $scope.newIndex.inputIndex = $scope.literalIndexes[0];\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get indexes');\n });\n\n $scope.samples = $scope.allSamples['predication'];\n if (window.editor) {\n $scope.setQuery($scope.samples['predication']);\n }\n }\n }\n };\n\n const filenamePattern = new RegExp('^[a-zA-Z0-9-_]+$');\n\n const validateIndex = function () {\n $scope.invalidIndexName = false;\n $scope.saveQueries();\n if (!$scope.newIndex.name) {\n $scope.invalidIndexName = 'Index name cannot be empty';\n return false;\n }\n if (!filenamePattern.test($scope.newIndex.name)) {\n $scope.invalidIndexName = 'Index name can contain only letters (a-z, A-Z), numbers (0-9), \"-\" and \"_\"';\n return false;\n }\n\n if (!$scope.newIndex.query) {\n toastr.error('Select query cannot be empty.');\n return false;\n }\n\n if (!$scope.newIndex.searchQuery) {\n toastr.error('Search query cannot be empty.');\n return false;\n }\n\n if ($scope.viewType === 'predication' && !$scope.newIndex.analogicalQuery) {\n toastr.error('Analogical query cannot be empty.');\n return false;\n }\n\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error('Similarity index requires SELECT queries.');\n return;\n }\n\n return true;\n };\n\n const appendOption = function (option, value) {\n $scope.newIndex.options = $scope.newIndex.options + ($scope.newIndex.options === '' ? '' : ' ') + option + ' ' + value;\n };\n\n SimilarityRestService.getSearchQueries().success(function (data) {\n $scope.searchQueries = data;\n SimilarityRestService.getSamples().success(function (samples) {\n defaultTabConfig.query = $location.search().selectQuery ? $location.search().selectQuery : samples['text']['literals'];\n defaultTabConfig.inference = !($location.search().infer === 'false');\n defaultTabConfig.sameAs = !($location.search().sameAs === 'false');\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n $scope.currentQuery = angular.copy(defaultTabConfig);\n $scope.allSamples = samples;\n initForViewType();\n });\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get search queries');\n });\n\n $scope.$watch('viewType', function () {\n initForViewType();\n });\n\n $scope.helpHidden = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP) === 1;\n $scope.toggleHelp = function (value) {\n if (value === undefined) {\n value = LocalStorageAdapter.get(LSKeys.HIDE_SIMILARITY_HELP);\n }\n if (value !== 1) {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 1);\n $scope.helpHidden = true;\n } else {\n LocalStorageAdapter.set(LSKeys.HIDE_SIMILARITY_HELP, 0);\n $scope.helpHidden = false;\n }\n };\n\n $scope.viewQuery = function () {\n if (!validateIndex()) {\n return;\n }\n\n SimilarityRestService.getQuery({\n indexName: $scope.newIndex.name,\n indexOptions: $scope.newIndex.options,\n query: $scope.currentQuery.query,\n indexStopList: $scope.newIndex.stopList,\n queryInference: $scope.currentQuery.inference,\n querySameAs: $scope.currentQuery.sameAs,\n viewType: $scope.viewType,\n indexAnalyzer: $scope.newIndex.analyzer\n }).success(function (query) {\n if (query) {\n $modal.open({\n templateUrl: 'pages/viewQuery.html',\n controller: 'ViewQueryCtrl',\n resolve: {\n query: function () {\n return query;\n }\n }\n });\n }\n });\n };\n\n $scope.$watch('newIndex.name', function () {\n $scope.isInvalidIndexName = false;\n $scope.isEmptyIndexName = false;\n });\n\n $scope.saveQueries = function () {\n // save the current query\n const query = window.editor.getValue().trim();\n if ($scope.page === 1) {\n $scope.newIndex.query = query;\n } else if ($scope.page === 2) {\n $scope.newIndex.searchQuery = query;\n } else if ($scope.page === 3) {\n $scope.newIndex.analogicalQuery = query;\n }\n };\n\n $scope.goToPage = function (page) {\n // ugly fix for GDB-3099\n if (page !== 1 && $scope.viewMode !== 'yasr') {\n $scope.showEditor();\n $timeout(function () {\n if (page === 2) {\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n }\n if (page === 3) {\n $scope.currentQuery.query = $scope.newIndex.analogicalQuery;\n }\n\n window.editor.setValue($scope.currentQuery.query || ' ');\n });\n }\n\n $scope.saveQueries();\n // get the saved query\n if (page === 1) {\n $scope.currentQuery.query = $scope.newIndex.query;\n } else if (page === 2) {\n $scope.currentQuery.query = $scope.newIndex.searchQuery;\n } else if (page === 3) {\n $scope.currentQuery.query = $scope.newIndex.analogicalQuery;\n }\n\n loadTab();\n $scope.notoolbar = page !== 1;\n\n $scope.page = page;\n };\n\n $scope.createIndex = function () {\n if (!validateIndex()) {\n return;\n }\n // Check existing indexes\n SimilarityRestService.getIndexes()\n .success(function (data) {\n data.forEach(function (index) {\n if (index.name === $scope.newIndex.name) {\n $scope.invalidIndexName = 'Index with this name already exists.';\n }\n });\n if (!$scope.invalidIndexName) {\n let indexType = $scope.viewType;\n\n if ($scope.literalIndexes !== undefined) {\n const inputIndex = $scope.newIndex.inputIndex;\n if (inputIndex !== $scope.literalIndexes[0]) {\n appendOption('-input_index', inputIndex);\n }\n }\n if ($scope.newIndex.isLiteralIndex === 'true') {\n appendOption('-literal_index', 'true');\n indexType = 'textLiteral';\n }\n\n SimilarityRestService.createIndex('POST',\n $scope.newIndex.name,\n $scope.newIndex.options,\n $scope.newIndex.query,\n $scope.newIndex.searchQuery,\n $scope.newIndex.analogicalQuery,\n $scope.newIndex.stopList,\n $scope.currentQuery.inference,\n $scope.currentQuery.sameAs,\n indexType,\n $scope.newIndex.analyzer)\n .error(function (err) {\n toastr.error(getError(err), 'Could not create index');\n });\n $location.url('similarity');\n }\n\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Could not get indexes');\n });\n };\n\n // Called when user clicks on a sample query\n $scope.setQuery = function (query) {\n // Hack for YASQE bug\n window.editor.setValue(query ? query : ' ');\n };\n\n // TODO don't copy paste each time, this is the same as in the graph config\n // DOWN HERE WE KEEP EVERYTHING PURELY QUERY EDITOR (MOSTLY BORROWED FROM query-editor.controller.js)\n\n $scope.showEditor = function () {\n if (window.editor.xhr) {\n window.editor.xhr.abort();\n }\n $scope.viewMode = 'yasr';\n };\n\n $scope.showPreview = function () {\n // For some reason YASR gets confused and sets this to rawResponse\n // if we execute a CONSTRUCT and then a SELECT. This makes sure it's always table.\n $scope.currentQuery.outputType = 'table';\n $scope.runQuery();\n };\n\n $scope.resetCurrentTabConfig = function () {\n $scope.currentTabConfig = {\n pageSize: 100, // page limit 100 as this is only used for preview\n page: 1,\n allResultsCount: 0,\n resultsCount: 0\n };\n };\n\n $scope.queryExists = false;\n\n $scope.resetCurrentTabConfig();\n\n $scope.tabsData = $scope.tabs = [defaultTabConfig];\n\n // query tab operations\n $scope.saveTab = saveTab;\n $scope.loadTab = loadTab;\n $scope.addNewTab = addNewTab;\n\n // query operations\n $scope.runQuery = runQuery;\n $scope.getNamespaces = getNamespaces;\n $scope.changePagination = changePagination;\n $scope.toggleSampleQueries = toggleSampleQueries;\n $scope.addKnownPrefixes = addKnownPrefixes;\n $scope.getExistingTabId = getExistingTabId;\n $scope.querySelected = querySelected;\n $scope.saveQueryToLocal = saveQueryToLocal;\n\n $scope.setLoader = setLoader;\n $scope.getLoaderMessage = getLoaderMessage;\n\n // query editor and results orientation\n $scope.fixSizesOnHorizontalViewModeSwitch = fixSizesOnHorizontalViewModeSwitch;\n $scope.changeViewMode = changeViewMode;\n $scope.showHideEditor = showHideEditor;\n $scope.focusQueryEditor = focusQueryEditor;\n $scope.orientationViewMode = true;\n\n // start of repository actions\n $scope.getActiveRepository();\n\n function getAndRemoveOption(key) {\n const optArr = $scope.newIndex.options.split(' ');\n for (let i = 0; i < optArr.length; i++) {\n if (optArr[i] === key && i + 1 < optArr.length) {\n const value = optArr[i + 1];\n\n delete optArr[i];\n delete optArr[i + 1];\n $scope.newIndex.options = optArr.join(' ');\n\n return value;\n }\n }\n return undefined;\n }\n\n function saveQueryToLocal(currentQueryTab) {\n }\n\n function setLoader(isRunning, progressMessage, extraMessage) {\n const yasrInnerContainer = angular.element(document.getElementById('yasr-inner'));\n $scope.queryIsRunning = isRunning;\n if (isRunning) {\n $scope.queryStartTime = Date.now();\n $scope.countTimeouted = false;\n $scope.progressMessage = progressMessage;\n $scope.extraMessage = extraMessage;\n yasrInnerContainer.addClass('hide');\n } else {\n $scope.progressMessage = '';\n $scope.extraMessage = '';\n yasrInnerContainer.removeClass('hide');\n }\n // We might call this from angular or outside angular so take care of applying the scope.\n if ($scope.$$phase === null) {\n $scope.$apply();\n }\n }\n\n function getLoaderMessage() {\n const timeSeconds = (Date.now() - $scope.queryStartTime) / 1000;\n const timeHuman = $scope.getHumanReadableSeconds(timeSeconds);\n let message = '';\n\n if ($scope.progressMessage) {\n message = $scope.progressMessage + '... ' + timeHuman;\n } else {\n message = 'Running operation...' + timeHuman;\n }\n if ($scope.extraMessage && timeSeconds > 10) {\n message += '\\n' + $scope.extraMessage;\n }\n\n return message;\n }\n\n // start of query editor results orientation operations\n function fixSizesOnHorizontalViewModeSwitch(verticalViewParam) {\n function visibleWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0;\n }\n\n const verticalView = verticalViewParam;\n if (!$scope.orientationViewMode) {\n $scope.noPadding = {paddingRight: 15, paddingLeft: 0};\n\n // window.editor is undefined if no repo is selected\n if (window.editor && document.querySelector('.CodeMirror-wrap')) {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n document.getElementById('yasr').style.minHeight = newHeight + 'px';\n //window.editor.refresh();\n } else {\n let timer;\n if (verticalView) {\n timer = $timeout(function () {\n $scope.fixSizesOnHorizontalViewModeSwitch(verticalView);\n }, 100);\n } else {\n timer = $timeout($scope.fixSizesOnHorizontalViewModeSwitch, 100);\n }\n\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n } else {\n if ($scope.viewMode === 'yasr') {\n let newHeight = visibleWindowHeight() - (document.querySelector('.CodeMirror-wrap').getBoundingClientRect().top);\n newHeight -= 40;\n document.querySelector('.CodeMirror-wrap').style.height = newHeight + 'px';\n } else {\n $scope.noPadding = {};\n document.querySelector('.CodeMirror-wrap').style.height = '';\n }\n document.getElementById('yasr').style.minHeight = '';\n }\n if (window.yasr && window.yasr.container) {\n $timeout(function () {\n window.yasr.container.resize();\n }, 100);\n }\n }\n\n if (!$scope.orientationViewMode) {\n showHideEditor();\n }\n\n function changeViewMode(tabID) {\n $scope.viewMode = 'none';\n $scope.orientationViewMode = !$scope.orientationViewMode;\n fixSizesOnHorizontalViewModeSwitch();\n $('.dataTables_filter').remove();\n $('.resultsTable').remove();\n $timeout(function () {\n loadTab();\n selectTab(tabID);\n }, 100);\n }\n\n function showHideEditor() {\n fixSizesOnHorizontalViewModeSwitch(true);\n }\n\n function focusQueryEditor() {\n if (!angular.element(document).find('.editable-input').is(':focus')) {\n angular.element(document).find('.CodeMirror textarea:first-child').focus();\n }\n }\n\n // end of query editor results orientation operations\n\n function selectTab(id) {\n $timeout(function () {\n $('a[data-id = \"' + id + '\"]').tab('show');\n }, 0);\n }\n\n // start of query operations\n function runQuery(changePage, explain) {\n $scope.executedQueryTab = $scope.currentQuery;\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error('Similarity indexes work only with SELECT queries.');\n return;\n }\n if (explain && !(window.editor.getQueryType() === 'SELECT')) {\n toastr.warning('Explain only works with SELECT queries.');\n return;\n }\n\n if (window.editor.getQueryMode() === 'update') {\n toastr.warning('Cannot execute updates from this editor.');\n return;\n }\n\n $scope.explainRequested = explain;\n if (!$scope.queryIsRunning) {\n if (changePage) {\n $scope.currentTabConfig.resultsCount = 0;\n } else {\n $scope.resetCurrentTabConfig();\n }\n\n // Hides the editor and shows the yasr results\n $scope.viewMode = 'editor';\n if ($scope.orientationViewMode) {\n $scope.fixSizesOnHorizontalViewModeSwitch();\n }\n\n setLoader(true, 'Evaluating query');\n window.editor.query();\n }\n }\n\n // FIXME: this is copy-pasted in graphs-config.controller.js and query-editor.controller.js. Find a way to avoid duplications\n function getNamespaces() {\n // Signals the namespaces are to be fetched => loader will be shown\n setLoader(true, 'Refreshing namespaces', 'Normally this is a fast operation but it may take longer if a bigger repository needs to be initialised first.');\n RDF4JRepositoriesRestService.getRepositoryNamespaces()\n .success(function (data) {\n const usedPrefixes = {};\n data.results.bindings.forEach(function (e) {\n usedPrefixes[e.prefix.value] = e.namespace.value;\n });\n $scope.namespaces = usedPrefixes;\n })\n .error(function (data) {\n $scope.repositoryError = getError(data);\n })\n .finally(function () {\n // Signals namespaces were fetched => loader will be hidden\n setLoader(false);\n });\n }\n\n function changePagination() {\n runQuery(true, $scope.explainRequested);\n }\n\n if ($scope.getActiveRepository()) {\n getNamespaces();\n }\n\n $scope.$on('$destroy', function () {\n window.editor = null;\n window.yasr = null;\n });\n\n function toggleSampleQueries() {\n }\n\n // Add known prefixes\n function addKnownPrefixes() {\n SparqlRestService.addKnownPrefixes(JSON.stringify(window.editor.getValue()))\n .success(function (data) {\n if (angular.isDefined(window.editor) && angular.isDefined(data) && data !== window.editor.getValue()) {\n window.editor.setValue(data);\n }\n })\n .error(function (data) {\n const msg = getError(data);\n toastr.error(msg, 'Error! Could not add known prefixes');\n return true;\n });\n }\n\n $('textarea').on('paste', function () {\n $timeout(function () {\n addKnownPrefixes();\n }, 0);\n });\n\n function querySelected(query) {\n const tabId = getExistingTabId(query);\n $scope.toggleSampleQueries();\n if (!angular.isDefined(tabId)) {\n $scope.addNewTab(null, query.name, query.body);\n } else {\n selectTab(tabId);\n }\n }\n\n function getExistingTabId(query) {\n let existingTabId = undefined;\n angular.forEach($scope.tabsData, function (item) {\n if (item.name === query.name && item.query === query.body) {\n existingTabId = item.id;\n return item;\n }\n });\n\n return existingTabId;\n }\n\n\n // end of query operations\n\n // start of query tab operations\n function findTabIndexByID(id) {\n for (let i = 0; i < $scope.tabsData.length; i++) {\n const tab = $scope.tabsData[i];\n if (tab.id === id) {\n return i;\n }\n }\n }\n\n $scope.$watchCollection('[currentQuery.inference, currentQuery.sameAs]', function () {\n saveQueryToLocal($scope.currentQuery);\n });\n\n function saveTab(id) {\n const idx = findTabIndexByID(id);\n // Tab was deleted, don't try to save it's state\n if (idx === undefined) {\n return {};\n }\n const tab = $scope.tabsData[idx];\n //tab.query = window.editor.getValue();\n $scope.saveQueryToLocal(tab);\n return tab;\n }\n\n function addNewTab(callback, tabName, savedQuery) {\n }\n\n function loadTab() {\n $scope.tabsData = [$scope.currentQuery];\n\n const tab = $scope.currentQuery;\n\n if ($scope.currentQuery.query === null || $scope.currentQuery.query === '') {\n // hack for YASQE bug\n window.editor.setValue(' ');\n } else {\n window.editor.setValue($scope.currentQuery.query || ' ');\n }\n\n $timeout(function () {\n $scope.currentTabConfig = {};\n $scope.currentTabConfig.queryType = tab.queryType;\n $scope.currentTabConfig.resultsCount = tab.resultsCount;\n\n $scope.currentTabConfig.offset = tab.offset;\n $scope.currentTabConfig.allResultsCount = tab.allResultsCount;\n $scope.currentTabConfig.page = tab.page;\n $scope.currentTabConfig.pageSize = tab.pageSize;\n\n $scope.currentTabConfig.timeFinished = tab.timeFinished;\n $scope.currentTabConfig.timeTook = tab.timeTook;\n $scope.currentTabConfig.sizeDelta = tab.sizeDelta;\n $scope.$apply();\n }, 0);\n\n //Remove paddign of yasr so it will be aligned with sparql editor\n $('#yasr').css('padding', '0');\n }\n\n function getQueryID(element) {\n return $(element).attr('data-id');\n }\n\n $scope.$on('tabAction', function (e, tabEvent) {\n if (tabEvent.relatedTarget) {\n $scope.saveTab(getQueryID(tabEvent.relatedTarget));\n }\n $scope.loadTab(getQueryID(tabEvent.target));\n });\n\n $scope.$on('deleteAllexeptSelected', function (e, tabs) {\n $scope.tabsData = tabs;\n $scope.tabs = tabs;\n });\n // end of query tab operations\n\n $scope.currentQuery = angular.copy(defaultTabConfig);\n // $scope.state = {};\n $scope.showSampleQueries = false;\n $scope.savedQuery = {};\n $scope.sampleQueries = {};\n\n $scope.getResultsDescription = function () {\n };\n\n $scope.getUpdateDescription = function () {\n };\n\n $scope.getStaleWarningMessage = function () {\n };\n\n $scope.saveSearchQuery = function () {\n // Should validate that query is SELECT\n if (window.editor.getQueryType() !== 'SELECT') {\n toastr.error('Similarity index requires SELECT queries.');\n return;\n }\n let data = {\n name: $scope.newIndex.name,\n changedQuery: $scope.currentQuery.query,\n isSearchQuery: $scope.page === 2\n };\n\n return SimilarityRestService.saveSearchQuery(JSON.stringify(data))\n .then(async function () {\n await Notifications.showToastMessageWithDelay($scope.page === 2 ? 'Changed search query' : 'Changed analogical query');\n $location.url('similarity');\n }, function (response) {\n toastr.error(getError(response), 'Could not change query!');\n });\n };\n\n $scope.getCloseBtnMsg = function () {\n return \"Closes \" + ($scope.editSearchQuery ? \"query edition\": \"index creation\") + \" without saving the changes.\"\n }\n}\n"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(window.webpackJsonp=window.webpackJsonp||[]).push([[23,42,78,79,94],{110:function(e,r,o){"use strict";o.r(r);o(2),o(7),o(13),o(42),o(73),o(74),o(8),o(75),o(25),o(26);angular.module("graphdb.framework.repositories",["ui.bootstrap","toastr","ngCookies","ngRoute","graphdb.framework.repositories.controllers","graphdb.framework.repositories.ontop-repo.directive","graphdb.framework.repositories.fedx-repo.directive","graphdb.framework.core.services.repositories","graphdb.framework.core.directives","graphdb.framework.core.controllers","graphdb.framework.settings"])},40:function(e,r,o){"use strict";o.r(r);o(2),o(9);function t(e,r,o,t){e.supportsStatistics=!0,e.settings={statistics:!1},e.getSettings=function(){e.loader=!0,t.getStatistics().then((function(r){e.settings.statistics="true"===r.data,e.supportsStatistics=!0}),(function(o){if(404===o.status)e.supportsStatistics=!1;else{const e=getError(o.data);r.error(e,"Error getting settings")}}))},e.getSettings(),e.setSettings=function(){e.loader=!0,t.toggleStatistics(e.settings.statistics).then((function(){o.close(),r.success("Settings have been saved")}),(function(e){const o=getError(e.data);r.error(o,"Error saving settings")}))},e.submitForm=function(){e.setSettings()},e.cancel=function(){o.dismiss("cancel")}}function i(e,r,o,t){e.loader=!0,r.checkLicenseHardcoded().success((function(e){t.isLicenseHardcoded="true"===e})).error((function(){t.isLicenseHardcoded=!1,o.error("Error checking license availability")})).then((function(){r.getLicenseInfo().success((function(r){e.loader=!1,e.license=r})).error((function(){e.loader=!1,e.license={message:"No license was set.",valid:!1}}))}))}function s(e,r,o,t,i,s,n){e.$on("securityInit",(function(){n.isAdmin()||o.path("/license")})),e.sendLicenseToValidateAndActivate=c;const a=$(".license-textarea");function c(e){r.sendLicenseToValidate(e).success((function(o){"Invalid"!==o.licensee?(a.val(e),function(e,o){t.open({templateUrl:"js/angular/settings/modal/validate-license.html",controller:"ValidateLicenseModalCtrl",resolve:{license:function(){return e}}}).result.then((function(){!function(e){e||(e=a.val());if(e){const o=atob(e.replace(/\s/g,""));r.registerLicense(o).success((function(){s.history.back()})).error((function(){i.error("Error registering GraphDB license")}))}else i.error("No license code available in textarea")}(o)}))}(o,e)):(a.val(""),i.error(o.message))})).error((function(){i.error("Invalid license")}))}e.$watch("currentFile",(function(){if(e.currentFile){const o=e.currentFile;r.extractFromLicenseFile(o).success((function(e){c(e)})).error((function(){i.error("Could not upload file")}))}})),e.getBackToPreviousPage=function(){s.history.back()}}function n(e,r,o){e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")},e.license=o}function a(e){e.loader=!0,e.setLoader=function(r){e.loader=r}}angular.module("graphdb.framework.settings.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","toastr"]).controller("ActiveLocationSettingsCtrl",t).controller("ValidateLicenseModalCtrl",n).controller("LicenseCtrl",i).controller("RegisterLicenseCtrl",s).controller("LoaderSamplesCtrl",a),t.$inject=["$scope","toastr","$modalInstance","LicenseRestService"],i.$inject=["$scope","LicenseRestService","toastr","$rootScope"],s.$inject=["$scope","LicenseRestService","$location","$modal","toastr","$window","$jwtAuth"],n.$inject=["$scope","$modalInstance","license"],a.$inject=["$scope"]},73:function(e,r,o){"use strict";o.r(r);var t=o(42);function i(e,r,o,i){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/ontop-repo.html",link:function(s){s.selectedDriver={driverType:"generic",driverName:"Generic JDBC Driver",jdbc:{hostName:"",port:"",databaseName:"",userName:"",password:"",driverClass:"",url:""},urlTemplate:"",downloadDriverUrl:""},s.ontopRepoFileNames={},s.supportedDriversData=[],s.ontopRepoFileLabels={propertiesFile:"JDBC properties",obdaFile:"OBDA or R2RML",owlFile:"ontology file",constraintFile:"constraint file",dbMetadataFile:"DB metadata file"},s.ontopRepoFiles=Object.keys(s.ontopRepoFileLabels),s.ontopRepoFiles.forEach((function(e){s.repositoryInfo.params[e]&&(s.ontopRepoFileNames[e]=Object(t.getFileName)(s.repositoryInfo.params[e].value))})),s.supportedDriverLabels={hostName:"Hostname",port:"Port",databaseName:"Database name",userName:"Username",password:"Password",driverClass:"Driver class",url:"URL"},s.propertiesFileParams=Object.keys(s.supportedDriverLabels),s.classAvailable=!1,s.genericDriverType="generic",s.propertiesFile="propertiesFile";const n=[s.propertiesFile,"obdaFile"],a=["hostName","databaseName","userName"];function c(){return s.selectedDriver.driverType!==s.genericDriverType?a.filter((function(e){return!s.selectedDriver.jdbc[e]})).length>0&&(o.error("Missing required field"),1)?Promise.reject("Missing required field"):(s.uploadFileLoader=!0,r.updatePropertiesFile(s.repositoryInfo.params[s.propertiesFile].value,s.selectedDriver.jdbc).success((function(e){s.ontopRepoFileNames[s.propertiesFile]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[s.propertiesFile].value=e.fileLocation,s.uploadFileLoader=!1})).error((function(e){l("Error",e),s.uploadFileLoader=!1}))):Promise.resolve()}function l(e,r){const t=getError(r);o.error(t,e)}s.loadDriverByClass=function(e){const r=s.supportedDriversData.find(r=>r.driverClass===e);return r&&s.copyDriverProperties(r),r},s.selectDriverByType=function(e){s.copyDriverProperties(s.supportedDriversData.find(r=>r.driverType===e)),s.concatURL("hostName",s)},s.copyDriverProperties=function(e){s.selectedDriver.driverType=e.driverType,s.selectedDriver.jdbc.driverClass=e.driverClass,s.selectedDriver.jdbc.url=e.urlTemplate,s.selectedDriver.urlTemplate=e.urlTemplate,s.selectedDriver.downloadDriverUrl=e.downloadDriverUrl,s.selectedDriver.portRequired=e.portRequired,s.classAvailable=e.classAvailable},s.isReadOnly=function(e){return"driverClass"===e||"url"===e},s.editFile=function(o){e.open({templateUrl:"js/angular/templates/modal/editRepoFile.html",controller:"EditRepositoryFileCtrl",resolve:{file:function(){return s.repositoryInfo.params[o]?s.repositoryInfo.params[o].value:""}}}).result.then((function(e){r.updateRepositoryFileContent(e.fileLocation,e.content).success((function(e){s.ontopRepoFileNames[o]=Object(t.getFileName)(e.fileLocation),s.repositoryInfo.params[o].value=e.fileLocation})).error((function(e){l("Error",e)}))}))},s.uploadOntopRepoFile=function(e,r){e&&e.length&&(s.uploadFile=e[0],s.uploadFileLoader=!0,i.upload({url:"rest/repositories/uploadFile",data:{uploadFile:s.uploadFile}}).success((function(e){e.success?(s.ontopRepoFileNames[r]=s.uploadFile.name,s.repositoryInfo.params[r].value=e.fileLocation):o.error(e.errorMessage),s.uploadFileLoader=!1})).error((function(e){l("Error",e),s.uploadFile="",s.uploadFileLoader=!1})))},s.concatURL=function(e){if("hostName"===e||"port"===e||"databaseName"===e){let e=s.selectedDriver.urlTemplate;s.selectedDriver.jdbc.hostName&&(e=s.selectedDriver.jdbc.port?e.replace("{hostport}",`${s.selectedDriver.jdbc.hostName}:${s.selectedDriver.jdbc.port}`):e.replace("{hostport}",s.selectedDriver.jdbc.hostName)),s.selectedDriver.jdbc.databaseName&&(e=e.replace("{database}",s.selectedDriver.jdbc.databaseName)),s.selectedDriver.jdbc.url=e}},s.getInputType=function(e){switch(e){case"password":return"password";case"port":return"number";default:return"text"}},s.checkForRequiredOntopFiles=function(){return c().then((function(){return n.filter((function(e){return!s.repositoryInfo.params[e].value})).length>0?(o.error("Missing required ontop repo file"),Promise.reject("Missing required ontop repo file")):Promise.resolve()}))},s.validateOntopPropertiesConnection=function(){c().then((function(){r.validateOntopPropertiesConnection(s.repositoryInfo.params.propertiesFile).success((function(){o.success("Connection is successful")})).error((function(e){l("Failed to connect",e)}))}))},s.isOntopRepoFileUploaded=function(){return s.repositoryInfo.params.propertiesFile&&s.repositoryInfo.params.propertiesFile.value.length>0},s.isRequiredOntopRepoFile=function(e){return n.indexOf(e)>-1},s.isRequiredField=function(e){return a.indexOf(e)>-1||"port"===e&&s.selectedDriver.portRequired},s.getFieldTooltip=function(e){return"port"===e&&s.selectedDriver.portRequired&&(e="portIfRequired"),s.repoTooltips.ontop[e]},s.editOntopRepo=function(){s.checkForRequiredOntopFiles().then((function(){s.editRepository()})).catch((function(e){}))},s.createOntopRepo=function(){s.repositoryInfo.id?s.checkForRequiredOntopFiles().then((function(){s.createRepo()})).catch((function(e){})):o.error("Repository ID cannot be empty")},s.goBackToPrevious=function(){s.goBackToPreviousLocation()},r.getSupportedDriversData().success((function(e){s.supportedDriversData=e})).error((function(e){l("Error",e)})).then((function(){s.editRepoPage&&r.loadPropertiesFile(s.repositoryInfo.params[s.propertiesFile].value).success((function(e){s.loadDriverByClass(e.driverClass)&&(s.selectedDriver.jdbc.hostName=e.hostName,s.selectedDriver.jdbc.port=parseInt(e.port),s.selectedDriver.jdbc.databaseName=e.databaseName,s.selectedDriver.jdbc.userName=e.userName,s.selectedDriver.jdbc.password=e.password,s.selectedDriver.jdbc.url=e.url)})).error((function(e){l("Error",e),s.uploadFileLoader=!1}))}))}}}angular.module("graphdb.framework.repositories.ontop-repo.directive",[]).directive("ontopRepo",i),i.$inject=["$modal","RepositoriesRestService","toastr","Upload"]},74:function(e,r){function o(e,r,o,t,i){return{restrict:"E",scope:!1,templateUrl:"js/angular/repositories/templates/fedx-repo.html",link:function(t){const s="ResolvableRepository";function n(){for(const e of t.fedxMembers)t.knownRepos=t.knownRepos.filter((function(r){return e.repositoryServer?r.id!==e.repositoryName||r.location!==e.repositoryServer:r.id!==e.repositoryName||!r.local}))}function a(){return r.getRepositories().success((function(e){t.allLocalRepos=e.slice()})).error((function(e){const r=getError(e);o.error(r,"Error")})).then((function(){i.getLocations().success((function(e){t.locations=e.slice()})).error((function(e){const r=getError(e);o.error(r,"Error")})).then((function(){t.locations.forEach(e=>(function(e){return r.getRepositoriesFromKnownLocation(e).success((function(e){t.knownRepos=t.allLocalRepos.filter(e=>-1!==t.knownRepos.indexOf(e));for(const r of e)t.allAttachedRepos=t.allAttachedRepos.filter(e=>e.id!==r.id||e.location!==r.location);t.allAttachedRepos=t.allAttachedRepos.concat(e.slice()),t.knownRepos=t.knownRepos.concat(t.allAttachedRepos)})).error((function(e){const r=getError(e);o.error(r,"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 r=t.fedxMembers.find(e=>"true"===e.writable);r&&((r.store!==s||e.store===s&&r.repositoryName===e.repositoryName)&&("RemoteRepository"!==r.store||"RemoteRepository"===e.store&&r.repositoryName===e.repositoryName&&r.repositoryServer===e.repositoryServer)||(r.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===s?t.allLocalRepos.find(r=>r.id===e.repositoryName):"RemoteRepository"!==e.store||(r=e,!t.locations.find(e=>e.uri===r.repositoryServer))||t.allAttachedRepos.find(r=>r.id===e.repositoryName&&r.location===e.repositoryServer);var r},t.getRepositoryServer=function(e){return e.local?"Local":e.location};const c=setInterval((function(){a()}),5e3);function l(e){t.fedxMembers.push(e),t.repositoryInfo.params.member.value=t.fedxMembers}function p(e){return"/"===e.slice(-1)?e.slice(0,-1):e}function d(){return t.editRepoPage&&!t.editRepoPage||!t.model.editMode}t.$on("$destroy",(function(){clearInterval(c)})),t.addMember=function(e){if("Local"===t.getRepositoryServer(e))t.addLocalMember(e);else{let r={store:"RemoteRepository",repositoryName:e.id,repositoryServer:e.location,username:"",password:"",supportsASKQueries:"true",writable:"false"};t.knownRepos=t.knownRepos.filter((function(e){return r.repositoryServer?e.id!==r.repositoryName||e.location!==r.repositoryServer:e.id!==r.repositoryName||!e.local})),l(r)}},t.addLocalMember=function(e){let r={store:s,repositoryName:e.id,repoType:e.type,respectRights:"true",writable:"false"};t.knownRepos=t.knownRepos.filter((function(e){return r.repositoryServer?e.id!==r.repositoryName||e.location!==r.repositoryServer:e.id!==r.repositoryName||!e.local})),l(r)},t.removeMember=function(e){e.store&&e.store===s?(t.fedxMembers=t.fedxMembers.filter(r=>r.repositoryName!==e.repositoryName||r.store!==e.store),t.allLocalRepos=[],a()):e.store&&"SPARQLEndpoint"===e.store?t.fedxMembers=t.fedxMembers.filter(r=>r.endpoint!==e.endpoint):e.store&&"NativeStore"===e.store?t.fedxMembers=t.fedxMembers.filter(r=>r.repositoryLocation!==e.repositoryLocation):e.store&&"RemoteRepository"===e.store&&(t.fedxMembers=t.fedxMembers.filter(r=>r.repositoryName!==e.repositoryName||r.repositoryServer!==e.repositoryServer||r.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(r){r.store===s?(t.mode="local",t.model={editMode:!0,store:r.store,respectRights:r.respectRights,repositoryName:r.repositoryName,repoType:r.repoType,writable:r.writable}):(t.mode="remote",t.model={editMode:!0,store:r.store,repositoryName:r.repositoryName,repositoryServer:r.repositoryServer,sparqlEndpoint:"SPARQLEndpoint"===r.store?r.endpoint:r.repositoryLocation,username:r.username,password:r.password,supportsASKQueries:r.supportsASKQueries,writable:r.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 s: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===s)e={store:s,repositoryName:t.model.repositoryName,repoType:t.model.repoType,respectRights:t.model.respectRights,writable:t.model.writable},t.fedxMembers=t.fedxMembers.filter(r=>r.repositoryName!==e.repositoryName||r.store!==e.store);else if(t.model.repositoryName&&"RemoteRepository"===t.model.store){if(e={store:"RemoteRepository",repositoryName:t.model.repositoryName,repositoryServer:p(t.model.repositoryServer),username:t.model.username,password:t.model.password,writable:t.model.writable},d()&&t.fedxMembers.find(r=>r.repositoryName===e.repositoryName&&r.repositoryServer===e.repositoryServer)){let r=t.resolveName(e);return o.error(`Repository ${r} already added as a FedX member`),void t.$modalInstance.close()}t.fedxMembers=t.fedxMembers.filter(r=>r.repositoryName!==e.repositoryName||r.repositoryServer!==e.repositoryServer)}else{if(e={store:"SPARQLEndpoint",endpoint:p(t.model.sparqlEndpoint),username:t.model.username,password:t.model.password,supportsASKQueries:t.model.supportsASKQueries,writable:t.model.writable},d()&&t.fedxMembers.find(r=>r.endpoint===e.endpoint)){let r=t.resolveName(e);return o.error(`SPARQL endpoint ${r} already added as a FedX member`),void t.$modalInstance.close()}t.fedxMembers=t.fedxMembers.filter(r=>r.endpoint!==e.endpoint)}l(e),n(),t.$modalInstance.close()},a()}}}angular.module("graphdb.framework.repositories.fedx-repo.directive",[]).directive("fedxRepo",o),o.$inject=["$modal","RepositoriesRestService","toastr","$timeout","LocationsRestService"]},75:function(e,r,o){"use strict";o.r(r);o(2),o(7),o(5),o(40),o(15),o(9),o(25),o(26);function t(e){e.interceptors.push("$unauthorizedInterceptor")}function i(e,r){e.$on("$locationChangeStart",(function(){e.isLicenseHardcoded&&"/license/register"===r.url()&&r.path("license")}))}angular.module("graphdb.framework.settings",["toastr","ui.bootstrap","graphdb.framework.rest.license.service","graphdb.framework.settings.controllers","graphdb.framework.core.interceptors.unauthorized","graphdb.framework.core.services.jwtauth"]).config(t).run(i),t.$inject=["$httpProvider","$routeProvider"],i.$inject=["$rootScope","$location"]}}]);
|
|
2
|
-
//# sourceMappingURL=23.102a20601f717ba91551.bundle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./src/js/angular/repositories/app.js","webpack:///./src/js/angular/settings/controllers.js","webpack:///./src/js/angular/repositories/ontop-repo.directive.js","webpack:///./src/js/angular/repositories/fedx-repo.directive.js","webpack:///./src/js/angular/settings/app.js"],"names":["angular","module","ActiveLocationSettingsCtrl","$scope","toastr","$modalInstance","LicenseRestService","supportsStatistics","settings","statistics","getSettings","loader","getStatistics","then","response","data","status","msg","getError","error","setSettings","toggleStatistics","close","success","submitForm","cancel","dismiss","LicenseCtrl","$rootScope","checkLicenseHardcoded","res","isLicenseHardcoded","getLicenseInfo","license","message","valid","RegisterLicenseCtrl","$location","$modal","$window","$jwtAuth","$on","isAdmin","path","sendLicenseToValidateAndActivate","textAreaSel","$","licenseCode","sendLicenseToValidate","validatedLicense","licensee","val","open","templateUrl","controller","resolve","result","decodedLicense","atob","replace","registerLicense","history","back","confirmWantedNewLicenseDetails","$watch","currentFile","file","extractFromLicenseFile","getBackToPreviousPage","ValidateLicenseModalCtrl","ok","LoaderSamplesCtrl","setLoader","$inject","ontopRepoDirective","RepositoriesRestService","Upload","restrict","scope","link","selectedDriver","driverType","driverName","jdbc","hostName","port","databaseName","userName","password","driverClass","url","urlTemplate","downloadDriverUrl","ontopRepoFileNames","supportedDriversData","ontopRepoFileLabels","propertiesFile","obdaFile","owlFile","constraintFile","dbMetadataFile","ontopRepoFiles","Object","keys","forEach","key","repositoryInfo","params","value","supportedDriverLabels","propertiesFileParams","classAvailable","genericDriverType","REQUIRED_ONTOP_REPO_PARAMS","REQUIRED_PROPERTIES_FIELD_PARAMS","updateProperties","filter","requiredField","length","Promise","reject","uploadFileLoader","updatePropertiesFile","fileLocation","showErrorMsg","title","loadDriverByClass","foundDriver","find","driver","copyDriverProperties","selectDriverByType","concatURL","portRequired","isReadOnly","labelName","editFile","updateRepositoryFileContent","content","uploadOntopRepoFile","files","param","uploadFile","upload","name","errorMessage","getInputType","checkForRequiredOntopFiles","requiredFile","validateOntopPropertiesConnection","isOntopRepoFileUploaded","isRequiredOntopRepoFile","indexOf","isRequiredField","field","getFieldTooltip","repoTooltips","ontop","editOntopRepo","editRepository","catch","err","createOntopRepo","id","createRepo","goBackToPrevious","goBackToPreviousLocation","getSupportedDriversData","editRepoPage","loadPropertiesFile","driverData","parseInt","directive","fedxRepoDirective","$timeout","LocationsRestService","LOCAL_REPO_STORE","populateKnownRepos","member","fedxMembers","knownRepos","repo","repositoryServer","repositoryName","location","local","getKnownRepos","getRepositories","allLocalRepos","slice","getLocations","locations","l","getRepositoriesFromKnownLocation","el","allAttachedRepos","concat","getRepositoriesFromLocation","uri","setWritableRepo","currentWritable","writable","store","JSON","stringify","getActiveClass","checkIfRepoExist","getRepositoryServer","localReposTimer","setInterval","updateMembers","push","removeEndingSlash","checkEditMode","model","editMode","clearInterval","addMember","repository","addLocalMember","username","supportsASKQueries","repoType","type","respectRights","removeMember","endpoint","repositoryLocation","addRemoteMember","mode","sparqlEndpoint","getMemberIcon","editFedXRepository","resolveName","resolvedName","config","$httpProvider","interceptors","run"],"mappings":"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","file":"23.102a20601f717ba91551.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/core/controllers';\nimport 'angular/repositories/controllers';\nimport 'angular/repositories/ontop-repo.directive';\nimport 'angular/repositories/fedx-repo.directive';\nimport 'angular/core/services/repositories.service';\nimport 'angular/settings/app';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nconst modules = [\n 'ui.bootstrap',\n 'toastr',\n 'ngCookies',\n 'ngRoute',\n 'graphdb.framework.repositories.controllers',\n 'graphdb.framework.repositories.ontop-repo.directive',\n 'graphdb.framework.repositories.fedx-repo.directive',\n 'graphdb.framework.core.services.repositories',\n 'graphdb.framework.core.directives',\n 'graphdb.framework.core.controllers',\n 'graphdb.framework.settings'\n];\n\nangular.module('graphdb.framework.repositories', modules);\n","import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\n\nangular\n .module('graphdb.framework.settings.controllers', [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'toastr'\n ])\n .controller('ActiveLocationSettingsCtrl', ActiveLocationSettingsCtrl)\n .controller('ValidateLicenseModalCtrl', ValidateLicenseModalCtrl)\n .controller('LicenseCtrl', LicenseCtrl)\n .controller('RegisterLicenseCtrl', RegisterLicenseCtrl)\n .controller('LoaderSamplesCtrl', LoaderSamplesCtrl);\n\nActiveLocationSettingsCtrl.$inject = ['$scope', 'toastr', '$modalInstance', 'LicenseRestService'];\n\nfunction ActiveLocationSettingsCtrl($scope, toastr, $modalInstance, LicenseRestService) {\n $scope.supportsStatistics = true;\n $scope.settings = {statistics: false};\n $scope.getSettings = getSettings;\n\n function getSettings() {\n $scope.loader = true;\n LicenseRestService.getStatistics().then(function (response) {\n $scope.settings.statistics = response.data === 'true';\n $scope.supportsStatistics = true;\n }, function (response) {\n if (response.status === 404) {\n $scope.supportsStatistics = false;\n } else {\n const msg = getError(response.data);\n toastr.error(msg, 'Error getting settings');\n }\n });\n }\n\n $scope.getSettings();\n\n $scope.setSettings = function () {\n $scope.loader = true;\n LicenseRestService.toggleStatistics($scope.settings.statistics).then(function () {\n $modalInstance.close();\n toastr.success('Settings have been saved');\n }, function (response) {\n const msg = getError(response.data);\n toastr.error(msg, 'Error saving settings');\n });\n };\n\n $scope.submitForm = function () {\n $scope.setSettings();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}\n\nLicenseCtrl.$inject = ['$scope', 'LicenseRestService', 'toastr', '$rootScope'];\n\nfunction LicenseCtrl($scope, LicenseRestService, toastr, $rootScope) {\n $scope.loader = true;\n\n LicenseRestService.checkLicenseHardcoded()\n .success(function (res) {\n $rootScope.isLicenseHardcoded = (res === 'true');\n })\n .error(function () {\n $rootScope.isLicenseHardcoded = false;\n toastr.error('Error checking license availability');\n })\n .then(function () {\n LicenseRestService.getLicenseInfo()\n .success(function (res) {\n $scope.loader = false;\n $scope.license = res;\n // check if you have a hardcoded license that is not activated through the workbench and if\n // you do disable ability to update license\n })\n .error(function () {\n // no license but we need to check for 417\n $scope.loader = false;\n $scope.license = {message: 'No license was set.', valid: false};\n });\n });\n}\n\nRegisterLicenseCtrl.$inject = ['$scope', 'LicenseRestService', '$location', '$modal', 'toastr', '$window', '$jwtAuth'];\n\nfunction RegisterLicenseCtrl($scope, LicenseRestService, $location, $modal, toastr, $window, $jwtAuth) {\n $scope.$on('securityInit', function () {\n if (!$jwtAuth.isAdmin()) {\n $location.path('/license');\n }\n });\n\n $scope.sendLicenseToValidateAndActivate = sendLicenseToValidateAndActivate;\n\n const textAreaSel = $('.license-textarea');\n\n // watch for uploaded license file\n $scope.$watch('currentFile', function () {\n if ($scope.currentFile) {\n const file = $scope.currentFile;\n LicenseRestService.extractFromLicenseFile(file)\n .success(function (licenseCode) {\n sendLicenseToValidateAndActivate(licenseCode);\n }).error(function () {\n toastr.error('Could not upload file');\n });\n }\n });\n\n $scope.getBackToPreviousPage = function () {\n $window.history.back();\n };\n\n // send license code for validation and activation\n function sendLicenseToValidateAndActivate(licenseCode) {\n LicenseRestService.sendLicenseToValidate(licenseCode)\n .success(function (validatedLicense) {\n if (validatedLicense.licensee !== 'Invalid') {\n // write code to textarea\n textAreaSel.val(licenseCode);\n // pop dialog for license details confirmation\n confirmWantedNewLicenseDetails(validatedLicense, licenseCode);\n } else {\n // clear textarea on invalid license\n textAreaSel.val('');\n // show error\n toastr.error(validatedLicense.message);\n }\n })\n .error(function () {\n toastr.error('Invalid license');\n });\n }\n\n\n // pops a modal dialog which asks you if your expected license details are correct\n // and sends license to GraphDB upon confirmation\n function confirmWantedNewLicenseDetails(license, licenseCode) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/settings/modal/validate-license.html',\n controller: 'ValidateLicenseModalCtrl',\n resolve: {\n license: function () {\n return license;\n }\n }\n });\n\n modalInstance.result.then(function () {\n registerLicense(licenseCode);\n });\n }\n\n // send license code to GraphDB for activation\n function registerLicense(licenseCode) {\n if (!licenseCode) {\n licenseCode = textAreaSel.val();\n }\n\n if (licenseCode) {\n // replacing whitespace makes this work on Safari too,\n // whereas other browser happily ignore the whitespace\n const decodedLicense = atob(licenseCode.replace(/\\s/g, ''));\n LicenseRestService.registerLicense(decodedLicense)\n .success(function () {\n $window.history.back();\n }).error(function () {\n toastr.error('Error registering GraphDB license');\n });\n } else {\n toastr.error('No license code available in textarea');\n }\n }\n}\n\nValidateLicenseModalCtrl.$inject = ['$scope', '$modalInstance', 'license'];\n\nfunction ValidateLicenseModalCtrl($scope, $modalInstance, license) {\n $scope.ok = ok;\n $scope.cancel = cancel;\n $scope.license = license;\n\n function ok() {\n $modalInstance.close();\n }\n\n function cancel() {\n $modalInstance.dismiss('cancel');\n }\n}\n\nLoaderSamplesCtrl.$inject = ['$scope'];\n\nfunction LoaderSamplesCtrl($scope) {\n $scope.loader = true;\n $scope.setLoader = function (loader) {\n $scope.loader = loader;\n };\n}\n","import {getFileName} from \"./controllers\";\n\nangular\n .module('graphdb.framework.repositories.ontop-repo.directive', [])\n .directive('ontopRepo', ontopRepoDirective);\n\nontopRepoDirective.$inject = ['$modal', 'RepositoriesRestService', 'toastr', 'Upload'];\n\nfunction ontopRepoDirective($modal, RepositoriesRestService, toastr, Upload) {\n return {\n restrict: 'E',\n scope: false,\n templateUrl: 'js/angular/repositories/templates/ontop-repo.html',\n\n link: linkFunc\n };\n\n function linkFunc($scope) {\n\n $scope.selectedDriver = {\n driverType: \"generic\",\n driverName: \"Generic JDBC Driver\",\n jdbc: {\n hostName: \"\",\n port: \"\",\n databaseName: \"\",\n userName: \"\",\n password: \"\",\n driverClass: \"\",\n url: \"\"\n },\n urlTemplate: \"\",\n downloadDriverUrl: \"\"\n };\n $scope.ontopRepoFileNames = {};\n $scope.supportedDriversData = [];\n $scope.ontopRepoFileLabels =\n {propertiesFile: 'JDBC properties', obdaFile: 'OBDA or R2RML', owlFile: 'ontology file',\n constraintFile: 'constraint file', dbMetadataFile: 'DB metadata file'};\n $scope.ontopRepoFiles = Object.keys($scope.ontopRepoFileLabels);\n $scope.ontopRepoFiles.forEach(function(key) {\n if ($scope.repositoryInfo.params[key]) {\n $scope.ontopRepoFileNames[key] = getFileName($scope.repositoryInfo.params[key].value);\n }\n });\n $scope.supportedDriverLabels = {hostName: 'Hostname', port: \"Port\", databaseName: 'Database name',\n userName: 'Username', password: 'Password', driverClass: 'Driver class', url: 'URL'};\n $scope.propertiesFileParams = Object.keys($scope.supportedDriverLabels);\n $scope.classAvailable = false;\n $scope.genericDriverType = 'generic';\n $scope.propertiesFile = 'propertiesFile';\n\n const REQUIRED_ONTOP_REPO_PARAMS = [$scope.propertiesFile, 'obdaFile'];\n const REQUIRED_PROPERTIES_FIELD_PARAMS = ['hostName', 'databaseName', 'userName'];\n\n function getSupportedDriversData() {\n return RepositoriesRestService.getSupportedDriversData()\n .success(function (response) {\n $scope.supportedDriversData = response;\n }).error(function (response) {\n showErrorMsg('Error', response);\n });\n }\n\n $scope.loadDriverByClass = function (driverClass) {\n const foundDriver = $scope.supportedDriversData\n .find((driver) => driver.driverClass === driverClass);\n if (foundDriver) {\n $scope.copyDriverProperties(foundDriver);\n }\n return foundDriver;\n };\n\n $scope.selectDriverByType = function (driverType) {\n $scope.copyDriverProperties($scope.supportedDriversData\n .find((driver) => driver.driverType === driverType));\n // Call concatURL with proper labelName to apply changes to url field\n $scope.concatURL('hostName', $scope);\n };\n\n $scope.copyDriverProperties = function (driver) {\n $scope.selectedDriver.driverType = driver.driverType;\n $scope.selectedDriver.jdbc.driverClass = driver.driverClass;\n $scope.selectedDriver.jdbc.url = driver.urlTemplate;\n $scope.selectedDriver.urlTemplate = driver.urlTemplate;\n $scope.selectedDriver.downloadDriverUrl = driver.downloadDriverUrl;\n $scope.selectedDriver.portRequired = driver.portRequired;\n $scope.classAvailable = driver.classAvailable;\n };\n\n $scope.isReadOnly = function (labelName) {\n return labelName === 'driverClass' || labelName === 'url';\n }\n\n $scope.editFile = function(file) {\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/templates/modal/editRepoFile.html',\n controller: 'EditRepositoryFileCtrl',\n resolve: {\n file: function () {\n return $scope.repositoryInfo.params[file] ? $scope.repositoryInfo.params[file].value : '';\n }\n }\n });\n\n modalInstance.result.then(function (data) {\n // send data to backend\n RepositoriesRestService.updateRepositoryFileContent(data.fileLocation, data.content).success(function(result) {\n $scope.ontopRepoFileNames[file] = getFileName(result.fileLocation);\n $scope.repositoryInfo.params[file].value = result.fileLocation;\n }).error(function (error) {\n showErrorMsg('Error', error);\n })\n });\n }\n\n $scope.uploadOntopRepoFile = function(files, param) {\n if (files && files.length) {\n $scope.uploadFile = files[0];\n $scope.uploadFileLoader = true;\n Upload.upload({\n url: 'rest/repositories/uploadFile',\n data: {uploadFile: $scope.uploadFile}\n })\n .success(function (data) {\n if (!data.success) {\n toastr.error(data.errorMessage);\n } else {\n $scope.ontopRepoFileNames[param] = $scope.uploadFile.name;\n $scope.repositoryInfo.params[param].value = data.fileLocation;\n }\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFile = '';\n $scope.uploadFileLoader = false;\n });\n }\n }\n\n $scope.concatURL = function(labelName) {\n if (labelName === 'hostName' || labelName === 'port' || labelName === 'databaseName') {\n let result = $scope.selectedDriver.urlTemplate;\n if ($scope.selectedDriver.jdbc.hostName) {\n if ($scope.selectedDriver.jdbc.port) {\n result = result.replace('{hostport}',\n `${$scope.selectedDriver.jdbc.hostName}:${$scope.selectedDriver.jdbc.port}`);\n } else {\n result = result.replace('{hostport}', $scope.selectedDriver.jdbc.hostName);\n }\n }\n\n if ($scope.selectedDriver.jdbc.databaseName) {\n result = result.replace('{database}', $scope.selectedDriver.jdbc.databaseName);\n }\n\n $scope.selectedDriver.jdbc.url = result;\n }\n }\n\n $scope.getInputType = function (labelName) {\n switch (labelName) {\n case 'password':\n return 'password';\n case 'port':\n return 'number';\n default:\n return 'text';\n }\n }\n\n $scope.checkForRequiredOntopFiles = function () {\n // Should guarantee that code will be executed in sequential manner,\n // because properties file is not created yet\n return updateProperties()\n .then(function () {\n const missingRequired = REQUIRED_ONTOP_REPO_PARAMS.filter(function (requiredFile) {\n return !$scope.repositoryInfo.params[requiredFile].value;\n });\n if (missingRequired.length > 0) {\n toastr.error('Missing required ontop repo file');\n return Promise.reject('Missing required ontop repo file');\n }\n return Promise.resolve();\n });\n }\n\n function loadPropertiesFile() {\n RepositoriesRestService.loadPropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value)\n .success(function (driverData) {\n const driver = $scope.loadDriverByClass(driverData.driverClass);\n // If driver class is not found means that the selected driver is a GENERIC ONE\n if (driver) {\n $scope.selectedDriver.jdbc.hostName = driverData.hostName;\n $scope.selectedDriver.jdbc.port = parseInt(driverData.port);\n $scope.selectedDriver.jdbc.databaseName = driverData.databaseName;\n $scope.selectedDriver.jdbc.userName = driverData.userName;\n $scope.selectedDriver.jdbc.password = driverData.password;\n $scope.selectedDriver.jdbc.url = driverData.url;\n }\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.validateOntopPropertiesConnection = function () {\n updateProperties()\n .then(function () {\n RepositoriesRestService.validateOntopPropertiesConnection($scope.repositoryInfo.params.propertiesFile)\n .success(function () {\n toastr.success('Connection is successful');\n }).error(function (data) {\n showErrorMsg('Failed to connect', data);\n });\n });\n }\n\n $scope.isOntopRepoFileUploaded = function() {\n return $scope.repositoryInfo.params.propertiesFile &&\n $scope.repositoryInfo.params.propertiesFile.value.length > 0\n };\n\n function missingRequiredField() {\n const missing = REQUIRED_PROPERTIES_FIELD_PARAMS\n .filter(function (requiredField) {\n return !$scope.selectedDriver.jdbc[requiredField]\n });\n if (missing.length > 0) {\n toastr.error('Missing required field');\n return true;\n }\n return false;\n }\n\n function updateProperties() {\n if ($scope.selectedDriver.driverType !== $scope.genericDriverType) {\n if (missingRequiredField()) {\n return Promise.reject('Missing required field');\n }\n return updatePropertiesFile();\n }\n return Promise.resolve();\n }\n\n function updatePropertiesFile() {\n $scope.uploadFileLoader = true;\n return RepositoriesRestService\n .updatePropertiesFile($scope.repositoryInfo.params[$scope.propertiesFile].value, $scope.selectedDriver.jdbc)\n .success(function (data) {\n $scope.ontopRepoFileNames[$scope.propertiesFile] = getFileName(data.fileLocation);\n $scope.repositoryInfo.params[$scope.propertiesFile].value = data.fileLocation;\n $scope.uploadFileLoader = false;\n }).error(function (data) {\n showErrorMsg('Error', data);\n $scope.uploadFileLoader = false;\n });\n }\n\n $scope.isRequiredOntopRepoFile = function(file) {\n return REQUIRED_ONTOP_REPO_PARAMS.indexOf(file) > -1;\n };\n\n $scope.isRequiredField = function (field) {\n return REQUIRED_PROPERTIES_FIELD_PARAMS.indexOf(field) > -1\n || field === 'port' && $scope.selectedDriver.portRequired;\n };\n\n $scope.getFieldTooltip = function (field) {\n if (field === 'port' && $scope.selectedDriver.portRequired) {\n field = 'portIfRequired';\n }\n return $scope.repoTooltips.ontop[field];\n };\n\n $scope.editOntopRepo = function () {\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.editRepository();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n }\n\n $scope.createOntopRepo = function () {\n if (!$scope.repositoryInfo.id) {\n toastr.error('Repository ID cannot be empty');\n return;\n }\n\n $scope.checkForRequiredOntopFiles()\n .then(function () {\n $scope.createRepo();\n }).catch(function (err) {\n // The catch block is empty, because error is handled in promise\n });\n };\n\n $scope.goBackToPrevious = function () {\n $scope.goBackToPreviousLocation();\n }\n\n function showErrorMsg (title, data) {\n const msg = getError(data);\n toastr.error(msg, title);\n }\n\n getSupportedDriversData()\n .then(function () {\n if ($scope.editRepoPage) {\n loadPropertiesFile();\n }\n });\n }\n}\n","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","import 'angular/core/services';\nimport 'angular/core/directives';\nimport 'angular/rest/license.rest.service';\nimport 'angular/settings/controllers';\nimport 'angular/core/interceptors/unauthorized.interceptor';\nimport 'angular/core/services/jwt-auth.service';\nimport 'ng-file-upload/dist/ng-file-upload.min';\nimport 'ng-file-upload/dist/ng-file-upload-shim.min';\n\nangular.module('graphdb.framework.settings', [\n 'toastr',\n 'ui.bootstrap',\n 'graphdb.framework.rest.license.service',\n 'graphdb.framework.settings.controllers',\n 'graphdb.framework.core.interceptors.unauthorized',\n 'graphdb.framework.core.services.jwtauth'\n])\n .config(config)\n .run(run);\n\nconfig.$inject = ['$httpProvider', '$routeProvider'];\n\nfunction config($httpProvider) {\n $httpProvider.interceptors.push('$unauthorizedInterceptor');\n}\n\nrun.$inject = ['$rootScope', '$location'];\n\nfunction run($rootScope, $location) {\n $rootScope.$on('$locationChangeStart', function () {\n if ($rootScope.isLicenseHardcoded && $location.url() === '/license/register') {\n $location.path('license');\n }\n });\n}\n"],"sourceRoot":""}
|