Revision 61360
Added by Antonis Lempesis almost 3 years ago
modules/uoa-repository-dashboard-gui/trunk/package.json | ||
---|---|---|
1 |
{ |
|
2 |
"name": "uoa-repository-manager-ui", |
|
3 |
"version": "0.0.0", |
|
4 |
"scripts": { |
|
5 |
"ng": "ng", |
|
6 |
"start": "ng serve", |
|
7 |
"start:proxy": "ng serve --proxy-config proxy.conf.json", |
|
8 |
"build": "rm -rf dist; ng build --prod", |
|
9 |
"test": "ng test", |
|
10 |
"lint": "ng lint", |
|
11 |
"e2e": "ng e2e" |
|
12 |
}, |
|
13 |
"private": true, |
|
14 |
"dependencies": { |
|
15 |
"@angular/animations": "^6.0.3", |
|
16 |
"@angular/common": "^6.0.3", |
|
17 |
"@angular/compiler": "^6.0.3", |
|
18 |
"@angular/core": "^6.0.3", |
|
19 |
"@angular/forms": "^6.0.3", |
|
20 |
"@angular/http": "^6.0.3", |
|
21 |
"@angular/platform-browser": "^6.0.3", |
|
22 |
"@angular/platform-browser-dynamic": "^6.0.3", |
|
23 |
"@angular/router": "^6.0.3", |
|
24 |
"angular2-cookie-law": "^6.0.4", |
|
25 |
"bootstrap": "^4.1.3", |
|
26 |
"core-js": "^2.5.4", |
|
27 |
"jquery": "^3.3.1", |
|
28 |
"ngx-bootstrap": "^3.0.1", |
|
29 |
"ngx-matomo": "^0.1.2", |
|
30 |
"rxjs": "6.3.3", |
|
31 |
"uikit": "^3.0.0-rc.19", |
|
32 |
"zone.js": "^0.8.26" |
|
33 |
}, |
|
34 |
"devDependencies": { |
|
35 |
"@angular-devkit/build-angular": "~0.6.8", |
|
36 |
"@angular/cli": "~6.0.8", |
|
37 |
"@angular/compiler-cli": "^6.0.3", |
|
38 |
"@angular/language-service": "^6.0.3", |
|
39 |
"@types/jasmine": "~2.8.6", |
|
40 |
"@types/jasminewd2": "~2.0.3", |
|
41 |
"@types/node": "~8.9.4", |
|
42 |
"codelyzer": "~4.2.1", |
|
43 |
"jasmine-core": "~2.99.1", |
|
44 |
"jasmine-spec-reporter": "~4.2.1", |
|
45 |
"karma": "~4.0.0", |
|
46 |
"karma-chrome-launcher": "~2.2.0", |
|
47 |
"karma-coverage-istanbul-reporter": "~2.0.0", |
|
48 |
"karma-jasmine": "~1.1.1", |
|
49 |
"karma-jasmine-html-reporter": "^0.2.2", |
|
50 |
"protractor": "^5.4.1", |
|
51 |
"ts-node": "~5.0.1", |
|
52 |
"tslint": "~5.9.1", |
|
53 |
"typescript": "~2.7.2" |
|
54 |
} |
|
55 |
} |
|
56 | 0 |
modules/uoa-repository-dashboard-gui/trunk/tsconfig.json | ||
---|---|---|
1 |
{ |
|
2 |
"compileOnSave": false, |
|
3 |
"compilerOptions": { |
|
4 |
"baseUrl": "./", |
|
5 |
"outDir": "./dist/out-tsc", |
|
6 |
"sourceMap": true, |
|
7 |
"declaration": false, |
|
8 |
"moduleResolution": "node", |
|
9 |
"emitDecoratorMetadata": true, |
|
10 |
"experimentalDecorators": true, |
|
11 |
"target": "es5", |
|
12 |
"typeRoots": [ |
|
13 |
"node_modules/@types" |
|
14 |
], |
|
15 |
"lib": [ |
|
16 |
"es2017", |
|
17 |
"dom" |
|
18 |
] |
|
19 |
} |
|
20 |
} |
|
21 | 0 |
modules/uoa-repository-dashboard-gui/trunk/.gitignore | ||
---|---|---|
1 |
# Logs |
|
2 |
logs |
|
3 |
*.log |
|
4 |
|
|
5 |
# Runtime data |
|
6 |
pids |
|
7 |
*.pid |
|
8 |
*.seed |
|
9 |
|
|
10 |
# Directory for instrumented libs generated by jscoverage/JSCover |
|
11 |
lib-cov |
|
12 |
|
|
13 |
# Coverage directory used by tools like istanbul |
|
14 |
coverage |
|
15 |
|
|
16 |
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) |
|
17 |
.grunt |
|
18 |
|
|
19 |
# Compiled binary addons (http://nodejs.org/api/addons.html) |
|
20 |
build/Release |
|
21 |
|
|
22 |
# Users Environment Variables |
|
23 |
.lock-wscript |
|
24 |
|
|
25 |
# OS generated files # |
|
26 |
.DS_Store |
|
27 |
ehthumbs.db |
|
28 |
Icon? |
|
29 |
Thumbs.db |
|
30 |
|
|
31 |
# Node Files # |
|
32 |
/node_modules |
|
33 |
/bower_components |
|
34 |
|
|
35 |
# Coverage # |
|
36 |
/coverage/ |
|
37 |
|
|
38 |
# Typing # |
|
39 |
/src/typings/tsd/ |
|
40 |
/typings/ |
|
41 |
/tsd_typings/ |
|
42 |
|
|
43 |
# Dist # |
|
44 |
/dist |
|
45 |
/public/__build__/ |
|
46 |
/src/*/__build__/ |
|
47 |
__build__/** |
|
48 |
.webpack.json |
|
49 |
|
|
50 |
# Doc # |
|
51 |
/doc/ |
|
52 |
|
|
53 |
# IDE # |
|
54 |
.idea/ |
|
55 |
*.swp |
modules/uoa-repository-dashboard-gui/trunk/tslint.json | ||
---|---|---|
1 |
{ |
|
2 |
"rulesDirectory": [ |
|
3 |
"node_modules/codelyzer" |
|
4 |
], |
|
5 |
"rules": { |
|
6 |
"arrow-return-shorthand": true, |
|
7 |
"callable-types": true, |
|
8 |
"class-name": true, |
|
9 |
"comment-format": [ |
|
10 |
true, |
|
11 |
"check-space" |
|
12 |
], |
|
13 |
"curly": true, |
|
14 |
"deprecation": { |
|
15 |
"severity": "warn" |
|
16 |
}, |
|
17 |
"eofline": true, |
|
18 |
"forin": true, |
|
19 |
"import-blacklist": [ |
|
20 |
true, |
|
21 |
"rxjs/Rx" |
|
22 |
], |
|
23 |
"import-spacing": true, |
|
24 |
"indent": [ |
|
25 |
true, |
|
26 |
"spaces" |
|
27 |
], |
|
28 |
"interface-over-type-literal": true, |
|
29 |
"label-position": true, |
|
30 |
"max-line-length": [ |
|
31 |
true, |
|
32 |
140 |
|
33 |
], |
|
34 |
"member-access": false, |
|
35 |
"member-ordering": [ |
|
36 |
true, |
|
37 |
{ |
|
38 |
"order": [ |
|
39 |
"static-field", |
|
40 |
"instance-field", |
|
41 |
"static-method", |
|
42 |
"instance-method" |
|
43 |
] |
|
44 |
} |
|
45 |
], |
|
46 |
"no-arg": true, |
|
47 |
"no-bitwise": true, |
|
48 |
"no-console": [ |
|
49 |
true, |
|
50 |
"debug", |
|
51 |
"info", |
|
52 |
"time", |
|
53 |
"timeEnd", |
|
54 |
"trace" |
|
55 |
], |
|
56 |
"no-construct": true, |
|
57 |
"no-debugger": true, |
|
58 |
"no-duplicate-super": true, |
|
59 |
"no-empty": false, |
|
60 |
"no-empty-interface": true, |
|
61 |
"no-eval": true, |
|
62 |
"no-inferrable-types": [ |
|
63 |
true, |
|
64 |
"ignore-params" |
|
65 |
], |
|
66 |
"no-misused-new": true, |
|
67 |
"no-non-null-assertion": true, |
|
68 |
"no-shadowed-variable": true, |
|
69 |
"no-string-literal": false, |
|
70 |
"no-string-throw": true, |
|
71 |
"no-switch-case-fall-through": true, |
|
72 |
"no-trailing-whitespace": true, |
|
73 |
"no-unnecessary-initializer": true, |
|
74 |
"no-unused-expression": true, |
|
75 |
"no-use-before-declare": true, |
|
76 |
"no-var-keyword": true, |
|
77 |
"object-literal-sort-keys": false, |
|
78 |
"one-line": [ |
|
79 |
true, |
|
80 |
"check-open-brace", |
|
81 |
"check-catch", |
|
82 |
"check-else", |
|
83 |
"check-whitespace" |
|
84 |
], |
|
85 |
"prefer-const": true, |
|
86 |
"quotemark": [ |
|
87 |
true, |
|
88 |
"single" |
|
89 |
], |
|
90 |
"radix": true, |
|
91 |
"semicolon": [ |
|
92 |
true, |
|
93 |
"always" |
|
94 |
], |
|
95 |
"triple-equals": [ |
|
96 |
true, |
|
97 |
"allow-null-check" |
|
98 |
], |
|
99 |
"typedef-whitespace": [ |
|
100 |
true, |
|
101 |
{ |
|
102 |
"call-signature": "nospace", |
|
103 |
"index-signature": "nospace", |
|
104 |
"parameter": "nospace", |
|
105 |
"property-declaration": "nospace", |
|
106 |
"variable-declaration": "nospace" |
|
107 |
} |
|
108 |
], |
|
109 |
"unified-signatures": true, |
|
110 |
"variable-name": false, |
|
111 |
"whitespace": [ |
|
112 |
true, |
|
113 |
"check-branch", |
|
114 |
"check-decl", |
|
115 |
"check-operator", |
|
116 |
"check-separator", |
|
117 |
"check-type" |
|
118 |
], |
|
119 |
"no-output-on-prefix": true, |
|
120 |
"use-input-property-decorator": true, |
|
121 |
"use-output-property-decorator": true, |
|
122 |
"use-host-property-decorator": true, |
|
123 |
"no-input-rename": true, |
|
124 |
"no-output-rename": true, |
|
125 |
"use-life-cycle-interface": true, |
|
126 |
"use-pipe-transform-interface": true, |
|
127 |
"component-class-suffix": true, |
|
128 |
"directive-class-suffix": true |
|
129 |
} |
|
130 |
} |
|
131 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/index.html | ||
---|---|---|
1 |
<!doctype html> |
|
2 |
<html lang="en"> |
|
3 |
<head> |
|
4 |
<meta charset="utf-8"> |
|
5 |
<title>OpenAIRE's Repository Manager</title> |
|
6 |
<base href="/"> |
|
7 |
|
|
8 |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|
9 |
<link rel="icon" type="image/x-icon" href="favicon.ico"> |
|
10 |
|
|
11 |
|
|
12 |
<!-- Animation CSS --> |
|
13 |
<link type="text/css" href="assets/css/animate.css" rel="stylesheet"> |
|
14 |
<link type="text/css" href="assets/css/font-awesome/css/font-awesome.min.css" rel="stylesheet"> |
|
15 |
<link type="text/css" href="assets/css/plugins/steps/jquery.steps.css" rel="stylesheet"> |
|
16 |
|
|
17 |
|
|
18 |
<link type="text/css" href="assets/css/fonts/yanonekaffeesatz.css" rel="stylesheet"> |
|
19 |
|
|
20 |
<!-- stylesheets --> |
|
21 |
<link type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> |
|
22 |
|
|
23 |
<link type="text/css" rel="stylesheet" href="assets/css/theme.css"> |
|
24 |
|
|
25 |
<link type="text/css" rel="stylesheet" href="assets/css/RepositoryManager.css"> |
|
26 |
<link type="text/css" rel="stylesheet" href="assets/css/custom.css"> |
|
27 |
<link type="text/css" rel="stylesheet" href="assets/css/custom-provide.css"> |
|
28 |
|
|
29 |
<link type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans|Roboto|Roboto+Condensed" rel="stylesheet"> |
|
30 |
|
|
31 |
<script src="dist/polyfills.bundle.js"></script> |
|
32 |
<script src="https://code.jquery.com/jquery-3.2.1.min.js" |
|
33 |
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> |
|
34 |
|
|
35 |
<script src="assets/js/uikit-3/js/uikit.min.js"></script> |
|
36 |
<script src="assets/js/theme.js"></script> |
|
37 |
|
|
38 |
<!--NEW FONT AWESOME--> |
|
39 |
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" |
|
40 |
integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> |
|
41 |
|
|
42 |
</head> |
|
43 |
<body> |
|
44 |
|
|
45 |
<!-- RECOMMENDED if your web app will not function without JavaScript enabled --> |
|
46 |
<noscript> |
|
47 |
<div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"> |
|
48 |
Your web browser must have JavaScript enabled |
|
49 |
in order for this application to display correctly. |
|
50 |
</div> |
|
51 |
</noscript> |
|
52 |
|
|
53 |
<oa-repo-manager> |
|
54 |
<div uk-spinner="ratio: 2" class="uk-overlay uk-position-center uk-dark" style="margin: auto"></div> |
|
55 |
</oa-repo-manager> |
|
56 |
|
|
57 |
</body> |
|
58 |
</html> |
|
59 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/karma.conf.js | ||
---|---|---|
1 |
// Karma configuration file, see link for more information |
|
2 |
// https://karma-runner.github.io/1.0/config/configuration-file.html |
|
3 |
|
|
4 |
module.exports = function (config) { |
|
5 |
config.set({ |
|
6 |
basePath: '', |
|
7 |
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|
8 |
plugins: [ |
|
9 |
require('karma-jasmine'), |
|
10 |
require('karma-chrome-launcher'), |
|
11 |
require('karma-jasmine-html-reporter'), |
|
12 |
require('karma-coverage-istanbul-reporter'), |
|
13 |
require('@angular-devkit/build-angular/plugins/karma') |
|
14 |
], |
|
15 |
client: { |
|
16 |
clearContext: false // leave Jasmine Spec Runner output visible in browser |
|
17 |
}, |
|
18 |
coverageIstanbulReporter: { |
|
19 |
dir: require('path').join(__dirname, '../coverage'), |
|
20 |
reports: ['html', 'lcovonly'], |
|
21 |
fixWebpackSourcePaths: true |
|
22 |
}, |
|
23 |
reporters: ['progress', 'kjhtml'], |
|
24 |
port: 9876, |
|
25 |
colors: true, |
|
26 |
logLevel: config.LOG_INFO, |
|
27 |
autoWatch: true, |
|
28 |
browsers: ['Chrome'], |
|
29 |
singleRun: false |
|
30 |
}); |
|
31 |
}; |
|
32 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/styles.scss | ||
---|---|---|
1 |
/* You can add global styles to this file, and also import other style files */ |
|
2 |
|
|
3 |
/*@import "../node_modules/bootstrap/dist/css/bootstrap.min.css"; |
|
4 |
@import "../node_modules/uikit/src/scss/variables-theme.scss"; |
|
5 |
@import "../node_modules/uikit/src/scss/mixins-theme.scss"; |
|
6 |
@import "../node_modules/uikit/src/scss/uikit-theme.scss";*/ |
|
7 |
|
|
8 |
/* |
|
9 |
@import "assets/css/fonts/yanonekaffeesatz.css"; |
|
10 |
*/ |
|
11 |
|
|
12 |
/*@import "assets/css/theme.css";*/ |
|
13 |
/*@import "assets/css/custom.css"; |
|
14 |
@import "assets/css/custom-provide.css"; |
|
15 |
@import "assets/css/repoManager.css"; |
|
16 |
@import "assets/css/RepositoryManager.css";*/ |
|
17 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/tsconfig.spec.json | ||
---|---|---|
1 |
{ |
|
2 |
"extends": "../tsconfig.json", |
|
3 |
"compilerOptions": { |
|
4 |
"outDir": "../out-tsc/spec", |
|
5 |
"module": "commonjs", |
|
6 |
"types": [ |
|
7 |
"jasmine", |
|
8 |
"node" |
|
9 |
] |
|
10 |
}, |
|
11 |
"files": [ |
|
12 |
"test.ts", |
|
13 |
"polyfills.ts" |
|
14 |
], |
|
15 |
"include": [ |
|
16 |
"**/*.spec.ts", |
|
17 |
"**/*.d.ts" |
|
18 |
] |
|
19 |
} |
|
20 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/app.module.ts | ||
---|---|---|
1 |
import { AppComponent } from './app.component'; |
|
2 |
import { NgModule } from '@angular/core'; |
|
3 |
import { BrowserModule } from '@angular/platform-browser'; |
|
4 |
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; |
|
5 |
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; |
|
6 |
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; |
|
7 |
import { ReusableComponentsModule } from './shared/reusablecomponents/reusable-components.module'; |
|
8 |
import { CookieLawModule } from './shared/reusablecomponents/cookie-law/cookie-law.module'; |
|
9 |
import { AppRoutingModule } from './app-routing.module'; |
|
10 |
import { AuthenticationInterceptor } from './services/authentication-interceptor'; |
|
11 |
import { BrokerService } from './services/broker.service'; |
|
12 |
import { MonitorService } from './services/monitor.service'; |
|
13 |
import { PiwikService } from './services/piwik.service'; |
|
14 |
import { RepositoryService } from './services/repository.service'; |
|
15 |
import { ValidatorService } from './services/validator.service'; |
|
16 |
import { UsagestatsService } from './services/usagestats.service'; |
|
17 |
import { StatisticsService } from './services/statistics.service'; |
|
18 |
import { AuthGuardService } from './services/auth-guard.service'; |
|
19 |
import { AuthenticationService } from './services/authentication.service'; |
|
20 |
import { LandingComponent } from './pages/landing/landing.component'; |
|
21 |
import { DashboardComponent } from './pages/dashboard/dashboard.component'; |
|
22 |
import { MatomoModule } from 'ngx-matomo'; |
|
23 |
|
|
24 |
|
|
25 |
@NgModule({ |
|
26 |
declarations: [ |
|
27 |
AppComponent, |
|
28 |
LandingComponent, |
|
29 |
DashboardComponent |
|
30 |
], |
|
31 |
imports: [ |
|
32 |
BrowserModule, |
|
33 |
NoopAnimationsModule, |
|
34 |
FormsModule, |
|
35 |
ReactiveFormsModule, |
|
36 |
HttpClientModule, |
|
37 |
ReusableComponentsModule, |
|
38 |
CookieLawModule, |
|
39 |
MatomoModule, |
|
40 |
AppRoutingModule |
|
41 |
], |
|
42 |
providers: [ |
|
43 |
{ |
|
44 |
provide: HTTP_INTERCEPTORS, |
|
45 |
useClass: AuthenticationInterceptor, |
|
46 |
multi: true |
|
47 |
}, |
|
48 |
BrokerService, |
|
49 |
MonitorService, |
|
50 |
PiwikService, |
|
51 |
RepositoryService, |
|
52 |
ValidatorService, |
|
53 |
UsagestatsService, |
|
54 |
StatisticsService, |
|
55 |
AuthGuardService, |
|
56 |
AuthenticationService |
|
57 |
], |
|
58 |
bootstrap: [AppComponent] |
|
59 |
}) |
|
60 |
export class AppModule { } |
|
61 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/app-routing.module.ts | ||
---|---|---|
1 |
import { RouterModule, Routes } from '@angular/router'; |
|
2 |
import { NgModule } from '@angular/core'; |
|
3 |
import { LandingComponent } from './pages/landing/landing.component'; |
|
4 |
import { AuthGuardService } from './services/auth-guard.service'; |
|
5 |
import { DashboardComponent } from './pages/dashboard/dashboard.component'; |
|
6 |
import { ForbiddenPageComponent } from './shared/reusablecomponents/403-forbidden-page.component'; |
|
7 |
|
|
8 |
const appRoutes: Routes = [ |
|
9 |
{ |
|
10 |
path: '', |
|
11 |
redirectTo: '/landing', |
|
12 |
pathMatch: 'full' |
|
13 |
}, |
|
14 |
{ |
|
15 |
path: 'landing', |
|
16 |
component: LandingComponent |
|
17 |
}, |
|
18 |
{ |
|
19 |
path: 'dashboard', |
|
20 |
component: DashboardComponent, |
|
21 |
canActivate: [AuthGuardService] |
|
22 |
}, |
|
23 |
{ |
|
24 |
path: 'sources', |
|
25 |
loadChildren: './pages/sources/sources.module#SourcesModule', |
|
26 |
canActivate: [AuthGuardService] |
|
27 |
}, |
|
28 |
{ |
|
29 |
path: 'compatibility', |
|
30 |
loadChildren: './pages/compatibility/compatibility.module#CompatibilityModule' |
|
31 |
}, |
|
32 |
{ |
|
33 |
path: 'content', |
|
34 |
loadChildren: './pages/content/content.module#ContentModule', |
|
35 |
canActivate: [AuthGuardService] |
|
36 |
}, |
|
37 |
{ |
|
38 |
path: 'getImpact', |
|
39 |
loadChildren: './pages/metrics/metrics.module#MetricsModule', |
|
40 |
canActivate: [AuthGuardService] |
|
41 |
}, |
|
42 |
{ |
|
43 |
path: 'admin', |
|
44 |
loadChildren: './pages/adminPg/adminPg.module#AdminPgModule', |
|
45 |
}, |
|
46 |
{ |
|
47 |
path: '403-forbidden', |
|
48 |
component: ForbiddenPageComponent |
|
49 |
}, |
|
50 |
{ |
|
51 |
path: '**', |
|
52 |
redirectTo: '/landing' |
|
53 |
} |
|
54 |
]; |
|
55 |
|
|
56 |
|
|
57 |
@NgModule ({ |
|
58 |
imports: [RouterModule.forRoot(appRoutes)], |
|
59 |
exports: [RouterModule] |
|
60 |
}) |
|
61 |
|
|
62 |
export class AppRoutingModule {} |
|
63 |
|
|
64 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/app.component.spec.ts | ||
---|---|---|
1 |
import { TestBed, async } from '@angular/core/testing'; |
|
2 |
import { AppComponent } from './app.component'; |
|
3 |
describe('AppComponent', () => { |
|
4 |
beforeEach(async(() => { |
|
5 |
TestBed.configureTestingModule({ |
|
6 |
declarations: [ |
|
7 |
AppComponent |
|
8 |
], |
|
9 |
}).compileComponents(); |
|
10 |
})); |
|
11 |
it('should create the app', async(() => { |
|
12 |
const fixture = TestBed.createComponent(AppComponent); |
|
13 |
const app = fixture.debugElement.componentInstance; |
|
14 |
expect(app).toBeTruthy(); |
|
15 |
})); |
|
16 |
it(`should have as title 'app'`, async(() => { |
|
17 |
const fixture = TestBed.createComponent(AppComponent); |
|
18 |
const app = fixture.debugElement.componentInstance; |
|
19 |
expect(app.title).toEqual('app'); |
|
20 |
})); |
|
21 |
it('should render title in a h1 tag', async(() => { |
|
22 |
const fixture = TestBed.createComponent(AppComponent); |
|
23 |
fixture.detectChanges(); |
|
24 |
const compiled = fixture.debugElement.nativeElement; |
|
25 |
expect(compiled.querySelector('h1').textContent).toContain('Welcome to uoa-repository-manager-ui!'); |
|
26 |
})); |
|
27 |
}); |
|
28 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/dashboard/dashboard.component.html | ||
---|---|---|
1 |
<div *ngIf="getIsUserLoggedIn()" id="contentWrapper" class="tm-main uk-section uk-section-default" uk-height-viewport="expand: true" style="box-sizing: border-box;" > |
|
2 |
|
|
3 |
|
|
4 |
<div class="uk-container uk-container-expand"> |
|
5 |
<div class="uk-sticky-placeholder" style="height: 84px; margin: 0px;" aria-hidden="aria-hidden"></div> |
|
6 |
<div class="uk-grid uk-padding"> |
|
7 |
<div class="uk-width-3-4@m uk-first-column"> |
|
8 |
<div class="uk-margin uk-grid-match uk-child-width-1-1 uk-child-width-1-2@m uk-grid-small uk-grid uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" uk-grid="" style=""> |
|
9 |
<div class="uk-first-column"> |
|
10 |
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style=""> |
|
11 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/sources','register']" uk-scroll=""></a> |
|
12 |
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid=""> |
|
13 |
<div class="uk-width-1-2@m uk-first-column"> |
|
14 |
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-153949408.jpg" > |
|
15 |
</div> |
|
16 |
<div> |
|
17 |
<div> |
|
18 |
<h3 class="el-title uk-margin uk-card-title">Register</h3> |
|
19 |
<div class="el-content uk-margin"> |
|
20 |
Register data sources in the OpenAIRE infrastructure |
|
21 |
</div> |
|
22 |
</div> |
|
23 |
</div> |
|
24 |
</div> |
|
25 |
</div> |
|
26 |
</div> |
|
27 |
<div> |
|
28 |
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style=""> |
|
29 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/compatibility','validate']" uk-scroll=""></a> |
|
30 |
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid=""> |
|
31 |
<div class="uk-width-1-2@m uk-first-column"> |
|
32 |
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-516286898.jpg" > |
|
33 |
</div> |
|
34 |
<div> |
|
35 |
<div> |
|
36 |
<h3 class="el-title uk-margin uk-card-title">Validate</h3> |
|
37 |
<div class="el-content uk-margin"> |
|
38 |
Validate data sources against OpenAIRE guidelines |
|
39 |
</div> |
|
40 |
</div> |
|
41 |
</div> |
|
42 |
</div> |
|
43 |
</div> |
|
44 |
</div> |
|
45 |
<div class="uk-grid-margin uk-first-column"> |
|
46 |
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style=""> |
|
47 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['/content','notifications']" uk-scroll=""></a> |
|
48 |
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid=""> |
|
49 |
<div class="uk-width-1-2@m uk-first-column"> |
|
50 |
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-466267165.jpg" > |
|
51 |
</div> |
|
52 |
<div> |
|
53 |
<div> |
|
54 |
<h3 class="el-title uk-margin uk-card-title">Notifications</h3> |
|
55 |
<div class="el-content uk-margin"> |
|
56 |
View notifications to enrich the metadata and the content |
|
57 |
</div> |
|
58 |
</div> |
|
59 |
</div> |
|
60 |
</div> |
|
61 |
</div> |
|
62 |
</div> |
|
63 |
<div class="uk-grid-margin"> |
|
64 |
<div class="el-item uk-card uk-card-hover uk-card-body uk-scrollspy-inview uk-animation-fade" uk-scrollspy-class="" style=""> |
|
65 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" uk-scroll="" [routerLink]="['/getImpact']"></a> |
|
66 |
<div class="uk-child-width-expand uk-flex-middle uk-grid" uk-grid=""> |
|
67 |
<div class="uk-width-1-2@m uk-first-column"> |
|
68 |
<img class="el-image uk-border-rounded" src="../../../assets/imgs/iStock-659630328.jpg" > |
|
69 |
</div> |
|
70 |
<div> |
|
71 |
<div> |
|
72 |
<h3 class="el-title uk-margin uk-card-title">Metrics</h3> |
|
73 |
<div class="el-content uk-margin"> |
|
74 |
View aggregated, cleaned usage statistics for repository access |
|
75 |
</div> |
|
76 |
</div> |
|
77 |
</div> |
|
78 |
</div> |
|
79 |
</div> |
|
80 |
</div> |
|
81 |
</div> |
|
82 |
</div> |
|
83 |
|
|
84 |
<div class="uk-width-1-4@m"> |
|
85 |
<div class="uk-card uk-card-body uk-card-grey" style="min-height: 300px;"> |
|
86 |
<h5 class="">MY DATASOURCES AT A GLANCE</h5> |
|
87 |
|
|
88 |
<div *ngIf="loading"> |
|
89 |
<div class="loader-big" style="text-align: center; padding-top: 100px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
90 |
Retrieving your datasources... |
|
91 |
</div> |
|
92 |
<div class="whiteFilm"></div> |
|
93 |
</div> |
|
94 |
|
|
95 |
<div *ngIf="!loading"> |
|
96 |
<div *ngIf="repositories && repositories.length>0"> |
|
97 |
<div *ngFor="let repository of repositories" class="uk-margin-bottom uk-margin-top"> |
|
98 |
|
|
99 |
<div class="uk-padding-small" style="background-color: #fff"> |
|
100 |
<div class="uk-inline uk-width-1-3@m"> |
|
101 |
<img src="{{repository.logoURL ? repository.logoURL : '../../../assets/imgs/yourLogoHere.jpg'}}" alt=""> |
|
102 |
</div> |
|
103 |
<div class="uk-inline uk-width-2-3@m"> |
|
104 |
<div class="uk-margin-left">{{repository.repositoryName}}</div> |
|
105 |
</div> |
|
106 |
</div> |
|
107 |
|
|
108 |
<div class="uk-margin-small-top"> |
|
109 |
<div>Number of records collected: |
|
110 |
<span *ngIf="repository.recordsCollected">{{repository.recordsCollected}}</span> |
|
111 |
<span *ngIf="!repository.recordsCollected">not available</span> |
|
112 |
</div> |
|
113 |
<div>Last indexed version: |
|
114 |
<span *ngIf="repository.lastIndexedVersion">{{repository.lastIndexedVersion | date :'short'}}</span> |
|
115 |
<span *ngIf="!repository.lastIndexedVersion">not available</span> |
|
116 |
</div> |
|
117 |
<div>Content enrichment events: |
|
118 |
<span *ngIf="repository.enrichmentEvents">{{repository.enrichmentEvents}}</span> |
|
119 |
<span *ngIf="!repository.enrichmentEvents">not available</span> |
|
120 |
</div> |
|
121 |
<div>Views: |
|
122 |
<span *ngIf="repository.totalViews">{{repository.totalViews}}</span> |
|
123 |
<span *ngIf="!repository.totalViews">not available</span> |
|
124 |
</div> |
|
125 |
<div>Downloads: |
|
126 |
<span *ngIf="repository.totalDownloads">{{repository.totalDownloads}}</span> |
|
127 |
<span *ngIf="!repository.totalDownloads">not available</span> |
|
128 |
</div> |
|
129 |
</div> |
|
130 |
|
|
131 |
</div> |
|
132 |
</div> |
|
133 |
<div *ngIf="!repositories || repositories.length==0"> |
|
134 |
No repositories available... |
|
135 |
</div> |
|
136 |
</div> |
|
137 |
|
|
138 |
|
|
139 |
|
|
140 |
</div> |
|
141 |
</div> |
|
142 |
|
|
143 |
</div> |
|
144 |
</div> |
|
145 |
</div> |
|
146 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/dashboard/dashboard.component.ts | ||
---|---|---|
1 |
import { Component, OnInit } from '@angular/core'; |
|
2 |
import { AuthenticationService } from '../../services/authentication.service'; |
|
3 |
import { RepositoryService } from '../../services/repository.service'; |
|
4 |
import {Repository, RepositorySnippet, RepositorySummaryInfo} from '../../domain/typeScriptClasses'; |
|
5 |
|
|
6 |
@Component ({ |
|
7 |
selector: 'app-dashboard', |
|
8 |
templateUrl: 'dashboard.component.html' |
|
9 |
}) |
|
10 |
|
|
11 |
export class DashboardComponent implements OnInit { |
|
12 |
|
|
13 |
constructor(private authService: AuthenticationService, |
|
14 |
private repositoryService: RepositoryService) { } |
|
15 |
|
|
16 |
repositories: RepositorySummaryInfo[] = []; |
|
17 |
userEmail: string; |
|
18 |
|
|
19 |
loading: boolean = true; |
|
20 |
|
|
21 |
ngOnInit() { |
|
22 |
// this.getUserEmail(); |
|
23 |
this.userEmail = sessionStorage.getItem('email'); |
|
24 |
if (this.userEmail) { |
|
25 |
this.getRepositoriesSummaryInfo(); |
|
26 |
} |
|
27 |
} |
|
28 |
|
|
29 |
getIsUserLoggedIn() { |
|
30 |
return this.authService.getIsUserLoggedIn(); |
|
31 |
} |
|
32 |
|
|
33 |
getUserEmail() { |
|
34 |
this.userEmail = this.authService.getUserEmail(); |
|
35 |
} |
|
36 |
|
|
37 |
getRepos() { |
|
38 |
console.log('in getRepos'); |
|
39 |
this.getRepositoriesSummaryInfo(); |
|
40 |
} |
|
41 |
|
|
42 |
getRepositoriesSummaryInfo() { |
|
43 |
this.repositoryService.getRepositoriesSummaryInfo().subscribe( |
|
44 |
repositories => { this.repositories = repositories; this.loading=false }, |
|
45 |
error => { console.log('Errrrror'); this.loading=false }, |
|
46 |
() => { console.log(this.repositories); this.loading=false } |
|
47 |
); |
|
48 |
} |
|
49 |
} |
|
50 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/compatibility/compatibility.component.ts | ||
---|---|---|
1 |
import {Component, OnInit} from '@angular/core'; |
|
2 |
|
|
3 |
@Component ({ |
|
4 |
selector: 'app-compatibility', |
|
5 |
templateUrl: '../pageContainer.html' |
|
6 |
}) |
|
7 |
|
|
8 |
export class CompatibilityComponent implements OnInit { |
|
9 |
constructor() {} |
|
10 |
|
|
11 |
ngOnInit() {} |
|
12 |
} |
|
13 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/compatibility/compatibility-monitor.component.html | ||
---|---|---|
1 |
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid=""> |
|
2 |
<div class="uk-width-1-1@m uk-first-column"> |
|
3 |
|
|
4 |
<h1 class="uk-h2">Monitor</h1> |
|
5 |
|
|
6 |
<!-- TOP HELP CONTENT --> |
|
7 |
<help-content #topHelperContent [position]="'top'" |
|
8 |
[ngClass]="topHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
9 |
</help-content> |
|
10 |
|
|
11 |
<div class="uk-container uk-container-large uk-margin-medium-top uk-margin-medium-bottom"> |
|
12 |
<div class="uk-grid"> |
|
13 |
|
|
14 |
<!-- LEFT HELP CONTENT --> |
|
15 |
<aside-help-content #leftHelperContent [position]="'left'" |
|
16 |
[ngClass]="leftHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
17 |
</aside-help-content> |
|
18 |
|
|
19 |
<!-- MIDDLE --> |
|
20 |
<div class=" uk-width-expand@m"> |
|
21 |
|
|
22 |
<repository-tiles [parent]="'compatibilityMonitor'"></repository-tiles> |
|
23 |
|
|
24 |
</div> |
|
25 |
|
|
26 |
<!-- RIGHT HELP CONTENT --> |
|
27 |
<aside-help-content #rightHelperContent [position]="'right'" |
|
28 |
[ngClass]="rightHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
29 |
</aside-help-content> |
|
30 |
|
|
31 |
</div> |
|
32 |
</div> |
|
33 |
|
|
34 |
|
|
35 |
<!-- BOTTOM HELP CONTENT --> |
|
36 |
<help-content #bottomHelperContent [position]="'bottom'" |
|
37 |
[ngClass]="bottomHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
38 |
</help-content> |
|
39 |
|
|
40 |
|
|
41 |
</div> |
|
42 |
</div> |
|
43 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/compatibility/compatibility-validate.component.html | ||
---|---|---|
1 |
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid=""> |
|
2 |
<div class="uk-width-1-1@m uk-first-column"> |
|
3 |
|
|
4 |
<h1 class="uk-h2">Validate your datasource</h1> |
|
5 |
|
|
6 |
<!-- TOP HELP CONTENT --> |
|
7 |
<help-content #topHelperContent [position]="'top'" |
|
8 |
[ngClass]="topHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
9 |
</help-content> |
|
10 |
|
|
11 |
<div class="uk-container uk-container-large uk-margin-medium-top uk-margin-medium-bottom"> |
|
12 |
<div class="uk-grid"> |
|
13 |
|
|
14 |
<!-- LEFT HELP CONTENT --> |
|
15 |
<aside-help-content #leftHelperContent [position]="'left'" |
|
16 |
[ngClass]="leftHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
17 |
</aside-help-content> |
|
18 |
|
|
19 |
<!-- MIDDLE --> |
|
20 |
<div class=" uk-width-expand@m"> |
|
21 |
|
|
22 |
<div> |
|
23 |
<div class="uk-margin uk-grid repositoryTypeSelection"> |
|
24 |
<div class="uk-width-expand@m uk-width-1-3@s uk-grid-item-match uk-first-column"> |
|
25 |
<div class="uk-text-center uk-card uk-card-default uk-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style=""> |
|
26 |
<a class="uk-position-cover uk-margin-remove-adjacent" [routerLink]="['literature']" [queryParams]="{ step: 'baseUrl' }"></a> |
|
27 |
<div class="uk-card-media-top"> |
|
28 |
<img src="../../../assets/imgs/Literature_repos_wide.png" alt="" style="width:100%;"> |
|
29 |
</div> |
|
30 |
<div class="uk-card-body"> |
|
31 |
<h3 class="el-title uk-margin uk-card-title uk-margin-remove-adjacent uk-margin-small-bottom"> |
|
32 |
Run compatibility test against the OpenAIRE literature guidelines. |
|
33 |
</h3> |
|
34 |
</div> |
|
35 |
</div> |
|
36 |
</div> |
|
37 |
<div class="uk-width-expand@m uk-width-1-3@s uk-grid-item-match uk-first-column"> |
|
38 |
<div class="uk-text-center uk-card uk-card-default uk-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style=""> |
|
39 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['data']" [queryParams]="{ step: 'baseUrl' }"></a> |
|
40 |
<div class="uk-card-media-top"> |
|
41 |
<img class="el-image" src="../../../assets/imgs/Data_repos_wide.png" alt="" style="width:100%;"> |
|
42 |
</div> |
|
43 |
<div class="uk-card-body"> |
|
44 |
<h3 class="el-title uk-margin uk-card-title uk-margin-remove-adjacent uk-margin-small-bottom"> |
|
45 |
Run compatibility test against the OpenAIRE Guidelines for Data Archives. |
|
46 |
</h3> |
|
47 |
</div> |
|
48 |
</div> |
|
49 |
</div> |
|
50 |
<div class="uk-width-expand@m uk-width-1-3@s uk-grid-item-match uk-first-column"> |
|
51 |
<div class="uk-text-center uk-card uk-card-default uk-card-hover uk-scrollspy-inview uk-animation-slide-top-medium" uk-scrollspy-class="" data-id="" style=""> |
|
52 |
<a class="el-link uk-position-cover uk-margin-remove-adjacent" [routerLink]="['cris']" [queryParams]="{ step: 'baseUrl' }"></a> |
|
53 |
<div class="uk-card-media-top"> |
|
54 |
<img class="el-image" src="../../../assets/imgs/CRIS_wide.png" alt="" style="width:100%;"> |
|
55 |
</div> |
|
56 |
<div class="uk-card-body"> |
|
57 |
<h3 class="el-title uk-margin uk-card-title uk-margin-remove-adjacent uk-margin-small-bottom"> |
|
58 |
Run compatibility test against the OpenAIRE Guidelines for CRIS Managers based on CERIF-XML. |
|
59 |
</h3> |
|
60 |
</div> |
|
61 |
</div> |
|
62 |
</div> |
|
63 |
</div> |
|
64 |
</div> |
|
65 |
|
|
66 |
</div> |
|
67 |
|
|
68 |
<!-- RIGHT HELP CONTENT --> |
|
69 |
<aside-help-content #rightHelperContent [position]="'right'" |
|
70 |
[ngClass]="rightHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
71 |
</aside-help-content> |
|
72 |
|
|
73 |
</div> |
|
74 |
</div> |
|
75 |
|
|
76 |
|
|
77 |
<!-- BOTTOM HELP CONTENT --> |
|
78 |
<help-content #bottomHelperContent [position]="'bottom'" |
|
79 |
[ngClass]="bottomHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
80 |
</help-content> |
|
81 |
|
|
82 |
|
|
83 |
</div> |
|
84 |
</div> |
|
85 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/compatibility/compatibility-validation-history.component.html | ||
---|---|---|
1 |
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid=""> |
|
2 |
<div class="uk-width-1-1@m uk-first-column"> |
|
3 |
|
|
4 |
<h1 class="uk-h2">Previous validations</h1> |
|
5 |
|
|
6 |
<!-- TOP HELP CONTENT --> |
|
7 |
<help-content #topHelperContent [position]="'top'" |
|
8 |
[ngClass]="topHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
9 |
</help-content> |
|
10 |
|
|
11 |
<div class="uk-container uk-container-large uk-margin-medium-top uk-margin-medium-bottom"> |
|
12 |
<div class="uk-grid"> |
|
13 |
|
|
14 |
<!-- LEFT HELP CONTENT --> |
|
15 |
<aside-help-content #leftHelperContent [position]="'left'" |
|
16 |
[ngClass]="leftHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
17 |
</aside-help-content> |
|
18 |
|
|
19 |
<!-- MIDDLE --> |
|
20 |
<div class=" uk-width-expand@m"> |
|
21 |
|
|
22 |
<div *ngIf="successMessage" class="uk-alert uk-alert-success">{{ successMessage }}</div> |
|
23 |
<div *ngIf="failureMessage" class="uk-alert uk-alert-danger">{{ failureMessage }}</div> |
|
24 |
<div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{ errorMessage }}</div> |
|
25 |
<div *ngIf="loadingMessage" class="loading-big"> |
|
26 |
<div class="loader-big" |
|
27 |
style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
28 |
{{ loadingMessage }} |
|
29 |
</div> |
|
30 |
<div class="whiteFilm"></div> |
|
31 |
</div> |
|
32 |
<div *ngIf="jobsOfUser"> |
|
33 |
<div class="uk-grid page-controls"> |
|
34 |
<div class="uk-margin-bottom uk-width-1-1 filters"> |
|
35 |
<div class="links"> |
|
36 |
<div class="filterLabel">Filter by job type:</div> |
|
37 |
<div class="inlineBlock"> |
|
38 |
<select class="form-control" #selectType (change)="getJobType(selectType.value)"> |
|
39 |
<option value="">--none selected--</option> |
|
40 |
<option *ngFor="let type of jobTypes" value="{{type}}">{{type}}</option> |
|
41 |
</select> |
|
42 |
</div> |
|
43 |
</div> |
|
44 |
</div> |
|
45 |
<div class="uk-margin-bottom uk-width-1-1 filters"> |
|
46 |
<div class="links uk-inline"> |
|
47 |
<div class="filterLabel" style="display: inline;">Filter validation jobs:</div> |
|
48 |
<a class="uk-active" |
|
49 |
[class.active]="currentFilter==='all'" |
|
50 |
(click)="filterJobs('all')">All jobs ({{this.jobsOfUser.totalJobs}})</a> |
|
51 |
<a class="uk-active" |
|
52 |
[class.active]="currentFilter==='successful'" |
|
53 |
(click)="filterJobs('successful')">successful ({{this.jobsOfUser.totalJobsSuccessful}})</a> |
|
54 |
<a class="uk-active" |
|
55 |
[class.active]="currentFilter==='failed'" |
|
56 |
(click)="filterJobs('failed')">failed ({{this.jobsOfUser.totalJobsFailed}})</a> |
|
57 |
<a class="uk-active" |
|
58 |
[class.active]="currentFilter==='ongoing'" |
|
59 |
(click)="filterJobs('ongoing')">ongoing ({{this.jobsOfUser.totalJobsOngoing}})</a> |
|
60 |
</div> |
|
61 |
<div class="show-options uk-inline" style="float: right;"> |
|
62 |
<div class="filterLabel" style="display: inline;">Jobs per page:</div> |
|
63 |
<div class="inlineBlock"> |
|
64 |
<select #itemsPerPage class="form-control" (change)="getItemsPerPage(+itemsPerPage.value)"> |
|
65 |
<option value="10" selected>10</option> |
|
66 |
<option value="25">25</option> |
|
67 |
<option value="50">50</option> |
|
68 |
<option value="100">100</option> |
|
69 |
</select> |
|
70 |
</div> |
|
71 |
</div> |
|
72 |
</div> |
|
73 |
</div> |
|
74 |
<div class="contentAndPagerPanel"> |
|
75 |
<div> |
|
76 |
<ul class="uk-pagination"> |
|
77 |
<li> |
|
78 |
<a class="uk-link uk-link-muted" (click)="goToPreviousPage()"> |
|
79 |
<span class="uk-margin-small-right uk-pagination-previous uk-icon" uk-pagination-previous=""> |
|
80 |
<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg" |
|
81 |
icon="pagination-previous" ratio="1"></svg> |
|
82 |
</span> |
|
83 |
Previous |
|
84 |
</a> |
|
85 |
</li> |
|
86 |
<li class="uk-margin-auto-left"> |
|
87 |
<a class="uk-link uk-link-muted" (click)="goToNextPage()"> |
|
88 |
Next |
|
89 |
<span class="uk-margin-small-left uk-pagination-next uk-icon" uk-pagination-next=""> |
|
90 |
<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg" |
|
91 |
icon="pagination-next" ratio="1"></svg> |
|
92 |
</span> |
|
93 |
</a> |
|
94 |
</li> |
|
95 |
</ul> |
|
96 |
<div class="resultsPageLabel">page {{ (totalPages > 0) ? currentPage+1 : 0 }} of {{ totalPages }}</div> |
|
97 |
</div> |
|
98 |
<div> |
|
99 |
<div> |
|
100 |
<div class="uk-overflow-auto uk-scrollspy-inview uk-animation-slide-top-medium uk-margin-top uk-margin-bottom"> |
|
101 |
<table class="uk-table uk-table-middle uk-table-striped" style="vertical-align: top !important;"> |
|
102 |
<thead> |
|
103 |
<tr> |
|
104 |
<th>Repository</th> |
|
105 |
<th>Validation Type</th> |
|
106 |
<th>Status</th> |
|
107 |
<th>Score</th> |
|
108 |
<th>Started</th> |
|
109 |
<th>Guidelines</th> |
|
110 |
<th>Actions</th> |
|
111 |
<th></th> |
|
112 |
</tr> |
|
113 |
</thead> |
|
114 |
<tr *ngIf="infoMessage"> |
|
115 |
<td colspan="7">{{ infoMessage }}</td> |
|
116 |
</tr> |
|
117 |
<tbody *ngIf="jobsOfUser && jobsOfUser.jobs"> |
|
118 |
<tr class="el-item" *ngFor="let job of jobsOfUser.jobs"> |
|
119 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
120 |
<div class="el-title">{{ job.baseUrl }}</div> |
|
121 |
</td> |
|
122 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
123 |
<div *ngIf="job.validationType.includes('C')" class="el-title">OAI Content</div> |
|
124 |
<div *ngIf="job.validationType.includes('U')" class="el-title">OAI Usage</div> |
|
125 |
</td> |
|
126 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
127 |
<div *ngIf="job.validationType.includes('C')" class="el-title">{{ job.contentJobStatus }}</div> |
|
128 |
<div *ngIf="job.validationType.includes('U')" class="el-title">{{ job.usageJobStatus }}</div> |
|
129 |
</td> |
|
130 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
131 |
<div *ngIf="job.validationType.includes('C')" class="el-title">{{ job.contentJobScore }}</div> |
|
132 |
<div *ngIf="job.validationType.includes('U')" class="el-title">{{ job.usageJobScore }}</div> |
|
133 |
</td> |
|
134 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
135 |
<div class="el-title">{{ job.started }}</div> |
|
136 |
</td> |
|
137 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
138 |
<div class="el-title">{{ job.guidelinesShortName }}</div> |
|
139 |
</td> |
|
140 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
141 |
<div class="el-link"> |
|
142 |
<div class="viewDetailsLinkWrapper"> |
|
143 |
<a class="viewDetails" [routerLink]="[job.id]"> |
|
144 |
View Results<i class="fa fa-angle-right"></i> |
|
145 |
</a> |
|
146 |
</div> |
|
147 |
<div> |
|
148 |
<a class="resubmitJob" (click)="resubmitJob(job.id.toString(), job.userEmail)">Resubmit Job<i class="fa fa-repeat"></i></a> |
|
149 |
</div> |
|
150 |
</div> |
|
151 |
</td> |
|
152 |
<td class="uk-table-shrink" style="vertical-align: top !important;"> |
|
153 |
<img type="image" [src]="getResultImage(job.validationStatus)" title="{{job.validationStatus}}"> |
|
154 |
</td> |
|
155 |
</tr> |
|
156 |
</tbody> |
|
157 |
</table> |
|
158 |
</div> |
|
159 |
</div> |
|
160 |
</div> |
|
161 |
<div> |
|
162 |
<ul class="uk-pagination"> |
|
163 |
<li> |
|
164 |
<a class="uk-link uk-link-muted" (click)="goToPreviousPage()"> |
|
165 |
<span class="uk-margin-small-right uk-pagination-previous uk-icon" uk-pagination-previous=""> |
|
166 |
<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg" |
|
167 |
icon="pagination-previous" ratio="1"></svg> |
|
168 |
</span> |
|
169 |
Previous |
|
170 |
</a> |
|
171 |
</li> |
|
172 |
<li class="uk-margin-auto-left"> |
|
173 |
<a class="uk-link uk-link-muted" (click)="goToNextPage()"> |
|
174 |
Next |
|
175 |
<span class="uk-margin-small-left uk-pagination-next uk-icon" uk-pagination-next=""> |
|
176 |
<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg" |
|
177 |
icon="pagination-next" ratio="1"></svg> |
|
178 |
</span> |
|
179 |
</a> |
|
180 |
</li> |
|
181 |
</ul> |
|
182 |
<div class="resultsPageLabel">page {{ (totalPages > 0) ? currentPage+1 : 0 }} of {{ totalPages }}</div> |
|
183 |
</div> |
|
184 |
</div> |
|
185 |
<div class="row"></div> |
|
186 |
</div> |
|
187 |
|
|
188 |
</div> |
|
189 |
|
|
190 |
<!-- RIGHT HELP CONTENT --> |
|
191 |
<aside-help-content #rightHelperContent [position]="'right'" |
|
192 |
[ngClass]="rightHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
193 |
</aside-help-content> |
|
194 |
|
|
195 |
</div> |
|
196 |
</div> |
|
197 |
|
|
198 |
|
|
199 |
<!-- BOTTOM HELP CONTENT --> |
|
200 |
<help-content #bottomHelperContent [position]="'bottom'" |
|
201 |
[ngClass]="bottomHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
202 |
</help-content> |
|
203 |
|
|
204 |
|
|
205 |
</div> |
|
206 |
</div> |
|
207 |
|
|
208 | 0 |
modules/uoa-repository-dashboard-gui/trunk/src/app/pages/compatibility/compatibility-validation-results.component.html | ||
---|---|---|
1 |
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid=""> |
|
2 |
<div class="uk-width-1-1@m uk-first-column"> |
|
3 |
|
|
4 |
<h1 class="uk-h2">Validation results for</h1> |
|
5 |
|
|
6 |
<!-- TOP HELP CONTENT --> |
|
7 |
<help-content #topHelperContent [position]="'top'" |
|
8 |
[ngClass]="topHelperContent.isPresent()?'uk-margin-medium-top uk-margin-medium-bottom':'clear-style'"> |
|
9 |
</help-content> |
|
10 |
|
|
11 |
<div class="uk-container uk-container-large uk-margin-medium-top uk-margin-medium-bottom"> |
|
12 |
<div class="uk-grid"> |
|
13 |
|
|
14 |
<!-- LEFT HELP CONTENT --> |
|
15 |
<aside-help-content #leftHelperContent [position]="'left'" |
|
16 |
[ngClass]="leftHelperContent.isPresent()?'tm-sidebar uk-width-1-4@m uk-first-column':'clear-style'"> |
|
17 |
</aside-help-content> |
|
18 |
|
|
19 |
<!-- MIDDLE --> |
|
20 |
<div class=" uk-width-expand@m"> |
|
21 |
|
|
22 |
<div> |
|
23 |
<div *ngIf="errorMessage" class="uk-alert uk-alert-danger">{{ errorMessage }}</div> |
|
24 |
<div *ngIf="loadingMessage" class="loading-big"> |
|
25 |
<div class="loader-big" |
|
26 |
style="text-align: center; padding-top: 170px; color: rgb(47, 64, 80); font-weight: bold;"> |
|
27 |
{{ loadingMessage }} |
|
28 |
</div> |
|
29 |
<div class="whiteFilm"></div> |
|
30 |
</div> |
|
31 |
<div *ngIf="jobSummary"> |
|
32 |
<div> |
|
33 |
<div> |
|
34 |
<h4 class="uk-h4 uk-text-primary uk-scrollspy-inview uk-animation-slide-top-medium" |
|
35 |
uk-scrollspy-class=""><span>{{jobSummary.baseUrl}}</span></h4> |
|
36 |
<div class="uk-margin-small">by {{jobSummary.userEmail}}</div> |
|
37 |
</div> |
|
38 |
</div> |
|
39 |
<div> |
|
40 |
<div> |
|
41 |
<hr class="uk-scrollspy-inview uk-animation-slide-bottom-small" uk-scrollspy-class=""> |
|
42 |
<div> |
|
43 |
<span>{{ jobSummary.jobType }}</span> |
|
44 |
| |
|
45 |
<span>{{ jobSummary.guidelinesShortName }}</span> |
|
46 |
| |
|
47 |
<span>Validation set: {{ jobSummary.validationSet }}</span> |
|
48 |
</div> |
|
49 |
<div> |
|
50 |
<span>Started: {{ jobSummary.started }}</span> |
|
51 |
, |
|
52 |
<span>Ended: {{ jobSummary.ended ? jobSummary.ended : '--' }}</span> |
|
53 |
, |
|
54 |
<span>Duration: {{ jobSummary.duration }}</span> |
|
55 |
</div> |
|
56 |
<div style="font-size: 120%;"> |
|
57 |
<span>Records tested: {{ jobSummary.recordsTested }}</span> |
|
58 |
</div> |
|
59 |
<div> |
|
60 |
<span class="uk-label uk-margin-right">Score for content: {{ jobSummary.contentJobScore }}</span> |
|
61 |
<span class="uk-label">Score for usage: {{ jobSummary.usageJobScore }}</span> |
|
62 |
</div> |
|
63 |
<hr class="uk-scrollspy-inview uk-animation-slide-bottom-small" uk-scrollspy-class=""> |
|
64 |
</div> |
|
65 |
</div> |
|
66 |
<div> |
|
67 |
<ul class="uk-margin el-nav uk-tab" uk-switcher="connect: .uk-switcher"> |
|
68 |
<li routerLinkActive="uk-active"> |
|
69 |
<a href="#">for Content</a> |
|
70 |
</li> |
|
71 |
<li routerLinkActive="uk-active"> |
|
72 |
<a href="#">for Usage</a> |
|
73 |
</li> |
|
74 |
</ul> |
|
75 |
<ul class="uk-switcher"> |
|
76 |
<li class="el-item"> |
|
77 |
<div class="uk-grid-margin uk-grid uk-grid-stack"> |
|
78 |
<div class="uk-width-1-1@m uk-first-column"> |
|
79 |
<div class="uk-overflow-auto uk-scrollspy-inview uk-animation-slide-top-medium"> |
|
80 |
<div *ngIf="noContent" class="uk-alert">{{ noContent }}</div> |
|
81 |
<div *ngIf="contentResults && contentResults.length > 0"> |
|
82 |
<table class="uk-table uk-table-striped uk-table-middle rules-table"> |
|
83 |
<thead> |
|
84 |
<tr> |
|
85 |
<th>Rule Name</th> |
|
86 |
<th class="uk-text-nowrap">Rule Description</th> |
|
87 |
<th class="uk-text-nowrap">Rule Weight</th> |
|
88 |
<th class="uk-text-nowrap"># of records</th> |
|
89 |
<th class="uk-text-nowrap">Status</th> |
|
90 |
</tr> |
|
91 |
</thead> |
|
92 |
<tbody> |
|
93 |
<tr *ngFor="let contentRule of contentResults" class="el-item"> |
|
94 |
<td class="uk-table-shrink"> |
|
95 |
<div class="el-title">{{ contentRule.name }}</div> |
|
96 |
</td> |
|
97 |
<td class="uk-table-shrink"> |
|
98 |
<div class="el-title" [innerHtml]="contentRule.description"> |
|
99 |
</div> |
|
100 |
</td> |
|
101 |
<td class="uk-table-shrink"> |
|
102 |
<div class="el-title">{{ contentRule.weight }}</div> |
|
103 |
</td> |
|
104 |
<td class="uk-table-shrink"> |
|
105 |
<div class="el-title">{{ contentRule.successes }}</div> |
|
106 |
</td> |
|
107 |
<td class="uk-table-shrink"> |
|
108 |
<div *ngIf="!contentRule.hasErrors" class="el-title"> |
|
109 |
<span uk-icon="icon: check" style="color: #4b991f" class="uk-icon"> |
|
110 |
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" |
|
111 |
icon="check" ratio="1"> |
|
112 |
<polyline fill="none" stroke="#000" stroke-width="1.1" |
|
113 |
points="4,10 8,15 17,4"></polyline> |
|
114 |
</svg>--> |
|
115 |
</span> |
|
116 |
</div> |
|
117 |
<div *ngIf="contentRule.hasErrors && contentRule.mandatory"> |
|
118 |
<span uk-icon="icon: close" style="color: #cd242b" class="uk-icon"> |
|
119 |
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" |
|
120 |
icon="close" ratio="1"> |
|
121 |
<path fill="none" stroke="#000" stroke-width="1.06" d="M16,16 L4,4"></path> |
|
122 |
<path fill="none" stroke="#000" stroke-width="1.06" d="M16,4 L4,16"></path> |
|
123 |
</svg>--> |
|
124 |
</span> |
|
125 |
<a class="errorlink viewErrors uk-display-block" |
|
126 |
(click)="viewErrors(contentRule)"><span>View Errors</span></a> |
|
127 |
</div> |
|
128 |
<div *ngIf="contentRule.hasErrors && !contentRule.mandatory"> |
|
129 |
<span uk-icon="icon: warning" style="color: #e9d60d" class="uk-icon"> |
|
130 |
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" |
|
131 |
icon="warning" ratio="1"> |
|
132 |
<circle cx="10" cy="14" r="1"></circle> |
|
133 |
<circle fill="none" stroke="#000" stroke-width="1.1" cx="10" cy="10" r="9"></circle> |
|
134 |
<path |
|
135 |
d="M10.97,7.72 C10.85,9.54 10.56,11.29 10.56,11.29 C10.51,11.87 10.27,12 9.99,12 C9.69,12 9.49,11.87 9.43,11.29 C9.43,11.29 9.16,9.54 9.03,7.72 C8.96,6.54 9.03,6 9.03,6 C9.03,5.45 9.46,5.02 9.99,5 C10.53,5.01 10.97,5.44 10.97,6 C10.97,6 11.04,6.54 10.97,7.72 L10.97,7.72 Z"></path> |
|
136 |
</svg>--> |
|
137 |
</span> |
|
138 |
<a class="warninglink viewErrors uk-display-block" |
|
139 |
(click)="viewErrors(contentRule)"><span>View Warnings</span></a> |
|
140 |
</div> |
|
141 |
</td> |
|
142 |
</tr> |
|
143 |
</tbody> |
|
144 |
</table> |
|
145 |
</div> |
|
146 |
</div> |
|
147 |
</div> |
|
148 |
</div> |
|
149 |
</li> |
|
150 |
<li class="el-item"> |
|
151 |
<div class="uk-grid-margin uk-grid uk-grid-stack"> |
|
152 |
<div class="uk-width-1-1@m uk-first-column"> |
|
153 |
<div class="uk-overflow-auto uk-scrollspy-inview uk-animation-slide-top-medium"> |
|
154 |
<div *ngIf="noUsage" class="uk-alert">{{ noUsage }}</div> |
|
155 |
<div *ngIf="usageResults && usageResults.length > 0"> |
|
156 |
<table class="uk-table uk-table-striped uk-table-middle rules-table"> |
|
157 |
<thead> |
|
158 |
<tr> |
|
159 |
<th>Rule Name</th> |
|
160 |
<th class="uk-text-nowrap">Rule Description</th> |
|
161 |
<th class="uk-text-nowrap">Rule Weight</th> |
|
162 |
<th class="uk-text-nowrap"># of records</th> |
|
163 |
<th class="uk-text-nowrap">Status</th> |
|
164 |
</tr> |
|
165 |
</thead> |
|
166 |
<tbody> |
|
167 |
<tr *ngFor="let usageRule of usageResults" class="el-item"> |
|
168 |
<td class="uk-table-shrink"> |
|
169 |
<div class="el-title">{{ usageRule.name }}</div> |
|
170 |
</td> |
|
171 |
<td class="uk-table-shrink"> |
|
172 |
<div class="el-title" [innerHtml]="usageRule.description"> |
|
173 |
</div> |
|
174 |
</td> |
|
175 |
<td class="uk-table-shrink"> |
|
176 |
<div class="el-title">{{ usageRule.weight }}</div> |
|
177 |
</td> |
|
178 |
<td class="uk-table-shrink"> |
|
179 |
<div class="el-title">{{ usageRule.successes }}</div> |
|
180 |
</td> |
|
181 |
<td class="uk-table-shrink"> |
|
182 |
<div *ngIf="!usageRule.hasErrors" class="el-title"> |
|
183 |
<span uk-icon="icon: check" style="color: #4b991f" class="uk-icon"> |
|
184 |
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" |
|
185 |
icon="check" ratio="1"> |
|
186 |
<polyline fill="none" stroke="#000" stroke-width="1.1" |
|
187 |
points="4,10 8,15 17,4"></polyline> |
|
188 |
</svg>--> |
|
189 |
</span> |
|
190 |
</div> |
|
191 |
<div *ngIf="usageRule.hasErrors && usageRule.mandatory"> |
|
192 |
<span uk-icon="icon: close" style="color: #cd242b" class="uk-icon"> |
|
193 |
<!--<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" |
|
194 |
icon="close" ratio="1"> |
|
195 |
<path fill="none" stroke="#000" stroke-width="1.06" d="M16,16 L4,4"></path> |
Also available in: Unified diff
backing up current trunk