commit dd76c389acb13f52e144f12726aea3bda65117eb Author: Argiro Kokogiannaki Date: Wed Jan 9 11:05:23 2019 +0000 Update the structure of the project add funder and initiatives pages update the home page css updates git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-monitor-portal/trunk/monitor@54549 d315682c-612b-4755-9ff5-7f18f6832af3 diff --git a/.angular-cli.json b/.angular-cli.json new file mode 100644 index 0000000..975ee35 --- /dev/null +++ b/.angular-cli.json @@ -0,0 +1,110 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "ng-universal-demo" + }, + "apps": [ + { + "root": "src", + "outDir": "dist/browser", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css", + "../node_modules/datatables.net-dt/css/jquery.dataTables.css" + ], + "scripts": [ + "../node_modules/jquery/dist/jquery.js", + "../node_modules/datatables.net/js/jquery.dataTables.js" + ], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + }, + { + "platform": "server", + "root": "src", + "outDir": "dist/server", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.server.ts", + "test": "test.ts", + "tsconfig": "tsconfig.server.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.css" + ], + "scripts": [], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "css", + "component": { + "spec": false, + "inlineStyle": true, + "inlineTemplate": true + }, + "directive": { + "spec": false + }, + "class": { + "spec": false + }, + "guard": { + "spec": false + }, + "module": { + "spec": false + }, + "pipe": { + "spec": false + }, + "service": { + "spec": false + } + } + } diff --git a/README.md b/README.md new file mode 100644 index 0000000..96e55e9 --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# Angular Universal & Anguar-CLI minimal starter + +> This demo is built following the [Angular-CLI Wiki guide](https://github.com/angular/angular-cli/wiki/stories-universal-rendering) + +We're utilizing packages from the [Angular Universal @nguniversal](https://github.com/angular/universal) repo, such as [ng-module-map-ngfactory-loader](https://github.com/angular/universal/tree/master/modules/module-map-ngfactory-loader) to enable Lazy Loading. + +--- + +## Static or Dynamic +This repo demonstrates the use of 2 different forms of Server Side Rendering. + +**Static** Also known as "prerendering" +* Happens at build time +* Renders your application and replaces the dist index.html with a version rendered at the route `/`. + +**Dynamic** +* Happens at runtime +* Uses `ngExpressEngine` to render you application on the fly at the requested url. + +--- + +## Installation +* `npm install` or `yarn` + +--- + +## Development (Client-side only rendering) +* run `npm run start` which will start `ng serve` (project served at the standard: localhost:4200) + +--- + +## Production + +Depending on whether you're publishing dynamic or static prerendering, run the build command, and then serve up your dist folder assets. + +> **NOTE**: To deploy your **Static** site to a static hosting platform you will have to deploy the *`dist/browser`* folder, rather than the usual *`dist`* + +ie: `npm run build:dynamic` or `npm run build:static`. All of the files that need to be served will be found within the `/dist` folder. + + + +--- + +## Testing Universal (dynamic or static) builds -Locally- + +**Dynamic** : **`npm run start:dynamic`** + +Compiles your application and spins up a Node Express to dynamically serve your Universal application on `http://localhost:4000`. + +**Static** : **`npm run start:static`** + +- Compiles your application and prerenders your applications files, spinning up a demo http-server so you can view it on `http://127.0.0.1:8080` + + diff --git a/deploy/beta-properties.json b/deploy/beta-properties.json new file mode 100644 index 0000000..31fd291 --- /dev/null +++ b/deploy/beta-properties.json @@ -0,0 +1,90 @@ +{ + "enablePiwikTrack" : true, + "enableHelper" : true, + "useCache" : true, + "showContent" : false, + "metricsAPIURL" : "https://beta.services.openaire.eu/usagestats/", + "framesAPIURL" : "https://beta.openaire.eu/stats3/", + "statisticsAPIURL" : "https://beta.services.openaire.eu/stats-api/", + "statisticsFrameAPIURL":"https://beta.openaire.eu/stats/", + "claimsAPIURL" : "https://beta.services.openaire.eu/claims/rest/claimsService/", + "searchAPIURLLAst" : "https://beta.services.openaire.eu/search/v2/api/", + "searchResourcesAPIURL" : "https://beta.services.openaire.eu/search/v2/api/resources", + "csvAPIURL" : "https://beta.services.openaire.eu/search/v2/api/reports", + "searchCrossrefAPIURL" : "https://api.crossref.org/works", + "searchDataciteAPIURL" : "https://api.datacite.org/works", + "searchOrcidURL" : "https://pub.orcid.org/v2.1/", + "pmidURL" : "http://www.ncbi.nlm.nih.gov/pubmed/", + "doiURL" : "https://dx.doi.org/", + "cordisURL" : "http://cordis.europa.eu/projects/", + "pmcURL" : "http://europepmc.org/articles/", + "handleURL" : "http://hdl.handle.net/", + "zenodo" : "https://zenodo.org/", + "openAccess" : "https://www.openaire.eu/support/faq#article-id-234", + "openAccessRepo" : "https://www.openaire.eu/support/faq#article-id-310", + "fp7Guidlines" : "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme", + "h2020Guidlines" : "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020", + "ercGuidlines" : "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf", + "helpdesk" : "https://www.openaire.eu/support/helpdesk", + "uploadService" : "https://demo.openaire.eu/upload/", + + "vocabulariesAPI" :"https://beta.services.openaire.eu/provision/mvc/vocabularies/", + + "piwikBaseUrl" :"https://analytics.openaire.eu/piwik.php?idsite=", + "piwikSiteId" : "80", + "loginUrl" :"https://beta.services.openaire.eu/connect-user-management/openid_connect_login", + + "logoutUrl" :"https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=", + + "logoutOpenaireUrl" :"http://dl067.madgik.di.uoa.gr/idp/profile/Logout", + + "cookieDomain" :".openaire.eu", + + "feedbackmail" :"openaire.test@gmail.com", + + "helperPageUrl" :"http://scoobydoo.di.uoa.gr:16000/api/page/route", + + "cacheUrl" :"https://demo.openaire.eu/cache/get?url=", + + "datasourcesAPI": "https://beta.services.openaire.eu/openaire/ds/search/", + + "adminToolsAPIURL" :"https://beta.services.openaire.eu/uoa-admin-tools", + + "adminToolsCommunity" :"openaire", + "contextsAPI":"https://beta.services.openaire.eu/openaire/context", + "communityAPI": "https://beta.services.openaire.eu/openaire/community/", + "communitiesAPI": "https://beta.services.openaire.eu/openaire/community/communities", + + "csvLimit": 2000, + "pagingLimit": 20, + "resultsPerPage": 10, + + "baseLink" : "https://beta.connect.openaire.eu", + + "searchLinkToPublication" : "/search/publication?articleId=", + "searchLinkToProject" : "/search/project?projectId=", + "searchLinkToDataProvider" : "/search/dataprovider?datasourceId=", + "searchLinkToDataset" : "/search/dataset?datasetId=", + "searchLinkToOrganization" : "/search/organization?organizationId=", + + "searchLinkToPublications" : "/search/find/publications", + "searchLinkToDataProviders" : "/search/find/dataproviders", + "searchLinkToProjects" : "/search/find/projects", + "searchLinkToDatasets" : "/search/find/datasets", + "searchLinkToSoftware" : "/search/find/software", + "searchLinkToOrganizations" : "/search/find/organizations", + "searchLinkToCompatibleDataProviders" : "/search/content-providers", + "searchLinkToCompatibleDataProvidersTable" : "/search/content-providers-table", + "searchLinkToEntityRegistriesDataProviders" : "/search/entity-registries", + "searchLinkToEntityRegistriesDataProvidersTable" : "/search/entity-registries-table", + "searchLinkToJournals" : "/search/journals", + "searchLinkToJournalsTable" : "/search/journals-table", + + "searchLinkToAdvancedPublications" : "/search/advanced/publications", + "searchLinkToAdvancedProjects" : "/search/advanced/projects", + "searchLinkToAdvancedDatasets" : "/search/advanced/datasets", + "searchLinkToAdvancedSoftware" : "/search/advanced/software", + "searchLinkToAdvancedDataProviders" : "/search/advanced/dataproviders", + "searchLinkToAdvancedOrganizations" : "/search/advanced/organizations", + "searchLinkToAdvancedPeople" : "/search/advanced/people" +} diff --git a/deploy/prepareDeploy.sh b/deploy/prepareDeploy.sh new file mode 100755 index 0000000..8f8d986 --- /dev/null +++ b/deploy/prepareDeploy.sh @@ -0,0 +1,24 @@ +##ATTENTION +## DON'T run it in svn folder - it *REMOVES* files +## Copy project in another file "deploy-folder" +## cd "deploy-folder" +## run the script + +## uncommect from here--> +# cp monitor-beta-properties.json src/assets/env-properties.json; +# rm -rf src/assets/common-assets/.svn/; +# rm -rf src/app/openaireLibrary/.svn/; +# pico src/app/openaireLibrary/utils/properties/environment-specific.service.ts; +# npm run build:dynamic; +# rm -rf src node_modules .idea/ connect-production-properties.json installOpenaireLib.sh; +# echo 'Ready!'; +# echo 'Now copy to the server!' +##<-- to here + +##copy "deploy-folder" in beta.connect.openaire.eu +##coppies of previous deployments exist in "/home/argiro.kokogiannaki/connect-portal/connectYYYY-MM-DD" +##run "npm i" +##become nodejs user: "sudo su nodejs -s /bin/bash" +##go to "cd /srv/www/portal" +##cp files from "cp -r HOME_PATH/deploy-folder/* ." +##restart portal "pm2 restart connect" diff --git a/package.json b/package.json new file mode 100644 index 0000000..4a61f04 --- /dev/null +++ b/package.json @@ -0,0 +1,63 @@ +{ + "name": "openaire-connect", + "version": "1.0.0", + "license": "Openaire", + "contributors": [ + "Argiro Kokogiannaki ", + "Konstantina Galouni " + ], + "scripts": { + "ng": "ng", + "start": " ng serve --disable-host-check --host 0.0.0.0", + "start:dynamic": "PORT=5000 npm run build:dynamic && npm run serve:dynamic", + "start:static": "npm run build:static && npm run serve:static", + "build": "ng build", + "build:client-and-server-bundles": "ng build --prod -sm --stats-json && ng build --prod --app 1 --output-hashing=false", + "build:static": "npm run build:client-and-server-bundles && npm run webpack:server && npm run generate:static", + "build:dynamic": "npm run build:client-and-server-bundles && npm run webpack:server", + "generate:static": "cd dist && node prerender", + "webpack:server": "webpack --config webpack.server.config.js --progress --colors", + "serve:static": "cd dist/browser && http-server", + "serve:dynamic": "node dist/server" + }, + "private": true, + "dependencies": { + "@angular/animations": "^4.2.4", + "@angular/common": "^4.2.4", + "@angular/compiler": "^4.2.4", + "@angular/core": "^4.2.4", + "@angular/forms": "^4.2.4", + "@angular/http": "^4.2.4", + "@angular/platform-browser": "^4.2.4", + "@angular/platform-browser-dynamic": "^4.2.4", + "@angular/platform-server": "^4.2.4", + "@angular/router": "^4.2.4", + "@nguniversal/express-engine": "^1.0.0-beta.3", + "@nguniversal/module-map-ngfactory-loader": "^1.0.0-beta.3", + "angular-datatables": "^4.4.0", + "citation-js": "^0.3.4", + "clipboard": "^1.5.16", + "core-js": "^2.4.1", + "datatables.net": "^1.10.16", + "datatables.net-dt": "^1.10.16", + "jquery": "^3.2.1", + "ngx-json-ld": "0.1.6", + "rxjs": "^5.4.2", + "ts-md5": "^1.2.0", + "wikidata-sdk": "^5.2.9", + "zone.js": "^0.8.14" + }, + "devDependencies": { + "@angular/cli": "^1.3.0", + "@angular/compiler-cli": "^4.2.4", + "@angular/language-service": "^4.2.4", + "@types/datatables.net": "^1.10.8", + "@types/jquery": "^3.2.17", + "@types/node": "^8.0.30", + "cpy-cli": "^1.0.1", + "http-server": "^0.10.0", + "reflect-metadata": "^0.1.10", + "ts-loader": "^2.3.7", + "typescript": "~2.3.3" + } +} diff --git a/prerender.ts b/prerender.ts new file mode 100644 index 0000000..5ddb8cd --- /dev/null +++ b/prerender.ts @@ -0,0 +1,45 @@ +// Load zone.js for the server. +import 'zone.js/dist/zone-node'; +import 'reflect-metadata'; +import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'; +import { join } from 'path'; + +import { enableProdMode } from '@angular/core'; +// Faster server renders w/ Prod mode (dev mode never needed) +enableProdMode(); + +// Express Engine +import { ngExpressEngine } from '@nguniversal/express-engine'; +// Import module map for lazy loading +import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader'; +import { renderModuleFactory } from '@angular/platform-server'; +import { ROUTES } from './static.paths'; + +// * NOTE :: leave this as require() since this file is built Dynamically from webpack +const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main.bundle'); + +const BROWSER_FOLDER = join(process.cwd(), 'browser'); + +// Load the index.html file containing referances to your application bundle. +const index = readFileSync(join('browser', 'index.html'), 'utf8'); + +let previousRender = Promise.resolve(); + +// Iterate each route path +ROUTES.forEach(route => { + var fullPath = join(BROWSER_FOLDER, route); + + // Make sure the directory structure is there + if(!existsSync(fullPath)){ + mkdirSync(fullPath); + } + + // Writes rendered HTML to index.html, replacing the file if it already exists. + previousRender = previousRender.then(_ => renderModuleFactory(AppServerModuleNgFactory, { + document: index, + url: route, + extraProviders: [ + provideModuleMap(LAZY_MODULE_MAP) + ] + })).then(html => writeFileSync(join(fullPath, 'index.html'), html)); +}); diff --git a/server.ts b/server.ts new file mode 100644 index 0000000..6aeb0fa --- /dev/null +++ b/server.ts @@ -0,0 +1,58 @@ +import 'zone.js/dist/zone-node'; +import 'reflect-metadata'; +import { renderModuleFactory } from '@angular/platform-server'; +import { enableProdMode } from '@angular/core'; + +import * as express from 'express'; +import { join } from 'path'; +import { readFileSync } from 'fs'; + +// Faster server renders w/ Prod mode (dev mode never needed) +enableProdMode(); + +// Express server +const app = express(); + +const PORT = process.env.PORT || 4000; +const DIST_FOLDER = join(process.cwd(), 'dist'); + +// Our index.html we'll use as our template +const template = readFileSync(join(DIST_FOLDER, 'browser', 'index.html')).toString(); + +// * NOTE :: leave this as require() since this file is built Dynamically from webpack +const { AppServerModuleNgFactory, LAZY_MODULE_MAP } = require('./dist/server/main.bundle'); + +// Express Engine +import { ngExpressEngine } from '@nguniversal/express-engine'; +// Import module map for lazy loading +import { provideModuleMap } from '@nguniversal/module-map-ngfactory-loader'; + +// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine) +app.engine('html', ngExpressEngine({ + bootstrap: AppServerModuleNgFactory, + providers: [ + provideModuleMap(LAZY_MODULE_MAP) + ] +})); + +app.set('view engine', 'html'); +app.set('views', join(DIST_FOLDER, 'browser')); + +/* - Example Express Rest API endpoints - + app.get('/api/**', (req, res) => { }); +*/ + +// Server static files from /browser +app.get('*.*', express.static(join(DIST_FOLDER, 'browser'), { + maxAge: '1y' +})); + +// ALl regular routes use the Universal engine +app.get('*', (req, res) => { + res.render('index', { req }); +}); + +// Start up the Node server +app.listen(PORT, () => { + console.log(`Node Express server listening on http://localhost:${PORT}`); +}); diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..952a435 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { EnvironmentSpecificResolver} from './openaireLibrary/utils/properties/environmentSpecificResolver'; +import { EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service'; + +import { OpenaireErrorPageComponent } from './error/errorPage.component'; + +const routes: Routes = [ + { path: '', loadChildren: './home/home.module#HomeModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'initiatives', loadChildren: './initiatives/communities/communities.module#CommunitiesModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'initiatives/:id', loadChildren: './initiatives/community/community.module#CommunityModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + + { path: 'reload', loadChildren: './reload/libReload.module#LibReloadModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'user-info', loadChildren: './login/libUser.module#LibUserModule', resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: 'error', component: OpenaireErrorPageComponent, resolve: { envSpecific: EnvironmentSpecificResolver }}, + { path: '**',pathMatch: 'full',component: OpenaireErrorPageComponent, resolve: { envSpecific: EnvironmentSpecificResolver }} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule], + providers: [EnvironmentSpecificResolver, EnvironmentSpecificService] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..e450a54 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,95 @@ +import { Component, Directive, ElementRef, Renderer, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core'; +import {Observable} from 'rxjs/Observable'; +import {ActivatedRoute} from '@angular/router'; + +import { EnvProperties} from './openaireLibrary/utils/properties/env-properties'; +import{MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu'; +import { EnvironmentSpecificService} from './openaireLibrary/utils/properties/environment-specific.service'; +import {Session} from './openaireLibrary/login/utils/helper.class'; + +@Component({ + //changeDetection: ChangeDetectionStrategy.Default, + //encapsulation: ViewEncapsulation.Emulated, + selector: 'app-root', + styles: [` + `], + template: ` + + + + +
+
+ +
+
+ + + OpenAIRE uses cookies in order to function properly.
+ Cookies are small pieces of data that websites store in your browser to allow us to give you the best browsing experience possible. + By using the OpenAIRE portal you accept our use of cookies. Read more + + +
+ + +` + +}) +export class AppComponent { + isClient:boolean = false; + userMenuItems:MenuItem[] =[]; + menuItems:RootMenuItem []=[]; + bottomMenuItems:MenuItem[] =[]; + properties:EnvProperties; + + constructor( private route: ActivatedRoute, private propertiesService:EnvironmentSpecificService ) { + } + + ngOnInit() { + this.propertiesService.loadEnvironment() + .then(es => { + this.propertiesService.setEnvProperties(es); + this.properties = this.propertiesService.envSpecific; + this.bottomMenuItems =[ + new MenuItem("","About","https://beta.openaire.eu/project-factsheets","",false,[],[],{}), + new MenuItem("","News - Events","https://beta.openaire.eu/news-events","",false,[],[],{}), + new MenuItem("","Blog","https://blogs.openaire.eu/","",false,[],[],{}), + new MenuItem("","Contact us","https://beta.openaire.eu/contact-us","",false,[],[],{}) + ]; + this.userMenuItems =[ + //new MenuItem("","My links","","/myclaims",false,[],["/myclaims"],{}) + ]; + this.menuItems = [ + {rootItem: new MenuItem("funders","Funders","","/search/find",false,[],["/search/find"],{}), + items: [new MenuItem("","Publications","","/search/find/publications",false,["publication"],["/search/find/publications"],{}) + ]}, + { + rootItem: new MenuItem("ris","Research initiatives","","",false,[],["/participate/deposit-publications","/participate/deposit-datasets"],{}), + items: [new MenuItem("","Publications","","/participate/deposit-publications",false,["publication"],["/participate/deposit-publications"],{}), + new MenuItem("","Research Data","","/participate/deposit-datasets",false,["dataset"],["/participate/deposit-datasets"],{})] + }, + { + rootItem: new MenuItem("link","Link","","/participate/claim",false,[],["/participate/claim"],{}), + items: [] + } + + ]; + // this.route.queryParams.subscribe(data => { + // + // }); + if (typeof document !== 'undefined') { + try{ + this.isClient = true; + }catch (e) { + } + } + }, error => { + console.log("App couldn't fetch properties"); + console.log(error); + + }); + } +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100755 index 0000000..b5ee424 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,41 @@ +import {NgModule} from '@angular/core'; +import {FormsModule} from '@angular/forms'; +import {APP_BASE_HREF, CommonModule} from '@angular/common'; +import {HttpModule} from '@angular/http'; +import {RouterModule} from '@angular/router'; +import {BrowserModule} from '@angular/platform-browser'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; + +import {AppComponent} from './app.component'; +import {OpenaireErrorPageComponent} from './error/errorPage.component'; + +import {AppRoutingModule} from './app-routing.module'; +import {SharedModule} from './shared/shared.module'; +import {CookieLawModule} from './openaireLibrary/sharedComponents/cookie-law/cookie-law.module'; +import {BottomModule} from './openaireLibrary/sharedComponents/bottom.module'; +import {FeedbackModule} from './openaireLibrary/sharedComponents/feedback/feedback.module'; +import {ErrorModule} from './openaireLibrary/error/error.module'; +import {NavigationBarModule} from './openaireLibrary/sharedComponents/navigationBar.module'; + +import {EnvironmentSpecificResolver} from './openaireLibrary/utils/properties/environmentSpecificResolver'; + +@NgModule({ + + imports: [ + SharedModule, + NoopAnimationsModule, + CommonModule, + HttpModule, + ErrorModule, + NavigationBarModule, FeedbackModule, BottomModule, + CookieLawModule, + BrowserModule.withServerTransition({appId: 'my-app'}), + AppRoutingModule, + ], + declarations: [ AppComponent, OpenaireErrorPageComponent], + exports: [ AppComponent ], + providers:[EnvironmentSpecificResolver ], + bootstrap: [AppComponent] +}) +// +export class AppModule {} diff --git a/src/app/app.server.module.ts b/src/app/app.server.module.ts new file mode 100644 index 0000000..79602ec --- /dev/null +++ b/src/app/app.server.module.ts @@ -0,0 +1,20 @@ +import {NgModule} from '@angular/core'; +import {ServerModule} from '@angular/platform-server'; +import {ModuleMapLoaderModule} from '@nguniversal/module-map-ngfactory-loader'; + +import {AppModule} from './app.module'; +import {AppComponent} from './app.component'; + +@NgModule({ + imports: [ + // The AppServerModule should import your AppModule followed + // by the ServerModule from @angular/platform-server. + AppModule, + ServerModule, + ModuleMapLoaderModule, + ], + // Since the bootstrapped component is not inherited from your + // imported AppModule, it needs to be repeated here. + bootstrap: [AppComponent], +}) +export class AppServerModule {} diff --git a/src/app/claims/claim.module.ts b/src/app/claims/claim.module.ts new file mode 100644 index 0000000..113e859 --- /dev/null +++ b/src/app/claims/claim.module.ts @@ -0,0 +1,68 @@ +// import { NgModule} from '@angular/core'; +// import { CommonModule } from '@angular/common'; +// import { FormsModule } from '@angular/forms'; +// // +// import {UtilsModule} from '../utils/utils.module'; +// import {ServicesModule} from '../services/services.module'; +// +// import { ClaimsService} from '../services/claims.service'; +// //main +// import {ClaimComponent} from './claim/claim.component'; +// import {ClaimsAdminComponent} from './claims/claimsAdmin.component'; +// import {MyClaimsComponent} from './myClaims/myClaims.component'; +// import {LinkingHomeComponent} from './linking/linkingHome.component'; +// import {LinkingComponent} from './linking/linking.component'; +// import { BulkLinkingComponent } from './linking/bulkLinking.component'; +// +// import {BulkClaimComponent} from './linking/bulkClaim/bulkClaim.component'; +// import {ClaimsComponent} from './claim-utils/claims.component'; +// +// import {ClaimContextComponent} from './claim-utils/claimContext.component'; +// import {ClaimProjectsComponent} from './claim-utils/claimProject.component'; +// import {ClaimResultComponent} from './claim-utils/claimResult.component'; +// import {ClaimPublicationComponent} from './claim-utils/claimPublication.component'; +// import {ClaimDatasetComponent} from './claim-utils/claimDataset.component'; +// +// import {ClaimInsertComponent} from './linking/insertClaim/insertClaim.component'; +// +// import {ClaimSelectedContextsComponent} from './linking/selected/selectedContexts.component'; +// import {ClaimSelectedComponent} from './linking/selected/selected.component'; +// import {ClaimSelectedDatasetsComponent} from './linking/selected/selectedDatasets.component'; +// import {ClaimSelectedResultsComponent} from './linking/selected/selectedResults.component'; +// import {ClaimSelectedProjectsComponent} from './linking/selected/selectedProjects.component'; +// import {ClaimSelectedPublicationsComponent} from './linking/selected/selectedPublications.component'; +// +// import {LinkingGenericComponent} from './linking/linkingGeneric.component'; +// +// import {InlineClaimContextComponent} from './inlineClaims/inlineClaimContext.component'; +// import {InlineClaimProjectComponent} from './inlineClaims/inlineClaimProject.component'; +// import {InlineClaimResultComponent} from './inlineClaims/inlineClaimResult.component'; +// import {ClaimEntityFormatter} from '../utils/claimEntityFormatter.component'; +// +// import { Claim } from '../utils/entities/claim'; +// //helpers +// +// import { ClaimRoutingModule } from './claim-routing.module'; +// @NgModule({ +// imports: [ +// CommonModule, FormsModule, +// UtilsModule, +// ServicesModule, +// ClaimRoutingModule +// +// ], +// declarations: [ +// ClaimsAdminComponent, MyClaimsComponent, ClaimComponent, ClaimsComponent, +// BulkLinkingComponent, LinkingComponent, LinkingHomeComponent, LinkingGenericComponent, +// InlineClaimContextComponent, InlineClaimProjectComponent, InlineClaimResultComponent, ClaimSelectedComponent, +// ClaimContextComponent, ClaimSelectedContextsComponent, ClaimInsertComponent, ClaimProjectsComponent, ClaimSelectedProjectsComponent, +// ClaimResultComponent, ClaimSelectedPublicationsComponent, ClaimSelectedDatasetsComponent, ClaimSelectedResultsComponent, ClaimPublicationComponent, +// ClaimDatasetComponent, BulkClaimComponent, +// ClaimEntityFormatter +// ], +// providers: [ ClaimsService ], +// exports: [ +// InlineClaimContextComponent, InlineClaimProjectComponent, InlineClaimResultComponent +// ] +// }) +// export class ClaimModule { } diff --git a/src/app/claims/directLinking/directLinking-routing.module.ts b/src/app/claims/directLinking/directLinking-routing.module.ts new file mode 100644 index 0000000..f938be9 --- /dev/null +++ b/src/app/claims/directLinking/directLinking-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { OpenaireDirectLinkingComponent } from './directLinking.component'; +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; +import {ConnectSubscriberGuard} from '../../openaireLibrary/connect/communityGuard/connectSubscriber.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDirectLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard, ConnectSubscriberGuard], data: { + redirect: '/error' + }, canDeactivate: [PreviousRouteRecorder]}, + + ]) + ] +}) +export class DirectLinkingRoutingModule { } diff --git a/src/app/claims/directLinking/directLinking.component.ts b/src/app/claims/directLinking/directLinking.component.ts new file mode 100644 index 0000000..afabe0a --- /dev/null +++ b/src/app/claims/directLinking/directLinking.component.ts @@ -0,0 +1,8 @@ +import {Component, Input} from '@angular/core'; + +@Component({ + selector: 'openaire-directLinking', + template: `` +}) +export class OpenaireDirectLinkingComponent { +} diff --git a/src/app/claims/directLinking/directLinking.module.ts b/src/app/claims/directLinking/directLinking.module.ts new file mode 100644 index 0000000..d8936eb --- /dev/null +++ b/src/app/claims/directLinking/directLinking.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from '../../shared/shared.module'; +import { OpenaireDirectLinkingComponent } from './directLinking.component'; +import{ DirectLinkingModule} from '../../openaireLibrary/claims/directLinking/directLinking.module'; +import {DirectLinkingRoutingModule} from './directLinking-routing.module'; +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; +import {ConnectSubscriberGuard} from '../../openaireLibrary/connect/communityGuard/connectSubscriber.guard'; +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; + +@NgModule({ + imports: [ + SharedModule, DirectLinkingModule, DirectLinkingRoutingModule + ], + providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled, ConnectSubscriberGuard, CommunityService], + declarations: [ + OpenaireDirectLinkingComponent + ], exports:[OpenaireDirectLinkingComponent] +}) +export class LibDirectLinkingModule { } diff --git a/src/app/claims/linking/linking-routing.module.ts b/src/app/claims/linking/linking-routing.module.ts new file mode 100644 index 0000000..d51483e --- /dev/null +++ b/src/app/claims/linking/linking-routing.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { OpenaireLinkingComponent } from './linkingGeneric.component'; + +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; +import {ConnectSubscriberGuard} from '../../openaireLibrary/connect/communityGuard/connectSubscriber.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireLinkingComponent, canActivate: [IsRouteEnabled, LoginGuard, ConnectSubscriberGuard], data: { + redirect: '/error' + }, canDeactivate: [PreviousRouteRecorder]}, + + ]) + ] +}) +export class LinkingRoutingModule { } diff --git a/src/app/claims/linking/linkingGeneric.component.ts b/src/app/claims/linking/linkingGeneric.component.ts new file mode 100644 index 0000000..ed2a919 --- /dev/null +++ b/src/app/claims/linking/linkingGeneric.component.ts @@ -0,0 +1,28 @@ +import {Component, Input} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; +import {ActivatedRoute, Router} from '@angular/router'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + +@Component({ + selector: 'openaire-linking-generic', + template: `` + +}) +export class OpenaireLinkingComponent { + communityId:string; + constructor ( + private route: ActivatedRoute, + private _router: Router + + ) { + this.route.queryParams.subscribe( + communityId => { + this.communityId = communityId['communityId']; + if(!this.communityId){ + this.communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + } + + }); + + } +} diff --git a/src/app/claims/linking/linkingGeneric.module.ts b/src/app/claims/linking/linkingGeneric.module.ts new file mode 100644 index 0000000..5095fb9 --- /dev/null +++ b/src/app/claims/linking/linkingGeneric.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from '../../shared/shared.module'; +import {OpenaireLinkingComponent} from './linkingGeneric.component'; +import {LinkingRoutingModule} from './linking-routing.module'; +import{ LinkingGenericModule} from '../../openaireLibrary/claims/linking/linkingGeneric.module'; +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; +import {ConnectSubscriberGuard} from '../../openaireLibrary/connect/communityGuard/connectSubscriber.guard'; +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; + +@NgModule({ + imports: [ + SharedModule, LinkingRoutingModule, LinkingGenericModule + ], + providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled, ConnectSubscriberGuard, CommunityService], + declarations: [ + OpenaireLinkingComponent + ], exports:[ + OpenaireLinkingComponent ] +}) +export class LibLinkingGenericModule { } diff --git a/src/app/claims/myClaims/myClaims-routing.module.ts b/src/app/claims/myClaims/myClaims-routing.module.ts new file mode 100644 index 0000000..45d21f4 --- /dev/null +++ b/src/app/claims/myClaims/myClaims-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import {OpenaireMyClaimsComponent } from './myClaims.component'; +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireMyClaimsComponent, canActivate: [IsRouteEnabled, LoginGuard], + data: {redirect: '/error' }, canDeactivate: [PreviousRouteRecorder]}]) + ] +}) +export class MyClaimsRoutingModule { } diff --git a/src/app/claims/myClaims/myClaims.component.ts b/src/app/claims/myClaims/myClaims.component.ts new file mode 100644 index 0000000..2bd997b --- /dev/null +++ b/src/app/claims/myClaims/myClaims.component.ts @@ -0,0 +1,21 @@ +import {Component, Input} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; + + +@Component({ + selector: 'openaire-my-claims', + template: ` + + +` + +}) + export class OpenaireMyClaimsComponent { + constructor () { + + } + ngOnInit() { + + } + +} diff --git a/src/app/claims/myClaims/myClaims.module.ts b/src/app/claims/myClaims/myClaims.module.ts new file mode 100644 index 0000000..8402be1 --- /dev/null +++ b/src/app/claims/myClaims/myClaims.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; + +import { SharedModule } from '../../shared/shared.module'; +import { OpenaireMyClaimsComponent } from './myClaims.component'; +import { MyClaimsRoutingModule } from './myClaims-routing.module'; +import{ MyClaimsModule} from '../../openaireLibrary/claims/myClaims/myClaims.module'; +import {LoginGuard} from '../../openaireLibrary/login/loginGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; + + +@NgModule({ + imports: [ + SharedModule, + MyClaimsRoutingModule, + MyClaimsModule + + ], + providers:[LoginGuard, PreviousRouteRecorder, IsRouteEnabled], + declarations: [ + OpenaireMyClaimsComponent + ] +}) +export class LibMyClaimsModule { } diff --git a/src/app/claims/myClaimsDemo.component.ts b/src/app/claims/myClaimsDemo.component.ts new file mode 100644 index 0000000..6490a59 --- /dev/null +++ b/src/app/claims/myClaimsDemo.component.ts @@ -0,0 +1,51 @@ +// import {Component, Input} from '@angular/core'; +// import {Observable} from 'rxjs/Observable'; +// import { Router } from '@angular/router'; +// +// +// +// @Component({ +// selector: 'my-claims-demo', +// template: ` +//
+// +//
+// +// +// +//

Extra parameters for claims admin

+// +// +// +// +// +// +// +//
+//
+// +// +// +// ` +// //(click)="changeOrderby('target')" +// //od_______908::3a5b2885656a91307156325644e73b92 +// +// }) +// export class MyClaimsDemoComponent { +// constructor ( private _router: Router ) { +// } +// user:string="argirok@di.uoa.gr"; +// ngOnInit() { +// +// } +// goToPub(id: number){ +// this._router.navigate( ['Publication', { articleId: id}] ); +// } +// } diff --git a/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts b/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts new file mode 100644 index 0000000..48d594c --- /dev/null +++ b/src/app/deposit/datasets/depositBySubjectResult-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { OpenaireDepositBySubjectResultComponent } from './depositBySubjectResult.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDepositBySubjectResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { + redirect: '/error' + },canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class DepositBySubjectResultsRoutingModule { } diff --git a/src/app/deposit/datasets/depositBySubjectResult.component.ts b/src/app/deposit/datasets/depositBySubjectResult.component.ts new file mode 100644 index 0000000..ae65ba2 --- /dev/null +++ b/src/app/deposit/datasets/depositBySubjectResult.component.ts @@ -0,0 +1,19 @@ +import {Component, Input} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; +import {PiwikHelper} from '../../utils/piwikHelper'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + + +@Component({ + selector: 'openaire-deposit-by-subject-result', + template:`` +}) + +export class OpenaireDepositBySubjectResultComponent { + piwikSiteId = null; + constructor ( ) { + var communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + this.piwikSiteId = PiwikHelper.siteIDs[communityId]; + } + +} diff --git a/src/app/deposit/datasets/depositBySubjectResults.module.ts b/src/app/deposit/datasets/depositBySubjectResults.module.ts new file mode 100644 index 0000000..63815f7 --- /dev/null +++ b/src/app/deposit/datasets/depositBySubjectResults.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { OpenaireDepositBySubjectResultComponent } from './depositBySubjectResult.component'; + +import {DepositBySubjectResultsRoutingModule} from './depositBySubjectResult-routing.module'; +import {DepositBySubjectResultsModule } from '../../openaireLibrary/deposit/datasets/depositBySubjectResults.module'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' + +@NgModule({ + imports: [ + CommonModule, FormsModule, + DepositBySubjectResultsModule, + DepositBySubjectResultsRoutingModule + ], + declarations: [ + + OpenaireDepositBySubjectResultComponent + + ], + exports: [ + OpenaireDepositBySubjectResultComponent + ], + providers: [FreeGuard,PreviousRouteRecorder, IsRouteEnabled] +}) +export class LibDepositBySubjectResultsModule { } diff --git a/src/app/deposit/datasets/depositDatasets-routing.module.ts b/src/app/deposit/datasets/depositDatasets-routing.module.ts new file mode 100644 index 0000000..e4fcf4c --- /dev/null +++ b/src/app/deposit/datasets/depositDatasets-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import { OpenaireDepositDatasetsComponent } from './depositDatasets.component'; + +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDepositDatasetsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { + redirect: '/error' + },canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class DepositDatasetsRoutingModule { } diff --git a/src/app/deposit/datasets/depositDatasets.component.ts b/src/app/deposit/datasets/depositDatasets.component.ts new file mode 100644 index 0000000..b52a8b0 --- /dev/null +++ b/src/app/deposit/datasets/depositDatasets.component.ts @@ -0,0 +1,21 @@ +import {Component, Input} from '@angular/core'; +import {PiwikHelper} from '../../utils/piwikHelper'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + +@Component({ + selector: 'openaire-deposit-datasets', + template: ` + + + + ` +}) + +export class OpenaireDepositDatasetsComponent { + piwikSiteId = null; + constructor ( ) { + var communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + this.piwikSiteId = PiwikHelper.siteIDs[communityId]; + } + +} diff --git a/src/app/deposit/datasets/depositDatasets.module.ts b/src/app/deposit/datasets/depositDatasets.module.ts new file mode 100644 index 0000000..257a1e3 --- /dev/null +++ b/src/app/deposit/datasets/depositDatasets.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { OpenaireDepositDatasetsComponent } from './depositDatasets.component'; + import {DepositDatasetsRoutingModule} from './depositDatasets-routing.module'; +import {DepositDatasetsModule} from '../../openaireLibrary/deposit/datasets/depositDatasets.module'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' +@NgModule({ + imports: [ + CommonModule, FormsModule, + DepositDatasetsModule, + DepositDatasetsRoutingModule + ], + declarations: [ + + OpenaireDepositDatasetsComponent + + ], + exports: [ + OpenaireDepositDatasetsComponent + ], + providers: [FreeGuard,PreviousRouteRecorder, IsRouteEnabled] +}) +export class LibDepositDatasetsModule { } diff --git a/src/app/deposit/datasets/depositDatasetsResult.component.ts b/src/app/deposit/datasets/depositDatasetsResult.component.ts new file mode 100644 index 0000000..4bbad41 --- /dev/null +++ b/src/app/deposit/datasets/depositDatasetsResult.component.ts @@ -0,0 +1,21 @@ +import {Component, Input} from '@angular/core'; +import {PiwikHelper} from '../../utils/piwikHelper'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + +@Component({ + selector: 'openaire-deposit-datasets-result', + template: ` + + + + ` +}) + +export class OpenaireDepositDatasetsResultComponent { + piwikSiteId = null; + constructor ( ) { + var communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + this.piwikSiteId = PiwikHelper.siteIDs[communityId]; + } + +} diff --git a/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts b/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts new file mode 100644 index 0000000..5220e14 --- /dev/null +++ b/src/app/deposit/datasets/depositDatasetsResults-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { OpenaireDepositDatasetsResultComponent } from './depositDatasetsResult.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDepositDatasetsResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { + redirect: '/error' + },canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class DepositDatasetsResultsRoutingModule { } diff --git a/src/app/deposit/datasets/depositDatasetsResults.module.ts b/src/app/deposit/datasets/depositDatasetsResults.module.ts new file mode 100644 index 0000000..1843d32 --- /dev/null +++ b/src/app/deposit/datasets/depositDatasetsResults.module.ts @@ -0,0 +1,29 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { OpenaireDepositDatasetsResultComponent } from './depositDatasetsResult.component'; + +import {DepositDatasetsResultsRoutingModule} from './depositDatasetsResults-routing.module'; +import {DepositDatasetsResultsModule} from '../../openaireLibrary/deposit/datasets/depositDatasetsResults.module'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' + +@NgModule({ + imports: [ + CommonModule, FormsModule, + DepositDatasetsResultsModule, + DepositDatasetsResultsRoutingModule + ], + declarations: [ + + OpenaireDepositDatasetsResultComponent, + + ], + exports: [ + OpenaireDepositDatasetsResultComponent, + ], + providers: [FreeGuard,PreviousRouteRecorder, IsRouteEnabled] +}) +export class LibDepositDatasetsResultsModule { } diff --git a/src/app/deposit/publications/depositPublications-routing.module.ts b/src/app/deposit/publications/depositPublications-routing.module.ts new file mode 100644 index 0000000..2dadf89 --- /dev/null +++ b/src/app/deposit/publications/depositPublications-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { OpenaireDepositPublicationsComponent } from './depositPublications.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDepositPublicationsComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { + redirect: '/error' + }, canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class DepositPublicationsRoutingModule { } diff --git a/src/app/deposit/publications/depositPublications.component.ts b/src/app/deposit/publications/depositPublications.component.ts new file mode 100644 index 0000000..99a4580 --- /dev/null +++ b/src/app/deposit/publications/depositPublications.component.ts @@ -0,0 +1,19 @@ +import {Component, Input} from '@angular/core'; +import {PiwikHelper} from '../../utils/piwikHelper'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + +@Component({ + selector: 'openaire-deposit-publications', + template: ` + + ` +}) + +export class OpenaireDepositPublicationsComponent { + piwikSiteId = null; + constructor ( ) { + var communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + this.piwikSiteId = PiwikHelper.siteIDs[communityId]; + } + + } diff --git a/src/app/deposit/publications/depositPublications.module.ts b/src/app/deposit/publications/depositPublications.module.ts new file mode 100644 index 0000000..b019607 --- /dev/null +++ b/src/app/deposit/publications/depositPublications.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { OpenaireDepositPublicationsComponent } from './depositPublications.component'; + +import {DepositPublicationsRoutingModule} from './depositPublications-routing.module'; +import {DepositPublicationsModule} from '../../openaireLibrary/deposit/publications/depositPublications.module'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' +@NgModule({ + imports: [ + CommonModule, FormsModule, + DepositPublicationsModule, + DepositPublicationsRoutingModule + ], + declarations: [ + OpenaireDepositPublicationsComponent + ], + exports: [ + OpenaireDepositPublicationsComponent, + ], + providers: [FreeGuard,PreviousRouteRecorder, IsRouteEnabled] +}) +export class LibDepositPublicationsModule { } diff --git a/src/app/deposit/publications/depositPublicationsResult-routing.module.ts b/src/app/deposit/publications/depositPublicationsResult-routing.module.ts new file mode 100644 index 0000000..34aacb6 --- /dev/null +++ b/src/app/deposit/publications/depositPublicationsResult-routing.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { OpenaireDepositPublicationsResultComponent } from './depositPublicationsResult.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireDepositPublicationsResultComponent, canActivate: [FreeGuard, IsRouteEnabled], data: { + redirect: '/error' + }, canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class DepositPublicationsResultRoutingModule { } diff --git a/src/app/deposit/publications/depositPublicationsResult.component.ts b/src/app/deposit/publications/depositPublicationsResult.component.ts new file mode 100644 index 0000000..3051d67 --- /dev/null +++ b/src/app/deposit/publications/depositPublicationsResult.component.ts @@ -0,0 +1,20 @@ +import {Component, Input} from '@angular/core'; +import {PiwikHelper} from '../../utils/piwikHelper'; +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; + +@Component({ + selector: 'openaire-deposit-publications-result', + template: ` + + ` +}) + +export class OpenaireDepositPublicationsResultComponent { + piwikSiteId = null; + constructor ( ) { + var communityId = ConnectHelper.getCommunityFromDomain(document.location.hostname); + this.piwikSiteId = PiwikHelper.siteIDs[communityId]; + } + + +} diff --git a/src/app/deposit/publications/depositPublicationsResults.module.ts b/src/app/deposit/publications/depositPublicationsResults.module.ts new file mode 100644 index 0000000..b8411c8 --- /dev/null +++ b/src/app/deposit/publications/depositPublicationsResults.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import { OpenaireDepositPublicationsResultComponent } from './depositPublicationsResult.component'; + +import {DepositPublicationsResultRoutingModule} from './depositPublicationsResult-routing.module'; +import {DepositPublicationsResultsModule} from '../../openaireLibrary/deposit/publications/depositPublicationsResults.module'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {IsRouteEnabled} from '../../openaireLibrary/error/isRouteEnabled.guard' +@NgModule({ + imports: [ + CommonModule, FormsModule, + DepositPublicationsResultsModule, + DepositPublicationsResultRoutingModule + ], + declarations: [ + OpenaireDepositPublicationsResultComponent + ], + exports: [ + OpenaireDepositPublicationsResultComponent + ], + providers: [FreeGuard,PreviousRouteRecorder, IsRouteEnabled] +}) +export class LibDepositPublicationsResultsModule { } diff --git a/src/app/error/errorPage.component.ts b/src/app/error/errorPage.component.ts new file mode 100644 index 0000000..e96d3dc --- /dev/null +++ b/src/app/error/errorPage.component.ts @@ -0,0 +1,13 @@ +import { Component, Input } from '@angular/core'; +import { Location } from '@angular/common'; + +@Component({ + selector: 'openaire-error', + template: ` + + ` +}) + +export class OpenaireErrorPageComponent { + +} diff --git a/src/app/funders/funder/funder.component.ts b/src/app/funders/funder/funder.component.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/app/home/home-routing.module.ts b/src/app/home/home-routing.module.ts new file mode 100644 index 0000000..099e07c --- /dev/null +++ b/src/app/home/home-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import{HomeComponent} from './home.component'; + +import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: HomeComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class HomeRoutingModule { } diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html new file mode 100644 index 0000000..9c8396f --- /dev/null +++ b/src/app/home/home.component.html @@ -0,0 +1,287 @@ + +
+
+ + +
+
+
+
+
+

+ Tracking, reporting, monitoring made easy +

+
+
+
+
+
+
+
+
+
+
+

24925921

+
Publications
+
+
+
+
+
+
+

667708

+
Datasets
+
+
+
+
+
+
+

84333

+
Software
+
+
+
+
+
+
+

17

+
funders
+
+
+
+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +

+ Are you a funder? +

+
+

All you need to do is to provide OpenAIRE with a ‘very limited’ set of metadata fields from your database and we will take it up from there.

+

Learn how to participate and ensure that your information is picked up by OpenAIRE.

+
+
+
+
+
+ +

+ Are you managing a research community? +

+
+

Using text mining (topic modeling) on the full texts we can discover hidden structures and identify useful patterns, similarities, correlations trends and communities.

+

+ Our tech team would be happy to work with new use cases as this is the real value of using open science for transparent decision policy making. Our services have already been successfully applied for the evaluation of parts of FP7, and we are continuing with the rest. +

+
+
+
+
+
+ + + + + + + + + + + +

+ Have more questions? +

+ +
+
+
+
+
+
+
+
+
+
+
+
+ Monitor +
+
+
+
+
+

Funders

+
+
+ +
+ +
+
+
+

Projects

+
+
+
+
+
+
+
+
+ +
+
+
+
+
+

+ Researcher? +

+
+ Explore all OA research results. Link all your research. Build your profile +
+

+ + OpenAIRE.EXPLORE + +

+
+
+
+
+

+ Content provider? +

+
+ Join OpenAIRE, use our tools and make your content more visible around the world. +
+

+ + OpenAIRE.PROVIDE + +

+
+
+
+
+

+ Research community? +

+
+ Use a trusted partner to share, link, disseminate and monitor your research. +
+

+ + OpenAIRE.CONNECT + +

+
+
+ +
+
+

+ Developer? +

+
+ Get access to OpenAIRE data and capitalize on on Europe's open linked research +
+

+ + OpenAIRE.DEVELOP + +

+
+
+
+
+
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts new file mode 100644 index 0000000..18df157 --- /dev/null +++ b/src/app/home/home.component.ts @@ -0,0 +1,64 @@ +import {Component, ElementRef} from '@angular/core'; +import { EnvProperties} from '../openaireLibrary/utils/properties/env-properties'; +import {ActivatedRoute, Router} from '@angular/router'; +import {Location} from '@angular/common'; +import "rxjs/add/observable/zip"; +import {Title, Meta} from '@angular/platform-browser'; +import {ConfigurationService} from '../openaireLibrary/utils/configuration/configuration.service'; + +import { RouterHelper} from '../openaireLibrary/utils/routerHelper.class'; +import { ErrorCodes} from '../openaireLibrary/utils/properties/errorCodes'; +import {PiwikService} from '../openaireLibrary/utils/piwik/piwik.service'; +import { SEOService } from '../openaireLibrary/sharedComponents/SEO/SEO.service'; + +@Component({ + selector: 'home', + templateUrl: './home.component.html' + }) + +export class HomeComponent { + public piwiksub: any; + + public pageTitle = "OpenAIRE" + public keyword:string = ""; + + + properties: EnvProperties; + public subPub;public subData;public subProjects;public subOrg; public subDataPr; + + constructor ( + private route: ActivatedRoute, + private _router: Router, + private location: Location, private _piwikService:PiwikService, + private _meta: Meta, private _title: Title, private seoService: SEOService + ) { + + var description = "openAIRE monitor,funder, European commission, statistics"; + + var title = "OpenAIRE | Monitor"; + + this._title.setTitle(title); + this._meta.updateTag({content:description},"name='description'"); + this._meta.updateTag({content:description},"property='og:description'"); + this._meta.updateTag({content:title},"property='og:title'"); + this.seoService.createLinkForCanonicalURL(false); + + + //this.fetchDataproviders = new FetchDataproviders(this._searchDataprovidersService); + } + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + if(this.properties!=null){ + var url = this.properties.baseLink+this._router.url; + this._meta.updateTag({content:url},"property='og:url'"); + if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ + this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE").subscribe(); + } + + } + }); + + } +} diff --git a/src/app/home/home.module.ts b/src/app/home/home.module.ts new file mode 100644 index 0000000..416a133 --- /dev/null +++ b/src/app/home/home.module.ts @@ -0,0 +1,34 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; + +import{HomeRoutingModule} from './home-routing.module'; +import{HomeComponent} from './home.component'; + +import {PiwikServiceModule} from '../openaireLibrary/utils/piwik/piwikService.module'; + +import {FreeGuard} from '../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; +import {Schema2jsonldModule} from '../openaireLibrary/sharedComponents/schema2jsonld/schema2jsonld.module'; +import { SEOServiceModule } from '../openaireLibrary/sharedComponents/SEO/SEOService.module'; + + @NgModule({ + imports: [ + CommonModule, FormsModule, RouterModule, + PiwikServiceModule, + HomeRoutingModule, + + Schema2jsonldModule, SEOServiceModule + ], + declarations: [ + HomeComponent + ], + providers:[ + FreeGuard, PreviousRouteRecorder + ], + exports: [ + HomeComponent + ] +}) +export class HomeModule { } diff --git a/src/app/initiatives/communities/communities-routing.module.ts b/src/app/initiatives/communities/communities-routing.module.ts new file mode 100644 index 0000000..b56e337 --- /dev/null +++ b/src/app/initiatives/communities/communities-routing.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import{CommunitiesComponent} from './communities.component'; + +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: CommunitiesComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class CommunitiesRoutingModule { } diff --git a/src/app/initiatives/communities/communities.component.html b/src/app/initiatives/communities/communities.component.html new file mode 100644 index 0000000..31afcc4 --- /dev/null +++ b/src/app/initiatives/communities/communities.component.html @@ -0,0 +1,40 @@ + + +
+
+
+ +
+ +
+ {{(item.title)?item.title:item.shortTitle}} logo + + + +
+
+
+ + +
+ +
+
+ +
+
+ +
+

{{item.description}}

+
+
+
+
+
+
diff --git a/src/app/initiatives/communities/communities.component.ts b/src/app/initiatives/communities/communities.component.ts new file mode 100644 index 0000000..cfe53cf --- /dev/null +++ b/src/app/initiatives/communities/communities.component.ts @@ -0,0 +1,104 @@ +import {Component, Input, Output, EventEmitter} from '@angular/core'; +import {ViewChild, ChangeDetectionStrategy} from '@angular/core'; +import {ViewEncapsulation} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; +import {Location} from '@angular/common'; +import {Title, Meta} from '@angular/platform-browser'; + +import {Observable} from 'rxjs/Observable'; + +import "rxjs/add/observable/zip"; + +import {ConnectHelper} from '../../openaireLibrary/connect/connectHelper'; +import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; +import {ErrorCodes} from '../../openaireLibrary/utils/properties/errorCodes'; + +import {ConfigurationService} from '../../openaireLibrary/utils/configuration/configuration.service'; +import {CommunitiesService} from '../../openaireLibrary/connect/communities/communities.service'; +import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service'; +import {Session} from '../../openaireLibrary/login/utils/helper.class'; +@Component({ + selector: 'communities', + templateUrl: 'communities.component.html', +}) + +export class CommunitiesComponent { + public piwiksub: any; + public subfunders: any; + + public pageTitle = "OpenAIRE" + + public communitiesResults = null; + + properties:EnvProperties; + + constructor ( + private route: ActivatedRoute, + private _router: Router, + private location: Location, + private _meta: Meta, + private _title: Title, + private _piwikService:PiwikService, + private _communitiesService:CommunitiesService, + private config: ConfigurationService) { + + var description = "Community Dashboard"; + var title = "Community Dashboard"; + + this._meta.updateTag({content:description},"name='description'"); + this._meta.updateTag({content:description},"property='og:description'"); + this._meta.updateTag({content:title},"property='og:title'"); + this._title.setTitle(title); + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink+this._router.url + this._meta.updateTag({content:url},"property='og:url'"); + if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ + this.piwiksub = this._piwikService.trackView(this.properties, "OpenAIRE Connect", this.properties.piwikSiteId).subscribe(); + } + + this._communitiesService.getCommunities(this.properties, this.properties.communitiesAPI).subscribe( + communitiesResults => { + this.communitiesResults = communitiesResults; + //console.log(communitiesResults); + }); + }); + } + + public ngOnDestroy() { + if(this.piwiksub){ + this.piwiksub.unsubscribe(); + } + } + isProduction():boolean{ + return ConnectHelper.isProduction(document.location.hostname); + + } + getProductionPrefix():string{ + return ConnectHelper.getProductionPrefix(document.location.hostname); + } + showCommunity(community):boolean{ + if(community['type'] !="ri"){ + return false; + } + if(community['status'] == "hidden"){ + return false; + }else if(community['status'] == "manager"){ + var mail = Session.getUserEmail(); + if(mail == null){ // no user + return false; + }else if(Session.isCommunityCurator() || Session.isPortalAdministrator()){ + return true; + }else if(community.managers.indexOf(mail)!=-1){ + return true; + } + return false; + } + return true; + + } +} diff --git a/src/app/initiatives/communities/communities.module.ts b/src/app/initiatives/communities/communities.module.ts new file mode 100644 index 0000000..668a41f --- /dev/null +++ b/src/app/initiatives/communities/communities.module.ts @@ -0,0 +1,30 @@ +import {NgModule} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {FormsModule} from '@angular/forms'; +import {RouterModule} from '@angular/router'; + +import {CommunitiesRoutingModule} from './communities-routing.module'; +import {CommunitiesComponent} from './communities.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service'; +import {ConfigurationService} from '../../openaireLibrary/utils/configuration/configuration.service'; +import {CommunitiesService} from '../../openaireLibrary/connect/communities/communities.service'; + +@NgModule({ + imports: [ + CommonModule, FormsModule, RouterModule, CommunitiesRoutingModule + ], + declarations: [ + CommunitiesComponent + ], + providers:[ + FreeGuard, PreviousRouteRecorder, ConfigurationService, + PiwikService, CommunitiesService + ], + exports: [ + CommunitiesComponent + ] +}) +export class CommunitiesModule { } diff --git a/src/app/initiatives/community/community-routing.module.ts b/src/app/initiatives/community/community-routing.module.ts new file mode 100644 index 0000000..676d2f5 --- /dev/null +++ b/src/app/initiatives/community/community-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import{CommunityComponent} from './community.component'; +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: CommunityComponent, canActivate: [FreeGuard], canDeactivate: [PreviousRouteRecorder] } + + ]) + ] +}) +export class CommunityRoutingModule { } diff --git a/src/app/initiatives/community/community.component.html b/src/app/initiatives/community/community.component.html new file mode 100644 index 0000000..cd4d288 --- /dev/null +++ b/src/app/initiatives/community/community.component.html @@ -0,0 +1,60 @@ +
+ +
+ +
+
+ No community chosen +
+ +
+
+
+

{{community.title}}

+
+
+

{{community.shortTitle}}

+
+
+

{{community.description}}

+
+
+
+ + {{subject}} + + + + + {{subject}} + + + + + + show more + + + + + show less + + +
+

+ + Created: {{community.date | date:'dd-MM-yyyy'}} +

+
+ + + + + +
+
+ +
diff --git a/src/app/initiatives/community/community.component.ts b/src/app/initiatives/community/community.component.ts new file mode 100644 index 0000000..3b7aad4 --- /dev/null +++ b/src/app/initiatives/community/community.component.ts @@ -0,0 +1,99 @@ +import {Component, Input, Output} from '@angular/core'; +import {EventEmitter, ViewChild} from '@angular/core'; +import {ChangeDetectionStrategy} from '@angular/core'; +import {ViewEncapsulation} from '@angular/core'; +import {ActivatedRoute, Router} from '@angular/router'; +import {Location} from '@angular/common'; +import {Title, Meta} from '@angular/platform-browser'; + +import {Observable} from 'rxjs/Observable'; + +import "rxjs/add/observable/zip"; + +import {EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; +import {ErrorCodes} from '../../openaireLibrary/utils/properties/errorCodes'; + +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; +import {ConfigurationService} from '../../openaireLibrary/utils/configuration/configuration.service'; +import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service'; + + +@Component({ + selector: 'community', + templateUrl: 'community.component.html', +}) + +export class CommunityComponent { + public piwiksub: any; + public subfunders: any; + + public pageTitle = "OpenAIRE" + + + + params: any; + properties:EnvProperties; + + + + @Input() communityId = null; + public community = null; + + + constructor ( + private route: ActivatedRoute, + private _router: Router, + private location: Location, + private _meta: Meta, + private _title: Title, + private _piwikService:PiwikService, + private config: ConfigurationService, + private _communityService:CommunityService ) { + + var description = "Community Dashboard"; + var title = "Community Dashboard"; + this._meta.updateTag({content:description},"name='description'"); + this._meta.updateTag({content:description},"property='og:description'"); + this._meta.updateTag({content:title},"property='og:title'"); + this._title.setTitle(title); + + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + console.log("here:"+this.communityId); + this.properties = data.envSpecific; + var url = data.envSpecific.baseLink+this._router.url; + this._meta.updateTag({content:url},"property='og:url'"); + this.route.params.subscribe(params => { + this.communityId = params['id']; + console.log("communityId:"+this.communityId); + + if (this.communityId != null && this.communityId != '') { + this._communityService.getCommunity(this.properties, this.properties.communityAPI+this.communityId).subscribe ( + community => { + this.community = community; + this.params = {communityId: community.communityId}; + this._meta.updateTag({content:community.description},"name='description'"); + this._meta.updateTag({content:community.description},"property='og:description'"); + this._meta.updateTag({content:community.title},"property='og:title'"); + this._title.setTitle(community.title); + + }); + + + } + }); + + }); + } + + public ngOnDestroy() { + if(this.piwiksub){ + this.piwiksub.unsubscribe(); + } + } + + +} diff --git a/src/app/initiatives/community/community.module.ts b/src/app/initiatives/community/community.module.ts new file mode 100644 index 0000000..3578c95 --- /dev/null +++ b/src/app/initiatives/community/community.module.ts @@ -0,0 +1,32 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; + +import{CommunityRoutingModule} from './community-routing.module'; +import{CommunityComponent} from './community.component'; + +import {PiwikService} from '../../openaireLibrary/utils/piwik/piwik.service'; +import {ConfigurationService} from '../../openaireLibrary/utils/configuration/configuration.service'; +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; + +import {FreeGuard} from '../../openaireLibrary/login/freeGuard.guard'; +import {PreviousRouteRecorder} from '../../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + + +@NgModule({ + imports: [ + CommonModule, FormsModule, RouterModule, CommunityRoutingModule + ], + declarations: [ + CommunityComponent + ], + providers:[ + FreeGuard, PreviousRouteRecorder, ConfigurationService, + PiwikService, CommunityService + ], + exports: [ + CommunityComponent + ] +}) +export class CommunityModule { } diff --git a/src/app/login/libUser.module.ts b/src/app/login/libUser.module.ts new file mode 100644 index 0000000..b1040ce --- /dev/null +++ b/src/app/login/libUser.module.ts @@ -0,0 +1,23 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; + +import {OpenaireUserComponent } from './user.component'; +import { UserRoutingModule } from './user-routing.module'; +import { UserModule} from '../openaireLibrary/login/user.module'; + +import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +@NgModule({ + imports: [ + CommonModule, FormsModule, + UserRoutingModule, UserModule + + ], + providers:[PreviousRouteRecorder], + declarations: [ +OpenaireUserComponent + +] +}) +export class LibUserModule { } diff --git a/src/app/login/user-routing.module.ts b/src/app/login/user-routing.module.ts new file mode 100644 index 0000000..1a8ad90 --- /dev/null +++ b/src/app/login/user-routing.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; + +import {OpenaireUserComponent } from './user.component'; +import {PreviousRouteRecorder} from '../openaireLibrary/utils/piwik/previousRouteRecorder.guard'; + +@NgModule({ + imports: [ + RouterModule.forChild([ + { path: '', component: OpenaireUserComponent, canDeactivate: [PreviousRouteRecorder]}, + + ]) + ] +}) +export class UserRoutingModule { } diff --git a/src/app/login/user.component.ts b/src/app/login/user.component.ts new file mode 100644 index 0000000..0b7e1a3 --- /dev/null +++ b/src/app/login/user.component.ts @@ -0,0 +1,11 @@ +import {Component, ElementRef} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; + +@Component({ + selector: 'openaire-user', + template: `` + }) + +export class OpenaireUserComponent { + +} diff --git a/src/app/reload/libReload.module.ts b/src/app/reload/libReload.module.ts new file mode 100644 index 0000000..d982aaa --- /dev/null +++ b/src/app/reload/libReload.module.ts @@ -0,0 +1,23 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { RouterModule } from '@angular/router'; + + import{ReloadModule} from '../openaireLibrary/reload/reload.module'; + + +@NgModule({ + imports: [ + CommonModule, FormsModule, RouterModule, ReloadModule + ], + declarations: [ + + ], + providers:[ + + ], + exports: [ + + ] +}) +export class LibReloadModule { } diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts new file mode 100644 index 0000000..f0ce0d2 --- /dev/null +++ b/src/app/shared/shared.module.ts @@ -0,0 +1,45 @@ +import { NgModule, ModuleWithProviders } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + + +const MODULES = [ + // Do NOT include UniversalModule, HttpModule, or JsonpModule here + CommonModule, + RouterModule, + FormsModule, + ReactiveFormsModule +]; + +const PIPES = [ + // put pipes here +]; + +const COMPONENTS = [ + // put shared components here +]; + + + +@NgModule({ + imports: [ + ...MODULES + ], + declarations: [ + ...PIPES, + ...COMPONENTS + ], + exports: [ + ...MODULES, + ...PIPES, + ...COMPONENTS + ] +}) +export class SharedModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: SharedModule, + }; + } +} diff --git a/src/app/utils/manage/manage.component.ts b/src/app/utils/manage/manage.component.ts new file mode 100644 index 0000000..c53a600 --- /dev/null +++ b/src/app/utils/manage/manage.component.ts @@ -0,0 +1,51 @@ +import { Component, Input, ViewChild } from '@angular/core'; +import { Location } from '@angular/common'; +import {ActivatedRoute} from '@angular/router'; +import { EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; +import {Session} from '../../openaireLibrary/login/utils/helper.class'; +@Component({ + selector: 'manage', + template: ` + + + + Manage + + + ` +}) + +export class ManageComponent { + @Input() communityId:string; + + + isManager:boolean = false; + properties:EnvProperties; + constructor (private route: ActivatedRoute, + private _communityService: CommunityService + ) { + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + if(Session.isLoggedIn()){ + if(Session.isPortalAdministrator()||Session.isCommunityCurator()){ + this.isManager = true; + }else if(Session.isLoggedIn()){ + var email = Session.getUserEmail(); + this._communityService.iscommunityManager(this.properties, this.properties.communityAPI+ this.communityId, email).subscribe ( + res => { + this.isManager = res; + }); + } + } + }); + + + + } + +} diff --git a/src/app/utils/manage/manage.module.ts b/src/app/utils/manage/manage.module.ts new file mode 100644 index 0000000..ff61e55 --- /dev/null +++ b/src/app/utils/manage/manage.module.ts @@ -0,0 +1,23 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; + +import {CommunityService} from '../../openaireLibrary/connect/community/community.service'; +import {ManageComponent} from './manage.component'; +import {AlertModalModule} from '../../openaireLibrary/utils/modal/alertModal.module'; + +@NgModule({ + imports: [ + CommonModule, RouterModule, AlertModalModule + ], + declarations: [ + ManageComponent + ], + providers:[ + CommunityService + ], + exports: [ + ManageComponent + ] +}) +export class ManageModule { } diff --git a/src/app/utils/piwikHelper.ts b/src/app/utils/piwikHelper.ts new file mode 100644 index 0000000..040b397 --- /dev/null +++ b/src/app/utils/piwikHelper.ts @@ -0,0 +1,19 @@ +export class PiwikHelper{ + public static siteIDs={ + "connect": 80, + "dh-ch":81, + "ee":82, + "egi":83, + "elixir-gr":84, + "fam":85, + "instruct":86, + "mes":87, + "ni":88, + "oa-pg":89, + "rda":90, + "aginfra":93, + "clarin":100, + "dariah":103 + } + +} diff --git a/src/app/utils/services/statistics.service.ts b/src/app/utils/services/statistics.service.ts new file mode 100644 index 0000000..be868c7 --- /dev/null +++ b/src/app/utils/services/statistics.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { Http, Response, Headers, RequestOptions } from '@angular/http'; +import { Observable } from 'rxjs/Rx'; +import {StatisticsDisplay, StatisticsSummary} from "../../openaireLibrary/connect/statistics/statisticsEntities"; + + +@Injectable() +export class StatisticsService { + + + constructor(private http:Http) { } + + getCommunityStatistics(apiUrl: string, communityId: string): Observable { + let url = `${apiUrl}communities/${communityId}`; + console.log(`getting statistics summary from: ${url}`); + return this.http.get(url) + .map(res => res.json()) + .do(res => {console.log(res)}) + .map(res => res.statistics) + .do(res => {console.log(res)}); + } + + getCommunityAdminStatisticsChoices(apiUrl: string, communityId: string): Observable { + let url = `${apiUrl}/statistics/${communityId}`; + console.log(`getting admin choices for statistics from: ${url}`); + return this.http.get(url) + .map(stats => stats.json()) + .catch(this.handleError); + } + + + private handleError (error: Response) { + // in a real world app, we may send the error to some remote logging infrastructure + // instead of just logging it to the console + console.log(error); + return Observable.throw(error || 'Server error'); + } +} diff --git a/src/app/utils/subscribe/invite.component.ts b/src/app/utils/subscribe/invite.component.ts new file mode 100644 index 0000000..79eda4e --- /dev/null +++ b/src/app/utils/subscribe/invite.component.ts @@ -0,0 +1,63 @@ +import { Component, Input, ViewChild } from '@angular/core'; +import { Location } from '@angular/common'; +import {ActivatedRoute} from '@angular/router'; +import { EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; + +import {InviteService} from './invite.service'; +import {Session} from '../../openaireLibrary/login/utils/helper.class'; +@Component({ + selector: 'invite', + template: ` +
+
+ + +
+
+
Message
+ +
+ Invite +
+ + ` +}) + +export class InviteComponent { + @Input() communityName:boolean; + @Input() communityId:string; + properties:EnvProperties; + + subject:string; + body:string; + recipients:string[] = []; + + constructor (private route: ActivatedRoute, + private _inviteService: InviteService + ) { + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + this.subject = "["+this.communityName+"] Invitation to join community"; + this.body = "Dear sir or madame, \n\nWe would like to invite you to join "+this.communityName + + " OpenAIRE community (beta."+this.communityId+".openaire.eu)"; + }); + + + } + + invite(){ + var email = Session.getUserEmail(); + //TODO + this._inviteService.inviteUsers( this.properties.adminToolsAPIURL,this.subject, this.body, ["argirok@di.uoa.gr"]).subscribe ( + res => { + console.log(res); + + }); + } + + +} diff --git a/src/app/utils/subscribe/invite.module.ts b/src/app/utils/subscribe/invite.module.ts new file mode 100644 index 0000000..8819261 --- /dev/null +++ b/src/app/utils/subscribe/invite.module.ts @@ -0,0 +1,24 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; +import {FormsModule} from '@angular/forms'; + +import { InviteService } from './invite.service'; +import {InviteComponent} from './invite.component'; +import {AlertModalModule} from '../../openaireLibrary/utils/modal/alertModal.module'; + +@NgModule({ + imports: [ + CommonModule, RouterModule, AlertModalModule, FormsModule + ], + declarations: [ + InviteComponent + ], + providers:[ + InviteService + ], + exports: [ + InviteComponent + ] +}) +export class InviteModule { } diff --git a/src/app/utils/subscribe/invite.service.ts b/src/app/utils/subscribe/invite.service.ts new file mode 100644 index 0000000..fd54def --- /dev/null +++ b/src/app/utils/subscribe/invite.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { Http, Response, Headers, RequestOptions } from '@angular/http'; +import { Observable } from 'rxjs/Rx'; +import {COOKIE} from "../../openaireLibrary/login/utils/helper.class" + + +@Injectable() +export class InviteService { + + constructor(private http:Http) { + } + inviteUsers(url:string, subject:string, body:string, recipients:string[]){ + var email = {"subject":subject, "body":body, recipients: recipients }; + return this.http.post(url+"/email", JSON.stringify(email), this.getAuthOptionsWithBody()) + .map(res => res.json()) + .do(res => {console.log("Response is "+res)}); + } + public getAuthOptionsWithBody():RequestOptions{ + let headers = new Headers(); + headers.append('Content-Type', 'application/json'); + headers.append('X-XSRF-TOKEN', COOKIE.getCookie(COOKIE.cookieName_id)); + let options = new RequestOptions({ headers: headers, withCredentials:true }); + return options; + } + +} diff --git a/src/app/utils/subscribe/subscribe.component.ts b/src/app/utils/subscribe/subscribe.component.ts new file mode 100644 index 0000000..9b2eeed --- /dev/null +++ b/src/app/utils/subscribe/subscribe.component.ts @@ -0,0 +1,119 @@ +import { Component, Input, ViewChild } from '@angular/core'; +import { Location } from '@angular/common'; +import {ActivatedRoute} from '@angular/router'; +import { EnvProperties} from '../../openaireLibrary/utils/properties/env-properties'; +import {AlertModal} from '../../openaireLibrary/utils/modal/alert'; + +import {SubscribeService} from '../../openaireLibrary/utils/subscribe/subscribe.service'; +import {Session} from '../../openaireLibrary/login/utils/helper.class'; +@Component({ + selector: 'subscribe', + template: ` + + +
+ +

Please login first to subscribe

+
+ Subscribe + Unsubscribe +
+ + + Members: {{subscribers}} + + + + ` +}) + +export class SubscribeComponent { + // @Input() showSubscribe:boolean = true; + @Input() showNumbers:boolean; + @Input() communityId:string; + + + subscribed:boolean = null; + properties:EnvProperties; + subscribers:number= null; + showLoginAlert:Boolean = false; + @ViewChild(AlertModal) alert; + constructor (private route: ActivatedRoute, + private _subscribeService: SubscribeService + ) { + } + + public ngOnInit() { + this.route.data + .subscribe((data: { envSpecific: EnvProperties }) => { + this.properties = data.envSpecific; + if(!this.showNumbers){ + var email = Session.getUserEmail(); + if(email == null){ + this.subscribed = false; + }else{ + this._subscribeService.isSubscribedToCommunity(this.communityId, email,this.properties.adminToolsAPIURL).subscribe ( + res => { + this.subscribed = res; + }); + } + }else{ + this._subscribeService.getCommunitySubscribers(this.communityId, this.properties.adminToolsAPIURL).subscribe ( + res => { + + this.subscribers = (res && res.subscribers && res.subscribers.length )?res.subscribers.length:0; + + }); + } + }); + + + } + + subscribe(){ + var email = Session.getUserEmail(); + if(email == null){ + this.subscribed = false; + this.showLoginAlert = true; + }else{ + this.showLoginAlert = false; + this._subscribeService.subscribeToCommunity(this.communityId, email, this.properties.adminToolsAPIURL).subscribe ( + res => { + console.log(res); + if(!this.subscribed){ + this.subscribed = true; + } + }); + } + } + + unsubscribe(){ + var email = Session.getUserEmail(); + if(email == null){ + this.subscribed = false; + }else{ + //this.properties.adminToolsAPIURL + this._subscribeService.unSubscribeToCommunity(this.communityId, email,this.properties.adminToolsAPIURL).subscribe ( + res => { + console.log(res); + if(this.subscribed){ + this.subscribed = false; + } + }); + } + } + + confirmOpen(){ + + this.alert.cancelButton = true; + this.alert.okButton = true; + this.alert.alertTitle = "Unsubscribe community "; + this.alert.message = "Do you want to proceed? "; + this.alert.okButtonText = "Yes"; + this.alert.cancelButtonText = "No"; + this.alert.open(); + } + confirmClose(data){ + this.unsubscribe(); + } +} diff --git a/src/app/utils/subscribe/subscribe.module.ts b/src/app/utils/subscribe/subscribe.module.ts new file mode 100644 index 0000000..e54ca08 --- /dev/null +++ b/src/app/utils/subscribe/subscribe.module.ts @@ -0,0 +1,23 @@ +import { NgModule} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterModule } from '@angular/router'; + +import { SubscribeService } from '../../openaireLibrary/utils/subscribe/subscribe.service'; +import {SubscribeComponent} from './subscribe.component'; +import {AlertModalModule} from '../../openaireLibrary/utils/modal/alertModal.module'; + +@NgModule({ + imports: [ + CommonModule, RouterModule, AlertModalModule + ], + declarations: [ + SubscribeComponent + ], + providers:[ + SubscribeService + ], + exports: [ + SubscribeComponent + ] +}) +export class SubscribeModule { } diff --git a/src/assets/env-properties.json b/src/assets/env-properties.json new file mode 100644 index 0000000..64476a3 --- /dev/null +++ b/src/assets/env-properties.json @@ -0,0 +1,98 @@ +{ + "environment" : "beta", + "enablePiwikTrack" : false, + "enableHelper" : true, + "useCache" : false, + "metricsAPIURL" : "https://beta.services.openaire.eu/usagestats/", + "framesAPIURL" : "https://beta.openaire.eu/stats3/", + "statisticsAPIURL" : "http://vatopedi.di.uoa.gr:8080/stats/", + "statisticsFrameAPIURL":"https://beta.openaire.eu/stats/", + "claimsAPIURL" : "http://duffy.di.uoa.gr:8080/dnet-claims-service-2.0.0-SNAPSHOT/rest/claimsService/", + "searchAPIURLLAst" : "https://beta.services.openaire.eu/search/v2/api/", + "searchResourcesAPIURL" : "https://beta.services.openaire.eu/search/v2/api/resources", + "csvAPIURL" : "https://beta.services.openaire.eu/search/v2/api/reports", + "searchCrossrefAPIURL" : "https://api.crossref.org/works", + "searchDataciteAPIURL" : "https://api.datacite.org/works", + + "searchOrcidURL" : "https://pub.orcid.org/v2.1/", + + "pmidURL" : "http://www.ncbi.nlm.nih.gov/pubmed/", + "doiURL" : "https://dx.doi.org/", + "cordisURL" : "http://cordis.europa.eu/projects/", + "pmcURL" : "http://europepmc.org/articles/", + "handleURL" : "http://hdl.handle.net/", + "openDoarURL": "http://v2.sherpa.ac.uk/id/repository/", + "r3DataURL": "http://service.re3data.org/repository/", + "zenodo" : "https://zenodo.org/", + "openAccess" : "https://www.openaire.eu/support/faq#article-id-234", + "openAccessRepo" : "https://www.openaire.eu/support/faq#article-id-310", + "fp7Guidlines" : "https://www.openaire.eu/open-access-in-fp7-seventh-research-framework-programme", + "h2020Guidlines" : "https://www.openaire.eu/oa-publications/h2020/open-access-in-horizon-2020", + "ercGuidlines" : "http://erc.europa.eu/sites/default/files/document/file/ERC_Open_Access_Guidelines-revised_2014.pdf", + "helpdesk" : "https://www.openaire.eu/support/helpdesk", + "uploadService" : "http://scoobydoo.di.uoa.gr:8000/upload", + + "vocabulariesAPI" :"https://beta.services.openaire.eu/provision/mvc/vocabularies/", + + "piwikBaseUrl" :"https://analytics.openaire.eu/piwik.php?idsite=", + "piwikSiteId" : "6", + + "loginUrl" :"http://scoobydoo.di.uoa.gr:8080/dnet-openaire-users-1.0.0-SNAPSHOT/openid_connect_login", + + "logoutUrl" :"https://aai.openaire.eu/proxy/saml2/idp/SingleLogoutService.php?ReturnTo=", + + "cookieDomain" :".di.uoa.gr", + + "feedbackmail" :"openaire.test@gmail.com", + + "helperPageUrl" :"http://scoobydoo.di.uoa.gr:16000/api/page/route", + + "cacheUrl" :"http://scoobydoo.di.uoa.gr:3000/get?url=", + + "adminToolsAPIURL" :"http://duffy.di.uoa.gr:8080/uoa-admin-tools/", + + "adminToolsCommunity" :"openaire", + + "datasourcesAPI": "https://beta.services.openaire.eu/openaire/ds/search/", + "contextsAPI":"https://dev-openaire.d4science.org/openaire/context", + "communityAPI": "https://dev-openaire.d4science.org/openaire/community/", + + "csvLimit": 2000, + "pagingLimit": 20, + "resultsPerPage": 10, + + "baseLink" : "https://beta.explore.openaire.eu", + + "searchLinkToPublication" : "/search/publication?articleId=", + "searchLinkToProject" : "/search/project?projectId=", + "searchLinkToDataProvider" : "/search/dataprovider?datasourceId=", + "searchLinkToDataset" : "/search/dataset?datasetId=", + "searchLinkToOrp" : "/search/other?orpId=", + "searchLinkToOrganization" : "/search/organization?organizationId=", + + "searchLinkToPublications" : "/search/find/publications", + "searchLinkToDataProviders" : "/search/find/dataproviders", + "searchLinkToProjects" : "/search/find/projects", + "searchLinkToDatasets" : "/search/find/datasets", + "searchLinkToSoftware" : "/search/find/software", + "searchLinkToOrps" : "/search/find/other", + "searchLinkToOrganizations" : "/search/find/organizations", + "searchLinkToCompatibleDataProviders" : "/search/content-providers", + "searchLinkToCompatibleDataProvidersTable" : "/search/content-providers-table", + "searchLinkToEntityRegistriesDataProviders" : "/search/entity-registries", + "searchLinkToEntityRegistriesDataProvidersTable" : "/search/entity-registries-table", + "searchLinkToJournals" : "/search/journals", + "searchLinkToJournalsTable" : "/search/journals-table", + + "searchLinkToAdvancedPublications" : "/search/advanced/publications", + "searchLinkToAdvancedProjects" : "/search/advanced/projects", + "searchLinkToAdvancedDatasets" : "/search/advanced/datasets", + "searchLinkToAdvancedSoftware" : "/search/advanced/software", + "searchLinkToAdvancedOrps" : "/search/advanced/other", + "searchLinkToAdvancedDataProviders" : "/search/advanced/dataproviders", + "searchLinkToAdvancedOrganizations" : "/search/advanced/organizations", + "lastIndexInformationLink" : "https://www.openaire.eu/aggregation-and-content-provision-workflows", + "showLastIndexInformationLink" : true, + "widgetLink" : "https://beta.openaire.eu/index.php?option=com_openaire&view=widget&format=raw&projectId=", + "claimsInformationLink": "https://www.openaire.eu/linking-beta" +} diff --git a/src/assets/home.jpeg b/src/assets/home.jpeg new file mode 100644 index 0000000..54d839c Binary files /dev/null and b/src/assets/home.jpeg differ diff --git a/src/assets/logo-large-monitor.png b/src/assets/logo-large-monitor.png new file mode 100644 index 0000000..c4565fe Binary files /dev/null and b/src/assets/logo-large-monitor.png differ diff --git a/src/assets/logo-small-monitor.png b/src/assets/logo-small-monitor.png new file mode 100644 index 0000000..b58e78d Binary files /dev/null and b/src/assets/logo-small-monitor.png differ diff --git a/src/assets/monitor-custom.css b/src/assets/monitor-custom.css new file mode 100644 index 0000000..de5c1da --- /dev/null +++ b/src/assets/monitor-custom.css @@ -0,0 +1,52 @@ +/* .tm-toolbar .uk-subnav-line .custom-monitor-li { + display: block; + background:#68A704 !important; color:#fff !important; +} +.custom-monitor-toolbar ul.uk-subnav.uk-subnav-line{ + background-color: #8BCC00 !important; + } + + .custom-monitor-toolbar .inner { + background-color: #8BCC00 !important; + } + + .custom-monitor-toolbar{ + border-top-color:#8BCC00 !important; + } +.uk-button-default:hover,.uk-button-default:focus,.btn:hover,.btn:focus { + background-color:#fff !important; + color:#5b5b5b !important; + box-shadow:0 6px 50px rgba(0,0,0,0.05) +} + */ + :root { + --portal-main-color: #9ABB55; + --portal-main-contrast: white; + --portal-dark-color: #7c9144; + --openaire-main-color: #313179; + + --explore-portal-color: #D95F2D; + --provide-portal-color: #37C7E9; + --monitor-portal-color: #9ABB55; + --connect-portal-color: #EBB13E; + --develop-portal-color: #DA65AB; + + --explore-portal-lower-tone: #a0462c; + --provide-portal-lower-tone: #3A8FA3; + --monitor-portal-lower-tone: #7c9144; + --connect-portal-lower-tone: #b48536; + --develop-portal-lower-tone: #9f4e7e; +} + + +.tm-toolbar .uk-subnav-line .custom-monitor-li { + background:var(--portal-main-color) !important; +} + + +.mainPageSearchForm { + background-image: url("./home.jpeg") !important; + background-color: rgb(255, 255, 255); + box-sizing: border-box; + min-height: calc(100vh - 412.767px); +} diff --git a/src/assets/sitemap.xml b/src/assets/sitemap.xml new file mode 100644 index 0000000..ff3aa18 --- /dev/null +++ b/src/assets/sitemap.xml @@ -0,0 +1,8 @@ + + + + + weekly + 0.5 + + diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..b7f639a --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `.angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..93a1464 --- /dev/null +++ b/src/index.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + diff --git a/src/main.server.ts b/src/main.server.ts new file mode 100644 index 0000000..d7c01cd --- /dev/null +++ b/src/main.server.ts @@ -0,0 +1 @@ +export { AppServerModule } from './app/app.server.module'; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..9e8c381 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,13 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +document.addEventListener('DOMContentLoaded', () => { + platformBrowserDynamic().bootstrapModule(AppModule); +}); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 0000000..98fd841 --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,72 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +import 'core-js/es6/symbol'; +import 'core-js/es6/object'; +import 'core-js/es6/function'; +import 'core-js/es6/parse-int'; +import 'core-js/es6/parse-float'; +import 'core-js/es6/number'; +import 'core-js/es6/math'; +import 'core-js/es6/string'; +import 'core-js/es6/date'; +import 'core-js/es6/array'; +import 'core-js/es6/regexp'; +import 'core-js/es6/map'; +import 'core-js/es6/weak-map'; +import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + + +/** + * Required to support Web Animations `@angular/animation`. + * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. +/** + * Need to import at least one locale-data with intl. + */ +// import 'intl/locale-data/jsonp/en'; diff --git a/src/robots.txt b/src/robots.txt new file mode 100644 index 0000000..d150c52 --- /dev/null +++ b/src/robots.txt @@ -0,0 +1,7 @@ +User-Agent: * +Disallow: /cache +Disallow: /upload +#Disallow: / + + +Sitemap: https://monitor.openaire.eu/sitemap.xml diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json new file mode 100644 index 0000000..16b7847 --- /dev/null +++ b/src/tsconfig.app.json @@ -0,0 +1,15 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + "module": "es2015", + "types": [ + "node" + ] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +} diff --git a/src/tsconfig.server.json b/src/tsconfig.server.json new file mode 100644 index 0000000..7e55994 --- /dev/null +++ b/src/tsconfig.server.json @@ -0,0 +1,21 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "./", + // Set the module format to "commonjs": + "module": "commonjs", + "types": [ + "node" + ] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ], + // Add "angularCompilerOptions" with the AppServerModule you wrote + // set as the "entryModule". + "angularCompilerOptions": { + "entryModule": "app/app.server.module#AppServerModule" + } +} diff --git a/static.paths.ts b/static.paths.ts new file mode 100644 index 0000000..0c21f94 --- /dev/null +++ b/static.paths.ts @@ -0,0 +1,15 @@ +export const ROUTES = [ + '/', + '/lazy', + '/home', + '/search/publication','/search/project','/search/dataset','/search/dataprovider','/search/organization', + '/search/find', + '/search/person','/search/publication','/search/project','/search/dataset','/search/dataprovider','/search/organization', + '/search/find/people','/search/find/publications','/search/find/projects','/search/find/datasets','/search/find/dataproviders','/search/find/organizations', + '/search/advanced/people','/search/advanced/publications','/search/advanced/projects','/search/advanced/datasets','/search/advanced/dataproviders','/search/advanced/organizations', + '/participate/deposit-publications','/participate/deposit-datasets','/participate/deposit-publications-result','/participate/deposit-datasets-result','/participate/deposit-subject-result', + '/search/content-providers','/search/content-providers-table','/search/entity-registries','/search/entity-registries-table','/search/journals','/search/journals-table', + '/project-report','/claims','/myclaims','/participate/claim','/participate/direct-claim','/claims-project-manager', + '/test','/user-info', + '/error', '/*path' +]; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..a6c016b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/webpack.server.config.js b/webpack.server.config.js new file mode 100644 index 0000000..626690c --- /dev/null +++ b/webpack.server.config.js @@ -0,0 +1,42 @@ +// Work around for https://github.com/angular/angular-cli/issues/7200 + +const path = require('path'); +const webpack = require('webpack'); + +module.exports = { + entry: { + // This is our Express server for Dynamic universal + server: './server.ts', + // This is an example of Static prerendering (generative) + prerender: './prerender.ts' + }, + target: 'node', + resolve: { extensions: ['.ts', '.js'] }, + // Make sure we include all node_modules etc + externals: [/(node_modules|main\..*\.js)/,], + output: { + // Puts the output at the root of the dist folder + path: path.join(__dirname, 'dist'), + filename: '[name].js' + }, + module: { + rules: [ + { test: /\.ts$/, loader: 'ts-loader' } + ] + }, + plugins: [ + new webpack.ContextReplacementPlugin( + // fixes WARNING Critical dependency: the request of a dependency is an expression + /(.+)?angular(\\|\/)core(.+)?/, + path.join(__dirname, 'src'), // location of your src + {} // a map of your routes + ), + new webpack.ContextReplacementPlugin( + // fixes WARNING Critical dependency: the request of a dependency is an expression + /(.+)?express(\\|\/)(.+)?/, + path.join(__dirname, 'src'), + {} + ) + ] +} + \ No newline at end of file