Project

General

Profile

« Previous | Next » 

Revision 61360

backing up current trunk

View differences:

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>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff