graphdb-workbench 10.0.0-M2-1 → 10.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/dist/0.f8448f998a59db17e94e.bundle.js +25 -0
- package/dist/1.46d9ecd4119bac145f3b.bundle.js +81 -0
- package/dist/10.a26ae97905866618b14e.bundle.js +7 -0
- package/dist/100.aef098a33fbb925e0d2d.bundle.js +1 -0
- package/dist/101.42eacc63e0fb5834b78a.bundle.js +1 -0
- package/dist/102.4f78eeab62aac245879e.bundle.js +1 -0
- package/dist/103.f38f3cd69ff610955aaf.bundle.js +1 -0
- package/dist/104.2e21f1462021dca17db1.bundle.js +1 -0
- package/dist/105.76381cb7984bcbc9ba9a.bundle.js +1 -0
- package/dist/106.23e14c6b280756d04533.bundle.js +1 -0
- package/dist/107.75e40619cb45972dc39f.bundle.js +1 -0
- package/dist/108.f09444e990531d27e0be.bundle.js +1 -0
- package/dist/109.ef97393181ee534042d8.bundle.js +1 -0
- package/dist/11.0fc995ac096734b915c6.bundle.js +1 -0
- package/dist/110.d59b8565d2255a282669.bundle.js +1 -0
- package/dist/111.fff9f089f65f01013923.bundle.js +1 -0
- package/dist/112.5bd3fcd7c37f1024fe26.bundle.js +1 -0
- package/dist/113.2fa29eca15d32deb3320.bundle.js +1 -0
- package/dist/114.d78615087abe68db7b2f.bundle.js +1 -0
- package/dist/115.558ce3da00d3be87d18a.bundle.js +1 -0
- package/dist/116.577aab1d9bafd0053623.bundle.js +1 -0
- package/dist/117.c20f037799328c931eba.bundle.js +1 -0
- package/dist/118.39c8b47405ab93c40847.bundle.js +1 -0
- package/dist/119.19ee7b3ae143f817c5b1.bundle.js +1 -0
- package/dist/12.7877dd6008df9acf44e1.bundle.js +1 -0
- package/dist/120.b944d5e63424d4307fc8.bundle.js +1 -0
- package/dist/121.3a8954e4c885c56a9817.bundle.js +1 -0
- package/dist/122.71a8cf0330504672fffc.bundle.js +1 -0
- package/dist/123.c6957ecb441d8a09932a.bundle.js +1 -0
- package/dist/124.27e85a0284e2ebeb7d6e.bundle.js +1 -0
- package/dist/125.9e925ae0dd1217d81d89.bundle.js +1 -0
- package/dist/126.a32b57d6108545746ed3.bundle.js +1 -0
- package/dist/127.90d1975083eef3d4a715.bundle.js +1 -0
- package/dist/128.544f1a82e19dd245c7de.bundle.js +1 -0
- package/dist/129.64ec11449e0c734500c2.bundle.js +1 -0
- package/dist/13.fe78f15334507bcc08ae.bundle.js +1 -0
- package/dist/130.f8e68ac86e17b3622d40.bundle.js +1 -0
- package/dist/131.4868fc3a837277c30273.bundle.js +1 -0
- package/dist/132.7815ab1168a254cb0d47.bundle.js +1 -0
- package/dist/133.f87e1685dd5ed920f9b5.bundle.js +1 -0
- package/dist/134.8998ff724a077ecff2ce.bundle.js +1 -0
- package/dist/135.c07268699f76ef7a02ff.bundle.js +1 -0
- package/dist/136.908f1f6fe3054f99b560.bundle.js +1 -0
- package/dist/137.8262ca9736e9818284cd.bundle.js +1 -0
- package/dist/138.8c149cad49010a65b3ca.bundle.js +1 -0
- package/dist/139.97ee12e7a3c05be03456.bundle.js +1 -0
- package/dist/14.0bb211bcdc29c6d8b3b5.bundle.js +29 -0
- package/dist/140.6b3c57ffec700081328b.bundle.js +1 -0
- package/dist/141.4981056237955a34b2e2.bundle.js +1 -0
- package/dist/142.4d60c1795eed3a9570f9.bundle.js +1 -0
- package/dist/143.b7057852f7859cf39e75.bundle.js +1 -0
- package/dist/144.3f85f8eacae521d52355.bundle.js +1 -0
- package/dist/145.9281069e9e77978b640a.bundle.js +1 -0
- package/dist/146.51d2987de4defe7df7c7.bundle.js +1 -0
- package/dist/147.54016549674d35bc2869.bundle.js +1 -0
- package/dist/148.ad95b30f508a0bd02970.bundle.js +1 -0
- package/dist/149.8dd1281617389f8c189b.bundle.js +1 -0
- package/dist/15.6a74adbd30b4d2930e10.bundle.js +1 -0
- package/dist/150.5e0ee4350f8edd0e7b9a.bundle.js +1 -0
- package/dist/151.6b81c99a1ec1b184b82d.bundle.js +1 -0
- package/dist/152.2e1aa910a68f0086825b.bundle.js +1 -0
- package/dist/153.7a64973115bdaec26406.bundle.js +1 -0
- package/dist/154.5938248b52830d0a80a2.bundle.js +1 -0
- package/dist/155.a4511849c1001c5f2ba6.bundle.js +1 -0
- package/dist/156.bbcaf52acb0cecbc6257.bundle.js +1 -0
- package/dist/157.51181d03518519f84b5e.bundle.js +1 -0
- package/dist/158.640e412f6002ee1d7341.bundle.js +1 -0
- package/dist/159.10457cbb053c1315d93a.bundle.js +1 -0
- package/dist/16.2f60fbeaccd97aefaae2.bundle.js +1 -0
- package/dist/160.c46bfdf09357a4c62a53.bundle.js +1 -0
- package/dist/{103.05b86c1b360c05133b49.bundle.js → 161.0f35ee11981f0ea0455f.bundle.js} +1 -2
- package/dist/{104.089568ff7c49a29de892.bundle.js → 162.fef28120701e7d200b01.bundle.js} +1 -2
- package/dist/{105.81b74220f7fa646e719b.bundle.js → 163.38565d40ac5f71d1c875.bundle.js} +1 -2
- package/dist/164.b2116f472aa847618aee.bundle.js +1 -0
- package/dist/168.2d4b5a75da5430c73efc.bundle.js +1 -0
- package/dist/169.6897f56896e3664e8b53.bundle.js +1 -0
- package/dist/17.2bff7856b13fd72e2db4.bundle.js +1 -0
- package/dist/170.d5c0d475c5b6ad84ef77.bundle.js +1 -0
- package/dist/171.60cdc91b2bf682a20911.bundle.js +1 -0
- package/dist/172.1fb9ead3e508a7cfa5f3.bundle.js +1 -0
- package/dist/173.95602c81a2692624a015.bundle.js +1 -0
- package/dist/174.aac1982e67b5ca1731c1.bundle.js +1 -0
- package/dist/175.5e49a28397900168f816.bundle.js +1 -0
- package/dist/176.2e6d1a9f4eac4fdd8422.bundle.js +1 -0
- package/dist/177.3b6aabf3c4db8519ea74.bundle.js +1 -0
- package/dist/178.e10370553beb5c6bb839.bundle.js +1 -0
- package/dist/179.784cbd536b8e636c1272.bundle.js +1 -0
- package/dist/18.d6be3e6583bf3dacd54f.bundle.js +2 -0
- package/dist/180.d37db50f3ce1b3a04a65.bundle.js +1 -0
- package/dist/181.f307cabdc4ed7a10ff64.bundle.js +1 -0
- package/dist/182.e8fe148e90fcd334b9b9.bundle.js +1 -0
- package/dist/183.a086e00d4dc3c7855611.bundle.js +1 -0
- package/dist/184.ff8a39692d0ff666c9e6.bundle.js +1 -0
- package/dist/185.8b9f0b866e848f8a1aac.bundle.js +1 -0
- package/dist/186.798880846274da7033da.bundle.js +1 -0
- package/dist/{120.3b0b67fbfa81ec95e044.bundle.js → 187.eb92a35d38294bc21703.bundle.js} +1 -2
- package/dist/{121.ff452d05188836228deb.bundle.js → 188.641582484af80415d29a.bundle.js} +1 -2
- package/dist/189.7ccbb0ef67513ae7001a.bundle.js +1 -0
- package/dist/19.c2a5c3e7a49a4acba486.bundle.js +2 -0
- package/dist/{123.289bb9a87ce416004c0a.bundle.js → 190.a3609218c5d8e873a46f.bundle.js} +1 -2
- package/dist/191.4c817606bf66c16d9ad1.bundle.js +1 -0
- package/dist/{125.51ff26fe7687752811e4.bundle.js → 192.21f366a1ea7e6905f120.bundle.js} +1 -2
- package/dist/193.4d40b788bd7ddcf16788.bundle.js +1 -0
- package/dist/{127.4d0a2164fb95df43ea22.bundle.js → 194.0170093f1daf20e82b5f.bundle.js} +1 -2
- package/dist/{128.c7a3530622ede2f34e72.bundle.js → 195.d7d8af61458f9416878f.bundle.js} +1 -2
- package/dist/{129.2d32313059ae96dba010.bundle.js → 196.6e6b7589cd1342a0b2b5.bundle.js} +1 -2
- package/dist/{130.7302112cf14a10bd1306.bundle.js → 197.c071fa1fe9e081a3b053.bundle.js} +1 -2
- package/dist/{131.eb262b5100305bdc23ee.bundle.js → 198.3c5ca9ac5a745b4b23a1.bundle.js} +1 -2
- package/dist/199.00ac5221a334189ea09a.bundle.js +1 -0
- package/dist/2.78b4e53269171c9c08a5.bundle.js +1 -0
- package/dist/20.8fd969e3860ddffedcc3.bundle.js +1 -0
- package/dist/{133.f855496341ba657eb673.bundle.js → 200.aa3f4dcf9cf98409dbf5.bundle.js} +1 -2
- package/dist/201.a1b147e78f43a3bc99c3.bundle.js +1 -0
- package/dist/202.20e71b18f57e7d234ff0.bundle.js +1 -0
- package/dist/{136.74f131c98a163b48e3df.bundle.js → 203.0219c2ba2d4fe4881af2.bundle.js} +1 -2
- package/dist/204.cc169603e18b84e7e65b.bundle.js +1 -0
- package/dist/{138.9111fe731587313e4574.bundle.js → 205.99fb3c89cd9b9183ddbf.bundle.js} +1 -2
- package/dist/206.43b04d2170165e13353c.bundle.js +1 -0
- package/dist/207.798c195e1d7d3f301131.bundle.js +1 -0
- package/dist/208.34f042066a757f4fd8c0.bundle.js +1 -0
- package/dist/{142.5ced0a8e7a08aea7988f.bundle.js → 209.288844c6a42ff4d5685a.bundle.js} +1 -2
- package/dist/21.c981976c6528073c0a2f.bundle.js +1 -0
- package/dist/210.1ac38e393ca959703d4b.bundle.js +1 -0
- package/dist/211.d2721b9785e609e2f817.bundle.js +1 -0
- package/dist/212.b6b19c939f21132b451c.bundle.js +1 -0
- package/dist/213.5a5116f764e6357e53ab.bundle.js +1 -0
- package/dist/{147.f6bd445276a200981cff.bundle.js → 214.a2640be51c42d820bb83.bundle.js} +1 -2
- package/dist/215.209396a71f130477e2b3.bundle.js +1 -0
- package/dist/216.16e2e982acc750b4045a.bundle.js +1 -0
- package/dist/217.8540eb1d1a0946e72dbf.bundle.js +1 -0
- package/dist/218.ef33580c82d20f39f75f.bundle.js +1 -0
- package/dist/219.1652bc940cdd0088dc18.bundle.js +1 -0
- package/dist/22.9d339503774f4f6c0a8b.bundle.js +1 -0
- package/dist/{153.ebc378a7a60222b69484.bundle.js → 220.f8f9c348b1fc0cc72bd6.bundle.js} +1 -2
- package/dist/221.b18a92f0ba880edaebbf.bundle.js +1 -0
- package/dist/222.a52ebecd1d5201437ebe.bundle.js +1 -0
- package/dist/23.87ca8226d464e3699b8e.bundle.js +3 -0
- package/dist/24.9076b75f45ce0579f7be.bundle.js +1 -0
- package/dist/25.073791b8dd02c5b31183.bundle.js +1 -0
- package/dist/26.6e06be7172a866ad45f9.bundle.js +2 -0
- package/dist/27.5152c2a1f3b1369e21b0.bundle.js +1 -0
- package/dist/28.90b784e728e3d5e4c6aa.bundle.js +1 -0
- package/dist/29.e2309b858706718f1732.bundle.js +1 -0
- package/dist/3.cf89087c137e759ecd19.bundle.js +27 -0
- package/dist/30.32fb84930c42bae43a74.bundle.js +1 -0
- package/dist/31.31b7b4bd073b82c09fda.bundle.js +1 -0
- package/dist/32.6725d94946764db833b8.bundle.js +1 -0
- package/dist/33.fa9f0e662060f2e97267.bundle.js +1 -0
- package/dist/34.af22bc6d5ed2bcb72a09.bundle.js +1 -0
- package/dist/35.e601e19e63c6ddaf2484.bundle.js +1 -0
- package/dist/36.df47a70d8efbf1cd033b.bundle.js +1 -0
- package/dist/37.085cdb373f74d55eee07.bundle.js +2 -0
- package/dist/38.fc172c7b0d24ab0f8a35.bundle.js +1 -0
- package/dist/39.5ca9fa51ec3c63459317.bundle.js +1 -0
- package/dist/4.851f9ade6202116ecfb9.bundle.js +1 -0
- package/dist/40.309ec5212fd53fe696bb.bundle.js +1 -0
- package/dist/41.3870740f1d24570cb415.bundle.js +1 -0
- package/dist/42.b926c2c8620df5c7ed6d.bundle.js +1 -0
- package/dist/43.d4551e1f6cac0a1a77e5.bundle.js +1 -0
- package/dist/44.46c9e2d54a9f07d78368.bundle.js +1 -0
- package/dist/45.a916daee1f0c6873c890.bundle.js +1 -0
- package/dist/46.4f57238bd032edc81d6d.bundle.js +1 -0
- package/dist/47.4fbfdaa63628c501a30c.bundle.js +1 -0
- package/dist/48.3fbd50adcb0c7dd7ec60.bundle.js +1 -0
- package/dist/49.0707795b3b6e40387da8.bundle.js +1 -0
- package/dist/5.7cfbc07050f137932ffe.bundle.js +1 -0
- package/dist/50.8f6cc698b42c96f2b41f.bundle.js +1 -0
- package/dist/51.514a339efd6cd11db0f8.bundle.js +1 -0
- package/dist/52.410a7d8b4cb433fb24ca.bundle.js +1 -0
- package/dist/53.174d18435f7bf3bf05a0.bundle.js +1 -0
- package/dist/54.7cb3bd3ae8055e350629.bundle.js +1 -0
- package/dist/55.f0762e755ba58cbaac26.bundle.js +1 -0
- package/dist/56.3b0312e77f8607a4d957.bundle.js +1 -0
- package/dist/57.dfb7a710da8ca09c725b.bundle.js +1 -0
- package/dist/58.ac0fa95bbbe4b2dfb0fc.bundle.js +1 -0
- package/dist/59.273ffcd48e856d2752ff.bundle.js +1 -0
- package/dist/6.c5eea752e1f541f494e8.bundle.js +1 -0
- package/dist/60.00a29320ea162becd718.bundle.js +1 -0
- package/dist/61.3794de8b6d022738bafa.bundle.js +1 -0
- package/dist/62.cf39ad55adb1616560ec.bundle.js +1 -0
- package/dist/63.8880f667c958d12b338b.bundle.js +1 -0
- package/dist/64.fdd90fedc8a5dc3cacaf.bundle.js +1 -0
- package/dist/65.cdc961a8042c385c49c6.bundle.js +1 -0
- package/dist/66.c3b906de2fcf69089b7b.bundle.js +1 -0
- package/dist/67.9c851e5930459a5f5903.bundle.js +1 -0
- package/dist/68.05bba948c414a1e21c8f.bundle.js +1 -0
- package/dist/69.c5561c83fe410ea9a908.bundle.js +1 -0
- package/dist/7.14f008aaac190939acd3.bundle.js +7 -0
- package/dist/70.f2557c225be5923bab24.bundle.js +1 -0
- package/dist/71.e9c3c5ccc70f443c97cf.bundle.js +1 -0
- package/dist/72.0780a8424293909f94a4.bundle.js +1 -0
- package/dist/73.57e88cee0af3f67aee77.bundle.js +1 -0
- package/dist/74.48e90caf0b5ecd351f1d.bundle.js +1 -0
- package/dist/75.c75a824264d0e67421ed.bundle.js +1 -0
- package/dist/76.2ad0f5373462bc70bebf.bundle.js +1 -0
- package/dist/77.303a075d21928354102c.bundle.js +1 -0
- package/dist/78.66f3e9630550f20287ff.bundle.js +1 -0
- package/dist/79.29d39a29721f936ae688.bundle.js +1 -0
- package/dist/8.b5e29f80f8a5766d70d5.bundle.js +2 -0
- package/dist/80.8af0388db859fcc9fbf3.bundle.js +1 -0
- package/dist/{47.686e599732ae6f41120c.bundle.js → 81.2ff1f5047ab4e0591585.bundle.js} +1 -2
- package/dist/82.27bb51dfeb4898504e96.bundle.js +1 -0
- package/dist/83.a59d34bc50cf323af43d.bundle.js +1 -0
- package/dist/84.a4ee7bb5d3ed2e6ead5e.bundle.js +1 -0
- package/dist/{51.895a3dacdc3a8eaee275.bundle.js → 85.1f1b07562fbf97ab3e11.bundle.js} +1 -2
- package/dist/86.637667a4555ae621aff0.bundle.js +1 -0
- package/dist/87.b76338a62297ad83960b.bundle.js +1 -0
- package/dist/88.532e7295b49b1071d45c.bundle.js +1 -0
- package/dist/89.90bb1cf65f183ecce47c.bundle.js +1 -0
- package/dist/9.610b595b60a0fc51466a.bundle.js +1 -0
- package/dist/90.683c4d5b142356f274ef.bundle.js +1 -0
- package/dist/{56.91947e80d8e04223ac58.bundle.js → 91.2437dfc2ea1bc89f53f3.bundle.js} +1 -2
- package/dist/92.a12cfd3b602e98b344de.bundle.js +1 -0
- package/dist/93.a5cb6192d32cb016bb60.bundle.js +1 -0
- package/dist/94.f6a3e7628449796419b6.bundle.js +1 -0
- package/dist/95.15f0e472c49c81a68c3a.bundle.js +1 -0
- package/dist/96.2bf3b75fb0efb6b9e7e8.bundle.js +1 -0
- package/dist/97.bd1988af419f7373b569.bundle.js +1 -0
- package/dist/98.060c6842b3a8ed94dd20.bundle.js +1 -0
- package/dist/{64.ac922cb38c3ff6c431fb.bundle.js → 99.6360b70da56083cd76fe.bundle.js} +1 -2
- package/dist/bundle.39b836d40f0926aeec16.bundle.js +91 -0
- package/dist/css/aclmanagement.css +114 -0
- package/dist/css/angular-tooltips.css +144 -0
- package/dist/css/autocomplete-select.css +62 -0
- package/dist/css/backup-and-restore.css +7 -0
- package/dist/css/bootstrap-graphdb-theme-dark-auto.css +36 -0
- package/dist/css/bootstrap-graphdb-theme.css +514 -252
- package/dist/css/clustermanagement.css +145 -266
- package/dist/css/common.css +105 -0
- package/dist/css/dependencies.css +4 -4
- package/dist/css/domain-range-graph.css +3 -3
- package/dist/css/explore.css +7 -1
- package/dist/css/export.css +13 -9
- package/dist/css/find.css +2 -3
- package/dist/css/fonts/icons.eot +0 -0
- package/dist/css/fonts/icons.svg +14 -5
- package/dist/css/fonts/icons.ttf +0 -0
- package/dist/css/fonts/icons.woff +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff2 +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff2 +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
- package/dist/css/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
- package/dist/css/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
- package/dist/css/graphs-config.css +4 -4
- package/dist/css/graphs-vizualizations.css +11 -10
- package/dist/css/guides.css +9 -0
- package/dist/css/jmx.css +22 -0
- package/dist/css/lib/angular-xeditable/xeditable.min.css +2 -2
- package/dist/css/new-sparql.css +68 -2
- package/dist/css/operations-statuses-monitor.css +111 -0
- package/dist/css/plugins.css +7 -18
- package/dist/css/rdf-class-hierarchy-labels.css +2 -2
- package/dist/css/rdf-class-hierarchy.css +3 -3
- package/dist/css/rdf-details-side-panel.css +8 -1
- package/dist/css/rdf-resource-search.css +5 -2
- package/dist/css/repositories.css +73 -31
- package/dist/css/repository.create.css +14 -4
- package/dist/css/shepherd-custom.css +80 -0
- package/dist/css/workbench-custom.css +54 -14
- package/dist/css/yasr.custom.css +28 -6
- package/dist/font/{icons.f404525bf0491c43fc1c35fc43fe14d8.eot → icons.23e96f215ba03e98233de883d2c30b60.eot} +0 -0
- package/dist/i18n/locale-en.json +488 -129
- package/dist/i18n/locale-fr.json +602 -261
- package/dist/icon.png +0 -0
- package/dist/img/{graphdb-logo-sq.75ddb875d9a986a6ac944450ae134725.svg → graphdb-logo-sq.3a5fb4b3f1e0e248dc308da1bf4de9f8.svg} +4 -4
- package/dist/img/{graphdb-logo.cb18d544b9cf2eb6062daa81bdb1f850.svg → graphdb-logo.741abf3e3881e1566e4504c9f00b91c0.svg} +3 -4
- package/dist/img/{graphdb-small.635110bdf15de2ad589b6e3fdaa75887.svg → graphdb-small.5f94ee13e65870be1db31bb89e6deded.svg} +6 -6
- package/dist/img/graphdb-splash.1ef2940889acddc03c7defb3f9f41f8d.svg +1 -0
- package/dist/img/{icons.2271b2cdd5a3d1037d80bf831f4918cc.svg → icons.ab6168834b8775f511d09c8fad540b27.svg} +14 -5
- package/dist/index.html +87 -85
- package/dist/js/angular/autocomplete/templates/modal/add-label.html +9 -8
- package/dist/js/angular/chatgpt/templates/chat.html +113 -0
- package/dist/js/angular/chatgpt/templates/chatInfo.html +11 -0
- package/dist/js/angular/chatgpt/templates/modal/settings.html +61 -0
- package/dist/js/angular/clustermanagement/templates/modal/add-nodes-dialog.html +67 -0
- package/dist/js/angular/clustermanagement/templates/modal/cluster-create-dialog.html +173 -0
- package/dist/js/angular/clustermanagement/templates/modal/cluster-delete-dialog.html +9 -14
- package/dist/js/angular/clustermanagement/templates/modal/cluster-edit-dialog.html +118 -0
- package/dist/js/angular/clustermanagement/templates/modal/remove-nodes-dialog.html +39 -0
- package/dist/js/angular/clustermanagement/templates/modal/replace-nodes-dialog.html +86 -0
- package/dist/js/angular/core/directives/autocomplete/templates/autocomplete.html +18 -0
- package/dist/js/angular/core/directives/languageselector/templates/languageSelector.html +9 -7
- package/dist/js/angular/core/directives/operations-statuses-monitor/templates/operations-statuses-monitor.html +57 -0
- package/dist/js/angular/core/directives/queryeditor/templates/query-editor.html +44 -56
- package/dist/js/angular/core/directives/queryeditor/templates/query-sample.html +11 -11
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +4 -6
- package/dist/js/angular/core/templates/core-errors.html +27 -18
- package/dist/js/angular/core/templates/inactive-plugin-warning-page.html +1 -2
- package/dist/js/angular/core/templates/modal/copy-to-clipboard-modal.html +9 -10
- package/dist/js/angular/core/templates/modal/modal-warning.html +1 -1
- package/dist/js/angular/core/templates/search-resource-input.html +9 -9
- package/dist/js/angular/externalsync/templates/deleteConnector.html +5 -5
- package/dist/js/angular/graphexplore/templates/modal/save-graph.html +10 -11
- package/dist/js/angular/graphexplore/templates/rdfsCommentLabelTemplate.html +4 -6
- package/dist/js/angular/graphexplore/templates/searchIconInputTemplate.html +5 -7
- package/dist/js/angular/import/templates/filesTable.html +15 -15
- package/dist/js/angular/import/templates/settingsModal.html +231 -231
- package/dist/js/angular/import/templates/textSnippet.html +4 -4
- package/dist/js/angular/import/templates/urlImport.html +7 -5
- package/dist/js/angular/repositories/templates/fedx-repo.html +53 -49
- package/dist/js/angular/repositories/templates/ontop-repo.html +191 -60
- package/dist/js/angular/security/templates/modal/default-authorities.html +12 -12
- package/dist/js/angular/security/templates/user.html +102 -41
- package/dist/js/angular/security/templates/users.html +24 -17
- package/dist/js/angular/settings/modal/location-settings.html +17 -18
- package/dist/js/angular/settings/modal/validate-license.html +19 -6
- package/dist/js/angular/templates/graphdb-small.svg +6 -6
- package/dist/js/angular/templates/modal/add-fedx-remote-repo.html +17 -15
- package/dist/js/angular/templates/modal/add-location.html +18 -22
- package/dist/js/angular/templates/modal/edit-location.html +11 -11
- package/dist/js/angular/templates/modal/editRepoFile.html +2 -2
- package/dist/js/angular/templates/modal/upload-repository-config.html +2 -2
- package/dist/js/angular/templates/repositorySize.html +7 -1
- package/dist/js/lib/angucomplete-alt/angucomplete-alt.css +2 -2
- package/dist/js/lib/rzslider/rzslider.min.css +1 -1
- package/dist/license-checker-static.json +128 -0
- package/dist/license-checker.json +872 -0
- package/dist/main.3ac2b4b19f56209c6467.css +1 -0
- package/dist/main.948c3b96766ce09e145b.bundle.js +1 -0
- package/dist/pages/aclmanagement.html +177 -0
- package/dist/pages/autocomplete.html +16 -12
- package/dist/pages/choose-repository-type.html +8 -8
- package/dist/pages/cluster-management/clusterInfo.html +160 -138
- package/dist/pages/connectorsInfo.html +23 -18
- package/dist/pages/create-index.html +18 -18
- package/dist/pages/createConnector.html +137 -137
- package/dist/pages/dependencies.html +23 -31
- package/dist/pages/domainRangeInfo.html +16 -19
- package/dist/pages/edit.html +15 -15
- package/dist/pages/explore.html +22 -25
- package/dist/pages/export.html +38 -39
- package/dist/pages/find.html +3 -3
- package/dist/pages/graph-config/saveGraphConfig.html +43 -43
- package/dist/pages/graphs-visualizations.html +71 -78
- package/dist/pages/guides.html +60 -0
- package/dist/pages/home.html +46 -28
- package/dist/pages/import.html +11 -10
- package/dist/pages/info.html +18 -18
- package/dist/pages/jdbc-create.html +48 -46
- package/dist/pages/jdbc.html +4 -4
- package/dist/pages/licenseInfo.html +66 -48
- package/dist/pages/login.html +5 -6
- package/dist/pages/monitor/backup-and-restore.html +80 -0
- package/dist/pages/monitor/queries.html +7 -8
- package/dist/pages/monitor/resources.html +213 -79
- package/dist/pages/namespaces.html +22 -21
- package/dist/pages/plugins.html +9 -10
- package/dist/pages/rdfClassHierarchyInfo.html +31 -35
- package/dist/pages/rdfrank.html +25 -27
- package/dist/pages/registerLicenseInfo.html +10 -12
- package/dist/pages/repositories.html +170 -193
- package/dist/pages/repository.html +124 -58
- package/dist/pages/similarity-indexes.html +18 -18
- package/dist/pages/sparql-template-create.html +30 -29
- package/dist/pages/sparql-templates.html +4 -4
- package/dist/pages/sparql.html +11 -11
- package/dist/pages/ux-test1.html +102 -0
- package/dist/pages/ux-test2.html +17 -0
- package/dist/pages/webapi.html +4 -4
- package/dist/plugin-registry.js +14 -0
- package/dist/plugins.js +1967 -84
- package/dist/res/sparql/keyboard-shortcuts.html +7 -1
- package/dist/res/swagger/css/onto-theme.css +8 -0
- package/dist/res/swagger/css/reset.css +1 -2
- package/dist/res/swagger/css/screen.css +6 -15
- package/dist/res/swagger/fonts/icons.woff +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600.woff2 +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-600italic.woff2 +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
- package/dist/res/swagger/fonts/jetbrains-mono-v12-vietnamese_latin-ext_latin_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-300italic.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-500italic.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-italic.woff2 +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff +0 -0
- package/dist/res/swagger/fonts/roboto-v30-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-italic.woff +0 -0
- package/dist/res/swagger/fonts/rubik-italic.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-light.woff +0 -0
- package/dist/res/swagger/fonts/rubik-light.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-lightitalic.woff +0 -0
- package/dist/res/swagger/fonts/rubik-lightitalic.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-medium.woff +0 -0
- package/dist/res/swagger/fonts/rubik-medium.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-mediumitalic.woff +0 -0
- package/dist/res/swagger/fonts/rubik-mediumitalic.woff2 +0 -0
- package/dist/res/swagger/fonts/rubik-regular.woff +0 -0
- package/dist/res/swagger/fonts/rubik-regular.woff2 +0 -0
- package/dist/res/swagger/index.html +27 -25
- package/dist/vendor.7b6ede99ef82acd3dcf5.bundle.js +27 -0
- package/dist/{vendor.4ba46e62f4d43dab5e82.css → vendor.d1c629ceaacea40a5f4a.css} +1 -1
- package/package.json +13 -9
- package/dist/0.32d0f91ca9c8d09fb6f1.bundle.js +0 -82
- package/dist/0.32d0f91ca9c8d09fb6f1.bundle.js.map +0 -1
- package/dist/1.6300131e72a9f28f9df3.bundle.js +0 -27
- package/dist/1.6300131e72a9f28f9df3.bundle.js.map +0 -1
- package/dist/10.bb0713b18c3e55445fa7.bundle.js +0 -2
- package/dist/10.bb0713b18c3e55445fa7.bundle.js.map +0 -1
- package/dist/100.acbece8e389effbcfa2e.bundle.js +0 -2
- package/dist/100.acbece8e389effbcfa2e.bundle.js.map +0 -1
- package/dist/101.abc28aeafc8c037b80dc.bundle.js +0 -2
- package/dist/101.abc28aeafc8c037b80dc.bundle.js.map +0 -1
- package/dist/102.236df15ec49946c8799a.bundle.js +0 -2
- package/dist/102.236df15ec49946c8799a.bundle.js.map +0 -1
- package/dist/103.05b86c1b360c05133b49.bundle.js.map +0 -1
- package/dist/104.089568ff7c49a29de892.bundle.js.map +0 -1
- package/dist/105.81b74220f7fa646e719b.bundle.js.map +0 -1
- package/dist/106.5de7943f8a3adda97372.bundle.js +0 -2
- package/dist/106.5de7943f8a3adda97372.bundle.js.map +0 -1
- package/dist/11.288d37db1902f00f7c8e.bundle.js +0 -2
- package/dist/11.288d37db1902f00f7c8e.bundle.js.map +0 -1
- package/dist/110.5a553b21d45a64e7e321.bundle.js +0 -2
- package/dist/110.5a553b21d45a64e7e321.bundle.js.map +0 -1
- package/dist/111.04e34833a2c4fc227899.bundle.js +0 -2
- package/dist/111.04e34833a2c4fc227899.bundle.js.map +0 -1
- package/dist/112.b2bdfd64c50509d05503.bundle.js +0 -2
- package/dist/112.b2bdfd64c50509d05503.bundle.js.map +0 -1
- package/dist/113.b386b036c2a3d9077f64.bundle.js +0 -2
- package/dist/113.b386b036c2a3d9077f64.bundle.js.map +0 -1
- package/dist/114.0768e042a8e6ec856942.bundle.js +0 -2
- package/dist/114.0768e042a8e6ec856942.bundle.js.map +0 -1
- package/dist/115.374b221f284e8755ef31.bundle.js +0 -2
- package/dist/115.374b221f284e8755ef31.bundle.js.map +0 -1
- package/dist/116.ca9d40889c222f47c45f.bundle.js +0 -2
- package/dist/116.ca9d40889c222f47c45f.bundle.js.map +0 -1
- package/dist/117.92f7630bfb95444a87e8.bundle.js +0 -2
- package/dist/117.92f7630bfb95444a87e8.bundle.js.map +0 -1
- package/dist/118.7e28dcfd80b93a705d71.bundle.js +0 -2
- package/dist/118.7e28dcfd80b93a705d71.bundle.js.map +0 -1
- package/dist/119.e3a038ffb960ed3661fe.bundle.js +0 -2
- package/dist/119.e3a038ffb960ed3661fe.bundle.js.map +0 -1
- package/dist/12.9004ab127289745129a4.bundle.js +0 -4
- package/dist/12.9004ab127289745129a4.bundle.js.map +0 -1
- package/dist/120.3b0b67fbfa81ec95e044.bundle.js.map +0 -1
- package/dist/121.ff452d05188836228deb.bundle.js.map +0 -1
- package/dist/122.1b8056c745358fa2f6cb.bundle.js +0 -2
- package/dist/122.1b8056c745358fa2f6cb.bundle.js.map +0 -1
- package/dist/123.289bb9a87ce416004c0a.bundle.js.map +0 -1
- package/dist/124.75965fcb93d0fe988609.bundle.js +0 -2
- package/dist/124.75965fcb93d0fe988609.bundle.js.map +0 -1
- package/dist/125.51ff26fe7687752811e4.bundle.js.map +0 -1
- package/dist/126.b89a0728154793be4eb9.bundle.js +0 -2
- package/dist/126.b89a0728154793be4eb9.bundle.js.map +0 -1
- package/dist/127.4d0a2164fb95df43ea22.bundle.js.map +0 -1
- package/dist/128.c7a3530622ede2f34e72.bundle.js.map +0 -1
- package/dist/129.2d32313059ae96dba010.bundle.js.map +0 -1
- package/dist/13.897f9af290de9fbd43bb.bundle.js +0 -16
- package/dist/13.897f9af290de9fbd43bb.bundle.js.map +0 -1
- package/dist/130.7302112cf14a10bd1306.bundle.js.map +0 -1
- package/dist/131.eb262b5100305bdc23ee.bundle.js.map +0 -1
- package/dist/132.264b9ebf860e308417ad.bundle.js +0 -2
- package/dist/132.264b9ebf860e308417ad.bundle.js.map +0 -1
- package/dist/133.f855496341ba657eb673.bundle.js.map +0 -1
- package/dist/134.91de2ab11c49967200ad.bundle.js +0 -2
- package/dist/134.91de2ab11c49967200ad.bundle.js.map +0 -1
- package/dist/135.82e48e81e60b2ab89e04.bundle.js +0 -2
- package/dist/135.82e48e81e60b2ab89e04.bundle.js.map +0 -1
- package/dist/136.74f131c98a163b48e3df.bundle.js.map +0 -1
- package/dist/137.89253235e0e48f86534b.bundle.js +0 -2
- package/dist/137.89253235e0e48f86534b.bundle.js.map +0 -1
- package/dist/138.9111fe731587313e4574.bundle.js.map +0 -1
- package/dist/139.642cab70149cdfc8c034.bundle.js +0 -2
- package/dist/139.642cab70149cdfc8c034.bundle.js.map +0 -1
- package/dist/14.3c22be70e13b5347940a.bundle.js +0 -3
- package/dist/14.3c22be70e13b5347940a.bundle.js.map +0 -1
- package/dist/140.8fcbd3b16a54b9ca5d80.bundle.js +0 -2
- package/dist/140.8fcbd3b16a54b9ca5d80.bundle.js.map +0 -1
- package/dist/141.09939d5f25d69d9e1bdd.bundle.js +0 -2
- package/dist/141.09939d5f25d69d9e1bdd.bundle.js.map +0 -1
- package/dist/142.5ced0a8e7a08aea7988f.bundle.js.map +0 -1
- package/dist/143.1bd6e2941d5c9fdc9e77.bundle.js +0 -2
- package/dist/143.1bd6e2941d5c9fdc9e77.bundle.js.map +0 -1
- package/dist/144.34dd1b710f93da283e39.bundle.js +0 -2
- package/dist/144.34dd1b710f93da283e39.bundle.js.map +0 -1
- package/dist/145.832e90a54396296da91b.bundle.js +0 -2
- package/dist/145.832e90a54396296da91b.bundle.js.map +0 -1
- package/dist/146.a4ab1f2f5177d9e27861.bundle.js +0 -2
- package/dist/146.a4ab1f2f5177d9e27861.bundle.js.map +0 -1
- package/dist/147.f6bd445276a200981cff.bundle.js.map +0 -1
- package/dist/148.1c23268b87514b7220b3.bundle.js +0 -2
- package/dist/148.1c23268b87514b7220b3.bundle.js.map +0 -1
- package/dist/149.82fc16905f1377c6610a.bundle.js +0 -2
- package/dist/149.82fc16905f1377c6610a.bundle.js.map +0 -1
- package/dist/15.ba4fe6f57951d2f73adc.bundle.js +0 -2
- package/dist/15.ba4fe6f57951d2f73adc.bundle.js.map +0 -1
- package/dist/150.6d8e3bb0cbc5774322d9.bundle.js +0 -2
- package/dist/150.6d8e3bb0cbc5774322d9.bundle.js.map +0 -1
- package/dist/151.c752cbb4d5f9299df813.bundle.js +0 -2
- package/dist/151.c752cbb4d5f9299df813.bundle.js.map +0 -1
- package/dist/152.78d7840c4b8f93748bfe.bundle.js +0 -2
- package/dist/152.78d7840c4b8f93748bfe.bundle.js.map +0 -1
- package/dist/153.ebc378a7a60222b69484.bundle.js.map +0 -1
- package/dist/154.4452ad65074e44967389.bundle.js +0 -2
- package/dist/154.4452ad65074e44967389.bundle.js.map +0 -1
- package/dist/155.12819130f26753e109ad.bundle.js +0 -2
- package/dist/155.12819130f26753e109ad.bundle.js.map +0 -1
- package/dist/16.a236b38d63123b1a3c61.bundle.js +0 -4
- package/dist/16.a236b38d63123b1a3c61.bundle.js.map +0 -1
- package/dist/17.d8d59fa7fbb3b422fdf8.bundle.js +0 -2
- package/dist/17.d8d59fa7fbb3b422fdf8.bundle.js.map +0 -1
- package/dist/18.bc2da9ff57be136ef082.bundle.js +0 -2
- package/dist/18.bc2da9ff57be136ef082.bundle.js.map +0 -1
- package/dist/19.19811699b6e54f19f71e.bundle.js +0 -3
- package/dist/19.19811699b6e54f19f71e.bundle.js.map +0 -1
- package/dist/2.fb2f97f5c543a24296f6.bundle.js +0 -2
- package/dist/2.fb2f97f5c543a24296f6.bundle.js.map +0 -1
- package/dist/20.df3652981fc73c6a8b8c.bundle.js +0 -2
- package/dist/20.df3652981fc73c6a8b8c.bundle.js.map +0 -1
- package/dist/21.b7fbdf3c3b22b578928c.bundle.js +0 -2
- package/dist/21.b7fbdf3c3b22b578928c.bundle.js.map +0 -1
- package/dist/22.2da0e8ec2ac2048ecd60.bundle.js +0 -3
- package/dist/22.2da0e8ec2ac2048ecd60.bundle.js.map +0 -1
- package/dist/23.4140c4c20347efc963a4.bundle.js +0 -2
- package/dist/23.4140c4c20347efc963a4.bundle.js.map +0 -1
- package/dist/24.219ce55f8f6a5bd02dad.bundle.js +0 -2
- package/dist/24.219ce55f8f6a5bd02dad.bundle.js.map +0 -1
- package/dist/25.e79de2370b1ee4072e19.bundle.js +0 -2
- package/dist/25.e79de2370b1ee4072e19.bundle.js.map +0 -1
- package/dist/26.c1619706b8cbb1ab23cb.bundle.js +0 -2
- package/dist/26.c1619706b8cbb1ab23cb.bundle.js.map +0 -1
- package/dist/27.350dba622e243e1ab5fb.bundle.js +0 -2
- package/dist/27.350dba622e243e1ab5fb.bundle.js.map +0 -1
- package/dist/28.e687c87a5f1dc8a30fd0.bundle.js +0 -2
- package/dist/28.e687c87a5f1dc8a30fd0.bundle.js.map +0 -1
- package/dist/29.34a4af65623cd4af6899.bundle.js +0 -2
- package/dist/29.34a4af65623cd4af6899.bundle.js.map +0 -1
- package/dist/3.dfa66b44200c3fca24a2.bundle.js +0 -2
- package/dist/3.dfa66b44200c3fca24a2.bundle.js.map +0 -1
- package/dist/30.f4738c7c2d74f00f2e5f.bundle.js +0 -2
- package/dist/30.f4738c7c2d74f00f2e5f.bundle.js.map +0 -1
- package/dist/31.ab8f2e70841221e1d427.bundle.js +0 -2
- package/dist/31.ab8f2e70841221e1d427.bundle.js.map +0 -1
- package/dist/32.3210a7952ffcb57daa1a.bundle.js +0 -2
- package/dist/32.3210a7952ffcb57daa1a.bundle.js.map +0 -1
- package/dist/33.fcf9c56901b5590bd603.bundle.js +0 -2
- package/dist/33.fcf9c56901b5590bd603.bundle.js.map +0 -1
- package/dist/34.2c344c05bfc4048c3d53.bundle.js +0 -2
- package/dist/34.2c344c05bfc4048c3d53.bundle.js.map +0 -1
- package/dist/35.423c4a91e80adf5d97c8.bundle.js +0 -2
- package/dist/35.423c4a91e80adf5d97c8.bundle.js.map +0 -1
- package/dist/36.247686b6d65de11ec10d.bundle.js +0 -2
- package/dist/36.247686b6d65de11ec10d.bundle.js.map +0 -1
- package/dist/37.5f6089a939b59309cc82.bundle.js +0 -2
- package/dist/37.5f6089a939b59309cc82.bundle.js.map +0 -1
- package/dist/38.9e79a9ec2f9d5af38692.bundle.js +0 -2
- package/dist/38.9e79a9ec2f9d5af38692.bundle.js.map +0 -1
- package/dist/39.b64ae969a5f5fea4504c.bundle.js +0 -2
- package/dist/39.b64ae969a5f5fea4504c.bundle.js.map +0 -1
- package/dist/4.188966396c80909f58cd.bundle.js +0 -2
- package/dist/4.188966396c80909f58cd.bundle.js.map +0 -1
- package/dist/40.1303e99feecbba2614a7.bundle.js +0 -2
- package/dist/40.1303e99feecbba2614a7.bundle.js.map +0 -1
- package/dist/41.687956ca2240355a838f.bundle.js +0 -2
- package/dist/41.687956ca2240355a838f.bundle.js.map +0 -1
- package/dist/42.78e0302e87b9d244a1d7.bundle.js +0 -2
- package/dist/42.78e0302e87b9d244a1d7.bundle.js.map +0 -1
- package/dist/43.ee0de548c525f8e422ba.bundle.js +0 -2
- package/dist/43.ee0de548c525f8e422ba.bundle.js.map +0 -1
- package/dist/44.38b4979d4b201ae1fffb.bundle.js +0 -2
- package/dist/44.38b4979d4b201ae1fffb.bundle.js.map +0 -1
- package/dist/45.8a0ab002ad0f614964e5.bundle.js +0 -2
- package/dist/45.8a0ab002ad0f614964e5.bundle.js.map +0 -1
- package/dist/46.720c0f65b93f4fe01a7c.bundle.js +0 -2
- package/dist/46.720c0f65b93f4fe01a7c.bundle.js.map +0 -1
- package/dist/47.686e599732ae6f41120c.bundle.js.map +0 -1
- package/dist/48.bdb51ad865126b918831.bundle.js +0 -2
- package/dist/48.bdb51ad865126b918831.bundle.js.map +0 -1
- package/dist/49.74a24e08097ef1f6fcd2.bundle.js +0 -2
- package/dist/49.74a24e08097ef1f6fcd2.bundle.js.map +0 -1
- package/dist/5.9bbd38317d375cd02da2.bundle.js +0 -8
- package/dist/5.9bbd38317d375cd02da2.bundle.js.map +0 -1
- package/dist/50.313e315d4c339ad1bcdd.bundle.js +0 -2
- package/dist/50.313e315d4c339ad1bcdd.bundle.js.map +0 -1
- package/dist/51.895a3dacdc3a8eaee275.bundle.js.map +0 -1
- package/dist/52.1f6bc47f1c9abcc79e8d.bundle.js +0 -2
- package/dist/52.1f6bc47f1c9abcc79e8d.bundle.js.map +0 -1
- package/dist/53.f6c19075252833268cca.bundle.js +0 -2
- package/dist/53.f6c19075252833268cca.bundle.js.map +0 -1
- package/dist/54.599ca3ae32ee1fb5f937.bundle.js +0 -2
- package/dist/54.599ca3ae32ee1fb5f937.bundle.js.map +0 -1
- package/dist/55.c20a51cb1d894f9113b4.bundle.js +0 -2
- package/dist/55.c20a51cb1d894f9113b4.bundle.js.map +0 -1
- package/dist/56.91947e80d8e04223ac58.bundle.js.map +0 -1
- package/dist/57.ab4ee313c9d6c7e29384.bundle.js +0 -2
- package/dist/57.ab4ee313c9d6c7e29384.bundle.js.map +0 -1
- package/dist/58.99c83a8dac31c1b681df.bundle.js +0 -2
- package/dist/58.99c83a8dac31c1b681df.bundle.js.map +0 -1
- package/dist/59.99da52e1d8946ac0f601.bundle.js +0 -2
- package/dist/59.99da52e1d8946ac0f601.bundle.js.map +0 -1
- package/dist/6.6c67a1bcf82bb335b0c4.bundle.js +0 -2
- package/dist/6.6c67a1bcf82bb335b0c4.bundle.js.map +0 -1
- package/dist/60.92b9758945e497e52bac.bundle.js +0 -2
- package/dist/60.92b9758945e497e52bac.bundle.js.map +0 -1
- package/dist/61.42887fbc87f941cf7c81.bundle.js +0 -2
- package/dist/61.42887fbc87f941cf7c81.bundle.js.map +0 -1
- package/dist/62.c21410d6e123395d3920.bundle.js +0 -2
- package/dist/62.c21410d6e123395d3920.bundle.js.map +0 -1
- package/dist/63.1ab0c580ba57aee5479c.bundle.js +0 -2
- package/dist/63.1ab0c580ba57aee5479c.bundle.js.map +0 -1
- package/dist/64.ac922cb38c3ff6c431fb.bundle.js.map +0 -1
- package/dist/65.9fcde753699dc94bea1d.bundle.js +0 -2
- package/dist/65.9fcde753699dc94bea1d.bundle.js.map +0 -1
- package/dist/66.8213a0430e7543b6d7f7.bundle.js +0 -2
- package/dist/66.8213a0430e7543b6d7f7.bundle.js.map +0 -1
- package/dist/67.320a484bc979f5076d8c.bundle.js +0 -2
- package/dist/67.320a484bc979f5076d8c.bundle.js.map +0 -1
- package/dist/68.a69e9e22327878f44dbd.bundle.js +0 -2
- package/dist/68.a69e9e22327878f44dbd.bundle.js.map +0 -1
- package/dist/69.be786580c66ac4ee18cb.bundle.js +0 -2
- package/dist/69.be786580c66ac4ee18cb.bundle.js.map +0 -1
- package/dist/7.0fd9bc389f42820382e4.bundle.js +0 -3
- package/dist/7.0fd9bc389f42820382e4.bundle.js.map +0 -1
- package/dist/70.93cfa1f02948e8276451.bundle.js +0 -2
- package/dist/70.93cfa1f02948e8276451.bundle.js.map +0 -1
- package/dist/71.6b8c8bce52a95f2da242.bundle.js +0 -2
- package/dist/71.6b8c8bce52a95f2da242.bundle.js.map +0 -1
- package/dist/72.6cbb41a38d917191c660.bundle.js +0 -2
- package/dist/72.6cbb41a38d917191c660.bundle.js.map +0 -1
- package/dist/73.801e05b4acc74a3e268c.bundle.js +0 -2
- package/dist/73.801e05b4acc74a3e268c.bundle.js.map +0 -1
- package/dist/74.1c6322e5f93d5376fd76.bundle.js +0 -2
- package/dist/74.1c6322e5f93d5376fd76.bundle.js.map +0 -1
- package/dist/75.c95c9015a30a98acb353.bundle.js +0 -2
- package/dist/75.c95c9015a30a98acb353.bundle.js.map +0 -1
- package/dist/76.29111b9618d43a0dd149.bundle.js +0 -2
- package/dist/76.29111b9618d43a0dd149.bundle.js.map +0 -1
- package/dist/77.6ced6f6e26dfe1c4e00f.bundle.js +0 -2
- package/dist/77.6ced6f6e26dfe1c4e00f.bundle.js.map +0 -1
- package/dist/78.7c7d2a0d9e7c2d2483e6.bundle.js +0 -2
- package/dist/78.7c7d2a0d9e7c2d2483e6.bundle.js.map +0 -1
- package/dist/79.696045e048461f420813.bundle.js +0 -2
- package/dist/79.696045e048461f420813.bundle.js.map +0 -1
- package/dist/8.22695f5c20dcddc1c7f9.bundle.js +0 -2
- package/dist/8.22695f5c20dcddc1c7f9.bundle.js.map +0 -1
- package/dist/80.b5e832779f88ebe839e2.bundle.js +0 -2
- package/dist/80.b5e832779f88ebe839e2.bundle.js.map +0 -1
- package/dist/81.5a0776b89463df60bd1a.bundle.js +0 -2
- package/dist/81.5a0776b89463df60bd1a.bundle.js.map +0 -1
- package/dist/82.0a98b482c7c37a9812fc.bundle.js +0 -2
- package/dist/82.0a98b482c7c37a9812fc.bundle.js.map +0 -1
- package/dist/83.8beeb651df72c23d53ac.bundle.js +0 -2
- package/dist/83.8beeb651df72c23d53ac.bundle.js.map +0 -1
- package/dist/84.6f35fe422db61d53ae3e.bundle.js +0 -2
- package/dist/84.6f35fe422db61d53ae3e.bundle.js.map +0 -1
- package/dist/85.2d1142fcbdf4c9868e94.bundle.js +0 -2
- package/dist/85.2d1142fcbdf4c9868e94.bundle.js.map +0 -1
- package/dist/86.ce91cb69963c2b84e551.bundle.js +0 -2
- package/dist/86.ce91cb69963c2b84e551.bundle.js.map +0 -1
- package/dist/87.d4aa485128cd374a11c7.bundle.js +0 -2
- package/dist/87.d4aa485128cd374a11c7.bundle.js.map +0 -1
- package/dist/88.b4cd8e99a6af1abea692.bundle.js +0 -2
- package/dist/88.b4cd8e99a6af1abea692.bundle.js.map +0 -1
- package/dist/89.8ce40cc9d5fe2596fdf9.bundle.js +0 -2
- package/dist/89.8ce40cc9d5fe2596fdf9.bundle.js.map +0 -1
- package/dist/9.d94f24c12177433d455a.bundle.js +0 -2
- package/dist/9.d94f24c12177433d455a.bundle.js.map +0 -1
- package/dist/90.94988124ca51fa46932e.bundle.js +0 -2
- package/dist/90.94988124ca51fa46932e.bundle.js.map +0 -1
- package/dist/91.bfbbacbaea095478d82e.bundle.js +0 -2
- package/dist/91.bfbbacbaea095478d82e.bundle.js.map +0 -1
- package/dist/92.791121a262e5f42a2ba2.bundle.js +0 -2
- package/dist/92.791121a262e5f42a2ba2.bundle.js.map +0 -1
- package/dist/93.7da268902b8515abecf6.bundle.js +0 -2
- package/dist/93.7da268902b8515abecf6.bundle.js.map +0 -1
- package/dist/94.88f1bd8fa645739c4f30.bundle.js +0 -2
- package/dist/94.88f1bd8fa645739c4f30.bundle.js.map +0 -1
- package/dist/95.bbd1b757de3af20f2ac1.bundle.js +0 -2
- package/dist/95.bbd1b757de3af20f2ac1.bundle.js.map +0 -1
- package/dist/96.38e7df277c99946f9a20.bundle.js +0 -2
- package/dist/96.38e7df277c99946f9a20.bundle.js.map +0 -1
- package/dist/97.1818744137f2fb66596a.bundle.js +0 -2
- package/dist/97.1818744137f2fb66596a.bundle.js.map +0 -1
- package/dist/98.1a14af46a31cf35db0e5.bundle.js +0 -2
- package/dist/98.1a14af46a31cf35db0e5.bundle.js.map +0 -1
- package/dist/99.bd486f7d738e281a0752.bundle.js +0 -2
- package/dist/99.bd486f7d738e281a0752.bundle.js.map +0 -1
- package/dist/bundle.5eeff901b77240e58d27.bundle.js +0 -89
- package/dist/bundle.5eeff901b77240e58d27.bundle.js.map +0 -1
- package/dist/css/fonts/rubik-italic.woff +0 -0
- package/dist/css/fonts/rubik-italic.woff2 +0 -0
- package/dist/css/fonts/rubik-light.woff +0 -0
- package/dist/css/fonts/rubik-light.woff2 +0 -0
- package/dist/css/fonts/rubik-lightitalic.woff +0 -0
- package/dist/css/fonts/rubik-lightitalic.woff2 +0 -0
- package/dist/css/fonts/rubik-medium.woff +0 -0
- package/dist/css/fonts/rubik-medium.woff2 +0 -0
- package/dist/css/fonts/rubik-mediumitalic.woff +0 -0
- package/dist/css/fonts/rubik-mediumitalic.woff2 +0 -0
- package/dist/css/fonts/rubik-regular.woff +0 -0
- package/dist/css/fonts/rubik-regular.woff2 +0 -0
- package/dist/css/lib/bootstrap-switch/bootstrap-switch.min.css +0 -10
- package/dist/img/graphdb-splash.2eb3f7f02aa7e25a2545459e096f3738.svg +0 -141
- package/dist/js/angular/clustermanagement/templates/modal/clone-modal.html +0 -27
- package/dist/js/lib/nvd3/nv.d3.css +0 -755
- package/dist/main.e5d47f1d0bcd23074c38.css +0 -1
- package/dist/main.f10730ef6eebe969b494.bundle.js +0 -2
- package/dist/main.f10730ef6eebe969b494.bundle.js.map +0 -1
- package/dist/pages/cluster-management/cluster-configuration.html +0 -183
- package/dist/res/swagger/css/style.css +0 -250
- package/dist/res/swagger/css/typography.css +0 -60
- package/dist/vendor.327ffd7c7997ca288654.bundle.js +0 -50
- package/dist/vendor.327ffd7c7997ca288654.bundle.js.map +0 -1
package/dist/plugins.js
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
PluginRegistry.add('route', {
|
|
2
|
+
'url': '/aclmanagement',
|
|
3
|
+
'module': 'graphdb.framework.aclmanagement',
|
|
4
|
+
'path': 'aclmanagement/app',
|
|
5
|
+
'chunk': 'aclmanagement',
|
|
6
|
+
'controller': 'AclManagementCtrl',
|
|
7
|
+
'templateUrl': 'pages/aclmanagement.html',
|
|
8
|
+
'title': 'view.aclmanagement.title',
|
|
9
|
+
'helpInfo': 'view.aclmanagement.helpInfo'
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
PluginRegistry.add('main.menu', {
|
|
13
|
+
'items': [
|
|
14
|
+
{
|
|
15
|
+
label: 'Setup',
|
|
16
|
+
labelKey: 'menu.setup.label',
|
|
17
|
+
href: '#',
|
|
18
|
+
order: 5,
|
|
19
|
+
role: 'IS_AUTHENTICATED_FULLY',
|
|
20
|
+
icon: "icon-settings",
|
|
21
|
+
guideSelector: 'menu-setup'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'ACL Management',
|
|
25
|
+
labelKey: 'menu.aclmanagement.label',
|
|
26
|
+
href: 'aclmanagement',
|
|
27
|
+
order: 6,
|
|
28
|
+
parent: 'Setup',
|
|
29
|
+
role: "ROLE_ADMIN",
|
|
30
|
+
guideSelector: 'sub-menu-aclmanagement'
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
|
|
1
35
|
PluginRegistry.add('route', {
|
|
2
36
|
'url': '/autocomplete',
|
|
3
37
|
'module': 'graphdb.framework.autocomplete',
|
|
@@ -11,11 +45,69 @@ PluginRegistry.add('route', {
|
|
|
11
45
|
|
|
12
46
|
PluginRegistry.add('main.menu', {
|
|
13
47
|
'items': [
|
|
14
|
-
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
|
|
15
|
-
{label: 'Autocomplete', labelKey: 'menu.autocomplete.label', href: 'autocomplete', order: 40, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
|
|
48
|
+
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
|
|
49
|
+
{label: 'Autocomplete', labelKey: 'menu.autocomplete.label', href: 'autocomplete', order: 40, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-autocomplete'}
|
|
50
|
+
]
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
PluginRegistry.add('route', {
|
|
54
|
+
'url': '/monitor/backup-and-restore',
|
|
55
|
+
'module': 'graphdb.framework.monitoring.backupandrestore',
|
|
56
|
+
'path': 'backup-and-restore/app',
|
|
57
|
+
'chunk': 'monitor-backup-and-restore',
|
|
58
|
+
'controller': 'BackupAndRestoreCtrl',
|
|
59
|
+
'templateUrl': 'pages/monitor/backup-and-restore.html',
|
|
60
|
+
'title': 'view.monitoring.backup_and_restore.title',
|
|
61
|
+
'helpInfo': 'view.monitoring.backup_and_restore.helpInfo'
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
PluginRegistry.add('main.menu', {
|
|
65
|
+
'items': [
|
|
66
|
+
{
|
|
67
|
+
label: 'Backup and Restore',
|
|
68
|
+
labelKey: 'menu.backup_and_restore.label',
|
|
69
|
+
href: 'monitor/backup-and-restore',
|
|
70
|
+
order: 2,
|
|
71
|
+
parent: 'Monitor',
|
|
72
|
+
guideSelector: 'sub-menu-backup-and-restore'
|
|
73
|
+
}
|
|
16
74
|
]
|
|
17
75
|
});
|
|
18
76
|
|
|
77
|
+
PluginRegistry.add('route', [
|
|
78
|
+
{
|
|
79
|
+
'url': '/chatgpt',
|
|
80
|
+
'templateUrl': 'js/angular/chatgpt/templates/chat.html',
|
|
81
|
+
'module': 'graphdb.framework.chatgpt',
|
|
82
|
+
'path': 'chatgpt/app',
|
|
83
|
+
'controller': 'ChatGptCtrl',
|
|
84
|
+
'title': 'menu.ttyg.label',
|
|
85
|
+
'helpInfo': 'ttyg.helpInfo'
|
|
86
|
+
}
|
|
87
|
+
]);
|
|
88
|
+
|
|
89
|
+
PluginRegistry.add('main.menu', {
|
|
90
|
+
'items': [
|
|
91
|
+
{
|
|
92
|
+
label: 'Lab',
|
|
93
|
+
labelKey: 'menu.lab.label',
|
|
94
|
+
href: '#',
|
|
95
|
+
order: 6,
|
|
96
|
+
role: 'IS_AUTHENTICATED_FULLY',
|
|
97
|
+
icon: "fa fa-flask",
|
|
98
|
+
guideSelector: 'menu-lab'
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
label: 'Talk to Your Graph',
|
|
102
|
+
labelKey: 'menu.ttyg.label',
|
|
103
|
+
href: 'chatgpt',
|
|
104
|
+
order: 20,
|
|
105
|
+
role: 'ROLE_USER',
|
|
106
|
+
parent: 'Lab',
|
|
107
|
+
guideSelector: 'sub-menu-ttyg'
|
|
108
|
+
}]
|
|
109
|
+
});
|
|
110
|
+
|
|
19
111
|
PluginRegistry.add('route', [
|
|
20
112
|
{
|
|
21
113
|
'url': '/cluster',
|
|
@@ -26,14 +118,6 @@ PluginRegistry.add('route', [
|
|
|
26
118
|
'templateUrl': 'pages/cluster-management/clusterInfo.html',
|
|
27
119
|
'helpInfo': 'view.clusterManagement.helpInfo',
|
|
28
120
|
'title': 'view.clusterManagement.title'
|
|
29
|
-
}, {
|
|
30
|
-
'url': '/cluster/create',
|
|
31
|
-
'module': 'graphdb.framework.clustermanagement',
|
|
32
|
-
'path': 'clustermanagement/app',
|
|
33
|
-
'chunk': 'clustermanagement',
|
|
34
|
-
'controller': 'CreateClusterCtrl',
|
|
35
|
-
'templateUrl': 'pages/cluster-management/cluster-configuration.html',
|
|
36
|
-
'title': 'view.clusterManagement.create.title'
|
|
37
121
|
}
|
|
38
122
|
]);
|
|
39
123
|
|
|
@@ -43,12 +127,9 @@ PluginRegistry.add('main.menu', {
|
|
|
43
127
|
labelKey: 'menu.cluster.label',
|
|
44
128
|
href: 'cluster',
|
|
45
129
|
order: 20,
|
|
46
|
-
role: '
|
|
130
|
+
role: 'ROLE_USER',
|
|
47
131
|
parent: 'Setup',
|
|
48
|
-
|
|
49
|
-
href: 'cluster/create',
|
|
50
|
-
children: []
|
|
51
|
-
}]
|
|
132
|
+
guideSelector: 'sub-menu-cluster'
|
|
52
133
|
}]
|
|
53
134
|
});
|
|
54
135
|
|
|
@@ -88,7 +169,8 @@ PluginRegistry.add('main.menu', {
|
|
|
88
169
|
href: '#',
|
|
89
170
|
order: 1,
|
|
90
171
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
91
|
-
icon: "icon-data"
|
|
172
|
+
icon: "icon-data",
|
|
173
|
+
guideSelector: 'menu-explore'
|
|
92
174
|
}]
|
|
93
175
|
});
|
|
94
176
|
|
|
@@ -99,7 +181,7 @@ PluginRegistry.add('route', {
|
|
|
99
181
|
'chunk': 'export',
|
|
100
182
|
'controller': 'ExportCtrl',
|
|
101
183
|
'templateUrl': 'pages/export.html',
|
|
102
|
-
'title': 'menu.
|
|
184
|
+
'title': 'menu.graphs.overview.label',
|
|
103
185
|
'helpInfo': 'view.export.ctr.helpInfo '
|
|
104
186
|
});
|
|
105
187
|
|
|
@@ -111,7 +193,8 @@ PluginRegistry.add('main.menu', {
|
|
|
111
193
|
href: '#',
|
|
112
194
|
order: 1,
|
|
113
195
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
114
|
-
icon: 'icon-data'
|
|
196
|
+
icon: 'icon-data',
|
|
197
|
+
guideSelector: 'menu-explore'
|
|
115
198
|
},
|
|
116
199
|
{
|
|
117
200
|
label: 'Graphs overview',
|
|
@@ -119,7 +202,8 @@ PluginRegistry.add('main.menu', {
|
|
|
119
202
|
href: 'graphs',
|
|
120
203
|
order: 0,
|
|
121
204
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
122
|
-
parent: 'Explore'
|
|
205
|
+
parent: 'Explore',
|
|
206
|
+
guideSelector: 'sub-menu-graph-overview'
|
|
123
207
|
}
|
|
124
208
|
]
|
|
125
209
|
});
|
|
@@ -143,7 +227,8 @@ PluginRegistry.add('main.menu', {
|
|
|
143
227
|
href: '#',
|
|
144
228
|
order: 5,
|
|
145
229
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
146
|
-
icon: 'icon-settings'
|
|
230
|
+
icon: 'icon-settings',
|
|
231
|
+
guideSelector: 'menu-setup'
|
|
147
232
|
},
|
|
148
233
|
{
|
|
149
234
|
label: 'Connectors',
|
|
@@ -151,7 +236,8 @@ PluginRegistry.add('main.menu', {
|
|
|
151
236
|
href: 'connectors',
|
|
152
237
|
order: 10,
|
|
153
238
|
parent: 'Setup',
|
|
154
|
-
role: 'IS_AUTHENTICATED_FULLY'
|
|
239
|
+
role: 'IS_AUTHENTICATED_FULLY',
|
|
240
|
+
guideSelector: 'sub-menu-connectors'
|
|
155
241
|
}
|
|
156
242
|
]
|
|
157
243
|
});
|
|
@@ -215,19 +301,22 @@ PluginRegistry.add('main.menu', {
|
|
|
215
301
|
href: '#',
|
|
216
302
|
order: 1,
|
|
217
303
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
218
|
-
icon: 'icon-data'
|
|
304
|
+
icon: 'icon-data',
|
|
305
|
+
guideSelector: 'menu-explore'
|
|
219
306
|
}, {
|
|
220
307
|
label: 'Class relationships',
|
|
221
308
|
labelKey: 'menu.class.relationships.label',
|
|
222
309
|
href: 'relationships',
|
|
223
310
|
order: 2,
|
|
224
|
-
parent: 'Explore'
|
|
311
|
+
parent: 'Explore',
|
|
312
|
+
guideSelector: 'sub-menu-class-relationships'
|
|
225
313
|
}, {
|
|
226
314
|
label: 'Class hierarchy',
|
|
227
315
|
labelKey: 'menu.class.hierarchy.label',
|
|
228
316
|
href: 'hierarchy',
|
|
229
317
|
order: 1,
|
|
230
|
-
parent: 'Explore'
|
|
318
|
+
parent: 'Explore',
|
|
319
|
+
guideSelector: 'menu-class-hierarchy'
|
|
231
320
|
}, {
|
|
232
321
|
label: 'Visual graph',
|
|
233
322
|
labelKey: 'visual.graph.label',
|
|
@@ -237,11 +326,1655 @@ PluginRegistry.add('main.menu', {
|
|
|
237
326
|
children: [{
|
|
238
327
|
href: 'graphs-visualizations/config/save',
|
|
239
328
|
children: []
|
|
240
|
-
}]
|
|
329
|
+
}],
|
|
330
|
+
guideSelector: 'sub-menu-visual-graph'
|
|
331
|
+
}
|
|
332
|
+
]
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
PluginRegistry.add('route', [
|
|
336
|
+
{
|
|
337
|
+
url: '/guides',
|
|
338
|
+
module: 'graphdb.framework.guides',
|
|
339
|
+
path: 'guides/app',
|
|
340
|
+
templateUrl: 'pages/guides.html',
|
|
341
|
+
title: 'view.guides.title',
|
|
342
|
+
controller: 'GuidesCtrl',
|
|
343
|
+
helpInfo: 'view.guides.helpInfo'
|
|
344
|
+
}
|
|
345
|
+
]);
|
|
346
|
+
|
|
347
|
+
PluginRegistry.add('main.menu', {
|
|
348
|
+
'items': [
|
|
349
|
+
{
|
|
350
|
+
label: 'Guides',
|
|
351
|
+
labelKey: 'menu.guides.label',
|
|
352
|
+
order: 0,
|
|
353
|
+
parent: 'Help',
|
|
354
|
+
icon: 'paste',
|
|
355
|
+
href: 'guides',
|
|
356
|
+
role: 'ROLE_USER',
|
|
357
|
+
guideSelector: 'sub-menu-guide'
|
|
241
358
|
}
|
|
242
359
|
]
|
|
243
360
|
});
|
|
244
361
|
|
|
362
|
+
const reloadAndOpenInfoPanel = (services, clasInstanceSelector, resolve, reject) => {
|
|
363
|
+
services.$location.url('/hierarchy');
|
|
364
|
+
services.$route.reload();
|
|
365
|
+
services.GuideUtils.waitFor(clasInstanceSelector, 3)
|
|
366
|
+
.then(() => {
|
|
367
|
+
services.GuideUtils.classHierarchyFocus(clasInstanceSelector);
|
|
368
|
+
// Wait a little time animation to complete.
|
|
369
|
+
services.GuideUtils.deferredShow(500)()
|
|
370
|
+
.then(() => resolve());
|
|
371
|
+
})
|
|
372
|
+
.catch((error) => reject(error));
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
PluginRegistry.add('guide.step', [
|
|
376
|
+
{
|
|
377
|
+
guideBlockName: 'class-hierarchy',
|
|
378
|
+
getSteps: (options, services) => {
|
|
379
|
+
const GuideUtils = services.GuideUtils;
|
|
380
|
+
options.mainAction = 'class-hierarchy';
|
|
381
|
+
|
|
382
|
+
const steps = [
|
|
383
|
+
{
|
|
384
|
+
guideBlockName: 'click-main-menu',
|
|
385
|
+
options: angular.extend({}, {
|
|
386
|
+
menu: 'class-hierarchy',
|
|
387
|
+
showIntro: true
|
|
388
|
+
}, options)
|
|
389
|
+
}, {
|
|
390
|
+
guideBlockName: 'read-only-element',
|
|
391
|
+
options: angular.extend({}, {
|
|
392
|
+
content: 'guide.step_plugin.class_hierarchy_intro.content',
|
|
393
|
+
url: '/hierarchy',
|
|
394
|
+
elementSelector: '#classChart',
|
|
395
|
+
placement: 'left'
|
|
396
|
+
}, options)
|
|
397
|
+
}
|
|
398
|
+
];
|
|
399
|
+
|
|
400
|
+
if (options.introExtraContent) {
|
|
401
|
+
steps.push({
|
|
402
|
+
guideBlockName: 'read-only-element',
|
|
403
|
+
options: angular.extend({}, {
|
|
404
|
+
content: '',
|
|
405
|
+
extraContent: options.introExtraContent,
|
|
406
|
+
url: '/hierarchy',
|
|
407
|
+
elementSelector: '#classChart #main-group',
|
|
408
|
+
placement: 'left'
|
|
409
|
+
}, options)
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (angular.isArray(options.zoomIris)) {
|
|
414
|
+
options.zoomIris.forEach((zoomIri) => {
|
|
415
|
+
const selector = GuideUtils.getGuideElementSelector('class-' + zoomIri.iri);
|
|
416
|
+
steps.push({
|
|
417
|
+
guideBlockName: 'clickable-element',
|
|
418
|
+
options: angular.extend({}, {
|
|
419
|
+
content: 'guide.step_plugin.class_hierarchy_zoom.content',
|
|
420
|
+
url: '/hierarchy',
|
|
421
|
+
placement: 'left',
|
|
422
|
+
elementSelector: selector,
|
|
423
|
+
onNextClick: (guide, step) => {
|
|
424
|
+
GuideUtils.classHierarchyZoom(step.elementSelector);
|
|
425
|
+
guide.next();
|
|
426
|
+
}
|
|
427
|
+
}, options, zoomIri)
|
|
428
|
+
});
|
|
429
|
+
if (zoomIri.postExtraContent) {
|
|
430
|
+
steps.push({
|
|
431
|
+
guideBlockName: 'read-only-element',
|
|
432
|
+
options: angular.extend({}, {
|
|
433
|
+
content: '',
|
|
434
|
+
extraContent: zoomIri.postExtraContent,
|
|
435
|
+
url: '/hierarchy',
|
|
436
|
+
placement: 'left',
|
|
437
|
+
beforeShowPromise: GuideUtils.deferredShow(800),
|
|
438
|
+
elementSelector: selector
|
|
439
|
+
}, options)
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return steps;
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
guideBlockName: 'class-hierarchy-instances',
|
|
450
|
+
getSteps: (options, services) => {
|
|
451
|
+
const GuideUtils = services.GuideUtils;
|
|
452
|
+
const $location = services.$location;
|
|
453
|
+
const $route = services.$route;
|
|
454
|
+
options.title = 'guide.step_plugin.class-hierarchy-instances.title';
|
|
455
|
+
const closeButtonSelector = GuideUtils.getGuideElementSelector('close-info-panel');
|
|
456
|
+
const clasInstanceSelector = GuideUtils.getGuideElementSelector('class-' + options.iri);
|
|
457
|
+
const steps = [
|
|
458
|
+
{
|
|
459
|
+
guideBlockName: 'clickable-element',
|
|
460
|
+
options: angular.extend({}, {
|
|
461
|
+
content: 'guide.step_plugin.class-hierarchy-instances.content',
|
|
462
|
+
url: '/hierarchy',
|
|
463
|
+
elementSelector: clasInstanceSelector,
|
|
464
|
+
onNextClick: (guide) => {
|
|
465
|
+
GuideUtils.classHierarchyFocus(clasInstanceSelector);
|
|
466
|
+
guide.next();
|
|
467
|
+
},
|
|
468
|
+
initPreviousStep: () => new Promise((resolve, reject) => {
|
|
469
|
+
if (!GuideUtils.isVisible(closeButtonSelector)) {
|
|
470
|
+
reloadAndOpenInfoPanel({$location, $route, GuideUtils}, clasInstanceSelector, resolve, reject);
|
|
471
|
+
} else {
|
|
472
|
+
resolve();
|
|
473
|
+
}
|
|
474
|
+
})
|
|
475
|
+
}, options)
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
guideBlockName: 'read-only-element',
|
|
479
|
+
options: angular.extend({}, {
|
|
480
|
+
content: 'guide.step_plugin.class-hierarchy-instances-side-panel.content',
|
|
481
|
+
url: '/hierarchy',
|
|
482
|
+
elementSelector: '.rdf-info-side-panel div',
|
|
483
|
+
canBePaused: false,
|
|
484
|
+
placement: 'left',
|
|
485
|
+
beforeShowPromise: GuideUtils.deferredShow(800),
|
|
486
|
+
onPreviousClick: () => new Promise(function (resolve) {
|
|
487
|
+
GuideUtils.waitFor(closeButtonSelector, 1)
|
|
488
|
+
.then(() => $(closeButtonSelector).trigger('click'));
|
|
489
|
+
resolve();
|
|
490
|
+
})
|
|
491
|
+
}, options)
|
|
492
|
+
}
|
|
493
|
+
];
|
|
494
|
+
|
|
495
|
+
if (angular.isArray(options.focusInstances)) {
|
|
496
|
+
options.focusInstances.forEach((focusInstance) => {
|
|
497
|
+
if (!angular.isObject(focusInstance)) {
|
|
498
|
+
focusInstance = {
|
|
499
|
+
instance: focusInstance
|
|
500
|
+
};
|
|
501
|
+
}
|
|
502
|
+
steps.push({
|
|
503
|
+
guideBlockName: 'read-only-element',
|
|
504
|
+
options: angular.extend({}, {
|
|
505
|
+
content: 'guide.step_plugin.class-hierarchy-instances-focus.content',
|
|
506
|
+
url: '/hierarchy',
|
|
507
|
+
canBePaused: false,
|
|
508
|
+
elementSelector: GuideUtils.getGuideElementSelector('instance-' + focusInstance.instance),
|
|
509
|
+
focusInstance: focusInstance.instance,
|
|
510
|
+
extraContent: focusInstance.message
|
|
511
|
+
}, options)
|
|
512
|
+
});
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
const instanceCountSelector = GuideUtils.getGuideElementSelector('instances-count');
|
|
517
|
+
if (options.followCountLink) {
|
|
518
|
+
steps.push({
|
|
519
|
+
guideBlockName: 'clickable-element',
|
|
520
|
+
options: angular.extend({}, {
|
|
521
|
+
content: 'guide.step_plugin.class-hierarchy-instances-count.content',
|
|
522
|
+
url: '/hierarchy',
|
|
523
|
+
canBePaused: false,
|
|
524
|
+
elementSelector: instanceCountSelector,
|
|
525
|
+
onNextClick: (guide, step) => {
|
|
526
|
+
GuideUtils.waitFor(step.elementSelector, 3)
|
|
527
|
+
.then(() => $(step.elementSelector).trigger('click'));
|
|
528
|
+
guide.next();
|
|
529
|
+
}
|
|
530
|
+
}, options)
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
steps.push({
|
|
534
|
+
guideBlockName: 'read-only-element',
|
|
535
|
+
options: angular.extend({}, {
|
|
536
|
+
content: 'guide.step_plugin.class-hierarchy-instances-query.content',
|
|
537
|
+
url: '/sparql',
|
|
538
|
+
elementSelector: GuideUtils.getSparqlEditorSelector(),
|
|
539
|
+
scrollToHandler: GuideUtils.scrollToTop
|
|
540
|
+
}, options)
|
|
541
|
+
});
|
|
542
|
+
steps.push({
|
|
543
|
+
guideBlockName: 'read-only-element',
|
|
544
|
+
options: angular.extend({}, {
|
|
545
|
+
content: 'guide.step_plugin.class-hierarchy-instances-results.content',
|
|
546
|
+
extraContent: options.showExtraCommentSparql !== false ?
|
|
547
|
+
'guide.step_plugin.class-hierarchy-instances-results.extraContent' : null,
|
|
548
|
+
url: '/sparql',
|
|
549
|
+
placement: 'top',
|
|
550
|
+
elementSelector: GuideUtils.getSparqlResultsSelector(),
|
|
551
|
+
fileName: options.fileName,
|
|
552
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
553
|
+
onNextClick: (guide) => {
|
|
554
|
+
window.history.back();
|
|
555
|
+
guide.next();
|
|
556
|
+
},
|
|
557
|
+
initPreviousStep: () => Promise.resolve()
|
|
558
|
+
}, options)
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
steps.push({
|
|
563
|
+
guideBlockName: 'clickable-element',
|
|
564
|
+
options: angular.extend({}, {
|
|
565
|
+
content: 'guide.step_plugin.class-hierarchy-instances-side-panel-close.content',
|
|
566
|
+
url: '/hierarchy',
|
|
567
|
+
canBePaused: false,
|
|
568
|
+
elementSelector: closeButtonSelector,
|
|
569
|
+
placement: 'left',
|
|
570
|
+
// If we followed the count link we come back here from another view
|
|
571
|
+
// and the side panel needs time to open
|
|
572
|
+
beforeShowPromise: options.followCountLink ? GuideUtils.deferredShow(1500) : Promise.resolve(),
|
|
573
|
+
advanceOn: {
|
|
574
|
+
selector: closeButtonSelector,
|
|
575
|
+
event: 'click'
|
|
576
|
+
},
|
|
577
|
+
onNextClick: () => GuideUtils.waitFor(closeButtonSelector, 3)
|
|
578
|
+
.then(() => $(closeButtonSelector).trigger('click')),
|
|
579
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
580
|
+
|
|
581
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
582
|
+
// If method is called from same step just click count link
|
|
583
|
+
if (currentStepId === stepId && options.followCountLink) {
|
|
584
|
+
GuideUtils.waitFor(instanceCountSelector, 3)
|
|
585
|
+
.then(() => {
|
|
586
|
+
$(instanceCountSelector).trigger('click');
|
|
587
|
+
GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(), 3)
|
|
588
|
+
.then(() => {
|
|
589
|
+
GuideUtils.deferredShow(50)()
|
|
590
|
+
.then(() => resolve())
|
|
591
|
+
.catch((error) => reject(error));
|
|
592
|
+
})
|
|
593
|
+
.catch((error) => reject(error));
|
|
594
|
+
resolve();
|
|
595
|
+
})
|
|
596
|
+
.catch((error) => reject(error));
|
|
597
|
+
} else {
|
|
598
|
+
// If is called from other step we have to reload and open the info panel.
|
|
599
|
+
reloadAndOpenInfoPanel({$location, $route, GuideUtils}, clasInstanceSelector, resolve, reject);
|
|
600
|
+
}
|
|
601
|
+
})
|
|
602
|
+
}, options)
|
|
603
|
+
});
|
|
604
|
+
|
|
605
|
+
return steps;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
]);
|
|
609
|
+
|
|
610
|
+
PluginRegistry.add('guide.step', [
|
|
611
|
+
{
|
|
612
|
+
guideBlockName: 'create-repository',
|
|
613
|
+
getSteps: (options, services) => {
|
|
614
|
+
const GuideUtils = services.GuideUtils;
|
|
615
|
+
options.mainAction = 'create-repository';
|
|
616
|
+
|
|
617
|
+
const repositoryIdInputSelector = GuideUtils.getGuideElementSelector('graphDBRepositoryIdInput');
|
|
618
|
+
const repositoryId = options.repositoryId;
|
|
619
|
+
const steps = [
|
|
620
|
+
{
|
|
621
|
+
guideBlockName: 'click-main-menu',
|
|
622
|
+
options: angular.extend({}, {
|
|
623
|
+
menu: 'repositories',
|
|
624
|
+
showIntro: true
|
|
625
|
+
}, options)
|
|
626
|
+
}, {
|
|
627
|
+
guideBlockName: 'clickable-element',
|
|
628
|
+
options: angular.extend({}, {
|
|
629
|
+
content: 'guide.step_plugin.create_repository.create_repository_button.content',
|
|
630
|
+
url: '/repository',
|
|
631
|
+
elementSelector: GuideUtils.getGuideElementSelector('createRepository'),
|
|
632
|
+
onNextClick: (guide) => GuideUtils.clickOnGuideElement('createRepository')().then(() => guide.next())
|
|
633
|
+
|
|
634
|
+
}, options)
|
|
635
|
+
}, {
|
|
636
|
+
guideBlockName: 'clickable-element',
|
|
637
|
+
options: angular.extend({}, {
|
|
638
|
+
content: 'guide.step_plugin.create_repository.graph_db_repository.content',
|
|
639
|
+
url: '/repository/create',
|
|
640
|
+
elementSelector: GuideUtils.getGuideElementSelector('createGraphDBRepository'),
|
|
641
|
+
onNextClick: GuideUtils.clickOnGuideElement('createGraphDBRepository')
|
|
642
|
+
}, options)
|
|
643
|
+
}, {
|
|
644
|
+
guideBlockName: 'input-element',
|
|
645
|
+
options: angular.extend({}, {
|
|
646
|
+
content: 'guide.step_plugin.create_repository.repository_id.content',
|
|
647
|
+
url: '/repository/create/graphdb',
|
|
648
|
+
elementSelector: repositoryIdInputSelector,
|
|
649
|
+
onNextValidate: () => GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId)
|
|
650
|
+
}, options)
|
|
651
|
+
}
|
|
652
|
+
];
|
|
653
|
+
|
|
654
|
+
if (options.rulesetName) {
|
|
655
|
+
steps.push({
|
|
656
|
+
guideBlockName: 'clickable-element',
|
|
657
|
+
options: angular.extend({}, {
|
|
658
|
+
content: 'guide.step_plugin.create_repository.ruleset_dropdown.content',
|
|
659
|
+
url: '/repository/create/graphdb',
|
|
660
|
+
elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryRulesetSelect'),
|
|
661
|
+
show: () => () => {
|
|
662
|
+
GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);
|
|
663
|
+
},
|
|
664
|
+
rulesetName: options.rulesetName
|
|
665
|
+
}, options)
|
|
666
|
+
});
|
|
667
|
+
}
|
|
668
|
+
steps.push({
|
|
669
|
+
guideBlockName: 'clickable-element',
|
|
670
|
+
options: angular.extend({}, {
|
|
671
|
+
content: 'guide.step_plugin.create_repository.save_button.content',
|
|
672
|
+
url: '/repository/create/graphdb',
|
|
673
|
+
elementSelector: GuideUtils.getGuideElementSelector('graphDBRepositoryCrateButton'),
|
|
674
|
+
show: () => () => {
|
|
675
|
+
GuideUtils.validateTextInput(repositoryIdInputSelector, repositoryId);
|
|
676
|
+
},
|
|
677
|
+
onNextClick: GuideUtils.clickOnGuideElement('graphDBRepositoryCrateButton')
|
|
678
|
+
}, options)
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
return steps;
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
]);
|
|
685
|
+
|
|
686
|
+
PluginRegistry.add('guide.step', [
|
|
687
|
+
{
|
|
688
|
+
guideBlockName: 'download-guide-resource',
|
|
689
|
+
getSteps: (options, services) => {
|
|
690
|
+
return {
|
|
691
|
+
guideBlockName: 'info-message',
|
|
692
|
+
options: angular.extend({}, {
|
|
693
|
+
title: 'guide.step_plugin.download-guide-resource.title',
|
|
694
|
+
content: 'guide.step_plugin.download-guide-resource.content',
|
|
695
|
+
canBePaused: true,
|
|
696
|
+
forceReload: true,
|
|
697
|
+
resourceUrl: services.GuideUtils.toResourceDownloadUrl(options)
|
|
698
|
+
}, options)
|
|
699
|
+
};
|
|
700
|
+
}
|
|
701
|
+
}]
|
|
702
|
+
);
|
|
703
|
+
|
|
704
|
+
PluginRegistry.add('guide.step', [
|
|
705
|
+
{
|
|
706
|
+
guideBlockName: 'enable-autocomplete',
|
|
707
|
+
getSteps: (options, services) => {
|
|
708
|
+
const GuideUtils = services.GuideUtils;
|
|
709
|
+
options.mainAction = 'enable-autocomplete';
|
|
710
|
+
|
|
711
|
+
const autocompleteCheckboxSelector = GuideUtils.getGuideElementSelector('autocompleteCheckbox');
|
|
712
|
+
return [
|
|
713
|
+
{
|
|
714
|
+
guideBlockName: 'click-main-menu',
|
|
715
|
+
options: angular.extend({}, {
|
|
716
|
+
menu: 'autocomplete',
|
|
717
|
+
showIntro: true
|
|
718
|
+
}, options)
|
|
719
|
+
}, {
|
|
720
|
+
guideBlockName: 'clickable-element',
|
|
721
|
+
options: angular.extend({}, {
|
|
722
|
+
content: 'guide.step_plugin.enable-autocomplete.content',
|
|
723
|
+
url: '/autocomplete',
|
|
724
|
+
elementSelector: autocompleteCheckboxSelector,
|
|
725
|
+
// Disable default behavior of service when element is clicked.
|
|
726
|
+
advanceOn: undefined,
|
|
727
|
+
show: (guide) => () => {
|
|
728
|
+
// Added listener to the element.
|
|
729
|
+
$(autocompleteCheckboxSelector)
|
|
730
|
+
.on('mouseup.autocompleteCheckboxClick', function () {
|
|
731
|
+
// If autocomplete is enabled go to the next step.
|
|
732
|
+
GuideUtils.deferredShow(20)()
|
|
733
|
+
.then(() => {
|
|
734
|
+
if (GuideUtils.isGuideElementChecked('autocompleteCheckbox', ' input')) {
|
|
735
|
+
guide.next();
|
|
736
|
+
}
|
|
737
|
+
});
|
|
738
|
+
});
|
|
739
|
+
},
|
|
740
|
+
onNextClick: (guide) => {
|
|
741
|
+
if (!GuideUtils.isGuideElementChecked('autocompleteCheckbox', ' input')) {
|
|
742
|
+
$(autocompleteCheckboxSelector).trigger('click');
|
|
743
|
+
}
|
|
744
|
+
guide.next();
|
|
745
|
+
},
|
|
746
|
+
hide: () => () => {
|
|
747
|
+
// Remove ths listener from element. It is important when step is hided.
|
|
748
|
+
$(autocompleteCheckboxSelector).off('mouseup.autocompleteCheckboxClick');
|
|
749
|
+
}
|
|
750
|
+
}, options)
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
guideBlockName: 'read-only-element',
|
|
754
|
+
options: angular.extend({}, {
|
|
755
|
+
content: 'guide.step_plugin.enable-autocomplete.status_info.content',
|
|
756
|
+
url: '/autocomplete',
|
|
757
|
+
elementSelector: GuideUtils.getGuideElementSelector('autocompleteStatus'),
|
|
758
|
+
canBePaused: false
|
|
759
|
+
}, options)
|
|
760
|
+
}
|
|
761
|
+
];
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
]);
|
|
765
|
+
|
|
766
|
+
PluginRegistry.add('guide.step', [
|
|
767
|
+
{
|
|
768
|
+
guideBlockName: 'execute-sparql-query',
|
|
769
|
+
getSteps: (options, services) => {
|
|
770
|
+
const GuideUtils = services.GuideUtils;
|
|
771
|
+
const toastr = services.toastr;
|
|
772
|
+
const $translate = services.$translate;
|
|
773
|
+
const $interpolate = services.$interpolate;
|
|
774
|
+
const $location = services.$location;
|
|
775
|
+
const $route = services.$route;
|
|
776
|
+
options.mainAction = 'execute-sparql-query';
|
|
777
|
+
|
|
778
|
+
const code = document.createElement('code');
|
|
779
|
+
const copy = document.createElement('button');
|
|
780
|
+
copy.className = 'btn btn-sm btn-secondary';
|
|
781
|
+
copy.innerText = $translate.instant('guide.step_plugin.execute-sparql-query.copy-to-editor.button');
|
|
782
|
+
copy.setAttribute('ng-click', 'copyQuery()');
|
|
783
|
+
|
|
784
|
+
const steps = [
|
|
785
|
+
{
|
|
786
|
+
guideBlockName: 'click-main-menu',
|
|
787
|
+
options: angular.extend({}, {
|
|
788
|
+
menu: 'sparql',
|
|
789
|
+
showIntro: true
|
|
790
|
+
}, options)
|
|
791
|
+
}
|
|
792
|
+
];
|
|
793
|
+
|
|
794
|
+
const defaultQuery = 'select * where { \n\t?s ?p ?o .\n} limit 100 \n';
|
|
795
|
+
const queries = {};
|
|
796
|
+
queries[-1] = 'PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\nselect * where { \n\t?s ?p ?o .\n?o rdf:type ""\n} limit 100 ';
|
|
797
|
+
|
|
798
|
+
let overwriteQuery = false;
|
|
799
|
+
options.queries.forEach((queryDef, index) => {
|
|
800
|
+
const query = queryDef.query;
|
|
801
|
+
queries[index] = query;
|
|
802
|
+
code.innerText = query;
|
|
803
|
+
options.queryAsHtmlCodeElement = '<div class="shepherd-code">' + code.outerHTML + copy.outerHTML + '</div>';
|
|
804
|
+
|
|
805
|
+
const queryEditorSelector = GuideUtils.getSparqlEditorSelector();
|
|
806
|
+
steps.push({
|
|
807
|
+
guideBlockName: 'input-element',
|
|
808
|
+
options: angular.extend({}, {
|
|
809
|
+
content: 'guide.step_plugin.execute-sparql-query.query-editor.content',
|
|
810
|
+
url: '/sparql',
|
|
811
|
+
elementSelector: queryEditorSelector,
|
|
812
|
+
beforeShowPromise: () => new Promise(function (resolve, reject) {
|
|
813
|
+
GuideUtils.deferredShow(10)()
|
|
814
|
+
.then(() => {
|
|
815
|
+
GuideUtils.waitFor(queryEditorSelector, 3)
|
|
816
|
+
.then(() => resolve())
|
|
817
|
+
.catch((error) => {
|
|
818
|
+
services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
|
|
819
|
+
reject(error);
|
|
820
|
+
});
|
|
821
|
+
});
|
|
822
|
+
}),
|
|
823
|
+
onNextValidate: () => {
|
|
824
|
+
const editorQuery = GuideUtils.removeWhiteSpaces(window.editor.getValue());
|
|
825
|
+
const stepQuery = GuideUtils.removeWhiteSpaces(query);
|
|
826
|
+
if (editorQuery !== stepQuery) {
|
|
827
|
+
if (editorQuery === 'select*where{?s?p?o.}limit100' || overwriteQuery) {
|
|
828
|
+
// The query is the default query OR we previously overwrote it => we can overwrite it
|
|
829
|
+
window.editor.setValue(query);
|
|
830
|
+
} else {
|
|
831
|
+
GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,
|
|
832
|
+
'guide.step_plugin.execute-sparql-query.query-not-same.error', options);
|
|
833
|
+
return false;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
overwriteQuery = true;
|
|
837
|
+
return true;
|
|
838
|
+
},
|
|
839
|
+
initPreviousStep: () => new Promise((resolve, reject) => {
|
|
840
|
+
if (index === 0) {
|
|
841
|
+
window.editor.setValue(defaultQuery);
|
|
842
|
+
resolve();
|
|
843
|
+
} else {
|
|
844
|
+
const haveToReload = '/sparql' !== $location.url();
|
|
845
|
+
GuideUtils.executeSparqlQuery($location, $route, query, haveToReload)
|
|
846
|
+
.then(() => resolve())
|
|
847
|
+
.catch((error) => reject(error));
|
|
848
|
+
}
|
|
849
|
+
}),
|
|
850
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
851
|
+
extraContent: queryDef.queryExtraContent,
|
|
852
|
+
onScope: (scope) => {
|
|
853
|
+
scope.copyQuery = () => {
|
|
854
|
+
window.editor.setValue(query);
|
|
855
|
+
};
|
|
856
|
+
}
|
|
857
|
+
}, options)
|
|
858
|
+
});
|
|
859
|
+
steps.push({
|
|
860
|
+
guideBlockName: 'clickable-element',
|
|
861
|
+
options: angular.extend({}, {
|
|
862
|
+
content: 'guide.step_plugin.execute-sparql-query.run-sparql-query.content',
|
|
863
|
+
url: '/sparql',
|
|
864
|
+
elementSelector: GuideUtils.getGuideElementSelector('runSparqlQuery'),
|
|
865
|
+
onNextClick: (guide) => GuideUtils.clickOnGuideElement('runSparqlQuery')().then(() => guide.next()),
|
|
866
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
867
|
+
canBePaused: false,
|
|
868
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
869
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
870
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
871
|
+
.then(() => {
|
|
872
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
873
|
+
// Skip expanding of node if last step is "visual-graph-expand"
|
|
874
|
+
if (currentStepId === stepId) {
|
|
875
|
+
resolve();
|
|
876
|
+
} else {
|
|
877
|
+
GuideUtils.clickOnGuideElement('runSparqlQuery')().then(() => resolve()).catch((error) => reject(error));
|
|
878
|
+
}
|
|
879
|
+
})
|
|
880
|
+
.catch((error) => reject(error));
|
|
881
|
+
})
|
|
882
|
+
}, options)
|
|
883
|
+
});
|
|
884
|
+
steps.push({
|
|
885
|
+
guideBlockName: 'read-only-element',
|
|
886
|
+
options: angular.extend({}, {
|
|
887
|
+
content: 'guide.step_plugin.execute-sparql-query.result-explain.content',
|
|
888
|
+
url: '/sparql',
|
|
889
|
+
placement: 'top',
|
|
890
|
+
elementSelector: GuideUtils.getSparqlResultsSelector(),
|
|
891
|
+
fileName: options.fileName,
|
|
892
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
893
|
+
extraContent: queryDef.resultExtraContent,
|
|
894
|
+
canBePaused: false,
|
|
895
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
896
|
+
if ('/sparql' !== $location.url()) {
|
|
897
|
+
GuideUtils.executeSparqlQuery($location, $route, query, true)
|
|
898
|
+
.then(() => resolve())
|
|
899
|
+
.catch((error) => reject(error));
|
|
900
|
+
} else {
|
|
901
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
902
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
903
|
+
.then(() => {
|
|
904
|
+
window.editor.setValue(query);
|
|
905
|
+
resolve();
|
|
906
|
+
})
|
|
907
|
+
.catch((error) => reject(error));
|
|
908
|
+
}
|
|
909
|
+
})
|
|
910
|
+
}, options)
|
|
911
|
+
});
|
|
912
|
+
});
|
|
913
|
+
|
|
914
|
+
return steps;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
]);
|
|
918
|
+
|
|
919
|
+
PluginRegistry.add('guide.step', [
|
|
920
|
+
{
|
|
921
|
+
guideBlockName: 'import-rdf-file',
|
|
922
|
+
getSteps: (options, services) => {
|
|
923
|
+
const GuideUtils = services.GuideUtils;
|
|
924
|
+
const toastr = services.toastr;
|
|
925
|
+
const $translate = services.$translate;
|
|
926
|
+
const $interpolate = services.$interpolate;
|
|
927
|
+
options.mainAction = 'import-file';
|
|
928
|
+
|
|
929
|
+
const steps = [
|
|
930
|
+
{
|
|
931
|
+
guideBlockName: 'click-main-menu',
|
|
932
|
+
options: angular.extend({}, {
|
|
933
|
+
menu: 'import',
|
|
934
|
+
showIntro: true
|
|
935
|
+
}, options)
|
|
936
|
+
}
|
|
937
|
+
];
|
|
938
|
+
|
|
939
|
+
if (options.resourcePath) {
|
|
940
|
+
steps.push(
|
|
941
|
+
{
|
|
942
|
+
guideBlockName: 'download-guide-resource',
|
|
943
|
+
options: angular.extend({}, {
|
|
944
|
+
title: ''
|
|
945
|
+
}, options)
|
|
946
|
+
}
|
|
947
|
+
);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
const importSettingsButtonSelector = GuideUtils.getGuideElementSelector('import-settings-import-button');
|
|
951
|
+
steps.push(...[
|
|
952
|
+
{
|
|
953
|
+
guideBlockName: 'clickable-element',
|
|
954
|
+
options: angular.extend({}, {
|
|
955
|
+
content: 'guide.step_plugin.import_rdf_file.content',
|
|
956
|
+
url: '/import',
|
|
957
|
+
elementSelector: GuideUtils.getGuideElementSelector('uploadRdfFileButton'),
|
|
958
|
+
// Disable default behavior of service when element is clicked.
|
|
959
|
+
advanceOn: undefined,
|
|
960
|
+
show: (guide) => () => {
|
|
961
|
+
// Add "change" listener to the file upload input, it will be triggered when a file is selected.
|
|
962
|
+
$('#ngf-wb-import-uploadFile')
|
|
963
|
+
.on('change.importRdfFile', function () {
|
|
964
|
+
// Check if expected file is selected, then process to the next step.
|
|
965
|
+
GuideUtils.waitFor(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile), 2)
|
|
966
|
+
.then(() => guide.next());
|
|
967
|
+
});
|
|
968
|
+
},
|
|
969
|
+
hide: () => () => {
|
|
970
|
+
// Remove ths listener from element. It is important when step is hided.
|
|
971
|
+
$('#ngf-wb-import-uploadFile').off('change.importRdfFile');
|
|
972
|
+
},
|
|
973
|
+
onNextValidate: () => {
|
|
974
|
+
if (!$(GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile)).length) {
|
|
975
|
+
GuideUtils.noNextErrorToast(toastr, $translate, $interpolate,
|
|
976
|
+
'guide.step_plugin.import_rdf_file.file-must-be-uploaded', options);
|
|
977
|
+
return false;
|
|
978
|
+
} else {
|
|
979
|
+
return true;
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
}, options)
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
guideBlockName: 'clickable-element',
|
|
986
|
+
options: angular.extend({}, {
|
|
987
|
+
content: 'guide.step_plugin.import_rdf_file.import-file.button.content',
|
|
988
|
+
elementSelector: GuideUtils.getGuideElementSelector('import-file-' + options.resourceFile),
|
|
989
|
+
url: '/import',
|
|
990
|
+
placement: 'left',
|
|
991
|
+
onNextClick: () => GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()
|
|
992
|
+
}, options)
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
guideBlockName: 'clickable-element',
|
|
996
|
+
options: angular.extend({}, {
|
|
997
|
+
content: 'guide.step_plugin.import_rdf_file.import-settings.import.button.content',
|
|
998
|
+
elementSelector: importSettingsButtonSelector,
|
|
999
|
+
placement: 'top',
|
|
1000
|
+
onPreviousClick: () => new Promise(function (resolve) {
|
|
1001
|
+
GuideUtils.clickOnGuideElement('import-settings-cancel-button')()
|
|
1002
|
+
.then(() => resolve());
|
|
1003
|
+
}),
|
|
1004
|
+
beforeShowPromise: () => new Promise(function (resolve, reject) {
|
|
1005
|
+
services.GuideUtils.deferredShow(300)()
|
|
1006
|
+
.then(() => {
|
|
1007
|
+
services.GuideUtils.waitFor(importSettingsButtonSelector, 3)
|
|
1008
|
+
.then(() => {
|
|
1009
|
+
resolve();
|
|
1010
|
+
})
|
|
1011
|
+
.catch((error) => {
|
|
1012
|
+
services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
|
|
1013
|
+
reject(error);
|
|
1014
|
+
});
|
|
1015
|
+
});
|
|
1016
|
+
}),
|
|
1017
|
+
onNextClick: () => GuideUtils.clickOnGuideElement('import-settings-import-button')(),
|
|
1018
|
+
canBePaused: false
|
|
1019
|
+
}, options)
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
guideBlockName: 'read-only-element',
|
|
1023
|
+
options: angular.extend({}, {
|
|
1024
|
+
content: 'guide.step_plugin.import_status_info.content',
|
|
1025
|
+
url: '/import',
|
|
1026
|
+
elementSelector: GuideUtils.getGuideElementSelector('import-status-info'),
|
|
1027
|
+
onPreviousClick: () => new Promise(function (resolve) {
|
|
1028
|
+
GuideUtils.clickOnGuideElement('import-file-' + options.resourceFile)()
|
|
1029
|
+
.then(() => resolve());
|
|
1030
|
+
})
|
|
1031
|
+
}, options)
|
|
1032
|
+
}
|
|
1033
|
+
]);
|
|
1034
|
+
|
|
1035
|
+
return steps;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
]);
|
|
1039
|
+
|
|
1040
|
+
PluginRegistry.add('guide.step', [
|
|
1041
|
+
{
|
|
1042
|
+
guideBlockName: 'click-main-menu',
|
|
1043
|
+
getSteps: (options, services) => {
|
|
1044
|
+
const GuideUtils = services.GuideUtils;
|
|
1045
|
+
const steps = [];
|
|
1046
|
+
|
|
1047
|
+
let menuSelector;
|
|
1048
|
+
let menuTitle;
|
|
1049
|
+
let submenuSelector;
|
|
1050
|
+
let submenuTitle;
|
|
1051
|
+
let viewName;
|
|
1052
|
+
let helpInfo;
|
|
1053
|
+
|
|
1054
|
+
switch (options.menu) {
|
|
1055
|
+
case "repositories":
|
|
1056
|
+
menuSelector = 'menu-setup';
|
|
1057
|
+
menuTitle = 'menu.setup.label';
|
|
1058
|
+
submenuSelector = 'sub-menu-repositories';
|
|
1059
|
+
submenuTitle = 'menu.repositories.label';
|
|
1060
|
+
viewName = 'menu.repositories.label';
|
|
1061
|
+
helpInfo = 'view.repositories.helpInfo';
|
|
1062
|
+
|
|
1063
|
+
break;
|
|
1064
|
+
case "import":
|
|
1065
|
+
menuSelector = 'menu-import';
|
|
1066
|
+
menuTitle = 'common.import';
|
|
1067
|
+
viewName = 'common.import';
|
|
1068
|
+
helpInfo = 'view.import.helpInfo';
|
|
1069
|
+
|
|
1070
|
+
break;
|
|
1071
|
+
case "autocomplete":
|
|
1072
|
+
menuSelector = 'menu-setup';
|
|
1073
|
+
menuTitle = 'menu.setup.label';
|
|
1074
|
+
submenuSelector = 'sub-menu-autocomplete';
|
|
1075
|
+
submenuTitle = 'menu.autocomplete.label';
|
|
1076
|
+
viewName = 'view.autocomplete.title';
|
|
1077
|
+
helpInfo = 'view.autocomplete.helpInfo';
|
|
1078
|
+
|
|
1079
|
+
break;
|
|
1080
|
+
case "visual-graph":
|
|
1081
|
+
menuSelector = 'menu-explore';
|
|
1082
|
+
menuTitle = 'menu.explore.label';
|
|
1083
|
+
submenuSelector = 'sub-menu-visual-graph';
|
|
1084
|
+
submenuTitle = 'visual.graph.label';
|
|
1085
|
+
viewName = 'visual.graph.label';
|
|
1086
|
+
helpInfo = 'view.visual.graph.helpInfo';
|
|
1087
|
+
|
|
1088
|
+
break;
|
|
1089
|
+
case "sparql":
|
|
1090
|
+
menuSelector = 'menu-sparql';
|
|
1091
|
+
menuTitle = 'menu.sparql.label';
|
|
1092
|
+
viewName = 'view.sparql.title';
|
|
1093
|
+
helpInfo = 'view.sparql.helpInfo';
|
|
1094
|
+
|
|
1095
|
+
break;
|
|
1096
|
+
case "class-hierarchy":
|
|
1097
|
+
menuSelector = 'menu-explore';
|
|
1098
|
+
menuTitle = 'menu.explore.label';
|
|
1099
|
+
submenuSelector = 'menu-class-hierarchy';
|
|
1100
|
+
submenuTitle = 'menu.class.hierarchy.label';
|
|
1101
|
+
viewName = 'view.class.hierarchy.title';
|
|
1102
|
+
helpInfo = 'view.class.hierarchy.helpInfo';
|
|
1103
|
+
|
|
1104
|
+
break;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
const mainMenuClickElementPostSelector = submenuSelector ? ' div' : ' a';
|
|
1108
|
+
options.viewName = viewName;
|
|
1109
|
+
|
|
1110
|
+
// View intro element
|
|
1111
|
+
if (options.showIntro && options.mainAction) {
|
|
1112
|
+
steps.push({
|
|
1113
|
+
guideBlockName: 'info-message',
|
|
1114
|
+
options: angular.extend({}, {
|
|
1115
|
+
content: 'guide.step-intro.' + options.mainAction,
|
|
1116
|
+
extraContent: helpInfo,
|
|
1117
|
+
extraContentClass: 'alert alert-help text-left',
|
|
1118
|
+
skipPoint: true
|
|
1119
|
+
}, options)
|
|
1120
|
+
});
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
// Main menu element
|
|
1124
|
+
steps.push({
|
|
1125
|
+
guideBlockName: 'clickable-element',
|
|
1126
|
+
options: angular.extend({}, {
|
|
1127
|
+
content: 'guide.step-menu.click-menu',
|
|
1128
|
+
menuLabelKey: menuTitle,
|
|
1129
|
+
elementSelector: GuideUtils.getGuideElementSelector(menuSelector),
|
|
1130
|
+
showOn: () => {
|
|
1131
|
+
// If submenu is visible this mean that we have to close menu.
|
|
1132
|
+
if (!!submenuSelector && GuideUtils.isGuideElementVisible(submenuSelector)) {
|
|
1133
|
+
GuideUtils.clickOnGuideElement(menuSelector, mainMenuClickElementPostSelector)();
|
|
1134
|
+
}
|
|
1135
|
+
return true;
|
|
1136
|
+
},
|
|
1137
|
+
onNextClick: (guide) =>
|
|
1138
|
+
GuideUtils.clickOnGuideElement(menuSelector, mainMenuClickElementPostSelector)()
|
|
1139
|
+
.then(() => {
|
|
1140
|
+
if (!submenuSelector) {
|
|
1141
|
+
guide.next();
|
|
1142
|
+
}
|
|
1143
|
+
}),
|
|
1144
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1145
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1146
|
+
if (previousStep) {
|
|
1147
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
1148
|
+
.then(() => resolve())
|
|
1149
|
+
.catch((error) => reject(error));
|
|
1150
|
+
} else {
|
|
1151
|
+
resolve();
|
|
1152
|
+
}
|
|
1153
|
+
})
|
|
1154
|
+
}, options)
|
|
1155
|
+
});
|
|
1156
|
+
|
|
1157
|
+
if (submenuSelector) {
|
|
1158
|
+
steps.push({
|
|
1159
|
+
guideBlockName: 'clickable-element',
|
|
1160
|
+
options: angular.extend({}, {
|
|
1161
|
+
content: 'guide.step-menu.click-menu',
|
|
1162
|
+
menuLabelKey: submenuTitle,
|
|
1163
|
+
elementSelector: GuideUtils.getGuideElementSelector(submenuSelector),
|
|
1164
|
+
placement: 'right',
|
|
1165
|
+
canBePaused: false,
|
|
1166
|
+
showOn: () => {
|
|
1167
|
+
// If submenu is visible this mean that we have to close menu.
|
|
1168
|
+
if (!GuideUtils.isGuideElementVisible(submenuSelector)) {
|
|
1169
|
+
GuideUtils.clickOnGuideElement(menuSelector, ' div')();
|
|
1170
|
+
}
|
|
1171
|
+
return true;
|
|
1172
|
+
},
|
|
1173
|
+
onNextClick: (guide) => GuideUtils.clickOnGuideElement(submenuSelector, ' a')().then(() => guide.next()),
|
|
1174
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1175
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1176
|
+
if (previousStep) {
|
|
1177
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
1178
|
+
.then(() => resolve())
|
|
1179
|
+
.catch((error) => reject(error));
|
|
1180
|
+
} else {
|
|
1181
|
+
resolve();
|
|
1182
|
+
}
|
|
1183
|
+
})
|
|
1184
|
+
}, options)
|
|
1185
|
+
});
|
|
1186
|
+
}
|
|
1187
|
+
return steps;
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
]);
|
|
1191
|
+
|
|
1192
|
+
const getRepositoryName = (services, options) => {
|
|
1193
|
+
return services.$repositories.getRepositories().find((repo) => repo.id === options.repositoryId) ? options.repositoryId : options.repositoryIdBase;
|
|
1194
|
+
};
|
|
1195
|
+
|
|
1196
|
+
const getRepositoryElementSelector = (services, options) => {
|
|
1197
|
+
return services.GuideUtils.getGuideElementSelector(`repository-${getRepositoryName(services, options)}-button`);
|
|
1198
|
+
};
|
|
1199
|
+
|
|
1200
|
+
PluginRegistry.add('guide.step', [
|
|
1201
|
+
{
|
|
1202
|
+
guideBlockName: 'select-repository-dropdown',
|
|
1203
|
+
getSteps: (options, services) => {
|
|
1204
|
+
const GuideUtils = services.GuideUtils;
|
|
1205
|
+
options.mainAction = 'select-repository';
|
|
1206
|
+
options.getRepositoryId = () => getRepositoryName(services, options);
|
|
1207
|
+
|
|
1208
|
+
return [{
|
|
1209
|
+
guideBlockName: 'clickable-element',
|
|
1210
|
+
options: angular.extend({}, {
|
|
1211
|
+
skipPoint: true,
|
|
1212
|
+
content: 'guide.step_plugin.choose-repository.content',
|
|
1213
|
+
elementSelector: GuideUtils.getGuideElementSelector('repositoriesGroupButton'),
|
|
1214
|
+
onNextClick: (guide) => GuideUtils.clickOnGuideElement('repositoriesGroupButton')().then(() => guide.next())
|
|
1215
|
+
}, options)
|
|
1216
|
+
}, {
|
|
1217
|
+
guideBlockName: 'clickable-element',
|
|
1218
|
+
options: angular.extend({}, {
|
|
1219
|
+
content: 'guide.step_plugin.select-repository.content',
|
|
1220
|
+
elementSelector: () => {
|
|
1221
|
+
return getRepositoryElementSelector(services, options);
|
|
1222
|
+
},
|
|
1223
|
+
advanceOn: undefined,
|
|
1224
|
+
beforeShowPromise: () => new Promise(function (resolve, reject) {
|
|
1225
|
+
services.GuideUtils.waitFor(getRepositoryElementSelector(services, options), 1)
|
|
1226
|
+
.then(() => resolve())
|
|
1227
|
+
.catch((error) => {
|
|
1228
|
+
services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
|
|
1229
|
+
reject(error);
|
|
1230
|
+
});
|
|
1231
|
+
}),
|
|
1232
|
+
show: (guide) => () => {
|
|
1233
|
+
$('#repositorySelectDropdown').addClass('autoCloseOff');
|
|
1234
|
+
// Added listener to the element.
|
|
1235
|
+
$(getRepositoryElementSelector(services, options))
|
|
1236
|
+
.on('mouseup.selectRepositoryButtonClick', function () {
|
|
1237
|
+
guide.next();
|
|
1238
|
+
});
|
|
1239
|
+
},
|
|
1240
|
+
onNextClick: (guide) => {
|
|
1241
|
+
$(getRepositoryElementSelector(services, options)).off('mouseup.selectRepositoryButtonClick');
|
|
1242
|
+
$('#repositorySelectDropdown').removeClass('autoCloseOff');
|
|
1243
|
+
GuideUtils.clickOnElement(getRepositoryElementSelector(services, options))().then(() => guide.next());
|
|
1244
|
+
},
|
|
1245
|
+
hide: () => () => {
|
|
1246
|
+
$('#repositorySelectDropdown').removeClass('autoCloseOff');
|
|
1247
|
+
// Remove ths listener from element. It is important when step is hided.
|
|
1248
|
+
$(getRepositoryElementSelector(services, options)).off('mouseup.selectRepositoryButtonClick');
|
|
1249
|
+
},
|
|
1250
|
+
canBePaused: false
|
|
1251
|
+
}, options)
|
|
1252
|
+
}
|
|
1253
|
+
];
|
|
1254
|
+
}
|
|
1255
|
+
},
|
|
1256
|
+
{
|
|
1257
|
+
guideBlockName: 'select-repository-plug',
|
|
1258
|
+
getSteps: (options, services) => {
|
|
1259
|
+
const GuideUtils = services.GuideUtils;
|
|
1260
|
+
return [{
|
|
1261
|
+
guideBlockName: 'clickable-element',
|
|
1262
|
+
options: angular.extend({}, {
|
|
1263
|
+
content: 'guide.step_plugin.select-repository-plug.content',
|
|
1264
|
+
elementSelector: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`),
|
|
1265
|
+
onNextClick: GuideUtils.getGuideElementSelector(`repository-${options.repositoryId}-plug`)
|
|
1266
|
+
}, options)
|
|
1267
|
+
}
|
|
1268
|
+
];
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
]);
|
|
1272
|
+
|
|
1273
|
+
PluginRegistry.add('guide.step', [
|
|
1274
|
+
{
|
|
1275
|
+
guideBlockName: 'table-graph-explore',
|
|
1276
|
+
getSteps: (options, services) => {
|
|
1277
|
+
const GuideUtils = services.GuideUtils;
|
|
1278
|
+
const $location = services.$location;
|
|
1279
|
+
const $route = services.$route;
|
|
1280
|
+
options.mainAction = 'table-graph';
|
|
1281
|
+
|
|
1282
|
+
const steps = [
|
|
1283
|
+
{
|
|
1284
|
+
guideBlockName: 'clickable-element',
|
|
1285
|
+
options: angular.extend({}, {
|
|
1286
|
+
content: 'guide.step-intro.table-graph',
|
|
1287
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
1288
|
+
elementSelector: GuideUtils.getSparqlResultsSelectorForIri(options.iri),
|
|
1289
|
+
onNextClick: (guide, step) => {
|
|
1290
|
+
GuideUtils.waitFor(step.elementSelector, 3)
|
|
1291
|
+
.then(() => $(step.elementSelector).trigger('click'))
|
|
1292
|
+
.then(() => guide.next());
|
|
1293
|
+
},
|
|
1294
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1295
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1296
|
+
if (currentStepId === stepId) {
|
|
1297
|
+
resolve();
|
|
1298
|
+
} else {
|
|
1299
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1300
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
1301
|
+
.then(() => {
|
|
1302
|
+
resolve();
|
|
1303
|
+
})
|
|
1304
|
+
.catch((error) => {
|
|
1305
|
+
reject(error);
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1308
|
+
})
|
|
1309
|
+
}, options)
|
|
1310
|
+
}, {
|
|
1311
|
+
guideBlockName: 'read-only-element',
|
|
1312
|
+
options: angular.extend({}, {
|
|
1313
|
+
content: 'guide.step_plugin.table-graph-overview',
|
|
1314
|
+
scrollToHandler: GuideUtils.scrollToTop,
|
|
1315
|
+
elementSelector: GuideUtils.getSparqlResultsSelector() + ' tbody',
|
|
1316
|
+
placement: 'top',
|
|
1317
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1318
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1319
|
+
if (currentStepId === stepId) {
|
|
1320
|
+
GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
|
|
1321
|
+
} else {
|
|
1322
|
+
const url = `/resource?uri=${options.iri}&role=subject`;
|
|
1323
|
+
if (url !== decodeURIComponent($location.url())) {
|
|
1324
|
+
$location.url(url);
|
|
1325
|
+
$route.reload();
|
|
1326
|
+
GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
|
|
1327
|
+
.then(() => resolve())
|
|
1328
|
+
.catch((error) => reject(error));
|
|
1329
|
+
} else {
|
|
1330
|
+
resolve();
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
})
|
|
1334
|
+
}, options)
|
|
1335
|
+
}
|
|
1336
|
+
];
|
|
1337
|
+
|
|
1338
|
+
if (angular.isArray(options.subSteps)) {
|
|
1339
|
+
options.subSteps.forEach((subStep) => {
|
|
1340
|
+
|
|
1341
|
+
switch (subStep.type) {
|
|
1342
|
+
case 'link':
|
|
1343
|
+
steps.push({
|
|
1344
|
+
guideBlockName: 'clickable-element',
|
|
1345
|
+
options: angular.extend({}, {
|
|
1346
|
+
content: 'guide.step_plugin.table-graph-link',
|
|
1347
|
+
elementSelector: GuideUtils.getSparqlResultsSelectorForIri(subStep.iri),
|
|
1348
|
+
onNextClick: (guide, step) => {
|
|
1349
|
+
GuideUtils.waitFor(step.elementSelector, 3)
|
|
1350
|
+
.then(() => $(step.elementSelector).trigger('click'))
|
|
1351
|
+
.then(() => guide.next());
|
|
1352
|
+
},
|
|
1353
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1354
|
+
const linkUrl = `/resource?uri=${subStep.iri}&role=subject`;
|
|
1355
|
+
const tableGraphLinkUrl = `/resource?uri=${options.iri}&role=subject`;
|
|
1356
|
+
const url = decodeURIComponent($location.url());
|
|
1357
|
+
|
|
1358
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1359
|
+
|
|
1360
|
+
if (currentStepId === stepId && tableGraphLinkUrl === url) {
|
|
1361
|
+
// this case is first link in the sequence before click the link, so we have to resolve it.
|
|
1362
|
+
resolve();
|
|
1363
|
+
} else if (currentStepId !== stepId && linkUrl === url) {
|
|
1364
|
+
// this case is first link in the sequence after click the link, so we have to call previous step.
|
|
1365
|
+
GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
|
|
1366
|
+
} else {
|
|
1367
|
+
// this case is from second link we have to reload
|
|
1368
|
+
$location.url(linkUrl);
|
|
1369
|
+
$route.reload();
|
|
1370
|
+
GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
|
|
1371
|
+
.then(() => resolve())
|
|
1372
|
+
.catch((error) => reject(error));
|
|
1373
|
+
}
|
|
1374
|
+
})
|
|
1375
|
+
}, angular.extend({}, options, subStep))
|
|
1376
|
+
});
|
|
1377
|
+
break;
|
|
1378
|
+
case 'role':
|
|
1379
|
+
steps.push({
|
|
1380
|
+
guideBlockName: 'clickable-element',
|
|
1381
|
+
options: angular.extend({}, {
|
|
1382
|
+
content: 'guide.step_plugin.table-graph-role',
|
|
1383
|
+
elementSelector: GuideUtils.getGuideElementSelector('role-' + subStep.role),
|
|
1384
|
+
onNextClick: (guide, step) => {
|
|
1385
|
+
GuideUtils.waitFor(step.elementSelector, 3)
|
|
1386
|
+
.then(() => $(step.elementSelector).trigger('click'))
|
|
1387
|
+
.then(() => guide.next());
|
|
1388
|
+
},
|
|
1389
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1390
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1391
|
+
if (currentStepId === stepId) {
|
|
1392
|
+
resolve();
|
|
1393
|
+
} else {
|
|
1394
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1395
|
+
previousStep.options.initPreviousStep(services, previousStep.options.id)
|
|
1396
|
+
.then(() => {
|
|
1397
|
+
let url = $location.url();
|
|
1398
|
+
url = url.substring(0, url.indexOf('role=') + 5);
|
|
1399
|
+
url += subStep.role;
|
|
1400
|
+
$location.url(url);
|
|
1401
|
+
$route.reload();
|
|
1402
|
+
GuideUtils.waitFor(GuideUtils.getSparqlResultsSelector(' tbody'))
|
|
1403
|
+
.then(() => resolve())
|
|
1404
|
+
.catch((error) => reject(error));
|
|
1405
|
+
})
|
|
1406
|
+
.catch((error) => {
|
|
1407
|
+
reject(error);
|
|
1408
|
+
});
|
|
1409
|
+
}
|
|
1410
|
+
})
|
|
1411
|
+
}, angular.extend({}, options, subStep))
|
|
1412
|
+
});
|
|
1413
|
+
break;
|
|
1414
|
+
case 'visual':
|
|
1415
|
+
steps.push({
|
|
1416
|
+
guideBlockName: 'clickable-element',
|
|
1417
|
+
options: angular.extend({}, {
|
|
1418
|
+
content: 'guide.step_plugin.table-graph-visual',
|
|
1419
|
+
elementSelector: GuideUtils.getGuideElementSelector('explore-visual'),
|
|
1420
|
+
onNextClick: (guide, step) => {
|
|
1421
|
+
GuideUtils.waitFor(step.elementSelector, 3)
|
|
1422
|
+
.then(() => $(step.elementSelector).trigger('click'));
|
|
1423
|
+
},
|
|
1424
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1425
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1426
|
+
|
|
1427
|
+
if (currentStepId === stepId) {
|
|
1428
|
+
resolve();
|
|
1429
|
+
} else {
|
|
1430
|
+
GuideUtils.defaultInitPreviousStep(services, stepId).then(() => resolve()).catch((error) => reject(error));
|
|
1431
|
+
}
|
|
1432
|
+
})
|
|
1433
|
+
}, angular.extend({}, options, subStep))
|
|
1434
|
+
});
|
|
1435
|
+
steps.push({
|
|
1436
|
+
guideBlockName: 'read-only-element',
|
|
1437
|
+
options: angular.extend({}, {
|
|
1438
|
+
content: 'guide.step_plugin.visual_graph_intro.content',
|
|
1439
|
+
extraContent: subStep.extraContentVisualIntro,
|
|
1440
|
+
url: '/graphs-visualizations',
|
|
1441
|
+
elementSelector: '.graph-visualization',
|
|
1442
|
+
placement: 'left',
|
|
1443
|
+
canBePaused: false,
|
|
1444
|
+
forceReload: true,
|
|
1445
|
+
onNextClick: (guide) => {
|
|
1446
|
+
window.history.back();
|
|
1447
|
+
guide.next();
|
|
1448
|
+
}
|
|
1449
|
+
}, angular.extend({}, options, subStep))
|
|
1450
|
+
});
|
|
1451
|
+
break;
|
|
1452
|
+
case 'row':
|
|
1453
|
+
steps.push({
|
|
1454
|
+
guideBlockName: 'read-only-element',
|
|
1455
|
+
options: angular.extend({}, {
|
|
1456
|
+
elementSelector: GuideUtils.getSparqlResultsSelectorForRow(subStep.row)
|
|
1457
|
+
}, angular.extend({}, options, subStep))
|
|
1458
|
+
});
|
|
1459
|
+
break;
|
|
1460
|
+
case 'table':
|
|
1461
|
+
steps.push({
|
|
1462
|
+
guideBlockName: 'read-only-element',
|
|
1463
|
+
options: angular.extend({}, {
|
|
1464
|
+
elementSelector: GuideUtils.getSparqlResultsSelector() + ' tbody'
|
|
1465
|
+
}, angular.extend({}, options, subStep))
|
|
1466
|
+
});
|
|
1467
|
+
break;
|
|
1468
|
+
}
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
return steps;
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
]);
|
|
1476
|
+
|
|
1477
|
+
const disableAllNodes = () => () => {
|
|
1478
|
+
$('.node-wrapper').addClass('disable-visual-graph-node');
|
|
1479
|
+
};
|
|
1480
|
+
|
|
1481
|
+
const enableAllNodes = () => () => {
|
|
1482
|
+
$('.node-wrapper').removeClass('disable-visual-graph-node');
|
|
1483
|
+
};
|
|
1484
|
+
|
|
1485
|
+
PluginRegistry.add('guide.step', [
|
|
1486
|
+
{
|
|
1487
|
+
guideBlockName: 'visual-graph',
|
|
1488
|
+
getSteps: (options, services) => {
|
|
1489
|
+
const GuideUtils = services.GuideUtils;
|
|
1490
|
+
const $location = services.$location;
|
|
1491
|
+
const $route = services.$route;
|
|
1492
|
+
options.mainAction = 'visual-graph';
|
|
1493
|
+
|
|
1494
|
+
return [
|
|
1495
|
+
{
|
|
1496
|
+
guideBlockName: 'click-main-menu',
|
|
1497
|
+
options: angular.extend({}, {
|
|
1498
|
+
menu: 'visual-graph',
|
|
1499
|
+
showIntro: true
|
|
1500
|
+
}, options)
|
|
1501
|
+
}, {
|
|
1502
|
+
guideBlockName: 'input-element',
|
|
1503
|
+
options: angular.extend({}, {
|
|
1504
|
+
content: 'guide.step_plugin.visual_graph_input_IRI.content',
|
|
1505
|
+
forceReload: true,
|
|
1506
|
+
url: '/graphs-visualizations',
|
|
1507
|
+
elementSelector: GuideUtils.getGuideElementSelector('graphVisualisationSearchInputNotConfigured', ' input'),
|
|
1508
|
+
onNextValidate: (step) => GuideUtils.validateTextInput(step.elementSelector, step.easyGraphInputText)
|
|
1509
|
+
}, options)
|
|
1510
|
+
}, {
|
|
1511
|
+
guideBlockName: 'clickable-element',
|
|
1512
|
+
options: angular.extend({}, {
|
|
1513
|
+
content: 'guide.step_plugin.visual_graph_show_autocomplete.content',
|
|
1514
|
+
url: '/graphs-visualizations',
|
|
1515
|
+
elementSelector: GuideUtils.getGuideElementSelector(`autocomplete-${options.iri}`),
|
|
1516
|
+
onNextClick: (guide, step) => GuideUtils.waitFor(step.elementSelector, 3).then(() => $(step.elementSelector).trigger('click')),
|
|
1517
|
+
canBePaused: false,
|
|
1518
|
+
forceReload: true
|
|
1519
|
+
}, options)
|
|
1520
|
+
}, {
|
|
1521
|
+
guideBlockName: 'read-only-element',
|
|
1522
|
+
options: angular.extend({}, {
|
|
1523
|
+
content: 'guide.step_plugin.visual_graph_intro.content',
|
|
1524
|
+
url: '/graphs-visualizations',
|
|
1525
|
+
elementSelector: '.graph-visualization',
|
|
1526
|
+
placement: 'left',
|
|
1527
|
+
onPreviousClick: () => new Promise(function (resolve, reject) {
|
|
1528
|
+
$location.url('/graphs-visualizations');
|
|
1529
|
+
$route.reload();
|
|
1530
|
+
const searchInputSelector = GuideUtils.getGuideElementSelector('graphVisualisationSearchInputNotConfigured', ' input');
|
|
1531
|
+
GuideUtils.waitFor(searchInputSelector, 3)
|
|
1532
|
+
.then(() => {
|
|
1533
|
+
GuideUtils.validateTextInput(searchInputSelector, options.easyGraphInputText);
|
|
1534
|
+
resolve();
|
|
1535
|
+
})
|
|
1536
|
+
.catch((error) => reject(error));
|
|
1537
|
+
}),
|
|
1538
|
+
initPreviousStep: () => new Promise(function (resolve, reject) {
|
|
1539
|
+
const url = '/graphs-visualizations?uri=' + options.iri;
|
|
1540
|
+
if (url !== decodeURIComponent($location.url())) {
|
|
1541
|
+
$location.url(url);
|
|
1542
|
+
$route.reload();
|
|
1543
|
+
GuideUtils.waitFor(`.node-wrapper[id^="${options.iri}"] circle`, 3)
|
|
1544
|
+
.then(() => resolve())
|
|
1545
|
+
.catch((error) => reject(error));
|
|
1546
|
+
} else {
|
|
1547
|
+
resolve();
|
|
1548
|
+
}
|
|
1549
|
+
}),
|
|
1550
|
+
canBePaused: false,
|
|
1551
|
+
forceReload: true
|
|
1552
|
+
}, options)
|
|
1553
|
+
}
|
|
1554
|
+
];
|
|
1555
|
+
}
|
|
1556
|
+
},
|
|
1557
|
+
{
|
|
1558
|
+
guideBlockName: 'visual-graph-expand',
|
|
1559
|
+
getSteps: (options, services) => {
|
|
1560
|
+
const GuideUtils = services.GuideUtils;
|
|
1561
|
+
const $rootScope = services.$rootScope;
|
|
1562
|
+
const $route = services.$route;
|
|
1563
|
+
const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
|
|
1564
|
+
|
|
1565
|
+
// Expands visual graph when a node is double-clicked.
|
|
1566
|
+
const dblClickFunction = (guide) => () => {
|
|
1567
|
+
GuideUtils.graphVizExpandNode(elementSelector);
|
|
1568
|
+
guide.getCurrentStep().hide();
|
|
1569
|
+
GuideUtils.awaitAlphaDropD3(null, $rootScope)()
|
|
1570
|
+
.then(() => {
|
|
1571
|
+
guide.next();
|
|
1572
|
+
});
|
|
1573
|
+
};
|
|
1574
|
+
|
|
1575
|
+
return [
|
|
1576
|
+
{
|
|
1577
|
+
guideBlockName: 'clickable-element',
|
|
1578
|
+
options: angular.extend({}, {
|
|
1579
|
+
title: 'guide.step_plugin.visual-graph-expand.title',
|
|
1580
|
+
content: 'guide.step_plugin.visual-graph-expand.content',
|
|
1581
|
+
url: '/graphs-visualizations',
|
|
1582
|
+
canBePaused: false,
|
|
1583
|
+
elementSelector,
|
|
1584
|
+
// Disable default behavior of service when element is clicked.
|
|
1585
|
+
advanceOn: undefined,
|
|
1586
|
+
onNextClick: (guide) => {
|
|
1587
|
+
GuideUtils.graphVizExpandNode(elementSelector);
|
|
1588
|
+
guide.getCurrentStep().hide();
|
|
1589
|
+
GuideUtils.awaitAlphaDropD3(null, $rootScope)()
|
|
1590
|
+
.then(() => {
|
|
1591
|
+
guide.next();
|
|
1592
|
+
});
|
|
1593
|
+
},
|
|
1594
|
+
show: (guide) => () => {
|
|
1595
|
+
// Add "dblclick" listener to the element. Processing of double-click event is disabled for the visual graph when guide is started.
|
|
1596
|
+
// So we have expanded the graph manually when a selected node is double-clicked.
|
|
1597
|
+
$(elementSelector).on('dblclick.onNodeDbClicked', dblClickFunction(guide));
|
|
1598
|
+
},
|
|
1599
|
+
hide: () => () => {
|
|
1600
|
+
// Remove the "dblclick" listener of element. It is important when step is hided.
|
|
1601
|
+
$(elementSelector).off('dblclick.onNodeDbClicked');
|
|
1602
|
+
},
|
|
1603
|
+
beforeShowPromise: () => new Promise(function (resolve, reject) {
|
|
1604
|
+
$route.reload();
|
|
1605
|
+
GuideUtils.deferredShow(50)()
|
|
1606
|
+
.then(() => {
|
|
1607
|
+
GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)()
|
|
1608
|
+
.then(() => resolve())
|
|
1609
|
+
.catch((error) => reject(error));
|
|
1610
|
+
});
|
|
1611
|
+
}),
|
|
1612
|
+
initPreviousStep: (services, stepId) => new Promise(function (resolve, reject) {
|
|
1613
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1614
|
+
previousStep.options.initPreviousStep(services, previousStep.id)
|
|
1615
|
+
.then(() => {
|
|
1616
|
+
const currentStepId = services.ShepherdService.getCurrentStepId();
|
|
1617
|
+
// Skip expanding of node if last step is "visual-graph-expand"
|
|
1618
|
+
if (currentStepId === stepId) {
|
|
1619
|
+
resolve();
|
|
1620
|
+
} else {
|
|
1621
|
+
GuideUtils.graphVizExpandNode(elementSelector);
|
|
1622
|
+
GuideUtils.deferredShow(50)()
|
|
1623
|
+
.then(() => {
|
|
1624
|
+
GuideUtils.awaitAlphaDropD3(null, $rootScope)()
|
|
1625
|
+
.then(() => resolve())
|
|
1626
|
+
.catch((error) => reject(error));
|
|
1627
|
+
});
|
|
1628
|
+
}
|
|
1629
|
+
})
|
|
1630
|
+
.catch((error) => reject(error));
|
|
1631
|
+
})
|
|
1632
|
+
}, options)
|
|
1633
|
+
}
|
|
1634
|
+
];
|
|
1635
|
+
}
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
guideBlockName: 'visual-graph-properties',
|
|
1639
|
+
getSteps: (options, services) => {
|
|
1640
|
+
const GuideUtils = services.GuideUtils;
|
|
1641
|
+
const $rootScope = services.$rootScope;
|
|
1642
|
+
const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
|
|
1643
|
+
|
|
1644
|
+
let mouseClickTimeStamp;
|
|
1645
|
+
let mouseEventTimer;
|
|
1646
|
+
|
|
1647
|
+
// Expands Node info sidebar panel when a node is clicked.
|
|
1648
|
+
const onClick = (services, guide) => (event) => {
|
|
1649
|
+
if (mouseEventTimer) {
|
|
1650
|
+
// Cancels expansion of the sidebar panel if user double-clicked.
|
|
1651
|
+
if (event.timeStamp - mouseClickTimeStamp < 400) {
|
|
1652
|
+
services.$timeout.cancel(mouseEventTimer);
|
|
1653
|
+
mouseEventTimer = null;
|
|
1654
|
+
}
|
|
1655
|
+
} else {
|
|
1656
|
+
mouseClickTimeStamp = event.timeStamp;
|
|
1657
|
+
mouseEventTimer = services.$timeout(function () {
|
|
1658
|
+
GuideUtils.graphVizShowNodeInfo(elementSelector);
|
|
1659
|
+
mouseEventTimer = null;
|
|
1660
|
+
guide.next();
|
|
1661
|
+
}, 500);
|
|
1662
|
+
}
|
|
1663
|
+
};
|
|
1664
|
+
|
|
1665
|
+
const steps = [
|
|
1666
|
+
{
|
|
1667
|
+
guideBlockName: 'clickable-element',
|
|
1668
|
+
options: angular.extend({}, {
|
|
1669
|
+
title: 'guide.step_plugin.visual-graph-properties.title',
|
|
1670
|
+
content: 'guide.step_plugin.visual-graph-properties.content',
|
|
1671
|
+
url: '/graphs-visualizations',
|
|
1672
|
+
elementSelector,
|
|
1673
|
+
canBePaused: false,
|
|
1674
|
+
// Disable default behavior of service when element is clicked.
|
|
1675
|
+
advanceOn: undefined,
|
|
1676
|
+
show: (guide) => () => {
|
|
1677
|
+
// Add "click" listener to the element. Processing of click event is disabled for the visual graph when guide is started.
|
|
1678
|
+
// So we have to open side panel info manually when a selected node is clicked.
|
|
1679
|
+
$(elementSelector).on('click.onNodeClicked', onClick(services, guide));
|
|
1680
|
+
},
|
|
1681
|
+
hide: () => () => {
|
|
1682
|
+
// Remove the "click" listener of element. It is important when step is hided.
|
|
1683
|
+
$(elementSelector).off('click.onNodeClicked');
|
|
1684
|
+
},
|
|
1685
|
+
onNextClick: (guide, step) => {
|
|
1686
|
+
GuideUtils.graphVizShowNodeInfo(step.elementSelector);
|
|
1687
|
+
guide.next();
|
|
1688
|
+
},
|
|
1689
|
+
beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)
|
|
1690
|
+
}, options)
|
|
1691
|
+
},
|
|
1692
|
+
{
|
|
1693
|
+
guideBlockName: 'read-only-element',
|
|
1694
|
+
options: angular.extend({}, {
|
|
1695
|
+
title: 'guide.step_plugin.visual-graph-properties-side-panel.title',
|
|
1696
|
+
content: 'guide.step_plugin.visual-graph-properties-side-panel.content',
|
|
1697
|
+
url: '/graphs-visualizations',
|
|
1698
|
+
elementSelector: '.rdf-side-panel-content',
|
|
1699
|
+
canBePaused: false,
|
|
1700
|
+
placement: 'left',
|
|
1701
|
+
beforeShowPromise: GuideUtils.deferredShow(500),
|
|
1702
|
+
onPreviousClick: () => new Promise(function (resolve) {
|
|
1703
|
+
GuideUtils.waitFor(closeButtonSelector, 3)
|
|
1704
|
+
.then(() => {
|
|
1705
|
+
$(closeButtonSelector).trigger('click');
|
|
1706
|
+
resolve();
|
|
1707
|
+
}).catch(() => resolve());
|
|
1708
|
+
})
|
|
1709
|
+
}, options)
|
|
1710
|
+
}
|
|
1711
|
+
];
|
|
1712
|
+
|
|
1713
|
+
if (angular.isArray(options.focusProperties)) {
|
|
1714
|
+
options.focusProperties.forEach((focusProperty) => {
|
|
1715
|
+
if (!angular.isObject(focusProperty)) {
|
|
1716
|
+
focusProperty = {
|
|
1717
|
+
property: focusProperty
|
|
1718
|
+
};
|
|
1719
|
+
}
|
|
1720
|
+
const translationIdSuffix = focusProperty.property === 'types' ? '-types' : '-property';
|
|
1721
|
+
const content = focusProperty.skipGenericMessage && focusProperty.message ?
|
|
1722
|
+
null : 'guide.step_plugin.visual-graph-properties-focus' + translationIdSuffix + '.content';
|
|
1723
|
+
steps.push({
|
|
1724
|
+
guideBlockName: 'read-only-element',
|
|
1725
|
+
options: angular.extend({}, {
|
|
1726
|
+
title: 'guide.step_plugin.visual-graph-properties-focus' + translationIdSuffix + '.title',
|
|
1727
|
+
content: content,
|
|
1728
|
+
url: '/graphs-visualizations',
|
|
1729
|
+
canBePaused: false,
|
|
1730
|
+
placement: 'left',
|
|
1731
|
+
elementSelector: GuideUtils.getGuideElementSelector('graph-visualization-node-info-' + focusProperty.property),
|
|
1732
|
+
focusProperty: focusProperty.property,
|
|
1733
|
+
extraContent: focusProperty.message
|
|
1734
|
+
}, options)
|
|
1735
|
+
});
|
|
1736
|
+
});
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
const closeButtonSelector = GuideUtils.getGuideElementSelector('close-info-panel');
|
|
1740
|
+
steps.push({
|
|
1741
|
+
guideBlockName: 'clickable-element',
|
|
1742
|
+
options: angular.extend({}, {
|
|
1743
|
+
title: 'guide.step_plugin.visual-graph-properties-side-panel-close.title',
|
|
1744
|
+
content: 'guide.step_plugin.visual-graph-properties-side-panel-close.content',
|
|
1745
|
+
url: '/graphs-visualizations',
|
|
1746
|
+
canBePaused: false,
|
|
1747
|
+
placement: 'left',
|
|
1748
|
+
elementSelector: closeButtonSelector,
|
|
1749
|
+
advanceOn: {
|
|
1750
|
+
selector: closeButtonSelector,
|
|
1751
|
+
event: 'click'
|
|
1752
|
+
},
|
|
1753
|
+
beforeShowPromise: () => new Promise(function (resolve) {
|
|
1754
|
+
// We have to be sure that node info sidebar is open. It is needed when this step is loaded when next step "Previous"
|
|
1755
|
+
// button is clicked.
|
|
1756
|
+
GuideUtils.graphVizShowNodeInfo(elementSelector);
|
|
1757
|
+
GuideUtils.deferredShow(500)()
|
|
1758
|
+
.then(() => resolve());
|
|
1759
|
+
}),
|
|
1760
|
+
onNextClick: () => GuideUtils.waitFor(closeButtonSelector, 3).then(() => $(closeButtonSelector).trigger('click'))
|
|
1761
|
+
}, options)
|
|
1762
|
+
});
|
|
1763
|
+
|
|
1764
|
+
return steps;
|
|
1765
|
+
}
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
guideBlockName: 'visual-graph-link-focus',
|
|
1769
|
+
getSteps: (options, services) => {
|
|
1770
|
+
const GuideUtils = services.GuideUtils;
|
|
1771
|
+
const $rootScope = services.$rootScope;
|
|
1772
|
+
const elementSelector = `.link-wrapper[id^="${options.fromIri}>${options.toIri}"]`;
|
|
1773
|
+
return [
|
|
1774
|
+
{
|
|
1775
|
+
guideBlockName: 'read-only-element',
|
|
1776
|
+
options: angular.extend({}, {
|
|
1777
|
+
title: 'guide.step_plugin.visual-graph-link-focus.title',
|
|
1778
|
+
content: 'guide.step_plugin.visual-graph-link-focus.content',
|
|
1779
|
+
url: '/graphs-visualizations',
|
|
1780
|
+
canBePaused: false,
|
|
1781
|
+
extraPadding: 40,
|
|
1782
|
+
elementSelector,
|
|
1783
|
+
show: disableAllNodes,
|
|
1784
|
+
hide: enableAllNodes,
|
|
1785
|
+
beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope)
|
|
1786
|
+
}, options)
|
|
1787
|
+
}
|
|
1788
|
+
];
|
|
1789
|
+
}
|
|
1790
|
+
},
|
|
1791
|
+
{
|
|
1792
|
+
guideBlockName: 'visual-graph-node-focus',
|
|
1793
|
+
getSteps: (options, services) => {
|
|
1794
|
+
const GuideUtils = services.GuideUtils;
|
|
1795
|
+
const $rootScope = services.$rootScope;
|
|
1796
|
+
const elementSelector = `.node-wrapper[id^="${options.iri}"] circle`;
|
|
1797
|
+
return [
|
|
1798
|
+
{
|
|
1799
|
+
guideBlockName: 'read-only-element',
|
|
1800
|
+
options: angular.extend({}, {
|
|
1801
|
+
title: 'guide.step_plugin.visual-graph-node-focus.title',
|
|
1802
|
+
content: 'guide.step_plugin.visual-graph-node-focus.content',
|
|
1803
|
+
url: '/graphs-visualizations',
|
|
1804
|
+
canBePaused: false,
|
|
1805
|
+
extraPadding: 10,
|
|
1806
|
+
elementSelector,
|
|
1807
|
+
show: disableAllNodes,
|
|
1808
|
+
hide: enableAllNodes,
|
|
1809
|
+
beforeShowPromise: GuideUtils.awaitAlphaDropD3(elementSelector, $rootScope),
|
|
1810
|
+
initPreviousStep: (services, stepId) => new Promise((resolve, reject) => {
|
|
1811
|
+
if (GuideUtils.isVisible(elementSelector)) {
|
|
1812
|
+
resolve();
|
|
1813
|
+
} else {
|
|
1814
|
+
const previousStep = services.ShepherdService.getPreviousStepFromHistory(stepId);
|
|
1815
|
+
previousStep.options.initPreviousStep(services, previousStep.id)
|
|
1816
|
+
.then(() => resolve())
|
|
1817
|
+
.catch((error) => reject(error));
|
|
1818
|
+
}
|
|
1819
|
+
})
|
|
1820
|
+
}, options)
|
|
1821
|
+
}
|
|
1822
|
+
];
|
|
1823
|
+
}
|
|
1824
|
+
}
|
|
1825
|
+
]);
|
|
1826
|
+
|
|
1827
|
+
PluginRegistry.add('guide.step', [
|
|
1828
|
+
{
|
|
1829
|
+
guideBlockName: 'welcome',
|
|
1830
|
+
getSteps: (options, services) => {
|
|
1831
|
+
const GuideUtils = services.GuideUtils;
|
|
1832
|
+
const $translate = services.$translate;
|
|
1833
|
+
const $interpolate = services.$interpolate;
|
|
1834
|
+
|
|
1835
|
+
return [
|
|
1836
|
+
{
|
|
1837
|
+
guideBlockName: 'info-message',
|
|
1838
|
+
options: {
|
|
1839
|
+
title: 'guide.step_plugin.welcome.title',
|
|
1840
|
+
content: 'guide.step_plugin.welcome.content',
|
|
1841
|
+
infoIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.info-icon-hint', options),
|
|
1842
|
+
mouseIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.mouse-icon-hint', options),
|
|
1843
|
+
inputIconHint: GuideUtils.translateLocalMessage($translate, $interpolate, 'guide.step_plugin.welcome.input-icon-hint', options)
|
|
1844
|
+
}
|
|
1845
|
+
},
|
|
1846
|
+
{
|
|
1847
|
+
guideBlockName: 'info-message',
|
|
1848
|
+
options: {
|
|
1849
|
+
title: 'guide.step_plugin.welcome.title',
|
|
1850
|
+
content: 'guide.step_plugin.welcome-what.content'
|
|
1851
|
+
}
|
|
1852
|
+
}
|
|
1853
|
+
];
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
]);
|
|
1857
|
+
|
|
1858
|
+
|
|
1859
|
+
const BASIC_STEP = {
|
|
1860
|
+
title: '',
|
|
1861
|
+
content: '',
|
|
1862
|
+
elementSelector: undefined,
|
|
1863
|
+
placement: 'bottom',
|
|
1864
|
+
url: undefined,
|
|
1865
|
+
type: 'read-only-element',
|
|
1866
|
+
maxWaitTime: 3,
|
|
1867
|
+
canBePaused: true,
|
|
1868
|
+
onNextClick: undefined,
|
|
1869
|
+
onNextValidate: undefined,
|
|
1870
|
+
onPreviousClick: undefined,
|
|
1871
|
+
skipPoint: false
|
|
1872
|
+
};
|
|
1873
|
+
|
|
1874
|
+
/**
|
|
1875
|
+
* This function will be called before show a step. Step will be shown after promise is resolve. It waits element of step to be visible on the page.
|
|
1876
|
+
* @param {*} services
|
|
1877
|
+
* @param {string} elementSelector
|
|
1878
|
+
* @param {number} maxWaitTime
|
|
1879
|
+
* @return {function(): *}
|
|
1880
|
+
*/
|
|
1881
|
+
const beforeShowPromise = (services, elementSelector, maxWaitTime) => {
|
|
1882
|
+
return () => {
|
|
1883
|
+
return services.GuideUtils.waitFor(elementSelector, maxWaitTime)
|
|
1884
|
+
.catch((error) => {
|
|
1885
|
+
// error is caught just to show notification in generic way.
|
|
1886
|
+
services.toastr.error(services.$translate.instant('guide.unexpected.error.message'));
|
|
1887
|
+
// throw the error, otherwise guide will continue with the next step.
|
|
1888
|
+
throw error;
|
|
1889
|
+
});
|
|
1890
|
+
};
|
|
1891
|
+
};
|
|
1892
|
+
|
|
1893
|
+
PluginRegistry.add('guide.step', [
|
|
1894
|
+
{
|
|
1895
|
+
guideBlockName: 'clickable-element',
|
|
1896
|
+
getStep: (options, services) => {
|
|
1897
|
+
const notOverridable = {
|
|
1898
|
+
type: 'clickable'
|
|
1899
|
+
};
|
|
1900
|
+
|
|
1901
|
+
const stepDescription = angular.extend({}, BASIC_STEP, {
|
|
1902
|
+
advanceOn: {
|
|
1903
|
+
selector: options.elementSelector,
|
|
1904
|
+
event: 'click'
|
|
1905
|
+
},
|
|
1906
|
+
initPreviousStep: services.GuideUtils.defaultInitPreviousStep
|
|
1907
|
+
}, options, notOverridable);
|
|
1908
|
+
|
|
1909
|
+
if (!stepDescription.beforeShowPromise) {
|
|
1910
|
+
stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
|
|
1911
|
+
}
|
|
1912
|
+
return stepDescription;
|
|
1913
|
+
}
|
|
1914
|
+
},
|
|
1915
|
+
{
|
|
1916
|
+
guideBlockName: 'read-only-element',
|
|
1917
|
+
getStep: (options, services) => {
|
|
1918
|
+
const notOverridable = {
|
|
1919
|
+
type: 'readonly'
|
|
1920
|
+
};
|
|
1921
|
+
const stepDescription = angular.extend({}, BASIC_STEP, {
|
|
1922
|
+
initPreviousStep: services.GuideUtils.defaultInitPreviousStep
|
|
1923
|
+
},
|
|
1924
|
+
options, notOverridable);
|
|
1925
|
+
if (!stepDescription.beforeShowPromise) {
|
|
1926
|
+
stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
|
|
1927
|
+
}
|
|
1928
|
+
return stepDescription;
|
|
1929
|
+
}
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
guideBlockName: 'input-element',
|
|
1933
|
+
getStep: (options, services) => {
|
|
1934
|
+
const notOverridable = {
|
|
1935
|
+
type: 'input'
|
|
1936
|
+
};
|
|
1937
|
+
const stepDescription = angular.extend({}, BASIC_STEP, {
|
|
1938
|
+
initPreviousStep: services.GuideUtils.defaultInitPreviousStep
|
|
1939
|
+
}, options, notOverridable);
|
|
1940
|
+
if (!stepDescription.beforeShowPromise) {
|
|
1941
|
+
stepDescription.beforeShowPromise = beforeShowPromise(services, stepDescription.elementSelector, stepDescription.maxWaitTime);
|
|
1942
|
+
}
|
|
1943
|
+
return stepDescription;
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
guideBlockName: 'info-message',
|
|
1948
|
+
getStep: (options, services) => {
|
|
1949
|
+
const notOverridable = {
|
|
1950
|
+
type: 'readonly'
|
|
1951
|
+
};
|
|
1952
|
+
return angular.extend({}, BASIC_STEP, {
|
|
1953
|
+
initPreviousStep: services.GuideUtils.defaultInitPreviousStep
|
|
1954
|
+
}, options, notOverridable);
|
|
1955
|
+
}
|
|
1956
|
+
},
|
|
1957
|
+
{
|
|
1958
|
+
guideBlockName: 'guide-end',
|
|
1959
|
+
getStep: (options, services) => {
|
|
1960
|
+
const notOverridable = {
|
|
1961
|
+
type: 'readonly',
|
|
1962
|
+
title: 'guide.step_plugin.guide-ended.title',
|
|
1963
|
+
content: 'guide.step_plugin.guide-ended.content',
|
|
1964
|
+
show: (guide) => () => {
|
|
1965
|
+
guide.options.confirmCancel = false;
|
|
1966
|
+
},
|
|
1967
|
+
hide: (guide) => () => {
|
|
1968
|
+
guide.options.confirmCancel = true;
|
|
1969
|
+
}
|
|
1970
|
+
};
|
|
1971
|
+
return angular.extend({}, BASIC_STEP, {
|
|
1972
|
+
initPreviousStep: services.GuideUtils.defaultInitPreviousStep
|
|
1973
|
+
}, options, notOverridable);
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1976
|
+
]);
|
|
1977
|
+
|
|
245
1978
|
PluginRegistry.add('route', {
|
|
246
1979
|
'url': '/import',
|
|
247
1980
|
'module': 'graphdb.framework.impex.import',
|
|
@@ -262,21 +1995,22 @@ PluginRegistry.add('main.menu', {
|
|
|
262
1995
|
href: 'import',
|
|
263
1996
|
order: 0,
|
|
264
1997
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
265
|
-
icon: 'icon-import'
|
|
1998
|
+
icon: 'icon-import',
|
|
1999
|
+
guideSelector: 'menu-import'
|
|
266
2000
|
}
|
|
267
2001
|
]
|
|
268
2002
|
});
|
|
269
2003
|
|
|
270
2004
|
PluginRegistry.add('route', [
|
|
271
2005
|
{
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
2006
|
+
'url': '/jdbc',
|
|
2007
|
+
'module': 'graphdb.framework.jdbc',
|
|
2008
|
+
'path': 'jdbc/app',
|
|
2009
|
+
'chunk': 'jdbc',
|
|
2010
|
+
'controller': 'JdbcListCtrl',
|
|
2011
|
+
'templateUrl': 'pages/jdbc.html',
|
|
2012
|
+
'title': 'view.jdbc.title',
|
|
2013
|
+
'helpInfo': 'view.jdbc.helpInfo'
|
|
280
2014
|
},
|
|
281
2015
|
{
|
|
282
2016
|
'url': '/jdbc/configuration/create',
|
|
@@ -288,12 +2022,12 @@ PluginRegistry.add('route', [
|
|
|
288
2022
|
'title': 'view.jdbc.create.title',
|
|
289
2023
|
'helpInfo': 'view.jdbc.create.helpInfo'
|
|
290
2024
|
}
|
|
291
|
-
|
|
2025
|
+
]);
|
|
292
2026
|
|
|
293
2027
|
PluginRegistry.add('main.menu', {
|
|
294
2028
|
'items': [
|
|
295
|
-
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
|
|
296
|
-
{label: 'JDBC', labelKey: 'menu.jdbc.label', href: 'jdbc', order: 50, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
|
|
2029
|
+
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
|
|
2030
|
+
{label: 'JDBC', labelKey: 'menu.jdbc.label', href: 'jdbc', order: 50, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-jdbs'}
|
|
297
2031
|
]
|
|
298
2032
|
});
|
|
299
2033
|
|
|
@@ -316,13 +2050,15 @@ PluginRegistry.add('main.menu', {
|
|
|
316
2050
|
href: '#',
|
|
317
2051
|
order: 5,
|
|
318
2052
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
319
|
-
icon: "icon-settings"
|
|
2053
|
+
icon: "icon-settings",
|
|
2054
|
+
guideSelector: 'menu-setup'
|
|
320
2055
|
}, {
|
|
321
2056
|
label: 'Namespaces',
|
|
322
2057
|
labelKey: 'menu.namespaces.label',
|
|
323
2058
|
href: 'namespaces',
|
|
324
2059
|
order: 30,
|
|
325
|
-
parent: 'Setup'
|
|
2060
|
+
parent: 'Setup',
|
|
2061
|
+
guideSelector: 'sub-menu-namespaces'
|
|
326
2062
|
}
|
|
327
2063
|
]
|
|
328
2064
|
});
|
|
@@ -355,7 +2091,8 @@ PluginRegistry.add('main.menu', {
|
|
|
355
2091
|
href: '#',
|
|
356
2092
|
order: 5,
|
|
357
2093
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
358
|
-
icon: "icon-settings"
|
|
2094
|
+
icon: "icon-settings",
|
|
2095
|
+
guideSelector: 'menu-setup'
|
|
359
2096
|
},
|
|
360
2097
|
{
|
|
361
2098
|
label: 'Plugins',
|
|
@@ -363,7 +2100,8 @@ PluginRegistry.add('main.menu', {
|
|
|
363
2100
|
href: 'plugins',
|
|
364
2101
|
order: 25,
|
|
365
2102
|
parent: 'Setup',
|
|
366
|
-
role: "IS_AUTHENTICATED_FULLY"
|
|
2103
|
+
role: "IS_AUTHENTICATED_FULLY",
|
|
2104
|
+
guideSelector: 'sub-menu-plugins'
|
|
367
2105
|
}
|
|
368
2106
|
]
|
|
369
2107
|
});
|
|
@@ -388,13 +2126,15 @@ PluginRegistry.add('main.menu', {
|
|
|
388
2126
|
order: 3,
|
|
389
2127
|
// Changed to role user as now users can monitor their own queries
|
|
390
2128
|
role: 'ROLE_USER',
|
|
391
|
-
icon: 'icon-monitoring'
|
|
2129
|
+
icon: 'icon-monitoring',
|
|
2130
|
+
guideSelector: 'menu-monitor'
|
|
392
2131
|
}, {
|
|
393
2132
|
label: 'Queries and Updates',
|
|
394
2133
|
labelKey: 'menu.queries.and.updates.label',
|
|
395
2134
|
href: 'monitor/queries',
|
|
396
2135
|
order: 1,
|
|
397
|
-
parent: 'Monitor'
|
|
2136
|
+
parent: 'Monitor',
|
|
2137
|
+
guideSelector: 'sub-menu-queries-and-updates'
|
|
398
2138
|
}
|
|
399
2139
|
]
|
|
400
2140
|
});
|
|
@@ -418,7 +2158,8 @@ PluginRegistry.add('main.menu', {
|
|
|
418
2158
|
href: '#',
|
|
419
2159
|
order: 5,
|
|
420
2160
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
421
|
-
icon: 'icon-settings'
|
|
2161
|
+
icon: 'icon-settings',
|
|
2162
|
+
guideSelector: 'menu-setup'
|
|
422
2163
|
},
|
|
423
2164
|
{
|
|
424
2165
|
label: 'RDF Rank',
|
|
@@ -426,7 +2167,8 @@ PluginRegistry.add('main.menu', {
|
|
|
426
2167
|
href: 'rdfrank',
|
|
427
2168
|
order: 45,
|
|
428
2169
|
parent: 'Setup',
|
|
429
|
-
role: 'IS_AUTHENTICATED_FULLY'
|
|
2170
|
+
role: 'IS_AUTHENTICATED_FULLY',
|
|
2171
|
+
guideSelector: 'sub-menu-rdf-rank'
|
|
430
2172
|
}
|
|
431
2173
|
]
|
|
432
2174
|
});
|
|
@@ -476,7 +2218,8 @@ PluginRegistry.add('main.menu', {
|
|
|
476
2218
|
href: '#',
|
|
477
2219
|
order: 5,
|
|
478
2220
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
479
|
-
icon: 'icon-settings'
|
|
2221
|
+
icon: 'icon-settings',
|
|
2222
|
+
guideSelector: 'menu-setup'
|
|
480
2223
|
},
|
|
481
2224
|
{
|
|
482
2225
|
label: 'Repositories',
|
|
@@ -488,20 +2231,22 @@ PluginRegistry.add('main.menu', {
|
|
|
488
2231
|
children: [{
|
|
489
2232
|
href: 'repository/create',
|
|
490
2233
|
children: []
|
|
491
|
-
}]
|
|
2234
|
+
}],
|
|
2235
|
+
guideSelector: 'sub-menu-repositories'
|
|
492
2236
|
}
|
|
493
2237
|
]
|
|
494
2238
|
});
|
|
495
2239
|
|
|
496
2240
|
PluginRegistry.add('route', {
|
|
497
|
-
'url': '/monitor/
|
|
2241
|
+
'url': '/monitor/system',
|
|
498
2242
|
'module': 'graphdb.framework.jmx.resources',
|
|
499
2243
|
'path': 'resources/app',
|
|
500
2244
|
'chunk': 'resources',
|
|
501
2245
|
'controller': 'ResourcesCtrl',
|
|
502
2246
|
'templateUrl': 'pages/monitor/resources.html',
|
|
503
2247
|
'title': 'view.resource.monitoring.title',
|
|
504
|
-
'helpInfo': 'view.resource.monitoring.helpInfo'
|
|
2248
|
+
'helpInfo': 'view.resource.monitoring.helpInfo',
|
|
2249
|
+
'reloadOnSearch': false
|
|
505
2250
|
});
|
|
506
2251
|
|
|
507
2252
|
PluginRegistry.add('main.menu', {
|
|
@@ -512,15 +2257,17 @@ PluginRegistry.add('main.menu', {
|
|
|
512
2257
|
href: '#',
|
|
513
2258
|
order: 3,
|
|
514
2259
|
role: 'ROLE_MONITORING',
|
|
515
|
-
icon: 'icon-monitoring'
|
|
2260
|
+
icon: 'icon-monitoring',
|
|
2261
|
+
guideSelector: 'menu-monitor'
|
|
516
2262
|
}, {
|
|
517
2263
|
label: 'Resources',
|
|
518
2264
|
labelKey: 'menu.resources.label',
|
|
519
|
-
href: 'monitor/
|
|
2265
|
+
href: 'monitor/system',
|
|
520
2266
|
// Added role requirement here to assert that users cannot see Resources menu item
|
|
521
2267
|
role: 'ROLE_MONITORING',
|
|
522
|
-
order:
|
|
523
|
-
parent: 'Monitor'
|
|
2268
|
+
order: 3,
|
|
2269
|
+
parent: 'Monitor',
|
|
2270
|
+
guideSelector: 'sub-menu-resources'
|
|
524
2271
|
}
|
|
525
2272
|
]
|
|
526
2273
|
});
|
|
@@ -579,6 +2326,16 @@ PluginRegistry.add('route', [
|
|
|
579
2326
|
'controller': 'RolesMappingController',
|
|
580
2327
|
'templateUrl': 'js/angular/security/templates/roles.html',
|
|
581
2328
|
'title': 'view.roles.mapping.title'
|
|
2329
|
+
}, {
|
|
2330
|
+
'url': '/ux-test1',
|
|
2331
|
+
'templateUrl': 'pages/ux-test1.html',
|
|
2332
|
+
'controller': 'uxTestCtrl',
|
|
2333
|
+
'title': 'UX Test'
|
|
2334
|
+
}, {
|
|
2335
|
+
'url': '/ux-test2',
|
|
2336
|
+
'templateUrl': 'pages/ux-test2.html',
|
|
2337
|
+
'controller': 'uxTestCtrl',
|
|
2338
|
+
'title': 'UX Test'
|
|
582
2339
|
}
|
|
583
2340
|
]);
|
|
584
2341
|
|
|
@@ -590,14 +2347,16 @@ PluginRegistry.add('main.menu', {
|
|
|
590
2347
|
href: '#',
|
|
591
2348
|
order: 5,
|
|
592
2349
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
593
|
-
icon: 'icon-settings'
|
|
2350
|
+
icon: 'icon-settings',
|
|
2351
|
+
guideSelector: 'menu-setup'
|
|
594
2352
|
},
|
|
595
2353
|
{
|
|
596
2354
|
label: 'Users and Access', labelKey: 'menu.users.and.access.label', href: 'users', order: 2, parent: 'Setup', role: 'ROLE_ADMIN',
|
|
597
2355
|
children: [{
|
|
598
2356
|
href: 'user/create',
|
|
599
2357
|
children: []
|
|
600
|
-
}]
|
|
2358
|
+
}],
|
|
2359
|
+
guideSelector: 'sub-menu-user-and-access'
|
|
601
2360
|
},
|
|
602
2361
|
{
|
|
603
2362
|
label: 'My Settings',
|
|
@@ -605,7 +2364,8 @@ PluginRegistry.add('main.menu', {
|
|
|
605
2364
|
href: 'settings',
|
|
606
2365
|
order: 6,
|
|
607
2366
|
parent: 'Setup',
|
|
608
|
-
role: 'ROLE_USER'
|
|
2367
|
+
role: 'ROLE_USER',
|
|
2368
|
+
guideSelector: 'sub-menu-my-settings'
|
|
609
2369
|
}
|
|
610
2370
|
]
|
|
611
2371
|
});
|
|
@@ -639,7 +2399,8 @@ PluginRegistry.add('main.menu', {
|
|
|
639
2399
|
href: 'license',
|
|
640
2400
|
order: 100,
|
|
641
2401
|
role: 'ROLE_ADMIN',
|
|
642
|
-
parent: 'Setup'
|
|
2402
|
+
parent: 'Setup',
|
|
2403
|
+
guideSelector: 'sub-menu-license'
|
|
643
2404
|
}]
|
|
644
2405
|
});
|
|
645
2406
|
|
|
@@ -673,7 +2434,8 @@ PluginRegistry.add('main.menu', {
|
|
|
673
2434
|
href: '#',
|
|
674
2435
|
order: 5,
|
|
675
2436
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
676
|
-
icon: 'icon-settings'
|
|
2437
|
+
icon: 'icon-settings',
|
|
2438
|
+
guideSelector: 'sub-menu-setup'
|
|
677
2439
|
},
|
|
678
2440
|
{
|
|
679
2441
|
label: 'Similarity',
|
|
@@ -685,7 +2447,8 @@ PluginRegistry.add('main.menu', {
|
|
|
685
2447
|
children: [{
|
|
686
2448
|
href: 'similarity/index/create',
|
|
687
2449
|
children: []
|
|
688
|
-
}]
|
|
2450
|
+
}],
|
|
2451
|
+
guideSelector: 'sub-menu-similarity'
|
|
689
2452
|
}
|
|
690
2453
|
]
|
|
691
2454
|
});
|
|
@@ -715,8 +2478,8 @@ PluginRegistry.add('route', [
|
|
|
715
2478
|
|
|
716
2479
|
PluginRegistry.add('main.menu', {
|
|
717
2480
|
'items': [
|
|
718
|
-
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings"},
|
|
719
|
-
{label: 'SPARQL Templates', labelKey: 'menu.sparql.template.label', href: 'sparql-templates', order: 51, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY"}
|
|
2481
|
+
{label: 'Setup', labelKey: 'menu.setup.label', href: '#', order: 5, role: 'IS_AUTHENTICATED_FULLY', icon: "icon-settings", guideSelector: 'menu-setup'},
|
|
2482
|
+
{label: 'SPARQL Templates', labelKey: 'menu.sparql.template.label', href: 'sparql-templates', order: 51, parent: 'Setup', role: "IS_AUTHENTICATED_FULLY", guideSelector: 'sub-menu-sparql-templates'}
|
|
720
2483
|
]
|
|
721
2484
|
});
|
|
722
2485
|
|
|
@@ -728,7 +2491,8 @@ PluginRegistry.add('route', {
|
|
|
728
2491
|
'controller': 'QueryEditorCtrl',
|
|
729
2492
|
'templateUrl': 'pages/sparql.html',
|
|
730
2493
|
'title': 'view.sparql.title',
|
|
731
|
-
'helpInfo': 'view.sparql.helpInfo'
|
|
2494
|
+
'helpInfo': 'view.sparql.helpInfo',
|
|
2495
|
+
'reloadOnSearch': false,
|
|
732
2496
|
});
|
|
733
2497
|
|
|
734
2498
|
PluginRegistry.add('main.menu', {
|
|
@@ -739,7 +2503,8 @@ PluginRegistry.add('main.menu', {
|
|
|
739
2503
|
href: 'sparql',
|
|
740
2504
|
order: 2,
|
|
741
2505
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
742
|
-
icon: "icon-sparql"
|
|
2506
|
+
icon: "icon-sparql",
|
|
2507
|
+
guideSelector: 'menu-sparql'
|
|
743
2508
|
}
|
|
744
2509
|
]
|
|
745
2510
|
});
|
|
@@ -772,26 +2537,30 @@ PluginRegistry.add('main.menu', {
|
|
|
772
2537
|
href: '#',
|
|
773
2538
|
order: 7,
|
|
774
2539
|
role: 'IS_AUTHENTICATED_FULLY',
|
|
775
|
-
icon: 'icon-settings'
|
|
2540
|
+
icon: 'icon-settings',
|
|
2541
|
+
guideSelector: 'menu-setup'
|
|
776
2542
|
}, {
|
|
777
2543
|
label: 'Help',
|
|
778
2544
|
labelKey: 'menu.help.label',
|
|
779
2545
|
href: '#',
|
|
780
2546
|
order: 8,
|
|
781
|
-
icon: 'icon-help'
|
|
2547
|
+
icon: 'icon-help',
|
|
2548
|
+
guideSelector: 'menu-help'
|
|
782
2549
|
}, {
|
|
783
2550
|
label: 'System information',
|
|
784
2551
|
labelKey: 'menu.system.information.label',
|
|
785
2552
|
href: 'sysinfo',
|
|
786
2553
|
order: 50,
|
|
787
2554
|
parent: 'Help',
|
|
788
|
-
role: 'ROLE_ADMIN'
|
|
2555
|
+
role: 'ROLE_ADMIN',
|
|
2556
|
+
guideSelector: 'sub-menu-system-information'
|
|
789
2557
|
}, {
|
|
790
2558
|
label: 'REST API',
|
|
791
2559
|
labelKey: 'menu.rest.api.label',
|
|
792
2560
|
href: 'webapi',
|
|
793
2561
|
order: 1,
|
|
794
|
-
parent: 'Help'
|
|
2562
|
+
parent: 'Help',
|
|
2563
|
+
guideSelector: 'sub-menu-rest-api'
|
|
795
2564
|
}, {
|
|
796
2565
|
label: 'Documentation',
|
|
797
2566
|
labelKey: 'menu.documentation.label',
|
|
@@ -799,23 +2568,19 @@ PluginRegistry.add('main.menu', {
|
|
|
799
2568
|
parent: 'Help',
|
|
800
2569
|
icon: 'icon-external',
|
|
801
2570
|
hrefFun: function (productInfo) {
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
return DOCUMENTATION_URL;
|
|
806
|
-
}
|
|
2571
|
+
return DOCUMENTATION_URL + productInfo.productShortVersion + '/';
|
|
2572
|
+
},
|
|
2573
|
+
guideSelector: 'sub-menu-documentation'
|
|
807
2574
|
}, {
|
|
808
|
-
label: '
|
|
809
|
-
labelKey: 'menu.
|
|
2575
|
+
label: 'Tutorials',
|
|
2576
|
+
labelKey: 'menu.tutorials.label',
|
|
810
2577
|
order: 3,
|
|
811
2578
|
parent: 'Help',
|
|
812
2579
|
icon: 'icon-external',
|
|
813
2580
|
hrefFun: function (productInfo) {
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
return DOCUMENTATION_URL + 'free/devhub/';
|
|
818
|
-
}
|
|
2581
|
+
return DOCUMENTATION_URL + productInfo.productShortVersion + '/tutorials.html';
|
|
2582
|
+
},
|
|
2583
|
+
guideSelector: 'sub-menu-developer-hub'
|
|
819
2584
|
}, {
|
|
820
2585
|
label: 'Support',
|
|
821
2586
|
labelKey: 'menu.support.label',
|
|
@@ -823,11 +2588,129 @@ PluginRegistry.add('main.menu', {
|
|
|
823
2588
|
parent: 'Help',
|
|
824
2589
|
icon: 'icon-external',
|
|
825
2590
|
hrefFun: function (productInfo) {
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
return DOCUMENTATION_URL + 'free/support.html';
|
|
830
|
-
}
|
|
2591
|
+
return DOCUMENTATION_URL + productInfo.productShortVersion + '/support.html';
|
|
2592
|
+
},
|
|
2593
|
+
guideSelector: 'sub-menu-support'
|
|
831
2594
|
}
|
|
832
2595
|
]
|
|
833
2596
|
});
|
|
2597
|
+
|
|
2598
|
+
PluginRegistry.add('themes', {
|
|
2599
|
+
// The name of the theme. Must contain only lowercase letters, hyphen, underscore. This is the differentiator
|
|
2600
|
+
// property for all registered themes.
|
|
2601
|
+
'name': 'default-theme',
|
|
2602
|
+
// The theme label or a key for a label from i18n resource bundle.
|
|
2603
|
+
'label': 'security.workbench.settings.theme.default-theme',
|
|
2604
|
+
// CSS variables, "foo: bar" becomes "--foo: bar"
|
|
2605
|
+
'variables': {
|
|
2606
|
+
// Primary color, like a main brand color. This is in a HSL format composed by three values below
|
|
2607
|
+
'primary-color-hue': '13.4',
|
|
2608
|
+
'primary-color-saturation': '87.9%',
|
|
2609
|
+
'primary-color-lightness': '33%',
|
|
2610
|
+
// Secondary color, like a contrast main brand color. This is in a HSL format composed by three values below
|
|
2611
|
+
'secondary-color-hue': '207.3',
|
|
2612
|
+
'secondary-color-saturation': '100%',
|
|
2613
|
+
'secondary-color-lightness': '19.4%',
|
|
2614
|
+
// Tertiary color, like a complimentary color. This is in a HSL format composed by three values below
|
|
2615
|
+
'tertiary-color-hue': '174.6',
|
|
2616
|
+
'tertiary-color-saturation': '97.7%',
|
|
2617
|
+
'tertiary-color-lightness': '33.5%',
|
|
2618
|
+
// A color used for the font/svg icons when placed on a primary color background.
|
|
2619
|
+
'icon-on-primary-color': 'rgba(255, 255, 255, 0.8)',
|
|
2620
|
+
'gray-color': '#97999C',
|
|
2621
|
+
'gray-color-dark': '#575757',
|
|
2622
|
+
// Colors for the toastr notifications, the tag-xxx and the text-xxx classes in any of their four states
|
|
2623
|
+
// (i.e. dark colored things)
|
|
2624
|
+
'color-danger-dark': 'hsl(353, 78%, 36%)',
|
|
2625
|
+
'color-success-dark': 'hsl(var(--tertiary-color-hue), var(--tertiary-color-saturation), calc(var(--tertiary-color-lightness)*0.5))',
|
|
2626
|
+
'color-warning-dark': 'var(--primary-color-dark)',
|
|
2627
|
+
'color-info-dark': 'var(--secondary-color-light)',
|
|
2628
|
+
// Colors for the alert boxes (i.e. light colored things).
|
|
2629
|
+
// Success and info are the same color since we don't use success much if at all
|
|
2630
|
+
'color-danger-light': '#a4142433',
|
|
2631
|
+
'color-success-light': 'hsla(var(--tertiary-color-hsl), 0.15)',
|
|
2632
|
+
'color-warning-light': 'hsla(var(--primary-color-hsl), 0.07)',
|
|
2633
|
+
'color-info-light': 'hsla(var(--tertiary-color-hsl), 0.15)',
|
|
2634
|
+
'color-help-light': 'hsla(var(--secondary-color-hsl), 0.1)',
|
|
2635
|
+
// Colors for fading danger/warning buttons, these are intermediate in intensity between dark and light,
|
|
2636
|
+
// and they should not use alpha channel because that doesn't play nice with border color
|
|
2637
|
+
'color-danger-medium': 'hsl(353, 78%, 83%)',
|
|
2638
|
+
'color-warning-medium': 'hsl(var(--primary-color-hue), var(--primary-color-saturation), 83%)',
|
|
2639
|
+
// Colors for the logo - logo proper, text in logo, logo background
|
|
2640
|
+
'logo-color': 'var(--primary-color-light)',
|
|
2641
|
+
'logo-text-color': 'white',
|
|
2642
|
+
'logo-background-color': 'var(--secondary-color-dark)'
|
|
2643
|
+
},
|
|
2644
|
+
// Dark theme
|
|
2645
|
+
'dark': {
|
|
2646
|
+
'variables': {
|
|
2647
|
+
// Dark definition variables that affect things at a global scale
|
|
2648
|
+
'body-filter': 'invert(95%) hue-rotate(180deg)',
|
|
2649
|
+
'html-background': '#0d0d0d',
|
|
2650
|
+
'media-filter': 'invert(100%) hue-rotate(180deg)',
|
|
2651
|
+
'alert-filter': 'contrast(2)',
|
|
2652
|
+
'checkbox-filter': 'invert(100%) hue-rotate(180deg)',
|
|
2653
|
+
'toast-filter': 'invert(95%) hue-rotate(180deg) contrast(1.2)',
|
|
2654
|
+
// Slightly different colors that work better in dark mode
|
|
2655
|
+
'primary-color-lightness': '60%',
|
|
2656
|
+
'secondary-color-saturation': '70%',
|
|
2657
|
+
'color-warning-light': 'hsla(var(--primary-color-hsl), 0.15)',
|
|
2658
|
+
'logo-color': 'var(--primary-color-dark)'
|
|
2659
|
+
},
|
|
2660
|
+
// CSS properties, "foo: bar" becomes "foo: bar"
|
|
2661
|
+
'properties': {
|
|
2662
|
+
// Notify browser that we support dark theme, makes checkboxes look better
|
|
2663
|
+
'color-scheme': 'light dark'
|
|
2664
|
+
}
|
|
2665
|
+
}
|
|
2666
|
+
});
|
|
2667
|
+
|
|
2668
|
+
PluginRegistry.add('themes', {
|
|
2669
|
+
'name': 'onto-original-theme',
|
|
2670
|
+
'label': 'security.workbench.settings.theme.onto-original-theme',
|
|
2671
|
+
'variables': {
|
|
2672
|
+
'primary-color-hue': '17',
|
|
2673
|
+
'primary-color-saturation': '87.9%',
|
|
2674
|
+
'primary-color-lightness': '49%',
|
|
2675
|
+
'secondary-color-hue': '207.3',
|
|
2676
|
+
'secondary-color-saturation': '100%',
|
|
2677
|
+
'secondary-color-lightness': '19.4%',
|
|
2678
|
+
'tertiary-color-hue': '174.6',
|
|
2679
|
+
'tertiary-color-saturation': '97.7%',
|
|
2680
|
+
'tertiary-color-lightness': '33.5%',
|
|
2681
|
+
'icon-on-primary-color': 'rgba(255, 255, 255, 0.8)',
|
|
2682
|
+
'gray-color': '#97999C',
|
|
2683
|
+
'gray-color-dark': '#575757',
|
|
2684
|
+
'color-danger-dark': '#bd362f',
|
|
2685
|
+
'color-success-dark': '#51a351',
|
|
2686
|
+
'color-warning-dark': '#f89406',
|
|
2687
|
+
'color-info-dark': '#2f96b4',
|
|
2688
|
+
'color-danger-light': 'rgba(242, 222, 222, 0.7)',
|
|
2689
|
+
'color-success-light': 'rgba(219, 252, 202, 0.7)',
|
|
2690
|
+
'color-warning-light': 'rgba(252, 248, 227, 0.7)',
|
|
2691
|
+
'color-info-light': 'rgba(203, 238, 234, 0.7)',
|
|
2692
|
+
'color-help-light': '#e8f5fe',
|
|
2693
|
+
'color-danger-medium': 'hsl(353, 78%, 83%)',
|
|
2694
|
+
'color-warning-medium': 'hsl(var(--primary-color-hue), var(--primary-color-saturation), 83%)',
|
|
2695
|
+
'logo-color': '#E84E0F;',
|
|
2696
|
+
'logo-text-color': '#FFFFFF',
|
|
2697
|
+
'logo-background-color': 'var(--secondary-color)'
|
|
2698
|
+
},
|
|
2699
|
+
'dark': {
|
|
2700
|
+
'variables': {
|
|
2701
|
+
'body-filter': 'invert(95%) hue-rotate(180deg)',
|
|
2702
|
+
'html-background': '#0d0d0d',
|
|
2703
|
+
'media-filter': 'invert(100%) hue-rotate(180deg)',
|
|
2704
|
+
'alert-filter': 'brightness(0.8)',
|
|
2705
|
+
'checkbox-filter': 'invert(100%) hue-rotate(180deg)',
|
|
2706
|
+
'toast-filter': 'invert(90%) hue-rotate(180deg) contrast(1.2)',
|
|
2707
|
+
|
|
2708
|
+
'primary-color-hue': '14',
|
|
2709
|
+
'primary-color-saturation': '78%',
|
|
2710
|
+
'primary-color-lightness': '64%'
|
|
2711
|
+
},
|
|
2712
|
+
'properties': {
|
|
2713
|
+
'color-scheme': 'light dark'
|
|
2714
|
+
}
|
|
2715
|
+
}
|
|
2716
|
+
});
|