diff --git a/package-lock.json b/package-lock.json
index fd7de6331..8cf9342a7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2968,6 +2968,14 @@
"safer-buffer": "^2.1.0"
}
},
+ "echarts": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.8.0.tgz",
+ "integrity": "sha512-YwShpug8fWngj/RlgxDaYrLBoD+LsZUArrusjNPHpAF+is+gGe38xx4W848AwWMGoi745t3OXM52JedNrv+F6g==",
+ "requires": {
+ "zrender": "4.3.1"
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -6869,6 +6877,11 @@
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
"dev": true
},
+ "ngx-echarts": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ngx-echarts/-/ngx-echarts-5.0.0.tgz",
+ "integrity": "sha512-Ln+ex5PJJt+yztQIybTM2vf5JPHe36IrhdCNZL/FCYbIzHjnjXeK1ImCwh7GfpmlaT62B/3ZASBwouhsPOplRQ=="
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -11217,6 +11230,11 @@
"version": "0.8.29",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.29.tgz",
"integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ=="
+ },
+ "zrender": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.1.tgz",
+ "integrity": "sha512-CeH2TpJeCdG0TAGYoPSAcFX2ogdug1K7LIn9UO/q9HWqQ54gWhrMAlDP9AwWYMUDhrPe4VeazQ4DW3msD96nUQ=="
}
}
}
diff --git a/package.json b/package.json
index 7b87eca66..d27923a59 100644
--- a/package.json
+++ b/package.json
@@ -23,11 +23,13 @@
"@highcharts/map-collection": "^1.1.2",
"core-js": "^2.5.4",
"dom-to-image": "^2.6.0",
+ "echarts": "^4.8.0",
"font-awesome": "^4.7.0",
"highcharts": "^7.2.0",
"highcharts-angular": "^2.4.0",
"jquery": "^3.4.1",
"jspdf": "^1.5.3",
+ "ngx-echarts": "^5.0.0",
"proj4": "^2.5.0",
"rxjs": "~6.3.3",
"uikit": "^3.2.1",
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 269a1ddde..c4520ad0a 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -4,6 +4,7 @@ import { HomeComponent } from './pages/home/home.component';
import { CountriesMapOverviewComponent } from './pages/home/countries-map-overview.component';
import { CountryPageComponent } from './pages/countrypage/country-page.component';
import { MethodologyPageComponent } from './pages/methodology/methodology.component';
+import { ContinentOverviewComponent } from './pages/continentoverview/continent-overview.component';
const routes: Routes = [
{
@@ -19,6 +20,10 @@ const routes: Routes = [
path: 'overview-map-embed',
component: CountriesMapOverviewComponent
},
+ {
+ path: 'overview/:continentName',
+ component: ContinentOverviewComponent
+ },
{
path: 'countryDashboard/:countryName',
component: CountryPageComponent
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index d338cc0e6..2b8097022 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -14,14 +14,22 @@ import { CountryPageComponent } from './pages/countrypage/country-page.component
import { CountryMapComponent } from './pages/countrypage/country-map.component';
import { GaugeChartComponent } from './pages/home/gauge-chart.component';
import { MethodologyPageComponent } from './pages/methodology/methodology.component';
+import { ContinentOverviewComponent } from './pages/continentoverview/continent-overview.component';
+import { EuropeMapOverviewComponent } from './pages/home/europe-map-overview.component';
+import { DataHandlerService } from './services/data-handler.service';
+
+import { NgxEchartsModule } from 'ngx-echarts';
+import * as echarts from 'echarts';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
+ ContinentOverviewComponent,
CountriesTableComponent,
DataViewComponent,
CountriesMapOverviewComponent,
+ EuropeMapOverviewComponent,
CountryPageComponent,
CountryMapComponent,
GaugeChartComponent,
@@ -31,10 +39,14 @@ import { MethodologyPageComponent } from './pages/methodology/methodology.compon
BrowserModule,
AppRoutingModule,
ReusableComponentsModule,
+ NgxEchartsModule.forRoot({
+ echarts
+ }),
HighchartsChartModule
],
providers: [
- DataService
+ DataService,
+ DataHandlerService
],
bootstrap: [AppComponent]
})
diff --git a/src/app/domain/countries-lat-lon.ts b/src/app/domain/countries-lat-lon.ts
new file mode 100644
index 000000000..c11674554
--- /dev/null
+++ b/src/app/domain/countries-lat-lon.ts
@@ -0,0 +1,243 @@
+export const latlong = new Map()
+ .set('AD', {latitude: 42.5, longitude: 1.5})
+ .set('AE', {latitude: 24, longitude: 54})
+ .set('AD', {latitude: 42.5, longitude: 1.5})
+ .set('AE', {latitude: 24, longitude: 54})
+ .set('AF', {latitude: 33, longitude: 65})
+ .set('AG', {latitude: 17.05, longitude: -61.8})
+ .set('AI', {latitude: 18.25, longitude: -63.1667})
+ .set('AL', {latitude: 41, longitude: 20})
+ .set('AM', {latitude: 40, longitude: 45})
+ .set('AN', {latitude: 12.25, longitude: -68.75})
+ .set('AO', {latitude: -12.5, longitude: 18.5})
+ .set('AP', {latitude: 35, longitude: 105})
+ .set('AQ', {latitude: -90, longitude: 0})
+ .set('AR', {latitude: -34, longitude: -64})
+ .set('AS', {latitude: -14.3333, longitude: -170})
+ .set('AT', {latitude: 47.3333, longitude: 13.3333})
+ .set('AU', {latitude: -27, longitude: 133})
+ .set('AW', {latitude: 12.5, longitude: -69.9667})
+ .set('AZ', {latitude: 40.5, longitude: 47.5})
+ .set('BA', {latitude: 44, longitude: 18})
+ .set('BB', {latitude: 13.1667, longitude: -59.5333})
+ .set('BD', {latitude: 24, longitude: 90})
+ .set('BE', {latitude: 50.8333, longitude: 4})
+ .set('BF', {latitude: 13, longitude: -2})
+ .set('BG', {latitude: 43, longitude: 25})
+ .set('BH', {latitude: 26, longitude: 50.55})
+ .set('BI', {latitude: -3.5, longitude: 30})
+ .set('BJ', {latitude: 9.5, longitude: 2.25})
+ .set('BM', {latitude: 32.3333, longitude: -64.75})
+ .set('BN', {latitude: 4.5, longitude: 114.6667})
+ .set('BO', {latitude: -17, longitude: -65})
+ .set('BR', {latitude: -10, longitude: -55})
+ .set('BS', {latitude: 24.25, longitude: -76})
+ .set('BT', {latitude: 27.5, longitude: 90.5})
+ .set('BV', {latitude: -54.4333, longitude: 3.4})
+ .set('BW', {latitude: -22, longitude: 24})
+ .set('BY', {latitude: 53, longitude: 28})
+ .set('BZ', {latitude: 17.25, longitude: -88.75})
+ .set('CA', {latitude: 54, longitude: -100})
+ .set('CC', {latitude: -12.5, longitude: 96.8333})
+ .set('CD', {latitude: 0, longitude: 25})
+ .set('CF', {latitude: 7, longitude: 21})
+ .set('CG', {latitude: -1, longitude: 15})
+ .set('CH', {latitude: 47, longitude: 8})
+ .set('CI', {latitude: 8, longitude: -5})
+ .set('CK', {latitude: -21.2333, longitude: -159.7667})
+ .set('CL', {latitude: -30, longitude: -71})
+ .set('CM', {latitude: 6, longitude: 12})
+ .set('CN', {latitude: 35, longitude: 105})
+ .set('CO', {latitude: 4, longitude: -72})
+ .set('CR', {latitude: 10, longitude: -84})
+ .set('CU', {latitude: 21.5, longitude: -80})
+ .set('CV', {latitude: 16, longitude: -24})
+ .set('CX', {latitude: -10.5, longitude: 105.6667})
+ .set('CY', {latitude: 35, longitude: 33})
+ .set('CZ', {latitude: 49.75, longitude: 15.5})
+ .set('DE', {latitude: 51, longitude: 9})
+ .set('DJ', {latitude: 11.5, longitude: 43})
+ .set('DK', {latitude: 56, longitude: 10})
+ .set('DM', {latitude: 15.4167, longitude: -61.3333})
+ .set('DO', {latitude: 19, longitude: -70.6667})
+ .set('DZ', {latitude: 28, longitude: 3})
+ .set('EC', {latitude: -2, longitude: -77.5})
+ .set('EE', {latitude: 59, longitude: 26})
+ .set('EG', {latitude: 27, longitude: 30})
+ .set('EH', {latitude: 24.5, longitude: -13})
+ .set('ER', {latitude: 15, longitude: 39})
+ .set('ES', {latitude: 40, longitude: -4})
+ .set('ET', {latitude: 8, longitude: 38})
+ .set('EU', {latitude: 47, longitude: 8})
+ .set('FI', {latitude: 62, longitude: 26})
+ .set('FJ', {latitude: -18, longitude: 175})
+ .set('FK', {latitude: -51.75, longitude: -59})
+ .set('FM', {latitude: 6.9167, longitude: 158.25})
+ .set('FO', {latitude: 62, longitude: -7})
+ .set('FR', {latitude: 46, longitude: 2})
+ .set('GA', {latitude: -1, longitude: 11.75})
+ .set('GB', {latitude: 54, longitude: -2})
+ .set('GD', {latitude: 12.1167, longitude: -61.6667})
+ .set('GE', {latitude: 42, longitude: 43.5})
+ .set('GF', {latitude: 4, longitude: -53})
+ .set('GH', {latitude: 8, longitude: -2})
+ .set('GI', {latitude: 36.1833, longitude: -5.3667})
+ .set('GL', {latitude: 72, longitude: -40})
+ .set('GM', {latitude: 13.4667, longitude: -16.5667})
+ .set('GN', {latitude: 11, longitude: -10})
+ .set('GP', {latitude: 16.25, longitude: -61.5833})
+ .set('GQ', {latitude: 2, longitude: 10})
+ .set('GR', {latitude: 39, longitude: 22})
+ .set('GS', {latitude: -54.5, longitude: -37})
+ .set('GT', {latitude: 15.5, longitude: -90.25})
+ .set('GU', {latitude: 13.4667, longitude: 144.7833})
+ .set('GW', {latitude: 12, longitude: -15})
+ .set('GY', {latitude: 5, longitude: -59})
+ .set('HK', {latitude: 22.25, longitude: 114.1667})
+ .set('HM', {latitude: -53.1, longitude: 72.5167})
+ .set('HN', {latitude: 15, longitude: -86.5})
+ .set('HR', {latitude: 45.1667, longitude: 15.5})
+ .set('HT', {latitude: 19, longitude: -72.4167})
+ .set('HU', {latitude: 47, longitude: 20})
+ .set('ID', {latitude: -5, longitude: 120})
+ .set('IE', {latitude: 53, longitude: -8})
+ .set('IL', {latitude: 31.5, longitude: 34.75})
+ .set('IN', {latitude: 20, longitude: 77})
+ .set('IO', {latitude: -6, longitude: 71.5})
+ .set('IQ', {latitude: 33, longitude: 44})
+ .set('IR', {latitude: 32, longitude: 53})
+ .set('IS', {latitude: 65, longitude: -18})
+ .set('IT', {latitude: 42.8333, longitude: 12.8333})
+ .set('JM', {latitude: 18.25, longitude: -77.5})
+ .set('JO', {latitude: 31, longitude: 36})
+ .set('JP', {latitude: 36, longitude: 138})
+ .set('KE', {latitude: 1, longitude: 38})
+ .set('KG', {latitude: 41, longitude: 75})
+ .set('KH', {latitude: 13, longitude: 105})
+ .set('KI', {latitude: 1.4167, longitude: 173})
+ .set('KM', {latitude: -12.1667, longitude: 44.25})
+ .set('KN', {latitude: 17.3333, longitude: -62.75})
+ .set('KP', {latitude: 40, longitude: 127})
+ .set('KR', {latitude: 37, longitude: 127.5})
+ .set('KW', {latitude: 29.3375, longitude: 47.6581})
+ .set('KY', {latitude: 19.5, longitude: -80.5})
+ .set('KZ', {latitude: 48, longitude: 68})
+ .set('LA', {latitude: 18, longitude: 105})
+ .set('LB', {latitude: 33.8333, longitude: 35.8333})
+ .set('LC', {latitude: 13.8833, longitude: -61.1333})
+ .set('LI', {latitude: 47.1667, longitude: 9.5333})
+ .set('LK', {latitude: 7, longitude: 81})
+ .set('LR', {latitude: 6.5, longitude: -9.5})
+ .set('LS', {latitude: -29.5, longitude: 28.5})
+ .set('LT', {latitude: 55, longitude: 24})
+ .set('LU', {latitude: 49.75, longitude: 6})
+ .set('LV', {latitude: 57, longitude: 25})
+ .set('LY', {latitude: 25, longitude: 17})
+ .set('MA', {latitude: 32, longitude: -5})
+ .set('MC', {latitude: 43.7333, longitude: 7.4})
+ .set('MD', {latitude: 47, longitude: 29})
+ .set('ME', {latitude: 42.5, longitude: 19.4})
+ .set('MG', {latitude: -20, longitude: 47})
+ .set('MH', {latitude: 9, longitude: 168})
+ .set('MK', {latitude: 41.8333, longitude: 22})
+ .set('ML', {latitude: 17, longitude: -4})
+ .set('MM', {latitude: 22, longitude: 98})
+ .set('MN', {latitude: 46, longitude: 105})
+ .set('MO', {latitude: 22.1667, longitude: 113.55})
+ .set('MP', {latitude: 15.2, longitude: 145.75})
+ .set('MQ', {latitude: 14.6667, longitude: -61})
+ .set('MR', {latitude: 20, longitude: -12})
+ .set('MS', {latitude: 16.75, longitude: -62.2})
+ .set('MT', {latitude: 35.8333, longitude: 14.5833})
+ .set('MU', {latitude: -20.2833, longitude: 57.55})
+ .set('MV', {latitude: 3.25, longitude: 73})
+ .set('MW', {latitude: -13.5, longitude: 34})
+ .set('MX', {latitude: 23, longitude: -102})
+ .set('MY', {latitude: 2.5, longitude: 112.5})
+ .set('MZ', {latitude: -18.25, longitude: 35})
+ .set('NA', {latitude: -22, longitude: 17})
+ .set('NC', {latitude: -21.5, longitude: 165.5})
+ .set('NE', {latitude: 16, longitude: 8})
+ .set('NF', {latitude: -29.0333, longitude: 167.95})
+ .set('NG', {latitude: 10, longitude: 8})
+ .set('NI', {latitude: 13, longitude: -85})
+ .set('NL', {latitude: 52.5, longitude: 5.75})
+ .set('NO', {latitude: 62, longitude: 10})
+ .set('NP', {latitude: 28, longitude: 84})
+ .set('NR', {latitude: -0.5333, longitude: 166.9167})
+ .set('NU', {latitude: -19.0333, longitude: -169.8667})
+ .set('NZ', {latitude: -41, longitude: 174})
+ .set('OM', {latitude: 21, longitude: 57})
+ .set('PA', {latitude: 9, longitude: -80})
+ .set('PE', {latitude: -10, longitude: -76})
+ .set('PF', {latitude: -15, longitude: -140})
+ .set('PG', {latitude: -6, longitude: 147})
+ .set('PH', {latitude: 13, longitude: 122})
+ .set('PK', {latitude: 30, longitude: 70})
+ .set('PL', {latitude: 52, longitude: 20})
+ .set('PM', {latitude: 46.8333, longitude: -56.3333})
+ .set('PR', {latitude: 18.25, longitude: -66.5})
+ .set('PS', {latitude: 32, longitude: 35.25})
+ .set('PT', {latitude: 39.5, longitude: -8})
+ .set('PW', {latitude: 7.5, longitude: 134.5})
+ .set('PY', {latitude: -23, longitude: -58})
+ .set('QA', {latitude: 25.5, longitude: 51.25})
+ .set('RE', {latitude: -21.1, longitude: 55.6})
+ .set('RO', {latitude: 46, longitude: 25})
+ .set('RS', {latitude: 44, longitude: 21})
+ .set('RU', {latitude: 60, longitude: 100})
+ .set('RW', {latitude: -2, longitude: 30})
+ .set('SA', {latitude: 25, longitude: 45})
+ .set('SB', {latitude: -8, longitude: 159})
+ .set('SC', {latitude: -4.5833, longitude: 55.6667})
+ .set('SD', {latitude: 15, longitude: 30})
+ .set('SE', {latitude: 62, longitude: 15})
+ .set('SG', {latitude: 1.3667, longitude: 103.8})
+ .set('SH', {latitude: -15.9333, longitude: -5.7})
+ .set('SI', {latitude: 46, longitude: 15})
+ .set('SJ', {latitude: 78, longitude: 20})
+ .set('SK', {latitude: 48.6667, longitude: 19.5})
+ .set('SL', {latitude: 8.5, longitude: -11.5})
+ .set('SM', {latitude: 43.7667, longitude: 12.4167})
+ .set('SN', {latitude: 14, longitude: -14})
+ .set('SO', {latitude: 10, longitude: 49})
+ .set('SR', {latitude: 4, longitude: -56})
+ .set('ST', {latitude: 1, longitude: 7})
+ .set('SV', {latitude: 13.8333, longitude: -88.9167})
+ .set('SY', {latitude: 35, longitude: 38})
+ .set('SZ', {latitude: -26.5, longitude: 31.5})
+ .set('TC', {latitude: 21.75, longitude: -71.5833})
+ .set('TD', {latitude: 15, longitude: 19})
+ .set('TF', {latitude: -43, longitude: 67})
+ .set('TG', {latitude: 8, longitude: 1.1667})
+ .set('TH', {latitude: 15, longitude: 100})
+ .set('TJ', {latitude: 39, longitude: 71})
+ .set('TK', {latitude: -9, longitude: -172})
+ .set('TM', {latitude: 40, longitude: 60})
+ .set('TN', {latitude: 34, longitude: 9})
+ .set('TO', {latitude: -20, longitude: -175})
+ .set('TR', {latitude: 39, longitude: 35})
+ .set('TT', {latitude: 11, longitude: -61})
+ .set('TV', {latitude: -8, longitude: 178})
+ .set('TW', {latitude: 23.5, longitude: 121})
+ .set('TZ', {latitude: -6, longitude: 35})
+ .set('UA', {latitude: 49, longitude: 32})
+ .set('UG', {latitude: 1, longitude: 32})
+ .set('UM', {latitude: 19.2833, longitude: 166.6})
+ .set('US', {latitude: 38, longitude: -97})
+ .set('UY', {latitude: -33, longitude: -56})
+ .set('UZ', {latitude: 41, longitude: 64})
+ .set('VA', {latitude: 41.9, longitude: 12.45})
+ .set('VC', {latitude: 13.25, longitude: -61.2})
+ .set('VE', {latitude: 8, longitude: -66})
+ .set('VG', {latitude: 18.5, longitude: -64.5})
+ .set('VI', {latitude: 18.3333, longitude: -64.8333})
+ .set('VN', {latitude: 16, longitude: 106})
+ .set('VU', {latitude: -16, longitude: 167})
+ .set('WF', {latitude: -13.3, longitude: -176.2})
+ .set('WS', {latitude: -13.5833, longitude: -172.3333})
+ .set('YE', {latitude: 15, longitude: 48})
+ .set('YT', {latitude: -12.8333, longitude: 45.1667})
+ .set('ZA', {latitude: -29, longitude: 24})
+ .set('ZM', {latitude: -15, longitude: 30})
+ .set('ZW', {latitude: -20, longitude: 30});
diff --git a/src/app/domain/overview-map-data.ts b/src/app/domain/overview-map-data.ts
new file mode 100644
index 000000000..dc32cc71d
--- /dev/null
+++ b/src/app/domain/overview-map-data.ts
@@ -0,0 +1,59 @@
+import {Indicator} from './overview-data';
+
+export class OverviewMapData {
+ publications: CountryMapData[];
+ datasets: CountryMapData[];
+ repositories: CountryMapData[];
+ journals: CountryMapData[];
+ policies: CountryMapData[];
+}
+
+export class CountryMapData {
+ code: string;
+ name: string;
+ value: number;
+}
+
+export class JoinedMapData {
+ countryName: string;
+ countryCode: string;
+ affiliated: number;
+ deposited: number;
+}
+
+export class SelectedCountry {
+ name: string;
+ code: string;
+}
+
+export class CountryOverviewData {
+ name: string = null;
+ code: string = null;
+ publicationsAffiliated: number = null;
+ publicationsDeposited: number = null;
+ datasetsAffiliated: number = null;
+ datasetsDeposited: number = null;
+ repositories: number = null;
+ journals: number = null;
+ policies: number = null;
+}
+
+export class EuropeData {
+ publications: Indicator;
+ datasets: Indicator;
+ repositories: Indicator;
+ journals: Indicator;
+ policies: Indicator;
+}
+
+export class CountryTableData {
+ name: string = null;
+ code: string = null;
+ publications: number = null;
+ datasets: number = null;
+ software: number = null;
+ other: number = null;
+ repositories: number = null;
+ journals: number = null;
+ policies: number = null;
+}
diff --git a/src/app/domain/raw-data.ts b/src/app/domain/raw-data.ts
new file mode 100644
index 000000000..f274a2b89
--- /dev/null
+++ b/src/app/domain/raw-data.ts
@@ -0,0 +1,27 @@
+export class RawData {
+ datasets: Series[];
+}
+
+export class Series {
+ series: SeriesItem;
+}
+
+export class SeriesItem {
+ query: Query;
+ result: Row[];
+}
+
+export class Query {
+ name: string;
+ parameters: string;
+ filters: string;
+ select: string;
+ entity: string;
+ profile: string;
+ limit: number;
+ orderBy: string;
+}
+
+export class Row {
+ row: string[];
+}
diff --git a/src/app/pages/continentoverview/continent-overview.component.html b/src/app/pages/continentoverview/continent-overview.component.html
new file mode 100644
index 000000000..1beba476f
--- /dev/null
+++ b/src/app/pages/continentoverview/continent-overview.component.html
@@ -0,0 +1,66 @@
+
+
+
+
+ Home
+ {{continentName | titlecase}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/continentoverview/continent-overview.component.ts b/src/app/pages/continentoverview/continent-overview.component.ts
new file mode 100644
index 000000000..3dff34b9f
--- /dev/null
+++ b/src/app/pages/continentoverview/continent-overview.component.ts
@@ -0,0 +1,22 @@
+import { Component, OnInit } from '@angular/core';
+import {ActivatedRoute} from '@angular/router';
+import {DomSanitizer} from '@angular/platform-browser';
+import {DataService} from '../../services/data.service';
+
+@Component({
+ selector: 'app-continent-overview',
+ templateUrl: './continent-overview.component.html',
+})
+
+export class ContinentOverviewComponent implements OnInit {
+
+ continentName: string;
+
+ constructor(private dataService: DataService,
+ private route: ActivatedRoute,
+ private sanitizer: DomSanitizer) { }
+
+ ngOnInit(): void {
+ this.continentName = this.route.snapshot.paramMap.get('continentName');
+ }
+}
diff --git a/src/app/pages/countrypage/country-page.component.ts b/src/app/pages/countrypage/country-page.component.ts
index fd213083f..70a12a479 100644
--- a/src/app/pages/countrypage/country-page.component.ts
+++ b/src/app/pages/countrypage/country-page.component.ts
@@ -2,7 +2,7 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { DataService } from '../../services/data.service';
import { ActivatedRoute } from '@angular/router';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
-import {CountryOverview, OverviewData} from '../../domain/overview-data';
+import { CountryOverview, OverviewData } from '../../domain/overview-data';
@Component({
selector: 'app-country-page',
diff --git a/src/app/pages/home/countries-map-overview.component.ts b/src/app/pages/home/countries-map-overview.component.ts
index 963679ecc..d3f873f5e 100644
--- a/src/app/pages/home/countries-map-overview.component.ts
+++ b/src/app/pages/home/countries-map-overview.component.ts
@@ -161,7 +161,7 @@ export class CountriesMapOverviewComponent implements OnInit {
click: event => {
if (event.target.hasOwnProperty('point')) {
console.log(event.target['point']['name']);
- // this.countrySelected(event.target['point']['name']);
+ // this.selectedCountry(event.target['point']['name']);
}
}
}
@@ -178,6 +178,7 @@ export class CountriesMapOverviewComponent implements OnInit {
cursor: 'pointer',
events: {
click: event => {
+ console.log(event);
this.countrySelected(event.point.name);
}
}
diff --git a/src/app/pages/home/countries-table.component.html b/src/app/pages/home/countries-table.component.html
index 4174cdf43..1e3ee9cc3 100644
--- a/src/app/pages/home/countries-table.component.html
+++ b/src/app/pages/home/countries-table.component.html
@@ -2,201 +2,106 @@
+
+
+
Country
-
-
-
- OA repositories
-
-
+
+
+
+
+ OA repositories
-
- OA journals
-
-
+
+
+
+
+ OA journals
-
- OA policies
-
-
+
+
+
+
+
+
+
+
+
+
+ OA publications
-
- OA publications
-
-
+
+
+
+
+ OA data
-
- OA data
-
-
+
+
+
+
+ OA software
-
- OA software
-
-
-
-
- OA other research products
-
-
+
+
+
+
+ OA other
-
-
- {{countryOverview.country}}
-
- {{countryOverview.repositories.oa | number}}
- --
-
-
- {{countryOverview.journals.oa | number}}
- --
-
-
- {{countryOverview.policies.oa | number}}
- --
-
-
- --
-
- {{countryOverview.publications.percentage | number}}%
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.datasets.percentage | number}}%
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.software.percentage | number}}%
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.otherProducts.percentage | number}}%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{countryOverview.country}}
-
- {{countryOverview.repositories.oa | number}}
- --
-
-
- {{countryOverview.journals.oa | number}}
- --
-
-
- {{countryOverview.policies.oa | number}}
- --
-
-
- --
-
- {{countryOverview.publications.oa | number}}
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.datasets.oa | number}}
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.software.oa | number}}
-
-
-
-
-
-
-
-
-
-
-
-
- --
-
- {{countryOverview.otherProducts.oa | number}}
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {{countryOverview.name}}
+
+ --
+
+ {{countryOverview.repositories | number}}%
+
+
+
+ --
+
+ {{countryOverview.journals | number}}%
+
+
+
+
+
+
+
+ --
+
+ {{countryOverview.publications | number}}%
+
+
+
+
+
+
+
+
+
+
+
+ --
+
+ {{countryOverview.datasets | number}}%
+
+
+
+ --
+
+ {{countryOverview.software | number}}%
+
+
+
+ --
+
+ {{countryOverview.other | number}}%
+
+
+
diff --git a/src/app/pages/home/countries-table.component.ts b/src/app/pages/home/countries-table.component.ts
index db208366d..dbffdafaf 100644
--- a/src/app/pages/home/countries-table.component.ts
+++ b/src/app/pages/home/countries-table.component.ts
@@ -1,18 +1,15 @@
-import { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';
-import { CountryOverview } from '../../domain/overview-data';
+import { Component, Input, OnChanges } from '@angular/core';
+import { CountryTableData } from '../../domain/overview-map-data';
@Component({
selector: 'app-countries-table',
templateUrl: './countries-table.component.html',
- // styleUrls: ['./top-menu.component.css'],
- encapsulation: ViewEncapsulation.None
})
export class CountriesTableComponent implements OnChanges {
@Input() isPercentage: boolean;
- @Input() type: string;
- @Input() countries: CountryOverview[];
+ @Input() countries: CountryTableData[];
isSortedBy: string;
isDescending: boolean = true;
@@ -20,7 +17,7 @@ export class CountriesTableComponent implements OnChanges {
constructor() {}
ngOnChanges() {
- this.countries.sort((a, b) => (a['country'] > b['country']) ? 1 : -1);
+ this.countries.sort((a, b) => (a['name'] > b['name']) ? 1 : -1);
}
sortBy(field: string) {
@@ -34,24 +31,16 @@ export class CountriesTableComponent implements OnChanges {
this.isSortedBy = field;
if (field !== 'country') {
- if (this.isPercentage) {
- if (this.isDescending) {
- this.countries.sort((a, b) => b[field].percentage - a[field].percentage);
- } else {
- this.countries.sort((a, b) => a[field].percentage - b[field].percentage);
- }
+ if (this.isDescending) {
+ this.countries.sort((a, b) => b[field] - a[field]);
} else {
- if (this.isDescending) {
- this.countries.sort((a, b) => b[field].oa - a[field].oa);
- } else {
- this.countries.sort((a, b) => a[field].oa - b[field].oa);
- }
+ this.countries.sort((a, b) => a[field] - b[field]);
}
} else {
if (this.isDescending) {
- this.countries.sort((a, b) => (a[field] < b[field]) ? 1 : -1);
+ this.countries.sort((a, b) => (a['name'] < b['name']) ? 1 : -1);
} else {
- this.countries.sort((a, b) => (a[field] > b[field]) ? 1 : -1);
+ this.countries.sort((a, b) => (a['name'] > b['name']) ? 1 : -1);
}
}
diff --git a/src/app/pages/home/data-view.component.html b/src/app/pages/home/data-view.component.html
index 5c687f910..20d6c6d43 100644
--- a/src/app/pages/home/data-view.component.html
+++ b/src/app/pages/home/data-view.component.html
@@ -1,29 +1,3 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Print report in PDF
-
-
Download report
+
+
-
-
-
-
-
-
-
+
+ Show:
+
+ affiliated
+ affiliated peer reviewed
+ deposited
+ deposited peer reviewed
+
+
+
+
+
-
-
-
-
-
-
+
-
+
+ Show:
+
+ affiliated
+ affiliated peer reviewed
+ deposited
+ deposited peer reviewed
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/app/pages/home/data-view.component.ts b/src/app/pages/home/data-view.component.ts
index 7de5a18a1..5fca7fce2 100644
--- a/src/app/pages/home/data-view.component.ts
+++ b/src/app/pages/home/data-view.component.ts
@@ -1,21 +1,28 @@
-import {Component, Input, OnInit, ViewEncapsulation} from '@angular/core';
-import { CountryOverview } from '../../domain/overview-data';
+import { Component, OnInit } from '@angular/core';
import { printPage } from '../../shared/reusablecomponents/print-function';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
+import { DataService } from '../../services/data.service';
+import { DataHandlerService } from '../../services/data-handler.service';
+import { CountryTableData } from '../../domain/overview-map-data';
@Component({
selector: 'app-data-view',
templateUrl: './data-view.component.html',
- // styleUrls: ['./top-menu.component.css'],
- encapsulation: ViewEncapsulation.None
})
export class DataViewComponent implements OnInit {
- @Input() type: string;
- @Input() countries: CountryOverview[];
+ // @Input() type: string;
+ // @Input() countries: CountryOverview[];
activeView: string = 'absolute';
+ contentAbsoluteSelection: string = 'affiliated';
+ contentPercentageSelection: string = 'affiliated';
+
+ tableAbsoluteData: CountryTableData[];
+ tablePercentageData: CountryTableData[];
+
+ loading: boolean = true;
oaPublicationsURL: SafeResourceUrl;
oaRepositoriesURL: SafeResourceUrl;
@@ -24,7 +31,49 @@ export class DataViewComponent implements OnInit {
oaSoftwareURL: SafeResourceUrl;
oaOtherURL: SafeResourceUrl;
- constructor(private sanitizer: DomSanitizer) {}
+ constructor(private sanitizer: DomSanitizer,
+ private dataService: DataService,
+ private dataHandlerService: DataHandlerService) {}
+
+ ngOnInit(): void {
+ this.getAbsoluteData();
+ }
+
+ getAbsoluteData() {
+ this.loading = true;
+ this.dataService.getOverviewTableAbsoluteData(this.contentAbsoluteSelection).subscribe(
+ rawData => {
+ this.tableAbsoluteData = this.dataHandlerService.convertRawDataToAbsoluteTableData(rawData);
+ this.loading = false;
+ }, error => {
+ console.log(error);
+ this.loading = false;
+ }
+ );
+ }
+
+ getPercentageData() {
+ this.loading = true;
+ this.dataService.getOverviewTableAbsoluteData(this.contentPercentageSelection).subscribe(
+ rawData => {
+ this.tablePercentageData = this.dataHandlerService.convertRawDataToAbsoluteTableData(rawData);
+ this.loading = false;
+ }, error => {
+ console.log(error);
+ this.loading = false;
+ }
+ );
+ }
+
+ getContentAbsolute(contentSelection: string): void {
+ this.contentAbsoluteSelection = contentSelection;
+ this.getAbsoluteData();
+ }
+
+ getContentPercentage(contentSelection: string): void {
+ this.contentPercentageSelection = contentSelection;
+ this.getPercentageData();
+ }
changeView(view: string) {
this.activeView = view;
@@ -59,7 +108,4 @@ export class DataViewComponent implements OnInit {
printOverviewData(sectionID: string) {
printPage(sectionID);
}
-
- ngOnInit(): void {
- }
}
diff --git a/src/app/pages/home/europe-map-overview.component.html b/src/app/pages/home/europe-map-overview.component.html
new file mode 100644
index 000000000..34645cd57
--- /dev/null
+++ b/src/app/pages/home/europe-map-overview.component.html
@@ -0,0 +1,54 @@
+
diff --git a/src/app/pages/home/europe-map-overview.component.ts b/src/app/pages/home/europe-map-overview.component.ts
new file mode 100644
index 000000000..c2f820d64
--- /dev/null
+++ b/src/app/pages/home/europe-map-overview.component.ts
@@ -0,0 +1,356 @@
+import { MapCountryData } from '../../domain/map-country-data';;
+
+import { Component, EventEmitter, OnInit, Output } from '@angular/core';
+import { CountryOverview } from '../../domain/overview-data';
+
+import { DataService } from '../../services/data.service';
+import { Router } from '@angular/router';
+import {CountryMapData, JoinedMapData, OverviewMapData, SelectedCountry} from '../../domain/overview-map-data';
+import { latlong } from '../../domain/countries-lat-lon';
+import { DataHandlerService } from '../../services/data-handler.service';
+
+import * as echarts from 'echarts';
+
+declare var require: any;
+
+const mapWorld = require('echarts/map/json/world.json');
+
+@Component({
+ selector: 'app-europe-map-overview',
+ templateUrl: './europe-map-overview.component.html',
+})
+
+export class EuropeMapOverviewComponent implements OnInit {
+
+ countries: CountryOverview[];
+
+ @Output() emitSelectedCountry: EventEmitter
= new EventEmitter();
+
+ activeView: string = 'publications';
+ seriesColor: string = '#F17AA9';
+ seriesName: string = 'OA publications';
+
+ // tooltipBackgroundColor: string = '#EC4386';
+ tooltipBackgroundColor: string = '#a52e5d';
+ tooltipBorderColor: string = '#000';
+
+ options = {};
+
+ overviewMapData: OverviewMapData;
+
+ countriesLatLong = latlong;
+
+ joinedPublicationsMap: Map;
+ joinedDatasetsMap: Map;
+
+ constructor(private dataService: DataService,
+ private dataHandlerService: DataHandlerService,
+ private router: Router) {}
+
+ ngOnInit(): void {
+
+ echarts.registerMap('world', mapWorld);
+
+ if (this.isEmbedRoute()) {
+ const body = document.getElementsByTagName('body')[0];
+ body.classList.remove('header_sticky');
+ }
+
+ this.dataService.getOverviewMapData().subscribe(
+ rawData => {
+ // console.log('==== Map RawData ====', rawData);
+ this.overviewMapData = this.dataHandlerService.convertRawMapDataToMapData(rawData);
+ this.joinedPublicationsMap = this.dataHandlerService.createJoinedPublicationsCountryMap(rawData);
+ this.joinedDatasetsMap = this.dataHandlerService.createJoinedDatasetsCountryMap(rawData);
+
+ // console.log('Country map data', this.overviewMapData[this.activeView]);
+ this.loadMap(this.overviewMapData[this.activeView], this.seriesColor, this.seriesColor);
+ },
+ error => {
+ console.log(error);
+ }
+ );
+ }
+
+ changeView(view: string) {
+ this.activeView = view;
+
+ if (this.activeView === 'publications') {
+ this.seriesColor = '#F17AA9';
+ this.seriesName = 'OA publications';
+ this.tooltipBackgroundColor = '#a52e5d';
+ this.tooltipBorderColor = '#000';
+ } else if (this.activeView === 'datasets') {
+ this.seriesColor = '#A98BD4';
+ this.seriesName = 'OA datasets';
+ this.tooltipBackgroundColor = '#7658a1';
+ this.tooltipBorderColor = '#000';
+ } else if (this.activeView === 'repositories') {
+ this.seriesColor = '#708AA5';
+ this.seriesName = 'OA repositories';
+ this.tooltipBackgroundColor = '#3d5772';
+ this.tooltipBorderColor = '#000';
+ } else if (this.activeView === 'journals') {
+ this.seriesColor = '#FFCE4E';
+ this.seriesName = 'OA journals';
+ this.tooltipBackgroundColor = '#cc9b1b';
+ this.tooltipBorderColor = '#000';
+ } else {
+ this.seriesColor = '#639C66';
+ this.seriesName = 'OA policies';
+ this.tooltipBackgroundColor = '#306933';
+ this.tooltipBorderColor = '#000';
+ }
+ this.loadMap(this.overviewMapData[view], this.seriesColor, this.seriesName);
+ }
+
+ loadMap(countryMapData: CountryMapData[], seriesColor: string, seriesName: string) {
+
+ this.options = {
+ title : {
+ // text: 'World Population (2011)',
+ // subtext: 'From Gapminder',
+ left: 'center',
+ top: 'top',
+ textStyle: {
+ color: '#fff'
+ }
+ },
+ responsive: true,
+ tooltip : {
+ trigger: 'item',
+ // position: 'top',
+ // formatter: '{b} {c2} {a}',
+ // backgroundColor: '#f6c4d8',
+ // borderColor: '#bf1d5e',
+ // borderWidth: 0.2
+ },
+ visualMap: {
+ show: false,
+ min: 0,
+ // max: max,
+ max: 80000,
+ inRange: {
+ // symbolSize: [6, 60]
+ // symbolSize: [0, 6]
+ }
+ },
+ geo: {
+ // name: 'World Population (2010)',
+ type: 'map',
+ map: 'world',
+ // center: [15.2551, 54.5260],
+ center: [14, 51],
+ zoom: 4.7,
+ // roam: true,
+ label: {
+ emphasis: {
+ show: false
+ }
+ },
+ itemStyle: {
+ normal: {
+ // color: 'rgba(139,151,167,0.4)',
+ // borderColor: '#000',
+ borderColor: '#fff',
+ borderWidth: 0.5,
+ areaColor: 'rgba(139,151,167,0.6)',
+ // areaStyle: {
+ // color: 'rgba(139,151,167,0.2)'
+ // }
+ },
+ emphasis: {
+ // color: 'rgba(139,151,167,0.4)',
+ // borderColor: '#000',
+ borderColor: '#fff',
+ borderWidth: 0.5,
+ areaColor: 'rgba(139,151,167,0.8)',
+ // areaStyle: {
+ // color: 'rgba(139,151,167,0.2)'
+ // }
+ }
+ }
+ // itemStyle: {
+ // // areacolor: '#ffffff',
+ // // bordercolor: '#111',
+ // // borderWidth: 1,
+ // // normal: {
+ // // // areacolor: '#323c48',
+ // // areacolor: '#ffffff',
+ // // bordercolor: '#111'
+ // // },
+ // // emphasis: {
+ // // areacolor: '#2a333d'
+ // // }
+ // }
+ },
+ series : [
+ {
+ type: 'scatter',
+ coordinateSystem: 'geo',
+ name: seriesName,
+ label: {
+ show: true,
+ position: 'inside',
+ color: '#fff',
+ opacity: 1,
+ // formatter: '{@[2]}',
+ formatter: (params => {
+ return params.data.value[2].toLocaleString();
+ }),
+ textBorderColor: '#000',
+ textBorderWidth: '2',
+ fontSize: 15
+ // formatter: '{b}: {@score}'
+ },
+ // activeOpacity: 0.6,
+ data: countryMapData.map((itemOpt) => {
+ // console.log('itemOpt.code', itemOpt.code);
+ return {
+ name: itemOpt.name,
+ value: [
+ this.countriesLatLong.get(itemOpt.code).longitude,
+ this.countriesLatLong.get(itemOpt.code).latitude,
+ itemOpt.value
+ ],
+ // label: {
+ // emphasis: {
+ // position: 'right',
+ // show: true
+ // }
+ // },
+ itemStyle: {
+ normal: {
+ color: seriesColor,
+ // color: '#f8d5e3',
+ // opacity: 0.8,
+ borderColor: seriesColor,
+ borderWidth: 2
+ }
+ }
+ };
+ }),
+ symbolSize: value => {
+ // console.log('Math.sqrt(value[2]) / 1000: ' + (Math.sqrt(value[2]) / 1000) );
+ // return Math.sqrt(value[2]) / 10;
+ return Math.sqrt(value[2]) / 10 * this.resizeFactor(countryMapData);
+ // return Math.sqrt(value[2]) / 10;
+ },
+ tooltip : {
+ trigger: 'item',
+ position: 'top',
+ formatter: (params => {
+ // console.log('params: ', params);
+ // let bla = '' + params.data.name + ' ';
+ // bla += params.data.value[2].toLocaleString() + ' ' + params.seriesName;
+ // return bla;
+ return this.createTooltip(params);
+ }),
+ backgroundColor: this.tooltipBackgroundColor,
+ borderColor: this.tooltipBorderColor,
+ borderWidth: 0.2
+ },
+ }
+ ]
+ };
+ }
+
+ onChartClick(event: any, type: string) {
+ // console.log('chart event:', type, event);
+ // console.log('country:', event.name);
+
+ const selectedCountry: SelectedCountry = new SelectedCountry();
+ selectedCountry.name = event.name;
+ selectedCountry.code = this.joinedPublicationsMap.get(event.name).countryCode;
+
+ // console.log('Selected country', selectedCountry);
+ this.emitSelectedCountry.emit(selectedCountry);
+ }
+
+ // selectedCountry(countryName: string) {
+ // this.emitSelectedCountry.emit(countryName);
+ // }
+
+ isEmbedRoute() {
+ return (this.router.url === '/overview-map-embed');
+ }
+
+ resizeFactor(countryMapData: CountryMapData[]) {
+
+ let max = 0;
+ for (const countryData of countryMapData) {
+ if (countryData.value > max) {
+ max = countryData.value;
+ }
+ }
+ // console.log('resizeFactor', 100 / (Math.sqrt(max) / 10));
+ return 100 / (Math.sqrt(max) / 10);
+ }
+
+ createTooltip(params: any) {
+
+ // console.log('params: ', params);
+ // console.log('params.name: ', params.name);
+
+ let tooltip = '';
+
+ tooltip += '
' + params.name + '
';
+
+ if (this.activeView === 'publications') {
+
+ tooltip += '
';
+ tooltip += '
' +
+ '' + params.data.value[2].toLocaleString() + ' ' +
+ 'OA publications affiliated to an organization in the country
';
+
+ tooltip += '
' +
+ '' + this.joinedPublicationsMap.get(params.name).deposited.toLocaleString() + ' ' +
+ 'OA publications from institutional repositories
';
+
+ tooltip += '
';
+
+ } else if (this.activeView === 'datasets') {
+
+ tooltip += '
';
+ tooltip += '
' +
+ '' + params.data.value[2].toLocaleString() + ' ' +
+ 'OA datasets affiliated to an organization in the country
';
+
+ tooltip += '
' +
+ '' + this.joinedDatasetsMap.get(params.name).deposited.toLocaleString() + ' ' +
+ 'OA datasets from institutional repositories
';
+
+ tooltip += '
';
+
+ } else if (this.activeView === 'repositories') {
+
+ tooltip += '
';
+ tooltip += '
' +
+ '' + params.data.value[2].toLocaleString() + ' ' +
+ 'repositories from openDOAR & re3data
';
+
+ tooltip += '
';
+
+ } else if (this.activeView === 'journals') {
+
+ tooltip += '
';
+ tooltip += '
' +
+ '' + params.data.value[2].toLocaleString() + ' ' +
+ 'journals from DOAJ
';
+
+ tooltip += '
';
+
+ } else {
+
+ tooltip += '
';
+ tooltip += '
' +
+ '' + params.data.value[2].toLocaleString() + ' ' +
+ 'organizations with OA policies
';
+
+ tooltip += '
';
+ }
+
+ tooltip += '
';
+ return tooltip;
+ }
+}
diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html
index 36ccb7f11..bd2894047 100644
--- a/src/app/pages/home/home.component.html
+++ b/src/app/pages/home/home.component.html
@@ -7,7 +7,8 @@
-
+
+
@@ -15,11 +16,11 @@
-
+
OPENAIRE MONITOR OBSERVATORY
-
+
An OpenAIRE service to:
@@ -38,73 +39,78 @@
Learn More
-
+
-
+
-
+
+
+
+
+
+
+
+
+
- {{countrySelectedOverview.publications.oa | number}}
- --
- OA publications from institutional repositories
-
-
-
- {{countrySelectedOverview.publications.oa | number}}
- --
+ {{selectedCountryData.publicationsAffiliated | number}}
+ --
OA publications affiliated to an organization in the country
+
+ {{selectedCountryData.publicationsDeposited | number}}
+ --
+ OA publications from institutional repositories
+
+
- {{countrySelectedOverview.datasets.oa | number}}
- --
- OA datasets from institutional repositories
-
-
-
- {{countrySelectedOverview.datasets.oa | number}}
- --
+ {{selectedCountryData.datasetsAffiliated | number}}
+ --
OA datasets affiliated to an organization in the country
+
+ {{selectedCountryData.datasetsDeposited | number}}
+ --
+ OA datasets from institutional repositories
+
+
- {{countrySelectedOverview.repositories.oa | number}}
- --
+ {{selectedCountryData.repositories | number}}
+ --
repositories from openDOAR & re3data
- {{countrySelectedOverview.journals.oa | number}}
- --
- OA journals from DOAJ
+ {{selectedCountryData.journals | number}}
+ --
+ journals from DOAJ
- {{countrySelectedOverview.policies.oa | number}}
- --
+ {{selectedCountryData.policies | number}}
+ --
organisations with OA policies
@@ -113,15 +119,11 @@
-
Detailed View
+
+
View Details
+
-
@@ -142,7 +144,7 @@
-
+
@@ -152,18 +154,18 @@
- {{overviewData.overview.publications.oa | number}}
- --
+ {{europeOverviewData.publications.oa | number}}
+ --
OA publications
-
-
{{overviewData.overview.publications.percentage | number :'1.0-1'}}% OA
+
+
{{europeOverviewData.publications.percentage | number :'1.0-1'}}% OA
@@ -177,18 +179,18 @@
- {{overviewData.overview.datasets.oa | number}}
- --
+ {{europeOverviewData.datasets.oa | number}}
+ --
OA datasets
-
-
{{overviewData.overview.datasets.percentage | number :'1.0-1'}}% OA
+
+
{{europeOverviewData.datasets.percentage | number :'1.0-1'}}% OA
@@ -202,17 +204,17 @@
- {{overviewData.overview.repositories.oa | number}}
- --
+ {{europeOverviewData.repositories.oa | number}}
+ --
- repositories from openDOAR & re3data
+ validated repositories
-
-
{{overviewData.overview.repositories.percentage | number : '1.0-1'}}% Certified
+
+
{{europeOverviewData.repositories.percentage | number : '1.0-1'}}% Validated
@@ -226,17 +228,17 @@
- {{overviewData.overview.journals.oa | number}}
- --
+ {{europeOverviewData.journals.oa | number}}
+ --
- OA journals from DOAJ
+ validated OA journals
-
-
{{overviewData.overview.journals.percentage | number : '1.0-1'}}% Certified
+
+
{{europeOverviewData.journals.percentage | number : '1.0-1'}}% Validated
@@ -250,8 +252,8 @@
- {{overviewData.overview.policies.oa | number}}
- --
+ {{europeOverviewData.policies.oa | number}}
+ --
@@ -272,49 +274,58 @@
-
+
-
-
+
OA in Europe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/home/home.component.ts b/src/app/pages/home/home.component.ts
index 688c3a5ee..30685e9df 100644
--- a/src/app/pages/home/home.component.ts
+++ b/src/app/pages/home/home.component.ts
@@ -1,46 +1,74 @@
import { Component, DoCheck, OnInit, ViewEncapsulation } from '@angular/core';
import { DataService } from '../../services/data.service';
import { CountryOverview, OverviewData } from '../../domain/overview-data';
+import {CountryOverviewData, EuropeData, SelectedCountry} from '../../domain/overview-map-data';
+import {DataHandlerService} from '../../services/data-handler.service';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
- // styleUrls: ['./top-menu.component.css'],
- encapsulation: ViewEncapsulation.None
})
export class HomeComponent implements OnInit {
- overviewData: OverviewData;
+ // overviewData: OverviewData;
- countrySelectedName: string = null;
- countrySelectedOverview: CountryOverview = null;
+ europeOverviewData: EuropeData;
- constructor(private dataService: DataService) { }
+ selectedCountry: SelectedCountry = null;
+ selectedCountryData: CountryOverviewData = null;
+
+ // countrySelectedName: string = null;
+ // countrySelectedOverview: CountryOverview = null;
+
+ constructor(private dataService: DataService,
+ private dataHandlerService: DataHandlerService) { }
ngOnInit(): void {
- window.scroll(0,0);
+ window.scroll(0, 0);
- this.dataService.getOverviewData().subscribe(
- overviewData => {
- this.overviewData = overviewData;
- },
- error => {
+ this.dataService.getEuropeOverviewData().subscribe(
+ rawData => {
+ this.europeOverviewData = this.dataHandlerService.convertRawDataToEuropeOverviewData(rawData);
+ }, error => {
console.log(error);
}
);
+
+ // this.dataService.getOverviewData().subscribe(
+ // overviewData => {
+ // this.overviewData = overviewData;
+ // },
+ // error => {
+ // console.log(error);
+ // }
+ // );
}
- countrySelected(countryName: string) {
- // console.log('Country selected: ', countryName);
- this.countrySelectedName = countryName;
- this.countrySelectedOverview = this.overviewData.countries.filter(x => x.country === this.countrySelectedName)[0];
+ countrySelected(selectedCountry: SelectedCountry) {
+ this.selectedCountry = selectedCountry;
+ this.selectedCountryData = null;
+
+ this.dataService.getCountryOverviewData(this.selectedCountry.code).subscribe(
+ rawData => {
+ this.selectedCountryData = this.dataHandlerService.convertRawDataToCountryOverviewData(rawData);
+ }, error => {
+ console.log(error);
+ }
+ );
+
+
+ // this.countrySelectedOverview = this.overviewData.countries.filter(x => x.country === this.selectedCountry.name)[0];
// console.log('Country selected overview: ', this.countrySelectedOverview);
}
deselectCountry() {
- this.countrySelectedName = null;
- this.countrySelectedOverview = null;
+
+ this.selectedCountry = null;
+ this.selectedCountryData = null;
+
+ // this.countrySelectedName = null;
+ // this.countrySelectedOverview = null;
}
}
diff --git a/src/app/services/data-handler.service.ts b/src/app/services/data-handler.service.ts
new file mode 100644
index 000000000..24c50f507
--- /dev/null
+++ b/src/app/services/data-handler.service.ts
@@ -0,0 +1,351 @@
+import { Injectable } from '@angular/core';
+import { RawData, Row } from '../domain/raw-data';
+import {CountryOverviewData, CountryMapData, EuropeData, OverviewMapData, CountryTableData} from '../domain/overview-map-data';
+import {Indicator} from '../domain/overview-data';
+
+@Injectable ()
+export class DataHandlerService {
+
+ public convertRawMapDataToMapData(rawData: RawData) {
+
+ const overviewMapData: OverviewMapData = new OverviewMapData();
+
+ for (const series of rawData.datasets) {
+
+ if (series.series.query.name === 'new.oso.publications.affiliated') {
+ overviewMapData.publications = this.rawResultToCountryMapData(series.series.result);
+ } else if (series.series.query.name === 'new.oso.datasets.affiliated') {
+ overviewMapData.datasets = this.rawResultToCountryMapData(series.series.result);
+ } else if (series.series.query.name === 'new.oso.repositories') {
+ overviewMapData.repositories = this.rawResultToCountryMapData(series.series.result);
+ } else if (series.series.query.name === 'new.oso.journals') {
+ overviewMapData.journals = this.rawResultToCountryMapData(series.series.result);
+ } else if (series.series.query.name === 'new.oso.oa_policies') {
+ overviewMapData.policies = this.rawResultToCountryMapData(series.series.result);
+ }
+ }
+
+ // console.log('Overview map data (data-handler)', overviewMapData);
+
+ return overviewMapData;
+ }
+
+ public createJoinedPublicationsCountryMap(rawData: RawData) {
+
+ const joinedPublicationsMap = new Map();
+
+ for (const series of rawData.datasets) {
+ if (series.series.query.name === 'new.oso.publications.affiliated') {
+
+ for (const rowResult of series.series.result) {
+ if (joinedPublicationsMap.has(rowResult.row[1])) {
+ const deposited = joinedPublicationsMap.get(rowResult.row[1]).deposited;
+ joinedPublicationsMap.delete(rowResult.row[1]);
+ joinedPublicationsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: Number(rowResult.row[0]), deposited: deposited});
+ } else {
+ joinedPublicationsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: Number(rowResult.row[0]), deposited: 0});
+ }
+ }
+
+ } else if (series.series.query.name === 'new.oso.publications.deposited') {
+
+ for (const rowResult of series.series.result) {
+ if (joinedPublicationsMap.has(rowResult.row[1])) {
+ const affiliated = joinedPublicationsMap.get(rowResult.row[1]).affiliated;
+ joinedPublicationsMap.delete(rowResult.row[1]);
+ joinedPublicationsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: affiliated, deposited: Number(rowResult.row[0])});
+ }
+ joinedPublicationsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: 0, deposited: Number(rowResult.row[0])});
+ }
+ }
+ }
+
+ return joinedPublicationsMap;
+ }
+
+ public createJoinedDatasetsCountryMap(rawData: RawData) {
+
+ const joinedDatasetsMap = new Map();
+
+ for (const series of rawData.datasets) {
+ if (series.series.query.name === 'new.oso.datasets.affiliated') {
+
+ for (const rowResult of series.series.result) {
+ if (joinedDatasetsMap.has(rowResult.row[1])) {
+ const deposited = joinedDatasetsMap.get(rowResult.row[1]).deposited;
+ joinedDatasetsMap.delete(rowResult.row[1]);
+ joinedDatasetsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: Number(rowResult.row[0]), deposited: deposited});
+ } else {
+ joinedDatasetsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: Number(rowResult.row[0]), deposited: 0});
+ }
+ }
+
+ } else if (series.series.query.name === 'new.oso.datasets.deposited') {
+
+ for (const rowResult of series.series.result) {
+ if (joinedDatasetsMap.has(rowResult.row[1])) {
+ const affiliated = joinedDatasetsMap.get(rowResult.row[1]).affiliated;
+ joinedDatasetsMap.delete(rowResult.row[1]);
+ joinedDatasetsMap.set(rowResult.row[1], {countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: affiliated, deposited: Number(rowResult.row[0])});
+ }
+ joinedDatasetsMap.set(rowResult.row[1], { countryName: rowResult.row[1], countryCode: rowResult.row[2],
+ affiliated: 0, deposited: Number(rowResult.row[0])});
+ }
+ }
+ }
+
+ return joinedDatasetsMap;
+
+ }
+
+ public convertRawDataToCountryOverviewData(rawData: RawData) {
+
+ const countryData: CountryOverviewData = new CountryOverviewData();
+
+ for (const series of rawData.datasets) {
+
+ if (series.series.query.name === 'new.oso.publications.affiliated.country') {
+ countryData.publicationsAffiliated = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.publications.deposited.country') {
+ countryData.publicationsDeposited = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.datasets.affiliated.country') {
+ countryData.datasetsAffiliated = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.datasets.deposited.country') {
+ countryData.datasetsDeposited = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.repositories.doar_re3data.country') {
+ countryData.repositories = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.journals.doaj.country') {
+ countryData.journals = Number(series.series.result[0].row[0]);
+ } else if (series.series.query.name === 'new.oso.oa_policies.country') {
+ countryData.policies = Number(series.series.result[0].row[0]);
+ }
+ }
+
+ return countryData;
+ }
+
+ public convertRawDataToEuropeOverviewData(rawData: RawData) {
+
+ const europeData: EuropeData = new EuropeData();
+
+ for (const series of rawData.datasets) {
+
+ if (series.series.query.name === 'new.oso.publications.oa_percentage') {
+
+ const publicationsIndicator: Indicator = new Indicator();
+ publicationsIndicator.percentage = Number(series.series.result[0].row[0]);
+ publicationsIndicator.oa = Number(series.series.result[0].row[1]);
+ publicationsIndicator.total = Number(series.series.result[0].row[2]);
+ europeData.publications = publicationsIndicator;
+
+ } else if (series.series.query.name === 'new.oso.datasets.oa_percentage') {
+
+ const datasetsIndicator: Indicator = new Indicator();
+ datasetsIndicator.percentage = Number(series.series.result[0].row[0]);
+ datasetsIndicator.oa = Number(series.series.result[0].row[1]);
+ datasetsIndicator.total = Number(series.series.result[0].row[2]);
+ europeData.datasets = datasetsIndicator;
+
+ } else if (series.series.query.name === 'new.oso.repositories.doar_re3data.validated') {
+
+ const repositoriesIndicator: Indicator = new Indicator();
+ repositoriesIndicator.percentage = Number(series.series.result[0].row[0]);
+ repositoriesIndicator.oa = Number(series.series.result[0].row[1]);
+ repositoriesIndicator.total = Number(series.series.result[0].row[2]);
+ europeData.repositories = repositoriesIndicator;
+
+ } else if (series.series.query.name === 'new.oso.journals.doaj.validated') {
+
+ const journalsIndicator: Indicator = new Indicator();
+ journalsIndicator.percentage = Number(series.series.result[0].row[0]);
+ journalsIndicator.oa = Number(series.series.result[0].row[1]);
+ journalsIndicator.total = Number(series.series.result[0].row[2]);
+ europeData.journals = journalsIndicator;
+
+ } else if (series.series.query.name === 'new.oso.oa_policies.europe') {
+
+ const policiesIndicator: Indicator = new Indicator();
+ policiesIndicator.percentage = Number(series.series.result[0].row[0]);
+ policiesIndicator.oa = Number(series.series.result[0].row[1]);
+ policiesIndicator.total = Number(series.series.result[0].row[2]);
+ europeData.policies = policiesIndicator;
+
+ }
+ }
+
+ return europeData;
+ }
+
+ public convertRawDataToAbsoluteTableData(rawData: RawData) {
+
+ const mapTableData: Map
= new Map();
+
+ for (const series of rawData.datasets) {
+
+ if (series.series.query.name.includes('new.oso.publications')) {
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.publications = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.publications = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+
+ } else if (series.series.query.name.includes('new.oso.datasets')) {
+
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.datasets = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.datasets = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+ } else if (series.series.query.name.includes('new.oso.software')) {
+
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.software = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.software = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+ } else if (series.series.query.name.includes('new.oso.other')) {
+
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.other = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.other = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+ } else if (series.series.query.name.includes('new.oso.repositories')) {
+
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.repositories = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.repositories = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+ } else if (series.series.query.name.includes('new.oso.journals')) {
+
+ for (const rowResult of series.series.result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ if (mapTableData.has(rowResult.row[2])) {
+ const countryTableData = mapTableData.get(rowResult.row[2]);
+ countryTableData.journals = Number(rowResult.row[0]);
+ } else {
+ const countryTableData: CountryTableData = new CountryTableData();
+ countryTableData.journals = Number(rowResult.row[0]);
+ countryTableData.name = rowResult.row[1];
+ countryTableData.code = rowResult.row[2];
+ mapTableData.set(rowResult.row[2], countryTableData);
+ }
+ }
+ }
+ }
+
+ const tableData: CountryTableData[] = [];
+
+ mapTableData.forEach((value: CountryTableData, key: string) => {
+ // console.log(key, value);
+ tableData.push(value);
+ });
+
+ return tableData;
+ }
+
+ private rawResultToCountryMapData(result: Row[]) {
+
+ const entityMapData: CountryMapData[] = [];
+ for (const rowResult of result) {
+
+ // remove unwanted countries
+ if (this.isCountryToBeRemoved(rowResult.row[2])) {
+ continue;
+ }
+
+ const countryMapData: CountryMapData = new CountryMapData();
+ countryMapData.value = Number(rowResult.row[0]);
+ countryMapData.name = rowResult.row[1];
+ countryMapData.code = rowResult.row[2];
+
+ entityMapData.push(countryMapData);
+ }
+
+ return entityMapData;
+ }
+
+ private isCountryToBeRemoved(countryCode: string) {
+ return (countryCode === 'GG' || countryCode === 'FO' || countryCode === 'GI' || countryCode === 'VA' || countryCode === 'IM'
+ || countryCode === 'JE' || countryCode === 'LI' || countryCode === 'MC' || countryCode === 'SM' || countryCode === 'SJ'
+ || countryCode === 'AX');
+ }
+}
diff --git a/src/app/services/data.service.ts b/src/app/services/data.service.ts
index c8a380262..7780e4ed6 100644
--- a/src/app/services/data.service.ts
+++ b/src/app/services/data.service.ts
@@ -2,6 +2,8 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { OverviewData } from '../domain/overview-data';
+import { environment } from '../../environments/environment';
+import { RawData } from '../domain/raw-data';
const headerOptions = {
headers : new HttpHeaders().set('Content-Type', 'application/json')
@@ -10,13 +12,57 @@ const headerOptions = {
@Injectable ()
export class DataService {
- // private _jsonURl = environment.API_ENDPOINT + '/monitor/';
- // private _jsonURl = '/assets/json/';
+
private _jsonURl = 'http://esperos.di.uoa.gr/oss.json';
+ private apiURL = environment.API_ENDPOINT + 'raw?json=';
+
constructor(private httpClient: HttpClient) {
}
+ public getOverviewMapData(): Observable {
+ const mapDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ return this.httpClient.get(this.apiURL + mapDataQuery, headerOptions);
+ }
+
+ public getCountryOverviewData(countryCode: string): Observable {
+ const countryOverviewDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.affiliated.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.deposited.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.affiliated.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.deposited.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories.doar_re3data.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals.doaj.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies.country%22%2C%20%22parameters%22%3A%5B%22' + countryCode + '%22%5D%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ return this.httpClient.get(this.apiURL + countryOverviewDataQuery, headerOptions);
+ }
+
+ public getEuropeOverviewData(): Observable {
+ const overviewRawDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.oa_percentage%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.oa_percentage%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories.doar_re3data.validated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals.doaj.validated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies.europe%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ return this.httpClient.get(this.apiURL + overviewRawDataQuery, headerOptions);
+ }
+
+ public getOverviewTableAbsoluteData(content: string): Observable {
+ let overviewTableAbsoluteDataQuery = '';
+ if (content === 'affiliated') {
+ overviewTableAbsoluteDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.software.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.other.affiliated%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ } else if (content === 'affiliated_peer_reviewed') {
+ overviewTableAbsoluteDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.affiliated.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.affiliated.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.software.affiliated.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.other.affiliated.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ } else if (content === 'deposited') {
+ overviewTableAbsoluteDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.software.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.other.deposited%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ } else if (content === 'deposited_peer_reviewed') {
+ overviewTableAbsoluteDataQuery = '%7B%22series%22%3A%5B%7B%22query%22%3A%7B%22name%22%3A%22new.oso.publications.deposited.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.datasets.deposited.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.software.deposited.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.other.deposited.peer_reviewed%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.repositories%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.journals%22%7D%7D%2C%7B%22query%22%3A%7B%22name%22%3A%22new.oso.oa_policies%22%7D%7D%5D%2C%22verbose%22%3Atrue%7D';
+ }
+ return this.httpClient.get(this.apiURL + overviewTableAbsoluteDataQuery, headerOptions);
+ }
+
+ public getOverviewTablePercentageData(content: string): Observable {
+ let overviewTablePercentageDataQuery = '';
+ if (content === 'affiliated') {
+ overviewTablePercentageDataQuery = '';
+ } else if (content === 'affiliated_peer_reviewed') {
+ overviewTablePercentageDataQuery = '';
+ } else if (content === 'deposited') {
+ overviewTablePercentageDataQuery = '';
+ } else if (content === 'deposited_peer_reviewed') {
+ overviewTablePercentageDataQuery = '';
+ }
+ return this.httpClient.get(this.apiURL + overviewTablePercentageDataQuery, headerOptions);
+ }
+
public getOverviewData(): Observable {
return this.httpClient.get(this._jsonURl, headerOptions);
}
diff --git a/src/app/shared/footer/footer.component.html b/src/app/shared/footer/footer.component.html
index e69de29bb..80772e5b4 100644
--- a/src/app/shared/footer/footer.component.html
+++ b/src/app/shared/footer/footer.component.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
OpenAIRE-Advance receives funding from the European Union’s Horizon 2020 Research and Innovation programme
+ under Grant Agreement No. 777541.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Newsletter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/shared/footer/footer.component.ts b/src/app/shared/footer/footer.component.ts
index 72aeb5d85..3be257f3d 100644
--- a/src/app/shared/footer/footer.component.ts
+++ b/src/app/shared/footer/footer.component.ts
@@ -1,10 +1,8 @@
-import { Component, DoCheck, OnInit, ViewEncapsulation } from '@angular/core';
+import { Component } from '@angular/core';
@Component({
selector: 'app-footer',
templateUrl: './footer.component.html',
- // styleUrls: ['./footer.component.css'],
- encapsulation: ViewEncapsulation.None
})
export class FooterComponent {
diff --git a/src/app/shared/topmenu/top-menu.component.html b/src/app/shared/topmenu/top-menu.component.html
index 7791b50e1..b8c2bbe5f 100644
--- a/src/app/shared/topmenu/top-menu.component.html
+++ b/src/app/shared/topmenu/top-menu.component.html
@@ -67,7 +67,7 @@
@@ -137,7 +137,7 @@
diff --git a/src/assets/css/os-observatory-custom.css b/src/assets/css/os-observatory-custom.css
index 8dee65005..55a17331e 100644
--- a/src/assets/css/os-observatory-custom.css
+++ b/src/assets/css/os-observatory-custom.css
@@ -1,4 +1,4 @@
-@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,700&display=swap');
+@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700&display=swap');
html {
color: #292929;
@@ -12,6 +12,11 @@ h1, h2, h3, h4, h5, h6 {
font-family: 'Open Sans', sans-serif;
}
+h3 {
+ font-weight: 600;
+ font-size: 24px;
+}
+
.uk-container-large {
max-width: 1600px;
}
@@ -32,9 +37,9 @@ h1, h2, h3, h4, h5, h6 {
color: #000;
}
-#sect-overview, #sect-tabs {
- padding: 20px 0;
-}
+/*#sect-overview, #sect-tabs {*/
+ /*padding: 20px 0;*/
+/*}*/
.greySection {
/*background-color: #F0F0F0;*/
@@ -72,7 +77,7 @@ a:hover, a:focus, a:active {
}
.mapControls {
- position: absolute;
+ /*position: absolute;*/
bottom: 20px;
}
@@ -311,8 +316,8 @@ div.indicator span {
border-bottom-color: #CA4D9A;
}
-#team_tabbed {
- background: #FBFBFB 0% 0% no-repeat padding-box;
+.dataContainer {
+ background: #F9fbfc 0% 0% no-repeat padding-box;
border: 1px solid #E0E0E0;
}
@@ -357,7 +362,7 @@ div.indicator span {
padding: 30px;
}
-.actionButtons {
+.goToDetailedViewLink {
margin-top: -50px;
}
@@ -435,6 +440,16 @@ div.indicator span {
/********************************************/
+/**************** FOOTER ****************/
+
+.footerLink {
+ color: #000;
+ text-decoration: underline;
+}
+
+/********************************************/
+
+
#sidebar_main {
position: fixed;
right: 0;
@@ -659,6 +674,65 @@ div.indicator span {
}
+/**************** BREADCRUMB ****************/
+
.uk-breadcrumb > :last-child > * {
color: #EC4386;
}
+
+.uk-breadcrumb > :nth-child(n+2):not(.uk-first-column)::before {
+ content: ">";
+}
+
+/********************************************/
+
+.small-flag-image {
+ border: 2px solid #eee;
+ border-radius: 100px;
+}
+
+.flag-image {
+ border: 10px solid #eee;
+ border-radius: 100px;
+}
+
+
+.demo-chart {
+ height: 600px;
+}
+
+/********* LOADERS *********/
+
+.loader {
+ color: #EC4386;
+ margin: 25% auto;
+}
+
+.whiteFilm {
+ background: #ffffff;
+ z-index: 105;
+ width: 100%;
+ height: 100%;
+ opacity: 0.7;
+ position: absolute;
+ top: 0;
+ left: 0;
+
+ display: flex;
+ align-items: center;
+}
+
+.transparentFilm {
+ background: transparent;
+ z-index: 105;
+ width: 100%;
+ height: 100%;
+ opacity: 0.7;
+ position: absolute;
+ top: 0;
+ left: 0;
+
+ display: flex;
+ align-items: center;
+}
+/**************************/
diff --git a/src/assets/img/EU_footer_flag.png b/src/assets/img/EU_footer_flag.png
new file mode 100755
index 000000000..ea1eb708e
Binary files /dev/null and b/src/assets/img/EU_footer_flag.png differ
diff --git a/src/assets/img/Logo-Horizontal.svg b/src/assets/img/Logo-Horizontal.svg
deleted file mode 100644
index 8660603da..000000000
--- a/src/assets/img/Logo-Horizontal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/assets/img/Logo_Horizontal_white_small.png b/src/assets/img/Logo_Horizontal_white_small.png
new file mode 100755
index 000000000..08fad6350
Binary files /dev/null and b/src/assets/img/Logo_Horizontal_white_small.png differ
diff --git a/src/assets/img/OS_Logo_Horizontal.svg b/src/assets/img/OS_Logo_Horizontal.svg
new file mode 100644
index 000000000..36b0bc58c
--- /dev/null
+++ b/src/assets/img/OS_Logo_Horizontal.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/img/flags/ad-flag-round.png b/src/assets/img/flags/ad-flag-round.png
new file mode 100644
index 000000000..2e5f6b955
Binary files /dev/null and b/src/assets/img/flags/ad-flag-round.png differ
diff --git a/src/assets/img/flags/ad-flag-square.png b/src/assets/img/flags/ad-flag-square.png
new file mode 100644
index 000000000..ca9896b36
Binary files /dev/null and b/src/assets/img/flags/ad-flag-square.png differ
diff --git a/src/assets/img/flags/ad-flag.svg b/src/assets/img/flags/ad-flag.svg
new file mode 100644
index 000000000..f8ba935d6
--- /dev/null
+++ b/src/assets/img/flags/ad-flag.svg
@@ -0,0 +1,3002 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/al-flag-round.png b/src/assets/img/flags/al-flag-round.png
new file mode 100644
index 000000000..6afe85237
Binary files /dev/null and b/src/assets/img/flags/al-flag-round.png differ
diff --git a/src/assets/img/flags/al-flag-square.png b/src/assets/img/flags/al-flag-square.png
new file mode 100644
index 000000000..14e0ed12c
Binary files /dev/null and b/src/assets/img/flags/al-flag-square.png differ
diff --git a/src/assets/img/flags/al-flag.svg b/src/assets/img/flags/al-flag.svg
new file mode 100644
index 000000000..d2040d723
--- /dev/null
+++ b/src/assets/img/flags/al-flag.svg
@@ -0,0 +1,800 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/at-flag-round.png b/src/assets/img/flags/at-flag-round.png
new file mode 100644
index 000000000..08aba49f4
Binary files /dev/null and b/src/assets/img/flags/at-flag-round.png differ
diff --git a/src/assets/img/flags/at-flag-square.png b/src/assets/img/flags/at-flag-square.png
new file mode 100644
index 000000000..082538a12
Binary files /dev/null and b/src/assets/img/flags/at-flag-square.png differ
diff --git a/src/assets/img/flags/at-flag.svg b/src/assets/img/flags/at-flag.svg
new file mode 100644
index 000000000..717b0ef0b
--- /dev/null
+++ b/src/assets/img/flags/at-flag.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/ba-flag-round.png b/src/assets/img/flags/ba-flag-round.png
new file mode 100644
index 000000000..2ffaed022
Binary files /dev/null and b/src/assets/img/flags/ba-flag-round.png differ
diff --git a/src/assets/img/flags/ba-flag-square.png b/src/assets/img/flags/ba-flag-square.png
new file mode 100644
index 000000000..9851389c3
Binary files /dev/null and b/src/assets/img/flags/ba-flag-square.png differ
diff --git a/src/assets/img/flags/ba-flag.svg b/src/assets/img/flags/ba-flag.svg
new file mode 100644
index 000000000..5a00a0d88
--- /dev/null
+++ b/src/assets/img/flags/ba-flag.svg
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/be-flag-round.png b/src/assets/img/flags/be-flag-round.png
new file mode 100644
index 000000000..a1bc9bd9e
Binary files /dev/null and b/src/assets/img/flags/be-flag-round.png differ
diff --git a/src/assets/img/flags/be-flag-square.png b/src/assets/img/flags/be-flag-square.png
new file mode 100644
index 000000000..b3002cf4d
Binary files /dev/null and b/src/assets/img/flags/be-flag-square.png differ
diff --git a/src/assets/img/flags/be-flag.svg b/src/assets/img/flags/be-flag.svg
new file mode 100644
index 000000000..ef3751a97
--- /dev/null
+++ b/src/assets/img/flags/be-flag.svg
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/bg-flag-round.png b/src/assets/img/flags/bg-flag-round.png
new file mode 100644
index 000000000..03e86ad86
Binary files /dev/null and b/src/assets/img/flags/bg-flag-round.png differ
diff --git a/src/assets/img/flags/bg-flag-square.png b/src/assets/img/flags/bg-flag-square.png
new file mode 100644
index 000000000..9f64ff662
Binary files /dev/null and b/src/assets/img/flags/bg-flag-square.png differ
diff --git a/src/assets/img/flags/bg-flag.svg b/src/assets/img/flags/bg-flag.svg
new file mode 100644
index 000000000..cef95545d
--- /dev/null
+++ b/src/assets/img/flags/bg-flag.svg
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/by-flag-round.png b/src/assets/img/flags/by-flag-round.png
new file mode 100644
index 000000000..a3b8601f1
Binary files /dev/null and b/src/assets/img/flags/by-flag-round.png differ
diff --git a/src/assets/img/flags/by-flag-square.png b/src/assets/img/flags/by-flag-square.png
new file mode 100644
index 000000000..be78438d3
Binary files /dev/null and b/src/assets/img/flags/by-flag-square.png differ
diff --git a/src/assets/img/flags/by-flag.svg b/src/assets/img/flags/by-flag.svg
new file mode 100644
index 000000000..b61d5ee21
--- /dev/null
+++ b/src/assets/img/flags/by-flag.svg
@@ -0,0 +1,676 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/ch-flag-round.png b/src/assets/img/flags/ch-flag-round.png
new file mode 100644
index 000000000..ac31bc90a
Binary files /dev/null and b/src/assets/img/flags/ch-flag-round.png differ
diff --git a/src/assets/img/flags/ch-flag-square.png b/src/assets/img/flags/ch-flag-square.png
new file mode 100644
index 000000000..38c1e7a09
Binary files /dev/null and b/src/assets/img/flags/ch-flag-square.png differ
diff --git a/src/assets/img/flags/ch-flag.svg b/src/assets/img/flags/ch-flag.svg
new file mode 100644
index 000000000..1af417d3f
--- /dev/null
+++ b/src/assets/img/flags/ch-flag.svg
@@ -0,0 +1,479 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+35390
\ No newline at end of file
diff --git a/src/assets/img/flags/cz-flag-round.png b/src/assets/img/flags/cz-flag-round.png
new file mode 100644
index 000000000..ece085b24
Binary files /dev/null and b/src/assets/img/flags/cz-flag-round.png differ
diff --git a/src/assets/img/flags/cz-flag-square.png b/src/assets/img/flags/cz-flag-square.png
new file mode 100644
index 000000000..5a98ff59b
Binary files /dev/null and b/src/assets/img/flags/cz-flag-square.png differ
diff --git a/src/assets/img/flags/cz-flag.svg b/src/assets/img/flags/cz-flag.svg
new file mode 100644
index 000000000..f91e0a5b2
--- /dev/null
+++ b/src/assets/img/flags/cz-flag.svg
@@ -0,0 +1,490 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/de-flag-round.png b/src/assets/img/flags/de-flag-round.png
new file mode 100644
index 000000000..41c7728d2
Binary files /dev/null and b/src/assets/img/flags/de-flag-round.png differ
diff --git a/src/assets/img/flags/de-flag-square.png b/src/assets/img/flags/de-flag-square.png
new file mode 100644
index 000000000..b43fcdd92
Binary files /dev/null and b/src/assets/img/flags/de-flag-square.png differ
diff --git a/src/assets/img/flags/de-flag.svg b/src/assets/img/flags/de-flag.svg
new file mode 100644
index 000000000..6b3729e92
--- /dev/null
+++ b/src/assets/img/flags/de-flag.svg
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/dk-flag-round.png b/src/assets/img/flags/dk-flag-round.png
new file mode 100644
index 000000000..9d6c38d3b
Binary files /dev/null and b/src/assets/img/flags/dk-flag-round.png differ
diff --git a/src/assets/img/flags/dk-flag-square.png b/src/assets/img/flags/dk-flag-square.png
new file mode 100644
index 000000000..17e65f2d5
Binary files /dev/null and b/src/assets/img/flags/dk-flag-square.png differ
diff --git a/src/assets/img/flags/dk-flag.svg b/src/assets/img/flags/dk-flag.svg
new file mode 100644
index 000000000..b570bae0d
--- /dev/null
+++ b/src/assets/img/flags/dk-flag.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/ee-flag-round.png b/src/assets/img/flags/ee-flag-round.png
new file mode 100644
index 000000000..87ca03015
Binary files /dev/null and b/src/assets/img/flags/ee-flag-round.png differ
diff --git a/src/assets/img/flags/ee-flag-square.png b/src/assets/img/flags/ee-flag-square.png
new file mode 100644
index 000000000..26aa2966b
Binary files /dev/null and b/src/assets/img/flags/ee-flag-square.png differ
diff --git a/src/assets/img/flags/ee-flag.svg b/src/assets/img/flags/ee-flag.svg
new file mode 100644
index 000000000..f3f6659c2
--- /dev/null
+++ b/src/assets/img/flags/ee-flag.svg
@@ -0,0 +1,480 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/es-flag-round.png b/src/assets/img/flags/es-flag-round.png
new file mode 100644
index 000000000..bd1fcce2d
Binary files /dev/null and b/src/assets/img/flags/es-flag-round.png differ
diff --git a/src/assets/img/flags/es-flag-square.png b/src/assets/img/flags/es-flag-square.png
new file mode 100644
index 000000000..3b8d292b1
Binary files /dev/null and b/src/assets/img/flags/es-flag-square.png differ
diff --git a/src/assets/img/flags/es-flag.svg b/src/assets/img/flags/es-flag.svg
new file mode 100644
index 000000000..946417643
--- /dev/null
+++ b/src/assets/img/flags/es-flag.svg
@@ -0,0 +1,3944 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+353369
\ No newline at end of file
diff --git a/src/assets/img/flags/europe-flag.jpg b/src/assets/img/flags/europe-flag.jpg
new file mode 100644
index 000000000..405e07d6e
Binary files /dev/null and b/src/assets/img/flags/europe-flag.jpg differ
diff --git a/src/assets/img/flags/fi-flag-round.png b/src/assets/img/flags/fi-flag-round.png
new file mode 100644
index 000000000..a0eb226a0
Binary files /dev/null and b/src/assets/img/flags/fi-flag-round.png differ
diff --git a/src/assets/img/flags/fi-flag-square.png b/src/assets/img/flags/fi-flag-square.png
new file mode 100644
index 000000000..391113587
Binary files /dev/null and b/src/assets/img/flags/fi-flag-square.png differ
diff --git a/src/assets/img/flags/fi-flag.svg b/src/assets/img/flags/fi-flag.svg
new file mode 100644
index 000000000..fc72953d5
--- /dev/null
+++ b/src/assets/img/flags/fi-flag.svg
@@ -0,0 +1,479 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/fr-flag-round.png b/src/assets/img/flags/fr-flag-round.png
new file mode 100644
index 000000000..5c64bcde4
Binary files /dev/null and b/src/assets/img/flags/fr-flag-round.png differ
diff --git a/src/assets/img/flags/fr-flag-square.png b/src/assets/img/flags/fr-flag-square.png
new file mode 100644
index 000000000..ef397fed9
Binary files /dev/null and b/src/assets/img/flags/fr-flag-square.png differ
diff --git a/src/assets/img/flags/fr-flag.svg b/src/assets/img/flags/fr-flag.svg
new file mode 100644
index 000000000..6c1c332ce
--- /dev/null
+++ b/src/assets/img/flags/fr-flag.svg
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/gb-flag-round.png b/src/assets/img/flags/gb-flag-round.png
new file mode 100644
index 000000000..af6d90856
Binary files /dev/null and b/src/assets/img/flags/gb-flag-round.png differ
diff --git a/src/assets/img/flags/gb-flag-square.png b/src/assets/img/flags/gb-flag-square.png
new file mode 100644
index 000000000..35024f543
Binary files /dev/null and b/src/assets/img/flags/gb-flag-square.png differ
diff --git a/src/assets/img/flags/gb-flag.svg b/src/assets/img/flags/gb-flag.svg
new file mode 100644
index 000000000..7f6377a85
--- /dev/null
+++ b/src/assets/img/flags/gb-flag.svg
@@ -0,0 +1,517 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+38722
\ No newline at end of file
diff --git a/src/assets/img/flags/ge-flag-round.png b/src/assets/img/flags/ge-flag-round.png
new file mode 100644
index 000000000..d7e7e7549
Binary files /dev/null and b/src/assets/img/flags/ge-flag-round.png differ
diff --git a/src/assets/img/flags/ge-flag-square.png b/src/assets/img/flags/ge-flag-square.png
new file mode 100644
index 000000000..5743224cd
Binary files /dev/null and b/src/assets/img/flags/ge-flag-square.png differ
diff --git a/src/assets/img/flags/ge-flag.svg b/src/assets/img/flags/ge-flag.svg
new file mode 100644
index 000000000..43f2de7ce
--- /dev/null
+++ b/src/assets/img/flags/ge-flag.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/gr-flag-round.png b/src/assets/img/flags/gr-flag-round.png
new file mode 100644
index 000000000..663fea0fb
Binary files /dev/null and b/src/assets/img/flags/gr-flag-round.png differ
diff --git a/src/assets/img/flags/gr-flag-square.png b/src/assets/img/flags/gr-flag-square.png
new file mode 100644
index 000000000..585e9317a
Binary files /dev/null and b/src/assets/img/flags/gr-flag-square.png differ
diff --git a/src/assets/img/flags/gr-flag.svg b/src/assets/img/flags/gr-flag.svg
new file mode 100644
index 000000000..a5c0e544c
--- /dev/null
+++ b/src/assets/img/flags/gr-flag.svg
@@ -0,0 +1,488 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+ Flag of Greece
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/hr-flag-round.png b/src/assets/img/flags/hr-flag-round.png
new file mode 100644
index 000000000..b4934493a
Binary files /dev/null and b/src/assets/img/flags/hr-flag-round.png differ
diff --git a/src/assets/img/flags/hr-flag-square.png b/src/assets/img/flags/hr-flag-square.png
new file mode 100644
index 000000000..1aed40013
Binary files /dev/null and b/src/assets/img/flags/hr-flag-square.png differ
diff --git a/src/assets/img/flags/hr-flag.svg b/src/assets/img/flags/hr-flag.svg
new file mode 100644
index 000000000..8ec250f02
--- /dev/null
+++ b/src/assets/img/flags/hr-flag.svg
@@ -0,0 +1,6063 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/hu-flag-round.png b/src/assets/img/flags/hu-flag-round.png
new file mode 100644
index 000000000..edfcdd792
Binary files /dev/null and b/src/assets/img/flags/hu-flag-round.png differ
diff --git a/src/assets/img/flags/hu-flag-square.png b/src/assets/img/flags/hu-flag-square.png
new file mode 100644
index 000000000..32f28a7ed
Binary files /dev/null and b/src/assets/img/flags/hu-flag-square.png differ
diff --git a/src/assets/img/flags/hu-flag.svg b/src/assets/img/flags/hu-flag.svg
new file mode 100644
index 000000000..93874a6c0
--- /dev/null
+++ b/src/assets/img/flags/hu-flag.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/ie-flag-round.png b/src/assets/img/flags/ie-flag-round.png
new file mode 100644
index 000000000..b57980d06
Binary files /dev/null and b/src/assets/img/flags/ie-flag-round.png differ
diff --git a/src/assets/img/flags/ie-flag-square.png b/src/assets/img/flags/ie-flag-square.png
new file mode 100644
index 000000000..ca22ea98f
Binary files /dev/null and b/src/assets/img/flags/ie-flag-square.png differ
diff --git a/src/assets/img/flags/ie-flag.svg b/src/assets/img/flags/ie-flag.svg
new file mode 100644
index 000000000..9f6658882
--- /dev/null
+++ b/src/assets/img/flags/ie-flag.svg
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/is-flag-round.png b/src/assets/img/flags/is-flag-round.png
new file mode 100644
index 000000000..8ddfbd590
Binary files /dev/null and b/src/assets/img/flags/is-flag-round.png differ
diff --git a/src/assets/img/flags/is-flag-square.png b/src/assets/img/flags/is-flag-square.png
new file mode 100644
index 000000000..e9c2c83eb
Binary files /dev/null and b/src/assets/img/flags/is-flag-square.png differ
diff --git a/src/assets/img/flags/is-flag.svg b/src/assets/img/flags/is-flag.svg
new file mode 100644
index 000000000..5d08b34f2
--- /dev/null
+++ b/src/assets/img/flags/is-flag.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/it-flag-round.png b/src/assets/img/flags/it-flag-round.png
new file mode 100644
index 000000000..19bd6e78c
Binary files /dev/null and b/src/assets/img/flags/it-flag-round.png differ
diff --git a/src/assets/img/flags/it-flag-square.png b/src/assets/img/flags/it-flag-square.png
new file mode 100644
index 000000000..e642f0917
Binary files /dev/null and b/src/assets/img/flags/it-flag-square.png differ
diff --git a/src/assets/img/flags/it-flag.svg b/src/assets/img/flags/it-flag.svg
new file mode 100644
index 000000000..a33065e8c
--- /dev/null
+++ b/src/assets/img/flags/it-flag.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/li-flag-round.png b/src/assets/img/flags/li-flag-round.png
new file mode 100644
index 000000000..137f00179
Binary files /dev/null and b/src/assets/img/flags/li-flag-round.png differ
diff --git a/src/assets/img/flags/li-flag-square.png b/src/assets/img/flags/li-flag-square.png
new file mode 100644
index 000000000..ebfa95619
Binary files /dev/null and b/src/assets/img/flags/li-flag-square.png differ
diff --git a/src/assets/img/flags/li-flag.svg b/src/assets/img/flags/li-flag.svg
new file mode 100644
index 000000000..6f7f8556d
--- /dev/null
+++ b/src/assets/img/flags/li-flag.svg
@@ -0,0 +1,1043 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/lt-flag-round.png b/src/assets/img/flags/lt-flag-round.png
new file mode 100644
index 000000000..cc8211aa9
Binary files /dev/null and b/src/assets/img/flags/lt-flag-round.png differ
diff --git a/src/assets/img/flags/lt-flag-square.png b/src/assets/img/flags/lt-flag-square.png
new file mode 100644
index 000000000..1764a4acd
Binary files /dev/null and b/src/assets/img/flags/lt-flag-square.png differ
diff --git a/src/assets/img/flags/lt-flag.svg b/src/assets/img/flags/lt-flag.svg
new file mode 100644
index 000000000..822b2cdd1
--- /dev/null
+++ b/src/assets/img/flags/lt-flag.svg
@@ -0,0 +1,489 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/lu-flag-round.png b/src/assets/img/flags/lu-flag-round.png
new file mode 100644
index 000000000..b2ab95694
Binary files /dev/null and b/src/assets/img/flags/lu-flag-round.png differ
diff --git a/src/assets/img/flags/lu-flag-square.png b/src/assets/img/flags/lu-flag-square.png
new file mode 100644
index 000000000..27eae1d3f
Binary files /dev/null and b/src/assets/img/flags/lu-flag-square.png differ
diff --git a/src/assets/img/flags/lu-flag.svg b/src/assets/img/flags/lu-flag.svg
new file mode 100644
index 000000000..d49213e1e
--- /dev/null
+++ b/src/assets/img/flags/lu-flag.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/lv-flag-round.png b/src/assets/img/flags/lv-flag-round.png
new file mode 100644
index 000000000..3f67eee2c
Binary files /dev/null and b/src/assets/img/flags/lv-flag-round.png differ
diff --git a/src/assets/img/flags/lv-flag-square.png b/src/assets/img/flags/lv-flag-square.png
new file mode 100644
index 000000000..1a9a056ea
Binary files /dev/null and b/src/assets/img/flags/lv-flag-square.png differ
diff --git a/src/assets/img/flags/lv-flag.svg b/src/assets/img/flags/lv-flag.svg
new file mode 100644
index 000000000..d0f9973fb
--- /dev/null
+++ b/src/assets/img/flags/lv-flag.svg
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/mc-flag-round.png b/src/assets/img/flags/mc-flag-round.png
new file mode 100644
index 000000000..85d695623
Binary files /dev/null and b/src/assets/img/flags/mc-flag-round.png differ
diff --git a/src/assets/img/flags/mc-flag-square.png b/src/assets/img/flags/mc-flag-square.png
new file mode 100644
index 000000000..f16642985
Binary files /dev/null and b/src/assets/img/flags/mc-flag-square.png differ
diff --git a/src/assets/img/flags/mc-flag.svg b/src/assets/img/flags/mc-flag.svg
new file mode 100644
index 000000000..c4061ef26
--- /dev/null
+++ b/src/assets/img/flags/mc-flag.svg
@@ -0,0 +1,478 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/md-flag-round.png b/src/assets/img/flags/md-flag-round.png
new file mode 100644
index 000000000..83391bbca
Binary files /dev/null and b/src/assets/img/flags/md-flag-round.png differ
diff --git a/src/assets/img/flags/md-flag-square.png b/src/assets/img/flags/md-flag-square.png
new file mode 100644
index 000000000..4b00ed37b
Binary files /dev/null and b/src/assets/img/flags/md-flag-square.png differ
diff --git a/src/assets/img/flags/md-flag.svg b/src/assets/img/flags/md-flag.svg
new file mode 100644
index 000000000..60a4fa649
--- /dev/null
+++ b/src/assets/img/flags/md-flag.svg
@@ -0,0 +1,1739 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/me-flag-round.png b/src/assets/img/flags/me-flag-round.png
new file mode 100644
index 000000000..e4714cd3e
Binary files /dev/null and b/src/assets/img/flags/me-flag-round.png differ
diff --git a/src/assets/img/flags/me-flag-square.png b/src/assets/img/flags/me-flag-square.png
new file mode 100644
index 000000000..16193530f
Binary files /dev/null and b/src/assets/img/flags/me-flag-square.png differ
diff --git a/src/assets/img/flags/me-flag.svg b/src/assets/img/flags/me-flag.svg
new file mode 100644
index 000000000..8fcb080bd
--- /dev/null
+++ b/src/assets/img/flags/me-flag.svg
@@ -0,0 +1,16733 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/mk-flag-round.png b/src/assets/img/flags/mk-flag-round.png
new file mode 100644
index 000000000..e259a5f07
Binary files /dev/null and b/src/assets/img/flags/mk-flag-round.png differ
diff --git a/src/assets/img/flags/mk-flag-square.png b/src/assets/img/flags/mk-flag-square.png
new file mode 100644
index 000000000..aadca1a3a
Binary files /dev/null and b/src/assets/img/flags/mk-flag-square.png differ
diff --git a/src/assets/img/flags/mk-flag.svg b/src/assets/img/flags/mk-flag.svg
new file mode 100644
index 000000000..a27624edf
--- /dev/null
+++ b/src/assets/img/flags/mk-flag.svg
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/mt-flag-round.png b/src/assets/img/flags/mt-flag-round.png
new file mode 100644
index 000000000..41c6ba312
Binary files /dev/null and b/src/assets/img/flags/mt-flag-round.png differ
diff --git a/src/assets/img/flags/mt-flag-square.png b/src/assets/img/flags/mt-flag-square.png
new file mode 100644
index 000000000..325a9b319
Binary files /dev/null and b/src/assets/img/flags/mt-flag-square.png differ
diff --git a/src/assets/img/flags/mt-flag.svg b/src/assets/img/flags/mt-flag.svg
new file mode 100644
index 000000000..6707683ab
--- /dev/null
+++ b/src/assets/img/flags/mt-flag.svg
@@ -0,0 +1,1089 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/nl-flag-round.png b/src/assets/img/flags/nl-flag-round.png
new file mode 100644
index 000000000..da105484c
Binary files /dev/null and b/src/assets/img/flags/nl-flag-round.png differ
diff --git a/src/assets/img/flags/nl-flag-square.png b/src/assets/img/flags/nl-flag-square.png
new file mode 100644
index 000000000..8963915ce
Binary files /dev/null and b/src/assets/img/flags/nl-flag-square.png differ
diff --git a/src/assets/img/flags/nl-flag.svg b/src/assets/img/flags/nl-flag.svg
new file mode 100644
index 000000000..1975f01db
--- /dev/null
+++ b/src/assets/img/flags/nl-flag.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/no-flag-round.png b/src/assets/img/flags/no-flag-round.png
new file mode 100644
index 000000000..988803148
Binary files /dev/null and b/src/assets/img/flags/no-flag-round.png differ
diff --git a/src/assets/img/flags/no-flag-square.png b/src/assets/img/flags/no-flag-square.png
new file mode 100644
index 000000000..2801baf6b
Binary files /dev/null and b/src/assets/img/flags/no-flag-square.png differ
diff --git a/src/assets/img/flags/no-flag.svg b/src/assets/img/flags/no-flag.svg
new file mode 100644
index 000000000..8e0c63c82
--- /dev/null
+++ b/src/assets/img/flags/no-flag.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/pl-flag-round.png b/src/assets/img/flags/pl-flag-round.png
new file mode 100644
index 000000000..749f44aea
Binary files /dev/null and b/src/assets/img/flags/pl-flag-round.png differ
diff --git a/src/assets/img/flags/pl-flag-square.png b/src/assets/img/flags/pl-flag-square.png
new file mode 100644
index 000000000..d2285713a
Binary files /dev/null and b/src/assets/img/flags/pl-flag-square.png differ
diff --git a/src/assets/img/flags/pl-flag.svg b/src/assets/img/flags/pl-flag.svg
new file mode 100644
index 000000000..7b931c4b5
--- /dev/null
+++ b/src/assets/img/flags/pl-flag.svg
@@ -0,0 +1,479 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/pt-flag-round.png b/src/assets/img/flags/pt-flag-round.png
new file mode 100644
index 000000000..0277891ca
Binary files /dev/null and b/src/assets/img/flags/pt-flag-round.png differ
diff --git a/src/assets/img/flags/pt-flag-square.png b/src/assets/img/flags/pt-flag-square.png
new file mode 100644
index 000000000..98989e43b
Binary files /dev/null and b/src/assets/img/flags/pt-flag-square.png differ
diff --git a/src/assets/img/flags/pt-flag.svg b/src/assets/img/flags/pt-flag.svg
new file mode 100644
index 000000000..e77d58611
--- /dev/null
+++ b/src/assets/img/flags/pt-flag.svg
@@ -0,0 +1,700 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+66708
\ No newline at end of file
diff --git a/src/assets/img/flags/ro-flag-round.png b/src/assets/img/flags/ro-flag-round.png
new file mode 100644
index 000000000..f816bdd84
Binary files /dev/null and b/src/assets/img/flags/ro-flag-round.png differ
diff --git a/src/assets/img/flags/ro-flag-square.png b/src/assets/img/flags/ro-flag-square.png
new file mode 100644
index 000000000..985e81cd5
Binary files /dev/null and b/src/assets/img/flags/ro-flag-square.png differ
diff --git a/src/assets/img/flags/ro-flag.svg b/src/assets/img/flags/ro-flag.svg
new file mode 100644
index 000000000..39de4aa30
--- /dev/null
+++ b/src/assets/img/flags/ro-flag.svg
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+35739
\ No newline at end of file
diff --git a/src/assets/img/flags/rs-flag-round.png b/src/assets/img/flags/rs-flag-round.png
new file mode 100644
index 000000000..8ae6b021d
Binary files /dev/null and b/src/assets/img/flags/rs-flag-round.png differ
diff --git a/src/assets/img/flags/rs-flag-square.png b/src/assets/img/flags/rs-flag-square.png
new file mode 100644
index 000000000..40476efc0
Binary files /dev/null and b/src/assets/img/flags/rs-flag-square.png differ
diff --git a/src/assets/img/flags/rs-flag.svg b/src/assets/img/flags/rs-flag.svg
new file mode 100644
index 000000000..d64157303
--- /dev/null
+++ b/src/assets/img/flags/rs-flag.svg
@@ -0,0 +1,32457 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2944013
\ No newline at end of file
diff --git a/src/assets/img/flags/ru-flag-round.png b/src/assets/img/flags/ru-flag-round.png
new file mode 100644
index 000000000..cd1b4623d
Binary files /dev/null and b/src/assets/img/flags/ru-flag-round.png differ
diff --git a/src/assets/img/flags/ru-flag-square.png b/src/assets/img/flags/ru-flag-square.png
new file mode 100644
index 000000000..868ab1084
Binary files /dev/null and b/src/assets/img/flags/ru-flag-square.png differ
diff --git a/src/assets/img/flags/ru-flag.svg b/src/assets/img/flags/ru-flag.svg
new file mode 100644
index 000000000..ee3457159
--- /dev/null
+++ b/src/assets/img/flags/ru-flag.svg
@@ -0,0 +1,481 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/se-flag-round.png b/src/assets/img/flags/se-flag-round.png
new file mode 100644
index 000000000..52b7a90f1
Binary files /dev/null and b/src/assets/img/flags/se-flag-round.png differ
diff --git a/src/assets/img/flags/se-flag-square.png b/src/assets/img/flags/se-flag-square.png
new file mode 100644
index 000000000..caa723b40
Binary files /dev/null and b/src/assets/img/flags/se-flag-square.png differ
diff --git a/src/assets/img/flags/se-flag.svg b/src/assets/img/flags/se-flag.svg
new file mode 100644
index 000000000..78ba905af
--- /dev/null
+++ b/src/assets/img/flags/se-flag.svg
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+35649
\ No newline at end of file
diff --git a/src/assets/img/flags/si-flag-round.png b/src/assets/img/flags/si-flag-round.png
new file mode 100644
index 000000000..25151409b
Binary files /dev/null and b/src/assets/img/flags/si-flag-round.png differ
diff --git a/src/assets/img/flags/si-flag-square.png b/src/assets/img/flags/si-flag-square.png
new file mode 100644
index 000000000..986d78d80
Binary files /dev/null and b/src/assets/img/flags/si-flag-square.png differ
diff --git a/src/assets/img/flags/si-flag.svg b/src/assets/img/flags/si-flag.svg
new file mode 100644
index 000000000..5d8473e67
--- /dev/null
+++ b/src/assets/img/flags/si-flag.svg
@@ -0,0 +1,5419 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+411709
\ No newline at end of file
diff --git a/src/assets/img/flags/sk-flag-round.png b/src/assets/img/flags/sk-flag-round.png
new file mode 100644
index 000000000..0584962a9
Binary files /dev/null and b/src/assets/img/flags/sk-flag-round.png differ
diff --git a/src/assets/img/flags/sk-flag-square.png b/src/assets/img/flags/sk-flag-square.png
new file mode 100644
index 000000000..c9d6fb43c
Binary files /dev/null and b/src/assets/img/flags/sk-flag-square.png differ
diff --git a/src/assets/img/flags/sk-flag.svg b/src/assets/img/flags/sk-flag.svg
new file mode 100644
index 000000000..db0a29abe
--- /dev/null
+++ b/src/assets/img/flags/sk-flag.svg
@@ -0,0 +1,536 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+40119
\ No newline at end of file
diff --git a/src/assets/img/flags/sm-flag-round.png b/src/assets/img/flags/sm-flag-round.png
new file mode 100644
index 000000000..9a2bffd03
Binary files /dev/null and b/src/assets/img/flags/sm-flag-round.png differ
diff --git a/src/assets/img/flags/sm-flag-square.png b/src/assets/img/flags/sm-flag-square.png
new file mode 100644
index 000000000..5797f3a93
Binary files /dev/null and b/src/assets/img/flags/sm-flag-square.png differ
diff --git a/src/assets/img/flags/sm-flag.svg b/src/assets/img/flags/sm-flag.svg
new file mode 100644
index 000000000..a2eb4b5bd
--- /dev/null
+++ b/src/assets/img/flags/sm-flag.svg
@@ -0,0 +1,4991 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+440330
\ No newline at end of file
diff --git a/src/assets/img/flags/tr-flag-round.png b/src/assets/img/flags/tr-flag-round.png
new file mode 100644
index 000000000..56f3c7c9a
Binary files /dev/null and b/src/assets/img/flags/tr-flag-round.png differ
diff --git a/src/assets/img/flags/tr-flag-square.png b/src/assets/img/flags/tr-flag-square.png
new file mode 100644
index 000000000..cb14bd722
Binary files /dev/null and b/src/assets/img/flags/tr-flag-square.png differ
diff --git a/src/assets/img/flags/tr-flag.svg b/src/assets/img/flags/tr-flag.svg
new file mode 100644
index 000000000..0cb963729
--- /dev/null
+++ b/src/assets/img/flags/tr-flag.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/flags/ua-flag-round.png b/src/assets/img/flags/ua-flag-round.png
new file mode 100644
index 000000000..8fa7f6b9d
Binary files /dev/null and b/src/assets/img/flags/ua-flag-round.png differ
diff --git a/src/assets/img/flags/ua-flag-square.png b/src/assets/img/flags/ua-flag-square.png
new file mode 100644
index 000000000..e1690b794
Binary files /dev/null and b/src/assets/img/flags/ua-flag-square.png differ
diff --git a/src/assets/img/flags/ua-flag.svg b/src/assets/img/flags/ua-flag.svg
new file mode 100644
index 000000000..9cb6a8003
--- /dev/null
+++ b/src/assets/img/flags/ua-flag.svg
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+35682
\ No newline at end of file
diff --git a/src/assets/img/flags/va-flag-round.png b/src/assets/img/flags/va-flag-round.png
new file mode 100644
index 000000000..c35742c36
Binary files /dev/null and b/src/assets/img/flags/va-flag-round.png differ
diff --git a/src/assets/img/flags/va-flag-square.png b/src/assets/img/flags/va-flag-square.png
new file mode 100644
index 000000000..485c342af
Binary files /dev/null and b/src/assets/img/flags/va-flag-square.png differ
diff --git a/src/assets/img/flags/va-flag.svg b/src/assets/img/flags/va-flag.svg
new file mode 100644
index 000000000..e5e637065
--- /dev/null
+++ b/src/assets/img/flags/va-flag.svg
@@ -0,0 +1,3175 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+270808
\ No newline at end of file
diff --git a/src/assets/img/flags/xk-flag-round.png b/src/assets/img/flags/xk-flag-round.png
new file mode 100644
index 000000000..8c64c3be0
Binary files /dev/null and b/src/assets/img/flags/xk-flag-round.png differ
diff --git a/src/assets/img/flags/xk-flag-square.png b/src/assets/img/flags/xk-flag-square.png
new file mode 100644
index 000000000..049528b7c
Binary files /dev/null and b/src/assets/img/flags/xk-flag-square.png differ
diff --git a/src/assets/img/flags/xk-flag.svg b/src/assets/img/flags/xk-flag.svg
new file mode 100644
index 000000000..1fdecb424
--- /dev/null
+++ b/src/assets/img/flags/xk-flag.svg
@@ -0,0 +1,4003 @@
+
+
+
+
+
+
+
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/img/icons/sort-ascending.svg b/src/assets/img/icons/sort-ascending.svg
new file mode 100644
index 000000000..b57e93655
--- /dev/null
+++ b/src/assets/img/icons/sort-ascending.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/img/icons/sort-descending.svg b/src/assets/img/icons/sort-descending.svg
new file mode 100644
index 000000000..dce1d081a
--- /dev/null
+++ b/src/assets/img/icons/sort-descending.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/img/icons/sort.svg b/src/assets/img/icons/sort.svg
new file mode 100644
index 000000000..132954894
--- /dev/null
+++ b/src/assets/img/icons/sort.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index fb0cdf8ea..dcad717d3 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,6 +1,7 @@
export const environment = {
production: true,
- API_ENDPOINT: '/api',
+ // API_ENDPOINT: '/api',
+ API_ENDPOINT: 'https://stats.madgik.di.uoa.gr/stats-api/',
FAQ_ENDPOINT: '/uoa-admin-tools/api',
FAQ_HOMEPAGE: '/uoa-admin-tools/dashboard'
};
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 6a9e45db1..916c19668 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -4,7 +4,8 @@
export const environment = {
production: false,
- API_ENDPOINT: '/uoa-repository-manager-service',
+ // API_ENDPOINT: '/uoa-repository-manager-service',
+ API_ENDPOINT: 'https://stats.madgik.di.uoa.gr/stats-api/',
FAQ_ENDPOINT: 'http://audrey.athenarc.gr:5555/api',
FAQ_HOMEPAGE: 'http://audrey.athenarc.gr:5555'
};