Project

General

Profile

« Previous | Next » 

Revision 55070

View differences:

modules/uoa-repository-dashboard-gui/branches/development/trunk/e2e/protractor.conf.js
1
// Protractor configuration file, see link for more information
2
// https://github.com/angular/protractor/blob/master/lib/config.ts
3

  
4
const { SpecReporter } = require('jasmine-spec-reporter');
5

  
6
exports.config = {
7
  allScriptsTimeout: 11000,
8
  specs: [
9
    './src/**/*.e2e-spec.ts'
10
  ],
11
  capabilities: {
12
    'browserName': 'chrome'
13
  },
14
  directConnect: true,
15
  baseUrl: 'http://localhost:4200/',
16
  framework: 'jasmine',
17
  jasmineNodeOpts: {
18
    showColors: true,
19
    defaultTimeoutInterval: 30000,
20
    print: function() {}
21
  },
22
  onPrepare() {
23
    require('ts-node').register({
24
      project: require('path').join(__dirname, './tsconfig.e2e.json')
25
    });
26
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27
  }
28
};
29 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/e2e/tsconfig.e2e.json
1
{
2
  "extends": "../tsconfig.json",
3
  "compilerOptions": {
4
    "outDir": "../out-tsc/app",
5
    "module": "commonjs",
6
    "target": "es5",
7
    "types": [
8
      "jasmine",
9
      "jasminewd2",
10
      "node"
11
    ]
12
  }
13
}
14 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/e2e/src/app.e2e-spec.ts
1
import { AppPage } from './app.po';
2

  
3
describe('workspace-project App', () => {
4
  let page: AppPage;
5

  
6
  beforeEach(() => {
7
    page = new AppPage();
8
  });
9

  
10
  it('should display welcome message', () => {
11
    page.navigateTo();
12
    expect(page.getParagraphText()).toEqual('Welcome to uoa-repository-manager-ui!');
13
  });
14
});
15 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/e2e/src/app.po.ts
1
import { browser, by, element } from 'protractor';
2

  
3
export class AppPage {
4
  navigateTo() {
5
    return browser.get('/');
6
  }
7

  
8
  getParagraphText() {
9
    return element(by.css('app-root h1')).getText();
10
  }
11
}
12 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/README.md
1
# UOA Repository Manager UI
2

  
3
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8 (Angular version 6.1.10).
4

  
5
## Minimum requirements for installing and building the project
6

  
7
[Node.js](https://nodejs.org/en/) version 8.x or 10.x.<br>
8
[npm client](https://docs.npmjs.com/cli/install) command line interface (it is installed with Node.js by default).
9

  
10
## Installing the project
11

  
12
After checking out (or updating) the repository enter the created folder and run `npm ci`.
13
This will install the exact versions of the dependencies as mentioned in the `package-lock.json` file (inside the root folder).
14

  
15
## Build for production
16

  
17
Run `npm run build` (equivalent of `ng build --prod`) to build the project. The build artifacts will be stored in the `dist/uoa-repository-manager-ui` directory.
18

  
19
## Deploy project to nginx server
20

  
21
Run `tar -czvf dist.tar.gz dist/` to generate a compressed `.gz` file containing the built angular folder<br>
22
Run `scp dist.tar.gz path/to/server/` to copy the compressed file to the server.<br>
23
Connect to server (`ssh user@server.ip.address`).<br>
24
Uncompress `dist.tar.gz` file.<br>
25
Navigate to the root folder of the server.
26
Copy the contents of the uncompressed dist/uoa-repository-manager-ui folder
27
into the `uoa-repository-manager-dashboard` folder (superuser privileges are normally required for this action).<br>
28

  
29
## Other topics  
30
### Development server
31

  
32
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.<br>
33
Run  `npm run start:proxy` (equivalent of `ng serve --proxy-config proxy.conf.json`) instead, to run the project using a development proxy. To configure the proxy modify the `proxy.conf.json` file (inside the root folder).
34

  
35
### Code scaffolding
36

  
37
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
38

  
39
### Running unit tests
40

  
41
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
42

  
43
### Running end-to-end tests
44

  
45
Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
46

  
47
### Further help
48

  
49
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
50 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/proxy.conf.json
1
{
2
  "/uoa-repository-manager-service/*": {
3
    "target": "http://localhost:8480",
4
    "secure": false,
5
    "logLevel": "debug",
6
    "changeOrigin": true
7
  }
8
}
9 0

  
modules/uoa-repository-dashboard-gui/branches/development/trunk/angular.json
1
{
2
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3
  "version": 1,
4
  "newProjectRoot": "projects",
5
  "projects": {
6
    "uoa-repository-manager-ui": {
7
      "root": "",
8
      "sourceRoot": "src",
9
      "projectType": "application",
10
      "prefix": "app",
11
      "schematics": {},
12
      "architect": {
13
        "build": {
14
          "builder": "@angular-devkit/build-angular:browser",
15
          "options": {
16
            "outputPath": "dist/uoa-repository-manager-ui",
17
            "index": "src/index.html",
18
            "main": "src/main.ts",
19
            "polyfills": "src/polyfills.ts",
20
            "tsConfig": "src/tsconfig.app.json",
21
            "assets": [
22
              "src/favicon.ico",
23
              "src/assets"
24
            ],
25
            "styles": [
26
              "src/styles.scss"
27
            ],
28
            "scripts": [
29
              "node_modules/jquery/dist/jquery.min.js",
30
              "node_modules/uikit/dist/js/uikit.min.js",
31
              "node_modules/uikit/dist/js/uikit-icons.min.js"
32
            ]
33
          },
34
          "configurations": {
35
            "production": {
36
              "fileReplacements": [
37
                {
38
                  "replace": "src/environments/environment.ts",
39
                  "with": "src/environments/environment.prod.ts"
40
                }
41
              ],
42
              "optimization": true,
43
              "outputHashing": "all",
44
              "sourceMap": false,
45
              "extractCss": true,
46
              "namedChunks": false,
47
              "aot": true,
48
              "extractLicenses": true,
49
              "vendorChunk": false,
50
              "buildOptimizer": true
51
            }
52
          }
53
        },
54
        "serve": {
55
          "builder": "@angular-devkit/build-angular:dev-server",
56
          "options": {
57
            "browserTarget": "uoa-repository-manager-ui:build",
58
            "port": 4200,
59
            "host": "aleka.athenarc.gr"
60
          },
61
          "configurations": {
62
            "production": {
63
              "browserTarget": "uoa-repository-manager-ui:build:production"
64
            }
65
          }
66
        },
67
        "extract-i18n": {
68
          "builder": "@angular-devkit/build-angular:extract-i18n",
69
          "options": {
70
            "browserTarget": "uoa-repository-manager-ui:build"
71
          }
72
        },
73
        "test": {
74
          "builder": "@angular-devkit/build-angular:karma",
75
          "options": {
76
            "main": "src/test.ts",
77
            "polyfills": "src/polyfills.ts",
78
            "tsConfig": "src/tsconfig.spec.json",
79
            "karmaConfig": "src/karma.conf.js",
80
            "styles": [
81
              "src/styles.scss"
82
            ],
83
            "scripts": [],
84
            "assets": [
85
              "src/favicon.ico",
86
              "src/assets"
87
            ]
88
          }
89
        },
90
        "lint": {
91
          "builder": "@angular-devkit/build-angular:tslint",
92
          "options": {
93
            "tsConfig": [
94
              "src/tsconfig.app.json",
95
              "src/tsconfig.spec.json"
96
            ],
97
            "exclude": [
98
              "**/node_modules/**"
99
            ]
100
          }
101
        }
102
      }
103
    },
104
    "uoa-repository-manager-ui-e2e": {
105
      "root": "e2e/",
106
      "projectType": "application",
107
      "architect": {
108
        "e2e": {
109
          "builder": "@angular-devkit/build-angular:protractor",
110
          "options": {
111
            "protractorConfig": "e2e/protractor.conf.js",
112
            "devServerTarget": "uoa-repository-manager-ui:serve"
113
          },
114
          "configurations": {
115
            "production": {
116
              "devServerTarget": "uoa-repository-manager-ui:serve:production"
117
            }
118
          }
119
        },
120
        "lint": {
121
          "builder": "@angular-devkit/build-angular:tslint",
122
          "options": {
123
            "tsConfig": "e2e/tsconfig.e2e.json",
124
            "exclude": [
125
              "**/node_modules/**"
126
            ]
127
          }
128
        }
129
      }
130
    }
131
  },
132
  "defaultProject": "uoa-repository-manager-ui"
133
}
134 0

  
modules/uoa-repository-dashboard-gui/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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/branches/development/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>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff