[Admin | Trunk]: Update to Angular 11

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-admin-portal/trunk@61384 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
k.triantafyllou 2021-07-14 12:04:42 +00:00
parent 7673c8d53b
commit 62ce7ee7df
50 changed files with 398 additions and 588 deletions

11
.browserslistrc Normal file
View File

@ -0,0 +1,11 @@
# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers
# For additional information regarding the format and rule options, please see:
# https://github.com/browserslist/browserslist#queries
#
# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed
> 0.5%
last 2 versions
Firefox ESR
not dead
not IE 9-11

21
LICENSE
View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017 Stefanos Gatsios
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,18 +1,24 @@
# AdminPortal # Connect Admin
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.3.0. This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.10 and has been updated to 11.2.14.
## Install packages
Run npm install (maybe needs sudo), a script that will delete unused files from library will be run.
## Development server ## Development server
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. Run `npm start` for a dev server. Navigate to `http://localhost:5000`. The app will automatically reload if you change any of the source files.
## Code scaffolding ## Build - CSR
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. Use the `npm run build-dev` for a development build.<br>
Use the `npm run build-beta` for a beta build.<br>
Use the `npm run build-prod` for a production build.
## Build ## Webpack Analyzer
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. In order to analyze bundle size you can run `npm run webpack-bundle-analyzer`
## Running unit tests ## Running unit tests
@ -21,8 +27,3 @@ Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.
## Running end-to-end tests ## Running end-to-end tests
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
Before running the tests make sure you are serving the app via `ng serve`.
## Further help
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

View File

@ -1,14 +0,0 @@
*******Useful project infrmation***********
Project has 2 external folders. Check them using
svn propget svn:externals ./
Above command should show the following:
./src/app/openaireLibrary https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app
./src/assets/common-assets https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/assets
After initial checkout, you may have to exlude ./src/app/openaireLibrary/app.* files in order the project to run properly.
Exclude the files from your local copy, but keep them in the repository.
Use the following command, to exclude the files:
cd ./src/app/openaireLibrary
svn update --set-depth exclude ./app.*

View File

@ -1,71 +1,134 @@
{ {
"$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json", "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1, "version": 1,
"newProjectRoot": "projects", "newProjectRoot": "projects",
"projects": { "projects": {
"admin-portal": { "connect-admin": {
"root": "", "root": "",
"sourceRoot": "src", "sourceRoot": "src",
"projectType": "application", "projectType": "application",
"prefix": "app",
"schematics": {
"@schematics/angular:class": {
"skipTests": true
},
"@schematics/angular:component": {
"skipTests": true
},
"@schematics/angular:directive": {
"skipTests": true
},
"@schematics/angular:guard": {
"skipTests": true
},
"@schematics/angular:module": {
"skipTests": true
},
"@schematics/angular:pipe": {
"skipTests": true
},
"@schematics/angular:service": {
"skipTests": true
}
},
"architect": { "architect": {
"build": { "build": {
"builder": "@angular-devkit/build-angular:browser", "builder": "@angular-devkit/build-angular:browser",
"options": { "options": {
"outputPath": "dist", "aot": true,
"outputPath": "dist/connect-admin",
"index": "src/index.html", "index": "src/index.html",
"main": "src/main.ts", "main": "src/main.ts",
"tsConfig": "src/tsconfig.app.json",
"polyfills": "src/polyfills.ts", "polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
"assets": [ "assets": [
"src/assets", "src/assets",
"src/robots.txt" "src/robots.txt"
], ],
"styles": [ "styles": [
"src/material.scss", "src/material.scss",
"node_modules/datatables.net-dt/css/jquery.dataTables.css", "src/mining.scss",
"node_modules/interactiveminingv3/assets/css/interactive-mining.css",
"node_modules/interactiveminingv3/assets/css/animations.css",
"src/styles.css" "src/styles.css"
], ],
"scripts": [ "scripts": [
"node_modules/jquery/dist/jquery.js", "node_modules/jquery/dist/jquery.js",
"node_modules/datatables.net/js/jquery.dataTables.js",
"node_modules/interactiveminingv3/assets/js/ResizeSensor.js", "node_modules/interactiveminingv3/assets/js/ResizeSensor.js",
"node_modules/interactiveminingv3/assets/js/jquery.sticky-sidebar.js" "node_modules/interactiveminingv3/assets/js/jquery.sticky-sidebar.js"
] ]
}, },
"configurations": { "configurations": {
"production": { "development": {
"optimization": true, "optimization": true,
"outputHashing": "all", "outputHashing": "all",
"sourceMap": false, "sourceMap": false,
"extractCss": true,
"namedChunks": false, "namedChunks": false,
"aot": true, "aot": true,
"extractLicenses": true, "extractLicenses": true,
"vendorChunk": false, "vendorChunk": false,
"buildOptimizer": true, "buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
},
"beta": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.beta.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
},
"production": {
"fileReplacements": [ "fileReplacements": [
{ {
"replace": "src/environments/environment.ts", "replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts" "with": "src/environments/environment.prod.ts"
} }
] ],
},
"beta": {
"optimization": true, "optimization": true,
"outputHashing": "all", "outputHashing": "all",
"sourceMap": false, "sourceMap": false,
"extractCss": true,
"namedChunks": false, "namedChunks": false,
"aot": true, "aot": true,
"extractLicenses": true, "extractLicenses": true,
"vendorChunk": false, "vendorChunk": false,
"buildOptimizer": true, "buildOptimizer": true,
"fileReplacements": [ "budgets": [
{ {
"replace": "src/environments/environment.ts", "type": "initial",
"with": "src/environments/environment.beta.ts" "maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
} }
] ]
} }
@ -74,45 +137,33 @@
"serve": { "serve": {
"builder": "@angular-devkit/build-angular:dev-server", "builder": "@angular-devkit/build-angular:dev-server",
"options": { "options": {
"browserTarget": "admin-portal:build" "browserTarget": "connect-admin:build"
}, },
"configurations": { "configurations": {
"production": { "production": {
"browserTarget": "admin-portal:build:production" "browserTarget": "connect-admin:build:production"
},
"beta": {
"browserTarget": "admin-portal:build:beta"
} }
} }
}, },
"extract-i18n": { "extract-i18n": {
"builder": "@angular-devkit/build-angular:extract-i18n", "builder": "@angular-devkit/build-angular:extract-i18n",
"options": { "options": {
"browserTarget": "admin-portal:build" "browserTarget": "connect-admin:build"
} }
}, },
"test": { "test": {
"builder": "@angular-devkit/build-angular:karma", "builder": "@angular-devkit/build-angular:karma",
"options": { "options": {
"main": "src/test.ts", "main": "src/test.ts",
"karmaConfig": "./karma.conf.js",
"polyfills": "src/polyfills.ts", "polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.spec.json", "tsConfig": "src/tsconfig.spec.json",
"scripts": [ "karmaConfig": "src/karma.conf.js",
"node_modules/jquery/dist/jquery.js",
"node_modules/datatables.net/js/jquery.dataTables.js",
"node_modules/interactiveminingv3/assets/js/ResizeSensor.js",
"node_modules/interactiveminingv3/assets/js/jquery.sticky-sidebar.js"
],
"styles": [ "styles": [
"src/styles.css", "src/styles.css"
"node_modules/datatables.net-dt/css/jquery.dataTables.css",
"node_modules/interactiveminingv3/assets/css/interactive-mining.css",
"node_modules/interactiveminingv3/assets/css/animations.css"
], ],
"scripts": [],
"assets": [ "assets": [
"src/assets", "src/assets"
"src/robots.txt"
] ]
} }
}, },
@ -130,24 +181,27 @@
} }
} }
}, },
"admin-portal-e2e": { "connect-admin-e2e": {
"root": "e2e", "root": "e2e/",
"sourceRoot": "e2e",
"projectType": "application", "projectType": "application",
"prefix": "",
"architect": { "architect": {
"e2e": { "e2e": {
"builder": "@angular-devkit/build-angular:protractor", "builder": "@angular-devkit/build-angular:protractor",
"options": { "options": {
"protractorConfig": "./protractor.conf.js", "protractorConfig": "e2e/protractor.conf.js",
"devServerTarget": "admin-portal:serve" "devServerTarget": "connect-admin:serve"
},
"configurations": {
"production": {
"devServerTarget": "connect-admin:serve:production"
}
} }
}, },
"lint": { "lint": {
"builder": "@angular-devkit/build-angular:tslint", "builder": "@angular-devkit/build-angular:tslint",
"options": { "options": {
"tsConfig": [ "tsConfig": "e2e/tsconfig.e2e.json",
"e2e/tsconfig.e2e.json"
],
"exclude": [ "exclude": [
"**/node_modules/**" "**/node_modules/**"
] ]
@ -156,14 +210,5 @@
} }
} }
}, },
"defaultProject": "admin-portal", "defaultProject": "connect-admin"
"schematics": {
"@schematics/angular:component": {
"prefix": "app",
"styleext": "css"
},
"@schematics/angular:directive": {
"prefix": "app"
}
}
} }

3
clean-library.sh Normal file
View File

@ -0,0 +1,3 @@
cd src/app/openaireLibrary
cd ../../../
echo "Done"

View File

@ -1,14 +0,0 @@
import { AppPage } from './app.po';
describe('admin-portal App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getParagraphText()).toEqual('Welcome to app!');
});
});

View File

@ -1,11 +0,0 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo() {
return browser.get('/');
}
getParagraphText() {
return element(by.css('app-root h1')).getText();
}
}

View File

@ -6,7 +6,7 @@ const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = { exports.config = {
allScriptsTimeout: 11000, allScriptsTimeout: 11000,
specs: [ specs: [
'./e2e/**/*.e2e-spec.ts' './src/**/*.e2e-spec.ts'
], ],
capabilities: { capabilities: {
'browserName': 'chrome' 'browserName': 'chrome'
@ -21,7 +21,7 @@ exports.config = {
}, },
onPrepare() { onPrepare() {
require('ts-node').register({ require('ts-node').register({
project: 'e2e/tsconfig.e2e.json' project: require('path').join(__dirname, './tsconfig.e2e.json')
}); });
jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
} }

23
e2e/src/app.e2e-spec.ts Normal file
View File

@ -0,0 +1,23 @@
import { AppPage } from './app.po';
import { browser, logging } from 'protractor';
describe('workspace-project App', () => {
let page: AppPage;
beforeEach(() => {
page = new AppPage();
});
it('should display welcome message', () => {
page.navigateTo();
expect(page.getTitleText()).toEqual('Welcome to connect-admin!');
});
afterEach(async () => {
// Assert that there are no errors emitted from the browser
const logs = await browser.manage().logs().get(logging.Type.BROWSER);
expect(logs).not.toContain(jasmine.objectContaining({
level: logging.Level.SEVERE,
} as logging.Entry));
});
});

11
e2e/src/app.po.ts Normal file
View File

@ -0,0 +1,11 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo() {
return browser.get(browser.baseUrl) as Promise<any>;
}
getTitleText() {
return element(by.css('app-root h1')).getText() as Promise<string>;
}
}

View File

@ -1,8 +1,7 @@
{ {
"extends": "../tsconfig.json", "extends": "../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../out-tsc/e2e", "outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "commonjs", "module": "commonjs",
"target": "es5", "target": "es5",
"types": [ "types": [

View File

@ -1,7 +1,7 @@
rm -f interactiveminingv3.tgz rm -f interactiveminingv3.tgz
git clone https://github.com/tasosgig/interactive-mining.git git clone https://github.com/tasosgig/interactive-mining.git
cd interactive-mining/ cd interactive-mining/
git checkout angular7 git checkout angular11
cd interactive-mining-angular-frontend/ cd interactive-mining-angular-frontend/
npm install npm install
npm run packagr npm run packagr

Binary file not shown.

View File

@ -1,76 +1,65 @@
{ {
"name": "admin-portal", "name": "connect-admin",
"version": "0.0.0", "version": "1.0.0",
"license": "MIT",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"clean-install": "rm -rf node_modules; npm install; npm run mining",
"mining": "./interactivemining-install.sh",
"start": "ng serve --host 0.0.0.0 --disable-host-check --port=5000", "start": "ng serve --host 0.0.0.0 --disable-host-check --port=5000",
"build": "ng build --prod; npm run after-build-clean", "build": "ng build",
"build-beta": "ng build --configuration=beta; npm run after-build-clean", "build-dev": "ng build --configuration=development",
"build-beta": "ng build --configuration=beta",
"build-prod": "ng build --prod",
"webpack-bundle-analyzer": "ng build --stats-json && webpack-bundle-analyzer dist/monitor-dashboard/browser/stats.json --host 0.0.0.0",
"test": "ng test", "test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e", "e2e": "ng e2e",
"after-build-clean": "rm -rf dist/assets/common-assets/.svn/ dist/assets/connect-assets/.svn/ dist/assets/dashboard-theme/.svn/" "mining": "chmod +x interactivemining-install.sh && ./interactivemining-install.sh",
"postinstall": "chmod +x clean-library.sh && ./clean-library.sh && npm run mining",
"after-build-clean": "rm -rf dist/connect-admin/assets/common-assets/.svn/ dist/connect-admin/assets/dashboard-theme/.svn/"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "7.2.14", "@angular/animations": "~11.2.14",
"@angular/cdk": "^7.3.7", "@angular/cdk": "^11.2.13",
"@angular/common": "7.2.14", "@angular/common": "~11.2.14",
"@angular/compiler": "7.2.14", "@angular/compiler": "~11.2.14",
"@angular/core": "7.2.14", "@angular/core": "~11.2.14",
"@angular/forms": "7.2.14", "@angular/forms": "~11.2.14",
"@angular/http": "7.2.14", "@angular/localize": "^11.2.14",
"@angular/material": "^7.3.7", "@angular/material": "^11.2.13",
"@angular/platform-browser": "7.2.14", "@angular/platform-browser": "~11.2.14",
"@angular/platform-browser-dynamic": "7.2.14", "@angular/platform-browser-dynamic": "~11.2.14",
"@angular/router": "7.2.14", "@angular/router": "~11.2.14",
"@nguniversal/express-engine": "^6.0.0",
"@types/express": "^4.16.1",
"angular-datatables": "^4.4.1",
"citation-js": "^0.3.4",
"ng2-ckeditor": "1.1.9",
"clipboard": "^1.5.16", "clipboard": "^1.5.16",
"core-js": "2.6.8", "core-js": "^2.5.4",
"datatables.net": "^1.10.19", "express": "^4.15.2",
"datatables.net-dt": "^1.10.19",
"interactiveminingv3": "file:interactiveminingv3.tgz",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"ng-recaptcha": "^3.0.5", "ng-recaptcha": "^7.0.1",
"ngx-bootstrap": "^1.6.6", "ng2-ckeditor": "1.3.1",
"ngx-color-picker": "^8.1.0", "ngx-color-picker": "^8.1.0",
"ngx-json-ld": "0.1.6", "rxjs": "^6.5.1",
"ts-md5": "^1.2.0", "ts-md5": "^1.2.0",
"tslib": "^1.9.0", "tslib": "^2.0.0",
"zone.js": "0.8.29" "zone.js": "~0.10.2",
"sass-loader": "7.3.1"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~0.13.0", "@angular-devkit/build-angular": "~0.1102.14",
"@angular/cli": "7.3.9", "@angular/cli": "~11.2.14",
"@angular/compiler-cli": "7.2.14", "@angular/compiler-cli": "~11.2.14",
"@angular/language-service": "7.2.14", "@angular/language-service": "~11.2.14",
"@types/datatables.net": "^1.10.17", "@types/express": "^4.17.0",
"@types/jasmine": "~2.8.8", "@types/node": "^12.11.1",
"@types/jasmine": "~3.6.0",
"@types/jasminewd2": "~2.0.3", "@types/jasminewd2": "~2.0.3",
"@types/jquery": "^3.3.29", "codelyzer": "^6.0.0",
"@types/node": "^8.0.30", "jasmine-core": "~3.8.0",
"codelyzer": "~4.5.0", "jasmine-spec-reporter": "~5.0.0",
"jasmine-core": "~2.99.1", "karma": "~6.3.4",
"jasmine-spec-reporter": "~4.2.1", "karma-chrome-launcher": "~3.1.0",
"karma": "~3.0.0", "karma-coverage-istanbul-reporter": "~3.0.2",
"karma-chrome-launcher": "~2.1.1", "karma-jasmine": "~4.0.0",
"karma-cli": "~1.0.1", "karma-jasmine-html-reporter": "^1.6.0",
"karma-coverage-istanbul-reporter": "~2.0.1", "protractor": "~7.0.0",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"ts-node": "~7.0.0", "ts-node": "~7.0.0",
"tslint": "^5.7.0", "typescript": "~4.0.7"
"typescript": "3.2.4",
"rxjs": "6.5.1",
"rxjs-compat": "^6.5.1",
"rxjs-tslint": "^0.1.7"
} }
} }

View File

@ -1,6 +1,6 @@
import {ChangeDetectorRef, Component, HostListener, OnInit} from '@angular/core'; import {ChangeDetectorRef, Component, HostListener, OnInit} from '@angular/core';
import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu'; import {MenuItem, RootMenuItem} from './openaireLibrary/sharedComponents/menu';
import {ActivatedRoute, NavigationEnd, Params, Router} from '@angular/router'; import {ActivatedRoute, Data, NavigationEnd, Params, Router} from '@angular/router';
import {EnvProperties} from './openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from './openaireLibrary/utils/properties/env-properties';
import {Session, User} from './openaireLibrary/login/utils/helper.class'; import {Session, User} from './openaireLibrary/login/utils/helper.class';
import {UserManagementService} from './openaireLibrary/services/user-management.service'; import {UserManagementService} from './openaireLibrary/services/user-management.service';
@ -12,6 +12,8 @@ import {CommunityInfo} from "./openaireLibrary/connect/community/communityInfo";
import {CommunityService} from "./openaireLibrary/connect/community/community.service"; import {CommunityService} from "./openaireLibrary/connect/community/community.service";
import {arrow_left} from "./openaireLibrary/utils/icons/icons"; import {arrow_left} from "./openaireLibrary/utils/icons/icons";
import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll"; import {SmoothScroll} from "./openaireLibrary/utils/smooth-scroll";
import {ConnectHelper} from './openaireLibrary/connect/connectHelper';
import {ConfigurationService} from './openaireLibrary/utils/configuration/configuration.service';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
@ -22,6 +24,7 @@ export class AppComponent implements OnInit {
properties: EnvProperties = properties; properties: EnvProperties = properties;
user: User; user: User;
params: BehaviorSubject<Params> = new BehaviorSubject<Params>(null); params: BehaviorSubject<Params> = new BehaviorSubject<Params>(null);
data: BehaviorSubject<Data> = new BehaviorSubject<Data>(null);
hasSidebar: boolean = false; hasSidebar: boolean = false;
hasHeader: boolean = false; hasHeader: boolean = false;
hasAdminMenu: boolean = false; hasAdminMenu: boolean = false;
@ -55,17 +58,17 @@ export class AppComponent implements OnInit {
private cdr: ChangeDetectorRef, private cdr: ChangeDetectorRef,
private smoothScroll: SmoothScroll, private smoothScroll: SmoothScroll,
private layoutService: LayoutService, private layoutService: LayoutService,
private userManagementService: UserManagementService) { private userManagementService: UserManagementService,
private configurationService: ConfigurationService) {
this.subscriptions.push(this.router.events.subscribe(event => { this.subscriptions.push(this.router.events.subscribe(event => {
if (event instanceof NavigationEnd) { if (event instanceof NavigationEnd) {
let r = this.route; let r = this.route;
let params = r.snapshot.params; while (r.firstChild) {
while (r.firstChild && !params['community']) {
r = r.firstChild; r = r.firstChild;
params = r.snapshot.params
} }
this.paramsResolved = true; this.paramsResolved = true;
this.params.next(params); this.params.next(r.snapshot.params);
this.data.next(r.snapshot.data);
} }
})); }));
} }
@ -104,6 +107,7 @@ export class AppComponent implements OnInit {
this.subscriptions.push(this.communityService.getCommunity(params['community']).subscribe(community => { this.subscriptions.push(this.communityService.getCommunity(params['community']).subscribe(community => {
if (community) { if (community) {
this.community = community; this.community = community;
this.setProperties(community.communityId);
this.buildMenu(); this.buildMenu();
this.loading = false; this.loading = false;
} else { } else {
@ -125,6 +129,12 @@ export class AppComponent implements OnInit {
} }
} }
})); }));
this.subscriptions.push(this.data.subscribe(data => {
if(data && data.portal) {
this.setProperties(data.portal);
this.configurationService.initCommunityInformation(this.properties, this.properties.adminToolsCommunity);
}
}));
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => { this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
this.user = user; this.user = user;
if (this.user) { if (this.user) {
@ -158,6 +168,16 @@ export class AppComponent implements OnInit {
this.smoothScroll.clearSubscriptions(); this.smoothScroll.clearSubscriptions();
} }
setProperties(id, type = null){
this.properties.adminToolsCommunity = id;
if(type) {
this.properties.adminToolsPortalType = type;
} else {
ConnectHelper.setPortalTypeFromPid(id);
}
this.configurationService.initCommunityInformation(this.properties, this.properties.adminToolsCommunity);
}
public get open() { public get open() {
return this.layoutService.open; return this.layoutService.open;
} }

View File

@ -11,7 +11,6 @@ import {IsCommunity} from './openaireLibrary/connect/communityGuard/isCommunity.
import {AdminErrorPageComponent} from './pages/error/errorPage.component'; import {AdminErrorPageComponent} from './pages/error/errorPage.component';
import {ErrorModule} from './openaireLibrary/error/error.module'; import {ErrorModule} from './openaireLibrary/error/error.module';
import {TitleCasePipe} from '@angular/common'; import {TitleCasePipe} from '@angular/common';
import {InteractiveMiningModule} from 'interactiveminingv3';
import {CommunityService} from './openaireLibrary/connect/community/community.service'; import {CommunityService} from './openaireLibrary/connect/community/community.service';
import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service'; import {SubscribeService} from './openaireLibrary/utils/subscribe/subscribe.service';
import {ConnectRIGuard} from './openaireLibrary/connect/communityGuard/connectRIGuard.guard'; import {ConnectRIGuard} from './openaireLibrary/connect/communityGuard/connectRIGuard.guard';
@ -23,6 +22,7 @@ import {ErrorInterceptorService} from "./openaireLibrary/error-interceptor.servi
import {DEFAULT_TIMEOUT, TimeoutInterceptor} from "./openaireLibrary/timeout-interceptor.service"; import {DEFAULT_TIMEOUT, TimeoutInterceptor} from "./openaireLibrary/timeout-interceptor.service";
import {AdminLoginGuard} from "./openaireLibrary/login/adminLoginGuard.guard"; import {AdminLoginGuard} from "./openaireLibrary/login/adminLoginGuard.guard";
import {LoginGuard} from "./openaireLibrary/login/loginGuard.guard"; import {LoginGuard} from "./openaireLibrary/login/loginGuard.guard";
import {InteractiveMiningModule} from 'interactiveminingv3';
@NgModule({ @NgModule({
imports: [ imports: [

View File

@ -9,17 +9,17 @@ import {LoginGuard} from "./openaireLibrary/login/loginGuard.guard";
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
loadChildren: './pages/manage-communities/manage-communities.module#ManageCommunitiesModule', loadChildren: () => import('./pages/manage-communities/manage-communities.module').then(m => m.ManageCommunitiesModule),
canActivateChild: [LoginGuard] canActivateChild: [LoginGuard]
}, },
{ {
path: 'reload', path: 'reload',
loadChildren: './reload/libReload.module#LibReloadModule', loadChildren: () => import('./reload/libReload.module').then(m => m.LibReloadModule),
data: {hasSidebar: false, hasHeader: false} data: {hasSidebar: false, hasHeader: false}
}, },
{ {
path: 'user-info', path: 'user-info',
loadChildren: './login/libUser.module#LibUserModule', loadChildren: () => import('./login/libUser.module').then(m => m.LibUserModule),
data: {hasSidebar: false} data: {hasSidebar: false}
}, },
{ path: 'error', { path: 'error',
@ -29,19 +29,19 @@ const routes: Routes = [
}, },
{ {
path: 'connect/admin-tools', path: 'connect/admin-tools',
loadChildren: './pages/admin-tools/admin-tools-routing.module#AdminToolsRoutingModule', loadChildren: () => import('./pages/admin-tools/admin-tools-routing.module').then(m => m.AdminToolsRoutingModule),
canActivateChild: [AdminLoginGuard], canActivateChild: [AdminLoginGuard],
data: {portal: 'connect'} data: {portal: 'connect'}
}, },
{ {
path: 'openaire/admin-tools', path: 'openaire/admin-tools',
loadChildren: './pages/admin-tools/admin-tools-routing.module#AdminToolsRoutingModule', loadChildren: () => import('./pages/admin-tools/admin-tools-routing.module').then(m => m.AdminToolsRoutingModule),
canActivateChild: [AdminLoginGuard], canActivateChild: [AdminLoginGuard],
data: {portal: 'openaire'} data: {portal: 'openaire'}
}, },
{ {
path: 'admin-tools', path: 'admin-tools',
loadChildren: './pages/admin-tools/portal-admin-tools-routing.module#PortalAdminToolsRoutingModule', loadChildren: () => import('./pages/admin-tools/portal-admin-tools-routing.module').then(m => m.PortalAdminToolsRoutingModule),
canActivateChild: [AdminLoginGuard] canActivateChild: [AdminLoginGuard]
}, },
{ {
@ -49,7 +49,7 @@ const routes: Routes = [
}, },
{ {
path: ':community', path: ':community',
loadChildren: './pages/community-routing.module#CommunityRoutingModule', loadChildren: () => import('./pages/community-routing.module').then(m => m.CommunityRoutingModule),
canActivateChild: [IsCommunity, ConnectAdminLoginGuard] canActivateChild: [IsCommunity, ConnectAdminLoginGuard]
}, },
{ path: '**', { path: '**',
@ -62,8 +62,7 @@ const routes: Routes = [
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { imports: [RouterModule.forRoot(routes, {
preloadingStrategy: PreloadAllModules, preloadingStrategy: PreloadAllModules,
onSameUrlNavigation: "reload", onSameUrlNavigation: "reload"
relativeLinkResolution: 'corrected'
})], })],
exports: [ RouterModule ] exports: [ RouterModule ]
}) })

View File

@ -1,13 +0,0 @@
/**
* Created by stefania on 10/3/16.
*/
import './polyfills.ts';
//import './vendors.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
import {enableProdMode} from "@angular/core";
const platform = platformBrowserDynamic();
if(process.env.PRODUCTION) {enableProdMode();}
platform.bootstrapModule(AppModule);

View File

@ -6,32 +6,32 @@ import {RouterModule} from '@angular/router';
RouterModule.forChild([ RouterModule.forChild([
{ {
path: 'entities', path: 'entities',
loadChildren: '../../openaireLibrary/dashboard/entity/entities.module#EntitiesModule', loadChildren: () => import('../../openaireLibrary/dashboard/entity/entities.module').then(m => m.EntitiesModule),
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
path: 'classContents', path: 'classContents',
loadChildren: '../../openaireLibrary/dashboard/divhelpcontent/class-help-contents.module#ClassHelpContentsModule', loadChildren: () => import('../../openaireLibrary/dashboard/divhelpcontent/class-help-contents.module').then(m => m.ClassHelpContentsModule),
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
path: 'classContents/edit', path: 'classContents/edit',
loadChildren: '../../openaireLibrary/dashboard/divhelpcontent/class-help-content-form.module#ClassHelpContentFormModule', loadChildren: () => import('../../openaireLibrary/dashboard/divhelpcontent/class-help-content-form.module').then(m => m.ClassHelpContentFormModule),
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
path: 'helptexts', path: 'helptexts',
loadChildren: '../../openaireLibrary/dashboard/helpTexts/page-help-contents.module#PageHelpContentsModule', loadChildren: () => import('../../openaireLibrary/dashboard/helpTexts/page-help-contents.module').then(m => m.PageHelpContentsModule),
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
path: 'helptexts/edit', path: 'helptexts/edit',
loadChildren: '../../openaireLibrary/dashboard/helpTexts/page-help-content-form.module#PageHelpContentFormModule', loadChildren: () => import('../../openaireLibrary/dashboard/helpTexts/page-help-content-form.module').then(m => m.PageHelpContentFormModule),
pathMatch: 'full' pathMatch: 'full'
}, },
{ {
path: 'pages', path: 'pages',
loadChildren: '../../openaireLibrary/dashboard/page/pages.module#PagesModule', loadChildren: () => import('../../openaireLibrary/dashboard/page/pages.module').then(m => m.PagesModule),
pathMatch: 'full' pathMatch: 'full'
} }
]) ])

View File

@ -3,9 +3,9 @@ import {RouterModule} from "@angular/router";
@NgModule({ @NgModule({
imports: [RouterModule.forChild([ imports: [RouterModule.forChild([
{path: '', loadChildren: './admin-tools-routing.module#AdminToolsRoutingModule'}, {path: '', loadChildren: () => import('./admin-tools-routing.module').then(m => m.AdminToolsRoutingModule)},
{path: 'portals', loadChildren: '../../openaireLibrary/dashboard/portal/portals.module#PortalsModule'}, {path: 'portals', loadChildren: () => import('../../openaireLibrary/dashboard/portal/portals.module').then(m => m.PortalsModule)},
{path: 'classes', loadChildren: '../../openaireLibrary/dashboard/divId/divIds.module#DivIdsModule'} {path: 'classes', loadChildren: () => import('../../openaireLibrary/dashboard/divId/divIds.module').then(m => m.DivIdsModule)}
])] ])]
}) })
export class PortalAdminToolsRoutingModule { export class PortalAdminToolsRoutingModule {

View File

@ -6,13 +6,13 @@ import {ConnectCommunityGuard} from "../../openaireLibrary/connect/communityGuar
imports: [ imports: [
RouterModule.forChild([ RouterModule.forChild([
{path: '', redirectTo: 'profile', pathMatch: 'full'}, {path: '', redirectTo: 'profile', pathMatch: 'full'},
{path: 'profile', loadChildren: './profile/profile.module#ProfileModule'}, {path: 'profile', loadChildren: () => import('./profile/profile.module').then(m => m.ProfileModule)},
{path: 'organizations', loadChildren: '../affiliations/affiliations.module#AffiliationsModule'}, {path: 'organizations', loadChildren: () => import('../affiliations/affiliations.module').then(m => m.AffiliationsModule)},
{path: 'projects', loadChildren: '../projects/communityProjects.module#CommunityProjectsModule'}, {path: 'projects', loadChildren: () => import('../projects/communityProjects.module').then(m => m.CommunityProjectsModule)},
{path: 'content-providers', loadChildren: '../content-providers/communityContentProviders.module#CommunityContentProvidersModule'}, {path: 'content-providers', loadChildren: () => import('../content-providers/communityContentProviders.module').then(m => m.CommunityContentProvidersModule)},
{path: 'content-providers/:provider', loadChildren: '../content-providers/criteria/criteria.module#CriteriaModule'}, {path: 'content-providers/:provider', loadChildren: () => import('../content-providers/criteria/criteria.module').then(m => m.CriteriaModule)},
{path: 'zenodo-communities', loadChildren: '../zenodo-communities/zenodo-communities.module#ZenodoCommunitiesModule'}, {path: 'zenodo-communities', loadChildren: () => import('../zenodo-communities/zenodo-communities.module').then(m => m.ZenodoCommunitiesModule)},
{path: 'subjects', canActivateChild: [ConnectCommunityGuard], loadChildren: '../subjects/subjects-edit-form/subjects-edit-form.module#SubjectsEditFormModule'}, {path: 'subjects', canActivateChild: [ConnectCommunityGuard], loadChildren: () => import('../subjects/subjects-edit-form/subjects-edit-form.module').then(m => m.SubjectsEditFormModule)},
]) ])
], ],
providers: [ConnectCommunityGuard] providers: [ConnectCommunityGuard]

View File

@ -56,7 +56,7 @@ export class ProfileComponent implements OnInit, OnDestroy {
public properties: EnvProperties = properties; public properties: EnvProperties = properties;
public loading: boolean = false; public loading: boolean = false;
private subscriptions: any[] = []; private subscriptions: any[] = [];
@ViewChild('editCommunityComponent') editCommunityComponent: EditCommunityComponent; @ViewChild('editCommunityComponent', { static: true }) editCommunityComponent: EditCommunityComponent;
constructor(private communityService: CommunityService, constructor(private communityService: CommunityService,
private title: Title) { private title: Title) {

View File

@ -6,31 +6,31 @@ import {ConnectRIGuard} from "../openaireLibrary/connect/communityGuard/connectR
imports: [RouterModule.forChild([ imports: [RouterModule.forChild([
{ {
path: 'info', path: 'info',
loadChildren: './community-info/community-info-routing.module#CommunityInfoRoutingModule', loadChildren: () => import('./community-info/community-info-routing.module').then(m => m.CommunityInfoRoutingModule),
}, },
{ {
path: 'users', path: 'users',
loadChildren: './users/users-routing.module#UsersRoutingModule' loadChildren: () => import('./users/users-routing.module').then(m => m.UsersRoutingModule)
}, },
{ {
path: 'mining', path: 'mining',
loadChildren: './mining/mining.module#MiningModule', loadChildren: () => import('./mining/mining.module').then(m => m.MiningModule),
canActivateChild: [ConnectRIGuard] canActivateChild: [ConnectRIGuard]
}, },
{ {
path: 'admin-tools', path: 'admin-tools',
loadChildren: './admin-tools/admin-tools-routing.module#AdminToolsRoutingModule', loadChildren: () => import('./admin-tools/admin-tools-routing.module').then(m => m.AdminToolsRoutingModule),
data: { data: {
param: 'community' param: 'community'
} }
}, },
{ {
path: 'stats', path: 'stats',
loadChildren: './stats/stats.module#StatsModule' loadChildren: () => import('./stats/stats.module').then(m => m.StatsModule)
}, },
{ {
path: 'customize-layout', path: 'customize-layout',
loadChildren: './customization/customization.module#CustomizationModule', loadChildren: () => import('./customization/customization.module').then(m => m.CustomizationModule),
} }
])] ])]
}) })

View File

@ -44,7 +44,7 @@ import {Subscriber} from "rxjs";
export class ManageContentProvidersComponent implements OnInit { export class ManageContentProvidersComponent implements OnInit {
@Input() communityContentProviders = []; @Input() communityContentProviders = [];
@ViewChild(RemoveContentProvidersComponent) removeContentProvidersComponent: RemoveContentProvidersComponent; @ViewChild(RemoveContentProvidersComponent) removeContentProvidersComponent: RemoveContentProvidersComponent;
@ViewChild('fsModal') fullscreen: FullScreenModalComponent; @ViewChild('fsModal', { static: true }) fullscreen: FullScreenModalComponent;
public toggle: boolean = false; public toggle: boolean = false;

View File

@ -4,19 +4,19 @@ import {Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';
@Component({ @Component({
selector: 'border', selector: 'border',
template: ` template: `
<div class="uk-grid uk-child-width-1-2" > <div class="uk-grid uk-child-width-1-2">
<div class="uk-margin-remove"> <div class="uk-margin-remove">
<div class="uk-text-bold uk-form-label uk-margin-small-bottom"> Border radius (px)</div> <div class="uk-text-bold uk-form-label uk-margin-small-bottom"> Border radius (px)</div>
<!-- <div class="uk-margin-bottom uk-form-hint ">hint</div>--> <!-- <div class="uk-margin-bottom uk-form-hint ">hint</div>-->
<div class="input-box"> <div class="input-box">
<input class="uk-input " [(ngModel)]="radius" (ngModelChange)="borderChanged()" type="number" min="0" /> <input class="uk-input" [(ngModel)]="radius" (input)="borderChanged()" type="number" min="0"/>
</div> </div>
</div> </div>
<div class="uk-margin-remove"> <div class="uk-margin-remove">
<div class="uk-text-bold uk-form-label uk-margin-small-bottom"> Border width (px)</div> <div class="uk-text-bold uk-form-label uk-margin-small-bottom"> Border width (px)</div>
<!-- <div class="uk-margin-bottom uk-form-hint "> hint</div>--> <!-- <div class="uk-margin-bottom uk-form-hint "> hint</div>-->
<div class="input-box"> <div class="input-box">
<input class="uk-input " [(ngModel)]="width" (ngModelChange)="borderChanged()" type="number" min="0" /> <input class="uk-input" [(ngModel)]="width" (input)="borderChanged()" type="number" min="0"/>
</div> </div>
</div> </div>
<div class="uk-margin-small-top"> <div class="uk-margin-small-top">
@ -24,27 +24,25 @@ import {Component, EventEmitter, Input, OnInit, Output,} from '@angular/core';
<!-- <div class="uk-margin-bottom uk-form-hint "> hint</div>--> <!-- <div class="uk-margin-bottom uk-form-hint "> hint</div>-->
<div class="input-box "> <div class="input-box ">
<mat-form-field class="uk-width-1-1"> <mat-form-field class="uk-width-1-1">
<mat-select class="" [(ngModel)]="style" name="{{'select_type_'}}" <mat-select class="" [(ngModel)]="style" name="{{'select_type_'}}"
(ngModelChange)="borderChanged()" (ngModelChange)="borderChanged()"
[disableOptionCentering]="true" [disableOptionCentering]="true"
panelClass=""> panelClass="">
<mat-option [value]="'solid'" >solid</mat-option> <mat-option [value]="'solid'">solid</mat-option>
<mat-option [value]="'dotted'" >dotted</mat-option> <mat-option [value]="'dotted'">dotted</mat-option>
<mat-option [value]="'dashed'" >dashed</mat-option> <mat-option [value]="'dashed'">dashed</mat-option>
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
</div> </div>
</div> </div>
</div> </div>
` `
}) })
export class BorderComponent implements OnInit { export class BorderComponent implements OnInit {
@Input() radius:number =0; @Input() radius: number = 0;
@Input() width:number =0; @Input() width: number = 0;
@Input() style = 'solid'; @Input() style = 'solid';
// @Input() addMargin: boolean = false; // @Input() addMargin: boolean = false;
@Output() borderChange = new EventEmitter(); @Output() borderChange = new EventEmitter();
@ -58,7 +56,8 @@ export class BorderComponent implements OnInit {
} }
borderChanged() { borderChanged() {
this.borderChange.emit({radius:this.radius, width:this.width, style:this.style}); console.log(this.radius);
this.borderChange.emit({radius: this.radius, width: this.width, style: this.style});
} }

View File

@ -8,7 +8,7 @@ import {CustomizationOptions} from '../../openaireLibrary/connect/community/Cust
<div [class]="(addMargin?'uk-margin-small-top':'') + ' colorPicker uk-flex uk-flex-middle'"> <div [class]="(addMargin?'uk-margin-small-top':'') + ' colorPicker uk-flex uk-flex-middle'">
<div class=" uk-flex"> <div class=" uk-flex">
<div class=""> <div class="">
<input id="colorPickerInput" class="uk-margin-small-left uk-width-small " color-picker [colorPicker]="color" [style.background]="color" <input class="uk-margin-small-left uk-width-small" color-picker [colorPicker]="color" [style.background]="color"
(colorPickerChange)="color=$event; colorChanged();"/> (colorPickerChange)="color=$event; colorChanged();"/>
</div> </div>
<div class="uk-margin-small-left"> {{label}}</div> <div class="uk-margin-small-left"> {{label}}</div>

View File

@ -16,7 +16,9 @@ import {PageContentModule} from '../../openaireLibrary/dashboard/sharedComponent
import {QuickLookComponent} from './quickLook.component'; import {QuickLookComponent} from './quickLook.component';
import {QuickLookBackgroundsComponent} from './quickLook-backgrounds.component'; import {QuickLookBackgroundsComponent} from './quickLook-backgrounds.component';
import {QuickLookButtonsComponent} from './quickLook-buttons.component'; import {QuickLookButtonsComponent} from './quickLook-buttons.component';
import {MatFormFieldModule, MatSelectModule, MatSlideToggleModule} from '@angular/material'; import { MatFormFieldModule } from '@angular/material/form-field';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import {CustomizeButtonsComponent} from './customize-buttons.component'; import {CustomizeButtonsComponent} from './customize-buttons.component';
import {IconsModule} from '../../openaireLibrary/utils/icons/icons.module'; import {IconsModule} from '../../openaireLibrary/utils/icons/icons.module';
import {IconsService} from '../../openaireLibrary/utils/icons/icons.service'; import {IconsService} from '../../openaireLibrary/utils/icons/icons.service';

View File

@ -8,7 +8,9 @@ import {Subscription} from "rxjs";
template: ` template: `
<div page-content> <div page-content>
<div inner> <div inner>
<router-outlet></router-outlet> <div class="mining">
<router-outlet></router-outlet>
</div>
</div> </div>
</div> </div>
` `

View File

@ -10,7 +10,7 @@ import {PageContentModule} from "../../openaireLibrary/dashboard/sharedComponent
RouterModule.forChild([ RouterModule.forChild([
{ {
path: '', component: MiningComponent, children: [ path: '', component: MiningComponent, children: [
{path: '', loadChildren: './mining-routing.module#MiningRoutingModule'} {path: '', loadChildren: () => import('./mining-routing.module').then(m => m.MiningRoutingModule)}
] ]
} }
]), ]),

View File

@ -43,7 +43,7 @@ import {Subscriber} from "rxjs";
export class ManageProjectsComponent implements OnInit { export class ManageProjectsComponent implements OnInit {
@Input() communityProjects = []; @Input() communityProjects = [];
@ViewChild(RemoveProjectsComponent) removeProjectsComponent: RemoveProjectsComponent; @ViewChild(RemoveProjectsComponent) removeProjectsComponent: RemoveProjectsComponent;
@ViewChild('fsModal') fullscreen: FullScreenModalComponent; @ViewChild('fsModal', { static: true }) fullscreen: FullScreenModalComponent;
public toggle: boolean = false; public toggle: boolean = false;
@ -69,11 +69,10 @@ export class ManageProjectsComponent implements OnInit {
this.body = "[Please write your message here]"; this.body = "[Please write your message here]";
this.body = StringUtils.URIEncode(this.body); this.body = StringUtils.URIEncode(this.body);
} }
this.fullscreen.title = "Search and Add Projects";
this.fullscreen.okButtonText = "Done";
this.fullscreen.okButton = true;
})); }));
this.fullscreen.title = "Search and Add Projects";
this.fullscreen.okButtonText = "Done";
this.fullscreen.okButton = true;
} }
public ngOnDestroy() { public ngOnDestroy() {

View File

@ -3,7 +3,7 @@ import {RouterModule} from '@angular/router';
import {CommonModule} from '@angular/common'; import {CommonModule} from '@angular/common';
import {StatsComponent} from './stats.component'; import {StatsComponent} from './stats.component';
import {StatsRoutingModule} from './stats-routing.module'; import {StatsRoutingModule} from './stats-routing.module';
import {MatSlideToggleModule} from '@angular/material'; import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@NgModule({ @NgModule({
imports: [ imports: [

View File

@ -6,14 +6,13 @@ import {SubjectsService} from '../subjects.service';
import {EnvProperties} from '../../../openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from '../../../openaireLibrary/utils/properties/env-properties';
import {Session} from '../../../openaireLibrary/login/utils/helper.class'; import {Session} from '../../../openaireLibrary/login/utils/helper.class';
import {LoginErrorCodes} from '../../../openaireLibrary/login/utils/guardHelper.class'; import {LoginErrorCodes} from '../../../openaireLibrary/login/utils/guardHelper.class';
import {concat} from 'rxjs/observable/concat';
import {Title} from '@angular/platform-browser'; import {Title} from '@angular/platform-browser';
import {properties} from '../../../../environments/environment'; import {properties} from '../../../../environments/environment';
import {AlertModal} from '../../../openaireLibrary/utils/modal/alert'; import {AlertModal} from '../../../openaireLibrary/utils/modal/alert';
import {SearchInputComponent} from '../../../openaireLibrary/sharedComponents/search-input/search-input.component'; import {SearchInputComponent} from '../../../openaireLibrary/sharedComponents/search-input/search-input.component';
import {Subscription} from 'rxjs'; import {Subscription, zip} from 'rxjs';
import {CommunityInfo} from '../../../openaireLibrary/connect/community/communityInfo'; import {CommunityInfo} from '../../../openaireLibrary/connect/community/communityInfo';
import {concat} from 'rxjs/operators';
declare var UIkit; declare var UIkit;
@ -156,17 +155,13 @@ export class SubjectsEditFormComponent implements OnInit {
const subjectsToDelete = this.getNonEmptyItems(subjectsToDeleteAr); const subjectsToDelete = this.getNonEmptyItems(subjectsToDeleteAr);
const subjectsToAdd = this.getNonEmptyItems(subjectsToAddAr); const subjectsToAdd = this.getNonEmptyItems(subjectsToAddAr);
if (subjectsToAdd.length > 0 && subjectsToDelete.length > 0) { if (subjectsToAdd.length > 0 && subjectsToDelete.length > 0) {
const obs = concat(this._subjectsService.addSubjects( this.subscriptions.push(this._subjectsService.removeSubjects(
this.properties.communityAPI + this.communityId + '/subjects', subjectsToAdd), this.properties.communityAPI + this.communityId + '/subjects', subjectsToDelete).subscribe(res =>{
this._subjectsService.removeSubjects( this.subscriptions.push(this._subjectsService.addSubjects(
this.properties.communityAPI + this.communityId + '/subjects', subjectsToDelete)); this.properties.communityAPI + this.communityId + '/subjects', subjectsToAdd).subscribe(res => {
this.subscriptions.push(obs.subscribe(res => { this.afterUpdateActions(res, "added");
if (res['method'] === 'delete') { }));
this.afterUpdateActions(res, "updated"); }));
}
},
error => this.handleUpdateError('System error updating subjects', error)
));
} else if (subjectsToAdd.length > 0) { } else if (subjectsToAdd.length > 0) {
this.subscriptions.push(this._subjectsService.addSubjects( this.subscriptions.push(this._subjectsService.addSubjects(
this.properties.communityAPI + this.communityId + '/subjects', subjectsToAdd).subscribe(res => { this.properties.communityAPI + this.communityId + '/subjects', subjectsToAdd).subscribe(res => {

View File

@ -9,7 +9,8 @@ import {MailPrefsModule} from '../../openaireLibrary/connect/userEmailPreference
import {ManageUserNotificationsRoutingModule} from './manage-user-notifications-routing.module'; import {ManageUserNotificationsRoutingModule} from './manage-user-notifications-routing.module';
import {UsersTabsModule} from '../users/users-tabs.module'; import {UsersTabsModule} from '../users/users-tabs.module';
import {PageContentModule} from '../../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module'; import {PageContentModule} from '../../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module';
import {MatSelectModule, MatSlideToggleModule} from '@angular/material'; import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import {LoadingModule} from '../../openaireLibrary/utils/loading/loading.module'; import {LoadingModule} from '../../openaireLibrary/utils/loading/loading.module';
import {SharedModule} from '../../openaireLibrary/shared/shared.module'; import {SharedModule} from '../../openaireLibrary/shared/shared.module';

View File

@ -5,14 +5,14 @@ import {RouterModule} from '@angular/router';
imports: [ imports: [
RouterModule.forChild([ RouterModule.forChild([
{path: '', redirectTo: 'managers', pathMatch: 'full'}, {path: '', redirectTo: 'managers', pathMatch: 'full'},
{path: 'managers', loadChildren: './users-managers/users-managers.module#UsersManagersModule'}, {path: 'managers', loadChildren: () => import('./users-managers/users-managers.module').then(m => m.UsersManagersModule)},
{path: 'subscribers', loadChildren: './users-subscribers/users-subscribers.module#UsersSubscribersModule'}, {path: 'subscribers', loadChildren: () => import('./users-subscribers/users-subscribers.module').then(m => m.UsersSubscribersModule)},
{ {
path: 'notifications', path: 'notifications',
loadChildren: '../usernotifications/manage-user-notifications.module#ManageUserNotificationsModule' loadChildren: () => import('../usernotifications/manage-user-notifications.module').then(m => m.ManageUserNotificationsModule)
}, },
{path: 'claims', loadChildren: '../claims/claims.module#ClaimsModule'}, {path: 'claims', loadChildren: () => import('../claims/claims.module').then(m => m.ClaimsModule)},
{path: 'personal', loadChildren: './personal-info/personal-info.module#PersonalInfoModule'} {path: 'personal', loadChildren: () => import('./personal-info/personal-info.module').then(m => m.PersonalInfoModule)}
]) ])
] ]
}) })

View File

@ -58,7 +58,7 @@ export class ZenodoCommunitiesComponent implements OnInit, OnDestroy {
zenodoSearchUtils: SearchUtilsClass = new SearchUtilsClass(); zenodoSearchUtils: SearchUtilsClass = new SearchUtilsClass();
public errorCodes: ErrorCodes = new ErrorCodes(); public errorCodes: ErrorCodes = new ErrorCodes();
subscriptions = []; subscriptions = [];
@ViewChild('fsModal') fullscreen: FullScreenModalComponent; @ViewChild('fsModal', { static: true }) fullscreen: FullScreenModalComponent;
@ViewChild('manage') manage: ManageZenodoCommunitiesComponent; @ViewChild('manage') manage: ManageZenodoCommunitiesComponent;
constructor(private element: ElementRef, private route: ActivatedRoute, private _router: Router, constructor(private element: ElementRef, private route: ActivatedRoute, private _router: Router,
@ -122,8 +122,6 @@ export class ZenodoCommunitiesComponent implements OnInit, OnDestroy {
this.fullscreen.title = "Search and Add Zenodo Communities"; this.fullscreen.title = "Search and Add Zenodo Communities";
this.fullscreen.okButtonText = "Done"; this.fullscreen.okButtonText = "Done";
this.fullscreen.okButton = true; this.fullscreen.okButton = true;
} }
ngOnDestroy() { ngOnDestroy() {

View File

@ -1,49 +0,0 @@
/**
* Created by stefanos on 25/4/2017.
*/
// Polyfills
// import 'ie-shim'; // Internet Explorer 9 support
import 'reflect-metadata';
// import 'core-js/es6';
// Added parts of es6 which are necessary for your project or your browser support requirements.
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/set';
import 'core-js/es6/weak-map';
import 'core-js/es6/weak-set';
import 'core-js/es6/typed';
import 'core-js/es6/reflect';
// see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709
// import 'core-js/es6/promise';
import 'intl';
import 'intl/locale-data/jsonp/en';
import 'core-js/es7/reflect';
import 'zone.js/dist/zone';
// import 'ng2-ckeditor/lib';
// if ('production' === ENV) {
// // Production
//
// } else {
//
// // Development
// Error.stackTraceLimit = Infinity;
//
// /* tslint:disable no-var-requires */
// require('zone.js/dist/long-stack-trace-zone');
//
// }

View File

@ -1,20 +1,19 @@
/** /**
* Created by stefania on 7/13/17. * Created by stefania on 7/13/17.
*/ */
import { Injectable } from '@angular/core'; import {Injectable} from '@angular/core';
import {HttpClient, HttpErrorResponse, HttpHeaders} from "@angular/common/http"; import {HttpClient, HttpErrorResponse} from '@angular/common/http';
import {Observable, Subscription} from 'rxjs'; import {Observable, throwError} from 'rxjs';
import { Page } from "../domain/page"; import {Page} from '../domain/page';
import { PageHelpContent } from "../domain/page-help-content"; import {PageHelpContent} from '../domain/page-help-content';
import { Portal } from "../domain/portal"; import {Portal} from '../domain/portal';
import { Entity } from "../domain/entity"; import {Entity} from '../domain/entity';
import { DivId } from "../domain/divId"; import {DivId} from '../domain/divId';
import { DivHelpContent } from "../domain/div-help-content"; import {DivHelpContent} from '../domain/div-help-content';
import {StatisticsDisplay, StatisticsSummary} from '../openaireLibrary/connect/statistics/statisticsEntities'; import {StatisticsDisplay, StatisticsSummary} from '../openaireLibrary/connect/statistics/statisticsEntities';
import { CustomOptions } from '../openaireLibrary/services/servicesUtils/customOptions.class'; import {CustomOptions} from '../openaireLibrary/services/servicesUtils/customOptions.class';
import {catchError, map} from "rxjs/operators"; import {catchError, map} from 'rxjs/operators';
import {COOKIE} from "../openaireLibrary/login/utils/helper.class"; import {properties} from '../../environments/environment';
import {properties} from "../../environments/environment";
@Injectable() @Injectable()
@ -426,7 +425,7 @@ export class HelpContentService {
// in a real world app, we may send the error to some remote logging infrastructure // in a real world app, we may send the error to some remote logging infrastructure
// instead of just logging it to the console // instead of just logging it to the console
console.error(error); console.error(error);
return Observable.throw(error.error || 'Server error'); return throwError(error.error || 'Server error');
} }
// getDataProviders() { // getDataProviders() {

View File

@ -2,7 +2,7 @@ import {Injectable} from '@angular/core';
import {HttpClient, HttpHeaders} from '@angular/common/http'; import {HttpClient, HttpHeaders} from '@angular/common/http';
import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties'; import {EnvProperties} from '../openaireLibrary/utils/properties/env-properties';
import {ContentProvider} from '../openaireLibrary/utils/entities/contentProvider'; import {ContentProvider} from '../openaireLibrary/utils/entities/contentProvider';
import {Observable} from 'rxjs/Observable'; import {Observable} from 'rxjs';
@Injectable() @Injectable()
export class ManageCommunityContentProvidersService { export class ManageCommunityContentProvidersService {

View File

@ -12,20 +12,21 @@ module.exports = function (config) {
require('karma-coverage-istanbul-reporter'), require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma') require('@angular-devkit/build-angular/plugins/karma')
], ],
client:{ client: {
clearContext: false // leave Jasmine Spec Runner output visible in browser clearContext: false // leave Jasmine Spec Runner output visible in browser
}, },
coverageIstanbulReporter: { coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], dir: require('path').join(__dirname, '../coverage/connect-admin'),
reports: ['html', 'lcovonly', 'text-summary'],
fixWebpackSourcePaths: true fixWebpackSourcePaths: true
}, },
reporters: ['progress', 'kjhtml'], reporters: ['progress', 'kjhtml'],
port: 9876, port: 9876,
colors: true, colors: true,
logLevel: config.LOG_INFO, logLevel: config.LOG_INFO,
autoWatch: true, autoWatch: true,
browsers: ['Chrome'], browsers: ['Chrome'],
singleRun: false singleRun: false,
restartOnFileChange: true
}); });
}; };

View File

@ -8,4 +8,5 @@ if (properties.environment !== "development") {
enableProdMode(); enableProdMode();
} }
platformBrowserDynamic().bootstrapModule(AppModule); platformBrowserDynamic().bootstrapModule(AppModule)
.catch(err => console.error(err));

8
src/mining.scss Normal file
View File

@ -0,0 +1,8 @@
@use "sass:meta";
@import "~interactiveminingv3/assets/css/variables.css";
.mining {
@include meta.load-css("node_modules/interactiveminingv3/assets/css/interactive-mining.css");
@include meta.load-css("node_modules/interactiveminingv3/assets/css/animations.css");
}

View File

@ -1,3 +1,7 @@
/***************************************************************************************************
* Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
*/
import '@angular/localize/init';
/** /**
* This file includes polyfills needed by Angular and is loaded before the app. * This file includes polyfills needed by Angular and is loaded before the app.
* You can add your own extra polyfills to this file. * You can add your own extra polyfills to this file.
@ -11,61 +15,53 @@
* automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
* Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. * 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 * Learn more in https://angular.io/guide/browser-support
*/ */
/*************************************************************************************************** /***************************************************************************************************
* BROWSER POLYFILLS * 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 */ /** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`. // import 'classlist.js'; // Run `npm install --save classlist.js`.
/** Evergreen browsers require these. **/
import 'core-js/es6/reflect';
/** /**
* Required to support Web Animations `@angular/animation`. * Web Animations `@angular/platform-browser/animations`
* Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
**/ * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
*/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`. // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
* because those flags need to be set before `zone.js` being loaded, and webpack
* will put import in the top of bundle, so user need to create a separate file
* in this directory (for example: zone-flags.ts), and put the following flags
* into that file, and then add the following code before importing zone.js.
* import './zone-flags.ts';
*
* The flags allowed in zone-flags.ts are listed here.
*
* The following flags will work for all browsers.
*
* (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
* (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
* (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*
* (window as any).__Zone_enable_cross_context_check = true;
*
*/
/*************************************************************************************************** /***************************************************************************************************
* Zone JS is required by Angular itself. * Zone JS is required by default for Angular itself.
*/ */
import 'zone.js/dist/zone'; // Included with Angular CLI. import 'zone.js/dist/zone'; // Included with Angular CLI.
/*************************************************************************************************** /***************************************************************************************************
* APPLICATION IMPORTS * 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';

View File

@ -4,4 +4,3 @@
@import "assets/common-assets/library.css"; @import "assets/common-assets/library.css";
@import "assets/dashboard-theme/main.css"; @import "assets/dashboard-theme/main.css";
@import "assets/css/connect-custom.css"; @import "assets/css/connect-custom.css";

View File

@ -1,24 +1,14 @@
// This file is required by karma.conf.js and loads recursively all the .spec and framework files // This file is required by karma.conf.js and loads recursively all the .spec and framework files
import 'zone.js/dist/long-stack-trace-zone'; import 'zone.js/dist/zone-testing';
import 'zone.js/dist/proxy.js';
import 'zone.js/dist/sync-test';
import 'zone.js/dist/jasmine-patch';
import 'zone.js/dist/async-test';
import 'zone.js/dist/fake-async-test';
import { getTestBed } from '@angular/core/testing'; import { getTestBed } from '@angular/core/testing';
import { import {
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
platformBrowserDynamicTesting platformBrowserDynamicTesting
} from '@angular/platform-browser-dynamic/testing'; } from '@angular/platform-browser-dynamic/testing';
// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
declare const __karma__: any;
declare const require: any; declare const require: any;
// Prevent Karma from running prematurely.
__karma__.loaded = function () {};
// First, initialize the Angular testing environment. // First, initialize the Angular testing environment.
getTestBed().initTestEnvironment( getTestBed().initTestEnvironment(
BrowserDynamicTestingModule, BrowserDynamicTestingModule,
@ -28,5 +18,3 @@ getTestBed().initTestEnvironment(
const context = require.context('./', true, /\.spec\.ts$/); const context = require.context('./', true, /\.spec\.ts$/);
// And load the modules. // And load the modules.
context.keys().map(context); context.keys().map(context);
// Finally, start Karma to run the tests.
__karma__.start();

View File

@ -1,23 +1,14 @@
{ {
"extends": "../tsconfig.json", "extends": "../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"paths": {
"*": [
"types/*"
]
},
"paths": {
"*": [
"types/*"
]
},
"outDir": "../out-tsc/app", "outDir": "../out-tsc/app",
"baseUrl": "./", "types": []
"module": "es2015",
"types": ["node"]
}, },
"exclude": [ "files": [
"test.ts", "main.ts",
"**/*.spec.ts" "polyfills.ts"
],
"include": [
"src/**/*.d.ts"
] ]
} }

View File

@ -2,9 +2,6 @@
"extends": "../tsconfig.json", "extends": "../tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "../out-tsc/spec", "outDir": "../out-tsc/spec",
"baseUrl": "./",
"module": "commonjs",
"target": "es5",
"types": [ "types": [
"jasmine", "jasmine",
"node" "node"

5
src/typings.d.ts vendored
View File

@ -1,5 +0,0 @@
/* SystemJS module definition */
declare var module: NodeModule;
interface NodeModule {
id: string;
}

View File

@ -1,22 +1,23 @@
{ {
"compileOnSave": false, "compileOnSave": false,
"compilerOptions": { "compilerOptions": {
"importHelpers": true, "baseUrl": "./",
"downlevelIteration": true,
"outDir": "./dist/out-tsc", "outDir": "./dist/out-tsc",
"sourceMap": true, "sourceMap": true,
"declaration": false, "declaration": false,
"module": "es2020",
"moduleResolution": "node", "moduleResolution": "node",
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"target": "es5", "importHelpers": true,
"target": "es2015",
"typeRoots": [ "typeRoots": [
"node_modules/@types" "node_modules/@types"
], ],
"lib": [ "lib": [
"es2017", "es2018",
"dom" "dom"
], ]
"module": "es2015",
"baseUrl": "./"
} }
} }

View File

@ -1,141 +0,0 @@
{
"rulesDirectory": [
"node_modules/codelyzer"
],
"rules": {
"arrow-return-shorthand": true,
"callable-types": true,
"class-name": true,
"comment-format": [
true,
"check-space"
],
"curly": true,
"eofline": true,
"forin": true,
"import-blacklist": [
true
],
"import-spacing": true,
"indent": [
true,
"spaces"
],
"interface-over-type-literal": true,
"label-position": true,
"max-line-length": [
true,
140
],
"member-access": false,
"member-ordering": [
true,
{
"order": [
"static-field",
"instance-field",
"static-method",
"instance-method"
]
}
],
"no-arg": true,
"no-bitwise": true,
"no-console": [
true,
"debug",
"info",
"time",
"timeEnd",
"trace"
],
"no-construct": true,
"no-debugger": true,
"no-duplicate-super": true,
"no-empty": false,
"no-empty-interface": true,
"no-eval": true,
"no-inferrable-types": [
true,
"ignore-params"
],
"no-misused-new": true,
"no-non-null-assertion": true,
"no-shadowed-variable": true,
"no-string-literal": false,
"no-string-throw": true,
"no-switch-case-fall-through": true,
"no-trailing-whitespace": true,
"no-unnecessary-initializer": true,
"no-unused-expression": true,
"no-use-before-declare": true,
"no-var-keyword": true,
"object-literal-sort-keys": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
"check-whitespace"
],
"prefer-const": true,
"quotemark": [
true,
"single"
],
"radix": true,
"semicolon": [
true,
"always"
],
"triple-equals": [
true,
"allow-null-check"
],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"typeof-compare": true,
"unified-signatures": true,
"variable-name": false,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
],
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
"component-selector": [
true,
"element",
"app",
"kebab-case"
],
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-host-property-decorator": true,
"no-input-rename": true,
"no-output-rename": true,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true,
"no-access-missing-member": true,
"templates-use-public": true,
"invoke-injectable": true
}
}