[Usage-Statistics | Trunk]: Finish the firsy two sections of home. Add menu items.

This commit is contained in:
k.triantafyllou 2020-06-16 17:08:31 +00:00
parent 6522f2c99f
commit efd2836011
18 changed files with 1999 additions and 204 deletions

View File

@ -5,6 +5,7 @@ import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
import {User} from './openaireLibrary/login/utils/helper.class';
import {UserManagementService} from './openaireLibrary/services/user-management.service';
import {properties} from "../environments/environment";
import {BehaviorSubject} from "rxjs";
declare var UIkit: any;
@ -22,14 +23,13 @@ export class AppComponent implements OnInit {
properties: EnvProperties = properties;
showMenu: boolean = false;
user: User;
isHome: boolean = true;
isHome: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);
constructor(private route: ActivatedRoute,
private router: Router,
private userManagementService: UserManagementService) {
private router: Router) {
this.router.events.subscribe(event => {
if(event instanceof NavigationStart) {
//this.isHome = event.url === '/';
if (event instanceof NavigationStart) {
this.isHome.next(event.url === '/');
}
})
}
@ -38,10 +38,44 @@ export class AppComponent implements OnInit {
this.logInUrl = this.properties.loginUrl;
this.logOutUrl = this.properties.logoutUrl;
this.showMenu = true;
this.userManagementService.getUserInfo().subscribe(user => {
this.user = user;
this.menuItems = [];
this.userMenuItems = [];
this.isHome.asObservable().subscribe(isHome => {
this.buildMenu(isHome);
});
}
buildMenu(isHome) {
if(!isHome) {
this.menuItems = [
{
rootItem: new MenuItem("home", "Home", "", "", false, [], null, {}),
items: [
new MenuItem("intro", "Usage Statistics Intro", "", "/", false, [], null, {}),
new MenuItem("countries", "Track Countries Usage Activity", "", "/", false, [], null, {slide: 2}),
/*
new MenuItem("chart", "Monthly Usage Events", "", "/", false, [], null, {slide: 3})
*/
]
},
{
rootItem: new MenuItem("about", "About", "", "/about", false, [], null, {}),
items: []
},
{
rootItem: new MenuItem("resources", "Resources", "", "/resources", false, [], null, {}),
items: []
}
];
} else {
this.menuItems = [
{
rootItem: new MenuItem("about", "About", "", "/about", false, [], null, {}),
items: []
},
{
rootItem: new MenuItem("resources", "Resources", "", "/resources", false, [], null, {}),
items: []
}
];
}
}
}

View File

@ -0,0 +1,6 @@
export interface UsageStat {
country: string;
total_repositories: string;
total_views: string;
total_downloads: string;
}

View File

@ -5,3 +5,41 @@
background-position: center top;
height: 336px;
}
.second {
background-image: url("/assets/usage-statistics-assets/home/2.svg");
background-size: contain;
background-repeat: no-repeat;
background-position: top center;
min-height: 60vh;
}
.second input, .second input:focus {
background: #FFFFFF 0 0 no-repeat padding-box;
box-shadow: 0 3px 6px #00000029;
border-radius: 4px;
padding: 15px;
border: none;
outline: none;
}
a.search, a.search:hover {
color: #333333;
font-weight: 700;
}
.second .card {
background: #FFFFFF 0 0 no-repeat padding-box;
box-shadow: 0 3px 6px #00000029;
border-radius: 4px;
padding: 50px;
text-align: center;
position: relative;
}
.second .card > img {
position: absolute;
bottom: 0;
left: 50%;
transform: translate(-50%, 50%);
}

View File

@ -1,6 +1,6 @@
<ng-template #first>
<div class="uk-section">
<div class="uk-container uk-container-large">
<div class="uk-container">
<div class="uk-grid uk-flex uk-flex-top" uk-grid>
<div class="uk-width-1-2@m">
<h1 class="uk-text-bold">OpenAIRE Usage Statistics Service</h1>
@ -21,11 +21,82 @@
</div>
</div>
</ng-template>
<fp-slider class="uk-visible@m">
<ng-template #second>
<div class="uk-section uk-text-center">
<h3>Track Countries Usage Activity</h3>
<div class="second">
<div class="uk-container uk-container-small">
<div class="uk-flex uk-flex-middle uk-align-center uk-margin-large-bottom">
<input type="text" class="uk-width-4-5"
placeholder="SEARCH FOR A COUNTRY"
aria-label="Number"
[formControl]="countryFb"
[matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let option of countries | async" [value]="option">
{{option}}
</mat-option>
</mat-autocomplete>
<a class="uk-width-1-6 uk-margin-medium-left search" (click)="search()">
<img src="assets/usage-statistics-assets/home/search.svg">
<span class="uk-text-small uk-text-uppercase">search</span>
</a>
</div>
<div class="uk-text-bold uk-margin-medium-bottom">
<div class="uk-text-uppercase">{{(country) ? country : 'world wide'}}</div>
<div class="uk-text-muted uk-text-uppercase uk-text-small">Results</div>
</div>
<div *ngIf="display" class="uk-grid uk-child-width-1-3@m uk-child-width-1-2@s uk-text-bold uk-grid-large" uk-grid>
<div *ngIf="display.total_repositories">
<div class="card">
<div class="uk-margin-medium-bottom">
Repositories
</div>
<h3>
{{display.total_repositories | number}}
</h3>
<img src="assets/usage-statistics-assets/home/4.svg">
</div>
</div>
<div *ngIf="display.total_views">
<div class="card">
<div class="uk-margin-medium-bottom">
Views
</div>
<h3>
{{display.total_views | number}}
</h3>
<img src="assets/usage-statistics-assets/home/5.svg">
</div>
</div>
<div *ngIf="display.total_downloads">
<div class="card">
<div class="uk-margin-medium-bottom">
Downloads
</div>
<h3>
{{display.total_downloads | number}}
</h3>
<img src="assets/usage-statistics-assets/home/6.svg">
</div>
</div>
</div>
<div *ngIf="!display" class="card uk-text-bold">
No results found for that country
</div>
</div>
</div>
</div>
</ng-template>
<fp-slider class="uk-visible@m" [initSlide]="initSlide">
<slide>
<ng-container *ngTemplateOutlet="first"></ng-container>
</slide>
<slide>
<ng-container *ngTemplateOutlet="second"></ng-container>
</slide>
</fp-slider>
<div class="uk-hidden@m uk-margin-left uk-margin-right">
<ng-container *ngTemplateOutlet="first"></ng-container>
<ng-container *ngTemplateOutlet="second"></ng-container>
</div>

View File

@ -1,76 +1,53 @@
import {Component} from "@angular/core";
import {animate, state, style, transition, trigger} from "@angular/animations";
import {Component, OnInit} from "@angular/core";
import {UsageStatsService} from "../services/usage-stats.service";
import {UsageStat} from "../entities/usage-stat";
import {countries} from "../services/countries";
import {FormControl} from "@angular/forms";
import {Observable} from "rxjs";
import {map, startWith} from "rxjs/operators";
import {ActivatedRoute} from "@angular/router";
@Component({
selector: 'home',
templateUrl: 'home.component.html',
styleUrls: ['home.component.css'],
animations: [
trigger('1', [
state('1', style({
transform: 'translate(-50%, -50%)'
})),
state('2', style({
transform: 'translate(-50%, -250%)'
})),
state('3', style({
transform: 'translate(-50%, -450%)'
})),
transition('* => *', [
animate('1s')
])
]),
trigger('2', [
state('1', style({
transform: 'translate(-50%, 150%)'
})),
state('2', style({
transform: 'translate(-50%, -50%)'
})),
state('3', style({
transform: 'translate(-50%, -250%)'
})),
transition('* => *', [
animate('1s')
])
]),
trigger('3', [
state('1', style({
transform: 'translate(-50%, 250%)'
})),
state('2', style({
transform: 'translate(-50%, 150%)'
})),
state('3', style({
transform: 'translate(-50%, -50%)'
})),
transition('* => *', [
animate('1s')
])
])
]
})
export class HomeComponent {
export class HomeComponent implements OnInit{
public animate: boolean = false;
public slide = 1;
public stats: UsageStat[] = [];
public countryFb: FormControl = new FormControl();
public countries: Observable<string[]>;
public country: String;
public display: UsageStat;
public initSlide: number = 1;
onWheel(event) {
if (!this.animate) {
this.animate = true;
if (event.deltaY > 0 && (this.slide < 3)) {
this.slide++;
setTimeout(() => {
this.animate = false;
}, 1000);
} else if (event.deltaY < 0 && (this.slide !== 1)) {
this.slide--;
setTimeout(() => {
this.animate = false;
}, 1000);
} else {
this.animate = false;
constructor(private usageStatsService: UsageStatsService,
private route: ActivatedRoute) {}
ngOnInit() {
this.route.queryParams.subscribe(params => {
if(params['slide']) {
this.initSlide = params['slide'];
}
}
});
this.usageStatsService.getUsageStats().subscribe(stats => {
this.stats = stats;
this.search();
});
this.countries = this.countryFb.valueChanges
.pipe(
startWith(''),
map(value => this._filter(value))
);
}
public search() {
this.country = this.countryFb.value;
this.display = this.stats.filter(stat => !this.country || stat.country === this.country)[0];
}
private _filter(value: string): string[] {
const filterValue = value.toLowerCase();
return countries.map(value => value.name).filter(option => option.toLowerCase().includes(filterValue));
}
}

View File

@ -3,6 +3,10 @@ import {HomeComponent} from "./home.component";
import {CommonModule} from "@angular/common";
import {RouterModule} from "@angular/router";
import {FullPageSliderModule} from "../openaireLibrary/utils/full-page-slider/full-page-slider.module";
import {MatAutocompleteModule} from "@angular/material/autocomplete";
import {ReactiveFormsModule} from "@angular/forms";
import {MatFormFieldModule} from "@angular/material/form-field";
import {MatInputModule} from "@angular/material/input";
@NgModule({
imports: [
@ -10,11 +14,14 @@ import {FullPageSliderModule} from "../openaireLibrary/utils/full-page-slider/fu
RouterModule.forChild([{
path: '', component: HomeComponent
}]),
FullPageSliderModule
FullPageSliderModule,
MatAutocompleteModule,
ReactiveFormsModule,
MatFormFieldModule,
MatInputModule
],
declarations: [HomeComponent],
exports: [HomeComponent]
})
export class HomeModule {
export class HomeModule{
}

View File

@ -0,0 +1,245 @@
export const countries = [
{name: 'Afghanistan', code: 'AF'},
{name: 'Åland Islands', code: 'AX'},
{name: 'Albania', code: 'AL'},
{name: 'Algeria', code: 'DZ'},
{name: 'American Samoa', code: 'AS'},
{name: 'AndorrA', code: 'AD'},
{name: 'Angola', code: 'AO'},
{name: 'Anguilla', code: 'AI'},
{name: 'Antarctica', code: 'AQ'},
{name: 'Antigua and Barbuda', code: 'AG'},
{name: 'Argentina', code: 'AR'},
{name: 'Armenia', code: 'AM'},
{name: 'Aruba', code: 'AW'},
{name: 'Australia', code: 'AU'},
{name: 'Austria', code: 'AT'},
{name: 'Azerbaijan', code: 'AZ'},
{name: 'Bahamas', code: 'BS'},
{name: 'Bahrain', code: 'BH'},
{name: 'Bangladesh', code: 'BD'},
{name: 'Barbados', code: 'BB'},
{name: 'Belarus', code: 'BY'},
{name: 'Belgium', code: 'BE'},
{name: 'Belize', code: 'BZ'},
{name: 'Benin', code: 'BJ'},
{name: 'Bermuda', code: 'BM'},
{name: 'Bhutan', code: 'BT'},
{name: 'Bolivia', code: 'BO'},
{name: 'Bosnia and Herzegovina', code: 'BA'},
{name: 'Botswana', code: 'BW'},
{name: 'Bouvet Island', code: 'BV'},
{name: 'Brazil', code: 'BR'},
{name: 'British Indian Ocean Territory', code: 'IO'},
{name: 'Brunei Darussalam', code: 'BN'},
{name: 'Bulgaria', code: 'BG'},
{name: 'Burkina Faso', code: 'BF'},
{name: 'Burundi', code: 'BI'},
{name: 'Cambodia', code: 'KH'},
{name: 'Cameroon', code: 'CM'},
{name: 'Canada', code: 'CA'},
{name: 'Cape Verde', code: 'CV'},
{name: 'Cayman Islands', code: 'KY'},
{name: 'Central African Republic', code: 'CF'},
{name: 'Chad', code: 'TD'},
{name: 'Chile', code: 'CL'},
{name: 'China', code: 'CN'},
{name: 'Christmas Island', code: 'CX'},
{name: 'Cocos (Keeling) Islands', code: 'CC'},
{name: 'Colombia', code: 'CO'},
{name: 'Comoros', code: 'KM'},
{name: 'Congo', code: 'CG'},
{name: 'Congo, The Democratic Republic of the', code: 'CD'},
{name: 'Cook Islands', code: 'CK'},
{name: 'Costa Rica', code: 'CR'},
{name: 'Cote D\'Ivoire', code: 'CI'},
{name: 'Croatia', code: 'HR'},
{name: 'Cuba', code: 'CU'},
{name: 'Cyprus', code: 'CY'},
{name: 'Czech Republic', code: 'CZ'},
{name: 'Denmark', code: 'DK'},
{name: 'Djibouti', code: 'DJ'},
{name: 'Dominica', code: 'DM'},
{name: 'Dominican Republic', code: 'DO'},
{name: 'Ecuador', code: 'EC'},
{name: 'Egypt', code: 'EG'},
{name: 'El Salvador', code: 'SV'},
{name: 'Equatorial Guinea', code: 'GQ'},
{name: 'Eritrea', code: 'ER'},
{name: 'Estonia', code: 'EE'},
{name: 'Ethiopia', code: 'ET'},
{name: 'Falkland Islands (Malvinas)', code: 'FK'},
{name: 'Faroe Islands', code: 'FO'},
{name: 'Fiji', code: 'FJ'},
{name: 'Finland', code: 'FI'},
{name: 'France', code: 'FR'},
{name: 'French Guiana', code: 'GF'},
{name: 'French Polynesia', code: 'PF'},
{name: 'French Southern Territories', code: 'TF'},
{name: 'Gabon', code: 'GA'},
{name: 'Gambia', code: 'GM'},
{name: 'Georgia', code: 'GE'},
{name: 'Germany', code: 'DE'},
{name: 'Ghana', code: 'GH'},
{name: 'Gibraltar', code: 'GI'},
{name: 'Greece', code: 'GR'},
{name: 'Greenland', code: 'GL'},
{name: 'Grenada', code: 'GD'},
{name: 'Guadeloupe', code: 'GP'},
{name: 'Guam', code: 'GU'},
{name: 'Guatemala', code: 'GT'},
{name: 'Guernsey', code: 'GG'},
{name: 'Guinea', code: 'GN'},
{name: 'Guinea-Bissau', code: 'GW'},
{name: 'Guyana', code: 'GY'},
{name: 'Haiti', code: 'HT'},
{name: 'Heard Island and Mcdonald Islands', code: 'HM'},
{name: 'Holy See (Vatican City State)', code: 'VA'},
{name: 'Honduras', code: 'HN'},
{name: 'Hong Kong', code: 'HK'},
{name: 'Hungary', code: 'HU'},
{name: 'Iceland', code: 'IS'},
{name: 'India', code: 'IN'},
{name: 'Indonesia', code: 'ID'},
{name: 'Iran, Islamic Republic Of', code: 'IR'},
{name: 'Iraq', code: 'IQ'},
{name: 'Ireland', code: 'IE'},
{name: 'Isle of Man', code: 'IM'},
{name: 'Israel', code: 'IL'},
{name: 'Italy', code: 'IT'},
{name: 'Jamaica', code: 'JM'},
{name: 'Japan', code: 'JP'},
{name: 'Jersey', code: 'JE'},
{name: 'Jordan', code: 'JO'},
{name: 'Kazakhstan', code: 'KZ'},
{name: 'Kenya', code: 'KE'},
{name: 'Kiribati', code: 'KI'},
{name: 'Korea, Democratic People\'S Republic of', code: 'KP'},
{name: 'Korea, Republic of', code: 'KR'},
{name: 'Kuwait', code: 'KW'},
{name: 'Kyrgyzstan', code: 'KG'},
{name: 'Lao People\'S Democratic Republic', code: 'LA'},
{name: 'Latvia', code: 'LV'},
{name: 'Lebanon', code: 'LB'},
{name: 'Lesotho', code: 'LS'},
{name: 'Liberia', code: 'LR'},
{name: 'Libyan Arab Jamahiriya', code: 'LY'},
{name: 'Liechtenstein', code: 'LI'},
{name: 'Lithuania', code: 'LT'},
{name: 'Luxembourg', code: 'LU'},
{name: 'Macao', code: 'MO'},
{name: 'Macedonia, The Former Yugoslav Republic of', code: 'MK'},
{name: 'Madagascar', code: 'MG'},
{name: 'Malawi', code: 'MW'},
{name: 'Malaysia', code: 'MY'},
{name: 'Maldives', code: 'MV'},
{name: 'Mali', code: 'ML'},
{name: 'Malta', code: 'MT'},
{name: 'Marshall Islands', code: 'MH'},
{name: 'Martinique', code: 'MQ'},
{name: 'Mauritania', code: 'MR'},
{name: 'Mauritius', code: 'MU'},
{name: 'Mayotte', code: 'YT'},
{name: 'Mexico', code: 'MX'},
{name: 'Micronesia, Federated States of', code: 'FM'},
{name: 'Moldova, Republic of', code: 'MD'},
{name: 'Monaco', code: 'MC'},
{name: 'Mongolia', code: 'MN'},
{name: 'Montserrat', code: 'MS'},
{name: 'Morocco', code: 'MA'},
{name: 'Mozambique', code: 'MZ'},
{name: 'Myanmar', code: 'MM'},
{name: 'Namibia', code: 'NA'},
{name: 'Nauru', code: 'NR'},
{name: 'Nepal', code: 'NP'},
{name: 'Netherlands', code: 'NL'},
{name: 'Netherlands Antilles', code: 'AN'},
{name: 'New Caledonia', code: 'NC'},
{name: 'New Zealand', code: 'NZ'},
{name: 'Nicaragua', code: 'NI'},
{name: 'Niger', code: 'NE'},
{name: 'Nigeria', code: 'NG'},
{name: 'Niue', code: 'NU'},
{name: 'Norfolk Island', code: 'NF'},
{name: 'Northern Mariana Islands', code: 'MP'},
{name: 'Norway', code: 'NO'},
{name: 'Oman', code: 'OM'},
{name: 'Pakistan', code: 'PK'},
{name: 'Palau', code: 'PW'},
{name: 'Palestinian Territory, Occupied', code: 'PS'},
{name: 'Panama', code: 'PA'},
{name: 'Papua New Guinea', code: 'PG'},
{name: 'Paraguay', code: 'PY'},
{name: 'Peru', code: 'PE'},
{name: 'Philippines', code: 'PH'},
{name: 'Pitcairn', code: 'PN'},
{name: 'Poland', code: 'PL'},
{name: 'Portugal', code: 'PT'},
{name: 'Puerto Rico', code: 'PR'},
{name: 'Qatar', code: 'QA'},
{name: 'Reunion', code: 'RE'},
{name: 'Romania', code: 'RO'},
{name: 'Russian Federation', code: 'RU'},
{name: 'RWANDA', code: 'RW'},
{name: 'Saint Helena', code: 'SH'},
{name: 'Saint Kitts and Nevis', code: 'KN'},
{name: 'Saint Lucia', code: 'LC'},
{name: 'Saint Pierre and Miquelon', code: 'PM'},
{name: 'Saint Vincent and the Grenadines', code: 'VC'},
{name: 'Samoa', code: 'WS'},
{name: 'San Marino', code: 'SM'},
{name: 'Sao Tome and Principe', code: 'ST'},
{name: 'Saudi Arabia', code: 'SA'},
{name: 'Senegal', code: 'SN'},
{name: 'Serbia and Montenegro', code: 'CS'},
{name: 'Seychelles', code: 'SC'},
{name: 'Sierra Leone', code: 'SL'},
{name: 'Singapore', code: 'SG'},
{name: 'Slovakia', code: 'SK'},
{name: 'Slovenia', code: 'SI'},
{name: 'Solomon Islands', code: 'SB'},
{name: 'Somalia', code: 'SO'},
{name: 'South Africa', code: 'ZA'},
{name: 'South Georgia and the South Sandwich Islands', code: 'GS'},
{name: 'Spain', code: 'ES'},
{name: 'Sri Lanka', code: 'LK'},
{name: 'Sudan', code: 'SD'},
{name: 'Suriname', code: 'SR'},
{name: 'Svalbard and Jan Mayen', code: 'SJ'},
{name: 'Swaziland', code: 'SZ'},
{name: 'Sweden', code: 'SE'},
{name: 'Switzerland', code: 'CH'},
{name: 'Syrian Arab Republic', code: 'SY'},
{name: 'Taiwan, Province of China', code: 'TW'},
{name: 'Tajikistan', code: 'TJ'},
{name: 'Tanzania, United Republic of', code: 'TZ'},
{name: 'Thailand', code: 'TH'},
{name: 'Timor-Leste', code: 'TL'},
{name: 'Togo', code: 'TG'},
{name: 'Tokelau', code: 'TK'},
{name: 'Tonga', code: 'TO'},
{name: 'Trinidad and Tobago', code: 'TT'},
{name: 'Tunisia', code: 'TN'},
{name: 'Turkey', code: 'TR'},
{name: 'Turkmenistan', code: 'TM'},
{name: 'Turks and Caicos Islands', code: 'TC'},
{name: 'Tuvalu', code: 'TV'},
{name: 'Uganda', code: 'UG'},
{name: 'Ukraine', code: 'UA'},
{name: 'United Arab Emirates', code: 'AE'},
{name: 'United Kingdom', code: 'GB'},
{name: 'United States', code: 'US'},
{name: 'United States Minor Outlying Islands', code: 'UM'},
{name: 'Uruguay', code: 'UY'},
{name: 'Uzbekistan', code: 'UZ'},
{name: 'Vanuatu', code: 'VU'},
{name: 'Venezuela', code: 'VE'},
{name: 'Viet Nam', code: 'VN'},
{name: 'Virgin Islands, British', code: 'VG'},
{name: 'Virgin Islands, U.S.', code: 'VI'},
{name: 'Wallis and Futuna', code: 'WF'},
{name: 'Western Sahara', code: 'EH'},
{name: 'Yemen', code: 'YE'},
{name: 'Zambia', code: 'ZM'},
{name: 'Zimbabwe', code: 'ZW'}
]

View File

@ -0,0 +1,82 @@
import {UsageStat} from "../entities/usage-stat";
export const usageStats: UsageStat[] = [
{
country: "all",
total_repositories: "146",
total_views: "1048848445",
total_downloads: "449040672"
},
{
country: "Argentina",
total_repositories: "1",
total_views: "29887623",
total_downloads: "4978695"
},
{
country: "Belgium",
total_repositories: "1",
total_views: "148167939",
total_downloads: "23609189"
},
{
country: "Colombia",
total_repositories: "1",
total_views: "3869367",
total_downloads: "4522021"
},
{
country: "Croatia",
total_repositories: "1",
total_views: "3500741",
total_downloads: "690373"
},
{
country: "France",
total_repositories: "3",
total_views: "21116458",
total_downloads: "2754498"
},
{
country: "Germany",
total_repositories: "4",
total_views: "63102058",
total_downloads: "16305145"
},
{
country: "Italy",
total_repositories: "1",
total_views: "3046747",
total_downloads: "1338795"
},
{
country: "Portugal",
total_repositories: "35",
total_views: "335856506",
total_downloads: "65435037"
},
{
country: "Serbia",
total_repositories: "12",
total_views: "19518768",
total_downloads: "1999046"
},
{
country: "Spain",
total_repositories: "5",
total_views: "124446360",
total_downloads: "67580526"
},
{
country: "Switzerland",
total_repositories: "2",
total_views: "296335878",
total_downloads: "47218378"
},
{
country: "United Kingdom",
total_repositories: "80",
total_views: "0",
total_downloads: "212608969"
}
];

View File

@ -0,0 +1,21 @@
import {Injectable} from "@angular/core";
import {HttpClient} from "@angular/common/http";
import {UsageStat} from "../entities/usage-stat";
import {BehaviorSubject, Observable} from "rxjs";
import {usageStats} from "./usage-stats-dump";
@Injectable({
providedIn: "root"
})
export class UsageStatsService {
private usageStats: BehaviorSubject<UsageStat[]>;
constructor(private http: HttpClient) {
this.usageStats = new BehaviorSubject<UsageStat[]>(usageStats);
}
getUsageStats(): Observable<UsageStat[]> {
return this.usageStats.asObservable();
}
}

View File

@ -1,102 +0,0 @@
{
"environment":"development",
"enablePiwikTrack" : false,
"useCache" : false,
"metricsAPIURL" : "https://beta.services.openaire.eu/usagestats/",
"framesAPIURL" : "https://beta.openaire.eu/stats3/",
"claimsAPIURL" : "http://dl170.madgik.di.uoa.gr:8180/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/",
"statisticsAPIURL" : "https://beta.services.openaire.eu/stats-api/",
"statisticsFrameAPIURL":"https://beta.openaire.eu/stats/",
"statisticsFrameNewAPIURL": "http://marilyn.athenarc.gr:8080/stats-api/",
"useNewStatistisTool":false,
"searchAPIURLLAst" : "https://beta.services.openaire.eu/search/v2/api/",
"searchResourcesAPIURL" : "https://beta.services.openaire.eu/search/v2/api/resources",
"openCitationsAPIURL" : "https://services.openaire.eu/opencitations/getCitations?id=",
"csvAPIURL" : "http://rudie.di.uoa.gr:8080/dnet-functionality-services-2.0.0-SNAPSHOT/rest/v2/reports",
"searchCrossrefAPIURL" : "https://api.crossref.org/works",
"searchDataciteAPIURL" : "https://api.datacite.org/works",
"searchOrcidURL" : "https://pub.orcid.org/",
"orcidURL" : "https://orcid.org/",
"doiURL" : "https://dx.doi.org/",
"cordisURL" : "http://cordis.europa.eu/projects/",
"openDoarURL": "http://v2.sherpa.ac.uk/id/repository/",
"r3DataURL": "http://service.re3data.org/repository/",
"sherpaURL": "http://www.sherpa.ac.uk/romeo/search.php?issn=",
"zenodo" : "https://zenodo.org/",
"zenodoCommunities" : "https://zenodo.org/api/communities/",
"openAccess" : "https://www.openaire.eu/support/faq#article-id-234",
"openAccessRepo" : "https://www.openaire.eu/support/faq#article-id-310",
"fp7Guidlines" : "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme",
"h2020Guidlines" : "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020",
"ercGuidlines" : "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf",
"helpdesk" : "https://www.openaire.eu/support/helpdesk",
"helpdeskEmail": "helpdesk@openaire.eu",
"utilsService" : "http://mpagasas.di.uoa.gr:8000",
"vocabulariesAPI" :"https://beta.services.openaire.eu/provision/mvc/vocabularies/",
"piwikBaseUrl" :" https://analytics.openaire.eu/piwik.php?idsite=6",
"loginUrl" :"http://dl170.madgik.di.uoa.gr:8180/dnet-login/openid_connect_login",
"userInfoUrl" : "http://dl170.madgik.di.uoa.gr:8180/dnet-openaire-users-1.0.0-SNAPSHOT/api/users/getUserInfo?accessToken=",
"logoutUrl" :"https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=",
"cookieDomain" :".di.uoa.gr",
"feedbackmail" :"openaire.test@gmail.com",
"feedbackmailForMissingEntities" :"feedback@openaire.eu",
"cacheUrl" :"http://scoobydoo.di.uoa.gr:3000/get?url=",
"adminToolsAPIURL" :"http://duffy.di.uoa.gr:8080/uoa-admin-tools/",
"adminToolsCommunity" :"openaire",
"communityAPI": "https://dev-openaire.d4science.org/openaire/community/",
"miningBackendURL": "https://beta.services.openaire.eu/interactive-mining",
"csvLimit": 2000,
"pagingLimit": 20,
"resultsPerPage": 10,
"baseLink" : "https://demo.openaire.eu",
"baseOpenaireLink" : "https://beta.explore.openaire.eu",
"searchLinkToPublication" : "/search/publication?articleId=",
"searchLinkToProject" : "/search/project?projectId=",
"searchLinkToDataProvider" : "/search/dataprovider?datasourceId=",
"searchLinkToDataset" : "/search/dataset?datasetId=",
"searchLinkToOrganization" : "/search/organization?organizationId=",
"searchLinkToPublications" : "/search/find/publications",
"searchLinkToDataProviders" : "/search/find/dataproviders",
"searchLinkToProjects" : "/search/find/projects",
"searchLinkToDatasets" : "/search/find/datasets",
"searchLinkToSoftware" : "/search/find/software",
"searchLinkToOrganizations" : "/search/find/organizations",
"searchLinkToCompatibleDataProviders" : "/search/content-providers",
"searchLinkToEntityRegistriesDataProviders" : "/search/entity-registries",
"searchLinkToEntityRegistriesDataProvidersTable" : "/search/entity-registries-table",
"searchLinkToJournals" : "/search/journals",
"searchLinkToJournalsTable" : "/search/journals-table",
"searchLinkToAdvancedPublications" : "/search/advanced/publications",
"searchLinkToAdvancedProjects" : "/search/advanced/projects",
"searchLinkToAdvancedDatasets" : "/search/advanced/datasets",
"searchLinkToAdvancedSoftware" : "/search/advanced/software",
"searchLinkToAdvancedDataProviders" : "/search/advanced/dataproviders",
"searchLinkToAdvancedOrganizations" : "/search/advanced/organizations",
"sendMailUrl": "http://duffy.di.uoa.gr:8080/uoa-admin-tools/sendMail",
"notifyForNewManagers": "http://duffy.di.uoa.gr:8080/uoa-admin-tools/notifyForNewManagers/",
"notifyForNewSubscribers": "http://duffy.di.uoa.gr:8080/uoa-admin-tools/notifyForNewSubscribers/",
"lastIndexInformationLink" : "https://www.openaire.eu/aggregation-and-content-provision-workflows",
"showLastIndexInformationLink" : false,
"widgetLink" : "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=",
"claimsInformationLink": "https://www.openaire.eu/linking-beta",
"lastIndexUpdate": "2019-05-16",
"indexInfoAPI": "http://beta.services.openaire.eu/openaire/info/",
"admins" : ["kostis30fylloy@gmail.com"],
"adminPortalURL": "https://beta.admin.connect.openaire.eu"
}

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 177 KiB

View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" width="774.918" height="524.574" viewBox="0 0 774.918 524.574">
<g id="Group_3101" data-name="Group 3101" transform="translate(-313.57 -185.225)">
<path id="Path_17210" data-name="Path 17210" d="M226.039,119.789a72.814,72.814,0,0,0-30.892-38.86,62.41,62.41,0,0,0-5.836-3.236,72.206,72.206,0,0,0-31.1-7.492h-1.09a72.688,72.688,0,0,0-46.29,128.651,73.468,73.468,0,0,0,7.185,5.242,72.688,72.688,0,0,0,108.025-84.3ZM157.1,184.544A41.544,41.544,0,1,1,198.641,143,41.544,41.544,0,0,1,157.1,184.544Z" transform="translate(304.271 115.025)" fill="#4687e6"/>
<path id="Path_17205" data-name="Path 17205" d="M422.615,374.751l-34.464-30.795-35.418-31.65-61.19-54.658L274.427,242.34,238.96,210.66" transform="translate(17.412 438.913) rotate(-20)" fill="none" stroke="#09091e" stroke-miterlimit="10" stroke-width="1"/>
<path id="Path_17204" data-name="Path 17204" d="M434.678,283.139l-36.728-13.6-37.744-13.98L295,231.415l-18.24-6.762-37.8-13.993" transform="matrix(0.891, 0.454, -0.454, 0.891, 234.282, 175.495)" fill="none" stroke="#09091e" stroke-miterlimit="10" stroke-width="2"/>
<path id="Path_17207" data-name="Path 17207" d="M519.555,336.774,466.9,313.106l-54.113-24.325L319.3,246.773l-26.151-11.766L238.96,210.66" transform="translate(642.233 163.117) rotate(87)" fill="none" stroke="#09091e" stroke-miterlimit="10" stroke-width="3"/>
<path id="Path_16423" data-name="Path 16423" d="M331.578,102.724a20.4,20.4,0,1,1-20.4-20.4A20.4,20.4,0,0,1,331.578,102.724Z" transform="translate(756.91 457.045)" fill="#e95420" opacity="0.8"/>
<path id="Path_17208" data-name="Path 17208" d="M369.544,121.707A39.387,39.387,0,1,1,330.157,82.32,39.387,39.387,0,0,1,369.544,121.707Z" transform="translate(718.944 482.045)" fill="#222080" opacity="0.8"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" width="61.956" height="88.45" viewBox="0 0 61.956 88.45">
<g id="Group_3066" data-name="Group 3066" transform="translate(-299.402 -477.62)">
<g id="Path_17184" data-name="Path 17184" transform="translate(330.38 504.115) rotate(45)" fill="#4687e6">
<path d="M 0.7209541201591492 43.08832931518555 L 9.984533309936523 9.984533309936523 L 43.08832931518555 0.7209541201591492 L 33.82474899291992 33.82474899291992 L 0.7209541201591492 43.08832931518555 Z" stroke="none"/>
<path d="M 42.36736297607422 1.441921234130859 L 10.39022064208984 10.39022064208984 L 1.441921234130859 42.36736297607422 L 33.41905975341797 33.41905975341797 L 42.36736297607422 1.441921234130859 M 43.80928039550781 3.814697265625e-06 L 34.23043060302734 34.23043060302734 L 3.814697265625e-06 43.80928039550781 L 9.578853607177734 9.578853607177734 L 43.80928039550781 3.814697265625e-06 Z" stroke="none" fill="#d5e4f8"/>
</g>
<g id="Path_17185" data-name="Path 17185" transform="translate(330.38 491.357) rotate(45)" fill="#4687e6">
<path d="M 0.7209541201591492 43.08832931518555 L 9.984533309936523 9.984533309936523 L 43.08832931518555 0.7209541201591492 L 33.82474899291992 33.82474899291992 L 0.7209541201591492 43.08832931518555 Z" stroke="none"/>
<path d="M 42.36736297607422 1.441921234130859 L 10.39022064208984 10.39022064208984 L 1.441921234130859 42.36736297607422 L 33.41905975341797 33.41905975341797 L 42.36736297607422 1.441921234130859 M 43.80928039550781 3.814697265625e-06 L 34.23043060302734 34.23043060302734 L 3.814697265625e-06 43.80928039550781 L 9.578853607177734 9.578853607177734 L 43.80928039550781 3.814697265625e-06 Z" stroke="none" fill="#d5e4f8"/>
</g>
<g id="Path_17186" data-name="Path 17186" transform="translate(330.38 477.62) rotate(45)" fill="#4687e6">
<path d="M 0.7209541201591492 43.08832931518555 L 9.984533309936523 9.984533309936523 L 43.08832931518555 0.7209541201591492 L 33.82474899291992 33.82474899291992 L 0.7209541201591492 43.08832931518555 Z" stroke="none"/>
<path d="M 42.36736297607422 1.441921234130859 L 10.39022064208984 10.39022064208984 L 1.441921234130859 42.36736297607422 L 33.41905975341797 33.41905975341797 L 42.36736297607422 1.441921234130859 M 43.80928039550781 3.814697265625e-06 L 34.23043060302734 34.23043060302734 L 3.814697265625e-06 43.80928039550781 L 9.578853607177734 9.578853607177734 L 43.80928039550781 3.814697265625e-06 Z" stroke="none" fill="#d5e4f8"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="86.469" height="65.999" viewBox="0 0 86.469 65.999">
<path id="icon6" d="M4890.5-10575a54.984,54.984,0,0,1-16.772-2.593,48,48,0,0,1-14.013-7.072,35.044,35.044,0,0,1-9.613-10.489,25.373,25.373,0,0,1-3.569-12.846,25.369,25.369,0,0,1,3.569-12.845,35.052,35.052,0,0,1,9.613-10.489,48,48,0,0,1,14.013-7.071A54.976,54.976,0,0,1,4890.5-10641a52.913,52.913,0,0,1,16.544,2.594,44.621,44.621,0,0,1,13.509,7.071,33.842,33.842,0,0,1,9.108,10.49A26.6,26.6,0,0,1,4933-10608a26.6,26.6,0,0,1-3.34,12.845,33.824,33.824,0,0,1-9.108,10.49,44.614,44.614,0,0,1-13.509,7.072A52.917,52.917,0,0,1,4890.5-10575Zm-.5-56.569a23.411,23.411,0,0,0-9.176,1.853,23.422,23.422,0,0,0-7.491,5.051,23.494,23.494,0,0,0-5.053,7.493,23.43,23.43,0,0,0-1.851,9.173,23.449,23.449,0,0,0,1.851,9.177,23.481,23.481,0,0,0,5.053,7.49,23.438,23.438,0,0,0,7.491,5.053,23.467,23.467,0,0,0,9.176,1.854,23.467,23.467,0,0,0,9.176-1.854,23.438,23.438,0,0,0,7.491-5.053,23.481,23.481,0,0,0,5.053-7.49,23.447,23.447,0,0,0,1.853-9.177,23.431,23.431,0,0,0-1.853-9.173,23.515,23.515,0,0,0-5.053-7.493,23.422,23.422,0,0,0-7.491-5.051A23.411,23.411,0,0,0,4890-10631.57Zm0,33.672a10.114,10.114,0,0,1-10.1-10.1,10.112,10.112,0,0,1,10.1-10.1,10.112,10.112,0,0,1,10.1,10.1A10.114,10.114,0,0,1,4890-10597.9Z" transform="translate(-4846.532 10641)" fill="#4687e6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="53.2" height="67.999" viewBox="0 0 53.2 67.999">
<g id="icon7" transform="translate(-761.5 -507.5)">
<path id="Polygon_7" data-name="Polygon 7" d="M19,0,38,29H0Z" transform="translate(807.1 567.5) rotate(180)" fill="#4687e6"/>
<line id="Line_414" data-name="Line 414" x1="53.2" transform="translate(761.5 573.999)" fill="none" stroke="#4687e6" stroke-width="3"/>
<rect id="Rectangle_2202" data-name="Rectangle 2202" width="10" height="30" transform="translate(783.1 507.5)" fill="#4687e6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 566 B

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="56" height="56" viewBox="0 0 56 56">
<g id="search" transform="translate(-964 -174)">
<circle id="Ellipse_361" data-name="Ellipse 361" cx="28" cy="28" r="28" transform="translate(964 174)" fill="#fff"/>
<path id="search-2" data-name="search" d="M13.981,12.278,10.563,9.371a1.527,1.527,0,0,0-1.037-.45,5.411,5.411,0,1,0-.606.606,1.527,1.527,0,0,0,.45,1.037l2.907,3.418a1.212,1.212,0,1,0,1.7-1.7ZM5.41,9.017A3.607,3.607,0,1,1,9.017,5.41,3.607,3.607,0,0,1,5.41,9.017Z" transform="translate(985.001 195.001)" fill="#e95420"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 593 B

View File

@ -2,30 +2,29 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<base href="/">
<title>OpenAIRE | Usage Statistics</title>
<meta charset="UTF-8">
<link rel="apple-touch-icon" sizes="57x57" href="assets/common-assets/logo/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="assets/common-assets/logo/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="assets/common-assets/logo/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="assets/common-assets/logo/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="assets/common-assets/logo/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="assets/common-assets/logo/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="assets/common-assets/logo/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="assets/common-assets/logo/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="assets/common-assets/logo/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="assets/common-assets/logo/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="assets/common-assets/logo/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="assets/common-assets/logo/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="assets/common-assets/logo/favicon-16x16.png">
<link href="assets/common-assets/logo/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
<meta name="robots" content="noindex">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://cdn.ckeditor.com/4.5.11/full-all/ckeditor.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<link rel="apple-touch-icon" sizes="57x57" href="assets/common-assets/logo/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="assets/common-assets/logo/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="assets/common-assets/logo/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="assets/common-assets/logo/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="assets/common-assets/logo/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="assets/common-assets/logo/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="assets/common-assets/logo/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="assets/common-assets/logo/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="assets/common-assets/logo/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="assets/common-assets/logo/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="assets/common-assets/logo/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="assets/common-assets/logo/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="assets/common-assets/logo/favicon-16x16.png">
<link href="assets/common-assets/logo/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon"/>
<meta name="robots" content="noindex">
<script src="https://cdn.ckeditor.com/4.5.11/full-all/ckeditor.js"></script>
</head>
<body>
<app></app>
<app></app>
</body>
</html>

View File

@ -13,10 +13,10 @@ body, html {
height: 100%;
}
body {
main {
background-color: #F9FBFC;
color: #333333;
min-height: 100vh;
min-height: calc(100vh - 100px);
font-size: 16px;
line-height: 21px;
}