Compare commits
517 Commits
production
...
master
Author | SHA1 | Date |
---|---|---|
Konstantina Galouni | b059b300ba | |
Konstantina Galouni | d05209a54c | |
Konstantina Galouni | 24696d7991 | |
Konstantina Galouni | b72a7f03b1 | |
Konstantina Galouni | e4d230369e | |
Konstantina Galouni | ba83087b59 | |
Konstantina Galouni | 55469cc2bc | |
Konstantina Galouni | dbdb929a8f | |
Konstantina Galouni | 58770771ca | |
Konstantina Galouni | 0c82b325cf | |
Konstantina Galouni | e518a80ba4 | |
Konstantina Galouni | 234b12be9d | |
Konstantina Galouni | 5789293ffe | |
Konstantina Galouni | 83f01d8aa1 | |
Konstantina Galouni | 0a20d80c4c | |
Konstantina Galouni | 8a3e859132 | |
Konstantina Galouni | ca41e89465 | |
Konstantina Galouni | e563886f8a | |
Konstantina Galouni | d1b482c189 | |
Konstantina Galouni | 443f90d2e9 | |
Konstantina Galouni | 8d0f711064 | |
Konstantina Galouni | 0f639ec210 | |
Konstantina Galouni | d9647d2a46 | |
Konstantina Galouni | b79dbd20ec | |
Konstantina Galouni | ccae7b03a5 | |
Alex Martzios | 59f3e8dae9 | |
Alex Martzios | 09b7435243 | |
argirok | 260b263e6f | |
Alex Martzios | d42a3973bd | |
Konstantina Galouni | 37358b14db | |
Konstantina Galouni | 2a4b92ba00 | |
Konstantina Galouni | 4ad1f4e51c | |
Konstantina Galouni | 3d2ad5336b | |
Konstantina Galouni | 60de7eb2a0 | |
Konstantina Galouni | 45561bddb2 | |
Konstantina Galouni | 215c3fbc83 | |
Konstantina Galouni | a79b936629 | |
Alex Martzios | b7a05316c0 | |
Konstantina Galouni | a99e6378fc | |
Konstantina Galouni | 8949088e0e | |
Konstantina Galouni | 463410a135 | |
Konstantina Galouni | 17165e83ae | |
Alex Martzios | f3115b9f98 | |
Alex Martzios | f226482ba3 | |
Konstantina Galouni | 38337e296f | |
argirok | c81c6196c0 | |
Konstantina Galouni | 178846353c | |
Konstantina Galouni | 49dce466ce | |
argirok | 68662693a4 | |
Konstantina Galouni | e8e4c410dd | |
Konstantina Galouni | c51b2b58f4 | |
Konstantinos Triantafyllou | 85320e8653 | |
Konstantina Galouni | 9f53423ae3 | |
Konstantina Galouni | 15499aa4ca | |
Konstantina Galouni | a762efab08 | |
Konstantina Galouni | 8cdc423f02 | |
Konstantinos Triantafyllou | 3797ddcc3a | |
Konstantinos Triantafyllou | e57f1b02ed | |
Konstantina Galouni | b6db196e68 | |
Konstantina Galouni | 6af07478b4 | |
argirok | 3b058ee74d | |
Konstantina Galouni | 4258055e51 | |
Konstantina Galouni | c20002c9e9 | |
Konstantina Galouni | 134c21d6be | |
Konstantina Galouni | fbdc3710dc | |
Konstantina Galouni | a5019e083c | |
Konstantina Galouni | ee38203ee4 | |
Konstantina Galouni | 1d7a7ae2c4 | |
Konstantina Galouni | d639261fbe | |
Konstantina Galouni | a7d0cc5d4e | |
Konstantina Galouni | 9952b55f2c | |
argirok | b94006ea99 | |
argirok | b0db89f826 | |
Konstantina Galouni | 07681241c0 | |
Konstantina Galouni | ee00eaaebf | |
Konstantina Galouni | 1738dfcccc | |
Konstantina Galouni | 5b5000b2fe | |
Konstantina Galouni | af50558136 | |
Konstantina Galouni | 36f1ed105d | |
Konstantina Galouni | 414ff59fd0 | |
Konstantina Galouni | 5408bd9f82 | |
Konstantina Galouni | a3c79137aa | |
Konstantina Galouni | 4131de601c | |
argirok | 7761eeeedc | |
argirok | 46ad6aef36 | |
argirok | f64b410dd5 | |
argirok | 629d3efb08 | |
argirok | a9d06e61fa | |
Konstantina Galouni | 102f41722e | |
Konstantina Galouni | 109be1c6f6 | |
Konstantina Galouni | 3678f7c5ea | |
Konstantina Galouni | 278fefb45a | |
Konstantina Galouni | 3562d4f6c6 | |
Konstantina Galouni | cca45918d8 | |
Konstantina Galouni | 099f6a6ce6 | |
Konstantina Galouni | b21d7dcd93 | |
Konstantina Galouni | 2adb378467 | |
Konstantina Galouni | c41cbb6355 | |
Konstantina Galouni | 5c95fac244 | |
Konstantina Galouni | 17325b3ab2 | |
Konstantina Galouni | 6fd19ea661 | |
Alex Martzios | e01371ff14 | |
Konstantina Galouni | 96e400552a | |
Konstantina Galouni | da33e403f6 | |
Konstantina Galouni | 9ca57b8f4d | |
Konstantina Galouni | 5b86f1a4d1 | |
Konstantina Galouni | c3587bb2c4 | |
Konstantina Galouni | 288e106779 | |
Konstantina Galouni | c416853045 | |
Konstantina Galouni | ec8e6b6938 | |
Konstantina Galouni | 852c81d834 | |
Konstantina Galouni | 8c9337fd0b | |
Konstantina Galouni | bce47ea21e | |
Konstantina Galouni | 11f0f8befb | |
Konstantina Galouni | ab839498a8 | |
Konstantina Galouni | 2bfb614008 | |
Konstantina Galouni | 5eb3883d6b | |
Konstantina Galouni | 4fd541f460 | |
Konstantina Galouni | cfe0cc3b7b | |
Konstantina Galouni | f1330358f8 | |
argirok | b5b9aa7d24 | |
Konstantina Galouni | 1dbce23e13 | |
Konstantina Galouni | e1e53a7bbe | |
Konstantina Galouni | 3903c940a7 | |
Konstantina Galouni | d83c614892 | |
Konstantina Galouni | 363e371ec1 | |
Konstantina Galouni | ce034c1c8c | |
Konstantina Galouni | aa192044af | |
Konstantina Galouni | f24e62cad6 | |
Konstantina Galouni | 16a73b6e29 | |
Konstantina Galouni | ecd21315f4 | |
Konstantina Galouni | a5beb8ba76 | |
Konstantina Galouni | 713e6014c3 | |
Konstantina Galouni | a5ce147fa1 | |
Konstantina Galouni | 4aa01517f2 | |
Konstantina Galouni | fb2e542c4d | |
Konstantina Galouni | c676603faa | |
Konstantina Galouni | 65ba5ef994 | |
Konstantina Galouni | d786a50074 | |
Konstantina Galouni | 88c53b6cc3 | |
Konstantina Galouni | 7be7c08442 | |
Konstantina Galouni | 20ac495013 | |
Konstantina Galouni | 185344d878 | |
Konstantina Galouni | 2d8400e9b7 | |
Konstantina Galouni | bc05c92edc | |
Konstantina Galouni | b1d4ac4665 | |
Konstantinos Triantafyllou | 642509a1f5 | |
Konstantinos Triantafyllou | f948757eb2 | |
Konstantinos Triantafyllou | e33812c8d8 | |
Alex Martzios | f851fbefed | |
argirok | 55150473ab | |
Alex Martzios | 4f9ba17092 | |
Konstantinos Triantafyllou | 8dfa776e0a | |
Konstantinos Triantafyllou | d97231ba92 | |
Konstantina Galouni | 7835c273b4 | |
Alex Martzios | ca9a00e879 | |
Konstantinos Triantafyllou | f443ca9a61 | |
Konstantinos Triantafyllou | d8fadf50e6 | |
Konstantina Galouni | 3cb7443a2e | |
Konstantina Galouni | 8690029fd0 | |
Konstantinos Triantafyllou | 6d4f7d5645 | |
Konstantinos Triantafyllou | bfd7e1bf94 | |
Konstantina Galouni | 14c289b719 | |
Konstantina Galouni | 1fef8ce8e6 | |
Konstantina Galouni | 93777a8079 | |
Konstantina Galouni | e56c3d82e4 | |
Konstantinos Triantafyllou | 1602407c41 | |
Konstantina Galouni | dd5ede2794 | |
Konstantinos Triantafyllou | c8967dd92b | |
Konstantinos Triantafyllou | 95f749e9f0 | |
Konstantinos Triantafyllou | 3a463f9bab | |
Konstantinos Triantafyllou | 15cd6a2fb6 | |
Konstantinos Triantafyllou | cffe2a0967 | |
Konstantinos Triantafyllou | 3011294f5b | |
Konstantinos Triantafyllou | eb15f07ef0 | |
Konstantinos Triantafyllou | 89788f660d | |
Konstantinos Triantafyllou | 986aecfe2a | |
Konstantinos Triantafyllou | 7ada3160f2 | |
Konstantinos Triantafyllou | 12ee95b98c | |
Konstantina Galouni | f762d78226 | |
Konstantina Galouni | 6ce1f32759 | |
Konstantina Galouni | d9549f8c93 | |
Konstantina Galouni | ac797aba3c | |
Konstantina Galouni | 5883af71da | |
Konstantinos Triantafyllou | ccc59c14b0 | |
Konstantina Galouni | ca9f2bca45 | |
Alex Martzios | 665a6cb61b | |
Alex Martzios | 96c0b16680 | |
Konstantina Galouni | 48906a3e28 | |
Konstantina Galouni | 36108a81f1 | |
Konstantinos Triantafyllou | c7ffca77fd | |
Konstantinos Triantafyllou | e724914d64 | |
Konstantina Galouni | b93da0d434 | |
Konstantina Galouni | eda8c5c2d9 | |
Alex Martzios | cf7664534b | |
Alex Martzios | 9556ae36b9 | |
Konstantina Galouni | 378d7ccb83 | |
Konstantina Galouni | a23afc29d2 | |
Konstantina Galouni | 1d6e5deeed | |
Konstantina Galouni | 3b7af8f0b0 | |
Konstantina Galouni | beece2680b | |
Konstantina Galouni | 57a4ca5420 | |
Konstantina Galouni | a6d24784fc | |
Konstantinos Triantafyllou | 945b37f5b2 | |
Konstantinos Triantafyllou | b30eba84bb | |
Alex Martzios | 38535403c5 | |
Alex Martzios | 6784c8ad62 | |
Alex Martzios | 9974e9e1f4 | |
Konstantina Galouni | 5f445e5c08 | |
Konstantina Galouni | dc248e999d | |
Konstantina Galouni | 9611021a55 | |
Alex Martzios | 9be9d575a3 | |
Konstantina Galouni | 392cac52f2 | |
Konstantina Galouni | e012c5c77c | |
Konstantina Galouni | 7dbb5358d6 | |
Alex Martzios | f63e83258d | |
Konstantina Galouni | d0a5c3b469 | |
Konstantinos Triantafyllou | 58fc4f84c2 | |
Alex Martzios | dc21fd528d | |
Alex Martzios | 0d9688a980 | |
Konstantina Galouni | 3047236d1c | |
Alex Martzios | bdad7dc6e6 | |
Alex Martzios | 7722b6f968 | |
Alex Martzios | 2d859f03e5 | |
Alex Martzios | fae5a4bc5b | |
Konstantina Galouni | 2da6b5f360 | |
Konstantina Galouni | 0774efbb0d | |
Konstantina Galouni | b49e000020 | |
Alex Martzios | 6d59e508ba | |
Alex Martzios | a7e56df08a | |
Alex Martzios | 650ded2050 | |
Alex Martzios | 1d8a48ef78 | |
Alex Martzios | 411720917b | |
Alex Martzios | caeb15f927 | |
Alex Martzios | 58d5481166 | |
Alex Martzios | 35ed4cf5be | |
Alex Martzios | b3934411ca | |
Alex Martzios | ebf26d66cf | |
Alex Martzios | 0b92ad3725 | |
Alex Martzios | a0fa5002c9 | |
Alex Martzios | b1aed8224a | |
Konstantina Galouni | 2190234ba0 | |
Alex Martzios | cf069d2550 | |
Konstantina Galouni | 0db79b0ffd | |
Konstantina Galouni | 40d0a2a24c | |
Konstantina Galouni | e36d6d5ed3 | |
Alex Martzios | 2ba2990479 | |
Alex Martzios | fdc3cc76b0 | |
Alex Martzios | 5f66f3cdc1 | |
Alex Martzios | 21aeaf0efa | |
Konstantinos Triantafyllou | 36f4bd1c60 | |
Konstantina Galouni | a3194bb41a | |
Alex Martzios | 866d40cff1 | |
Konstantina Galouni | 3490594513 | |
Alex Martzios | 4f6529b46f | |
Konstantina Galouni | e0e319119f | |
Konstantina Galouni | e93022c7dd | |
Alex Martzios | 94ddb1f017 | |
Konstantina Galouni | a7e63f05ae | |
Konstantina Galouni | 4235621315 | |
Alex Martzios | 08bc9741b8 | |
Alex Martzios | 1dc6f9b1a4 | |
Konstantina Galouni | b347ea300b | |
Alex Martzios | 35d59d4c4c | |
Konstantina Galouni | 6199afde33 | |
Alex Martzios | ed4edc1b9f | |
Alex Martzios | 2c759d2f15 | |
Konstantina Galouni | d4b9d4954e | |
Alex Martzios | c1bb343097 | |
Alex Martzios | cbf1a5c6d6 | |
Alex Martzios | 1389b9d934 | |
Alex Martzios | 0623defdb6 | |
Alex Martzios | d2bfe2560c | |
Konstantina Galouni | a1f9e47874 | |
Alex Martzios | 2d8de7b5a5 | |
Alex Martzios | b5bf06b7f2 | |
Konstantina Galouni | 0377810717 | |
Alex Martzios | a02255548d | |
Alex Martzios | 3a3a503c70 | |
Konstantina Galouni | d715e0a281 | |
Konstantina Galouni | 448a67b9fb | |
Alex Martzios | 4a4a251a2e | |
Konstantina Galouni | e04f0af2e2 | |
Alex Martzios | 3b23a1c0eb | |
Konstantina Galouni | 44ee139a1a | |
Konstantina Galouni | 200c84044a | |
Konstantina Galouni | 7bc1cb7f24 | |
Konstantina Galouni | 446f0df950 | |
Konstantina Galouni | 42d002f6ff | |
Alex Martzios | a9733427e8 | |
Konstantina Galouni | 4b6a383154 | |
Konstantina Galouni | 75fdfe1491 | |
Konstantina Galouni | cb7de49f89 | |
Konstantina Galouni | 93abf84ee4 | |
Alex Martzios | b01e3f8ca8 | |
Alex Martzios | 89ace01826 | |
Alex Martzios | 9d755ff1db | |
Alex Martzios | ab302e040f | |
Alex Martzios | a358686a3d | |
Alex Martzios | b3ac3b3391 | |
Konstantina Galouni | 732e96512d | |
Konstantina Galouni | 578b79b1c2 | |
Konstantina Galouni | cbdfada293 | |
Alex Martzios | 4d35658d05 | |
Konstantina Galouni | e6cfab5646 | |
Konstantina Galouni | 120774c414 | |
Alex Martzios | 55bd190ec8 | |
Konstantina Galouni | 25a92c827c | |
Konstantina Galouni | 2faf2202fe | |
Konstantinos Triantafyllou | 4db4795a04 | |
Konstantina Galouni | 285c65e3f2 | |
Alex Martzios | 6380311b1e | |
Konstantinos Triantafyllou | dc1f947d7a | |
Alex Martzios | 98effe34a0 | |
Konstantina Galouni | 0c0ba653cc | |
Konstantina Galouni | a3d560a984 | |
Konstantina Galouni | 3e2e4beeca | |
Konstantina Galouni | 92bc0cc3be | |
Konstantina Galouni | 0bf674b4c0 | |
Konstantina Galouni | e3cd34e44d | |
Konstantina Galouni | 44d2febceb | |
Konstantina Galouni | ccdff2198e | |
Konstantina Galouni | fe9275a329 | |
Konstantina Galouni | de3adf74d5 | |
Konstantina Galouni | 73726abeca | |
Konstantina Galouni | d68b2f9cc8 | |
Konstantina Galouni | 1ac1c4b727 | |
Konstantina Galouni | c756fb2eb5 | |
Konstantina Galouni | 61ba030f68 | |
Konstantina Galouni | 991e05693e | |
Alex Martzios | 6485ee8cda | |
Alex Martzios | 47e4543326 | |
Alex Martzios | 44a34c3a7a | |
Alex Martzios | caae320794 | |
argirok | 82afd05444 | |
Konstantinos Triantafyllou | be7c535518 | |
argirok | e4586e58f2 | |
Konstantinos Triantafyllou | d03db02103 | |
Konstantinos Triantafyllou | e0e7361b21 | |
Konstantinos Triantafyllou | 888c788ac8 | |
Konstantinos Triantafyllou | b5fc3c8606 | |
Alex Martzios | 9093e0932b | |
Alex Martzios | 91b482e51e | |
Alex Martzios | 85ad4b94bd | |
Alex Martzios | b220fe81c3 | |
Alex Martzios | 907b4e9512 | |
Alex Martzios | d0f24a40fd | |
Alex Martzios | 94a59dc5a6 | |
Alex Martzios | 5dfa3b41c4 | |
Alex Martzios | d9061a3df9 | |
Alex Martzios | 03904006a9 | |
Alex Martzios | c7e1d8bad5 | |
Alex Martzios | e12935d8e4 | |
Alex Martzios | 0d1f48a9c6 | |
Alex Martzios | 2c0b650585 | |
Alex Martzios | 0e1236de9d | |
Alex Martzios | c7a49ddac2 | |
Konstantina Galouni | b3001a7bfe | |
Alex Martzios | 956f0deb40 | |
Konstantina Galouni | 13ad5f11d9 | |
Konstantina Galouni | 89b51d9838 | |
Konstantina Galouni | a194132dfe | |
Konstantina Galouni | 39c1997967 | |
Konstantina Galouni | f9cb73147c | |
Konstantina Galouni | 909a5a02eb | |
Konstantina Galouni | 1c39dfdc3a | |
Alex Martzios | 96e80f6e82 | |
Alex Martzios | 49e89a06a7 | |
Konstantina Galouni | ed502e6f34 | |
Konstantina Galouni | aa1175151f | |
Konstantina Galouni | 53f6eb465c | |
Konstantina Galouni | fb4d6cbf05 | |
Alex Martzios | 9f51ef56bd | |
Alex Martzios | f8feed0513 | |
Alex Martzios | a2dd7a2864 | |
Alex Martzios | 49c88f95ed | |
Alex Martzios | efb297202f | |
Alex Martzios | a4d79e9407 | |
Alex Martzios | c2aff4902e | |
Alex Martzios | e06cb59799 | |
Alex Martzios | 8f12fe89c4 | |
Konstantinos Triantafyllou | 8545a1cd7f | |
Konstantinos Triantafyllou | 1d16f6f651 | |
Konstantina Galouni | 7b29884305 | |
Konstantinos Triantafyllou | 15272d2390 | |
Konstantinos Triantafyllou | b781a9973b | |
Alex Martzios | 97612be256 | |
Konstantinos Triantafyllou | 678429e740 | |
Konstantina Galouni | eb7f4ebf55 | |
Alex Martzios | 527ed03726 | |
Alex Martzios | 9f01855797 | |
Alex Martzios | dc898d673d | |
Alex Martzios | 429ad98246 | |
Konstantina Galouni | fc317468c0 | |
Konstantina Galouni | 539a79722f | |
Alex Martzios | 862846c467 | |
Konstantina Galouni | 73067ebc6b | |
Konstantina Galouni | 17735ee3d4 | |
Konstantina Galouni | bfe9b0e36d | |
Konstantina Galouni | 0a7bc27860 | |
Konstantina Galouni | 008d77bb0c | |
Konstantina Galouni | 0e7e65b0b6 | |
Konstantina Galouni | 27724d081a | |
Konstantina Galouni | 63a17cbf41 | |
Konstantina Galouni | 0055ba021b | |
Alex Martzios | bf2e77d7b9 | |
Alex Martzios | f15705d6b1 | |
Konstantina Galouni | a0f081d841 | |
Konstantina Galouni | 53591979f7 | |
Konstantinos Triantafyllou | 8e056f5f4e | |
Konstantinos Triantafyllou | 58d45c9088 | |
Alex Martzios | 95577038b7 | |
argirok | 7962556b8f | |
Alex Martzios | 8eeea3f913 | |
Konstantina Galouni | a85c7781f2 | |
Konstantina Galouni | 1cbe7fd930 | |
Konstantinos Triantafyllou | 313daed2c9 | |
Alex Martzios | 2434ef404d | |
Alex Martzios | 28fc094785 | |
Konstantinos Triantafyllou | f8098533aa | |
Konstantinos Triantafyllou | 160ad45d9b | |
Konstantinos Triantafyllou | 11567b2593 | |
Konstantina Galouni | 0cac453cb1 | |
Konstantina Galouni | 9bf87f1f74 | |
Konstantina Galouni | 4fca82fa33 | |
Alex Martzios | 82111c1012 | |
Alex Martzios | e13c30aac5 | |
Alex Martzios | 950c9656d2 | |
Alex Martzios | 46df3681f5 | |
Konstantina Galouni | 945e2c6fc7 | |
Konstantina Galouni | 0b53cea58a | |
Alex Martzios | 9406ad8152 | |
Alex Martzios | 0a160b4f54 | |
Alex Martzios | 74ce69909f | |
Konstantina Galouni | 131bec9d17 | |
Alex Martzios | a156e359f4 | |
Alex Martzios | 29a321c302 | |
Konstantina Galouni | 40700daf24 | |
Konstantina Galouni | 41b3db27a6 | |
Alex Martzios | e4e2c0aeba | |
Alex Martzios | f00aa33dda | |
Alex Martzios | 6b0fe12bca | |
Alex Martzios | f3c18b7779 | |
Alex Martzios | 1d27a50be3 | |
Konstantina Galouni | 3be9891320 | |
Alex Martzios | b18a4d0229 | |
Konstantinos Triantafyllou | 27a1ea7029 | |
Alex Martzios | 5366439647 | |
Konstantinos Triantafyllou | 6fe5f8763f | |
Alex Martzios | 9bd05cf1e2 | |
Konstantina Galouni | ae11528b5c | |
Konstantinos Triantafyllou | 02de663dd2 | |
Konstantina Galouni | 4a6d39d4e9 | |
Konstantina Galouni | b924e564bb | |
Konstantina Galouni | ec2482e6af | |
Alex Martzios | 20e1e5d735 | |
Alex Martzios | 620360fa94 | |
Konstantinos Triantafyllou | 9734b93f7a | |
Alex Martzios | 47a96f93f4 | |
Konstantina Galouni | bbfa79c8c9 | |
Konstantina Galouni | 9ab56f02fb | |
Konstantina Galouni | a87fc8da43 | |
Alex Martzios | b5815a9bc7 | |
Konstantina Galouni | acd8db71cc | |
Konstantina Galouni | 341cacef2f | |
Konstantina Galouni | a949dd191d | |
Konstantina Galouni | 115d25e85f | |
Konstantina Galouni | 1554f2f15f | |
Konstantina Galouni | 846c7966f0 | |
Alex Martzios | ddb189303b | |
Konstantina Galouni | 104256eefb | |
Alex Martzios | bd7d3dccb0 | |
argirok | 6564620ddd | |
Alex Martzios | d0ee809a03 | |
argirok | 7be057c722 | |
Konstantinos Triantafyllou | a32e7f0433 | |
Konstantinos Triantafyllou | dec5268b83 | |
Alex Martzios | 3603c2ab00 | |
Alex Martzios | 53eda3a026 | |
Konstantinos Triantafyllou | c24859fed3 | |
Konstantina Galouni | c887dc1c66 | |
Konstantinos Triantafyllou | 04cd27042e | |
Alex Martzios | caad9e3349 | |
Alex Martzios | cb4b3334be | |
Alex Martzios | 99bdbb72f8 | |
Alex Martzios | de0c5e2e3f | |
Konstantina Galouni | 1b88f0924f | |
Konstantina Galouni | 791dcccca6 | |
Konstantina Galouni | 8b672939ac | |
Konstantina Galouni | 5c3b14e9f7 | |
Konstantina Galouni | 1968c9add2 | |
Konstantina Galouni | 883cd8fac3 | |
Konstantina Galouni | d13123cfc0 | |
Konstantina Galouni | 6fcd822b36 | |
Konstantina Galouni | 61550cc1c5 | |
Alex Martzios | d845a618ea | |
Konstantina Galouni | 4b5d6ac98b | |
Konstantina Galouni | 826db1af73 | |
Konstantina Galouni | 191b9c7a9a | |
Konstantina Galouni | e20e9c61e6 | |
Alex Martzios | e4a9f8be64 | |
Alex Martzios | da544109aa | |
Konstantinos Triantafyllou | b2e9a76170 | |
Konstantina Galouni | cc062d3938 | |
Konstantina Galouni | 2fa81dd7c9 | |
argirok | d533a904ed | |
argirok | dbe76e472f | |
argirok | d6c4788fbb | |
argirok | a8f3421fb8 | |
Konstantina Galouni | ea9d4d73c8 | |
Konstantina Galouni | ad1f68ca68 | |
Konstantina Galouni | 5d21dde264 | |
argirok | dd862df6b2 | |
argirok | 91d8ed0ccd | |
argirok | 7c87a1343e | |
argirok | afb9e6cf0b | |
argirok | ccccf03f30 |
|
@ -1,4 +1,5 @@
|
||||||
.idea
|
.idea
|
||||||
|
**/.angular/
|
||||||
**/node_modules
|
**/node_modules
|
||||||
**/package-lock.json
|
**/package-lock.json
|
||||||
**/.idea
|
**/.idea
|
||||||
|
|
|
@ -4,3 +4,6 @@
|
||||||
[submodule "explore/src/assets/common-assets"]
|
[submodule "explore/src/assets/common-assets"]
|
||||||
path = explore/src/assets/common-assets
|
path = explore/src/assets/common-assets
|
||||||
url = gitea@code-repo.d4science.org:MaDgIK/openaire-assets.git
|
url = gitea@code-repo.d4science.org:MaDgIK/openaire-assets.git
|
||||||
|
[submodule "explore/src/assets/openaire-theme"]
|
||||||
|
path = explore/src/assets/openaire-theme
|
||||||
|
url = gitea@code-repo.d4science.org:MaDgIK/openaire-theme.git
|
||||||
|
|
|
@ -0,0 +1,198 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
*For each release, use the following sub-sections:*
|
||||||
|
|
||||||
|
- *Added (for new features)*
|
||||||
|
- *Changed (for changes in existing functionality)*
|
||||||
|
- *Deprecated (for soon-to-be removed features)*
|
||||||
|
- *Removed (for now removed features)*
|
||||||
|
- *Fixed (for any bug fixes)*
|
||||||
|
- *Security (in case of vulnerabilities)*
|
||||||
|
|
||||||
|
## [production-release-june-2024] - 2024/06/04
|
||||||
|
### Changed
|
||||||
|
* Filter out unidentified projects from the search page and related tabs in detailed pages
|
||||||
|
* Updated link functionality for funding: search either by selecting funder or directly for projects
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Search results: adjust message when >= 1000 relations in the metadata line
|
||||||
|
* Fixed message on "Related Data Sources" tab of Data source detailed page
|
||||||
|
* Query 100 top values when a value of the filter is selected (bug when selected not in top 7 values)
|
||||||
|
|
||||||
|
## [production-release-may-2024] - 2024/05/23
|
||||||
|
### Changed
|
||||||
|
* Restored in search pages: number of results & selected keyword
|
||||||
|
* Performance improvements: onPush Strategy for checking when there are content changes in search results
|
||||||
|
* Updated color of filter labels & set color of "x" on filter labels same as the text
|
||||||
|
* Updated cards in funders page
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Filters in claims (projects) always loading
|
||||||
|
* z-index issue in dropdown (ORCID) inside modal (authors)
|
||||||
|
* Close dropdown of ORCID author when clicking on the search button
|
||||||
|
* Replaced /projects search endpoint with /resources2?type=projects in project claims
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Link directly with funding (unidentified projects)
|
||||||
|
* Display organization persistent identifiers (search results & detailed page)
|
||||||
|
* Search & Advanced search organizations by pid
|
||||||
|
* Display full organization names in search organizations page
|
||||||
|
* Added level4 FoS in fos.json vocabulary
|
||||||
|
|
||||||
|
## [production-release-march-2024] - 2024/03/04
|
||||||
|
### Changed
|
||||||
|
* Performance improvements
|
||||||
|
* Search pages: Access Routes, impact-based indicators, usage counts: Open drops on click, instead of hover
|
||||||
|
* Linking: change Datacite api from /works to /dois
|
||||||
|
* Updated funding text in footer
|
||||||
|
* Removed tooltips from search results
|
||||||
|
* UI updates on search pages
|
||||||
|
* Paging only at the bottom under the search results
|
||||||
|
* Removed number of results
|
||||||
|
* Removed results per page option
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* z-index issue in dropdowns inside modals
|
||||||
|
* Change search tab from menu
|
||||||
|
* Requests in bulk DOIs upload in linking
|
||||||
|
* View all for search filters
|
||||||
|
* Research products detailed page: Provenance label in funded by
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Full-Text link in Research products
|
||||||
|
|
||||||
|
## [production-release-february-2024] - 2024/02/12
|
||||||
|
### Changed
|
||||||
|
* Remove "open access" as preselected filter
|
||||||
|
* Rounded numbers in search tabs
|
||||||
|
* Home page: Performance improvements on images loading
|
||||||
|
* Home page, Search page, Funders page: Performance improvements on services requests
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Filtering out in funding levels according to selected funder when querying 100 values
|
||||||
|
* Filters in claims & in organization landing > projects tab were always loading
|
||||||
|
* Research products landing page: Added providers in versions
|
||||||
|
* SEO fixes in landing pages
|
||||||
|
|
||||||
|
## [production-release-january-2024] - 2024/02/01
|
||||||
|
### Changed
|
||||||
|
* Updated FoS search filter - do not display code
|
||||||
|
* Removed "BETA" indication from FoS
|
||||||
|
* Access search filter: Display always all the predefined values
|
||||||
|
* Filters: remove number of values
|
||||||
|
* Filters: Get 7 value (display 6) and 100 on "view more" click
|
||||||
|
* My claims: remove urls for pending claims
|
||||||
|
* Improve queries for search organizations & data sources
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Search query with input full ORCID url or just ORCID id
|
||||||
|
* In search, added also in count query for data sources the datasource pid check
|
||||||
|
* Landing: min-height needed in metrics box
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Linking: responsive in mobile
|
||||||
|
|
||||||
|
## [production-release-november-2023-v2] - 2023/11/28
|
||||||
|
### Added
|
||||||
|
* Add sorting options with impact factors in search results page
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Data source landing: get collected full texts from new stats API
|
||||||
|
* Updated parsing of measures - in results: views/downloads per data source
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Updated query for funders number in Funders page
|
||||||
|
* Updated query for funders number is first page
|
||||||
|
* Advanced Search Results: funder field to return all funders
|
||||||
|
* Advanced Search Projects: funder field to return all funders
|
||||||
|
|
||||||
|
## [production-release-november-2023] - 2023/11/09
|
||||||
|
### Added
|
||||||
|
* Missing funders' logos locally in Explore assets
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Deposit search page: UI improvement in “Go to repository” button
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Reverted version of UIkit back to version 3.16.24 - previous version caused bug with dropdowns
|
||||||
|
|
||||||
|
## [production-release-october-2023] - 2023/10/18
|
||||||
|
### Added
|
||||||
|
* Search page: Add view more option on overflow (e.g authors, partners, subjects, projects)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Upgrade to Angular 16
|
||||||
|
* New Claims API
|
||||||
|
* New Funders Page
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Reverted version of UIkit to version 3.16.14 because of parallax
|
||||||
|
* A persistent identifier can resolve in more than one pid types
|
||||||
|
|
||||||
|
## [production-release-september-2023] - 2023/09/25
|
||||||
|
### FIXED
|
||||||
|
* Error on grant access in ORCID Search & Link Wizard
|
||||||
|
* Added missing id in linking from the project landing
|
||||||
|
* Added check in search data sources parsing
|
||||||
|
|
||||||
|
## [production-release-august-2023] - 2023/08/25
|
||||||
|
### Added
|
||||||
|
* Search mobile: Added actions
|
||||||
|
* Detailed pages - mobile: Added search-bar
|
||||||
|
* Mobile: new drops and dropdowns
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Linking: Redesign of results view
|
||||||
|
* Advanced search form: Add autocomplete input for eosc subject field
|
||||||
|
* Detailed pages - mobile: UI updates & improvements
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Advanced search and detailed page
|
||||||
|
* Added a necessary check in html of detailed pages
|
||||||
|
|
||||||
|
## [production-release-may-2023] - 2023/05/19
|
||||||
|
### Added
|
||||||
|
* Detailed research products page: Added suggest modals for Sustainable Development Goals and Fields of Science
|
||||||
|
* Get research products, projects & data sources usage counts from index
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Redesign of detailed pages and mobile version
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Fix path for fos/sdg vocabularies in advanced search
|
||||||
|
* Search page improvements
|
||||||
|
* UI updates & improvements in search results and detailed pages (minor)
|
||||||
|
|
||||||
|
## [production-release-january-2023] - 2023/01/18
|
||||||
|
### FIXED
|
||||||
|
* Contact us form: Email body was either empty or incomplete
|
||||||
|
* Contact us page: After sending an email, clear recaptcha
|
||||||
|
|
||||||
|
|
||||||
|
## [production-release-december-2022] - 2022/12/21
|
||||||
|
### Added
|
||||||
|
* Link to blog in Sustainable Development Goals page
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* SEO updates and mobile menu
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
* Linking: Changed Crossref requests for bulk uploaded DOIs
|
||||||
|
* Medium screens: not sticky navbar causing error
|
||||||
|
|
||||||
|
## [production-release-november-2022] - 2022/11/30
|
||||||
|
### Added
|
||||||
|
* EOSC subjects from eoscifguidelines field & Advanced field "EOSC Subject"
|
||||||
|
* New Contact us page
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
* Upgrade to Angular 14
|
||||||
|
* Refinement of filters
|
||||||
|
* Advanced search form: UI updates and smooth scrolling
|
||||||
|
* FoS and deposit pages updates
|
||||||
|
* Bip Finder: Updated parsing and labels for Bip Finder scores & updated link to BiP Finder
|
|
@ -1,6 +1,6 @@
|
||||||
# Explore
|
# Explore
|
||||||
|
|
||||||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.10 and has been updated to 11.2.14.
|
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.10 and has been updated to 16.1.7.
|
||||||
|
|
||||||
## Install packages
|
## Install packages
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
"skipTests": true
|
"skipTests": true
|
||||||
},
|
},
|
||||||
"@schematics/angular:module": {
|
"@schematics/angular:module": {
|
||||||
"skipTests": true
|
|
||||||
},
|
},
|
||||||
"@schematics/angular:pipe": {
|
"@schematics/angular:pipe": {
|
||||||
"skipTests": true
|
"skipTests": true
|
||||||
|
@ -35,7 +34,6 @@
|
||||||
"build": {
|
"build": {
|
||||||
"builder": "@angular-devkit/build-angular:browser",
|
"builder": "@angular-devkit/build-angular:browser",
|
||||||
"options": {
|
"options": {
|
||||||
"aot": true,
|
|
||||||
"outputPath": "dist/explore/browser",
|
"outputPath": "dist/explore/browser",
|
||||||
"index": "src/index.html",
|
"index": "src/index.html",
|
||||||
"main": "src/main.ts",
|
"main": "src/main.ts",
|
||||||
|
@ -53,23 +51,36 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"styles": [
|
"styles": [
|
||||||
"src/styles.css",
|
"src/styles.less",
|
||||||
"src/material.scss"
|
{"input": "src/assets/deposit.less", "inject": false },
|
||||||
|
{"input": "src/assets/funders.less", "inject": false },
|
||||||
|
"src/assets/common-assets/library-css/material.scss"
|
||||||
],
|
],
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"src/assets/common-assets/common/jquery.js",
|
"node_modules/uikit/dist/js/uikit.min.js",
|
||||||
"src/assets/common-assets/common/uikit.min.js",
|
"node_modules/uikit/dist/js/uikit-icons.min.js",
|
||||||
"src/assets/common-assets/common/uikit-icons.min.js",
|
|
||||||
"node_modules/jquery/dist/jquery.js"
|
"node_modules/jquery/dist/jquery.js"
|
||||||
]
|
],
|
||||||
|
"vendorChunk": true,
|
||||||
|
"extractLicenses": false,
|
||||||
|
"buildOptimizer": false,
|
||||||
|
"sourceMap": true,
|
||||||
|
"optimization": false,
|
||||||
|
"namedChunks": true
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"development": {
|
"development": {
|
||||||
"optimization": true,
|
"optimization": {
|
||||||
|
"scripts": true,
|
||||||
|
"styles": {
|
||||||
|
"minify": true,
|
||||||
|
"inlineCritical": false
|
||||||
|
},
|
||||||
|
"fonts": true
|
||||||
|
},
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"aot": true,
|
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true,
|
"buildOptimizer": true,
|
||||||
|
@ -92,11 +103,17 @@
|
||||||
"with": "src/environments/environment.test.ts"
|
"with": "src/environments/environment.test.ts"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"optimization": true,
|
"optimization": {
|
||||||
|
"scripts": true,
|
||||||
|
"styles": {
|
||||||
|
"minify": true,
|
||||||
|
"inlineCritical": false
|
||||||
|
},
|
||||||
|
"fonts": true
|
||||||
|
},
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"aot": true,
|
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true,
|
"buildOptimizer": true,
|
||||||
|
@ -138,11 +155,17 @@
|
||||||
"with": "src/environments/environment.beta.ts"
|
"with": "src/environments/environment.beta.ts"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"optimization": true,
|
"optimization": {
|
||||||
|
"scripts": true,
|
||||||
|
"styles": {
|
||||||
|
"minify": true,
|
||||||
|
"inlineCritical": false
|
||||||
|
},
|
||||||
|
"fonts": true
|
||||||
|
},
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"aot": true,
|
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true,
|
"buildOptimizer": true,
|
||||||
|
@ -184,11 +207,17 @@
|
||||||
"with": "src/environments/environment.prod.ts"
|
"with": "src/environments/environment.prod.ts"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"optimization": true,
|
"optimization": {
|
||||||
|
"scripts": true,
|
||||||
|
"styles": {
|
||||||
|
"minify": true,
|
||||||
|
"inlineCritical": false
|
||||||
|
},
|
||||||
|
"fonts": true
|
||||||
|
},
|
||||||
"outputHashing": "all",
|
"outputHashing": "all",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"namedChunks": false,
|
"namedChunks": false,
|
||||||
"aot": true,
|
|
||||||
"extractLicenses": true,
|
"extractLicenses": true,
|
||||||
"vendorChunk": false,
|
"vendorChunk": false,
|
||||||
"buildOptimizer": true,
|
"buildOptimizer": true,
|
||||||
|
@ -204,7 +233,8 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"defaultConfiguration": ""
|
||||||
},
|
},
|
||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
|
@ -239,30 +269,23 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": [
|
|
||||||
"src/tsconfig.app.json",
|
|
||||||
"src/tsconfig.spec.json"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"server": {
|
"server": {
|
||||||
"builder": "@angular-devkit/build-angular:server",
|
"builder": "@angular-devkit/build-angular:server",
|
||||||
"options": {
|
"options": {
|
||||||
"outputPath": "dist/explore/server",
|
"outputPath": "dist/explore/server",
|
||||||
"main": "server.ts",
|
"main": "server.ts",
|
||||||
"tsConfig": "src/tsconfig.server.json"
|
"tsConfig": "src/tsconfig.server.json",
|
||||||
|
"sourceMap": true,
|
||||||
|
"optimization": false,
|
||||||
|
"buildOptimizer": false
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"development": {
|
"development": {
|
||||||
"outputHashing": "media",
|
"outputHashing": "media",
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"optimization": true
|
"optimization": true,
|
||||||
|
"vendorChunk": true,
|
||||||
|
"buildOptimizer": true
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
"outputHashing": "media",
|
"outputHashing": "media",
|
||||||
|
@ -273,7 +296,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"optimization": true
|
"optimization": true,
|
||||||
|
"buildOptimizer": true
|
||||||
},
|
},
|
||||||
"beta": {
|
"beta": {
|
||||||
"outputHashing": "media",
|
"outputHashing": "media",
|
||||||
|
@ -284,7 +308,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"optimization": true
|
"optimization": true,
|
||||||
|
"buildOptimizer": true
|
||||||
},
|
},
|
||||||
"production": {
|
"production": {
|
||||||
"outputHashing": "media",
|
"outputHashing": "media",
|
||||||
|
@ -295,10 +320,12 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"sourceMap": false,
|
"sourceMap": false,
|
||||||
"optimization": true
|
"optimization": true,
|
||||||
}
|
"buildOptimizer": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"defaultConfiguration": ""
|
||||||
|
},
|
||||||
"serve-ssr": {
|
"serve-ssr": {
|
||||||
"builder": "@nguniversal/builders:ssr-dev-server",
|
"builder": "@nguniversal/builders:ssr-dev-server",
|
||||||
"options": {
|
"options": {
|
||||||
|
@ -343,18 +370,11 @@
|
||||||
"devServerTarget": "explore:serve:production"
|
"devServerTarget": "explore:serve:production"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"lint": {
|
|
||||||
"builder": "@angular-devkit/build-angular:tslint",
|
|
||||||
"options": {
|
|
||||||
"tsConfig": "e2e/tsconfig.e2e.json",
|
|
||||||
"exclude": [
|
|
||||||
"**/node_modules/**"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"defaultProject": "explore"
|
"cli": {
|
||||||
|
"analytics": false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"build-dev": "ng build --configuration=development",
|
"build-dev": "ng build --configuration=development",
|
||||||
"build-test": "ng build --configuration=test",
|
"build-test": "ng build --configuration=test",
|
||||||
"build-beta": "ng build --configuration=beta",
|
"build-beta": "ng build --configuration=beta",
|
||||||
"build-prod": "ng build --prod",
|
"build-prod": "ng build --configuration production",
|
||||||
"webpack-bundle-analyzer": "ng build --stats-json && webpack-bundle-analyzer dist/explore/browser/stats.json --host 0.0.0.0",
|
"webpack-bundle-analyzer": "ng build --stats-json && webpack-bundle-analyzer dist/explore/browser/stats.json --host 0.0.0.0",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"e2e": "ng e2e",
|
"e2e": "ng e2e",
|
||||||
|
@ -19,45 +19,46 @@
|
||||||
"build:ssr-beta": "npm run build-beta && ng run explore:server:beta",
|
"build:ssr-beta": "npm run build-beta && ng run explore:server:beta",
|
||||||
"build:ssr-prod": "npm run build-prod && ng run explore:server:production",
|
"build:ssr-prod": "npm run build-prod && ng run explore:server:production",
|
||||||
"prerender": "ng run explore:prerender",
|
"prerender": "ng run explore:prerender",
|
||||||
"after-build-clean": "rm -rf dist/explore/browser/assets/common-assets/.git/ src/app/openaireLibrary/.git node_modules src/assets/common-assets/.git/ .git .idea"
|
"after-build-clean": "rm -rf dist/explore/browser/assets/common-assets/.git/ src/app/openaireLibrary/.git node_modules .angular src/assets/common-assets/.git/ .git .idea"
|
||||||
},
|
},
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "~11.2.14",
|
"@angular/animations": "^16.1.7",
|
||||||
"@angular/cdk": "^11.2.13",
|
"@angular/cdk": "^16.1.6",
|
||||||
"@angular/common": "~11.2.14",
|
"@angular/common": "^16.1.7",
|
||||||
"@angular/compiler": "~11.2.14",
|
"@angular/compiler": "^16.1.7",
|
||||||
"@angular/core": "~11.2.14",
|
"@angular/core": "^16.1.7",
|
||||||
"@angular/forms": "~11.2.14",
|
"@angular/forms": "^16.1.7",
|
||||||
"@angular/localize": "^11.2.14",
|
"@angular/localize": "^16.1.7",
|
||||||
"@angular/material": "^11.2.13",
|
"@angular/material": "^16.1.6",
|
||||||
"@angular/platform-browser": "~11.2.14",
|
"@angular/platform-browser": "^16.1.7",
|
||||||
"@angular/platform-browser-dynamic": "~11.2.14",
|
"@angular/platform-browser-dynamic": "^16.1.7",
|
||||||
"@angular/platform-server": "~11.2.14",
|
"@angular/platform-server": "^16.1.7",
|
||||||
"@angular/router": "~11.2.14",
|
"@angular/router": "^16.1.7",
|
||||||
"@nguniversal/express-engine": "^11.2.1",
|
"@nguniversal/express-engine": "^16.1.1",
|
||||||
"clipboard": "^1.5.16",
|
"clipboard": "^1.5.16",
|
||||||
"core-js": "^2.5.4",
|
"core-js": "^2.5.4",
|
||||||
"express": "^4.15.2",
|
"express": "^4.15.2",
|
||||||
"jquery": "^3.4.1",
|
"jquery": "^3.4.1",
|
||||||
"ng-recaptcha": "^7.0.1",
|
"ng-recaptcha": "^12.0.2",
|
||||||
"prom-client": "^11.3.0",
|
"prom-client": "^11.3.0",
|
||||||
"rxjs": "^6.5.1",
|
"rxjs": "^6.5.1",
|
||||||
"ts-md5": "^1.2.0",
|
"ts-md5": "^1.2.0",
|
||||||
"tslib": "^2.0.0",
|
"tslib": "^2.0.0",
|
||||||
"zone.js": "~0.10.2"
|
"uikit": "3.16.24",
|
||||||
|
"zone.js": "~0.13.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@angular-devkit/build-angular": "~0.1102.13",
|
"@angular-devkit/build-angular": "^16.1.6",
|
||||||
"@angular/cli": "~11.2.13",
|
"@angular/cli": "^16.1.6",
|
||||||
"@angular/compiler-cli": "~11.2.14",
|
"@angular/compiler-cli": "^16.1.7",
|
||||||
"@angular/language-service": "~11.2.14",
|
"@angular/language-service": "^16.1.7",
|
||||||
"@nguniversal/builders": "^11.2.1",
|
"@nguniversal/builders": "^16.1.1",
|
||||||
"@types/express": "^4.17.0",
|
|
||||||
"@types/compression": "^1.7.0",
|
"@types/compression": "^1.7.0",
|
||||||
"@types/node": "^12.11.1",
|
"@types/express": "^4.17.0",
|
||||||
"@types/jasmine": "~3.6.0",
|
"@types/jasmine": "~3.6.0",
|
||||||
"@types/jasminewd2": "~2.0.3",
|
"@types/jasminewd2": "~2.0.3",
|
||||||
|
"@types/node": "^16.18.50",
|
||||||
"codelyzer": "^6.0.0",
|
"codelyzer": "^6.0.0",
|
||||||
"jasmine-core": "~3.8.0",
|
"jasmine-core": "~3.8.0",
|
||||||
"jasmine-spec-reporter": "~5.0.0",
|
"jasmine-spec-reporter": "~5.0.0",
|
||||||
|
@ -68,6 +69,6 @@
|
||||||
"karma-jasmine-html-reporter": "^1.6.0",
|
"karma-jasmine-html-reporter": "^1.6.0",
|
||||||
"protractor": "~7.0.0",
|
"protractor": "~7.0.0",
|
||||||
"ts-node": "~7.0.0",
|
"ts-node": "~7.0.0",
|
||||||
"typescript": "~4.0.7"
|
"typescript": "~4.9.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,8 @@ export const routes = [
|
||||||
'/participate/deposit-subject-result',
|
'/participate/deposit-subject-result',
|
||||||
'/participate/deposit-publications',
|
'/participate/deposit-publications',
|
||||||
'/participate/deposit-publications-result',
|
'/participate/deposit-publications-result',
|
||||||
|
'/participate/deposit/learn-how',
|
||||||
|
'/participate/deposit/search',
|
||||||
'/search/find/research-outcomes',
|
'/search/find/research-outcomes',
|
||||||
'/search/find',
|
'/search/find',
|
||||||
'/search/find/publications',
|
'/search/find/publications',
|
||||||
|
@ -40,4 +42,9 @@ export const routes = [
|
||||||
'/claims',
|
'/claims',
|
||||||
'/participate/claim',
|
'/participate/claim',
|
||||||
'/participate/direct-claim',
|
'/participate/direct-claim',
|
||||||
|
'/my-orcid-links',
|
||||||
|
'/sdgs',
|
||||||
|
'/fields-of-science',
|
||||||
|
'/funders',
|
||||||
|
'/contact-us',
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'zone.js/dist/zone-node';
|
import 'zone.js/node';
|
||||||
|
|
||||||
import { ngExpressEngine } from '@nguniversal/express-engine';
|
import { ngExpressEngine } from '@nguniversal/express-engine';
|
||||||
import * as express from 'express';
|
import * as express from 'express';
|
||||||
|
@ -39,6 +39,7 @@ export function app() {
|
||||||
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
|
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
|
||||||
server.engine('html', ngExpressEngine({
|
server.engine('html', ngExpressEngine({
|
||||||
bootstrap: AppServerModule,
|
bootstrap: AppServerModule,
|
||||||
|
inlineCriticalCss: false
|
||||||
}));
|
}));
|
||||||
|
|
||||||
server.set('view engine', 'html');
|
server.set('view engine', 'html');
|
||||||
|
@ -56,6 +57,29 @@ export function app() {
|
||||||
res.end(register.metrics());
|
res.end(register.metrics());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
server.get('/health-check', async (_req, res, _next) => {
|
||||||
|
var uptime = process.uptime();
|
||||||
|
const date = new Date(uptime*1000);
|
||||||
|
const days = date.getUTCDate() - 1,
|
||||||
|
hours = date.getUTCHours(),
|
||||||
|
minutes = date.getUTCMinutes(),
|
||||||
|
seconds = date.getUTCSeconds(),
|
||||||
|
milliseconds = date.getUTCMilliseconds();
|
||||||
|
|
||||||
|
|
||||||
|
const healthcheck = {
|
||||||
|
uptime: days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds, " + milliseconds + " milliseconds",
|
||||||
|
message: 'OK',
|
||||||
|
timestamp: new Date()
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
res.send(healthcheck);
|
||||||
|
} catch (error) {
|
||||||
|
healthcheck.message = error;
|
||||||
|
res.status(503).send();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// All regular routes use the Universal engine
|
// All regular routes use the Universal engine
|
||||||
server.get('*', (req, res) => {
|
server.get('*', (req, res) => {
|
||||||
if (routes.indexOf(req.path) !== -1) {
|
if (routes.indexOf(req.path) !== -1) {
|
||||||
|
|
|
@ -1,55 +1,50 @@
|
||||||
import {NgModule} from '@angular/core';
|
import {NgModule} from '@angular/core';
|
||||||
import {PreloadAllModules, RouterModule, Routes} from '@angular/router';
|
import {RouterModule, Routes} from '@angular/router';
|
||||||
import {OpenaireErrorPageComponent} from './error/errorPage.component';
|
|
||||||
import {PageURLResolverComponent} from "./openaireLibrary/utils/pageURLResolver.component";
|
import {PageURLResolverComponent} from "./openaireLibrary/utils/pageURLResolver.component";
|
||||||
|
import {SdgModule} from "./openaireLibrary/sdg/sdg.module";
|
||||||
|
import {ErrorPageComponent} from "./openaireLibrary/error/errorPage.component";
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
// Other Pages
|
// Other Pages
|
||||||
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule)},
|
{path: '', loadChildren: () => import('./home/home.module').then(m => m.HomeModule), data: {hasStickyHeaderOnMobile: true}},
|
||||||
//{ path: 'home', loadChildren: './home/home.module#HomeModule'},
|
|
||||||
{path: 'home', redirectTo: '', pathMatch: 'full'},
|
{path: 'home', redirectTo: '', pathMatch: 'full'},
|
||||||
{path: 'mail-preferences', loadChildren: () => import('./userEmailPreferences/mailPrefs.module').then(m => m.LibMailPrefsModule)},
|
{path: 'sdgs', loadChildren: () => import('./openaireLibrary/sdg/sdg.module').then(m => m.SdgModule)},
|
||||||
|
{path: 'fields-of-science', loadChildren: () => import('./openaireLibrary/fos/fos.module').then(m => m.FosModule), data: {extraOffset: 100}},
|
||||||
|
{path: 'funders', loadChildren: () => import('./funders/funders.module').then(m => m.FundersModule)},
|
||||||
|
{path: 'contact-us', loadChildren: () => import('./contact/contact.module').then(m => m.ContactModule), data: {hasQuickContact: false}},
|
||||||
// ORCID Pages
|
// ORCID Pages
|
||||||
{path: 'orcid', loadChildren: () => import('./orcid/orcid.module').then(m => m.LibOrcidModule)},
|
{path: 'orcid', loadChildren: () => import('./openaireLibrary/orcid/orcid.module').then(m => m.OrcidModule)},
|
||||||
{path: 'my-orcid-links', loadChildren: () => import('./orcid/my-orcid-links/myOrcidLinks.module').then(m => m.LibMyOrcidLinksModule)},
|
{path: 'my-orcid-links', loadChildren: () => import('./openaireLibrary/orcid/my-orcid-links/myOrcidLinks.module').then(m => m.MyOrcidLinksModule)},
|
||||||
// Landing Pages
|
// Landing Pages
|
||||||
{path: 'search/result', loadChildren: () => import('./landingPages/result/libResult.module').then(m => m.LibResultModule)},
|
{path: 'search/result', loadChildren: () => import('./openaireLibrary/landingPages/result/resultLanding.module').then(m => m.ResultLandingModule), data: {hasQuickContact: false, hasMenuSearchBar: true, type: 'result', community: 'openaire'}},
|
||||||
{path: 'search/publication', loadChildren: () => import('./landingPages/publication/libPublication.module').then(m => m.LibPublicationModule)},
|
{path: 'search/publication', loadChildren: () => import('./openaireLibrary/landingPages/result/resultLanding.module').then(m => m.ResultLandingModule), data: {hasQuickContact: false, hasMenuSearchBar: true, type: 'publication', community: 'openaire'}},
|
||||||
{path: 'search/dataset', loadChildren: () => import('./landingPages/dataset/libDataset.module').then(m => m.LibDatasetModule)},
|
{path: 'search/dataset', loadChildren: () => import('./openaireLibrary/landingPages/result/resultLanding.module').then(m => m.ResultLandingModule), data: {hasQuickContact: false, hasMenuSearchBar: true, type: 'dataset', community: 'openaire'}},
|
||||||
{path: 'search/software', loadChildren: () => import('./landingPages/software/libSoftware.module').then(m => m.LibSoftwareModule)},
|
{path: 'search/software', loadChildren: () => import('./openaireLibrary/landingPages/result/resultLanding.module').then(m => m.ResultLandingModule), data: {hasQuickContact: false, hasMenuSearchBar: true, type: 'software', community: 'openaire'}},
|
||||||
{path: 'search/other', loadChildren: () => import('./landingPages/orp/libOrp.module').then(m => m.LibOrpModule)},
|
{path: 'search/other', loadChildren: () => import('./openaireLibrary/landingPages/result/resultLanding.module').then(m => m.ResultLandingModule), data: {hasQuickContact: false, hasMenuSearchBar: true, type: 'orp', community: 'openaire'}},
|
||||||
{path: 'search/project', loadChildren: () => import('./landingPages/project/libProject.module').then(m => m.LibProjectModule)},
|
{path: 'search/project', loadChildren: () => import('./openaireLibrary/landingPages/project/project.module').then(m => m.ProjectModule), data: {hasQuickContact: false, hasMenuSearchBar: true, community: 'openaire'}},
|
||||||
{
|
{
|
||||||
path: 'search/dataprovider',
|
path: 'search/dataprovider',
|
||||||
loadChildren: () => import('././landingPages/dataProvider/libDataProvider.module').then(m => m.LibDataProviderModule)
|
loadChildren: () => import('./openaireLibrary/landingPages/dataProvider/dataProvider.module').then(m => m.DataProviderModule),
|
||||||
|
data: {hasQuickContact: false, hasMenuSearchBar: true, community: 'openaire'}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'search/organization',
|
path: 'search/organization',
|
||||||
loadChildren: () => import('./landingPages/organization/libOrganization.module').then(m => m.LibOrganizationModule)
|
loadChildren: () => import('./openaireLibrary/landingPages/organization/organization.module').then(m => m.OrganizationModule),
|
||||||
},
|
data: {hasQuickContact: false, hasMenuSearchBar: true, community: 'openaire'}
|
||||||
{
|
|
||||||
path: 'project-report',
|
|
||||||
loadChildren: () => import('./landingPages/htmlProjectReport/libHtmlProjectReport.module').then(m => m.LibHtmlProjectReportModule)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Search Pages
|
// Search Pages
|
||||||
{path: 'search/find', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule)},
|
|
||||||
{
|
{
|
||||||
path: 'search/find/research-outcomes',
|
path: 'search/find', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule)
|
||||||
loadChildren: () => import('./searchPages/simple/searchResearchResults.module').then(m => m.OpenaireSearchResearchResultsModule)
|
|
||||||
},
|
},
|
||||||
{path: 'search/find/publications', component: PageURLResolverComponent},
|
{path: 'search/find/publications', component: PageURLResolverComponent},
|
||||||
{path: 'search/find/datasets', component: PageURLResolverComponent},
|
{path: 'search/find/datasets', component: PageURLResolverComponent},
|
||||||
{path: 'search/find/software', component: PageURLResolverComponent},
|
{path: 'search/find/software', component: PageURLResolverComponent},
|
||||||
{path: 'search/find/other', component: PageURLResolverComponent},
|
{path: 'search/find/other', component: PageURLResolverComponent},
|
||||||
{path: 'search/find/projects', loadChildren: () => import('./searchPages/simple/searchProjects.module').then(m => m.LibSearchProjectsModule)},
|
|
||||||
{
|
{
|
||||||
path: 'search/find/dataproviders',
|
path: 'search/find/:entity', loadChildren: () => import('./searchPages/find/libSearch.module').then(m => m.LibMainSearchModule)
|
||||||
loadChildren: () => import('./searchPages/simple/searchDataProviders.module').then(m => m.LibSearchDataProvidersModule)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'search/find/organizations',
|
|
||||||
loadChildren: () => import('./searchPages/simple/searchOrganizations.module').then(m => m.LibSearchOrganizationsModule)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Advanced Search Pages
|
// Advanced Search Pages
|
||||||
{
|
{
|
||||||
path: 'search/advanced/research-outcomes',
|
path: 'search/advanced/research-outcomes',
|
||||||
|
@ -76,14 +71,14 @@ const routes: Routes = [
|
||||||
path: 'search/content-providers',
|
path: 'search/content-providers',
|
||||||
loadChildren: () => import('./searchPages/dataProviders/compatibleDataProviders.module').then(m => m.LibCompatibleDataProvidersModule)
|
loadChildren: () => import('./searchPages/dataProviders/compatibleDataProviders.module').then(m => m.LibCompatibleDataProvidersModule)
|
||||||
},
|
},
|
||||||
{path: 'search/content-providers-table', redirectTo: 'search/content-providers'},
|
{path: 'search/content-providers-table', redirectTo: 'search/content-providers', pathMatch: 'full'},
|
||||||
{
|
{
|
||||||
path: 'search/entity-registries',
|
path: 'search/entity-registries',
|
||||||
loadChildren: () => import('./searchPages/dataProviders/entityRegistries.module').then(m => m.LibEntityRegistriesModule)
|
loadChildren: () => import('./searchPages/dataProviders/entityRegistries.module').then(m => m.LibEntityRegistriesModule)
|
||||||
},
|
},
|
||||||
{path: 'search/entity-registries-table', redirectTo: 'search/entity-registries'},
|
{path: 'search/entity-registries-table', redirectTo: 'search/entity-registries', pathMatch: 'full'},
|
||||||
{path: 'search/journals', loadChildren: () => import('./searchPages/dataProviders/journals.module').then(m => m.LibJournalsModule)},
|
{path: 'search/journals', loadChildren: () => import('./searchPages/dataProviders/journals.module').then(m => m.LibJournalsModule)},
|
||||||
{path: 'search/journals-table', redirectTo: 'search/journals'},
|
{path: 'search/journals-table', redirectTo: 'search/journals', pathMatch: 'full'},
|
||||||
// Deposit Pages
|
// Deposit Pages
|
||||||
{path: 'participate/deposit-datasets', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
|
{path: 'participate/deposit-datasets', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
|
||||||
{path: 'participate/deposit-datasets-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
|
{path: 'participate/deposit-datasets-result', redirectTo: 'participate/deposit/learn-how', pathMatch: 'full'},
|
||||||
|
@ -105,10 +100,10 @@ const routes: Routes = [
|
||||||
},
|
},
|
||||||
// { path: 'claims-project-manager', loadChildren: './claims/claimsByToken/claimsByToken.module#LibClaimsByTokenModule'},
|
// { path: 'claims-project-manager', loadChildren: './claims/claimsByToken/claimsByToken.module#LibClaimsByTokenModule'},
|
||||||
// help pages - do not exist in Admin portal/api/db
|
// help pages - do not exist in Admin portal/api/db
|
||||||
{path: 'reload', loadChildren: () => import('./reload/libReload.module').then(m => m.LibReloadModule)},
|
{path: 'reload', loadChildren: () => import('./openaireLibrary/reload/reload.module').then(m => m.ReloadModule)},
|
||||||
{path: 'user-info', loadChildren: () => import('./login/libUser.module').then(m => m.LibUserModule)},
|
{path: 'user-info', loadChildren: () => import('./openaireLibrary/login/user.module').then(m => m.UserModule)},
|
||||||
{path: 'error', component: OpenaireErrorPageComponent},
|
{path: 'error', component: ErrorPageComponent},
|
||||||
{path: '**', pathMatch: 'full', component: OpenaireErrorPageComponent}
|
{path: '**', pathMatch: 'full', component: ErrorPageComponent}
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
import {Component} from '@angular/core';
|
import {AfterViewInit, ChangeDetectorRef, Component, ElementRef, ViewChild} from '@angular/core';
|
||||||
import {ActivatedRoute, NavigationStart, Router} from '@angular/router';
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
|
|
||||||
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
|
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
|
||||||
import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
|
import {MenuItem} from './openaireLibrary/sharedComponents/menu';
|
||||||
import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service';
|
import {EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service';
|
||||||
|
|
||||||
import {Session, User} from './openaireLibrary/login/utils/helper.class';
|
import {Session, User} from './openaireLibrary/login/utils/helper.class';
|
||||||
import {HelperFunctions} from "./openaireLibrary/utils/HelperFunctions.class";
|
|
||||||
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
|
import {UserManagementService} from "./openaireLibrary/services/user-management.service";
|
||||||
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
|
import {ConfigurationService} from "./openaireLibrary/utils/configuration/configuration.service";
|
||||||
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
import {Header} from "./openaireLibrary/sharedComponents/navigationBar.component";
|
||||||
|
@ -15,21 +12,32 @@ import {Meta} from "@angular/platform-browser";
|
||||||
import {properties} from "../environments/environment";
|
import {properties} from "../environments/environment";
|
||||||
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
|
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
|
||||||
import {SEOService} from "./openaireLibrary/sharedComponents/SEO/SEO.service";
|
import {SEOService} from "./openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||||
|
import {OpenaireEntities} from "./openaireLibrary/utils/properties/searchFields";
|
||||||
|
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
|
||||||
|
import {QuickContactComponent} from './openaireLibrary/sharedComponents/quick-contact/quick-contact.component';
|
||||||
|
import {EmailService} from './openaireLibrary/utils/email/email.service';
|
||||||
|
import {Composer} from "./openaireLibrary/utils/email/composer";
|
||||||
|
import {AlertModal} from './openaireLibrary/utils/modal/alert';
|
||||||
|
import {NotificationHandler} from "./openaireLibrary/utils/notification-handler";
|
||||||
|
import {QuickContactService} from './openaireLibrary/sharedComponents/quick-contact/quick-contact.service';
|
||||||
|
import {LayoutService} from './openaireLibrary/dashboard/sharedComponents/sidebar/layout.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
//changeDetection: ChangeDetectionStrategy.Default,
|
|
||||||
//encapsulation: ViewEncapsulation.Emulated,
|
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
template: `
|
template: `
|
||||||
<navbar *ngIf="properties && header" [header]="header" [portal]="properties.dashboard" [properties]=properties
|
<navbar *ngIf="properties && header" [header]="header" [portal]="properties.dashboard" [properties]=properties
|
||||||
[onlyTop]=false [user]="user"
|
[onlyTop]=false [user]="user"
|
||||||
[communityId]="properties.adminToolsCommunity" [userMenuItems]=userMenuItems [menuItems]=menuItems></navbar>
|
[communityId]="properties.adminToolsCommunity" [userMenuItems]=userMenuItems [menuItems]=menuItems></navbar>
|
||||||
|
<div *ngIf="loading">
|
||||||
|
<loading [full]="true"></loading>
|
||||||
|
</div>
|
||||||
<schema2jsonld *ngIf="properties" [URL]="properties.domain+properties.baseLink"
|
<schema2jsonld *ngIf="properties" [URL]="properties.domain+properties.baseLink"
|
||||||
[logoURL]="properties.domain+properties.baseLink+'/assets/common-assets/logo-small-explore.png'"
|
[logoURL]="properties.domain+properties.baseLink+'/assets/common-assets/logo-services/explore/main.svg'"
|
||||||
type="home"
|
type="home"
|
||||||
name="OpenAIRE | Find and Share research"
|
name="OpenAIRE | Find and Share research"
|
||||||
description="OpenAIRE Explore: Over 100M of research deduplicated, 170K research software, 11M research data. One of the largest open scholarly records collection worldwide."></schema2jsonld>
|
description="OpenAIRE Explore: Over 100M of research deduplicated, 170K research software, 11M research data. One of the largest open scholarly records collection worldwide."></schema2jsonld>
|
||||||
<div class="custom-main-content">
|
<div [class.uk-hidden]="loading" [ngClass]="rootClass">
|
||||||
|
<div id="modal-container"></div>
|
||||||
<main>
|
<main>
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
</main>
|
</main>
|
||||||
|
@ -44,39 +52,46 @@ import {SEOService} from "./openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||||
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="7 4 13 10 7 16"></polyline></svg>
|
ratio="1"><polyline fill="none" stroke="#000" stroke-width="1.03" points="7 4 13 10 7 16"></polyline></svg>
|
||||||
</span></a>
|
</span></a>
|
||||||
</cookie-law>
|
</cookie-law>
|
||||||
<bottom *ngIf="isClient && properties" [properties]="properties"></bottom>
|
<bottom id="bottom" #bottom *ngIf="isClient && properties" [properties]="properties"></bottom>
|
||||||
|
<quick-contact #quickContact *ngIf="bottomNotIntersecting && displayQuickContact && showQuickContact && contactForm" (sendEmitter)="send($event)"
|
||||||
|
[contactForm]="contactForm" [sending]="sending" [contact]="'Help'" class="uk-visible@m"></quick-contact>
|
||||||
|
<modal-alert #modal [overflowBody]="false"></modal-alert>
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
export class AppComponent {
|
export class AppComponent implements AfterViewInit {
|
||||||
|
loading: boolean = false;
|
||||||
|
rootClass: string;
|
||||||
isClient: boolean = false;
|
isClient: boolean = false;
|
||||||
userMenuItems: MenuItem[] = [];
|
userMenuItems: MenuItem[] = [];
|
||||||
menuItems: RootMenuItem [] = [];
|
menuItems: MenuItem [] = [];
|
||||||
feedbackmail: string;
|
feedbackmail: string;
|
||||||
properties: EnvProperties = properties;
|
properties: EnvProperties = properties;
|
||||||
user: User;
|
user: User;
|
||||||
header: Header;
|
header: Header;
|
||||||
logoPath: string = 'assets/common-assets/';
|
/* Contact */
|
||||||
|
public showQuickContact: boolean;
|
||||||
|
public bottomNotIntersecting: boolean;
|
||||||
|
public displayQuickContact: boolean; // intersecting with specific section in home page
|
||||||
|
public contactForm: FormGroup;
|
||||||
|
public sending: boolean = false;
|
||||||
|
@ViewChild('quickContact') quickContact: QuickContactComponent;
|
||||||
|
@ViewChild('modal') modal: AlertModal;
|
||||||
|
@ViewChild('bottom', {read: ElementRef}) bottom: ElementRef;
|
||||||
|
|
||||||
subscriptions = [];
|
subscriptions = [];
|
||||||
|
|
||||||
constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
|
constructor(private route: ActivatedRoute, private propertiesService: EnvironmentSpecificService,
|
||||||
private router: Router, private userManagementService: UserManagementService, private smoothScroll: SmoothScroll,
|
private router: Router, private userManagementService: UserManagementService, private smoothScroll: SmoothScroll,
|
||||||
private configurationService: ConfigurationService, private _meta: Meta, private seoService: SEOService,) {
|
private configurationService: ConfigurationService, private _meta: Meta, private seoService: SEOService,
|
||||||
this.userMenuItems.push(new MenuItem("", "My profile", "", "", false, [], [], {}));
|
private emailService: EmailService, private fb: FormBuilder, private quickContactService: QuickContactService,
|
||||||
this.userMenuItems.push(new MenuItem("", "My ORCID links", "", "/my-orcid-links", false, [], [""], {}));
|
private layoutService: LayoutService, private cdr: ChangeDetectorRef) {
|
||||||
this.userMenuItems.push(new MenuItem("", "My links", "", "/myclaims", false, [], ["/myclaims"], {}));
|
|
||||||
|
|
||||||
this.subscriptions.push(router.events.forEach((event) => {
|
|
||||||
if (event instanceof NavigationStart) {
|
|
||||||
HelperFunctions.scroll();
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
if (typeof document !== 'undefined') {
|
if (typeof document !== 'undefined') {
|
||||||
this.isClient = true;
|
this.isClient = true;
|
||||||
}
|
}
|
||||||
this.configurationService.initCommunityInformation(this.properties, this.properties.adminToolsCommunity);
|
this.configurationService.initPortal(this.properties, this.properties.adminToolsCommunity);
|
||||||
this.feedbackmail = this.properties.feedbackmail;
|
this.feedbackmail = this.properties.feedbackmail;
|
||||||
if (this.properties.environment == "production" || this.properties.environment == "development") {
|
if (this.properties.environment == "production" || this.properties.environment == "development") {
|
||||||
this.subscriptions.push(this.route.queryParams.subscribe(data => {
|
this.subscriptions.push(this.route.queryParams.subscribe(data => {
|
||||||
|
@ -92,11 +107,24 @@ export class AppComponent {
|
||||||
route: "/",
|
route: "/",
|
||||||
url: null,
|
url: null,
|
||||||
title: 'explore',
|
title: 'explore',
|
||||||
logoUrl: this.logoPath + 'logo-large-explore.png',
|
logoUrl: 'assets/common-assets/logo-services/explore/main.svg',
|
||||||
logoSmallUrl: this.logoPath + 'logo-small-explore.png',
|
logoSmallUrl: 'assets/common-assets/logo-services/explore/small.svg',
|
||||||
position: 'left',
|
position: 'left',
|
||||||
badge: true
|
badge: true
|
||||||
};
|
};
|
||||||
|
this.reset();
|
||||||
|
}));
|
||||||
|
this.subscriptions.push(this.layoutService.hasQuickContact.subscribe(hasQuickContact => {
|
||||||
|
if(this.showQuickContact !== hasQuickContact) {
|
||||||
|
this.showQuickContact = hasQuickContact;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
this.subscriptions.push(this.quickContactService.isDisplayed.subscribe(display => {
|
||||||
|
if(this.displayQuickContact !== display) {
|
||||||
|
this.displayQuickContact = display;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +132,8 @@ export class AppComponent {
|
||||||
this.subscriptions.forEach(subscription => {
|
this.subscriptions.forEach(subscription => {
|
||||||
if (subscription instanceof Subscriber) {
|
if (subscription instanceof Subscriber) {
|
||||||
subscription.unsubscribe();
|
subscription.unsubscribe();
|
||||||
|
} else if (typeof IntersectionObserver !== "undefined" && subscription instanceof IntersectionObserver) {
|
||||||
|
subscription.disconnect();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.configurationService.clearSubscriptions();
|
this.configurationService.clearSubscriptions();
|
||||||
|
@ -111,45 +141,94 @@ export class AppComponent {
|
||||||
this.smoothScroll.clearSubscriptions();
|
this.smoothScroll.clearSubscriptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit() {
|
||||||
|
if (typeof window !== "undefined") {
|
||||||
|
this.createObservers();
|
||||||
|
this.subscriptions.push(this.layoutService.rootClass.subscribe(rootClass => {
|
||||||
|
this.loading = true;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
if (rootClass && this.isClient) {
|
||||||
|
let link = <HTMLLinkElement>document.getElementById('theme');
|
||||||
|
let append = false;
|
||||||
|
if (!link) {
|
||||||
|
link = document.createElement('link');
|
||||||
|
link.rel = 'stylesheet';
|
||||||
|
link.id = 'theme';
|
||||||
|
append = true;
|
||||||
|
}
|
||||||
|
link.href = rootClass + '.css';
|
||||||
|
link.onerror = (error) => console.log(error);
|
||||||
|
if (append) {
|
||||||
|
document.head.appendChild(link);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.rootClass = rootClass;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
setTimeout(() => {
|
||||||
|
this.loading = false;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}, 500)
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
createObservers() {
|
||||||
|
let options = {
|
||||||
|
root: null,
|
||||||
|
rootMargin: '0px',
|
||||||
|
threshold: 0.1
|
||||||
|
};
|
||||||
|
let intersectionObserver = new IntersectionObserver(entries => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if(this.bottomNotIntersecting !== (!entry.isIntersecting)) {
|
||||||
|
this.bottomNotIntersecting = !entry.isIntersecting;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, options);
|
||||||
|
intersectionObserver.observe(this.bottom.nativeElement);
|
||||||
|
this.subscriptions.push(intersectionObserver);
|
||||||
|
}
|
||||||
|
|
||||||
buildMenu() {
|
buildMenu() {
|
||||||
let researchOutcomesMenu = new MenuItem("", "Research Outcomes", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {resultbestaccessright: '"' + encodeURIComponent("Open Access") + '"'});
|
this.userMenuItems = [];
|
||||||
|
this.userMenuItems.push(new MenuItem("", "My profile", "", "", false, [], [], {}));
|
||||||
|
if(this.properties.environment != "beta") {
|
||||||
|
this.userMenuItems.push(new MenuItem("", "My ORCID links", "", "/my-orcid-links", false, [], [""], {}));
|
||||||
|
}
|
||||||
|
this.userMenuItems.push(new MenuItem("", "My links", "", "/myclaims", false, [], ["/myclaims"], {}));
|
||||||
|
let researchOutcomesMenu = new MenuItem("", OpenaireEntities.RESULTS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {});
|
||||||
researchOutcomesMenu.items = [
|
researchOutcomesMenu.items = [
|
||||||
new MenuItem("", "Publications", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("publications") + '"'}),
|
new MenuItem("", OpenaireEntities.PUBLICATIONS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("publications") + '"'}),
|
||||||
new MenuItem("", "Research data", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("datasets") + '"'}),
|
new MenuItem("", OpenaireEntities.DATASETS, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("datasets") + '"'}),
|
||||||
new MenuItem("", "Software", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("software") + '"'}),
|
new MenuItem("", OpenaireEntities.SOFTWARE, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("software") + '"'}),
|
||||||
new MenuItem("", "Other research products", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("other") + '"'})];
|
new MenuItem("", OpenaireEntities.OTHER, "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {type: '"' + encodeURIComponent("other") + '"'})];
|
||||||
//TODO add check for research results route
|
//TODO add check for research results route
|
||||||
this.menuItems = [
|
this.menuItems = [
|
||||||
{
|
new MenuItem("search", "Search", "", "/search/find/research-outcomes", false, [], ["/search/find/research-outcomes"], {},
|
||||||
rootItem: new MenuItem("search", "Search", "", "/search/find", false, [], ["/search/find"], {qf: true}),
|
null, null, null, null, "_blank", "internal", false,
|
||||||
items: [
|
[
|
||||||
researchOutcomesMenu,
|
researchOutcomesMenu,
|
||||||
new MenuItem("", "Projects", "", "/search/find/projects/", false, ["project"], ["/search/find/projects"], {}),
|
new MenuItem("", OpenaireEntities.PROJECTS, "", "/search/find/projects/", false, ["project"], ["/search/find/projects"], {}),
|
||||||
new MenuItem("", "Content Providers", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {}),
|
new MenuItem("", OpenaireEntities.DATASOURCES, "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {}),
|
||||||
new MenuItem("", "Organizations", "", "/search/find/organizations/", false, ["organization"], ["/search/find/organizations"], {})
|
new MenuItem("", OpenaireEntities.ORGANIZATIONS, "", "/search/find/organizations/", false, ["organization"], ["/search/find/organizations"], {})
|
||||||
]
|
]
|
||||||
},
|
),
|
||||||
{
|
new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
|
||||||
rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
|
new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], {},
|
||||||
//rootItem: new MenuItem("deposit", "Deposit", "", "/participate/deposit/learn-how", false, [], ["/participate/deposit/learn-how"], {}),
|
null, null, null, null, "_blank", "internal", false,
|
||||||
items: []
|
[new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], {}),
|
||||||
//rootItem: new MenuItem("share", "Share", "", "", false, [], ["/participate/deposit-publications", "/participate/deposit-datasets"], {}),
|
|
||||||
//items: [new MenuItem("", "Publications", "", "/participate/deposit-publications", false, ["publication"], ["/participate/deposit-publications"], {}),
|
|
||||||
// new MenuItem("", "Research Data", "", "/participate/deposit-datasets", false, ["dataset"], ["/participate/deposit-datasets"], {})]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rootItem: new MenuItem("link", "Link", "", "/participate/claim", false, [], ["/participate/claim"], {}),
|
|
||||||
items: [new MenuItem("", "Start linking", "", "/participate/claim", false, [], ["/participate/claim"], {}),
|
|
||||||
new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})]
|
new MenuItem("", "Learn more", this.properties.claimsInformationLink, "", false, [], [], {})]
|
||||||
},
|
),
|
||||||
{
|
new MenuItem("datasources", OpenaireEntities.DATASOURCES, "", "", false, ["datasource"], [], {},
|
||||||
rootItem: new MenuItem("datasources", "Content Providers", "", "", false, ["datasource"], [], {}),
|
null, null, null, null, "_blank", "internal", false,
|
||||||
items: [new MenuItem("", "Data Policies", "https://beta.openaire.eu/oa-policies-mandates", "", false, ["datasource"], [""], {}),
|
[new MenuItem("", "Data Policies", "https://beta.openaire.eu/oa-policies-mandates", "", false, ["datasource"], [""], {}),
|
||||||
new MenuItem("", "Repositories", "", "/search/content-providers", false, ["datasource"], ["/search/content-providers"], {}),
|
new MenuItem("", "Repositories", "", "/search/content-providers", false, ["datasource"], ["/search/content-providers"], {}),
|
||||||
new MenuItem("", "Journals", "", "/search/journals", false, ["datasource"], ["/search/journals"], {}),
|
new MenuItem("", "Journals", "", "/search/journals", false, ["datasource"], ["/search/journals"], {}),
|
||||||
new MenuItem("", "Registries", "", "/search/entity-registries", false, ["datasource"], ["/search/entity-registries"], {}),
|
new MenuItem("", "Registries", "", "/search/entity-registries", false, ["datasource"], ["/search/entity-registries"], {}),
|
||||||
new MenuItem("", "Browse all", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {})]
|
new MenuItem("", "Browse all", "", "/search/find/dataproviders", false, ["datasource"], ["/search/find/dataproviders"], {})]
|
||||||
}
|
),
|
||||||
|
new MenuItem("funders", "Funders", "", "/funders", false, [], ["/funders"], {}),
|
||||||
];
|
];
|
||||||
if (Session.isPortalAdministrator(this.user)) {
|
if (Session.isPortalAdministrator(this.user)) {
|
||||||
this.userMenuItems.push(new MenuItem("", "Manage all links", "", "/claims", false, [], ["/claims"], {}));
|
this.userMenuItems.push(new MenuItem("", "Manage all links", "", "/claims", false, [], ["/claims"], {}));
|
||||||
|
@ -161,6 +240,66 @@ export class AppComponent {
|
||||||
if (this.user) {
|
if (this.user) {
|
||||||
this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
|
this.userMenuItems.push(new MenuItem("", "User information", "", "/user-info", false, [], [], {}));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public send(event) {
|
||||||
|
if (event.valid === true) {
|
||||||
|
this.sendMail(this.properties.admins);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sendMail(admins: string[]) {
|
||||||
|
this.sending = true;
|
||||||
|
this.subscriptions.push(this.emailService.contact(this.properties,
|
||||||
|
Composer.composeEmailForExplore(this.contactForm.value, admins),
|
||||||
|
this.contactForm.value.recaptcha).subscribe(
|
||||||
|
res => {
|
||||||
|
if (res) {
|
||||||
|
this.sending = false;
|
||||||
|
this.reset();
|
||||||
|
this.modalOpen();
|
||||||
|
} else {
|
||||||
|
this.handleError('Email <b>sent failed!</b> Please try again.');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
this.handleError('Email <b>sent failed!</b> Please try again.', error);
|
||||||
|
}
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public reset() {
|
||||||
|
if (this.quickContact) {
|
||||||
|
this.quickContact.close();
|
||||||
|
}
|
||||||
|
this.contactForm = this.fb.group({
|
||||||
|
name: this.fb.control('', Validators.required),
|
||||||
|
surname: this.fb.control('', Validators.required),
|
||||||
|
email: this.fb.control('', [Validators.required, Validators.email]),
|
||||||
|
affiliation: this.fb.control(''),
|
||||||
|
message: this.fb.control('', Validators.required),
|
||||||
|
recaptcha: this.fb.control('', Validators.required),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public modalOpen() {
|
||||||
|
this.modal.okButton = true;
|
||||||
|
this.modal.alertTitle = 'Your request has been successfully submitted';
|
||||||
|
this.modal.message = 'Our team will respond to your submission soon.';
|
||||||
|
this.modal.cancelButton = false;
|
||||||
|
this.modal.okButtonLeft = false;
|
||||||
|
this.modal.okButtonText = 'OK';
|
||||||
|
this.modal.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
handleError(message: string, error = null) {
|
||||||
|
if (error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
this.sending = false;
|
||||||
|
this.quickContact.close();
|
||||||
|
NotificationHandler.rise(message, 'danger');
|
||||||
|
this.contactForm.get('recaptcha').setValue('');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import {NgModule} from '@angular/core';
|
import {APP_ID, NgModule} from '@angular/core';
|
||||||
import {SharedModule} from './shared/shared.module';
|
import {SharedModule} from './openaireLibrary/shared/shared.module';
|
||||||
import {BrowserModule, BrowserTransferStateModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
|
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
|
||||||
import {CommonModule} from '@angular/common';
|
import {CommonModule} from '@angular/common';
|
||||||
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
|
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';
|
||||||
|
@ -9,7 +9,6 @@ import {NavigationBarModule} from './openaireLibrary/sharedComponents/navigation
|
||||||
import {CookieLawModule} from './openaireLibrary/sharedComponents/cookie-law/cookie-law.module';
|
import {CookieLawModule} from './openaireLibrary/sharedComponents/cookie-law/cookie-law.module';
|
||||||
import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module';
|
import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module';
|
||||||
import {ErrorModule} from './openaireLibrary/error/error.module';
|
import {ErrorModule} from './openaireLibrary/error/error.module';
|
||||||
import {OpenaireErrorPageComponent} from './error/errorPage.component';
|
|
||||||
import {AppRoutingModule} from './app-routing.module';
|
import {AppRoutingModule} from './app-routing.module';
|
||||||
import {HttpInterceptorService} from "./openaireLibrary/http-interceptor.service";
|
import {HttpInterceptorService} from "./openaireLibrary/http-interceptor.service";
|
||||||
import {PageURLResolverModule} from "./openaireLibrary/utils/pageURLResolver.module";
|
import {PageURLResolverModule} from "./openaireLibrary/utils/pageURLResolver.module";
|
||||||
|
@ -17,6 +16,9 @@ import {Schema2jsonldModule} from "./openaireLibrary/sharedComponents/schema2jso
|
||||||
import {CacheInterceptorService} from "./openaireLibrary/cache-interceptor.service";
|
import {CacheInterceptorService} from "./openaireLibrary/cache-interceptor.service";
|
||||||
import {DEFAULT_TIMEOUT, TimeoutInterceptor} from "./openaireLibrary/timeout-interceptor.service";
|
import {DEFAULT_TIMEOUT, TimeoutInterceptor} from "./openaireLibrary/timeout-interceptor.service";
|
||||||
import {ErrorInterceptorService} from "./openaireLibrary/error-interceptor.service";
|
import {ErrorInterceptorService} from "./openaireLibrary/error-interceptor.service";
|
||||||
|
import {QuickContactModule} from './openaireLibrary/sharedComponents/quick-contact/quick-contact.module';
|
||||||
|
import {AlertModalModule} from './openaireLibrary/utils/modal/alertModal.module';
|
||||||
|
import {LoadingModule} from "./openaireLibrary/utils/loading/loading.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -26,19 +28,22 @@ import {ErrorInterceptorService} from "./openaireLibrary/error-interceptor.servi
|
||||||
ErrorModule,
|
ErrorModule,
|
||||||
NavigationBarModule, BottomModule,
|
NavigationBarModule, BottomModule,
|
||||||
CookieLawModule,
|
CookieLawModule,
|
||||||
BrowserModule.withServerTransition({ appId: 'explore' }),
|
BrowserModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
BrowserTransferStateModule,
|
BrowserAnimationsModule, PageURLResolverModule,
|
||||||
BrowserAnimationsModule, PageURLResolverModule, Schema2jsonldModule
|
Schema2jsonldModule,
|
||||||
|
QuickContactModule,
|
||||||
|
AlertModalModule, LoadingModule
|
||||||
],
|
],
|
||||||
declarations: [AppComponent, OpenaireErrorPageComponent],
|
declarations: [AppComponent],
|
||||||
exports: [AppComponent],
|
exports: [AppComponent],
|
||||||
providers: [
|
providers: [
|
||||||
{
|
{provide: APP_ID, useValue: 'explore'},
|
||||||
provide: HTTP_INTERCEPTORS,
|
// {
|
||||||
useClass: CacheInterceptorService,
|
// provide: HTTP_INTERCEPTORS,
|
||||||
multi: true
|
// useClass: CacheInterceptorService,
|
||||||
},
|
// multi: true
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
provide: HTTP_INTERCEPTORS,
|
provide: HTTP_INTERCEPTORS,
|
||||||
useClass: HttpInterceptorService,
|
useClass: HttpInterceptorService,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
import {ServerModule, ServerTransferStateModule} from '@angular/platform-server';
|
import {ServerModule} from '@angular/platform-server';
|
||||||
|
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module';
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
|
@ -7,8 +7,7 @@ import { AppComponent } from './app.component';
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
AppModule,
|
AppModule,
|
||||||
ServerModule,
|
ServerModule
|
||||||
ServerTransferStateModule
|
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent],
|
bootstrap: [AppComponent],
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,13 +4,14 @@ import { OpenaireClaimsAdminComponent } from './claimsAdmin.component';
|
||||||
import{ ClaimsCuratorGuard} from '../../openaireLibrary/login/claimsCuratorGuard.guard';
|
import{ ClaimsCuratorGuard} from '../../openaireLibrary/login/claimsCuratorGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireClaimsAdminComponent, canActivate: [IsRouteEnabled, ClaimsCuratorGuard],
|
{ path: '', component: OpenaireClaimsAdminComponent, canActivate: [IsRouteEnabled, ClaimsCuratorGuard],
|
||||||
data: {redirect: '/error', community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
|
data: {redirect: properties.errorLink, community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class ClaimsAdminRoutingModule { }
|
export class ClaimsAdminRoutingModule { }
|
||||||
|
|
|
@ -4,19 +4,17 @@ import {properties} from "../../../environments/environment";
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'openaire-claims-admin',
|
selector: 'openaire-claims-admin',
|
||||||
template: `
|
template: `
|
||||||
<claims-admin *ngIf="claimsInfoURL && userInfoURL" [claimsInfoURL]=claimsInfoURL [userInfoURL]="userInfoURL">
|
<claims-admin *ngIf="claimsInfoURL" [claimsInfoURL]="claimsInfoURL">
|
||||||
</claims-admin>
|
</claims-admin>
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
export class OpenaireClaimsAdminComponent implements OnInit {
|
export class OpenaireClaimsAdminComponent implements OnInit {
|
||||||
claimsInfoURL: string;
|
claimsInfoURL: string;
|
||||||
userInfoURL: string;
|
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.claimsInfoURL = properties.claimsInformationLink;
|
this.claimsInfoURL = properties.claimsInformationLink;
|
||||||
this.userInfoURL = properties.userInfoUrl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { SharedModule } from '../../shared/shared.module';
|
import { SharedModule } from '../../openaireLibrary/shared/shared.module';
|
||||||
import { OpenaireClaimsAdminComponent } from './claimsAdmin.component';
|
import { OpenaireClaimsAdminComponent } from './claimsAdmin.component';
|
||||||
import { ClaimsAdminRoutingModule } from './claimsAdmin-routing.module';
|
import { ClaimsAdminRoutingModule } from './claimsAdmin-routing.module';
|
||||||
import{ClaimsAdminModule } from '../../openaireLibrary/claims/claimsAdmin/claimsAdmin.module';
|
import{ClaimsAdminModule } from '../../openaireLibrary/claims/claimsAdmin/claimsAdmin.module';
|
||||||
import{ ClaimsCuratorGuard} from '../../openaireLibrary/login/claimsCuratorGuard.guard';
|
import{ ClaimsCuratorGuard} from '../../openaireLibrary/login/claimsCuratorGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -15,7 +12,7 @@ import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
ClaimsAdminRoutingModule,
|
ClaimsAdminRoutingModule,
|
||||||
ClaimsAdminModule
|
ClaimsAdminModule
|
||||||
],
|
],
|
||||||
providers:[ClaimsCuratorGuard, PreviousRouteRecorder,IsRouteEnabled],
|
providers:[ClaimsCuratorGuard],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireClaimsAdminComponent
|
OpenaireClaimsAdminComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,13 +5,14 @@ import { OpenaireDirectLinkingComponent } from './directLinking.component';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireDirectLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
|
{ path: '', component: OpenaireDirectLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder]},
|
}, canDeactivate: [PreviousRouteRecorder]},
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,18 +1,15 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { SharedModule } from '../../shared/shared.module';
|
import { SharedModule } from '../../openaireLibrary/shared/shared.module';
|
||||||
import { OpenaireDirectLinkingComponent } from './directLinking.component';
|
import { OpenaireDirectLinkingComponent } from './directLinking.component';
|
||||||
import{ DirectLinkingModule} from '../../openaireLibrary/claims/directLinking/directLinking.module';
|
import{ DirectLinkingModule} from '../../openaireLibrary/claims/directLinking/directLinking.module';
|
||||||
import {DirectLinkingRoutingModule} from './directLinking-routing.module';
|
import {DirectLinkingRoutingModule} from './directLinking-routing.module';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
SharedModule, DirectLinkingModule, DirectLinkingRoutingModule
|
SharedModule, DirectLinkingModule, DirectLinkingRoutingModule
|
||||||
],
|
],
|
||||||
providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled],
|
providers:[],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireDirectLinkingComponent
|
OpenaireDirectLinkingComponent
|
||||||
], exports:[OpenaireDirectLinkingComponent]
|
], exports:[OpenaireDirectLinkingComponent]
|
||||||
|
|
|
@ -4,13 +4,14 @@ import { OpenaireLinkingComponent } from './linkingGeneric.component';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
|
{ path: '', component: OpenaireLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard], data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder]},
|
}, canDeactivate: [PreviousRouteRecorder]},
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,18 +1,15 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { SharedModule } from '../../shared/shared.module';
|
import { SharedModule } from '../../openaireLibrary/shared/shared.module';
|
||||||
import {OpenaireLinkingComponent} from './linkingGeneric.component';
|
import {OpenaireLinkingComponent} from './linkingGeneric.component';
|
||||||
import {LinkingRoutingModule} from './linking-routing.module';
|
import {LinkingRoutingModule} from './linking-routing.module';
|
||||||
import{ LinkingGenericModule} from '../../openaireLibrary/claims/linking/linkingGeneric.module';
|
import{ LinkingGenericModule} from '../../openaireLibrary/claims/linking/linkingGeneric.module';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
SharedModule, LinkingRoutingModule, LinkingGenericModule
|
SharedModule, LinkingRoutingModule, LinkingGenericModule
|
||||||
],
|
],
|
||||||
providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled],
|
providers:[],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireLinkingComponent
|
OpenaireLinkingComponent
|
||||||
], exports:[
|
], exports:[
|
||||||
|
|
|
@ -5,13 +5,14 @@ import {OpenaireMyClaimsComponent } from './myClaims.component';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireMyClaimsComponent, canActivate: [IsRouteEnabled, LoginGuard],
|
{ path: '', component: OpenaireMyClaimsComponent, canActivate: [IsRouteEnabled, LoginGuard],
|
||||||
data: {redirect: '/error', community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
|
data: {redirect: properties.errorLink, community : 'openaire'}, canDeactivate: [PreviousRouteRecorder]}])
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class MyClaimsRoutingModule { }
|
export class MyClaimsRoutingModule { }
|
||||||
|
|
|
@ -5,20 +5,18 @@ import {properties} from "../../../environments/environment";
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'openaire-my-claims',
|
selector: 'openaire-my-claims',
|
||||||
template: `
|
template: `
|
||||||
<my-claims *ngIf="userInfoURL && claimsInfoURL" [claimsInfoURL]=claimsInfoURL [userInfoURL]="userInfoURL">
|
<my-claims *ngIf="claimsInfoURL" [claimsInfoURL]="claimsInfoURL">
|
||||||
</my-claims>
|
</my-claims>
|
||||||
`
|
`
|
||||||
|
|
||||||
})
|
})
|
||||||
export class OpenaireMyClaimsComponent implements OnInit {
|
export class OpenaireMyClaimsComponent implements OnInit {
|
||||||
claimsInfoURL: string;
|
claimsInfoURL: string;
|
||||||
userInfoURL: string;
|
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.claimsInfoURL = properties.claimsInformationLink;
|
this.claimsInfoURL = properties.claimsInformationLink;
|
||||||
this.userInfoURL = properties.userInfoUrl;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,9 @@
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
import { SharedModule } from '../../shared/shared.module';
|
import { SharedModule } from '../../openaireLibrary/shared/shared.module';
|
||||||
import { OpenaireMyClaimsComponent } from './myClaims.component';
|
import { OpenaireMyClaimsComponent } from './myClaims.component';
|
||||||
import { MyClaimsRoutingModule } from './myClaims-routing.module';
|
import { MyClaimsRoutingModule } from './myClaims-routing.module';
|
||||||
import{ MyClaimsModule} from '../../openaireLibrary/claims/myClaims/myClaims.module';
|
import{ MyClaimsModule} from '../../openaireLibrary/claims/myClaims/myClaims.module';
|
||||||
import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -16,7 +12,7 @@ import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard';
|
||||||
MyClaimsModule
|
MyClaimsModule
|
||||||
|
|
||||||
],
|
],
|
||||||
providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled],
|
providers:[],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireMyClaimsComponent
|
OpenaireMyClaimsComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import {RouterModule} from '@angular/router';
|
||||||
|
import {ContactComponent} from './contact.component';
|
||||||
|
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
|
||||||
|
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
RouterModule.forChild([
|
||||||
|
{ path: '', component: ContactComponent, canActivate: [IsRouteEnabled], canDeactivate: [PreviousRouteRecorder]}
|
||||||
|
])
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class ContactRoutingModule { }
|
|
@ -0,0 +1,22 @@
|
||||||
|
<div>
|
||||||
|
<div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
|
||||||
|
<div class="uk-padding-small uk-padding-remove-horizontal">
|
||||||
|
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-section uk-padding-remove-top uk-container uk-container-large uk-flex uk-flex-center"
|
||||||
|
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
|
||||||
|
<div class="uk-padding-small uk-width-1-2@l uk-width-2-3@m uk-width-1-1">
|
||||||
|
<contact-us #contactUs [sending]="sending" [scrollspy]="true"
|
||||||
|
[contactForm]="contactForm" (sendEmitter)="send($event)">
|
||||||
|
<h1 page-title class="uk-margin-auto uk-text-center" uk-scrollspy-class>
|
||||||
|
Contact us to <br> learn more<span class="uk-text-primary">.</span>
|
||||||
|
</h1>
|
||||||
|
</contact-us>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<modal-alert #modal (alertOutput)="goToHome()">
|
||||||
|
Our team will respond to your submission soon.<br>
|
||||||
|
Press OK to redirect to OpenAIRE Explore home page.
|
||||||
|
</modal-alert>
|
|
@ -0,0 +1,158 @@
|
||||||
|
import {Component, OnInit, ViewChild} from '@angular/core';
|
||||||
|
import {ActivatedRoute, Router} from '@angular/router';
|
||||||
|
import {EmailService} from "../openaireLibrary/utils/email/email.service";
|
||||||
|
import {Email} from "../openaireLibrary/utils/email/email";
|
||||||
|
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
|
||||||
|
import {Composer} from "../openaireLibrary/utils/email/composer";
|
||||||
|
import {Meta, Title} from "@angular/platform-browser";
|
||||||
|
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
|
||||||
|
import {HelperFunctions} from "../openaireLibrary/utils/HelperFunctions.class";
|
||||||
|
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
||||||
|
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||||
|
import {FormBuilder, FormGroup, Validators} from "@angular/forms";
|
||||||
|
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||||
|
import {Subscriber} from "rxjs";
|
||||||
|
import {properties} from "../../environments/environment";
|
||||||
|
import {NotificationHandler} from "../openaireLibrary/utils/notification-handler";
|
||||||
|
import {ContactUsComponent} from "../openaireLibrary/contact-us/contact-us.component";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'contact',
|
||||||
|
templateUrl: './contact.component.html',
|
||||||
|
})
|
||||||
|
|
||||||
|
export class ContactComponent implements OnInit {
|
||||||
|
public url: string = null;
|
||||||
|
public pageTitle: string = "OpenAIRE - Explore | Contact Us";
|
||||||
|
public description: string = "Contact us to learn more about OpenAIRE Explore";
|
||||||
|
public sending = true;
|
||||||
|
public email: Email;
|
||||||
|
public properties: EnvProperties = properties;
|
||||||
|
public pageContents = null;
|
||||||
|
public divContents = null;
|
||||||
|
public breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'Contact us'}];
|
||||||
|
public contactForm: FormGroup;
|
||||||
|
@ViewChild('modal') modal;
|
||||||
|
private subscriptions = [];
|
||||||
|
@ViewChild('contactUs') contactUsComponent : ContactUsComponent;
|
||||||
|
|
||||||
|
ngOnDestroy() {
|
||||||
|
this.subscriptions.forEach(subscription => {
|
||||||
|
if (subscription instanceof Subscriber) {
|
||||||
|
subscription.unsubscribe();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(private route: ActivatedRoute,
|
||||||
|
private _router: Router,
|
||||||
|
private _emailService: EmailService,
|
||||||
|
private _meta: Meta,
|
||||||
|
private _title: Title,
|
||||||
|
private seoService: SEOService,
|
||||||
|
private _piwikService: PiwikService,
|
||||||
|
private fb: FormBuilder,
|
||||||
|
private helper: HelperService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this._title.setTitle('OpenAIRE - Explore | Contact Us');
|
||||||
|
|
||||||
|
this.properties = properties;
|
||||||
|
this.email = {body: '', subject: '', recipients: []};
|
||||||
|
this.subscriptions.push( this._piwikService.trackView(this.properties, this.pageTitle).subscribe());
|
||||||
|
this.url = this.properties.domain + this._router.url;
|
||||||
|
this.seoService.createLinkForCanonicalURL(this.url);
|
||||||
|
this.updateUrl(this.url);
|
||||||
|
this.updateTitle(this.pageTitle);
|
||||||
|
this.updateDescription(this.description);
|
||||||
|
this.reset();
|
||||||
|
// this.getPageContents();
|
||||||
|
this.sending = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private getPageContents() {
|
||||||
|
this.subscriptions.push(this.helper.getPageHelpContents(this.properties, 'explore', this._router.url).subscribe(contents => {
|
||||||
|
this.pageContents = contents;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public send(event) {
|
||||||
|
HelperFunctions.scroll();
|
||||||
|
if(event.valid === true) {
|
||||||
|
this.sendMail(this.properties.admins);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public reset() {
|
||||||
|
this.contactForm = this.fb.group( {
|
||||||
|
name: this.fb.control('', Validators.required),
|
||||||
|
surname: this.fb.control('', Validators.required),
|
||||||
|
email: this.fb.control('', [Validators.required, Validators.email]),
|
||||||
|
affiliation: this.fb.control(''),
|
||||||
|
message: this.fb.control('', Validators.required),
|
||||||
|
recaptcha: this.fb.control('', Validators.required),
|
||||||
|
});
|
||||||
|
if(this.contactUsComponent) {
|
||||||
|
this.contactUsComponent.resetRecaptcha();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sendMail(admins: any) {
|
||||||
|
this.sending = true;
|
||||||
|
this.subscriptions.push(this._emailService.contact(this.properties,
|
||||||
|
Composer.composeEmailForExplore(this.contactForm.value, admins),
|
||||||
|
this.contactForm.value.recaptcha).subscribe(
|
||||||
|
res => {
|
||||||
|
if (res) {
|
||||||
|
this.sending = false;
|
||||||
|
this.reset();
|
||||||
|
this.modalOpen();
|
||||||
|
} else {
|
||||||
|
this.handleError('Email <b>sent failed!</b> Please try again.');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
this.handleError('Email sent failed! Please try again.', error);
|
||||||
|
}
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public modalOpen() {
|
||||||
|
this.modal.okButton = true;
|
||||||
|
this.modal.alertTitle = 'Your request has been successfully submitted';
|
||||||
|
this.modal.alertMessage = false;
|
||||||
|
this.modal.cancelButton = false;
|
||||||
|
this.modal.okButtonLeft = false;
|
||||||
|
this.modal.okButtonText = 'OK';
|
||||||
|
this.modal.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
handleError(message: string, error = null) {
|
||||||
|
if(error) {
|
||||||
|
console.error(error);
|
||||||
|
}
|
||||||
|
NotificationHandler.rise(message, 'danger');
|
||||||
|
this.sending = false;
|
||||||
|
this.contactForm.get('recaptcha').setValue('');
|
||||||
|
}
|
||||||
|
|
||||||
|
public goToHome() {
|
||||||
|
this._router.navigate(['/']);
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateDescription(description: string) {
|
||||||
|
this._meta.updateTag({content: description}, "name='description'");
|
||||||
|
this._meta.updateTag({content: description}, "property='og:description'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateTitle(title: string) {
|
||||||
|
var _title = ((title.length > 50) ? title.substring(0, 50) : title);
|
||||||
|
this._title.setTitle(_title);
|
||||||
|
this._meta.updateTag({content: _title}, "property='og:title'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateUrl(url: string) {
|
||||||
|
this._meta.updateTag({content: url}, "property='og:url'");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
import {NgModule} from '@angular/core';
|
||||||
|
import {CommonModule} from '@angular/common';
|
||||||
|
import {RouterModule} from '@angular/router';
|
||||||
|
|
||||||
|
import {ContactComponent} from './contact.component';
|
||||||
|
import {ContactRoutingModule} from "./contact-routing.module";
|
||||||
|
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||||
|
import {HelperModule} from "../openaireLibrary/utils/helper/helper.module";
|
||||||
|
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
||||||
|
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
|
||||||
|
import {ContactUsModule} from "../openaireLibrary/contact-us/contact-us.module";
|
||||||
|
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||||
|
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
||||||
|
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
ContactRoutingModule, CommonModule, RouterModule,
|
||||||
|
AlertModalModule, HelperModule,
|
||||||
|
Schema2jsonldModule, SEOServiceModule, ContactUsModule, BreadcrumbsModule, LoadingModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
ContactComponent
|
||||||
|
],
|
||||||
|
providers: [],
|
||||||
|
exports: [
|
||||||
|
ContactComponent
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
export class ContactModule { }
|
|
@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router';
|
||||||
import { OpenaireDepositComponent } from './deposit.component';
|
import { OpenaireDepositComponent } from './deposit.component';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard'
|
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard'
|
||||||
|
import {properties} from "../../environments/environment";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireDepositComponent, canActivate: [IsRouteEnabled], data: {
|
{ path: '', component: OpenaireDepositComponent, canActivate: [IsRouteEnabled], data: {
|
||||||
redirect: '/error'
|
redirect: properties.errorLink
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import {Component} from '@angular/core';
|
import {Component, OnDestroy, OnInit} from '@angular/core';
|
||||||
|
import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'openaire-deposit',
|
selector: 'openaire-deposit',
|
||||||
|
@ -7,11 +8,17 @@ import {Component} from '@angular/core';
|
||||||
`
|
`
|
||||||
})
|
})
|
||||||
|
|
||||||
export class OpenaireDepositComponent {
|
export class OpenaireDepositComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
constructor() {
|
constructor(private layoutService: LayoutService) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnInit() {}
|
public ngOnInit() {
|
||||||
|
this.layoutService.setRootClass('deposit');
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy() {
|
||||||
|
this.layoutService.setRootClass(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,17 +2,12 @@ import { NgModule } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
|
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
|
|
||||||
import {OpenaireDepositComponent} from "./deposit.component";
|
import {OpenaireDepositComponent} from "./deposit.component";
|
||||||
import {DepositRoutingModule} from "./deposit-routing.module";
|
import {DepositRoutingModule} from "./deposit-routing.module";
|
||||||
import {DepositFirstPageModule} from "../openaireLibrary/deposit/depositFirstPage.module";
|
import {DepositFirstPageModule} from "../openaireLibrary/deposit/depositFirstPage.module";
|
||||||
|
|
||||||
import {ZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoCommunities/zenodo-communities.service";
|
import {ZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoCommunities/zenodo-communities.service";
|
||||||
import {CommunityService} from "../openaireLibrary/connect/community/community.service";
|
import {CommunityService} from "../openaireLibrary/connect/community/community.service";
|
||||||
import {SearchZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunities.service";
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -25,7 +20,8 @@ import {SearchZenodoCommunitiesService} from "../openaireLibrary/connect/zenodoC
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireDepositComponent,
|
OpenaireDepositComponent,
|
||||||
],
|
],
|
||||||
providers: [PreviousRouteRecorder, IsRouteEnabled,
|
providers: [
|
||||||
ZenodoCommunitiesService, CommunityService, SearchZenodoCommunitiesService]
|
ZenodoCommunitiesService, CommunityService
|
||||||
|
]
|
||||||
})
|
})
|
||||||
export class LibDepositModule { }
|
export class LibDepositModule { }
|
||||||
|
|
|
@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router';
|
||||||
import { OpenaireSearchDataprovidersToDepositComponent } from './searchDataprovidersToDeposit.component';
|
import { OpenaireSearchDataprovidersToDepositComponent } from './searchDataprovidersToDeposit.component';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard'
|
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard'
|
||||||
|
import {properties} from "../../environments/environment";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchDataprovidersToDepositComponent, canActivate: [IsRouteEnabled], data: {
|
{ path: '', component: OpenaireSearchDataprovidersToDepositComponent, canActivate: [IsRouteEnabled], data: {
|
||||||
redirect: '/error'
|
redirect: properties.errorLink
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -6,19 +6,15 @@ import { OpenaireSearchDataprovidersToDepositComponent } from './searchDataprovi
|
||||||
|
|
||||||
import {SearchDataprovidersToDepositRoutingModule} from './searchDataprovidersToDeposit-routing.module';
|
import {SearchDataprovidersToDepositRoutingModule} from './searchDataprovidersToDeposit-routing.module';
|
||||||
import {SearchDataprovidersToDepositModule} from '../openaireLibrary/deposit/searchDataprovidersToDeposit.module';
|
import {SearchDataprovidersToDepositModule} from '../openaireLibrary/deposit/searchDataprovidersToDeposit.module';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {IsRouteEnabled} from '../openaireLibrary/error/isRouteEnabled.guard';
|
|
||||||
import {ZenodoCommunitiesServiceModule} from '../openaireLibrary/connect/zenodoCommunities/zenodo-communitiesService.module';
|
import {ZenodoCommunitiesServiceModule} from '../openaireLibrary/connect/zenodoCommunities/zenodo-communitiesService.module';
|
||||||
import {SearchZenodoCommunitiesServiceModule} from '../openaireLibrary/connect/zenodoCommunities/searchZenodoCommunitiesService.module';
|
|
||||||
|
|
||||||
import {CommunityService} from '../openaireLibrary/connect/community/community.service';
|
import {CommunityService} from '../openaireLibrary/connect/community/community.service';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule, FormsModule,
|
CommonModule, FormsModule,
|
||||||
SearchDataprovidersToDepositModule,
|
|
||||||
SearchDataprovidersToDepositRoutingModule,
|
SearchDataprovidersToDepositRoutingModule,
|
||||||
ZenodoCommunitiesServiceModule, SearchZenodoCommunitiesServiceModule
|
SearchDataprovidersToDepositModule,
|
||||||
|
ZenodoCommunitiesServiceModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchDataprovidersToDepositComponent
|
OpenaireSearchDataprovidersToDepositComponent
|
||||||
|
@ -26,6 +22,6 @@ import {CommunityService} from '../openaireLibrary/connect/community/community.s
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchDataprovidersToDepositComponent,
|
OpenaireSearchDataprovidersToDepositComponent,
|
||||||
],
|
],
|
||||||
providers: [PreviousRouteRecorder, IsRouteEnabled, CommunityService]
|
providers: [CommunityService]
|
||||||
})
|
})
|
||||||
export class LibSearchDataprovidersToDepositModule { }
|
export class LibSearchDataprovidersToDepositModule { }
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { Component } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-error',
|
|
||||||
template: `
|
|
||||||
<error></error>
|
|
||||||
`
|
|
||||||
})
|
|
||||||
|
|
||||||
export class OpenaireErrorPageComponent {
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
import {NgModule} from '@angular/core';
|
||||||
|
import {RouterModule} from '@angular/router';
|
||||||
|
|
||||||
|
import {FundersComponent} from './funders.component';
|
||||||
|
import {IsRouteEnabled} from "../openaireLibrary/error/isRouteEnabled.guard";
|
||||||
|
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
RouterModule.forChild([
|
||||||
|
{
|
||||||
|
path: '', component: FundersComponent,
|
||||||
|
canActivate: [IsRouteEnabled],
|
||||||
|
canDeactivate: [PreviousRouteRecorder]
|
||||||
|
}
|
||||||
|
])
|
||||||
|
]
|
||||||
|
})
|
||||||
|
export class FundersRoutingModule { }
|
|
@ -0,0 +1,341 @@
|
||||||
|
<schema2jsonld *ngIf="url" [URL]="url" [name]="pageTitle" type="other" [description]="pageDescription"></schema2jsonld>
|
||||||
|
<div class="funders">
|
||||||
|
<div class="uk-background-muted">
|
||||||
|
<div class="uk-container uk-container-large uk-section uk-section-small uk-padding-remove-bottom">
|
||||||
|
<div class="uk-padding-small uk-padding-remove-horizontal">
|
||||||
|
<breadcrumbs [breadcrumbs]="breadcrumbs"></breadcrumbs>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-container uk-container-large uk-section" uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
|
||||||
|
<div class="uk-grid uk-grid-large uk-grid-stack uk-flex-middle uk-padding-small" uk-grid>
|
||||||
|
<div class="uk-width-1-2@m uk-width-1-1 uk-flex uk-flex-column uk-flex-center">
|
||||||
|
<span class="uk-align-left uk-margin-remove-bottom uk-flex uk-flex-middle">
|
||||||
|
<span class="custom-coins-dot"></span>
|
||||||
|
<span uk-scrollspy-class class="uk-text-large funders-title">Funders</span>
|
||||||
|
</span>
|
||||||
|
<div style="max-width: 600px;">
|
||||||
|
<h1 uk-scrollspy-class class="uk-h1 uk-margin-remove-top">
|
||||||
|
<span>Be an integral part of the open R&I ecosystem<span class="custom-handshake-dot"></span></span>
|
||||||
|
</h1>
|
||||||
|
<div uk-scrollspy-class>
|
||||||
|
Welcome to the Funders’ page on OpenAIRE Explore. Discover key details about each funder, their commitment to open access, and the impactful research they enable. Our aim? To foster transparency, inspire collaboration.
|
||||||
|
<!-- Welcome to the Funders' page on OpenAIRE Explore. This dedicated hub spotlights our ever-growing extensive network of funding partners:
|
||||||
|
{{formatNumber(projectsNumber)}} grants from
|
||||||
|
{{formatNumber(fundersNumber)}} funders currently linked to
|
||||||
|
{{formatNumber(researchProductsNumber)}} funded research outputs.
|
||||||
|
Discover key details about each funder, their commitment to open access, and the impactful research they enable.
|
||||||
|
Our aim? To foster transparency, inspire collaboration. -->
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-medium-top" uk-scrollspy-class>
|
||||||
|
<a class="uk-button uk-button-primary uk-text-uppercase" target="_blank" href="https://www.openaire.eu/funders-how-to-join-guide">
|
||||||
|
Join Us
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="showContentWithNumbers" class="uk-margin-medium-top" uk-scrollspy-class>
|
||||||
|
<div class="uk-grid uk-grid-divider" uk-grid>
|
||||||
|
<div class="uk-flex uk-flex-column uk-flex-center">
|
||||||
|
<span class="uk-h4 uk-text-primary uk-margin-xsmall-bottom">
|
||||||
|
{{formatNumber(projectsNumber)}}+
|
||||||
|
</span>
|
||||||
|
<span class="uk-text-uppercase">
|
||||||
|
grants
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex uk-flex-column uk-flex-center">
|
||||||
|
<span class="uk-h4 uk-text-primary uk-margin-xsmall-bottom">
|
||||||
|
{{formatNumber(fundersNumber)}}
|
||||||
|
</span>
|
||||||
|
<span class="uk-text-uppercase">
|
||||||
|
funders
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex uk-flex-column uk-flex-center">
|
||||||
|
<span class="uk-h4 uk-text-primary uk-margin-xsmall-bottom">
|
||||||
|
{{formatNumber(researchProductsNumber)}}+
|
||||||
|
</span>
|
||||||
|
<span class="uk-text-uppercase">
|
||||||
|
funded research outputs
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-1-2@m uk-width-1-1 uk-text-center" uk-scrollspy-class>
|
||||||
|
<img src="assets/explore-assets/funders/funders.png" alt="Funders advertisement image">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ng-container *ngIf="showLoading">
|
||||||
|
<div class="uk-container uk-container-large uk-section">
|
||||||
|
<loading></loading>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container *ngIf="!showLoading && funders?.length">
|
||||||
|
<div class="uk-container uk-container-large">
|
||||||
|
<div id="target" class="uk-section uk-padding-remove-top uk-margin-top" uk-height-match="target: .alias;">
|
||||||
|
<div>
|
||||||
|
<div *ngIf="funders" class="uk-padding-small uk-padding-remove-vertical uk-margin-medium-bottom uk-flex uk-flex-wrap uk-flex-middle uk-flex-between">
|
||||||
|
<div class="uk-flex uk-flex-wrap uk-flex-middle uk-flex-between uk-width-auto@m uk-width-1-1 uk-margin-top">
|
||||||
|
<div class="uk-width-small uk-margin-medium-right">
|
||||||
|
<div input
|
||||||
|
type="select" placeholder="Show" inputClass="border-bottom"
|
||||||
|
[options]="showOptions" [(value)]="show" (valueChange)="filtering()">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-small uk-margin-medium-right">
|
||||||
|
<div input
|
||||||
|
type="select" placeholder="Sort by" inputClass="border-bottom"
|
||||||
|
[options]="sortOptions" [(value)]="sortBy" (valueChange)="sortByChanged()">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-xsmall">
|
||||||
|
<div input
|
||||||
|
type="select" placeholder="Results per page" inputClass="border-bottom"
|
||||||
|
[options]="pageOptions" [(value)]="pageSize" (valueChange)="sizeChanged($event)">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex uk-flex-middle uk-width-auto@m uk-width-1-1 uk-margin-top">
|
||||||
|
<div search-input [searchControl]="keywordControl" searchInputClass="border-bottom" iconPosition="right"
|
||||||
|
placeholder="Search funder" [disabled]="showLoading" class="uk-width-auto@m uk-width-medium@s uk-width-1-1">
|
||||||
|
</div>
|
||||||
|
<div class="uk-visible@m uk-flex uk-flex-middle uk-margin-medium-left">
|
||||||
|
<a (click)="gridView = true"
|
||||||
|
class="uk-link-reset custom-view-button" [ngClass]="gridView ? 'active' : ''">
|
||||||
|
<icon [name]="'apps'" [ratio]="1.5" [type]="'round'" [flex]="true"></icon>
|
||||||
|
</a>
|
||||||
|
<a (click)="gridView = false"
|
||||||
|
class="uk-link-reset custom-view-button uk-margin-xsmall-left" [ngClass]="gridView ? '' : 'active'">
|
||||||
|
<icon [name]="'view_list'" [ratio]="1.5" [type]="'round'" [flex]="true"></icon>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="uk-margin-large-bottom" uk-height-match="target: .name;">
|
||||||
|
<div *ngIf="!displayedFunders || displayedFunders?.length == 0" class="uk-text-center uk-margin-large-top">
|
||||||
|
No funders available
|
||||||
|
</div>
|
||||||
|
<div class="uk-grid uk-grid-match uk-padding-small" [ngClass]="gridView ? 'uk-child-width-1-2@m uk-child-width-1-3@l' : 'uk-child-width-1-1'"
|
||||||
|
uk-grid uk-height-match="target: .data;">
|
||||||
|
<div *ngFor="let funder of displayedFunders.slice((currentPage-1)*pageSize, currentPage*pageSize)">
|
||||||
|
<!-- funder's card for GRID view -->
|
||||||
|
<ng-container *ngIf="gridView || isMobile; else elseBlock">
|
||||||
|
<div class="uk-card uk-card-default uk-card-hover funder-grid">
|
||||||
|
<!-- <div class="uk-position-top-left uk-padding-small">
|
||||||
|
<span class="uk-text-xsmall">flag</span>
|
||||||
|
</div> -->
|
||||||
|
<!-- <div class="uk-position-top-right uk-padding-small">
|
||||||
|
<div class="uk-flex uk-flex-middle uk-text-xsmall uk-text-meta">
|
||||||
|
<div class="uk-icon-bg uk-icon-bg-small">
|
||||||
|
<icon name="done" [flex]="true"></icon>
|
||||||
|
</div>
|
||||||
|
<span class="uk-margin-xsmall-left">Registered</span>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
<div class="uk-card-media-top uk-margin-medium-top uk-padding-large uk-padding-remove-vertical uk-flex uk-flex-center uk-flex-middle uk-height-xsmall">
|
||||||
|
<img *ngIf="funder.logoUrl; else elseBlock" [src]="funder | logoUrl" [alt]="funder.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply" loading="lazy">
|
||||||
|
<ng-template #elseBlock>
|
||||||
|
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply" loading="lazy">
|
||||||
|
</ng-template>
|
||||||
|
</div>
|
||||||
|
<div class="uk-padding-small uk-padding-remove-vertical uk-padding-remove-left uk-margin-medium-left">
|
||||||
|
<!-- alias -->
|
||||||
|
<div class="alias uk-text-uppercase uk-text-small uk-margin-top type">
|
||||||
|
<ng-container *ngIf="funder.alias">
|
||||||
|
{{funder.alias}}
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex">
|
||||||
|
<div class="uk-width-expand name uk-h6 uk-margin-remove multi-line-ellipsis lines-2">
|
||||||
|
<ng-container *ngIf="funder.name" >
|
||||||
|
<span>{{funder.name}}</span>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="uk-width-auto uk-margin-left">
|
||||||
|
<a href="" class="uk-flex-inline uk-flex-middle uk-text-uppercase uk-button uk-button-text custom-external">
|
||||||
|
<icon name="payment" [flex]="true"></icon>
|
||||||
|
</a>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="data uk-background-muted uk-flex uk-flex-middle uk-padding-small uk-padding-remove-left uk-margin-top">
|
||||||
|
<div class="uk-flex uk-flex-middle uk-width-1-1 uk-child-width-1-2 uk-margin-medium-left">
|
||||||
|
<div>
|
||||||
|
<!-- Projects -->
|
||||||
|
<div *ngIf="funder.projects" class="uk-flex uk-flex-column" [class.uk-margin-small-bottom]="funder.researchProducts">
|
||||||
|
<span class="uk-text-meta uk-text-xsmall">
|
||||||
|
Projects
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
class="uk-link-text uk-text-large uk-text-bold"
|
||||||
|
[routerLink]="properties.searchLinkToProjects" [queryParams]="{'funder': urlEncodeAndQuote(funder.id)}">
|
||||||
|
<span>
|
||||||
|
{{funder.projects | number}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<!-- Research products -->
|
||||||
|
<div *ngIf="funder.researchProducts" class="uk-flex uk-flex-column">
|
||||||
|
<span class="uk-text-meta uk-text-xsmall">
|
||||||
|
Research Products
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
class="uk-link-text uk-text-large uk-text-bold"
|
||||||
|
[routerLink]="properties.searchLinkToResults" [queryParams]="{'relfunder': urlEncodeAndQuote(funder.id)}">
|
||||||
|
<span>
|
||||||
|
{{funder.researchProducts | number}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex uk-flex-column uk-flex-middle uk-flex-center">
|
||||||
|
<div class="uk-progress-semicircle uk-progress-semicircle-small" [attr.percentage]="funder.openAccessPercentage" [style]="'--percentage:' + funder.openAccessPercentage"></div>
|
||||||
|
<div class="uk-flex uk-flex-middle uk-margin-top">
|
||||||
|
<icon class="open-access" [name]="'open_access'" [flex]="true" [ratio]="0.8"></icon>
|
||||||
|
<span class="uk-text-xsmall uk-margin-xsmall-left">Open Access</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="monitor-dashboard uk-padding-small uk-padding-remove-left uk-margin-medium-left">
|
||||||
|
<a *ngIf="funder.monitorDashboard && funder.monitorDashboardStatus != 'PRIVATE' && funder.monitorDashboardStatus != 'RESTRICTED'"
|
||||||
|
class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
|
||||||
|
target="_blank" [href]="'https://'+(properties.environment =='beta' || properties.environment =='development'?'beta.':'')+'monitor.openaire.eu/dashboard/'+funder.alias">
|
||||||
|
<span class="uk-flex uk-flex-middle">
|
||||||
|
<img src="assets/common-assets/common/Symbol.png" alt="OpenAIRE logo"
|
||||||
|
class="uk-margin-xsmall-right" style="width: 17px; height: 17px;" loading="lazy">
|
||||||
|
<span class="monitor-dashboard-link uk-text-uppercase">Monitor Dashboard</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<span *ngIf="funder.monitorDashboard && funder.monitorDashboardStatus == 'RESTRICTED'"
|
||||||
|
class="uk-flex uk-flex-middle">
|
||||||
|
<img src="assets/common-assets/common/Symbol.png" alt="OpenAIRE logo"
|
||||||
|
class="uk-margin-xsmall-right" style="width: 17px; height: 17px;" loading="lazy">
|
||||||
|
<span class="monitor-dashboard-link uk-text-uppercase uk-text-bold uk-text-small">Monitor Dashboard</span>
|
||||||
|
<icon class="uk-margin-xsmall-left" name="closed_access" [flex]="true" [ratio]="1"></icon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
<!-- funder's card for LIST view -->
|
||||||
|
<ng-template #elseBlock>
|
||||||
|
<div class="uk-card uk-card-default uk-card-hover uk-padding-small funder-list">
|
||||||
|
<div class="uk-grid uk-grid-divider uk-grid-small" uk-grid>
|
||||||
|
<div class="uk-width-expand uk-flex uk-flex-middle">
|
||||||
|
<div class="uk-width-1-6 uk-flex uk-flex-middle uk-flex-center">
|
||||||
|
<img *ngIf="funder.logoUrl; else elseBlock" [src]="funder | logoUrl" [alt]="funder.name + ' logo'" class="uk-height-max-xsmall uk-blend-multiply" loading="lazy">
|
||||||
|
<ng-template #elseBlock>
|
||||||
|
<img src="assets/common-assets/placeholder.png" alt="OpenAIRE placeholder logo" class="uk-height-max-xsmall uk-blend-multiply" loading="lazy">
|
||||||
|
</ng-template>
|
||||||
|
</div>
|
||||||
|
<div class="uk-width-expand uk-grid uk-grid-divider uk-child-width-1-2 uk-margin-left" uk-grid>
|
||||||
|
<div class="uk-flex uk-flex-column uk-flex-center">
|
||||||
|
<div class="uk-flex uk-flex-middle">
|
||||||
|
<!-- <span class="uk-text-xsmall uk-margin-small-right">flag</span> -->
|
||||||
|
<div class="uk-h6 uk-margin-remove uk-text-truncate">
|
||||||
|
<ng-container *ngIf="funder.name">
|
||||||
|
<span>{{funder.name}}</span>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container *ngIf="funder.alias" >
|
||||||
|
<span class="uk-text-uppercase">
|
||||||
|
({{funder.alias}})
|
||||||
|
</span>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="funder.monitorDashboard" class="uk-margin-top">
|
||||||
|
<a *ngIf="funder.monitorDashboard && funder.monitorDashboardStatus != 'PRIVATE' && funder.monitorDashboardStatus != 'RESTRICTED'"
|
||||||
|
class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
|
||||||
|
target="_blank" [href]="'https://'+(properties.environment =='beta' || properties.environment =='development'?'beta.':'')+'monitor.openaire.eu/dashboard/'+funder.alias">
|
||||||
|
<span class="uk-flex uk-flex-middle">
|
||||||
|
<img src="assets/common-assets/common/Symbol.png" alt="OpenAIRE logo"
|
||||||
|
class="uk-margin-xsmall-right" style="width: 17px; height: 17px;" loading="lazy">
|
||||||
|
<span class="monitor-dashboard-link uk-text-uppercase">Monitor Dashboard</span>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<span *ngIf="funder.monitorDashboard && funder.monitorDashboardStatus == 'RESTRICTED'"
|
||||||
|
class="uk-flex uk-flex-middle">
|
||||||
|
<img src="assets/common-assets/common/Symbol.png" alt="OpenAIRE logo"
|
||||||
|
class="uk-margin-xsmall-right" style="width: 17px; height: 17px;" loading="lazy">
|
||||||
|
<span class="monitor-dashboard-link uk-text-uppercase uk-text-bold uk-text-small">Monitor Dashboard</span>
|
||||||
|
<icon class="uk-margin-xsmall-left" name="closed_access" [flex]="true" [ratio]="1"></icon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-flex uk-flex-middle uk-child-width-1-3">
|
||||||
|
<div>
|
||||||
|
<div *ngIf="funder.projects" class="uk-flex uk-flex-column">
|
||||||
|
<span class="uk-text-meta uk-text-xsmall">
|
||||||
|
Projects
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
class="uk-link-text uk-text-large uk-text-bold"
|
||||||
|
[routerLink]="properties.searchLinkToProjects" [queryParams]="{'funder': urlEncodeAndQuote(funder.id)}">
|
||||||
|
<span>
|
||||||
|
{{funder.projects | number}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div *ngIf="funder.researchProducts" class="uk-flex uk-flex-column">
|
||||||
|
<span class="uk-text-meta uk-text-xsmall">
|
||||||
|
Research Products
|
||||||
|
</span>
|
||||||
|
<a
|
||||||
|
class="uk-link-text uk-text-large uk-text-bold"
|
||||||
|
[routerLink]="properties.searchLinkToResults" [queryParams]="{'relfunder': urlEncodeAndQuote(funder.id)}">
|
||||||
|
<span>
|
||||||
|
{{funder.researchProducts | number}}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div *ngIf="funder.openAccessResearchProducts && funder.researchProducts" class="uk-flex uk-flex-column">
|
||||||
|
<span class="uk-text-meta uk-text-xsmall">Open Access</span>
|
||||||
|
<div class="uk-flex uk-flex-middle">
|
||||||
|
<span class="uk-margin-xsmall-right open-access">
|
||||||
|
<icon name="open_access" [flex]="true" [ratio]="0.8"></icon>
|
||||||
|
</span>
|
||||||
|
<span class="uk-text-large uk-text-bold">{{funder.openAccessPercentage}}%</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="uk-width-auto uk-flex uk-flex-column uk-flex-center uk-margin-right">
|
||||||
|
<div class="uk-flex uk-flex-middle uk-text-xsmall uk-text-meta uk-margin-bottom">
|
||||||
|
<div class="uk-icon-bg uk-icon-bg-small">
|
||||||
|
<icon name="done" [flex]="true"></icon>
|
||||||
|
</div>
|
||||||
|
<span class="uk-margin-xsmall-left">Registered</span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="" class="uk-flex-inline uk-flex-middle uk-text-uppercase uk-button uk-button-text custom-external">
|
||||||
|
<icon name="payment" [flex]="true"></icon>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<paging-no-load *ngIf="displayedFunders.length > pageSize"
|
||||||
|
(pageChange)="updateCurrentPage($event)"
|
||||||
|
[currentPage]="currentPage" [size]="pageSize"
|
||||||
|
[totalResults]="displayedFunders.length">
|
||||||
|
</paging-no-load>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
|
@ -0,0 +1,48 @@
|
||||||
|
@import (reference) "~src/assets/openaire-theme/less/color.less";
|
||||||
|
|
||||||
|
|
||||||
|
.custom-coins-dot:after {
|
||||||
|
content: "";
|
||||||
|
background-image: url("~src/assets/explore-assets/funders/coins.svg");
|
||||||
|
display: inline-block;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
height: 35px;
|
||||||
|
width: 35px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-handshake-dot:after {
|
||||||
|
content: "";
|
||||||
|
background-image: url("~src/assets/explore-assets/funders/handshake.svg");
|
||||||
|
display: inline-block;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
height: 30px;
|
||||||
|
width: 30px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-view-button {
|
||||||
|
padding: 4px;
|
||||||
|
background: @light-color;
|
||||||
|
border: 1px solid @disable-color;
|
||||||
|
border-radius: 4px;
|
||||||
|
icon {
|
||||||
|
color: @disable-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: transparent linear-gradient(315deg, @primary-light-color 0%, @primary-dark-color 100%) 0% 0% no-repeat padding-box;
|
||||||
|
icon {
|
||||||
|
color: @light-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// .uk-card {
|
||||||
|
// &.funder-grid {
|
||||||
|
// border-bottom: 4px solid fade(@funder-color, 30%);
|
||||||
|
// }
|
||||||
|
// &.funder-list {
|
||||||
|
// border-left: 4px solid fade(@funder-color, 30%);
|
||||||
|
// }
|
||||||
|
// }
|
|
@ -0,0 +1,375 @@
|
||||||
|
import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||||
|
import {Router} from '@angular/router';
|
||||||
|
import {Subscriber, Subscription, zip} from "rxjs";
|
||||||
|
import {Meta, Title} from "@angular/platform-browser";
|
||||||
|
|
||||||
|
import {EnvProperties} from "../openaireLibrary/utils/properties/env-properties";
|
||||||
|
import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service";
|
||||||
|
import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service";
|
||||||
|
import {Breadcrumb} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.component";
|
||||||
|
import {properties} from "../../environments/environment";
|
||||||
|
import {RefineFieldResultsService} from '../openaireLibrary/services/refineFieldResults.service';
|
||||||
|
import {StakeholderService} from '../openaireLibrary/monitor/services/stakeholder.service';
|
||||||
|
import {Option} from '../openaireLibrary/sharedComponents/input/input.component';
|
||||||
|
import {StringUtils} from '../openaireLibrary/utils/string-utils.class';
|
||||||
|
import {HelperFunctions} from '../openaireLibrary/utils/HelperFunctions.class';
|
||||||
|
import {NumberUtils} from '../openaireLibrary/utils/number-utils.class';
|
||||||
|
import {LayoutService} from '../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service';
|
||||||
|
import {FormBuilder, FormControl} from '@angular/forms';
|
||||||
|
import {debounceTime, distinctUntilChanged} from 'rxjs/operators';
|
||||||
|
import {GroupedRequestsService} from "../openaireLibrary/services/groupedRequests.service";
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'funders',
|
||||||
|
templateUrl: './funders.component.html',
|
||||||
|
styleUrls: ['funders.component.less']
|
||||||
|
})
|
||||||
|
|
||||||
|
export class FundersComponent implements OnInit {
|
||||||
|
private subscriptions: Subscription[] = [];
|
||||||
|
url: string = null;
|
||||||
|
pageTitle: string = "OpenAIRE - Explore | Funders";
|
||||||
|
pageDescription: string = "Funders | Be an integral part of the open R&I ecosystem";
|
||||||
|
properties: EnvProperties = properties;
|
||||||
|
breadcrumbs: Breadcrumb[] = [{name: 'home', route: '/'}, {name: 'funders'}];
|
||||||
|
showLoading: boolean = true;
|
||||||
|
isMobile: boolean = false;
|
||||||
|
funders: any[] = [];
|
||||||
|
displayedFunders: any[] = [];
|
||||||
|
showOptions: Option[];
|
||||||
|
sortOptions: Option[];
|
||||||
|
pageOptions: number[] = [10, 20, 30, 40];
|
||||||
|
show: string = 'all';
|
||||||
|
sortBy: string = 'alphAsc';
|
||||||
|
gridView: boolean = true;
|
||||||
|
currentPage: number = 1;
|
||||||
|
pageSize: number = 10;
|
||||||
|
keywordControl: FormControl;
|
||||||
|
keyword: string;
|
||||||
|
fundersNumber: number = 0;
|
||||||
|
researchProductsNumber: number = 0;
|
||||||
|
projectsNumber: number = 0;
|
||||||
|
fundersMap = new Map<string, {
|
||||||
|
"id": string,
|
||||||
|
"name": string,
|
||||||
|
"alias": string,
|
||||||
|
"researchProducts": number,
|
||||||
|
"openAccessResearchProducts": number,
|
||||||
|
"openAccessPercentage": number,
|
||||||
|
"projects": number,
|
||||||
|
"monitorDashboard": string,
|
||||||
|
"monitorDashboardStatus": string,
|
||||||
|
"logoUrl": string
|
||||||
|
}>();
|
||||||
|
staticLogos: Set<string> = new Set<string>([
|
||||||
|
"arc_________::ARC||Australian Research Council (ARC)||ARC",
|
||||||
|
"asap________::ASAP||Aligning Science Across Parkinson's||ASAP",
|
||||||
|
"cihr________::CIHR||Canadian Institutes of Health Research||CIHR",
|
||||||
|
"euenvagency_::EEA||European Environment Agency||EEA",
|
||||||
|
"inca________::INCA||Institut National du Cancer||INCa",
|
||||||
|
"nhmrc_______::NHMRC||National Health and Medical Research Council (NHMRC)||NHMRC",
|
||||||
|
"nih_________::NIH||National Institutes of Health||NIH",
|
||||||
|
"nserc_______::NSERC||Natural Sciences and Engineering Research Council of Canada||NSERC",
|
||||||
|
"nsf_________::NSF||National Science Foundation||NSF",
|
||||||
|
"sshrc_______::SSHRC||Social Sciences and Humanities Research Council||SSHRC",
|
||||||
|
"taraexp_____::tara||Tara Expeditions Foundation||TARA",
|
||||||
|
"ukri________::UKRI||UK Research and Innovation||UKRI",
|
||||||
|
"wt__________::WT||Wellcome Trust||WT"
|
||||||
|
]);
|
||||||
|
|
||||||
|
constructor(private router: Router,
|
||||||
|
private meta: Meta,
|
||||||
|
private title: Title,
|
||||||
|
private seoService: SEOService,
|
||||||
|
private piwikService: PiwikService,
|
||||||
|
private refineFieldResultsService: RefineFieldResultsService,
|
||||||
|
private stakeholderService: StakeholderService,
|
||||||
|
private layoutService: LayoutService,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private fb: FormBuilder,
|
||||||
|
private groupedRequestsService: GroupedRequestsService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.layoutService.setRootClass('funders');
|
||||||
|
this.title.setTitle('OpenAIRE - Explore | Funders');
|
||||||
|
this.properties = properties;
|
||||||
|
this.subscriptions.push( this.piwikService.trackView(this.properties, this.pageTitle).subscribe());
|
||||||
|
this.url = this.properties.domain + this.router.url;
|
||||||
|
this.seoService.createLinkForCanonicalURL(this.url);
|
||||||
|
this.updateUrl(this.url);
|
||||||
|
this.updateTitle(this.pageTitle);
|
||||||
|
this.updateDescription(this.pageDescription);
|
||||||
|
this.subscriptions.push(this.layoutService.isMobile.subscribe(isMobile => {
|
||||||
|
this.isMobile = isMobile;
|
||||||
|
this.cdr.detectChanges();
|
||||||
|
}));
|
||||||
|
this.showOptions = [
|
||||||
|
{value: 'all', label: 'All funders'},
|
||||||
|
{value: 'dashboard', label: 'Funders with dashboard'}
|
||||||
|
];
|
||||||
|
this.sortOptions = [
|
||||||
|
{value: 'alphAsc', label: 'Alphabetically Asc. (A-Z)'},
|
||||||
|
{value: 'alphDsc', label: 'Alphabetically Dsc. (Z-A)'},
|
||||||
|
{value: 'oaDsc', label: '"Open Access %" Dsc.'}
|
||||||
|
];
|
||||||
|
this.getFunders();
|
||||||
|
this.keywordControl = this.fb.control('');
|
||||||
|
this.subscriptions.push(this.keywordControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(value => {
|
||||||
|
this.keyword = value;
|
||||||
|
this.filtering();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy() {
|
||||||
|
this.subscriptions.forEach(subscription => {
|
||||||
|
if (subscription instanceof Subscriber) {
|
||||||
|
subscription.unsubscribe();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.layoutService.setRootClass(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateDescription(description: string) {
|
||||||
|
this.meta.updateTag({content: description}, "name='description'");
|
||||||
|
this.meta.updateTag({content: description}, "property='og:description'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateTitle(title: string) {
|
||||||
|
var title = ((title.length > 50) ? title.substring(0, 50) : title);
|
||||||
|
this.title.setTitle(title);
|
||||||
|
this.meta.updateTag({content: title}, "property='og:title'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateUrl(url: string) {
|
||||||
|
this.meta.updateTag({content: url}, "property='og:url'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private getFunders() {
|
||||||
|
this.subscriptions.push(this.groupedRequestsService.funders().subscribe(data => {
|
||||||
|
let funders = data["funders"];
|
||||||
|
funders.forEach(queriedFunder => {
|
||||||
|
let id = queriedFunder.id;
|
||||||
|
let funder = {
|
||||||
|
"id": id,
|
||||||
|
"name": this.removePartAfterCharacters(queriedFunder.name, "||"),
|
||||||
|
"alias": '',
|
||||||
|
"researchProducts": +queriedFunder.results,
|
||||||
|
"openAccessResearchProducts": +queriedFunder.openResults,
|
||||||
|
"openAccessPercentage": 0,
|
||||||
|
"projects": +queriedFunder.projects,
|
||||||
|
"monitorDashboard": '',
|
||||||
|
"monitorDashboardStatus": '',
|
||||||
|
"logoUrl": ''
|
||||||
|
};
|
||||||
|
|
||||||
|
if((!funder.researchProducts || funder.researchProducts == 0) && (!funder.projects || funder.projects == 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(queriedFunder.stakeholder) {
|
||||||
|
let stakeholder = queriedFunder.stakeholder;
|
||||||
|
funder.alias = stakeholder.alias;
|
||||||
|
funder.monitorDashboard = stakeholder.alias;
|
||||||
|
funder.monitorDashboardStatus = stakeholder.visibility;
|
||||||
|
funder.logoUrl = (stakeholder.isUpload ? properties.utilsService + "/download/" : "")+ (stakeholder.logoUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(funder.openAccessResearchProducts && funder.researchProducts) {
|
||||||
|
funder.openAccessPercentage = Math.round((funder.openAccessResearchProducts / funder.researchProducts) * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!funder.logoUrl && this.staticLogos.has(funder.id)) {
|
||||||
|
let split = funder.id.split("||");
|
||||||
|
let shortname = (split && split.length==3) ? funder.id.split("||")[2] : funder.id;
|
||||||
|
funder.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png";
|
||||||
|
}
|
||||||
|
|
||||||
|
this.fundersMap.set(queriedFunder.id, funder);
|
||||||
|
});
|
||||||
|
// convert funders map into an array
|
||||||
|
this.funders = Array.from(this.fundersMap.values());
|
||||||
|
// calculate total numbers for intro content
|
||||||
|
this.fundersNumber = data.count;
|
||||||
|
this.researchProductsNumber = data.results;
|
||||||
|
this.projectsNumber = data.projects;
|
||||||
|
// sort funders
|
||||||
|
this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||||
|
// initialize displayedFunders
|
||||||
|
this.displayedFunders = this.funders;
|
||||||
|
this.showLoading = false;
|
||||||
|
}))
|
||||||
|
|
||||||
|
// let refineParams = '&fq=resultbestaccessright%20exact%20%22Open%20Access%22';
|
||||||
|
// this.subscriptions.push(
|
||||||
|
// zip(
|
||||||
|
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties),
|
||||||
|
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('relfunder', 'result', this.properties, refineParams),
|
||||||
|
// this.refineFieldResultsService.getAllRefineFieldResultsByFieldName('funder', 'project', this.properties),
|
||||||
|
// this.stakeholderService.getStakeholders(this.properties.monitorServiceAPIURL, 'funder')
|
||||||
|
// ).subscribe((data: any[]) => {
|
||||||
|
// // storing all needed data to a map
|
||||||
|
// // 1st call
|
||||||
|
// let queriedFunders1 = data[0][1][0].values;
|
||||||
|
// queriedFunders1.forEach(queriedFunder => {
|
||||||
|
// this.fundersMap.set(queriedFunder.id, {
|
||||||
|
// "id": queriedFunder.id,
|
||||||
|
// "name": queriedFunder.name,
|
||||||
|
// "alias": '',
|
||||||
|
// "researchProducts": +queriedFunder.number,
|
||||||
|
// "openAccessResearchProducts": 0,
|
||||||
|
// "openAccessPercentage": 0,
|
||||||
|
// "projects": 0,
|
||||||
|
// "monitorDashboard": '',
|
||||||
|
// "monitorDashboardStatus": '',
|
||||||
|
// "logoUrl": ''
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // 2nd call
|
||||||
|
// let queriedFunders2 = data[1][1][0].values;
|
||||||
|
// queriedFunders2.forEach(queriedFunder => {
|
||||||
|
// if(this.fundersMap.has(queriedFunder.id)) {
|
||||||
|
// this.fundersMap.get(queriedFunder.id).openAccessResearchProducts = +queriedFunder.number;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // 3rd call
|
||||||
|
// let queriedFunders3 = data[2][1][0].values;
|
||||||
|
// queriedFunders3.forEach(queriedFunder => {
|
||||||
|
// if(+queriedFunder.number > 1) {
|
||||||
|
// if (this.fundersMap.has(queriedFunder.id)) {
|
||||||
|
// this.fundersMap.get(queriedFunder.id).projects = +queriedFunder.number;
|
||||||
|
// } else {
|
||||||
|
// this.fundersMap.set(queriedFunder.id, {
|
||||||
|
// "id": queriedFunder.id,
|
||||||
|
// "name": queriedFunder.name,
|
||||||
|
// "alias": '',
|
||||||
|
// "researchProducts": 0,
|
||||||
|
// "openAccessResearchProducts": 0,
|
||||||
|
// "openAccessPercentage": 0,
|
||||||
|
// "projects": +queriedFunder.number,
|
||||||
|
// "monitorDashboard": '',
|
||||||
|
// "monitorDashboardStatus": '',
|
||||||
|
// "logoUrl": ''
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // 4th call
|
||||||
|
// let queriedFunders4 = data[3];
|
||||||
|
// queriedFunders4.forEach(queriedFunder => {
|
||||||
|
// let id = queriedFunder.index_id + '||' + queriedFunder.index_name + '||' + queriedFunder.index_shortName;
|
||||||
|
// if(this.fundersMap.has(id) && (
|
||||||
|
// !this.fundersMap.get(id).monitorDashboardStatus
|
||||||
|
// ||
|
||||||
|
// (this.fundersMap.get(id).monitorDashboardStatus == "RESTRICTED" && queriedFunder.visibility == "PUBLIC")
|
||||||
|
// ||
|
||||||
|
// (this.fundersMap.get(id).monitorDashboardStatus == "PRIVATE" && (queriedFunder.visibility == "RESTRICTED" || queriedFunder.visibility == "PUBLIC")))) {
|
||||||
|
// this.fundersMap.get(id).alias = queriedFunder.alias;
|
||||||
|
// this.fundersMap.get(id).monitorDashboard = queriedFunder.alias;
|
||||||
|
// this.fundersMap.get(id).monitorDashboardStatus = queriedFunder.visibility;
|
||||||
|
// this.fundersMap.get(id).logoUrl = (queriedFunder.isUpload ? properties.utilsService + "/download/" : "")+ (queriedFunder.logoUrl);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// this.fundersMap.forEach((value) => {
|
||||||
|
// if(value.openAccessResearchProducts > 0) {
|
||||||
|
// value.openAccessPercentage = Math.round((value.openAccessResearchProducts / value.researchProducts) * 100);
|
||||||
|
// }
|
||||||
|
// if(!value.logoUrl && this.staticLogos.has(value.id)) {
|
||||||
|
// let split = value.id.split("||");
|
||||||
|
// let shortname = (split && split.length==3) ? value.id.split("||")[2] : value.id;
|
||||||
|
// value.logoUrl = "assets/explore-assets/funders/logos/"+shortname+".png";
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// // convert funders map into an array
|
||||||
|
// this.funders = Array.from(this.fundersMap.values());
|
||||||
|
// // calculate total numbers for intro content
|
||||||
|
// this.calculateNumbers();
|
||||||
|
// // sort funders
|
||||||
|
// this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||||
|
// // initialize displayedFunders
|
||||||
|
// this.displayedFunders = this.funders;
|
||||||
|
// console.log(this.funders);
|
||||||
|
// this.showLoading = false;
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
}
|
||||||
|
|
||||||
|
private calculateSum(array, property) {
|
||||||
|
let sum = 0;
|
||||||
|
array.forEach(element => {
|
||||||
|
sum += element[property];
|
||||||
|
});
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
private calculateNumbers() {
|
||||||
|
this.fundersNumber = this.funders.length;
|
||||||
|
this.researchProductsNumber = this.calculateSum(this.funders, 'researchProducts');
|
||||||
|
this.projectsNumber = this.calculateSum(this.funders, 'projects');
|
||||||
|
}
|
||||||
|
|
||||||
|
get showContentWithNumbers() {
|
||||||
|
return this.fundersNumber && this.researchProductsNumber && this.projectsNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
formatNumber(num: number | string) {
|
||||||
|
let formatted = NumberUtils.roundNumber(+num);
|
||||||
|
return formatted.number + formatted.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
urlEncodeAndQuote(str: string): string {
|
||||||
|
return StringUtils.quote(StringUtils.URIEncode(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
sortByChanged() {
|
||||||
|
switch(this.sortBy) {
|
||||||
|
case 'alphAsc':
|
||||||
|
this.funders = this.funders.sort((a, b) => a['name'].localeCompare(b['name']));
|
||||||
|
break;
|
||||||
|
case 'alphDsc':
|
||||||
|
this.funders = this.funders.sort((a, b) => b['name'].localeCompare(a['name']));
|
||||||
|
break;
|
||||||
|
case 'oaDsc':
|
||||||
|
this.funders = this.funders.sort((a, b) => b['openAccessPercentage'] - a['openAccessPercentage']);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
this.filtering();
|
||||||
|
}
|
||||||
|
|
||||||
|
sizeChanged($event) {
|
||||||
|
this.pageSize = $event;
|
||||||
|
this.currentPage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
filtering() {
|
||||||
|
let displayedFunders = this.funders;
|
||||||
|
if(!this.keyword){
|
||||||
|
this.keyword = '';
|
||||||
|
}
|
||||||
|
if(this.funders.length) {
|
||||||
|
displayedFunders = displayedFunders.filter(item => (item['name'] && item['name'].toLowerCase().includes(this.keyword.toLowerCase())) || (item['alias'] && item['alias'].toLowerCase().includes(this.keyword.toLowerCase())));
|
||||||
|
}
|
||||||
|
if(this.show == 'dashboard') {
|
||||||
|
displayedFunders = displayedFunders.filter(funder => funder.monitorDashboard && funder.monitorDashboard?.length > 0 && funder.monitorDashboardStatus != 'PRIVATE');
|
||||||
|
}
|
||||||
|
|
||||||
|
this.displayedFunders = displayedFunders;
|
||||||
|
this.currentPage = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public updateCurrentPage($event) {
|
||||||
|
this.currentPage = $event.value;
|
||||||
|
HelperFunctions.scrollToId('target');
|
||||||
|
}
|
||||||
|
|
||||||
|
private removePartAfterCharacters(field, characters):string {
|
||||||
|
if(field && field.indexOf(characters) !=-1){
|
||||||
|
return field.split(characters)[0];
|
||||||
|
|
||||||
|
}
|
||||||
|
return field;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
import {NgModule} from '@angular/core';
|
||||||
|
import {CommonModule} from '@angular/common';
|
||||||
|
import {RouterModule} from '@angular/router';
|
||||||
|
|
||||||
|
import {FundersComponent} from './funders.component';
|
||||||
|
import {FundersRoutingModule} from "./funders-routing.module";
|
||||||
|
import {AlertModalModule} from "../openaireLibrary/utils/modal/alertModal.module";
|
||||||
|
import {Schema2jsonldModule} from "../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module";
|
||||||
|
import {SEOServiceModule} from "../openaireLibrary/sharedComponents/SEO/SEOService.module";
|
||||||
|
import {BreadcrumbsModule} from "../openaireLibrary/utils/breadcrumbs/breadcrumbs.module";
|
||||||
|
import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module";
|
||||||
|
import {RefineFieldResultsServiceModule} from '../openaireLibrary/services/refineFieldResultsService.module';
|
||||||
|
import {LogoUrlPipeModule} from '../openaireLibrary/utils/pipes/logoUrlPipe.module';
|
||||||
|
import {IconsModule} from '../openaireLibrary/utils/icons/icons.module';
|
||||||
|
import {IconsService} from '../openaireLibrary/utils/icons/icons.service';
|
||||||
|
import {open_access} from '../openaireLibrary/utils/icons/icons';
|
||||||
|
import {closed_access} from '../openaireLibrary/utils/icons/icons';
|
||||||
|
import {InputModule} from '../openaireLibrary/sharedComponents/input/input.module';
|
||||||
|
import {PagingModule} from '../openaireLibrary/utils/paging.module';
|
||||||
|
import {SearchInputModule} from '../openaireLibrary/sharedComponents/search-input/search-input.module';
|
||||||
|
import {GroupedRequestsServiceModule} from "../openaireLibrary/services/groupedRequestsService.module";
|
||||||
|
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
FundersRoutingModule, CommonModule, RouterModule, AlertModalModule,
|
||||||
|
Schema2jsonldModule, SEOServiceModule, BreadcrumbsModule, LoadingModule,
|
||||||
|
RefineFieldResultsServiceModule, LogoUrlPipeModule, IconsModule, InputModule,
|
||||||
|
PagingModule, SearchInputModule, GroupedRequestsServiceModule
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
FundersComponent
|
||||||
|
],
|
||||||
|
providers: [],
|
||||||
|
exports: [
|
||||||
|
FundersComponent
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
export class FundersModule {
|
||||||
|
constructor(private iconsService: IconsService) {
|
||||||
|
this.iconsService.registerIcons([open_access, closed_access]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,226 +1,318 @@
|
||||||
<ng-template #_logos let-logo="logo" let-class="class">
|
<ng-template #_logos let-logo="logo" let-class="class">
|
||||||
<div *ngIf="logo" [class]="'uk-flex uk-flex-middle uk-flex-center uk-padding-remove-horizontal '+class">
|
<div *ngIf="logo" [class]="'uk-margin-top uk-flex uk-flex-middle uk-flex-center uk-padding-remove-horizontal '+class">
|
||||||
<div class="">
|
<div class="">
|
||||||
<img src="assets/ExploreLogos/{{logo}}" alt="{{logo}} logo" loading="lazy" width="112px" height="44px">
|
<!-- <img src="assets/ExploreLogos/grouped/{{logo}}" alt="{{logo}} logo" loading="lazy" width="112px" height="44px">-->
|
||||||
|
<img src="assets/ExploreLogos/{{logo}}" alt="{{logo}} logo" loading="lazy" width="100%" height="auto">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<div class="image-front-topbar mainPageSearchForm">
|
|
||||||
<div class="uk-section">
|
|
||||||
<div class="uk-container">
|
|
||||||
<div class="search_box_bg uk-flex uk-flex-center">
|
|
||||||
<div>
|
<div>
|
||||||
<form class="uk-margin">
|
<div class="uk-section uk-padding-remove-bottom uk-overflow-hidden">
|
||||||
<div class="uk-grid uk-margin-small-left">
|
<div class="uk-container uk-container-large"
|
||||||
<div class="uk-margin-small-top uk-padding-remove-left">
|
uk-scrollspy="target: [uk-scrollspy-class]; cls: uk-animation-slide-bottom-medium; delay: 200">
|
||||||
<entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
|
<div class="uk-grid uk-flex-middle" uk-grid>
|
||||||
[properties]="properties" [onChangeNavigate]="false"
|
<div class="uk-width-3-5@m uk-margin-large-bottom">
|
||||||
(selectionChange)="entityChanged($event)"
|
<h1 class="uk-h2 uk-width-1-2@m" uk-scrollspy-class>
|
||||||
></entities-selection>
|
Discover open linked research<span class="uk-text-primary">.</span>
|
||||||
|
</h1>
|
||||||
|
<numbers #numbersComponent [defaultInit]="false" (results)="numbers = $event"></numbers>
|
||||||
|
<!-- [class.uk-invisible]="disableSelect" -->
|
||||||
|
<div class="uk-margin-medium-top" style="max-width: 600px;" uk-scrollspy-class>
|
||||||
|
<div class="uk-flex uk-flex-right uk-text-small">
|
||||||
|
<a [routerLink]="properties.searchLinkToAdvancedResults" class="uk-margin-small-bottom">
|
||||||
|
Advanced search
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class=" uk-padding-remove-left uk-margin-small-top">
|
<!-- <advanced-search-input #advanced (searchEmitter)="goTo()">-->
|
||||||
<div class="uk-inline">
|
<!-- <entities-selection [simpleView]="true" currentEntity="all" [selectedEntity]="selectedEntity"
|
||||||
<a *ngIf="keyword.length > 0" class="uk-form-icon uk-form-icon-flip" (click)="keyword = ''"
|
(selectionChange)="entityChanged($event);advanced.focusNext(input, $event)" (disableSelectEmitter)="disableSelectChange($event)"
|
||||||
uk-icon="icon: close"></a>
|
[onChangeNavigate]="false" class="uk-width-2-5"></entities-selection> -->
|
||||||
<input type="text" class="uk-input uk-width-xlarge@l uk-width-large@m uk-width-medium"
|
<!-- <div class="uk-width-expand" input #input placeholder="Search in Explore" [searchable]="true" [hint]="'What are you looking for?'" [(value)]="keyword"></div>-->
|
||||||
placeholder="Search in OpenAIRE for scholarly works"
|
<!-- </advanced-search-input>-->
|
||||||
[(ngModel)]="keyword"
|
<div search-input [(value)]="keyword"
|
||||||
name="keyword">
|
[placeholder]="'Search'+(portalName ? (' in '+portalName) : '')" (searchEmitter)="goTo()"
|
||||||
</div>
|
[searchInputClass]="'inner background'"></div>
|
||||||
<div class=" quickSelectionsBox uk-width-xlarge@l uk-width-large@m uk-width-medium">
|
|
||||||
<quick-selections *ngIf="selectedEntity == 'result'" [resultTypes]="resultTypes"
|
|
||||||
[quickFilter]="resultsQuickFilter"
|
|
||||||
[properties]="properties">
|
|
||||||
</quick-selections>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="uk-padding-remove-left uk-margin-small-top">
|
|
||||||
|
|
||||||
<button (click)="goTo(true)" type="submit"
|
<!-- <div *ngIf="selectedEntity === 'result' && input.focused" (click)="$event.stopPropagation();advanced.focusNext(input, $event)" class="uk-dropdown uk-display-block uk-margin-small-top uk-width-auto">
|
||||||
class="uk-button portal-button uk-text-bold uk-padding uk-padding-remove-vertical uk-margin-small-left">
|
<div class="uk-padding-small">
|
||||||
Search
|
<quick-selections [resultTypes]="resultTypes" [quickFilter]="resultsQuickFilter"></quick-selections>
|
||||||
</button>
|
</div>
|
||||||
<div class="uk-margin-small-top uk-margin-left">
|
</div> -->
|
||||||
<!-- (click)="goTo(false)"-->
|
</div>
|
||||||
<a *ngIf="selectedEntity!='all'" (click)="goTo(false)" class="portal-link">Advanced Search</a>
|
<div class="uk-padding-small uk-margin-small-top">
|
||||||
<a *ngIf="selectedEntity=='all'" class="portal-link ">Advanced Search</a></div>
|
<div class="uk-text-meta">
|
||||||
<div *ngIf="selectedEntity=='all'" uk-dropdown class="uk-dropdown default-dropdown">
|
Try browsing by:
|
||||||
<ul class="uk-list uk-margin-remove-bottom">
|
</div>
|
||||||
<li *ngIf="showSoftware || showPublications || showOrp || showDatasets"><a
|
<div class="link-actions uk-flex uk-flex-column uk-flex-top uk-margin-small-top">
|
||||||
[routerLink]="properties.searchLinkToAdvancedResults"
|
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text uk-margin-small-bottom"
|
||||||
[queryParams]="{qf:true, q: keyword, op: 'and'}"
|
routerLinkActive="router-link-active" routerLink="/sdgs">
|
||||||
>Research
|
<span class="uk-flex uk-flex-middle">
|
||||||
outcomes</a></li>
|
<img src="assets/common-assets/sdg/sdg-dot-img.svg" alt="SDGs logo" loading="lazy" width="17px" height="17px">
|
||||||
<li *ngIf="showProjects"><a
|
<span class="uk-margin-small-left">Sustainable Development Goals (SDG<span
|
||||||
[routerLink]="properties.searchLinkToAdvancedProjects"
|
class="uk-text-lowercase">s</span>)</span>
|
||||||
[queryParams]="{q: keyword, op: 'and'}">
|
</span>
|
||||||
Projects</a></li>
|
</a>
|
||||||
<li *ngIf="showDataProviders"><a
|
<a class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text"
|
||||||
[routerLink]="properties.searchLinkToAdvancedDataProviders"
|
routerLinkActive="router-link-active" routerLink="/fields-of-science">
|
||||||
[queryParams]="{q: keyword, op: 'and'}">
|
<span class="uk-flex uk-flex-middle">
|
||||||
Content providers</a></li>
|
<img src="assets/common-assets/fos/fos-icon.svg" alt="FOS logo" loading="lazy" width="17px" height="8px">
|
||||||
<li *ngIf="showOrganizations"><a
|
<span class="uk-margin-small-left">Fields of Science (FoS)</span>
|
||||||
[routerLink]="properties.searchLinkToAdvancedOrganizations"
|
</span>
|
||||||
[queryParams]="{q: keyword, op: 'and'}">
|
</a>
|
||||||
Organizations</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
<div class="uk-visible@m uk-width-expand" uk-scrollspy-class>
|
||||||
|
<div class="uk-position-relative">
|
||||||
|
<img src="assets/explore-assets/home/explore.jpg" alt="researchers" uk-parallax="y: 500" loading="lazy">
|
||||||
|
<img class="uk-position-bottom-left" src="assets/explore-assets/home/mask.svg" alt="search" loading="lazy">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-medium">
|
</div>
|
||||||
<div class="uk-container uk-container-large explore-numbers uk-margin-medium-bottom">
|
</div>
|
||||||
<div class="search_box_bg uk-grid uk-grid-stack" uk-grid="">
|
<div class="uk-section uk-section-large uk-padding-remove-top">
|
||||||
<div class="uk-width-1-1@m uk-first-column">
|
<div class="uk-container uk-container-large uk-width-2-3">
|
||||||
<div class="uk-grid uk-margin uk-margin-bottom uk-width-xxlarge uk-margin-auto">
|
<div uk-slider="autoplay: false; autoplay-interval: 2500" class="">
|
||||||
<div class="uk-width-expand uk-padding-remove">
|
|
||||||
|
|
||||||
<div uk-slider="autoplay: true; autoplay-interval: 2500" class="uk-margin-top">
|
|
||||||
<div class="uk-position-relative">
|
<div class="uk-position-relative">
|
||||||
<div class="uk-slider-container">
|
<div class="uk-slider-container">
|
||||||
<ul class="uk-slider-items" uk-height-match="target: > li > div > div > .logo1; row: false;">
|
<ul class="uk-slider-items" uk-height-match="target: > li > div > div > .logo1; row: false;">
|
||||||
<ng-container *ngFor="let type of getKeys(logos)">
|
<ng-container *ngFor="let type of getKeys(logos)">
|
||||||
<li *ngFor="let range of createRange(logos[type].length) let j=index"
|
<li *ngFor="let range of createRange(logos[type].length) let j=index"
|
||||||
class="uk-width-1-1 home-logo">
|
class="uk-width-1-1 home-logo">
|
||||||
<h1 class="uk-text-center uk-margin-bottom portal-color uk-h3">
|
<h2 class="uk-text-center uk-margin-bottom uk-text-primary uk-h4">
|
||||||
<span *ngIf="type=='publication' && showPublications && numbers?.publicationsSize">
|
<span *ngIf="type=='publication' && numbersComponent.showPublications && numbers?.publicationsSize">
|
||||||
<span
|
<span
|
||||||
class="uk-text-bold">{{numbers.publicationsSize.number|number}}{{numbers.publicationsSize.size}}
|
class="uk-text-bold">{{numbers.publicationsSize.number|number}}{{numbers.publicationsSize.size}}
|
||||||
publications</span><span> deduplicated</span>
|
{{openaireEntities.PUBLICATIONS}}</span><span> deduplicated</span>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
*ngIf="type=='dataset' && showDatasets && (numbers?.datasetsLinkedSize || numbers?.datasetsSize)">
|
*ngIf="type=='dataset' && numbersComponent.showDatasets && (numbers?.datasetsLinkedSize || numbers?.datasetsSize)">
|
||||||
<span *ngIf="numbers?.datasetsLinkedSize">
|
<span *ngIf="numbers?.datasetsLinkedSize">
|
||||||
<span
|
<span
|
||||||
class="uk-text-bold">{{numbers.datasetsLinkedSize.number|number}}{{numbers.datasetsLinkedSize.size}}
|
class="uk-text-bold">{{numbers.datasetsLinkedSize.number|number}}{{numbers.datasetsLinkedSize.size}}
|
||||||
datasets</span> interlinked with publications</span>
|
datasets</span> interlinked with publications</span>
|
||||||
<span *ngIf="numbers?.datasetsSize && !numbers?.datasetsLinkedSize"
|
<span *ngIf="numbers?.datasetsSize && !numbers?.datasetsLinkedSize"
|
||||||
class="uk-text-bold">{{numbers.datasetsSize.number|number}}{{numbers.datasetsSize.size}}
|
class="uk-text-bold">{{numbers.datasetsSize.number|number}}{{numbers.datasetsSize.size}}
|
||||||
research data</span>
|
{{openaireEntities.DATASETS}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
*ngIf="type=='software' && showSoftware && (numbers?.softwareSize || numbers?.softwareLinkedSize)">
|
*ngIf="type=='software' && numbersComponent.showSoftware && (numbers?.softwareSize || numbers?.softwareLinkedSize)">
|
||||||
<span *ngIf="numbers?.softwareLinkedSize">
|
<span *ngIf="numbers?.softwareLinkedSize">
|
||||||
<span
|
<span
|
||||||
class="uk-text-bol ">{{numbers.softwareLinkedSize.number|number}}{{numbers.softwareLinkedSize.size}}
|
class="uk-text-bol ">{{numbers.softwareLinkedSize.number|number}}{{numbers.softwareLinkedSize.size}}
|
||||||
research
|
{{openaireEntities.SOFTWARE}}</span> interlinked with publications</span>
|
||||||
software</span> interlinked with publications</span>
|
|
||||||
<span *ngIf="numbers?.softwareSize && !numbers?.softwareLinkedSize"
|
<span *ngIf="numbers?.softwareSize && !numbers?.softwareLinkedSize"
|
||||||
class="uk-text-bold">{{numbers.softwareSize.number|number}}{{numbers.softwareSize.size}}
|
class="uk-text-bold">{{numbers.softwareSize.number|number}}{{numbers.softwareSize.size}}
|
||||||
research software</span>
|
{{openaireEntities.SOFTWARE}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="type=='persistent'">
|
<span *ngIf="type=='persistent'">
|
||||||
<span>Persistent identifiers and registries</span>
|
<span>Persistent identifiers and registries</span>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="type=='funder' && showProjects && numbers?.fundersSize && numbers?.projectsSize">
|
<span *ngIf="type=='funder' && numbersComponent.showProjects && numbers?.mergedFundersSize && numbers?.projectsSize">
|
||||||
<span
|
<span
|
||||||
class="uk-text-bold">{{numbers.fundersSize.number|number}}{{numbers.fundersSize.size}}
|
class="uk-text-bold">{{numbers.mergedFundersSize.number|number}}{{numbers.mergedFundersSize.size}}
|
||||||
funders</span><span> and</span>
|
funders</span><span> and</span>
|
||||||
<span
|
<span
|
||||||
class="uk-text-bold"> {{numbers.projectsSize.number|number}}{{numbers.projectsSize.size}}
|
class="uk-text-bold"> {{numbers.projectsSize.number|number}}{{numbers.projectsSize.size}}
|
||||||
funded grants</span>
|
funded grants</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
</h1>
|
</h2>
|
||||||
<div
|
<div class="uk-text-center uk-flex uk-flex-center uk-margin-medium-left uk-margin-medium-right">
|
||||||
class="uk-grid-small uk-child-width-1-6 uk-text-center grid uk-flex uk-flex-center"
|
<ng-container *ngTemplateOutlet="_logos; context: { logo: logos[type][j], class: ' '}"></ng-container>
|
||||||
uk-grid uk-height-match="target: > div > .logo2; row: false;">
|
<!-- <div-->
|
||||||
<div
|
<!-- class="uk-grid-small uk-child-width-1-6 uk-text-center grid uk-flex uk-flex-center"-->
|
||||||
*ngFor="let logo of logos[type][j].slice(0,ceil(logos[type][j].length/2)); let i=index">
|
<!-- uk-grid uk-height-match="target: > div > .logo2; row: false;">-->
|
||||||
<ng-container
|
<!-- <div-->
|
||||||
*ngTemplateOutlet="_logos; context: { logo: logo, class: 'logo1 '}"></ng-container>
|
<!-- *ngFor="let logo of logos[type][j].slice(0,ceil(logos[type][j].length/2)); let i=index">-->
|
||||||
<ng-container
|
<!-- <ng-container-->
|
||||||
*ngTemplateOutlet="_logos; context: { logo: logos[type][j][ceil(logos[type][j].length/2)+i], class: 'uk-margin-top logo2 '}"></ng-container>
|
<!-- *ngTemplateOutlet="_logos; context: { logo: logo, class: 'logo1 '}"></ng-container>-->
|
||||||
</div>
|
<!-- <ng-container-->
|
||||||
|
<!-- *ngTemplateOutlet="_logos; context: { logo: logos[type][j][ceil(logos[type][j].length/2)+i], class: 'uk-margin-top logo2 '}"></ng-container>-->
|
||||||
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="uk-hidden@s">
|
<a class="uk-position-center-left-out" uk-slider-item="previous"><span
|
||||||
<a class="uk-position-center-left uk-position-small" href="#" uk-slidenav-previous
|
uk-icon="icon: chevron-left; ratio: 2"></span></a>
|
||||||
uk-slider-item="previous"><span class="visually-hidden">prev</span></a>
|
<a class="uk-position-center-right-out" uk-slider-item="next"><span
|
||||||
<a class="uk-position-center-right uk-position-small" href="#" uk-slidenav-next
|
uk-icon="icon: chevron-right; ratio: 2"></span></a>
|
||||||
uk-slider-item="next"><span class="visually-hidden">next</span></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="uk-visible@s">
|
|
||||||
<a class="uk-position-center-left-out uk-position-small" href="#" uk-slidenav-previous
|
|
||||||
uk-slider-item="previous"><span class="visually-hidden">prev</span></a>
|
|
||||||
<a class="uk-position-center-right-out uk-position-small" href="#" uk-slidenav-next
|
|
||||||
uk-slider-item="next"><span class="visually-hidden">next</span></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
|
</div>
|
||||||
[texts]="pageContents['top']"></helper>
|
<div class="uk-section uk-section-secondary explore-dark-logo-background">
|
||||||
|
<div class="uk-container uk-container-large uk-margin-large-bottom">
|
||||||
|
<div class="uk-width-1-1 uk-margin-medium-bottom">
|
||||||
|
<h2 class="uk-h1 uk-margin-large-top">Share your research<span class="uk-text-primary">.</span></h2>
|
||||||
|
</div>
|
||||||
|
<slider-container [total]="2" [period]="8000" [infinite]="true" [navigation]="'progress'">
|
||||||
|
<slider-column type="slider">
|
||||||
|
<slider-item type="static">
|
||||||
|
<img class="uk-position-center uk-position-z-index" src="assets/explore-assets/home/tablet.png"
|
||||||
|
alt="ipad" loading="lazy">
|
||||||
|
</slider-item>
|
||||||
|
<slider-item type="slide" [start]="0">
|
||||||
|
<img src="assets/explore-assets/home/1.png" alt="Deposit search" loading="lazy">
|
||||||
|
</slider-item>
|
||||||
|
<slider-item type="slide" [start]="0.5">
|
||||||
|
<img src="assets/explore-assets/home/2.png" alt="Deposit in OpenAIRE or Zenodo" loading="lazy">
|
||||||
|
</slider-item>
|
||||||
|
<slider-item type="slide" [start]="1">
|
||||||
|
<img src="assets/explore-assets/home/3.png" alt="Search links" loading="lazy">
|
||||||
|
</slider-item>
|
||||||
|
<slider-item type="slide" [start]="1.5">
|
||||||
|
<img src="assets/explore-assets/home/4.png" alt="link" loading="lazy">
|
||||||
|
</slider-item>
|
||||||
|
</slider-column>
|
||||||
|
<slider-column type="nav" class="slider-nav">
|
||||||
|
<slider-nav-item [start]="0">
|
||||||
|
<h3 class="uk-h6">
|
||||||
|
<i class="uk-text-primary">Deposit</i> your research<span class="uk-text-primary">.</span>
|
||||||
|
</h3>
|
||||||
|
<div class="uk-margin-bottom">
|
||||||
|
Whether it’s publications, data or software,
|
||||||
|
select an OpenAIRE compatible repository and
|
||||||
|
share using community standards. Alternatively
|
||||||
|
use Zenodo, a catch-all repository hosted by CERN.
|
||||||
|
All results will be indexed, discoverable and accessible
|
||||||
|
via EXPLORE.
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
|
<a class="uk-button uk-button-text uk-text-primary" routerLink="/participate/deposit/learn-how">Start
|
||||||
|
Deposit</a>
|
||||||
|
</div>
|
||||||
|
</slider-nav-item>
|
||||||
|
<slider-nav-item [start]="1">
|
||||||
|
<h3 class="uk-h6">
|
||||||
|
<i class="uk-text-primary">Link</i> your work<span class="uk-text-primary">.</span>
|
||||||
|
</h3>
|
||||||
|
<div class="uk-margin-bottom">
|
||||||
|
Connect all your research. If you can't find your research
|
||||||
|
results in OpenAIRE, don't worry! Use our Link service,
|
||||||
|
that reaches out to many external sources via APIs, and
|
||||||
|
claim them to your Grant or ORCID. Use the service to provide
|
||||||
|
meaningful links between publications-datasets-software.
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
|
<a class="uk-button uk-button-text uk-text-primary" routerLink="/participate/claim">Start Linking</a>
|
||||||
|
</div>
|
||||||
|
</slider-nav-item>
|
||||||
|
</slider-column>
|
||||||
|
</slider-container>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Not yet! -->
|
||||||
|
<!-- <div class="uk-section">
|
||||||
|
<div class="uk-container uk-container-large">
|
||||||
|
<h2 class="uk-h1 uk-text-center">
|
||||||
|
New sources in OpenAIRE<span class="uk-text-primary">.</span>
|
||||||
|
</h2>
|
||||||
|
<div class="cards-on-slider">
|
||||||
|
TODO: Repositories content
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="pageContents && pageContents['right'] && pageContents['right'].length > 0"
|
</div>
|
||||||
class="uk-section graph-background">
|
</div> -->
|
||||||
|
|
||||||
|
<div class="uk-background-muted">
|
||||||
|
<div class="uk-position-relative">
|
||||||
|
<div class="uk-section uk-section-large">
|
||||||
<div class="uk-container">
|
<div class="uk-container">
|
||||||
<div class="uk-flex uk-flex-top uk-child-width-1-1 uk-child-width-1-2@m" uk-grid>
|
<div class="uk-grid uk-child-width-1-2@m" uk-grid>
|
||||||
<div class="uk-flex-last@m">
|
<div>
|
||||||
<div [class.lines-10]="!readMore" class="uk-margin-bottom multi-line-ellipsis">
|
<div style="max-width: 550px;">
|
||||||
<helper [texts]="pageContents['right']"></helper>
|
<h2>Linked Open Research.</h2>
|
||||||
</div>
|
<div class="">
|
||||||
<div *ngIf="!readMore" class="uk-text-center clickable" (click)="readMore = true">
|
EXPLORE is built on the <a href="https://graph.openaire.eu/" target="_blank"
|
||||||
<span>Read more<span class="space" uk-icon="chevron-down"></span></span>
|
class="graph">OpenAIRE Graph</a>, one of the largest
|
||||||
</div>
|
open scholarly record collections worldwide. Conceived as a public and
|
||||||
<div *ngIf="readMore" class="uk-text-center clickable" (click)="readMore = false">
|
transparent good, populated out of data sources trusted by scientists, the
|
||||||
<span>Read less<span class="space" uk-icon="chevron-up"></span></span>
|
OpenAIRE Graph brings discovery, monitoring, and assessment of science
|
||||||
|
back in the hands of the scientific community.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-flex uk-flex-bottom">
|
|
||||||
<div class="uk-width-1-3 uk-width-1-2@m">
|
|
||||||
<img src="assets/explore-assets/graph.png" alt="graph image" loading="lazy">
|
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-padding uk-width-1-2">
|
<div></div>
|
||||||
<img src="assets/common-assets/logo-large-graph.png" alt="graph image" loading="lazy">
|
<img class="uk-visible@m uk-height-1-1 uk-position-top-right"
|
||||||
|
src="assets/common-assets/common/graph-nodes.svg" alt="Graph nodes" loading="lazy">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-section uk-padding-remove-top">
|
||||||
|
<div class="uk-container">
|
||||||
|
<div class="uk-width-1-2@m uk-margin-auto uk-margin-small-top uk-text-center" style="max-width: 600px;">
|
||||||
|
<div>
|
||||||
|
Within a constantly emerging scholarly communication environment, the OpenAIRE Graph is a moving
|
||||||
|
target, continuously integrating new sources, new types or research objects, and embedding
|
||||||
|
access measures. We therefore welcome the community to work with us to improve all its aspects:
|
||||||
|
its <span class="uk-text-bold">coverage</span> (geographic and thematic), <span
|
||||||
|
class="uk-text-bold">quality</span> (disambiguation and semantics) and <span
|
||||||
|
class="uk-text-bold">access</span> (APIs).
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
|
Find information about the OpenAIRE Graph, how to test it and contribute to improving it.
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
|
<a href="https://www.openaire.eu/blogs/the-openaire-research-graph" target="_blank"
|
||||||
|
class="uk-display-inline-block uk-text-uppercase uk-button uk-button-text">
|
||||||
|
Learn more. Contribute
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="pageContents && pageContents['right'] && pageContents['right'].length > 0"
|
|
||||||
class="graph-background-bottom uk-section uk-padding-remove-vertical uk-background-cover"></div>
|
<div class="uk-section uk-section-large">
|
||||||
<helper *ngIf="pageContents && pageContents['bottom'] && pageContents['bottom'].length > 0"
|
<div class="uk-container uk-container-large">
|
||||||
[texts]="pageContents['bottom']"></helper>
|
<h2 class="uk-h5 uk-margin-remove uk-text-primary">
|
||||||
<div class="uk-section uk-padding-remove-bottom">
|
Did you know that
|
||||||
<h3 class="uk-text-center uk-margin-medium-bottom">Our growing <span class="uk-text-bold">Community</span></h3>
|
</h2>
|
||||||
<numbers #numbersComponent [defaultInit]="false" backgroundClass="numbers-background"
|
<h2 class="uk-heading-large uk-margin-large-bottom uk-margin-remove-top">
|
||||||
(results)="numbers = $event"></numbers>
|
you may
|
||||||
|
</h2>
|
||||||
|
<div class="uk-container">
|
||||||
|
<div class="uk-grid uk-child-width-1-2@l uk-child-width-1-1 uk-grid-large" uk-grid
|
||||||
|
uk-height-match=".link-title">
|
||||||
|
<div>
|
||||||
|
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
|
||||||
|
<a href="https://provide.openaire.eu/home" target="_blank"
|
||||||
|
class="uk-button uk-button-text uk-text-left uk-text-large">
|
||||||
|
<span class="link-title">have your repository, Journal or CRIS system indexed in EXPLORE and take advantage of services for enriching metadata and counting usage?</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-section uk-padding-large uk-grid uk-child-width-1-2@m uk-child-width-1-1@s uk-margin-large-top uk-margin-large-bottom">
|
|
||||||
<div class="uk-flex uk-flex-middle uk-flex-center">
|
|
||||||
<h3 class="uk-text-center uk-margin-medium-bottom">Start browsing by subject</h3>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="uk-text-center uk-padding-large uk-padding-remove-vertical ">
|
<div class="uk-padding-small uk-padding-remove-horizontal custom-link">
|
||||||
<span *ngFor="let subject of specialSubjects " class=" uk-text-capitalize uk-link-reset uk-button uk-button-default uk-button-secondary uk-margin-small-right uk-margin-small-bottom">
|
<a href="https://canada.explore.openaire.eu/" target="_blank"
|
||||||
<a [routerLink]=" properties.searchLinkToAdvancedResults"
|
class="uk-button uk-button-text uk-text-left uk-text-large">
|
||||||
[queryParams]="getSubjectParameter(subject.value) ">{{subject.label}}</a></span>
|
<span class="link-title">use EXPLORE as an application platform as a service (aPaaS) and set up a national portal for Open Science, such as Canada.EXPLORE?</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<helper *ngIf="pageContents && pageContents['left'] && pageContents['left'].length > 0"
|
<div #contact class="uk-section">
|
||||||
[texts]="pageContents['left']"></helper>
|
<div class="uk-container uk-container-large uk-margin-large-bottom uk-text-center">
|
||||||
<div class="uk-section-muted"
|
<h3 class="uk-h2 uk-margin-remove">
|
||||||
uk-scrollspy="{"target":"[uk-scrollspy-class]","cls":"uk-animation-fade","delay":false}">
|
Need more information?
|
||||||
<div class="uk-container uk-container-large">
|
</h3>
|
||||||
<other-portals portal="explore" [properties]="properties"></other-portals>
|
<h4 class="uk-h4 uk-margin-small-top uk-margin-medium-bottom">
|
||||||
|
Get in touch and let us help you<span class="uk-text-primary">.</span>
|
||||||
|
</h4>
|
||||||
|
<a class="uk-button uk-button-primary uk-text-uppercase uk-margin-top uk-margin-medium-bottom"
|
||||||
|
routerLink="/contact-us">Contact us</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
@import (reference) "~src/assets/openaire-theme/less/_import-variables";
|
||||||
|
|
||||||
|
@trello-color: #0076BA;
|
||||||
|
|
||||||
|
.home-background {
|
||||||
|
background-color: @global-inverse-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link-actions img {
|
||||||
|
width: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-logo {
|
||||||
|
img {
|
||||||
|
-webkit-filter: grayscale(1);
|
||||||
|
filter: grayscale(1);
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover img {
|
||||||
|
-webkit-filter: grayscale(0);
|
||||||
|
filter: grayscale(0);
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-link {
|
||||||
|
border-bottom: @global-border-width solid @global-border;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-transform: none;
|
||||||
|
|
||||||
|
.link-title {
|
||||||
|
color: @global-emphasis-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .link-title {
|
||||||
|
color: @global-secondary-background;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider-image {
|
||||||
|
min-width: 550px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (min-width: @breakpoint-large) {
|
||||||
|
.explore-dark-logo-background {
|
||||||
|
background-image: url("~src/assets/explore-assets/home/explore-dark-logo.svg");
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: -5% 102%;
|
||||||
|
background-size: 35%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider-nav {
|
||||||
|
max-width: 650px;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,137 +1,87 @@
|
||||||
import {Component, ViewChild} from '@angular/core';
|
import {
|
||||||
import {Subscription} from 'rxjs';
|
AfterViewInit,
|
||||||
import {ActivatedRoute, Router} from '@angular/router';
|
ChangeDetectorRef,
|
||||||
import {Location} from '@angular/common';
|
Component,
|
||||||
|
ElementRef,
|
||||||
|
OnDestroy,
|
||||||
|
OnInit,
|
||||||
|
QueryList,
|
||||||
|
ViewChild,
|
||||||
|
ViewChildren
|
||||||
|
} from '@angular/core';
|
||||||
|
import {Subscriber} from 'rxjs';
|
||||||
|
import {Router} from '@angular/router';
|
||||||
import {Meta, Title} from '@angular/platform-browser';
|
import {Meta, Title} from '@angular/platform-browser';
|
||||||
import {ConfigurationService} from '../openaireLibrary/utils/configuration/configuration.service';
|
import {ConfigurationService} from '../openaireLibrary/utils/configuration/configuration.service';
|
||||||
import {SearchDataprovidersService} from '../openaireLibrary/services/searchDataproviders.service';
|
import {OpenaireEntities, SearchFields} from '../openaireLibrary/utils/properties/searchFields';
|
||||||
import {SearchProjectsService} from '../openaireLibrary/services/searchProjects.service';
|
|
||||||
import {SearchOrganizationsService} from '../openaireLibrary/services/searchOrganizations.service';
|
|
||||||
import {RefineFieldResultsService} from '../openaireLibrary/services/refineFieldResults.service';
|
|
||||||
import {SearchFields} from '../openaireLibrary/utils/properties/searchFields';
|
|
||||||
|
|
||||||
import {RouterHelper} from '../openaireLibrary/utils/routerHelper.class';
|
import {RouterHelper} from '../openaireLibrary/utils/routerHelper.class';
|
||||||
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
|
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
|
||||||
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
|
import {ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes';
|
||||||
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
|
import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service';
|
||||||
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
|
import {SEOService} from '../openaireLibrary/sharedComponents/SEO/SEO.service';
|
||||||
import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service";
|
|
||||||
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
import {HelperService} from "../openaireLibrary/utils/helper/helper.service";
|
||||||
import {Filter} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class";
|
import {Filter} from "../openaireLibrary/searchPages/searchUtils/searchHelperClasses.class";
|
||||||
import {properties} from "../../environments/environment";
|
import {properties} from "../../environments/environment";
|
||||||
import {Numbers, NumbersComponent} from "../openaireLibrary/sharedComponents/numbers/numbers.component";
|
import {Numbers, NumbersComponent} from "../openaireLibrary/sharedComponents/numbers/numbers.component";
|
||||||
import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
|
import {StringUtils} from "../openaireLibrary/utils/string-utils.class";
|
||||||
|
import {QuickContactService} from '../openaireLibrary/sharedComponents/quick-contact/quick-contact.service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'home',
|
selector: 'home',
|
||||||
templateUrl: 'home.component.html',
|
templateUrl: 'home.component.html',
|
||||||
|
styleUrls: ['home.component.less']
|
||||||
})
|
})
|
||||||
export class HomeComponent {
|
export class HomeComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
// MAX 12 logos in every slide
|
// MAX 12 logos in every slide
|
||||||
public logos = {
|
public logos = {
|
||||||
"publication": [
|
"publication": [
|
||||||
[
|
[
|
||||||
"logo-pubmed.png",
|
"publications.png"
|
||||||
"logo-arxiv.png",
|
|
||||||
"logo-base.png",
|
|
||||||
"logo-scielo.png",
|
|
||||||
"logo-la-referencia.png",
|
|
||||||
"logo-soar.png",
|
|
||||||
"logo-repec.png",
|
|
||||||
"logo-core.png",
|
|
||||||
"logo-zenodo.png",
|
|
||||||
"logo-narcis.png"
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
"logo-crossref.png",
|
"publications2.png"
|
||||||
"logo-unpaywall.png",
|
|
||||||
"logo-elsevier.png",
|
|
||||||
"logo-spring-nature.png",
|
|
||||||
"logo-frontiers.png",
|
|
||||||
"logo-opencitations.png",
|
|
||||||
"logo-doaj.png",
|
|
||||||
"logo-microsoft.png",
|
|
||||||
"logo-plos.png",
|
|
||||||
"logo-f1000.png",
|
|
||||||
"logo-copernicus.png"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"software": [
|
"software": [
|
||||||
[
|
[
|
||||||
"logo-software-heritage.png",
|
"software.png"
|
||||||
"logo-github.png",
|
|
||||||
"logo-doecode.png",
|
|
||||||
"logo-bitbucket.png",
|
|
||||||
"logo-elixir-bio-tools.png",
|
|
||||||
"logo-google-code.png",
|
|
||||||
"logo-sourceforge.png",
|
|
||||||
"logo-zenodo.png"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"dataset": [
|
"dataset": [
|
||||||
[
|
[
|
||||||
"logo-scholexplorer.png",
|
"datasets.png"
|
||||||
"logo-zenodo.png",
|
|
||||||
"logo-datacite.png",
|
|
||||||
"logo-pangea.png",
|
|
||||||
"logo-figshare.png",
|
|
||||||
"logo-protocols.png",
|
|
||||||
"logo-opentrials.png",
|
|
||||||
"logo-kaggle.png",
|
|
||||||
"logo-reactome.png",
|
|
||||||
"logo-easy.png",
|
|
||||||
"logo-dryad.png"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
//"other": [],
|
|
||||||
"persistent": [
|
"persistent": [
|
||||||
[
|
[
|
||||||
"logo-re3data.png",
|
"pids.png"
|
||||||
"logo-orcid.png",
|
|
||||||
"logo-opendoar.png",
|
|
||||||
"logo-grid.png"
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"funder": [
|
"funder": [
|
||||||
[
|
[
|
||||||
"logo-european-commision.png",
|
"funders.png"
|
||||||
"logo-nsf.png",
|
|
||||||
"logo-nhmrc.png",
|
|
||||||
"logo-sfi.png",
|
|
||||||
"logo-nwo.png",
|
|
||||||
"logo-welcome-trust.png",
|
|
||||||
"logo-fct.png",
|
|
||||||
"logo-gsrt.png",
|
|
||||||
"logo-fnsnf.png"
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
public portalName: string = "";
|
||||||
public pageTitle = "OpenAIRE";
|
public pageTitle = "OpenAIRE";
|
||||||
public keyword: string = "";
|
public keyword: string = "";
|
||||||
|
|
||||||
public searchFields: SearchFields = new SearchFields();
|
public searchFields: SearchFields = new SearchFields();
|
||||||
public errorCodes: ErrorCodes = new ErrorCodes();
|
public errorCodes: ErrorCodes = new ErrorCodes();
|
||||||
public routerHelper: RouterHelper = new RouterHelper();
|
public routerHelper: RouterHelper = new RouterHelper();
|
||||||
public numbers: Numbers;
|
public numbers: Numbers = {};
|
||||||
showPublications: boolean = false;
|
public properties: EnvProperties = properties;
|
||||||
showDatasets: boolean = false;
|
public openaireEntities = OpenaireEntities;
|
||||||
showSoftware: boolean = false;
|
|
||||||
showOrp: boolean = false;
|
|
||||||
showProjects: boolean = false;
|
|
||||||
showDataProviders: boolean = false;
|
|
||||||
showOrganizations: boolean = false;
|
|
||||||
properties: EnvProperties = properties;
|
|
||||||
public readMore: boolean = false;
|
public readMore: boolean = false;
|
||||||
|
@ViewChild('contact') contact: ElementRef;
|
||||||
subs: Subscription[] = [];
|
subscriptions: any[] = [];
|
||||||
|
@ViewChildren('scrolling_element') elements: QueryList<ElementRef>;
|
||||||
resultsQuickFilter: { filter: Filter, selected: boolean, filterId: string, value: string } = {
|
resultsQuickFilter: { filter: Filter, selected: boolean, filterId: string, value: string } = null;//{
|
||||||
filter: null,
|
// filter: null,
|
||||||
selected: true,
|
// selected: true,
|
||||||
filterId: "resultbestaccessright",
|
// filterId: "resultbestaccessright",
|
||||||
value: "Open Access"
|
// value: "Open Access"
|
||||||
};
|
// };
|
||||||
selectedEntity = "all";
|
selectedEntity = "all";
|
||||||
selectedEntitySimpleUrl;
|
selectedEntitySimpleUrl;
|
||||||
selectedEntityAdvancedUrl;
|
selectedEntityAdvancedUrl;
|
||||||
|
@ -142,7 +92,7 @@ export class HomeComponent {
|
||||||
filterType: 'checkbox',
|
filterType: 'checkbox',
|
||||||
originalFilterId: "",
|
originalFilterId: "",
|
||||||
valueIsExact: true,
|
valueIsExact: true,
|
||||||
title: "Result Types",
|
title: "Type",
|
||||||
filterOperator: "or"
|
filterOperator: "or"
|
||||||
};
|
};
|
||||||
public pageContents = null;
|
public pageContents = null;
|
||||||
|
@ -156,26 +106,17 @@ export class HomeComponent {
|
||||||
{value: "lcsh:Chemistry", label: "Chemistry"},
|
{value: "lcsh:Chemistry", label: "Chemistry"},
|
||||||
{value: "lcsh:Engineering (General). Civil engineering (General)", label: "Civil engineering"},
|
{value: "lcsh:Engineering (General). Civil engineering (General)", label: "Civil engineering"},
|
||||||
{value: "lcsh:Technology", label: "Technology"},
|
{value: "lcsh:Technology", label: "Technology"},
|
||||||
/* "Mathematics::Combinatorics",
|
|
||||||
"lcsh:Medicine",
|
|
||||||
"lcsh:Science",
|
|
||||||
"lcsh:Biology (General)",
|
|
||||||
"lcsh:Chemistry",
|
|
||||||
"lcsh:Engineering (General). Civil engineering (General)",
|
|
||||||
"lcsh:Technology"*/
|
|
||||||
];
|
];
|
||||||
stringUtils = new StringUtils();
|
stringUtils = new StringUtils();
|
||||||
|
// disableSelect: boolean = true;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private route: ActivatedRoute,
|
|
||||||
private _router: Router,
|
private _router: Router,
|
||||||
private _searchResearchResultsService: SearchResearchResultsService,
|
private _piwikService: PiwikService,
|
||||||
private _searchDataprovidersService: SearchDataprovidersService,
|
|
||||||
private _searchProjectsService: SearchProjectsService,
|
|
||||||
private _searchOrganizationsService: SearchOrganizationsService,
|
|
||||||
private _refineFieldResultsService: RefineFieldResultsService,
|
|
||||||
private location: Location, private _piwikService: PiwikService,
|
|
||||||
private config: ConfigurationService, private _meta: Meta, private _title: Title, private seoService: SEOService,
|
private config: ConfigurationService, private _meta: Meta, private _title: Title, private seoService: SEOService,
|
||||||
private helper: HelperService
|
private helper: HelperService,
|
||||||
|
private cdr: ChangeDetectorRef,
|
||||||
|
private quickContactService: QuickContactService
|
||||||
) {
|
) {
|
||||||
let description = "OpenAIRE Explore: Over 100M of research deduplicated, 170K research software, 11M research data. One of the largest open scholarly records collection worldwide.";
|
let description = "OpenAIRE Explore: Over 100M of research deduplicated, 170K research software, 11M research data. One of the largest open scholarly records collection worldwide.";
|
||||||
let title = "OpenAIRE | Find and Share research";
|
let title = "OpenAIRE | Find and Share research";
|
||||||
|
@ -183,10 +124,11 @@ export class HomeComponent {
|
||||||
this._meta.updateTag({content: description}, "name='description'");
|
this._meta.updateTag({content: description}, "name='description'");
|
||||||
this._meta.updateTag({content: description}, "property='og:description'");
|
this._meta.updateTag({content: description}, "property='og:description'");
|
||||||
this._meta.updateTag({content: title}, "property='og:title'");
|
this._meta.updateTag({content: title}, "property='og:title'");
|
||||||
|
this.quickContactService.setDisplay(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private getPageContents() {
|
private getPageContents() {
|
||||||
this.subs.push(this.helper.getPageHelpContents(this.properties, 'openaire', this._router.url).subscribe(contents => {
|
this.subscriptions.push(this.helper.getPageHelpContents(this.properties, 'openaire', this._router.url).subscribe(contents => {
|
||||||
this.pageContents = contents;
|
this.pageContents = contents;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
@ -207,42 +149,80 @@ export class HomeComponent {
|
||||||
return Math.ceil(num);
|
return Math.ceil(num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clear() {
|
||||||
|
this.subscriptions.forEach(value => {
|
||||||
|
if (value instanceof Subscriber) {
|
||||||
|
value.unsubscribe();
|
||||||
|
} else if (value instanceof IntersectionObserver || value instanceof MutationObserver) {
|
||||||
|
value.disconnect();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.seoService.createLinkForCanonicalURL(this.properties.domain + this.properties.baseLink + this._router.url, false);
|
this.seoService.createLinkForCanonicalURL(this.properties.domain + this.properties.baseLink + this._router.url, false);
|
||||||
this.getPageContents();
|
this.getPageContents();
|
||||||
if (this.properties != null) {
|
if (this.properties != null) {
|
||||||
var url = this.properties.domain + this.properties.baseLink + this._router.url;
|
var url = this.properties.domain + this.properties.baseLink + this._router.url;
|
||||||
this._meta.updateTag({content: url}, "property='og:url'");
|
this._meta.updateTag({content: url}, "property='og:url'");
|
||||||
if (this.properties.enablePiwikTrack && (typeof document !== 'undefined')) {
|
this.subscriptions.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe());
|
||||||
this.subs.push(this._piwikService.trackView(this.properties, "OpenAIRE").subscribe());
|
if(this.numbersComponent) {
|
||||||
|
this.numbersComponent.showPublications = false;
|
||||||
|
this.numbersComponent.showDatasets = false;
|
||||||
|
this.numbersComponent.showSoftware = false;
|
||||||
|
this.numbersComponent.showOrp = false;
|
||||||
|
this.numbersComponent.showProjects = false;
|
||||||
|
this.numbersComponent.showDataProviders = false;
|
||||||
|
this.numbersComponent.showOrganizations = false;
|
||||||
}
|
}
|
||||||
//this.config.getCommunityInformation(this.properties, this.properties.adminToolsCommunity ).subscribe(data => {
|
this.subscriptions.push(this.config.portalAsObservable.subscribe(data => {
|
||||||
this.subs.push(this.config.communityInformationState.subscribe(data => {
|
|
||||||
if(data) {
|
if(data) {
|
||||||
|
if(data.name) {
|
||||||
|
this.portalName = data.name;
|
||||||
|
}
|
||||||
var showEntity = {};
|
var showEntity = {};
|
||||||
for (var i = 0; i < data['entities'].length; i++) {
|
for (var i = 0; i < data['entities'].length; i++) {
|
||||||
showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"];
|
showEntity["" + data['entities'][i]["pid"] + ""] = data['entities'][i]["isEnabled"];
|
||||||
}
|
}
|
||||||
this.showPublications = !!showEntity["publication"];
|
if(this.numbersComponent) {
|
||||||
this.showDatasets = !!showEntity["dataset"];
|
this.numbersComponent.showPublications = !!showEntity["publication"];
|
||||||
this.showSoftware = !!showEntity["software"];
|
this.numbersComponent.showDatasets = !!showEntity["dataset"];
|
||||||
this.showOrp = !!showEntity["orp"];
|
this.numbersComponent.showSoftware = !!showEntity["software"];
|
||||||
this.showProjects = !!showEntity["project"];
|
this.numbersComponent.showOrp = !!showEntity["orp"];
|
||||||
this.showDataProviders = !!showEntity["datasource"];
|
this.numbersComponent.showProjects = !!showEntity["project"];
|
||||||
this.showOrganizations = !!showEntity["organization"];
|
this.numbersComponent.showDataProviders = !!showEntity["datasource"];
|
||||||
if (this.showPublications) {
|
this.numbersComponent.showOrganizations = !!showEntity["organization"];
|
||||||
this.resultTypes.values.push({name: "Publications", id: "publications", selected: true, number: 0});
|
|
||||||
}
|
}
|
||||||
if (this.showDatasets) {
|
if(this.numbersComponent && this.numbersComponent.showPublications) {
|
||||||
this.resultTypes.values.push({name: "Research data", id: "datasets", selected: true, number: 0});
|
this.resultTypes.values.push({
|
||||||
|
name: this.openaireEntities.PUBLICATIONS,
|
||||||
|
id: "publications",
|
||||||
|
selected: false,
|
||||||
|
number: 0
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (this.showSoftware) {
|
if(this.numbersComponent && this.numbersComponent.showDatasets) {
|
||||||
this.resultTypes.values.push({name: "Software", id: "software", selected: true, number: 0});
|
this.resultTypes.values.push({
|
||||||
|
name: this.openaireEntities.DATASETS,
|
||||||
|
id: "datasets",
|
||||||
|
selected: false,
|
||||||
|
number: 0
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (this.showOrp) {
|
if(this.numbersComponent && this.numbersComponent.showSoftware) {
|
||||||
this.resultTypes.values.push({name: "Other research products", id: "other", selected: true, number: 0});
|
this.resultTypes.values.push({
|
||||||
|
name: this.openaireEntities.SOFTWARE,
|
||||||
|
id: "software",
|
||||||
|
selected: false,
|
||||||
|
number: 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if(this.numbersComponent && this.numbersComponent.showOrp) {
|
||||||
|
this.resultTypes.values.push({name: this.openaireEntities.OTHER, id: "other", selected: false, number: 0});
|
||||||
|
}
|
||||||
|
if(this.numbersComponent) {
|
||||||
|
this.numbersComponent.init(this.numbersComponent.showDatasets, this.numbersComponent.showSoftware, this.numbersComponent.showPublications, this.numbersComponent.showDatasets, this.numbersComponent.showSoftware, this.numbersComponent.showOrp, this.numbersComponent.showProjects, this.numbersComponent.showDataProviders, this.numbersComponent.showOrganizations);
|
||||||
}
|
}
|
||||||
this.numbersComponent.init(this.showDatasets, this.showSoftware, this.showPublications, this.showDatasets, this.showSoftware, this.showOrp, this.showProjects, this.showDataProviders);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
|
@ -252,10 +232,50 @@ export class HomeComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ngOnDestroy() {
|
public ngOnDestroy() {
|
||||||
for (let sub of this.subs) {
|
this.quickContactService.setDisplay(true);
|
||||||
sub.unsubscribe();
|
this.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngAfterViewInit() {
|
||||||
|
if (typeof window !== "undefined") {
|
||||||
|
this.createObservers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
createObservers() {
|
||||||
|
let options = {
|
||||||
|
root: null,
|
||||||
|
rootMargin: '200px',
|
||||||
|
threshold: 1.0
|
||||||
|
};
|
||||||
|
let intersectionObserver = new IntersectionObserver(entries => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
this.quickContactService.setDisplay(!entry.isIntersecting);
|
||||||
|
});
|
||||||
|
}, options);
|
||||||
|
intersectionObserver.observe(this.contact.nativeElement);
|
||||||
|
let mutationObserver = new MutationObserver(entries => {
|
||||||
|
entries.forEach(entry => {
|
||||||
|
if (entry.attributeName === 'style') {
|
||||||
|
let opacities: number[] = this.elements.map(element => +element.nativeElement.style.opacity);
|
||||||
|
let active: number = opacities.indexOf(Math.max(...opacities));
|
||||||
|
this.elements.forEach((element, index) => {
|
||||||
|
if (index === active) {
|
||||||
|
element.nativeElement.classList.remove('uk-disabled');
|
||||||
|
} else {
|
||||||
|
element.nativeElement.classList.add('uk-disabled');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
this.elements.forEach(element => {
|
||||||
|
mutationObserver.observe(element.nativeElement, {attributes: true});
|
||||||
|
});
|
||||||
|
this.subscriptions.push(intersectionObserver);
|
||||||
|
this.subscriptions.push(mutationObserver);
|
||||||
}
|
}
|
||||||
|
|
||||||
private handleError(message: string, error) {
|
private handleError(message: string, error) {
|
||||||
|
@ -268,42 +288,47 @@ export class HomeComponent {
|
||||||
this.selectedEntityAdvancedUrl = $event.advancedUrl;
|
this.selectedEntityAdvancedUrl = $event.advancedUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
goTo(simple: boolean) {
|
goTo() {
|
||||||
let url = (simple) ? this.selectedEntitySimpleUrl : this.selectedEntityAdvancedUrl;
|
|
||||||
let parameterNames = [];
|
let parameterNames = [];
|
||||||
let parameterValues = [];
|
let parameterValues = [];
|
||||||
if (this.selectedEntity == "result") {
|
// if (this.selectedEntity == "result") {
|
||||||
if (this.resultTypes) {
|
// if (this.resultTypes) {
|
||||||
let values = [];
|
// let values = [];
|
||||||
for (let value of this.resultTypes.values) {
|
// for (let value of this.resultTypes.values) {
|
||||||
if (value.selected) {
|
// if (value.selected) {
|
||||||
values.push(value.id);
|
// values.push(value.id);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
if (values.length > 0 && values.length != 4) {
|
// if (values.length > 0 && values.length != 4) {
|
||||||
parameterNames.push("type");
|
// parameterNames.push("type");
|
||||||
parameterValues.push(values.join(","));
|
// parameterValues.push(values.join(","));
|
||||||
}
|
// }
|
||||||
|
// if (this.resultsQuickFilter && this.resultsQuickFilter.selected) {
|
||||||
|
// parameterNames.push(this.resultsQuickFilter.filterId);
|
||||||
|
// parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"');
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else if (this.selectedEntity == "all") {
|
||||||
if (this.resultsQuickFilter && this.resultsQuickFilter.selected) {
|
if (this.resultsQuickFilter && this.resultsQuickFilter.selected) {
|
||||||
parameterNames.push(this.resultsQuickFilter.filterId);
|
parameterNames.push(this.resultsQuickFilter.filterId);
|
||||||
parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"');
|
parameterValues.push('"' + encodeURIComponent(this.resultsQuickFilter.value) + '"');
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
} else if (this.selectedEntity == "all") {
|
|
||||||
if (this.resultsQuickFilter && this.resultsQuickFilter.selected) {
|
|
||||||
parameterNames.push(this.resultsQuickFilter.filterId);
|
|
||||||
parameterValues.push('"'+ encodeURIComponent(this.resultsQuickFilter.value)+'"');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.keyword.length > 0) {
|
if (this.keyword.length > 0) {
|
||||||
parameterNames.push("fv0");
|
parameterNames.push("fv0");
|
||||||
parameterValues.push(this.keyword);
|
parameterValues.push(this.keyword);
|
||||||
parameterNames.push("f0");
|
parameterNames.push("f0");
|
||||||
parameterValues.push("q");
|
parameterValues.push("q");
|
||||||
}
|
}
|
||||||
this._router.navigate([url], {queryParams: this.routerHelper.createQueryParams(parameterNames, parameterValues)});
|
this._router.navigate([this.properties.searchLinkToAll], {queryParams: this.routerHelper.createQueryParams(parameterNames, parameterValues)});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSubjectParameter(param) {
|
getSubjectParameter(param) {
|
||||||
return {'f0': 'resultsubject', 'fv0': '"' + (param) + '"', size: 50};
|
return {'f0': 'resultsubject', 'fv0': '"' + (param) + '"', size: 50};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// disableSelectChange(event: boolean) {
|
||||||
|
// this.disableSelect = event;
|
||||||
|
// this.cdr.detectChanges();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,10 @@ import { DataProvidersServiceModule} from '../openaireLibrary/services/dataProvi
|
||||||
import { SearchResearchResultsServiceModule} from '../openaireLibrary/services/searchResearchResultsService.module';
|
import { SearchResearchResultsServiceModule} from '../openaireLibrary/services/searchResearchResultsService.module';
|
||||||
import { ProjectsServiceModule} from '../openaireLibrary/services/projectsService.module';
|
import { ProjectsServiceModule} from '../openaireLibrary/services/projectsService.module';
|
||||||
import { OrganizationsServiceModule} from '../openaireLibrary/services/organizationsService.module';
|
import { OrganizationsServiceModule} from '../openaireLibrary/services/organizationsService.module';
|
||||||
import { PiwikServiceModule} from '../openaireLibrary/utils/piwik/piwikService.module';
|
|
||||||
|
|
||||||
import {HelperModule} from '../openaireLibrary/utils/helper/helper.module';
|
import {HelperModule} from '../openaireLibrary/utils/helper/helper.module';
|
||||||
|
|
||||||
import {RefineFieldResultsServiceModule} from '../openaireLibrary/services/refineFieldResultsService.module';
|
import {RefineFieldResultsServiceModule} from '../openaireLibrary/services/refineFieldResultsService.module';
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { SEOServiceModule } from '../openaireLibrary/sharedComponents/SEO/SEOService.module';
|
import { SEOServiceModule } from '../openaireLibrary/sharedComponents/SEO/SEOService.module';
|
||||||
|
|
||||||
import {OtherPortalsModule} from "../openaireLibrary/sharedComponents/other-portals/other-portals.module";
|
import {OtherPortalsModule} from "../openaireLibrary/sharedComponents/other-portals/other-portals.module";
|
||||||
|
@ -23,32 +21,33 @@ import {EntitiesSelectionModule} from "../openaireLibrary/searchPages/searchUtil
|
||||||
import {QuickSelectionsModule} from "../openaireLibrary/searchPages/searchUtils/quick-selections.module";
|
import {QuickSelectionsModule} from "../openaireLibrary/searchPages/searchUtils/quick-selections.module";
|
||||||
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
|
import {IconsModule} from "../openaireLibrary/utils/icons/icons.module";
|
||||||
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
import {IconsService} from "../openaireLibrary/utils/icons/icons.service";
|
||||||
import {arrow_right, book, cog, database, earth} from "../openaireLibrary/utils/icons/icons";
|
import {book, cog, database, earth} from "../openaireLibrary/utils/icons/icons";
|
||||||
import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers.module";
|
import {NumbersModule} from "../openaireLibrary/sharedComponents/numbers/numbers.module";
|
||||||
|
import {AdvancedSearchInputModule} from "../openaireLibrary/sharedComponents/advanced-search-input/advanced-search-input.module";
|
||||||
|
import {InputModule} from "../openaireLibrary/sharedComponents/input/input.module";
|
||||||
|
import {SearchInputModule} from "../openaireLibrary/sharedComponents/search-input/search-input.module";
|
||||||
|
import {SliderUtilsModule} from "../openaireLibrary/sharedComponents/slider-utils/slider-utils.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
HomeRoutingModule,
|
||||||
CommonModule, FormsModule, RouterModule,
|
CommonModule, FormsModule, RouterModule,
|
||||||
RefineFieldResultsServiceModule,
|
RefineFieldResultsServiceModule,
|
||||||
DataProvidersServiceModule, SearchResearchResultsServiceModule,
|
DataProvidersServiceModule, SearchResearchResultsServiceModule,
|
||||||
ProjectsServiceModule, OrganizationsServiceModule,
|
ProjectsServiceModule, OrganizationsServiceModule,
|
||||||
PiwikServiceModule,
|
|
||||||
HomeRoutingModule,
|
|
||||||
HelperModule,
|
HelperModule,
|
||||||
SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule
|
SEOServiceModule, OtherPortalsModule, EntitiesSelectionModule, QuickSelectionsModule, IconsModule, NumbersModule, AdvancedSearchInputModule, InputModule, SearchInputModule, SliderUtilsModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
HomeComponent
|
HomeComponent
|
||||||
],
|
],
|
||||||
providers:[
|
providers:[],
|
||||||
PreviousRouteRecorder
|
|
||||||
],
|
|
||||||
exports: [
|
exports: [
|
||||||
HomeComponent
|
HomeComponent
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class HomeModule {
|
export class HomeModule {
|
||||||
constructor(private iconsService: IconsService) {
|
constructor(private iconsService: IconsService) {
|
||||||
this.iconsService.registerIcons([arrow_right, book, cog, database, earth]);
|
this.iconsService.registerIcons([book, cog, database, earth]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { OpenaireDataProviderComponent } from './dataProvider.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireDataProviderComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class DataProviderRoutingModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-dataprovider',
|
|
||||||
template: `<dataprovider></dataprovider>`,
|
|
||||||
})
|
|
||||||
export class OpenaireDataProviderComponent{
|
|
||||||
constructor ( ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { DataProviderModule } from '../../openaireLibrary/landingPages/dataProvider/dataProvider.module';
|
|
||||||
import { OpenaireDataProviderComponent } from './dataProvider.component';
|
|
||||||
import {DataProviderRoutingModule} from './dataProvider-routing.module';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [DataProviderModule, DataProviderRoutingModule],
|
|
||||||
declarations:[OpenaireDataProviderComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireDataProviderComponent]
|
|
||||||
})
|
|
||||||
export class LibDataProviderModule { }
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import { OpenaireDatasetComponent } from './dataset.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireDatasetComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class DatasetRoutingModule { }
|
|
|
@ -1,7 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-dataset',
|
|
||||||
template: `<result-landing type="dataset"></result-landing>`,
|
|
||||||
})
|
|
||||||
export class OpenaireDatasetComponent{}
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { OpenaireDatasetComponent } from './dataset.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {DatasetRoutingModule} from './dataset-routing.module';
|
|
||||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
|
||||||
@NgModule({
|
|
||||||
imports: [DatasetRoutingModule, ResultLandingModule],
|
|
||||||
declarations:[OpenaireDatasetComponent],
|
|
||||||
providers:[PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireDatasetComponent]
|
|
||||||
})
|
|
||||||
export class LibDatasetModule { }
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import { OpenaireHtmlProjectReportComponent } from './htmlProjectReport.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireHtmlProjectReportComponent ,canDeactivate: [PreviousRouteRecorder]}
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class HtmlProjectReportRoutingModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-htmlProjectReport',
|
|
||||||
template: `<htmlProjectReport></htmlProjectReport>`,
|
|
||||||
})
|
|
||||||
export class OpenaireHtmlProjectReportComponent{
|
|
||||||
constructor ( ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { HtmlProjectReportModule } from '../../openaireLibrary/landingPages/htmlProjectReport/htmlProjectReport.module';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { OpenaireHtmlProjectReportComponent } from './htmlProjectReport.component';
|
|
||||||
import {HtmlProjectReportRoutingModule} from './htmlProjectReport-routing.module';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [HtmlProjectReportModule, HtmlProjectReportRoutingModule],
|
|
||||||
declarations:[OpenaireHtmlProjectReportComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireHtmlProjectReportComponent]
|
|
||||||
})
|
|
||||||
export class LibHtmlProjectReportModule { }
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { OrganizationModule } from '../../openaireLibrary/landingPages/organization/organization.module';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { OpenaireOrganizationComponent } from './organization.component';
|
|
||||||
import {OrganizationRoutingModule} from './organization-routing.module';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [OrganizationModule, OrganizationRoutingModule],
|
|
||||||
declarations:[OpenaireOrganizationComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireOrganizationComponent]
|
|
||||||
})
|
|
||||||
export class LibOrganizationModule { }
|
|
|
@ -1,18 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { OpenaireOrganizationComponent } from './organization.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireOrganizationComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class OrganizationRoutingModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-organization',
|
|
||||||
template: `<organization></organization>`,
|
|
||||||
})
|
|
||||||
export class OpenaireOrganizationComponent{
|
|
||||||
constructor ( ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { OpenaireOrpComponent } from './orp.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {OrpRoutingModule} from './orp-routing.module';
|
|
||||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
|
||||||
@NgModule({
|
|
||||||
imports: [OrpRoutingModule, ResultLandingModule],
|
|
||||||
declarations:[OpenaireOrpComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireOrpComponent]
|
|
||||||
})
|
|
||||||
export class LibOrpModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { OpenaireOrpComponent } from './orp.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireOrpComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class OrpRoutingModule { }
|
|
|
@ -1,7 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-orp',
|
|
||||||
template: `<result-landing type="orp"></result-landing>`,
|
|
||||||
})
|
|
||||||
export class OpenaireOrpComponent{}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { ProjectModule } from '../../openaireLibrary/landingPages/project/project.module';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { OpenaireProjectComponent } from './project.component';
|
|
||||||
import {ProjectRoutingModule} from './project-routing.module';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [ProjectModule, ProjectRoutingModule],
|
|
||||||
declarations:[OpenaireProjectComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireProjectComponent]
|
|
||||||
})
|
|
||||||
export class LibProjectModule { }
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { OpenaireProjectComponent } from './project.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireProjectComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class ProjectRoutingModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-project',
|
|
||||||
template: `<project></project>`,
|
|
||||||
})
|
|
||||||
export class OpenaireProjectComponent{
|
|
||||||
constructor ( ) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
ngOnInit() {
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { OpenairePublicationComponent } from './publication.component';
|
|
||||||
import {PublicationRoutingModule} from './publication-routing.module';
|
|
||||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [PublicationRoutingModule, ResultLandingModule],
|
|
||||||
declarations:[OpenairePublicationComponent],
|
|
||||||
providers:[ PreviousRouteRecorder],
|
|
||||||
exports:[OpenairePublicationComponent]
|
|
||||||
})
|
|
||||||
export class LibPublicationModule { }
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import {OpenairePublicationComponent } from './publication.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenairePublicationComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class PublicationRoutingModule { }
|
|
|
@ -1,8 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-publication',
|
|
||||||
template: `
|
|
||||||
<result-landing type="publication"></result-landing>`,
|
|
||||||
})
|
|
||||||
export class OpenairePublicationComponent {}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import {NgModule} from '@angular/core';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {OpenaireResultComponent} from './result.component';
|
|
||||||
import {ResultRoutingModule} from './result-routing.module';
|
|
||||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [ResultRoutingModule, ResultLandingModule],
|
|
||||||
declarations:[OpenaireResultComponent],
|
|
||||||
providers:[PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireResultComponent]
|
|
||||||
})
|
|
||||||
export class LibResultModule { }
|
|
|
@ -1,17 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import {OpenaireResultComponent } from './result.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireResultComponent, data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class ResultRoutingModule { }
|
|
|
@ -1,7 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-publication',
|
|
||||||
template: `<result-landing type="result"></result-landing>`,
|
|
||||||
})
|
|
||||||
export class OpenaireResultComponent{}
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import { OpenaireSoftwareComponent } from './software.component';
|
|
||||||
import {SoftwareRoutingModule} from './software-routing.module';
|
|
||||||
import {ResultLandingModule} from "../../openaireLibrary/landingPages/result/resultLanding.module";
|
|
||||||
@NgModule({
|
|
||||||
imports: [SoftwareRoutingModule, ResultLandingModule],
|
|
||||||
declarations:[OpenaireSoftwareComponent],
|
|
||||||
providers:[PreviousRouteRecorder],
|
|
||||||
exports:[OpenaireSoftwareComponent]
|
|
||||||
})
|
|
||||||
export class LibSoftwareModule { }
|
|
|
@ -1,14 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import {OpenaireSoftwareComponent } from './software.component';
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireSoftwareComponent, canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class SoftwareRoutingModule { }
|
|
|
@ -1,7 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-software',
|
|
||||||
template: `<result-landing type="software"></result-landing>`,
|
|
||||||
})
|
|
||||||
export class OpenaireSoftwareComponent{}
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { NgModule} from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
|
|
||||||
import {OpenaireUserComponent } from './user.component';
|
|
||||||
import { UserRoutingModule } from './user-routing.module';
|
|
||||||
import { UserModule} from '../openaireLibrary/login/user.module';
|
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule, FormsModule,
|
|
||||||
UserRoutingModule, UserModule
|
|
||||||
|
|
||||||
],
|
|
||||||
providers:[PreviousRouteRecorder],
|
|
||||||
declarations: [
|
|
||||||
OpenaireUserComponent
|
|
||||||
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class LibUserModule { }
|
|
|
@ -1,15 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import {OpenaireUserComponent } from './user.component';
|
|
||||||
import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireUserComponent, canDeactivate: [PreviousRouteRecorder]},
|
|
||||||
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class UserRoutingModule { }
|
|
|
@ -1,10 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-user',
|
|
||||||
template: `<user></user>`
|
|
||||||
})
|
|
||||||
|
|
||||||
export class OpenaireUserComponent {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 014dc9e5562890b61fbafa7705d2f31d0cbcdb74
|
Subproject commit b57c46d969f21eb355adcc7c255b89f3fb4d3c33
|
|
@ -1,20 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {OpenaireMyOrcidLinksComponent} from "./myOrcidLinks.component";
|
|
||||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireMyOrcidLinksComponent,
|
|
||||||
canActivate: [LoginGuard], data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},
|
|
||||||
canDeactivate: [PreviousRouteRecorder]
|
|
||||||
}
|
|
||||||
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class MyOrcidLinksRoutingModule { }
|
|
|
@ -1,16 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-my-orcid-links',
|
|
||||||
template: `
|
|
||||||
<my-orcid-links></my-orcid-links>
|
|
||||||
`
|
|
||||||
})
|
|
||||||
|
|
||||||
export class OpenaireMyOrcidLinksComponent {
|
|
||||||
|
|
||||||
constructor() {}
|
|
||||||
|
|
||||||
public ngOnInit() {}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {OpenaireMyOrcidLinksComponent} from './myOrcidLinks.component';
|
|
||||||
import {MyOrcidLinksModule} from "../../openaireLibrary/orcid/my-orcid-links/myOrcidLinks.module";
|
|
||||||
import {MyOrcidLinksRoutingModule} from "./myOrcidLinks-routing.module";
|
|
||||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule, FormsModule,
|
|
||||||
MyOrcidLinksModule,
|
|
||||||
MyOrcidLinksRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
OpenaireMyOrcidLinksComponent
|
|
||||||
],
|
|
||||||
exports: [
|
|
||||||
OpenaireMyOrcidLinksComponent
|
|
||||||
],
|
|
||||||
providers: [PreviousRouteRecorder, LoginGuard]
|
|
||||||
})
|
|
||||||
export class LibMyOrcidLinksModule { }
|
|
|
@ -1,20 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import {OpenaireOrcidComponent} from './orcid.component';
|
|
||||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
{ path: '', component: OpenaireOrcidComponent,
|
|
||||||
canActivate: [LoginGuard], data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},
|
|
||||||
canDeactivate: [PreviousRouteRecorder] }
|
|
||||||
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class OrcidRoutingModule { }
|
|
|
@ -1,10 +0,0 @@
|
||||||
import { Component } from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-orcid',
|
|
||||||
template: `
|
|
||||||
<orcid></orcid>
|
|
||||||
`
|
|
||||||
})
|
|
||||||
|
|
||||||
export class OpenaireOrcidComponent {}
|
|
|
@ -1,24 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
|
|
||||||
import {OpenaireOrcidComponent} from './orcid.component';
|
|
||||||
import {OrcidRoutingModule} from './orcid-routing.module';
|
|
||||||
import {PreviousRouteRecorder} from "../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {FormsModule} from "@angular/forms";
|
|
||||||
import {OrcidModule} from "../openaireLibrary/orcid/orcid.module";
|
|
||||||
import {LoginGuard} from "../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule, FormsModule,
|
|
||||||
OrcidModule, OrcidRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
OpenaireOrcidComponent
|
|
||||||
],
|
|
||||||
providers: [PreviousRouteRecorder, LoginGuard],
|
|
||||||
exports: [
|
|
||||||
OpenaireOrcidComponent
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class LibOrcidModule { }
|
|
|
@ -1,23 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
|
|
||||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
|
|
||||||
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
|
|
||||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
RouterModule.forChild([
|
|
||||||
// { path: '', component: OpenaireSearchMyResultsInOrcidComponent, canActivate: [IsRouteEnabled], data: {
|
|
||||||
{ path: '', component: OpenaireSearchRecommendedResultsForOrcidComponent,
|
|
||||||
canActivate: [LoginGuard], data: {
|
|
||||||
redirect: '/error', community : 'openaire'
|
|
||||||
},
|
|
||||||
canDeactivate: [PreviousRouteRecorder]
|
|
||||||
}
|
|
||||||
|
|
||||||
])
|
|
||||||
]
|
|
||||||
})
|
|
||||||
export class SearchRecommendedResultsForOrcidRoutingModule { }
|
|
|
@ -1,16 +0,0 @@
|
||||||
import {Component} from '@angular/core';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'openaire-search-recommended-results-for-orcid',
|
|
||||||
template: `
|
|
||||||
<search-recommended-results-for-orcid></search-recommended-results-for-orcid>
|
|
||||||
`
|
|
||||||
})
|
|
||||||
|
|
||||||
export class OpenaireSearchRecommendedResultsForOrcidComponent {
|
|
||||||
|
|
||||||
constructor() {}
|
|
||||||
|
|
||||||
public ngOnInit() {}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { FormsModule } from '@angular/forms';
|
|
||||||
import {OpenaireSearchRecommendedResultsForOrcidComponent} from "./searchRecommendedResultsForOrcid.component";
|
|
||||||
import {PreviousRouteRecorder} from "../../openaireLibrary/utils/piwik/previousRouteRecorder.guard";
|
|
||||||
import {IsRouteEnabled} from "../../openaireLibrary/error/isRouteEnabled.guard";
|
|
||||||
import {SearchRecommendedResultsForOrcidModule} from "../../openaireLibrary/orcid/recommend-orcid-links/searchRecommendedResultsForOrcid.module";
|
|
||||||
import {SearchRecommendedResultsForOrcidRoutingModule} from "./searchRecommendedResultsForOrcid-routing.module";
|
|
||||||
import {FreeGuard} from "../../openaireLibrary/login/freeGuard.guard";
|
|
||||||
import {LoginGuard} from "../../openaireLibrary/login/loginGuard.guard";
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule, FormsModule,
|
|
||||||
SearchRecommendedResultsForOrcidModule,
|
|
||||||
SearchRecommendedResultsForOrcidRoutingModule
|
|
||||||
],
|
|
||||||
declarations: [
|
|
||||||
OpenaireSearchRecommendedResultsForOrcidComponent
|
|
||||||
],
|
|
||||||
exports: [
|
|
||||||
OpenaireSearchRecommendedResultsForOrcidComponent
|
|
||||||
],
|
|
||||||
// providers: [PreviousRouteRecorder, IsRouteEnabled]
|
|
||||||
providers: [PreviousRouteRecorder, LoginGuard]
|
|
||||||
})
|
|
||||||
export class LibSearchRecommendedResultsForOrcidModule { }
|
|
|
@ -1,18 +0,0 @@
|
||||||
import {NgModule} from '@angular/core';
|
|
||||||
import {CommonModule} from '@angular/common';
|
|
||||||
import {FormsModule} from '@angular/forms';
|
|
||||||
import {RouterModule} from '@angular/router';
|
|
||||||
|
|
||||||
import {ReloadModule} from '../openaireLibrary/reload/reload.module';
|
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
imports: [
|
|
||||||
CommonModule, FormsModule, RouterModule, ReloadModule
|
|
||||||
],
|
|
||||||
declarations: [],
|
|
||||||
providers: [],
|
|
||||||
exports: []
|
|
||||||
})
|
|
||||||
export class LibReloadModule {
|
|
||||||
}
|
|
|
@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import{OpenaireAdvancedSearchDataProvidersComponent} from './advancedSearchDataProviders.component';
|
import{OpenaireAdvancedSearchDataProvidersComponent} from './advancedSearchDataProviders.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,7 +10,7 @@ import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousR
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireAdvancedSearchDataProvidersComponent, data: {
|
{ path: '', component: OpenaireAdvancedSearchDataProvidersComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireAdvancedSearchOrganizationsComponent} from './advancedSearchOrganizations.component';
|
import{OpenaireAdvancedSearchOrganizationsComponent} from './advancedSearchOrganizations.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireAdvancedSearchOrganizationsComponent, data: {
|
{ path: '', component: OpenaireAdvancedSearchOrganizationsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
},canDeactivate: [PreviousRouteRecorder]}
|
},canDeactivate: [PreviousRouteRecorder]}
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -9,10 +9,9 @@ import {SearchOrganizationsModule} from "../../openaireLibrary/searchPages/searc
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
AdvancedSearchOrganizationsRoutingModule,
|
||||||
CommonModule, FormsModule,
|
CommonModule, FormsModule,
|
||||||
SearchOrganizationsModule,
|
SearchOrganizationsModule
|
||||||
AdvancedSearchOrganizationsRoutingModule
|
|
||||||
|
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireAdvancedSearchOrganizationsComponent
|
OpenaireAdvancedSearchOrganizationsComponent
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireAdvancedSearchProjectsComponent} from './advancedSearchProjects.component';
|
import{OpenaireAdvancedSearchProjectsComponent} from './advancedSearchProjects.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireAdvancedSearchProjectsComponent, data: {
|
{ path: '', component: OpenaireAdvancedSearchProjectsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -8,10 +8,9 @@ import {SearchProjectsModule} from "../../openaireLibrary/searchPages/searchProj
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
AdvancedSearchProjectsRoutingModule,
|
||||||
CommonModule, FormsModule,
|
CommonModule, FormsModule,
|
||||||
SearchProjectsModule,
|
SearchProjectsModule
|
||||||
AdvancedSearchProjectsRoutingModule
|
|
||||||
|
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireAdvancedSearchProjectsComponent
|
OpenaireAdvancedSearchProjectsComponent
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
|
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchResearchResultsComponent, data: {
|
{ path: '', component: OpenaireSearchResearchResultsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { FormsModule } from '@angular/forms';
|
||||||
import{ SearchResearchResultsRoutingModule} from './searchResearchResults-routing.module';
|
import{ SearchResearchResultsRoutingModule} from './searchResearchResults-routing.module';
|
||||||
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
|
import{OpenaireSearchResearchResultsComponent} from './searchResearchResults.component';
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {SearchResearchResultsModule} from "../../openaireLibrary/searchPages/searchResearchResults.module";
|
import {SearchResearchResultsModule} from "../../openaireLibrary/searchPages/searchResearchResults.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -17,7 +16,7 @@ import {SearchResearchResultsModule} from "../../openaireLibrary/searchPages/sea
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchResearchResultsComponent
|
OpenaireSearchResearchResultsComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchResearchResultsComponent
|
OpenaireSearchResearchResultsComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component';
|
import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchCompatibleDataprovidersComponent, data: {
|
{ path: '', component: OpenaireSearchCompatibleDataprovidersComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -5,8 +5,6 @@ import { FormsModule } from '@angular/forms';
|
||||||
import{ CompatibleDataProvidersRoutingModule} from './compatibleDataProviders-routing.module';
|
import{ CompatibleDataProvidersRoutingModule} from './compatibleDataProviders-routing.module';
|
||||||
import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component';
|
import{OpenaireSearchCompatibleDataprovidersComponent} from './compatibleDataProviders.component';
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -18,7 +16,7 @@ import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searc
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchCompatibleDataprovidersComponent
|
OpenaireSearchCompatibleDataprovidersComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchCompatibleDataprovidersComponent
|
OpenaireSearchCompatibleDataprovidersComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,12 +3,13 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component';
|
import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchEntityRegistriesComponent, data: {
|
{ path: '', component: OpenaireSearchEntityRegistriesComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { FormsModule } from '@angular/forms';
|
||||||
|
|
||||||
import{ EntityRegistriesRoutingModule} from './entityRegistries-routing.module';
|
import{ EntityRegistriesRoutingModule} from './entityRegistries-routing.module';
|
||||||
import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component';
|
import{OpenaireSearchEntityRegistriesComponent} from './entityRegistries.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
|
|
||||||
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
||||||
|
|
||||||
|
@ -17,7 +16,7 @@ import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searc
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchEntityRegistriesComponent
|
OpenaireSearchEntityRegistriesComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchEntityRegistriesComponent
|
OpenaireSearchEntityRegistriesComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchJournalsComponent} from './journals.component';
|
import{OpenaireSearchJournalsComponent} from './journals.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchJournalsComponent, data: {
|
{ path: '', component: OpenaireSearchJournalsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { FormsModule } from '@angular/forms';
|
||||||
|
|
||||||
import{ JournalsRoutingModule} from './journals-routing.module';
|
import{ JournalsRoutingModule} from './journals-routing.module';
|
||||||
import{OpenaireSearchJournalsComponent} from './journals.component';
|
import{OpenaireSearchJournalsComponent} from './journals.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searchDataProviders.module";
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -14,7 +13,7 @@ import {SearchDataProvidersModule} from "../../openaireLibrary/searchPages/searc
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchJournalsComponent
|
OpenaireSearchJournalsComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchJournalsComponent
|
OpenaireSearchJournalsComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchDataprovidersComponent} from './searchDataproviders.component';
|
import{OpenaireSearchDataprovidersComponent} from './searchDataproviders.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchDataprovidersComponent, data: {
|
{ path: '', component: OpenaireSearchDataprovidersComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -3,7 +3,6 @@ import { CommonModule } from '@angular/common';
|
||||||
import { FormsModule } from '@angular/forms';
|
import { FormsModule } from '@angular/forms';
|
||||||
import {OpenaireSearchDataprovidersComponent} from './searchDataproviders.component';
|
import {OpenaireSearchDataprovidersComponent} from './searchDataproviders.component';
|
||||||
import{ SearchDataProvidersRoutingModule} from './searchDataProviders-routing.module';
|
import{ SearchDataProvidersRoutingModule} from './searchDataProviders-routing.module';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {SearchDataProvidersModule} from '../../openaireLibrary/searchPages/searchDataProviders.module';
|
import {SearchDataProvidersModule} from '../../openaireLibrary/searchPages/searchDataProviders.module';
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
|
@ -14,7 +13,7 @@ SearchDataProvidersModule, SearchDataProvidersRoutingModule
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchDataprovidersComponent
|
OpenaireSearchDataprovidersComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchDataprovidersComponent
|
OpenaireSearchDataprovidersComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -4,6 +4,7 @@ import { RouterModule } from '@angular/router';
|
||||||
import{OpenaireSearchOrganizationsComponent} from './searchOrganizations.component';
|
import{OpenaireSearchOrganizationsComponent} from './searchOrganizations.component';
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousR
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchOrganizationsComponent, data: {
|
{ path: '', component: OpenaireSearchOrganizationsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { FormsModule } from '@angular/forms';
|
||||||
import{ SearchOrganizationsRoutingModule} from './searchOrganizations-routing.module';
|
import{ SearchOrganizationsRoutingModule} from './searchOrganizations-routing.module';
|
||||||
import{OpenaireSearchOrganizationsComponent} from './searchOrganizations.component';
|
import{OpenaireSearchOrganizationsComponent} from './searchOrganizations.component';
|
||||||
|
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
|
||||||
import {SearchOrganizationsModule} from "../../openaireLibrary/searchPages/searchOrganizations.module";
|
import {SearchOrganizationsModule} from "../../openaireLibrary/searchPages/searchOrganizations.module";
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,7 +17,7 @@ import {SearchOrganizationsModule} from "../../openaireLibrary/searchPages/searc
|
||||||
declarations: [
|
declarations: [
|
||||||
OpenaireSearchOrganizationsComponent
|
OpenaireSearchOrganizationsComponent
|
||||||
],
|
],
|
||||||
providers:[PreviousRouteRecorder],
|
providers:[],
|
||||||
exports: [
|
exports: [
|
||||||
OpenaireSearchOrganizationsComponent
|
OpenaireSearchOrganizationsComponent
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,13 +3,14 @@ import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import{OpenaireSearchProjectsComponent} from './searchProjects.component';
|
import{OpenaireSearchProjectsComponent} from './searchProjects.component';
|
||||||
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard';
|
||||||
|
import {properties} from "../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
RouterModule.forChild([
|
RouterModule.forChild([
|
||||||
{ path: '', component: OpenaireSearchProjectsComponent, data: {
|
{ path: '', component: OpenaireSearchProjectsComponent, data: {
|
||||||
redirect: '/error', community : 'openaire'
|
redirect: properties.errorLink, community : 'openaire'
|
||||||
}, canDeactivate: [PreviousRouteRecorder] }
|
}, canDeactivate: [PreviousRouteRecorder] }
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue